diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index e36b7135ec..16815edbd9 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -6666,24 +6666,44 @@ void DynamicMethodAccess::update_from_stack(const Env& env, auto reg1_matcher = Matcher::match_or({Matcher::any_reg(1), Matcher::cast("int", Matcher::any_reg(1))}); + bool is_type_parent = false; + // (+ (* method-id 4) (the-as int child-type)) auto mult_matcher = Matcher::op_fixed(FixedOperatorKind::MULTIPLICATION, {reg0_matcher, Matcher::integer(4)}); auto matcher = Matcher::op_fixed(FixedOperatorKind::ADDITION, {mult_matcher, reg1_matcher}); auto match_result = match(matcher, new_val); if (!match_result.matched) { - throw std::runtime_error("Could not match DynamicMethodAccess values: " + - new_val->to_string(env)); + // check for access like (-> some-type parent) + auto reg0_matcher0 = + Matcher::match_or({Matcher::any_reg(0), Matcher::cast("uint", Matcher::any_reg(0))}); + auto reg1_matcher0 = Matcher::cast( + "int", Matcher::deref(Matcher::any_reg(1), false, {DerefTokenMatcher::string("parent")})); + auto mult_matcher0 = + Matcher::op_fixed(FixedOperatorKind::MULTIPLICATION, {reg0_matcher0, Matcher::integer(4)}); + auto matcher0 = Matcher::op_fixed(FixedOperatorKind::ADDITION, {mult_matcher0, reg1_matcher0}); + auto m_result = match(matcher0, new_val); + if (m_result.matched) { + is_type_parent = true; + match_result = m_result; + } else { + throw std::runtime_error("Could not match DynamicMethodAccess values: " + + new_val->to_string(env)); + } } auto idx = match_result.maps.regs.at(0); auto base = match_result.maps.regs.at(1); ASSERT(idx.has_value() && base.has_value()); - auto deref = pool.alloc_element( - var_to_form(base.value(), pool), false, - std::vector{DerefToken::make_field_name("method-table"), - DerefToken::make_int_expr(var_to_form(idx.value(), pool))}); + std::vector token; + if (is_type_parent) { + token.push_back(DerefToken::make_field_name("parent")); + } + token.push_back(DerefToken::make_field_name("method-table")); + token.push_back(DerefToken::make_int_expr(var_to_form(idx.value(), pool))); + + auto deref = pool.alloc_element(var_to_form(base.value(), pool), false, token); result->push_back(deref); } diff --git a/decompiler/config/jakx/all-types.gc b/decompiler/config/jakx/all-types.gc index 4b72a110f1..473bfd7e9a 100644 --- a/decompiler/config/jakx/all-types.gc +++ b/decompiler/config/jakx/all-types.gc @@ -3252,7 +3252,7 @@ ;; sound-info ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *sound-info* array) +(define-extern *sound-info* (array sound-info)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; timer-h ;; @@ -4497,6 +4497,8 @@ (bucket786 786) (bucket788 788) + + (bucket794 794) ) ;; ---vu1-user-h:bucket-id @@ -4841,6 +4843,67 @@ ;; pad ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +++pad:pad-buttons +(defenum pad-buttons + :bitfield #t + :type uint32 + (select 0) + (l3 1) + (r3 2) + (start 3) + (up 4) + (right 5) + (down 6) + (left 7) + (l2 8) + (r2 9) + (l1 10) + (r1 11) + (triangle 12) + (circle 13) + (x 14) + (square 15) + ;; only 16 buttons are mapped to hardware, the rest are 'actions' or something else + (l-analog-up 16) + (l-analog-right 17) + (l-analog-down 18) + (l-analog-left 19) + (r-analog-up 20) + (r-analog-right 21) + (r-analog-down 22) + (r-analog-left 23) + (confirm 24) + ) +;; ---pad:pad-buttons + +;; +++pad:abutton-idx +(defenum abutton-idx + :type uint8 + (right 0) + (left 1) + (up 2) + (down 3) + (triangle 4) + (circle 5) + (x 6) + (square 7) + (l1 8) + (r1 9) + (l2 10) + (r2 11) + ) +;; ---pad:abutton-idx + +;; +++pad:mouse-buttons +(defenum mouse-buttons + :bitfield #t + :type uint32 + (left) + (right) + (middle) + ) +;; ---pad:mouse-buttons + #| (deftype scf-time (structure) ((stat uint8 :offset-assert 0) @@ -4858,7 +4921,6 @@ ) |# -#| (deftype hw-cpad (basic) ((valid uint8 :offset-assert 4) (status uint8 :offset-assert 5) @@ -4874,9 +4936,7 @@ :size-assert #x24 :flag-assert #x900000024 ) -|# -#| (deftype cpad-info (hw-cpad) ((number int32 :offset-assert 36) (cpad-file int32 :offset-assert 40) @@ -4910,9 +4970,7 @@ (cpad-info-method-9 () none) ;; 9 ;; (adjust-to-screen-flip (_type_) int) ) ) -|# -#| (deftype cpad-list (basic) ((num-cpads int32 :offset-assert 4) (cpads cpad-info 2 :offset-assert 8) ;; guessed by decompiler @@ -4921,9 +4979,17 @@ :size-assert #x10 :flag-assert #x900000010 ) -|# -#| +;; +++pad:mouse-buttons +(defenum mouse-buttons + :bitfield #t + :type uint32 + (left) + (right) + (middle) + ) +;; ---pad:mouse-buttons + (deftype mouse-info (basic) ((active symbol :offset-assert 4) ;; guessed by decompiler (cursor symbol :offset-assert 8) ;; guessed by decompiler @@ -4938,20 +5004,19 @@ (button0-abs mouse-buttons 3 :offset-assert 40) ;; guessed by decompiler (button0-shadow-abs mouse-buttons 1 :offset-assert 52) ;; guessed by decompiler (button0-rel mouse-buttons 3 :offset-assert 56) ;; guessed by decompiler - (pos vector 2 :offset-assert 80) ;; guessed by decompiler - (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. - (posx float :offset-assert 80) - (posy float :offset-assert 84) - (oldposx float :offset-assert 96) - (oldposy float :offset-assert 100) - (speedx float :offset-assert 92) - (speedy float :offset-assert 108) + (pos vector 2 :inline :offset-assert 80) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (posx float :offset 80) + (posy float :offset 84) + (oldposx float :offset 96) + (oldposy float :offset 100) + (speedx float :offset 92) + (speedy float :offset 108) ) :method-count-assert 9 :size-assert #x70 :flag-assert #x900000070 ) -|# #| (deftype keybd-info (basic) @@ -4970,11 +5035,11 @@ ;; (define-extern cpad-invalid! function) ;; (function cpad-info cpad-info) ;; (define-extern analog-input function) ;; (function int float float float float float) ;; (define-extern cpad-set-buzz! function) ;; (function cpad-info int int time-frame none) -;; (define-extern *cpad-list* object) ;; cpad-list +(define-extern *cpad-list* cpad-list) ;; ;; (define-extern *cpad-debug* object) ;; symbol ;; (define-extern service-cpads function) ;; (function cpad-list) ;; (define-extern buzz-stop! function) ;; (function int none) -;; (define-extern *mouse* object) ;; mouse-info +(define-extern *mouse* mouse-info) ;; ;; (define-extern service-mouse function) ;; (function none) ;; (define-extern *keybd* object) ;; keybd-info ;; (define-extern service-keybd function) ;; (function none) @@ -5194,40 +5259,66 @@ :flag-assert #x900001048 ) -;; (deftype gs-frame (uint64) -;; () -;; :flag-assert #x900000008 -;; ) +(deftype gs-frame (uint64) + ((fbp uint16 :offset 0 :size 9) + (fbw uint8 :offset 16 :size 6) + (psm gs-psm :offset 24 :size 6) + (fbmsk uint32 :offset 32 :size 32) + ) + :flag-assert #x900000008 + ) -;; (deftype gs-zbuf (uint64) -;; () -;; :flag-assert #x900000008 -;; ) +(deftype gs-zbuf (uint64) + "The GS's ZBUF registers make various settings regarding Z buffer." + ((zbp uint16 :offset 0 :size 9) + (psm gs-psm :offset 24 :size 4) + (zmsk uint8 :offset 32 :size 1) + ) + :flag-assert #x900000008 + ) -;; (deftype gs-xy-offset (uint64) -;; () -;; :flag-assert #x900000008 -;; ) +(deftype gs-xy-offset (uint64) + "The GS's XYOFFSET registers set the offset value for converting from the primitive coordinate + system to the window coordinate system." + ((ofx uint16 :offset 0 :size 16) + (ofy uint16 :offset 32 :size 16) + ) + :flag-assert #x900000008 + ) -;; (deftype gs-scissor (uint64) -;; () -;; :flag-assert #x900000008 -;; ) +(deftype gs-scissor (uint64) + "The GS's SCISSOR registers specify the scissoring area. The coordinate values for + the upper-left/lower-right points of the enabled drawing area are specified by the window + coordinate system." + ((scax0 uint16 :offset 0 :size 11) + (scax1 uint16 :offset 16 :size 11) + (scay0 uint16 :offset 32 :size 11) + (scay1 uint16 :offset 48 :size 11) + ) + :flag-assert #x900000008 + ) -;; (deftype gs-prmode-cont (uint64) -;; () -;; :flag-assert #x900000008 -;; ) +(deftype gs-prmode-cont (uint64) + "The GS's PRMODECONT register sets whether to use primitive attributes (IIP, TME, FGE, ABE, + AA1, FST, CTXT, FIX) specified by the PRMODE register or the PRIM register." + ((ac uint8 :offset 0 :size 1) + ) + :flag-assert #x900000008 + ) -;; (deftype gs-color-clamp (uint64) -;; () -;; :flag-assert #x900000008 -;; ) +(deftype gs-color-clamp (uint64) + "The GS's COLCLAMP register stores settings as to whether clamping for the RGB value of the + pixel is performed." + ((clamp uint8 :offset 0 :size 1) + ) + :flag-assert #x900000008 + ) -;; (deftype gs-dthe (uint64) -;; () -;; :flag-assert #x900000008 -;; ) +(deftype gs-dthe (uint64) + "The GS's DTHE register stores settings for dithering (performed/not performed)." + ((dthe uint8 :offset 0 :size 1)) + :flag-assert #x900000008 + ) ;; +++gs:gs-atest (defenum gs-atest @@ -8482,32 +8573,2142 @@ ;; +++main-h:text-id (defenum text-id :type uint32 - (null #x0) - + ;; TODO JAKX - filter out the ones that aren't used, name them + (text-id-0 0) + (text-id-1 1) + (text-id-2 2) + (text-id-3 3) + (text-id-4 4) + (text-id-5 5) + (text-id-6 6) + (text-id-7 7) + (text-id-8 8) + (text-id-9 9) + (text-id-10 10) + (text-id-11 11) + (text-id-12 12) + (text-id-13 13) + (text-id-14 14) + (text-id-15 15) + (text-id-16 16) + (text-id-17 17) + (text-id-18 18) + (text-id-19 19) + (text-id-20 20) + (text-id-21 21) + (text-id-22 22) + (text-id-23 23) + (text-id-24 24) + (text-id-25 25) + (text-id-26 26) + (text-id-27 27) + (text-id-28 28) + (text-id-29 29) + (text-id-30 30) + (text-id-31 31) + (text-id-32 32) + (text-id-33 33) + (text-id-34 34) + (text-id-35 35) + (text-id-36 36) + (text-id-37 37) + (text-id-38 38) + (text-id-39 39) + (text-id-40 40) + (text-id-41 41) + (text-id-42 42) + (text-id-43 43) + (text-id-44 44) + (text-id-45 45) + (text-id-46 46) + (text-id-47 47) + (text-id-48 48) + (text-id-49 49) + (text-id-50 50) + (text-id-51 51) + (text-id-52 52) + (text-id-53 53) + (text-id-54 54) + (text-id-55 55) + (text-id-56 56) + (text-id-57 57) + (text-id-58 58) + (text-id-59 59) + (text-id-60 60) + (text-id-61 61) + (text-id-62 62) + (text-id-63 63) + (text-id-64 64) + (text-id-65 65) + (text-id-66 66) + (text-id-67 67) + (text-id-68 68) + (text-id-69 69) + (text-id-70 70) + (text-id-71 71) + (text-id-72 72) + (text-id-73 73) + (text-id-74 74) + (text-id-75 75) + (text-id-76 76) + (text-id-77 77) + (text-id-78 78) + (text-id-79 79) + (text-id-80 80) + (text-id-81 81) + (text-id-82 82) + (text-id-83 83) + (text-id-84 84) + (text-id-85 85) + (text-id-86 86) + (text-id-87 87) + (text-id-88 88) + (text-id-89 89) + (text-id-90 90) + (text-id-91 91) + (text-id-92 92) + (text-id-93 93) + (text-id-94 94) + (text-id-95 95) + (text-id-96 96) + (text-id-97 97) + (text-id-98 98) + (text-id-99 99) + (text-id-100 100) + (text-id-101 101) + (text-id-102 102) + (text-id-103 103) + (text-id-104 104) + (text-id-105 105) + (text-id-106 106) + (text-id-107 107) + (text-id-108 108) + (text-id-109 109) + (text-id-110 110) + (text-id-111 111) + (text-id-112 112) + (text-id-113 113) + (text-id-114 114) + (text-id-115 115) + (text-id-116 116) + (text-id-117 117) + (text-id-118 118) + (text-id-119 119) + (text-id-120 120) + (text-id-121 121) + (text-id-122 122) + (text-id-123 123) + (text-id-124 124) + (text-id-125 125) + (text-id-126 126) + (text-id-127 127) + (text-id-128 128) + (text-id-129 129) + (text-id-130 130) + (text-id-131 131) + (text-id-132 132) + (text-id-133 133) + (text-id-134 134) + (text-id-135 135) + (text-id-136 136) + (text-id-137 137) + (text-id-138 138) + (text-id-139 139) + (text-id-140 140) + (text-id-141 141) + (text-id-142 142) + (text-id-143 143) + (text-id-144 144) + (text-id-145 145) + (text-id-146 146) + (text-id-147 147) + (text-id-148 148) + (text-id-149 149) + (text-id-150 150) + (text-id-151 151) + (text-id-152 152) + (text-id-153 153) + (text-id-154 154) + (text-id-155 155) + (text-id-156 156) + (text-id-157 157) + (text-id-158 158) + (text-id-159 159) + (text-id-160 160) + (text-id-161 161) + (text-id-162 162) + (text-id-163 163) + (text-id-164 164) + (text-id-165 165) + (text-id-166 166) + (text-id-167 167) + (text-id-168 168) + (text-id-169 169) + (text-id-170 170) + (text-id-171 171) + (text-id-172 172) + (text-id-173 173) + (text-id-174 174) + (text-id-175 175) + (text-id-176 176) + (text-id-177 177) + (text-id-178 178) + (text-id-179 179) + (text-id-180 180) + (text-id-181 181) + (text-id-182 182) + (text-id-183 183) + (text-id-184 184) + (text-id-185 185) + (text-id-186 186) + (text-id-187 187) + (text-id-188 188) + (text-id-189 189) + (text-id-190 190) + (text-id-191 191) + (text-id-192 192) + (text-id-193 193) + (text-id-194 194) + (text-id-195 195) + (text-id-196 196) + (text-id-197 197) + (text-id-198 198) + (text-id-199 199) + (text-id-200 200) + (text-id-201 201) + (text-id-202 202) + (text-id-203 203) + (text-id-204 204) + (text-id-205 205) + (text-id-206 206) + (text-id-207 207) + (text-id-208 208) + (text-id-209 209) + (text-id-210 210) + (text-id-211 211) + (text-id-212 212) + (text-id-213 213) + (text-id-214 214) + (text-id-215 215) + (text-id-216 216) + (text-id-217 217) + (text-id-218 218) + (text-id-219 219) + (text-id-220 220) + (text-id-221 221) + (text-id-222 222) + (text-id-223 223) + (text-id-224 224) + (text-id-225 225) + (text-id-226 226) + (text-id-227 227) + (text-id-228 228) + (text-id-229 229) + (text-id-230 230) + (text-id-231 231) + (text-id-232 232) + (text-id-233 233) + (text-id-234 234) + (text-id-235 235) + (text-id-236 236) + (text-id-237 237) + (text-id-238 238) + (text-id-239 239) + (text-id-240 240) + (text-id-241 241) + (text-id-242 242) + (text-id-243 243) + (text-id-244 244) + (text-id-245 245) + (text-id-246 246) + (text-id-247 247) + (text-id-248 248) + (text-id-249 249) + (text-id-250 250) + (text-id-251 251) + (text-id-252 252) + (text-id-253 253) + (text-id-254 254) + (text-id-255 255) + (text-id-256 256) + (text-id-257 257) + (text-id-258 258) + (text-id-259 259) + (text-id-260 260) + (text-id-261 261) + (text-id-262 262) + (text-id-263 263) + (text-id-264 264) + (text-id-265 265) + (text-id-266 266) + (text-id-267 267) + (text-id-268 268) + (text-id-269 269) + (text-id-270 270) + (text-id-271 271) + (text-id-272 272) + (text-id-273 273) + (text-id-274 274) + (text-id-275 275) + (text-id-276 276) + (text-id-277 277) + (text-id-278 278) + (text-id-279 279) + (text-id-280 280) + (text-id-281 281) + (text-id-282 282) + (text-id-283 283) + (text-id-284 284) + (text-id-285 285) + (text-id-286 286) + (text-id-287 287) + (text-id-288 288) + (text-id-289 289) + (text-id-290 290) + (text-id-291 291) + (text-id-292 292) + (text-id-293 293) + (text-id-294 294) + (text-id-295 295) + (text-id-296 296) + (text-id-297 297) + (text-id-298 298) + (text-id-299 299) + (text-id-300 300) + (text-id-301 301) + (text-id-302 302) + (text-id-303 303) + (text-id-304 304) + (text-id-305 305) + (text-id-306 306) + (text-id-307 307) + (text-id-308 308) + (text-id-309 309) + (text-id-310 310) + (text-id-311 311) + (text-id-312 312) + (text-id-313 313) + (text-id-314 314) + (text-id-315 315) + (text-id-316 316) + (text-id-317 317) + (text-id-318 318) + (text-id-319 319) + (text-id-320 320) + (text-id-321 321) + (text-id-322 322) + (text-id-323 323) + (text-id-324 324) + (text-id-325 325) + (text-id-326 326) + (text-id-327 327) + (text-id-328 328) + (text-id-329 329) + (text-id-330 330) + (text-id-331 331) + (text-id-332 332) + (text-id-333 333) + (text-id-334 334) + (text-id-335 335) + (text-id-336 336) + (text-id-337 337) + (text-id-338 338) + (text-id-339 339) + (text-id-340 340) (text-id-341 341) (text-id-342 342) (text-id-343 343) (text-id-344 344) - + (text-id-345 345) + (text-id-346 346) + (text-id-347 347) + (text-id-348 348) + (text-id-349 349) + (text-id-350 350) + (text-id-351 351) + (text-id-352 352) + (text-id-353 353) + (text-id-354 354) + (text-id-355 355) + (text-id-356 356) + (text-id-357 357) + (text-id-358 358) + (text-id-359 359) + (text-id-360 360) + (text-id-361 361) + (text-id-362 362) + (text-id-363 363) + (text-id-364 364) + (text-id-365 365) + (text-id-366 366) + (text-id-367 367) + (text-id-368 368) + (text-id-369 369) + (text-id-370 370) + (text-id-371 371) + (text-id-372 372) + (text-id-373 373) + (text-id-374 374) + (text-id-375 375) + (text-id-376 376) + (text-id-377 377) + (text-id-378 378) + (text-id-379 379) + (text-id-380 380) + (text-id-381 381) + (text-id-382 382) + (text-id-383 383) + (text-id-384 384) + (text-id-385 385) + (text-id-386 386) + (text-id-387 387) + (text-id-388 388) + (text-id-389 389) + (text-id-390 390) + (text-id-391 391) + (text-id-392 392) + (text-id-393 393) + (text-id-394 394) + (text-id-395 395) + (text-id-396 396) + (text-id-397 397) + (text-id-398 398) + (text-id-399 399) + (text-id-400 400) + (text-id-401 401) + (text-id-402 402) + (text-id-403 403) + (text-id-404 404) + (text-id-405 405) + (text-id-406 406) + (text-id-407 407) + (text-id-408 408) + (text-id-409 409) + (text-id-410 410) + (text-id-411 411) + (text-id-412 412) + (text-id-413 413) + (text-id-414 414) + (text-id-415 415) + (text-id-416 416) + (text-id-417 417) + (text-id-418 418) + (text-id-419 419) + (text-id-420 420) + (text-id-421 421) + (text-id-422 422) + (text-id-423 423) + (text-id-424 424) + (text-id-425 425) + (text-id-426 426) + (text-id-427 427) + (text-id-428 428) + (text-id-429 429) + (text-id-430 430) + (text-id-431 431) + (text-id-432 432) + (text-id-433 433) + (text-id-434 434) + (text-id-435 435) + (text-id-436 436) + (text-id-437 437) + (text-id-438 438) + (text-id-439 439) + (text-id-440 440) + (text-id-441 441) + (text-id-442 442) + (text-id-443 443) + (text-id-444 444) + (text-id-445 445) + (text-id-446 446) + (text-id-447 447) + (text-id-448 448) + (text-id-449 449) + (text-id-450 450) + (text-id-451 451) + (text-id-452 452) + (text-id-453 453) + (text-id-454 454) + (text-id-455 455) + (text-id-456 456) + (text-id-457 457) + (text-id-458 458) + (text-id-459 459) + (text-id-460 460) + (text-id-461 461) + (text-id-462 462) + (text-id-463 463) + (text-id-464 464) + (text-id-465 465) + (text-id-466 466) + (text-id-467 467) + (text-id-468 468) + (text-id-469 469) + (text-id-470 470) + (text-id-471 471) + (text-id-472 472) + (text-id-473 473) + (text-id-474 474) + (text-id-475 475) + (text-id-476 476) + (text-id-477 477) + (text-id-478 478) + (text-id-479 479) + (text-id-480 480) + (text-id-481 481) + (text-id-482 482) + (text-id-483 483) + (text-id-484 484) + (text-id-485 485) + (text-id-486 486) + (text-id-487 487) + (text-id-488 488) + (text-id-489 489) + (text-id-490 490) + (text-id-491 491) + (text-id-492 492) + (text-id-493 493) + (text-id-494 494) + (text-id-495 495) + (text-id-496 496) + (text-id-497 497) + (text-id-498 498) + (text-id-499 499) + (text-id-500 500) + (text-id-501 501) + (text-id-502 502) + (text-id-503 503) + (text-id-504 504) + (text-id-505 505) + (text-id-506 506) + (text-id-507 507) + (text-id-508 508) + (text-id-509 509) + (text-id-510 510) + (text-id-511 511) + (text-id-512 512) + (text-id-513 513) + (text-id-514 514) + (text-id-515 515) + (text-id-516 516) + (text-id-517 517) + (text-id-518 518) + (text-id-519 519) + (text-id-520 520) + (text-id-521 521) (text-id-522 522) - + (text-id-523 523) + (text-id-524 524) + (text-id-525 525) + (text-id-526 526) + (text-id-527 527) + (text-id-528 528) + (text-id-529 529) + (text-id-530 530) + (text-id-531 531) + (text-id-532 532) + (text-id-533 533) + (text-id-534 534) + (text-id-535 535) + (text-id-536 536) + (text-id-537 537) + (text-id-538 538) + (text-id-539 539) + (text-id-540 540) + (text-id-541 541) + (text-id-542 542) + (text-id-543 543) + (text-id-544 544) + (text-id-545 545) + (text-id-546 546) + (text-id-547 547) + (text-id-548 548) + (text-id-549 549) + (text-id-550 550) + (text-id-551 551) + (text-id-552 552) + (text-id-553 553) + (text-id-554 554) + (text-id-555 555) + (text-id-556 556) + (text-id-557 557) + (text-id-558 558) + (text-id-559 559) + (text-id-560 560) + (text-id-561 561) + (text-id-562 562) + (text-id-563 563) + (text-id-564 564) + (text-id-565 565) + (text-id-566 566) + (text-id-567 567) + (text-id-568 568) + (text-id-569 569) + (text-id-570 570) + (text-id-571 571) + (text-id-572 572) + (text-id-573 573) + (text-id-574 574) + (text-id-575 575) + (text-id-576 576) + (text-id-577 577) + (text-id-578 578) + (text-id-579 579) + (text-id-580 580) + (text-id-581 581) + (text-id-582 582) + (text-id-583 583) + (text-id-584 584) + (text-id-585 585) + (text-id-586 586) + (text-id-587 587) + (text-id-588 588) + (text-id-589 589) + (text-id-590 590) + (text-id-591 591) + (text-id-592 592) + (text-id-593 593) + (text-id-594 594) + (text-id-595 595) + (text-id-596 596) + (text-id-597 597) + (text-id-598 598) + (text-id-599 599) + (text-id-600 600) + (text-id-601 601) + (text-id-602 602) + (text-id-603 603) + (text-id-604 604) + (text-id-605 605) + (text-id-606 606) + (text-id-607 607) + (text-id-608 608) + (text-id-609 609) + (text-id-610 610) + (text-id-611 611) + (text-id-612 612) + (text-id-613 613) + (text-id-614 614) + (text-id-615 615) + (text-id-616 616) + (text-id-617 617) + (text-id-618 618) + (text-id-619 619) + (text-id-620 620) + (text-id-621 621) + (text-id-622 622) + (text-id-623 623) + (text-id-624 624) + (text-id-625 625) + (text-id-626 626) + (text-id-627 627) + (text-id-628 628) + (text-id-629 629) + (text-id-630 630) + (text-id-631 631) + (text-id-632 632) + (text-id-633 633) + (text-id-634 634) + (text-id-635 635) + (text-id-636 636) + (text-id-637 637) + (text-id-638 638) + (text-id-639 639) + (text-id-640 640) + (text-id-641 641) + (text-id-642 642) + (text-id-643 643) + (text-id-644 644) + (text-id-645 645) + (text-id-646 646) + (text-id-647 647) + (text-id-648 648) + (text-id-649 649) + (text-id-650 650) + (text-id-651 651) + (text-id-652 652) + (text-id-653 653) + (text-id-654 654) + (text-id-655 655) + (text-id-656 656) + (text-id-657 657) + (text-id-658 658) + (text-id-659 659) + (text-id-660 660) + (text-id-661 661) + (text-id-662 662) + (text-id-663 663) + (text-id-664 664) + (text-id-665 665) + (text-id-666 666) + (text-id-667 667) + (text-id-668 668) + (text-id-669 669) + (text-id-670 670) + (text-id-671 671) + (text-id-672 672) + (text-id-673 673) + (text-id-674 674) + (text-id-675 675) + (text-id-676 676) + (text-id-677 677) + (text-id-678 678) + (text-id-679 679) + (text-id-680 680) + (text-id-681 681) + (text-id-682 682) + (text-id-683 683) + (text-id-684 684) + (text-id-685 685) + (text-id-686 686) + (text-id-687 687) + (text-id-688 688) + (text-id-689 689) + (text-id-690 690) + (text-id-691 691) + (text-id-692 692) + (text-id-693 693) + (text-id-694 694) + (text-id-695 695) + (text-id-696 696) + (text-id-697 697) + (text-id-698 698) + (text-id-699 699) + (text-id-700 700) + (text-id-701 701) + (text-id-702 702) + (text-id-703 703) + (text-id-704 704) + (text-id-705 705) + (text-id-706 706) + (text-id-707 707) + (text-id-708 708) + (text-id-709 709) + (text-id-710 710) + (text-id-711 711) + (text-id-712 712) + (text-id-713 713) + (text-id-714 714) + (text-id-715 715) + (text-id-716 716) + (text-id-717 717) + (text-id-718 718) + (text-id-719 719) + (text-id-720 720) + (text-id-721 721) + (text-id-722 722) + (text-id-723 723) + (text-id-724 724) + (text-id-725 725) + (text-id-726 726) + (text-id-727 727) + (text-id-728 728) + (text-id-729 729) + (text-id-730 730) + (text-id-731 731) + (text-id-732 732) + (text-id-733 733) + (text-id-734 734) + (text-id-735 735) + (text-id-736 736) + (text-id-737 737) + (text-id-738 738) + (text-id-739 739) + (text-id-740 740) + (text-id-741 741) + (text-id-742 742) + (text-id-743 743) + (text-id-744 744) + (text-id-745 745) + (text-id-746 746) + (text-id-747 747) + (text-id-748 748) + (text-id-749 749) + (text-id-750 750) + (text-id-751 751) + (text-id-752 752) + (text-id-753 753) + (text-id-754 754) + (text-id-755 755) + (text-id-756 756) + (text-id-757 757) + (text-id-758 758) + (text-id-759 759) + (text-id-760 760) + (text-id-761 761) + (text-id-762 762) + (text-id-763 763) + (text-id-764 764) + (text-id-765 765) + (text-id-766 766) + (text-id-767 767) + (text-id-768 768) + (text-id-769 769) + (text-id-770 770) + (text-id-771 771) + (text-id-772 772) + (text-id-773 773) + (text-id-774 774) + (text-id-775 775) + (text-id-776 776) + (text-id-777 777) + (text-id-778 778) + (text-id-779 779) + (text-id-780 780) + (text-id-781 781) + (text-id-782 782) + (text-id-783 783) + (text-id-784 784) + (text-id-785 785) + (text-id-786 786) + (text-id-787 787) + (text-id-788 788) + (text-id-789 789) + (text-id-790 790) + (text-id-791 791) + (text-id-792 792) + (text-id-793 793) + (text-id-794 794) + (text-id-795 795) + (text-id-796 796) + (text-id-797 797) + (text-id-798 798) + (text-id-799 799) + (text-id-800 800) + (text-id-801 801) + (text-id-802 802) + (text-id-803 803) + (text-id-804 804) + (text-id-805 805) + (text-id-806 806) + (text-id-807 807) + (text-id-808 808) + (text-id-809 809) + (text-id-810 810) + (text-id-811 811) + (text-id-812 812) + (text-id-813 813) + (text-id-814 814) + (text-id-815 815) + (text-id-816 816) + (text-id-817 817) + (text-id-818 818) + (text-id-819 819) + (text-id-820 820) + (text-id-821 821) + (text-id-822 822) + (text-id-823 823) + (text-id-824 824) + (text-id-825 825) + (text-id-826 826) + (text-id-827 827) + (text-id-828 828) + (text-id-829 829) + (text-id-830 830) + (text-id-831 831) + (text-id-832 832) + (text-id-833 833) + (text-id-834 834) + (text-id-835 835) + (text-id-836 836) + (text-id-837 837) + (text-id-838 838) + (text-id-839 839) + (text-id-840 840) + (text-id-841 841) + (text-id-842 842) + (text-id-843 843) + (text-id-844 844) + (text-id-845 845) + (text-id-846 846) + (text-id-847 847) + (text-id-848 848) + (text-id-849 849) + (text-id-850 850) + (text-id-851 851) + (text-id-852 852) + (text-id-853 853) + (text-id-854 854) + (text-id-855 855) + (text-id-856 856) + (text-id-857 857) + (text-id-858 858) + (text-id-859 859) + (text-id-860 860) + (text-id-861 861) + (text-id-862 862) + (text-id-863 863) + (text-id-864 864) + (text-id-865 865) + (text-id-866 866) + (text-id-867 867) + (text-id-868 868) + (text-id-869 869) + (text-id-870 870) + (text-id-871 871) + (text-id-872 872) + (text-id-873 873) + (text-id-874 874) + (text-id-875 875) + (text-id-876 876) + (text-id-877 877) + (text-id-878 878) + (text-id-879 879) + (text-id-880 880) + (text-id-881 881) + (text-id-882 882) + (text-id-883 883) + (text-id-884 884) + (text-id-885 885) + (text-id-886 886) + (text-id-887 887) + (text-id-888 888) + (text-id-889 889) + (text-id-890 890) + (text-id-891 891) + (text-id-892 892) + (text-id-893 893) + (text-id-894 894) + (text-id-895 895) + (text-id-896 896) + (text-id-897 897) + (text-id-898 898) + (text-id-899 899) + (text-id-900 900) + (text-id-901 901) + (text-id-902 902) + (text-id-903 903) + (text-id-904 904) + (text-id-905 905) + (text-id-906 906) + (text-id-907 907) + (text-id-908 908) + (text-id-909 909) + (text-id-910 910) + (text-id-911 911) + (text-id-912 912) + (text-id-913 913) + (text-id-914 914) + (text-id-915 915) + (text-id-916 916) + (text-id-917 917) + (text-id-918 918) + (text-id-919 919) + (text-id-920 920) + (text-id-921 921) + (text-id-922 922) + (text-id-923 923) + (text-id-924 924) + (text-id-925 925) + (text-id-926 926) + (text-id-927 927) + (text-id-928 928) + (text-id-929 929) + (text-id-930 930) + (text-id-931 931) + (text-id-932 932) + (text-id-933 933) + (text-id-934 934) + (text-id-935 935) + (text-id-936 936) + (text-id-937 937) + (text-id-938 938) + (text-id-939 939) + (text-id-940 940) + (text-id-941 941) + (text-id-942 942) + (text-id-943 943) + (text-id-944 944) + (text-id-945 945) + (text-id-946 946) + (text-id-947 947) + (text-id-948 948) + (text-id-949 949) + (text-id-950 950) + (text-id-951 951) + (text-id-952 952) + (text-id-953 953) + (text-id-954 954) + (text-id-955 955) + (text-id-956 956) + (text-id-957 957) + (text-id-958 958) + (text-id-959 959) + (text-id-960 960) + (text-id-961 961) + (text-id-962 962) + (text-id-963 963) + (text-id-964 964) + (text-id-965 965) + (text-id-966 966) + (text-id-967 967) + (text-id-968 968) + (text-id-969 969) + (text-id-970 970) + (text-id-971 971) + (text-id-972 972) + (text-id-973 973) + (text-id-974 974) + (text-id-975 975) + (text-id-976 976) + (text-id-977 977) + (text-id-978 978) + (text-id-979 979) + (text-id-980 980) + (text-id-981 981) + (text-id-982 982) + (text-id-983 983) + (text-id-984 984) + (text-id-985 985) + (text-id-986 986) + (text-id-987 987) + (text-id-988 988) + (text-id-989 989) + (text-id-990 990) + (text-id-991 991) + (text-id-992 992) + (text-id-993 993) + (text-id-994 994) + (text-id-995 995) + (text-id-996 996) + (text-id-997 997) + (text-id-998 998) + (text-id-999 999) + (text-id-1000 1000) + (text-id-1001 1001) + (text-id-1002 1002) + (text-id-1003 1003) + (text-id-1004 1004) + (text-id-1005 1005) + (text-id-1006 1006) + (text-id-1007 1007) + (text-id-1008 1008) + (text-id-1009 1009) + (text-id-1010 1010) + (text-id-1011 1011) + (text-id-1012 1012) + (text-id-1013 1013) + (text-id-1014 1014) + (text-id-1015 1015) + (text-id-1016 1016) + (text-id-1017 1017) + (text-id-1018 1018) + (text-id-1019 1019) + (text-id-1020 1020) + (text-id-1021 1021) + (text-id-1022 1022) + (text-id-1023 1023) + (text-id-1024 1024) + (text-id-1025 1025) + (text-id-1026 1026) + (text-id-1027 1027) + (text-id-1028 1028) + (text-id-1029 1029) + (text-id-1030 1030) + (text-id-1031 1031) + (text-id-1032 1032) + (text-id-1033 1033) + (text-id-1034 1034) + (text-id-1035 1035) + (text-id-1036 1036) + (text-id-1037 1037) + (text-id-1038 1038) + (text-id-1039 1039) + (text-id-1040 1040) + (text-id-1041 1041) + (text-id-1042 1042) + (text-id-1043 1043) + (text-id-1044 1044) + (text-id-1045 1045) + (text-id-1046 1046) + (text-id-1047 1047) + (text-id-1048 1048) + (text-id-1049 1049) + (text-id-1050 1050) + (text-id-1051 1051) + (text-id-1052 1052) + (text-id-1053 1053) + (text-id-1054 1054) + (text-id-1055 1055) + (text-id-1056 1056) + (text-id-1057 1057) + (text-id-1058 1058) + (text-id-1059 1059) + (text-id-1060 1060) + (text-id-1061 1061) + (text-id-1062 1062) + (text-id-1063 1063) + (text-id-1064 1064) + (text-id-1065 1065) + (text-id-1066 1066) + (text-id-1067 1067) + (text-id-1068 1068) + (text-id-1069 1069) + (text-id-1070 1070) + (text-id-1071 1071) + (text-id-1072 1072) + (text-id-1073 1073) + (text-id-1074 1074) + (text-id-1075 1075) + (text-id-1076 1076) + (text-id-1077 1077) + (text-id-1078 1078) + (text-id-1079 1079) + (text-id-1080 1080) + (text-id-1081 1081) + (text-id-1082 1082) + (text-id-1083 1083) + (text-id-1084 1084) + (text-id-1085 1085) + (text-id-1086 1086) + (text-id-1087 1087) + (text-id-1088 1088) + (text-id-1089 1089) + (text-id-1090 1090) + (text-id-1091 1091) + (text-id-1092 1092) + (text-id-1093 1093) + (text-id-1094 1094) + (text-id-1095 1095) + (text-id-1096 1096) + (text-id-1097 1097) + (text-id-1098 1098) + (text-id-1099 1099) + (text-id-1100 1100) + (text-id-1101 1101) + (text-id-1102 1102) + (text-id-1103 1103) + (text-id-1104 1104) + (text-id-1105 1105) + (text-id-1106 1106) + (text-id-1107 1107) + (text-id-1108 1108) + (text-id-1109 1109) + (text-id-1110 1110) + (text-id-1111 1111) + (text-id-1112 1112) + (text-id-1113 1113) + (text-id-1114 1114) + (text-id-1115 1115) + (text-id-1116 1116) + (text-id-1117 1117) + (text-id-1118 1118) + (text-id-1119 1119) + (text-id-1120 1120) + (text-id-1121 1121) + (text-id-1122 1122) + (text-id-1123 1123) + (text-id-1124 1124) + (text-id-1125 1125) + (text-id-1126 1126) + (text-id-1127 1127) + (text-id-1128 1128) + (text-id-1129 1129) + (text-id-1130 1130) + (text-id-1131 1131) + (text-id-1132 1132) + (text-id-1133 1133) + (text-id-1134 1134) + (text-id-1135 1135) + (text-id-1136 1136) + (text-id-1137 1137) + (text-id-1138 1138) + (text-id-1139 1139) + (text-id-1140 1140) + (text-id-1141 1141) + (text-id-1142 1142) + (text-id-1143 1143) + (text-id-1144 1144) + (text-id-1145 1145) + (text-id-1146 1146) + (text-id-1147 1147) + (text-id-1148 1148) + (text-id-1149 1149) + (text-id-1150 1150) + (text-id-1151 1151) + (text-id-1152 1152) + (text-id-1153 1153) + (text-id-1154 1154) + (text-id-1155 1155) + (text-id-1156 1156) + (text-id-1157 1157) + (text-id-1158 1158) + (text-id-1159 1159) + (text-id-1160 1160) + (text-id-1161 1161) + (text-id-1162 1162) + (text-id-1163 1163) + (text-id-1164 1164) + (text-id-1165 1165) + (text-id-1166 1166) + (text-id-1167 1167) + (text-id-1168 1168) + (text-id-1169 1169) + (text-id-1170 1170) + (text-id-1171 1171) + (text-id-1172 1172) + (text-id-1173 1173) + (text-id-1174 1174) + (text-id-1175 1175) + (text-id-1176 1176) + (text-id-1177 1177) + (text-id-1178 1178) + (text-id-1179 1179) + (text-id-1180 1180) + (text-id-1181 1181) + (text-id-1182 1182) + (text-id-1183 1183) + (text-id-1184 1184) + (text-id-1185 1185) + (text-id-1186 1186) + (text-id-1187 1187) + (text-id-1188 1188) + (text-id-1189 1189) + (text-id-1190 1190) + (text-id-1191 1191) + (text-id-1192 1192) + (text-id-1193 1193) + (text-id-1194 1194) + (text-id-1195 1195) + (text-id-1196 1196) + (text-id-1197 1197) + (text-id-1198 1198) + (text-id-1199 1199) + (text-id-1200 1200) + (text-id-1201 1201) + (text-id-1202 1202) + (text-id-1203 1203) + (text-id-1204 1204) + (text-id-1205 1205) + (text-id-1206 1206) + (text-id-1207 1207) + (text-id-1208 1208) + (text-id-1209 1209) + (text-id-1210 1210) + (text-id-1211 1211) + (text-id-1212 1212) + (text-id-1213 1213) + (text-id-1214 1214) + (text-id-1215 1215) + (text-id-1216 1216) + (text-id-1217 1217) + (text-id-1218 1218) + (text-id-1219 1219) + (text-id-1220 1220) + (text-id-1221 1221) + (text-id-1222 1222) + (text-id-1223 1223) + (text-id-1224 1224) + (text-id-1225 1225) + (text-id-1226 1226) + (text-id-1227 1227) + (text-id-1228 1228) + (text-id-1229 1229) + (text-id-1230 1230) + (text-id-1231 1231) + (text-id-1232 1232) + (text-id-1233 1233) + (text-id-1234 1234) + (text-id-1235 1235) + (text-id-1236 1236) + (text-id-1237 1237) + (text-id-1238 1238) + (text-id-1239 1239) + (text-id-1240 1240) + (text-id-1241 1241) + (text-id-1242 1242) + (text-id-1243 1243) + (text-id-1244 1244) + (text-id-1245 1245) + (text-id-1246 1246) + (text-id-1247 1247) + (text-id-1248 1248) + (text-id-1249 1249) + (text-id-1250 1250) + (text-id-1251 1251) + (text-id-1252 1252) + (text-id-1253 1253) + (text-id-1254 1254) + (text-id-1255 1255) + (text-id-1256 1256) + (text-id-1257 1257) + (text-id-1258 1258) + (text-id-1259 1259) + (text-id-1260 1260) + (text-id-1261 1261) + (text-id-1262 1262) + (text-id-1263 1263) + (text-id-1264 1264) + (text-id-1265 1265) + (text-id-1266 1266) + (text-id-1267 1267) + (text-id-1268 1268) + (text-id-1269 1269) + (text-id-1270 1270) + (text-id-1271 1271) + (text-id-1272 1272) + (text-id-1273 1273) + (text-id-1274 1274) + (text-id-1275 1275) + (text-id-1276 1276) + (text-id-1277 1277) + (text-id-1278 1278) + (text-id-1279 1279) + (text-id-1280 1280) + (text-id-1281 1281) + (text-id-1282 1282) + (text-id-1283 1283) + (text-id-1284 1284) + (text-id-1285 1285) + (text-id-1286 1286) + (text-id-1287 1287) + (text-id-1288 1288) + (text-id-1289 1289) + (text-id-1290 1290) + (text-id-1291 1291) + (text-id-1292 1292) + (text-id-1293 1293) + (text-id-1294 1294) + (text-id-1295 1295) + (text-id-1296 1296) + (text-id-1297 1297) + (text-id-1298 1298) + (text-id-1299 1299) + (text-id-1300 1300) + (text-id-1301 1301) + (text-id-1302 1302) + (text-id-1303 1303) + (text-id-1304 1304) + (text-id-1305 1305) + (text-id-1306 1306) + (text-id-1307 1307) + (text-id-1308 1308) + (text-id-1309 1309) + (text-id-1310 1310) + (text-id-1311 1311) + (text-id-1312 1312) + (text-id-1313 1313) + (text-id-1314 1314) + (text-id-1315 1315) + (text-id-1316 1316) + (text-id-1317 1317) + (text-id-1318 1318) + (text-id-1319 1319) + (text-id-1320 1320) + (text-id-1321 1321) + (text-id-1322 1322) + (text-id-1323 1323) + (text-id-1324 1324) + (text-id-1325 1325) + (text-id-1326 1326) + (text-id-1327 1327) + (text-id-1328 1328) + (text-id-1329 1329) + (text-id-1330 1330) + (text-id-1331 1331) + (text-id-1332 1332) + (text-id-1333 1333) + (text-id-1334 1334) + (text-id-1335 1335) + (text-id-1336 1336) + (text-id-1337 1337) + (text-id-1338 1338) + (text-id-1339 1339) + (text-id-1340 1340) + (text-id-1341 1341) + (text-id-1342 1342) + (text-id-1343 1343) + (text-id-1344 1344) + (text-id-1345 1345) + (text-id-1346 1346) + (text-id-1347 1347) + (text-id-1348 1348) + (text-id-1349 1349) + (text-id-1350 1350) + (text-id-1351 1351) + (text-id-1352 1352) + (text-id-1353 1353) + (text-id-1354 1354) + (text-id-1355 1355) + (text-id-1356 1356) + (text-id-1357 1357) + (text-id-1358 1358) + (text-id-1359 1359) + (text-id-1360 1360) + (text-id-1361 1361) + (text-id-1362 1362) + (text-id-1363 1363) + (text-id-1364 1364) + (text-id-1365 1365) + (text-id-1366 1366) + (text-id-1367 1367) + (text-id-1368 1368) + (text-id-1369 1369) + (text-id-1370 1370) + (text-id-1371 1371) + (text-id-1372 1372) + (text-id-1373 1373) + (text-id-1374 1374) + (text-id-1375 1375) + (text-id-1376 1376) + (text-id-1377 1377) + (text-id-1378 1378) + (text-id-1379 1379) + (text-id-1380 1380) + (text-id-1381 1381) + (text-id-1382 1382) + (text-id-1383 1383) + (text-id-1384 1384) + (text-id-1385 1385) + (text-id-1386 1386) + (text-id-1387 1387) + (text-id-1388 1388) + (text-id-1389 1389) + (text-id-1390 1390) + (text-id-1391 1391) + (text-id-1392 1392) + (text-id-1393 1393) + (text-id-1394 1394) + (text-id-1395 1395) + (text-id-1396 1396) + (text-id-1397 1397) + (text-id-1398 1398) + (text-id-1399 1399) + (text-id-1400 1400) + (text-id-1401 1401) + (text-id-1402 1402) + (text-id-1403 1403) + (text-id-1404 1404) + (text-id-1405 1405) + (text-id-1406 1406) + (text-id-1407 1407) + (text-id-1408 1408) + (text-id-1409 1409) + (text-id-1410 1410) + (text-id-1411 1411) + (text-id-1412 1412) + (text-id-1413 1413) + (text-id-1414 1414) + (text-id-1415 1415) + (text-id-1416 1416) + (text-id-1417 1417) + (text-id-1418 1418) + (text-id-1419 1419) + (text-id-1420 1420) + (text-id-1421 1421) + (text-id-1422 1422) + (text-id-1423 1423) + (text-id-1424 1424) + (text-id-1425 1425) + (text-id-1426 1426) + (text-id-1427 1427) + (text-id-1428 1428) + (text-id-1429 1429) + (text-id-1430 1430) + (text-id-1431 1431) + (text-id-1432 1432) + (text-id-1433 1433) + (text-id-1434 1434) + (text-id-1435 1435) + (text-id-1436 1436) + (text-id-1437 1437) + (text-id-1438 1438) + (text-id-1439 1439) + (text-id-1440 1440) + (text-id-1441 1441) + (text-id-1442 1442) + (text-id-1443 1443) + (text-id-1444 1444) + (text-id-1445 1445) + (text-id-1446 1446) + (text-id-1447 1447) + (text-id-1448 1448) + (text-id-1449 1449) + (text-id-1450 1450) + (text-id-1451 1451) + (text-id-1452 1452) + (text-id-1453 1453) + (text-id-1454 1454) + (text-id-1455 1455) + (text-id-1456 1456) + (text-id-1457 1457) + (text-id-1458 1458) + (text-id-1459 1459) + (text-id-1460 1460) + (text-id-1461 1461) + (text-id-1462 1462) + (text-id-1463 1463) + (text-id-1464 1464) + (text-id-1465 1465) + (text-id-1466 1466) + (text-id-1467 1467) + (text-id-1468 1468) + (text-id-1469 1469) + (text-id-1470 1470) + (text-id-1471 1471) + (text-id-1472 1472) + (text-id-1473 1473) + (text-id-1474 1474) + (text-id-1475 1475) + (text-id-1476 1476) + (text-id-1477 1477) + (text-id-1478 1478) + (text-id-1479 1479) + (text-id-1480 1480) + (text-id-1481 1481) + (text-id-1482 1482) + (text-id-1483 1483) + (text-id-1484 1484) + (text-id-1485 1485) + (text-id-1486 1486) + (text-id-1487 1487) + (text-id-1488 1488) + (text-id-1489 1489) + (text-id-1490 1490) + (text-id-1491 1491) + (text-id-1492 1492) + (text-id-1493 1493) + (text-id-1494 1494) + (text-id-1495 1495) + (text-id-1496 1496) + (text-id-1497 1497) + (text-id-1498 1498) + (text-id-1499 1499) + (text-id-1500 1500) + (text-id-1501 1501) + (text-id-1502 1502) + (text-id-1503 1503) + (text-id-1504 1504) + (text-id-1505 1505) + (text-id-1506 1506) + (text-id-1507 1507) + (text-id-1508 1508) + (text-id-1509 1509) + (text-id-1510 1510) + (text-id-1511 1511) + (text-id-1512 1512) + (text-id-1513 1513) + (text-id-1514 1514) + (text-id-1515 1515) + (text-id-1516 1516) + (text-id-1517 1517) + (text-id-1518 1518) + (text-id-1519 1519) + (text-id-1520 1520) + (text-id-1521 1521) + (text-id-1522 1522) + (text-id-1523 1523) + (text-id-1524 1524) + (text-id-1525 1525) + (text-id-1526 1526) + (text-id-1527 1527) + (text-id-1528 1528) + (text-id-1529 1529) + (text-id-1530 1530) + (text-id-1531 1531) + (text-id-1532 1532) + (text-id-1533 1533) + (text-id-1534 1534) + (text-id-1535 1535) + (text-id-1536 1536) + (text-id-1537 1537) + (text-id-1538 1538) + (text-id-1539 1539) + (text-id-1540 1540) + (text-id-1541 1541) + (text-id-1542 1542) + (text-id-1543 1543) + (text-id-1544 1544) + (text-id-1545 1545) + (text-id-1546 1546) + (text-id-1547 1547) + (text-id-1548 1548) + (text-id-1549 1549) + (text-id-1550 1550) + (text-id-1551 1551) + (text-id-1552 1552) + (text-id-1553 1553) + (text-id-1554 1554) + (text-id-1555 1555) + (text-id-1556 1556) + (text-id-1557 1557) + (text-id-1558 1558) + (text-id-1559 1559) + (text-id-1560 1560) + (text-id-1561 1561) + (text-id-1562 1562) + (text-id-1563 1563) + (text-id-1564 1564) + (text-id-1565 1565) + (text-id-1566 1566) + (text-id-1567 1567) + (text-id-1568 1568) + (text-id-1569 1569) + (text-id-1570 1570) + (text-id-1571 1571) + (text-id-1572 1572) + (text-id-1573 1573) + (text-id-1574 1574) + (text-id-1575 1575) + (text-id-1576 1576) + (text-id-1577 1577) + (text-id-1578 1578) (text-id-1579 1579) (text-id-1580 1580) (text-id-1581 1581) + (text-id-1582 1582) + (text-id-1583 1583) + (text-id-1584 1584) + (text-id-1585 1585) + (text-id-1586 1586) + (text-id-1587 1587) (text-id-1588 1588) + (text-id-1589 1589) + (text-id-1590 1590) + (text-id-1591 1591) + (text-id-1592 1592) + (text-id-1593 1593) + (text-id-1594 1594) + (text-id-1595 1595) + (text-id-1596 1596) + (text-id-1597 1597) + (text-id-1598 1598) + (text-id-1599 1599) + (text-id-1600 1600) + (text-id-1601 1601) + (text-id-1602 1602) + (text-id-1603 1603) + (text-id-1604 1604) + (text-id-1605 1605) + (text-id-1606 1606) + (text-id-1607 1607) + (text-id-1608 1608) + (text-id-1609 1609) + (text-id-1610 1610) + (text-id-1611 1611) + (text-id-1612 1612) + (text-id-1613 1613) + (text-id-1614 1614) + (text-id-1615 1615) + (text-id-1616 1616) + (text-id-1617 1617) + (text-id-1618 1618) + (text-id-1619 1619) + (text-id-1620 1620) + (text-id-1621 1621) + (text-id-1622 1622) + (text-id-1623 1623) (text-id-1624 1624) (text-id-1625 1625) + (text-id-1626 1626) + (text-id-1627 1627) + (text-id-1628 1628) + (text-id-1629 1629) + (text-id-1630 1630) + (text-id-1631 1631) + (text-id-1632 1632) (text-id-1633 1633) + (text-id-1634 1634) + (text-id-1635 1635) + (text-id-1636 1636) + (text-id-1637 1637) + (text-id-1638 1638) + (text-id-1639 1639) + (text-id-1640 1640) + (text-id-1641 1641) + (text-id-1642 1642) + (text-id-1643 1643) + (text-id-1644 1644) + (text-id-1645 1645) + (text-id-1646 1646) + (text-id-1647 1647) + (text-id-1648 1648) + (text-id-1649 1649) + (text-id-1650 1650) + (text-id-1651 1651) + (text-id-1652 1652) + (text-id-1653 1653) + (text-id-1654 1654) (text-id-1655 1655) (text-id-1656 1656) + (text-id-1657 1657) + (text-id-1658 1658) (text-id-1659 1659) + (text-id-1660 1660) + (text-id-1661 1661) + (text-id-1662 1662) + (text-id-1663 1663) + (text-id-1664 1664) + (text-id-1665 1665) + (text-id-1666 1666) + (text-id-1667 1667) + (text-id-1668 1668) + (text-id-1669 1669) + (text-id-1670 1670) + (text-id-1671 1671) + (text-id-1672 1672) + (text-id-1673 1673) + (text-id-1674 1674) + (text-id-1675 1675) + (text-id-1676 1676) + (text-id-1677 1677) + (text-id-1678 1678) + (text-id-1679 1679) + (text-id-1680 1680) + (text-id-1681 1681) + (text-id-1682 1682) + (text-id-1683 1683) + (text-id-1684 1684) + (text-id-1685 1685) + (text-id-1686 1686) + (text-id-1687 1687) + (text-id-1688 1688) + (text-id-1689 1689) + (text-id-1690 1690) + (text-id-1691 1691) + (text-id-1692 1692) + (text-id-1693 1693) (text-id-1694 1694) (text-id-1695 1695) + (text-id-1696 1696) + (text-id-1697 1697) + (text-id-1698 1698) + (text-id-1699 1699) + (text-id-1700 1700) + (text-id-1701 1701) + (text-id-1702 1702) + (text-id-1703 1703) + (text-id-1704 1704) + (text-id-1705 1705) + (text-id-1706 1706) + (text-id-1707 1707) + (text-id-1708 1708) + (text-id-1709 1709) + (text-id-1710 1710) + (text-id-1711 1711) + (text-id-1712 1712) + (text-id-1713 1713) + (text-id-1714 1714) + (text-id-1715 1715) + (text-id-1716 1716) + (text-id-1717 1717) + (text-id-1718 1718) + (text-id-1719 1719) + (text-id-1720 1720) + (text-id-1721 1721) + (text-id-1722 1722) + (text-id-1723 1723) + (text-id-1724 1724) + (text-id-1725 1725) + (text-id-1726 1726) + (text-id-1727 1727) + (text-id-1728 1728) + (text-id-1729 1729) + (text-id-1730 1730) + (text-id-1731 1731) + (text-id-1732 1732) + (text-id-1733 1733) + (text-id-1734 1734) + (text-id-1735 1735) + (text-id-1736 1736) + (text-id-1737 1737) + (text-id-1738 1738) + (text-id-1739 1739) + (text-id-1740 1740) + (text-id-1741 1741) + (text-id-1742 1742) + (text-id-1743 1743) + (text-id-1744 1744) + (text-id-1745 1745) + (text-id-1746 1746) + (text-id-1747 1747) + (text-id-1748 1748) + (text-id-1749 1749) + (text-id-1750 1750) + (text-id-1751 1751) + (text-id-1752 1752) + (text-id-1753 1753) + (text-id-1754 1754) + (text-id-1755 1755) + (text-id-1756 1756) + (text-id-1757 1757) + (text-id-1758 1758) + (text-id-1759 1759) + (text-id-1760 1760) + (text-id-1761 1761) + (text-id-1762 1762) + (text-id-1763 1763) + (text-id-1764 1764) + (text-id-1765 1765) + (text-id-1766 1766) + (text-id-1767 1767) + (text-id-1768 1768) + (text-id-1769 1769) + (text-id-1770 1770) + (text-id-1771 1771) + (text-id-1772 1772) + (text-id-1773 1773) + (text-id-1774 1774) + (text-id-1775 1775) + (text-id-1776 1776) + (text-id-1777 1777) + (text-id-1778 1778) + (text-id-1779 1779) + (text-id-1780 1780) + (text-id-1781 1781) + (text-id-1782 1782) + (text-id-1783 1783) + (text-id-1784 1784) + (text-id-1785 1785) + (text-id-1786 1786) + (text-id-1787 1787) + (text-id-1788 1788) + (text-id-1789 1789) + (text-id-1790 1790) + (text-id-1791 1791) + (text-id-1792 1792) + (text-id-1793 1793) + (text-id-1794 1794) + (text-id-1795 1795) + (text-id-1796 1796) + (text-id-1797 1797) + (text-id-1798 1798) + (text-id-1799 1799) + (text-id-1800 1800) + (text-id-1801 1801) + (text-id-1802 1802) + (text-id-1803 1803) + (text-id-1804 1804) + (text-id-1805 1805) + (text-id-1806 1806) + (text-id-1807 1807) + (text-id-1808 1808) + (text-id-1809 1809) + (text-id-1810 1810) + (text-id-1811 1811) + (text-id-1812 1812) + (text-id-1813 1813) + (text-id-1814 1814) + (text-id-1815 1815) + (text-id-1816 1816) + (text-id-1817 1817) + (text-id-1818 1818) + (text-id-1819 1819) + (text-id-1820 1820) + (text-id-1821 1821) + (text-id-1822 1822) + (text-id-1823 1823) + (text-id-1824 1824) + (text-id-1825 1825) + (text-id-1826 1826) + (text-id-1827 1827) + (text-id-1828 1828) + (text-id-1829 1829) + (text-id-1830 1830) + (text-id-1831 1831) + (text-id-1832 1832) + (text-id-1833 1833) + (text-id-1834 1834) + (text-id-1835 1835) + (text-id-1836 1836) + (text-id-1837 1837) (text-id-1838 1838) (text-id-1839 1839) - + (text-id-1840 1840) + (text-id-1841 1841) + (text-id-1842 1842) + (text-id-1843 1843) + (text-id-1844 1844) + (text-id-1845 1845) + (text-id-1846 1846) + (text-id-1847 1847) + (text-id-1848 1848) + (text-id-1849 1849) + (text-id-1850 1850) + (text-id-1851 1851) + (text-id-1852 1852) + (text-id-1853 1853) + (text-id-1854 1854) + (text-id-1855 1855) + (text-id-1856 1856) + (text-id-1857 1857) + (text-id-1858 1858) + (text-id-1859 1859) + (text-id-1860 1860) + (text-id-1861 1861) + (text-id-1862 1862) + (text-id-1863 1863) + (text-id-1864 1864) + (text-id-1865 1865) + (text-id-1866 1866) + (text-id-1867 1867) + (text-id-1868 1868) + (text-id-1869 1869) + (text-id-1870 1870) + (text-id-1871 1871) + (text-id-1872 1872) + (text-id-1873 1873) + (text-id-1874 1874) + (text-id-1875 1875) + (text-id-1876 1876) + (text-id-1877 1877) + (text-id-1878 1878) + (text-id-1879 1879) + (text-id-1880 1880) + (text-id-1881 1881) + (text-id-1882 1882) + (text-id-1883 1883) + (text-id-1884 1884) + (text-id-1885 1885) + (text-id-1886 1886) + (text-id-1887 1887) + (text-id-1888 1888) + (text-id-1889 1889) + (text-id-1890 1890) + (text-id-1891 1891) + (text-id-1892 1892) + (text-id-1893 1893) + (text-id-1894 1894) + (text-id-1895 1895) + (text-id-1896 1896) + (text-id-1897 1897) + (text-id-1898 1898) + (text-id-1899 1899) + (text-id-1900 1900) + (text-id-1901 1901) + (text-id-1902 1902) + (text-id-1903 1903) + (text-id-1904 1904) + (text-id-1905 1905) + (text-id-1906 1906) + (text-id-1907 1907) + (text-id-1908 1908) + (text-id-1909 1909) + (text-id-1910 1910) + (text-id-1911 1911) + (text-id-1912 1912) + (text-id-1913 1913) + (text-id-1914 1914) + (text-id-1915 1915) + (text-id-1916 1916) + (text-id-1917 1917) + (text-id-1918 1918) + (text-id-1919 1919) + (text-id-1920 1920) + (text-id-1921 1921) + (text-id-1922 1922) + (text-id-1923 1923) + (text-id-1924 1924) + (text-id-1925 1925) + (text-id-1926 1926) + (text-id-1927 1927) + (text-id-1928 1928) + (text-id-1929 1929) + (text-id-1930 1930) + (text-id-1931 1931) + (text-id-1932 1932) + (text-id-1933 1933) + (text-id-1934 1934) + (text-id-1935 1935) + (text-id-1936 1936) + (text-id-1937 1937) + (text-id-1938 1938) + (text-id-1939 1939) (text-id-1940 1940) - + (text-id-1941 1941) + (text-id-1942 1942) + (text-id-1943 1943) + (text-id-1944 1944) + (text-id-1945 1945) + (text-id-1946 1946) + (text-id-1947 1947) + (text-id-1948 1948) + (text-id-1949 1949) + (text-id-1950 1950) + (text-id-1951 1951) + (text-id-1952 1952) + (text-id-1953 1953) + (text-id-1954 1954) + (text-id-1955 1955) + (text-id-1956 1956) + (text-id-1957 1957) + (text-id-1958 1958) + (text-id-1959 1959) + (text-id-1960 1960) + (text-id-1961 1961) + (text-id-1962 1962) + (text-id-1963 1963) + (text-id-1964 1964) + (text-id-1965 1965) + (text-id-1966 1966) + (text-id-1967 1967) + (text-id-1968 1968) + (text-id-1969 1969) + (text-id-1970 1970) + (text-id-1971 1971) + (text-id-1972 1972) + (text-id-1973 1973) + (text-id-1974 1974) + (text-id-1975 1975) + (text-id-1976 1976) + (text-id-1977 1977) + (text-id-1978 1978) + (text-id-1979 1979) + (text-id-1980 1980) + (text-id-1981 1981) + (text-id-1982 1982) + (text-id-1983 1983) + (text-id-1984 1984) + (text-id-1985 1985) + (text-id-1986 1986) + (text-id-1987 1987) + (text-id-1988 1988) + (text-id-1989 1989) + (text-id-1990 1990) + (text-id-1991 1991) + (text-id-1992 1992) + (text-id-1993 1993) + (text-id-1994 1994) + (text-id-1995 1995) + (text-id-1996 1996) + (text-id-1997 1997) + (text-id-1998 1998) + (text-id-1999 1999) + (text-id-2000 2000) + (text-id-2001 2001) + (text-id-2002 2002) + (text-id-2003 2003) + (text-id-2004 2004) + (text-id-2005 2005) + (text-id-2006 2006) + (text-id-2007 2007) + (text-id-2008 2008) + (text-id-2009 2009) + (text-id-2010 2010) + (text-id-2011 2011) + (text-id-2012 2012) + (text-id-2013 2013) + (text-id-2014 2014) + (text-id-2015 2015) + (text-id-2016 2016) + (text-id-2017 2017) + (text-id-2018 2018) + (text-id-2019 2019) + (text-id-2020 2020) + (text-id-2021 2021) + (text-id-2022 2022) + (text-id-2023 2023) + (text-id-2024 2024) + (text-id-2025 2025) + (text-id-2026 2026) + (text-id-2027 2027) + (text-id-2028 2028) + (text-id-2029 2029) + (text-id-2030 2030) + (text-id-2031 2031) + (text-id-2032 2032) + (text-id-2033 2033) + (text-id-2034 2034) + (text-id-2035 2035) + (text-id-2036 2036) + (text-id-2037 2037) + (text-id-2038 2038) + (text-id-2039 2039) + (text-id-2040 2040) + (text-id-2041 2041) + (text-id-2042 2042) + (text-id-2043 2043) + (text-id-2044 2044) + (text-id-2045 2045) + (text-id-2046 2046) + (text-id-2047 2047) + (text-id-2048 2048) + (text-id-2049 2049) + (text-id-2050 2050) + (text-id-2051 2051) + (text-id-2052 2052) + (text-id-2053 2053) + (text-id-2054 2054) + (text-id-2055 2055) + (text-id-2056 2056) + (text-id-2057 2057) + (text-id-2058 2058) + (text-id-2059 2059) + (text-id-2060 2060) + (text-id-2061 2061) + (text-id-2062 2062) + (text-id-2063 2063) + (text-id-2064 2064) + (text-id-2065 2065) + (text-id-2066 2066) + (text-id-2067 2067) + (text-id-2068 2068) + (text-id-2069 2069) + (text-id-2070 2070) + (text-id-2071 2071) + (text-id-2072 2072) + (text-id-2073 2073) + (text-id-2074 2074) + (text-id-2075 2075) + (text-id-2076 2076) + (text-id-2077 2077) + (text-id-2078 2078) + (text-id-2079 2079) + (text-id-2080 2080) + (text-id-2081 2081) + (text-id-2082 2082) + (text-id-2083 2083) + (text-id-2084 2084) + (text-id-2085 2085) + (text-id-2086 2086) + (text-id-2087 2087) + (text-id-2088 2088) + (text-id-2089 2089) + (text-id-2090 2090) + (text-id-2091 2091) + (text-id-2092 2092) + (text-id-2093 2093) + (text-id-2094 2094) + (text-id-2095 2095) + (text-id-2096 2096) + (text-id-2097 2097) + (text-id-2098 2098) + (text-id-2099 2099) + (text-id-2100 2100) + (text-id-2101 2101) + (text-id-2102 2102) + (text-id-2103 2103) + (text-id-2104 2104) + (text-id-2105 2105) + (text-id-2106 2106) + (text-id-2107 2107) + (text-id-2108 2108) + (text-id-2109 2109) + (text-id-2110 2110) + (text-id-2111 2111) + (text-id-2112 2112) + (text-id-2113 2113) + (text-id-2114 2114) + (text-id-2115 2115) + (text-id-2116 2116) + (text-id-2117 2117) + (text-id-2118 2118) + (text-id-2119 2119) + (text-id-2120 2120) + (text-id-2121 2121) + (text-id-2122 2122) + (text-id-2123 2123) + (text-id-2124 2124) + (text-id-2125 2125) + (text-id-2126 2126) + (text-id-2127 2127) + (text-id-2128 2128) + (text-id-2129 2129) + (text-id-2130 2130) + (text-id-2131 2131) + (text-id-2132 2132) + (text-id-2133 2133) + (text-id-2134 2134) (text-id-2135 2135) (text-id-2136 2136) (text-id-2137 2137) @@ -8521,9 +10722,21 @@ (text-id-2145 2145) (text-id-2146 2146) (text-id-2147 2147) - + (text-id-2148 2148) (text-id-2149 2149) - + (text-id-2150 2150) + (text-id-2151 2151) + (text-id-2152 2152) + (text-id-2153 2153) + (text-id-2154 2154) + (text-id-2155 2155) + (text-id-2156 2156) + (text-id-2157 2157) + (text-id-2158 2158) + (text-id-2159 2159) + (text-id-2160 2160) + (text-id-2161 2161) + (text-id-2162 2162) (text-id-2163 2163) (text-id-2164 2164) (text-id-2165 2165) @@ -8541,6 +10754,9 @@ (text-id-2177 2177) (text-id-2178 2178) (text-id-2179 2179) + (text-id-2180 2180) + (text-id-2181 2181) + (text-id-2182 2182) (text-id-2183 2183) (text-id-2184 2184) (text-id-2185 2185) @@ -8549,7 +10765,23 @@ (text-id-2188 2188) (text-id-2189 2189) (text-id-2190 2190) - + (text-id-2191 2191) + (text-id-2192 2192) + (text-id-2193 2193) + (text-id-2194 2194) + (text-id-2195 2195) + (text-id-2196 2196) + (text-id-2197 2197) + (text-id-2198 2198) + (text-id-2199 2199) + (text-id-2200 2200) + (text-id-2201 2201) + (text-id-2202 2202) + (text-id-2203 2203) + (text-id-2204 2204) + (text-id-2205 2205) + (text-id-2206 2206) + (text-id-2207 2207) (text-id-2208 2208) (text-id-2209 2209) (text-id-2210 2210) @@ -8564,7 +10796,62 @@ (text-id-2219 2219) (text-id-2220 2220) (text-id-2221 2221) - + (text-id-2222 2222) + (text-id-2223 2223) + (text-id-2224 2224) + (text-id-2225 2225) + (text-id-2226 2226) + (text-id-2227 2227) + (text-id-2228 2228) + (text-id-2229 2229) + (text-id-2230 2230) + (text-id-2231 2231) + (text-id-2232 2232) + (text-id-2233 2233) + (text-id-2234 2234) + (text-id-2235 2235) + (text-id-2236 2236) + (text-id-2237 2237) + (text-id-2238 2238) + (text-id-2239 2239) + (text-id-2240 2240) + (text-id-2241 2241) + (text-id-2242 2242) + (text-id-2243 2243) + (text-id-2244 2244) + (text-id-2245 2245) + (text-id-2246 2246) + (text-id-2247 2247) + (text-id-2248 2248) + (text-id-2249 2249) + (text-id-2250 2250) + (text-id-2251 2251) + (text-id-2252 2252) + (text-id-2253 2253) + (text-id-2254 2254) + (text-id-2255 2255) + (text-id-2256 2256) + (text-id-2257 2257) + (text-id-2258 2258) + (text-id-2259 2259) + (text-id-2260 2260) + (text-id-2261 2261) + (text-id-2262 2262) + (text-id-2263 2263) + (text-id-2264 2264) + (text-id-2265 2265) + (text-id-2266 2266) + (text-id-2267 2267) + (text-id-2268 2268) + (text-id-2269 2269) + (text-id-2270 2270) + (text-id-2271 2271) + (text-id-2272 2272) + (text-id-2273 2273) + (text-id-2274 2274) + (text-id-2275 2275) + (text-id-2276 2276) + (text-id-2277 2277) (text-id-2278 2278) (text-id-2279 2279) (text-id-2280 2280) @@ -8600,9 +10887,526 @@ (text-id-2310 2310) (text-id-2311 2311) (text-id-2312 2312) - + (text-id-2313 2313) + (text-id-2314 2314) + (text-id-2315 2315) + (text-id-2316 2316) + (text-id-2317 2317) + (text-id-2318 2318) + (text-id-2319 2319) + (text-id-2320 2320) + (text-id-2321 2321) + (text-id-2322 2322) + (text-id-2323 2323) + (text-id-2324 2324) + (text-id-2325 2325) + (text-id-2326 2326) + (text-id-2327 2327) + (text-id-2328 2328) + (text-id-2329 2329) + (text-id-2330 2330) + (text-id-2331 2331) + (text-id-2332 2332) + (text-id-2333 2333) + (text-id-2334 2334) + (text-id-2335 2335) + (text-id-2336 2336) + (text-id-2337 2337) + (text-id-2338 2338) + (text-id-2339 2339) + (text-id-2340 2340) + (text-id-2341 2341) + (text-id-2342 2342) + (text-id-2343 2343) + (text-id-2344 2344) + (text-id-2345 2345) + (text-id-2346 2346) + (text-id-2347 2347) + (text-id-2348 2348) + (text-id-2349 2349) + (text-id-2350 2350) + (text-id-2351 2351) + (text-id-2352 2352) + (text-id-2353 2353) + (text-id-2354 2354) + (text-id-2355 2355) + (text-id-2356 2356) + (text-id-2357 2357) + (text-id-2358 2358) + (text-id-2359 2359) + (text-id-2360 2360) + (text-id-2361 2361) + (text-id-2362 2362) + (text-id-2363 2363) + (text-id-2364 2364) + (text-id-2365 2365) + (text-id-2366 2366) + (text-id-2367 2367) + (text-id-2368 2368) + (text-id-2369 2369) + (text-id-2370 2370) + (text-id-2371 2371) + (text-id-2372 2372) + (text-id-2373 2373) + (text-id-2374 2374) + (text-id-2375 2375) + (text-id-2376 2376) + (text-id-2377 2377) + (text-id-2378 2378) + (text-id-2379 2379) + (text-id-2380 2380) + (text-id-2381 2381) + (text-id-2382 2382) + (text-id-2383 2383) + (text-id-2384 2384) + (text-id-2385 2385) + (text-id-2386 2386) + (text-id-2387 2387) + (text-id-2388 2388) + (text-id-2389 2389) + (text-id-2390 2390) + (text-id-2391 2391) + (text-id-2392 2392) + (text-id-2393 2393) + (text-id-2394 2394) + (text-id-2395 2395) + (text-id-2396 2396) + (text-id-2397 2397) + (text-id-2398 2398) + (text-id-2399 2399) + (text-id-2400 2400) + (text-id-2401 2401) + (text-id-2402 2402) + (text-id-2403 2403) + (text-id-2404 2404) + (text-id-2405 2405) + (text-id-2406 2406) + (text-id-2407 2407) + (text-id-2408 2408) + (text-id-2409 2409) + (text-id-2410 2410) + (text-id-2411 2411) + (text-id-2412 2412) + (text-id-2413 2413) + (text-id-2414 2414) + (text-id-2415 2415) + (text-id-2416 2416) + (text-id-2417 2417) + (text-id-2418 2418) + (text-id-2419 2419) + (text-id-2420 2420) + (text-id-2421 2421) + (text-id-2422 2422) + (text-id-2423 2423) + (text-id-2424 2424) + (text-id-2425 2425) + (text-id-2426 2426) + (text-id-2427 2427) + (text-id-2428 2428) + (text-id-2429 2429) + (text-id-2430 2430) + (text-id-2431 2431) + (text-id-2432 2432) + (text-id-2433 2433) + (text-id-2434 2434) + (text-id-2435 2435) + (text-id-2436 2436) + (text-id-2437 2437) + (text-id-2438 2438) + (text-id-2439 2439) + (text-id-2440 2440) + (text-id-2441 2441) + (text-id-2442 2442) + (text-id-2443 2443) + (text-id-2444 2444) + (text-id-2445 2445) + (text-id-2446 2446) + (text-id-2447 2447) + (text-id-2448 2448) + (text-id-2449 2449) + (text-id-2450 2450) + (text-id-2451 2451) + (text-id-2452 2452) + (text-id-2453 2453) + (text-id-2454 2454) + (text-id-2455 2455) + (text-id-2456 2456) + (text-id-2457 2457) + (text-id-2458 2458) + (text-id-2459 2459) + (text-id-2460 2460) + (text-id-2461 2461) + (text-id-2462 2462) + (text-id-2463 2463) + (text-id-2464 2464) + (text-id-2465 2465) + (text-id-2466 2466) + (text-id-2467 2467) + (text-id-2468 2468) + (text-id-2469 2469) + (text-id-2470 2470) + (text-id-2471 2471) + (text-id-2472 2472) + (text-id-2473 2473) + (text-id-2474 2474) + (text-id-2475 2475) + (text-id-2476 2476) + (text-id-2477 2477) + (text-id-2478 2478) + (text-id-2479 2479) + (text-id-2480 2480) + (text-id-2481 2481) + (text-id-2482 2482) + (text-id-2483 2483) + (text-id-2484 2484) + (text-id-2485 2485) + (text-id-2486 2486) + (text-id-2487 2487) + (text-id-2488 2488) + (text-id-2489 2489) + (text-id-2490 2490) + (text-id-2491 2491) + (text-id-2492 2492) + (text-id-2493 2493) + (text-id-2494 2494) + (text-id-2495 2495) + (text-id-2496 2496) + (text-id-2497 2497) + (text-id-2498 2498) + (text-id-2499 2499) + (text-id-2500 2500) + (text-id-2501 2501) + (text-id-2502 2502) + (text-id-2503 2503) + (text-id-2504 2504) + (text-id-2505 2505) + (text-id-2506 2506) + (text-id-2507 2507) + (text-id-2508 2508) + (text-id-2509 2509) + (text-id-2510 2510) + (text-id-2511 2511) + (text-id-2512 2512) (text-id-2513 2513) - + (text-id-2514 2514) + (text-id-2515 2515) + (text-id-2516 2516) + (text-id-2517 2517) + (text-id-2518 2518) + (text-id-2519 2519) + (text-id-2520 2520) + (text-id-2521 2521) + (text-id-2522 2522) + (text-id-2523 2523) + (text-id-2524 2524) + (text-id-2525 2525) + (text-id-2526 2526) + (text-id-2527 2527) + (text-id-2528 2528) + (text-id-2529 2529) + (text-id-2530 2530) + (text-id-2531 2531) + (text-id-2532 2532) + (text-id-2533 2533) + (text-id-2534 2534) + (text-id-2535 2535) + (text-id-2536 2536) + (text-id-2537 2537) + (text-id-2538 2538) + (text-id-2539 2539) + (text-id-2540 2540) + (text-id-2541 2541) + (text-id-2542 2542) + (text-id-2543 2543) + (text-id-2544 2544) + (text-id-2545 2545) + (text-id-2546 2546) + (text-id-2547 2547) + (text-id-2548 2548) + (text-id-2549 2549) + (text-id-2550 2550) + (text-id-2551 2551) + (text-id-2552 2552) + (text-id-2553 2553) + (text-id-2554 2554) + (text-id-2555 2555) + (text-id-2556 2556) + (text-id-2557 2557) + (text-id-2558 2558) + (text-id-2559 2559) + (text-id-2560 2560) + (text-id-2561 2561) + (text-id-2562 2562) + (text-id-2563 2563) + (text-id-2564 2564) + (text-id-2565 2565) + (text-id-2566 2566) + (text-id-2567 2567) + (text-id-2568 2568) + (text-id-2569 2569) + (text-id-2570 2570) + (text-id-2571 2571) + (text-id-2572 2572) + (text-id-2573 2573) + (text-id-2574 2574) + (text-id-2575 2575) + (text-id-2576 2576) + (text-id-2577 2577) + (text-id-2578 2578) + (text-id-2579 2579) + (text-id-2580 2580) + (text-id-2581 2581) + (text-id-2582 2582) + (text-id-2583 2583) + (text-id-2584 2584) + (text-id-2585 2585) + (text-id-2586 2586) + (text-id-2587 2587) + (text-id-2588 2588) + (text-id-2589 2589) + (text-id-2590 2590) + (text-id-2591 2591) + (text-id-2592 2592) + (text-id-2593 2593) + (text-id-2594 2594) + (text-id-2595 2595) + (text-id-2596 2596) + (text-id-2597 2597) + (text-id-2598 2598) + (text-id-2599 2599) + (text-id-2600 2600) + (text-id-2601 2601) + (text-id-2602 2602) + (text-id-2603 2603) + (text-id-2604 2604) + (text-id-2605 2605) + (text-id-2606 2606) + (text-id-2607 2607) + (text-id-2608 2608) + (text-id-2609 2609) + (text-id-2610 2610) + (text-id-2611 2611) + (text-id-2612 2612) + (text-id-2613 2613) + (text-id-2614 2614) + (text-id-2615 2615) + (text-id-2616 2616) + (text-id-2617 2617) + (text-id-2618 2618) + (text-id-2619 2619) + (text-id-2620 2620) + (text-id-2621 2621) + (text-id-2622 2622) + (text-id-2623 2623) + (text-id-2624 2624) + (text-id-2625 2625) + (text-id-2626 2626) + (text-id-2627 2627) + (text-id-2628 2628) + (text-id-2629 2629) + (text-id-2630 2630) + (text-id-2631 2631) + (text-id-2632 2632) + (text-id-2633 2633) + (text-id-2634 2634) + (text-id-2635 2635) + (text-id-2636 2636) + (text-id-2637 2637) + (text-id-2638 2638) + (text-id-2639 2639) + (text-id-2640 2640) + (text-id-2641 2641) + (text-id-2642 2642) + (text-id-2643 2643) + (text-id-2644 2644) + (text-id-2645 2645) + (text-id-2646 2646) + (text-id-2647 2647) + (text-id-2648 2648) + (text-id-2649 2649) + (text-id-2650 2650) + (text-id-2651 2651) + (text-id-2652 2652) + (text-id-2653 2653) + (text-id-2654 2654) + (text-id-2655 2655) + (text-id-2656 2656) + (text-id-2657 2657) + (text-id-2658 2658) + (text-id-2659 2659) + (text-id-2660 2660) + (text-id-2661 2661) + (text-id-2662 2662) + (text-id-2663 2663) + (text-id-2664 2664) + (text-id-2665 2665) + (text-id-2666 2666) + (text-id-2667 2667) + (text-id-2668 2668) + (text-id-2669 2669) + (text-id-2670 2670) + (text-id-2671 2671) + (text-id-2672 2672) + (text-id-2673 2673) + (text-id-2674 2674) + (text-id-2675 2675) + (text-id-2676 2676) + (text-id-2677 2677) + (text-id-2678 2678) + (text-id-2679 2679) + (text-id-2680 2680) + (text-id-2681 2681) + (text-id-2682 2682) + (text-id-2683 2683) + (text-id-2684 2684) + (text-id-2685 2685) + (text-id-2686 2686) + (text-id-2687 2687) + (text-id-2688 2688) + (text-id-2689 2689) + (text-id-2690 2690) + (text-id-2691 2691) + (text-id-2692 2692) + (text-id-2693 2693) + (text-id-2694 2694) + (text-id-2695 2695) + (text-id-2696 2696) + (text-id-2697 2697) + (text-id-2698 2698) + (text-id-2699 2699) + (text-id-2700 2700) + (text-id-2701 2701) + (text-id-2702 2702) + (text-id-2703 2703) + (text-id-2704 2704) + (text-id-2705 2705) + (text-id-2706 2706) + (text-id-2707 2707) + (text-id-2708 2708) + (text-id-2709 2709) + (text-id-2710 2710) + (text-id-2711 2711) + (text-id-2712 2712) + (text-id-2713 2713) + (text-id-2714 2714) + (text-id-2715 2715) + (text-id-2716 2716) + (text-id-2717 2717) + (text-id-2718 2718) + (text-id-2719 2719) + (text-id-2720 2720) + (text-id-2721 2721) + (text-id-2722 2722) + (text-id-2723 2723) + (text-id-2724 2724) + (text-id-2725 2725) + (text-id-2726 2726) + (text-id-2727 2727) + (text-id-2728 2728) + (text-id-2729 2729) + (text-id-2730 2730) + (text-id-2731 2731) + (text-id-2732 2732) + (text-id-2733 2733) + (text-id-2734 2734) + (text-id-2735 2735) + (text-id-2736 2736) + (text-id-2737 2737) + (text-id-2738 2738) + (text-id-2739 2739) + (text-id-2740 2740) + (text-id-2741 2741) + (text-id-2742 2742) + (text-id-2743 2743) + (text-id-2744 2744) + (text-id-2745 2745) + (text-id-2746 2746) + (text-id-2747 2747) + (text-id-2748 2748) + (text-id-2749 2749) + (text-id-2750 2750) + (text-id-2751 2751) + (text-id-2752 2752) + (text-id-2753 2753) + (text-id-2754 2754) + (text-id-2755 2755) + (text-id-2756 2756) + (text-id-2757 2757) + (text-id-2758 2758) + (text-id-2759 2759) + (text-id-2760 2760) + (text-id-2761 2761) + (text-id-2762 2762) + (text-id-2763 2763) + (text-id-2764 2764) + (text-id-2765 2765) + (text-id-2766 2766) + (text-id-2767 2767) + (text-id-2768 2768) + (text-id-2769 2769) + (text-id-2770 2770) + (text-id-2771 2771) + (text-id-2772 2772) + (text-id-2773 2773) + (text-id-2774 2774) + (text-id-2775 2775) + (text-id-2776 2776) + (text-id-2777 2777) + (text-id-2778 2778) + (text-id-2779 2779) + (text-id-2780 2780) + (text-id-2781 2781) + (text-id-2782 2782) + (text-id-2783 2783) + (text-id-2784 2784) + (text-id-2785 2785) + (text-id-2786 2786) + (text-id-2787 2787) + (text-id-2788 2788) + (text-id-2789 2789) + (text-id-2790 2790) + (text-id-2791 2791) + (text-id-2792 2792) + (text-id-2793 2793) + (text-id-2794 2794) + (text-id-2795 2795) + (text-id-2796 2796) + (text-id-2797 2797) + (text-id-2798 2798) + (text-id-2799 2799) + (text-id-2800 2800) + (text-id-2801 2801) + (text-id-2802 2802) + (text-id-2803 2803) + (text-id-2804 2804) + (text-id-2805 2805) + (text-id-2806 2806) + (text-id-2807 2807) + (text-id-2808 2808) + (text-id-2809 2809) + (text-id-2810 2810) + (text-id-2811 2811) + (text-id-2812 2812) + (text-id-2813 2813) + (text-id-2814 2814) + (text-id-2815 2815) + (text-id-2816 2816) + (text-id-2817 2817) + (text-id-2818 2818) + (text-id-2819 2819) + (text-id-2820 2820) + (text-id-2821 2821) + (text-id-2822 2822) + (text-id-2823 2823) + (text-id-2824 2824) + (text-id-2825 2825) + (text-id-2826 2826) + (text-id-2827 2827) + (text-id-2828 2828) + (text-id-2829 2829) + (text-id-2830 2830) + (text-id-2831 2831) + (text-id-2832 2832) (text-id-2833 2833) (text-id-2834 2834) (text-id-2835 2835) @@ -8611,7 +11415,7 @@ (text-id-2838 2838) (text-id-2839 2839) (text-id-2840 2840) - + (text-id-2841 2841) (text-id-2842 2842) (text-id-2843 2843) (text-id-2844 2844) @@ -8656,9 +11460,81 @@ (text-id-2883 2883) (text-id-2884 2884) (text-id-2885 2885) - (text-id-2886 2886) - + (text-id-2887 2887) + (text-id-2888 2888) + (text-id-2889 2889) + (text-id-2890 2890) + (text-id-2891 2891) + (text-id-2892 2892) + (text-id-2893 2893) + (text-id-2894 2894) + (text-id-2895 2895) + (text-id-2896 2896) + (text-id-2897 2897) + (text-id-2898 2898) + (text-id-2899 2899) + (text-id-2900 2900) + (text-id-2901 2901) + (text-id-2902 2902) + (text-id-2903 2903) + (text-id-2904 2904) + (text-id-2905 2905) + (text-id-2906 2906) + (text-id-2907 2907) + (text-id-2908 2908) + (text-id-2909 2909) + (text-id-2910 2910) + (text-id-2911 2911) + (text-id-2912 2912) + (text-id-2913 2913) + (text-id-2914 2914) + (text-id-2915 2915) + (text-id-2916 2916) + (text-id-2917 2917) + (text-id-2918 2918) + (text-id-2919 2919) + (text-id-2920 2920) + (text-id-2921 2921) + (text-id-2922 2922) + (text-id-2923 2923) + (text-id-2924 2924) + (text-id-2925 2925) + (text-id-2926 2926) + (text-id-2927 2927) + (text-id-2928 2928) + (text-id-2929 2929) + (text-id-2930 2930) + (text-id-2931 2931) + (text-id-2932 2932) + (text-id-2933 2933) + (text-id-2934 2934) + (text-id-2935 2935) + (text-id-2936 2936) + (text-id-2937 2937) + (text-id-2938 2938) + (text-id-2939 2939) + (text-id-2940 2940) + (text-id-2941 2941) + (text-id-2942 2942) + (text-id-2943 2943) + (text-id-2944 2944) + (text-id-2945 2945) + (text-id-2946 2946) + (text-id-2947 2947) + (text-id-2948 2948) + (text-id-2949 2949) + (text-id-2950 2950) + (text-id-2951 2951) + (text-id-2952 2952) + (text-id-2953 2953) + (text-id-2954 2954) + (text-id-2955 2955) + (text-id-2956 2956) + (text-id-2957 2957) + (text-id-2958 2958) + (text-id-2959 2959) + (text-id-2960 2960) (text-id-2961 2961) (text-id-2962 2962) (text-id-2963 2963) @@ -8708,7 +11584,1366 @@ (text-id-3007 3007) (text-id-3008 3008) (text-id-3009 3009) - + (text-id-3010 3010) + (text-id-3011 3011) + (text-id-3012 3012) + (text-id-3013 3013) + (text-id-3014 3014) + (text-id-3015 3015) + (text-id-3016 3016) + (text-id-3017 3017) + (text-id-3018 3018) + (text-id-3019 3019) + (text-id-3020 3020) + (text-id-3021 3021) + (text-id-3022 3022) + (text-id-3023 3023) + (text-id-3024 3024) + (text-id-3025 3025) + (text-id-3026 3026) + (text-id-3027 3027) + (text-id-3028 3028) + (text-id-3029 3029) + (text-id-3030 3030) + (text-id-3031 3031) + (text-id-3032 3032) + (text-id-3033 3033) + (text-id-3034 3034) + (text-id-3035 3035) + (text-id-3036 3036) + (text-id-3037 3037) + (text-id-3038 3038) + (text-id-3039 3039) + (text-id-3040 3040) + (text-id-3041 3041) + (text-id-3042 3042) + (text-id-3043 3043) + (text-id-3044 3044) + (text-id-3045 3045) + (text-id-3046 3046) + (text-id-3047 3047) + (text-id-3048 3048) + (text-id-3049 3049) + (text-id-3050 3050) + (text-id-3051 3051) + (text-id-3052 3052) + (text-id-3053 3053) + (text-id-3054 3054) + (text-id-3055 3055) + (text-id-3056 3056) + (text-id-3057 3057) + (text-id-3058 3058) + (text-id-3059 3059) + (text-id-3060 3060) + (text-id-3061 3061) + (text-id-3062 3062) + (text-id-3063 3063) + (text-id-3064 3064) + (text-id-3065 3065) + (text-id-3066 3066) + (text-id-3067 3067) + (text-id-3068 3068) + (text-id-3069 3069) + (text-id-3070 3070) + (text-id-3071 3071) + (text-id-3072 3072) + (text-id-3073 3073) + (text-id-3074 3074) + (text-id-3075 3075) + (text-id-3076 3076) + (text-id-3077 3077) + (text-id-3078 3078) + (text-id-3079 3079) + (text-id-3080 3080) + (text-id-3081 3081) + (text-id-3082 3082) + (text-id-3083 3083) + (text-id-3084 3084) + (text-id-3085 3085) + (text-id-3086 3086) + (text-id-3087 3087) + (text-id-3088 3088) + (text-id-3089 3089) + (text-id-3090 3090) + (text-id-3091 3091) + (text-id-3092 3092) + (text-id-3093 3093) + (text-id-3094 3094) + (text-id-3095 3095) + (text-id-3096 3096) + (text-id-3097 3097) + (text-id-3098 3098) + (text-id-3099 3099) + (text-id-3100 3100) + (text-id-3101 3101) + (text-id-3102 3102) + (text-id-3103 3103) + (text-id-3104 3104) + (text-id-3105 3105) + (text-id-3106 3106) + (text-id-3107 3107) + (text-id-3108 3108) + (text-id-3109 3109) + (text-id-3110 3110) + (text-id-3111 3111) + (text-id-3112 3112) + (text-id-3113 3113) + (text-id-3114 3114) + (text-id-3115 3115) + (text-id-3116 3116) + (text-id-3117 3117) + (text-id-3118 3118) + (text-id-3119 3119) + (text-id-3120 3120) + (text-id-3121 3121) + (text-id-3122 3122) + (text-id-3123 3123) + (text-id-3124 3124) + (text-id-3125 3125) + (text-id-3126 3126) + (text-id-3127 3127) + (text-id-3128 3128) + (text-id-3129 3129) + (text-id-3130 3130) + (text-id-3131 3131) + (text-id-3132 3132) + (text-id-3133 3133) + (text-id-3134 3134) + (text-id-3135 3135) + (text-id-3136 3136) + (text-id-3137 3137) + (text-id-3138 3138) + (text-id-3139 3139) + (text-id-3140 3140) + (text-id-3141 3141) + (text-id-3142 3142) + (text-id-3143 3143) + (text-id-3144 3144) + (text-id-3145 3145) + (text-id-3146 3146) + (text-id-3147 3147) + (text-id-3148 3148) + (text-id-3149 3149) + (text-id-3150 3150) + (text-id-3151 3151) + (text-id-3152 3152) + (text-id-3153 3153) + (text-id-3154 3154) + (text-id-3155 3155) + (text-id-3156 3156) + (text-id-3157 3157) + (text-id-3158 3158) + (text-id-3159 3159) + (text-id-3160 3160) + (text-id-3161 3161) + (text-id-3162 3162) + (text-id-3163 3163) + (text-id-3164 3164) + (text-id-3165 3165) + (text-id-3166 3166) + (text-id-3167 3167) + (text-id-3168 3168) + (text-id-3169 3169) + (text-id-3170 3170) + (text-id-3171 3171) + (text-id-3172 3172) + (text-id-3173 3173) + (text-id-3174 3174) + (text-id-3175 3175) + (text-id-3176 3176) + (text-id-3177 3177) + (text-id-3178 3178) + (text-id-3179 3179) + (text-id-3180 3180) + (text-id-3181 3181) + (text-id-3182 3182) + (text-id-3183 3183) + (text-id-3184 3184) + (text-id-3185 3185) + (text-id-3186 3186) + (text-id-3187 3187) + (text-id-3188 3188) + (text-id-3189 3189) + (text-id-3190 3190) + (text-id-3191 3191) + (text-id-3192 3192) + (text-id-3193 3193) + (text-id-3194 3194) + (text-id-3195 3195) + (text-id-3196 3196) + (text-id-3197 3197) + (text-id-3198 3198) + (text-id-3199 3199) + (text-id-3200 3200) + (text-id-3201 3201) + (text-id-3202 3202) + (text-id-3203 3203) + (text-id-3204 3204) + (text-id-3205 3205) + (text-id-3206 3206) + (text-id-3207 3207) + (text-id-3208 3208) + (text-id-3209 3209) + (text-id-3210 3210) + (text-id-3211 3211) + (text-id-3212 3212) + (text-id-3213 3213) + (text-id-3214 3214) + (text-id-3215 3215) + (text-id-3216 3216) + (text-id-3217 3217) + (text-id-3218 3218) + (text-id-3219 3219) + (text-id-3220 3220) + (text-id-3221 3221) + (text-id-3222 3222) + (text-id-3223 3223) + (text-id-3224 3224) + (text-id-3225 3225) + (text-id-3226 3226) + (text-id-3227 3227) + (text-id-3228 3228) + (text-id-3229 3229) + (text-id-3230 3230) + (text-id-3231 3231) + (text-id-3232 3232) + (text-id-3233 3233) + (text-id-3234 3234) + (text-id-3235 3235) + (text-id-3236 3236) + (text-id-3237 3237) + (text-id-3238 3238) + (text-id-3239 3239) + (text-id-3240 3240) + (text-id-3241 3241) + (text-id-3242 3242) + (text-id-3243 3243) + (text-id-3244 3244) + (text-id-3245 3245) + (text-id-3246 3246) + (text-id-3247 3247) + (text-id-3248 3248) + (text-id-3249 3249) + (text-id-3250 3250) + (text-id-3251 3251) + (text-id-3252 3252) + (text-id-3253 3253) + (text-id-3254 3254) + (text-id-3255 3255) + (text-id-3256 3256) + (text-id-3257 3257) + (text-id-3258 3258) + (text-id-3259 3259) + (text-id-3260 3260) + (text-id-3261 3261) + (text-id-3262 3262) + (text-id-3263 3263) + (text-id-3264 3264) + (text-id-3265 3265) + (text-id-3266 3266) + (text-id-3267 3267) + (text-id-3268 3268) + (text-id-3269 3269) + (text-id-3270 3270) + (text-id-3271 3271) + (text-id-3272 3272) + (text-id-3273 3273) + (text-id-3274 3274) + (text-id-3275 3275) + (text-id-3276 3276) + (text-id-3277 3277) + (text-id-3278 3278) + (text-id-3279 3279) + (text-id-3280 3280) + (text-id-3281 3281) + (text-id-3282 3282) + (text-id-3283 3283) + (text-id-3284 3284) + (text-id-3285 3285) + (text-id-3286 3286) + (text-id-3287 3287) + (text-id-3288 3288) + (text-id-3289 3289) + (text-id-3290 3290) + (text-id-3291 3291) + (text-id-3292 3292) + (text-id-3293 3293) + (text-id-3294 3294) + (text-id-3295 3295) + (text-id-3296 3296) + (text-id-3297 3297) + (text-id-3298 3298) + (text-id-3299 3299) + (text-id-3300 3300) + (text-id-3301 3301) + (text-id-3302 3302) + (text-id-3303 3303) + (text-id-3304 3304) + (text-id-3305 3305) + (text-id-3306 3306) + (text-id-3307 3307) + (text-id-3308 3308) + (text-id-3309 3309) + (text-id-3310 3310) + (text-id-3311 3311) + (text-id-3312 3312) + (text-id-3313 3313) + (text-id-3314 3314) + (text-id-3315 3315) + (text-id-3316 3316) + (text-id-3317 3317) + (text-id-3318 3318) + (text-id-3319 3319) + (text-id-3320 3320) + (text-id-3321 3321) + (text-id-3322 3322) + (text-id-3323 3323) + (text-id-3324 3324) + (text-id-3325 3325) + (text-id-3326 3326) + (text-id-3327 3327) + (text-id-3328 3328) + (text-id-3329 3329) + (text-id-3330 3330) + (text-id-3331 3331) + (text-id-3332 3332) + (text-id-3333 3333) + (text-id-3334 3334) + (text-id-3335 3335) + (text-id-3336 3336) + (text-id-3337 3337) + (text-id-3338 3338) + (text-id-3339 3339) + (text-id-3340 3340) + (text-id-3341 3341) + (text-id-3342 3342) + (text-id-3343 3343) + (text-id-3344 3344) + (text-id-3345 3345) + (text-id-3346 3346) + (text-id-3347 3347) + (text-id-3348 3348) + (text-id-3349 3349) + (text-id-3350 3350) + (text-id-3351 3351) + (text-id-3352 3352) + (text-id-3353 3353) + (text-id-3354 3354) + (text-id-3355 3355) + (text-id-3356 3356) + (text-id-3357 3357) + (text-id-3358 3358) + (text-id-3359 3359) + (text-id-3360 3360) + (text-id-3361 3361) + (text-id-3362 3362) + (text-id-3363 3363) + (text-id-3364 3364) + (text-id-3365 3365) + (text-id-3366 3366) + (text-id-3367 3367) + (text-id-3368 3368) + (text-id-3369 3369) + (text-id-3370 3370) + (text-id-3371 3371) + (text-id-3372 3372) + (text-id-3373 3373) + (text-id-3374 3374) + (text-id-3375 3375) + (text-id-3376 3376) + (text-id-3377 3377) + (text-id-3378 3378) + (text-id-3379 3379) + (text-id-3380 3380) + (text-id-3381 3381) + (text-id-3382 3382) + (text-id-3383 3383) + (text-id-3384 3384) + (text-id-3385 3385) + (text-id-3386 3386) + (text-id-3387 3387) + (text-id-3388 3388) + (text-id-3389 3389) + (text-id-3390 3390) + (text-id-3391 3391) + (text-id-3392 3392) + (text-id-3393 3393) + (text-id-3394 3394) + (text-id-3395 3395) + (text-id-3396 3396) + (text-id-3397 3397) + (text-id-3398 3398) + (text-id-3399 3399) + (text-id-3400 3400) + (text-id-3401 3401) + (text-id-3402 3402) + (text-id-3403 3403) + (text-id-3404 3404) + (text-id-3405 3405) + (text-id-3406 3406) + (text-id-3407 3407) + (text-id-3408 3408) + (text-id-3409 3409) + (text-id-3410 3410) + (text-id-3411 3411) + (text-id-3412 3412) + (text-id-3413 3413) + (text-id-3414 3414) + (text-id-3415 3415) + (text-id-3416 3416) + (text-id-3417 3417) + (text-id-3418 3418) + (text-id-3419 3419) + (text-id-3420 3420) + (text-id-3421 3421) + (text-id-3422 3422) + (text-id-3423 3423) + (text-id-3424 3424) + (text-id-3425 3425) + (text-id-3426 3426) + (text-id-3427 3427) + (text-id-3428 3428) + (text-id-3429 3429) + (text-id-3430 3430) + (text-id-3431 3431) + (text-id-3432 3432) + (text-id-3433 3433) + (text-id-3434 3434) + (text-id-3435 3435) + (text-id-3436 3436) + (text-id-3437 3437) + (text-id-3438 3438) + (text-id-3439 3439) + (text-id-3440 3440) + (text-id-3441 3441) + (text-id-3442 3442) + (text-id-3443 3443) + (text-id-3444 3444) + (text-id-3445 3445) + (text-id-3446 3446) + (text-id-3447 3447) + (text-id-3448 3448) + (text-id-3449 3449) + (text-id-3450 3450) + (text-id-3451 3451) + (text-id-3452 3452) + (text-id-3453 3453) + (text-id-3454 3454) + (text-id-3455 3455) + (text-id-3456 3456) + (text-id-3457 3457) + (text-id-3458 3458) + (text-id-3459 3459) + (text-id-3460 3460) + (text-id-3461 3461) + (text-id-3462 3462) + (text-id-3463 3463) + (text-id-3464 3464) + (text-id-3465 3465) + (text-id-3466 3466) + (text-id-3467 3467) + (text-id-3468 3468) + (text-id-3469 3469) + (text-id-3470 3470) + (text-id-3471 3471) + (text-id-3472 3472) + (text-id-3473 3473) + (text-id-3474 3474) + (text-id-3475 3475) + (text-id-3476 3476) + (text-id-3477 3477) + (text-id-3478 3478) + (text-id-3479 3479) + (text-id-3480 3480) + (text-id-3481 3481) + (text-id-3482 3482) + (text-id-3483 3483) + (text-id-3484 3484) + (text-id-3485 3485) + (text-id-3486 3486) + (text-id-3487 3487) + (text-id-3488 3488) + (text-id-3489 3489) + (text-id-3490 3490) + (text-id-3491 3491) + (text-id-3492 3492) + (text-id-3493 3493) + (text-id-3494 3494) + (text-id-3495 3495) + (text-id-3496 3496) + (text-id-3497 3497) + (text-id-3498 3498) + (text-id-3499 3499) + (text-id-3500 3500) + (text-id-3501 3501) + (text-id-3502 3502) + (text-id-3503 3503) + (text-id-3504 3504) + (text-id-3505 3505) + (text-id-3506 3506) + (text-id-3507 3507) + (text-id-3508 3508) + (text-id-3509 3509) + (text-id-3510 3510) + (text-id-3511 3511) + (text-id-3512 3512) + (text-id-3513 3513) + (text-id-3514 3514) + (text-id-3515 3515) + (text-id-3516 3516) + (text-id-3517 3517) + (text-id-3518 3518) + (text-id-3519 3519) + (text-id-3520 3520) + (text-id-3521 3521) + (text-id-3522 3522) + (text-id-3523 3523) + (text-id-3524 3524) + (text-id-3525 3525) + (text-id-3526 3526) + (text-id-3527 3527) + (text-id-3528 3528) + (text-id-3529 3529) + (text-id-3530 3530) + (text-id-3531 3531) + (text-id-3532 3532) + (text-id-3533 3533) + (text-id-3534 3534) + (text-id-3535 3535) + (text-id-3536 3536) + (text-id-3537 3537) + (text-id-3538 3538) + (text-id-3539 3539) + (text-id-3540 3540) + (text-id-3541 3541) + (text-id-3542 3542) + (text-id-3543 3543) + (text-id-3544 3544) + (text-id-3545 3545) + (text-id-3546 3546) + (text-id-3547 3547) + (text-id-3548 3548) + (text-id-3549 3549) + (text-id-3550 3550) + (text-id-3551 3551) + (text-id-3552 3552) + (text-id-3553 3553) + (text-id-3554 3554) + (text-id-3555 3555) + (text-id-3556 3556) + (text-id-3557 3557) + (text-id-3558 3558) + (text-id-3559 3559) + (text-id-3560 3560) + (text-id-3561 3561) + (text-id-3562 3562) + (text-id-3563 3563) + (text-id-3564 3564) + (text-id-3565 3565) + (text-id-3566 3566) + (text-id-3567 3567) + (text-id-3568 3568) + (text-id-3569 3569) + (text-id-3570 3570) + (text-id-3571 3571) + (text-id-3572 3572) + (text-id-3573 3573) + (text-id-3574 3574) + (text-id-3575 3575) + (text-id-3576 3576) + (text-id-3577 3577) + (text-id-3578 3578) + (text-id-3579 3579) + (text-id-3580 3580) + (text-id-3581 3581) + (text-id-3582 3582) + (text-id-3583 3583) + (text-id-3584 3584) + (text-id-3585 3585) + (text-id-3586 3586) + (text-id-3587 3587) + (text-id-3588 3588) + (text-id-3589 3589) + (text-id-3590 3590) + (text-id-3591 3591) + (text-id-3592 3592) + (text-id-3593 3593) + (text-id-3594 3594) + (text-id-3595 3595) + (text-id-3596 3596) + (text-id-3597 3597) + (text-id-3598 3598) + (text-id-3599 3599) + (text-id-3600 3600) + (text-id-3601 3601) + (text-id-3602 3602) + (text-id-3603 3603) + (text-id-3604 3604) + (text-id-3605 3605) + (text-id-3606 3606) + (text-id-3607 3607) + (text-id-3608 3608) + (text-id-3609 3609) + (text-id-3610 3610) + (text-id-3611 3611) + (text-id-3612 3612) + (text-id-3613 3613) + (text-id-3614 3614) + (text-id-3615 3615) + (text-id-3616 3616) + (text-id-3617 3617) + (text-id-3618 3618) + (text-id-3619 3619) + (text-id-3620 3620) + (text-id-3621 3621) + (text-id-3622 3622) + (text-id-3623 3623) + (text-id-3624 3624) + (text-id-3625 3625) + (text-id-3626 3626) + (text-id-3627 3627) + (text-id-3628 3628) + (text-id-3629 3629) + (text-id-3630 3630) + (text-id-3631 3631) + (text-id-3632 3632) + (text-id-3633 3633) + (text-id-3634 3634) + (text-id-3635 3635) + (text-id-3636 3636) + (text-id-3637 3637) + (text-id-3638 3638) + (text-id-3639 3639) + (text-id-3640 3640) + (text-id-3641 3641) + (text-id-3642 3642) + (text-id-3643 3643) + (text-id-3644 3644) + (text-id-3645 3645) + (text-id-3646 3646) + (text-id-3647 3647) + (text-id-3648 3648) + (text-id-3649 3649) + (text-id-3650 3650) + (text-id-3651 3651) + (text-id-3652 3652) + (text-id-3653 3653) + (text-id-3654 3654) + (text-id-3655 3655) + (text-id-3656 3656) + (text-id-3657 3657) + (text-id-3658 3658) + (text-id-3659 3659) + (text-id-3660 3660) + (text-id-3661 3661) + (text-id-3662 3662) + (text-id-3663 3663) + (text-id-3664 3664) + (text-id-3665 3665) + (text-id-3666 3666) + (text-id-3667 3667) + (text-id-3668 3668) + (text-id-3669 3669) + (text-id-3670 3670) + (text-id-3671 3671) + (text-id-3672 3672) + (text-id-3673 3673) + (text-id-3674 3674) + (text-id-3675 3675) + (text-id-3676 3676) + (text-id-3677 3677) + (text-id-3678 3678) + (text-id-3679 3679) + (text-id-3680 3680) + (text-id-3681 3681) + (text-id-3682 3682) + (text-id-3683 3683) + (text-id-3684 3684) + (text-id-3685 3685) + (text-id-3686 3686) + (text-id-3687 3687) + (text-id-3688 3688) + (text-id-3689 3689) + (text-id-3690 3690) + (text-id-3691 3691) + (text-id-3692 3692) + (text-id-3693 3693) + (text-id-3694 3694) + (text-id-3695 3695) + (text-id-3696 3696) + (text-id-3697 3697) + (text-id-3698 3698) + (text-id-3699 3699) + (text-id-3700 3700) + (text-id-3701 3701) + (text-id-3702 3702) + (text-id-3703 3703) + (text-id-3704 3704) + (text-id-3705 3705) + (text-id-3706 3706) + (text-id-3707 3707) + (text-id-3708 3708) + (text-id-3709 3709) + (text-id-3710 3710) + (text-id-3711 3711) + (text-id-3712 3712) + (text-id-3713 3713) + (text-id-3714 3714) + (text-id-3715 3715) + (text-id-3716 3716) + (text-id-3717 3717) + (text-id-3718 3718) + (text-id-3719 3719) + (text-id-3720 3720) + (text-id-3721 3721) + (text-id-3722 3722) + (text-id-3723 3723) + (text-id-3724 3724) + (text-id-3725 3725) + (text-id-3726 3726) + (text-id-3727 3727) + (text-id-3728 3728) + (text-id-3729 3729) + (text-id-3730 3730) + (text-id-3731 3731) + (text-id-3732 3732) + (text-id-3733 3733) + (text-id-3734 3734) + (text-id-3735 3735) + (text-id-3736 3736) + (text-id-3737 3737) + (text-id-3738 3738) + (text-id-3739 3739) + (text-id-3740 3740) + (text-id-3741 3741) + (text-id-3742 3742) + (text-id-3743 3743) + (text-id-3744 3744) + (text-id-3745 3745) + (text-id-3746 3746) + (text-id-3747 3747) + (text-id-3748 3748) + (text-id-3749 3749) + (text-id-3750 3750) + (text-id-3751 3751) + (text-id-3752 3752) + (text-id-3753 3753) + (text-id-3754 3754) + (text-id-3755 3755) + (text-id-3756 3756) + (text-id-3757 3757) + (text-id-3758 3758) + (text-id-3759 3759) + (text-id-3760 3760) + (text-id-3761 3761) + (text-id-3762 3762) + (text-id-3763 3763) + (text-id-3764 3764) + (text-id-3765 3765) + (text-id-3766 3766) + (text-id-3767 3767) + (text-id-3768 3768) + (text-id-3769 3769) + (text-id-3770 3770) + (text-id-3771 3771) + (text-id-3772 3772) + (text-id-3773 3773) + (text-id-3774 3774) + (text-id-3775 3775) + (text-id-3776 3776) + (text-id-3777 3777) + (text-id-3778 3778) + (text-id-3779 3779) + (text-id-3780 3780) + (text-id-3781 3781) + (text-id-3782 3782) + (text-id-3783 3783) + (text-id-3784 3784) + (text-id-3785 3785) + (text-id-3786 3786) + (text-id-3787 3787) + (text-id-3788 3788) + (text-id-3789 3789) + (text-id-3790 3790) + (text-id-3791 3791) + (text-id-3792 3792) + (text-id-3793 3793) + (text-id-3794 3794) + (text-id-3795 3795) + (text-id-3796 3796) + (text-id-3797 3797) + (text-id-3798 3798) + (text-id-3799 3799) + (text-id-3800 3800) + (text-id-3801 3801) + (text-id-3802 3802) + (text-id-3803 3803) + (text-id-3804 3804) + (text-id-3805 3805) + (text-id-3806 3806) + (text-id-3807 3807) + (text-id-3808 3808) + (text-id-3809 3809) + (text-id-3810 3810) + (text-id-3811 3811) + (text-id-3812 3812) + (text-id-3813 3813) + (text-id-3814 3814) + (text-id-3815 3815) + (text-id-3816 3816) + (text-id-3817 3817) + (text-id-3818 3818) + (text-id-3819 3819) + (text-id-3820 3820) + (text-id-3821 3821) + (text-id-3822 3822) + (text-id-3823 3823) + (text-id-3824 3824) + (text-id-3825 3825) + (text-id-3826 3826) + (text-id-3827 3827) + (text-id-3828 3828) + (text-id-3829 3829) + (text-id-3830 3830) + (text-id-3831 3831) + (text-id-3832 3832) + (text-id-3833 3833) + (text-id-3834 3834) + (text-id-3835 3835) + (text-id-3836 3836) + (text-id-3837 3837) + (text-id-3838 3838) + (text-id-3839 3839) + (text-id-3840 3840) + (text-id-3841 3841) + (text-id-3842 3842) + (text-id-3843 3843) + (text-id-3844 3844) + (text-id-3845 3845) + (text-id-3846 3846) + (text-id-3847 3847) + (text-id-3848 3848) + (text-id-3849 3849) + (text-id-3850 3850) + (text-id-3851 3851) + (text-id-3852 3852) + (text-id-3853 3853) + (text-id-3854 3854) + (text-id-3855 3855) + (text-id-3856 3856) + (text-id-3857 3857) + (text-id-3858 3858) + (text-id-3859 3859) + (text-id-3860 3860) + (text-id-3861 3861) + (text-id-3862 3862) + (text-id-3863 3863) + (text-id-3864 3864) + (text-id-3865 3865) + (text-id-3866 3866) + (text-id-3867 3867) + (text-id-3868 3868) + (text-id-3869 3869) + (text-id-3870 3870) + (text-id-3871 3871) + (text-id-3872 3872) + (text-id-3873 3873) + (text-id-3874 3874) + (text-id-3875 3875) + (text-id-3876 3876) + (text-id-3877 3877) + (text-id-3878 3878) + (text-id-3879 3879) + (text-id-3880 3880) + (text-id-3881 3881) + (text-id-3882 3882) + (text-id-3883 3883) + (text-id-3884 3884) + (text-id-3885 3885) + (text-id-3886 3886) + (text-id-3887 3887) + (text-id-3888 3888) + (text-id-3889 3889) + (text-id-3890 3890) + (text-id-3891 3891) + (text-id-3892 3892) + (text-id-3893 3893) + (text-id-3894 3894) + (text-id-3895 3895) + (text-id-3896 3896) + (text-id-3897 3897) + (text-id-3898 3898) + (text-id-3899 3899) + (text-id-3900 3900) + (text-id-3901 3901) + (text-id-3902 3902) + (text-id-3903 3903) + (text-id-3904 3904) + (text-id-3905 3905) + (text-id-3906 3906) + (text-id-3907 3907) + (text-id-3908 3908) + (text-id-3909 3909) + (text-id-3910 3910) + (text-id-3911 3911) + (text-id-3912 3912) + (text-id-3913 3913) + (text-id-3914 3914) + (text-id-3915 3915) + (text-id-3916 3916) + (text-id-3917 3917) + (text-id-3918 3918) + (text-id-3919 3919) + (text-id-3920 3920) + (text-id-3921 3921) + (text-id-3922 3922) + (text-id-3923 3923) + (text-id-3924 3924) + (text-id-3925 3925) + (text-id-3926 3926) + (text-id-3927 3927) + (text-id-3928 3928) + (text-id-3929 3929) + (text-id-3930 3930) + (text-id-3931 3931) + (text-id-3932 3932) + (text-id-3933 3933) + (text-id-3934 3934) + (text-id-3935 3935) + (text-id-3936 3936) + (text-id-3937 3937) + (text-id-3938 3938) + (text-id-3939 3939) + (text-id-3940 3940) + (text-id-3941 3941) + (text-id-3942 3942) + (text-id-3943 3943) + (text-id-3944 3944) + (text-id-3945 3945) + (text-id-3946 3946) + (text-id-3947 3947) + (text-id-3948 3948) + (text-id-3949 3949) + (text-id-3950 3950) + (text-id-3951 3951) + (text-id-3952 3952) + (text-id-3953 3953) + (text-id-3954 3954) + (text-id-3955 3955) + (text-id-3956 3956) + (text-id-3957 3957) + (text-id-3958 3958) + (text-id-3959 3959) + (text-id-3960 3960) + (text-id-3961 3961) + (text-id-3962 3962) + (text-id-3963 3963) + (text-id-3964 3964) + (text-id-3965 3965) + (text-id-3966 3966) + (text-id-3967 3967) + (text-id-3968 3968) + (text-id-3969 3969) + (text-id-3970 3970) + (text-id-3971 3971) + (text-id-3972 3972) + (text-id-3973 3973) + (text-id-3974 3974) + (text-id-3975 3975) + (text-id-3976 3976) + (text-id-3977 3977) + (text-id-3978 3978) + (text-id-3979 3979) + (text-id-3980 3980) + (text-id-3981 3981) + (text-id-3982 3982) + (text-id-3983 3983) + (text-id-3984 3984) + (text-id-3985 3985) + (text-id-3986 3986) + (text-id-3987 3987) + (text-id-3988 3988) + (text-id-3989 3989) + (text-id-3990 3990) + (text-id-3991 3991) + (text-id-3992 3992) + (text-id-3993 3993) + (text-id-3994 3994) + (text-id-3995 3995) + (text-id-3996 3996) + (text-id-3997 3997) + (text-id-3998 3998) + (text-id-3999 3999) + (text-id-4000 4000) + (text-id-4001 4001) + (text-id-4002 4002) + (text-id-4003 4003) + (text-id-4004 4004) + (text-id-4005 4005) + (text-id-4006 4006) + (text-id-4007 4007) + (text-id-4008 4008) + (text-id-4009 4009) + (text-id-4010 4010) + (text-id-4011 4011) + (text-id-4012 4012) + (text-id-4013 4013) + (text-id-4014 4014) + (text-id-4015 4015) + (text-id-4016 4016) + (text-id-4017 4017) + (text-id-4018 4018) + (text-id-4019 4019) + (text-id-4020 4020) + (text-id-4021 4021) + (text-id-4022 4022) + (text-id-4023 4023) + (text-id-4024 4024) + (text-id-4025 4025) + (text-id-4026 4026) + (text-id-4027 4027) + (text-id-4028 4028) + (text-id-4029 4029) + (text-id-4030 4030) + (text-id-4031 4031) + (text-id-4032 4032) + (text-id-4033 4033) + (text-id-4034 4034) + (text-id-4035 4035) + (text-id-4036 4036) + (text-id-4037 4037) + (text-id-4038 4038) + (text-id-4039 4039) + (text-id-4040 4040) + (text-id-4041 4041) + (text-id-4042 4042) + (text-id-4043 4043) + (text-id-4044 4044) + (text-id-4045 4045) + (text-id-4046 4046) + (text-id-4047 4047) + (text-id-4048 4048) + (text-id-4049 4049) + (text-id-4050 4050) + (text-id-4051 4051) + (text-id-4052 4052) + (text-id-4053 4053) + (text-id-4054 4054) + (text-id-4055 4055) + (text-id-4056 4056) + (text-id-4057 4057) + (text-id-4058 4058) + (text-id-4059 4059) + (text-id-4060 4060) + (text-id-4061 4061) + (text-id-4062 4062) + (text-id-4063 4063) + (text-id-4064 4064) + (text-id-4065 4065) + (text-id-4066 4066) + (text-id-4067 4067) + (text-id-4068 4068) + (text-id-4069 4069) + (text-id-4070 4070) + (text-id-4071 4071) + (text-id-4072 4072) + (text-id-4073 4073) + (text-id-4074 4074) + (text-id-4075 4075) + (text-id-4076 4076) + (text-id-4077 4077) + (text-id-4078 4078) + (text-id-4079 4079) + (text-id-4080 4080) + (text-id-4081 4081) + (text-id-4082 4082) + (text-id-4083 4083) + (text-id-4084 4084) + (text-id-4085 4085) + (text-id-4086 4086) + (text-id-4087 4087) + (text-id-4088 4088) + (text-id-4089 4089) + (text-id-4090 4090) + (text-id-4091 4091) + (text-id-4092 4092) + (text-id-4093 4093) + (text-id-4094 4094) + (text-id-4095 4095) + (text-id-4096 4096) + (text-id-4097 4097) + (text-id-4098 4098) + (text-id-4099 4099) + (text-id-4100 4100) + (text-id-4101 4101) + (text-id-4102 4102) + (text-id-4103 4103) + (text-id-4104 4104) + (text-id-4105 4105) + (text-id-4106 4106) + (text-id-4107 4107) + (text-id-4108 4108) + (text-id-4109 4109) + (text-id-4110 4110) + (text-id-4111 4111) + (text-id-4112 4112) + (text-id-4113 4113) + (text-id-4114 4114) + (text-id-4115 4115) + (text-id-4116 4116) + (text-id-4117 4117) + (text-id-4118 4118) + (text-id-4119 4119) + (text-id-4120 4120) + (text-id-4121 4121) + (text-id-4122 4122) + (text-id-4123 4123) + (text-id-4124 4124) + (text-id-4125 4125) + (text-id-4126 4126) + (text-id-4127 4127) + (text-id-4128 4128) + (text-id-4129 4129) + (text-id-4130 4130) + (text-id-4131 4131) + (text-id-4132 4132) + (text-id-4133 4133) + (text-id-4134 4134) + (text-id-4135 4135) + (text-id-4136 4136) + (text-id-4137 4137) + (text-id-4138 4138) + (text-id-4139 4139) + (text-id-4140 4140) + (text-id-4141 4141) + (text-id-4142 4142) + (text-id-4143 4143) + (text-id-4144 4144) + (text-id-4145 4145) + (text-id-4146 4146) + (text-id-4147 4147) + (text-id-4148 4148) + (text-id-4149 4149) + (text-id-4150 4150) + (text-id-4151 4151) + (text-id-4152 4152) + (text-id-4153 4153) + (text-id-4154 4154) + (text-id-4155 4155) + (text-id-4156 4156) + (text-id-4157 4157) + (text-id-4158 4158) + (text-id-4159 4159) + (text-id-4160 4160) + (text-id-4161 4161) + (text-id-4162 4162) + (text-id-4163 4163) + (text-id-4164 4164) + (text-id-4165 4165) + (text-id-4166 4166) + (text-id-4167 4167) + (text-id-4168 4168) + (text-id-4169 4169) + (text-id-4170 4170) + (text-id-4171 4171) + (text-id-4172 4172) + (text-id-4173 4173) + (text-id-4174 4174) + (text-id-4175 4175) + (text-id-4176 4176) + (text-id-4177 4177) + (text-id-4178 4178) + (text-id-4179 4179) + (text-id-4180 4180) + (text-id-4181 4181) + (text-id-4182 4182) + (text-id-4183 4183) + (text-id-4184 4184) + (text-id-4185 4185) + (text-id-4186 4186) + (text-id-4187 4187) + (text-id-4188 4188) + (text-id-4189 4189) + (text-id-4190 4190) + (text-id-4191 4191) + (text-id-4192 4192) + (text-id-4193 4193) + (text-id-4194 4194) + (text-id-4195 4195) + (text-id-4196 4196) + (text-id-4197 4197) + (text-id-4198 4198) + (text-id-4199 4199) + (text-id-4200 4200) + (text-id-4201 4201) + (text-id-4202 4202) + (text-id-4203 4203) + (text-id-4204 4204) + (text-id-4205 4205) + (text-id-4206 4206) + (text-id-4207 4207) + (text-id-4208 4208) + (text-id-4209 4209) + (text-id-4210 4210) + (text-id-4211 4211) + (text-id-4212 4212) + (text-id-4213 4213) + (text-id-4214 4214) + (text-id-4215 4215) + (text-id-4216 4216) + (text-id-4217 4217) + (text-id-4218 4218) + (text-id-4219 4219) + (text-id-4220 4220) + (text-id-4221 4221) + (text-id-4222 4222) + (text-id-4223 4223) + (text-id-4224 4224) + (text-id-4225 4225) + (text-id-4226 4226) + (text-id-4227 4227) + (text-id-4228 4228) + (text-id-4229 4229) + (text-id-4230 4230) + (text-id-4231 4231) + (text-id-4232 4232) + (text-id-4233 4233) + (text-id-4234 4234) + (text-id-4235 4235) + (text-id-4236 4236) + (text-id-4237 4237) + (text-id-4238 4238) + (text-id-4239 4239) + (text-id-4240 4240) + (text-id-4241 4241) + (text-id-4242 4242) + (text-id-4243 4243) + (text-id-4244 4244) + (text-id-4245 4245) + (text-id-4246 4246) + (text-id-4247 4247) + (text-id-4248 4248) + (text-id-4249 4249) + (text-id-4250 4250) + (text-id-4251 4251) + (text-id-4252 4252) + (text-id-4253 4253) + (text-id-4254 4254) + (text-id-4255 4255) + (text-id-4256 4256) + (text-id-4257 4257) + (text-id-4258 4258) + (text-id-4259 4259) + (text-id-4260 4260) + (text-id-4261 4261) + (text-id-4262 4262) + (text-id-4263 4263) + (text-id-4264 4264) + (text-id-4265 4265) + (text-id-4266 4266) + (text-id-4267 4267) + (text-id-4268 4268) + (text-id-4269 4269) + (text-id-4270 4270) + (text-id-4271 4271) + (text-id-4272 4272) + (text-id-4273 4273) + (text-id-4274 4274) + (text-id-4275 4275) + (text-id-4276 4276) + (text-id-4277 4277) + (text-id-4278 4278) + (text-id-4279 4279) + (text-id-4280 4280) + (text-id-4281 4281) + (text-id-4282 4282) + (text-id-4283 4283) + (text-id-4284 4284) + (text-id-4285 4285) + (text-id-4286 4286) + (text-id-4287 4287) + (text-id-4288 4288) + (text-id-4289 4289) + (text-id-4290 4290) + (text-id-4291 4291) + (text-id-4292 4292) + (text-id-4293 4293) + (text-id-4294 4294) + (text-id-4295 4295) + (text-id-4296 4296) + (text-id-4297 4297) + (text-id-4298 4298) + (text-id-4299 4299) + (text-id-4300 4300) + (text-id-4301 4301) + (text-id-4302 4302) + (text-id-4303 4303) + (text-id-4304 4304) + (text-id-4305 4305) + (text-id-4306 4306) + (text-id-4307 4307) + (text-id-4308 4308) + (text-id-4309 4309) + (text-id-4310 4310) + (text-id-4311 4311) + (text-id-4312 4312) + (text-id-4313 4313) + (text-id-4314 4314) + (text-id-4315 4315) + (text-id-4316 4316) + (text-id-4317 4317) + (text-id-4318 4318) + (text-id-4319 4319) + (text-id-4320 4320) + (text-id-4321 4321) + (text-id-4322 4322) + (text-id-4323 4323) + (text-id-4324 4324) + (text-id-4325 4325) + (text-id-4326 4326) + (text-id-4327 4327) + (text-id-4328 4328) + (text-id-4329 4329) + (text-id-4330 4330) + (text-id-4331 4331) + (text-id-4332 4332) + (text-id-4333 4333) + (text-id-4334 4334) + (text-id-4335 4335) + (text-id-4336 4336) + (text-id-4337 4337) + (text-id-4338 4338) + (text-id-4339 4339) + (text-id-4340 4340) + (text-id-4341 4341) + (text-id-4342 4342) + (text-id-4343 4343) + (text-id-4344 4344) + (text-id-4345 4345) + (text-id-4346 4346) + (text-id-4347 4347) + (text-id-4348 4348) + (text-id-4349 4349) + (text-id-4350 4350) + (text-id-4351 4351) + (text-id-4352 4352) + (text-id-4353 4353) + (text-id-4354 4354) + (text-id-4355 4355) + (text-id-4356 4356) + (text-id-4357 4357) + (text-id-4358 4358) + (text-id-4359 4359) + (text-id-4360 4360) + (text-id-4361 4361) + (text-id-4362 4362) + (text-id-4363 4363) + (text-id-4364 4364) + (text-id-4365 4365) + (text-id-4366 4366) + (text-id-4367 4367) + (text-id-4368 4368) + (text-id-4369 4369) (text-id-4370 4370) (text-id-4371 4371) (text-id-4372 4372) @@ -8722,7 +12957,283 @@ (text-id-4380 4380) (text-id-4381 4381) (text-id-4382 4382) - + (text-id-4383 4383) + (text-id-4384 4384) + (text-id-4385 4385) + (text-id-4386 4386) + (text-id-4387 4387) + (text-id-4388 4388) + (text-id-4389 4389) + (text-id-4390 4390) + (text-id-4391 4391) + (text-id-4392 4392) + (text-id-4393 4393) + (text-id-4394 4394) + (text-id-4395 4395) + (text-id-4396 4396) + (text-id-4397 4397) + (text-id-4398 4398) + (text-id-4399 4399) + (text-id-4400 4400) + (text-id-4401 4401) + (text-id-4402 4402) + (text-id-4403 4403) + (text-id-4404 4404) + (text-id-4405 4405) + (text-id-4406 4406) + (text-id-4407 4407) + (text-id-4408 4408) + (text-id-4409 4409) + (text-id-4410 4410) + (text-id-4411 4411) + (text-id-4412 4412) + (text-id-4413 4413) + (text-id-4414 4414) + (text-id-4415 4415) + (text-id-4416 4416) + (text-id-4417 4417) + (text-id-4418 4418) + (text-id-4419 4419) + (text-id-4420 4420) + (text-id-4421 4421) + (text-id-4422 4422) + (text-id-4423 4423) + (text-id-4424 4424) + (text-id-4425 4425) + (text-id-4426 4426) + (text-id-4427 4427) + (text-id-4428 4428) + (text-id-4429 4429) + (text-id-4430 4430) + (text-id-4431 4431) + (text-id-4432 4432) + (text-id-4433 4433) + (text-id-4434 4434) + (text-id-4435 4435) + (text-id-4436 4436) + (text-id-4437 4437) + (text-id-4438 4438) + (text-id-4439 4439) + (text-id-4440 4440) + (text-id-4441 4441) + (text-id-4442 4442) + (text-id-4443 4443) + (text-id-4444 4444) + (text-id-4445 4445) + (text-id-4446 4446) + (text-id-4447 4447) + (text-id-4448 4448) + (text-id-4449 4449) + (text-id-4450 4450) + (text-id-4451 4451) + (text-id-4452 4452) + (text-id-4453 4453) + (text-id-4454 4454) + (text-id-4455 4455) + (text-id-4456 4456) + (text-id-4457 4457) + (text-id-4458 4458) + (text-id-4459 4459) + (text-id-4460 4460) + (text-id-4461 4461) + (text-id-4462 4462) + (text-id-4463 4463) + (text-id-4464 4464) + (text-id-4465 4465) + (text-id-4466 4466) + (text-id-4467 4467) + (text-id-4468 4468) + (text-id-4469 4469) + (text-id-4470 4470) + (text-id-4471 4471) + (text-id-4472 4472) + (text-id-4473 4473) + (text-id-4474 4474) + (text-id-4475 4475) + (text-id-4476 4476) + (text-id-4477 4477) + (text-id-4478 4478) + (text-id-4479 4479) + (text-id-4480 4480) + (text-id-4481 4481) + (text-id-4482 4482) + (text-id-4483 4483) + (text-id-4484 4484) + (text-id-4485 4485) + (text-id-4486 4486) + (text-id-4487 4487) + (text-id-4488 4488) + (text-id-4489 4489) + (text-id-4490 4490) + (text-id-4491 4491) + (text-id-4492 4492) + (text-id-4493 4493) + (text-id-4494 4494) + (text-id-4495 4495) + (text-id-4496 4496) + (text-id-4497 4497) + (text-id-4498 4498) + (text-id-4499 4499) + (text-id-4500 4500) + (text-id-4501 4501) + (text-id-4502 4502) + (text-id-4503 4503) + (text-id-4504 4504) + (text-id-4505 4505) + (text-id-4506 4506) + (text-id-4507 4507) + (text-id-4508 4508) + (text-id-4509 4509) + (text-id-4510 4510) + (text-id-4511 4511) + (text-id-4512 4512) + (text-id-4513 4513) + (text-id-4514 4514) + (text-id-4515 4515) + (text-id-4516 4516) + (text-id-4517 4517) + (text-id-4518 4518) + (text-id-4519 4519) + (text-id-4520 4520) + (text-id-4521 4521) + (text-id-4522 4522) + (text-id-4523 4523) + (text-id-4524 4524) + (text-id-4525 4525) + (text-id-4526 4526) + (text-id-4527 4527) + (text-id-4528 4528) + (text-id-4529 4529) + (text-id-4530 4530) + (text-id-4531 4531) + (text-id-4532 4532) + (text-id-4533 4533) + (text-id-4534 4534) + (text-id-4535 4535) + (text-id-4536 4536) + (text-id-4537 4537) + (text-id-4538 4538) + (text-id-4539 4539) + (text-id-4540 4540) + (text-id-4541 4541) + (text-id-4542 4542) + (text-id-4543 4543) + (text-id-4544 4544) + (text-id-4545 4545) + (text-id-4546 4546) + (text-id-4547 4547) + (text-id-4548 4548) + (text-id-4549 4549) + (text-id-4550 4550) + (text-id-4551 4551) + (text-id-4552 4552) + (text-id-4553 4553) + (text-id-4554 4554) + (text-id-4555 4555) + (text-id-4556 4556) + (text-id-4557 4557) + (text-id-4558 4558) + (text-id-4559 4559) + (text-id-4560 4560) + (text-id-4561 4561) + (text-id-4562 4562) + (text-id-4563 4563) + (text-id-4564 4564) + (text-id-4565 4565) + (text-id-4566 4566) + (text-id-4567 4567) + (text-id-4568 4568) + (text-id-4569 4569) + (text-id-4570 4570) + (text-id-4571 4571) + (text-id-4572 4572) + (text-id-4573 4573) + (text-id-4574 4574) + (text-id-4575 4575) + (text-id-4576 4576) + (text-id-4577 4577) + (text-id-4578 4578) + (text-id-4579 4579) + (text-id-4580 4580) + (text-id-4581 4581) + (text-id-4582 4582) + (text-id-4583 4583) + (text-id-4584 4584) + (text-id-4585 4585) + (text-id-4586 4586) + (text-id-4587 4587) + (text-id-4588 4588) + (text-id-4589 4589) + (text-id-4590 4590) + (text-id-4591 4591) + (text-id-4592 4592) + (text-id-4593 4593) + (text-id-4594 4594) + (text-id-4595 4595) + (text-id-4596 4596) + (text-id-4597 4597) + (text-id-4598 4598) + (text-id-4599 4599) + (text-id-4600 4600) + (text-id-4601 4601) + (text-id-4602 4602) + (text-id-4603 4603) + (text-id-4604 4604) + (text-id-4605 4605) + (text-id-4606 4606) + (text-id-4607 4607) + (text-id-4608 4608) + (text-id-4609 4609) + (text-id-4610 4610) + (text-id-4611 4611) + (text-id-4612 4612) + (text-id-4613 4613) + (text-id-4614 4614) + (text-id-4615 4615) + (text-id-4616 4616) + (text-id-4617 4617) + (text-id-4618 4618) + (text-id-4619 4619) + (text-id-4620 4620) + (text-id-4621 4621) + (text-id-4622 4622) + (text-id-4623 4623) + (text-id-4624 4624) + (text-id-4625 4625) + (text-id-4626 4626) + (text-id-4627 4627) + (text-id-4628 4628) + (text-id-4629 4629) + (text-id-4630 4630) + (text-id-4631 4631) + (text-id-4632 4632) + (text-id-4633 4633) + (text-id-4634 4634) + (text-id-4635 4635) + (text-id-4636 4636) + (text-id-4637 4637) + (text-id-4638 4638) + (text-id-4639 4639) + (text-id-4640 4640) + (text-id-4641 4641) + (text-id-4642 4642) + (text-id-4643 4643) + (text-id-4644 4644) + (text-id-4645 4645) + (text-id-4646 4646) + (text-id-4647 4647) + (text-id-4648 4648) + (text-id-4649 4649) + (text-id-4650 4650) + (text-id-4651 4651) + (text-id-4652 4652) + (text-id-4653 4653) + (text-id-4654 4654) + (text-id-4655 4655) + (text-id-4656 4656) + (text-id-4657 4657) + (text-id-4658 4658) + (text-id-4659 4659) (text-id-4660 4660) (text-id-4661 4661) (text-id-4662 4662) @@ -8755,7 +13266,6 @@ (text-id-4689 4689) (text-id-4690 4690) (text-id-4691 4691) - (text-id-4692 4692) (text-id-4693 4693) (text-id-4694 4694) @@ -8876,6 +13386,773 @@ (text-id-4809 4809) (text-id-4810 4810) (text-id-4811 4811) + (text-id-4812 4812) + (text-id-4813 4813) + (text-id-4814 4814) + (text-id-4815 4815) + (text-id-4816 4816) + (text-id-4817 4817) + (text-id-4818 4818) + (text-id-4819 4819) + (text-id-4820 4820) + (text-id-4821 4821) + (text-id-4822 4822) + (text-id-4823 4823) + (text-id-4824 4824) + (text-id-4825 4825) + (text-id-4826 4826) + (text-id-4827 4827) + (text-id-4828 4828) + (text-id-4829 4829) + (text-id-4830 4830) + (text-id-4831 4831) + (text-id-4832 4832) + (text-id-4833 4833) + (text-id-4834 4834) + (text-id-4835 4835) + (text-id-4836 4836) + (text-id-4837 4837) + (text-id-4838 4838) + (text-id-4839 4839) + (text-id-4840 4840) + (text-id-4841 4841) + (text-id-4842 4842) + (text-id-4843 4843) + (text-id-4844 4844) + (text-id-4845 4845) + (text-id-4846 4846) + (text-id-4847 4847) + (text-id-4848 4848) + (text-id-4849 4849) + (text-id-4850 4850) + (text-id-4851 4851) + (text-id-4852 4852) + (text-id-4853 4853) + (text-id-4854 4854) + (text-id-4855 4855) + (text-id-4856 4856) + (text-id-4857 4857) + (text-id-4858 4858) + (text-id-4859 4859) + (text-id-4860 4860) + (text-id-4861 4861) + (text-id-4862 4862) + (text-id-4863 4863) + (text-id-4864 4864) + (text-id-4865 4865) + (text-id-4866 4866) + (text-id-4867 4867) + (text-id-4868 4868) + (text-id-4869 4869) + (text-id-4870 4870) + (text-id-4871 4871) + (text-id-4872 4872) + (text-id-4873 4873) + (text-id-4874 4874) + (text-id-4875 4875) + (text-id-4876 4876) + (text-id-4877 4877) + (text-id-4878 4878) + (text-id-4879 4879) + (text-id-4880 4880) + (text-id-4881 4881) + (text-id-4882 4882) + (text-id-4883 4883) + (text-id-4884 4884) + (text-id-4885 4885) + (text-id-4886 4886) + (text-id-4887 4887) + (text-id-4888 4888) + (text-id-4889 4889) + (text-id-4890 4890) + (text-id-4891 4891) + (text-id-4892 4892) + (text-id-4893 4893) + (text-id-4894 4894) + (text-id-4895 4895) + (text-id-4896 4896) + (text-id-4897 4897) + (text-id-4898 4898) + (text-id-4899 4899) + (text-id-4900 4900) + (text-id-4901 4901) + (text-id-4902 4902) + (text-id-4903 4903) + (text-id-4904 4904) + (text-id-4905 4905) + (text-id-4906 4906) + (text-id-4907 4907) + (text-id-4908 4908) + (text-id-4909 4909) + (text-id-4910 4910) + (text-id-4911 4911) + (text-id-4912 4912) + (text-id-4913 4913) + (text-id-4914 4914) + (text-id-4915 4915) + (text-id-4916 4916) + (text-id-4917 4917) + (text-id-4918 4918) + (text-id-4919 4919) + (text-id-4920 4920) + (text-id-4921 4921) + (text-id-4922 4922) + (text-id-4923 4923) + (text-id-4924 4924) + (text-id-4925 4925) + (text-id-4926 4926) + (text-id-4927 4927) + (text-id-4928 4928) + (text-id-4929 4929) + (text-id-4930 4930) + (text-id-4931 4931) + (text-id-4932 4932) + (text-id-4933 4933) + (text-id-4934 4934) + (text-id-4935 4935) + (text-id-4936 4936) + (text-id-4937 4937) + (text-id-4938 4938) + (text-id-4939 4939) + (text-id-4940 4940) + (text-id-4941 4941) + (text-id-4942 4942) + (text-id-4943 4943) + (text-id-4944 4944) + (text-id-4945 4945) + (text-id-4946 4946) + (text-id-4947 4947) + (text-id-4948 4948) + (text-id-4949 4949) + (text-id-4950 4950) + (text-id-4951 4951) + (text-id-4952 4952) + (text-id-4953 4953) + (text-id-4954 4954) + (text-id-4955 4955) + (text-id-4956 4956) + (text-id-4957 4957) + (text-id-4958 4958) + (text-id-4959 4959) + (text-id-4960 4960) + (text-id-4961 4961) + (text-id-4962 4962) + (text-id-4963 4963) + (text-id-4964 4964) + (text-id-4965 4965) + (text-id-4966 4966) + (text-id-4967 4967) + (text-id-4968 4968) + (text-id-4969 4969) + (text-id-4970 4970) + (text-id-4971 4971) + (text-id-4972 4972) + (text-id-4973 4973) + (text-id-4974 4974) + (text-id-4975 4975) + (text-id-4976 4976) + (text-id-4977 4977) + (text-id-4978 4978) + (text-id-4979 4979) + (text-id-4980 4980) + (text-id-4981 4981) + (text-id-4982 4982) + (text-id-4983 4983) + (text-id-4984 4984) + (text-id-4985 4985) + (text-id-4986 4986) + (text-id-4987 4987) + (text-id-4988 4988) + (text-id-4989 4989) + (text-id-4990 4990) + (text-id-4991 4991) + (text-id-4992 4992) + (text-id-4993 4993) + (text-id-4994 4994) + (text-id-4995 4995) + (text-id-4996 4996) + (text-id-4997 4997) + (text-id-4998 4998) + (text-id-4999 4999) + (text-id-5000 5000) + (text-id-5001 5001) + (text-id-5002 5002) + (text-id-5003 5003) + (text-id-5004 5004) + (text-id-5005 5005) + (text-id-5006 5006) + (text-id-5007 5007) + (text-id-5008 5008) + (text-id-5009 5009) + (text-id-5010 5010) + (text-id-5011 5011) + (text-id-5012 5012) + (text-id-5013 5013) + (text-id-5014 5014) + (text-id-5015 5015) + (text-id-5016 5016) + (text-id-5017 5017) + (text-id-5018 5018) + (text-id-5019 5019) + (text-id-5020 5020) + (text-id-5021 5021) + (text-id-5022 5022) + (text-id-5023 5023) + (text-id-5024 5024) + (text-id-5025 5025) + (text-id-5026 5026) + (text-id-5027 5027) + (text-id-5028 5028) + (text-id-5029 5029) + (text-id-5030 5030) + (text-id-5031 5031) + (text-id-5032 5032) + (text-id-5033 5033) + (text-id-5034 5034) + (text-id-5035 5035) + (text-id-5036 5036) + (text-id-5037 5037) + (text-id-5038 5038) + (text-id-5039 5039) + (text-id-5040 5040) + (text-id-5041 5041) + (text-id-5042 5042) + (text-id-5043 5043) + (text-id-5044 5044) + (text-id-5045 5045) + (text-id-5046 5046) + (text-id-5047 5047) + (text-id-5048 5048) + (text-id-5049 5049) + (text-id-5050 5050) + (text-id-5051 5051) + (text-id-5052 5052) + (text-id-5053 5053) + (text-id-5054 5054) + (text-id-5055 5055) + (text-id-5056 5056) + (text-id-5057 5057) + (text-id-5058 5058) + (text-id-5059 5059) + (text-id-5060 5060) + (text-id-5061 5061) + (text-id-5062 5062) + (text-id-5063 5063) + (text-id-5064 5064) + (text-id-5065 5065) + (text-id-5066 5066) + (text-id-5067 5067) + (text-id-5068 5068) + (text-id-5069 5069) + (text-id-5070 5070) + (text-id-5071 5071) + (text-id-5072 5072) + (text-id-5073 5073) + (text-id-5074 5074) + (text-id-5075 5075) + (text-id-5076 5076) + (text-id-5077 5077) + (text-id-5078 5078) + (text-id-5079 5079) + (text-id-5080 5080) + (text-id-5081 5081) + (text-id-5082 5082) + (text-id-5083 5083) + (text-id-5084 5084) + (text-id-5085 5085) + (text-id-5086 5086) + (text-id-5087 5087) + (text-id-5088 5088) + (text-id-5089 5089) + (text-id-5090 5090) + (text-id-5091 5091) + (text-id-5092 5092) + (text-id-5093 5093) + (text-id-5094 5094) + (text-id-5095 5095) + (text-id-5096 5096) + (text-id-5097 5097) + (text-id-5098 5098) + (text-id-5099 5099) + (text-id-5100 5100) + (text-id-5101 5101) + (text-id-5102 5102) + (text-id-5103 5103) + (text-id-5104 5104) + (text-id-5105 5105) + (text-id-5106 5106) + (text-id-5107 5107) + (text-id-5108 5108) + (text-id-5109 5109) + (text-id-5110 5110) + (text-id-5111 5111) + (text-id-5112 5112) + (text-id-5113 5113) + (text-id-5114 5114) + (text-id-5115 5115) + (text-id-5116 5116) + (text-id-5117 5117) + (text-id-5118 5118) + (text-id-5119 5119) + (text-id-5120 5120) + (text-id-5121 5121) + (text-id-5122 5122) + (text-id-5123 5123) + (text-id-5124 5124) + (text-id-5125 5125) + (text-id-5126 5126) + (text-id-5127 5127) + (text-id-5128 5128) + (text-id-5129 5129) + (text-id-5130 5130) + (text-id-5131 5131) + (text-id-5132 5132) + (text-id-5133 5133) + (text-id-5134 5134) + (text-id-5135 5135) + (text-id-5136 5136) + (text-id-5137 5137) + (text-id-5138 5138) + (text-id-5139 5139) + (text-id-5140 5140) + (text-id-5141 5141) + (text-id-5142 5142) + (text-id-5143 5143) + (text-id-5144 5144) + (text-id-5145 5145) + (text-id-5146 5146) + (text-id-5147 5147) + (text-id-5148 5148) + (text-id-5149 5149) + (text-id-5150 5150) + (text-id-5151 5151) + (text-id-5152 5152) + (text-id-5153 5153) + (text-id-5154 5154) + (text-id-5155 5155) + (text-id-5156 5156) + (text-id-5157 5157) + (text-id-5158 5158) + (text-id-5159 5159) + (text-id-5160 5160) + (text-id-5161 5161) + (text-id-5162 5162) + (text-id-5163 5163) + (text-id-5164 5164) + (text-id-5165 5165) + (text-id-5166 5166) + (text-id-5167 5167) + (text-id-5168 5168) + (text-id-5169 5169) + (text-id-5170 5170) + (text-id-5171 5171) + (text-id-5172 5172) + (text-id-5173 5173) + (text-id-5174 5174) + (text-id-5175 5175) + (text-id-5176 5176) + (text-id-5177 5177) + (text-id-5178 5178) + (text-id-5179 5179) + (text-id-5180 5180) + (text-id-5181 5181) + (text-id-5182 5182) + (text-id-5183 5183) + (text-id-5184 5184) + (text-id-5185 5185) + (text-id-5186 5186) + (text-id-5187 5187) + (text-id-5188 5188) + (text-id-5189 5189) + (text-id-5190 5190) + (text-id-5191 5191) + (text-id-5192 5192) + (text-id-5193 5193) + (text-id-5194 5194) + (text-id-5195 5195) + (text-id-5196 5196) + (text-id-5197 5197) + (text-id-5198 5198) + (text-id-5199 5199) + (text-id-5200 5200) + (text-id-5201 5201) + (text-id-5202 5202) + (text-id-5203 5203) + (text-id-5204 5204) + (text-id-5205 5205) + (text-id-5206 5206) + (text-id-5207 5207) + (text-id-5208 5208) + (text-id-5209 5209) + (text-id-5210 5210) + (text-id-5211 5211) + (text-id-5212 5212) + (text-id-5213 5213) + (text-id-5214 5214) + (text-id-5215 5215) + (text-id-5216 5216) + (text-id-5217 5217) + (text-id-5218 5218) + (text-id-5219 5219) + (text-id-5220 5220) + (text-id-5221 5221) + (text-id-5222 5222) + (text-id-5223 5223) + (text-id-5224 5224) + (text-id-5225 5225) + (text-id-5226 5226) + (text-id-5227 5227) + (text-id-5228 5228) + (text-id-5229 5229) + (text-id-5230 5230) + (text-id-5231 5231) + (text-id-5232 5232) + (text-id-5233 5233) + (text-id-5234 5234) + (text-id-5235 5235) + (text-id-5236 5236) + (text-id-5237 5237) + (text-id-5238 5238) + (text-id-5239 5239) + (text-id-5240 5240) + (text-id-5241 5241) + (text-id-5242 5242) + (text-id-5243 5243) + (text-id-5244 5244) + (text-id-5245 5245) + (text-id-5246 5246) + (text-id-5247 5247) + (text-id-5248 5248) + (text-id-5249 5249) + (text-id-5250 5250) + (text-id-5251 5251) + (text-id-5252 5252) + (text-id-5253 5253) + (text-id-5254 5254) + (text-id-5255 5255) + (text-id-5256 5256) + (text-id-5257 5257) + (text-id-5258 5258) + (text-id-5259 5259) + (text-id-5260 5260) + (text-id-5261 5261) + (text-id-5262 5262) + (text-id-5263 5263) + (text-id-5264 5264) + (text-id-5265 5265) + (text-id-5266 5266) + (text-id-5267 5267) + (text-id-5268 5268) + (text-id-5269 5269) + (text-id-5270 5270) + (text-id-5271 5271) + (text-id-5272 5272) + (text-id-5273 5273) + (text-id-5274 5274) + (text-id-5275 5275) + (text-id-5276 5276) + (text-id-5277 5277) + (text-id-5278 5278) + (text-id-5279 5279) + (text-id-5280 5280) + (text-id-5281 5281) + (text-id-5282 5282) + (text-id-5283 5283) + (text-id-5284 5284) + (text-id-5285 5285) + (text-id-5286 5286) + (text-id-5287 5287) + (text-id-5288 5288) + (text-id-5289 5289) + (text-id-5290 5290) + (text-id-5291 5291) + (text-id-5292 5292) + (text-id-5293 5293) + (text-id-5294 5294) + (text-id-5295 5295) + (text-id-5296 5296) + (text-id-5297 5297) + (text-id-5298 5298) + (text-id-5299 5299) + (text-id-5300 5300) + (text-id-5301 5301) + (text-id-5302 5302) + (text-id-5303 5303) + (text-id-5304 5304) + (text-id-5305 5305) + (text-id-5306 5306) + (text-id-5307 5307) + (text-id-5308 5308) + (text-id-5309 5309) + (text-id-5310 5310) + (text-id-5311 5311) + (text-id-5312 5312) + (text-id-5313 5313) + (text-id-5314 5314) + (text-id-5315 5315) + (text-id-5316 5316) + (text-id-5317 5317) + (text-id-5318 5318) + (text-id-5319 5319) + (text-id-5320 5320) + (text-id-5321 5321) + (text-id-5322 5322) + (text-id-5323 5323) + (text-id-5324 5324) + (text-id-5325 5325) + (text-id-5326 5326) + (text-id-5327 5327) + (text-id-5328 5328) + (text-id-5329 5329) + (text-id-5330 5330) + (text-id-5331 5331) + (text-id-5332 5332) + (text-id-5333 5333) + (text-id-5334 5334) + (text-id-5335 5335) + (text-id-5336 5336) + (text-id-5337 5337) + (text-id-5338 5338) + (text-id-5339 5339) + (text-id-5340 5340) + (text-id-5341 5341) + (text-id-5342 5342) + (text-id-5343 5343) + (text-id-5344 5344) + (text-id-5345 5345) + (text-id-5346 5346) + (text-id-5347 5347) + (text-id-5348 5348) + (text-id-5349 5349) + (text-id-5350 5350) + (text-id-5351 5351) + (text-id-5352 5352) + (text-id-5353 5353) + (text-id-5354 5354) + (text-id-5355 5355) + (text-id-5356 5356) + (text-id-5357 5357) + (text-id-5358 5358) + (text-id-5359 5359) + (text-id-5360 5360) + (text-id-5361 5361) + (text-id-5362 5362) + (text-id-5363 5363) + (text-id-5364 5364) + (text-id-5365 5365) + (text-id-5366 5366) + (text-id-5367 5367) + (text-id-5368 5368) + (text-id-5369 5369) + (text-id-5370 5370) + (text-id-5371 5371) + (text-id-5372 5372) + (text-id-5373 5373) + (text-id-5374 5374) + (text-id-5375 5375) + (text-id-5376 5376) + (text-id-5377 5377) + (text-id-5378 5378) + (text-id-5379 5379) + (text-id-5380 5380) + (text-id-5381 5381) + (text-id-5382 5382) + (text-id-5383 5383) + (text-id-5384 5384) + (text-id-5385 5385) + (text-id-5386 5386) + (text-id-5387 5387) + (text-id-5388 5388) + (text-id-5389 5389) + (text-id-5390 5390) + (text-id-5391 5391) + (text-id-5392 5392) + (text-id-5393 5393) + (text-id-5394 5394) + (text-id-5395 5395) + (text-id-5396 5396) + (text-id-5397 5397) + (text-id-5398 5398) + (text-id-5399 5399) + (text-id-5400 5400) + (text-id-5401 5401) + (text-id-5402 5402) + (text-id-5403 5403) + (text-id-5404 5404) + (text-id-5405 5405) + (text-id-5406 5406) + (text-id-5407 5407) + (text-id-5408 5408) + (text-id-5409 5409) + (text-id-5410 5410) + (text-id-5411 5411) + (text-id-5412 5412) + (text-id-5413 5413) + (text-id-5414 5414) + (text-id-5415 5415) + (text-id-5416 5416) + (text-id-5417 5417) + (text-id-5418 5418) + (text-id-5419 5419) + (text-id-5420 5420) + (text-id-5421 5421) + (text-id-5422 5422) + (text-id-5423 5423) + (text-id-5424 5424) + (text-id-5425 5425) + (text-id-5426 5426) + (text-id-5427 5427) + (text-id-5428 5428) + (text-id-5429 5429) + (text-id-5430 5430) + (text-id-5431 5431) + (text-id-5432 5432) + (text-id-5433 5433) + (text-id-5434 5434) + (text-id-5435 5435) + (text-id-5436 5436) + (text-id-5437 5437) + (text-id-5438 5438) + (text-id-5439 5439) + (text-id-5440 5440) + (text-id-5441 5441) + (text-id-5442 5442) + (text-id-5443 5443) + (text-id-5444 5444) + (text-id-5445 5445) + (text-id-5446 5446) + (text-id-5447 5447) + (text-id-5448 5448) + (text-id-5449 5449) + (text-id-5450 5450) + (text-id-5451 5451) + (text-id-5452 5452) + (text-id-5453 5453) + (text-id-5454 5454) + (text-id-5455 5455) + (text-id-5456 5456) + (text-id-5457 5457) + (text-id-5458 5458) + (text-id-5459 5459) + (text-id-5460 5460) + (text-id-5461 5461) + (text-id-5462 5462) + (text-id-5463 5463) + (text-id-5464 5464) + (text-id-5465 5465) + (text-id-5466 5466) + (text-id-5467 5467) + (text-id-5468 5468) + (text-id-5469 5469) + (text-id-5470 5470) + (text-id-5471 5471) + (text-id-5472 5472) + (text-id-5473 5473) + (text-id-5474 5474) + (text-id-5475 5475) + (text-id-5476 5476) + (text-id-5477 5477) + (text-id-5478 5478) + (text-id-5479 5479) + (text-id-5480 5480) + (text-id-5481 5481) + (text-id-5482 5482) + (text-id-5483 5483) + (text-id-5484 5484) + (text-id-5485 5485) + (text-id-5486 5486) + (text-id-5487 5487) + (text-id-5488 5488) + (text-id-5489 5489) + (text-id-5490 5490) + (text-id-5491 5491) + (text-id-5492 5492) + (text-id-5493 5493) + (text-id-5494 5494) + (text-id-5495 5495) + (text-id-5496 5496) + (text-id-5497 5497) + (text-id-5498 5498) + (text-id-5499 5499) + (text-id-5500 5500) + (text-id-5501 5501) + (text-id-5502 5502) + (text-id-5503 5503) + (text-id-5504 5504) + (text-id-5505 5505) + (text-id-5506 5506) + (text-id-5507 5507) + (text-id-5508 5508) + (text-id-5509 5509) + (text-id-5510 5510) + (text-id-5511 5511) + (text-id-5512 5512) + (text-id-5513 5513) + (text-id-5514 5514) + (text-id-5515 5515) + (text-id-5516 5516) + (text-id-5517 5517) + (text-id-5518 5518) + (text-id-5519 5519) + (text-id-5520 5520) + (text-id-5521 5521) + (text-id-5522 5522) + (text-id-5523 5523) + (text-id-5524 5524) + (text-id-5525 5525) + (text-id-5526 5526) + (text-id-5527 5527) + (text-id-5528 5528) + (text-id-5529 5529) + (text-id-5530 5530) + (text-id-5531 5531) + (text-id-5532 5532) + (text-id-5533 5533) + (text-id-5534 5534) + (text-id-5535 5535) + (text-id-5536 5536) + (text-id-5537 5537) + (text-id-5538 5538) + (text-id-5539 5539) + (text-id-5540 5540) + (text-id-5541 5541) + (text-id-5542 5542) + (text-id-5543 5543) + (text-id-5544 5544) + (text-id-5545 5545) + (text-id-5546 5546) + (text-id-5547 5547) + (text-id-5548 5548) + (text-id-5549 5549) + (text-id-5550 5550) + (text-id-5551 5551) + (text-id-5552 5552) + (text-id-5553 5553) + (text-id-5554 5554) + (text-id-5555 5555) + (text-id-5556 5556) + (text-id-5557 5557) + (text-id-5558 5558) + (text-id-5559 5559) + (text-id-5560 5560) + (text-id-5561 5561) + (text-id-5562 5562) + (text-id-5563 5563) + (text-id-5564 5564) + (text-id-5565 5565) + (text-id-5566 5566) + (text-id-5567 5567) + (text-id-5568 5568) + (text-id-5569 5569) + (text-id-5570 5570) + (text-id-5571 5571) + (text-id-5572 5572) + (text-id-5573 5573) + (text-id-5574 5574) + (text-id-5575 5575) + (text-id-5576 5576) + (text-id-5577 5577) + (text-id-5578 5578) ) ;; ---main-h:text-id @@ -9277,6 +14554,7 @@ (declare-type nav-mesh basic) (declare-type nav-branch structure) +;; +++traffic-h:driver-type (defenum driver-type :type uint8 (d-jak 0) @@ -9304,7 +14582,9 @@ (d-osmo 22) (none 23) ) +;; ---traffic-h:driver-type +;; +++traffic-h:traffic-vehicle-type (defenum traffic-vehicle-type :type uint8 (v-mongoose 0) @@ -9329,6 +14609,7 @@ (none 19) (any 20) ) +;; ---traffic-h:traffic-vehicle-type (deftype vehicle-spawn-params (structure) ((behavior uint64 :offset-assert 0) @@ -9358,7 +14639,7 @@ (define-extern *vehicle-manager* vehicle-manager) ;; vehicle-manager (define-extern vehicle-type->string (function traffic-vehicle-type string)) (define-extern driver-type->string (function driver-type string)) -(define-extern type-from-driver-type (function driver-type basic)) +(define-extern type-from-driver-type (function driver-type type)) (define-extern level-from-driver-type (function driver-type symbol)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -9370,7 +14651,189 @@ :type uint8 :bitfield #f (unknown -1) -) + (none 0) + (complete 1) + (dummy0 2) + (eco-blue-button 3) + (eco-yellow-button 4) + (eco-red-button 5) + (city-start 6) + (kras-training 7) + (spargus-race 8) + (docks-deathrace 9) + (kcross-deathmatch 10) + (spargus-timebox 11) + (dromdoc-race 12) + (cliffs-artifact 13) + (drome-race 14) + (ice-deathrace 15) + (peak-football 16) + (ice-race 17) + (jungle-timebox 18) + (snow-deathrace 19) + (temple-race 20) + (kcross-hunt 21) + (icepass-rushhour 22) + (kras-race 23) + (spargus-deathrace 24) + (docks-football 25) + (coliseum-deathmatch 26) + (sewer-race 27) + (canspar-race 28) + (kras-football 29) + (atoll-artifact 30) + (dockkra-timebox 31) + (snow-race 32) + (jungle-race 33) + (drome-deathrace 34) + (cliffs-hunt 35) + (desarena-deathmatch 36) + (canyon-rushhour 37) + (havjung-race 38) + (kras-deathrace 39) + (spartem-race 40) + (jungle-deathrace 41) + (iceberg-race 42) + (desisle-deathmatch 43) + (haven-race 44) + (canyon-timebox 45) + (kcross-artifact 46) + (kratour-race 47) + (havtour-race 48) + (dockkra-deathrace 49) + (ice-timebox 50) + (canyon-race 51) + (desarena-artifact 52) + (canspar-rushhour 53) + (dromdoc-football 54) + (cliffs-deathmatch 55) + (spatour-race 56) + (kras-timebox 57) + (kcross-ctf 58) + (docks-race 59) + (spartem-deathrace 60) + (peak-timebox 61) + (snobowl-deathmatch 62) + (drome-rushhour 63) + (icepass-race 64) + (spargus-football 65) + (havsew-timebox 66) + (dromdoc-deathrace 67) + (peak-race 68) + (temple-deathrace 69) + (dromdoc-rushhour 70) + (havsew-race 71) + (coliseum-artifact 72) + (canyon-deathrace 73) + (sewer-timebox 74) + (cliffs-ctf 75) + (kras-rushhour 76) + (atoll-deathmatch 77) + (spargus-rushhour 78) + (drome-football 79) + (icetour-race 80) + (havsew-deathrace 81) + (snobowl-artifact 82) + (canspar-timebox 83) + (temple-football 84) + (desisle-ctf 85) + (peak-deathrace 86) + (dockkra-race 87) + (coliseum-assassin 88) + (kcross-assassin 89) + (atoll-assassin 90) + (cliffs-assassin 91) + (desarena-assassin 92) + (desisle-assassin 93) + (snobowl-assassin 94) + (snow-rushhour 95) + (icepass-deathrace 96) + (jungle-rushhour 97) + (snow-football 98) + (docks-timebox 99) + (desarena-ctf 100) + (dockkra-football 101) + (drome-timebox 102) + (temple-timebox 103) + (sewer-rushhour 104) + (spartem-football 105) + (snow-timebox 106) + (snobowl-ctf 107) + (dromdoc-timebox 108) + (canspar-football 109) + (havsew-rushhour 110) + (ice-football 111) + (coliseum-ctf 112) + (havjung-rushhour1 113) + (atoll-hunt 114) + (havjung-football 115) + (haven-deathrace 116) + (iceberg-football 117) + (havjung-rushhour 118) + (sewer-football 119) + (desisle-hunt 120) + (jungle-football 121) + (haven-football 122) + (havjung-timebox 123) + (docks-rushhour 124) + (haven-timebox 125) + (kras-timetrial 126) + (docks-timetrial 127) + (drome-timetrial 128) + (dockkra-timetrial 129) + (dromdoc-timetrial 130) + (kratour-timetrial 131) + (jungle-timetrial 132) + (haven-timetrial 133) + (sewer-timetrial 134) + (havjung-timetrial 135) + (havsew-timetrial 136) + (havtour-timetrial 137) + (spargus-timetrial 138) + (canyon-timetrial 139) + (temple-timetrial 140) + (canspar-timetrial 141) + (spartem-timetrial 142) + (spatour-timetrial 143) + (snow-timetrial 144) + (peak-timetrial 145) + (ice-timetrial 146) + (iceberg-timetrial 147) + (icepass-timetrial 148) + (icetour-timetrial 149) + (sewer-deathrace 150) + (desarena-king-of-hill 151) + (ice-training 152) + (cliffs-training 153) + (snow-training2 154) + (jungle-training 155) + (coliseum-king-of-hill 156) + (snobowl-king-of-hill 157) + (cliffs-king-of-hill 158) + (havjung-deathrace 159) + (haven-rushhour 160) + (kcross-king-of-hill 161) + (havsew-football 162) + (dockkra-rushhour 163) + (canyon-football 164) + (canspar-deathrace 165) + (spartem-timebox 166) + (spartem-rushhour 167) + (temple-rushhour 168) + (icepass-timebox 169) + (iceberg-timebox 170) + (ice-rushhour 171) + (iceberg-deathrace 172) + (iceberg-rushhour 173) + (peak-rushhour 174) + (atoll-ctf 175) + (desisle-artifact 176) + (kratour-boss-battle 177) + (brdroom-intro-b 178) + (city-win2 179) + (artist-artist 180) + (max 181) + ) ;; ---game-task-h:game-task ;; +++game-task-h:game-task-node @@ -9380,6 +14843,332 @@ ) ;; ---game-task-h:game-task-node +;; +++game-task-h:game-task-node-command +(defenum game-task-node-command + :type uint8 + (none 0) + (add-sidekick 1) + (sub-sidekick 2) + (add-board 3) + (sub-board 4) + (add-gun-red-1 5) + (add-gun-red-2 6) + (add-gun-red-3 7) + (add-gun-red-ammo-1 8) + (add-gun-red-ammo-2 9) + (add-gun-yellow-1 10) + (add-gun-yellow-2 11) + (add-gun-yellow-3 12) + (add-gun-yellow-ammo-1 13) + (add-gun-yellow-ammo-2 14) + (add-gun-blue-1 15) + (add-gun-blue-2 16) + (add-gun-blue-3 17) + (add-gun-blue-ammo-1 18) + (add-gun-blue-ammo-2 19) + (add-gun-dark-1 20) + (add-gun-dark-2 21) + (add-gun-dark-3 22) + (add-gun-dark-ammo-1 23) + (add-gun-dark-ammo-2 24) + (add-pass-front-gate 25) + (add-pass-port-mh 26) + (add-pass-port-inda 27) + (add-pass-inda-indb 28) + (add-pass-indb-sluma 29) + (add-pass-slumb-genb 30) + (add-darkeco 31) + (add-darkjak 32) + (add-darkjak-smack 33) + (add-darkjak-bomb0 34) + (add-darkjak-bomb1 35) + (add-darkjak-tracking 36) + (add-darkjak-invinc 37) + (add-lighteco 38) + (add-lightjak 39) + (add-lightjak-regen 40) + (add-lightjak-freeze 41) + (add-lightjak-shield 42) + (add-lightjak-swoop 43) + (add-board-training 44) + (add-board-launch 45) + (add-board-trail 46) + (add-board-zap 47) + (sub-board-trail 48) + (add-artifact-invis 49) + (add-armor-0 50) + (add-armor-1 51) + (add-armor-2 52) + (add-armor-3 53) + (add-amulet-1 54) + (add-amulet-2 55) + (add-amulet-3 56) + (add-light-eco-crystal 57) + (add-dark-eco-crystal 58) + (add-seal 59) + (add-cypher-gliph 60) + (add-star-map 61) + (add-vehicle-toad 62) + (add-vehicle-snake 63) + (add-vehicle-scorpion 64) + (add-vehicle-turtle 65) + (add-vehicle-rhino 66) + (add-av-cube 67) + (add-av-reflector 68) + (add-av-prism 69) + (add-av-generator 70) + (add-av-map 71) + (add-jakc 72) + ) +;; +++game-task-h:game-task-node-command + +;; +++game-task-h:game-task-action +(defenum game-task-action + :bitfield #f + :type uint8 + (hide 0) + (idle 1) + (say 2) + (talk 3) + (show 4) + (trade 5) + (play 6) + (menu 7) + ) +;; ---game-task-h:game-task-action + +;; +++game-task-h:game-task-actor +(defenum game-task-actor + :type uint8 + (none 0) + (minimap 1) + (oracle-oracle 2) + (daxter 3) + (damus-arena 4) + (damus-waspal 5) + (damus-desert 6) + (damus-wasdoors 7) + (damus-wascity 8) + (damus-ruins 9) + (kleever-arena 10) + (kleever-wasdoors 11) + (kleever-pen 12) + (seem-wascity 13) + (seem-temple 14) + (ashelin-oasis 15) + (ashelin-talkbox 16) + (ashelin-freehq 17) + (veger-cave 18) + (veger-ruins 19) + (torn-hiphog 20) + (torn-hiptable 21) + (torn-hipbar 22) + (torn-hipbooth 23) + (torn-freehq 24) + (tess-gungame 25) + (samos-talkbox 26) + (sig-talkbox 27) + (sig-wasdoors 28) + (sig-nest 29) + (pecker-onintent 30) + (onin-onintent 31) + (onin-talkbox 32) + (keira-garage 33) + (was-pre-game-wascityb 34) + (kleever-wascityb 35) + (seem-wascitya 36) + (gun-gungame 37) + (vin-vinroom 38) + (power-game-vinroom 39) + (jinx-hiphog 40) + (samos-genb 41) + (wascity-turret 42) + (seem-leaper 44) + (monk-wascity 43) + (wascity-leaper 45) + (was-pre-game-deserte 46) + (onin-freehq 48) + (samos-freehq 47) + (keira-freehq 49) + (keira-genb 50) + (monk-mummy 51) + (pecker 52) + (samos-onintent 53) + (unused-slot-8 54) + (unused-slot-9 55) + (unused-slot-10 56) + (unused-slot-11 57) + (unused-slot-12 58) + (unused-slot-13 59) + (unused-slot-14 60) + (unused-slot-15 61) + (unused-slot-16 62) + (unused-slot-17 63) + (unused-slot-18 64) + (unused-slot-19 65) + (unused-slot-20 66) + (unused-slot-21 67) + (unused-slot-22 68) + (unused-slot-23 69) + (unused-slot-24 70) + (unused-slot-25 71) + (unused-slot-26 72) + (unused-slot-27 73) + (unused-slot-28 74) + (unused-slot-29 75) + (unused-slot-30 76) + (unused-slot-31 77) + (burning-bush-slumb 78) + (burning-bush-gena 79) + (burning-bush-genc 80) + (burning-bush-marka 81) + (burning-bush-sluma 82) + (burning-bush-slumb-2 83) + (burning-bush-slumc 84) + (burning-bush-farma 85) + (burning-bush-farmb 86) + (burning-bush-markb 87) + (burning-bush-markb-2 88) + (burning-bush-gena-2 89) + (burning-bush-genb 90) + (burning-bush-genc-2 91) + (burning-bush-inda 92) + (burning-bush-indb 93) + (burning-bush-port 94) + (burning-bush-port-2 95) + (burning-bush-port-3 96) + (burning-bush-pal 97) + (burning-bush-stadium 98) + (burning-bush-pal-2 99) + (burning-bush-genb-2 100) + (burning-bush-arena 101) + (burning-bush-desd 102) + (burning-bush-desc 103) + (burning-bush-desa 104) + (burning-bush-desg 105) + (burning-bush-desh 106) + (burning-bush-desc-2 107) + (burning-bush-dese 108) + (burning-bush-desb 109) + (burning-bush-desa-2 110) + (burning-bush-desc-3 111) + (burning-bush-desg-2 112) + (burning-bush-desd-2 113) + (burning-bush-desg-3 114) + (burning-bush-dese-2 115) + (burning-bush-dese-3 116) + (burning-bush-desd-3 117) + (burning-bush-desb-2 118) + (burning-bush-wasa-1 119) + (burning-bush-wasa-2 120) + (burning-bush-wasa-3 121) + (burning-bush-wasa-4 122) + (burning-bush-wasb-1 123) + (burning-bush-wasb-2 124) + (burning-bush-wasb-3 125) + (burning-bush-wasb-4 126) + (burning-bush-desg-4 127) + (burning-bush-wasb-5 128) + (burning-bush-wasb-6 129) + (burning-bush-desa-3 130) + (burning-bush-sluma-1 131) + (burning-bush-genb-1 132) + (burning-bush-slumb-1 133) + (burning-bush-wasa-5 134) + (burning-bush-desd-4 135) + (burning-bush-slumb-3 136) + (burning-bush-desc-4 137) + (burning-bush-inda-1 138) + (burning-bush-dese-4 139) + (burning-bush-desc-5 140) + (burning-bush-desb-3 141) + (burning-bush-wasa-6 142) + (burning-bush-wasb-7 143) + (burning-bush-indb-1 144) + (burning-bush-desf 145) + (burning-bush-port-1 146) + (burning-bush-genb-3 147) + (burning-bush-genb-4 148) + (burning-bush-genb-5 149) + (burning-bush-slumb-4 150) + (burning-bush-slumc-1 151) + (burning-bush-dese-5 152) + (burning-bush-port-4 153) + (burning-bush-slumc-2 154) + (burning-bush-sluma-2 155) + (burning-bush-sluma-3 156) + (burning-bush-indb-2 157) + (burning-bush-indb-3 158) + (burning-bush-inda-2 159) + (burning-bush-inda-3 160) + (burning-bush-inda-4 161) + (burning-bush-port-5 162) + (burning-bush-port-6 163) + (burning-bush-port-7 164) + (burning-bush-port-8 165) + (burning-bush-desd-5 166) + (burning-bush-inda-5 167) + (burning-bush-desb-4 168) + ) +;; ---game-task-h:game-task-actor + +;; +++game-task-h:game-task-flags +(defenum game-task-flags + :bitfield #t + :type uint8 + (gatflag-00) + (gatflag-01) + (gatflag-02) + ) +;; ---game-task-h:game-task-flags + +;; +++game-task-h:game-task-icon +(defenum game-task-icon + :type uint8 + (gaticon-00) + ) +;; ---game-task-h:game-task-icon + +;; +++game-task-h:game-task-node-flag +(defenum game-task-node-flag + :type uint32 ;; guess + :bitfield #t + (closed 0) + (data) + (close-task) + (unlocked) + (abs-task-mask) + (set-task-mask) + (clear-task-mask) + (cup1) + (cup2) + (cup3) + (cup4) + (intro-b) + (icelands) + (haven-city) + (kras-city) + (spargus) + (qualifier) + (grand-prix) + (boss-battle) + (score-lower-is-better) + (act2) + (act3) + (bbush) + ) +;; ---game-task-h:game-task-node-flag + +;; +++game-task-h:game-task-medal +(defenum game-task-medal + :type uint8 + (none 0) + (bronze 1) + (silver 2) + (gold 3) + ) +;; ---game-task-h:game-task-medal + (deftype task-level-info (structure) ((flags uint32 :offset-assert 0) (text-id uint32 :offset-assert 4) @@ -9417,19 +15206,16 @@ ;; task-control-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype game-task-event (basic) - ((flags uint8 :offset-assert 7) ;; game-task-flags - (icon uint16 :offset-assert 6) - (skull-cost uint8 :offset-assert 6) - (scene string :offset-assert 8) ;; guessed by decompiler - (distance meters :offset-assert 12) + ((actor game-task-actor :offset-assert 4) + (action game-task-action :offset-assert 5) + (tex game-task-icon :offset-assert 6) ;; added + (icon uint16 :offset 6 :score -100) + (flags game-task-flags :offset 7) + (scene string :offset 8) + (distance meters :offset-assert 12) ) - :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 ) -|# ;; TODO - not sure if this actually exists in jakx or not (deftype resetter-spec (structure) @@ -9445,7 +15231,6 @@ ;; field execute uses ~A with a signed load. ) -#| (deftype game-task-node-stats (structure) ((death-count uint8 :offset-assert 0) (vehicle uint8 :offset-assert 1) @@ -9463,27 +15248,25 @@ :size-assert #x1c :flag-assert #x90000001c ) -|# -#| (deftype game-task-advanced-options (structure) - ((data UNKNOWN 8 :offset-assert 0) - (weapons uint32 :offset-assert 0) - (flags uint8 :offset-assert 4) - (param1 uint8 :offset-assert 5) - (param2 uint8 :offset-assert 6) - (param3 uint8 :offset-assert 7) - (lword uint64 :offset-assert 0) + ((data uint8 8 :offset-assert 0) + (weapons uint32 :offset 0) + (flags uint8 :offset 4) + (param1 uint8 :offset 5) + (param2 uint8 :offset 6) + (param3 uint8 :offset 7) + (lword uint64 :offset 0) ) + :pack-me :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype game-task-node-info (basic) ((level symbol :offset-assert 4) ;; guessed by decompiler + (task uint8) (net-play-mode uint8 :offset-assert 9) (name string :offset-assert 12) ;; guessed by decompiler (max-humans int8 :offset-assert 16) @@ -9500,19 +15283,19 @@ (time-of-day int32 :offset-assert 52) (task-sound-description basic :offset-assert 56) (ipu basic :offset-assert 60) - (gold-array UNKNOWN 2 :offset-assert 64) - (silver-array UNKNOWN 2 :offset-assert 72) - (bronze-array UNKNOWN 2 :offset-assert 80) - (gold float :offset-assert 64) - (silver float :offset-assert 72) - (bronze float :offset-assert 80) - (gold-hero float :offset-assert 68) - (silver-hero float :offset-assert 76) - (bronze-hero float :offset-assert 84) + (gold-array uint32 2 :offset-assert 64) + (silver-array uint32 2 :offset-assert 72) + (bronze-array uint32 2 :offset-assert 80) + (gold float :offset 64) + (silver float :offset 72) + (bronze float :offset 80) + (gold-hero float :offset 68) + (silver-hero float :offset 76) + (bronze-hero float :offset 84) (medals-data uint32 :offset-assert 88) - (medals UNKNOWN 4 :offset-assert 88) - (unlocked uint8 :offset-assert 90) - (game-score-index uint8 :offset-assert 91) + (medals game-task-medal 4 :offset 88) + (unlocked uint8 :offset 90) + (game-score-index uint8 :offset 91) (adv-score int16 :offset-assert 92) (exb-score int16 :offset-assert 94) (ai-tuning-indices basic :offset-assert 96) @@ -9545,9 +15328,7 @@ (game-task-node-info-method-13 () none) ;; 13 ;; (eval-game-task-cmd! (_type_) none) ) ) -|# -#| (deftype game-task-info (basic) ((name string :offset-assert 4) ;; guessed by decompiler (task-level uint8 :offset-assert 8) @@ -9569,13 +15350,12 @@ (game-task-info-method-9 () none) ;; 9 ;; (get-play-list-idx (_type_) int) ) ) -|# -#| (deftype game-task-control (basic) ((counter uint32 :offset-assert 4) - (current-node uint16 :offset-assert 10) ;; game-task-node - (current-event game-task-event :offset-assert 12) ;; guessed by decompiler + (actor game-task-actor :offset-assert 8) + (current-node game-task-node :offset-assert 10) + (current-event game-task-event :offset-assert 12) ) :method-count-assert 10 :size-assert #x10 @@ -9585,9 +15365,7 @@ (game-task-control-method-9 () none) ;; 9 ;; (get-current-task-event (_type_) game-task-event) ) ) -|# -#| (deftype ambient-control (structure) ((last-ambient-time uint64 :offset-assert 0) ;; time-frame (last-ambient string :offset-assert 8) ;; guessed by decompiler @@ -9602,9 +15380,7 @@ (ambient-control-method-11 () none) ;; 11 ;; (ambient-control-method-11 () none) ) ) -|# -#| (deftype game-movie (structure) ((name basic :offset-assert 0) (score uint16 :offset-assert 4) @@ -9615,22 +15391,20 @@ :size-assert #xc :flag-assert #x90000000c ) -|# -#| (deftype grand-prix (structure) ((name basic :offset-assert 0) (score uint16 :offset-assert 4) (flags uint16 :offset-assert 6) - (saved-data2 UNKNOWN 2 :offset-assert 8) - (saved-data uint32 :offset-assert 8) - (trophy uint16 :offset-assert 8) - (play-count uint16 :offset-assert 10) + (saved-data2 uint16 2 :offset-assert 8) + (saved-data uint32 :offset 8) + (trophy uint16 :offset 8) + (play-count uint16 :offset 10) (drivers basic :offset-assert 12) - (task UNKNOWN 3 :offset-assert 16) - (task1 uint16 :offset-assert 16) - (task2 uint16 :offset-assert 18) - (task3 uint16 :offset-assert 20) + (task uint16 3 :offset-assert 16) + (task1 uint16 :offset 16) + (task2 uint16 :offset 18) + (task3 uint16 :offset 20) (cup uint32 :offset-assert 24) (intro basic :offset-assert 28) (outro basic :offset-assert 32) @@ -9641,21 +15415,22 @@ (boss uint16 :offset-assert 52) (boss-drivers basic :offset-assert 56) ) + :allow-misaligned + :pack-me :method-count-assert 9 :size-assert #x3c :flag-assert #x90000003c ) -|# -;; (define-extern game-task->string function) ;; (function game-task string) -;; (define-extern c-string->game-task function) ;; (function string game-task) -;; (define-extern game-task-actor->string function) ;; (function game-task-actor string) -;; (define-extern game-task-action->string function) ;; (function game-task-action string) -;; (define-extern game-task-medal->string function) -;; (define-extern game-task-node-flag->string function) ;; (function game-task-node-flag object) -;; (define-extern game-task-node-command->string function) ;; (function game-task-node-command string) -;; (define-extern *traffic-engine* object) ;; traffic-engine -;; (define-extern *game-movie* array) +(define-extern game-task->string (function game-task string)) +(define-extern c-string->game-task "returns -1, dont call this" (function string game-task)) +(define-extern game-task-actor->string (function game-task-actor string)) ;; +(define-extern game-task-action->string (function game-task-action string)) ;; +(define-extern game-task-medal->string (function game-task-medal string)) +(define-extern game-task-node-flag->string (function game-task-node-flag object)) +(define-extern game-task-node-command->string (function game-task-node-command string)) +(define-extern *traffic-engine* engine) ;; TODO - changed, not sure +(define-extern *game-movie* (array game-movie)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; car-info-h ;; @@ -9862,16 +15637,17 @@ (gila 12) (snake 13) (daxtermobile 14) + (drone 15) ) ;; ---car-info-h:vehicle-type (define-extern *car-type-names* (array string)) (define-extern type-from-vehicle-type (function vehicle-type traffic-vehicle-type)) -(define-extern level-name-from-vehicle-type function) -(define-extern car-type-from-vehicle-type function) -(define-extern vehicle-type-from-car-type function) -(define-extern car-type-from-level-name (function symbol int)) -(define-extern vehicle-type-from-level-name function) +(define-extern level-name-from-vehicle-type (function vehicle-type symbol)) +(define-extern car-type-from-vehicle-type (function int vehicle-type)) +(define-extern vehicle-type-from-car-type "does nothing, returns input" (function int int)) +(define-extern car-type-from-level-name (function symbol vehicle-type)) +(define-extern vehicle-type-from-level-name (function symbol int)) (define-extern vehicle-type-from-name (function string int)) (define-extern *car-part-names* (array string)) (define-extern *car-part-translate-array* (array uint8)) @@ -10059,7 +15835,7 @@ (max-fog-corner vector :inline :offset-assert 80) (prev-inv-camera-rot matrix :inline :offset-assert 96) (motion-vector vector :inline :offset-assert 160) - (math-camera basic :offset-assert 176) + (math-camera math-camera :offset-assert 176) (index int32 :offset-assert 180) (frame uint64 :offset-assert 184) (frame-a uint64 :offset-assert 192) @@ -10124,32 +15900,32 @@ :size-assert #x2b0 :flag-assert #x10000002b0 (:methods - (viewport-method-9 () none) ;; 9 - (viewport-method-10 () none) ;; 10 - (viewport-method-11 () none) ;; 11 - (viewport-method-12 () none) ;; 12 - (viewport-method-13 () none) ;; 13 - (viewport-method-14 () none) ;; 14 - (viewport-method-15 () none) ;; 15 + (viewport-method-9 (_type_) none) ;; 9 + (viewport-method-10 (_type_) none) ;; 10 + (viewport-method-11 (_type_) none) ;; 11 + (viewport-method-12 (_type_) none) ;; 12 + (viewport-method-13 (_type_) none) ;; 13 + (viewport-method-14 (_type_) none) ;; 14 + (viewport-method-15 (_type_) none) ;; 15 ) ) -;; (deftype viewport-array (structure) -;; ((mode uint32 :offset-assert 0) -;; (num-viewports uint32 :offset-assert 4) -;; (current-viewport-index uint32 :offset-assert 8) -;; (data UNKNOWN 3 :offset-assert 16) -;; (default viewport :inline :offset-assert 1392) -;; ) -;; :method-count-assert 12 -;; :size-assert #x820 -;; :flag-assert #xc00000820 -;; (:methods -;; (viewport-array-method-9 () none) ;; 9 -;; (viewport-array-method-10 () none) ;; 10 -;; (viewport-array-method-11 () none) ;; 11 -;; ) -;; ) +(deftype viewport-array (structure) + ((mode uint32 :offset-assert 0) + (num-viewports uint32 :offset-assert 4) + (current-viewport-index uint32 :offset-assert 8) + (data viewport 3 :inline :offset-assert 16) + (default viewport :inline :offset 1392) + ) + :method-count-assert 12 + :size-assert #x820 + :flag-assert #xc00000820 + (:methods + (viewport-array-method-9 (_type_ viewport) none) ;; 9 + (get-viewport (_type_ uint) viewport) ;; 10 + (viewport-array-method-11 (_type_) none) ;; 11 + ) + ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -10305,34 +16081,34 @@ :flag-assert #x900000044 ) -;; (deftype sparks-work (basic) -;; ((next-free int32 :offset-assert 4) -;; (constants spark-constants :inline :offset-assert 16) -;; (start vector :inline :offset-assert 1840) -;; (vel vector :inline :offset-assert 1856) -;; (accel vector :inline :offset-assert 1872) -;; (test basic :offset-assert 1888) -;; (vecs vector 4 :inline :offset-assert 1904) -;; (y-floor int32 512 :offset-assert 1968) -;; (data spark-viewport-packet 512 :inline :offset-assert 4016) -;; ) -;; :method-count-assert 20 -;; :size-assert #x6fb0 -;; :flag-assert #x1400006fb0 -;; (:methods -;; (sparks-work-method-9 () none) ;; 9 -;; (sparks-work-method-10 () none) ;; 10 -;; (sparks-work-method-11 () none) ;; 11 -;; (sparks-work-method-12 () none) ;; 12 -;; (sparks-work-method-13 () none) ;; 13 -;; (sparks-work-method-14 () none) ;; 14 -;; (sparks-work-method-15 () none) ;; 15 -;; (sparks-work-method-16 () none) ;; 16 -;; (sparks-work-method-17 () none) ;; 17 -;; (sparks-work-method-18 () none) ;; 18 -;; (sparks-work-method-19 () none) ;; 19 -;; ) -;; ) +(deftype sparks-work (basic) + ((next-free int32 :offset-assert 4) + (constants spark-constants :inline :offset-assert 16) + (start vector :inline :offset-assert 1840) + (vel vector :inline :offset-assert 1856) + (accel vector :inline :offset-assert 1872) + (test basic :offset-assert 1888) + (vecs vector 4 :inline :offset-assert 1904) + (y-floor int32 512 :offset-assert 1968) + (data spark 512 :inline :offset-assert 4016) + ) + :method-count-assert 20 + :size-assert #x6fb0 + :flag-assert #x1400006fb0 + (:methods + (sparks-work-method-9 () none) ;; 9 + (sparks-work-method-10 () none) ;; 10 + (sparks-work-method-11 () none) ;; 11 + (sparks-work-method-12 () none) ;; 12 + (sparks-work-method-13 () none) ;; 13 + (sparks-work-method-14 () none) ;; 14 + (sparks-work-method-15 () none) ;; 15 + (sparks-work-method-16 () none) ;; 16 + (sparks-work-method-17 () none) ;; 17 + (sparks-work-method-18 () none) ;; 18 + (sparks-work-method-19 () none) ;; 19 + ) + ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -10356,7 +16132,7 @@ ;; (define-extern math-cam-start-smoothing function) ;; (function float float quaternion) ;; (define-extern move-target-from-pad function) ;; (function transform int transform) ;; (define-extern transform-point-vector! function) ;; (function vector vector symbol) -;; (define-extern transform-point-qword! function) ;; (function vector4w vector symbol) +(define-extern transform-point-qword! (function vector4w vector symbol)) ;; ;; (define-extern transform-point-vector-scale! function) ;; (function vector vector float) ;; (define-extern reverse-transform-point! function) ;; (function vector vector vector vector none) ;; (define-extern init-for-transform function) ;; (function matrix none) @@ -10365,8 +16141,8 @@ ;; view ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern view-push-context function) -;; (define-extern view-pop-context function) +(define-extern view-push-context (function int none)) +(define-extern view-pop-context (function none)) ;; (define-extern view-get-active-target function) ;; (define-extern view-get-target function) ;; (define-extern view-set-active-target function) @@ -10376,7 +16152,7 @@ ;; (define-extern view-get-active-camera-combiner function) ;; (define-extern view-get-camera-combiner function) ;; (define-extern view-set-active-camera-combiner function) -;; (define-extern view-get-active-math-camera function) +(define-extern view-get-active-math-camera (function math-camera)) ;; (define-extern view-get-math-camera function) ;; (define-extern view-set-active-math-camera function) ;; (define-extern view-get-real-active function) @@ -10390,7 +16166,7 @@ ;; viewport ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *viewport-array* object) +(define-extern *viewport-array* viewport-array) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; font-h ;; @@ -10419,7 +16195,7 @@ ;; +++font-h:font-flags (defenum font-flags - :type uint16 + :type uint32 :bitfield #t (shadow 0) (kerning 1) @@ -11270,7 +17046,7 @@ (setting-control-method-11 () none) ;; 11 ;; (set-setting (_type_ process symbol object object object) connection) (setting-control-method-12 () none) ;; 12 ;; (remove-setting (_type_ process symbol) none) (setting-control-method-13 () none) ;; 13 ;; (kill-persister (_type_ engine-pers object) none) - (setting-control-method-14 () none) ;; 14 ;; (setting-control-method-14 (_type_ object) connectable) + (setting-control-method-14 (_type_ symbol int symbol symbol float int) none) ;; 14 ;; (setting-control-method-14 (_type_ object) connectable) (setting-control-method-15 () none) ;; 15 ;; (get-setting (_type_ object) connectable) (setting-control-method-16 () none) ;; 16 ;; (remove-setting-by-arg0 (_type_ object) none) (setting-control-method-17 () none) ;; 17 ;; (set-setting-by-param (_type_ symbol object object object) connection) @@ -12116,7 +17892,7 @@ ;; (define-extern lookup-texture-by-id function) ;; (function texture-id texture) ;; (define-extern lookup-texture-by-id-fast function) ;; (function texture-id texture) ;; (define-extern lookup-texture-by-name function) ;; (function string string (pointer texture-page) texture) -;; (define-extern lookup-texture-id-by-name function) ;; (function string string texture-id) +(define-extern lookup-texture-id-by-name (function string string texture-id)) ;; ;; (define-extern lookup-level-texture-by-name function) ;; (function string level (pointer texture-page) texture) ;; (define-extern lookup-tex-id-from-texture function) ;; (function texture texture-id) ;; (define-extern lookup-level-texture-id-by-name function) ;; (function string level int texture-id) @@ -13169,7 +18945,7 @@ :type uint32 :bitfield #t (close-to-screen 0) - (no-draw 1) + (no-draw) (no-draw-temp) (on-screen) (uninited) @@ -13184,6 +18960,9 @@ (disable-fog) (hud) (no-bounds-check) + (suppress-vport-0) + (suppress-vport-1) + (disable-shadow) ) ;; ---art-h:draw-control-status @@ -13203,9 +18982,9 @@ (bit-0) (bit-1) (title-light) - (disable-envmap) (rim-lights) - (rim-lights2) + (shield-lights) + (disable-envmap) (rim-lights3) (no-textures) ) @@ -13234,8 +19013,8 @@ (max-lod int8 :offset 84) (force-lod int8 :offset-assert 85) (cur-lod int8 :offset-assert 86) - ;; (cur-lods UNKNOWN 2 :offset-assert 87) - (dummy-add int32 2 :offset-assert 88) + (cur-lods int8 2 :offset 87) + ;; (dummy-add int32 2 :offset-assert 88) (effect-masks uint64 2 :offset-assert 96) (prev-seg-mask uint64 :offset-assert 112) (want-lod int8 :offset-assert 120) @@ -13275,7 +19054,7 @@ ;; field draw-control-global-effect is likely a value type. (:methods (new (symbol type) _type_) ;; 0 ;; (new (symbol type process symbol) _type_) - (draw-control-method-9 () none) ;; 9 ;; (get-skeleton-origin (_type_) vector) + (get-skeleton-origin (_type_) vector) (draw-control-method-10 () none) ;; 10 ;; (lod-set! (_type_ int) none) (draw-control-method-11 () none) ;; 11 ;; (lods-assign! (_type_ lod-set) none) (draw-control-method-12 () none) ;; 12 ;; (setup-masks (_type_ int int) none) @@ -14736,6 +20515,8 @@ ;; from kernel (define-extern mc-get-slot-info (function int mc-slot-info none)) +(define-extern mc-run (function none)) +(define-extern mc-check-result (function mc-status-code)) ;; original funcs (define-extern mc-sync (function int)) @@ -14805,7 +20586,6 @@ ) ;; ---game-info-h:pickup-type -#| (deftype game-bank (basic) ((life-max-default float :offset-assert 4) (life-start-default float :offset-assert 8) @@ -14817,7 +20597,6 @@ :size-assert #x18 :flag-assert #x900000018 ) -|# (deftype actor-id (uint32) () @@ -14998,6 +20777,9 @@ :flag-assert #x900000019 ) +;; (declare-type entity-perm-array inline-array-class) +;; (declare-type game-save basic) +;; (declare-type entity-perm structure) ;; (deftype game-info (basic) ;; ((mode symbol :offset-assert 4) ;; guessed by decompiler ;; (save-name string :offset-assert 8) ;; guessed by decompiler @@ -15018,8 +20800,10 @@ ;; (health-bar-owner uint64 :offset-assert 1136) ;; handle ;; (attack-id uint32 :offset-assert 1144) ;; (perm-list entity-perm-array :offset-assert 1148) ;; guessed by decompiler +;; (game-info-pad1 int32 3 :offset-assert 1152) ;; (task-node-commands (array game-task-node-command) :offset-assert 1164) ;; guessed by decompiler ;; (task-counter uint32 :offset-assert 1168) +;; (game-info-pad2 int32 1) ;; (level-opened uint8 32 :offset-assert 1176) ;; guessed by decompiler ;; (total-deaths int32 :offset-assert 1208) ;; (continue-deaths int32 :offset-assert 1212) @@ -15107,10 +20891,10 @@ ;; ) ;; ) -;; (define-extern *GAME-bank* game-bank) ;; game-bank +(define-extern *GAME-bank* game-bank) ;; ;; (define-extern *static-continues* array) ;; (define-extern continue-point-copy! function) -;; (define-extern *game-info* object) ;; game-info +;; (define-extern *game-info* game-info) ;; ;; (define-extern *use-menu2* object) ;; (define-extern *lobby-adv-selected-cup* object) ;; (define-extern *lobby-adv-selected-map* object) @@ -16930,7 +22714,6 @@ ;; scert-3-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype net-localization-params (structure) ((character-encoding-type int32 :offset-assert 0) (language-type int32 :offset-assert 4) @@ -16939,9 +22722,7 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype net-memory-callback-params (structure) ((pf-malloc-callback basic :offset-assert 0) (pf-realloc-callback basic :offset-assert 4) @@ -16951,20 +22732,16 @@ :size-assert #xc :flag-assert #x90000000c ) -|# -#| (deftype net-dme-version (structure) ((n-version uint32 :offset-assert 0) - (sz-version UNKNOWN 16 :offset-assert 4) + (sz-version int8 16 :offset-assert 4) ) :method-count-assert 9 :size-assert #x14 :flag-assert #x900000014 ) -|# -#| (deftype net-type-system-message-data (structure) ((connection-handle basic :offset-assert 0) (severity uint8 :offset-assert 4) @@ -16980,33 +22757,28 @@ :flag-assert #x90000001c ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-update-error (structure) ((connection-handle basic :offset-assert 0) (net-error int32 :offset-assert 4) ) + :pack-me :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ;; field connection-handle uses ~A with a signed load. ) -|# -#| (deftype net-update-conn-errors (structure) ((sizeof-net-update-errors uint32 :offset-assert 0) - (a-errors UNKNOWN 4 :offset-assert 4) + (a-errors net-update-error 4 :inline :offset-assert 4) (udperror int32 :offset-assert 36) ) :method-count-assert 9 :size-assert #x28 :flag-assert #x900000028 ) -|# -#| (deftype net-data (structure) ((n-size int32 :offset-assert 0) (p-data basic :offset-assert 4) @@ -17016,21 +22788,17 @@ :flag-assert #x900000008 ;; field p-data uses ~A with a signed load. ) -|# -#| (deftype net-initialize-out-params (structure) ((b-is-set int32 :offset-assert 0) (error-code int32 :offset-assert 4) - (sz-version UNKNOWN 16 :offset-assert 8) + (sz-version int8 16 :offset-assert 8) ) :method-count-assert 9 :size-assert #x18 :flag-assert #x900000018 ) -|# -#| (deftype net-connect-out-params (structure) ((b-is-set int32 :offset-assert 0) (error-code int32 :offset-assert 4) @@ -17041,9 +22809,7 @@ :flag-assert #x90000000c ;; field connection-handle uses ~A with a signed load. ) -|# -#| (deftype net-host-peer-to-peer-out-params (structure) ((b-is-set int32 :offset-assert 0) (error-code int32 :offset-assert 4) @@ -17054,9 +22820,7 @@ :flag-assert #x90000000c ;; field connection-handle uses ~A with a signed load. ) -|# -#| (deftype net-resolve-addr-out-params (structure) ((b-is-set int32 :offset-assert 0) (error-code int32 :offset-assert 4) @@ -17065,9 +22829,7 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype net-incoming-client-out-params (structure) ((b-is-set int32 :offset-assert 0) (error-code int32 :offset-assert 4) @@ -17076,20 +22838,17 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype net-client-metric (structure) ((average-rate float :offset-assert 0) (max-average-rate float :offset-assert 4) ) + :pack-me :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype net-bandwidth-info (structure) ((sends net-client-metric :inline :offset-assert 0) (send-bytes net-client-metric :inline :offset-assert 8) @@ -17100,9 +22859,7 @@ :size-assert #x20 :flag-assert #x900000020 ) -|# -#| (deftype net-connection-status (structure) ((my-connect-status int32 :offset-assert 0) (n-valid-client-count int32 :offset-assert 4) @@ -17112,21 +22869,17 @@ :size-assert #xc :flag-assert #x90000000c ) -|# -#| (deftype sz-ipaddress (structure) - ((data UNKNOWN 16 :offset-assert 0) + ((data uint8 16 :offset-assert 0) ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -|# -#| (deftype net-type-lookup-response (structure) - ((asz-ipaddresses UNKNOWN 16 :offset-assert 0) + ((asz-ipaddresses sz-ipaddress 16 :inline :offset-assert 0) (n-ipaddresses uint32 :offset-assert 256) (error-code int32 :offset-assert 260) ) @@ -17134,19 +22887,16 @@ :size-assert #x108 :flag-assert #x900000108 ) -|# -#| (deftype net-type-lookup-params (structure) - ((sz-host-name UNKNOWN 256 :offset-assert 0) - (sz-server-ip UNKNOWN 16 :offset-assert 256) + ((sz-host-name uint8 256 :offset-assert 0) + (sz-server-ip uint8 16 :offset-assert 256) (pf-lookup-response basic :offset-assert 272) ) :method-count-assert 9 :size-assert #x114 :flag-assert #x900000114 ) -|# (deftype rsa-key (structure) ((key uint32 16 :offset-assert 0) @@ -17166,7 +22916,6 @@ :flag-assert #x900000080 ) -#| (deftype net-type-connect-callback-data (structure) ((connection-handle basic :offset-assert 0) (connect-status int32 :offset-assert 4) @@ -17179,9 +22928,7 @@ :flag-assert #x900000014 ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-type-client-connect-callback-data (structure) ((connection-handle basic :offset-assert 0) (client-index int32 :offset-assert 4) @@ -17195,9 +22942,7 @@ :flag-assert #x900000018 ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-peer-to-peer-host-change-data (structure) ((connection-handle basic :offset-assert 0) (host-client-index int32 :offset-assert 4) @@ -17208,9 +22953,7 @@ :flag-assert #x90000000c ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-token-ownership-notify-data (structure) ((connection-handle basic :offset-assert 0) (token-id int32 :offset-assert 4) @@ -17223,9 +22966,7 @@ :flag-assert #x900000014 ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-token-params (structure) ((pf-token-ownership-notify-callback basic :offset-assert 0) (p-token-ownership-notify-callback-data basic :offset-assert 4) @@ -17236,9 +22977,7 @@ :flag-assert #x90000000c ;; field p-token-ownership-notify-callback-data uses ~A with a signed load. ) -|# -#| (deftype net-system-status-data (structure) ((connection-handle basic :offset-assert 0) (status int32 :offset-assert 4) @@ -17250,9 +22989,7 @@ :flag-assert #x900000010 ;; field connection-handle uses ~A with a signed load. field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-stream-media-audio-record-data (structure) ((audio-type int32 :offset-assert 0) (p-buffer uint32 :offset-assert 4) @@ -17266,9 +23003,7 @@ :flag-assert #x900000018 ;; field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-stream-media-audio-play-data (structure) ((audio-type int32 :offset-assert 0) (client-index int32 :offset-assert 4) @@ -17282,9 +23017,7 @@ :flag-assert #x900000018 ;; field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-audio-data-characteristics (structure) ((n-channels-in int32 :offset-assert 0) (n-bits-per-sample-in int32 :offset-assert 4) @@ -17297,23 +23030,19 @@ :size-assert #x18 :flag-assert #x900000018 ) -|# -#| (deftype net-color-array (structure) ((cb-size int32 :offset-assert 0) (line-size int32 :offset-assert 4) (xsize int32 :offset-assert 8) (ysize int32 :offset-assert 12) - (data UNKNOWN 16 :offset-assert 16) + (data uint8 16 :offset-assert 16) ) :method-count-assert 9 :size-assert #x20 :flag-assert #x900000020 ) -|# -#| (deftype net-stream-media-video-record-data (structure) ((p-y net-color-array :offset-assert 0) (p-cr net-color-array :offset-assert 4) @@ -17326,23 +23055,19 @@ :flag-assert #x900000014 ;; field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-rgbarray (structure) ((cb-size int32 :offset-assert 0) (line-size int32 :offset-assert 4) (xsize int32 :offset-assert 8) (ysize int32 :offset-assert 12) - (data UNKNOWN 16 :offset-assert 16) + (data uint32 16 :offset-assert 16) ) :method-count-assert 9 :size-assert #x50 :flag-assert #x900000050 ) -|# -#| (deftype net-stream-media-video-play-data (structure) ((client-index int32 :offset-assert 0) (p-rgbarray net-rgbarray :offset-assert 4) @@ -17354,20 +23079,17 @@ :flag-assert #x900000010 ;; field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-video-data-characteristics (structure) ((xsize int32 :offset-assert 0) (ysize int32 :offset-assert 4) ) + :pack-me :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype net-stream-media-custom-video-record-data (structure) ((p-buffer uint32 :offset-assert 0) (n-buffer-size uint32 :offset-assert 4) @@ -17380,9 +23102,7 @@ :flag-assert #x900000014 ;; field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-stream-media-custom-video-play-data (structure) ((client-index int32 :offset-assert 0) (p-buffer uint32 :offset-assert 4) @@ -17395,9 +23115,7 @@ :flag-assert #x900000014 ;; field p-user-data uses ~A with a signed load. ) -|# -#| (deftype net-stream-media-params (structure) ((b-default-set int32 :offset-assert 0) (b-use-stream-media int32 :offset-assert 4) @@ -17427,7 +23145,6 @@ :flag-assert #x900000070 ;; field p-audio-record-callback-data uses ~A with a signed load. field p-audio-play-callback-data uses ~A with a signed load. field p-video-record-callback-data uses ~A with a signed load. field p-video-play-callback-data uses ~A with a signed load. field p-custom-video-record-callback-data uses ~A with a signed load. field p-custom-video-play-callback-data uses ~A with a signed load. ) -|# (deftype net-address (structure) ((address-type int32 :offset-assert 0) @@ -17463,37 +23180,35 @@ :flag-assert #x90000009a ) -#| -(deftype net-connect-in-params (structure) - ((b-default-set int32 :offset-assert 0) - (max-clients int32 :offset-assert 4) - (connection-info net-connection-info :inline :offset-assert 8) - (pf-local-connect-callback basic :offset-assert 164) - (p-local-connect-callback-data basic :offset-assert 168) - (pf-local-disconnect-callback basic :offset-assert 172) - (p-local-disconnect-callback-data basic :offset-assert 176) - (pf-remote-client-connect-callback basic :offset-assert 180) - (p-remote-client-connect-callback-data basic :offset-assert 184) - (pf-remote-client-disconnect-callback basic :offset-assert 188) - (p-remote-client-disconnect-callback-data basic :offset-assert 192) - (pf-peer-to-peer-host-change-callback basic :offset-assert 196) - (p-host-change-callback-data basic :offset-assert 200) - (pf-system-status-callback basic :offset-assert 204) - (p-system-status-callback-data basic :offset-assert 208) - (stream-media-params net-stream-media-params :inline :offset-assert 212) - (user-specified int32 :offset-assert 324) - (aux-udpbind-port int32 :offset-assert 328) - (token-params net-token-params :inline :offset-assert 332) - (b-use-time-base int32 :offset-assert 344) - (send-buffer-size uint32 :offset-assert 348) - (recv-buffer-size uint32 :offset-assert 352) - ) - :method-count-assert 9 - :size-assert #x164 - :flag-assert #x900000164 - ;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-host-change-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load. - ) -|# +;; (deftype net-connect-in-params (structure) +;; ((b-default-set int32 :offset-assert 0) +;; (max-clients int32 :offset-assert 4) +;; (connection-info net-connection-info :inline :offset-assert 8) +;; (pf-local-connect-callback basic :offset-assert 164) +;; (p-local-connect-callback-data basic :offset-assert 168) +;; (pf-local-disconnect-callback basic :offset-assert 172) +;; (p-local-disconnect-callback-data basic :offset-assert 176) +;; (pf-remote-client-connect-callback basic :offset-assert 180) +;; (p-remote-client-connect-callback-data basic :offset-assert 184) +;; (pf-remote-client-disconnect-callback basic :offset-assert 188) +;; (p-remote-client-disconnect-callback-data basic :offset-assert 192) +;; (pf-peer-to-peer-host-change-callback basic :offset-assert 196) +;; (p-host-change-callback-data basic :offset-assert 200) +;; (pf-system-status-callback basic :offset-assert 204) +;; (p-system-status-callback-data basic :offset-assert 208) +;; (stream-media-params net-stream-media-params :inline :offset-assert 212) +;; (user-specified int32 :offset-assert 324) +;; (aux-udpbind-port int32 :offset-assert 328) +;; (token-params net-token-params :inline :offset-assert 332) +;; (b-use-time-base int32 :offset-assert 344) +;; (send-buffer-size uint32 :offset-assert 348) +;; (recv-buffer-size uint32 :offset-assert 352) +;; ) +;; :method-count-assert 9 +;; :size-assert #x164 +;; :flag-assert #x900000164 +;; ;; field p-local-connect-callback-data uses ~A with a signed load. field p-local-disconnect-callback-data uses ~A with a signed load. field p-remote-client-connect-callback-data uses ~A with a signed load. field p-remote-client-disconnect-callback-data uses ~A with a signed load. field p-host-change-callback-data uses ~A with a signed load. field p-system-status-callback-data uses ~A with a signed load. +;; ) #| (deftype net-bit-mask (structure) @@ -22451,7 +28166,7 @@ (mem-buffer-method-47 () none) ;; 47 (mem-buffer-method-48 () none) ;; 48 (mem-buffer-method-49 () none) ;; 49 - (mem-buffer-method-50 () none) ;; 50 + (mem-buffer-method-50 (_type_) none) ;; 50 (mem-buffer-method-51 () none) ;; 51 ) ) @@ -22472,8 +28187,8 @@ (define-extern *level-bounding-box* level-bounding-box) (define-extern *msg-buffers* (pointer uint32)) -;; (define-extern alloc-msg-buffer function) -;; (define-extern free-msg-buffer function) +(define-extern alloc-msg-buffer (function (pointer uint32))) +(define-extern free-msg-buffer (function mem-buffer none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; net-mgr-h ;; @@ -22680,26 +28395,26 @@ :size-assert #x8 :flag-assert #xc00000008 (:methods - (linked-list-method-9 () none) ;; 9 - (linked-list-method-10 () none) ;; 10 - (linked-list-method-11 () none) ;; 11 + (clear! (_type_) none) ;; 9 + (linked-list-method-10 (_type_ list-link) none) ;; 10 + (linked-list-method-11 (_type_ list-link) none) ;; 11 ) ) -;; (define-extern fixup-relocated-link function) +(define-extern fixup-relocated-link (function linked-list int int none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; process-nettable-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (deftype net-process-class-info (structure) - ((msg-map basic :offset-assert 0) + ((msg-map (array symbol) :offset-assert 0) (msg-count int32 :offset-assert 4) (send-packet-count int32 :offset-assert 8) (recv-packet-count int32 :offset-assert 12) (send-byte-count int32 :offset-assert 16) (recv-byte-count int32 :offset-assert 20) - (owner-type basic :offset-assert 24) + (owner-type type :offset-assert 24) ) :method-count-assert 9 :size-assert #x1c @@ -22713,10 +28428,10 @@ (deftype proximity-ownership-params (basic) ((ownable-radius float :offset-assert 4) - (force-local basic :offset-assert 8) + (force-local symbol :offset-assert 8) (last-ownership-req-time int32 :offset-assert 12) (min-ownership-req-delay int32 :offset-assert 16) - (consider-ai-players basic :offset-assert 20) + (consider-ai-players symbol :offset-assert 20) ) :method-count-assert 10 :size-assert #x18 @@ -22759,22 +28474,22 @@ (process-nettable-method-31 () none) ;; 31 (process-nettable-method-32 () none) ;; 32 (process-nettable-method-33 () none) ;; 33 - (process-nettable-method-34 () none) ;; 34 - (process-nettable-method-35 () none) ;; 35 - (process-nettable-method-36 () none) ;; 36 - (process-nettable-method-37 () none) ;; 37 + (process-nettable-method-34 (_type_ int rgba) none) ;; TODO - guess on the rgba + (process-nettable-method-35 (_type_ int) none) ;; TODO - guess on the int, find a caller to net-enemy-init-remote + (process-nettable-method-36 (_type_) none) ;; 36 + (process-nettable-method-37 (_type_ net-process-class-info) none) ;; 37 (process-nettable-method-38 () none) ;; 38 (process-nettable-method-39 () none) ;; 39 - (process-nettable-method-40 () none) ;; 40 - (process-nettable-method-41 () none) ;; 41 + (process-nettable-method-40 (_type_) net-process-class-info) ;; 40 + (process-nettable-method-41 (_type_ int) process) ;; TODO - guess on the int, find a caller to net-enemy-init-remote ) ) (define-extern *net-process-class-count* int) (define-extern *net-process-class-array* (array net-process-class-info)) -(define-extern *net-process-class-names* (pointer uint32)) +(define-extern *net-process-class-names* (pointer symbol)) (define-extern net-process-class-register (function net-process-class-info none)) -(define-extern write-msg-map-rec (function none)) +(define-extern write-msg-map-rec (function type net-process-class-info none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; game-h ;; @@ -23210,7 +28925,6 @@ ;; scene-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype scene-actor (basic) ((name string :offset-assert 4) ;; guessed by decompiler (level symbol :offset-assert 8) ;; guessed by decompiler @@ -23241,16 +28955,32 @@ (scene-actor-method-9 () none) ;; 9 ;; (setup-manipy-for-scene! (_type_ scene-player) (pointer process)) ) ) -|# -#| +;; +++scene-h:scene-flags +(defenum scene-flags + :bitfield #t + :type uint32 + (scf0 0) + (scf1 1) + (scf2 2) + (scf3 3) + (scf4 4) + (scf5 5) + (scf6 6) + (scf7 7) + (scf8 8) + (scf9 9) + (scf10 10) + (scf11 11) + (scf12 12) + (scf13 13) + (scf14 14) + (scf15 15) + ) +;; ---scene-h:scene-flags + (deftype scene (art-group) - ((name string :offset-assert 8) ;; guessed by decompiler - (length int32 :offset-assert 12) - (extra res-lump :offset-assert 16) ;; guessed by decompiler - (info file-info :offset-assert 4) ;; guessed by decompiler - (data art-element :dynamic :offset-assert 32) ;; guessed by decompiler - (scene-flags scene-flags :offset-assert 32) ;; guessed by decompiler + ((scene-flags scene-flags :offset-assert 32) ;; guessed by decompiler (mask-to-clear process-mask :offset-assert 36) ;; guessed by decompiler (entity string :offset-assert 40) ;; guessed by decompiler (art-group string :offset-assert 44) ;; guessed by decompiler @@ -23281,12 +29011,10 @@ ;; field on-running uses ~A with a signed load. field on-complete uses ~A with a signed load. (:methods (scene-method-16 () none) ;; 16 ;; (init-spool-by-scene! (_type_ spool-anim) spool-anim) - (scene-method-17 () none) ;; 17 ;; (load-scene (_type_) scene) + (load-scene (_type_) scene) ) ) -|# -#| (deftype scene-player (process-drawable) ((scene-list (array scene) :offset-assert 248) ;; guessed by decompiler (scene scene :offset-assert 252) ;; guessed by decompiler @@ -23331,10 +29059,9 @@ (scene-player-method-55 () none) ;; 55 ) ) -|# -;; (define-extern *scene-player* object) ;; (pointer scene-player) -;; (define-extern *debug-menu-scene-play* object) ;; object +(define-extern *scene-player* (pointer scene-player)) ;; +(define-extern *debug-menu-scene-play* symbol) ;; object ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; pov-camera-h ;; @@ -23456,6 +29183,8 @@ ;; field obj uses ~A with a signed load. ) +(define-extern *debug-vertex-stats* debug-vertex-stats) + (define-extern *color-black* rgba) (define-extern *color-white* rgba) (define-extern *color-gray* rgba) @@ -27429,20 +33158,32 @@ ) ) -;; (deftype entity-camera (entity) -;; () -;; :flag-assert #x1b00000050 -;; ) +(deftype entity-camera (entity) + ((connect quaternion :inline :offset-assert 64) + ) + :flag-assert #x1b00000050 + ) -;; (deftype entity-nav-mesh (entity) -;; () -;; :flag-assert #x1d0000003c -;; ) +(declare-type nav-mesh basic) +(deftype entity-nav-mesh (entity) + ((nav-mesh nav-mesh :offset-assert 56)) + :flag-assert #x1d0000003c + (:methods + (initialize-nav-mesh! "Initialize the nav-mesh in this entity." (_type_) none) ;; 27 + (debug-draw (_type_) none) ;; 28 + ) + ) -;; (deftype entity-race-mesh (entity) -;; () -;; :flag-assert #x1d0000003c -;; ) +(declare-type race-mesh basic) +(deftype entity-race-mesh (entity) + ((race-mesh race-mesh) + ) + :flag-assert #x1d0000003c + (:methods + (entity-race-mesh-method-27 () none) ;; 27 + (entity-race-mesh-method-28 () none) ;; 28 + ) + ) (define-extern entity-actor type) (declare-type nav-poly structure) @@ -28107,7 +33848,7 @@ ;; +++sparticle-launcher-h:sp-field-id (defenum sp-field-id :type uint16 - ;; todo copied from jak 2 + (misc-fields-start 0) (spt-texture 1) (spt-anim 2) @@ -28115,78 +33856,76 @@ (spt-birth-func 4) (spt-joint/refpoint 5) (spt-num 6) - (spt-sound 7) - (misc-fields-end 8) + (misc-fields-end 7) - (sprite-fields-start 9) - (spt-x 10) - (spt-y 11) - (spt-z 12) - (spt-scale-x 13) - (spt-rot-x 14) - (spt-rot-y 15) - (spt-rot-z 16) - (spt-scale-y 17) - (spt-r 18) - (spt-g 19) - (spt-b 20) - (spt-a 21) - (sprite-fields-end 22) + (sprite-fields-start 8) + (spt-x 9) + (spt-y 10) + (spt-z 11) + (spt-scale-x 12) + (spt-rot-x 13) + (spt-rot-y 14) + (spt-rot-z 15) + (spt-scale-y 16) + (spt-r 17) + (spt-g 18) + (spt-b 19) + (spt-a 20) + (sprite-fields-end 21) - (cpu-fields-start 23) - (spt-omega 24) - (spt-vel-x 25) - (spt-vel-y 26) - (spt-vel-z 27) - (spt-scalevel-x 28) - (spt-rotvel-x 29) - (spt-rotvel-y 30) - (spt-rotvel-z 31) - (spt-scalevel-y 32) - (spt-fade-r 33) - (spt-fade-g 34) - (spt-fade-b 35) - (spt-fade-a 36) - (spt-accel-x 37) - (spt-accel-y 38) - (spt-accel-z 39) - (spt-dummy 40) - (spt-quat-x 41) - (spt-quat-y 42) - (spt-quat-z 43) - (spt-quad-w 44) - (spt-friction 45) - (spt-timer 46) - (spt-flags 47) - (spt-userdata 48) - (spt-func 49) - (spt-next-time 50) - (spt-next-launcher 51) - (cpu-fields-end 52) + (cpu-fields-start 22) + (spt-omega 23) + (spt-vel-x 24) + (spt-vel-y 25) + (spt-vel-z 26) + (spt-scalevel-x 27) + (spt-rotvel-x 28) + (spt-rotvel-y 29) + (spt-rotvel-z 30) + (spt-scalevel-y 31) + (spt-fade-r 32) + (spt-fade-g 33) + (spt-fade-b 34) + (spt-fade-a 35) + (spt-accel-x 36) + (spt-accel-y 37) + (spt-accel-z 38) + (spt-dummy 39) + (spt-quat-x 40) + (spt-quat-y 41) + (spt-quat-z 42) + (spt-quad-w 43) + (spt-friction 44) + (spt-timer 45) + (spt-flags 46) + (spt-userdata 47) + (spt-func 48) + (spt-next-time 49) + (spt-next-launcher 50) + (cpu-fields-end 51) - (launch-fields-start 53) - (spt-launchrot-x 54) - (spt-launchrot-y 55) - (spt-launchrot-z 56) - (spt-launchrot-w 57) - (spt-conerot-x 58) - (spt-conerot-y 59) - (spt-conerot-z 60) - (spt-conerot-w 61) - (spt-rotate-x 62) - (spt-rotate-y 63) - (spt-rotate-z 64) + (launch-fields-start 52) + (spt-launchrot-x 53) + (spt-launchrot-y 54) + (spt-launchrot-z 55) + (spt-launchrot-w 56) + (spt-conerot-x 57) + (spt-conerot-y 58) + (spt-conerot-z 59) + (spt-conerot-w 60) + (spt-rotate-x 61) + (spt-rotate-y 62) + (spt-rotate-z 63) + (spt-conerot-radius 64) + (spt-mat-scale-x 65) + (spt-mat-scale-y 66) + (spt-mat-scale-z 67) + (launch-fields-end 68) - (spt-conerot-radius 65) - (spt-mat-scale-x 66) - (spt-mat-scale-y 67) - (spt-mat-scale-z 68) - (launch-fields-end 69) - - (spt-scale 70) - (spt-scalevel 71) - (spt-end 72) - ) + (spt-scale 69) + (spt-scalevel 70) + (spt-end 71) +) ;; ---sparticle-launcher-h:sp-field-id ;; +++sparticle-launcher-h:sp-flag @@ -28303,15 +34042,15 @@ (deftype sparticle-launcher (basic) "A definition of a single particle, as a list of init specs." ((birthaccum float :offset-assert 4) - (soundaccum float :offset-assert 8) - (init-specs (inline-array sp-field-init-spec) :offset-assert 12) ;; guessed by decompiler + (init-specs (inline-array sp-field-init-spec) :offset-assert 8) ;; guessed by decompiler + (level-flag int32 :offset-assert 12) ) :method-count-assert 11 :size-assert #x10 :flag-assert #xb00000010 (:methods - (get-field-spec-by-id "Look up a field's init spec by ID number." (_type_ sp-field-id) sp-field-init-spec) ;; 9 - (setup-special-textures "Set the particle's texture to the texture with the given name, and convert userdata strings to textures." (_type_ string) none) ;; 10 + (sparticle-launcher-method-9 () none) ;; 9 ;; (get-field-spec-by-id (_type_ sp-field-id) sp-field-init-spec) + (sparticle-launcher-method-10 () none) ;; 10 ;; (setup-special-textures (_type_ string) none) ) ) @@ -28528,7 +34267,7 @@ (valid uint8 :offset-assert 128) (clock-index uint8 :offset-assert 129) (user1-int16 uint16 :offset-assert 130) - (key sparticle-launch-control :offset-assert 132) ;; guessed by decompiler + (key (pointer sparticle-launch-control) :offset-assert 132) ;; guessed by decompiler (binding sparticle-launch-state :offset-assert 136) (data uint32 1 :offset 12) ;; guessed by decompiler (datab int8 4 :offset 12) ;; guessed by decompiler @@ -28694,7 +34433,7 @@ (width float :offset-assert 8) (height float :offset-assert 12) (color font-color :offset-assert 16) ;; font-color - (flags font-flags :offset-assert 18) ;; font-flags + (flags uint16 :offset-assert 18) ;; font-flags (pos vector4w :inline :offset-assert 32) (alpha float :offset-assert 48) (time float :offset-assert 52) @@ -28935,7 +34674,7 @@ :size-assert #x28 :flag-assert #x2100000028 (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type process symbol float entity symbol) _type_) + (new (symbol type process symbol float entity symbol) _type_) ;; 0 ;; (path-control-method-9 () none) ;; 9 ;; (debug-draw (_type_) none) (path-control-method-10 () none) ;; 10 ;; (get-point-in-path! (_type_ vector float symbol) vector) (path-control-method-11 () none) ;; 11 ;; (get-random-point (_type_ vector) vector) @@ -28944,11 +34683,11 @@ (path-control-method-14 () none) ;; 14 ;; (get-point-at-percent-along-path! (_type_ vector float symbol) vector) (path-control-method-15 () none) ;; 15 ;; (path-control-method-15 (_type_ vector float float) vector) (path-control-method-16 () none) ;; 16 ;; (displacement-between-points-at-percent-normalized! (_type_ vector float) vector) - (path-control-method-17 () none) ;; 17 ;; (get-num-segments (_type_) float) + (get-num-segments (_type_) float) ;; 17 ;; (path-control-method-18 () none) ;; 18 ;; (total-distance (_type_) float) - (path-control-method-19 () none) ;; 19 ;; (get-num-verts (_type_) int) - (path-control-method-20 () none) ;; 20 ;; (segement-duration->path-duration (_type_ float) float) - (path-control-method-21 () none) ;; 21 ;; (path-duration->segment-duration (_type_ float) float) + (get-num-verts (_type_) int) ;; 19 ;; + (segement-duration->path-duration (_type_ float) float) + (average-segment-length(_type_ float) float) ;; 21 ;; (path-duration->segment-duration (_type_ float) float) (path-control-method-22 () none) ;; 22 ;; (path-control-method-22 (_type_ vector) float) (path-control-method-23 () none) ;; 23 ;; (path-control-method-23 (_type_ vector) float) (path-control-method-24 () none) ;; 24 ;; (path-control-method-24 (_type_ vector) float) @@ -28957,8 +34696,8 @@ (path-control-method-27 () none) ;; 27 ;; (path-control-method-27 (_type_ vector) vector) (path-control-method-28 () none) ;; 28 ;; (path-control-method-28 (_type_ vector vector symbol) float) (path-control-method-29 () none) ;; 29 ;; (path-control-method-29 (_type_ vector int float) float) - (path-control-method-30 () none) ;; 30 ;; (should-display-marks? (_type_) symbol) - (path-control-method-31 () none) ;; 31 ;; (displacement-between-two-points! (_type_ vector float float) vector) + (path-control-method-30 () none) ;; 30 ;; + (should-display-marks? (_type_) symbol) ;; 31 ;; (displacement-between-two-points! (_type_ vector float float) vector) (path-control-method-32 () none) ;; 32 ) ) @@ -29148,8 +34887,8 @@ :size-assert #x5c :flag-assert #xd0000005c (:methods - (nav-ray-method-9 () none) ;; 9 - (nav-ray-method-10 () none) ;; 10 + (nav-ray-method-9 (_type_ nav-mesh nav-poly vector vector) none) ;; 9 + (nav-ray-method-10 (_type_ nav-mesh nav-poly vector vector) none) ;; 10 (nav-ray-method-11 (_type_) none) ;; 11 (nav-ray-method-12 (_type_) none) ;; 12 ) @@ -29278,10 +35017,10 @@ (nav-mesh-method-34 () none) ;; 34 ;; (link-by-id (_type_ uint) symbol) (nav-mesh-method-35 () none) ;; 35 ;; (unlink-by-id (_type_ uint) symbol) (nav-mesh-method-36 () none) ;; 36 ;; (nav-mesh-method-36 (_type_ vector vector float) float) - (nav-mesh-method-37 () none) ;; 37 ;; (nav-mesh-method-37 (_type_ vector vector float) float) + (point-in-poly? (_type_ nav-poly vector) symbol) ;; 37 ;; (nav-mesh-method-37 (_type_ vector vector float) float) (nav-mesh-method-38 () none) ;; 38 ;; (nav-mesh-method-38 (_type_ nav-poly) none) (nav-mesh-method-39 () none) ;; 39 ;; (debug-draw-poly (_type_ nav-poly rgba) none) - (nav-mesh-method-40 () none) ;; 40 ;; (point-in-poly? (_type_ nav-poly vector) symbol) + (nav-mesh-method-40 () none) ;; 40 ;; (nav-mesh-method-41 () none) ;; 41 ;; (nav-mesh-method-41 (_type_ nav-poly vector vector vector (pointer nav-poly)) vector) (nav-mesh-method-42 () none) ;; 42 ;; (closest-point-on-boundary (_type_ nav-poly vector vector) vector) (nav-mesh-method-43 () none) ;; 43 ;; (project-point-onto-plane-of-poly-local (_type_ nav-poly vector vector vector) none) @@ -29676,7 +35415,7 @@ (sound basic :offset-assert 4) (commentary-sound basic :offset-assert 8) (captions basic :offset-assert 12) - (commentary-captions basic :offset-assert 16) + (commentary-captions (array m2v-caption) :offset-assert 16) (id uint32 :offset-assert 20) (idx int8 :offset-assert 24) (driver uint8 :offset-assert 25) @@ -29754,27 +35493,39 @@ ;; load-dgo ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++load-dgo:load-msg-result +(defenum load-msg-result + :type uint16 + :bitfield #f + (done 0) + (error 1) + (more 2) + (aborted 3) + (invalid 666) + ) +;; ---load-dgo:load-msg-result + (deftype load-dgo-msg (structure) + "IOP RPC message for loading a dgo." ((rsvd uint16 :offset-assert 0) - (result uint16 :offset-assert 2) ;; load-msg-result + (result load-msg-result :offset-assert 2) ;; (b1 pointer :offset-assert 4) ;; guessed by decompiler (b2 pointer :offset-assert 8) ;; guessed by decompiler (bt pointer :offset-assert 12) ;; guessed by decompiler (name uint128 :offset-assert 16) - (address uint32 :offset-assert 4) + (address uint32 :offset 4) (id uint128 :offset-assert 32) + (pad uint32 7) ;; ?? ) :method-count-assert 9 :size-assert #x4c :flag-assert #x90000004c ) -|# -#| (deftype load-chunk-msg (structure) + "IOP RPC message for loading a chunk of a chunked animation" ((rsvd uint16 :offset-assert 0) - (result uint16 :offset-assert 2) ;; load-msg-result + (result load-msg-result :offset-assert 2) ;; (address pointer :offset-assert 4) ;; guessed by decompiler (section uint32 :offset-assert 8) (maxlen uint32 :offset-assert 12) @@ -29785,56 +35536,58 @@ :size-assert #x50 :flag-assert #x900000050 ) -|# -#| (deftype play-chunk-msg (structure) + "IOP RPC message for playing some streamed audio." ((rsvd uint16 :offset-assert 0) (result uint16 :offset-assert 2) (address pointer :offset-assert 4) ;; guessed by decompiler (section uint32 :offset-assert 8) - (volume int32 :offset-assert 8) + (volume int32 :offset 8) (maxlen uint32 :offset-assert 12) - (group uint8 :offset-assert 12) + (group uint8 :offset 12) (id uint32 4 :offset-assert 16) ;; guessed by decompiler - (basename sound-stream-name 4 :offset-assert 32) ;; guessed by decompiler + (basename sound-stream-name 4 :inline :offset-assert 32) ;; guessed by decompiler ) :method-count-assert 9 :size-assert #xe0 :flag-assert #x9000000e0 ) -|# -;; (define-extern *load-dgo-rpc* object) ;; rpc-buffer-pair -;; (define-extern *load-str-rpc* object) ;; rpc-buffer-pair -;; (define-extern *play-str-rpc* object) ;; rpc-buffer-pair -;; (define-extern *load-str-lock* object) ;; symbol -;; (define-extern *que-str-lock* object) ;; symbol -;; (define-extern *dgo-name* object) ;; string -;; (define-extern str-load function) ;; (function string int pointer int symbol) -;; (define-extern str-load-status function) ;; (function (pointer int32) symbol) -;; (define-extern str-load-cancel function) ;; (function none) -;; (define-extern str-play-async function) ;; (function string sound-id int int none) -;; (define-extern str-play-stop function) ;; (function string sound-id none) -;; (define-extern str-play-queue function) ;; (function string string string string (pointer uint32) pointer none) -;; (define-extern str-ambient-play function) ;; (function string none) -;; (define-extern str-ambient-stop function) ;; (function string none) -;; (define-extern str-play-kick function) ;; (function none) -;; (define-extern *dgo-time* object) ;; time-frame -;; (define-extern dgo-load-begin function) ;; (function string uint128 pointer pointer pointer load-dgo-msg) -;; (define-extern dgo-load-get-next function) ;; (function (pointer symbol) pointer) -;; (define-extern dgo-load-continue function) ;; (function pointer pointer pointer load-dgo-msg) -;; (define-extern dgo-load-cancel function) ;; (function int none) -;; (define-extern find-temp-buffer function) ;; (function int pointer) -;; (define-extern dgo-load-link function) ;; (function dgo-header kheap uint symbol symbol symbol) -;; (define-extern destroy-mem function) ;; (function (pointer uint32) (pointer uint32) none) +(define-extern *load-dgo-rpc* rpc-buffer-pair) +(define-extern *load-str-rpc* rpc-buffer-pair) +(define-extern *play-str-rpc* rpc-buffer-pair) +(define-extern *load-str-lock* symbol) +(define-extern *que-str-lock* symbol) +(define-extern *dgo-name* string) +(define-extern str-load "Send a message to the IOP to start loading a chunk of a .STR file to the EE." (function string int pointer int symbol)) +(define-extern str-load-status "Get the status of the most recent load. + Return 'busy if in progress, 'error if failed, or 'complete. + If 'complete, returns the maxlen value from the IOP." (function (pointer int32) symbol)) +(define-extern str-load-cancel "Cancel a streaming load. Note that this does not actually stop the transfer, so the IOP may continue writing to the buffer." + (function none)) +(define-extern str-play-async "Start playing a streaming audio." (function string sound-id int int none)) +(define-extern str-play-stop "Stop playing streaming audio." (function string sound-id none)) +(define-extern str-play-queue "Queue up streaming data, allowing it to start playing without delay." (function string string string string (pointer uint32) pointer none)) +(define-extern str-ambient-play "Start playing ambient (unused?)." (function string none)) +(define-extern str-ambient-stop "Stop playing ambient (unused?)." (function string none)) +(define-extern str-play-kick "Do an empty RPC on play so the IOP code runs and can update buffers." (function none)) +(define-extern *dgo-time* time-frame) +(define-extern dgo-load-begin "Start a DGO load!" (function string uint128 pointer pointer pointer load-dgo-msg)) +(define-extern dgo-load-get-next "Get the address of the most recently loaded object. #f is there is none. Returns if this is the last by arg0." (function (pointer symbol) pointer)) +(define-extern dgo-load-continue "Inform the IOP that it is safe to start loading the next object." (function pointer pointer pointer load-dgo-msg)) +(define-extern dgo-load-cancel "Abort a DGO load." (function int none)) +(define-extern find-temp-buffer "Unused function to find some temporary leftover space in DMA buffer. + Unused since jak 1, and checks the same buffer twice??" (function int pointer)) +(define-extern dgo-load-link "Start the async linker on a GOAL object file that was just loaded." (function dgo-header kheap uint symbol symbol symbol)) +(define-extern destroy-mem "Overwrite memory with #xffffffff for debugging." (function (pointer uint32) (pointer uint32) none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ramdisk ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype ramdisk-rpc-fill (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." ((rsvd1 int32 :offset-assert 0) (ee-id int32 :offset-assert 4) (rsvd2 int32 2 :offset-assert 8) ;; guessed by decompiler @@ -29844,10 +35597,9 @@ :size-assert #x20 :flag-assert #x900000020 ) -|# -#| (deftype ramdisk-rpc-load (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." ((rsvd int32 :offset-assert 0) (ee-id int32 :offset-assert 4) (offset uint32 :offset-assert 8) @@ -29857,10 +35609,9 @@ :size-assert #x10 :flag-assert #x900000010 ) -|# -#| (deftype ramdisk-rpc-load-to-ee (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." ((rsvd int32 :offset-assert 0) (addr int32 :offset-assert 4) (offset int32 :offset-assert 8) @@ -29871,12 +35622,11 @@ :size-assert #x20 :flag-assert #x900000020 ) -|# -;; (define-extern *ramdisk-rpc* object) ;; rpc-buffer-pair -;; (define-extern *current-ramdisk-id* object) ;; int -;; (define-extern ramdisk-load function) ;; (function int uint uint pointer int) -;; (define-extern ramdisk-sync function) ;; (function none) +(define-extern *ramdisk-rpc* rpc-buffer-pair) +(define-extern *current-ramdisk-id* int) +(define-extern ramdisk-load (function int uint uint pointer int)) +(define-extern ramdisk-sync (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; gsound ;; @@ -29925,7 +35675,7 @@ ;; (define-extern find-sound-instance function) ;; (define-extern remove-sound-instance-by-index function) ;; (define-extern remove-sound-instance-by-sound-id function) -;; (define-extern make-sound-instance function) +(define-extern make-sound-instance (function object int symbol sound-instance)) ;; (define-extern update-pitch-with-doppler function) ;; (define-extern update-tracking-position function) ;; (define-extern calculate-pan-angle function) @@ -29942,7 +35692,7 @@ ;; (define-extern build-sound-list function) ;; (define-extern *sound-player-enable* object) ;; symbol ;; (define-extern swap-sound-buffers function) ;; (function vector vector vector vector vector float int) -;; (define-extern get-sound-buffer-entry function) ;; (function pointer) +(define-extern get-sound-buffer-entry (function pointer)) ;; (define-extern free-last-sound-buffer-entry function) ;; (function none) ;; (define-extern sound-basic-cb function) ;; (function int (pointer int32) none) ;; (define-extern sound-trans-copy function) @@ -29987,14 +35737,14 @@ ;; collide-func ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern raw-ray-sphere-intersect function) ;; function -;; (define-extern ray-sphere-intersect function) ;; (function vector vector vector float float) -;; (define-extern ray-circle-intersect function) ;; (function vector vector vector float float) -;; (define-extern ray-cylinder-intersect function) ;; (function vector vector vector vector float float vector float) -;; (define-extern ray-plane-intersect function) ;; (function vector vector vector vector vector vector vector float) +(define-extern raw-ray-sphere-intersect function) +(define-extern ray-sphere-intersect (function vector vector vector float float)) +(define-extern ray-circle-intersect (function vector vector vector float float)) +(define-extern ray-cylinder-intersect (function vector vector vector vector float float vector float)) +(define-extern ray-plane-intersect (function vector vector vector vector vector vector vector float)) ;; (define-extern ray-triangle-intersect function) ;; (define-extern collide-do-primitives function) -;; (define-extern moving-sphere-triangle-intersect function) ;; (function vector vector float collide-cache-tri vector vector float) +(define-extern moving-sphere-triangle-intersect (function vector vector float collide-cache-tri vector vector float)) ;; (define-extern moving-sphere-sphere-intersect function) ;; (define-extern moving-sphere-moving-sphere-intersect function) @@ -30085,15 +35835,16 @@ ;; wind-work ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *wind-work* wind-work) ;; wind-work +(define-extern *wind-work* wind-work) ;; wind-work ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; wind ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern update-wind function) ;; (function wind-work (array uint8) none) -;; (define-extern wind-get-hashed-index function) ;; (function vector wind-work int) -;; (define-extern level-update-wind function) ;; (function wind-work none) +(define-extern update-wind "Update the wind force for this frame. + This value will be used by level-update-wind to update tie/shrub wind values." (function wind-work (array uint8) none)) +(define-extern wind-get-hashed-index "Unused function, likely a leftover from Jak 1's different wind system." (function vector wind-work int)) +(define-extern level-update-wind (function wind-work none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; bsp ;; @@ -30110,106 +35861,124 @@ ;; subdivide ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *merc-global-stats* object) ;; merc-global-stats -;; (define-extern clear-tr-stat function) ;; (function tr-stat none) -;; (define-extern *stat-string-tfrag* object) ;; string -;; (define-extern *stat-string-tfrag-scissor* object) ;; string -;; (define-extern *stat-string-total* object) ;; string -;; (define-extern print-tr-stat function) ;; (function tr-stat string string none) -;; (define-extern print-terrain-stats function) ;; (function none) -;; (define-extern update-subdivide-settings! function) ;; (function subdivide-settings math-camera int none) -;; (define-extern *subdivide-settings* object) ;; subdivide-settings -;; (define-extern set-tfrag-dists! function) ;; (function tfrag-dists none) -;; (define-extern *terrain-context* object) ;; terrain-context -;; (define-extern GSH_ENABLE object) ;; symbol -;; (define-extern GSH_BUCKET object) ;; bucket-id -;; (define-extern GSH_WHICH_STAT object) ;; int -;; (define-extern GSH_MAX_DISPLAY object) ;; basic -;; (define-extern GSH_TIME object) ;; int -;; (define-extern *perf-stats* object) ;; perf-stat-array -;; (define-extern *gomi-stats-hack* object) ;; (inline-array perf-stat) -;; (define-extern start-perf-stat-collection function) ;; (function none) -;; (define-extern end-perf-stat-collection function) ;; (function none) -;; (define-extern print-perf-stats function) ;; (function none) +(define-extern *merc-global-stats* merc-global-stats) +(define-extern clear-tr-stat "Reset all statistics to 0." (function tr-stat none)) +(define-extern *stat-string-tfrag* string) +(define-extern *stat-string-tfrag-scissor* string) +(define-extern *stat-string-total* string) +(define-extern print-tr-stat "Print a single tr-stat to the screen." (function tr-stat string string none)) +(define-extern print-terrain-stats "Print all tr-stats for renderers to the screen." (function none)) +(define-extern update-subdivide-settings! "Update the subdivide settings from the far/close settings + This caches the settings in subdivide-settings itself, + as well as in tfrag-work, used by EE tfrag code." (function subdivide-settings math-camera int none)) +(define-extern *subdivide-settings* subdivide-settings) +(define-extern set-tfrag-dists! "Update the subdivide settings used in tfrag VU1 code. + This must be called after update-subdivide-settings!" (function tfrag-dists none)) +(define-extern *terrain-context* terrain-context) +(define-extern GSH_ENABLE symbol) +(define-extern GSH_BUCKET bucket-id) +(define-extern GSH_WHICH_STAT int) +(define-extern GSH_MAX_DISPLAY basic) +(define-extern GSH_TIME int) +(define-extern *perf-stats* perf-stat-array) +(define-extern *gomi-stats-hack* (inline-array perf-stat)) +(define-extern start-perf-stat-collection "Start the per-frame performance stats. + This automatically cycles through various stats/categories, + collecting and aggregating the latest data. + The `gomi-stats-hack` likely refers to how the stat being + collected" (function none)) +(define-extern end-perf-stat-collection "End the per-frame performance stats" (function none)) +(define-extern print-perf-stats (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; sprite ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype sprite-header (structure) - ((header qword 1 :offset-assert 0) ;; guessed by decompiler - (num-sprites int32 :offset-assert 0) + "Header for the data sent to VU1 renderer." + ((header qword 1 :inline :offset-assert 0) ;; guessed by decompiler + (num-sprites int32 :offset 0) ) :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -|# -#| (deftype sprite-hvdf-data (structure) - ((data qword 76 :offset-assert 0) ;; guessed by decompiler + "Table of HVDF offsets. The first one is the normal one produced by math-camera. + The remaining 75 can be allocated by the user. + This is only used by Jak 1's weird HUD drawing system, to position HUD elements." + ((data qword 76 :inline :offset-assert 0) ;; guessed by decompiler ) :method-count-assert 9 :size-assert #x4c0 :flag-assert #x9000004c0 ) -|# -#| (deftype sprite-hvdf-control (structure) + "Table of flags indicating if the HVDF control is allocated or not." ((alloc int8 76 :offset-assert 0) ;; guessed by decompiler ) :method-count-assert 9 :size-assert #x4c :flag-assert #x90000004c ) -|# -#| +;; +++sprite:sprite-aux-type +(defenum sprite-aux-type + :bitfield #f + :type uint32 + (distort 0) + (glow 1) + ) +;; ---sprite:sprite-aux-type + (deftype sprite-aux-elem (structure) + "Entry for a sprite which should be drawn by a renderer other than the usual sprite." ((aux-type sprite-aux-type :offset-assert 0) ;; guessed by decompiler - (data vector 3 :offset-assert 4) ;; guessed by decompiler - (vec-data sprite-vec-data-2d :offset-assert 4) - (gif-data adgif-shader :offset-assert 8) - (aux-data sparticle-cpuinfo :offset-assert 12) + (data vector 3 :offset-assert 4 :score -1) ;; guessed by decompiler + (vec-data sprite-vec-data-2d :offset 4) + (gif-data adgif-shader :offset 8) + (aux-data sparticle-cpuinfo :offset 12) ) + :pack-me :method-count-assert 9 :size-assert #x10 :flag-assert #x900000010 ) -|# -#| (deftype sprite-aux-list (basic) + "List of sprites that can't be drawn by the normal sprite renderer. + The glow and distort renderers will pull sprites from here." ((num-entries int32 :offset-assert 4) (entry int32 :offset-assert 8) - (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (data sprite-aux-elem :dynamic :inline :offset-assert 12) ) + (:methods + (new (symbol type int) _type_) + ) :method-count-assert 9 :size-assert #xc :flag-assert #x90000000c ) -|# -#| (deftype sprite-frame-data (structure) - ((data UNKNOWN 42 :offset-assert 0) - (cdata vector 16 :offset-assert 0) ;; guessed by decompiler - (fdata UNKNOWN 26 :offset-assert 256) - (xy-array vector 8 :offset-assert 0) ;; guessed by decompiler - (st-array vector 4 :offset-assert 128) ;; guessed by decompiler - (xyz-array vector 4 :offset-assert 192) ;; guessed by decompiler - (hmge-scale vector :inline :offset-assert 256) - (consts vector :inline :offset-assert 272) - (pfog0 float :offset-assert 272) - (deg-to-rad float :offset-assert 276) - (min-scale float :offset-assert 280) - (inv-area float :offset-assert 284) - (adgif-giftag qword :inline :offset-assert 288) ;; gs-gif-tag :inline - (sprite-2d-giftag qword :inline :offset-assert 304) ;; gs-gif-tag :inline - (sprite-2d-giftag-2 qword :inline :offset-assert 320) ;; gs-gif-tag :inline + "Data sent to VU1 which is constant over a frame, like giftag templates, camera/fog constants..." + (;;(data UNKNOWN 42 :offset-assert 0) + (cdata vector 16 :inline :offset-assert 0) ;; guessed by decompiler + ;(fdata UNKNOWN 26 :offset-assert 256) + (xy-array vector 8 :inline :offset 0) ;; guessed by decompiler + (st-array vector 4 :inline :offset 128) ;; guessed by decompiler + (xyz-array vector 4 :inline :offset 192) ;; guessed by decompiler + (hmge-scale vector :inline :offset 256) + (consts vector :inline :offset 272) + (pfog0 float :offset 272) + (deg-to-rad float :offset 276) + (min-scale float :offset 280) + (inv-area float :offset 284) + (adgif-giftag gs-gif-tag :inline :offset-assert 288) ;; gs-gif-tag :inline + (sprite-2d-giftag gs-gif-tag :inline :offset-assert 304) ;; gs-gif-tag :inline + (sprite-2d-giftag-2 gs-gif-tag :inline :offset-assert 320) ;; gs-gif-tag :inline (sincos-01 vector :inline :offset-assert 336) (sincos-23 vector :inline :offset-assert 352) (sincos-45 vector :inline :offset-assert 368) @@ -30217,47 +35986,77 @@ (sincos-89 vector :inline :offset-assert 400) (basis-x vector :inline :offset-assert 416) (basis-y vector :inline :offset-assert 432) - (sprite-3d-giftag qword :inline :offset-assert 448) ;; gs-gif-tag :inline - (sprite-3d-giftag-2 qword :inline :offset-assert 464) ;; gs-gif-tag :inline + (sprite-3d-giftag gs-gif-tag :inline :offset-assert 448) ;; gs-gif-tag :inline + (sprite-3d-giftag-2 gs-gif-tag :inline :offset-assert 464) ;; gs-gif-tag :inline (screen-shader adgif-shader :inline :offset-assert 480) - (inv-hmge-scale vector :inline :offset-assert 576) + (inv-hmge-scale vector :inline :offset 576) (stq-offset vector :inline :offset-assert 592) (stq-scale vector :inline :offset-assert 608) (rgba-plain qword :inline :offset-assert 624) - (warp-giftag qword :inline :offset-assert 640) ;; gs-gif-tag :inline + (warp-giftag gs-gif-tag :inline :offset-assert 640) ;; gs-gif-tag :inline (fog-clamp vector :inline :offset-assert 656) - (fog-min float :offset-assert 656) - (fog-max float :offset-assert 660) - (max-scale float :offset-assert 664) + (fog-min float :offset 656 :score 1) + (fog-max float :offset 660 :score 1) + (max-scale float :offset 664 :score 1) ) :method-count-assert 9 :size-assert #x2a0 :flag-assert #x9000002a0 ) -|# -;; (define-extern sprite-setup-header function) ;; (function sprite-header int none) -;; (define-extern clear-sprite-aux-list function) ;; (function none) -;; (define-extern add-to-sprite-aux-list function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d uint none) -;; (define-extern sprite-setup-frame-data function) ;; (function sprite-frame-data uint none) -;; (define-extern sprite-vu1-block object) ;; vu-function -;; (define-extern sprite-set-3d-quaternion! function) ;; (function sprite-vec-data-3d quaternion quaternion) -;; (define-extern sprite-get-3d-quaternion! function) ;; (function quaternion sprite-vec-data-3d quaternion) -;; (define-extern sprite-add-matrix-data function) ;; (function dma-buffer uint none) -;; (define-extern sprite-add-frame-data function) ;; (function dma-buffer uint none) -;; (define-extern sprite-add-2d-chunk function) ;; (function sprite-array-2d int int dma-buffer int none) -;; (define-extern sprite-add-2d-all function) ;; (function sprite-array-2d dma-buffer int none) -;; (define-extern sprite-add-3d-chunk function) ;; (function sprite-array-3d int int dma-buffer none) -;; (define-extern sprite-add-3d-all function) ;; (function sprite-array-3d dma-buffer int none) -;; (define-extern sprite-draw function) ;; (function display none) -;; (define-extern sprite-allocate-user-hvdf function) ;; (function int) -;; (define-extern sprite-release-user-hvdf function) ;; (function int none) -;; (define-extern sprite-get-user-hvdf function) ;; (function int vector) -;; (define-extern *sprite-hvdf-data* object) ;; sprite-hvdf-data -;; (define-extern *sprite-hvdf-control* object) ;; sprite-hvdf-control -;; (define-extern *sprite-aux-list* object) ;; sprite-aux-list -;; (define-extern *sprite-array-2d* object) ;; sprite-array-2d -;; (define-extern *sprite-array-3d* object) ;; sprite-array-3d +(define-extern sprite-setup-header + "Initialize VU1 data header with number of sprites." + (function sprite-header int none)) +(define-extern clear-sprite-aux-list + "Reset all pending sprites in the aux-list." + (function none)) +(define-extern add-to-sprite-aux-list (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d uint none)) +(define-extern sprite-setup-frame-data (function sprite-frame-data uint none)) +(define-extern sprite-vu1-block vu-function) +(define-extern sprite-set-3d-quaternion! + "Set the quaternion of the vec-data." + (function sprite-vec-data-3d quaternion quaternion)) +(define-extern sprite-get-3d-quaternion! + "Get the quaternion from the vec data." + (function quaternion sprite-vec-data-3d quaternion)) +(define-extern sprite-add-matrix-data + "Set up matrix data DMA to VU1. + This changes per sprite mode, but remains constant for all sprites in that mode." + (function dma-buffer uint none)) +(define-extern sprite-add-frame-data + "Set up frame data DMA to VU1." + (function dma-buffer uint none)) +(define-extern sprite-add-2d-chunk + "Set up DMA for a single chunk of 2D sprites." + (function sprite-array-2d int int dma-buffer int none)) +(define-extern sprite-add-2d-all + "Generate DMA for all chunks." + (function sprite-array-2d dma-buffer int none)) +(define-extern sprite-add-3d-chunk + "Generate DMA for a single chunk of 3D sprites." + (function sprite-array-3d int int dma-buffer none)) +(define-extern sprite-add-3d-all + "Generate DMA for all chunks of 3D sprites." + (function sprite-array-3d dma-buffer int none)) +(define-extern sprite-draw + "Top-level sprite DMA generation function. + Takes the sprites from sparticle, and draws them with + normal sprite, sprite-distort, sprite-glow, and simple-sprite-system" + (function display none)) +(define-extern sprite-allocate-user-hvdf + "Allocate an HVDF entry. Returns the index in the hvdf-data array." + (function int)) +(define-extern sprite-release-user-hvdf + "Free an HVDF entry." + (function int none)) +(define-extern sprite-get-user-hvdf + "Get the HVDF vector." + (function int vector)) +(define-extern *sprite-hvdf-data* sprite-hvdf-data) +(define-extern *sprite-hvdf-control* sprite-hvdf-control) +(define-extern *sprite-aux-list* sprite-aux-list) +(define-extern *sprite-array-2d* sprite-array-2d) +(define-extern *sprite-array-3d* sprite-array-3d) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; sprite-distort ;; @@ -30281,8 +36080,8 @@ ;; (define-extern *sprite-distorter-sine-tables* object) ;; sprite-distorter-sine-tables ;; (define-extern sprite-distorter-generate-tables function) ;; (function none) ;; (define-extern sprite-distort-vu1-block object) ;; vu-function -;; (define-extern sprite-init-distorter function) ;; (function dma-buffer none) -;; (define-extern sprite-draw-distorters function) ;; (function dma-buffer none) +(define-extern sprite-init-distorter (function dma-buffer none)) +(define-extern sprite-draw-distorters (function dma-buffer none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; sprite-glow ;; @@ -30411,27 +36210,26 @@ ;; (define-extern *sprite-glow-templates* array) ;; (define-extern sprite-glow-vu1-block object) ;; vu-function ;; (define-extern sprite-glow-init-consts function) ;; (function sprite-glow-consts none) -;; (define-extern sprite-glow-init-engine function) ;; (function dma-buffer none) +(define-extern sprite-glow-init-engine (function dma-buffer none)) ;; ;; (define-extern *sprite-glow-dma-packet-data* object) ;; sprite-glow-dma-packet-data ;; (define-extern sprite-glow-add-sprite function) ;; (function dma-buffer sprite-vec-data-2d float float float adgif-shader none) ;; (define-extern sprite-glow-add-simple-sprite function) ;; (function dma-buffer sprite-glow-dma-packet-data sprite-glow-data pointer none) -;; (define-extern sprite-glow-draw function) ;; (function dma-buffer none) +(define-extern sprite-glow-draw (function dma-buffer none)) ;; ;; (define-extern add-shader-to-dma function) ;; (function dma-buffer adgif-shader) -;; (define-extern *simple-sprite-system* object) ;; simple-sprite-system +(define-extern *simple-sprite-system* simple-sprite-system) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; debug-sphere ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern make-debug-sphere-table function) ;; (function vector-array float float vector-array) -;; (define-extern *debug-sphere-table* object) ;; (array vector-array) -;; (define-extern add-debug-sphere-from-table function) ;; (function bucket-id vector meters rgba int none) +(define-extern make-debug-sphere-table "Create a table of lines on a sphere." (function vector-array float float vector-array)) +(define-extern *debug-sphere-table* (array vector-array)) +(define-extern add-debug-sphere-from-table "Draw a sphere out of debug lines, using the precomputed table of lines." (function bucket-id vector meters rgba int none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; debug ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype debug-line (structure) ((flags int32 :offset-assert 0) (bucket int32 :offset-assert 4) ;; bucket-id @@ -30445,9 +36243,7 @@ :size-assert #x3c :flag-assert #x90000003c ) -|# -#| (deftype debug-text-3d (structure) ((flags int32 :offset-assert 0) (bucket int32 :offset-assert 4) ;; bucket-id @@ -30460,9 +36256,7 @@ :size-assert #x2c :flag-assert #x90000002c ) -|# -#| (deftype debug-tracking-thang (basic) ((length int32 :offset-assert 4) (allocated-length int32 :offset-assert 8) @@ -30471,7 +36265,6 @@ :size-assert #xc :flag-assert #x90000000c ) -|# ;; debug-vertex-stats is already defined! @@ -30482,12 +36275,12 @@ ;; (define-extern internal-draw-debug-text-3d function) ;; (function bucket-id string vector font-color vector2h pointer) ;; (define-extern add-debug-outline-triangle function) ;; (function symbol bucket-id vector vector vector rgba symbol) ;; (define-extern add-debug-triangle-normal function) ;; (function symbol bucket-id vector vector vector rgba symbol) -;; (define-extern add-debug-flat-triangle-noclip function) -;; (define-extern *debug-lines* object) ;; (inline-array debug-line) -;; (define-extern *debug-lines-trk* object) ;; debug-tracking-thang -;; (define-extern *debug-text-3ds* object) ;; (inline-array debug-text-3d) -;; (define-extern *debug-text-3d-trk* object) ;; debug-tracking-thang -;; (define-extern *debug-prims* object) +(define-extern add-debug-flat-triangle-noclip (function vector vector vector vector vector none)) +(define-extern *debug-lines* (inline-array debug-line)) +(define-extern *debug-lines-trk* debug-tracking-thang) +(define-extern *debug-text-3ds* (inline-array debug-text-3d)) +(define-extern *debug-text-3d-trk* debug-tracking-thang) ;; +(define-extern *debug-prims* int) ;; (define-extern debug-reset-prim-buffer function) (define-extern add-debug-flat-triangle (function symbol bucket-id vector vector vector rgba symbol)) ;; (define-extern get-debug-line function) ;; (function debug-line) @@ -30517,55 +36310,69 @@ (define-extern add-debug-curve (function symbol bucket-id (inline-array vector) int (pointer float) int rgba symbol)) (define-extern add-debug-curve2 (function symbol bucket-id curve rgba symbol symbol)) (define-extern add-debug-points (function symbol bucket-id (inline-array vector) int rgba float int symbol)) -;; (define-extern debug-percent-bar function) ;; (function symbol bucket-id int int float rgba int int symbol) -;; (define-extern debug-pad-display function) ;; (function cpad-info symbol) -;; (define-extern add-debug-light function) ;; (function symbol bucket-id light vector string symbol) -;; (define-extern add-debug-lights function) ;; (function symbol bucket-id (inline-array light) vector symbol) -;; (define-extern drawable-frag-count function) ;; (function drawable int) -;; (define-extern history-init function) ;; (function pos-history int pos-history) -;; (define-extern history-draw-and-update function) ;; (function pos-history symbol vector symbol) -;; (define-extern dma-timeout-cam function) ;; (function vector) -;; (define-extern display-file-info function) ;; (function int) -;; (define-extern add-debug-cursor function) ;; (function symbol bucket-id int int mouse-buttons int) -;; (define-extern *boundary-polygon* object) ;; (inline-array sky-vertex) -;; (define-extern init-boundary-regs function) ;; (function none) -;; (define-extern add-boundary-shader function) ;; (function texture-id dma-buffer none) +(define-extern debug-percent-bar function) ;; (function symbol bucket-id int int float rgba int int symbol) +(define-extern debug-pad-display (function cpad-info symbol)) +(define-extern add-debug-light (function symbol bucket-id light vector string symbol)) +(define-extern add-debug-lights (function symbol bucket-id (inline-array light) vector symbol)) +(define-extern drawable-frag-count (function drawable int)) +(define-extern history-init (function pos-history int pos-history)) +(define-extern history-draw-and-update (function pos-history symbol vector symbol)) +(define-extern dma-timeout-cam (function vector)) +(define-extern display-file-info (function int)) +(define-extern add-debug-cursor (function symbol bucket-id int int mouse-buttons int)) +(define-extern *boundary-polygon* (inline-array sky-vertex)) +(define-extern init-boundary-regs (function none)) +(define-extern add-boundary-shader (function texture-id dma-buffer none)) ;; (define-extern draw-boundary-polygon function) ;; (define-extern render-boundary-quad function) -;; (define-extern render-boundary-tri function) ;; (function sky-vertex dma-buffer none) -;; (define-extern add-debug-bound-internal function) ;; (function dma-buffer (inline-array vector) int rgba rgba int none) -;; (define-extern add-debug-bound function) ;; (function bucket-id (inline-array vector) int rgba rgba int none) +(define-extern render-boundary-tri (function sky-vertex dma-buffer none)) +(define-extern add-debug-bound-internal (function dma-buffer (inline-array vector) int rgba rgba int none)) +(define-extern add-debug-bound (function bucket-id (inline-array vector) int rgba rgba int none)) ;; (define-extern cpu-delay function) -;; (define-extern qword-read-time function) ;; (function (array uint128) int int) -;; (define-extern bugfix? function) ;; (function symbol) +(define-extern qword-read-time (function (array uint128) int int)) +(define-extern bugfix? (function symbol)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; history ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++history:history-channel +(defenum history-channel + :type uint8 + (trans 0) + (transv 1) + (transv-in 2) + (transv-out 3) + (intersect 4) + (local-normal 5) + (surface-normal 6) + (collide-status 7) + (pat 8) + (time 9) + (friction 10) + ) +;; ---history:history-channel + (deftype history-elt (structure) ((record-tag-bytes uint8 4 :offset-assert 0) ;; guessed by decompiler - (record-tag uint32 :offset-assert 0) - (record-id uint16 :offset-assert 0) - (owner uint8 :offset-assert 2) - (channel uint8 :offset-assert 4) ;; history-channel - (timestamp uint64 :offset-assert 8) ;; time-frame + (record-tag uint32 :offset 0) + (record-id uint16 :offset 0) + (owner uint8 :offset 2) + (channel history-channel :offset 4) ;; history-channel + (timestamp time-frame :offset-assert 8) ;; time-frame (origin vector :inline :offset-assert 16) (bytes uint8 16 :offset-assert 32) ;; guessed by decompiler - (vector vector :inline :offset-assert 32) - (float float :offset-assert 32) - (collide-status uint64 :offset-assert 32) ;; collide-status - (collide-reaction-flag uint32 :offset-assert 40) - (pat pat-surface :offset-assert 32) ;; guessed by decompiler + (vector vector :inline :offset 32 :score 1) + (float float :offset 32) + (collide-status collide-status :offset 32) ;; collide-status + (collide-reaction-flag uint32 :offset 40) + (pat pat-surface :offset 32) ;; guessed by decompiler ) :method-count-assert 9 :size-assert #x30 :flag-assert #x900000030 ) -|# -#| (deftype history-iterator (basic) ((max-age uint32 :offset-assert 4) (owner uint8 :offset-assert 8) @@ -30580,47 +36387,44 @@ :flag-assert #xc00000028 ;; field out uses ~A with a signed load. (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type uint) _type_) - (history-iterator-method-9 () none) ;; 9 ;; (frame-counter-delta (_type_ history-elt) time-frame) - (history-iterator-method-10 () none) ;; 10 ;; (update-entries! (_type_) history-elt) - (history-iterator-method-11 () none) ;; 11 ;; (get-age (_type_ history-elt) float) + (new (symbol type uint) _type_) ;; 0 + (frame-counter-delta (_type_ history-elt) time-frame) ;; 9 + (update-entries! (_type_) history-elt) ;; 10 + (get-age (_type_ history-elt) float) ;; 11 ) ) -|# -#| (deftype history (basic) ((alloc-index int32 :offset-assert 4) (allocated-length int32 :offset-assert 8) - (elts history-elt :dynamic :offset-assert 16) ;; guessed by decompiler + (elts history-elt :dynamic :inline :offset-assert 16) ;; guessed by decompiler ) :method-count-assert 11 :size-assert #x10 :flag-assert #xb00000010 (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) - (history-method-9 () none) ;; 9 ;; (clear-record-tags! (_type_ history-channel uint uint) history-elt) - (history-method-10 () none) ;; 10 ;; (clear-history-entries! (_type_) none) + (new (symbol type int) _type_) ;; 0 + (clear-record-tags! (_type_ history-channel uint uint) history-elt) ;; 9 + (clear-history-entries! (_type_) none) ;; 10 ) ) -|# -;; (define-extern history-channel->string function) ;; (function history-channel string) -;; (define-extern *history* object) ;; history -;; (define-extern history-print function) ;; (function history-iterator none) -;; (define-extern history-draw function) ;; (function history-iterator none) +(define-extern history-channel->string (function history-channel string)) +(define-extern *history* history) +(define-extern history-print (function history-iterator none)) +(define-extern history-draw (function history-iterator none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; merc-vu1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern merc-vu1-block object) ;; vu-function +(define-extern merc-vu1-block vu-function) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; emerc-vu1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern emerc-vu1-block object) ;; vu-function +(define-extern emerc-vu1-block vu-function) ;; vu-function ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; merc-blend-shape ;; @@ -30732,39 +36536,36 @@ ;; ripple ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype ripple-request (structure) ((waveform ripple-wave :offset-assert 0) ;; guessed by decompiler (effect merc-effect :offset-assert 4) ) + :pack-me :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype ripple-globals (structure) ((count int32 :offset-assert 0) - (requests ripple-request 16 :offset-assert 4) ;; guessed by decompiler + (requests ripple-request 16 :inline :offset-assert 4) ;; guessed by decompiler ) :method-count-assert 9 :size-assert #x84 :flag-assert #x900000084 ) -|# -;; (define-extern *ripple-globals* object) ;; ripple-globals -;; (define-extern ripple-make-request function) ;; (function ripple-wave merc-effect none) -;; (define-extern ripple-update-waveform-offs function) ;; (function ripple-wave-set clock none) -;; (define-extern ripple-execute-init function) ;; (function none) -;; (define-extern ripple-create-wave-table function) ;; (function ripple-wave-set int) -;; (define-extern ripple-apply-wave-table function) ;; (function merc-effect symbol) -;; (define-extern ripple-execute function) ;; (function none) -;; (define-extern ripple-matrix-scale function) ;; (function merc-effect none) -;; (define-extern ripple-add-debug-sphere function) ;; (function process-drawable vector float float none) -;; (define-extern ripple-slow-add-sine-waves function) ;; (function ripple-wave-set float float float) -;; (define-extern ripple-find-height function) ;; (function process-drawable int vector float) +(define-extern *ripple-globals* ripple-globals) +(define-extern ripple-make-request (function ripple-wave merc-effect none)) +(define-extern ripple-update-waveform-offs (function ripple-wave-set clock none)) +(define-extern ripple-execute-init (function none)) +(define-extern ripple-create-wave-table (function ripple-wave-set int)) +(define-extern ripple-apply-wave-table (function merc-effect symbol)) +(define-extern ripple-execute (function none)) +(define-extern ripple-matrix-scale (function merc-effect none)) +(define-extern ripple-add-debug-sphere (function process-drawable vector float float none)) +(define-extern ripple-slow-add-sine-waves (function ripple-wave-set float float float)) +(define-extern ripple-find-height (function process-drawable int vector float)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; bones ;; @@ -30824,13 +36625,13 @@ ;; generic-vu0 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern generic-vu0-block object) ;; vu-function +(define-extern generic-vu0-block vu-function) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; generic-vu1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern generic-vu1-block object) ;; vu-function +(define-extern generic-vu1-block vu-function) ;; vu-function ;; (define-extern generic-setup-constants function) ;; (function generic-constants none) ;; (define-extern generic-add-constants function) ;; (function dma-buffer none) ;; (define-extern generic-setup-shrub-constants function) ;; (function generic-shrub-constants int int int none) @@ -30977,7 +36778,7 @@ ;; (define-extern *shadow-data* object) ;; shadow-data ;; (define-extern shadow-invert-z-buf function) ;; (function dma-buffer none) -;; (define-extern shadow-make-invert-buf function) ;; (function none) +(define-extern shadow-make-invert-buf (function none)) ;; ;; (define-extern shadow-dma-init function) ;; (function dma-buffer none) ;; (define-extern shadow-dma-end function) ;; (function dma-buffer gs-rgbaq symbol int none) ;; (define-extern shadow-vu0-block object) ;; vu-function @@ -31005,7 +36806,6 @@ ;; shadow-vu1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype shadow-vu1-constants (structure) ((hmgescale vector :inline :offset-assert 0) (invhscale vector :inline :offset-assert 16) @@ -31013,7 +36813,7 @@ (texscale vector :inline :offset-assert 48) (hvdfoff vector :inline :offset-assert 64) (fog vector :inline :offset-assert 80) - (clrs vector 2 :offset-assert 96) ;; guessed by decompiler + (clrs vector 2 :inline :offset-assert 96) ;; guessed by decompiler (adgif gs-gif-tag :inline :offset-assert 128) (texflush gs-adcmd :inline :offset-assert 144) (flush gs-adcmd :inline :offset-assert 160) @@ -31024,9 +36824,7 @@ :size-assert #xd0 :flag-assert #x9000000d0 ) -|# -#| (deftype shadow-vu1-data (structure) ((adgif gs-gif-tag :inline :offset-assert 0) (ad gs-adcmd :inline :offset-assert 16) @@ -31035,20 +36833,19 @@ (quadgif gs-gif-tag :inline :offset-assert 64) (texoffset vector :inline :offset-assert 80) (texscale vector :inline :offset-assert 96) - (clrs qword 2 :offset-assert 112) ;; guessed by decompiler + (clrs qword 2 :inline :offset-assert 112) ;; guessed by decompiler ) :method-count-assert 9 :size-assert #x90 :flag-assert #x900000090 ) -|# -;; (define-extern *shadow-vu1-data* object) ;; shadow-vu1-data -;; (define-extern shadow-vu1-block object) ;; vu-function -;; (define-extern shadow-vu1-add-constants function) ;; (function dma-buffer int none) -;; (define-extern shadow-vu1-patch-consts function) ;; (function symbol int none) -;; (define-extern shadow-vu1-add-matrix function) ;; (function dma-buffer math-camera none) -;; (define-extern shadow-vu1-init-buffer function) ;; (function dma-buffer int none) +(define-extern *shadow-vu1-data* shadow-vu1-data) ;; +(define-extern shadow-vu1-block vu-function) ;; +(define-extern shadow-vu1-add-constants (function dma-buffer int none)) +(define-extern shadow-vu1-patch-consts (function symbol int none)) +(define-extern shadow-vu1-add-matrix (function dma-buffer math-camera none)) +(define-extern shadow-vu1-init-buffer (function dma-buffer int none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; warp ;; @@ -31057,7 +36854,7 @@ ;; (define-extern fx-copy-init function) ;; (define-extern warp-shader-init function) ;; (define-extern fx-copy-buf function) ;; (function dma-buffer none) -;; (define-extern init-warp function) +(define-extern init-warp (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; hflip ;; @@ -31065,7 +36862,7 @@ ;; (define-extern hflip-zbuf-init function) ;; (define-extern hflip-z-buf function) -;; (define-extern init-hflip-zbuf function) +(define-extern init-hflip-zbuf (function none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; texture-anim ;; @@ -31168,7 +36965,7 @@ ) |# -;; (define-extern *blit-displays-work* object) ;; blit-displays-work +(define-extern *blit-displays-work* blit-displays-work) ;; ;; (define-extern clear-zbuf function) ;; (define-extern draw-color-bars function) ;; (function blit-displays-work none) ;; (define-extern draw-raw-image function) ;; (function blit-displays-work bucket-id art-group vector vector level int none) @@ -31177,13 +36974,20 @@ ;; font-data ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *font12-table* object) ;; (inline-array vector) -;; (define-extern *font24-table* object) ;; (inline-array vector) +(define-extern *font12-table* (inline-array vector)) +(define-extern *font24-table* (inline-array vector)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; font ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +++font:draw-string-result +(deftype draw-string-result (uint64) + ((length float :offset 0) + (b float :offset 32)) + ) +;; ---font:draw-string-result + ;; (define-extern *font-random-generator* object) ;; (define-extern *font-curve-ghosting* array) ;; (define-extern *font-curve-ghosting-2* array) @@ -31204,14 +37008,13 @@ ;; (define-extern draw-string function) ;; (function string dma-buffer font-context draw-string-result) ;; (define-extern get-string-length-asm function) ;; (define-extern get-string-length function) ;; (function string font-context draw-string-result) -;; (define-extern draw-string-xy function) ;; (function string dma-buffer int int font-color font-flags draw-string-result) +(define-extern draw-string-xy (function string dma-buffer int int font-color font-flags draw-string-result)) ;; (define-extern draw-string-adv function) ;; (function string dma-buffer font-context none) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; decomp ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype huf-dictionary-node (structure) ((zero uint16 :offset-assert 0) (one uint16 :offset-assert 2) @@ -31220,12 +37023,11 @@ :size-assert #x4 :flag-assert #x900000004 ) -|# -;; (define-extern unpack-comp-rle function) ;; (function (pointer int8) (pointer int8) (pointer int8)) -;; (define-extern unpack-comp-huf function) ;; (function (pointer uint8) (pointer uint8) uint huf-dictionary-node none) -;; (define-extern unpack-comp-lzo function) ;; (function (pointer uint8) (pointer uint8) none) -;; (define-extern pack-comp-rle function) ;; (function (pointer uint8) (pointer uint8) int int (pointer uint8)) +(define-extern unpack-comp-rle (function (pointer int8) (pointer int8) (pointer int8))) +(define-extern unpack-comp-huf (function (pointer uint8) (pointer uint8) uint huf-dictionary-node none)) +(define-extern unpack-comp-lzo (function (pointer uint8) (pointer uint8) none)) +(define-extern pack-comp-rle (function (pointer uint8) (pointer uint8) int int (pointer uint8))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; background ;; @@ -31403,7 +37205,7 @@ ;; tfrag-work ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *tfrag-work* object) ;; tfrag-work +(define-extern *tfrag-work* tfrag-work) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; tie ;; @@ -31469,7 +37271,6 @@ ;; etie-vu1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype etie-consts (structure) ((gifbufs qword :inline :offset-assert 0) (adgif qword :inline :offset-assert 16) ;; gs-gif-tag :inline @@ -31484,28 +37285,25 @@ :size-assert #xc0 :flag-assert #x9000000c0 ) -|# -#| (deftype etie-matrix (structure) ((rmtx matrix :inline :offset-assert 0) (nmtx matrix3 :inline :offset-assert 64) - (morph float :offset-assert 76) - (fog float :offset-assert 92) - (fade uint32 :offset-assert 108) + (morph float :offset 76) + (fog float :offset 92) + (fade uint32 :offset 108) (tint qword :inline :offset-assert 112) ) :method-count-assert 9 :size-assert #x80 :flag-assert #x900000080 ) -|# -;; (define-extern etie-vu1-block object) ;; vu-function -;; (define-extern etie-magic function) ;; (function int int) -;; (define-extern etie-init-consts function) ;; (function etie-consts gs-alpha none) -;; (define-extern etie-init-engine function) ;; (function dma-buffer gs-alpha gs-test none) -;; (define-extern etie-end-buffer function) ;; (function dma-buffer none) +(define-extern etie-vu1-block vu-function) +(define-extern etie-magic (function int int)) +(define-extern etie-init-consts (function etie-consts gs-alpha none)) +(define-extern etie-init-engine (function dma-buffer gs-alpha gs-test none)) +(define-extern etie-end-buffer (function dma-buffer none)) ;; (define-extern etie-float-reg-bp function) ;; (define-extern etie-float-reg function) ;; (define-extern etie-floats function) @@ -31628,14 +37426,13 @@ ;; tie-work ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *instance-tie-work* object) ;; instance-tie-work -;; (define-extern *prototype-tie-work* object) ;; prototype-tie-work +(define-extern *instance-tie-work* instance-tie-work) +(define-extern *prototype-tie-work* prototype-tie-work) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; tie-methods ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype tie-debug (structure) ((max-instance uint32 :offset-assert 0) (min-instance uint32 :offset-assert 4) @@ -31646,20 +37443,19 @@ :size-assert #x10 :flag-assert #x900000010 ) -|# -;; (define-extern *tie* object) ;; tie-debug -;; (define-extern tie-debug-between function) ;; (function uint uint uint) -;; (define-extern tie-debug-one function) ;; (function uint uint uint) -;; (define-extern tie-debug-frag-between function) ;; (function uint uint uint) -;; (define-extern tie-debug-frag-one function) ;; (function uint uint uint) -;; (define-extern walk-tie-generic-prototypes function) ;; (function none) -;; (define-extern *pke-hack* object) ;; vector -;; (define-extern draw-inline-array-instance-tie function) ;; (function pointer (inline-array instance-tie) int dma-buffer none) -;; (define-extern draw-inline-array-prototype-tie-asm function) ;; (function dma-buffer int prototype-array-tie none) -;; (define-extern draw-inline-array-prototype-tie-shared-asm function) -;; (define-extern instance-tie-patch-buckets function) ;; (function dma-buffer level object) -;; (define-extern draw-drawable-tree-instance-tie function) ;; (function drawable-tree-instance-tie level none) +(define-extern *tie* tie-debug) ;; +(define-extern tie-debug-between (function uint uint uint)) +(define-extern tie-debug-one (function uint uint uint)) +(define-extern tie-debug-frag-between (function uint uint uint)) +(define-extern tie-debug-frag-one (function uint uint uint)) +(define-extern walk-tie-generic-prototypes (function none)) +(define-extern *pke-hack* vector) +(define-extern draw-inline-array-instance-tie (function pointer (inline-array instance-tie) int dma-buffer none)) +(define-extern draw-inline-array-prototype-tie-asm (function dma-buffer int prototype-array-tie none)) +(define-extern draw-inline-array-prototype-tie-shared-asm function) +(define-extern instance-tie-patch-buckets (function dma-buffer level object)) +(define-extern draw-drawable-tree-instance-tie (function drawable-tree-instance-tie level none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; prim ;; @@ -31747,8 +37543,8 @@ ;; sparticle-launcher is already defined! -;; (define-extern *part-id-table* object) ;; (array sparticle-launcher) -;; (define-extern *part-group-id-table* object) ;; (array sparticle-launch-group) +(define-extern *part-id-table* (array sparticle-launcher)) ;; +(define-extern *part-group-id-table* (array sparticle-launch-group)) ;; ;; (define-extern *launch-control-table* object) ;; (define-extern *sp-temp* object) ;; float ;; (define-extern count-launch-controls-in-table function) @@ -31769,7 +37565,7 @@ ;; (define-extern sp-adjust-launch function) ;; (function sparticle-launchinfo sparticle-cpuinfo (inline-array sp-field-init-spec) matrix symbol none) ;; (define-extern sp-euler-convert function) ;; (function sparticle-launchinfo sparticle-cpuinfo none) ;; (define-extern sp-rotate-system function) ;; (function sparticle-launchinfo sparticle-cpuinfo transformq none) -;; (define-extern sp-launch-particles-var function) ;; (function sparticle-system sparticle-launcher matrix sparticle-launch-state sparticle-launch-control float none) +(define-extern sp-launch-particles-var (function sparticle-system sparticle-launcher matrix sparticle-launch-state sparticle-launch-control float none)) ;; ;; (define-extern *death-adgif* object) ;; adgif-shader ;; (define-extern sp-launch-particles-death function) ;; (function sparticle-system sparticle-launcher vector none) ;; (define-extern sp-clear-queue function) ;; (function none) @@ -31799,13 +37595,13 @@ ;; (define-extern birth-func-random-next-time function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) ;; (define-extern sparticle-respawn-heights function) ;; (function sparticle-system sparticle-cpuinfo vector none) ;; (define-extern sparticle-respawn-timer function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern sparticle-texture-animate function) ;; (function sparticle-system sparticle-cpuinfo vector none) +(define-extern sparticle-texture-animate (function sparticle-system sparticle-cpuinfo vector none)) ;; ;; (define-extern sparticle-texture-day-night function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-2d none) -;; (define-extern sparticle-motion-blur function) ;; (function sparticle-system sparticle-cpuinfo vector none) +(define-extern sparticle-motion-blur (function sparticle-system sparticle-cpuinfo vector none)) ;; ;; (define-extern sparticle-motion-blur-old function) ;; (function object sparticle-cpuinfo sprite-vec-data-3d object) ;; (define-extern sparticle-set-conerot function) ;; (function sparticle-launcher vector none) ;; (define-extern check-ground-bounce function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo float) -;; (define-extern check-drop-group-center function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +(define-extern check-drop-group-center (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;; ;; (define-extern check-drop-group-center-with-offset function) ;; (define-extern check-bubble-height function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) ;; (define-extern check-raise-group-center function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) @@ -31821,17 +37617,17 @@ ;; (define-extern birth-func-set-vel function) ;; (function object sparticle-cpuinfo sparticle-launchinfo none) ;; (define-extern birth-func-set-vel-2d function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) ;; (define-extern birth-func-set-vel-range function) -;; (define-extern birth-func-texture-group function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) +(define-extern birth-func-texture-group (function int sparticle-cpuinfo sparticle-launchinfo none)) ;; ;; (define-extern rot-to-particle function) ;; (function degrees sprite-vec-data-2d matrix none) ;; (define-extern rot-to-particle-no-flip function) ;; (define-extern birth-func-flip-based-on-scale function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) ;; (define-extern sparticle-2d-spline-align function) ;; (function object sparticle-cpuinfo sprite-vec-data-2d object none) ;; (define-extern sparticle-2d-spline-align-no-flip function) -;; (define-extern sparticle-2d-spline-align-instant function) ;; (function object sparticle-cpuinfo sprite-vec-data-2d none) +(define-extern sparticle-2d-spline-align-instant (function object sparticle-cpuinfo sprite-vec-data-2d none)) ;; ;; (define-extern birth-func-inherit-size function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) -;; (define-extern birth-func-texture-group-2d function) ;; (function object sparticle-cpuinfo sparticle-launchinfo object object none) +(define-extern birth-func-texture-group-2d (function object sparticle-cpuinfo sparticle-launchinfo object object none)) ;; ;; (define-extern sparticle-3d-rotate-xz-to-camera function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none) -;; (define-extern spt-func-relative-pos function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none) +(define-extern spt-func-relative-pos (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none)) ;; ;; (define-extern spt-func-turn-to-vel-radial function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -31844,13 +37640,13 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; (define-extern sp-particle-copy! function) ;; (function sparticle-cpuinfo sparticle-cpuinfo none) -;; (define-extern *sp-particle-system-2d* object) ;; sparticle-system -;; (define-extern *sp-particle-system-3d* object) ;; sparticle-system +(define-extern *sp-particle-system-2d* sparticle-system) +(define-extern *sp-particle-system-3d* sparticle-system) ;; (define-extern sp-get-block-size function) ;; (function sparticle-system int int) ;; (define-extern sp-get-approx-alloc-size function) ;; (function sparticle-system int int) ;; (define-extern sp-free-particle function) ;; (function sparticle-system int sparticle-cpuinfo sprite-vec-data-2d none) ;; (define-extern sp-get-particle function) ;; (function sparticle-system int sparticle-launch-state sparticle-cpuinfo) -;; (define-extern sp-kill-particle function) ;; (function sparticle-system sparticle-cpuinfo symbol) +(define-extern sp-kill-particle (function sparticle-system sparticle-cpuinfo symbol)) ;; ;; (define-extern sp-orbiter function) ;; (function sparticle-system sparticle-cpuinfo vector none) ;; (define-extern sp-process-block-2d function) ;; (function sparticle-system int int int int symbol none) ;; (define-extern sp-process-block-3d function) ;; (function sparticle-system int int int int symbol none) @@ -31878,8 +37674,29 @@ ;; entity-table ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *entity-info* array) ;; (array entity-info) -;; (define-extern entity-info-lookup function) ;; (function type entity-info) +;; TODO - was defined in jak3, is referenced in jakx but...wheres is it defined here? +;; but this file is full of jak3 stuff, kleaver/seem/etc +(deftype bubbles-path (process-drawable) + () + :method-count-assert 56 + :size-assert #xf8 + :flag-assert #x38007000f8 + (:methods + (bubbles-path-method-50 () none) ;; 50 + (bubbles-path-method-51 () none) ;; 51 + (bubbles-path-method-52 () none) ;; 52 + (bubbles-path-method-53 () none) ;; 53 + (bubbles-path-method-54 () none) ;; 54 + (bubbles-path-method-55 () none) ;; 55 + ) + ;; (:state-methods + ;; active ;; 20 + ;; die ;; 21 + ;; ) + ) + +(define-extern *entity-info* (array entity-info)) +(define-extern entity-info-lookup (function type entity-info)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; loader ;; @@ -32046,67 +37863,66 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; (define-extern get-current-language function) ;; (function language-enum) -;; (define-extern *setting-control* object) ;; setting-control +(define-extern *setting-control* setting-control) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; mood-tables ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *no-cloud-haze-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *no-cloud-clear-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *no-cloud-smog-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *overcast-fog-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *overcast-clear-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *overcast-rain-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *storm-fog-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *storm-clear-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *storm-rain-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *desert-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *sandstorm-start-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *sandstorm-end-mood-fog-table* object) ;; mood-fog-table -;; (define-extern *no-cloud-mood-color-table* object) ;; mood-color-table -;; (define-extern *overcast-mood-color-table* object) ;; mood-color-table -;; (define-extern *storm-mood-color-table* object) ;; mood-color-table -;; (define-extern *desert-mood-color-table* object) ;; mood-color-table -;; (define-extern *sandstorm-start-mood-color-table* object) ;; mood-color-table -;; (define-extern *sandstorm-end-mood-color-table* object) ;; mood-color-table -;; (define-extern *no-cloud-mood-channel-group* object) ;; mood-channel-group -;; (define-extern *overcast-mood-channel-group* object) ;; mood-channel-group -;; (define-extern *stormy-mood-channel-group* object) ;; mood-channel-group -;; (define-extern *clouds-000* object) ;; mood-clouds -;; (define-extern *clouds-125* object) ;; mood-clouds -;; (define-extern *clouds-250* object) ;; mood-clouds -;; (define-extern *clouds-375* object) ;; mood-clouds -;; (define-extern *clouds-500* object) ;; mood-clouds -;; (define-extern *clouds-625* object) ;; mood-clouds -;; (define-extern *clouds-750* object) ;; mood-clouds -;; (define-extern *clouds-875* object) ;; mood-clouds -;; (define-extern *clouds-1000* object) ;; mood-clouds -;; (define-extern *mood-direction-table* object) ;; mood-direction-table -;; (define-extern *mood-sky-table* object) ;; mood-sky-table -;; (define-extern *mood-interp-table* object) ;; sky-color-day -;; (define-extern init-mood-control function) ;; (function mood-control none) -;; (define-extern *mood-control* mood-control) ;; mood-control +(define-extern *no-cloud-haze-mood-fog-table* mood-fog-table) +(define-extern *no-cloud-clear-mood-fog-table* mood-fog-table) +(define-extern *no-cloud-smog-mood-fog-table* mood-fog-table) +(define-extern *overcast-fog-mood-fog-table* mood-fog-table) +(define-extern *overcast-clear-mood-fog-table* mood-fog-table) +(define-extern *overcast-rain-mood-fog-table* mood-fog-table) +(define-extern *storm-fog-mood-fog-table* mood-fog-table) +(define-extern *storm-clear-mood-fog-table* mood-fog-table) +(define-extern *storm-rain-mood-fog-table* mood-fog-table) +(define-extern *desert-mood-fog-table* mood-fog-table) +(define-extern *sandstorm-start-mood-fog-table* mood-fog-table) +(define-extern *sandstorm-end-mood-fog-table* mood-fog-table) +(define-extern *no-cloud-mood-color-table* mood-color-table) +(define-extern *overcast-mood-color-table* mood-color-table) +(define-extern *storm-mood-color-table* mood-color-table) +(define-extern *desert-mood-color-table* mood-color-table) +(define-extern *sandstorm-start-mood-color-table* mood-color-table) +(define-extern *sandstorm-end-mood-color-table* mood-color-table) +(define-extern *no-cloud-mood-channel-group* mood-channel-group) +(define-extern *overcast-mood-channel-group* mood-channel-group) +(define-extern *stormy-mood-channel-group* mood-channel-group) +(define-extern *clouds-000* mood-clouds) +(define-extern *clouds-125* mood-clouds) +(define-extern *clouds-250* mood-clouds) +(define-extern *clouds-375* mood-clouds) +(define-extern *clouds-500* mood-clouds) +(define-extern *clouds-625* mood-clouds) +(define-extern *clouds-750* mood-clouds) +(define-extern *clouds-875* mood-clouds) +(define-extern *clouds-1000* mood-clouds) +(define-extern *mood-direction-table* mood-direction-table) +(define-extern *mood-sky-table* mood-sky-table) +(define-extern *mood-interp-table* sky-color-day) +(define-extern init-mood-control (function mood-control none)) +(define-extern *mood-control* mood-control) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; mood-tables2 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *override-mood-color-table* object) -;; (define-extern *override-mood-fog-table* object) -;; (define-extern init-override-table function) -;; (define-extern *override-table* mood-table) -;; (define-extern print-mood-tables function) ;; (function none) -;; (define-extern desaturate-mood-colors function) ;; (function float float float none) -;; (define-extern desaturate-mood-fog function) ;; (function (pointer mood-fog-table) float float none) -;; (define-extern *debug-mood-color-table* object) ;; mood-color-table -;; (define-extern *debug-mood-fog-table* object) ;; mood-fog-table +(define-extern *override-mood-color-table* mood-color-table) +(define-extern *override-mood-fog-table* mood-fog-table) +(define-extern init-override-table (function mood-table none)) +(define-extern *override-table* mood-table) +(define-extern print-mood-tables (function none)) +(define-extern desaturate-mood-colors (function float float float none)) +(define-extern desaturate-mood-fog (function (pointer mood-fog-table) float float none)) +(define-extern *debug-mood-color-table* mood-color-table) +(define-extern *debug-mood-fog-table* mood-fog-table) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; mood ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype lava-state (structure) ((lava float :offset-assert 0) ) @@ -32114,38 +37930,37 @@ :size-assert #x4 :flag-assert #x900000004 ) -|# ;; (define-extern set-movie-time! function) ;; (define-extern set-movie-fog! function) ;; (define-extern set-movie-color! function) -;; (define-extern palette-select-special function) ;; (function mood-context-core3 symbol) -;; (define-extern clear-mood-times function) ;; (function mood-context symbol) -;; (define-extern update-mood-itimes function) ;; (function mood-context none) -;; (define-extern update-mood-direction function) ;; (function mood-context-core3 mood-table float float) -;; (define-extern update-mood-exterior function) ;; (function mood-context-core3 mood-table float int object) -;; (define-extern copy-mood-exterior function) ;; (function mood-context symbol) -;; (define-extern copy-mood-exterior-ambi function) ;; (function mood-context symbol none) -;; (define-extern clear-mood-context function) ;; (function mood-context symbol) -;; (define-extern update-mood-interior function) ;; (function mood-context symbol float) -;; (define-extern update-mood-interior-ambient function) ;; (function mood-context symbol float vector) -;; (define-extern update-mood-flames function) ;; (function mood-context int int int float float float float :behavior time-of-day-proc) -;; (define-extern *flash0* array) ;; (array float) -;; (define-extern *flash1* array) ;; (array float) -;; (define-extern *flash2* array) ;; (array float) -;; (define-extern *flash3* array) ;; (array float) -;; (define-extern *flash4* array) ;; (array float) -;; (define-extern *flash5* array) ;; (array float) -;; (define-extern *flash6* array) ;; (array float) -;; (define-extern *flash7* array) ;; (array float) -;; (define-extern update-mood-light function) ;; (function mood-context int int float float float float float float) -;; (define-extern update-mood-lava function) ;; (function mood-context int int float float float float float float) -;; (define-extern update-mood-flicker function) ;; (function mood-context int int none) -;; (define-extern update-mood-florescent function) ;; (function mood-context int int float) -;; (define-extern update-mood-electricity function) ;; (function mood-context int int float float none) -;; (define-extern update-mood-pulse function) ;; (function mood-context int int float float float float none) -;; (define-extern update-mood-strobe function) ;; (function mood-context int int int float float) -;; (define-extern update-mood-caustics function) ;; (function mood-context int float float float float float) +(define-extern palette-select-special (function mood-context-core3 symbol)) +(define-extern clear-mood-times (function mood-context symbol)) +(define-extern update-mood-itimes (function mood-context none)) +(define-extern update-mood-direction (function mood-context-core3 mood-table float float)) +(define-extern update-mood-exterior (function mood-context-core3 mood-table float int object)) +(define-extern copy-mood-exterior (function mood-context symbol)) +(define-extern copy-mood-exterior-ambi (function mood-context symbol none)) +(define-extern clear-mood-context (function mood-context symbol)) +(define-extern update-mood-interior (function mood-context symbol float)) +(define-extern update-mood-interior-ambient (function mood-context symbol float vector)) +(define-extern update-mood-flames (function mood-context int int int float float float float :behavior time-of-day-proc)) +(define-extern *flash0* (array float)) +(define-extern *flash1* (array float)) +(define-extern *flash2* (array float)) +(define-extern *flash3* (array float)) +(define-extern *flash4* (array float)) +(define-extern *flash5* (array float)) +(define-extern *flash6* (array float)) +(define-extern *flash7* (array float)) +(define-extern update-mood-light (function mood-context int int float float float float float float)) +(define-extern update-mood-lava (function mood-context int int float float float float float float)) +(define-extern update-mood-flicker (function mood-context int int none)) +(define-extern update-mood-florescent (function mood-context int int float)) +(define-extern update-mood-electricity (function mood-context int int float float none)) +(define-extern update-mood-pulse (function mood-context int int float float float float none)) +(define-extern update-mood-strobe (function mood-context int int int float float)) +(define-extern update-mood-caustics (function mood-context int float float float float float)) ;; (define-extern override-mood-fog function) ;; (define-extern override-mood-color function) @@ -32196,7 +38011,7 @@ ;; (define-extern update-mood-default function) ;; (function mood-context float int none :behavior time-of-day-proc) ;; (define-extern update-mood-copy-parent function) ;; (function mood-context object int none) ;; (define-extern get-sphere-interp function) ;; (function sphere vector float float float) -;; (define-extern update-mood-default-exterior function) +;; (define-extern update-mood-default-exterior (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern init-mood-mountain function) ;; (function mood-context uint) ;; (define-extern update-mood-mountain function) ;; (function mood-context float int none :behavior time-of-day-proc) @@ -32245,15 +38060,15 @@ ;; (define-extern init-mood-fog-default function) ;; (define-extern init-mood-fog-temple function) ;; (define-extern init-mood-fog-drome function) -;; (define-extern update-mood-default-interior function) ;; (function mood-context none :behavior time-of-day-proc) -;; (define-extern update-mood-default-interior-ambient function) ;; (function mood-context none :behavior time-of-day-proc) +;; (define-extern update-mood-default-interior (function mood-context float int none :behavior time-of-day-proc)) ;; (function mood-context none :behavior time-of-day-proc) +;; (define-extern update-mood-default-interior-ambient (function mood-context float int none :behavior time-of-day-proc)) ;; (function mood-context none :behavior time-of-day-proc) ;; (define-extern update-rustyh-lights function) -;; (define-extern update-mood-rustyh function) +;; (define-extern update-mood-rustyh (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern set-rustyh-effect-light! function) ;; (define-extern update-hiphog-lights function) ;; (function mood-context none) -;; (define-extern update-mood-hiphog function) ;; (function mood-context float none :behavior time-of-day-proc) +;; (define-extern update-mood-hiphog (function mood-context float int none :behavior time-of-day-proc)) ;; (function mood-context float none :behavior time-of-day-proc) ;; (define-extern update-garage-brdroom-lights function) -;; (define-extern update-mood-garage-brdroom function) +;; (define-extern update-mood-garage-brdroom (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern set-garage-switched! function) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -32265,41 +38080,41 @@ ;; weather-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern group-rain-screend-drop object) ;; sparticle-launch-group -;; (define-extern update-snow function) ;; (function float vector vector none) -;; (define-extern birth-func-omega-normal-orient function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) -;; (define-extern birth-func-rain function) ;; (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none) -;; (define-extern check-drop-level-rain function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern check-drop-level-rain2 function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern check-drop-level-splash function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern cam-master-effect function) ;; (function none :behavior camera-master) -;; (define-extern sparticle-track-sun function) ;; (function int sparticle-cpuinfo matrix none) +(define-extern group-rain-screend-drop sparticle-launch-group) +(define-extern update-snow (function float vector vector none)) +(define-extern birth-func-omega-normal-orient (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)) +(define-extern birth-func-rain (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d sparticle-launcher sparticle-launch-state none)) +(define-extern check-drop-level-rain (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern check-drop-level-rain2 (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern check-drop-level-splash (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern cam-master-effect (function none :behavior camera-master)) +(define-extern sparticle-track-sun (function int sparticle-cpuinfo matrix none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; time-of-day ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern time-of-day-effect object) ;; (function none) -;; (define-extern time-of-day-update function) ;; (function none :behavior time-of-day-proc) -;; (define-extern update-counters function) ;; (function float :behavior time-of-day-proc) -;; (define-extern time-of-day-tick state) ;; (state time-of-day-proc) -;; (define-extern init-time-of-day function) ;; (function object :behavior time-of-day-proc) -;; (define-extern start-time-of-day function) ;; (function (pointer time-of-day-proc)) -;; (define-extern time-of-day-setup function) ;; (function symbol symbol) -;; (define-extern time-of-day-interp-colors function) ;; (function (pointer rgba) uint mood-context none) -;; (define-extern time-of-day-interp-colors-scratch function) ;; (function (pointer rgba) time-of-day-palette mood-context none) -;; (define-extern init-time-of-day-context function) ;; (function time-of-day-context symbol) -;; (define-extern set-filter-color! function) ;; (function float float float none) -;; (define-extern tod-madd! function) ;; (function vector vector vector float) -;; (define-extern update-environment-colors function) ;; (function time-of-day-context vector) -;; (define-extern update-time-of-day function) ;; (function time-of-day-context none) -;; (define-extern calc-fade-from-fog function) ;; (function vector float) +(define-extern time-of-day-effect (function none)) +(define-extern time-of-day-update (function none :behavior time-of-day-proc)) +(define-extern update-counters (function float :behavior time-of-day-proc)) +(define-extern time-of-day-tick (state time-of-day-proc)) +(define-extern init-time-of-day (function object :behavior time-of-day-proc)) +(define-extern start-time-of-day (function (pointer time-of-day-proc))) +(define-extern time-of-day-setup (function symbol symbol)) +(define-extern time-of-day-interp-colors (function (pointer rgba) uint mood-context none)) +(define-extern time-of-day-interp-colors-scratch (function (pointer rgba) time-of-day-palette mood-context none)) +(define-extern init-time-of-day-context (function time-of-day-context symbol)) +(define-extern set-filter-color! (function float float float none)) +(define-extern tod-madd! (function vector vector vector float)) +(define-extern update-environment-colors (function time-of-day-context vector)) +(define-extern update-time-of-day (function time-of-day-context none)) +(define-extern calc-fade-from-fog (function vector float)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; sky-data ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *sky-work* object) ;; sky-work +(define-extern *sky-work* sky-work) ;; (define-extern sky-base-polygons object) ;; (inline-array sky-vertex) ;; (define-extern sky-roof-polygons object) ;; (inline-array sky-vertex) ;; (define-extern *cloud-vert-array* object) ;; cloud-vert-array @@ -33107,67 +38922,65 @@ ;; water-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| -(deftype water-control (basic) - ((flags water-flag :offset-assert 4) - (process target :offset-assert 8) ;; guessed by decompiler - (joint-index int32 :offset-assert 12) - (top-y-offset float :offset-assert 16) - (attack-id uint32 :offset-assert 20) - (enter-water-time uint64 :offset-assert 24) ;; time-frame - (wade-time uint64 :offset-assert 32) ;; time-frame - (on-water-time uint64 :offset-assert 40) ;; time-frame - (enter-swim-time uint64 :offset-assert 48) ;; time-frame - (swim-time uint64 :offset-assert 56) ;; time-frame - (base-height meters :offset-assert 64) - (wade-height meters :offset-assert 68) - (swim-height meters :offset-assert 72) - (surface-height meters :offset-assert 76) - (bottom-height meters :offset-assert 80) - (collide-height meters :offset-assert 84) - (height meters :offset-assert 88) - (height-offset float 4 :offset-assert 92) ;; guessed by decompiler - (base-ocean-offset meters :offset-assert 92) - (real-ocean-offset meters :offset-assert 92) - (ocean-offset meters :offset-assert 96) - (bob-offset meters :offset-assert 100) - (align-offset meters :offset-assert 104) - (swim-depth meters :offset-assert 108) - (bob smush-control :inline :offset-assert 112) - (ripple uint64 :offset-assert 144) ;; handle - (ripple-size meters :offset-assert 152) - (wake-size meters :offset-assert 156) - (bottom vector 2 :offset-assert 160) ;; guessed by decompiler - (top vector 2 :offset-assert 192) ;; guessed by decompiler - (enter-water-pos vector :inline :offset-assert 224) - (drip-old-pos vector :inline :offset-assert 240) - (drip-joint-index int32 :offset-assert 256) - (drip-wetness float :offset-assert 260) - (drip-time uint64 :offset-assert 264) ;; time-frame - (drip-speed float :offset-assert 272) - (drip-height meters :offset-assert 276) - (drip-mult float :offset-assert 280) - (distort-time uint64 :offset-assert 288) ;; time-frame - (enter-water-sound uint16 :offset-assert 296) ;; sound-name - (normal vector :inline :offset-assert 304) - ) - :method-count-assert 18 - :size-assert #x140 - :flag-assert #x1200000140 - (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type process int float float float) _type_) - (water-control-method-9 () none) ;; 9 ;; (water-control-method-9 (_type_) none) - (water-control-method-10 () none) ;; 10 ;; (water-control-method-10 (_type_) none) - (water-control-method-11 () none) ;; 11 ;; (start-bobbing! (_type_ float int int) none) - (water-control-method-12 () none) ;; 12 ;; (distance-from-surface (_type_) float) - (water-control-method-13 () none) ;; 13 ;; (spawn-ripples (_type_ float vector int vector symbol) none) - (water-control-method-14 () none) ;; 14 ;; (display-water-marks? (_type_) symbol) - (water-control-method-15 () none) ;; 15 ;; (enter-water (_type_) none) - (water-control-method-16 () none) ;; 16 ;; (water-control-method-16 (_type_) none) - (water-control-method-17 () none) ;; 17 ;; (water-control-method-17 (_type_) none) - ) - ) -|# +;; (deftype water-control (basic) +;; ((flags water-flag :offset-assert 4) +;; (process target :offset-assert 8) ;; guessed by decompiler +;; (joint-index int32 :offset-assert 12) +;; (top-y-offset float :offset-assert 16) +;; (attack-id uint32 :offset-assert 20) +;; (enter-water-time uint64 :offset-assert 24) ;; time-frame +;; (wade-time uint64 :offset-assert 32) ;; time-frame +;; (on-water-time uint64 :offset-assert 40) ;; time-frame +;; (enter-swim-time uint64 :offset-assert 48) ;; time-frame +;; (swim-time uint64 :offset-assert 56) ;; time-frame +;; (base-height meters :offset-assert 64) +;; (wade-height meters :offset-assert 68) +;; (swim-height meters :offset-assert 72) +;; (surface-height meters :offset-assert 76) +;; (bottom-height meters :offset-assert 80) +;; (collide-height meters :offset-assert 84) +;; (height meters :offset-assert 88) +;; (height-offset float 4 :offset-assert 92) ;; guessed by decompiler +;; (base-ocean-offset meters :offset 92) +;; (real-ocean-offset meters :offset 92) +;; (ocean-offset meters :offset 96) +;; (bob-offset meters :offset 100) +;; (align-offset meters :offset 104) +;; (swim-depth meters :offset 108) +;; (bob smush-control :inline :offset-assert 112) +;; (ripple uint64 :offset-assert 144) ;; handle +;; (ripple-size meters :offset-assert 152) +;; (wake-size meters :offset-assert 156) +;; (bottom vector 2 :inline :offset-assert 160) ;; guessed by decompiler +;; (top vector 2 :inline :offset-assert 192) ;; guessed by decompiler +;; (enter-water-pos vector :inline :offset-assert 224) +;; (drip-old-pos vector :inline :offset-assert 240) +;; (drip-joint-index int32 :offset-assert 256) +;; (drip-wetness float :offset-assert 260) +;; (drip-time uint64 :offset-assert 264) ;; time-frame +;; (drip-speed float :offset-assert 272) +;; (drip-height meters :offset-assert 276) +;; (drip-mult float :offset-assert 280) +;; (distort-time uint64 :offset-assert 288) ;; time-frame +;; (enter-water-sound uint16 :offset-assert 296) ;; sound-name +;; (normal vector :inline :offset-assert 304) +;; ) +;; :method-count-assert 18 +;; :size-assert #x140 +;; :flag-assert #x1200000140 +;; (:methods +;; (new (symbol type) _type_) ;; 0 ;; (new (symbol type process int float float float) _type_) +;; (water-control-method-9 () none) ;; 9 ;; (water-control-method-9 (_type_) none) +;; (water-control-method-10 () none) ;; 10 ;; (water-control-method-10 (_type_) none) +;; (water-control-method-11 () none) ;; 11 ;; (start-bobbing! (_type_ float int int) none) +;; (water-control-method-12 () none) ;; 12 ;; (distance-from-surface (_type_) float) +;; (water-control-method-13 () none) ;; 13 ;; (spawn-ripples (_type_ float vector int vector symbol) none) +;; (water-control-method-14 () none) ;; 14 ;; (display-water-marks? (_type_) symbol) +;; (water-control-method-15 () none) ;; 15 ;; (enter-water (_type_) none) +;; (water-control-method-16 () none) ;; 16 ;; (water-control-method-16 (_type_) none) +;; (water-control-method-17 () none) ;; 17 ;; (water-control-method-17 (_type_) none) +;; ) +;; ) #| (deftype water-vol (process-hidden) @@ -33227,7 +39040,7 @@ ;; (define-extern *camera-dummy-velocity* object) (define-extern camera-pos (function vector)) ;; ;; (define-extern camera-vel function) -;; (define-extern math-camera-pos function) ;; (function vector) +(define-extern math-camera-pos (function vector)) ;; (define-extern math-camera-nearest-dist-sq function) ;; (define-extern math-camera-nearest function) ;; (define-extern math-camera-nearest-matrix function) @@ -34066,57 +39879,67 @@ ;; curves ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++curves:loop-behavior +(defenum loop-behavior + :type uint64 + :bitfield #f + (wrap) + (clamp) + (b2) + (use-default) + ) +;; ---curves:loop-behavior + (deftype float-pair (structure) + "Two floats. Specifies one point on a piecewise linear curve." ((first float :offset-assert 0) (second float :offset-assert 4) - (x float :offset-assert 0) - (y float :offset-assert 4) + (x float :offset 0) + (y float :offset 4) ) :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype float-pair-array (inline-array-class) - ((length int32 :offset-assert 4) - (allocated-length int32 :offset-assert 8) - (data float-pair :dynamic :offset-assert 16) ;; guessed by decompiler + "Array of points used to make a piecewise linear curve." + ((data float-pair :dynamic :inline :offset-assert 16) ;; guessed by decompiler ) :method-count-assert 14 :size-assert #x10 :flag-assert #xe00000010 ) -|# -#| (deftype curve2d (basic) + "Interface for evaluating a 2d curve. + The input is a float (x-position) and the output is a float (y-position). + The curve is over (0, 1). Values outside of the range are either clamped + or wrapped depending on the loop-behavior flag." () :method-count-assert 10 :size-assert #x4 :flag-assert #xa00000004 (:methods - (curve2d-method-9 () none) ;; 9 ;; (evaluate (_type_ float loop-behavior) float) + (evaluate (_type_ float loop-behavior) float) ) ) -|# -#| (deftype curve-color (basic) + "Interface for evaluating a color curve. The input is a float, representing + progress through the curve, and the result is a floating point rgba color." () :method-count-assert 10 :size-assert #x4 :flag-assert #xa00000004 (:methods - (curve-color-method-9 () none) ;; 9 ;; (evaluate (_type_ float rgbaf loop-behavior) rgbaf) + (evaluate (_type_ float rgbaf loop-behavior) rgbaf) ) ) -|# -#| (deftype curve2d-piecewise (curve2d) + "Implementation of 2d-curve for a piecewise linear curve. + Not particularly efficient - each evaluation needs to check each point." ((pts float-pair-array :offset-assert 4) ;; guessed by decompiler (default-loop-behavior uint64 :offset-assert 8) ;; loop-behavior ) @@ -34124,14 +39947,15 @@ :size-assert #x10 :flag-assert #xc00000010 (:methods - (curve2d-piecewise-method-10 () none) ;; 10 ;; (allocate! (_type_ int symbol symbol) none) - (curve2d-piecewise-method-11 () none) ;; 11 ;; (curve2d-piecewise-method-11 (_type_) none) + (allocate! "Allocate memory for points." (_type_ int symbol symbol) none) + (curve2d-piecewise-method-11 (_type_) none) ) ) -|# -#| (deftype curve2d-fast (curve2d) + "Implementation of 2d piecewise linear curve which tries to be faster. + While it is faster, it places the huge restriction that you can only have 4 points. + Note that the xs should be negative here." ((xs vector :inline :offset-assert 16) (ys vector :inline :offset-assert 32) (one-over-x-deltas vector :inline :offset-assert 48) @@ -34140,47 +39964,44 @@ :size-assert #x40 :flag-assert #xa00000040 ) -|# -#| (deftype curve-color-fast (curve-color) + "Implementation of color curve which tries to be faster. + While it is faster, it again has the restriction that you only + get 4 piecewise sections." ((xs vector :inline :offset-assert 16) - (ys vector 4 :offset-assert 32) ;; guessed by decompiler + (ys vector 4 :inline :offset-assert 32) ;; guessed by decompiler (one-over-x-deltas vector :inline :offset-assert 96) ) :method-count-assert 10 :size-assert #x70 :flag-assert #xa00000070 ) -|# -#| (deftype color-pair (structure) + "Single section of a piecewise linear color curve. + Unlike the fast version, this stores x values exactly like you'd expect." ((first float :offset-assert 0) (second rgbaf :inline :offset-assert 16) - (x float :offset-assert 0) - (y rgbaf :inline :offset-assert 16) + (x float :offset 0) + (y rgbaf :inline :offset 16) ) :method-count-assert 9 :size-assert #x20 :flag-assert #x900000020 ) -|# -#| (deftype color-pair-array (inline-array-class) - ((length int32 :offset-assert 4) - (allocated-length int32 :offset-assert 8) - (data color-pair :dynamic :offset-assert 16) ;; guessed by decompiler + "Array of points for piecewise linear color curve." + ((data color-pair :dynamic :inline :offset-assert 16) ;; guessed by decompiler ) :method-count-assert 14 :size-assert #x10 :flag-assert #xe00000010 ) -|# -#| (deftype curve-color-piecewise (curve-color) + "Implementation of curve-color." ((pts color-pair-array :offset-assert 4) ;; guessed by decompiler (default-loop-behavior uint64 :offset-assert 8) ;; loop-behavior ) @@ -34188,23 +40009,22 @@ :size-assert #x10 :flag-assert #xb00000010 (:methods - (curve-color-piecewise-method-10 () none) ;; 10 ;; (allocate! (_type_ int symbol symbol) none) + (allocate! "Allocate memory for points." (_type_ int symbol symbol) none) ) ) -|# -;; (define-extern rgbaf-lerp! function) ;; (function rgbaf rgbaf rgbaf float rgbaf) -;; (define-extern evaluate-curve-fast function) ;; (function curve2d-fast float float) -;; (define-extern evaluate-color-curve-fast function) ;; (function curve-color-fast float rgbaf rgbaf) -;; (define-extern rgba<-rgbaf function) ;; (function rgba rgbaf rgba) -;; (define-extern *curve-unity* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-linear-up* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-linear-down* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-linear-up-hold* object) ;; curve2d-piecewise -;; (define-extern *curve-linear-up-down* curve2d-fast) ;; curve2d-fast -;; (define-extern *trail-color-curve-white* curve-color-fast) ;; curve-color-fast -;; (define-extern particle-color-curve-white* curve-color-fast) ;; curve-color-fast -;; (define-extern *trail-color-curve-red* curve-color-fast) ;; curve-color-fast +(define-extern rgbaf-lerp! "Lerp all four components of rgba." (function rgbaf rgbaf rgbaf float rgbaf)) +(define-extern evaluate-curve-fast "Evaluate a curve2d-fast at the given value." (function curve2d-fast float float)) +(define-extern evaluate-color-curve-fast "Evaluate a color-curve-fast at the given value." (function curve-color-fast float rgbaf rgbaf)) +(define-extern rgba<-rgbaf "Convert rgbaf to rgba. Seems like the input rgba's value is not used in any way." (function rgba rgbaf rgba)) +(define-extern *curve-unity* curve2d-fast) +(define-extern *curve-linear-up* curve2d-fast) +(define-extern *curve-linear-down* curve2d-fast) +(define-extern *curve-linear-up-hold* curve2d-piecewise) +(define-extern *curve-linear-up-down* curve2d-fast) +(define-extern *trail-color-curve-white* curve-color-fast) +(define-extern particle-color-curve-white* curve-color-fast) +(define-extern *trail-color-curve-red* curve-color-fast) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ambient ;; @@ -34376,7 +40196,7 @@ ) |# -;; (define-extern *part-tracker-params-default* object) ;; part-tracker-init-params +(define-extern *part-tracker-params-default* part-tracker-init-params) ;; ;; (define-extern *part-tracker-subsampler-params-default* object) ;; part-tracker-subsampler-init-params ;; (define-extern entity-lookup-part-group function) ;; (function entity-actor (pointer string) symbol (pointer sparticle-launch-group)) ;; (define-extern clone-anim-once function) ;; (function handle symbol string none :behavior process-drawable) @@ -34384,7 +40204,7 @@ ;; (define-extern manipy-post function) ;; (function none :behavior manipy) ;; (define-extern manipy-init function) ;; (function vector entity-actor skeleton-group vector manipy-options none :behavior manipy) ;; (define-extern part-tracker-init-base function) ;; (function sparticle-launch-group time-frame (function part-tracker vector) uint process-drawable object none :behavior part-tracker) -;; (define-extern part-tracker-subsampler-init function) ;; (function part-tracker-subsampler-init-params object :behavior part-tracker-subsampler) +;; (define-extern part-tracker-subsampler-init (function part-tracker-subsampler-init-params object :behavior part-tracker-subsampler)) ;; ;; (define-extern part-tracker-init function) ;; (function part-tracker-init-params object :behavior part-tracker) ;; (define-extern part-tracker-track-root function) ;; (function sparticle-system sparticle-cpuinfo vector none) ;; (define-extern lightning-tracker-init function) ;; (function lightning-spec time-frame symbol process-drawable vector vector none :behavior lightning-tracker) @@ -34873,7 +40693,16 @@ ;; particle-curves ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++particle-curves:particle-curve-flags +(defenum particle-curve-flags + :type uint64 + :bitfield #t + (pcf0 0) + (pcf1 1) + (pcf2 2) + ) +;; ---particle-curves:particle-curve-flags + (deftype particle-curve-settings (structure) ((color-start basic :offset-assert 0) (alpha-start basic :offset-assert 4) @@ -34885,25 +40714,24 @@ (a-scalar basic :offset-assert 28) (scale-x-scalar basic :offset-assert 32) (scale-y-scalar basic :offset-assert 36) - (lifetime-base uint64 :offset-assert 40) ;; time-frame - (lifetime-offset uint64 :offset-assert 48) ;; time-frame - (flags uint64 :offset-assert 56) ;; particle-curve-flags + (lifetime-base time-frame :offset-assert 40) ;; time-frame + (lifetime-offset time-frame :offset-assert 48) ;; time-frame + (flags particle-curve-flags :offset-assert 56) ;; particle-curve-flags ) :method-count-assert 9 :size-assert #x40 :flag-assert #x900000040 ) -|# -;; (define-extern birth-func-curve function) ;; (function int sparticle-cpuinfo sparticle-launchinfo none) -;; (define-extern live-func-curve function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern *alpha-fast* curve2d-fast) ;; curve2d-fast -;; (define-extern *unity-fast* curve2d-fast) ;; curve2d-fast -;; (define-extern *ccro* curve-color-fast) ;; curve-color-fast -;; (define-extern *scale-curve* curve2d-fast) ;; curve2d-fast -;; (define-extern *scale-range* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-function-curve-test-curve-settings* object) ;; particle-curve-settings -;; (define-extern ptest function) ;; (function none) +(define-extern birth-func-curve (function int sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern live-func-curve (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern *alpha-fast* curve2d-fast) +(define-extern *unity-fast* curve2d-fast) +(define-extern *ccro* curve-color-fast) +(define-extern *scale-curve* curve2d-fast) +(define-extern *scale-range* curve2d-fast) +(define-extern *part-function-curve-test-curve-settings* particle-curve-settings) ;; +(define-extern ptest (function none)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; light-trails ;; @@ -34983,7 +40811,8 @@ ;; debug-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern sparticle-track-root-money function) ;; (function sparticle-system sparticle-cpuinfo vector none) +(define-extern hud-money type) +(define-extern sparticle-track-root-money (function sparticle-system sparticle-cpuinfo vector none)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; attackable-hash ;; @@ -35071,7 +40900,6 @@ ) |# -#| (deftype rigid-body-impact (structure) ((point vector :inline :offset-assert 0) (normal vector :inline :offset-assert 16) @@ -35086,7 +40914,6 @@ :size-assert #x44 :flag-assert #x900000044 ) -|# #| (deftype rigid-body-control (basic) @@ -35687,7 +41514,7 @@ ;; (define-extern set-blackout-frames function) ;; (function time-frame none) ;; (define-extern blackout function) ;; (function bucket-id none) ;; (define-extern add-blackout function) ;; (function time-frame int int int int int) -;; (define-extern paused? function) ;; (function symbol) +(define-extern paused? (function symbol)) ;; (define-extern movie? (function symbol)) ;; ;; (define-extern scene-select? function) ;; (function symbol) ;; (define-extern demo? function) ;; (function symbol) @@ -36131,25 +41958,25 @@ ;; water-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *range-wsplash-color* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-wsplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-wsplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-wsplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wsplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wsplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wsplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-water-splash-curve-settings* object) ;; particle-curve-settings -;; (define-extern *range-splash-color* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-splash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-splash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-splash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-splash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-splash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-splash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-water-splash-center-curve-settings* object) ;; particle-curve-settings -;; (define-extern *curve-wsplash-small-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wsplash-small-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-water-splash-small-curve-settings* object) ;; particle-curve-settings +(define-extern *range-wsplash-color* curve-color-fast) +(define-extern *range-wsplash-alpha* curve2d-fast) +(define-extern *range-wsplash-scale-x* curve2d-fast) +(define-extern *range-wsplash-scale-y* curve2d-fast) +(define-extern *curve-wsplash-alpha* curve2d-fast) +(define-extern *curve-wsplash-scale-x* curve2d-fast) +(define-extern *curve-wsplash-scale-y* curve2d-fast) +(define-extern *part-water-splash-curve-settings* particle-curve-settings) +(define-extern *range-splash-color* curve-color-fast) +(define-extern *range-splash-alpha* curve2d-fast) +(define-extern *range-splash-scale-x* curve2d-fast) +(define-extern *range-splash-scale-y* curve2d-fast) +(define-extern *curve-splash-alpha* curve2d-fast) +(define-extern *curve-splash-scale-x* curve2d-fast) +(define-extern *curve-splash-scale-y* curve2d-fast) +(define-extern *part-water-splash-center-curve-settings* particle-curve-settings) +(define-extern *curve-wsplash-small-scale-x* curve2d-fast) +(define-extern *curve-wsplash-small-scale-y* curve2d-fast) +(define-extern *part-water-splash-small-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; water ;; @@ -36596,7 +42423,6 @@ ;; headset-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype headset-queue (structure) ((write-offset int32 :offset-assert 0) (read-offset int32 :offset-assert 4) @@ -36604,6 +42430,7 @@ (size int32 :offset-assert 12) (data uint32 :offset-assert 16) ) + :pack-me :method-count-assert 13 :size-assert #x14 :flag-assert #xd00000014 @@ -36614,9 +42441,7 @@ (headset-queue-method-12 () none) ;; 12 ) ) -|# -#| (deftype nci-codec-io-block (structure) ((pcm-buffer uint32 :offset-assert 0) (samples-in-pcm-buffer int16 :offset-assert 4) @@ -36627,50 +42452,42 @@ (nelly-buffer-write-byte-offset uint16 :offset-assert 18) (nelly-buffer-write-bit-offset uint8 :offset-assert 20) ) + :pack-me :method-count-assert 9 :size-assert #x15 :flag-assert #x900000015 ) -|# -#| (deftype headset-decoder (structure) ((client-idx int8 :offset-assert 0) (last-time int32 :offset-assert 4) (cmp-queue headset-queue :inline :offset-assert 8) (io nci-codec-io-block :inline :offset-assert 28) - (scratch UNKNOWN 16 :offset-assert 49) + (scratch uint8 16 :offset-assert 49) (id int8 :offset-assert 65) ) + :allow-misaligned :method-count-assert 9 :size-assert #x42 :flag-assert #x900000042 ) -|# -#| (deftype headset (process) ((flags uint32 :offset-assert 144) - (decoders UNKNOWN 4 :offset-assert 148) - (client-to-decoder UNKNOWN 16 :offset-assert 468) + (decoders headset-decoder 4 :inline :offset-assert 148) + (client-to-decoder uint8 16 :offset-assert 468) (encoder-io nci-codec-io-block :inline :offset-assert 484) (last-speech-time int32 :offset-assert 508) (prev-operation basic :offset-assert 512) (bytes-in-playback-queue int32 :offset-assert 516) (first-send basic :offset-assert 520) (frame-ct int32 :offset-assert 524) - (client-talking UNKNOWN 16 :offset-assert 528) + (client-talking uint8 16 :offset-assert 528) ) :method-count-assert 33 :size-assert #x220 :flag-assert #x2101900220 (:methods - (headset-method-9 () none) ;; 9 - (headset-method-10 () none) ;; 10 - (headset-method-11 () none) ;; 11 - (headset-method-12 () none) ;; 12 - (headset-method-13 () none) ;; 13 - (headset-method-14 () none) ;; 14 (headset-method-15 () none) ;; 15 (headset-method-16 () none) ;; 16 (headset-method-17 () none) ;; 17 @@ -36691,20 +42508,19 @@ (headset-method-32 () none) ;; 32 ) ) -|# -;; (define-extern *headset-input-buffer* object) -;; (define-extern *headset-input-bytes* object) -;; (define-extern *headset-output-buffer* object) -;; (define-extern *headset-output-bytes* object) -;; (define-extern *headset-output-offset* object) -;; (define-extern *headset-cmp-out-buffer* object) -;; (define-extern *headset-cmp-out-frames* object) -;; (define-extern *headset-scratch-buffer* object) -;; (define-extern *headset-mix-buffer* object) -;; (define-extern *headset-decoder-ids* object) -;; (define-extern *headset-decoder-ptrs* array) -;; (define-extern *headset* object) +(define-extern *headset-input-buffer* (pointer uint8)) +(define-extern *headset-input-bytes* int) +(define-extern *headset-output-buffer* (pointer uint8)) +(define-extern *headset-output-bytes* int) +(define-extern *headset-output-offset* int) +(define-extern *headset-cmp-out-buffer* (pointer uint8)) +(define-extern *headset-cmp-out-frames* int) +(define-extern *headset-scratch-buffer* (pointer uint8)) +(define-extern *headset-mix-buffer* (pointer uint8)) +(define-extern *headset-decoder-ids* (pointer int8)) +(define-extern *headset-decoder-ptrs* (array nci-codec-io-block)) +(define-extern *headset* headset) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; stream-media-h ;; @@ -37358,7 +43174,6 @@ ;; net-mgr-medius-cache-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype medius-cached-info (basic) ((medius-id int32 :offset-assert 4) (accessed-time int32 :offset-assert 8) @@ -37374,11 +43189,9 @@ (medius-cached-info-method-11 () none) ;; 11 ) ) -|# -#| (deftype medius-cache (basic) - ((objects basic :offset-assert 4) + ((objects medius-cached-info :offset-assert 4) ) :method-count-assert 15 :size-assert #x8 @@ -37387,14 +43200,12 @@ (medius-cache-method-9 () none) ;; 9 (medius-cache-method-10 () none) ;; 10 (medius-cache-method-11 () none) ;; 11 - (medius-cache-method-12 () none) ;; 12 + (medius-cache-method-12 (_type_) none) ;; 12 (medius-cache-method-13 () none) ;; 13 (medius-cache-method-14 () none) ;; 14 ) ) -|# -#| (deftype medius-cache-index (structure) ((id int32 :offset-assert 0) ) @@ -37406,13 +43217,11 @@ (medius-cache-index-method-10 () none) ;; 10 ) ) -|# -#| (deftype medius-cache-index-array (structure) ((ct int32 :offset-assert 0) (max-ct int32 :offset-assert 4) - (data UNKNOWN :dynamic :offset-assert 8) + (data medius-cache :dynamic :offset-assert 8) ) :method-count-assert 13 :size-assert #x8 @@ -37424,14 +43233,12 @@ (medius-cache-index-array-method-12 () none) ;; 12 ) ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; net-mgr-medius-players-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype net-player-stats (structure) ((stats-version int8 :offset-assert 0) (current-clan int32 :offset-assert 4) @@ -37441,12 +43248,11 @@ :size-assert #xc :flag-assert #x90000000c ) -|# #| (deftype medius-cached-info-player (medius-cached-info) - ((name UNKNOWN 32 :offset-assert 24) - (format-name UNKNOWN 160 :offset-assert 56) + ((name uint8 32 :offset-assert 24) + (format-name uint8 160 :offset-assert 56) (online-state medius-player-online-state :inline :offset-assert 216) (stats net-player-stats :inline :offset-assert 356) (ladder-stats net-player-ladder-stats :inline :offset-assert 368) @@ -37661,7 +43467,6 @@ ;; net-predict-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype net-predictor-simple-state (structure) ((time int32 :offset-assert 0) (pos vector :inline :offset-assert 16) @@ -37673,9 +43478,7 @@ :size-assert #x50 :flag-assert #x900000050 ) -|# -#| (deftype net-predictor-simple (structure) ((last-net net-predictor-simple-state :inline :offset-assert 0) (extrapolated net-predictor-simple-state :inline :offset-assert 80) @@ -37707,16 +43510,13 @@ (net-predictor-simple-method-17 () none) ;; 17 ) ) -|# -#| (deftype net-predictor-sphcol (net-predictor-simple) () :method-count-assert 18 :size-assert #x131 :flag-assert #x1200000131 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -39512,18 +45312,14 @@ ;; net-world-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype vehicle-load-parts (uint64) - ((UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. - (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ( ) :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype net-world-game-options (structure) ((advanced-options game-task-advanced-options :inline :offset-assert 0) ) @@ -39531,11 +45327,9 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype net-world-staging-player (structure) - ((vehicle-load-parts uint64 :offset-assert 0) + ((vehicle-load-parts vehicle-load-parts :offset-assert 0) (vehicle-tuning-info uint32 :offset-assert 8) (vehicle-selection int8 :offset-assert 12) (desired-driver-selection int8 :offset-assert 13) @@ -39553,30 +45347,26 @@ (net-world-staging-player-method-9 () none) ;; 9 ) ) -|# -#| (deftype green-room-stats (structure) ((intro-end-time int32 :offset-assert 0) (scheduled-finish-time int32 :offset-assert 4) - (scores UNKNOWN 6 :offset-assert 8) - (laps UNKNOWN 6 :offset-assert 20) + (scores uint16 6 :offset-assert 8) + (laps uint8 6 :offset-assert 20) ) :method-count-assert 9 :size-assert #x1a :flag-assert #x90000001a ) -|# -#| (deftype net-world-state (structure) - ((players UNKNOWN 24 :offset-assert 0) - (assigned-drivers UNKNOWN 24 :offset-assert 768) + ((players net-world-staging-player 24 :inline :offset-assert 0) + (assigned-drivers uint8 24 :offset-assert 768) (game-creator-ip uint32 :offset-assert 792) (game-creation-time uint32 :offset-assert 796) (game-start-time int32 :offset-assert 800) (total-pause-time int32 :offset-assert 804) - (task-node-name UNKNOWN 32 :offset-assert 808) + (task-node-name uint8 32 :offset-assert 808) (player-ready-flags uint8 :offset-assert 840) (flags int8 :offset-assert 841) (max-humans int8 :offset-assert 842) @@ -39585,7 +45375,7 @@ (ai-slots int8 :offset-assert 845) (vehicle-class int8 :offset-assert 846) (options net-world-game-options :inline :offset-assert 848) - (clan-ids UNKNOWN 2 :offset-assert 856) + (clan-ids uint32 2 :offset-assert 856) (green-room-stats green-room-stats :inline :offset-assert 864) (time-of-day int8 :offset-assert 890) ) @@ -39593,9 +45383,7 @@ :size-assert #x37b :flag-assert #x90000037b ) -|# -#| (deftype net-world (process-nettable) ((net-state net-world-state :inline :offset-assert 192) (is-late-join basic :offset-assert 1084) @@ -39607,8 +45395,8 @@ (task-node uint16 :offset-assert 1106) (task-info basic :offset-assert 1108) (task-node-info basic :offset-assert 1112) - (player-to-vehicle-slot-map UNKNOWN 24 :offset-assert 1116) - (vehicle-slot-to-player-map UNKNOWN 6 :offset-assert 1140) + (player-to-vehicle-slot-map uint8 24 :offset-assert 1116) + (vehicle-slot-to-player-map uint8 6 :offset-assert 1140) ) :method-count-assert 87 :size-assert #x47a @@ -39661,12 +45449,10 @@ (net-world-method-86 () none) ;; 86 ) ) -|# -#| (deftype net-player-name (structure) - ((name UNKNOWN 32 :offset-assert 0) - (format-name UNKNOWN 64 :offset-assert 32) + ((name uint8 32 :offset-assert 0) + (format-name uint8 64 :offset-assert 32) ) :method-count-assert 10 :size-assert #x60 @@ -39675,9 +45461,7 @@ (net-player-name-method-9 () none) ;; 9 ) ) -|# -#| (deftype prebuilt-ai-vehicle (structure) ((levname basic :offset-assert 0) (v-type uint8 :offset-assert 4) @@ -39687,9 +45471,7 @@ :size-assert #x10 :flag-assert #x900000010 ) -|# -#| (deftype net-vehicle (structure) ((id uint32 :offset-assert 0) (name basic :offset-assert 4) @@ -39707,9 +45489,7 @@ :size-assert #x28 :flag-assert #x900000028 ) -|# -#| (deftype net-driver (structure) ((id uint32 :offset-assert 0) (levname basic :offset-assert 4) @@ -39735,56 +45515,15 @@ :size-assert #x44 :flag-assert #x900000044 ) -|# -#| (deftype race-end-cam (process) - ((name basic :offset-assert 0) - (mask process-mask :offset-assert 4) - (clock basic :offset-assert 8) - (view basic :offset-assert 12) - (parent uint32 :offset-assert 16) - (brother uint32 :offset-assert 20) - (child uint32 :offset-assert 24) - (ppointer uint32 :offset-assert 28) - (self basic :offset-assert 32) - (profile-ticks uint32 :offset-assert 36) - (pool basic :offset-assert 40) - (status basic :offset-assert 44) - (pid int32 :offset-assert 48) - (main-thread basic :offset-assert 52) - (top-thread basic :offset-assert 56) - (entity basic :offset-assert 60) - (level basic :offset-assert 64) - (state basic :offset-assert 68) - (prev-state basic :offset-assert 72) - (next-state basic :offset-assert 76) - (state-stack basic :offset-assert 80) - (trans-hook basic :offset-assert 84) - (post-hook basic :offset-assert 88) - (event-hook basic :offset-assert 92) - (allocated-length int32 :offset-assert 96) - (heap-base uint32 :offset-assert 108) - (heap-top uint32 :offset-assert 112) - (heap-cur uint32 :offset-assert 116) - (stack-frame-top basic :offset-assert 120) - (heap kheap :inline :offset-assert 108) - (connection-list connectable :inline :offset-assert 124) - (stack UNKNOWN :dynamic :offset-assert 140) - ) + () :method-count-assert 15 :size-assert #x90 :flag-assert #xf00000090 (:methods - (race-end-cam-method-9 () none) ;; 9 - (race-end-cam-method-10 () none) ;; 10 - (race-end-cam-method-11 () none) ;; 11 - (race-end-cam-method-12 () none) ;; 12 - (race-end-cam-method-13 () none) ;; 13 - (race-end-cam-method-14 () none) ;; 14 ) ) -|# ;; (define-extern *ghost-info-ptr* object) ;; (define-extern net-play-mode-race? function) @@ -39795,13 +45534,13 @@ ;; (define-extern encode-net-world-state function) ;; (define-extern decode-net-world-state function) ;; (define-extern net-world-init-remote function) -;; (define-extern *msg-map-net-world* array) -;; (define-extern *net-process-class-info-net-world* object) +(define-extern *msg-map-net-world* (array symbol)) +(define-extern *net-process-class-info-net-world* net-process-class-info) ;; (define-extern *net-world* object) ;; (define-extern *net-player-names* object) -;; (define-extern *prebuilt-ai-vehicles* array) -;; (define-extern *net-vehicles* array) -;; (define-extern find-vehicle-info function) +(define-extern *prebuilt-ai-vehicles* (array prebuilt-ai-vehicle)) +(define-extern *net-vehicles* (array net-vehicle)) +(define-extern find-vehicle-info (function symbol net-vehicle)) ;; (define-extern find-prebuilt-ai-vehicle function) ;; (define-extern *net-drivers* array) ;; (define-extern get-vehicle-name function) @@ -41778,17 +47517,16 @@ ;; lobby-menu-manager-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype lobby-menu-manager (process) ((game-type uint32 :offset-assert 144) - (menu-handles UNKNOWN 8 :offset-assert 152) + (menu-handles handle 8 :offset-assert 152) (in-focus-index int8 :offset-assert 216) - (menu-handle-1 uint64 :offset-assert 152) - (menu-handle-2 uint64 :offset-assert 160) - (menu-handle-popup uint64 :offset-assert 168) - (menu-handle-background uint64 :offset-assert 224) - (menu-handle-logo-main uint64 :offset-assert 232) - (menu-handle-logo-subtitle uint64 :offset-assert 240) + (menu-handle-1 uint64 :offset 152) + (menu-handle-2 uint64 :offset 160) + (menu-handle-popup uint64 :offset 168) + (menu-handle-background uint64 :offset 224) + (menu-handle-logo-main uint64 :offset 232) + (menu-handle-logo-subtitle uint64 :offset 240) (local-players int32 :offset-assert 248) (refresh-time uint32 :offset-assert 252) (game-connection-type uint8 :offset-assert 256) @@ -41803,7 +47541,7 @@ (current-local-player int8 :offset-assert 328) (spawn-another? basic :offset-assert 332) (state-time uint64 :offset-assert 336) - (has-driver? UNKNOWN 2 :offset-assert 344) + (has-driver? symbol 2 :offset-assert 344) (car-part-type-selected uint8 :offset-assert 352) (cam-string basic :offset-assert 356) (driver-was-taken? basic :offset-assert 360) @@ -41830,12 +47568,6 @@ :size-assert #x1b0 :flag-assert #xc3012001b0 (:methods - (lobby-menu-manager-method-9 () none) ;; 9 - (lobby-menu-manager-method-10 () none) ;; 10 - (lobby-menu-manager-method-11 () none) ;; 11 - (lobby-menu-manager-method-12 () none) ;; 12 - (lobby-menu-manager-method-13 () none) ;; 13 - (lobby-menu-manager-method-14 () none) ;; 14 (lobby-menu-manager-method-15 () none) ;; 15 (lobby-menu-manager-method-16 () none) ;; 16 (lobby-menu-manager-method-17 () none) ;; 17 @@ -42018,7 +47750,6 @@ (lobby-menu-manager-method-194 () none) ;; 194 ) ) -|# ;; (define-extern lobby-vehicle-flag->string function) ;; (define-extern *lobby-reset-mode* object) @@ -42038,13 +47769,13 @@ ;; (define-extern *ready-room-human-ct* object) ;; (define-extern *ready-room-ai-ct* object) ;; (define-extern *game-launched-from-room* object) -;; (define-extern camera-seek-time object) -;; (define-extern real-camera-seek-time object) +(define-extern camera-seek-time float) +(define-extern real-camera-seek-time float) ;; (define-extern set-lobby-camera-seek-time! function) ;; (define-extern *class-mode* object) ;; (define-extern restore-selection-index function) ;; (define-extern *lobby-timetrial-lock-mode* object) -;; (define-extern *vehicle-class-data* array) +;; (define-extern *vehicle-class-data* (array menu-option-info)) ;; (define-extern *vehicle-class* object) ;; (define-extern *time-of-day-data* array) ;; (define-extern *time-of-day-array* object) @@ -42067,7 +47798,6 @@ ;; hostnames ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype ip-to-name-map (structure) ((ip uint32 :offset-assert 0) (mac uint64 :offset-assert 8) @@ -42078,7 +47808,6 @@ :size-assert #x18 :flag-assert #x900000018 ) -|# ;; (define-extern *ip-to-name-map* array) @@ -43327,7 +49056,7 @@ ;; (define-extern *dynamic-patches* object) ;; (define-extern *dynamic-patch-size* object) -;; (define-extern dynamic-patch-hook function) +(define-extern dynamic-patch-hook (function dgo-header kheap uint none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; process-nettable ;; @@ -44000,19 +49729,19 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; (define-extern spartacus-birth-func-set-color function) -;; (define-extern spt-birth-func-spartacus-part-steam function) +;; (define-extern spt-birth-func-spartacus-part-steam (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype helmet (structure) ((node-list basic :offset-assert 0) (draw basic :offset-assert 4) (node-index int8 :offset-assert 8) (scale float :offset-assert 12) ) + :pack-me :method-count-assert 12 :size-assert #x10 :flag-assert #xc00000010 @@ -44022,9 +49751,7 @@ (helmet-method-11 () none) ;; 11 ) ) -|# -#| (deftype driver-initialize-params (structure) ((vehicle basic :offset-assert 0) (level-slot int8 :offset-assert 4) @@ -44034,15 +49761,13 @@ :size-assert #x6 :flag-assert #x900000006 ) -|# -#| (deftype driver-info (structure) ((skel basic :offset-assert 0) (turn-back-anim int8 :offset-assert 4) (turn-front-anim int8 :offset-assert 5) (up-down-anim int8 :offset-assert 6) - (intro-anim UNKNOWN 4 :offset-assert 7) + (intro-anim int8 4 :offset-assert 7) (head-node int8 :offset-assert 11) (arm0-node int8 :offset-assert 12) (arm1-node int8 :offset-assert 13) @@ -44053,51 +49778,15 @@ :size-assert #x18 :flag-assert #x900000018 ) -|# -#| (deftype joint-mod-head (joint-mod) - ((mode uint32 :offset-assert 0) - (process basic :offset-assert 4) - (joint cspace :offset-assert 8) - (target vector :inline :offset-assert 12) - (twist vector :inline :offset-assert 28) - (twist-max vector :inline :offset-assert 44) - (extra-twist degrees :offset-assert 36) - (track-mode track-mode :offset-assert 40) - (look-at-count uint16 :offset-assert 42) - (twist-range-x meters :offset-assert 52) - (twist-range-y meters :offset-assert 56) - (twist-speed-x float :offset-assert 60) - (twist-speed-y float :offset-assert 64) - (trans vector :inline :offset-assert 76) - (smushy-old float :offset-assert 76) - (smushy-off float :offset-assert 80) - (smushyv float :offset-assert 84) - (quat quaternion :inline :offset-assert 92) - (scale vector :inline :offset-assert 108) - (notice-time uint64 :offset-assert 124) - (flex-blend float :offset-assert 132) - (blend float :offset-assert 136) - (old-blend float :offset-assert 140) - (max-dist meters :offset-assert 144) - (ignore-angle degrees :offset-assert 148) - (up uint8 :offset-assert 152) - (nose uint8 :offset-assert 153) - (ear uint8 :offset-assert 154) - (base-joint uint8 :offset-assert 155) - (base-nose uint8 :offset-assert 156) - (shutting-down? basic :offset-assert 160) - (parented-scale? basic :offset-assert 164) - ) + () :method-count-assert 16 :size-assert #xac :flag-assert #x10000000ac ;; field track-mode is likely a value type. ) -|# -#| (deftype driver (process-focusable) ((info driver-info :inline :offset-assert 256) (vehicle uint64 :offset-assert 280) @@ -44107,9 +49796,9 @@ (turn-back-anim int8 :offset-assert 336) (turn-front-anim int8 :offset-assert 337) (up-down-anim int8 :offset-assert 338) - (intro-anim UNKNOWN 4 :offset-assert 339) - (jmod-head basic :offset-assert 344) - (arm-ik UNKNOWN 2 :offset-assert 348) + (intro-anim int8 4 :offset-assert 339) + (jmod-head joint-mod-head :offset-assert 344) + (arm-ik uint32 2 :offset-assert 348) (looking-at uint64 :offset-assert 360) (looking-at-timeout int32 :offset-assert 368) (helmet helmet :inline :offset-assert 372) @@ -44117,20 +49806,19 @@ :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 - (:methods - (driver-method-62 () none) ;; 62 - (driver-method-63 () none) ;; 63 - (driver-method-64 () none) ;; 64 - (driver-method-65 () none) ;; 65 - (driver-method-66 () none) ;; 66 - ) (:state-methods idle ;; 59 intro ;; 60 die ;; 61 ) + (:methods + (driver-method-62 (_type_) none) ;; 62 + (driver-method-63 () none) ;; 63 + (driver-method-64 (_type_) none) ;; 64 + (driver-method-65 (_type_) none) ;; 65 + (driver-method-66 () none) ;; 66 + ) ) -|# ;; (define-extern joint-mod-head-handler function) ;; (define-extern driver-trans function) @@ -44187,322 +49875,276 @@ ;; driver-jak ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-jak (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-ashelin ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-ashelin (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-razer ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-razer (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-klever ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-klever (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-kiera ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-kiera (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-thug-a ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-thug-a (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-thug-b ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-thug-b (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-thug-c ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-thug-c (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-taryn ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-taryn (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-torn ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-torn (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-sig ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-sig (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-ur-86 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-ur-86 (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-kaeden ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-kaeden (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-rayn ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-rayn (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-ratchet ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-ratchet (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-jaka ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-jaka (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-jakb ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-jakb (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-jakc ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-jakc (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-daxter ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-daxter (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-gtblitz ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-gtblitz (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-pecker ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-pecker (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-ximon ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-ximon (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; driver-osmo ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype driver-osmo (driver) () :method-count-assert 67 :size-assert #x184 :flag-assert #x4301000184 ) -|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -44744,7 +50386,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; (define-extern sparticle-vehicle-direction-light function) -;; (define-extern sparticle-sparks-birth function) +(define-extern sparticle-sparks-birth (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; vehicle-debris ;; @@ -44966,7 +50608,6 @@ ;; glist-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype glst-node (structure) ((next glst-node :offset-assert 0) (prev glst-node :offset-assert 4) @@ -44975,9 +50616,7 @@ :size-assert #x8 :flag-assert #x900000008 ) -|# -#| (deftype glst-named-node (glst-node) ((privname string :offset-assert 8) ;; guessed by decompiler ) @@ -44985,9 +50624,7 @@ :size-assert #xc :flag-assert #x90000000c ) -|# -#| (deftype glst-list (structure) ((head glst-node :offset-assert 0) (tail glst-node :offset-assert 4) @@ -44998,35 +50635,34 @@ :size-assert #x10 :flag-assert #x900000010 ) -|# -;; (define-extern glst-next function) ;; (function glst-node glst-node) -;; (define-extern glst-prev function) ;; (function glst-node glst-node) -;; (define-extern glst-head function) ;; (function glst-list glst-node) -;; (define-extern glst-tail function) ;; (function glst-list glst-node) -;; (define-extern glst-end-of-list? function) ;; (function glst-node symbol) -;; (define-extern glst-start-of-list? function) ;; (function glst-node symbol) -;; (define-extern glst-empty? function) ;; (function glst-list symbol) -;; (define-extern glst-node-name function) ;; (function glst-named-node string) -;; (define-extern glst-set-name! function) ;; (function glst-named-node string string) +(define-extern glst-next (function glst-node glst-node)) +(define-extern glst-prev (function glst-node glst-node)) +(define-extern glst-head (function glst-list glst-node)) +(define-extern glst-tail (function glst-list glst-node)) +(define-extern glst-end-of-list? (function glst-node symbol)) +(define-extern glst-start-of-list? (function glst-node symbol)) +(define-extern glst-empty? (function glst-list symbol)) +(define-extern glst-node-name (function glst-named-node string)) +(define-extern glst-set-name! (function glst-named-node string string)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; glist ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern glst-num-elements function) ;; (function glst-list int) -;; (define-extern glst-remove function) ;; (function glst-list glst-node glst-node) -;; (define-extern glst-remove-tail function) ;; (function glst-list glst-node) -;; (define-extern glst-remove-head function) ;; (function glst-list glst-node) -;; (define-extern glst-insert-before function) ;; (function glst-list glst-node glst-node glst-node) -;; (define-extern glst-insert-after function) ;; (function glst-list glst-node glst-node glst-node) -;; (define-extern glst-add-tail function) ;; (function glst-list glst-node glst-node) -;; (define-extern glst-add-head function) ;; (function glst-list glst-node glst-node) -;; (define-extern glst-init-list! function) ;; (function glst-list glst-list) -;; (define-extern glst-find-node-by-name function) ;; (function glst-list string glst-node) -;; (define-extern glst-get-node-by-index function) ;; (function glst-list int glst-node) -;; (define-extern glst-length-of-longest-name function) ;; (function glst-list int) -;; (define-extern glst-get-node-index function) ;; (function glst-list glst-node int) +(define-extern glst-num-elements (function glst-list int)) +(define-extern glst-remove (function glst-list glst-node glst-node)) +(define-extern glst-remove-tail (function glst-list glst-node)) +(define-extern glst-remove-head (function glst-list glst-node)) +(define-extern glst-insert-before (function glst-list glst-node glst-node glst-node)) +(define-extern glst-insert-after (function glst-list glst-node glst-node glst-node)) +(define-extern glst-add-tail (function glst-list glst-node glst-node)) +(define-extern glst-add-head (function glst-list glst-node glst-node)) +(define-extern glst-init-list! (function glst-list glst-list)) +(define-extern glst-find-node-by-name (function glst-list string glst-node)) +(define-extern glst-get-node-by-index (function glst-list int glst-node)) +(define-extern glst-length-of-longest-name (function glst-list int)) +(define-extern glst-get-node-index (function glst-list glst-node int)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; anim-tester ;; @@ -45315,7 +50951,28 @@ ;; manipulator ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++manipulator:manipulator-action +(defenum manipulator-action + :type uint32 + (manip-action0 0) + (manip-action1 1) + (manip-action2 2) + (manip-action3 3) + (manip-action4 4) + (manip-action5 5) + (manip-action6 6) + (manip-action7 7) +) +;; ---manipulator:manipulator-action + +;; +++manipulator:manipulator-mode +(defenum manipulator-mode + :type uint32 + (manip-mode0 0) + (manip-mode1 1) +) +;; ---manipulator:manipulator-mode + (deftype manipulator (structure) ((action manipulator-action :offset-assert 0) ;; guessed by decompiler (mode manipulator-mode :offset-assert 4) ;; guessed by decompiler @@ -45332,23 +50989,127 @@ :size-assert #xb0 :flag-assert #xf000000b0 (:methods - (manipulator-method-9 () none) ;; 9 ;; (set-mode (_type_ manipulator-mode) none) - (manipulator-method-10 () none) ;; 10 ;; (manipulator-method-10 (_type_ vector vector) none) - (manipulator-method-11 () none) ;; 11 ;; (manipulator-method-11 (_type_) none) - (manipulator-method-12 () none) ;; 12 ;; (manipulator-method-12 (_type_ vector) none) - (manipulator-method-13 () none) ;; 13 ;; (manipulator-method-13 (_type_ vector vector) none) - (manipulator-method-14 () none) ;; 14 ;; (manipulator-method-14 (_type_) none) + (set-mode (_type_ manipulator-mode) none) + (manipulator-method-10 (_type_ vector vector) none) + (manipulator-method-11 (_type_) none) ;; 11 ;; (manipulator-method-11 (_type_) none) + (drag-update! (_type_ vector) none) ;; 12 ;; (manipulator-method-12 (_type_ vector) none) + (manipulator-method-13 (_type_ vector vector) none) ;; 13 ;; (manipulator-method-13 (_type_ vector vector) none) + (stop-dragging! (_type_) none) ;; 14 ;; (manipulator-method-14 (_type_) none) ) ) -|# -;; (define-extern draw-axis function) ;; (function vector vector float float rgba none) +(define-extern draw-axis (function vector vector float float rgba symbol)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; editable-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| +;; +++editable-h:editable-command +(defenum editable-command + :type uint32 + (none 0) + (exit 1) + (kill 2) + (select-one 3) + (select-add 4) + (select-remove 5) + (select-toggle 6) + (select-all 7) + (select-none 8) + (select-region 9) + (select-face 10) + (select-prim 11) + (select-current-owner 12) + (select-current-region 13) + (select-current-face 14) + (select-current-prim 15) + (pick-target 16) + (pick-loc 17) + (pick-yes-no 18) + (cancel 19) + (drag-none 20) + (drag-move 21) + (drag-scale 22) + (drag-rotate 23) + (drag-resize 24) + (camera-tumble 25) + (camera-xz 26) + (camera-xy 27) + (camera-rotate 28) + (camera-move 29) + (camera-zoom 30) + (insert-sphere 31) + (insert-point 32) + (insert-sample 33) + (insert-simple-camera 34) + (insert-light 35) + (insert-entity 36) + (insert-face 37) + (insert-plane 38) + (insert-box 39) + (insert-wall 40) + (delete 41) + (copy 42) + (resize 43) + (snap-to-ground 44) + (snap-xz 45) + (snap-y 46) + (snap-rotate 47) + (flip-side 48) + (region-set 49) + (region-new 50) + (edit-plane-set 51) + (edit-plane-clear 52) + (delete-region 53) + (copy-region 54) + (region-add 55) + (save 56) + (load 57) + (update-game 58) + (print-region-info 59) + (refresh-filter 60) + (rotate-level 61) + (translate-y-level 62) + (select-user0 63) + (select-user1 64) + (select-user2 65) + (select-user3 66) + (select-user4 67) + (select-user5 68) + (select-user6 69) + (select-user7 70) + (select-user8 71) + (select-user9 72) + (select-user10 73) + (select-user11 74) + (select-user12 75) + ) +;; ---editable-h:editable-command + +;; +++editable-h:editable-filter +(defenum editable-filter + :type uint32 + :bitfield #t + (none 0) + (unknown 1) + (sound 2) + (part 3) + (user-setting 4) + (cam-setting 5) + (load 6) + (water-command 7) + (camera 8) + (target 9) + (water 10) + (data 11) + (city_vis 12) + (sample 13) + (light 14) + (entity 15) + (selected 16) + ) +;; ---editable-h:editable-filter + (deftype editable-region (basic) ((changed symbol :offset-assert 4) ;; guessed by decompiler (locked symbol :offset-assert 8) ;; guessed by decompiler @@ -45372,9 +51133,27 @@ (editable-region-method-12 () none) ;; 12 ;; (editable-region-method-12 (_type_) editable-filter) ) ) -|# -#| +;; +++editable-h:editable-flag +(defenum editable-flag + :type uint32 + :bitfield #t + (selected) + (no-save) + (orient) + (x) + (y) + (z) + (no-plane-snap) + (no-update) + (mark) + (top-set) + (bot-set) + (changed) + (changed-name) + ) +;; ---editable-h:editable-flag + (deftype editable (basic) ((flags editable-flag :offset-assert 4) (name string :offset-assert 8) ;; guessed by decompiler @@ -45416,9 +51195,8 @@ (editable-method-35 () none) ;; 35 ;; (editable-method-35 (_type_ vector) none) ) ) -|# -#| +(declare-type editable-plane editable) (deftype editable-array (basic) ((allocated-length int32 :offset-assert 4) (length int32 :offset-assert 8) @@ -45441,13 +51219,13 @@ (level uint32 :offset-assert 116) ;; guessed by decompiler (edit-param0 float :offset-assert 120) (data editable :dynamic :offset-assert 124) ;; guessed by decompiler - (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. ) :method-count-assert 20 :size-assert #x7c :flag-assert #x140000007c (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_) + (new (symbol type int) _type_) (editable-array-method-9 () none) ;; 9 ;; (handle-cmd (_type_ editable-command mouse-info object) symbol) (editable-array-method-10 () none) ;; 10 ;; (editable-array-method-10 (_type_ vector int) editable) (editable-array-method-11 () none) ;; 11 ;; (editable-array-method-11 (_type_ vector vector int) none) @@ -45461,139 +51239,108 @@ (editable-array-method-19 () none) ;; 19 ;; (editable-array-method-19 (_type_ string) symbol) ) ) -|# -#| (deftype editable-point (editable) - ((flags editable-flag :offset-assert 0) - (name string :offset-assert 4) ;; guessed by decompiler - (id uint32 :offset-assert 8) - (region editable-region :offset-assert 12) ;; guessed by decompiler - (owner pair :offset-assert 16) ;; guessed by decompiler - (prefix basic :offset-assert 20) - (radius meters :offset-assert 24) - (trans vector :inline :offset-assert 28) + ( + (radius meters :offset-assert 28) + (trans vector :inline :offset-assert 32) ) :method-count-assert 36 :size-assert #x30 :flag-assert #x2400000030 (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector editable-region) _type_) + (new (symbol type vector editable-region) _type_) ) ) -|# -#| (deftype editable-sphere (editable-point) () :method-count-assert 36 :size-assert #x30 :flag-assert #x2400000030 (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector float editable-region) _type_) + (new (symbol type vector float editable-region) _type_) ) ) -|# -#| (deftype editable-sample (editable-point) () :method-count-assert 36 :size-assert #x30 :flag-assert #x2400000030 ) -|# -#| (deftype editable-light (editable-sphere) - ((direction vector :inline :offset-assert 44) - (color vector :inline :offset-assert 60) - (decay-start float :offset-assert 76) - (ambient-point-ratio float :offset-assert 80) - (brightness float :offset-assert 84) - (shadow uint32 :offset-assert 44) - (shadows float 5 :offset-assert 88) ;; guessed by decompiler - (shadow-ambi float :offset-assert 88) - (shadow-dir0 float :offset-assert 92) - (shadow-dir1 float :offset-assert 96) - (shadow-dir2 float :offset-assert 100) - (shadow-dir3 float :offset-assert 104) - (alt-level basic :offset-assert 108) + ((direction vector :inline :offset-assert 48) + (color vector :inline :offset-assert 64) + (decay-start float :offset-assert 80) + (ambient-point-ratio float :offset-assert 84) + (brightness float :offset-assert 88) + (shadow uint32 :offset 48) + (shadows float 5 :offset-assert 92) + (shadow-ambi float :offset 92) + (shadow-dir0 float :offset 96) + (shadow-dir1 float :offset 100) + (shadow-dir2 float :offset 104) + (shadow-dir3 float :offset 108) + (alt-level basic :offset-assert 112) ) :method-count-assert 36 :size-assert #x74 :flag-assert #x2400000074 (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector float editable-region) _type_) + (new (symbol type vector float editable-region) _type_) ) ) -|# -#| (deftype editable-entity (editable-point) - ((angles euler-angles :inline :offset-assert 44) - (idx int32 :offset-assert 60) + ((angles euler-angles :inline :offset-assert 48) + (idx int32 :offset-assert 64) ) :method-count-assert 37 :size-assert #x44 :flag-assert #x2500000044 (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type vector float editable-region) _type_) + (new (symbol type vector float editable-region) _type_) (editable-entity-method-36 () none) ;; 36 ;; (editable-entity-method-36 (_type_) none) ) ) -|# -#| (deftype editable-face (editable) - ((flags editable-flag :offset-assert 0) - (name string :offset-assert 4) ;; guessed by decompiler - (id uint32 :offset-assert 8) - (region editable-region :offset-assert 12) ;; guessed by decompiler - (owner pair :offset-assert 16) ;; guessed by decompiler - (prefix basic :offset-assert 20) - (length int32 :offset-assert 24) - (normal vector :inline :offset-assert 28) - (center vector :inline :offset-assert 44) - (vertex editable-point 6 :offset-assert 60) ;; guessed by decompiler - (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ( + (length int32 :offset-assert 28) + (normal vector :inline :offset-assert 32) + (center vector :inline :offset-assert 48) + (vertex editable-point 6 :offset-assert 64) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. ) :method-count-assert 38 :size-assert #x58 :flag-assert #x2600000058 (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type editable-region) _type_) + (new (symbol type editable-region) _type_) (editable-face-method-36 () none) ;; 36 ;; (editable-face-method-36 (_type_ (inline-array vector)) int) (editable-face-method-37 () none) ;; 37 ;; (editable-face-method-37 (_type_ vector) vector) ) ) -|# -#| (deftype editable-plane (editable) - ((flags editable-flag :offset-assert 0) - (name string :offset-assert 4) ;; guessed by decompiler - (id uint32 :offset-assert 8) - (region editable-region :offset-assert 12) ;; guessed by decompiler - (owner pair :offset-assert 16) ;; guessed by decompiler - (prefix basic :offset-assert 20) - (length int32 :offset-assert 24) - (radius meters :offset-assert 28) - (vertex editable-point 2 :offset-assert 32) ;; guessed by decompiler - (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + ( + (length int32 :offset-assert 28) + (radius meters :offset-assert 32) + (vertex editable-point 2 :offset-assert 36) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. ) :method-count-assert 38 :size-assert #x2c :flag-assert #x260000002c (:methods - (new (symbol type) _type_) ;; 0 ;; (new (symbol type editable-region) _type_) + (new (symbol type editable-region) _type_) (editable-plane-method-36 () none) ;; 36 ;; (editable-plane-method-36 (_type_ (inline-array vector)) int) (editable-plane-method-37 () none) ;; 37 ;; (editable-plane-method-37 (_type_ vector) vector) ) ) -|# -#| (deftype editable-player (process-drawable) ((current editable-array :offset-assert 248) ;; guessed by decompiler (current-command editable-command :offset-assert 252) ;; guessed by decompiler @@ -45608,7 +51355,7 @@ (mouse-pos vector :inline :offset-assert 320) (mouse-end vector :inline :offset-assert 336) (manipulator manipulator :inline :offset-assert 352) - (mouse-box vector 2 :offset-assert 528) ;; guessed by decompiler + (mouse-box vector 2 :inline :offset-assert 528) ;; guessed by decompiler (mouse-hit vector :inline :offset-assert 560) (mouse-normal vector :inline :offset-assert 576) (float-variable float :offset-assert 592) @@ -45627,9 +51374,7 @@ (editable-player-method-53 () none) ;; 53 ) ) -|# -#| (deftype editable-work (basic) ((num-found int16 :offset-assert 4) (last-found int16 :offset-assert 6) @@ -45643,14 +51388,13 @@ :size-assert #x814 :flag-assert #x900000814 ) -|# -;; (define-extern *editable-temp-id* object) ;; int -;; (define-extern *editable-default-name* object) ;; string -;; (define-extern editable-command->string function) ;; (function editable-command string) -;; (define-extern editable-filter->string function) ;; (function editable-filter basic string) -;; (define-extern *editable-work* object) ;; editable-work -;; (define-extern *editable* object) ;; (pointer editable-player) +(define-extern *editable-temp-id* int) +(define-extern *editable-default-name* string) +(define-extern editable-command->string (function editable-command string)) +(define-extern editable-filter->string (function editable-filter basic string)) +(define-extern *editable-work* editable-work) +(define-extern *editable* (pointer editable-player)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; editable ;; @@ -46726,14 +52470,14 @@ ;; menu2-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *range-jakxexplo-color* curve-color-fast) -;; (define-extern *range-jakxexplo-alpha* curve2d-fast) -;; (define-extern *range-jakxexplo-scale-x* curve2d-fast) -;; (define-extern *range-jakxexplo-scale-y* curve2d-fast) -;; (define-extern *curve-jakxexplo-alpha* curve2d-fast) -;; (define-extern *curve-jakxexplo-scale-x* curve2d-fast) -;; (define-extern *curve-jakxexplo-scale-y* curve2d-fast) -;; (define-extern *part-jakx-explosion-texture-curve-settings* object) +(define-extern *range-jakxexplo-color* curve-color-fast) +(define-extern *range-jakxexplo-alpha* curve2d-fast) +(define-extern *range-jakxexplo-scale-x* curve2d-fast) +(define-extern *range-jakxexplo-scale-y* curve2d-fast) +(define-extern *curve-jakxexplo-alpha* curve2d-fast) +(define-extern *curve-jakxexplo-scale-x* curve2d-fast) +(define-extern *curve-jakxexplo-scale-y* curve2d-fast) +(define-extern *part-jakx-explosion-texture-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; menu2 ;; @@ -46763,61 +52507,61 @@ ;; intro-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-func-part-sparks-bits-local function) -;; (define-extern *range-carexplo-cu-dust-color* curve-color-fast) -;; (define-extern *range-carexplo-cu-dust-alpha* curve2d-fast) -;; (define-extern *range-carexplo-cu-dust-scale-x* curve2d-fast) -;; (define-extern *range-carexplo-cu-dust-scale-y* curve2d-fast) -;; (define-extern *curve-carexplo-cu-dust-alpha* curve2d-fast) -;; (define-extern *curve-carexplo-cu-dust-scale-x* curve2d-fast) -;; (define-extern *curve-carexplo-cu-dust-scale-y* curve2d-fast) -;; (define-extern *part-intro-car-explo-closeup-dust-in-curve-settings* object) -;; (define-extern *range-intro-carexplo-cu-color* curve-color-fast) -;; (define-extern *range-intro-carexplo-cu-alpha* curve2d-fast) -;; (define-extern *range-intro-carexplo-cu-scale-x* curve2d-fast) -;; (define-extern *range-intro-carexplo-cu-scale-y* curve2d-fast) -;; (define-extern *curve-intro-carexplo-cu-alpha* curve2d-fast) -;; (define-extern *curve-intro-carexplo-cu-scale-x* curve2d-fast) -;; (define-extern *curve-intro-carexplo-cu-scale-y* curve2d-fast) -;; (define-extern *part-intro-car-explo-closeup-texture-curve-settings* object) -;; (define-extern spt-birth-func-brightness-outro-smoke function) -;; (define-extern *range-carexplo-fnl-dust-color* curve-color-fast) -;; (define-extern *range-carexplo-fnl-dust-alpha* curve2d-fast) -;; (define-extern *range-carexplo-fnl-dust-scale-x* curve2d-fast) -;; (define-extern *range-carexplo-fnl-dust-scale-y* curve2d-fast) -;; (define-extern *curve-carexplo-fnl-dust-alpha* curve2d-fast) -;; (define-extern *curve-carexplo-fnl-dust-scale-x* curve2d-fast) -;; (define-extern *curve-carexplo-fnl-dust-scale-y* curve2d-fast) -;; (define-extern *part-outro-b-final-explosion-dust-in-curve-settings* object) -;; (define-extern *range-outro-carexplo-fnl-color* curve-color-fast) -;; (define-extern *range-outro-carexplo-fnl-alpha* curve2d-fast) -;; (define-extern *range-outro-carexplo-fnl-scale-x* curve2d-fast) -;; (define-extern *range-outro-carexplo-fnl-scale-y* curve2d-fast) -;; (define-extern *curve-outro-carexplo-fnl-alpha* curve2d-fast) -;; (define-extern *curve-outro-carexplo-fnl-scale-x* curve2d-fast) -;; (define-extern *curve-outro-carexplo-fnl-scale-y* curve2d-fast) -;; (define-extern *part-outro-b-final-explosion-texture-curve-settings* object) -;; (define-extern *range-carexplo-dust-color* curve-color-fast) -;; (define-extern *range-carexplo-dust-alpha* curve2d-fast) -;; (define-extern *range-carexplo-dust-scale-x* curve2d-fast) -;; (define-extern *range-carexplo-dust-scale-y* curve2d-fast) -;; (define-extern *curve-carexplo-dust-alpha* curve2d-fast) -;; (define-extern *curve-carexplo-dust-scale-x* curve2d-fast) -;; (define-extern *curve-carexplo-dust-scale-y* curve2d-fast) -;; (define-extern *part-intro-car-explosion-dust-in-curve-settings* object) -;; (define-extern *range-intro-carexplo-color* curve-color-fast) -;; (define-extern *range-intro-carexplo-alpha* curve2d-fast) -;; (define-extern *range-intro-carexplo-scale-x* curve2d-fast) -;; (define-extern *range-intro-carexplo-scale-y* curve2d-fast) -;; (define-extern *curve-intro-carexplo-alpha* curve2d-fast) -;; (define-extern *curve-intro-carexplo-scale-x* curve2d-fast) -;; (define-extern *curve-intro-carexplo-scale-y* curve2d-fast) -;; (define-extern *part-intro-car-explosion-texture-curve-settings* object) -;; (define-extern *range-intro-carexplo2-scale-x* curve2d-fast) -;; (define-extern *range-intro-carexplo2-scale-y* curve2d-fast) -;; (define-extern *part-intro-car-explosion-texture2-curve-settings* object) -;; (define-extern spt-func-part-outro-b-dashboard function) -;; (define-extern spt-func-part-outro-b-dashboard-sparks function) +(define-extern spt-func-part-sparks-bits-local (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern *range-carexplo-cu-dust-color* curve-color-fast) +(define-extern *range-carexplo-cu-dust-alpha* curve2d-fast) +(define-extern *range-carexplo-cu-dust-scale-x* curve2d-fast) +(define-extern *range-carexplo-cu-dust-scale-y* curve2d-fast) +(define-extern *curve-carexplo-cu-dust-alpha* curve2d-fast) +(define-extern *curve-carexplo-cu-dust-scale-x* curve2d-fast) +(define-extern *curve-carexplo-cu-dust-scale-y* curve2d-fast) +(define-extern *part-intro-car-explo-closeup-dust-in-curve-settings* particle-curve-settings) +(define-extern *range-intro-carexplo-cu-color* curve-color-fast) +(define-extern *range-intro-carexplo-cu-alpha* curve2d-fast) +(define-extern *range-intro-carexplo-cu-scale-x* curve2d-fast) +(define-extern *range-intro-carexplo-cu-scale-y* curve2d-fast) +(define-extern *curve-intro-carexplo-cu-alpha* curve2d-fast) +(define-extern *curve-intro-carexplo-cu-scale-x* curve2d-fast) +(define-extern *curve-intro-carexplo-cu-scale-y* curve2d-fast) +(define-extern *part-intro-car-explo-closeup-texture-curve-settings* particle-curve-settings) +(define-extern spt-birth-func-brightness-outro-smoke (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern *range-carexplo-fnl-dust-color* curve-color-fast) +(define-extern *range-carexplo-fnl-dust-alpha* curve2d-fast) +(define-extern *range-carexplo-fnl-dust-scale-x* curve2d-fast) +(define-extern *range-carexplo-fnl-dust-scale-y* curve2d-fast) +(define-extern *curve-carexplo-fnl-dust-alpha* curve2d-fast) +(define-extern *curve-carexplo-fnl-dust-scale-x* curve2d-fast) +(define-extern *curve-carexplo-fnl-dust-scale-y* curve2d-fast) +(define-extern *part-outro-b-final-explosion-dust-in-curve-settings* particle-curve-settings) +(define-extern *range-outro-carexplo-fnl-color* curve-color-fast) +(define-extern *range-outro-carexplo-fnl-alpha* curve2d-fast) +(define-extern *range-outro-carexplo-fnl-scale-x* curve2d-fast) +(define-extern *range-outro-carexplo-fnl-scale-y* curve2d-fast) +(define-extern *curve-outro-carexplo-fnl-alpha* curve2d-fast) +(define-extern *curve-outro-carexplo-fnl-scale-x* curve2d-fast) +(define-extern *curve-outro-carexplo-fnl-scale-y* curve2d-fast) +(define-extern *part-outro-b-final-explosion-texture-curve-settings* particle-curve-settings) +(define-extern *range-carexplo-dust-color* curve-color-fast) +(define-extern *range-carexplo-dust-alpha* curve2d-fast) +(define-extern *range-carexplo-dust-scale-x* curve2d-fast) +(define-extern *range-carexplo-dust-scale-y* curve2d-fast) +(define-extern *curve-carexplo-dust-alpha* curve2d-fast) +(define-extern *curve-carexplo-dust-scale-x* curve2d-fast) +(define-extern *curve-carexplo-dust-scale-y* curve2d-fast) +(define-extern *part-intro-car-explosion-dust-in-curve-settings* particle-curve-settings) +(define-extern *range-intro-carexplo-color* curve-color-fast) +(define-extern *range-intro-carexplo-alpha* curve2d-fast) +(define-extern *range-intro-carexplo-scale-x* curve2d-fast) +(define-extern *range-intro-carexplo-scale-y* curve2d-fast) +(define-extern *curve-intro-carexplo-alpha* curve2d-fast) +(define-extern *curve-intro-carexplo-scale-x* curve2d-fast) +(define-extern *curve-intro-carexplo-scale-y* curve2d-fast) +(define-extern *part-intro-car-explosion-texture-curve-settings* particle-curve-settings) +(define-extern *range-intro-carexplo2-scale-x* curve2d-fast) +(define-extern *range-intro-carexplo2-scale-y* curve2d-fast) +(define-extern *part-intro-car-explosion-texture2-curve-settings* particle-curve-settings) +(define-extern spt-func-part-outro-b-dashboard (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern spt-func-part-outro-b-dashboard-sparks (function sparticle-system sparticle-cpuinfo vector none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; intro-scenes2 ;; @@ -46876,11 +52620,11 @@ ;; race-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-func-part-super-turbo-charges function) -;; (define-extern spt-func-part-red-pellet-charges function) -;; (define-extern spt-func-part-pellet-collect-blue-blurs function) -;; (define-extern spt-func-part-pellet-collect-light-blurs function) -;; (define-extern spt-birth-func-brightness-collectoid-dust function) +(define-extern spt-func-part-super-turbo-charges (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-part-red-pellet-charges (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-part-pellet-collect-blue-blurs (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-part-pellet-collect-light-blurs (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-collectoid-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; race-obs ;; @@ -47097,12 +52841,11 @@ ;; net-anim ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (deftype net-anim-path (uint8) -;; () -;; :flag-assert #x900000001 -;; ) +(deftype net-anim-path (uint8) + () + :flag-assert #x900000001 + ) -#| (deftype net-anim-state (structure) ((timestamp int32 :offset-assert 0) (anim-idx int16 :offset-assert 4) @@ -47118,9 +52861,7 @@ :size-assert #x30 :flag-assert #x900000030 ) -|# -#| (deftype net-anim-result (structure) ((now int32 :offset-assert 0) (moved vector :inline :offset-assert 16) @@ -47140,9 +52881,7 @@ :size-assert #x58 :flag-assert #x900000058 ) -|# -#| (deftype net-anim-control (structure) ((active net-anim-state :inline :offset-assert 0) (result net-anim-result :inline :offset-assert 48) @@ -47157,7 +52896,6 @@ (net-anim-control-method-11 () none) ;; 11 ) ) -|# ;; (define-extern encode-net-anim-state function) ;; (define-extern decode-net-anim-state function) @@ -47217,72 +52955,73 @@ :flag-assert #x900000050 ) -;; (deftype net-enemy (process-focusable) -;; ((flags uint64 :offset-assert 256) -;; (info net-enemy-info :offset-assert 264) -;; (ragdoll-proc uint64 :offset-assert 272) -;; (health float :offset-assert 280) -;; (local-damage float :offset-assert 284) -;; (killed-by int8 :offset-assert 288) -;; (last-health-send-time int32 :offset-assert 292) -;; (net-anim net-anim-control :inline :offset-assert 304) -;; (minimap connection-minimap :offset-assert 444) -;; (transitions net-enemy-transition 3 :inline :offset-assert 448) -;; (transition-ct int32 :offset-assert 688) -;; (last-attack-time int32 :offset-assert 692) -;; (vehicle-penetrate-time int32 :offset-assert 696) -;; (paths basic :offset-assert 700) -;; (pending-impulse-valid basic :offset-assert 704) -;; (pending-impulse rigid-body-impact :inline :offset-assert 720) -;; (last-transition-time int32 :offset-assert 788) -;; (last-attack-id int32 :offset-assert 792) -;; (vel-for-ragdoll vector :inline :offset-assert 800) -;; (nav-poly nav-poly :offset-assert 816) -;; (snap-flags uint64 :offset-assert 824) -;; (prev-pos vector :inline :offset-assert 832) -;; (forward-path-vector vector :inline :offset-assert 848) -;; (enemy-link list-link :inline :offset-assert 864) -;; ) -;; :method-count-assert 87 -;; :size-assert #x368 -;; :flag-assert #x5702e00368 -;; (:methods -;; (net-enemy-method-59 () none) ;; 59 -;; (net-enemy-method-60 () none) ;; 60 -;; (net-enemy-method-61 () none) ;; 61 -;; (net-enemy-method-62 () none) ;; 62 -;; (net-enemy-method-63 () none) ;; 63 -;; (net-enemy-method-64 () none) ;; 64 -;; (net-enemy-method-65 () none) ;; 65 -;; (net-enemy-method-66 () none) ;; 66 -;; (net-enemy-method-67 () none) ;; 67 -;; (net-enemy-method-68 () none) ;; 68 -;; (net-enemy-method-69 () none) ;; 69 -;; (net-enemy-method-70 () none) ;; 70 -;; (net-enemy-method-71 () none) ;; 71 -;; (net-enemy-method-72 () none) ;; 72 -;; (net-enemy-method-73 () none) ;; 73 -;; (net-enemy-method-74 () none) ;; 74 -;; (net-enemy-method-75 () none) ;; 75 -;; (net-enemy-method-76 () none) ;; 76 -;; (net-enemy-method-77 () none) ;; 77 -;; (net-enemy-method-78 () none) ;; 78 -;; (net-enemy-method-79 () none) ;; 79 -;; (net-enemy-method-80 () none) ;; 80 -;; (net-enemy-method-81 () none) ;; 81 -;; (net-enemy-method-82 () none) ;; 82 -;; (net-enemy-method-83 () none) ;; 83 -;; (net-enemy-method-84 () none) ;; 84 -;; (net-enemy-method-85 () none) ;; 85 -;; (net-enemy-method-86 () none) ;; 86 -;; ) -;; ) +(deftype net-enemy (process-focusable) + ((flags uint64 :offset-assert 256) + (info net-enemy-info :offset-assert 264) + (ragdoll-proc uint64 :offset-assert 272) + (health float :offset-assert 280) + (local-damage float :offset-assert 284) + (killed-by int8 :offset-assert 288) + (last-health-send-time int32 :offset-assert 292) + (net-anim net-anim-control :inline :offset-assert 304) + (minimap connection-minimap :offset-assert 444) + (transitions net-enemy-transition 3 :inline :offset-assert 448) + (transition-ct int32 :offset-assert 688) + (last-attack-time int32 :offset-assert 692) + (vehicle-penetrate-time int32 :offset-assert 696) + (paths basic :offset-assert 700) + (pending-impulse-valid basic :offset-assert 704) + (pending-impulse rigid-body-impact :inline :offset-assert 720) + (last-transition-time int32 :offset-assert 788) + (last-attack-id int32 :offset-assert 792) + (vel-for-ragdoll vector :inline :offset-assert 800) + (nav-poly nav-poly :offset-assert 816) + (snap-flags uint64 :offset-assert 824) + (prev-pos vector :inline :offset-assert 832) + (forward-path-vector vector :inline :offset-assert 848) + (enemy-link list-link :inline :offset-assert 864) + ) + :method-count-assert 87 + :size-assert #x368 + :flag-assert #x5702e00368 + (:methods + (net-enemy-method-59 () none) ;; 59 + (net-enemy-method-60 () none) ;; 60 + (net-enemy-method-61 () none) ;; 61 + (net-enemy-method-62 () none) ;; 62 + (net-enemy-method-63 () none) ;; 63 + (net-enemy-method-64 () none) ;; 64 + (net-enemy-method-65 () none) ;; 65 + (net-enemy-method-66 () none) ;; 66 + (net-enemy-method-67 () none) ;; 67 + (net-enemy-method-68 () none) ;; 68 + (net-enemy-method-69 () none) ;; 69 + (net-enemy-method-70 () none) ;; 70 + (net-enemy-method-71 () none) ;; 71 + (net-enemy-method-72 () none) ;; 72 + (net-enemy-method-73 () none) ;; 73 + (net-enemy-method-74 () none) ;; 74 + (net-enemy-method-75 () none) ;; 75 + (net-enemy-method-76 () none) ;; 76 + (net-enemy-method-77 () none) ;; 77 + (net-enemy-method-78 () none) ;; 78 + (net-enemy-method-79 () none) ;; 79 + (net-enemy-method-80 () none) ;; 80 + (net-enemy-method-81 () none) ;; 81 + (net-enemy-method-82 () none) ;; 82 + (net-enemy-method-83 () none) ;; 83 + (net-enemy-method-84 () none) ;; 84 + (net-enemy-method-85 () none) ;; 85 + (net-enemy-method-86 () none) ;; 86 + ) + ) -;; (define-extern *tmp-construct-transition* object) -;; (define-extern net-enemy-init-remote function) -;; (define-extern *msg-map-net-enemy* array) -;; (define-extern *net-process-class-info-net-enemy* object) -;; (define-extern *net-enemy-list* object) +(define-extern *tmp-construct-transition* net-enemy-transition) +;; TODO - unknown type passed to process-nettable::35 +(define-extern net-enemy-init-remote (function int none :behavior process-focusable)) +(define-extern *msg-map-net-enemy* (array symbol)) +(define-extern *net-process-class-info-net-enemy* net-process-class-info) +(define-extern *net-enemy-list* linked-list) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; net-powerup ;; @@ -50278,40 +56017,40 @@ ;; wvehicle-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern birth-func-set-pos-vel function) +(define-extern birth-func-set-pos-vel (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none)) ;; (define-extern birth-func-adopt-velocity-vehicle function) ;; (define-extern sparticle-adopt-accel-vehicle function) -;; (define-extern *range-carexplo-dust-color* curve-color-fast) -;; (define-extern *range-carexplo-dust-alpha* curve2d-fast) -;; (define-extern *range-carexplo-dust-scale-x* curve2d-fast) -;; (define-extern *range-carexplo-dust-scale-y* curve2d-fast) -;; (define-extern *curve-carexplo-dust-alpha* curve2d-fast) -;; (define-extern *curve-carexplo-dust-scale-x* curve2d-fast) -;; (define-extern *curve-carexplo-dust-scale-y* curve2d-fast) -;; (define-extern *part-car-explosion-dust-in-curve-settings* object) -;; (define-extern *range-carexplo-color* curve-color-fast) -;; (define-extern *range-carexplo-alpha* curve2d-fast) -;; (define-extern *range-carexplo-scale-x* curve2d-fast) -;; (define-extern *range-carexplo-scale-y* curve2d-fast) -;; (define-extern *curve-carexplo-alpha* curve2d-fast) -;; (define-extern *curve-carexplo-scale-x* curve2d-fast) -;; (define-extern *curve-carexplo-scale-y* curve2d-fast) -;; (define-extern *part-car-explosion-texture-curve-settings* object) -;; (define-extern sparticle-motion-blur-dirt function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern spt-birth-func-brightness-buggy-rocks function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) -;; (define-extern spt-birth-func-part-buggy-rocks function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none) -;; (define-extern spt-birth-func-part-dbuggy-debris function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none) -;; (define-extern spt-birth-func-brightness-buggy-snow function) -;; (define-extern spt-birth-func-part-wv-snow function) -;; (define-extern spt-birth-func-part-wv-grass function) -;; (define-extern *range-wv-wsplash-color* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-wv-wsplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-wv-wsplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-wv-wsplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wv-wsplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wv-wsplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wv-wsplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-wv-water-splash-curve-settings* object) ;; particle-curve-settings +(define-extern *range-carexplo-dust-color* curve-color-fast) +(define-extern *range-carexplo-dust-alpha* curve2d-fast) +(define-extern *range-carexplo-dust-scale-x* curve2d-fast) +(define-extern *range-carexplo-dust-scale-y* curve2d-fast) +(define-extern *curve-carexplo-dust-alpha* curve2d-fast) +(define-extern *curve-carexplo-dust-scale-x* curve2d-fast) +(define-extern *curve-carexplo-dust-scale-y* curve2d-fast) +(define-extern *part-car-explosion-dust-in-curve-settings* particle-curve-settings) +(define-extern *range-carexplo-color* curve-color-fast) +(define-extern *range-carexplo-alpha* curve2d-fast) +(define-extern *range-carexplo-scale-x* curve2d-fast) +(define-extern *range-carexplo-scale-y* curve2d-fast) +(define-extern *curve-carexplo-alpha* curve2d-fast) +(define-extern *curve-carexplo-scale-x* curve2d-fast) +(define-extern *curve-carexplo-scale-y* curve2d-fast) +(define-extern *part-car-explosion-texture-curve-settings* particle-curve-settings) +(define-extern sparticle-motion-blur-dirt (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern spt-birth-func-brightness-buggy-rocks (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-part-buggy-rocks (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none)) +(define-extern spt-birth-func-part-dbuggy-debris (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none)) +(define-extern spt-birth-func-brightness-buggy-snow (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-part-wv-snow (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none)) +(define-extern spt-birth-func-part-wv-grass (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none)) +(define-extern *range-wv-wsplash-color* curve-color-fast) ;; curve-color-fast +(define-extern *range-wv-wsplash-alpha* curve2d-fast) ;; curve2d-fast +(define-extern *range-wv-wsplash-scale-x* curve2d-fast) ;; curve2d-fast +(define-extern *range-wv-wsplash-scale-y* curve2d-fast) ;; curve2d-fast +(define-extern *curve-wv-wsplash-alpha* curve2d-fast) ;; curve2d-fast +(define-extern *curve-wv-wsplash-scale-x* curve2d-fast) ;; curve2d-fast +(define-extern *curve-wv-wsplash-scale-y* curve2d-fast) ;; curve2d-fast +(define-extern *part-wv-water-splash-curve-settings* particle-curve-settings) ;; particle-curve-settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; wvehicle-weapons-part ;; @@ -50320,7 +56059,7 @@ ;; (define-extern birth-func-explosion-adopt-velocity function) ;; (define-extern birth-func-explosion-aligned-velocity function) ;; (define-extern birth-func-vws-adopt-velocity function) -;; (define-extern spt-birth-func-brightness-oil function) +;; (define-extern spt-birth-func-brightness-oil (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;; (define-extern spt-func-part-oil-emit function) ;; (define-extern spt-func-part-oil-emit-sparkle function) ;; (define-extern check-scorp-shell-level1 function) ;; (function sparticle-system sparticle-cpuinfo vector none) @@ -50357,7 +56096,7 @@ ;; (define-extern *wasted-missile-origin?* object) ;; (define-extern birth-func-wasted-missile function) ;; (define-extern birth-func-copy-rotate-z-to-rot-z function) -;; (define-extern spt-birth-func-b-part-turbo-suppressed function) +;; (define-extern spt-birth-func-b-part-turbo-suppressed (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;; (define-extern spt-func-part-turbo-suppressed function) ;; (define-extern birth-func-adopt-velocity function) ;; (define-extern sparticle-adopt-accel function) @@ -52216,14 +57955,14 @@ ;; atoll-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *range-atoll-splash-color* curve-color-fast) -;; (define-extern *range-atoll-splash-alpha* curve2d-fast) -;; (define-extern *range-atoll-splash-scale-x* curve2d-fast) -;; (define-extern *range-atoll-splash-scale-y* curve2d-fast) -;; (define-extern *curve-atoll-splash-alpha* curve2d-fast) -;; (define-extern *curve-atoll-splash-scale-x* curve2d-fast) -;; (define-extern *curve-atoll-splash-scale-y* curve2d-fast) -;; (define-extern *part-atoll-ocean-splash-curve-settings* object) +(define-extern *range-atoll-splash-color* curve-color-fast) +(define-extern *range-atoll-splash-alpha* curve2d-fast) +(define-extern *range-atoll-splash-scale-x* curve2d-fast) +(define-extern *range-atoll-splash-scale-y* curve2d-fast) +(define-extern *curve-atoll-splash-alpha* curve2d-fast) +(define-extern *curve-atoll-splash-scale-x* curve2d-fast) +(define-extern *curve-atoll-splash-scale-y* curve2d-fast) +(define-extern *part-atoll-ocean-splash-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; atoll-obs ;; @@ -53062,17 +58801,17 @@ ;; canyon-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-part-canyon-leaf-fall function) -;; (define-extern spt-birth-func-part-canyon-leaf-fall function) -;; (define-extern spt-canyon-check-ground-lie-flat function) -;; (define-extern *range-cynsplash-color* curve-color-fast) -;; (define-extern *range-cynsplash-alpha* curve2d-fast) -;; (define-extern *range-cynsplash-scale-x* curve2d-fast) -;; (define-extern *range-cynsplash-scale-y* curve2d-fast) -;; (define-extern *curve-cynsplash-alpha* curve2d-fast) -;; (define-extern *curve-cynsplash-scale-x* curve2d-fast) -;; (define-extern *curve-cynsplash-scale-y* curve2d-fast) -;; (define-extern *part-canyon-ocean-splash-curve-settings* object) +(define-extern spt-birth-func-brightness-part-canyon-leaf-fall (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-part-canyon-leaf-fall (function sparticle-system sparticle-cpuinfo sparticle-launchinfo object object none)) +(define-extern spt-canyon-check-ground-lie-flat (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern *range-cynsplash-color* curve-color-fast) +(define-extern *range-cynsplash-alpha* curve2d-fast) +(define-extern *range-cynsplash-scale-x* curve2d-fast) +(define-extern *range-cynsplash-scale-y* curve2d-fast) +(define-extern *curve-cynsplash-alpha* curve2d-fast) +(define-extern *curve-cynsplash-scale-x* curve2d-fast) +(define-extern *curve-cynsplash-scale-y* curve2d-fast) +(define-extern *part-canyon-ocean-splash-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; canyon-effects ;; @@ -53240,21 +58979,21 @@ ;; cliffs-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-func-birth-on-height-die-drip function) -;; (define-extern part-cliffs-bird1-path function) -;; (define-extern part-cliffs-bird2-path function) -;; (define-extern part-cliffs-bird3-path function) -;; (define-extern part-cliffs-bird4-path function) -;; (define-extern part-cliffs-bird5-path function) -;; (define-extern part-cliffs-bird6-path function) -;; (define-extern part-cliffs-bird7-path function) -;; (define-extern part-cliffs-bird8-path function) -;; (define-extern part-cliffs-bird9-path function) -;; (define-extern part-cliffs-bird10-path function) -;; (define-extern part-wascitya-fly1-path function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern part-wascitya-fly2-path function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern part-wascitya-fly3-path function) ;; (function sparticle-system sparticle-cpuinfo vector none) -;; (define-extern spt-func-part-cliffs-drops-splash function) +(define-extern spt-func-birth-on-height-die-drip (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern part-cliffs-bird1-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird2-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird3-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird4-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird5-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird6-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird7-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird8-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird9-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-cliffs-bird10-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-wascitya-fly1-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-wascitya-fly2-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-wascitya-fly3-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern spt-func-part-cliffs-drops-splash (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; cliffs-obs ;; @@ -53282,8 +59021,8 @@ ;; common-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-cliffs-fence-dust function) -;; (define-extern spt-birth-func-brightness-cliffs-fence-splinters function) +(define-extern spt-birth-func-brightness-cliffs-fence-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-cliffs-fence-splinters (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; common-obs ;; @@ -53392,7 +59131,7 @@ ;; (define-extern *raptor-ragdoll-info* object) ;; (define-extern *raptor-enemy-info* object) -;; (define-extern spt-birth-func-brightness-raptor-blood function) +;; (define-extern spt-birth-func-brightness-raptor-blood (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; net-training ;; @@ -53642,10 +59381,10 @@ ;; coliseum-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-coliseum-statue-dust function) -;; (define-extern spt-birth-func-brightness-coliseum-bridge-dust function) -;; (define-extern spt-birth-func-brightness-coliseum-bridge-leg-dust function) -;; (define-extern spt-birth-func-brightness-coliseum-hanger-dust function) +(define-extern spt-birth-func-brightness-coliseum-statue-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-coliseum-bridge-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-coliseum-bridge-leg-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-coliseum-hanger-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; coliseum-obs ;; @@ -54144,7 +59883,7 @@ ;; credits-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *credits-ids* array) ;; (array text-id) +(define-extern *credits-ids* (array text-id)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; credits-cloth ;; @@ -54335,14 +60074,14 @@ ) |# -;; (define-extern update-mood-docks function) +;; (define-extern update-mood-docks (function mood-context float int none :behavior time-of-day-proc)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; docks-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-func-birth-on-height-die-drops function) -;; (define-extern spt-func-part-docks-drops-splash function) +(define-extern spt-func-birth-on-height-die-drops (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-part-docks-drops-splash (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; docks-obs ;; @@ -54376,24 +60115,24 @@ ;; kras-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-func-birth-on-die1 function) -;; (define-extern spt-func-birth-on-die2 function) -;; (define-extern spt-func-birth-on-die3 function) -;; (define-extern spt-func-birth-on-die4 function) -;; (define-extern spt-func-rocket function) -;; (define-extern *firework-colors* object) -;; (define-extern *firework-vec* object) -;; (define-extern *firework-origin?* object) -;; (define-extern birth-func-firework function) -;; (define-extern spt-func-part-firework1-burst function) -;; (define-extern *range-osplash-color* curve-color-fast) -;; (define-extern *range-osplash-alpha* curve2d-fast) -;; (define-extern *range-osplash-scale-x* curve2d-fast) -;; (define-extern *range-osplash-scale-y* curve2d-fast) -;; (define-extern *curve-osplash-alpha* curve2d-fast) -;; (define-extern *curve-osplash-scale-x* curve2d-fast) -;; (define-extern *curve-osplash-scale-y* curve2d-fast) -;; (define-extern *part-water-ocean-splash-curve-settings* object) +(define-extern spt-func-birth-on-die1 (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-birth-on-die2 (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-birth-on-die3 (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-birth-on-die4 (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-rocket (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern *firework-colors* (pointer rgba)) +(define-extern *firework-vec* vector) +(define-extern *firework-origin?* symbol) +(define-extern birth-func-firework (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-part-firework1-burst (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern *range-osplash-color* curve-color-fast) +(define-extern *range-osplash-alpha* curve2d-fast) +(define-extern *range-osplash-scale-x* curve2d-fast) +(define-extern *range-osplash-scale-y* curve2d-fast) +(define-extern *curve-osplash-alpha* curve2d-fast) +(define-extern *curve-osplash-scale-x* curve2d-fast) +(define-extern *curve-osplash-scale-y* curve2d-fast) +(define-extern *part-water-ocean-splash-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; kras-obs ;; @@ -54589,7 +60328,7 @@ ) |# -;; (define-extern update-mood-drome function) +;; (define-extern update-mood-drome (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern *dromec-water-texture-anim-array* texture-anim-array) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -54647,14 +60386,14 @@ ;; desisle-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *range-displash-color* curve-color-fast) -;; (define-extern *range-displash-alpha* curve2d-fast) -;; (define-extern *range-displash-scale-x* curve2d-fast) -;; (define-extern *range-displash-scale-y* curve2d-fast) -;; (define-extern *curve-displash-alpha* curve2d-fast) -;; (define-extern *curve-displash-scale-x* curve2d-fast) -;; (define-extern *curve-displash-scale-y* curve2d-fast) -;; (define-extern *part-desisle-ocean-splash-curve-settings* object) +(define-extern *range-displash-color* curve-color-fast) +(define-extern *range-displash-alpha* curve2d-fast) +(define-extern *range-displash-scale-x* curve2d-fast) +(define-extern *range-displash-scale-y* curve2d-fast) +(define-extern *curve-displash-alpha* curve2d-fast) +(define-extern *curve-displash-scale-x* curve2d-fast) +(define-extern *curve-displash-scale-y* curve2d-fast) +(define-extern *part-desisle-ocean-splash-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; des-cactus ;; @@ -54750,10 +60489,10 @@ ) |# -;; (define-extern update-mood-desert function) ;; (function mood-context float int none :behavior time-of-day-proc) +;; (define-extern update-mood-desert (function mood-context float int none :behavior time-of-day-proc)) ;; (function mood-context float int none :behavior time-of-day-proc) ;; (define-extern init-mood-desertg function) ;; (function mood-context float) -;; (define-extern update-mood-desertg function) ;; (function mood-context float int none :behavior time-of-day-proc) -;; (define-extern update-mood-deswalk function) ;; (function mood-context float int none :behavior time-of-day-proc) +;; (define-extern update-mood-desertg (function mood-context float int none :behavior time-of-day-proc)) ;; (function mood-context float int none :behavior time-of-day-proc) +;; (define-extern update-mood-deswalk (function mood-context float int none :behavior time-of-day-proc)) ;; (function mood-context float int none :behavior time-of-day-proc) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; desert-ocean ;; @@ -54770,91 +60509,91 @@ ;; desert-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *range-color-desert-hanging-fire-flame* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-alpha-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-hanging-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-hanging-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *r-curve-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *g-curve-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *b-curve-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-alpha-desert-hanging-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-hanging-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-hanging-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-desert-hanging-fire-flame-curve-settings* object) ;; particle-curve-settings -;; (define-extern *range-color-desert-bowl-fire-flame* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-alpha-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *r-curve-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *g-curve-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *b-curve-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-alpha-desert-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-desert-bowl-fire-flame-curve-settings* object) ;; particle-curve-settings -;; (define-extern *range-color-desert-small-bowl-fire-flame* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-alpha-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-small-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-small-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *r-curve-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *g-curve-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *b-curve-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-alpha-desert-small-bowl-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-small-bowl-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-small-bowl-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-desert-small-bowl-fire-flame-curve-settings* object) ;; particle-curve-settings -;; (define-extern *scenecamera-fog-update?* object) ;; symbol -;; (define-extern scenecamera-fog-update function) ;; (function none) -;; (define-extern birth-func-desert-beacon-set-accel function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) -;; (define-extern *range-wrsplash-color* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-wrsplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-wrsplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-wrsplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wrsplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wrsplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-wrsplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-water-rocks-splash-curve-settings* object) ;; particle-curve-settings -;; (define-extern *range-color-firepit-fire-flame* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-alpha-firepit-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-firepit-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-firepit-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *r-curve-firepit-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *g-curve-firepit-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *b-curve-firepit-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-alpha-firepit-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-firepit-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-firepit-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-firepit-fire-flame-curve-settings* object) ;; particle-curve-settings -;; (define-extern *stronghold-range-color-flame* curve-color-fast) ;; curve-color-fast -;; (define-extern *stronghold-range-alpha-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *stronghold-range-scale-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *stronghold-range-scale-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *r-stronghold-curve-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *g-stronghold-curve-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *b-stronghold-curve-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *stronghold-curve-alpha-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *stronghold-curve-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *stronghold-curve-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-stronghold-torchfire-flame-curve-settings* object) ;; particle-curve-settings -;; (define-extern *range-color-desert-bollard-fire-flame* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-alpha-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-bollard-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-desert-bollard-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *r-curve-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *g-curve-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *b-curve-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-alpha-desert-bollard-fire-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-bollard-fire-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-desert-bollard-fire-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-desert-bollard-fire-flame-curve-settings* object) ;; particle-curve-settings -;; (define-extern *range-dessplash-color* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-dessplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-dessplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-dessplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-dessplash-alpha* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-dessplash-scale-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-dessplash-scale-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-desert-water-rocks-splash-curve-settings* object) ;; particle-curve-settings +(define-extern *range-color-desert-hanging-fire-flame* curve-color-fast) +(define-extern *range-alpha-desert-hanging-fire-flame* curve2d-fast) +(define-extern *range-scale-desert-hanging-fire-flame-x* curve2d-fast) +(define-extern *range-scale-desert-hanging-fire-flame-y* curve2d-fast) +(define-extern *r-curve-desert-hanging-fire-flame* curve2d-fast) +(define-extern *g-curve-desert-hanging-fire-flame* curve2d-fast) +(define-extern *b-curve-desert-hanging-fire-flame* curve2d-fast) +(define-extern *curve-alpha-desert-hanging-fire-flame* curve2d-fast) +(define-extern *curve-desert-hanging-fire-flame-x* curve2d-fast) +(define-extern *curve-desert-hanging-fire-flame-y* curve2d-fast) +(define-extern *part-desert-hanging-fire-flame-curve-settings* particle-curve-settings) +(define-extern *range-color-desert-bowl-fire-flame* curve-color-fast) +(define-extern *range-alpha-desert-bowl-fire-flame* curve2d-fast) +(define-extern *range-scale-desert-bowl-fire-flame-x* curve2d-fast) +(define-extern *range-scale-desert-bowl-fire-flame-y* curve2d-fast) +(define-extern *r-curve-desert-bowl-fire-flame* curve2d-fast) +(define-extern *g-curve-desert-bowl-fire-flame* curve2d-fast) +(define-extern *b-curve-desert-bowl-fire-flame* curve2d-fast) +(define-extern *curve-alpha-desert-bowl-fire-flame* curve2d-fast) +(define-extern *curve-desert-bowl-fire-flame-x* curve2d-fast) +(define-extern *curve-desert-bowl-fire-flame-y* curve2d-fast) +(define-extern *part-desert-bowl-fire-flame-curve-settings* particle-curve-settings) +(define-extern *range-color-desert-small-bowl-fire-flame* curve-color-fast) +(define-extern *range-alpha-desert-small-bowl-fire-flame* curve2d-fast) +(define-extern *range-scale-desert-small-bowl-fire-flame-x* curve2d-fast) +(define-extern *range-scale-desert-small-bowl-fire-flame-y* curve2d-fast) +(define-extern *r-curve-desert-small-bowl-fire-flame* curve2d-fast) +(define-extern *g-curve-desert-small-bowl-fire-flame* curve2d-fast) +(define-extern *b-curve-desert-small-bowl-fire-flame* curve2d-fast) +(define-extern *curve-alpha-desert-small-bowl-fire-flame* curve2d-fast) +(define-extern *curve-desert-small-bowl-fire-flame-x* curve2d-fast) +(define-extern *curve-desert-small-bowl-fire-flame-y* curve2d-fast) +(define-extern *part-desert-small-bowl-fire-flame-curve-settings* particle-curve-settings) +(define-extern *scenecamera-fog-update?* symbol) +(define-extern scenecamera-fog-update (function none)) +(define-extern birth-func-desert-beacon-set-accel (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern *range-wrsplash-color* curve-color-fast) +(define-extern *range-wrsplash-alpha* curve2d-fast) +(define-extern *range-wrsplash-scale-x* curve2d-fast) +(define-extern *range-wrsplash-scale-y* curve2d-fast) +(define-extern *curve-wrsplash-alpha* curve2d-fast) +(define-extern *curve-wrsplash-scale-x* curve2d-fast) +(define-extern *curve-wrsplash-scale-y* curve2d-fast) +(define-extern *part-water-rocks-splash-curve-settings* particle-curve-settings) +(define-extern *range-color-firepit-fire-flame* curve-color-fast) +(define-extern *range-alpha-firepit-fire-flame* curve2d-fast) +(define-extern *range-scale-firepit-fire-flame-x* curve2d-fast) +(define-extern *range-scale-firepit-fire-flame-y* curve2d-fast) +(define-extern *r-curve-firepit-fire-flame* curve2d-fast) +(define-extern *g-curve-firepit-fire-flame* curve2d-fast) +(define-extern *b-curve-firepit-fire-flame* curve2d-fast) +(define-extern *curve-alpha-firepit-fire-flame* curve2d-fast) +(define-extern *curve-firepit-fire-flame-x* curve2d-fast) +(define-extern *curve-firepit-fire-flame-y* curve2d-fast) +(define-extern *part-firepit-fire-flame-curve-settings* particle-curve-settings) +(define-extern *stronghold-range-color-flame* curve-color-fast) +(define-extern *stronghold-range-alpha-flame* curve2d-fast) +(define-extern *stronghold-range-scale-flame-x* curve2d-fast) +(define-extern *stronghold-range-scale-flame-y* curve2d-fast) +(define-extern *r-stronghold-curve-flame* curve2d-fast) +(define-extern *g-stronghold-curve-flame* curve2d-fast) +(define-extern *b-stronghold-curve-flame* curve2d-fast) +(define-extern *stronghold-curve-alpha-flame* curve2d-fast) +(define-extern *stronghold-curve-flame-x* curve2d-fast) +(define-extern *stronghold-curve-flame-y* curve2d-fast) +(define-extern *part-stronghold-torchfire-flame-curve-settings* particle-curve-settings) +(define-extern *range-color-desert-bollard-fire-flame* curve-color-fast) +(define-extern *range-alpha-desert-bollard-fire-flame* curve2d-fast) +(define-extern *range-scale-desert-bollard-fire-flame-x* curve2d-fast) +(define-extern *range-scale-desert-bollard-fire-flame-y* curve2d-fast) +(define-extern *r-curve-desert-bollard-fire-flame* curve2d-fast) +(define-extern *g-curve-desert-bollard-fire-flame* curve2d-fast) +(define-extern *b-curve-desert-bollard-fire-flame* curve2d-fast) +(define-extern *curve-alpha-desert-bollard-fire-flame* curve2d-fast) +(define-extern *curve-desert-bollard-fire-flame-x* curve2d-fast) +(define-extern *curve-desert-bollard-fire-flame-y* curve2d-fast) +(define-extern *part-desert-bollard-fire-flame-curve-settings* particle-curve-settings) +(define-extern *range-dessplash-color* curve-color-fast) +(define-extern *range-dessplash-alpha* curve2d-fast) +(define-extern *range-dessplash-scale-x* curve2d-fast) +(define-extern *range-dessplash-scale-y* curve2d-fast) +(define-extern *curve-dessplash-alpha* curve2d-fast) +(define-extern *curve-dessplash-scale-x* curve2d-fast) +(define-extern *curve-dessplash-scale-y* curve2d-fast) +(define-extern *part-desert-water-rocks-splash-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; desarena-part ;; @@ -54937,7 +60676,7 @@ ) |# -;; (define-extern update-mood-desarena function) +;; (define-extern update-mood-desarena (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern *desarena-water-texture-anim-array* texture-anim-array) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -54967,8 +60706,8 @@ ;; haven-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-sewer-water function) -;; (define-extern spt-birth-func-brightness-sewer-water-foam function) +(define-extern spt-birth-func-brightness-sewer-water (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-sewer-water-foam (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; haven-obs ;; @@ -55002,16 +60741,16 @@ ;; havjung-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern part-jungle-bird1-path function) -;; (define-extern part-jungle-bird2-path function) -;; (define-extern part-jungle-bird3-path function) -;; (define-extern part-jungle-bird4-path function) -;; (define-extern part-jungle-bird5-path function) -;; (define-extern part-jungle-bird6-path function) -;; (define-extern part-jungle-bird7-path function) -;; (define-extern part-jungle-bird8-path function) -;; (define-extern part-jungle-bird9-path function) -;; (define-extern part-jungle-bird10-path function) +(define-extern part-jungle-bird1-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird2-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird3-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird4-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird5-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird6-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird7-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird8-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird9-path (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern part-jungle-bird10-path (function sparticle-system sparticle-cpuinfo vector none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; havjung-ocean ;; @@ -55028,24 +60767,24 @@ ;; jungle-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-statue-dust function) -;; (define-extern spt-birth-func-brightness-tree-root-dust function) -;; (define-extern spt-birth-func-brightness-tree-root-splinters function) -;; (define-extern spt-birth-func-brightness-jungle-snake-dust function) -;; (define-extern spt-func-birth-on-height-die function) -;; (define-extern spt-birth-func-part-jungle-waterspout-head function) -;; (define-extern *range-color-lava-geyser-flame* curve-color-fast) ;; curve-color-fast -;; (define-extern *range-alpha-lava-geyser-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-lava-geyser-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *range-scale-lava-geyser-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *r-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *g-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *b-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-alpha-lava-geyser-flame* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-scale-lava-geyser-flame-x* curve2d-fast) ;; curve2d-fast -;; (define-extern *curve-scale-lava-geyser-flame-y* curve2d-fast) ;; curve2d-fast -;; (define-extern *part-jungle-lavafire-small-curve-settings* object) -;; (define-extern spt-func-birth-on-pop function) ;; (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none) +(define-extern spt-birth-func-brightness-statue-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-tree-root-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-tree-root-splinters (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-jungle-snake-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-birth-on-height-die (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-part-jungle-waterspout-head (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern *range-color-lava-geyser-flame* curve-color-fast) ;; curve-color-fast +(define-extern *range-alpha-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +(define-extern *range-scale-lava-geyser-flame-x* curve2d-fast) ;; curve2d-fast +(define-extern *range-scale-lava-geyser-flame-y* curve2d-fast) ;; curve2d-fast +(define-extern *r-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +(define-extern *g-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +(define-extern *b-curve-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +(define-extern *curve-alpha-lava-geyser-flame* curve2d-fast) ;; curve2d-fast +(define-extern *curve-scale-lava-geyser-flame-x* curve2d-fast) ;; curve2d-fast +(define-extern *curve-scale-lava-geyser-flame-y* curve2d-fast) ;; curve2d-fast +(define-extern *part-jungle-lavafire-small-curve-settings* particle-curve-settings) +(define-extern spt-func-birth-on-pop (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; jungle-obs ;; @@ -55218,7 +60957,7 @@ ) |# -;; (define-extern update-mood-havsewx function) +;; (define-extern update-mood-havsewx (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern *havsewx-water-texture-anim-array* texture-anim-array) ;; (define-extern *havsewy-alpha-texture-anim-array* texture-anim-array) ;; (define-extern *havsewy-water-texture-anim-array* texture-anim-array) @@ -55246,8 +60985,8 @@ ) |# -;; (define-extern update-mood-sewer function) -;; (define-extern update-mood-sewerx function) +;; (define-extern update-mood-sewer (function mood-context float int none :behavior time-of-day-proc)) +;; (define-extern update-mood-sewerx (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern *sewb-water-texture-anim-array* texture-anim-array) ;; (define-extern *sewc-water-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) ;; (define-extern *sewd-water-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim) @@ -55259,8 +60998,8 @@ ;; sewer-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-func-birth-on-height-die-drip-sewer function) -;; (define-extern spt-func-part-sewer-drops-splash function) +(define-extern spt-func-birth-on-height-die-drip-sewer (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-func-part-sewer-drops-splash (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; havtour-part ;; @@ -55292,7 +61031,6 @@ ;; peak-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#| (deftype peak-states (structure) ((light light-state :inline :offset-assert 0) (flame flames-state :inline :offset-assert 8) @@ -55301,9 +61039,8 @@ :size-assert #xf :flag-assert #x90000000f ) -|# -;; (define-extern update-mood-peak function) +(define-extern update-mood-peak (function mood-context float int none :behavior time-of-day-proc)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; peak-obs ;; @@ -55375,8 +61112,8 @@ ;; kcross-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-kcross-fence-dust function) -;; (define-extern spt-birth-func-brightness-kcross-fence-splinters function) +(define-extern spt-birth-func-brightness-kcross-fence-dust (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-kcross-fence-splinters (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; kcross-obs ;; @@ -55812,7 +61549,7 @@ |# ;; (define-extern init-mood-menumap function) -;; (define-extern update-mood-menumap function) +;; (define-extern update-mood-menumap (function mood-context float int none :behavior time-of-day-proc)) ;; (define-extern set-menumap-target! function) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -57400,7 +63137,7 @@ ;; rustyh-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-fishtank-bubbles function) +(define-extern spt-birth-func-brightness-fishtank-bubbles (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; speech-sig ;; @@ -57437,23 +63174,23 @@ ) |# -;; (define-extern update-mood-snow function) +;; (define-extern update-mood-snow (function mood-context float int none :behavior time-of-day-proc)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; snow-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern *range-color-snow-torch-flame* curve-color-fast) -;; (define-extern *range-alpha-snow-torch-flame* curve2d-fast) -;; (define-extern *range-scale-snow-torch-flame-x* curve2d-fast) -;; (define-extern *range-scale-snow-torch-flame-y* curve2d-fast) -;; (define-extern *r-curve-snow-torch-flame* curve2d-fast) -;; (define-extern *g-curve-snow-torch-flame* curve2d-fast) -;; (define-extern *b-curve-snow-torch-flame* curve2d-fast) -;; (define-extern *curve-alpha-snow-torch-flame* curve2d-fast) -;; (define-extern *curve-snow-torch-flame-x* curve2d-fast) -;; (define-extern *curve-snow-torch-flame-y* curve2d-fast) -;; (define-extern *part-snow-torch-flame-curve-settings* object) +(define-extern *range-color-snow-torch-flame* curve-color-fast) +(define-extern *range-alpha-snow-torch-flame* curve2d-fast) +(define-extern *range-scale-snow-torch-flame-x* curve2d-fast) +(define-extern *range-scale-snow-torch-flame-y* curve2d-fast) +(define-extern *r-curve-snow-torch-flame* curve2d-fast) +(define-extern *g-curve-snow-torch-flame* curve2d-fast) +(define-extern *b-curve-snow-torch-flame* curve2d-fast) +(define-extern *curve-alpha-snow-torch-flame* curve2d-fast) +(define-extern *curve-snow-torch-flame-x* curve2d-fast) +(define-extern *curve-snow-torch-flame-y* curve2d-fast) +(define-extern *part-snow-torch-flame-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; spargus-ocean ;; @@ -57470,16 +63207,16 @@ ;; spargus-part ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; (define-extern spt-birth-func-brightness-spargus-sewer-water function) -;; (define-extern spt-birth-func-brightness-spargus-sewer-water-foam function) -;; (define-extern *range-ssplash-color* curve-color-fast) -;; (define-extern *range-ssplash-alpha* curve2d-fast) -;; (define-extern *range-ssplash-scale-x* curve2d-fast) -;; (define-extern *range-ssplash-scale-y* curve2d-fast) -;; (define-extern *curve-ssplash-alpha* curve2d-fast) -;; (define-extern *curve-ssplash-scale-x* curve2d-fast) -;; (define-extern *curve-ssplash-scale-y* curve2d-fast) -;; (define-extern *part-spargus-ocean-splash-curve-settings* object) +(define-extern spt-birth-func-brightness-spargus-sewer-water (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern spt-birth-func-brightness-spargus-sewer-water-foam (function sparticle-system sparticle-cpuinfo sparticle-launchinfo none)) +(define-extern *range-ssplash-color* curve-color-fast) +(define-extern *range-ssplash-alpha* curve2d-fast) +(define-extern *range-ssplash-scale-x* curve2d-fast) +(define-extern *range-ssplash-scale-y* curve2d-fast) +(define-extern *curve-ssplash-alpha* curve2d-fast) +(define-extern *curve-ssplash-scale-x* curve2d-fast) +(define-extern *curve-ssplash-scale-y* curve2d-fast) +(define-extern *part-spargus-ocean-splash-curve-settings* particle-curve-settings) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; temple-part ;; diff --git a/decompiler/config/jakx/jakx_config.jsonc b/decompiler/config/jakx/jakx_config.jsonc index 449a771141..6154f698b5 100644 --- a/decompiler/config/jakx/jakx_config.jsonc +++ b/decompiler/config/jakx/jakx_config.jsonc @@ -1,38 +1,28 @@ { "game_version": 4, "text_version": 40, - "game_name": "jakx", "expected_elf_name": "SCUS_974.29", - // if you want to filter to only some object names. // it will make the decompiler much faster. "allowed_objects": [], - "banned_objects": [], - //////////////////////////// // CODE ANALYSIS OPTIONS //////////////////////////// - // set to true to generate plain .asm files with MIPS disassembly, with no fancy decompilation. // this is fast and should succeed 100% of the time. "disassemble_code": false, - // Run the decompiler "decompile_code": true, - "find_functions": true, - //////////////////////////// // DATA ANALYSIS OPTIONS //////////////////////////// - // set to true to generate plain .asm files for data files. // this will display most data as hex, but will add labels/references/type pointers/strings // this generates a huge amount of output if you run it on the entire game. "disassemble_data": false, - // unpack textures to assets folder "process_tpages": false, // write goal imports for tpages and textures @@ -49,39 +39,31 @@ "dump_art_group_info": false, // write out a json file containing the joint node mapping, run this with all objects allowed // TODO - not done yet - "dump_joint_geo_info": true, + "dump_joint_geo_info": false, // write out a json file containing tpage and texture mappings, run with all objects allowed "dump_tex_info": false, // write out a json file containing the part group table, run with all objects allowed // TODO - not done yet - "dump_part_group_table": true, - + "dump_part_group_table": false, // set to false to skip adding .STR files to the decompiler database "read_spools": false, // write out spool subtitle text, implies read_spools "process_subtitle_text": false, // write out spool subtitle images, implies read_spools "process_subtitle_images": false, - /////////////////////////// // WEIRD OPTIONS /////////////////////////// - // these options are used rarely and should usually be left at false - // generate the symbol_map.json file. // this is a guess at where each symbol is first defined/used. "generate_symbol_definition_map": false, - // generate the all-types file "generate_all_types": false, - // debug option for instruction decoder "write_hex_near_instructions": false, - // to write out "scripts", which are currently just all the linked lists found. mostly a jak 2/3 thing "write_scripts": true, - // hex dump of code/data files. "hexdump_code": false, "hexdump_data": false, @@ -89,16 +71,12 @@ "dump_objs": true, // print control flow graph "print_cfgs": false, - // set to true for PAL versions. this will forcefully skip files that have some data missing at the end. "is_pal": false, - "old_all_types_file": "decompiler/config/jak3/all-types.gc", - //////////////////////////// // CONFIG FILES //////////////////////////// - "type_casts_file": "decompiler/config/jakx/ntsc_v1/type_casts.jsonc", "anonymous_function_types_file": "decompiler/config/jakx/ntsc_v1/anonymous_function_types.jsonc", "var_names_file": "decompiler/config/jakx/ntsc_v1/var_names.jsonc", @@ -115,15 +93,12 @@ // "part_group_table_dump_file": "decompiler/config/jakx/ntsc_v1/part-groups.min.json", "process_stack_size_file": "decompiler/config/jakx/ntsc_v1/process_stack_size_overrides.jsonc", "all_types_file": "decompiler/config/jakx/all-types.gc", - // optional: a predetermined object file name map from a file. // this will make decompilation naming consistent even if you only run on some objects. // "obj_file_name_map_file": "goal_src/jakx/build/all_objs.json", - //////////////////////////// // LEVEL EXTRACTION //////////////////////////// - // turn this on to extract level background graphics data as .fr3 files in out//fr3 "levels_extract": false, // turn this on if you want extracted levels to be saved out as .glb files in glb_out/ @@ -135,17 +110,13 @@ "rip_collision": false, // save game textures as .png files to decompiler_out//textures "save_texture_pngs": false, - // whether or not to dump out streamed audio files to decompiler_out//audio "rip_streamed_audio": false, - //////////////////////////// // PATCHING OPTIONS //////////////////////////// - // these are options related to xdelta3 patches on specific objects // this allows us to get a more consistent input - // set to true to write new patch files "write_patches": false, // set to true to apply patch files @@ -161,4 +132,4 @@ "object_patches": {} } } -} +} \ No newline at end of file diff --git a/decompiler/config/jakx/ntsc_v1/hacks.jsonc b/decompiler/config/jakx/ntsc_v1/hacks.jsonc index 675d6a8fcf..edd527a918 100644 --- a/decompiler/config/jakx/ntsc_v1/hacks.jsonc +++ b/decompiler/config/jakx/ntsc_v1/hacks.jsonc @@ -2,15 +2,26 @@ //////////////////////////// // HACKS and ASM FUNCTIONS //////////////////////////// - "types_with_bad_inspect_methods": ["game-task-event", "game-task-control"], + "types_with_bad_inspect_methods": [ + "game-task-event", + "game-task-control" + ], "no_type_analysis_functions_by_name": [], // this limits the number of cases in a cond. The first argument is the name of the function. // the second argument is the name of the first condition in the cond. Use print_cfg to find it out. // The third argument is the number of cases. If you set it too small it may fail to build the CFG. - "cond_with_else_max_lengths": [], + "cond_with_else_max_lengths": [ + ["(method 20 res-lump)", "b0", 2], + ["(method 11 res-lump)", "b0", 1], + ["(method 12 res-lump)", "b0", 1] + ], // if a cond with an else case is being used a value in a place where it looks wrong // you can add the function name to this list and it will more aggressively reject this rewrite. - "aggressively_reject_cond_to_value_rewrite": [], + "aggressively_reject_cond_to_value_rewrite": [ + "(method 10 res-lump)", + "(method 11 res-lump)", + "(method 12 res-lump)" + ], // this provides a hint to the decompiler that these functions will have a lot of inline assembly. // currently it just leaves pcpyld as an asm op. "hint_inline_assembly_functions": [], @@ -27,6 +38,7 @@ // dma "symlink2", // actual asm + "(method 17 bounding-box)", "quad-copy!", "sin-rad", "cos-rad", @@ -67,22 +79,88 @@ "~338h~5d~388h~5d~448h~5,,2f": 3 }, "blocks_ending_in_asm_branch": { - "sqlpipe-query": [21], - "(method 9 editable-region)": [63], - "find-nearest-entity": [7, 9], + "(method 9 curve-color-fast)": [ + 0, + 1 + ], + "evaluate-color-curve-fast": [ + 0, + 1 + ], + "sqlpipe-query": [ + 21 + ], + "(method 9 editable-region)": [ + 63 + ], + "find-nearest-entity": [ + 7, + 9 + ], // collide-shape - "(method 42 collide-shape)": [0, 1, 2, 3, 4, 7], - "(method 18 collide-shape-prim-mesh)": [2, 3, 4, 5, 6, 7], + "(method 42 collide-shape)": [ + 0, + 1, + 2, + 3, + 4, + 7 + ], + "(method 18 collide-shape-prim-mesh)": [ + 2, + 3, + 4, + 5, + 6, + 7 + ], "(method 12 collide-shape-prim-sphere)": [ - 1, 2, 3, 4, 5, 8, 10, 11, 13, 14, 15 + 1, + 2, + 3, + 4, + 5, + 8, + 10, + 11, + 13, + 14, + 15 ], "(method 12 collide-shape-prim-mesh)": [ - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16 + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 14, + 15, + 16 ], // collide-mesh - "(method 11 collide-mesh)": [2, 4], - "(method 12 collide-mesh-cache)": [0, 1, 2, 3, 4, 5], - "(method 10 collide-mesh)": [2] + "(method 11 collide-mesh)": [ + 2, + 4 + ], + "(method 12 collide-mesh-cache)": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "(method 10 collide-mesh)": [ + 2 + ] }, // Sometimes the game might use format strings that are fetched dynamically, // for example using the game text lookup method @@ -91,6 +169,8 @@ // where "op" is the op number for the call to format. "dynamic_format_arg_counts": {}, "mips2c_functions_by_name": [ + "live-func-curve", + "birth-func-curve", // collide-cache "(method 9 collide-cache-prim)", "(method 10 collide-cache-prim)", @@ -116,6 +196,9 @@ "shadow-find-double-edges", "shadow-add-verts", "shadow-add-single-tris", + // collide-func + "moving-sphere-triangle-intersect", + "collide-do-primitives", // foreground "foreground-check-longest-edge-asm", "foreground-merc", @@ -131,4 +214,4 @@ // assume they must be different files, such as the art group for orb-cache-top. // this just suppresses a message. "expected_merged_objs": [] -} +} \ No newline at end of file diff --git a/decompiler/config/jakx/ntsc_v1/label_types.jsonc b/decompiler/config/jakx/ntsc_v1/label_types.jsonc index 2a9b04d7d9..aedab6fa36 100644 --- a/decompiler/config/jakx/ntsc_v1/label_types.jsonc +++ b/decompiler/config/jakx/ntsc_v1/label_types.jsonc @@ -1,14 +1,201 @@ { - "ambient-h": [["L1", "(inline-array talker-speech-class)", 233]], - "pat-h": [["L1", "(inline-array pat-mode-info)", 4]], - "foreground-h": [["L4", "(pointer bucket-id-16)", 462]], - "texture-anim-h": [["L1", "(pointer uint8)", 256]], - "process-nettable-h": [["L13", "(pointer uint32)", 95]], - "math": [ - ["L109", "(pointer float)", 32], - ["L108", "(pointer float)", 32] + "ambient-h": [ + [ + "L1", + "(inline-array talker-speech-class)", + 233 + ] ], - "timer-h": [["L15", "(pointer uint32)", 12]], - "game-task-h": [["L178", "(pointer text-id)", 24]], - "profile": [["L3", "(inline-array profile-spec)", 13]] -} + "pat-h": [ + [ + "L1", + "(inline-array pat-mode-info)", + 4 + ] + ], + "foreground-h": [ + [ + "L4", + "(pointer bucket-id-16)", + 462 + ] + ], + "texture-anim-h": [ + [ + "L1", + "(pointer uint8)", + 256 + ] + ], + "process-nettable-h": [ + [ + "L13", + "(pointer uint32)", + 95 + ] + ], + "math": [ + [ + "L109", + "(pointer float)", + 32 + ], + [ + "L108", + "(pointer float)", + 32 + ] + ], + "timer-h": [ + [ + "L15", + "(pointer uint32)", + 12 + ] + ], + "game-task-h": [ + [ + "L178", + "(pointer text-id)", + 24 + ] + ], + "profile": [ + [ + "L3", + "(inline-array profile-spec)", + 13 + ] + ], + "task-control-h": [ + [ + "L971", + "uint64", + true + ], + [ + "L973", + "uint64", + true + ], + [ + "L977", + "uint64", + true + ], + [ + "L979", + "uint64", + true + ], + [ + "L978", + "uint64", + true + ], + [ + "L972", + "uint64", + true + ], + [ + "L974", + "uint64", + true + ], + [ + "L975", + "uint64", + true + ], + [ + "L976", + "uint64", + true + ] + ], + "font-data": [ + [ + "L1", + "(inline-array vector)", + 250 + ], + [ + "L2", + "(inline-array vector)", + 250 + ] + ], + "mem-buffer-h": [ + [ + "L71", + "(pointer uint32)", + 256 + ], + [ + "L70", + "(pointer uint32)", + 256 + ], + [ + "L69", + "(pointer uint32)", + 256 + ], + [ + "L68", + "(pointer uint32)", + 256 + ], + [ + "L72", + "(pointer uint32)", + 12 + ] + ], + "sprite": [ + [ + "L52", + "dma-packet" + ] + ], + "headset-h": [ + [ + "L8", + "(pointer uint8)", + 512 + ], + [ + "L7", + "(pointer uint8)", + 512 + ], + [ + "L6", + "(pointer uint8)", + 100 + ], + [ + "L5", + "(pointer uint8)", + 160 + ], + [ + "L4", + "(pointer uint8)", + 160 + ], + [ + "L3", + "(pointer int8)", + 4 + ] + ], + "kras-part": [ + [ + "L137", + "(pointer rgba)", + 8 + ] + ] +} \ No newline at end of file diff --git a/decompiler/config/jakx/ntsc_v1/stack_structures.jsonc b/decompiler/config/jakx/ntsc_v1/stack_structures.jsonc index 7b55c1f361..77ad0cd951 100644 --- a/decompiler/config/jakx/ntsc_v1/stack_structures.jsonc +++ b/decompiler/config/jakx/ntsc_v1/stack_structures.jsonc @@ -1,77 +1,360 @@ { - "quaternion-smooth-seek!": [[16, ["inline-array", "quaternion", 2]]], - "rotate-vector-to-vector": [[16, "quaternion"]], - "nearest-dist2-between-moving-points": [[16, ["inline-array", "vector", 2]]], - "vector-segment-xz-distance-point!": [[16, "matrix"]], - "vector-interp-angle!": [[16, "quaternion"]], - "vector-cap-rotation!": [[16, "quaternion"]], - "vector-line-xz-distance-point!": [[16, "matrix"]], + "quaternion-smooth-seek!": [ + [ + 16, + [ + "inline-array", + "quaternion", + 2 + ] + ] + ], + "rotate-vector-to-vector": [ + [ + 16, + "quaternion" + ] + ], + "nearest-dist2-between-moving-points": [ + [ + 16, + [ + "inline-array", + "vector", + 2 + ] + ] + ], + "vector-segment-xz-distance-point!": [ + [ + 16, + "matrix" + ] + ], + "vector-interp-angle!": [ + [ + 16, + "quaternion" + ] + ], + "vector-cap-rotation!": [ + [ + 16, + "quaternion" + ] + ], + "vector-line-xz-distance-point!": [ + [ + 16, + "matrix" + ] + ], "vector-circle-tangent-new": [ - [32, "vector"], - [48, "vector"] + [ + 32, + "vector" + ], + [ + 48, + "vector" + ] ], "v-slrp2!": [ - [32, "vector"], - [64, "matrix"] + [ + 32, + "vector" + ], + [ + 64, + "matrix" + ] + ], + "v-slrp3!": [ + [ + 32, + "vector" + ] ], - "v-slrp3!": [[32, "vector"]], "collide-list-fill-bg-using-box": [ - [32, "matrix"], - [96, "collide-query"] + [ + 32, + "matrix" + ], + [ + 96, + "collide-query" + ] ], "collide-list-fill-bg-using-line-sphere": [ - [32, "matrix"], - [96, "collide-query"] + [ + 32, + "matrix" + ], + [ + 96, + "collide-query" + ] + ], + "(method 9 touching-list)": [ + [ + 16, + "add-prims-touching-work" + ] + ], + "(method 9 curve-color-fast)": [ + [ + 16, + "rgbaf" + ] ], - "(method 9 touching-list)": [[16, "add-prims-touching-work"]], - "(method 9 curve-color-fast)": [[16, "rgbaf"]], "(method 9 curve2d-fast)": [ - [16, "vector"], - [32, "vector"] + [ + 16, + "vector" + ], + [ + 32, + "vector" + ] + ], + "evaluate-color-curve-fast": [ + [ + 16, + "vector" + ] ], - "evaluate-color-curve-fast": [[16, "vector"]], "evaluate-curve-fast": [ - [16, "vector"], - [32, "vector"] + [ + 16, + "vector" + ], + [ + 32, + "vector" + ] ], "add-debug-box-with-transform": [ - [16, ["inline-array", "vector", 8]], - [144, ["inline-array", "vector", 2]], - [176, "vector"] + [ + 16, + [ + "inline-array", + "vector", + 8 + ] + ], + [ + 144, + [ + "inline-array", + "vector", + 2 + ] + ], + [ + 176, + "vector" + ] ], "add-debug-curve": [ - [16, "vector"], - [32, "vector"] + [ + 16, + "vector" + ], + [ + 32, + "vector" + ] ], "add-debug-sphere-from-table": [ - [16, "vector"], - [48, "vector"], - [64, "vector"] + [ + 16, + "vector" + ], + [ + 48, + "vector" + ], + [ + 64, + "vector" + ] ], "make-debug-sphere-table": [ - [16, "vector"], - [32, "vector"], - [48, "vector"], - [64, "vector"], - [80, "vector"], - [96, "vector"], - [112, "vector"] + [ + 16, + "vector" + ], + [ + 32, + "vector" + ], + [ + 48, + "vector" + ], + [ + 64, + "vector" + ], + [ + 80, + "vector" + ], + [ + 96, + "vector" + ], + [ + 112, + "vector" + ] + ], + "eul->matrix": [ + [ + 16, + "vector" + ] ], - "eul->matrix": [[16, "vector"]], "joint-mod-joint-set-world-handler": [ - [32, "vector"], - [48, "vector"] + [ + 32, + "vector" + ], + [ + 48, + "vector" + ] + ], + "joint-mod-blend-world-callback": [ + [ + 16, + "joint-mod-blend-world-work" + ] + ], + "(method 20 lightning-bolt)": [ + [ + 16, + "vector" + ] ], - "joint-mod-blend-world-callback": [[16, "joint-mod-blend-world-work"]], - "(method 20 lightning-bolt)": [[16, "vector"]], "update-light-hash": [ - [16, "bounding-box"], - [48, "vector"], - [64, "vector"] + [ + 16, + "bounding-box" + ], + [ + 48, + "vector" + ], + [ + 64, + "vector" + ] ], - "(method 10 simple-sprite-system)": [[16, ["array", "texture-id", 128]]], - "(method 10 cubic-curve)": [[16, "trajectory"]], - "(method 11 cubic-curve)": [[16, "trajectory"]], - "(method 12 cubic-curve)": [[16, "trajectory"]], - "matrix<-parented-transformq!": [[16, "vector"]] -} + "(method 10 simple-sprite-system)": [ + [ + 16, + [ + "array", + "texture-id", + 128 + ] + ] + ], + "(method 10 cubic-curve)": [ + [ + 16, + "trajectory" + ] + ], + "(method 11 cubic-curve)": [ + [ + 16, + "trajectory" + ] + ], + "(method 12 cubic-curve)": [ + [ + 16, + "trajectory" + ] + ], + "matrix<-parented-transformq!": [ + [ + 16, + "vector" + ] + ], + "draw-axis": [ + [ + 32, + "vector" + ], + [ + 48, + "vector" + ], + [ + 64, + "vector" + ], + [ + 112, + "vector" + ] + ], + "(method 10 manipulator)": [ + [ + 112, + "vector" + ], + [ + 128, + "vector" + ], + [ + 160, + "vector" + ], + [ + 192, + "vector" + ] + ], + "(method 11 manipulator)": [ + [ + 64, + "vector" + ], + [ + 96, + "vector" + ], + [ + 144, + "vector" + ], + [ + 192, + "vector" + ] + ], + "ptest": [ + [ + 16, + "vector" + ] + ], + "check-drop-level-rain": [ + [ + 16, + "vector" + ] + ], + "spt-func-rocket": [ + [ + 16, + "vector" + ] + ] +} \ No newline at end of file diff --git a/decompiler/config/jakx/ntsc_v1/type_casts.jsonc b/decompiler/config/jakx/ntsc_v1/type_casts.jsonc index cc89d79900..87501746c6 100644 --- a/decompiler/config/jakx/ntsc_v1/type_casts.jsonc +++ b/decompiler/config/jakx/ntsc_v1/type_casts.jsonc @@ -1,467 +1,2388 @@ { - "entity-actor-count": [["_stack_", 16, "res-tag"]], - "entity-actor-lookup": [["_stack_", 16, "res-tag"]], + "entity-actor-count": [ + [ + "_stack_", + 16, + "res-tag" + ] + ], + "entity-actor-lookup": [ + [ + "_stack_", + 16, + "res-tag" + ] + ], "build-masks": [ - [[18, 22], "a1", "drawable-tree-tfrag"], - [24, "a2", "drawable-inline-array-tfrag"], - [[27, 31], "a2", "(inline-array tfragment)"], - [[38, 42], "a1", "drawable-tree-tfrag-trans"], - [44, "a2", "drawable-inline-array-tfrag"], - [[47, 51], "a2", "(inline-array tfragment)"], - [[58, 62], "a1", "drawable-tree-tfrag-water"], - [64, "a2", "drawable-inline-array-tfrag"], - [[67, 71], "a2", "(inline-array tfragment)"], - [[78, 79], "a1", "drawable-tree-instance-tie"], - [123, "a1", "drawable-tree-instance-shrub"], - [[129, 133], "a2", "(inline-array prototype-bucket-shrub)"] + [ + [ + 18, + 22 + ], + "a1", + "drawable-tree-tfrag" + ], + [ + 24, + "a2", + "drawable-inline-array-tfrag" + ], + [ + [ + 27, + 31 + ], + "a2", + "(inline-array tfragment)" + ], + [ + [ + 38, + 42 + ], + "a1", + "drawable-tree-tfrag-trans" + ], + [ + 44, + "a2", + "drawable-inline-array-tfrag" + ], + [ + [ + 47, + 51 + ], + "a2", + "(inline-array tfragment)" + ], + [ + [ + 58, + 62 + ], + "a1", + "drawable-tree-tfrag-water" + ], + [ + 64, + "a2", + "drawable-inline-array-tfrag" + ], + [ + [ + 67, + 71 + ], + "a2", + "(inline-array tfragment)" + ], + [ + [ + 78, + 79 + ], + "a1", + "drawable-tree-instance-tie" + ], + [ + 123, + "a1", + "drawable-tree-instance-shrub" + ], + [ + [ + 129, + 133 + ], + "a2", + "(inline-array prototype-bucket-shrub)" + ] ], "cam-layout-function-call": [ - [15, "gp", "(function string int basic object)"] + [ + 15, + "gp", + "(function string int basic object)" + ] + ], + "cam-layout-save-cam-rot": [ + [ + 13, + "v0", + "vector" + ] + ], + "cam-layout-save-campointsoffset": [ + [ + 12, + "v0", + "vector" + ] ], - "cam-layout-save-cam-rot": [[13, "v0", "vector"]], - "cam-layout-save-campointsoffset": [[12, "v0", "vector"]], "cam-layout-save-splineoffset": [ - [37, "v0", "vector"], - [25, "v0", "vector"] + [ + 37, + "v0", + "vector" + ], + [ + 25, + "v0", + "vector" + ] + ], + "clmf-save-all": [ + [ + 18, + "v1", + "connection" + ] ], - "clmf-save-all": [[18, "v1", "connection"]], "execute-cam-post-hook-engine": [ - [8, "s5", "connection"], - [[14, 17], "s5", "connection"], - [18, "t9", "(function object object object object object)"], - [9, "s5", "connection"] + [ + 8, + "s5", + "connection" + ], + [ + [ + 14, + 17 + ], + "s5", + "connection" + ], + [ + 18, + "t9", + "(function object object object object object)" + ], + [ + 9, + "s5", + "connection" + ] ], "collide-list-fill-bg-using-box": [ - [223, "a0", "collide-hash-scratch"], - [255, "a0", "collide-hash-scratch"], - [208, "v1", "collide-hash-scratch"], - [210, "v1", "collide-hash-scratch"], - [212, "v1", "collide-hash-scratch"], - [241, "v1", "collide-hash-scratch"], - [243, "v1", "collide-hash-scratch"], - [246, "v1", "collide-hash-scratch"] + [ + 223, + "a0", + "collide-hash-scratch" + ], + [ + 255, + "a0", + "collide-hash-scratch" + ], + [ + 208, + "v1", + "collide-hash-scratch" + ], + [ + 210, + "v1", + "collide-hash-scratch" + ], + [ + 212, + "v1", + "collide-hash-scratch" + ], + [ + 241, + "v1", + "collide-hash-scratch" + ], + [ + 243, + "v1", + "collide-hash-scratch" + ], + [ + 246, + "v1", + "collide-hash-scratch" + ] ], "collide-list-fill-bg-using-line-sphere": [ - [287, "a0", "collide-hash-scratch"], - [[272, 280], "v1", "collide-hash-scratch"], - [[239, 246], "v1", "collide-hash-scratch"], - [255, "a0", "collide-hash-scratch"], - [102, "v1", "float"] + [ + 287, + "a0", + "collide-hash-scratch" + ], + [ + [ + 272, + 280 + ], + "v1", + "collide-hash-scratch" + ], + [ + [ + 239, + 246 + ], + "v1", + "collide-hash-scratch" + ], + [ + 255, + "a0", + "collide-hash-scratch" + ], + [ + 102, + "v1", + "float" + ] ], "(method 0 collide-shape-prim-group)": [ - [[6, 12], "v0", "collide-shape-prim-group"] + [ + [ + 6, + 12 + ], + "v0", + "collide-shape-prim-group" + ] ], "(method 0 collide-shape-prim-mesh)": [ - [[6, 11], "v0", "collide-shape-prim-mesh"] + [ + [ + 6, + 11 + ], + "v0", + "collide-shape-prim-mesh" + ] ], "(method 0 collide-shape-prim-sphere)": [ - [[5, 8], "v0", "collide-shape-prim-sphere"] + [ + [ + 5, + 8 + ], + "v0", + "collide-shape-prim-sphere" + ] + ], + "(method 10 touching-list)": [ + [ + [ + 5, + 11 + ], + "s5", + "touching-shapes-entry" + ] ], - "(method 10 touching-list)": [[[5, 11], "s5", "touching-shapes-entry"]], "(method 11 touching-list)": [ - [8, "s5", "touching-shapes-entry"], - [11, "s5", "touching-shapes-entry"], - [13, "s5", "touching-shapes-entry"], - [48, "s5", "touching-shapes-entry"], - [52, "s5", "touching-shapes-entry"], - [10, "s5", "touching-shapes-entry"], - [33, "s5", "touching-shapes-entry"], - [50, "s5", "touching-shapes-entry"] + [ + 8, + "s5", + "touching-shapes-entry" + ], + [ + 11, + "s5", + "touching-shapes-entry" + ], + [ + 13, + "s5", + "touching-shapes-entry" + ], + [ + 48, + "s5", + "touching-shapes-entry" + ], + [ + 52, + "s5", + "touching-shapes-entry" + ], + [ + 10, + "s5", + "touching-shapes-entry" + ], + [ + 33, + "s5", + "touching-shapes-entry" + ], + [ + 50, + "s5", + "touching-shapes-entry" + ] + ], + "(method 0 touching-list)": [ + [ + [ + 6, + 8 + ], + "v0", + "touching-list" + ] ], - "(method 0 touching-list)": [[[6, 8], "v0", "touching-list"]], "(method 11 touching-prims-entry-pool)": [ - [[0, 8], "v1", "touching-prims-entry"], - [8, "v1", "pointer"], - [[9, 11], "v1", "touching-prims-entry"], - [[1, 20], "a1", "touching-prims-entry"] + [ + [ + 0, + 8 + ], + "v1", + "touching-prims-entry" + ], + [ + 8, + "v1", + "pointer" + ], + [ + [ + 9, + 11 + ], + "v1", + "touching-prims-entry" + ], + [ + [ + 1, + 20 + ], + "a1", + "touching-prims-entry" + ] ], "(method 0 engine)": [ - [44, "v1", "pointer"], - [47, "v1", "pointer"], - [53, "v1", "connectable"], - [65, "v1", "connectable"] + [ + 44, + "v1", + "pointer" + ], + [ + 47, + "v1", + "pointer" + ], + [ + 53, + "v1", + "connectable" + ], + [ + 65, + "v1", + "connectable" + ] ], "(method 0 engine-pers)": [ - [32, "v1", "pointer"], - [23, "v1", "pointer"], - [26, "v1", "pointer"], - [24, "v1", "(pointer pointer)"] + [ + 32, + "v1", + "pointer" + ], + [ + 23, + "v1", + "pointer" + ], + [ + 26, + "v1", + "pointer" + ], + [ + 24, + "v1", + "(pointer pointer)" + ] + ], + "(method 11 connection)": [ + [ + 5, + "a1", + "pointer" + ] ], - "(method 11 connection)": [[5, "a1", "pointer"]], "(method 12 engine)": [ - [[0, 25], "s4", "connection"], - [13, "t9", "(function object object object object object)"] + [ + [ + 0, + 25 + ], + "s4", + "connection" + ], + [ + 13, + "t9", + "(function object object object object object)" + ] ], "(method 13 engine)": [ - [[0, 25], "s4", "connection"], - [13, "t9", "(function object object object object object)"] + [ + [ + 0, + 25 + ], + "s4", + "connection" + ], + [ + 13, + "t9", + "(function object object object object object)" + ] + ], + "(method 19 engine)": [ + [ + 8, + "a0", + "connection" + ] + ], + "(method 20 engine)": [ + [ + 8, + "a0", + "connection" + ] + ], + "(method 21 engine)": [ + [ + 8, + "a0", + "connection" + ] + ], + "(method 3 connection-pers)": [ + [ + 97, + "f0", + "float" + ] + ], + "(method 9 connection)": [ + [ + 8, + "a0", + "pointer" + ] + ], + "drawable-frag-count": [ + [ + [ + 14, + 20 + ], + "s5", + "drawable-group" + ] ], - "(method 19 engine)": [[8, "a0", "connection"]], - "(method 20 engine)": [[8, "a0", "connection"]], - "(method 21 engine)": [[8, "a0", "connection"]], - "(method 3 connection-pers)": [[97, "f0", "float"]], - "(method 9 connection)": [[8, "a0", "pointer"]], - "drawable-frag-count": [[[14, 20], "s5", "drawable-group"]], "add-debug-sphere-from-table": [ - [[38, 41], "v1", "vector"], - [[55, 59], "s0", "(inline-array vector)"] + [ + [ + 38, + 41 + ], + "v1", + "vector" + ], + [ + [ + 55, + 59 + ], + "s0", + "(inline-array vector)" + ] + ], + "unpack-comp-huf": [ + [ + [ + 21, + 23 + ], + "t3", + "(pointer uint16)" + ] + ], + "unpack-comp-rle": [ + [ + [ + 10, + 26 + ], + "a0", + "(pointer int8)" + ] ], - "unpack-comp-huf": [[[21, 23], "t3", "(pointer uint16)"]], - "unpack-comp-rle": [[[10, 26], "a0", "(pointer int8)"]], "dma-bucket-insert-tag": [ - [[2, 6], "v1", "dma-bucket"], - [3, "a0", "dma-bucket"] + [ + [ + 2, + 6 + ], + "v1", + "dma-bucket" + ], + [ + 3, + "a0", + "dma-bucket" + ] ], "dma-buffer-add-buckets": [ - [[1, 4], "v1", "dma-bucket"], - [5, "v1", "pointer"], - [[9, 11], "v1", "dma-bucket"], - [11, "v1", "pointer"] + [ + [ + 1, + 4 + ], + "v1", + "dma-bucket" + ], + [ + 5, + "v1", + "pointer" + ], + [ + [ + 9, + 11 + ], + "v1", + "dma-bucket" + ], + [ + 11, + "v1", + "pointer" + ] ], "dma-buffer-patch-buckets": [ - [[3, 34], "a0", "dma-bucket"], - [[34, 38], "a0", "dma-packet"] + [ + [ + 3, + 34 + ], + "a0", + "dma-bucket" + ], + [ + [ + 34, + 38 + ], + "a0", + "dma-packet" + ] ], "disasm-dma-list": [ - [43, "v1", "dma-packet"], - [266, "v1", "(pointer uint64)"], - [272, "v1", "(pointer uint64)"], - [133, "v1", "(pointer uint64)"], - [152, "v1", "(pointer uint64)"], - [167, "v1", "(pointer uint64)"], - [176, "v1", "(pointer uint64)"], - [198, "v1", "(pointer uint64)"], - [207, "v1", "(pointer uint64)"], - [238, "v1", "(pointer uint64)"], - [247, "v1", "(pointer uint64)"], - [282, "v1", "(pointer uint64)"], - [291, "v1", "(pointer uint64)"], - [324, "v1", "(pointer uint64)"], - [334, "v1", "(pointer uint64)"], - [141, "v1", "int"], - [25, "v1", "dma-tag"], - ["_stack_", 16, "uint"], - ["_stack_", 32, "dma-packet"], - ["_stack_", 64, "dma-packet"], - ["_stack_", 80, "dma-packet"] + [ + 43, + "v1", + "dma-packet" + ], + [ + 266, + "v1", + "(pointer uint64)" + ], + [ + 272, + "v1", + "(pointer uint64)" + ], + [ + 133, + "v1", + "(pointer uint64)" + ], + [ + 152, + "v1", + "(pointer uint64)" + ], + [ + 167, + "v1", + "(pointer uint64)" + ], + [ + 176, + "v1", + "(pointer uint64)" + ], + [ + 198, + "v1", + "(pointer uint64)" + ], + [ + 207, + "v1", + "(pointer uint64)" + ], + [ + 238, + "v1", + "(pointer uint64)" + ], + [ + 247, + "v1", + "(pointer uint64)" + ], + [ + 282, + "v1", + "(pointer uint64)" + ], + [ + 291, + "v1", + "(pointer uint64)" + ], + [ + 324, + "v1", + "(pointer uint64)" + ], + [ + 334, + "v1", + "(pointer uint64)" + ], + [ + 141, + "v1", + "int" + ], + [ + 25, + "v1", + "dma-tag" + ], + [ + "_stack_", + 16, + "uint" + ], + [ + "_stack_", + 32, + "dma-packet" + ], + [ + "_stack_", + 64, + "dma-packet" + ], + [ + "_stack_", + 80, + "dma-packet" + ] + ], + "(method 16 drawable-inline-array-node)": [ + [ + [ + 1, + 7 + ], + "v1", + "draw-node" + ] ], - "(method 16 drawable-inline-array-node)": [[[1, 7], "v1", "draw-node"]], "(method 15 drawable-tree)": [ - [[1, 4], "v1", "drawable-inline-array-node"], - [[29, 34], "t0", "drawable-inline-array-node"], - [[28, 32], "t2", "drawable-inline-array-node"], - [[42, 46], "t2", "(pointer int8)"] + [ + [ + 1, + 4 + ], + "v1", + "drawable-inline-array-node" + ], + [ + [ + 29, + 34 + ], + "t0", + "drawable-inline-array-node" + ], + [ + [ + 28, + 32 + ], + "t2", + "drawable-inline-array-node" + ], + [ + [ + 42, + 46 + ], + "t2", + "(pointer int8)" + ] + ], + "glst-find-node-by-name": [ + [ + 6, + "s5", + "glst-named-node" + ] + ], + "glst-length-of-longest-name": [ + [ + 5, + "s5", + "glst-named-node" + ] + ], + "history-print": [ + [ + 20, + "a1", + "int" + ] ], - "glst-find-node-by-name": [[6, "s5", "glst-named-node"]], - "glst-length-of-longest-name": [[5, "s5", "glst-named-node"]], - "history-print": [[20, "a1", "int"]], "joint-mod-foot-rot-handler": [ - [[0, 7], "s5", "joint-mod"], - [[35, 152], "s5", "joint-mod"] + [ + [ + 0, + 7 + ], + "s5", + "joint-mod" + ], + [ + [ + 35, + 152 + ], + "s5", + "joint-mod" + ] + ], + "joint-mod-joint-set-handler": [ + [ + [ + 2, + 23 + ], + "s4", + "joint-mod" + ] + ], + "joint-mod-joint-set-world-handler": [ + [ + [ + 6, + 197 + ], + "s5", + "joint-mod" + ] ], - "joint-mod-joint-set-handler": [[[2, 23], "s4", "joint-mod"]], - "joint-mod-joint-set-world-handler": [[[6, 197], "s5", "joint-mod"]], "joint-mod-polar-look-at-callback": [ - [[0, 363], "s5", "joint-mod-polar-look-at"] + [ + [ + 0, + 363 + ], + "s5", + "joint-mod-polar-look-at" + ] + ], + "joint-mod-scale-handler": [ + [ + [ + 1, + 14 + ], + "s5", + "joint-mod" + ] ], - "joint-mod-scale-handler": [[[1, 14], "s5", "joint-mod"]], "real-joint-mod-gun-look-at-handler": [ - [1, "v1", "joint-mod"], - [2, "v1", "joint-mod"] + [ + 1, + "v1", + "joint-mod" + ], + [ + 2, + "v1", + "joint-mod" + ] + ], + "joint-mod-blend-local-callback": [ + [ + [ + 1, + 28 + ], + "gp", + "joint-mod-blend-local" + ] + ], + "joint-mod-blend-world-callback": [ + [ + [ + 1, + 150 + ], + "gp", + "joint-mod-blend-world" + ] ], - "joint-mod-blend-local-callback": [[[1, 28], "gp", "joint-mod-blend-local"]], - "joint-mod-blend-world-callback": [[[1, 150], "gp", "joint-mod-blend-world"]], "joint-mod-rotate-world-callback": [ - [[0, 24], "s3", "joint-mod-rotate-world"] + [ + [ + 0, + 24 + ], + "s3", + "joint-mod-rotate-world" + ] + ], + "joint-mod-set-local-callback": [ + [ + [ + 1, + 24 + ], + "v1", + "joint-mod-set-local" + ] + ], + "joint-mod-set-world-callback": [ + [ + [ + 1, + 4 + ], + "v1", + "joint-mod-set-local" + ] ], - "joint-mod-set-local-callback": [[[1, 24], "v1", "joint-mod-set-local"]], - "joint-mod-set-world-callback": [[[1, 4], "v1", "joint-mod-set-local"]], "joint-mod-set-world-no-trans-callback": [ - [[1, 25], "s4", "joint-mod-set-world-no-trans"] + [ + [ + 1, + 25 + ], + "s4", + "joint-mod-set-world-no-trans" + ] ], "(method 15 lightning-bolt)": [ - [47, "v1", "float"], - [64, "v1", "float"] + [ + 47, + "v1", + "float" + ], + [ + 64, + "v1", + "float" + ] + ], + "(method 17 lightning-bolt)": [ + [ + 36, + "v1", + "float" + ] ], - "(method 17 lightning-bolt)": [[36, "v1", "float"]], "(method 20 lightning-bolt)": [ - [15, "v1", "float"], - [32, "v1", "float"] + [ + 15, + "v1", + "float" + ], + [ + 32, + "v1", + "float" + ] ], "(method 21 lightning-bolt)": [ - [49, "v1", "float"], - [77, "v1", "float"], - ["_stack_", 32, "float"] + [ + 49, + "v1", + "float" + ], + [ + 77, + "v1", + "float" + ], + [ + "_stack_", + 32, + "float" + ] ], "update-light-hash": [ - [[234, 239], "a1", "light-hash-bucket"], - [[207, 211], "a0", "light-hash-bucket"] + [ + [ + 234, + 239 + ], + "a1", + "light-hash-bucket" + ], + [ + [ + 207, + 211 + ], + "a0", + "light-hash-bucket" + ] + ], + "dgo-load-begin": [ + [ + [ + 19, + 43 + ], + "s1", + "load-dgo-msg" + ] + ], + "dgo-load-continue": [ + [ + [ + 5, + 23 + ], + "gp", + "load-dgo-msg" + ] + ], + "dgo-load-get-next": [ + [ + [ + 14, + 31 + ], + "v1", + "load-dgo-msg" + ] + ], + "str-ambient-play": [ + [ + [ + 7, + 20 + ], + "s5", + "play-chunk-msg" + ] + ], + "str-ambient-stop": [ + [ + [ + 7, + 20 + ], + "s5", + "play-chunk-msg" + ] + ], + "str-load": [ + [ + [ + 18, + 44 + ], + "s2", + "load-chunk-msg" + ] ], - "dgo-load-begin": [[[19, 43], "s1", "load-dgo-msg"]], - "dgo-load-continue": [[[5, 23], "gp", "load-dgo-msg"]], - "dgo-load-get-next": [[[14, 31], "v1", "load-dgo-msg"]], - "str-ambient-play": [[[7, 20], "s5", "play-chunk-msg"]], - "str-ambient-stop": [[[7, 20], "s5", "play-chunk-msg"]], - "str-load": [[[18, 44], "s2", "load-chunk-msg"]], "str-load-status": [ - [[18, 22], "v1", "load-chunk-msg"], - [26, "v1", "load-chunk-msg"] + [ + [ + 18, + 22 + ], + "v1", + "load-chunk-msg" + ], + [ + 26, + "v1", + "load-chunk-msg" + ] + ], + "str-play-async": [ + [ + [ + 7, + 40 + ], + "s2", + "play-chunk-msg" + ] + ], + "str-play-queue": [ + [ + [ + 7, + 98 + ], + "s4", + "play-chunk-msg" + ] + ], + "str-play-stop": [ + [ + [ + 7, + 36 + ], + "s4", + "play-chunk-msg" + ] ], - "str-play-async": [[[7, 40], "s2", "play-chunk-msg"]], - "str-play-queue": [[[7, 98], "s4", "play-chunk-msg"]], - "str-play-stop": [[[7, 36], "s4", "play-chunk-msg"]], "cube-root": [ - [17, "f0", "float"], - [17, "f1", "float"], - [18, "f0", "float"], - [18, "f1", "float"], - [[23, 32], "f0", "float"] + [ + 17, + "f0", + "float" + ], + [ + 17, + "f1", + "float" + ], + [ + 18, + "f0", + "float" + ], + [ + 18, + "f1", + "float" + ], + [ + [ + 23, + 32 + ], + "f0", + "float" + ] ], "log2f": [ - [12, "f0", "float"], - [12, "f1", "float"], - [19, "f0", "float"], - [19, "f1", "float"] + [ + 12, + "f0", + "float" + ], + [ + 12, + "f1", + "float" + ], + [ + 19, + "f0", + "float" + ], + [ + 19, + "f1", + "float" + ] ], "logf": [ - [12, "f0", "float"], - [12, "f1", "float"], - [19, "f0", "float"], - [19, "f1", "float"] + [ + 12, + "f0", + "float" + ], + [ + 12, + "f1", + "float" + ], + [ + 19, + "f0", + "float" + ], + [ + 19, + "f1", + "float" + ] ], "debug-menu-find-from-template": [ - [9, "s5", "string"], - [10, "s4", "debug-menu-item"], - [18, "s4", "debug-menu-item-submenu"], - [3, "s5", "debug-menu"] + [ + 9, + "s5", + "string" + ], + [ + 10, + "s4", + "debug-menu-item" + ], + [ + 18, + "s4", + "debug-menu-item-submenu" + ], + [ + 3, + "s5", + "debug-menu" + ] + ], + "debug-menu-func-decode": [ + [ + 18, + "a0", + "symbol" + ] ], - "debug-menu-func-decode": [[18, "a0", "symbol"]], "debug-menu-item-get-max-width": [ - [5, "a0", "debug-menu-item-submenu"], - [20, "a0", "debug-menu-item-var"] + [ + 5, + "a0", + "debug-menu-item-submenu" + ], + [ + 20, + "a0", + "debug-menu-item-var" + ] ], "debug-menu-item-var-joypad-handler": [ - [206, "a1", "int"], - [207, "v1", "int"] + [ + 206, + "a1", + "int" + ], + [ + 207, + "v1", + "int" + ] + ], + "debug-menu-item-var-make-float": [ + [ + 32, + "f0", + "int" + ] ], - "debug-menu-item-var-make-float": [[32, "f0", "int"]], "debug-menu-item-var-update-display-str": [ - [48, "v1", "int"], - [63, "v1", "int"], - [68, "v1", "int"], - [46, "v1", "int"], - [45, "v1", "int"], - [65, "v1", "int"], - [66, "v1", "int"] + [ + 48, + "v1", + "int" + ], + [ + 63, + "v1", + "int" + ], + [ + 68, + "v1", + "int" + ], + [ + 46, + "v1", + "int" + ], + [ + 45, + "v1", + "int" + ], + [ + 65, + "v1", + "int" + ], + [ + 66, + "v1", + "int" + ] + ], + "debug-menu-rebuild": [ + [ + 7, + "a0", + "debug-menu-item" + ] ], - "debug-menu-rebuild": [[7, "a0", "debug-menu-item"]], "debug-menu-send-msg": [ - [17, "s2", "debug-menu-item-submenu"], - [12, "s2", "debug-menu-item"] + [ + 17, + "s2", + "debug-menu-item-submenu" + ], + [ + 12, + "s2", + "debug-menu-item" + ] + ], + "(method 10 mysql-nav-node)": [ + [ + 4, + "v1", + "mysql-nav-edge" + ] ], - "(method 10 mysql-nav-node)": [[4, "v1", "mysql-nav-edge"]], "(method 19 mysql-nav-graph)": [ - [42, "a0", "mysql-nav-edge"], - [46, "a0", "mysql-nav-edge"], - [60, "a0", "mysql-nav-edge"] + [ + 42, + "a0", + "mysql-nav-edge" + ], + [ + 46, + "a0", + "mysql-nav-edge" + ], + [ + 60, + "a0", + "mysql-nav-edge" + ] ], "joint-channel-float-delete!": [ - [7, "a0", "pointer"], - [7, "a1", "pointer"] + [ + 7, + "a0", + "pointer" + ], + [ + 7, + "a1", + "pointer" + ] + ], + "num-func-chan": [ + [ + 7, + "v1", + "joint-control-channel" + ] + ], + "ramdisk-load": [ + [ + [ + 7, + 12 + ], + "v1", + "ramdisk-rpc-load" + ] + ], + "(method 15 res-lump)": [ + [ + 132, + "s5", + "res-tag-pair" + ] ], - "num-func-chan": [[7, "v1", "joint-control-channel"]], - "ramdisk-load": [[[7, 12], "v1", "ramdisk-rpc-load"]], - "(method 15 res-lump)": [[132, "s5", "res-tag-pair"]], "(method 16 res-lump)": [ - [22, "t1", "(pointer uint64)"], - [29, "t2", "(pointer uint64)"] + [ + 22, + "t1", + "(pointer uint64)" + ], + [ + 29, + "t2", + "(pointer uint64)" + ] + ], + "(method 17 res-lump)": [ + [ + 22, + "s4", + "(pointer pointer)" + ] + ], + "(method 18 res-lump)": [ + [ + "_stack_", + 16, + "object" + ] ], - "(method 17 res-lump)": [[22, "s4", "(pointer pointer)"]], - "(method 18 res-lump)": [["_stack_", 16, "object"]], "(method 19 res-lump)": [ - [38, "t2", "int"], - [38, "a2", "int"] + [ + 38, + "t2", + "int" + ], + [ + 38, + "a2", + "int" + ] + ], + "(method 20 res-lump)": [ + [ + 341, + "t0", + "(pointer uint128)" + ] ], - "(method 20 res-lump)": [[341, "t0", "(pointer uint128)"]], "(method 21 res-lump)": [ - ["_stack_", 16, "res-tag"], - ["_stack_", 32, "res-tag"] + [ + "_stack_", + 16, + "res-tag" + ], + [ + "_stack_", + 32, + "res-tag" + ] + ], + "(method 0 script-context)": [ + [ + [ + 8, + 17 + ], + "v0", + "script-context" + ] ], - "(method 0 script-context)": [[[8, 17], "v0", "script-context"]], "shadow-vu1-add-matrix": [ - [[11, 19], "a3", "dma-packet"], - [[26, 30], "v1", "matrix"] + [ + [ + 11, + 19 + ], + "a3", + "dma-packet" + ], + [ + [ + 26, + 30 + ], + "v1", + "matrix" + ] ], "shrubbery-login-post-texture": [ - [[13, 15], "a3", "qword"], - [16, "a3", "pointer"], - [24, "a3", "pointer"], - [[17, 23], "a3", "qword"], - [[13, 23], "a1", "qword"], - [14, "a2", "qword"], - [[27, 29], "a3", "qword"], - [[27, 29], "a1", "qword"], - [[35, 37], "a3", "qword"], - [[35, 37], "a2", "qword"] + [ + [ + 13, + 15 + ], + "a3", + "qword" + ], + [ + 16, + "a3", + "pointer" + ], + [ + 24, + "a3", + "pointer" + ], + [ + [ + 17, + 23 + ], + "a3", + "qword" + ], + [ + [ + 13, + 23 + ], + "a1", + "qword" + ], + [ + 14, + "a2", + "qword" + ], + [ + [ + 27, + 29 + ], + "a3", + "qword" + ], + [ + [ + 27, + 29 + ], + "a1", + "qword" + ], + [ + [ + 35, + 37 + ], + "a3", + "qword" + ], + [ + [ + 35, + 37 + ], + "a2", + "qword" + ] + ], + "(method 2 sparticle-cpuinfo)": [ + [ + 14, + "f0", + "float" + ] ], - "(method 2 sparticle-cpuinfo)": [[14, "f0", "float"]], "sprite-add-2d-chunk": [ - [[7, 21], "a0", "dma-packet"], - [[33, 53], "a0", "dma-packet"], - [[57, 77], "a0", "dma-packet"], - [[78, 88], "v1", "dma-packet"], - [65, "a3", "int"] + [ + [ + 7, + 21 + ], + "a0", + "dma-packet" + ], + [ + [ + 33, + 53 + ], + "a0", + "dma-packet" + ], + [ + [ + 57, + 77 + ], + "a0", + "dma-packet" + ], + [ + [ + 78, + 88 + ], + "v1", + "dma-packet" + ], + [ + 65, + "a3", + "int" + ] ], "sprite-add-3d-chunk": [ - [[7, 21], "a0", "dma-packet"], - [[33, 53], "a0", "dma-packet"], - [[57, 77], "a0", "dma-packet"], - [[78, 88], "v1", "dma-packet"], - [65, "a3", "int"] + [ + [ + 7, + 21 + ], + "a0", + "dma-packet" + ], + [ + [ + 33, + 53 + ], + "a0", + "dma-packet" + ], + [ + [ + 57, + 77 + ], + "a0", + "dma-packet" + ], + [ + [ + 78, + 88 + ], + "v1", + "dma-packet" + ], + [ + 65, + "a3", + "int" + ] + ], + "sprite-add-frame-data": [ + [ + [ + 3, + 17 + ], + "a0", + "dma-packet" + ] + ], + "add-shader-to-dma": [ + [ + [ + 6, + 8 + ], + "v1", + "(pointer uint32)" + ] ], - "sprite-add-frame-data": [[[3, 17], "a0", "dma-packet"]], - "add-shader-to-dma": [[[6, 8], "v1", "(pointer uint32)"]], "sprite-glow-add-simple-sprite": [ - [[0, 33], "v1", "sprite-glow-ref-template"] + [ + [ + 0, + 33 + ], + "v1", + "sprite-glow-ref-template" + ] + ], + "sprite-glow-add-sprite": [ + [ + [ + 0, + 33 + ], + "v1", + "sprite-glow-cnt-template" + ] ], - "sprite-glow-add-sprite": [[[0, 33], "v1", "sprite-glow-cnt-template"]], "(method 9 texture-anim-layer)": [ - [5, "v1", "symbol"], - [11, "v1", "symbol"] + [ + 5, + "v1", + "symbol" + ], + [ + 11, + "v1", + "symbol" + ] ], "add-tfrag-data": [ - [[3, 17], "a0", "dma-packet"], - [[24, 31], "v1", "dma-packet"] + [ + [ + 3, + 17 + ], + "a0", + "dma-packet" + ], + [ + [ + 24, + 31 + ], + "v1", + "dma-packet" + ] ], "tfrag-end-buffer": [ - [[21, 28], "a2", "dma-packet"], - [[31, 38], "a0", "(pointer vif-tag)"], - [[38, 42], "a0", "(pointer int32)"], - [[43, 49], "a0", "(pointer vif-tag)"] + [ + [ + 21, + 28 + ], + "a2", + "dma-packet" + ], + [ + [ + 31, + 38 + ], + "a0", + "(pointer vif-tag)" + ], + [ + [ + 38, + 42 + ], + "a0", + "(pointer int32)" + ], + [ + [ + 43, + 49 + ], + "a0", + "(pointer vif-tag)" + ] + ], + "(method 9 clock)": [ + [ + 47, + "v1", + "float" + ] ], - "(method 9 clock)": [[47, "v1", "float"]], "vector4-array-add!": [ - [11, "s5", "(inline-array vector4)"], - [12, "s4", "(inline-array vector4)"], - [13, "gp", "(inline-array vector4)"] + [ + 11, + "s5", + "(inline-array vector4)" + ], + [ + 12, + "s4", + "(inline-array vector4)" + ], + [ + 13, + "gp", + "(inline-array vector4)" + ] ], "vector4-array-lerp!": [ - [13, "s5", "(inline-array vector4)"], - [14, "s4", "(inline-array vector4)"], - [15, "gp", "(inline-array vector4)"] + [ + 13, + "s5", + "(inline-array vector4)" + ], + [ + 14, + "s4", + "(inline-array vector4)" + ], + [ + 15, + "gp", + "(inline-array vector4)" + ] ], "vector4-array-madd!": [ - [13, "s5", "(inline-array vector4)"], - [14, "s4", "(inline-array vector4)"], - [15, "gp", "(inline-array vector4)"] + [ + 13, + "s5", + "(inline-array vector4)" + ], + [ + 14, + "s4", + "(inline-array vector4)" + ], + [ + 15, + "gp", + "(inline-array vector4)" + ] ], "vector4-array-msub!": [ - [13, "s5", "(inline-array vector4)"], - [14, "s4", "(inline-array vector4)"], - [15, "gp", "(inline-array vector4)"] + [ + 13, + "s5", + "(inline-array vector4)" + ], + [ + 14, + "s4", + "(inline-array vector4)" + ], + [ + 15, + "gp", + "(inline-array vector4)" + ] ], "vector4-array-mul!": [ - [11, "s5", "(inline-array vector4)"], - [12, "s4", "(inline-array vector4)"], - [13, "gp", "(inline-array vector4)"] + [ + 11, + "s5", + "(inline-array vector4)" + ], + [ + 12, + "s4", + "(inline-array vector4)" + ], + [ + 13, + "gp", + "(inline-array vector4)" + ] ], "vector4-array-scale!": [ - [11, "s5", "(inline-array vector4)"], - [12, "gp", "(inline-array vector4)"] + [ + 11, + "s5", + "(inline-array vector4)" + ], + [ + 12, + "gp", + "(inline-array vector4)" + ] ], "vector4-array-sub!": [ - [11, "s5", "(inline-array vector4)"], - [12, "s4", "(inline-array vector4)"], - [13, "gp", "(inline-array vector4)"] + [ + 11, + "s5", + "(inline-array vector4)" + ], + [ + 12, + "s4", + "(inline-array vector4)" + ], + [ + 13, + "gp", + "(inline-array vector4)" + ] ], "ellipsoid-random-point-on!": [ - [19, "v1", "float"], - [44, "v1", "float"] + [ + 19, + "v1", + "float" + ], + [ + 44, + "v1", + "float" + ] + ], + "(method 15 engine)": [ + [ + [ + 0, + 36 + ], + "v1", + "connection" + ] + ], + "(method 10 connection)": [ + [ + 8, + "a0", + "pointer" + ] ], - "(method 15 engine)": [[[0, 36], "v1", "connection"]], - "(method 10 connection)": [[8, "a0", "pointer"]], "(method 3 connection-minimap)": [ - [97, "a3", "float"], - [[97, 99], "a3", "float"], - [97, "f0", "float"] + [ + 97, + "a3", + "float" + ], + [ + [ + 97, + 99 + ], + "a3", + "float" + ], + [ + 97, + "f0", + "float" + ] + ], + "(method 0 prim-strip)": [ + [ + [ + 97, + 117 + ], + "a0", + "vector" + ], + [ + 94, + "a1", + "(inline-array prim-vertex)" + ] + ], + "(method 0 fact-info-target)": [ + [ + 3, + "v0", + "fact-info-target" + ] + ], + "(method 0 fact-info-crate)": [ + [ + 3, + "v0", + "fact-info-crate" + ] ], - "(method 0 prim-strip)": [[[101, 121], "a0", "vector"]], - "(method 0 fact-info-target)": [[3, "v0", "fact-info-target"]], - "(method 0 fact-info-crate)": [[3, "v0", "fact-info-crate"]], "(method 0 fact-info-enemy)": [ - [7, "v0", "fact-info-enemy"], - ["_stack_", 16, "res-tag"], - ["_stack_", 32, "res-tag"] + [ + 7, + "v0", + "fact-info-enemy" + ], + [ + "_stack_", + 16, + "res-tag" + ], + [ + "_stack_", + 32, + "res-tag" + ] ], "(method 0 fact-info)": [ - [87, "v1", "(pointer int32)"], - [11, "v1", "res-lump"] + [ + 87, + "v1", + "(pointer int32)" + ], + [ + 11, + "v1", + "res-lump" + ] + ], + "(method 0 collide-shape-moving)": [ + [ + [ + 5, + 12 + ], + "v0", + "collide-shape-moving" + ] + ], + "joint-mod-spinner-callback": [ + [ + [ + 2, + 63 + ], + "gp", + "joint-mod-spinner" + ] + ], + "joint-mod-add-local-callback": [ + [ + [ + 1, + 37 + ], + "s4", + "joint-mod-add-local" + ] + ], + "(top-level-login eye-h)": [ + [ + 76, + "a3", + "eye-control" + ] ], - "(method 0 collide-shape-moving)": [[[5, 12], "v0", "collide-shape-moving"]], - "joint-mod-spinner-callback": [[[2, 63], "gp", "joint-mod-spinner"]], - "joint-mod-add-local-callback": [[[1, 37], "s4", "joint-mod-add-local"]], - "(top-level-login eye-h)": [[76, "a3", "eye-control"]], "joint-mod-rotate-local-callback": [ - [[2, 16], "v1", "joint-mod-rotate-local"] + [ + [ + 2, + 16 + ], + "v1", + "joint-mod-rotate-local" + ] ], "joint-mod-trans-rot-local-callback": [ - [[2, 16], "v1", "joint-mod-trans-rot-local"] + [ + [ + 2, + 16 + ], + "v1", + "joint-mod-trans-rot-local" + ] ], "(method 8 res-lump)": [ - [258, "s0", "array"], - [[157, 239], "s0", "(array object)"] + [ + 258, + "s0", + "array" + ], + [ + [ + 157, + 239 + ], + "s0", + "(array object)" + ] ], "(method 2 array)": [ - [23, "gp", "(array int32)"], - [43, "gp", "(array uint32)"], - [63, "gp", "(array int64)"], - [83, "gp", "(array uint64)"], - [102, "gp", "(array int8)"], - [121, "gp", "(array uint8)"], - [141, "gp", "(array int16)"], - [161, "gp", "(array uint16)"], - [186, "gp", "(array uint128)"], - [204, "gp", "(array int32)"], - [223, "gp", "(array float)"], - [232, "gp", "(array float)"], - [249, "gp", "(array basic)"], - [258, "gp", "(array basic)"] + [ + 23, + "gp", + "(array int32)" + ], + [ + 43, + "gp", + "(array uint32)" + ], + [ + 63, + "gp", + "(array int64)" + ], + [ + 83, + "gp", + "(array uint64)" + ], + [ + 102, + "gp", + "(array int8)" + ], + [ + 121, + "gp", + "(array uint8)" + ], + [ + 141, + "gp", + "(array int16)" + ], + [ + 161, + "gp", + "(array uint16)" + ], + [ + 186, + "gp", + "(array uint128)" + ], + [ + 204, + "gp", + "(array int32)" + ], + [ + 223, + "gp", + "(array float)" + ], + [ + 232, + "gp", + "(array float)" + ], + [ + 249, + "gp", + "(array basic)" + ], + [ + 258, + "gp", + "(array basic)" + ] ], "(method 3 array)": [ - [51, "gp", "(array int32)"], - [69, "gp", "(array uint32)"], - [87, "gp", "(array int64)"], - [105, "gp", "(array uint64)"], - [122, "gp", "(array int8)"], - [139, "gp", "(array int8)"], - [157, "gp", "(array int16)"], - [175, "gp", "(array uint16)"], - [198, "gp", "(array uint128)"], - [214, "gp", "(array int32)"], - [233, "gp", "(array float)"], - [250, "gp", "(array basic)"] + [ + 51, + "gp", + "(array int32)" + ], + [ + 69, + "gp", + "(array uint32)" + ], + [ + 87, + "gp", + "(array int64)" + ], + [ + 105, + "gp", + "(array uint64)" + ], + [ + 122, + "gp", + "(array int8)" + ], + [ + 139, + "gp", + "(array int8)" + ], + [ + 157, + "gp", + "(array int16)" + ], + [ + 175, + "gp", + "(array uint16)" + ], + [ + 198, + "gp", + "(array uint128)" + ], + [ + 214, + "gp", + "(array int32)" + ], + [ + 233, + "gp", + "(array float)" + ], + [ + 250, + "gp", + "(array basic)" + ] + ], + "history-draw": [ + [ + 16, + "a1", + "int" + ], + [ + 151, + "a0", + "uint" + ], + [ + "_stack_", + 24, + "float" + ] + ], + "dgo-load-cancel": [ + [ + [ + 3, + 8 + ], + "v0", + "sound-rpc-cancel-dgo" + ] + ], + "desaturate-mood-colors": [ + [ + [ + 20, + 90 + ], + "a0", + "(inline-array mood-color)" + ] ], "(method 9 bounding-box)": [ - [13, "a1", "(inline-array sphere)"], - [24, "a1", "(inline-array sphere)"], - [31, "a1", "(inline-array sphere)"], - [38, "a1", "(inline-array sphere)"] + [ + 13, + "a1", + "(inline-array sphere)" + ], + [ + 24, + "a1", + "(inline-array sphere)" + ], + [ + 31, + "a1", + "(inline-array sphere)" + ], + [ + 38, + "a1", + "(inline-array sphere)" + ] ], "generate-rand-vector-on-sphere": [ - [12, "v1", "float"], - [28, "v1", "float"] + [ + 12, + "v1", + "float" + ], + [ + 28, + "v1", + "float" + ] + ], + "vector-segment-distance-point!": [ + [ + [ + 21, + 30 + ], + "f1", + "float" + ] ], - "vector-segment-distance-point!": [[[21, 30], "f1", "float"]], "string-cat-to-last-char": [ - [3, "s5", "(pointer uint8)"], - [4, "s5", "string"] + [ + 3, + "s5", + "(pointer uint8)" + ], + [ + 4, + "s5", + "string" + ] ], "to-upper": [ - [6, "a0", "(pointer uint8)"], - [8, "a0", "string"] + [ + 6, + "a0", + "(pointer uint8)" + ], + [ + 8, + "a0", + "string" + ] ], "mem-copy!": [ - [[18, 69], "s5", "(pointer uint128)"], - [[18, 69], "s4", "(pointer uint128)"] + [ + [ + 18, + 69 + ], + "s5", + "(pointer uint128)" + ], + [ + [ + 18, + 69 + ], + "s4", + "(pointer uint128)" + ] + ], + "(method 0 ambient-sound)": [ + [ + 85, + "s3", + "sound-spec" + ], + [ + 62, + "v0", + "(pointer float)" + ] + ], + "write-msg-map-rec": [ + [ + 12, + "t9", + "(function process-nettable net-process-class-info none)" + ], + [ + 27, + "t9", + "(function process-nettable net-process-class-info none)" + ], + [ + [ + 5, + 28 + ], + "s5", + "(function process-nettable net-process-class-info none)" + ] + ], + "dgo-load-link": [ + [ + 12, + "s4", + "uint" + ], + [ + 22, + "s4", + "uint" + ], + [ + 60, + "s4", + "uint" + ], + [ + 65, + "s4", + "uint" + ], + [ + 32, + "s4", + "uint" + ], + [ + 42, + "s4", + "uint" + ] + ], + "(method 10 profile-array)": [ + [ + [ + 71, + 76 + ], + "a0", + "(pointer uint128)" + ], + [ + [ + 75, + 85 + ], + "a1", + "vector4w" + ], + [ + [ + 84, + 92 + ], + "a1", + "vector4w" + ], + [ + [ + 92, + 99 + ], + "a0", + "vector4w" + ], + [ + [ + 115, + 120 + ], + "a1", + "(pointer uint128)" + ], + [ + [ + 119, + 129 + ], + "a2", + "vector4w" + ], + [ + [ + 128, + 139 + ], + "a2", + "vector4w" + ], + [ + [ + 139, + 152 + ], + "a1", + "vector4w" + ], + [ + [ + 189, + 194 + ], + "t2", + "(pointer uint128)" + ], + [ + [ + 193, + 228 + ], + "t4", + "vector4w" + ], + [ + [ + 227, + 234 + ], + "a2", + "vector4w" + ], + [ + [ + 233, + 240 + ], + "a2", + "vector4w" + ] + ], + "(method 0 path-control)": [["_stack_", 16, "res-tag"]], + "(method 0 curve-control)": [["_stack_", 16, "res-tag"]], + "(method 10 manipulator)": [ + [ + 53, + "v1", + "float" + ] ] -} +} \ No newline at end of file diff --git a/decompiler/util/data_decompile.cpp b/decompiler/util/data_decompile.cpp index e38c0834c4..dbc0f73b4c 100644 --- a/decompiler/util/data_decompile.cpp +++ b/decompiler/util/data_decompile.cpp @@ -1072,6 +1072,10 @@ const std::unordered_map< { {"lightning-probe-vars", {{"probe-dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}}}, + {"sparticle-launcher", + {{"init-specs", ArrayFieldDecompMeta(TypeSpec("sp-field-init-spec"), 16)}}}, + {"sparticle-launch-group", + {{"launcher", ArrayFieldDecompMeta(TypeSpec("sparticle-group-item"), 32)}}}, }}}; goos::Object decompile_structure(const TypeSpec& type, diff --git a/goal_src/jak3/engine/ui/text-h.gc b/goal_src/jak3/engine/ui/text-h.gc index 6f4ed4e613..43661f894e 100644 --- a/goal_src/jak3/engine/ui/text-h.gc +++ b/goal_src/jak3/engine/ui/text-h.gc @@ -1553,7 +1553,6 @@ (progress-fps-disclaimer-warning #x1314) (progress-fps-disclaimer #x1315) (progress-highscores-local-score #x1316) - ;; gap here if you want to use it (progress-graphics-ps2 #x1333) (progress-graphics-actor-culling #x1334) (progress-graphics-force-envmap #x1335) @@ -1612,7 +1611,6 @@ (trick-board-lightjak-swoop #x136a) (trick-board-lightjak-freeze #x136b) (trick-board-lightjak-shield #x136c) - ) ;; ---text-id diff --git a/goal_src/jakx/engine/ai/traffic-h.gc b/goal_src/jakx/engine/ai/traffic-h.gc index bc837385da..7b1eb4aa07 100644 --- a/goal_src/jakx/engine/ai/traffic-h.gc +++ b/goal_src/jakx/engine/ai/traffic-h.gc @@ -5,5 +5,415 @@ ;; name in dgo: traffic-h ;; dgos: ENGINE, GAME +(declare-type vehicle-manager process) + +;; +++driver-type +(defenum driver-type + :type uint8 + (d-jak 0) + (d-ashelin 1) + (d-razer 2) + (d-klever 3) + (d-kiera 4) + (d-thug-a 5) + (d-thug-b 6) + (d-thug-c 7) + (d-taryn 8) + (d-torn 9) + (d-sig 10) + (d-ur-86 11) + (d-kaeden 12) + (d-rayn 13) + (d-ratchet 14) + (d-jaka 15) + (d-jakb 16) + (d-jakc 17) + (d-daxter 18) + (d-gtblitz 19) + (d-pecker 20) + (d-ximon 21) + (d-osmo 22) + (none 23) +) +;; ---driver-type + + +;; +++traffic-vehicle-type +(defenum traffic-vehicle-type + :type uint8 + (v-mongoose 0) + (v-falcon 1) + (v-wombat 2) + (v-possum 3) + (v-bobcat 4) + (v-cougar 5) + (v-wolf 6) + (v-bear 7) + (v-leopard 8) + (v-panther 9) + (v-tiger 10) + (v-cheetah 11) + (v-gila 12) + (v-snake 13) + (v-daxtermobile 14) + (v-drone 15) + (v-dart 16) + (test-bike 17) + (test-car 18) + (none 19) + (any 20) +) +;; ---traffic-vehicle-type + +(declare-type driver-jak driver) +(declare-type driver-ashelin driver) +(declare-type driver-razer driver) +(declare-type driver-klever driver) +(declare-type driver-kiera driver) +(declare-type driver-thug-a driver) +(declare-type driver-thug-b driver) +(declare-type driver-thug-c driver) +(declare-type driver-taryn driver) +(declare-type driver-torn driver) +(declare-type driver-sig driver) +(declare-type driver-ur-86 driver) +(declare-type driver-kaeden driver) +(declare-type driver-rayn driver) +(declare-type driver-ratchet driver) +(declare-type driver-jaka driver) +(declare-type driver-jakb driver) +(declare-type driver-jakc driver) +(declare-type driver-daxter driver) +(declare-type driver-gtblitz driver) +(declare-type driver-pecker driver) +(declare-type driver-ximon driver) +(declare-type driver-osmo driver) + ;; DECOMP BEGINS +(define *vehicle-manager* (the-as vehicle-manager #f)) + +(defun-debug vehicle-type->string ((arg0 traffic-vehicle-type)) + (case arg0 + (((traffic-vehicle-type v-mongoose)) + "v-mongoose" + ) + (((traffic-vehicle-type v-wombat)) + "v-wombat" + ) + (((traffic-vehicle-type v-snake)) + "v-snake" + ) + (((traffic-vehicle-type v-bobcat)) + "v-bobcat" + ) + (((traffic-vehicle-type v-panther)) + "v-panther" + ) + (((traffic-vehicle-type v-dart)) + "v-dart" + ) + (((traffic-vehicle-type v-daxtermobile)) + "v-daxtermobile" + ) + (((traffic-vehicle-type v-cheetah)) + "v-cheetah" + ) + (((traffic-vehicle-type test-bike)) + "test-bike" + ) + (((traffic-vehicle-type v-bear)) + "v-bear" + ) + (((traffic-vehicle-type v-falcon)) + "v-falcon" + ) + (((traffic-vehicle-type v-gila)) + "v-gila" + ) + (((traffic-vehicle-type any)) + "any" + ) + (((traffic-vehicle-type v-drone)) + "v-drone" + ) + (((traffic-vehicle-type v-possum)) + "v-possum" + ) + (((traffic-vehicle-type test-car)) + "test-car" + ) + (((traffic-vehicle-type v-leopard)) + "v-leopard" + ) + (((traffic-vehicle-type none)) + "none" + ) + (((traffic-vehicle-type v-wolf)) + "v-wolf" + ) + (((traffic-vehicle-type v-tiger)) + "v-tiger" + ) + (((traffic-vehicle-type v-cougar)) + "v-cougar" + ) + (else + "*unknown*" + ) + ) + ) + +(defun-debug driver-type->string ((arg0 driver-type)) + (case arg0 + (((driver-type d-taryn)) + "d-taryn" + ) + (((driver-type d-ratchet)) + "d-ratchet" + ) + (((driver-type d-klever)) + "d-klever" + ) + (((driver-type d-jakb)) + "d-jakb" + ) + (((driver-type d-pecker)) + "d-pecker" + ) + (((driver-type d-razer)) + "d-razer" + ) + (((driver-type d-thug-b)) + "d-thug-b" + ) + (((driver-type d-sig)) + "d-sig" + ) + (((driver-type d-daxter)) + "d-daxter" + ) + (((driver-type d-torn)) + "d-torn" + ) + (((driver-type d-kiera)) + "d-kiera" + ) + (((driver-type d-osmo)) + "d-osmo" + ) + (((driver-type d-thug-c)) + "d-thug-c" + ) + (((driver-type d-kaeden)) + "d-kaeden" + ) + (((driver-type d-ashelin)) + "d-ashelin" + ) + (((driver-type d-ur-86)) + "d-ur-86" + ) + (((driver-type d-jak)) + "d-jak" + ) + (((driver-type none)) + "none" + ) + (((driver-type d-jaka)) + "d-jaka" + ) + (((driver-type d-jakc)) + "d-jakc" + ) + (((driver-type d-rayn)) + "d-rayn" + ) + (((driver-type d-thug-a)) + "d-thug-a" + ) + (((driver-type d-ximon)) + "d-ximon" + ) + (((driver-type d-gtblitz)) + "d-gtblitz" + ) + (else + "*unknown*" + ) + ) + ) + +(defun type-from-driver-type ((arg0 driver-type)) + (case arg0 + (((driver-type d-jak)) + driver-jak + ) + (((driver-type d-ashelin)) + driver-ashelin + ) + (((driver-type d-razer)) + driver-razer + ) + (((driver-type d-klever)) + driver-klever + ) + (((driver-type d-kiera)) + driver-kiera + ) + (((driver-type d-thug-a)) + driver-thug-a + ) + (((driver-type d-thug-b)) + driver-thug-b + ) + (((driver-type d-thug-c)) + driver-thug-c + ) + (((driver-type d-taryn)) + driver-taryn + ) + (((driver-type d-torn)) + driver-torn + ) + (((driver-type d-sig)) + driver-sig + ) + (((driver-type d-ur-86)) + driver-ur-86 + ) + (((driver-type d-kaeden)) + driver-kaeden + ) + (((driver-type d-rayn)) + driver-rayn + ) + (((driver-type d-ratchet)) + driver-ratchet + ) + (((driver-type d-jaka)) + driver-jaka + ) + (((driver-type d-jakb)) + driver-jakb + ) + (((driver-type d-jakc)) + driver-jakc + ) + (((driver-type d-daxter)) + driver-daxter + ) + (((driver-type d-gtblitz)) + driver-gtblitz + ) + (((driver-type d-pecker)) + driver-pecker + ) + (((driver-type d-ximon)) + driver-ximon + ) + (((driver-type d-osmo)) + driver-osmo + ) + (else + (the-as type #f) + ) + ) + ) + +(defun level-from-driver-type ((arg0 driver-type)) + (case arg0 + (((driver-type d-jak)) + 'jaklev + ) + (((driver-type d-ashelin)) + 'ashlev + ) + (((driver-type d-razer)) + 'razlev + ) + (((driver-type d-klever)) + 'klelev + ) + (((driver-type d-kiera)) + 'kielev + ) + (((driver-type d-thug-a)) + 'thalev + ) + (((driver-type d-thug-b)) + 'thblev + ) + (((driver-type d-thug-c)) + 'thclev + ) + (((driver-type d-taryn)) + 'tarlev + ) + (((driver-type d-torn)) + 'torlev + ) + (((driver-type d-sig)) + 'siglev + ) + (((driver-type d-ur-86)) + 'ur8lev + ) + (((driver-type d-kaeden)) + 'kaelev + ) + (((driver-type d-rayn)) + 'raylev + ) + (((driver-type d-ratchet)) + 'ratlev + ) + (((driver-type d-jaka)) + 'jkalev + ) + (((driver-type d-jakb)) + 'jkblev + ) + (((driver-type d-jakc)) + 'jkclev + ) + (((driver-type d-daxter)) + 'daxlev + ) + (((driver-type d-gtblitz)) + 'gtblev + ) + (((driver-type d-pecker)) + 'peclev + ) + (((driver-type d-ximon)) + 'ximlev + ) + (((driver-type d-osmo)) + 'osmlev + ) + (else + #f + ) + ) + ) + +(deftype vehicle-spawn-params (structure) + ((behavior uint64) + (nav-mesh basic) + (position vector :inline) + (rotation quaternion :inline) + (velocity vector :inline) + (handle uint64) + (handle-parent uint64) + (user-data uint32) + (entity basic) + (flags uint32) + (player-id int8) + (level-slot int8) + (driver-type driver-type) + (driver-slot int8) + (impact-callback basic) + (proc basic) + ) + ) diff --git a/goal_src/jakx/engine/anim/joint-mod-h.gc b/goal_src/jakx/engine/anim/joint-mod-h.gc index df3d37d0fe..d7572ea5c3 100644 --- a/goal_src/jakx/engine/anim/joint-mod-h.gc +++ b/goal_src/jakx/engine/anim/joint-mod-h.gc @@ -76,3 +76,55 @@ ;; DECOMP BEGINS + +(deftype joint-mod (basic) + "Utility to modify a joint transform from code, rather than just getting it from animation. + This is used to make jak look toward an enemy, for example." + ((mode joint-mod-mode :offset-assert 4) ;; guessed by decompiler + (process process-drawable :offset-assert 8) ;; guessed by decompiler + (joint cspace :offset-assert 12) + (target vector :inline :offset-assert 16) + (twist vector :inline :offset-assert 32) + (twist-max vector :inline :offset-assert 48) + (extra-twist degrees :offset-assert 40 :overlay-at (-> twist z)) ;; degrees + (track-mode track-mode :offset-assert 44 :overlay-at (-> twist w)) + (look-at-count uint16 :offset 46) + (twist-range-x meters :offset 56) + (twist-range-y meters :offset 60) + (twist-speed-x float :offset-assert 64) + (twist-speed-y float :offset-assert 68) + (trans vector :inline :offset-assert 80) + (smushy-old float :offset 80) + (smushy-off float :offset 84) + (smushyv float :offset 88) + (quat quaternion :inline :offset-assert 96) + (scale vector :inline :offset-assert 112) + (notice-time time-frame :offset-assert 128) ;; time-frame + (flex-blend float :offset-assert 136) + (blend float :offset-assert 140) + (old-blend float :offset-assert 144) + (max-dist meters :offset-assert 148) + (ignore-angle degrees :offset-assert 152) ;; degrees + (up uint8 :offset-assert 156) + (nose uint8 :offset-assert 157) + (ear uint8 :offset-assert 158) + (base-joint uint8 :offset-assert 159) + (base-nose uint8 :offset-assert 160) + (shutting-down? symbol :offset-assert 164) ;; guessed by decompiler + (parented-scale? symbol :offset-assert 168) ;; guessed by decompiler + ) + :method-count-assert 16 + :size-assert #xac + :flag-assert #x10000000ac + ;; field track-mode is likely a value type. + (:methods + (new (symbol type joint-mod-mode process-drawable int) _type_) ;; 0 + (mode-set! "Set the type of joint-mod and install the right callback." (_type_ joint-mod-mode) none) ;; 9 + (target-set! "Set the target position for look-at mode." (_type_ vector) none) ;; 10 + (look-at! "Activate joint mod to look at the process." (_type_ vector symbol process) none) ;; 11 + (reset-blend! "Set the blend to 0." (_type_) _type_) ;; 12 + (twist-set! "Set twist x,y,z. A value of #f will skip the set." (_type_ float float float) vector) ;; 13 + (trs-set! "Set translation, quaternion, scale. A value of #f will skip the set." (_type_ vector quaternion vector) none) ;; 14 + (shut-down "Disable the joint mod, possibly blending out depending on the type" (_type_) none) ;; 15 + ) + ) \ No newline at end of file diff --git a/goal_src/jakx/engine/collide/collide-func.gc b/goal_src/jakx/engine/collide/collide-func.gc index e4d5855012..7c532e9bee 100644 --- a/goal_src/jakx/engine/collide/collide-func.gc +++ b/goal_src/jakx/engine/collide/collide-func.gc @@ -5,5 +5,194 @@ ;; name in dgo: collide-func ;; dgos: ENGINE, GAME +(defun pc-port-raw-ray-sphere-implementation ((rad float) (vf1-val vector) (vf2-val vector)) + "This is one of the main primitives for collision. + Assumes a sphere of radius rad is at the origin. + Handles: + - miss (return MISS) + - behind (return MISS) + - too far away (return MISS) + - inside (return 0) + " + (local-vars + (v1-1 int) + (v1-2 int) + (v1-4 int) + (a0-1 float) + (a0-2 float) + (a0-3 int) + (a1-0 int) + ) + (rlet ((Q :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + (vf9 :class vf) + ) + (init-vf0-vector) + (.lvf vf1 (&-> vf1-val quad)) + (.lvf vf2 (&-> vf2-val quad)) + (.mov vf3 rad) + (.mul.vf vf4 vf2 vf2) + (.mul.vf vf3 vf3 vf3) + (.mul.vf vf6 vf1 vf1) + (.mul.vf vf5 vf2 vf1) + (.add.y.vf.x vf4 vf4 vf4) + (let ((result (the-as float 0))) + (.add.x.vf.y vf6 vf6 vf6) + (.sub.x.vf.z vf6 vf6 vf3) + (.add.z.vf.x vf4 vf4 vf4) + (.add.x.vf.y vf5 vf5 vf5) + (let ((v1-0 (the-as float 0))) + (.add.z.vf.y vf6 vf6 vf6) + (.div.vf Q vf0 vf4 :fsf #b11 :ftf #b0) + (.add.z.vf.y vf5 vf5 vf5) + (.mov a0-1 vf4) + (.mul.x.vf vf7 vf6 vf4) + (.mov a1-0 vf6) + (.mul.vf vf8 vf5 vf5) + (b! (< (the-as int a1-0) 0) cfg-7 :delay (set! a0-2 a0-1)) ;; in the sphere + (.mul.vf.w vf4 vf0 Q) + (.sub.vf vf9 vf8 vf7) + (b! (= a0-2 v1-0) cfg-6 :delay (.mov v1-1 vf5)) ;; bad denominator in division + ) + (.sqrt.vf Q vf9 :ftf #b1) + (b! (>= (the-as int v1-1) 0) cfg-6 :delay (.mov v1-2 vf9)) ;; wrong dir + (b! (< (the-as int v1-2) 0) cfg-6 :delay 1.0) ;; bad sqrt + (.add.x.vf vf6 vf5 vf4) + (.mov v1-4 vf6) + (.mul.vf vf6 vf6 vf6) + (.mul.vf.w vf9 vf0 Q) + (.sub.vf vf6 vf9 vf6) + (.add.w.vf.y vf9 vf5 vf9) + (.mov a0-3 vf6) + (.mul.w.vf.y vf9 vf9 vf4) + + ;; too far. + (b! (< (logand (the-as int v1-4) (the-as int a0-3)) 0) + cfg-6 + :delay (.sub.y.vf vf4 vf0 vf9) + ) + (b! #t cfg-7 :delay (.mov result vf4)) + (label cfg-6) + (set! result -100000000.0) + (label cfg-7) + (the-as float result) + ) + ) + ) + +(defmacro pc-port-do-raw-ray-sphere-intersect (rad vf1-val vf2-val) + "Calls to raw-ray-sphere-intersect should be replaced with this macro, + and this should be given vf1, vf2, which contain the origin and direction of the probe." + `(let ((vf1-storage (new 'stack-no-clear 'vector)) + (vf2-storage (new 'stack-no-clear 'vector)) + ) + (.svf (&-> vf1-storage quad) ,vf1-val) + (.svf (&-> vf2-storage quad) ,vf2-val) + (pc-port-raw-ray-sphere-implementation ,rad vf1-storage vf2-storage) + ) + ) + ;; DECOMP BEGINS +(defun ray-sphere-intersect ((ray-origin vector) (ray-dir vector) (sph-origin vector) (radius float)) + "Intersect a ray and sphere. Will return 0 if you are in the sphere, -huge number if you don't hit it. + Returns the length of the ray to the first intersection." + + ;; offset stuff as if the sphere is at the origin. + (rlet ((vf1 :class vf) + (vf2 :class vf) + ) + (.lvf vf1 (&-> ray-origin quad)) + (.lvf vf2 (&-> sph-origin quad)) + (.sub.vf vf1 vf1 vf2) ;; the sphere is at the origin in the actual intersection. + (.lvf vf2 (&-> ray-dir quad)) + ;;(raw-ray-sphere-intersect radius) + (pc-port-do-raw-ray-sphere-intersect radius vf1 vf2) + ) + ) + +(defun ray-cylinder-intersect ((ray-origin vector) (ray-dir vector) (cyl-origin vector) (cyl-axis vector) (cyl-rad float) (cyl-len float) (pt-out vector)) + "Intersect with a cylinder. + Currently this is untested." + (local-vars + (v0-1 float) + (v1-0 int) + (v1-2 int) + (a0-1 int) + (a0-2 int) + (a0-4 int) + (a0-5 int) + ) + (rlet ((vf1 :class vf) + (vf10 :class vf) + (vf11 :class vf) + (vf12 :class vf) + (vf13 :class vf) + (vf14 :class vf) + (vf15 :class vf) + (vf16 :class vf) + (vf17 :class vf) + (vf18 :class vf) + (vf19 :class vf) + (vf2 :class vf) + (vf20 :class vf) + (vf21 :class vf) + ) + (.lvf vf10 (&-> ray-origin quad)) + (.lvf vf12 (&-> cyl-origin quad)) + (.sub.vf vf15 vf10 vf12) + (.lvf vf11 (&-> ray-dir quad)) + (.lvf vf13 (&-> cyl-axis quad)) + (.mov vf14 cyl-len) + (.mul.vf vf16 vf15 vf13) + (.mul.vf vf17 vf11 vf13) + (.add.x.vf.y vf16 vf16 vf16) + (.add.x.vf.y vf17 vf17 vf17) + (.add.z.vf.y vf16 vf16 vf16) + (.add.z.vf.y vf17 vf17 vf17) + (.mul.y.vf vf1 vf13 vf16) + (.add.vf vf18 vf17 vf16) + (.sub.x.vf vf19 vf16 vf14) + (.mul.y.vf vf2 vf13 vf17) + (.mov v1-0 vf16) + (.sub.x.vf vf20 vf18 vf14) + (.mov a0-1 vf18) + (let ((v1-1 (logand v1-0 (the-as uint a0-1)))) + (.sub.vf vf1 vf15 vf1) + (b! (< v1-1 0) cfg-6 :delay (.sub.vf vf2 vf11 vf2)) + ) + (.mov v1-2 vf19) + (.mov a0-2 vf20) + (b! (>= (the-as int (logior v1-2 (the-as uint a0-2))) 0) cfg-6 :delay (nop!)) + ;;(let ((v1-4 (raw-ray-sphere-intersect cyl-rad))) + (let ((v1-4 (pc-port-do-raw-ray-sphere-intersect cyl-rad vf1 vf2))) + (b! (< (the-as int v1-4) 0) cfg-6 :delay (.mov vf21 v1-4)) + (.mul.x.vf vf17 vf17 vf21) + (.add.vf vf16 vf16 vf17) + (.mul.y.vf vf13 vf13 vf16) + (.sub.x.vf vf19 vf16 vf14) + (.mov a0-4 vf16) + (b! + (< (the-as int a0-4) 0) + cfg-6 + :delay + (.add.vf.xyz vf12 vf12 vf13) + ) + (.mov a0-5 vf19) + (b! (>= (the-as int a0-5) 0) cfg-6 :delay (.svf (&-> pt-out quad) vf12)) + (b! #t cfg-7 :delay (set! v0-1 v1-4)) + ) + (label cfg-6) + (set! v0-1 -100000000.0) + (label cfg-7) + v0-1 + ) + ) \ No newline at end of file diff --git a/goal_src/jakx/engine/common-obs/curves.gc b/goal_src/jakx/engine/common-obs/curves.gc index 68f99f79eb..9049b25ec8 100644 --- a/goal_src/jakx/engine/common-obs/curves.gc +++ b/goal_src/jakx/engine/common-obs/curves.gc @@ -5,5 +5,553 @@ ;; name in dgo: curves ;; dgos: ENGINE, GAME +;; +++loop-behavior +(defenum loop-behavior + :type uint64 + :bitfield #f + (wrap) + (clamp) + (b2) + (use-default) + ) +;; ---loop-behavior + +(declare-type curve2d basic) +(declare-type curve-color basic) +(declare-type curve-color-fast curve-color) +(declare-type curve2d-piecewise curve2d) +(declare-type curve2d-fast basic) + +(define-extern *curve-unity* curve2d-fast) +(define-extern *curve-linear-up* curve2d-fast) +(define-extern *curve-linear-down* curve2d-fast) +(define-extern *curve-linear-up-hold* curve2d-piecewise) +(define-extern *curve-linear-up-down* curve2d-fast) +(define-extern *trail-color-curve-white* curve-color-fast) +(define-extern particle-color-curve-white* curve-color-fast) +(define-extern *trail-color-curve-red* curve-color-fast) + + ;; DECOMP BEGINS +(deftype float-pair (structure) + "Two floats. Specifies one point on a piecewise linear curve." + ((first float) + (second float) + (x float :overlay-at first) + (y float :overlay-at second) + ) + ) + + +(deftype float-pair-array (inline-array-class) + "Array of points used to make a piecewise linear curve." + ((data float-pair :inline :dynamic) + ) + ) + + +(set! (-> float-pair-array heap-base) (the-as uint 16)) + +(deftype curve2d (basic) + "Interface for evaluating a 2d curve. +The input is a float (x-position) and the output is a float (y-position). +The curve is over (0, 1). Values outside of the range are either clamped +or wrapped depending on the loop-behavior flag." + () + (:methods + (evaluate (_type_ float loop-behavior) float) + ) + ) + + +(deftype curve-color (basic) + "Interface for evaluating a color curve. The input is a float, representing +progress through the curve, and the result is a floating point rgba color." + () + (:methods + (evaluate (_type_ float rgbaf loop-behavior) rgbaf) + ) + ) + + +(deftype curve2d-piecewise (curve2d) + "Implementation of 2d-curve for a piecewise linear curve. +Not particularly efficient - each evaluation needs to check each point." + ((pts float-pair-array) + (default-loop-behavior uint64) + ) + (:methods + (allocate! (_type_ int symbol symbol) none) + (curve2d-piecewise-method-11 (_type_) none) + ) + ) + + +(deftype curve2d-fast (curve2d) + "Implementation of 2d piecewise linear curve which tries to be faster. +While it is faster, it places the huge restriction that you can only have 4 points. +Note that the xs should be negative here." + ((xs vector :inline) + (ys vector :inline) + (one-over-x-deltas vector :inline) + ) + ) + + +(defun rgbaf-lerp! ((arg0 rgbaf) (arg1 rgbaf) (arg2 rgbaf) (arg3 float)) + "Lerp all four components of rgba." + (vector-lerp! arg0 arg1 arg2 arg3) + (set! (-> arg0 w) (lerp (-> arg1 w) (-> arg2 w) arg3)) + arg0 + ) + +(deftype curve-color-fast (curve-color) + "Implementation of color curve which tries to be faster. +While it is faster, it again has the restriction that you only +get 4 piecewise sections." + ((xs vector :inline) + (ys vector 4 :inline) + (one-over-x-deltas vector :inline) + ) + ) + + +(deftype color-pair (structure) + "Single section of a piecewise linear color curve. +Unlike the fast version, this stores x values exactly like you'd expect." + ((first float) + (second rgbaf :inline) + (x float :overlay-at first) + (y rgbaf :inline :overlay-at second) + ) + ) + + +(deftype color-pair-array (inline-array-class) + "Array of points for piecewise linear color curve." + ((data color-pair :inline :dynamic) + ) + ) + + +(set! (-> color-pair-array heap-base) (the-as uint 32)) + +(deftype curve-color-piecewise (curve-color) + "Implementation of curve-color." + ((pts color-pair-array) + (default-loop-behavior uint64) + ) + (:methods + (allocate! (_type_ int symbol symbol) none) + ) + ) + + +(defmethod allocate! ((this curve2d-piecewise) (arg0 int) (arg1 symbol) (arg2 symbol)) + "Allocate memory for points." + (set! (-> this pts) ((method-of-type float-pair-array new) arg1 float-pair-array arg0)) + (set! (-> this default-loop-behavior) (the-as uint (if arg2 + 0 + 1 + ) + ) + ) + 0 + (none) + ) + +(defmethod allocate! ((this curve-color-piecewise) (arg0 int) (arg1 symbol) (arg2 symbol)) + "Allocate memory for points." + (set! (-> this pts) ((method-of-type color-pair-array new) arg1 color-pair-array arg0)) + (set! (-> this default-loop-behavior) (the-as uint (if arg2 + 0 + 1 + ) + ) + ) + 0 + (none) + ) + +(defmethod evaluate ((this curve-color-piecewise) (arg0 float) (arg1 rgbaf) (arg2 loop-behavior)) + (when (or (< 1.0 arg0) (< arg0 0.0)) + (if (= arg2 (loop-behavior use-default)) + (set! arg2 (the-as loop-behavior (-> this default-loop-behavior))) + ) + (let ((v1-8 (the-as uint arg2))) + (cond + ((zero? v1-8) + (set! arg0 (- arg0 (* (the float (the int (/ arg0 1.0))) 1.0))) + ) + ((= v1-8 1) + (set! arg0 (fmax 0.0 (fmin 1.0 arg0))) + ) + ) + ) + ) + (when (= arg0 0.0) + (set! (-> arg1 quad) (-> this pts data 0 second quad)) + (return arg1) + ) + (dotimes (s4-0 (-> this pts length)) + (when (>= (-> this pts data s4-0 first) arg0) + (let ((a3-4 (lerp-scale 0.0 1.0 arg0 (-> this pts data (+ s4-0 -1) first) (-> this pts data s4-0 first)))) + (return (rgbaf-lerp! + arg1 + (the-as rgbaf (+ (the-as uint (-> this pts data 0 second)) (* (+ s4-0 -1) 32))) + (the-as rgbaf (+ (the-as uint (-> this pts data 0 second)) (* s4-0 32))) + a3-4 + ) + ) + ) + ) + ) + (the-as rgbaf #f) + ) + +(defmethod evaluate ((this curve2d-piecewise) (arg0 float) (arg1 loop-behavior)) + (when (or (< 1.0 arg0) (< arg0 0.0)) + (if (= arg1 (loop-behavior use-default)) + (set! arg1 (the-as loop-behavior (-> this default-loop-behavior))) + ) + (let ((v1-8 (the-as uint arg1))) + (cond + ((zero? v1-8) + (set! arg0 (- arg0 (* (the float (the int (/ arg0 1.0))) 1.0))) + ) + ((= v1-8 1) + (set! arg0 (fmax 0.0 (fmin 1.0 arg0))) + ) + ) + ) + ) + (if (= arg0 0.0) + (return (-> this pts data 0 second)) + ) + (dotimes (v1-18 (-> this pts length)) + (if (>= (-> this pts data v1-18 first) arg0) + (return (lerp-scale + (-> this pts data (+ v1-18 -1) second) + (-> this pts data v1-18 second) + arg0 + (-> this pts data (+ v1-18 -1) first) + (-> this pts data v1-18 first) + ) + ) + ) + ) + 0.0 + ) + +;; WARN: Return type mismatch number vs float. +(defun evaluate-curve-fast ((arg0 curve2d-fast) (arg1 float)) + "Evaluate a curve2d-fast at the given value." + (local-vars (v0-0 number)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf24 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf27 :class vf) + (vf28 :class vf) + (vf29 :class vf) + ) + (init-vf0-vector) + (let ((a2-0 (new 'stack-no-clear 'vector)) + (v1-0 (new 'stack-no-clear 'vector)) + ) + (.mov vf27 arg1) + (.lvf vf24 (&-> arg0 xs quad)) + (.lvf vf25 (&-> arg0 ys quad)) + (.lvf vf26 (&-> arg0 one-over-x-deltas quad)) + (.min.w.vf vf27 vf27 vf0) + (.max.x.vf vf27 vf27 vf0) + (.add.x.vf vf28 vf24 vf27) + (.mul.w.vf acc vf25 vf0) + (.add.mul.vf vf29 vf28 vf26 acc) + (.svf (&-> a2-0 quad) vf28) + (.svf (&-> v1-0 quad) vf29) + (let ((a0-1 (-> a2-0 z)) + (a1-1 (-> a2-0 y)) + ) + (nop!) + (b! (>= (the-as int a0-1) 0) cfg-3 :delay (set! v0-0 (-> v1-0 z))) + (b! (>= (the-as int a1-1) 0) cfg-3 :delay (set! v0-0 (-> v1-0 y))) + ) + (set! v0-0 (-> v1-0 x)) + ) + (label cfg-3) + (the-as float v0-0) + ) + ) + +;; WARN: Return type mismatch number vs float. +(defmethod evaluate ((this curve2d-fast) (arg0 float) (arg1 loop-behavior)) + (local-vars (v0-0 number)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf24 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf27 :class vf) + (vf28 :class vf) + (vf29 :class vf) + ) + (init-vf0-vector) + (let ((a1-1 (new 'stack-no-clear 'vector)) + (v1-0 (new 'stack-no-clear 'vector)) + ) + (let ((a2-1 arg0)) + (.mov vf27 a2-1) + ) + (.lvf vf24 (&-> this xs quad)) + (.lvf vf25 (&-> this ys quad)) + (.lvf vf26 (&-> this one-over-x-deltas quad)) + (.min.w.vf vf27 vf27 vf0) + (.max.x.vf vf27 vf27 vf0) + (.add.x.vf vf28 vf24 vf27) + (.mul.w.vf acc vf25 vf0) + (.add.mul.vf vf29 vf28 vf26 acc) + (.svf (&-> a1-1 quad) vf28) + (.svf (&-> v1-0 quad) vf29) + (let ((a0-1 (-> a1-1 z)) + (a1-2 (-> a1-1 y)) + ) + (nop!) + (b! (>= (the-as int a0-1) 0) cfg-3 :delay (set! v0-0 (-> v1-0 z))) + (b! (>= (the-as int a1-2) 0) cfg-3 :delay (set! v0-0 (-> v1-0 y))) + ) + (set! v0-0 (-> v1-0 x)) + ) + (label cfg-3) + (the-as float v0-0) + ) + ) + +(defun evaluate-color-curve-fast ((arg0 curve-color-fast) (arg1 float) (arg2 rgbaf)) + "Evaluate a color-curve-fast at the given value." + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf23 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf28 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (.mov vf26 arg1) + (.lvf vf23 (&-> arg0 xs quad)) + (.lvf vf25 (&-> arg0 one-over-x-deltas quad)) + (.max.w.vf vf3 vf0 vf0) + (.mul.vf acc vf25 vf23) + (.add.mul.x.vf vf28 vf25 vf26 acc) + (.svf (&-> v1-0 quad) vf28) + (let ((a1-1 (-> v1-0 z)) + (v1-1 (-> v1-0 y)) + ) + (b! (>= (the-as int a1-1) 0) cfg-4 :delay (nop!)) + (b! (>= (the-as int v1-1) 0) cfg-3 :delay (nop!)) + ) + ) + (.lvf vf1 (&-> arg0 ys 0 quad)) + (.lvf vf2 (&-> arg0 ys 1 quad)) + (.sub.x.vf vf4 vf3 vf28) + (.mul.x.vf acc vf2 vf28) + (.add.mul.x.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> arg2 quad) vf5)) + (label cfg-3) + (.lvf vf1 (&-> arg0 ys 1 quad)) + (.lvf vf2 (&-> arg0 ys 2 quad)) + (.sub.y.vf vf4 vf3 vf28) + (.mul.y.vf acc vf2 vf28) + (.add.mul.y.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> arg2 quad) vf5)) + (label cfg-4) + (.lvf vf1 (&-> arg0 ys 2 quad)) + (.lvf vf2 (&-> arg0 ys 3 quad)) + (.sub.z.vf vf4 vf3 vf28) + (.mul.z.vf acc vf2 vf28) + (.add.mul.z.vf vf5 vf1 vf4 acc) + (.svf (&-> arg2 quad) vf5) + (label cfg-5) + arg2 + ) + ) + +(defmethod evaluate ((this curve-color-fast) (arg0 float) (arg1 rgbaf) (arg2 loop-behavior)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf23 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf28 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (let ((v1-0 this) + (f0-0 arg0) + (a0-1 arg1) + ) + (let ((a1-1 (new 'stack-no-clear 'rgbaf))) + (let ((a3-1 f0-0)) + (.mov vf26 a3-1) + ) + (.lvf vf23 (&-> v1-0 xs quad)) + (.lvf vf25 (&-> v1-0 one-over-x-deltas quad)) + (.max.w.vf vf3 vf0 vf0) + (.mul.vf acc vf25 vf23) + (.add.mul.x.vf vf28 vf25 vf26 acc) + (.svf (&-> a1-1 quad) vf28) + (let ((a3-2 (-> a1-1 z)) + (a1-2 (-> a1-1 y)) + ) + (b! (>= (the-as int a3-2) 0) cfg-4 :delay (nop!)) + (b! (>= (the-as int a1-2) 0) cfg-3 :delay (nop!)) + ) + ) + (.lvf vf1 (&-> v1-0 ys 0 quad)) + (.lvf vf2 (&-> v1-0 ys 1 quad)) + (.sub.x.vf vf4 vf3 vf28) + (.mul.x.vf acc vf2 vf28) + (.add.mul.x.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> a0-1 quad) vf5)) + (label cfg-3) + (.lvf vf1 (&-> v1-0 ys 1 quad)) + (.lvf vf2 (&-> v1-0 ys 2 quad)) + (.sub.y.vf vf4 vf3 vf28) + (.mul.y.vf acc vf2 vf28) + (.add.mul.y.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> a0-1 quad) vf5)) + (label cfg-4) + (.lvf vf1 (&-> v1-0 ys 2 quad)) + (.lvf vf2 (&-> v1-0 ys 3 quad)) + (.sub.z.vf vf4 vf3 vf28) + (.mul.z.vf acc vf2 vf28) + (.add.mul.z.vf vf5 vf1 vf4 acc) + (.svf (&-> a0-1 quad) vf5) + ) + (label cfg-5) + (set! (-> arg1 w) 1.0) + arg1 + ) + ) + +(defun rgba<-rgbaf ((arg0 rgba) (arg1 rgbaf)) + "Convert rgbaf to rgba. Seems like the input rgba's value is not used in any way." + (copy-and-set-field + (copy-and-set-field + (copy-and-set-field + (copy-and-set-field arg0 r (the int (* 128.0 (-> arg1 x)))) + g + (the int (* 128.0 (-> arg1 y))) + ) + b + (the int (* 128.0 (-> arg1 z))) + ) + a + (the int (* 128.0 (-> arg1 w))) + ) + ) + +(if #t + (set! *curve-unity* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-linear-up* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-linear-down* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 1.0 2.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -1.0 1.0 1.0 1.0)) + ) + ) + ) + +(when (or (zero? *curve-linear-up-hold*) (!= loading-level global)) + (set! *curve-linear-up-hold* (new 'loading-level 'curve2d-piecewise)) + (allocate! *curve-linear-up-hold* 2 'loading-level #f) + ) + +(set! (-> *curve-linear-up-hold* pts data 0 first) 0.0) + +(set! (-> *curve-linear-up-hold* pts data 0 second) 0.0) + +(set! (-> *curve-linear-up-hold* pts data 1 first) 1.0) + +(set! (-> *curve-linear-up-hold* pts data 1 second) 1.0) + +(if #t + (set! *curve-linear-up-down* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -2.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *trail-color-curve-white* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! particle-color-curve-white* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *trail-color-curve-red* (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -1.0 -2.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.3 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 1.25 1.0 1.0)) + ) + ) + ) diff --git a/goal_src/jakx/engine/common-obs/driver/driver-jak.gc b/goal_src/jakx/engine/common-obs/driver/driver-jak.gc index f21e02dad2..ea03c8dd93 100644 --- a/goal_src/jakx/engine/common-obs/driver/driver-jak.gc +++ b/goal_src/jakx/engine/common-obs/driver/driver-jak.gc @@ -7,3 +7,9 @@ ;; DECOMP BEGINS +(deftype driver-jak (driver) + () + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + ) \ No newline at end of file diff --git a/goal_src/jakx/engine/common-obs/driver/driver.gc b/goal_src/jakx/engine/common-obs/driver/driver.gc index 3217b6fc79..1104202f92 100644 --- a/goal_src/jakx/engine/common-obs/driver/driver.gc +++ b/goal_src/jakx/engine/common-obs/driver/driver.gc @@ -7,3 +7,87 @@ ;; DECOMP BEGINS +(deftype helmet (structure) + ((node-list basic :offset-assert 0) + (draw basic :offset-assert 4) + (node-index int8 :offset-assert 8) + (scale float :offset-assert 12) + ) + :pack-me + :method-count-assert 12 + :size-assert #x10 + :flag-assert #xc00000010 + (:methods + (helmet-method-9 () none) ;; 9 + (helmet-method-10 () none) ;; 10 + (helmet-method-11 () none) ;; 11 + ) + ) + +(deftype driver-initialize-params (structure) + ((vehicle basic :offset-assert 0) + (level-slot int8 :offset-assert 4) + (driver-type uint8 :offset-assert 5) + ) + :method-count-assert 9 + :size-assert #x6 + :flag-assert #x900000006 + ) + +(deftype driver-info (structure) + ((skel basic :offset-assert 0) + (turn-back-anim int8 :offset-assert 4) + (turn-front-anim int8 :offset-assert 5) + (up-down-anim int8 :offset-assert 6) + (intro-anim int8 4 :offset-assert 7) + (head-node int8 :offset-assert 11) + (arm0-node int8 :offset-assert 12) + (arm1-node int8 :offset-assert 13) + (arm0-dist float :offset-assert 16) + (arm1-dist float :offset-assert 20) + ) + :method-count-assert 9 + :size-assert #x18 + :flag-assert #x900000018 + ) + +(deftype joint-mod-head (joint-mod) + () + :method-count-assert 16 + :size-assert #xac + :flag-assert #x10000000ac + ;; field track-mode is likely a value type. + ) + +(deftype driver (process-focusable) + ((info driver-info :inline :offset-assert 256) + (vehicle uint64 :offset-assert 280) + (speech-time uint64 :offset-assert 288) + (anim-vel vector :inline :offset-assert 304) + (anim-pos vector :inline :offset-assert 320) + (turn-back-anim int8 :offset-assert 336) + (turn-front-anim int8 :offset-assert 337) + (up-down-anim int8 :offset-assert 338) + (intro-anim int8 4 :offset-assert 339) + (jmod-head joint-mod-head :offset-assert 344) + (arm-ik uint32 2 :offset-assert 348) + (looking-at uint64 :offset-assert 360) + (looking-at-timeout int32 :offset-assert 368) + (helmet helmet :inline :offset-assert 372) + ) + :method-count-assert 67 + :size-assert #x184 + :flag-assert #x4301000184 + (:state-methods + idle ;; 59 + intro ;; 60 + die ;; 61 + ) + (:methods + (driver-method-62 (_type_) none) ;; 62 + (driver-method-63 () none) ;; 63 + (driver-method-64 (_type_) none) ;; 64 + (driver-method-65 (_type_) none) ;; 65 + (driver-method-66 () none) ;; 66 + ) + ) \ No newline at end of file diff --git a/goal_src/jakx/engine/common-obs/particle-curves.gc b/goal_src/jakx/engine/common-obs/particle-curves.gc index 269ca38bed..bc0b47f1b3 100644 --- a/goal_src/jakx/engine/common-obs/particle-curves.gc +++ b/goal_src/jakx/engine/common-obs/particle-curves.gc @@ -5,5 +5,167 @@ ;; name in dgo: particle-curves ;; dgos: ENGINE, GAME +;; +++particle-curve-flags +(defenum particle-curve-flags + :type uint64 + :bitfield #t + (pcf0 0) + (pcf1 1) + (pcf2 2) + ) +;; ---particle-curve-flags + +(define-extern *alpha-fast* curve2d-fast) +(define-extern *unity-fast* curve2d-fast) +(define-extern *ccro* curve-color-fast) +(define-extern *scale-curve* curve2d-fast) +(define-extern *scale-range* curve2d-fast) + ;; DECOMP BEGINS +(deftype particle-curve-settings (structure) + ((color-start basic) + (alpha-start basic) + (scale-x-start basic) + (scale-y-start basic) + (r-scalar basic) + (g-scalar basic) + (b-scalar basic) + (a-scalar basic) + (scale-x-scalar basic) + (scale-y-scalar basic) + (lifetime-base time-frame) + (lifetime-offset time-frame) + (flags particle-curve-flags) + ) + ) + + +(def-mips2c birth-func-curve (function int sparticle-cpuinfo sparticle-launchinfo none)) + +(def-mips2c live-func-curve (function sparticle-system sparticle-cpuinfo vector none)) + +(defpart 45 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-curve) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.01)) + (:timer (seconds 16.667)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees -30) (degrees 60)) + (:conerot-z (degrees -30) (degrees 60)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *alpha-fast* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.25 -0.5 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.75 0.5 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -1.0 -1.0 -1.0 1.0)) + ) + ) + ) + +(if #t + (set! *unity-fast* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *ccro* (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 128.0 0.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.5 3.3333335 3.3333333 1.0)) + ) + ) + ) + +(if #t + (set! *scale-curve* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.3 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.1 0.1 6.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -2.9999998 0.0 19.666666 1.0)) + ) + ) + ) + +(if #t + (set! *scale-range* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.4 1.4 2.4)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.099999994 1.0 1.0000001 1.0)) + ) + ) + ) + +(define *part-function-curve-test-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 1.5) + :lifetime-offset (seconds 1) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 45 init-specs 12 initial-valuef) + (the-as float *part-function-curve-test-curve-settings*) + ) + +(set! (-> *part-function-curve-test-curve-settings* color-start) *ccro*) + +(set! (-> *part-function-curve-test-curve-settings* alpha-start) *unity-fast*) + +(set! (-> *part-function-curve-test-curve-settings* scale-x-start) *scale-range*) + +(set! (-> *part-function-curve-test-curve-settings* scale-y-start) #f) + +(set! (-> *part-function-curve-test-curve-settings* r-scalar) #f) + +(set! (-> *part-function-curve-test-curve-settings* g-scalar) #f) + +(set! (-> *part-function-curve-test-curve-settings* b-scalar) #f) + +(set! (-> *part-function-curve-test-curve-settings* a-scalar) *alpha-fast*) + +(set! (-> *part-function-curve-test-curve-settings* scale-x-scalar) *scale-curve*) + +(set! (-> *part-function-curve-test-curve-settings* scale-y-scalar) #f) + +;; WARN: Return type mismatch symbol vs none. +(defun ptest () + (dotimes (gp-0 1000) + (let ((t9-0 sp-launch-particles-var) + (a0-0 *sp-particle-system-2d*) + (a1-0 (-> *part-id-table* 45)) + (a2-0 *launch-matrix*) + ) + (let ((v1-1 (-> a2-0 trans)) + (a3-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> a3-0 x) 0.0) + (set! (-> a3-0 y) 40960.0) + (set! (-> a3-0 z) 0.0) + (set! (-> a3-0 w) 1.0) + (set! (-> v1-1 quad) (-> a3-0 quad)) + ) + (t9-0 a0-0 a1-0 a2-0 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + (none) + ) diff --git a/goal_src/jakx/engine/common-obs/prim-h.gc b/goal_src/jakx/engine/common-obs/prim-h.gc index 4d085e6097..3158ff45f5 100644 --- a/goal_src/jakx/engine/common-obs/prim-h.gc +++ b/goal_src/jakx/engine/common-obs/prim-h.gc @@ -24,3 +24,151 @@ ;; DECOMP BEGINS +(deftype prim-vertex (structure) + "Vertex for the prim renderer. These vertices are generated by +some special effect code, then sent to the prim renderer to be drawn." + ((stq vector :inline) + (nokick uint32 :overlay-at (-> stq data 2)) + (col rgba :overlay-at (-> stq data 3)) + (pos vector :inline) + ) + ) + + +(deftype prim-base (basic) + "Base class for prim-strip." + () + (:methods + (generate-dma! (_type_ matrix) none) + ) + ) + + +(deftype prim-client (basic) + () + (:methods + (prim-client-method-9 (_type_) none) + ) + ) + + +(defmethod prim-client-method-9 ((this prim-client)) + 0 + (none) + ) + +(deftype prim-strip (prim-base) + "A collection of vertices, all with the same texture and draw settings. +These are owned by the thing submitting to prim, not the prim renderer itself." + ((flags prim-flags) + (tex-name basic) + (tex basic) + (tex-id texture-id) + (adnops gs-adcmd 2 :inline) + (data0 gs-test :overlay-at (-> adnops 0 word 0)) + (reg0 gs-reg64 :overlay-at (-> adnops 0 word 2)) + (data1 gs-test :offset 48) + (reg1 gs-reg64 :offset 56) + (clamp gs-clamp) + (alpha gs-alpha) + (level level) + (texture-index int8) + (num-verts uint16) + (allocated-num-verts uint16) + (last-tex-id uint32) + (data prim-vertex :dynamic) + ) + (:methods + (new (symbol type int texture-id string) _type_) + (setup-dma-and-tex (_type_ draw-control) none) + ) + ) + + +(defmethod new prim-strip ((allocation symbol) (type-to-make type) (arg0 int) (arg1 texture-id) (arg2 string)) + "Allocate a new prim-strip and room for vertices. The texture can be specified by name or ID." + (with-pp + (let ((s5-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* arg0 32)))))) + (if (zero? s5-0) + (go process-drawable-art-error "prim-strip") + ) + (add-connection *prim-engine* pp #f pp s5-0 #f) + (set! (-> s5-0 flags) (prim-flags alpha-blend-enable texture-enable)) + (set! (-> s5-0 num-verts) (the-as uint arg0)) + (set! (-> s5-0 allocated-num-verts) (the-as uint arg0)) + (set! (-> s5-0 data0) (new 'static 'gs-test)) + (set! (-> s5-0 adnops 0 cmds) (gs-reg64 hack)) + (set! (-> s5-0 data1) (new 'static 'gs-test)) + (set! (-> s5-0 adnops 1 cmds) (gs-reg64 hack)) + (set! (-> s5-0 clamp) (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (set! (-> s5-0 alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) + (cond + (arg2 + (set! (-> s5-0 tex-id) (lookup-texture-id-by-name arg2 (the-as string #f))) + (set! (-> s5-0 tex-name) arg2) + (logclear! (-> s5-0 flags) (prim-flags no-texture-name)) + ) + (else + (set! (-> s5-0 tex-id) arg1) + (set! (-> s5-0 tex-name) #f) + (logior! (-> s5-0 flags) (prim-flags no-texture-name)) + ) + ) + (set! (-> s5-0 tex) #f) + (set! (-> s5-0 level) (-> *level* level-default)) + (set! (-> s5-0 texture-index) 4) + (let ((f0-1 (/ 1.0 (the float (/ (+ arg0 -1) 2))))) + (dotimes (v1-22 arg0) + (let ((a0-6 (&+ (-> s5-0 data) (* v1-22 32)))) + (set! (-> a0-6 0) (the-as prim-vertex (* (the float (/ v1-22 2)) f0-1))) + (set! (-> a0-6 1) (the-as prim-vertex (the float (logand v1-22 1)))) + (set! (-> a0-6 2) (the-as prim-vertex 0.0)) + (set! (-> a0-6 3) (the-as prim-vertex 0.0)) + ) + (set! (-> (the-as (inline-array prim-vertex) (+ (the-as uint s5-0) (* v1-22 32))) 3 stq z) + (the-as float (the-as uint #x80808080)) + ) + (set-vector! + (the-as vector (+ (the-as uint (the-as vector (&-> s5-0 data 4))) (* v1-22 32))) + (* 4096.0 (the float (/ v1-22 2))) + (* 4096.0 (the float (logand v1-22 1))) + 0.0 + 1.0 + ) + ) + ) + s5-0 + ) + ) + ) + +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of ((this prim-strip)) + (the-as int (+ (-> this type size) (* (-> this allocated-num-verts) 32))) + ) + +(deftype prim-sink (structure) + ((vertex-count uint8) + (control-count uint8) + ) + :allow-misaligned + ) + + +(deftype prim-work (structure) + ((vertex-tmpl dma-packet 3 :inline) + (control-tmpl dma-packet 2 :inline) + (giftag generic-gif-tag :inline) + (call-scissor dma-packet :inline) + (call-noclip dma-packet :inline) + (shader adgif-shader :inline) + (mask vector4w :inline) + (in-verts int32) + (num-verts int32) + (vert-ptr (inline-array prim-vertex)) + (sinks prim-sink 114 :inline) + ) + (:methods + (prim-work-method-9 () none) + ) + ) diff --git a/goal_src/jakx/engine/common-obs/water-part.gc b/goal_src/jakx/engine/common-obs/water-part.gc index 7b34f64667..7a4ef5fbe5 100644 --- a/goal_src/jakx/engine/common-obs/water-part.gc +++ b/goal_src/jakx/engine/common-obs/water-part.gc @@ -5,5 +5,742 @@ ;; name in dgo: water-part ;; dgos: ENGINE, GAME +(define-extern *range-wsplash-color* curve-color-fast) +(define-extern *range-wsplash-alpha* curve2d-fast) +(define-extern *range-wsplash-scale-x* curve2d-fast) +(define-extern *range-wsplash-scale-y* curve2d-fast) +(define-extern *curve-wsplash-alpha* curve2d-fast) +(define-extern *curve-wsplash-scale-x* curve2d-fast) +(define-extern *curve-wsplash-scale-y* curve2d-fast) +(define-extern *part-water-splash-curve-settings* particle-curve-settings) +(define-extern *range-splash-color* curve-color-fast) +(define-extern *range-splash-alpha* curve2d-fast) +(define-extern *range-splash-scale-x* curve2d-fast) +(define-extern *range-splash-scale-y* curve2d-fast) +(define-extern *curve-splash-alpha* curve2d-fast) +(define-extern *curve-splash-scale-x* curve2d-fast) +(define-extern *curve-splash-scale-y* curve2d-fast) +(define-extern *part-water-splash-center-curve-settings* particle-curve-settings) +(define-extern *curve-wsplash-small-scale-x* curve2d-fast) +(define-extern *curve-wsplash-small-scale-y* curve2d-fast) +(define-extern *part-water-splash-small-curve-settings* particle-curve-settings) + ;; DECOMP BEGINS +(defpart 136 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 0.1) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.05) (meters 0.1)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.05) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 137 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 0.1) + (:x (meters -0.25) (meters 0.5)) + (:y (meters 0.15)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:accel-y (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 138 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.05) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:scalevel-x (meters 0.005) (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.04 -0.04) + (:timer (seconds 2.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 right-multiply-quat)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 139 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.06) + (:x (meters 10)) + (:scale-x (meters 0.75) (meters 1.5)) + (:rot-y (degrees 0)) + (:scale-y (meters 0.75) (meters 1.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.004333333)) + (:scalevel-y (meters 0.0033333334) (meters 0.004333333)) + (:fade-a 0.000111111105) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 right-multiply-quat)) + (:next-time (seconds 0.3)) + (:next-launcher 140) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 140 + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.3) (seconds 0.397)) (:next-launcher 141)) + ) + +(defpart 141 + :init-specs ((:fade-a -0.21333334)) + ) + +(defpart 142 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 0.05 0.4) + (:x (meters -0.75) (meters 1.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 0.2) (meters 0.7)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.0016666667) (meters 0.003)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 right-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 143) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 143 + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 144)) + ) + +(defpart 144 + :init-specs ((:fade-a -0.7111111)) + ) + +(defpartgroup group-part-water-splash + :id 26 + :duration (seconds 5) + :flags (sp0 sp4) + :bounds (static-bspherem 0 -12 0 14) + :parts ((sp-item 145 :flags (sp6) :period (seconds 10) :length (seconds 0.2)) + (sp-item 146 :flags (sp6) :period (seconds 10) :length (seconds 0.067) :offset 125) + (sp-item 147 :flags (is-3d sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 148 :flags (is-3d sp6) :period (seconds 10) :length (seconds 0.167) :offset 125) + (sp-item 149 :flags (is-3d sp6) :period (seconds 10) :length (seconds 0.5) :offset 150) + (sp-item 150 :flags (sp6) :period (seconds 10) :length (seconds 0.167) :offset 20) + (sp-item 151 :flags (sp6) :period (seconds 10) :length (seconds 0.167) :offset 125) + ) + ) + +(defpart 145 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-curve) + (:num 5.0) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-z (meters 0.016666668)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-wsplash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 158.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-wsplash-alpha* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 64.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 64.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-wsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.5 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.5 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-wsplash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 2.0 3.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-wsplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-wsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 2.0 3.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-wsplash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 2.0 0.5 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 -5.0000005 -1.6666666 1.0)) + ) + ) + ) + +(define *part-water-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 0.95) :lifetime-offset (seconds 0.1)) + ) + +(set! (-> *part-id-table* 145 init-specs 13 initial-valuef) (the-as float *part-water-splash-curve-settings*)) + +(set! (-> *part-water-splash-curve-settings* color-start) *range-wsplash-color*) + +(set! (-> *part-water-splash-curve-settings* alpha-start) *range-wsplash-alpha*) + +(set! (-> *part-water-splash-curve-settings* scale-x-start) *range-wsplash-scale-x*) + +(set! (-> *part-water-splash-curve-settings* scale-y-start) *range-wsplash-scale-y*) + +(set! (-> *part-water-splash-curve-settings* r-scalar) #f) + +(set! (-> *part-water-splash-curve-settings* g-scalar) #f) + +(set! (-> *part-water-splash-curve-settings* b-scalar) #f) + +(set! (-> *part-water-splash-curve-settings* a-scalar) *curve-wsplash-alpha*) + +(set! (-> *part-water-splash-curve-settings* scale-x-scalar) *curve-wsplash-scale-x*) + +(set! (-> *part-water-splash-curve-settings* scale-y-scalar) *curve-wsplash-scale-y*) + +(defpart 146 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-curve) + (:num 2.0) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + ) + ) + +(if #t + (set! *range-splash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 235.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 235.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 235.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-splash-alpha* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 64.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 64.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-splash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 5.0 6.0 7.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-splash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 2.0 3.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-splash-alpha* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 0.0 -3.3333333 1.0)) + ) + ) + ) + +(if #t + (set! *curve-splash-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.3 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.15 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -2.8333333 -0.21428573 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-splash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 3.0 2.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 6.0 -5.0000005 -6.6666665 1.0)) + ) + ) + ) + +(define *part-water-splash-center-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 0.8) :lifetime-offset (seconds 0.4)) + ) + +(set! (-> *part-id-table* 146 init-specs 11 initial-valuef) + (the-as float *part-water-splash-center-curve-settings*) + ) + +(set! (-> *part-water-splash-center-curve-settings* color-start) *range-splash-color*) + +(set! (-> *part-water-splash-center-curve-settings* alpha-start) *range-splash-alpha*) + +(set! (-> *part-water-splash-center-curve-settings* scale-x-start) *range-splash-scale-x*) + +(set! (-> *part-water-splash-center-curve-settings* scale-y-start) *range-splash-scale-y*) + +(set! (-> *part-water-splash-center-curve-settings* r-scalar) #f) + +(set! (-> *part-water-splash-center-curve-settings* g-scalar) #f) + +(set! (-> *part-water-splash-center-curve-settings* b-scalar) #f) + +(set! (-> *part-water-splash-center-curve-settings* a-scalar) *curve-splash-alpha*) + +(set! (-> *part-water-splash-center-curve-settings* scale-x-scalar) *curve-splash-scale-x*) + +(set! (-> *part-water-splash-center-curve-settings* scale-y-scalar) *curve-splash-scale-y*) + +(defpart 147 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.4) + (:scale-x (meters 2) (meters 0.5)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 2) (meters 0.5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:scalevel-y (meters 0.01) (meters 0.0033333334)) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + ) + ) + +(defpart 148 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:scale-x (meters 0) (meters 0.1)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 0) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.00033333333) (meters 0.006666667)) + (:scalevel-y (meters 0.00033333333) (meters 0.006666667)) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + ) + ) + +(defpart 150 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 10.0) + (:x (meters 0) (meters 1)) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'check-water-level-drop) + (:conerot-x (degrees -40) (degrees 80)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 149 + :init-specs ((:texture (new 'static 'texture-id :index #x55 :page #x4)) + (:num 0.5 1.0) + (:x (meters 1) (meters 5)) + (:scale-x (meters 0.1) (meters 0.2)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.001) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 151 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 2.0 2.0) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'check-water-level-drop) + (:conerot-x (degrees -2) (degrees 4)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-part-water-splash-small + :id 27 + :duration (seconds 3) + :flags (sp0) + :bounds (static-bspherem 0 -12 0 14) + :parts ((sp-item 152 :period (seconds 10) :length (seconds 0.2)) + (sp-item 153 :flags (is-3d) :period (seconds 10) :length (seconds 0.067)) + (sp-item 154 :period (seconds 10) :length (seconds 0.167) :offset 20) + ) + ) + +(defpart 153 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.8) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 0.5) (meters 0.2)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:scalevel-y (meters 0.01) (meters 0.0033333334)) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + ) + ) + +(defpart 154 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 5.0) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.016666668)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'check-water-level-drop) + (:conerot-x (degrees -40) (degrees 80)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 152 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-curve) + (:num 4.0) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-z (meters 0.01)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *curve-wsplash-small-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.7 1.7 2.7)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.39999998 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-wsplash-small-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.7 0.2 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.75 -1.6666667 -0.6666666 1.0)) + ) + ) + ) + +(define *part-water-splash-small-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 0.25) :lifetime-offset (seconds 0.1)) + ) + +(set! (-> *part-id-table* 152 init-specs 13 initial-valuef) + (the-as float *part-water-splash-small-curve-settings*) + ) + +(set! (-> *part-water-splash-small-curve-settings* color-start) *range-wsplash-color*) + +(set! (-> *part-water-splash-small-curve-settings* alpha-start) *range-wsplash-alpha*) + +(set! (-> *part-water-splash-small-curve-settings* scale-x-start) *range-wsplash-scale-x*) + +(set! (-> *part-water-splash-small-curve-settings* scale-y-start) *range-wsplash-scale-y*) + +(set! (-> *part-water-splash-small-curve-settings* r-scalar) #f) + +(set! (-> *part-water-splash-small-curve-settings* g-scalar) #f) + +(set! (-> *part-water-splash-small-curve-settings* b-scalar) #f) + +(set! (-> *part-water-splash-small-curve-settings* a-scalar) *curve-wsplash-alpha*) + +(set! (-> *part-water-splash-small-curve-settings* scale-x-scalar) *curve-wsplash-small-scale-x*) + +(set! (-> *part-water-splash-small-curve-settings* scale-y-scalar) *curve-wsplash-small-scale-y*) + +(defpart 155 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 6) (meters 0.1)) + (:rot-x (degrees 11.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g :copy r) + (:b 255.0) + (:a 0.0) + (:scalevel-x (meters 0.16)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 10240.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 156 + :init-specs ((:fade-a -0.64)) + ) + +(defpart 157 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 12.0) + (:y (meters 0)) + (:scale-x (meters 0.08) (meters 0.03)) + (:rot-x 4) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b 64.0 32.0) + (:a 128.0) + (:omega (degrees 0.01575) (degrees 0.009)) + (:vel-y (meters 0.033333335) (meters 0.05)) + (:accel-y (meters -0.005) (meters -0.00066666666)) + (:friction 0.96 0.02) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21)) + (:userdata -208896.0) + (:func 'check-water-level-drop-motion) + (:next-time (seconds 0) (seconds 0.58)) + (:next-launcher 30) + (:conerot-x (degrees 15) (degrees 65)) + (:conerot-y (degrees 0) (degrees 3600)) + (:rotate-y (degrees 0)) + (:conerot-radius (meters 0) (meters 1)) + ) + ) + +(defpart 30 + :init-specs ((:r 255.0) (:g 255.0) (:b 255.0) (:next-time (seconds 0.017)) (:next-launcher 158)) + ) + +(defpart 158 + :init-specs ((:r 32.0 32.0) (:g 32.0 32.0) (:b 64.0 32.0) (:next-time (seconds 0) (seconds 1.497)) (:next-launcher 159)) + ) + +(defpart 160 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.3) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.32 -0.32) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21)) + (:userdata :data (new 'static 'boxed-array :type int32 10 0 0 0 0 #x401000 #x405d00)) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 161 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 0.0 0.5) + (:scale-x (meters 0.08) (meters 0.03)) + (:rot-x 4) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b 64.0 32.0) + (:a 0.0) + (:omega (degrees 0.01575) (degrees 0.009)) + (:vel-y (meters 0.026666667) (meters 0.05)) + (:accel-y (meters -0.005) (meters -0.00066666666)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21)) + (:userdata -208896.0) + (:func 'check-water-level-drop-and-die-motion) + (:next-time (seconds 0) (seconds 0.33)) + (:next-launcher 30) + (:conerot-x (degrees 30) (degrees 40)) + (:conerot-y (degrees 0) (degrees 3600)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 162 + :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.15) (meters 0.05)) + (:rot-x 4) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b 64.0 32.0) + (:a 0.0) + (:omega (degrees 0.0225) (degrees 0.0225)) + (:vel-x (meters -0.016666668) (meters 0.0016666667)) + (:vel-y (meters 0.016666668)) + (:vel-z (meters -0.016666668) (meters 0.0016666667)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata 0.0) + (:func 'check-water-level-drop-motion) + (:next-time (seconds 2)) + (:next-launcher 163) + ) + ) diff --git a/goal_src/jakx/engine/data/art-h.gc b/goal_src/jakx/engine/data/art-h.gc index 55cc07da0f..76c5796b85 100644 --- a/goal_src/jakx/engine/data/art-h.gc +++ b/goal_src/jakx/engine/data/art-h.gc @@ -10,7 +10,7 @@ :type uint32 :bitfield #t (close-to-screen 0) - (no-draw 1) + (no-draw) (no-draw-temp) (on-screen) (uninited) @@ -25,6 +25,9 @@ (disable-fog) (hud) (no-bounds-check) + (suppress-vport-0) + (suppress-vport-1) + (disable-shadow) ) ;; ---draw-control-status @@ -46,144 +49,436 @@ (bit-0) (bit-1) (title-light) - (disable-envmap) (rim-lights) - (rim-lights2) + (shield-lights) + (disable-envmap) (rim-lights3) (no-textures) ) ;; ---draw-control-global-effect +(declare-type merc-eye-anim-block structure) +(declare-type merc-ctrl structure) +(declare-type process-drawable process-nettable) +(declare-type ripple-control basic) +(declare-type shadow-geo structure) +(declare-type shadow-control structure) +(declare-type cloth-base basic) +(declare-type verlet-particle-system cloth-base) +(declare-type cloth-system verlet-particle-system) +(declare-type joint-control basic) ;; DECOMP BEGINS (deftype joint-anim (basic) "Base class for all joint animations. These are animations that store joint transforms." - ((name string :offset-assert 4) ;; guessed by decompiler - (number int16 :offset-assert 8) - (length int16 :offset-assert 10) + ((name string) + (number int16) + (length int16) ) - :method-count-assert 9 - :size-assert #xc - :flag-assert #x90000000c ) + (deftype joint-anim-matrix (joint-anim) "Joint animation which stores matrices directly. Not used." - ((data matrix :inline :dynamic :offset 16)) - :flag-assert #x900000010 + ((data matrix :inline :dynamic :offset 16) + ) ) (deftype joint-anim-transformq (joint-anim) "Joint animation which stores transformq's directly. Not used." - ((data transformq :dynamic :inline :offset-assert 16) ;; guessed by decompiler + ((data transformq :inline :dynamic) ) - :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 ) + (deftype joint-anim-drawable (joint-anim) "Mysterious unused joint animation type." - ((data drawable :dynamic :offset-assert 12) ;; guessed by decompiler + ((data drawable :dynamic) ) - :method-count-assert 9 - :size-assert #xc - :flag-assert #x90000000c ) + (deftype joint-anim-frame (structure) "Frame containing all joint transforms. Note that there are two special frames: align and prejoint. - The 'align' frame is used for the complicated animation alignment system, which allows the animation to move - a character, among other things. The prejoint is just the root of the skeleton. - The remaining transformq's are the joint transforms you'd expect." - ((matrices matrix 2 :inline :offset-assert 0) ;; guessed by decompiler - (data transformq :dynamic :inline :offset-assert 128) ;; guessed by decompiler +The 'align' frame is used for the complicated animation alignment system, which allows the animation to move +a character, among other things. The prejoint is just the root of the skeleton. +The remaining transformq's are the joint transforms you'd expect." + ((matrices matrix 2 :inline) + (data transformq :inline :dynamic) ) (:methods (new (symbol type int) _type_) ) - :method-count-assert 9 - :size-assert #x80 - :flag-assert #x900000080 + ) + + +;; WARN: Return type mismatch structure vs joint-anim-frame. +(defmethod new joint-anim-frame ((allocation symbol) (type-to-make type) (arg0 int)) + (let ((v1-1 (max 0 (+ arg0 -2)))) + (the-as + joint-anim-frame + (new-dynamic-structure allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 v1-1)))) + ) + ) ) (deftype joint-anim-compressed-hdr (structure) "Header for the compressed joint animation format." - ((control-bits uint32 14 :offset-assert 0) ;; guessed by decompiler - (num-joints uint32 :offset-assert 56) - (matrix-bits uint32 :offset-assert 60) + ((control-bits uint32 14) + (num-joints uint32) + (matrix-bits uint32) ) - :method-count-assert 9 - :size-assert #x40 - :flag-assert #x900000040 ) + (deftype joint-anim-compressed-fixed (structure) - ((hdr joint-anim-compressed-hdr :inline :offset-assert 0) - (offset-64 uint32 :offset-assert 64) - (offset-32 uint32 :offset-assert 68) - (offset-16 uint32 :offset-assert 72) - (reserved uint32 :offset-assert 76) - (data vector 133 :inline :offset-assert 80) ;; guessed by decompiler + ((hdr joint-anim-compressed-hdr :inline) + (offset-64 uint32) + (offset-32 uint32) + (offset-16 uint32) + (reserved uint32) + (data vector 133 :inline) ) - :method-count-assert 9 - :size-assert #x8a0 - :flag-assert #x9000008a0 ) + (deftype joint-anim-compressed-frame (structure) - ((offset-64 uint32 :offset-assert 0) - (offset-32 uint32 :offset-assert 4) - (offset-16 uint32 :offset-assert 8) - (reserved uint32 :offset-assert 12) - (data vector 133 :inline :offset-assert 16) ;; guessed by decompiler + ((offset-64 uint32) + (offset-32 uint32) + (offset-16 uint32) + (reserved uint32) + (data vector 133 :inline) ) - :method-count-assert 9 - :size-assert #x860 - :flag-assert #x900000860 ) + (deftype joint-anim-compressed-control (structure) - ((num-frames uint16 :offset-assert 0) - (flags uint16 :offset-assert 2) - (fixed-qwc uint32 :offset-assert 4) - (frame-qwc uint32 :offset-assert 8) - (fixed joint-anim-compressed-fixed :offset-assert 12) - (data joint-anim-compressed-frame :dynamic :offset-assert 16) ;; guessed by decompiler + ((num-frames uint16) + (flags uint16) + (fixed-qwc uint32) + (frame-qwc uint32) + (fixed joint-anim-compressed-fixed) + (data joint-anim-compressed-frame :dynamic) ) - :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 ) + (deftype art (basic) "Base class for anything considered `art`. This is typically foreground model data. - This can be either an art container containing more arts, or an actual art thing (art-element)." - ((name string :offset 8) ;; guessed by decompiler - (length int32 :offset-assert 12) - (extra res-lump :offset-assert 16) ;; guessed by decompiler +This can be either an art container containing more arts, or an actual art thing (art-element)." + ((name string :offset 8) + (length int32) + (extra res-lump) ) - :method-count-assert 14 - :size-assert #x14 - :flag-assert #xe00000014 (:methods - (login (_type_) _type_) ;; 9 - (art-method-10 (_type_) _type_) ;; 10 - (get-art-by-name-method "Look inside this art for an art with the given name and type. Return #f if not found" (_type_ string type) basic) ;; 11 - (get-art-idx-by-name-method "Look inside this art for an art with the given name and type and return the index of the art. Return #f if not found." (_type_ string type) int) ;; 12 - (contains-art-for-other-group? "Some art groups have placeholder #f's for some art that will be loaded separately as needed. - Does this art group contain art that needs to be added to another group?" (_type_) symbol) ;; 13 + (login (_type_) _type_) + (art-method-10 (_type_) _type_) + (get-art-by-name-method (_type_ string type) basic) + (get-art-idx-by-name-method (_type_ string type) int) + (contains-art-for-other-group? (_type_) symbol) ) ) + (deftype art-element (art) "Base class Art which is not a container of more art." - ((master-art-group-name string :offset-assert 20) - (master-art-group-index int32 :offset-assert 24) - (pad uint8 20) + ((master-art-group-name string) + (master-art-group-index int32) + (pad uint8 20) ) - :method-count-assert 14 - :size-assert #x30 - :flag-assert #xe00000030 - ) \ No newline at end of file + ) + + +;; type art-mesh-anim is defined here, but it is unknown to the decompiler + +(deftype art-joint-anim (art-element) + "Art for a joint animation. Also contains the eye animation." + ((eye-anim merc-eye-anim-block :overlay-at (-> pad 0)) + (blend-shape-anim (pointer int8) :overlay-at (-> pad 4)) + (frames joint-anim-compressed-control :overlay-at (-> pad 8)) + (speed float :offset 48) + (artist-base float) + (artist-step float) + ) + ) + + +(deftype art-group (art) + "Art which is a list of more art. The -ag files are an art group with all the art needed for a +actor, like the mesh, animations, shadow mesh, skeleton, etc." + ((info file-info :offset 4) + (data art-element :dynamic :offset 32) + ) + (:methods + (relocate (_type_ kheap (pointer uint8)) none :replace) + (link-art-to-master (_type_) art-group) + (unlink-art-to-master (_type_) int) + ) + ) + +(deftype art-mesh-geo (art-element) + "Unused art format for a mesh. This might have been for the renderer that came before merc." + ((data basic :dynamic) + ) + ) + +(deftype art-joint-geo (art-element) + "Collection of joints for an actor." + ((data joint :dynamic) + ) + ) + +(deftype art-cloth-geo (art-element) + ((anchor-transforms anchor-transform-array) + (sphere-transforms sphere-transform-array) + (disc-transforms disc-transform-array) + (cloth-thickness cloth-thickness-array) + (thickness-scalar float) + (num-points int32 :overlay-at length) + (mesh cloth-pt :inline :dynamic :offset 80) + ) + ) + + +(defmethod relocate ((this art-cloth-geo) (offset int)) + this + ) + +(deftype skeleton-group (art-group) + "Unlike other art types, the skeleton-groups are defined in GOAL code. +This stores settings like the name of the art-group, shadow/level-of-detail settings, etc." + ((art-group-name string) + (jgeo int16) + (janim int16) + (bounds vector :inline) + (radius meters :overlay-at (-> bounds data 3)) + (mgeo int16 6) + (max-lod int32) + (lod-dist float 6) + (longest-edge meters) + (texture-level int8) + (version int8) + (shadow int16) + (shadow-joint-index int8) + (origin-joint-index int8) + (sort int8) + (light-index uint8) + (clothing (array cloth-params)) + (global-effects uint8) + ) + (:methods + (add-to-loading-level (_type_) skeleton-group) + ) + ) + + +(deftype lod-group (structure) + "A single level of detail mesh." + ((geo merc-ctrl) + (dist meters) + ) + :pack-me + ) + + +(deftype lod-set (structure) + "All the different level-of-detail meshes for an actor." + ((lod lod-group 6 :inline) + (max-lod int8) + ) + :allow-misaligned + (:methods + (setup-lods! (_type_ skeleton-group art-group entity) _type_) + ) + ) + + +(deftype draw-control (basic) + ((process process-drawable) + (status draw-control-status) + (data-format draw-control-data-format) + (global-effect draw-control-global-effect) + (art-group art-group) + (jgeo art-joint-geo) + (mgeo merc-ctrl) + (dma-add-func (function process-drawable draw-control symbol object none)) + (skeleton skeleton) + (lod-set lod-set :inline) + (max-lod int8 :overlay-at (-> lod-set max-lod)) + (force-lod int8) + (cur-lod int8) + (cur-lods int8 2 :offset 87) + (effect-masks uint64 2) + (prev-seg-mask uint64) + (want-lod int8) + (ripple ripple-control) + (longest-edge meters) + (longest-edge? uint32 :overlay-at longest-edge) + (light-index uint8) + (shadow-mask uint8) + (level-index uint8) + (death-draw-overlap uint8) + (death-timer uint8) + (death-timer-org uint8) + (death-vertex-skip uint16) + (death-effect uint32) + (shadow shadow-geo) + (shadow-ctrl shadow-control) + (distance meters) + (origin vector :inline) + (bounds vector :inline) + (radius meters :overlay-at (-> bounds data 3)) + (color-mult rgbaf :inline) + (color-emissive rgbaf :inline) + (effect-mask uint64) + (seg-mask uint64) + (origin-joint-index uint8) + (shadow-joint-index uint8) + (force-fade uint8) + (default-texture-page uint8) + (shadow-values uint32) + (cloth-instances (array cloth-system)) + (lights vu-lights) + (envmap-override float) + ) + (:methods + (new (symbol type) _type_) + (get-skeleton-origin (_type_) vector) + (draw-control-method-10 () none) + (draw-control-method-11 () none) + (draw-control-method-12 () none) + (draw-control-method-13 () none) + (draw-control-method-14 () none) + (draw-control-method-15 () none) + ) + ) + + +(defmethod get-skeleton-origin ((this draw-control)) + (-> this skeleton bones 0 transform trans) + ) + +;; og:preserve-this +;; look up the index of an art element in an art group. +(desfun art-elt-index (ag-name elt-name) + (if (number? elt-name) + elt-name + (let ((ag-info (hash-table-try-ref *art-info* (symbol->string ag-name)))) + (if (not (car ag-info)) + (error (symbol->string ag-name)) + (let ((elt-info (hash-table-try-ref (cdr ag-info) (symbol->string elt-name)))) + (if (not (car elt-info)) + (error (symbol->string ag-name)) + (cadr (cdr elt-info))) + ) + ) + ) + ) + ) + +(defmacro joint-node-index (jg-name name) + (let ((jg-info (hash-table-try-ref *jg-info* (symbol->string jg-name)))) + (if (not (car jg-info)) + -1 + (let ((joint-node (hash-table-try-ref (cdr jg-info) (if (integer? name) (int->string name) (symbol->string name))))) + (if (not (car joint-node)) + -1 + (cadr (cdr joint-node))) + ) + ) + ) + ) + +(defmacro joint-node (jg name) + `(-> self node-list data (joint-node-index ,jg ,name)) + ) + +(defmacro defskelgroup (name ag-name joint-geom joint-anim lods + &key (shadow 0) + &key bounds + &key (longest-edge 0.0) + &key (texture-level 0) + &key (sort 0) + &key (version ART_GROUP_FILE_VERSION) ;; do NOT use this! + &key (origin-joint-index 0) + &key (shadow-joint-index 0) + &key (light-index 0) + &key (global-effects 0) + &key (clothing ()) + ) + "Define a new static skeleton-group." + `(let ((skel (new 'static 'skeleton-group + :name ,(symbol->string name) + :extra #f + :info #f + :art-group-name ,(symbol->string ag-name) + :bounds ,bounds + :longest-edge ,longest-edge + :texture-level ,texture-level + :version ,version + :shadow ,(art-elt-index (string->symbol-format "{}-ag" ag-name) shadow) + :shadow-joint-index ,shadow-joint-index + :origin-joint-index ,origin-joint-index + :max-lod ,(- (length lods) 1) + :sort ,sort + :light-index ,light-index + :global-effects ,global-effects + :clothing #f + ))) + + ;; set cloth params array if present + (when ,(neq? clothing '()) + (set! (-> skel clothing) (new 'static 'boxed-array :type cloth-params :length 0 :allocated-length ,(length clothing))) + ,@(apply-i (lambda (x i) + `(set! (-> skel clothing ,i) (static-cloth-params ,(string->symbol-format "{}-ag" ag-name) ,x))) clothing) + (set! (-> skel clothing length) ,(length clothing)) + ) + + ;; set joint geometry and joint bones + (set! (-> skel jgeo) ,(art-elt-index (string->symbol-format "{}-ag" ag-name) joint-geom)) + (set! (-> skel janim) ,(art-elt-index (string->symbol-format "{}-ag" ag-name) joint-anim)) + + ;; set lods + ,@(apply-i (lambda (x i) + `(begin + (set! (-> skel mgeo ,i) ,(art-elt-index (string->symbol-format "{}-ag" ag-name) (car x))) + (set! (-> skel lod-dist ,i) ,(cadr x)) + ) + ) lods) + + ;; define skel group + (define ,name skel) + ;; add to level + (add-to-loading-level ,name) + ) + ) + +(defmacro def-actor (name &key (idle #f) &key (lods #f) &key (art (idle-ja)) &key (joints ()) &key (shadow 0) &key bounds &key (longest-edge 0.0) &key (texture-level 0) &key (sort 0) &key (version 7) &key (origin-joint-index 0) &key (shadow-joint-index 0) &key (light-index 0) &key (global-effects 0) &key (clothing ())) + `(begin + (def-art-elt ,(string->symbol-format "{}-ag" name) ,(string->symbol-format "{}-lod0-jg" name) 0) + (def-art-elt ,(string->symbol-format "{}-ag" name) ,(string->symbol-format "{}-lod0-mg" name) 1) + ,@(apply-i (lambda (x i) + `(def-art-elt ,(string->symbol-format "{}-ag" name) ,(string->symbol-format "{}-{}" name x) ,(+ i 2))) + art) + ,@(apply-i (lambda (x i) `(def-joint-node ,(string->symbol-format "{}-lod0-jg" name) ,(symbol->string x) ,(1+ i))) joints) + (defskelgroup ,(string->symbol-format "*{}-sg*" name) + ,name + ,(string->symbol-format "{}-lod0-jg" name) + ,(if idle (string->symbol-format "{}-{}" name idle) (string->symbol-format "{}-{}" name (car art))) + ,(if lods + `(,@(apply (lambda (x) `(,(string->symbol-format "{}-{}-mg" name (car x)) (meters ,(cadr x)))) lods)) + `((,(string->symbol-format "{}-lod0-mg" name) (meters 999999)))) + :version ,version + :shadow ,shadow + :bounds (static-spherem ,@bounds) + :longest-edge ,longest-edge + :texture-level ,texture-level + :sort ,sort + :origin-joint-index ,origin-joint-index + :shadow-joint-index ,shadow-joint-index + :light-index ,light-index + :global-effects ,global-effects + :clothing ,clothing))) + +;; TODO JAKX - data files, import them \ No newline at end of file diff --git a/goal_src/jakx/engine/data/font-data.gc b/goal_src/jakx/engine/data/font-data.gc index e7171e5576..f63e7fcaab 100644 --- a/goal_src/jakx/engine/data/font-data.gc +++ b/goal_src/jakx/engine/data/font-data.gc @@ -7,3 +7,510 @@ ;; DECOMP BEGINS +(define *font12-table* (new 'static 'inline-array vector 250 + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0322 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0634 1.0 22.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0634 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0634 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0634 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0634 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0634 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0634 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0947 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0947 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0947 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0947 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0947 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0947 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0947 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0947 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0947 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0947 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1259 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1259 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1259 1.0 11.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1572 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1572 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1572 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1572 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1572 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1572 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1572 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1572 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1572 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1572 1.0 17.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1884 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1884 1.0 15.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1884 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1884 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1884 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1884 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2197 1.0 15.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2197 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2197 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2197 1.0 15.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2197 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2197 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2509 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2509 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2509 1.0 17.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2509 1.0 9.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2509 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2509 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2822 1.0 6.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2822 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2822 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2822 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2822 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2822 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2822 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2822 1.0 17.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2822 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2822 1.0 9.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3134 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3134 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3134 1.0 9.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3134 1.0 18.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3134 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3134 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3134 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3134 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3134 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3134 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3447 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3447 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3447 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3447 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3447 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3447 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3447 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3447 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3447 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3447 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3759 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3759 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7509 1.0 16.0)) + ) + ) + +(define *font24-table* (new 'static 'inline-array vector 250 + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0322 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0322 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0322 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0634 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0634 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0634 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0634 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0634 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0634 1.0 17.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0947 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0947 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0947 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0947 1.0 22.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0947 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0947 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1259 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1259 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1259 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1259 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1259 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1572 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1572 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1572 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1572 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1572 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1572 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1572 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1572 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1572 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1884 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1884 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1884 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1884 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1884 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1884 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1884 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1884 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1884 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1884 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2197 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2197 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2197 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2197 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2197 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2197 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2197 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2197 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2197 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2197 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2509 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2509 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2509 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2509 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2509 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2509 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2822 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2822 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2822 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2822 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2822 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2822 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3134 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3134 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3134 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3134 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3134 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3134 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3134 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3134 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3134 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3134 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3447 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3447 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3447 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3447 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3447 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3447 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3447 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3447 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3447 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3447 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3759 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4072 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4072 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4072 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5634 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5634 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5634 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5634 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5634 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5947 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5947 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5947 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5947 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5947 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5947 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5947 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5947 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5947 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6259 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6259 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6259 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6572 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6572 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6572 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6572 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6572 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6572 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6884 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6884 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6884 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6884 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6884 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7197 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7197 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7197 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7197 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7197 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7197 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7509 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7509 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7509 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7509 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7509 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7509 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7509 1.0 24.0)) + ) + ) diff --git a/goal_src/jakx/engine/debug/debug-part.gc b/goal_src/jakx/engine/debug/debug-part.gc index c1dabd88ac..2887821871 100644 --- a/goal_src/jakx/engine/debug/debug-part.gc +++ b/goal_src/jakx/engine/debug/debug-part.gc @@ -5,5 +5,1844 @@ ;; name in dgo: debug-part ;; dgos: ENGINE, GAME +(define-extern hud-money type) + ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(defpart 46 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 5) (meters 2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0) + (:b 0.0) + (:a 64.0 64.0) + (:rotvel-z (degrees 0.3)) + (:fade-a -1.6) + (:timer (seconds 0.067)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-red-eco-strike-ground + :id 6 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 47) (sp-item 48)) + ) + +(defpart 47 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 24.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 32.0) + (:a 8.0 56.0) + (:vel-y (meters 0.13333334) (meters 0.16666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.4222223) + (:fade-a -0.35555556) + (:accel-y (meters 0.00008333333)) + (:friction 0.7) + (:timer (seconds 0.6)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.3)) + (:next-launcher 49) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 48 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 32.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 64.0 8.0) + (:vel-y (meters 0.3)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.8444445) + (:fade-a -0.82222223) + (:friction 0.7) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.15)) + (:next-launcher 49) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +(defpartgroup group-red-eco-spinkick + :id 7 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 50) (sp-item 51) (sp-item 52 :flags (sp5))) + ) + +(defpart 50 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 32.0) + (:a 8.0 56.0) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.4222223) + (:fade-a -0.35555556) + (:accel-y (meters 0.00008333333)) + (:timer (seconds 0.6)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.3)) + (:next-launcher 49) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + ) + ) + +(defpart 49 + :init-specs ((:fade-r -0.7111111) (:fade-g 0.7111111) (:fade-b 0.35555556)) + ) + +(defpart 51 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.66) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 64.0 8.0) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.8444445) + (:fade-a -0.82222223) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.15)) + (:next-launcher 49) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.1)) + ) + ) + +(defpart 52 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:a 64.0) + (:fade-a -4.0) + (:accel-y (meters 0.00008333333)) + (:timer (seconds 0.035)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-eco-blue + :id 8 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 59 :flags (sp3) :binding 53) + (sp-item 53 :fade-after (meters 40) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 60) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 80) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 100) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 130) :flags (sp2 sp3) :binding 54) + (sp-item 53 :flags (sp2 sp3) :binding 54) + (sp-item 54 :flags (sp2 sp3) :binding 55) + (sp-item 54 :flags (sp2 sp3) :binding 56) + (sp-item 54 :flags (sp2 sp3) :binding 57) + (sp-item 54 :flags (sp2 sp3) :binding 55) + (sp-item 54 :flags (sp2 sp3) :binding 56) + (sp-item 54 :flags (sp2 sp3) :binding 57) + (sp-item 55 :fade-after (meters 60) :flags (sp2) :binding 58) + (sp-item 56 :fade-after (meters 70) :flags (sp2) :binding 58) + (sp-item 57 :fade-after (meters 80) :flags (sp2) :binding 58) + (sp-item 55 :fade-after (meters 90) :flags (sp2) :binding 58) + (sp-item 56 :fade-after (meters 100) :flags (sp2) :binding 58) + (sp-item 57 :fade-after (meters 100) :flags (sp2) :binding 58) + (sp-item 58 :flags (sp2)) + ) + ) + +(defpart 59 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +(defpart 53 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 6.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.15)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 32.0 96.0) + (:b 128.0 128.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 60) + ) + ) + +(defpart 60 + :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5))) + ) + +(defpart 54 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.2) (meters 0.1)) + (:scale-x (meters 0.8) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 192.0) + (:a 32.0 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees 269.52002) (degrees 208.99998)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 61) + ) + ) + +(defpart 61 + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) + ) + +(defpart 55 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 56 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 57 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 58 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.2 0.2) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 96.0 64.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpartgroup group-eco-blue-collect + :id 9 + :duration (seconds 0.5) + :linger-duration (seconds 2) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 67 :flags (sp3) :binding 63) + (sp-item 63 :flags (sp2 sp3) :binding 64) + (sp-item 63 :flags (sp2 sp3) :binding 65) + (sp-item 63 :flags (sp2 sp3) :binding 64) + (sp-item 63 :flags (sp2 sp3) :binding 65) + (sp-item 63 :flags (sp2 sp3) :binding 66) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + ) + ) + +(defpart 67 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 192.0) + (:a 64.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 68) + ) + ) + +(defpart 63 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.75) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 127.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 64 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 65 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 66 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpartgroup group-part-vent-blue-active + :id 10 + :bounds (static-bspherem 0 5 0 5) + :parts ((sp-item 72 :fade-after (meters 140) :falloff-to (meters 140) :binding 69) + (sp-item 72 :fade-after (meters 140) :falloff-to (meters 140) :binding 70) + (sp-item 72 :fade-after (meters 140) :falloff-to (meters 140) :binding 71) + (sp-item 73) + (sp-item 74 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 75 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 76 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 71 :fade-after (meters 30) :falloff-to (meters 30) :flags (sp2)) + (sp-item 70 :fade-after (meters 60) :falloff-to (meters 60) :flags (sp2)) + (sp-item 69 :fade-after (meters 80) :falloff-to (meters 80) :flags (sp2)) + (sp-item 71 :fade-after (meters 90) :falloff-to (meters 90) :flags (sp2)) + (sp-item 70 :fade-after (meters 100) :falloff-to (meters 100) :flags (sp2)) + (sp-item 69 :fade-after (meters 110) :falloff-to (meters 110) :flags (sp2)) + (sp-item 71 :fade-after (meters 120) :falloff-to (meters 120) :flags (sp2)) + (sp-item 70 :fade-after (meters 120) :falloff-to (meters 120) :flags (sp2)) + ) + ) + +(defpartgroup group-part-vent-blue-inactive + :id 11 + :bounds (static-bspherem 0 5 0 5) + :parts ((sp-item 72 :fade-after (meters 100)) (sp-item 73)) + ) + +(defpart 73 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1 1.0) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 1.4)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:fade-a -0.2) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpart 72 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.05 0.1) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 192.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpart 69 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 70 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 71 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 74 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1 0.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 75 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.2 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 76 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.3 0.1) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +(defpart 62 + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) + ) + +(defpartgroup group-eco-red + :id 12 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 81 :flags (sp3) :binding 77) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 78 :flags (sp2 sp3) :binding 79) + (sp-item 78 :flags (sp2 sp3) :binding 79) + (sp-item 78 :flags (sp2 sp3) :binding 79) + (sp-item 79 :fade-after (meters 100) :flags (sp2 sp3) :binding 80) + (sp-item 79 :fade-after (meters 100) :flags (sp2 sp3) :binding 80) + (sp-item 79 :fade-after (meters 100) :flags (sp2 sp3) :binding 80) + (sp-item 80 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 80 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 80 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + ) + ) + +(defpart 81 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +(defpart 77 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 6.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.15) (meters 0.2)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 24.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 82) + ) + ) + +(defpart 82 + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) + ) + +(defpart 78 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 0.1)) + (:scale-x (meters 0.6) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 83) + ) + ) + +(defpart 83 + :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5))) + ) + +(defpart 79 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.07) (meters 0.03)) + (:scale-x (meters 0.6) (meters 0.6)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:vel-x (meters 0.11259259)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 83) + ) + ) + +(defpart 80 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1 1.0) + (:scale-x (meters 0.4) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.00038095238)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 84) + ) + ) + +(defpart 84 + :init-specs ((:fade-g 0.0)) + ) + +(defpartgroup group-eco-red-collect + :id 13 + :duration (seconds 0.5) + :linger-duration (seconds 2) + :flags (sp0) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 87 :flags (sp3) :binding 85) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + ) + ) + +(defpart 87 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 68) + ) + ) + +(defpart 85 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 86 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.005555555)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.0) + (:fade-a -0.22857143) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.18)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 88) + ) + ) + +(defpartgroup group-part-vent-red-active + :id 14 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 92 :fade-after (meters 30) :period (seconds 1.1) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 90) :period (seconds 3.12) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 130) :period (seconds 1.76) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 170) :period (seconds 2.67) :length (seconds 0.017) :binding 89) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 50) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 60) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 70) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 80) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 90) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 93 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 94) + ) + ) + +(defpartgroup group-part-vent-red-inactive + :id 15 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 93 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 94)) + ) + +(defpart 94 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.6 0.6) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.9) (meters 1.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpart 93 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1 0.3) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.1)) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpart 92 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:conerot-x (degrees 0) (degrees 5)) + (:rotate-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 89 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.5)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.28444445) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 90 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 0.1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 91 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.0023809525)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.07619048) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 88) + ) + ) + +(defpart 88 + :init-specs ((:fade-g 0.0)) + ) + +(defpartgroup group-part-vent-yellow-active + :id 16 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 98 :fade-after (meters 40) :period (seconds 1.1) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 80) :period (seconds 3.12) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 100) :period (seconds 1.76) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 130) :period (seconds 2.67) :length (seconds 0.017) :binding 95) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 60) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 70) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 80) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 90) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 99 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 100) + ) + ) + +(defpartgroup group-part-vent-yellow-inactive + :id 17 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 99 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 100)) + ) + +(defpart 100 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.6 0.6) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.9) (meters 1.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 92.0 32.0) + (:g 32.0 92.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpart 99 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1 0.3) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.1)) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpart 98 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:timer (seconds 1.25)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:conerot-x (degrees 0) (degrees 5)) + (:rotate-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 95 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 0.2) (meters 0.2)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 128.0) + (:vel-x (meters 0.10666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a -0.34133333) + (:timer (seconds 1.25)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 96 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.2)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 128.0) + (:vel-x (meters 0.11259259)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a -0.34133333) + (:timer (seconds 1.25)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 97 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.5 2.0) + (:y (meters -0.05)) + (:scale-x (meters 0.4) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0023333333) (meters 0.0016666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.024242423) + (:accel-y (meters -0.000100000005) (meters -0.0003)) + (:friction 0.93) + (:timer (seconds 0.1) (seconds 0.697)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.3)) + (:next-launcher 101) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.05)) + ) + ) + +(defpart 101 + :init-specs ((:fade-r 0.0)) + ) + +(defpartgroup group-eco-yellow + :id 18 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 106 :flags (sp3) :binding 102) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + ) + ) + +(defpart 106 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +(defpart 102 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 5.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.15) (meters 0.2)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 16.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 107) + ) + ) + +(defpart 107 + :init-specs ((:fade-a -0.10666667) (:timer (seconds 0.5))) + ) + +(defpart 103 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.75) (meters 0.1)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 108) + ) + ) + +(defpart 108 + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) + ) + +(defpart 104 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.12) (meters 0.03)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:vel-x (meters 0.11259259)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 108) + ) + ) + +(defpart 105 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 109) + ) + ) + +(defpart 109 + :init-specs ((:fade-g 0.0)) + ) + +(defpartgroup group-eco-yellow-collect + :id 19 + :duration (seconds 0.5) + :linger-duration (seconds 2) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 112 :flags (sp3) :binding 110) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + ) + ) + +(defpart 112 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 64.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 68) + ) + ) + +(defpart 110 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 111 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 109) + ) + ) + +(defpartgroup group-fuel-cell-starburst + :id 20 + :bounds (static-bspherem 0 0.5 0 1.5) + :parts ((sp-item 113 :fade-after (meters 35)) + (sp-item 114 :fade-after (meters 20)) + (sp-item 115 :flags (sp1 sp3)) + (sp-item 116 :flags (sp1 sp3)) + ) + ) + +(defpart 113 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 0.5) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + (:next-time (seconds 0.3)) + (:next-launcher 117) + ) + ) + +(defpart 117 + :init-specs ((:fade-a -0.53333336)) + ) + +(defpart 114 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 0.06) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + (:next-time (seconds 0.25)) + (:next-launcher 117) + ) + ) + +(defpart 115 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:rot-z (degrees 0)) + (:scale-y (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 64.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +(defpart 116 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0)) + (:scale-y (meters 3.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +(defun sparticle-track-root-money ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (let ((v1-2 (-> arg1 key 0 proc))) + (when (!= (-> v1-2 type) hud-money) + (let ((v1-4 (-> v1-2 root trans))) + (set! (-> arg2 x) (-> v1-4 x)) + (set! (-> arg2 y) (+ 2048.0 (-> v1-4 y))) + (set! (-> arg2 z) (-> v1-4 z)) + ) + ) + ) + 0 + (none) + ) + +(defpart 118 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 0.5) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.3)) + (:next-launcher 119) + ) + ) + +(defpart 119 + :init-specs ((:fade-a -0.53333336)) + ) + +(defpart 120 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 0.06) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.25)) + (:next-launcher 119) + ) + ) + +(defpart 121 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 2.5)) + (:rot-z (degrees 0)) + (:scale-y (meters 2)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 32.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds 12)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:func 'sparticle-track-root-money) + ) + ) + +(defpart 122 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-z (degrees 0)) + (:scale-y (meters 2.5)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 32.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds 12)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:func 'sparticle-track-root-money) + ) + ) + +(defpartgroup group-money-starburst :id 21 :bounds (static-bspherem 0 0.5 0 1.5) :parts ((sp-item 123))) + +(defpartgroup group-buzzer-effect :id 22 :bounds (static-bspherem 0 0 0 1) :parts ((sp-item 124))) + +(defpartgroup group-blue-collect + :id 23 + :duration (seconds 0.017) + :linger-duration (seconds 4) + :flags (sp0) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 125) (sp-item 126) (sp-item 127)) + ) + +(defpart 125 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +(defpart 126 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +(defpart 127 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 129) + ) + ) + +(defpartgroup group-yellow-collect + :id 24 + :duration (seconds 0.017) + :linger-duration (seconds 4) + :flags (sp0) + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 130) (sp-item 131) (sp-item 132)) + ) + +(defpart 130 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +(defpart 131 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +(defpart 132 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 129) + ) + ) + +(defpart 129 + :init-specs ((:scalevel-x (meters -0.025)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-red-collect + :id 25 + :duration (seconds 0.017) + :linger-duration (seconds 4) + :flags (sp0) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 133) (sp-item 134) (sp-item 135)) + ) + +(defpart 133 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +(defpart 134 + :init-specs ((:texture (new 'static 'texture-id :index #x4e :page #x4)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +(defpart 135 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 129) + ) + ) diff --git a/goal_src/jakx/engine/debug/debug-sphere.gc b/goal_src/jakx/engine/debug/debug-sphere.gc index c5743cecc8..5aeb6a6684 100644 --- a/goal_src/jakx/engine/debug/debug-sphere.gc +++ b/goal_src/jakx/engine/debug/debug-sphere.gc @@ -7,3 +7,92 @@ ;; DECOMP BEGINS +(defun make-debug-sphere-table ((arg0 vector-array) (arg1 float) (arg2 float)) + "Create a table of lines on a sphere." + (let ((s2-0 (new-stack-vector0)) + (f30-0 1.0) + (s5-0 0) + ) + (set-vector! s2-0 0.0 0.0 0.0 1.0) + (dotimes (s1-0 (the int arg2)) + (let ((f28-0 (* f30-0 (sin (* (the float s1-0) (/ 32768.0 arg2))))) + (f26-0 (* f30-0 (sin (* (the float (+ s1-0 1)) (/ 32768.0 arg2))))) + (s0-0 (new-stack-vector0)) + (sv-80 (new 'stack-no-clear 'vector)) + ) + (set! (-> sv-80 quad) (the-as uint128 0)) + (let ((sv-96 (new 'stack-no-clear 'vector))) + (set! (-> sv-96 quad) (the-as uint128 0)) + (set! (-> s0-0 y) (+ (-> s2-0 y) (* (cos (* (the float s1-0) (/ 32768.0 arg2))) f30-0))) + (set! (-> sv-80 y) (-> s0-0 y)) + (set! (-> sv-96 y) (+ (-> s2-0 y) (* (cos (* (the float (+ s1-0 1)) (/ 32768.0 arg2))) f30-0))) + (let ((sv-112 0)) + (while (< sv-112 (the int arg1)) + (set! (-> s0-0 x) (+ (-> s2-0 x) (* (cos (* (the float sv-112) (/ 65536.0 arg1))) f28-0))) + (set! (-> s0-0 z) (+ (-> s2-0 z) (* (sin (* (the float sv-112) (/ 65536.0 arg1))) f28-0))) + (set! (-> sv-80 x) (+ (-> s2-0 x) (* (cos (* (the float (+ sv-112 1)) (/ 65536.0 arg1))) f28-0))) + (set! (-> sv-80 z) (+ (-> s2-0 z) (* (sin (* (the float (+ sv-112 1)) (/ 65536.0 arg1))) f28-0))) + (set! (-> sv-96 x) (+ (-> s2-0 x) (* (cos (* (the float sv-112) (/ 65536.0 arg1))) f26-0))) + (set! (-> sv-96 z) (+ (-> s2-0 z) (* (sin (* (the float sv-112) (/ 65536.0 arg1))) f26-0))) + (set! (-> arg0 data s5-0 quad) (-> s0-0 quad)) + (set! (-> arg0 data (+ s5-0 1) quad) (-> sv-80 quad)) + (set! (-> arg0 data (+ s5-0 2) quad) (-> sv-96 quad)) + (+! s5-0 3) + (+! sv-112 1) + ) + ) + ) + ) + ) + (set! (-> arg0 length) s5-0) + ) + arg0 + ) + +(when *debug-segment* +(define *debug-sphere-table* (new 'debug 'boxed-array vector-array 10)) + +) +(defun add-debug-sphere-from-table ((arg0 bucket-id) (arg1 vector) (arg2 meters) (arg3 rgba) (arg4 int)) + "Draw a sphere out of debug lines, using the precomputed table of lines." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (if (zero? (-> *debug-sphere-table* arg4)) + (set! (-> *debug-sphere-table* arg4) + (make-debug-sphere-table (new 'debug 'vector-array (* (* 3 arg4) arg4)) (the float arg4) (the float arg4)) + ) + ) + (let* ((sv-32 (-> *debug-sphere-table* arg4)) + (sv-36 (the-as vector (new-stack-vector0))) + (s2-1 (new-stack-vector0)) + (s1-1 (new-stack-vector0)) + (s0-0 (the-as object (-> sv-32 data))) + ) + (.lvf vf1 (&-> arg1 quad)) + (.mov vf2 arg2) + (countdown (s4-1 (/ (-> sv-32 length) 3)) + (.lvf vf3 (&-> (the-as (inline-array vector) s0-0) 0 quad)) + (.lvf vf4 (&-> (the-as (inline-array vector) s0-0) 1 quad)) + (.lvf vf5 (&-> (the-as (inline-array vector) s0-0) 2 quad)) + (set! s0-0 (-> (the-as (inline-array vector) s0-0) 3)) + (.mul.x.vf vf3 vf3 vf2) + (.mul.x.vf vf4 vf4 vf2) + (.mul.x.vf vf5 vf5 vf2) + (.add.vf vf3 vf3 vf1) + (.add.vf vf4 vf4 vf1) + (.add.vf vf5 vf5 vf1) + (.svf (&-> s2-1 quad) vf3) + (.svf (&-> s1-1 quad) vf4) + (.svf (&-> sv-36 quad) vf5) + (add-debug-line #t arg0 s2-1 s1-1 arg3 #f (the-as rgba -1)) + (add-debug-line #t arg0 s2-1 sv-36 arg3 #f (the-as rgba -1)) + ) + ) + 0 + (none) + ) + ) diff --git a/goal_src/jakx/engine/debug/debug.gc b/goal_src/jakx/engine/debug/debug.gc index 40555b6dd1..75fdf6fbe8 100644 --- a/goal_src/jakx/engine/debug/debug.gc +++ b/goal_src/jakx/engine/debug/debug.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define-extern add-debug-flat-triangle-noclip (function vector vector vector vector vector none)) \ No newline at end of file diff --git a/goal_src/jakx/engine/debug/editable-h.gc b/goal_src/jakx/engine/debug/editable-h.gc index 11b6300325..8f9ae6226d 100644 --- a/goal_src/jakx/engine/debug/editable-h.gc +++ b/goal_src/jakx/engine/debug/editable-h.gc @@ -5,5 +5,875 @@ ;; name in dgo: editable-h ;; dgos: ENGINE, GAME +;; +++editable-command +(defenum editable-command + :type uint32 + (none 0) + (exit 1) + (kill 2) + (select-one 3) + (select-add 4) + (select-remove 5) + (select-toggle 6) + (select-all 7) + (select-none 8) + (select-region 9) + (select-face 10) + (select-prim 11) + (select-current-owner 12) + (select-current-region 13) + (select-current-face 14) + (select-current-prim 15) + (pick-target 16) + (pick-loc 17) + (pick-yes-no 18) + (cancel 19) + (drag-none 20) + (drag-move 21) + (drag-scale 22) + (drag-rotate 23) + (drag-resize 24) + (camera-tumble 25) + (camera-xz 26) + (camera-xy 27) + (camera-rotate 28) + (camera-move 29) + (camera-zoom 30) + (insert-sphere 31) + (insert-point 32) + (insert-sample 33) + (insert-simple-camera 34) + (insert-light 35) + (insert-entity 36) + (insert-face 37) + (insert-plane 38) + (insert-box 39) + (insert-wall 40) + (delete 41) + (copy 42) + (resize 43) + (snap-to-ground 44) + (snap-xz 45) + (snap-y 46) + (snap-rotate 47) + (flip-side 48) + (region-set 49) + (region-new 50) + (edit-plane-set 51) + (edit-plane-clear 52) + (delete-region 53) + (copy-region 54) + (region-add 55) + (save 56) + (load 57) + (update-game 58) + (print-region-info 59) + (refresh-filter 60) + (rotate-level 61) + (translate-y-level 62) + (select-user0 63) + (select-user1 64) + (select-user2 65) + (select-user3 66) + (select-user4 67) + (select-user5 68) + (select-user6 69) + (select-user7 70) + (select-user8 71) + (select-user9 72) + (select-user10 73) + (select-user11 74) + (select-user12 75) + ) +;; ---editable-command + +;; +++editable-filter +(defenum editable-filter + :type uint32 + :bitfield #t + (none 0) + (unknown 1) + (sound 2) + (part 3) + (user-setting 4) + (cam-setting 5) + (load 6) + (water-command 7) + (camera 8) + (target 9) + (water 10) + (data 11) + (city_vis 12) + (sample 13) + (light 14) + (entity 15) + (selected 16) + ) +;; ---editable-filter + +;; +++editable-flag +(defenum editable-flag + :type uint32 + :bitfield #t + (selected) + (no-save) + (orient) + (x) + (y) + (z) + (no-plane-snap) + (no-update) + (mark) + (top-set) + (bot-set) + (changed) + (changed-name) + ) +;; ---editable-flag + +(declare-type editable-plane editable) + ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(define *editable-temp-id* 0) + +(define *editable-default-name* (new 'debug 'string 32 "undefined")) + +(defun editable-command->string ((arg0 editable-command)) + (case arg0 + (((editable-command select-current-face)) + "select-current-face" + ) + (((editable-command camera-move)) + "camera-move" + ) + (((editable-command select-current-region)) + "select-current-region" + ) + (((editable-command insert-sample)) + "insert-sample" + ) + (((editable-command print-region-info)) + "print-region-info" + ) + (((editable-command camera-rotate)) + "camera-rotate" + ) + (((editable-command select-user1)) + "select-user1" + ) + (((editable-command select-add)) + "select-add" + ) + (((editable-command camera-xz)) + "camera-xz" + ) + (((editable-command pick-loc)) + "pick-loc" + ) + (((editable-command insert-box)) + "insert-box" + ) + (((editable-command insert-entity)) + "insert-entity" + ) + (((editable-command translate-y-level)) + "translate-y-level" + ) + (((editable-command select-user11)) + "select-user11" + ) + (((editable-command select-user10)) + "select-user10" + ) + (((editable-command select-all)) + "select-all" + ) + (((editable-command copy-region)) + "copy-region" + ) + (((editable-command select-none)) + "select-none" + ) + (((editable-command camera-zoom)) + "camera-zoom" + ) + (((editable-command delete-region)) + "delete-region" + ) + (((editable-command select-toggle)) + "select-toggle" + ) + (((editable-command copy)) + "copy" + ) + (((editable-command pick-yes-no)) + "pick-yes-no" + ) + (((editable-command insert-light)) + "insert-light" + ) + (((editable-command none)) + "none" + ) + (((editable-command select-user4)) + "select-user4" + ) + (((editable-command resize)) + "resize" + ) + (((editable-command flip-side)) + "flip-side" + ) + (((editable-command refresh-filter)) + "refresh-filter" + ) + (((editable-command cancel)) + "cancel" + ) + (((editable-command save)) + "save" + ) + (((editable-command select-user6)) + "select-user6" + ) + (((editable-command region-new)) + "region-new" + ) + (((editable-command snap-to-ground)) + "snap-to-ground" + ) + (((editable-command pick-target)) + "pick-target" + ) + (((editable-command snap-y)) + "snap-y" + ) + (((editable-command select-user8)) + "select-user8" + ) + (((editable-command select-face)) + "select-face" + ) + (((editable-command exit)) + "exit" + ) + (((editable-command drag-move)) + "drag-move" + ) + (((editable-command edit-plane-set)) + "edit-plane-set" + ) + (((editable-command select-region)) + "select-region" + ) + (((editable-command delete)) + "delete" + ) + (((editable-command select-user0)) + "select-user0" + ) + (((editable-command camera-xy)) + "camera-xy" + ) + (((editable-command select-current-owner)) + "select-current-owner" + ) + (((editable-command region-add)) + "region-add" + ) + (((editable-command insert-sphere)) + "insert-sphere" + ) + (((editable-command insert-plane)) + "insert-plane" + ) + (((editable-command drag-rotate)) + "drag-rotate" + ) + (((editable-command select-one)) + "select-one" + ) + (((editable-command update-game)) + "update-game" + ) + (((editable-command select-user2)) + "select-user2" + ) + (((editable-command select-user3)) + "select-user3" + ) + (((editable-command snap-rotate)) + "snap-rotate" + ) + (((editable-command rotate-level)) + "rotate-level" + ) + (((editable-command select-prim)) + "select-prim" + ) + (((editable-command drag-none)) + "drag-none" + ) + (((editable-command select-current-prim)) + "select-current-prim" + ) + (((editable-command select-user5)) + "select-user5" + ) + (((editable-command insert-wall)) + "insert-wall" + ) + (((editable-command insert-simple-camera)) + "insert-sample-camera" + ) + (((editable-command insert-face)) + "insert-face" + ) + (((editable-command region-set)) + "region-set" + ) + (((editable-command select-user7)) + "select-user7" + ) + (((editable-command insert-point)) + "insert-point" + ) + (((editable-command drag-resize)) + "drag-resize" + ) + (((editable-command kill)) + "kill" + ) + (((editable-command snap-xz)) + "snap-xz" + ) + (((editable-command select-user12)) + "select-user12" + ) + (((editable-command camera-tumble)) + "camera-tumble" + ) + (((editable-command select-user9)) + "select-user9" + ) + (((editable-command edit-plane-clear)) + "edit-plane-clear" + ) + (((editable-command drag-scale)) + "drag-scale" + ) + (((editable-command load)) + "load" + ) + (((editable-command select-remove)) + "select-remove" + ) + (else + "*unknown*" + ) + ) + ) + +;; WARN: Return type mismatch basic vs string. +(defun editable-filter->string ((arg0 editable-filter) (arg1 basic)) + (if (= (logand arg0 (editable-filter target)) (editable-filter target)) + (format arg1 "target ") + ) + (if (= (logand arg0 (editable-filter city_vis)) (editable-filter city_vis)) + (format arg1 "city_vis ") + ) + (if (= (logand arg0 (editable-filter water-command)) (editable-filter water-command)) + (format arg1 "water-command ") + ) + (if (= (logand arg0 (editable-filter user-setting)) (editable-filter user-setting)) + (format arg1 "user-setting ") + ) + (if (= (logand arg0 (editable-filter sample)) (editable-filter sample)) + (format arg1 "sample ") + ) + (if (= (logand arg0 (editable-filter light)) (editable-filter light)) + (format arg1 "light ") + ) + (if (= (logand arg0 (editable-filter part)) (editable-filter part)) + (format arg1 "part ") + ) + (if (= (logand arg0 (editable-filter unknown)) (editable-filter unknown)) + (format arg1 "unknown ") + ) + (if (= (logand arg0 (editable-filter entity)) (editable-filter entity)) + (format arg1 "entity ") + ) + (if (= (logand arg0 (editable-filter data)) (editable-filter data)) + (format arg1 "data ") + ) + (if (= (logand arg0 (editable-filter water)) (editable-filter water)) + (format arg1 "water ") + ) + (if (= (logand arg0 (editable-filter cam-setting)) (editable-filter cam-setting)) + (format arg1 "cam-setting ") + ) + (if (= (logand (editable-filter selected) arg0) (editable-filter selected)) + (format arg1 "selected ") + ) + (if (= (logand arg0 (editable-filter none)) (editable-filter none)) + (format arg1 "none ") + ) + (if (= (logand arg0 (editable-filter camera)) (editable-filter camera)) + (format arg1 "camera ") + ) + (if (= (logand arg0 (editable-filter load)) (editable-filter load)) + (format arg1 "load ") + ) + (if (= (logand arg0 (editable-filter sound)) (editable-filter sound)) + (format arg1 "sound ") + ) + (the-as string arg1) + ) + +(deftype editable-region (basic) + ((changed symbol) + (locked symbol) + (id uint64) + (filter editable-filter) + (tree symbol) + (level string) + (on-enter pair) + (on-inside pair) + (on-exit pair) + ) + (:methods + (new (symbol type) _type_) + (editable-region-method-9 () none) + (editable-region-method-10 () none) + (editable-region-method-11 () none) + (editable-region-method-12 () none) + ) + ) + + +(deftype editable (basic) + ((flags editable-flag) + (name string) + (id uint32) + (region editable-region) + (owner pair) + (prefix basic) + ) + (:methods + (editable-method-9 () none) + (editable-method-10 () none) + (editable-method-11 () none) + (editable-method-12 () none) + (editable-method-13 () none) + (editable-method-14 () none) + (editable-method-15 () none) + (editable-method-16 () none) + (editable-method-17 () none) + (editable-method-18 () none) + (editable-method-19 () none) + (editable-method-20 () none) + (editable-method-21 () none) + (editable-method-22 () none) + (editable-method-23 () none) + (editable-method-24 () none) + (editable-method-25 () none) + (editable-method-26 () none) + (editable-method-27 () none) + (editable-method-28 () none) + (editable-method-29 () none) + (editable-method-30 () none) + (editable-method-31 () none) + (editable-method-32 () none) + (editable-method-33 () none) + (editable-method-34 () none) + (editable-method-35 () none) + ) + ) + + +(deftype editable-array (basic) + ((allocated-length int32) + (length int32) + (region editable-region) + (backup-region editable-region) + (region-lock? symbol) + (move-lock? symbol) + (move-speed float) + (selection (array editable)) + (filter editable-filter 2) + (target editable) + (target-mode editable-command) + (target-command editable-command) + (target-message string) + (edit-plane editable-plane) + (edit-plane-center vector :inline) + (edit-plane-normal vector :inline) + (level-offset vector :inline) + (level-info-id uint32) + (level uint32) + (edit-param0 float) + (data editable :dynamic) + ) + (:methods + (new (symbol type int) _type_) + (editable-array-method-9 () none) + (editable-array-method-10 () none) + (editable-array-method-11 () none) + (editable-array-method-12 () none) + (editable-array-method-13 () none) + (editable-array-method-14 () none) + (editable-array-method-15 () none) + (editable-array-method-16 () none) + (editable-array-method-17 () none) + (editable-array-method-18 () none) + (editable-array-method-19 () none) + ) + ) + + +(defmethod new editable-array ((allocation symbol) (type-to-make type) (arg0 int)) + (let ((s5-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* arg0 4)))))) + (set! (-> s5-0 allocated-length) arg0) + (set! (-> s5-0 length) 0) + (set! (-> s5-0 region) #f) + (set! (-> s5-0 backup-region) #f) + (set! (-> s5-0 region-lock?) #f) + (set! (-> s5-0 move-lock?) #f) + (set! (-> s5-0 target) #f) + (set! (-> s5-0 target-command) (editable-command none)) + (set! (-> s5-0 target-message) #f) + (set! (-> s5-0 selection) + (the-as (array editable) ((method-of-type array new) allocation array editable arg0)) + ) + (set! (-> s5-0 edit-plane) #f) + (set! (-> s5-0 filter 0) (editable-filter + none + unknown + sound + part + user-setting + cam-setting + load + water-command + city_vis + sample + light + entity + ) + ) + (set! (-> s5-0 filter 1) (editable-filter camera target water data city_vis sample light entity selected)) + (dotimes (v1-5 arg0) + (set! (-> s5-0 data v1-5) #f) + (set! (-> s5-0 selection v1-5) #f) + ) + s5-0 + ) + ) + +(deftype editable-point (editable) + ((radius meters) + (trans vector :inline) + ) + (:methods + (new (symbol type vector editable-region) _type_) + ) + ) + + +(defmethod new editable-point ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (set! (-> gp-0 name) "undefined") + (set! (-> gp-0 prefix) "undefined") + (let* ((s3-0 gp-0) + (s2-0 (method-of-object s3-0 editable-method-23)) + ) + (set! arg1 (cond + (arg1 + (empty) + arg1 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s2-0) + ) + (set! (-> gp-0 trans quad) (-> arg0 quad)) + (set! (-> gp-0 radius) 2048.0) + (set! (-> gp-0 owner) '()) + gp-0 + ) + ) + +(deftype editable-sphere (editable-point) + () + (:methods + (new (symbol type vector float editable-region) _type_) + ) + ) + + +(defmethod new editable-sphere ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 float) (arg2 editable-region)) + (let ((s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> s5-0 region) #f) + (set! (-> s5-0 name) "undefined") + (set! (-> s5-0 prefix) "undefined") + (let* ((s2-0 s5-0) + (s1-0 (method-of-object s2-0 editable-method-23)) + ) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s1-0) + ) + (set! (-> s5-0 trans quad) (-> arg0 quad)) + (set! (-> s5-0 radius) arg1) + (set! (-> s5-0 owner) '()) + s5-0 + ) + ) + +(deftype editable-sample (editable-point) + () + ) + + +(deftype editable-light (editable-sphere) + ((direction vector :inline) + (color vector :inline) + (decay-start float) + (ambient-point-ratio float) + (brightness float) + (shadow uint32 :overlay-at (-> direction data 0)) + (shadows float 5) + (shadow-ambi float :overlay-at (-> shadows 0)) + (shadow-dir0 float :overlay-at (-> shadows 1)) + (shadow-dir1 float :overlay-at (-> shadows 2)) + (shadow-dir2 float :overlay-at (-> shadows 3)) + (shadow-dir3 float :overlay-at (-> shadows 4)) + (alt-level basic) + ) + (:methods + (new (symbol type vector float editable-region) _type_) + ) + ) + + +(defmethod new editable-light ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 float) (arg2 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (let* ((s2-0 gp-0) + (s1-0 (method-of-object s2-0 editable-method-23)) + ) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s1-0) + ) + (set! (-> gp-0 trans quad) (-> arg0 quad)) + (set! (-> gp-0 radius) arg1) + (set! (-> gp-0 owner) '()) + (set! (-> gp-0 prefix) (new 'debug 'string 32 *editable-default-name*)) + (let ((s5-1 (new 'debug 'string 32 (the-as string #f)))) + (format s5-1 "~s-~d" (-> gp-0 prefix) *editable-temp-id*) + (set! (-> gp-0 name) s5-1) + ) + (set! *editable-temp-id* (+ *editable-temp-id* 1)) + (set! (-> gp-0 decay-start) 0.5) + (set! (-> gp-0 ambient-point-ratio) 1.0) + (set! (-> gp-0 brightness) 1.0) + (set-vector! (-> gp-0 color) 1.0 1.0 1.0 -1.0) + (set-vector! (-> gp-0 direction) 0.0 0.0 0.0 0.0) + (set! (-> gp-0 shadow-ambi) 1.0) + (set! (-> gp-0 shadow-dir0) 1.0) + (set! (-> gp-0 shadow-dir1) 1.0) + (set! (-> gp-0 shadow-dir2) 1.0) + (set! (-> gp-0 shadow-dir3) 1.0) + (set! (-> gp-0 alt-level) #f) + gp-0 + ) + ) + +(deftype editable-entity (editable-point) + ((angles euler-angles :inline) + (idx int32) + ) + (:methods + (new (symbol type vector float editable-region) _type_) + (editable-entity-method-36 () none) + ) + ) + + +(defmethod new editable-entity ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 float) (arg2 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (let* ((s2-0 gp-0) + (s1-0 (method-of-object s2-0 editable-method-23)) + ) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s1-0) + ) + (set! (-> gp-0 trans quad) (-> arg0 quad)) + (set! (-> gp-0 radius) arg1) + (set! (-> gp-0 owner) '()) + (set! (-> gp-0 prefix) (new 'debug 'string 32 "entity")) + (set! (-> gp-0 name) (new 'debug 'string 32 "entity")) + gp-0 + ) + ) + +(deftype editable-face (editable) + ((length int32) + (normal vector :inline) + (center vector :inline) + (vertex editable-point 6) + ) + (:methods + (new (symbol type editable-region) _type_) + (editable-face-method-36 () none) + (editable-face-method-37 () none) + ) + ) + + +(defmethod new editable-face ((allocation symbol) (type-to-make type) (arg0 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (set! (-> gp-0 name) "undefined") + (set! (-> gp-0 prefix) "undefined") + (let* ((s4-0 gp-0) + (s3-0 (method-of-object s4-0 editable-method-23)) + ) + (set! arg0 (cond + (arg0 + (empty) + arg0 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s3-0) + ) + (set! (-> gp-0 owner) '()) + gp-0 + ) + ) + +(deftype editable-plane (editable) + ((length int32) + (radius meters) + (vertex editable-point 2) + ) + (:methods + (new (symbol type editable-region) _type_) + (editable-plane-method-36 () none) + (editable-plane-method-37 () none) + ) + ) + + +(defmethod new editable-plane ((allocation symbol) (type-to-make type) (arg0 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (set! (-> gp-0 name) "undefined") + (set! (-> gp-0 prefix) "undefined") + (let* ((s4-0 gp-0) + (s3-0 (method-of-object s4-0 editable-method-23)) + ) + (set! arg0 (cond + (arg0 + (empty) + arg0 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s3-0) + ) + (set! (-> gp-0 owner) '()) + (set! (-> gp-0 radius) 20480.0) + gp-0 + ) + ) + +(deftype editable-player (process-drawable) + ((current editable-array) + (current-command editable-command) + (select-command (function object)) + (drag-command uint32) + (extra-command (function object)) + (left-handed basic) + (light-names basic) + (external-cam-mode symbol) + (command editable-command 6) + (close-menu-time uint64) + (mouse-pos vector :inline) + (mouse-end vector :inline) + (manipulator manipulator :inline) + (mouse-box vector 2 :inline) + (mouse-hit vector :inline) + (mouse-normal vector :inline) + (float-variable float) + (float-step float) + (float-max float) + (float-min float) + (float-id uint32) + ) + (:methods + (editable-player-method-50 () none) + (editable-player-method-51 () none) + (editable-player-method-52 () none) + (editable-player-method-53 () none) + ) + ) + + +(deftype editable-work (basic) + ((num-found int16) + (last-found int16) + (last-x float) + (last-y float) + (hide symbol) + (found editable 256) + (dists uint32 256) + ) + ) + + +(define *editable-work* (new 'global 'editable-work)) + +(define *editable* (the-as (pointer editable-player) #f)) diff --git a/goal_src/jakx/engine/debug/history.gc b/goal_src/jakx/engine/debug/history.gc index 8892552c09..c1404b250b 100644 --- a/goal_src/jakx/engine/debug/history.gc +++ b/goal_src/jakx/engine/debug/history.gc @@ -5,5 +5,509 @@ ;; name in dgo: history ;; dgos: ENGINE, GAME +;; +++history-channel +(defenum history-channel + :type uint8 + (trans 0) + (transv 1) + (transv-in 2) + (transv-out 3) + (intersect 4) + (local-normal 5) + (surface-normal 6) + (collide-status 7) + (pat 8) + (time 9) + (friction 10) + ) +;; ---history-channel + ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(defun history-channel->string ((arg0 history-channel)) + (case arg0 + (((history-channel friction)) + "friction" + ) + (((history-channel transv-out)) + "transv-out" + ) + (((history-channel pat)) + "pat" + ) + (((history-channel transv-in)) + "transv-in" + ) + (((history-channel trans)) + "trans" + ) + (((history-channel local-normal)) + "local-normal" + ) + (((history-channel collide-status)) + "collide-status" + ) + (((history-channel time)) + "time" + ) + (((history-channel intersect)) + "intersect" + ) + (((history-channel surface-normal)) + "surface-normal" + ) + (((history-channel transv)) + "transv" + ) + (else + "*unknown*" + ) + ) + ) + +(deftype history-elt (structure) + ((record-tag-bytes uint8 4) + (record-tag uint32 :overlay-at (-> record-tag-bytes 0)) + (record-id uint16 :overlay-at (-> record-tag-bytes 0)) + (owner uint8 :overlay-at (-> record-tag-bytes 2)) + (channel history-channel :offset 4) + (timestamp time-frame) + (origin vector :inline) + (bytes uint8 16) + (vector vector :inline :overlay-at (-> bytes 0)) + (float float :overlay-at (-> bytes 0)) + (collide-status collide-status :overlay-at (-> bytes 0)) + (collide-reaction-flag uint32 :overlay-at (-> bytes 8)) + (pat pat-surface :overlay-at (-> bytes 0)) + ) + ) + + +(deftype history-iterator (basic) + ((max-age uint32) + (owner uint8) + (proc process) + (out object) + (channel-mask uint64) + (index int32) + (done? symbol) + ) + (:methods + (new (symbol type uint) _type_) + (frame-counter-delta (_type_ history-elt) time-frame) + (update-entries! (_type_) history-elt) + (get-age (_type_ history-elt) float) + ) + ) + + +(deftype history (basic) + ((alloc-index int32) + (allocated-length int32) + (elts history-elt :inline :dynamic) + ) + (:methods + (new (symbol type int) _type_) + (clear-record-tags! (_type_ history-channel uint uint) history-elt) + (clear-history-entries! (_type_) none) + ) + ) + + +(defmethod length ((this history)) + (-> this allocated-length) + ) + +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of ((this history)) + (the-as int (+ (-> this type size) (* 48 (-> this allocated-length)))) + ) + +(defmethod new history ((allocation symbol) (type-to-make type) (arg0 int)) + (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 arg0)))))) + (set! (-> v0-0 allocated-length) arg0) + v0-0 + ) + ) + +(defmethod clear-history-entries! ((this history)) + (set! (-> this alloc-index) 0) + (countdown (v1-0 (-> this allocated-length)) + (let ((a1-3 (-> this elts v1-0))) + (set! (-> a1-3 record-tag) (the-as uint 0)) + (set! (-> a1-3 timestamp) 0) + ) + 0 + ) + 0 + (none) + ) + +(define-perm *history* history (new 'debug 'history 4096)) + +(clear-history-entries! *history*) + +;; WARN: new jak 2 until loop case, check carefully +(defmethod clear-record-tags! ((this history) (arg0 history-channel) (arg1 uint) (arg2 uint)) + (let* ((t1-0 (-> this alloc-index)) + (v1-0 (-> this elts)) + (v0-0 (-> v1-0 t1-0)) + ) + (let ((t2-0 (-> v0-0 record-tag)) + (t0-2 (-> v0-0 timestamp)) + ) + (set! (-> v0-0 channel) arg0) + (set! (-> v0-0 record-id) arg1) + (set! (-> v0-0 owner) arg2) + (set! (-> v0-0 timestamp) (-> *display* base-clock frame-counter)) + (let* ((a1-4 (-> this allocated-length)) + (a2-2 (mod (+ t1-0 1) a1-4)) + ) + (set! (-> this alloc-index) a2-2) + (when (nonzero? t2-0) + (until #f + (let ((a0-4 (-> v1-0 a2-2))) + (if (!= t0-2 (-> a0-4 timestamp)) + (return v0-0) + ) + (set! (-> a0-4 record-tag) (the-as uint 0)) + ) + (set! a2-2 (mod (+ a2-2 1) a1-4)) + ) + #f + ) + ) + ) + v0-0 + ) + ) + +(defmethod new history-iterator ((allocation symbol) (type-to-make type) (arg0 uint)) + (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> v0-0 max-age) arg0) + (set! (-> v0-0 owner) (the-as uint 1)) + (set! (-> v0-0 proc) #f) + (set! (-> v0-0 out) *stdcon*) + (set! (-> v0-0 channel-mask) (the-as uint -1)) + (set! (-> v0-0 index) (-> *history* alloc-index)) + (set! (-> v0-0 done?) #f) + v0-0 + ) + ) + +(defmethod update-entries! ((this history-iterator)) + (let ((v1-0 *history*) + (a1-2 (-> *display* base-clock frame-counter)) + ) + (while (not (-> this done?)) + (let ((a2-1 (+ (-> this index) -1))) + (if (< a2-1 0) + (set! a2-1 (+ (-> v1-0 allocated-length) -1)) + ) + (set! (-> this index) a2-1) + (if (= a2-1 (-> v1-0 alloc-index)) + (set! (-> this done?) #t) + ) + (let ((a2-5 (-> v1-0 elts a2-1))) + (when (nonzero? (-> a2-5 record-tag)) + (when (< (the-as time-frame (-> this max-age)) (- a1-2 (-> a2-5 timestamp))) + (set! (-> this done?) #t) + (return (the-as history-elt #f)) + ) + (if (= (-> a2-5 owner) (-> this owner)) + (return a2-5) + ) + ) + ) + ) + ) + ) + (the-as history-elt #f) + ) + +(defmethod get-age ((this history-iterator) (arg0 history-elt)) + (- 1.0 (fmin 1.0 (/ (the float (+ (- 1 (-> arg0 timestamp)) (-> *display* base-clock frame-counter))) + (the float (+ (-> this max-age) 1)) + ) + ) + ) + ) + +(defmethod frame-counter-delta ((this history-iterator) (arg0 history-elt)) + (- (-> *display* base-clock frame-counter) (-> arg0 timestamp)) + ) + +;; WARN: new jak 2 until loop case, check carefully +(defun history-print ((arg0 history-iterator)) + (let ((sv-16 (-> arg0 out)) + (sv-24 -1) + (sv-32 0) + ) + (until #f + (let ((sv-40 (update-entries! arg0))) + (if (not sv-40) + (goto cfg-71) + ) + (when (logtest? (-> arg0 channel-mask) (ash 1 (the-as int (-> sv-40 channel)))) + (let ((sv-48 (frame-counter-delta arg0 sv-40)) + (sv-56 (-> sv-40 record-id)) + ) + (cond + ((!= sv-24 sv-48) + (set! sv-24 (the-as int sv-48)) + (set! sv-32 (the-as int sv-56)) + (format sv-16 "~3D ~4X " sv-48 (-> sv-40 record-id)) + ) + ((!= sv-32 sv-56) + (set! sv-32 (the-as int sv-56)) + (format sv-16 " ~4X " (-> sv-40 record-id)) + ) + (else + (format sv-16 " ") + ) + ) + ) + (let ((v1-22 (-> sv-40 channel))) + (cond + ((or (= v1-22 (history-channel trans)) + (or (= v1-22 (history-channel transv)) + (= v1-22 (history-channel transv-in)) + (= v1-22 (history-channel transv-out)) + (= v1-22 (history-channel intersect)) + ) + ) + (format + sv-16 + "~-15S: ~14Mm ~14Mm ~14Mm~%" + (history-channel->string (-> sv-40 channel)) + (-> sv-40 vector x) + (-> sv-40 vector y) + (-> sv-40 vector z) + ) + ) + ((or (= v1-22 (history-channel local-normal)) (= v1-22 (history-channel surface-normal))) + (format + sv-16 + "~-15S: ~14f ~14f ~14f~%" + (history-channel->string (-> sv-40 channel)) + (-> sv-40 vector x) + (-> sv-40 vector y) + (-> sv-40 vector z) + ) + ) + ((= v1-22 (history-channel pat)) + (let ((s2-0 (-> sv-40 vector x))) + (format + sv-16 + "~-15S: #x~6X mode:~-8S material:~-10S event:~S~%" + (history-channel->string (-> sv-40 channel)) + s2-0 + (pat-mode->string (the-as pat-surface s2-0)) + (pat-material->string (the-as pat-surface s2-0)) + (pat-event->string (the-as pat-surface s2-0)) + ) + ) + ) + ((= v1-22 (history-channel collide-status)) + (let ((sv-64 (-> sv-40 collide-status)) + (sv-72 (-> sv-40 vector z)) + ) + (format sv-16 "~-15S: #x~6X " (history-channel->string (-> sv-40 channel)) sv-64) + (let ((s5-4 sv-64)) + (if (= (logand s5-4 (collide-status touch-background)) (collide-status touch-background)) + (format sv-16 "touch-background ") + ) + (if (= (logand s5-4 (collide-status on-special-surface)) (collide-status on-special-surface)) + (format sv-16 "on-special-surface ") + ) + (if (= (logand s5-4 (collide-status touch-wall)) (collide-status touch-wall)) + (format sv-16 "touch-wall ") + ) + (if (= (logand s5-4 (collide-status on-surface)) (collide-status on-surface)) + (format sv-16 "on-surface ") + ) + (if (= (logand s5-4 (collide-status impact-surface)) (collide-status impact-surface)) + (format sv-16 "impact-surface ") + ) + (if (= (logand s5-4 (collide-status touch-ceiling)) (collide-status touch-ceiling)) + (format sv-16 "touch-ceiling ") + ) + (if (= (logand s5-4 (collide-status on-ground)) (collide-status on-ground)) + (format sv-16 "on-ground ") + ) + (if (= (logand s5-4 (collide-status glance)) (collide-status glance)) + (format sv-16 "glance ") + ) + (if (= (logand s5-4 (collide-status blocked)) (collide-status blocked)) + (format sv-16 "blocked ") + ) + (if (= (logand s5-4 (collide-status touch-edge)) (collide-status touch-edge)) + (format sv-16 "touch-edge ") + ) + (if (= (logand s5-4 (collide-status touch-ceiling-sticky)) (collide-status touch-ceiling-sticky)) + (format sv-16 "touch-ceiling-sticky ") + ) + (if (= (logand s5-4 (collide-status on-water)) (collide-status on-water)) + (format sv-16 "on-water ") + ) + (if (= (logand s5-4 (collide-status touch-actor)) (collide-status touch-actor)) + (format sv-16 "touch-actor ") + ) + (if (= (logand (collide-status probe-hit) s5-4) (collide-status probe-hit)) + (format sv-16 "probe-hit ") + ) + (if (= (logand s5-4 (collide-status stuck)) (collide-status stuck)) + (format sv-16 "stuck ") + ) + (if (= (logand s5-4 (collide-status no-touch)) (collide-status no-touch)) + (format sv-16 "no-touch ") + ) + (if (= (logand s5-4 (collide-status touch-surface)) (collide-status touch-surface)) + (format sv-16 "touch-surface ") + ) + ) + (format sv-16 " #x~6X~%" sv-72) + ) + ) + ((= v1-22 (history-channel friction)) + (let ((f30-0 (-> sv-40 vector x))) + (format sv-16 "~-15S: ~f~%" (history-channel->string (-> sv-40 channel)) f30-0) + ) + ) + ) + ) + ) + ) + ) + ) + #f + (label cfg-71) + 0 + (none) + ) + +;; WARN: new jak 2 until loop case, check carefully +(defun history-draw ((arg0 history-iterator)) + (let ((sv-16 (the-as vector #f)) + (sv-20 (the-as vector #f)) + (sv-24 0.0) + ) + (until #f + (let ((s5-0 (update-entries! arg0))) + (if (not s5-0) + (goto cfg-34) + ) + (when (logtest? (-> arg0 channel-mask) (ash 1 (the-as int (-> s5-0 channel)))) + (let* ((f0-0 (get-age arg0 s5-0)) + (v1-8 (the int (lerp 4.0 128.0 f0-0))) + ) + (case (-> s5-0 channel) + (((history-channel trans)) + (if sv-16 + (add-debug-line + #t + (bucket-id bucket785) + sv-16 + (-> s5-0 vector) + (the-as rgba (logior #xffff00 (shl v1-8 24))) + #f + (the-as rgba -1) + ) + (add-debug-x #t (bucket-id bucket785) (-> s5-0 vector) (the-as rgba (logior #xffff00 (shl v1-8 24)))) + ) + (set! sv-16 (-> s5-0 vector)) + ) + (((history-channel intersect)) + (if sv-20 + (add-debug-line + #t + (bucket-id bucket785) + sv-20 + (-> s5-0 vector) + (the-as rgba (logior #xffffff (shl v1-8 24))) + #f + (the-as rgba -1) + ) + (add-debug-x #t (bucket-id bucket785) (-> s5-0 vector) (the-as rgba (logior #xffffff (shl v1-8 24)))) + ) + (set! sv-20 (-> s5-0 vector)) + ) + (((history-channel transv)) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 0.000024414063) + (the-as rgba (logior (shl v1-8 24) #xff00)) + ) + ) + (((history-channel transv-in)) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 0.000024414063) + (the-as rgba (logior #x408040 (shl v1-8 24))) + ) + ) + (((history-channel transv-out)) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 0.000024414063) + (the-as rgba (logior #x404080 (shl v1-8 24))) + ) + ) + (((history-channel local-normal) (history-channel surface-normal)) + (let ((t1-7 + (logand (the-as uint (-> *pat-mode-info* (shr (shl (the-as int sv-24) 54) 61) hilite-color)) + (the-as uint #xffffffff00ffffff) + ) + ) + ) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 1) + (the-as rgba (logior t1-7 (shl v1-8 24))) + ) + ) + ) + (((history-channel pat)) + (set! sv-24 (-> s5-0 vector x)) + ) + (((history-channel friction)) + (let ((f0-3 (-> s5-0 vector x)) + (a3-10 (new 'stack-no-clear 'vector)) + ) + (set-vector! a3-10 0.0 (* -8192.0 f0-3) 0.0 1.0) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + a3-10 + (meters 0.00024414062) + (the-as rgba (logior #xffffff (shl v1-8 24))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + #f + (label cfg-34) + 0 + (none) + ) diff --git a/goal_src/jakx/engine/debug/manipulator.gc b/goal_src/jakx/engine/debug/manipulator.gc index 5b505aabcd..4fa35fa604 100644 --- a/goal_src/jakx/engine/debug/manipulator.gc +++ b/goal_src/jakx/engine/debug/manipulator.gc @@ -5,5 +5,930 @@ ;; name in dgo: manipulator ;; dgos: ENGINE, GAME +;; +++manipulator-action +(defenum manipulator-action + :type uint32 + (manip-action0 0) + (manip-action1 1) + (manip-action2 2) + (manip-action3 3) + (manip-action4 4) + (manip-action5 5) + (manip-action6 6) + (manip-action7 7) +) +;; ---manipulator-action + + +;; +++manipulator-mode +(defenum manipulator-mode + :type uint32 + (manip-mode0 0) + (manip-mode1 1) +) +;; ---manipulator-mode + + ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(deftype manipulator (structure) + ((action manipulator-action) + (mode manipulator-mode) + (dragging? symbol) + (position vector :inline) + (speed vector :inline) + (drag-ref-position vector :inline) + (mouse-ref-position vector :inline) + (mat matrix :inline) + (rotate-ref int32) + (angles euler-angles :inline) + ) + (:methods + (set-mode (_type_ manipulator-mode) none) + (manipulator-method-10 (_type_ vector vector) none) + (manipulator-method-11 (_type_) none) + (drag-update! (_type_ vector) none) + (manipulator-method-13 (_type_ vector vector) none) + (stop-dragging! (_type_) none) + ) + ) + + +(defun draw-axis ((arg0 vector) (arg1 vector) (arg2 float) (arg3 float) (arg4 rgba)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (let ((s1-0 (new 'stack-no-clear 'vector))) + (cond + ((< (fabs (vector-dot arg1 *x-vector*)) 0.5) + (vector-cross! s1-0 *x-vector* arg1) + ) + ((< (fabs (vector-dot arg1 *y-vector*)) 0.5) + (vector-cross! s1-0 *y-vector* arg1) + ) + (else + (vector-cross! s1-0 *z-vector* arg1) + ) + ) + (vector-cross! s1-0 s1-0 arg1) + (vector-normalize! s1-0 1.0) + (let ((s0-0 (new 'stack-no-clear 'vector))) + (let ((v1-10 arg0)) + (let ((a0-8 arg1)) + (let ((a1-10 arg2)) + (.mov vf7 a1-10) + ) + (.lvf vf5 (&-> a0-8 quad)) + ) + (.lvf vf4 (&-> v1-10 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> s0-0 quad) vf6) + (let ((sv-160 0)) + (while (< sv-160 8) + (let ((sv-176 add-debug-flat-triangle-noclip) + (sv-192 #t) + (sv-208 794) + (sv-224 (new 'stack-no-clear 'vector)) + ) + (let ((v1-16 s0-0)) + (let ((a0-9 arg1)) + (let ((a1-11 arg3)) + (.mov vf7 a1-11) + ) + (.lvf vf5 (&-> a0-9 quad)) + ) + (.lvf vf4 (&-> v1-16 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-224 quad) vf6) + (let ((sv-256 (new 'stack-no-clear 'vector))) + (let ((sv-240 s0-0)) + (let* ((a2-3 + (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) arg1 (* 182.04445 (the float (* 45 sv-160)))) + ) + (v1-22 (vector-orient-by-quat! (new 'stack-no-clear 'vector) s1-0 a2-3)) + ) + (let ((a0-13 (/ arg3 4))) + (.mov vf7 a0-13) + ) + (.lvf vf5 (&-> v1-22 quad)) + ) + (.lvf vf4 (&-> sv-240 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-256 quad) vf6) + (let ((sv-288 (new 'stack-no-clear 'vector))) + (let ((sv-272 s0-0)) + (let* ((a2-7 (quaternion-vector-angle! + (new 'stack-no-clear 'quaternion) + arg1 + (* 182.04445 (the float (* 45 (+ sv-160 1)))) + ) + ) + (v1-29 (vector-orient-by-quat! (new 'stack-no-clear 'vector) s1-0 a2-7)) + ) + (let ((a0-17 (/ arg3 4))) + (.mov vf7 a0-17) + ) + (.lvf vf5 (&-> v1-29 quad)) + ) + (.lvf vf4 (&-> sv-272 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-288 quad) vf6) + (sv-176 (the-as vector sv-192) (the-as vector sv-208) sv-224 sv-256 sv-288) + ) + ) + ) + (+! sv-160 1) + ) + ) + ) + ) + (add-debug-vector #t (bucket-id bucket794) arg0 arg1 arg2 arg4) + ) + ) + +(defmethod set-mode ((this manipulator) (arg0 manipulator-mode)) + (set! (-> this mode) arg0) + 0 + (none) + ) + +(defmethod manipulator-method-10 ((this manipulator) (arg0 vector) (arg1 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (let* ((sv-16 (-> this position)) + (sv-20 0.0) + (sv-48 (vector-normalize! + (vector-! (new 'stack-no-clear 'vector) (-> (view-get-active-math-camera) trans) (-> this position)) + 1.0 + ) + ) + (sv-52 (< (fabs (vector-dot sv-48 (-> this mat rvec))) 0.9)) + (sv-56 (< (fabs (vector-dot sv-48 (-> this mat uvec))) 0.9)) + (sv-60 (< (fabs (vector-dot sv-48 (-> this mat fvec))) 0.9)) + (sv-64 (the-as float #x7f800000)) + ) + (set! sv-20 (* 0.15 (vector-vector-distance (-> (view-get-active-math-camera) trans) sv-16))) + (set! (-> this action) (manipulator-action manip-action0)) + (let ((s4-2 (new 'stack-no-clear 'vector))) + 0.0 + (let ((s3-3 (vector-! (new 'stack-no-clear 'vector) arg1 arg0))) + (let ((f0-16 (ray-sphere-intersect arg0 s3-3 sv-16 (* 0.2 (the-as float sv-20))))) + (when (and (< 0.0 f0-16) (>= sv-64 f0-16)) + (set! sv-64 f0-16) + (set! (-> this action) (manipulator-action manip-action7)) + ) + ) + (when (= (-> this action) (manipulator-action manip-action0)) + (when (and sv-52 sv-56) + (let ((t9-5 ray-sphere-intersect) + (a0-8 arg0) + (a1-4 s3-3) + (a2-2 (new 'stack-no-clear 'vector)) + ) + (let ((v1-27 sv-16)) + (let ((a3-1 (new 'stack-no-clear 'vector))) + (let ((t0-0 (-> this mat)) + (t1-0 (-> this mat uvec)) + ) + (.lvf vf4 (&-> t0-0 rvec quad)) + (.lvf vf5 (&-> t1-0 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a3-1 quad) vf6) + (let ((t0-1 (the-as float sv-20))) + (.mov vf7 t0-1) + ) + (.lvf vf5 (&-> a3-1 quad)) + ) + (.lvf vf4 (&-> v1-27 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a2-2 quad) vf6) + (let ((f0-20 (t9-5 a0-8 a1-4 a2-2 (* 0.3 (the-as float sv-20))))) + (when (and (< 0.0 f0-20) (>= sv-64 f0-20)) + (set! sv-64 f0-20) + (set! (-> this action) (manipulator-action manip-action4)) + ) + ) + ) + ) + (when (and sv-52 sv-60) + (let ((t9-6 ray-sphere-intersect) + (a0-9 arg0) + (a1-5 s3-3) + (a2-3 (new 'stack-no-clear 'vector)) + ) + (let ((v1-36 sv-16)) + (let ((a3-3 (new 'stack-no-clear 'vector))) + (let ((t0-2 (-> this mat)) + (t1-1 (-> this mat fvec)) + ) + (.lvf vf4 (&-> t0-2 rvec quad)) + (.lvf vf5 (&-> t1-1 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a3-3 quad) vf6) + (let ((t0-3 (the-as float sv-20))) + (.mov vf7 t0-3) + ) + (.lvf vf5 (&-> a3-3 quad)) + ) + (.lvf vf4 (&-> v1-36 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a2-3 quad) vf6) + (let ((f0-24 (t9-6 a0-9 a1-5 a2-3 (* 0.3 (the-as float sv-20))))) + (when (and (< 0.0 f0-24) (>= sv-64 f0-24)) + (set! sv-64 f0-24) + (set! (-> this action) (manipulator-action manip-action5)) + ) + ) + ) + ) + (when (and sv-56 sv-60) + (let ((t9-7 ray-sphere-intersect) + (a0-10 arg0) + (a1-6 s3-3) + (a2-4 (new 'stack-no-clear 'vector)) + ) + (let ((v1-45 sv-16)) + (let ((a3-5 (new 'stack-no-clear 'vector))) + (let ((t0-4 (-> this mat uvec)) + (t1-2 (-> this mat fvec)) + ) + (.lvf vf4 (&-> t0-4 quad)) + (.lvf vf5 (&-> t1-2 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a3-5 quad) vf6) + (let ((t0-5 (the-as float sv-20))) + (.mov vf7 t0-5) + ) + (.lvf vf5 (&-> a3-5 quad)) + ) + (.lvf vf4 (&-> v1-45 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a2-4 quad) vf6) + (let ((f0-28 (t9-7 a0-10 a1-6 a2-4 (* 0.3 (the-as float sv-20))))) + (when (and (< 0.0 f0-28) (>= sv-64 f0-28)) + (set! sv-64 f0-28) + (set! (-> this action) (manipulator-action manip-action6)) + ) + ) + ) + ) + (when sv-52 + (let ((f0-33 (ray-cylinder-intersect + arg0 + s3-3 + sv-16 + (-> this mat rvec) + (* 0.1 (the-as float sv-20)) + (* 1.3 (the-as float sv-20)) + s4-2 + ) + ) + ) + (when (and (< 0.0 f0-33) (>= sv-64 f0-33)) + (set! sv-64 f0-33) + (set! (-> this action) (manipulator-action manip-action1)) + ) + ) + ) + (when sv-56 + (let ((f0-38 (ray-cylinder-intersect + arg0 + s3-3 + sv-16 + (-> this mat uvec) + (* 0.1 (the-as float sv-20)) + (* 1.3 (the-as float sv-20)) + s4-2 + ) + ) + ) + (when (and (< 0.0 f0-38) (>= sv-64 f0-38)) + (set! sv-64 f0-38) + (set! (-> this action) (manipulator-action manip-action2)) + ) + ) + ) + (when sv-60 + (let ((f0-43 (ray-cylinder-intersect + arg0 + s3-3 + sv-16 + (-> this mat fvec) + (* 0.1 (the-as float sv-20)) + (* 1.3 (the-as float sv-20)) + s4-2 + ) + ) + ) + (when (and (< 0.0 f0-43) (>= sv-64 f0-43)) + (set! sv-64 f0-43) + (set! (-> this action) (manipulator-action manip-action3)) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +(defmethod manipulator-method-11 ((this manipulator)) + (local-vars (sv-432 rgba)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (format *stdcon* "~M ~M ~M~%" (-> this position x) (-> this position y) (-> this position z)) + (let ((s5-0 (-> this position))) + 0.0 + (let* ((v0-2 (vector-normalize! + (vector-! (new 'stack-no-clear 'vector) (-> (view-get-active-math-camera) trans) (-> this position)) + 1.0 + ) + ) + (s4-1 (< (fabs (vector-dot v0-2 (-> this mat rvec))) 0.9)) + (s3-2 (< (fabs (vector-dot v0-2 (-> this mat uvec))) 0.9)) + (s2-0 (< (fabs (vector-dot v0-2 (-> this mat fvec))) 0.9)) + (f30-1 (* 0.15 (vector-vector-distance (-> (view-get-active-math-camera) trans) s5-0))) + ) + (if s4-1 + (draw-axis + s5-0 + (-> this mat rvec) + f30-1 + (/ f30-1 4) + (if (= (-> this action) (manipulator-action manip-action1)) + *color-yellow* + *color-red* + ) + ) + ) + (if s3-2 + (draw-axis + s5-0 + (-> this mat uvec) + f30-1 + (/ f30-1 4) + (if (= (-> this action) (manipulator-action manip-action2)) + *color-yellow* + *color-green* + ) + ) + ) + (if s2-0 + (draw-axis + s5-0 + (-> this mat fvec) + f30-1 + (/ f30-1 4) + (if (= (-> this action) (manipulator-action manip-action3)) + *color-yellow* + *color-blue* + ) + ) + ) + (let ((s1-1 (new 'stack-no-clear 'vector)) + (s0-0 (new 'stack-no-clear 'vector)) + ) + (let ((f28-0 0.1)) + (set! sv-432 (cond + ((= (-> this action) (manipulator-action manip-action7)) + (set! sv-432 *color-yellow*) + sv-432 + ) + (else + *color-light-blue* + ) + ) + ) + (let ((sv-288 s1-1)) + (let ((sv-240 s5-0)) + (let ((sv-272 (new 'stack-no-clear 'vector))) + (let ((sv-256 (-> (view-get-active-math-camera) inv-camera-rot)) + (v1-26 (-> (view-get-active-math-camera) inv-camera-rot uvec)) + ) + (.lvf vf4 (&-> sv-256 rvec quad)) + (.lvf vf5 (&-> v1-26 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> sv-272 quad) vf6) + (let ((v1-28 (* f30-1 f28-0))) + (.mov vf7 v1-28) + ) + (.lvf vf5 (&-> sv-272 quad)) + ) + (.lvf vf4 (&-> sv-240 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-288 quad) vf6) + ) + (let ((sv-320 s0-0)) + (let ((sv-304 s1-1)) + (let ((v1-32 (-> (view-get-active-math-camera) inv-camera-rot uvec))) + (let ((a0-14 (* -2.0 f30-1 f28-0))) + (.mov vf7 a0-14) + ) + (.lvf vf5 (&-> v1-32 quad)) + ) + (.lvf vf4 (&-> sv-304 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-320 quad) vf6) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + (set! (-> s1-1 quad) (-> s0-0 quad)) + (let ((sv-352 s0-0)) + (let ((sv-336 s0-0)) + (let ((v1-36 (-> (view-get-active-math-camera) inv-camera-rot))) + (let ((a0-19 (* -2.0 f30-1 f28-0))) + (.mov vf7 a0-19) + ) + (.lvf vf5 (&-> v1-36 rvec quad)) + ) + (.lvf vf4 (&-> sv-336 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-352 quad) vf6) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + (set! (-> s1-1 quad) (-> s0-0 quad)) + (let ((sv-384 s0-0)) + (let ((sv-368 s0-0)) + (let ((v1-40 (-> (view-get-active-math-camera) inv-camera-rot uvec))) + (let ((a0-24 (* 2.0 f30-1 f28-0))) + (.mov vf7 a0-24) + ) + (.lvf vf5 (&-> v1-40 quad)) + ) + (.lvf vf4 (&-> sv-368 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-384 quad) vf6) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + (set! (-> s1-1 quad) (-> s0-0 quad)) + (let ((sv-416 s0-0)) + (let ((sv-400 s0-0)) + (let ((v1-44 (-> (view-get-active-math-camera) inv-camera-rot))) + (let ((a0-29 (* 2.0 f30-1 f28-0))) + (.mov vf7 a0-29) + ) + (.lvf vf5 (&-> v1-44 rvec quad)) + ) + (.lvf vf4 (&-> sv-400 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-416 quad) vf6) + ) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + ) + (let ((s1-2 (new 'stack-no-clear 'vector))) + (when (and s3-2 s2-0) + (let ((a1-10 s1-2)) + (let ((v1-49 s5-0)) + (let ((a0-31 (new 'stack-no-clear 'vector))) + (let ((a2-8 (-> this mat fvec)) + (a3-8 (-> this mat uvec)) + ) + (.lvf vf4 (&-> a2-8 quad)) + (.lvf vf5 (&-> a3-8 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a0-31 quad) vf6) + (let ((a2-9 f30-1)) + (.mov vf7 a2-9) + ) + (.lvf vf5 (&-> a0-31 quad)) + ) + (.lvf vf4 (&-> v1-49 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-10 quad) vf6) + ) + (let ((s0-1 draw-axis) + (sv-448 s1-2) + ) + (s0-1 + sv-448 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat uvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action6)) + *color-yellow* + *color-green* + ) + ) + ) + (let ((s0-2 draw-axis) + (sv-464 s1-2) + ) + (s0-2 + sv-464 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat fvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action6)) + *color-yellow* + *color-blue* + ) + ) + ) + ) + (set! s2-0 (and s4-1 s2-0)) + (when s2-0 + (let ((a1-15 s1-2)) + (let ((v1-57 s5-0)) + (let ((a0-38 (new 'stack-no-clear 'vector))) + (let ((a2-12 (-> this mat)) + (a3-11 (-> this mat fvec)) + ) + (.lvf vf4 (&-> a2-12 rvec quad)) + (.lvf vf5 (&-> a3-11 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a0-38 quad) vf6) + (let ((a2-13 f30-1)) + (.mov vf7 a2-13) + ) + (.lvf vf5 (&-> a0-38 quad)) + ) + (.lvf vf4 (&-> v1-57 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-15 quad) vf6) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat rvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action5)) + *color-yellow* + *color-red* + ) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat fvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action5)) + *color-yellow* + *color-blue* + ) + ) + ) + (set! s3-2 (and s4-1 s3-2)) + (when s3-2 + (let ((a0-45 s1-2)) + (let ((v1-64 (new 'stack-no-clear 'vector))) + (let ((a1-20 (-> this mat)) + (a2-16 (-> this mat uvec)) + ) + (.lvf vf4 (&-> a1-20 rvec quad)) + (.lvf vf5 (&-> a2-16 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> v1-64 quad) vf6) + (let ((a1-21 f30-1)) + (.mov vf7 a1-21) + ) + (.lvf vf5 (&-> v1-64 quad)) + ) + (.lvf vf4 (&-> s5-0 quad)) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a0-45 quad) vf6) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat rvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action4)) + *color-yellow* + *color-red* + ) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat uvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action4)) + *color-yellow* + *color-green* + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +(defmethod drag-update! ((this manipulator) (arg0 vector)) + (set! (-> this rotate-ref) (the int (-> *mouse* posx))) + (set! (-> this mouse-ref-position quad) (-> arg0 quad)) + (set! (-> this drag-ref-position quad) (-> this position quad)) + (set! (-> this dragging?) #t) + (set! (-> this speed quad) (the-as uint128 0)) + 0 + (none) + ) + +(defmethod manipulator-method-13 ((this manipulator) (arg0 vector) (arg1 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (cond + ((= (-> this mode) (manipulator-mode manip-mode0)) + (set! (-> this speed quad) (-> this position quad)) + (let ((s5-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0)) + (s4-1 (vector-! (new 'stack-no-clear 'vector) (-> this mouse-ref-position) arg0)) + ) + 0.0 + 0.0 + (let ((s2-0 (new 'stack-no-clear 'vector)) + (s1-0 (new 'stack-no-clear 'vector)) + ) + (cond + ((or (= (-> this action) (manipulator-action manip-action1)) + (= (-> this action) (manipulator-action manip-action2)) + (= (-> this action) (manipulator-action manip-action3)) + ) + (cond + ((= (-> this action) (manipulator-action manip-action1)) + (cond + ((< (fabs (vector-dot s5-1 (-> this mat uvec))) (fabs (vector-dot s5-1 (-> this mat fvec)))) + (set! (-> s2-0 quad) (-> this mat fvec quad)) + (set! (-> s1-0 quad) (-> this mat uvec quad)) + ) + (else + (set! (-> s2-0 quad) (-> this mat uvec quad)) + (set! (-> s1-0 quad) (-> this mat fvec quad)) + ) + ) + ) + ((= (-> this action) (manipulator-action manip-action2)) + (cond + ((< (fabs (vector-dot s5-1 (-> this mat rvec))) (fabs (vector-dot s5-1 (-> this mat fvec)))) + (set! (-> s2-0 quad) (-> this mat fvec quad)) + (set! (-> s1-0 quad) (-> this mat rvec quad)) + ) + (else + (set! (-> s2-0 quad) (-> this mat rvec quad)) + (set! (-> s1-0 quad) (-> this mat fvec quad)) + ) + ) + ) + ((= (-> this action) (manipulator-action manip-action3)) + (cond + ((< (fabs (vector-dot s5-1 (-> this mat uvec))) (fabs (vector-dot s5-1 (-> this mat rvec)))) + (set! (-> s2-0 quad) (-> this mat rvec quad)) + (set! (-> s1-0 quad) (-> this mat uvec quad)) + ) + (else + (set! (-> s2-0 quad) (-> this mat uvec quad)) + (set! (-> s1-0 quad) (-> this mat rvec quad)) + ) + ) + ) + ) + (let ((f30-0 (intersect-ray-plane arg0 s5-1 (-> this position) s2-0)) + (f0-11 (intersect-ray-plane arg0 s4-1 (-> this position) s2-0)) + ) + (let ((a1-3 s5-1)) + (let ((v1-41 arg0)) + (let ((a0-43 s5-1)) + (let ((a2-3 f30-0)) + (.mov vf7 a2-3) + ) + (.lvf vf5 (&-> a0-43 quad)) + ) + (.lvf vf4 (&-> v1-41 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-3 quad) vf6) + ) + (let ((a0-44 s4-1)) + (let ((v1-42 s4-1)) + (let ((a1-4 f0-11)) + (.mov vf7 a1-4) + ) + (.lvf vf5 (&-> v1-42 quad)) + ) + (.lvf vf4 (&-> arg0 quad)) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a0-44 quad) vf6) + ) + ) + (vector-flatten! s5-1 (vector-! (new 'stack-no-clear 'vector) s5-1 (-> this position)) s1-0) + (vector-flatten! s4-1 (vector-! (new 'stack-no-clear 'vector) s4-1 (-> this position)) s1-0) + (let ((v1-46 (vector-! (new 'stack-no-clear 'vector) s5-1 s4-1))) + (let ((a2-8 (-> this position))) + (let ((a0-47 (-> this drag-ref-position)) + (a1-9 v1-46) + ) + (.lvf vf4 (&-> a0-47 quad)) + (.lvf vf5 (&-> a1-9 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a2-8 quad) vf6) + ) + (format *stdcon* "delta ~M ~M ~M~%" (-> v1-46 x) (-> v1-46 y) (-> v1-46 z)) + ) + ) + ((or (= (-> this action) (manipulator-action manip-action4)) + (= (-> this action) (manipulator-action manip-action5)) + (= (-> this action) (manipulator-action manip-action6)) + (= (-> this action) (manipulator-action manip-action7)) + ) + (cond + ((= (-> this action) (manipulator-action manip-action4)) + (set! (-> s2-0 quad) (-> *z-vector* quad)) + ) + ((= (-> this action) (manipulator-action manip-action5)) + (set! (-> s2-0 quad) (-> *y-vector* quad)) + ) + ((= (-> this action) (manipulator-action manip-action6)) + (set! (-> s2-0 quad) (-> *x-vector* quad)) + ) + ((= (-> this action) (manipulator-action manip-action7)) + (set! (-> s2-0 quad) (-> (view-get-active-math-camera) inv-camera-rot fvec quad)) + ) + ) + (vector-normalize! s2-0 1.0) + (let ((f30-1 (intersect-ray-plane arg0 s5-1 (-> this position) s2-0)) + (f0-15 (intersect-ray-plane arg0 s4-1 (-> this position) s2-0)) + ) + (let ((a1-14 s5-1)) + (let ((v1-70 arg0)) + (let ((a0-66 s5-1)) + (let ((a2-12 f30-1)) + (.mov vf7 a2-12) + ) + (.lvf vf5 (&-> a0-66 quad)) + ) + (.lvf vf4 (&-> v1-70 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-14 quad) vf6) + ) + (let ((v1-71 s4-1)) + (let ((a0-67 arg0)) + (let ((a1-15 s4-1)) + (let ((a2-13 f0-15)) + (.mov vf7 a2-13) + ) + (.lvf vf5 (&-> a1-15 quad)) + ) + (.lvf vf4 (&-> a0-67 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> v1-71 quad) vf6) + ) + ) + (let ((v1-72 (-> this position))) + (let ((a0-68 (-> this drag-ref-position)) + (a1-17 (vector-! (new 'stack-no-clear 'vector) s5-1 s4-1)) + ) + (.lvf vf4 (&-> a0-68 quad)) + (.lvf vf5 (&-> a1-17 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> v1-72 quad) vf6) + ) + ) + ) + ) + ) + (vector-! (-> this speed) (-> this position) (-> this speed)) + ) + ((= (-> this mode) (manipulator-mode manip-mode1)) + (let ((s4-2 (- (-> this rotate-ref) (the int (-> *mouse* posx)))) + (s5-2 (new 'stack-no-clear 'matrix)) + ) + (new 'stack 'euler-angles) + (matrix-identity! s5-2) + (cond + ((= (-> this action) (manipulator-action manip-action1)) + (matrix-axis-angle! s5-2 (-> this mat rvec) (* 182.04445 (the float s4-2))) + ) + ((= (-> this action) (manipulator-action manip-action2)) + (matrix-axis-angle! s5-2 (-> this mat uvec) (* 182.04445 (the float s4-2))) + ) + ((= (-> this action) (manipulator-action manip-action3)) + (matrix-axis-angle! s5-2 (-> this mat fvec) (* 182.04445 (the float s4-2))) + ) + ) + (matrix*! (-> this mat) (-> this mat) s5-2) + ) + (matrix-remove-scale! + (-> this mat) + (-> this mat) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 0.0)) + ) + (matrix->eul (-> this angles) (-> this mat) 21) + (format *stdcon* "X = ~R~%Y = ~R~%Z = ~R~%" (-> this angles x) (-> this angles y) (-> this angles z)) + (set! (-> this rotate-ref) (the int (-> *mouse* posx))) + ) + (else + ) + ) + 0 + (none) + ) + ) + +(defmethod stop-dragging! ((this manipulator)) + (set! (-> this speed quad) (the-as uint128 0)) + (set! (-> this dragging?) #f) + 0 + (none) + ) diff --git a/goal_src/jakx/engine/entity/actor-link-h.gc b/goal_src/jakx/engine/entity/actor-link-h.gc index f4f0b4240c..ab63ea419d 100644 --- a/goal_src/jakx/engine/entity/actor-link-h.gc +++ b/goal_src/jakx/engine/entity/actor-link-h.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define-extern entity-actor-lookup (function res-lump symbol int entity-actor)) \ No newline at end of file diff --git a/goal_src/jakx/engine/entity/entity-h.gc b/goal_src/jakx/engine/entity/entity-h.gc index bb002b013f..37ddf79759 100644 --- a/goal_src/jakx/engine/entity/entity-h.gc +++ b/goal_src/jakx/engine/entity/entity-h.gc @@ -28,6 +28,9 @@ ) ;; ---entity-perm-status +(declare-type race-mesh basic) +(declare-type nav-poly structure) + ;; DECOMP BEGINS (define *generate-actor-vis* #f) @@ -118,13 +121,46 @@ that gets accessed by the accompanying process." ) ) -;; type entity-camera is defined here, but it is unknown to the decompiler +(deftype entity-camera (entity) + ((connect quaternion :inline) + ) + ) -;; type entity-nav-mesh is defined here, but it is unknown to the decompiler +(deftype entity-nav-mesh (entity) + ((nav-mesh nav-mesh) + ) + (:methods + (initialize-nav-mesh! (_type_) none) + (debug-draw (_type_) none) + ) + ) -;; type entity-race-mesh is defined here, but it is unknown to the decompiler +(deftype entity-race-mesh (entity) + ((race-mesh race-mesh) + ) + (:methods + (entity-race-mesh-method-27 () none) + (entity-race-mesh-method-28 () none) + ) + ) -;; type entity-actor is defined here, but it is unknown to the decompiler +(deftype entity-actor (entity) + "Child class of [[entity]] used to spawn [[process-drawable]] actors." + ((etype type :offset 56) + (task game-task) + (kill-mask task-mask :overlay-at unknown) + (vis-id int16) + (quat quaternion :inline) + ) + (:methods + (next-actor (_type_) entity-actor) + (prev-actor (_type_) entity-actor) + (debug-print (_type_ symbol type) none) + (toggle-status (_type_ entity-perm-status symbol) none) + (get-simple-travel-vector (_type_ vector vector vector object float) nav-mesh) + (project-point-to-nav-mesh (_type_ vector vector nav-poly float) nav-poly) + ) + ) (deftype actor-reference (structure) ((actor entity-actor) diff --git a/goal_src/jakx/engine/entity/res-h.gc b/goal_src/jakx/engine/entity/res-h.gc index 5a004df78c..c1497a45f1 100644 --- a/goal_src/jakx/engine/entity/res-h.gc +++ b/goal_src/jakx/engine/entity/res-h.gc @@ -27,6 +27,7 @@ ;; ---res-tag-pair (declare-type entity-links structure) +(define-extern *res-static-buf* pointer) ;; DECOMP BEGINS diff --git a/goal_src/jakx/engine/entity/res.gc b/goal_src/jakx/engine/entity/res.gc index c8c9e7563d..43d0bd33e9 100644 --- a/goal_src/jakx/engine/entity/res.gc +++ b/goal_src/jakx/engine/entity/res.gc @@ -5,5 +5,974 @@ ;; name in dgo: res ;; dgos: ENGINE, GAME +#|@file +res is a generic storage system for not very large data, used mostly for the game entities. +These res files store collections of data, which can be as values (int8, int16, int32, int64, uint8, uint16, uint32, uint64, float, vector), or any structure (as references), which are tagged and identified with a res-tag. +The data is stored similar to an unboxed inline-array, the type of the data is stored in the res-tag. + +A res-lump stores and is used to access all of the data for a single "resource", a collection of varying data. +This is similar to a C++ map or C# dictionary. The key is a res-tag and the value is the corresponding binary data. + +A res-tag is a tag that contains information about a particular property of this resource, such as type, name, and amount of elements. +For example, information about an array of vectors that make up a path - for a moving platform - or an integer to store its entity ID. + +Keyframes are used to specify when/where the data is relevant. +For example (this is made-up), say you have a camera spline, and you want the FOV to change at three specific points: +when it starts, somewhere in the middle, and at the end. +You would store an array of three FOV values. The key-frame field could then be used to say at which point in the spline +the FOV should be at that value. If the camera is somewhere between those points, the result could then be interpolated. + +Properties are looked up from a res-lump using their name (a symbol). +You can look up the data of the property you want directly using the various get-property methods. +Curves can be quickly filled in using the get-curve-data! method. + + +This is updated from the entity system used in Crash 2, which had most of these features and worked very similarly! +|# + +(declare-type nav-mesh basic) +(declare-type collide-mesh basic) + +(define-extern part-group-pointer? (function pointer symbol)) + +(defmacro res-ref? (tag) + "Checks resource tag, and returns #t if resource data is a reference type, #f if it is inlined." + `(zero? (-> ,tag inlined?)) + ) + +;; There are four common types of lookup: +;; data. This is something like (pointer int32) or (inline-array vector), it should have a size. +;; struct. This will get a GOAL struct or basic. Like a string. +;; value. This will get a value. Possibly even a 128-bit value, though this does not appear to work properly. +;; float. This will get a float. If the value stored is an int, it will be converted to a float. + +(defmacro res-lump-data (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time -1000000000.0)) + "Helper macro to get data from a res-lump without interpolation." + `(the-as ,type ((method-of-type res-lump get-property-data) + ,lump + ,name + 'interp + ,time + (the-as pointer #f) + ,tag-ptr + *res-static-buf* + ) + ) + ) + +(defmacro res-lump-data-exact (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time 0.0)) + "Helper macro to get start of data from a res-lump." + `(the-as ,type ((method-of-type res-lump get-property-data) + ,lump + ,name + 'exact + ,time + (the-as pointer #f) + ,tag-ptr + *res-static-buf* + ) + ) + ) + +(defmacro res-lump-struct (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time -1000000000.0)) + `(the-as ,type ((method-of-type res-lump get-property-struct) + ,lump + ,name + 'interp + ,time + (the-as structure #f) + ,tag-ptr + *res-static-buf* + ) + ) + ) + +(defmacro res-lump-struct-exact (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time 0.0)) + `(the-as ,type ((method-of-type res-lump get-property-struct) + ,lump + ,name + 'exact + ,time + (the-as structure #f) + ,tag-ptr + *res-static-buf* + ) + ) + ) + +(defmacro res-lump-value (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (default (the-as uint128 0)) &key (time -1000000000.0)) + "Helper macro to get a value from a res-lump with no interpolation." + `(the-as ,type ((method-of-type res-lump get-property-value) + ,lump + ,name + 'interp + ,time + ,default + ,tag-ptr + *res-static-buf* + ) + ) + ) + +(defmacro res-lump-float (lump name &key (tag-ptr (the-as (pointer res-tag) #f)) &key (default 0.0) &key (time -1000000000.0)) + "Helper macro to get a float from a res-lump with no interpolation." + `((method-of-type res-lump get-property-value-float) + ,lump + ,name + 'interp + ,time + ,default + ,tag-ptr + *res-static-buf* + ) + ) + ;; DECOMP BEGINS +(defmethod print ((this res-tag)) + (if (zero? (-> this inlined?)) + (format + #t + "#" + (-> this name) + (-> this key-frame) + (-> this elt-type) + (-> this elt-count) + ) + (format + #t + "#" + (-> this name) + (-> this key-frame) + (-> this elt-type) + (-> this elt-count) + ) + ) + this + ) + +;; WARN: Return type mismatch uint vs int. +(defmethod length ((this res-tag)) + (the-as int (if (zero? (-> this inlined?)) + (* (-> this elt-count) 4) + (* (-> this elt-count) (-> this elt-type size)) + ) + ) + ) + +(defmethod get-tag-index-data ((this res-lump) (arg0 int)) + "Get the data address of the n'th tag." + (&+ (-> this data-base) (-> this tag arg0 data-offset)) + ) + +(defmethod get-tag-data ((this res-lump) (arg0 res-tag)) + "Get the data address of the specified tag." + (&+ (-> this data-base) (-> arg0 data-offset)) + ) + +(defmethod new res-lump ((allocation symbol) (type-to-make type) (arg0 int) (arg1 int)) + (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* (+ arg0 -1) 16) arg1))))) + (set! (-> v0-0 allocated-length) arg0) + (set! (-> v0-0 data-size) arg1) + (set! (-> v0-0 length) 0) + (set! (-> v0-0 data-base) (&-> v0-0 tag arg0)) + (set! (-> v0-0 data-top) (&-> v0-0 tag arg0)) + v0-0 + ) + ) + +(defmethod length ((this res-lump)) + (-> this length) + ) + +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of ((this res-lump)) + (the-as int (+ (-> this type psize) (* (-> this allocated-length) 16) (-> this data-size))) + ) + + +;; WARN: Return type mismatch int vs res-tag-pair. +(defmethod lookup-tag-idx ((this res-lump) (arg0 symbol) (arg1 symbol) (arg2 float)) + "Look up the index of the tag containing with the given name and timestamp. + Correct lookups return a res-tag-pair, which contains one tag index in the lower 32 bits and one in the upper 32 bits. + Depending on the mode, they may be the same, or they may be two tags that you should interpolate + between, if the exact time was not found. + + @param name-sym should be the name of the thing you want. + @param time is for the timestamp you want. + If mode = 'base, then both the indices are the same and the timestamp is ignored. + If mode = 'interp, then it tries to get closest below/closest above (or both the same, if exact match found). + If mode = 'exact, then it requires an exact timestamp match and both indices are the same. + If things go wrong, returns a negative number." + (local-vars (t0-1 int)) + (if (or (not this) (zero? this) (<= (-> this length) 0)) + (return (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff)) + ) + (if (zero? (-> this flags)) + (sort! this) + ) + (let ((v1-8 -1) + (a0-2 -1) + ) + (let ((a1-1 -1) + (a2-1 (the-as object arg0)) + ) + (let ((a3-2 (+ (-> this length) -1)) + (t0-0 0) + ) + (while (>= a3-2 t0-0) + (let* ((t1-2 (+ t0-0 (/ (- a3-2 t0-0) 2))) + (t2-5 (- (the-as int a2-1) (the-as uint (the-as int (-> this tag t1-2 name))))) + ) + (cond + ((zero? t2-5) + (set! t0-1 t1-2) + (goto cfg-19) + ) + ((< t2-5 0) + (set! a3-2 (+ t1-2 -1)) + ) + (else + (set! t0-0 (+ t1-2 1)) + ) + ) + ) + ) + ) + (set! t0-1 -1) + (label cfg-19) + (if (< t0-1 0) + (return (the-as res-tag-pair t0-1)) + ) + (while (and (> t0-1 0) (= (the-as symbol a2-1) (-> this tag (+ t0-1 -1) name))) + (+! t0-1 -1) + ) + (when (= arg1 'base) + (set! a0-2 t0-1) + (set! v1-8 t0-1) + (goto cfg-60) + ) + (let ((a3-14 t0-1) + (t0-4 (&-> this tag t0-1)) + ) + (while (not (or (>= a3-14 (-> this length)) (< (the-as int a2-1) (the-as int (-> t0-4 0 name))))) + (cond + ((!= arg0 (-> t0-4 0 name)) + ) + ((= (-> t0-4 0 key-frame) arg2) + (set! a0-2 a3-14) + (set! v1-8 a3-14) + (goto cfg-60) + ) + ((and (>= arg2 (-> t0-4 0 key-frame)) (!= arg1 'exact)) + (set! a0-2 a3-14) + (set! v1-8 a3-14) + (if (= (-> t0-4 0 key-frame) -1000000000.0) + (set! a1-1 a3-14) + ) + ) + ((< arg2 (-> t0-4 0 key-frame)) + (if (and (!= a0-2 a1-1) (= arg1 'interp)) + (set! v1-8 a3-14) + ) + (goto cfg-60) + ) + ) + (+! a3-14 1) + (set! t0-4 (&-> t0-4 1)) + ) + ) + ) + (label cfg-60) + (the-as res-tag-pair (logior (logand (the-as uint #xffffffff) a0-2) (shl v1-8 32))) + ) + ) + +(defmethod make-property-data ((this res-lump) (arg1 float) (tag-pair res-tag-pair) (arg3 pointer)) + "Returns (a pointer to) the value data of a property with the tag-pair. + If tag-pair does not represent an exact point in the timeline, then the data is interpolated based on time + with the result written into buf. buf must have enough space to copy all of the data. + Otherwise, simply returns an address to the resource binary." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + ) + (let* ((t0-2 (-> this tag (-> tag-pair lo))) + (t1-2 (-> this tag (-> tag-pair hi))) + (v1-6 (-> t0-2 elt-count)) + ) + (cond + ((zero? (-> t0-2 inlined?)) + (&+ (-> this data-base) (-> t0-2 data-offset)) + ) + ((or (not arg3) + (= (-> tag-pair lo) (-> tag-pair hi)) + (!= v1-6 (-> t1-2 elt-count)) + (!= (-> t0-2 elt-type) (-> t1-2 elt-type)) + ) + (let ((a0-4 t0-2)) + (&+ (-> this data-base) (-> a0-4 data-offset)) + ) + ) + (else + (let* ((f0-2 (/ (- arg1 (-> t0-2 key-frame)) (- (-> t1-2 key-frame) (-> t0-2 key-frame)))) + (a1-4 this) + (a2-7 t0-2) + (a1-6 (&+ (-> a1-4 data-base) (-> a2-7 data-offset))) + (a2-13 (&+ (-> this data-base) (-> t1-2 data-offset))) + ) + (case (-> t0-2 elt-type symbol) + (('float) + (dotimes (a0-8 (the-as int v1-6)) + (set! (-> (the-as (pointer float) (&+ arg3 (* a0-8 4)))) + (+ (* (-> (the-as (pointer float) (&+ a1-6 (* a0-8 4)))) (- 1.0 f0-2)) + (* (-> (the-as (pointer float) (&+ a2-13 (* a0-8 4)))) f0-2) + ) + ) + ) + arg3 + ) + (('integer 'sinteger 'uinteger 'int64 'uint64) + (let ((a0-10 (the int (* 4096.0 f0-2)))) + (dotimes (t0-10 (the-as int v1-6)) + (set! (-> (the-as (pointer int64) (&+ arg3 (* t0-10 8)))) + (sar + (+ (* (the-as int (-> (the-as (pointer uint64) (&+ a1-6 (* t0-10 8))))) (- 4096 a0-10)) + (* (the-as int (-> (the-as (pointer uint64) (&+ a2-13 (* t0-10 8))))) a0-10) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('int8) + (let ((a0-12 (the int (* 4096.0 f0-2)))) + (dotimes (t0-11 (the-as int v1-6)) + (set! (-> (the-as (pointer int8) (&+ arg3 t0-11))) + (sar + (+ (* (-> (the-as (pointer int8) (&+ a1-6 t0-11))) (- 4096 a0-12)) + (* (-> (the-as (pointer int8) (&+ a2-13 t0-11))) a0-12) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('uint8) + (let ((a0-14 (the int (* 4096.0 f0-2)))) + (dotimes (t0-12 (the-as int v1-6)) + (set! (-> (the-as (pointer uint8) (&+ arg3 t0-12))) + (shr + (+ (* (-> (the-as (pointer uint8) (&+ a1-6 t0-12))) (the-as uint (- 4096 a0-14))) + (* (-> (the-as (pointer uint8) (&+ a2-13 t0-12))) (the-as uint a0-14)) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('int16) + (let ((a0-16 (the int (* 4096.0 f0-2)))) + (dotimes (t0-13 (the-as int v1-6)) + (set! (-> (the-as (pointer int16) (&+ arg3 (* t0-13 2)))) + (sar + (+ (* (-> (the-as (pointer int16) (&+ a1-6 (* t0-13 2)))) (- 4096 a0-16)) + (* (-> (the-as (pointer int16) (&+ a2-13 (* t0-13 2)))) a0-16) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('uint16) + (let ((a0-18 (the int (* 4096.0 f0-2)))) + (dotimes (t0-14 (the-as int v1-6)) + (set! (-> (the-as (pointer uint16) (&+ arg3 (* t0-14 2)))) + (shr + (+ (* (-> (the-as (pointer uint16) (&+ a1-6 (* t0-14 2)))) (the-as uint (- 4096 a0-18))) + (* (-> (the-as (pointer uint16) (&+ a2-13 (* t0-14 2)))) (the-as uint a0-18)) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('int32) + (let ((a0-20 (the int (* 4096.0 f0-2)))) + (dotimes (t0-15 (the-as int v1-6)) + (set! (-> (the-as (pointer int32) (&+ arg3 (* t0-15 4)))) + (sar + (+ (* (-> (the-as (pointer int32) (&+ a1-6 (* t0-15 4)))) (- 4096 a0-20)) + (* (-> (the-as (pointer int32) (&+ a2-13 (* t0-15 4)))) a0-20) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('uint32) + (let ((a0-22 (the int (* 4096.0 f0-2)))) + (dotimes (t0-16 (the-as int v1-6)) + (set! (-> (the-as (pointer uint32) (&+ arg3 (* t0-16 4)))) + (shr + (+ (* (-> (the-as (pointer uint32) (&+ a1-6 (* t0-16 4)))) (the-as uint (- 4096 a0-22))) + (* (-> (the-as (pointer uint32) (&+ a2-13 (* t0-16 4)))) (the-as uint a0-22)) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('vector) + (let ((a0-23 f0-2)) + (.mov vf3 a0-23) + ) + (let ((a0-25 (- 1.0 f0-2))) + (.mov vf4 a0-25) + ) + (dotimes (a0-26 (the-as int v1-6)) + (let ((t0-18 (+ (* a0-26 16) (the-as int a1-6)))) + (.lvf vf1 (&-> (the-as (pointer int128) t0-18))) + ) + (let ((t0-20 (+ (* a0-26 16) (the-as int a2-13)))) + (.lvf vf2 (&-> (the-as (pointer int128) t0-20))) + ) + (.mul.x.vf vf1 vf1 vf4) + (.mul.x.vf vf2 vf2 vf3) + (.add.vf vf1 vf1 vf2) + (.svf (&-> (the-as (pointer uint128) (+ (* a0-26 16) (the-as int arg3))) 0) vf1) + ) + arg3 + ) + (else + (let ((a0-27 t0-2)) + (&+ (-> this data-base) (-> a0-27 data-offset)) + ) + ) + ) + ) + ) + ) + ) + ) + ) + +(defmethod get-property-data ((this res-lump) + (name symbol) + (mode symbol) + (time float) + (arg3 pointer) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + "Returns an address to a given property's data at a specific time stamp, or default on error. + @param name is the name of the property you want, mode is its lookup mode ('interp 'base 'exact), time is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f + @param buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode." + (let ((s3-0 (lookup-tag-idx this name mode time))) + (cond + ((< (the-as int s3-0) 0) + (empty) + ) + (else + (set! arg3 (make-property-data this time s3-0 arg5)) + (if arg4 + (set! (-> arg4 0) (-> this tag (-> s3-0 lo))) + ) + ) + ) + ) + arg3 + ) + +;; WARN: Return type mismatch object vs structure. +(defmethod get-property-struct ((this res-lump) + (arg0 symbol) + (arg1 symbol) + (arg2 float) + (arg3 structure) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + "Returns a given struct property's value at a specific time stamp, or default on error. + @param name is the name of the property you want, `mode` is its lookup mode ('interp 'base 'exact), `time` is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a [[res-tag]]. The current base tag is written to this. Ignored if tag-addr is #f. + @param buf-addr is an address to the data buffer used to write interpolated data to. + It must have enough space! Only necessary for 'interp mode." + (let ((s3-0 (lookup-tag-idx this arg0 arg1 arg2))) + (cond + ((< (the-as int s3-0) 0) + (empty) + ) + (else + (set! arg3 (the-as structure (make-property-data this arg2 s3-0 arg5))) + (let ((v1-4 (-> this tag (-> s3-0 lo)))) + (if arg4 + (set! (-> arg4 0) v1-4) + ) + (if (zero? (-> v1-4 inlined?)) + (set! arg3 (the-as structure (-> (the-as (pointer uint32) arg3)))) + (empty) + ) + ) + ) + ) + ) + (the-as structure arg3) + ) + +;; WARN: Return type mismatch int vs uint128. +(defmethod get-property-value ((this res-lump) + (arg0 symbol) + (arg1 symbol) + (arg2 float) + (arg3 uint128) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + "Returns a given value property's value at a specific time stamp, or default on error. + @param name is the name of the property you want, `mode` is its lookup mode ('interp 'base 'exact), `time` is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if `tag-addr` is #f. + @param buf-addr is an address to the data buffer used to write interpolated data to. + It must have enough space! Only necessary for 'interp mode." + (let ((a2-1 (lookup-tag-idx this arg0 arg1 arg2))) + (cond + ((< (the-as int a2-1) 0) + (empty) + ) + (else + (let* ((a0-2 (-> a2-1 lo)) + (s1-0 (-> this tag a0-2)) + (s0-0 (-> s1-0 elt-type)) + (gp-1 (make-property-data this arg2 a2-1 arg5)) + ) + (if arg4 + (set! (-> arg4 0) s1-0) + ) + (cond + ((type-type? (the-as type s0-0) uinteger) + (case (-> s1-0 elt-type size) + ((1) + (set! arg3 (the-as uint128 (-> (the-as (pointer uint8) gp-1)))) + ) + ((2) + (set! arg3 (the-as uint128 (-> (the-as (pointer uint16) gp-1)))) + ) + ((4) + (set! arg3 (the-as uint128 (-> (the-as (pointer uint32) gp-1)))) + ) + ((16) + (set! arg3 (-> (the-as (pointer uint128) gp-1))) + ) + (else + (set! arg3 (the-as uint128 (-> (the-as (pointer uint64) gp-1)))) + ) + ) + ) + ((type-type? (the-as type s0-0) integer) + (case (-> s1-0 elt-type size) + ((1) + (set! arg3 (the-as uint128 (-> (the-as (pointer int8) gp-1)))) + ) + ((2) + (set! arg3 (the-as uint128 (-> (the-as (pointer int16) gp-1)))) + ) + ((4) + (set! arg3 (the-as uint128 (-> (the-as (pointer int32) gp-1)))) + ) + ((16) + (set! arg3 (-> (the-as (pointer uint128) gp-1))) + ) + (else + (set! arg3 (the-as uint128 (-> (the-as (pointer uint64) gp-1)))) + ) + ) + ) + ((type-type? (the-as type s0-0) float) + (set! arg3 (the-as uint128 (the int (-> (the-as (pointer float) gp-1))))) + ) + (else + (empty) + ) + ) + ) + ) + ) + ) + (the-as uint128 arg3) + ) + +(defmethod get-property-value-float ((this res-lump) + (arg0 symbol) + (arg1 symbol) + (arg2 float) + (arg3 float) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + (local-vars (v1-8 uint) (v1-11 int)) + (let ((a2-1 (lookup-tag-idx this arg0 arg1 arg2))) + (cond + ((< (the-as int a2-1) 0) + (empty) + ) + (else + (let* ((a0-2 (-> a2-1 lo)) + (s1-0 (-> this tag a0-2)) + (s0-0 (-> s1-0 elt-type)) + (gp-1 (make-property-data this arg2 a2-1 arg5)) + ) + (if arg4 + (set! (-> arg4 0) s1-0) + ) + (cond + ((type-type? (the-as type s0-0) float) + (set! arg3 (-> (the-as (pointer float) gp-1))) + ) + ((type-type? (the-as type s0-0) uinteger) + (case (-> s1-0 elt-type size) + ((1) + (set! v1-8 (-> (the-as (pointer uint8) gp-1))) + ) + ((2) + (set! v1-8 (-> (the-as (pointer uint16) gp-1))) + ) + ((4) + (set! v1-8 (-> (the-as (pointer uint32) gp-1))) + ) + ((16) + (set! v1-8 (the-as uint (-> (the-as (pointer uint128) gp-1)))) + ) + (else + (set! v1-8 (-> (the-as (pointer uint64) gp-1))) + ) + ) + (set! arg3 (the float v1-8)) + ) + ((type-type? (the-as type s0-0) integer) + (case (-> s1-0 elt-type size) + ((1) + (set! v1-11 (-> (the-as (pointer int8) gp-1))) + ) + ((2) + (set! v1-11 (-> (the-as (pointer int16) gp-1))) + ) + ((4) + (set! v1-11 (-> (the-as (pointer int32) gp-1))) + ) + ((16) + (set! v1-11 (the-as int (-> (the-as (pointer uint128) gp-1)))) + ) + (else + (set! v1-11 (the-as int (-> (the-as (pointer uint64) gp-1)))) + ) + ) + (set! arg3 (the float v1-11)) + ) + (else + (empty) + ) + ) + ) + ) + ) + ) + arg3 + ) + +(defmethod sort! ((this res-lump)) + "Sort all tags based on name, then key-frame." + (let ((v1-0 -1)) + (while (nonzero? v1-0) + (set! v1-0 0) + (let ((a1-0 0) + (a2-1 (+ (-> this length) -2)) + ) + (while (>= a2-1 a1-0) + (let* ((a3-2 (-> this tag a1-0)) + (t0-3 (-> this tag (+ a1-0 1))) + (t1-3 (-> a3-2 name)) + (t2-1 (-> t0-3 name)) + ) + (when (or (< (the-as int t2-1) (the-as int t1-3)) (and (= t1-3 t2-1) (< (-> t0-3 key-frame) (-> a3-2 key-frame)))) + (+! v1-0 1) + (set! (-> this tag a1-0) t0-3) + (set! (-> this tag (+ a1-0 1)) a3-2) + ) + ) + (+! a1-0 1) + ) + ) + ) + ) + (set! (-> this flags) (res-lump-flags sorted)) + this + ) + +(defmethod allocate-data-memory-for-tag! ((this res-lump) (arg0 res-tag)) + "Find space for the data described by arg0 in this. + Returns a tag with data-offset set correctly for this res-lump. + If the lump already contains memory for the given tag, and it is big enough, + it will be reused. Alignment will be at least 8 bytes. + If the input tag has elt-count = 0, it will return a tag for elt-count = 1." + (local-vars (resource-mem pointer)) + (let* ((tag-pair (lookup-tag-idx this (-> arg0 name) 'exact (-> arg0 key-frame))) + (existing-tag (-> this tag (-> tag-pair lo))) + ) + 0 + (if (and (>= (the-as int tag-pair) 0) (!= (-> arg0 key-frame) (-> arg0 key-frame))) + (set! tag-pair (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff)) + ) + (if (zero? (-> arg0 elt-count)) + (set! arg0 (copy-and-set-field arg0 elt-count 1)) + ) + (let ((data-size (length arg0))) + (cond + ((and (>= (the-as int tag-pair) 0) (>= (length existing-tag) data-size)) + (set! resource-mem (&+ (-> this data-base) (-> existing-tag data-offset))) + (when (logtest? (the-as int resource-mem) 7) + (set! resource-mem (logand -16 (&+ (-> this data-top) 15))) + (set! (-> this data-top) (&+ resource-mem data-size)) + ) + ) + (else + (set! resource-mem (logand -16 (&+ (-> this data-top) 15))) + (set! (-> this data-top) (&+ resource-mem data-size)) + ) + ) + (let* ((a0-22 arg0) + (s4-1 (copy-and-set-field a0-22 data-offset (&- resource-mem (the-as uint (-> this data-base))))) + ) + (when (>= (the-as int (&+ resource-mem data-size)) (the-as int (&+ (-> this data-base) (-> this data-size)))) + (format + 0 + "ERROR: attempting to a new tag ~`res-tag`P data of #x~X bytes to ~A, but data memory is full.~%" + s4-1 + data-size + this + ) + (return (the-as res-tag #f)) + ) + (cond + ((< (the-as int tag-pair) 0) + (cond + ((>= (-> this length) (-> this allocated-length)) + (format 0 "ERROR: attempting to a new tag ~`res-tag`P to ~A, but tag memory is full.~%" s4-1 this) + (return (the-as res-tag #f)) + ) + (else + (set! (-> this tag (-> this length)) s4-1) + (+! (-> this length) 1) + (sort! this) + ) + ) + ) + (else + (set! (-> this tag (-> tag-pair lo)) s4-1) + ) + ) + s4-1 + ) + ) + ) + ) + +(defmethod add-data! ((this res-lump) (tag res-tag) (arg2 pointer)) + "Given a tag and a pointer to its data, copy it to this res-lump. + This doesn't seem to do the right thing if the given tag is a non-inline tag + with > 1 element." + (let ((a0-2 (allocate-data-memory-for-tag! this tag))) + (when a0-2 + (let* ((v1-2 this) + (a1-1 a0-2) + (s4-0 (&+ (-> v1-2 data-base) (-> a1-1 data-offset))) + ) + (cond + ((zero? (-> a0-2 inlined?)) + (length a0-2) + (set! (-> (the-as (pointer pointer) s4-0) 0) arg2) + ) + (else + (let ((a2-1 (length a0-2))) + (mem-copy! s4-0 arg2 a2-1) + ) + ) + ) + ) + ) + ) + this + ) + +(defmethod add-32bit-data! ((this res-lump) (arg0 res-tag) (arg1 object)) + "Add a single 32-bit value using [[add-data!]]." + (let* ((sv-16 arg1) + (v1-0 arg0) + (a1-4 (copy-and-set-field v1-0 inlined? 1)) + ) + (add-data! this a1-4 (& sv-16)) + ) + ) + +(defmethod get-curve-data! ((this res-lump) (arg0 curve) (arg1 symbol) (arg2 symbol) (arg3 float)) + "Read curve data and write it to curve-target. Return #t if both + control points and knots data was succesfully read, #f otherwise." + (let ((s5-0 #f)) + (let* ((sv-16 (new 'static 'res-tag)) + (a0-2 ((method-of-object this get-property-data) + this + arg1 + 'exact + arg3 + (the-as pointer #f) + (& sv-16) + *res-static-buf* + ) + ) + ) + (when a0-2 + (set! (-> arg0 cverts) (the-as (inline-array vector) a0-2)) + (set! (-> arg0 num-cverts) (the-as int (-> sv-16 elt-count))) + (when (< 256 (-> arg0 num-cverts)) + (format + 0 + "ERROR: curve has ~D control points--only ~D are allowed. Increase MAX-CURVE-CONTROL-POINTS or shorten the curve.~%" + (-> arg0 num-cverts) + 256 + ) + (set! (-> arg0 num-cverts) 256) + ) + (let* ((sv-32 (new 'static 'res-tag)) + (a0-6 ((method-of-object this get-property-data) + this + arg2 + 'exact + arg3 + (the-as pointer #f) + (& sv-32) + *res-static-buf* + ) + ) + ) + (when a0-6 + (set! (-> arg0 knots) (the-as (pointer float) a0-6)) + (set! (-> arg0 num-knots) (the-as int (-> sv-32 elt-count))) + (set! s5-0 #t) + ) + ) + ) + ) + s5-0 + ) + ) + +;; WARN: Return type mismatch int vs res-lump. +(defmethod mem-usage ((this res-lump) (usage memory-usage-block) (flags int)) + (let ((s3-0 48) + (s2-0 "res") + ) + (cond + ((logtest? flags 256) + (set! s3-0 44) + (set! s2-0 "camera") + ) + ((logtest? flags 64) + (set! s3-0 43) + (set! s2-0 "entity") + ) + ((logtest? flags 512) + (set! s3-0 76) + (set! s2-0 "art-joint-geo") + ) + ) + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let ((v1-19 (asize-of this))) + (+! (-> usage data s3-0 used) v1-19) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-19 15))) + ) + (dotimes (s1-0 (-> this length)) + (when (zero? (-> this tag s1-0 inlined?)) + (let* ((a1-4 this) + (a0-15 s1-0) + (s0-0 (the-as object (-> (the-as (pointer int32) (&+ (-> a1-4 data-base) (-> a1-4 tag a0-15 data-offset)))))) + ) + (when (not (part-group-pointer? (the-as pointer s0-0))) + (let ((v1-34 (rtype-of (the-as int s0-0)))) + (cond + ((or (= v1-34 symbol) (or (= v1-34 type) (= v1-34 pair))) + ) + ((= v1-34 string) + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let ((v1-48 ((method-of-type (rtype-of (the-as int s0-0)) asize-of) (the-as int s0-0)))) + (+! (-> usage data s3-0 used) v1-48) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-48 15))) + ) + ) + ((or (= v1-34 nav-mesh) (= v1-34 collide-mesh)) + (let ((a0-48 (the-as (array object) s0-0))) + ((method-of-type (rtype-of a0-48) mem-usage) a0-48 usage flags) + ) + ) + ((= v1-34 array) + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let* ((a0-53 (the-as (array object) s0-0)) + (v1-68 ((method-of-type (rtype-of a0-53) asize-of) a0-53)) + ) + (+! (-> usage data s3-0 used) v1-68) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-68 15))) + ) + (let ((sv-16 0)) + (while (< sv-16 (-> (the-as array s0-0) length)) + (let ((a0-63 (-> (the-as (array object) s0-0) sv-16))) + ((method-of-type (rtype-of a0-63) mem-usage) a0-63 usage flags) + ) + (+! sv-16 1) + ) + ) + ) + (else + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let* ((a0-68 (the-as int s0-0)) + (v1-96 ((method-of-type (rtype-of a0-68) asize-of) a0-68)) + ) + (+! (-> usage data s3-0 used) v1-96) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-96 15))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (the-as res-lump 0) + ) + +(define *res-static-buf* (malloc 'global 128)) diff --git a/goal_src/jakx/engine/game/fact-h.gc b/goal_src/jakx/engine/game/fact-h.gc index d87bf8e340..6e49de4bf1 100644 --- a/goal_src/jakx/engine/game/fact-h.gc +++ b/goal_src/jakx/engine/game/fact-h.gc @@ -5,5 +5,508 @@ ;; name in dgo: fact-h ;; dgos: ENGINE, GAME +;; +++actor-option +(defenum actor-option + :bitfield #t + :type uint64 + (blocked 0) ;; 1 + (spawns-fuel-cell 1) ;; 2 + (draw-blocker 2) ;; 4 + (loop 3) ;; 8 + (reflect 4) ;; 16 + (wait-for-cue 5) ;; 32 + (auto-pickup 6) ;; 64 + (fuel-cell-no-jump 7) ;; 128 + (suck-in 8) ;; 256 + (fade-out 9) ;; 512 + (big-collision 10) ;; 1024 + (racer-only 11) ;; 2048 + (no-reaction 12) ;; 4096 + (no-shadow 13) ;; 8192 + (wait-for-task-complete 14) ;; 16384 + (respawn-delay 15) ;; 32768 + + (no-amb-sound 16) ;; hi 1 + (user17 17) ;; hi 2 + (user18 18) ;; hi 4 + (user19 19) ;; hi 8 + (user20 20) ;; hi 16 + (cond-hide 21) ;; hi 32 + (cond-respawn 22) ;; hi 64 + (fall 23) ;; hi 128 + (mirror 24) ;; hi 256 + (cond-low-ammo 25) ;; hi 512 + (no-distance-check-fadeout 26) ;; 1024 + (no-track 27) ;; hi 2048 + (dont-override-fact 28) + ) +;; ---actor-option + +;; +++enemy-option +(defenum enemy-option + :bitfield #t + :type uint32 + (user0 0) ;; 1 + (user1 1) ;; 2 + (user2 2) ;; 4 + (user3 3) ;; 8 + (user4 4) ;; 16 + (user5 5) ;; 32 + (user6 6) ;; 64 + (user7 7) ;; 128 + (user8 8) ;; 256 + (user9 9) ;; 512 + (user10 10) ;; 1024 + (user11 11) ;; 2048 + (user12 12) ;; 4096 + (user13 13) ;; 8192 + (user14 14) ;; 16k + (user15 15) + + (dormant 16) ;; hi 1 + (dormant-aware 17) ;; hi 2 + (ambush 18) ;; hi 4 + (spawner 19) ;; hi 8 + (prespawned 20) ;; hi 16 + (multi-focus 21) ;; hi 32 + (has-trigger 22) + (idle-til-trigger 23) ;; hi 128 + (knocked-into-water 24) ;; hi 256 + (water 25) ;; hi 512 + ) +;; ---enemy-option + +(declare-type actor-group inline-array-class) +(define-extern process-task-mask (function process task-mask)) + ;; DECOMP BEGINS +(deftype fact-bank (basic) + ((eco-level-max float) + (eco-single-inc float) + (eco-full-inc float) + (eco-single-timeout seconds) + (eco-full-timeout seconds) + (dummy seconds) + (health-max-default float) + (health-max-max float) + (health-small-inc float) + (health-single-inc float) + (health-default-inc float) + (eco-pill-green-max-default float) + (eco-pill-dark-max-default float) + (eco-pill-light-max-default float) + (eco-green-max-default float) + (default-eco-pill-green-inc float) + (default-eco-pill-dark-inc float) + (default-eco-pill-light-inc float) + (buzzer-max-default float) + (buzzer-single-inc float) + (suck-bounce-dist meters) + (suck-suck-dist meters) + (shield-max float) + (shield-use-speed float) + (shield-time-min seconds) + (trick-point-max float) + (super-skill-inc float) + (darkjak-spin-inc float) + (darkjak-punch-inc float) + (darkjak-flop-inc float) + (darkjak-uppercut-inc float) + (darkjak-bomb0-inc float) + (darkjak-bomb1-inc float) + (darkjak-smack-inc float) + (darkjak-bomb-min float) + (darkjak-button-invis-inc float) + ) + ) + + +(define *FACT-bank* (new 'static 'fact-bank + :eco-level-max 2.0 + :eco-single-inc 1.0 + :eco-full-inc 5.0 + :eco-single-timeout (seconds 5) + :eco-full-timeout (seconds 20) + :dummy (seconds 15) + :health-max-default 8.0 + :health-max-max 16.0 + :health-small-inc 1.0 + :health-single-inc 1.0 + :health-default-inc 2.0 + :eco-pill-green-max-default 50.0 + :eco-pill-dark-max-default 100.0 + :eco-pill-light-max-default 100.0 + :eco-green-max-default 100.0 + :buzzer-max-default 7.0 + :buzzer-single-inc 1.0 + :suck-bounce-dist (meters 18) + :suck-suck-dist (meters 7.5) + :shield-max 100.0 + :shield-use-speed 10.0 + :shield-time-min (seconds 1.5) + :trick-point-max 999999.0 + :super-skill-inc 3.0 + :darkjak-spin-inc 4.0 + :darkjak-punch-inc 4.0 + :darkjak-flop-inc 6.0 + :darkjak-uppercut-inc 6.0 + :darkjak-bomb0-inc 100.0 + :darkjak-bomb1-inc 100.0 + :darkjak-smack-inc 15.0 + :darkjak-bomb-min 50.0 + :darkjak-button-invis-inc 20.0 + ) + ) + +(defun-debug pickup-type->string ((arg0 pickup-type)) + (case arg0 + (((pickup-type eco-pill-dark)) + "eco-pill-dark" + ) + (((pickup-type ammo-dark-light-random)) + "ammo-dark-light-random" + ) + (((pickup-type ammo-random)) + "ammo-random" + ) + (((pickup-type eco-blue)) + "eco-blue" + ) + (((pickup-type gun-yellow-1)) + "gun-yellow-1" + ) + (((pickup-type pass-red)) + "pass-red" + ) + (((pickup-type eco-pill-green)) + "eco-pill-green" + ) + (((pickup-type eco-red)) + "eco-red" + ) + (((pickup-type dark-eco-crystal)) + "dark-eco-crystal" + ) + (((pickup-type skill)) + "skill" + ) + (((pickup-type karma)) + "karma" + ) + (((pickup-type eco-dark)) + "eco-dark" + ) + (((pickup-type gun-red-3)) + "gun-red-3" + ) + (((pickup-type gun-dark-1)) + "gun-dark-1" + ) + (((pickup-type gun-yellow-3)) + "gun-yellow-3" + ) + (((pickup-type gem)) + "gem" + ) + (((pickup-type eco-green)) + "eco-green" + ) + (((pickup-type darkjak)) + "darkjak" + ) + (((pickup-type ammo-yellow)) + "ammo-yellow" + ) + (((pickup-type gun-blue-1)) + "gun-blue-1" + ) + (((pickup-type pass-blue)) + "pass-blue" + ) + (((pickup-type ammo-light-random)) + "ammo-light-random" + ) + (((pickup-type gun-dark-2)) + "gun-dark-2" + ) + (((pickup-type ammo-red)) + "ammo-red" + ) + (((pickup-type lightjak)) + "lightjak" + ) + (((pickup-type fuel-cell)) + "fuel-cell" + ) + (((pickup-type gun-blue-2)) + "gun-blue-2" + ) + (((pickup-type buzzer)) + "buzzer" + ) + (((pickup-type gun-dark-3)) + "gun-dark-3" + ) + (((pickup-type gun-red-1)) + "gun-red-1" + ) + (((pickup-type gun-blue-3)) + "gun-blue-3" + ) + (((pickup-type shield)) + "shield" + ) + (((pickup-type eco-pill-random)) + "eco-pill-random" + ) + (((pickup-type health-max)) + "health-max" + ) + (((pickup-type light-eco-crystal)) + "light-eco-crystal" + ) + (((pickup-type board)) + "board" + ) + (((pickup-type none)) + "none" + ) + (((pickup-type pass-green)) + "pass-green" + ) + (((pickup-type light-random)) + "light-random" + ) + (((pickup-type gun-yellow-2)) + "gun-yellow-2" + ) + (((pickup-type pass-slumb-genb)) + "pass-slumb-genb" + ) + (((pickup-type money)) + "money" + ) + (((pickup-type eco-yellow)) + "eco-yellow" + ) + (((pickup-type ammo-dark)) + "ammo-dark" + ) + (((pickup-type trick-judge)) + "trick-judge" + ) + (((pickup-type eco-pill-light)) + "eco-pill-light" + ) + (((pickup-type trick-point)) + "trick-point" + ) + (((pickup-type ammo-blue)) + "ammo-blue" + ) + (((pickup-type pass-yellow)) + "pass-yellow" + ) + (((pickup-type gun-red-2)) + "gun-red-2" + ) + (((pickup-type health)) + "health" + ) + (else + "*unknown*" + ) + ) + ) + +(deftype fact-info (basic) + ((process process) + (pickup-type pickup-type) + (pickup-amount float) + (pickup-spawn-amount float) + (options actor-option) + (fade-time time-frame) + ) + (:methods + (new (symbol type process pickup-type float) _type_) + (drop-pickup (_type_ symbol process-tree fact-info int symbol) (pointer process)) + (reset! (_type_ symbol) none) + (pickup-collectable! (_type_ pickup-type float handle) float) + ) + ) + + +(deftype fact-info-enemy (fact-info) + ((speed float) + (idle-distance meters) + (notice-top meters) + (notice-bottom meters) + (cam-horz meters) + (cam-vert meters) + (cam-notice-dist meters) + (enemy-options enemy-option) + (trig-dist meters) + (trig-actor-group (pointer actor-group)) + (trig-mask-count int8) + (trig-mask uint8 2) + ) + (:methods + (new (symbol type process (pointer float)) _type_) + (clear-mask-bits (_type_ int) none) + ) + ) + + +(deftype fact-info-crate (fact-info) + ((suck-count int32) + ) + (:methods + (new (symbol type process pickup-type float) _type_) + ) + ) + + +;; WARN: Return type mismatch object vs fact-info. +(defmethod new fact-info ((allocation symbol) (type-to-make type) (arg0 process) (arg1 pickup-type) (arg2 float)) + (let ((sv-16 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (let ((sv-20 (the-as res-lump (-> arg0 entity)))) + (let ((sv-24 (process-task-mask arg0))) + (when (zero? sv-16) + (go process-drawable-art-error "memory") + (return (the-as fact-info 0)) + ) + (set! (-> sv-16 process) arg0) + (set! (-> sv-16 pickup-type) arg1) + (set! (-> sv-16 pickup-amount) arg2) + (let ((s4-1 (-> (lookup-tag-idx sv-20 'eco-info 'base -1000000000.0) lo))) + (when (>= (the-as int s4-1) 0) + (let ((s3-0 (the-as int s4-1)) + (s2-0 (-> sv-20 tag s4-1)) + ) + 0 + (while (= (-> s2-0 name) (-> sv-20 tag s4-1 name)) + (let ((v1-17 (make-property-data sv-20 0.0 (the-as res-tag-pair s3-0) (the-as pointer #f))) + (a0-7 (the int (-> s2-0 key-frame))) + ) + (when (or (< a0-7 0) (and (-> arg0 entity) (logtest? sv-24 (ash 1 a0-7)))) + (when v1-17 + (let ((a0-15 (-> s2-0 elt-count))) + (set! (-> sv-16 pickup-type) (the-as pickup-type (-> (the-as (pointer int32) v1-17)))) + (set! (-> sv-16 pickup-amount) (if (< (the-as uint 1) a0-15) + (the float (-> (the-as (pointer int32) v1-17) 1)) + arg2 + ) + ) + ) + ) + ) + ) + (+! s3-0 1) + (set! s2-0 (-> sv-20 tag s3-0)) + ) + ) + ) + ) + ) + (set! (-> sv-16 options) (res-lump-value sv-20 'options actor-option :time -1000000000.0)) + (if (logtest? (-> sv-16 options) (actor-option fade-out respawn-delay)) + (set! (-> sv-16 fade-time) (the-as time-frame (the int (* 300.0 (res-lump-float sv-20 'timeout))))) + ) + ) + (the-as fact-info sv-16) + ) + ) + +(defmethod pickup-collectable! ((this fact-info) (arg0 pickup-type) (arg1 float) (arg2 handle)) + 0.0 + ) + +(deftype fact-info-enemy-defaults (basic) + ((idle-distance meters) + (pickup-type int32) + (pickup-amount float) + ) + ) + + +(define *fact-info-enemy-defaults* + (new 'static 'fact-info-enemy-defaults :idle-distance (meters 80) :pickup-type 9) + ) + +(defmethod new fact-info-enemy ((allocation symbol) (type-to-make type) (arg0 process) (arg1 (pointer float))) + (let ((gp-0 + (the-as + fact-info-enemy + ((method-of-type fact-info new) allocation type-to-make arg0 (the-as pickup-type (-> arg1 1)) (-> arg1 2)) + ) + ) + ) + (let ((s5-0 (-> gp-0 process entity))) + (set! (-> gp-0 speed) (res-lump-float s5-0 'speed :default 1.0)) + (set! (-> gp-0 idle-distance) (res-lump-float s5-0 'idle-distance :default (-> arg1 0))) + (set! (-> gp-0 notice-top) (res-lump-float s5-0 'notice-top :default 4096000.0)) + (set! (-> gp-0 notice-bottom) (res-lump-float s5-0 'notice-bottom :default 4096000.0)) + (set! (-> gp-0 cam-horz) (res-lump-float s5-0 'cam-horz)) + (set! (-> gp-0 cam-vert) (res-lump-float s5-0 'cam-vert)) + (set! (-> gp-0 cam-notice-dist) (res-lump-float s5-0 'cam-notice-dist :default -4096.0)) + (set! (-> gp-0 enemy-options) (res-lump-value s5-0 'enemy-options enemy-option :time -1000000000.0)) + (let ((s4-1 0)) + (let* ((sv-16 (new 'static 'res-tag)) + (v1-11 (res-lump-data s5-0 'trigger pointer :tag-ptr (& sv-16))) + ) + (when v1-11 + (logior! (-> gp-0 enemy-options) (enemy-option has-trigger)) + (let ((a0-13 0)) + (dotimes (a1-11 (the-as int (-> sv-16 elt-count))) + (let ((a2-12 (-> (the-as (pointer uint32) (&+ v1-11 (* a1-11 4)))))) + (when (and (nonzero? a2-12) (< a0-13 2)) + (set! (-> gp-0 trig-mask a0-13) a2-12) + (set! s4-1 (logior s4-1 a2-12)) + (+! a0-13 1) + ) + ) + ) + (set! (-> gp-0 trig-mask-count) a0-13) + ) + ) + ) + (set! (-> gp-0 trig-dist) (if (logtest? s4-1 1) + (res-lump-float s5-0 'trig-dist :default 327680.0) + 327680.0 + ) + ) + (when (logtest? s4-1 2) + (let* ((sv-32 (new 'static 'res-tag)) + (v1-20 (res-lump-data s5-0 'trig-ag pointer :tag-ptr (& sv-32))) + ) + (if (and v1-20 (nonzero? (-> sv-32 elt-count))) + (set! (-> gp-0 trig-actor-group) (the-as (pointer actor-group) v1-20)) + (clear-mask-bits gp-0 2) + ) + ) + ) + ) + ) + gp-0 + ) + ) + +(defmethod clear-mask-bits ((this fact-info-enemy) (arg0 int)) + (let ((v1-0 (lognot arg0))) + (dotimes (a1-1 (-> this trig-mask-count)) + (logand! (-> this trig-mask a1-1) v1-0) + ) + ) + 0 + (none) + ) + +(defmethod new fact-info-crate ((allocation symbol) (type-to-make type) (arg0 process) (arg1 pickup-type) (arg2 float)) + (let ((gp-0 (the-as fact-info-crate ((method-of-type fact-info new) allocation type-to-make arg0 arg1 arg2)))) + (let ((a0-1 (-> gp-0 process entity))) + (set! (-> gp-0 suck-count) (res-lump-value a0-1 'suck-count int :time -1000000000.0)) + ) + gp-0 + ) + ) diff --git a/goal_src/jakx/engine/game/game-h.gc b/goal_src/jakx/engine/game/game-h.gc index 108c31972c..9e65d98839 100644 --- a/goal_src/jakx/engine/game/game-h.gc +++ b/goal_src/jakx/engine/game/game-h.gc @@ -128,4 +128,39 @@ (:methods (attack-info-method-9 () none) ;; 9 ;; (attack-info-method-9 (_type_ attack-info process-drawable process-drawable) none) ) + ) + +(deftype process-drawable (process-nettable) + ((root trsqv :offset-assert 188) ;; guessed by decompiler + (node-list cspace-array :offset-assert 192) ;; guessed by decompiler + (draw draw-control :offset-assert 196) ;; guessed by decompiler + (skel joint-control :offset-assert 200) ;; guessed by decompiler + (nav nav-control :offset-assert 204) ;; guessed by decompiler + (path path-control :offset-assert 208) ;; guessed by decompiler + (vol vol-control :offset-assert 212) ;; guessed by decompiler + (fact fact-info :offset-assert 216) ;; guessed by decompiler + (link actor-link-info :offset-assert 220) ;; guessed by decompiler + (part sparticle-launch-control :offset-assert 224) ;; guessed by decompiler + (sound ambient-sound :offset-assert 228) ;; guessed by decompiler + (rbody rigid-body-control :offset-assert 232) ;; guessed by decompiler + (state-flags state-flags :offset-assert 236) ;; guessed by decompiler + (state-time time-frame :offset-assert 240) ;; time-frame + ) + :method-count-assert 50 + :size-assert #xf8 + :flag-assert #x32007000f8 + (:methods + (process-drawable-method-42 () none) ;; 42 + (process-drawable-method-43 () none) ;; 43 + (process-drawable-method-44 () none) ;; 44 + (process-drawable-method-45 () none) ;; 45 + (process-drawable-method-46 () none) ;; 46 + (process-drawable-method-47 () none) ;; 47 + (process-drawable-method-48 () none) ;; 48 + (process-drawable-method-49 () none) ;; 49 + ) + (:states + process-drawable-idle ;; associated process guessed by decompiler, old: (state process-drawable) + (process-drawable-art-error string) ;; associated process guessed by decompiler, old: (state string process-drawable) + ) ) \ No newline at end of file diff --git a/goal_src/jakx/engine/game/game-info-h.gc b/goal_src/jakx/engine/game/game-info-h.gc index 9d63c1a88c..fe2126e075 100644 --- a/goal_src/jakx/engine/game/game-info-h.gc +++ b/goal_src/jakx/engine/game/game-info-h.gc @@ -5,6 +5,63 @@ ;; name in dgo: game-info-h ;; dgos: ENGINE, GAME +;; +++pickup-type +(defenum pickup-type + :type int32 + (none 0) + (eco-yellow 1) + (eco-red 2) + (eco-blue 3) + (eco-dark 4) + (eco-green 5) + (eco-pill-green 6) + (eco-pill-dark 7) + (eco-pill-light 8) + (eco-pill-random 9) + (money 10) + (fuel-cell 11) + (buzzer 12) + (darkjak 13) + (lightjak 14) + (ammo-yellow 15) + (ammo-red 16) + (ammo-blue 17) + (ammo-dark 18) + (shield 19) + (health 20) + (trick-point 21) + (trick-judge 22) + (gem 23) + (skill 24) + (karma 25) + (gun-red-1 26) + (gun-red-2 27) + (gun-red-3 28) + (gun-yellow-1 29) + (gun-yellow-2 30) + (gun-yellow-3 31) + (gun-blue-1 32) + (gun-blue-2 33) + (gun-blue-3 34) + (gun-dark-1 35) + (gun-dark-2 36) + (gun-dark-3 37) + (board 38) + (pass-red 39) + (pass-green 40) + (pass-yellow 41) + (pass-blue 42) + (ammo-random 43) + (health-max 44) + (light-eco-crystal 45) + (dark-eco-crystal 46) + (pass-slumb-genb 47) + (ammo-light-random 48) + (ammo-dark-light-random 49) + (light-random 50) + ) +;; ---pickup-type + ;; DECOMP BEGINS (deftype actor-id (uint32) diff --git a/goal_src/jakx/engine/game/main-h.gc b/goal_src/jakx/engine/game/main-h.gc index cf07e4a605..b42a12abab 100644 --- a/goal_src/jakx/engine/game/main-h.gc +++ b/goal_src/jakx/engine/game/main-h.gc @@ -157,32 +157,2142 @@ ;; +++text-id (defenum text-id :type uint32 - (null #x0) - + ;; TODO JAKX - filter out the ones that aren't used, name them + (text-id-0 0) + (text-id-1 1) + (text-id-2 2) + (text-id-3 3) + (text-id-4 4) + (text-id-5 5) + (text-id-6 6) + (text-id-7 7) + (text-id-8 8) + (text-id-9 9) + (text-id-10 10) + (text-id-11 11) + (text-id-12 12) + (text-id-13 13) + (text-id-14 14) + (text-id-15 15) + (text-id-16 16) + (text-id-17 17) + (text-id-18 18) + (text-id-19 19) + (text-id-20 20) + (text-id-21 21) + (text-id-22 22) + (text-id-23 23) + (text-id-24 24) + (text-id-25 25) + (text-id-26 26) + (text-id-27 27) + (text-id-28 28) + (text-id-29 29) + (text-id-30 30) + (text-id-31 31) + (text-id-32 32) + (text-id-33 33) + (text-id-34 34) + (text-id-35 35) + (text-id-36 36) + (text-id-37 37) + (text-id-38 38) + (text-id-39 39) + (text-id-40 40) + (text-id-41 41) + (text-id-42 42) + (text-id-43 43) + (text-id-44 44) + (text-id-45 45) + (text-id-46 46) + (text-id-47 47) + (text-id-48 48) + (text-id-49 49) + (text-id-50 50) + (text-id-51 51) + (text-id-52 52) + (text-id-53 53) + (text-id-54 54) + (text-id-55 55) + (text-id-56 56) + (text-id-57 57) + (text-id-58 58) + (text-id-59 59) + (text-id-60 60) + (text-id-61 61) + (text-id-62 62) + (text-id-63 63) + (text-id-64 64) + (text-id-65 65) + (text-id-66 66) + (text-id-67 67) + (text-id-68 68) + (text-id-69 69) + (text-id-70 70) + (text-id-71 71) + (text-id-72 72) + (text-id-73 73) + (text-id-74 74) + (text-id-75 75) + (text-id-76 76) + (text-id-77 77) + (text-id-78 78) + (text-id-79 79) + (text-id-80 80) + (text-id-81 81) + (text-id-82 82) + (text-id-83 83) + (text-id-84 84) + (text-id-85 85) + (text-id-86 86) + (text-id-87 87) + (text-id-88 88) + (text-id-89 89) + (text-id-90 90) + (text-id-91 91) + (text-id-92 92) + (text-id-93 93) + (text-id-94 94) + (text-id-95 95) + (text-id-96 96) + (text-id-97 97) + (text-id-98 98) + (text-id-99 99) + (text-id-100 100) + (text-id-101 101) + (text-id-102 102) + (text-id-103 103) + (text-id-104 104) + (text-id-105 105) + (text-id-106 106) + (text-id-107 107) + (text-id-108 108) + (text-id-109 109) + (text-id-110 110) + (text-id-111 111) + (text-id-112 112) + (text-id-113 113) + (text-id-114 114) + (text-id-115 115) + (text-id-116 116) + (text-id-117 117) + (text-id-118 118) + (text-id-119 119) + (text-id-120 120) + (text-id-121 121) + (text-id-122 122) + (text-id-123 123) + (text-id-124 124) + (text-id-125 125) + (text-id-126 126) + (text-id-127 127) + (text-id-128 128) + (text-id-129 129) + (text-id-130 130) + (text-id-131 131) + (text-id-132 132) + (text-id-133 133) + (text-id-134 134) + (text-id-135 135) + (text-id-136 136) + (text-id-137 137) + (text-id-138 138) + (text-id-139 139) + (text-id-140 140) + (text-id-141 141) + (text-id-142 142) + (text-id-143 143) + (text-id-144 144) + (text-id-145 145) + (text-id-146 146) + (text-id-147 147) + (text-id-148 148) + (text-id-149 149) + (text-id-150 150) + (text-id-151 151) + (text-id-152 152) + (text-id-153 153) + (text-id-154 154) + (text-id-155 155) + (text-id-156 156) + (text-id-157 157) + (text-id-158 158) + (text-id-159 159) + (text-id-160 160) + (text-id-161 161) + (text-id-162 162) + (text-id-163 163) + (text-id-164 164) + (text-id-165 165) + (text-id-166 166) + (text-id-167 167) + (text-id-168 168) + (text-id-169 169) + (text-id-170 170) + (text-id-171 171) + (text-id-172 172) + (text-id-173 173) + (text-id-174 174) + (text-id-175 175) + (text-id-176 176) + (text-id-177 177) + (text-id-178 178) + (text-id-179 179) + (text-id-180 180) + (text-id-181 181) + (text-id-182 182) + (text-id-183 183) + (text-id-184 184) + (text-id-185 185) + (text-id-186 186) + (text-id-187 187) + (text-id-188 188) + (text-id-189 189) + (text-id-190 190) + (text-id-191 191) + (text-id-192 192) + (text-id-193 193) + (text-id-194 194) + (text-id-195 195) + (text-id-196 196) + (text-id-197 197) + (text-id-198 198) + (text-id-199 199) + (text-id-200 200) + (text-id-201 201) + (text-id-202 202) + (text-id-203 203) + (text-id-204 204) + (text-id-205 205) + (text-id-206 206) + (text-id-207 207) + (text-id-208 208) + (text-id-209 209) + (text-id-210 210) + (text-id-211 211) + (text-id-212 212) + (text-id-213 213) + (text-id-214 214) + (text-id-215 215) + (text-id-216 216) + (text-id-217 217) + (text-id-218 218) + (text-id-219 219) + (text-id-220 220) + (text-id-221 221) + (text-id-222 222) + (text-id-223 223) + (text-id-224 224) + (text-id-225 225) + (text-id-226 226) + (text-id-227 227) + (text-id-228 228) + (text-id-229 229) + (text-id-230 230) + (text-id-231 231) + (text-id-232 232) + (text-id-233 233) + (text-id-234 234) + (text-id-235 235) + (text-id-236 236) + (text-id-237 237) + (text-id-238 238) + (text-id-239 239) + (text-id-240 240) + (text-id-241 241) + (text-id-242 242) + (text-id-243 243) + (text-id-244 244) + (text-id-245 245) + (text-id-246 246) + (text-id-247 247) + (text-id-248 248) + (text-id-249 249) + (text-id-250 250) + (text-id-251 251) + (text-id-252 252) + (text-id-253 253) + (text-id-254 254) + (text-id-255 255) + (text-id-256 256) + (text-id-257 257) + (text-id-258 258) + (text-id-259 259) + (text-id-260 260) + (text-id-261 261) + (text-id-262 262) + (text-id-263 263) + (text-id-264 264) + (text-id-265 265) + (text-id-266 266) + (text-id-267 267) + (text-id-268 268) + (text-id-269 269) + (text-id-270 270) + (text-id-271 271) + (text-id-272 272) + (text-id-273 273) + (text-id-274 274) + (text-id-275 275) + (text-id-276 276) + (text-id-277 277) + (text-id-278 278) + (text-id-279 279) + (text-id-280 280) + (text-id-281 281) + (text-id-282 282) + (text-id-283 283) + (text-id-284 284) + (text-id-285 285) + (text-id-286 286) + (text-id-287 287) + (text-id-288 288) + (text-id-289 289) + (text-id-290 290) + (text-id-291 291) + (text-id-292 292) + (text-id-293 293) + (text-id-294 294) + (text-id-295 295) + (text-id-296 296) + (text-id-297 297) + (text-id-298 298) + (text-id-299 299) + (text-id-300 300) + (text-id-301 301) + (text-id-302 302) + (text-id-303 303) + (text-id-304 304) + (text-id-305 305) + (text-id-306 306) + (text-id-307 307) + (text-id-308 308) + (text-id-309 309) + (text-id-310 310) + (text-id-311 311) + (text-id-312 312) + (text-id-313 313) + (text-id-314 314) + (text-id-315 315) + (text-id-316 316) + (text-id-317 317) + (text-id-318 318) + (text-id-319 319) + (text-id-320 320) + (text-id-321 321) + (text-id-322 322) + (text-id-323 323) + (text-id-324 324) + (text-id-325 325) + (text-id-326 326) + (text-id-327 327) + (text-id-328 328) + (text-id-329 329) + (text-id-330 330) + (text-id-331 331) + (text-id-332 332) + (text-id-333 333) + (text-id-334 334) + (text-id-335 335) + (text-id-336 336) + (text-id-337 337) + (text-id-338 338) + (text-id-339 339) + (text-id-340 340) (text-id-341 341) (text-id-342 342) (text-id-343 343) (text-id-344 344) - + (text-id-345 345) + (text-id-346 346) + (text-id-347 347) + (text-id-348 348) + (text-id-349 349) + (text-id-350 350) + (text-id-351 351) + (text-id-352 352) + (text-id-353 353) + (text-id-354 354) + (text-id-355 355) + (text-id-356 356) + (text-id-357 357) + (text-id-358 358) + (text-id-359 359) + (text-id-360 360) + (text-id-361 361) + (text-id-362 362) + (text-id-363 363) + (text-id-364 364) + (text-id-365 365) + (text-id-366 366) + (text-id-367 367) + (text-id-368 368) + (text-id-369 369) + (text-id-370 370) + (text-id-371 371) + (text-id-372 372) + (text-id-373 373) + (text-id-374 374) + (text-id-375 375) + (text-id-376 376) + (text-id-377 377) + (text-id-378 378) + (text-id-379 379) + (text-id-380 380) + (text-id-381 381) + (text-id-382 382) + (text-id-383 383) + (text-id-384 384) + (text-id-385 385) + (text-id-386 386) + (text-id-387 387) + (text-id-388 388) + (text-id-389 389) + (text-id-390 390) + (text-id-391 391) + (text-id-392 392) + (text-id-393 393) + (text-id-394 394) + (text-id-395 395) + (text-id-396 396) + (text-id-397 397) + (text-id-398 398) + (text-id-399 399) + (text-id-400 400) + (text-id-401 401) + (text-id-402 402) + (text-id-403 403) + (text-id-404 404) + (text-id-405 405) + (text-id-406 406) + (text-id-407 407) + (text-id-408 408) + (text-id-409 409) + (text-id-410 410) + (text-id-411 411) + (text-id-412 412) + (text-id-413 413) + (text-id-414 414) + (text-id-415 415) + (text-id-416 416) + (text-id-417 417) + (text-id-418 418) + (text-id-419 419) + (text-id-420 420) + (text-id-421 421) + (text-id-422 422) + (text-id-423 423) + (text-id-424 424) + (text-id-425 425) + (text-id-426 426) + (text-id-427 427) + (text-id-428 428) + (text-id-429 429) + (text-id-430 430) + (text-id-431 431) + (text-id-432 432) + (text-id-433 433) + (text-id-434 434) + (text-id-435 435) + (text-id-436 436) + (text-id-437 437) + (text-id-438 438) + (text-id-439 439) + (text-id-440 440) + (text-id-441 441) + (text-id-442 442) + (text-id-443 443) + (text-id-444 444) + (text-id-445 445) + (text-id-446 446) + (text-id-447 447) + (text-id-448 448) + (text-id-449 449) + (text-id-450 450) + (text-id-451 451) + (text-id-452 452) + (text-id-453 453) + (text-id-454 454) + (text-id-455 455) + (text-id-456 456) + (text-id-457 457) + (text-id-458 458) + (text-id-459 459) + (text-id-460 460) + (text-id-461 461) + (text-id-462 462) + (text-id-463 463) + (text-id-464 464) + (text-id-465 465) + (text-id-466 466) + (text-id-467 467) + (text-id-468 468) + (text-id-469 469) + (text-id-470 470) + (text-id-471 471) + (text-id-472 472) + (text-id-473 473) + (text-id-474 474) + (text-id-475 475) + (text-id-476 476) + (text-id-477 477) + (text-id-478 478) + (text-id-479 479) + (text-id-480 480) + (text-id-481 481) + (text-id-482 482) + (text-id-483 483) + (text-id-484 484) + (text-id-485 485) + (text-id-486 486) + (text-id-487 487) + (text-id-488 488) + (text-id-489 489) + (text-id-490 490) + (text-id-491 491) + (text-id-492 492) + (text-id-493 493) + (text-id-494 494) + (text-id-495 495) + (text-id-496 496) + (text-id-497 497) + (text-id-498 498) + (text-id-499 499) + (text-id-500 500) + (text-id-501 501) + (text-id-502 502) + (text-id-503 503) + (text-id-504 504) + (text-id-505 505) + (text-id-506 506) + (text-id-507 507) + (text-id-508 508) + (text-id-509 509) + (text-id-510 510) + (text-id-511 511) + (text-id-512 512) + (text-id-513 513) + (text-id-514 514) + (text-id-515 515) + (text-id-516 516) + (text-id-517 517) + (text-id-518 518) + (text-id-519 519) + (text-id-520 520) + (text-id-521 521) (text-id-522 522) - + (text-id-523 523) + (text-id-524 524) + (text-id-525 525) + (text-id-526 526) + (text-id-527 527) + (text-id-528 528) + (text-id-529 529) + (text-id-530 530) + (text-id-531 531) + (text-id-532 532) + (text-id-533 533) + (text-id-534 534) + (text-id-535 535) + (text-id-536 536) + (text-id-537 537) + (text-id-538 538) + (text-id-539 539) + (text-id-540 540) + (text-id-541 541) + (text-id-542 542) + (text-id-543 543) + (text-id-544 544) + (text-id-545 545) + (text-id-546 546) + (text-id-547 547) + (text-id-548 548) + (text-id-549 549) + (text-id-550 550) + (text-id-551 551) + (text-id-552 552) + (text-id-553 553) + (text-id-554 554) + (text-id-555 555) + (text-id-556 556) + (text-id-557 557) + (text-id-558 558) + (text-id-559 559) + (text-id-560 560) + (text-id-561 561) + (text-id-562 562) + (text-id-563 563) + (text-id-564 564) + (text-id-565 565) + (text-id-566 566) + (text-id-567 567) + (text-id-568 568) + (text-id-569 569) + (text-id-570 570) + (text-id-571 571) + (text-id-572 572) + (text-id-573 573) + (text-id-574 574) + (text-id-575 575) + (text-id-576 576) + (text-id-577 577) + (text-id-578 578) + (text-id-579 579) + (text-id-580 580) + (text-id-581 581) + (text-id-582 582) + (text-id-583 583) + (text-id-584 584) + (text-id-585 585) + (text-id-586 586) + (text-id-587 587) + (text-id-588 588) + (text-id-589 589) + (text-id-590 590) + (text-id-591 591) + (text-id-592 592) + (text-id-593 593) + (text-id-594 594) + (text-id-595 595) + (text-id-596 596) + (text-id-597 597) + (text-id-598 598) + (text-id-599 599) + (text-id-600 600) + (text-id-601 601) + (text-id-602 602) + (text-id-603 603) + (text-id-604 604) + (text-id-605 605) + (text-id-606 606) + (text-id-607 607) + (text-id-608 608) + (text-id-609 609) + (text-id-610 610) + (text-id-611 611) + (text-id-612 612) + (text-id-613 613) + (text-id-614 614) + (text-id-615 615) + (text-id-616 616) + (text-id-617 617) + (text-id-618 618) + (text-id-619 619) + (text-id-620 620) + (text-id-621 621) + (text-id-622 622) + (text-id-623 623) + (text-id-624 624) + (text-id-625 625) + (text-id-626 626) + (text-id-627 627) + (text-id-628 628) + (text-id-629 629) + (text-id-630 630) + (text-id-631 631) + (text-id-632 632) + (text-id-633 633) + (text-id-634 634) + (text-id-635 635) + (text-id-636 636) + (text-id-637 637) + (text-id-638 638) + (text-id-639 639) + (text-id-640 640) + (text-id-641 641) + (text-id-642 642) + (text-id-643 643) + (text-id-644 644) + (text-id-645 645) + (text-id-646 646) + (text-id-647 647) + (text-id-648 648) + (text-id-649 649) + (text-id-650 650) + (text-id-651 651) + (text-id-652 652) + (text-id-653 653) + (text-id-654 654) + (text-id-655 655) + (text-id-656 656) + (text-id-657 657) + (text-id-658 658) + (text-id-659 659) + (text-id-660 660) + (text-id-661 661) + (text-id-662 662) + (text-id-663 663) + (text-id-664 664) + (text-id-665 665) + (text-id-666 666) + (text-id-667 667) + (text-id-668 668) + (text-id-669 669) + (text-id-670 670) + (text-id-671 671) + (text-id-672 672) + (text-id-673 673) + (text-id-674 674) + (text-id-675 675) + (text-id-676 676) + (text-id-677 677) + (text-id-678 678) + (text-id-679 679) + (text-id-680 680) + (text-id-681 681) + (text-id-682 682) + (text-id-683 683) + (text-id-684 684) + (text-id-685 685) + (text-id-686 686) + (text-id-687 687) + (text-id-688 688) + (text-id-689 689) + (text-id-690 690) + (text-id-691 691) + (text-id-692 692) + (text-id-693 693) + (text-id-694 694) + (text-id-695 695) + (text-id-696 696) + (text-id-697 697) + (text-id-698 698) + (text-id-699 699) + (text-id-700 700) + (text-id-701 701) + (text-id-702 702) + (text-id-703 703) + (text-id-704 704) + (text-id-705 705) + (text-id-706 706) + (text-id-707 707) + (text-id-708 708) + (text-id-709 709) + (text-id-710 710) + (text-id-711 711) + (text-id-712 712) + (text-id-713 713) + (text-id-714 714) + (text-id-715 715) + (text-id-716 716) + (text-id-717 717) + (text-id-718 718) + (text-id-719 719) + (text-id-720 720) + (text-id-721 721) + (text-id-722 722) + (text-id-723 723) + (text-id-724 724) + (text-id-725 725) + (text-id-726 726) + (text-id-727 727) + (text-id-728 728) + (text-id-729 729) + (text-id-730 730) + (text-id-731 731) + (text-id-732 732) + (text-id-733 733) + (text-id-734 734) + (text-id-735 735) + (text-id-736 736) + (text-id-737 737) + (text-id-738 738) + (text-id-739 739) + (text-id-740 740) + (text-id-741 741) + (text-id-742 742) + (text-id-743 743) + (text-id-744 744) + (text-id-745 745) + (text-id-746 746) + (text-id-747 747) + (text-id-748 748) + (text-id-749 749) + (text-id-750 750) + (text-id-751 751) + (text-id-752 752) + (text-id-753 753) + (text-id-754 754) + (text-id-755 755) + (text-id-756 756) + (text-id-757 757) + (text-id-758 758) + (text-id-759 759) + (text-id-760 760) + (text-id-761 761) + (text-id-762 762) + (text-id-763 763) + (text-id-764 764) + (text-id-765 765) + (text-id-766 766) + (text-id-767 767) + (text-id-768 768) + (text-id-769 769) + (text-id-770 770) + (text-id-771 771) + (text-id-772 772) + (text-id-773 773) + (text-id-774 774) + (text-id-775 775) + (text-id-776 776) + (text-id-777 777) + (text-id-778 778) + (text-id-779 779) + (text-id-780 780) + (text-id-781 781) + (text-id-782 782) + (text-id-783 783) + (text-id-784 784) + (text-id-785 785) + (text-id-786 786) + (text-id-787 787) + (text-id-788 788) + (text-id-789 789) + (text-id-790 790) + (text-id-791 791) + (text-id-792 792) + (text-id-793 793) + (text-id-794 794) + (text-id-795 795) + (text-id-796 796) + (text-id-797 797) + (text-id-798 798) + (text-id-799 799) + (text-id-800 800) + (text-id-801 801) + (text-id-802 802) + (text-id-803 803) + (text-id-804 804) + (text-id-805 805) + (text-id-806 806) + (text-id-807 807) + (text-id-808 808) + (text-id-809 809) + (text-id-810 810) + (text-id-811 811) + (text-id-812 812) + (text-id-813 813) + (text-id-814 814) + (text-id-815 815) + (text-id-816 816) + (text-id-817 817) + (text-id-818 818) + (text-id-819 819) + (text-id-820 820) + (text-id-821 821) + (text-id-822 822) + (text-id-823 823) + (text-id-824 824) + (text-id-825 825) + (text-id-826 826) + (text-id-827 827) + (text-id-828 828) + (text-id-829 829) + (text-id-830 830) + (text-id-831 831) + (text-id-832 832) + (text-id-833 833) + (text-id-834 834) + (text-id-835 835) + (text-id-836 836) + (text-id-837 837) + (text-id-838 838) + (text-id-839 839) + (text-id-840 840) + (text-id-841 841) + (text-id-842 842) + (text-id-843 843) + (text-id-844 844) + (text-id-845 845) + (text-id-846 846) + (text-id-847 847) + (text-id-848 848) + (text-id-849 849) + (text-id-850 850) + (text-id-851 851) + (text-id-852 852) + (text-id-853 853) + (text-id-854 854) + (text-id-855 855) + (text-id-856 856) + (text-id-857 857) + (text-id-858 858) + (text-id-859 859) + (text-id-860 860) + (text-id-861 861) + (text-id-862 862) + (text-id-863 863) + (text-id-864 864) + (text-id-865 865) + (text-id-866 866) + (text-id-867 867) + (text-id-868 868) + (text-id-869 869) + (text-id-870 870) + (text-id-871 871) + (text-id-872 872) + (text-id-873 873) + (text-id-874 874) + (text-id-875 875) + (text-id-876 876) + (text-id-877 877) + (text-id-878 878) + (text-id-879 879) + (text-id-880 880) + (text-id-881 881) + (text-id-882 882) + (text-id-883 883) + (text-id-884 884) + (text-id-885 885) + (text-id-886 886) + (text-id-887 887) + (text-id-888 888) + (text-id-889 889) + (text-id-890 890) + (text-id-891 891) + (text-id-892 892) + (text-id-893 893) + (text-id-894 894) + (text-id-895 895) + (text-id-896 896) + (text-id-897 897) + (text-id-898 898) + (text-id-899 899) + (text-id-900 900) + (text-id-901 901) + (text-id-902 902) + (text-id-903 903) + (text-id-904 904) + (text-id-905 905) + (text-id-906 906) + (text-id-907 907) + (text-id-908 908) + (text-id-909 909) + (text-id-910 910) + (text-id-911 911) + (text-id-912 912) + (text-id-913 913) + (text-id-914 914) + (text-id-915 915) + (text-id-916 916) + (text-id-917 917) + (text-id-918 918) + (text-id-919 919) + (text-id-920 920) + (text-id-921 921) + (text-id-922 922) + (text-id-923 923) + (text-id-924 924) + (text-id-925 925) + (text-id-926 926) + (text-id-927 927) + (text-id-928 928) + (text-id-929 929) + (text-id-930 930) + (text-id-931 931) + (text-id-932 932) + (text-id-933 933) + (text-id-934 934) + (text-id-935 935) + (text-id-936 936) + (text-id-937 937) + (text-id-938 938) + (text-id-939 939) + (text-id-940 940) + (text-id-941 941) + (text-id-942 942) + (text-id-943 943) + (text-id-944 944) + (text-id-945 945) + (text-id-946 946) + (text-id-947 947) + (text-id-948 948) + (text-id-949 949) + (text-id-950 950) + (text-id-951 951) + (text-id-952 952) + (text-id-953 953) + (text-id-954 954) + (text-id-955 955) + (text-id-956 956) + (text-id-957 957) + (text-id-958 958) + (text-id-959 959) + (text-id-960 960) + (text-id-961 961) + (text-id-962 962) + (text-id-963 963) + (text-id-964 964) + (text-id-965 965) + (text-id-966 966) + (text-id-967 967) + (text-id-968 968) + (text-id-969 969) + (text-id-970 970) + (text-id-971 971) + (text-id-972 972) + (text-id-973 973) + (text-id-974 974) + (text-id-975 975) + (text-id-976 976) + (text-id-977 977) + (text-id-978 978) + (text-id-979 979) + (text-id-980 980) + (text-id-981 981) + (text-id-982 982) + (text-id-983 983) + (text-id-984 984) + (text-id-985 985) + (text-id-986 986) + (text-id-987 987) + (text-id-988 988) + (text-id-989 989) + (text-id-990 990) + (text-id-991 991) + (text-id-992 992) + (text-id-993 993) + (text-id-994 994) + (text-id-995 995) + (text-id-996 996) + (text-id-997 997) + (text-id-998 998) + (text-id-999 999) + (text-id-1000 1000) + (text-id-1001 1001) + (text-id-1002 1002) + (text-id-1003 1003) + (text-id-1004 1004) + (text-id-1005 1005) + (text-id-1006 1006) + (text-id-1007 1007) + (text-id-1008 1008) + (text-id-1009 1009) + (text-id-1010 1010) + (text-id-1011 1011) + (text-id-1012 1012) + (text-id-1013 1013) + (text-id-1014 1014) + (text-id-1015 1015) + (text-id-1016 1016) + (text-id-1017 1017) + (text-id-1018 1018) + (text-id-1019 1019) + (text-id-1020 1020) + (text-id-1021 1021) + (text-id-1022 1022) + (text-id-1023 1023) + (text-id-1024 1024) + (text-id-1025 1025) + (text-id-1026 1026) + (text-id-1027 1027) + (text-id-1028 1028) + (text-id-1029 1029) + (text-id-1030 1030) + (text-id-1031 1031) + (text-id-1032 1032) + (text-id-1033 1033) + (text-id-1034 1034) + (text-id-1035 1035) + (text-id-1036 1036) + (text-id-1037 1037) + (text-id-1038 1038) + (text-id-1039 1039) + (text-id-1040 1040) + (text-id-1041 1041) + (text-id-1042 1042) + (text-id-1043 1043) + (text-id-1044 1044) + (text-id-1045 1045) + (text-id-1046 1046) + (text-id-1047 1047) + (text-id-1048 1048) + (text-id-1049 1049) + (text-id-1050 1050) + (text-id-1051 1051) + (text-id-1052 1052) + (text-id-1053 1053) + (text-id-1054 1054) + (text-id-1055 1055) + (text-id-1056 1056) + (text-id-1057 1057) + (text-id-1058 1058) + (text-id-1059 1059) + (text-id-1060 1060) + (text-id-1061 1061) + (text-id-1062 1062) + (text-id-1063 1063) + (text-id-1064 1064) + (text-id-1065 1065) + (text-id-1066 1066) + (text-id-1067 1067) + (text-id-1068 1068) + (text-id-1069 1069) + (text-id-1070 1070) + (text-id-1071 1071) + (text-id-1072 1072) + (text-id-1073 1073) + (text-id-1074 1074) + (text-id-1075 1075) + (text-id-1076 1076) + (text-id-1077 1077) + (text-id-1078 1078) + (text-id-1079 1079) + (text-id-1080 1080) + (text-id-1081 1081) + (text-id-1082 1082) + (text-id-1083 1083) + (text-id-1084 1084) + (text-id-1085 1085) + (text-id-1086 1086) + (text-id-1087 1087) + (text-id-1088 1088) + (text-id-1089 1089) + (text-id-1090 1090) + (text-id-1091 1091) + (text-id-1092 1092) + (text-id-1093 1093) + (text-id-1094 1094) + (text-id-1095 1095) + (text-id-1096 1096) + (text-id-1097 1097) + (text-id-1098 1098) + (text-id-1099 1099) + (text-id-1100 1100) + (text-id-1101 1101) + (text-id-1102 1102) + (text-id-1103 1103) + (text-id-1104 1104) + (text-id-1105 1105) + (text-id-1106 1106) + (text-id-1107 1107) + (text-id-1108 1108) + (text-id-1109 1109) + (text-id-1110 1110) + (text-id-1111 1111) + (text-id-1112 1112) + (text-id-1113 1113) + (text-id-1114 1114) + (text-id-1115 1115) + (text-id-1116 1116) + (text-id-1117 1117) + (text-id-1118 1118) + (text-id-1119 1119) + (text-id-1120 1120) + (text-id-1121 1121) + (text-id-1122 1122) + (text-id-1123 1123) + (text-id-1124 1124) + (text-id-1125 1125) + (text-id-1126 1126) + (text-id-1127 1127) + (text-id-1128 1128) + (text-id-1129 1129) + (text-id-1130 1130) + (text-id-1131 1131) + (text-id-1132 1132) + (text-id-1133 1133) + (text-id-1134 1134) + (text-id-1135 1135) + (text-id-1136 1136) + (text-id-1137 1137) + (text-id-1138 1138) + (text-id-1139 1139) + (text-id-1140 1140) + (text-id-1141 1141) + (text-id-1142 1142) + (text-id-1143 1143) + (text-id-1144 1144) + (text-id-1145 1145) + (text-id-1146 1146) + (text-id-1147 1147) + (text-id-1148 1148) + (text-id-1149 1149) + (text-id-1150 1150) + (text-id-1151 1151) + (text-id-1152 1152) + (text-id-1153 1153) + (text-id-1154 1154) + (text-id-1155 1155) + (text-id-1156 1156) + (text-id-1157 1157) + (text-id-1158 1158) + (text-id-1159 1159) + (text-id-1160 1160) + (text-id-1161 1161) + (text-id-1162 1162) + (text-id-1163 1163) + (text-id-1164 1164) + (text-id-1165 1165) + (text-id-1166 1166) + (text-id-1167 1167) + (text-id-1168 1168) + (text-id-1169 1169) + (text-id-1170 1170) + (text-id-1171 1171) + (text-id-1172 1172) + (text-id-1173 1173) + (text-id-1174 1174) + (text-id-1175 1175) + (text-id-1176 1176) + (text-id-1177 1177) + (text-id-1178 1178) + (text-id-1179 1179) + (text-id-1180 1180) + (text-id-1181 1181) + (text-id-1182 1182) + (text-id-1183 1183) + (text-id-1184 1184) + (text-id-1185 1185) + (text-id-1186 1186) + (text-id-1187 1187) + (text-id-1188 1188) + (text-id-1189 1189) + (text-id-1190 1190) + (text-id-1191 1191) + (text-id-1192 1192) + (text-id-1193 1193) + (text-id-1194 1194) + (text-id-1195 1195) + (text-id-1196 1196) + (text-id-1197 1197) + (text-id-1198 1198) + (text-id-1199 1199) + (text-id-1200 1200) + (text-id-1201 1201) + (text-id-1202 1202) + (text-id-1203 1203) + (text-id-1204 1204) + (text-id-1205 1205) + (text-id-1206 1206) + (text-id-1207 1207) + (text-id-1208 1208) + (text-id-1209 1209) + (text-id-1210 1210) + (text-id-1211 1211) + (text-id-1212 1212) + (text-id-1213 1213) + (text-id-1214 1214) + (text-id-1215 1215) + (text-id-1216 1216) + (text-id-1217 1217) + (text-id-1218 1218) + (text-id-1219 1219) + (text-id-1220 1220) + (text-id-1221 1221) + (text-id-1222 1222) + (text-id-1223 1223) + (text-id-1224 1224) + (text-id-1225 1225) + (text-id-1226 1226) + (text-id-1227 1227) + (text-id-1228 1228) + (text-id-1229 1229) + (text-id-1230 1230) + (text-id-1231 1231) + (text-id-1232 1232) + (text-id-1233 1233) + (text-id-1234 1234) + (text-id-1235 1235) + (text-id-1236 1236) + (text-id-1237 1237) + (text-id-1238 1238) + (text-id-1239 1239) + (text-id-1240 1240) + (text-id-1241 1241) + (text-id-1242 1242) + (text-id-1243 1243) + (text-id-1244 1244) + (text-id-1245 1245) + (text-id-1246 1246) + (text-id-1247 1247) + (text-id-1248 1248) + (text-id-1249 1249) + (text-id-1250 1250) + (text-id-1251 1251) + (text-id-1252 1252) + (text-id-1253 1253) + (text-id-1254 1254) + (text-id-1255 1255) + (text-id-1256 1256) + (text-id-1257 1257) + (text-id-1258 1258) + (text-id-1259 1259) + (text-id-1260 1260) + (text-id-1261 1261) + (text-id-1262 1262) + (text-id-1263 1263) + (text-id-1264 1264) + (text-id-1265 1265) + (text-id-1266 1266) + (text-id-1267 1267) + (text-id-1268 1268) + (text-id-1269 1269) + (text-id-1270 1270) + (text-id-1271 1271) + (text-id-1272 1272) + (text-id-1273 1273) + (text-id-1274 1274) + (text-id-1275 1275) + (text-id-1276 1276) + (text-id-1277 1277) + (text-id-1278 1278) + (text-id-1279 1279) + (text-id-1280 1280) + (text-id-1281 1281) + (text-id-1282 1282) + (text-id-1283 1283) + (text-id-1284 1284) + (text-id-1285 1285) + (text-id-1286 1286) + (text-id-1287 1287) + (text-id-1288 1288) + (text-id-1289 1289) + (text-id-1290 1290) + (text-id-1291 1291) + (text-id-1292 1292) + (text-id-1293 1293) + (text-id-1294 1294) + (text-id-1295 1295) + (text-id-1296 1296) + (text-id-1297 1297) + (text-id-1298 1298) + (text-id-1299 1299) + (text-id-1300 1300) + (text-id-1301 1301) + (text-id-1302 1302) + (text-id-1303 1303) + (text-id-1304 1304) + (text-id-1305 1305) + (text-id-1306 1306) + (text-id-1307 1307) + (text-id-1308 1308) + (text-id-1309 1309) + (text-id-1310 1310) + (text-id-1311 1311) + (text-id-1312 1312) + (text-id-1313 1313) + (text-id-1314 1314) + (text-id-1315 1315) + (text-id-1316 1316) + (text-id-1317 1317) + (text-id-1318 1318) + (text-id-1319 1319) + (text-id-1320 1320) + (text-id-1321 1321) + (text-id-1322 1322) + (text-id-1323 1323) + (text-id-1324 1324) + (text-id-1325 1325) + (text-id-1326 1326) + (text-id-1327 1327) + (text-id-1328 1328) + (text-id-1329 1329) + (text-id-1330 1330) + (text-id-1331 1331) + (text-id-1332 1332) + (text-id-1333 1333) + (text-id-1334 1334) + (text-id-1335 1335) + (text-id-1336 1336) + (text-id-1337 1337) + (text-id-1338 1338) + (text-id-1339 1339) + (text-id-1340 1340) + (text-id-1341 1341) + (text-id-1342 1342) + (text-id-1343 1343) + (text-id-1344 1344) + (text-id-1345 1345) + (text-id-1346 1346) + (text-id-1347 1347) + (text-id-1348 1348) + (text-id-1349 1349) + (text-id-1350 1350) + (text-id-1351 1351) + (text-id-1352 1352) + (text-id-1353 1353) + (text-id-1354 1354) + (text-id-1355 1355) + (text-id-1356 1356) + (text-id-1357 1357) + (text-id-1358 1358) + (text-id-1359 1359) + (text-id-1360 1360) + (text-id-1361 1361) + (text-id-1362 1362) + (text-id-1363 1363) + (text-id-1364 1364) + (text-id-1365 1365) + (text-id-1366 1366) + (text-id-1367 1367) + (text-id-1368 1368) + (text-id-1369 1369) + (text-id-1370 1370) + (text-id-1371 1371) + (text-id-1372 1372) + (text-id-1373 1373) + (text-id-1374 1374) + (text-id-1375 1375) + (text-id-1376 1376) + (text-id-1377 1377) + (text-id-1378 1378) + (text-id-1379 1379) + (text-id-1380 1380) + (text-id-1381 1381) + (text-id-1382 1382) + (text-id-1383 1383) + (text-id-1384 1384) + (text-id-1385 1385) + (text-id-1386 1386) + (text-id-1387 1387) + (text-id-1388 1388) + (text-id-1389 1389) + (text-id-1390 1390) + (text-id-1391 1391) + (text-id-1392 1392) + (text-id-1393 1393) + (text-id-1394 1394) + (text-id-1395 1395) + (text-id-1396 1396) + (text-id-1397 1397) + (text-id-1398 1398) + (text-id-1399 1399) + (text-id-1400 1400) + (text-id-1401 1401) + (text-id-1402 1402) + (text-id-1403 1403) + (text-id-1404 1404) + (text-id-1405 1405) + (text-id-1406 1406) + (text-id-1407 1407) + (text-id-1408 1408) + (text-id-1409 1409) + (text-id-1410 1410) + (text-id-1411 1411) + (text-id-1412 1412) + (text-id-1413 1413) + (text-id-1414 1414) + (text-id-1415 1415) + (text-id-1416 1416) + (text-id-1417 1417) + (text-id-1418 1418) + (text-id-1419 1419) + (text-id-1420 1420) + (text-id-1421 1421) + (text-id-1422 1422) + (text-id-1423 1423) + (text-id-1424 1424) + (text-id-1425 1425) + (text-id-1426 1426) + (text-id-1427 1427) + (text-id-1428 1428) + (text-id-1429 1429) + (text-id-1430 1430) + (text-id-1431 1431) + (text-id-1432 1432) + (text-id-1433 1433) + (text-id-1434 1434) + (text-id-1435 1435) + (text-id-1436 1436) + (text-id-1437 1437) + (text-id-1438 1438) + (text-id-1439 1439) + (text-id-1440 1440) + (text-id-1441 1441) + (text-id-1442 1442) + (text-id-1443 1443) + (text-id-1444 1444) + (text-id-1445 1445) + (text-id-1446 1446) + (text-id-1447 1447) + (text-id-1448 1448) + (text-id-1449 1449) + (text-id-1450 1450) + (text-id-1451 1451) + (text-id-1452 1452) + (text-id-1453 1453) + (text-id-1454 1454) + (text-id-1455 1455) + (text-id-1456 1456) + (text-id-1457 1457) + (text-id-1458 1458) + (text-id-1459 1459) + (text-id-1460 1460) + (text-id-1461 1461) + (text-id-1462 1462) + (text-id-1463 1463) + (text-id-1464 1464) + (text-id-1465 1465) + (text-id-1466 1466) + (text-id-1467 1467) + (text-id-1468 1468) + (text-id-1469 1469) + (text-id-1470 1470) + (text-id-1471 1471) + (text-id-1472 1472) + (text-id-1473 1473) + (text-id-1474 1474) + (text-id-1475 1475) + (text-id-1476 1476) + (text-id-1477 1477) + (text-id-1478 1478) + (text-id-1479 1479) + (text-id-1480 1480) + (text-id-1481 1481) + (text-id-1482 1482) + (text-id-1483 1483) + (text-id-1484 1484) + (text-id-1485 1485) + (text-id-1486 1486) + (text-id-1487 1487) + (text-id-1488 1488) + (text-id-1489 1489) + (text-id-1490 1490) + (text-id-1491 1491) + (text-id-1492 1492) + (text-id-1493 1493) + (text-id-1494 1494) + (text-id-1495 1495) + (text-id-1496 1496) + (text-id-1497 1497) + (text-id-1498 1498) + (text-id-1499 1499) + (text-id-1500 1500) + (text-id-1501 1501) + (text-id-1502 1502) + (text-id-1503 1503) + (text-id-1504 1504) + (text-id-1505 1505) + (text-id-1506 1506) + (text-id-1507 1507) + (text-id-1508 1508) + (text-id-1509 1509) + (text-id-1510 1510) + (text-id-1511 1511) + (text-id-1512 1512) + (text-id-1513 1513) + (text-id-1514 1514) + (text-id-1515 1515) + (text-id-1516 1516) + (text-id-1517 1517) + (text-id-1518 1518) + (text-id-1519 1519) + (text-id-1520 1520) + (text-id-1521 1521) + (text-id-1522 1522) + (text-id-1523 1523) + (text-id-1524 1524) + (text-id-1525 1525) + (text-id-1526 1526) + (text-id-1527 1527) + (text-id-1528 1528) + (text-id-1529 1529) + (text-id-1530 1530) + (text-id-1531 1531) + (text-id-1532 1532) + (text-id-1533 1533) + (text-id-1534 1534) + (text-id-1535 1535) + (text-id-1536 1536) + (text-id-1537 1537) + (text-id-1538 1538) + (text-id-1539 1539) + (text-id-1540 1540) + (text-id-1541 1541) + (text-id-1542 1542) + (text-id-1543 1543) + (text-id-1544 1544) + (text-id-1545 1545) + (text-id-1546 1546) + (text-id-1547 1547) + (text-id-1548 1548) + (text-id-1549 1549) + (text-id-1550 1550) + (text-id-1551 1551) + (text-id-1552 1552) + (text-id-1553 1553) + (text-id-1554 1554) + (text-id-1555 1555) + (text-id-1556 1556) + (text-id-1557 1557) + (text-id-1558 1558) + (text-id-1559 1559) + (text-id-1560 1560) + (text-id-1561 1561) + (text-id-1562 1562) + (text-id-1563 1563) + (text-id-1564 1564) + (text-id-1565 1565) + (text-id-1566 1566) + (text-id-1567 1567) + (text-id-1568 1568) + (text-id-1569 1569) + (text-id-1570 1570) + (text-id-1571 1571) + (text-id-1572 1572) + (text-id-1573 1573) + (text-id-1574 1574) + (text-id-1575 1575) + (text-id-1576 1576) + (text-id-1577 1577) + (text-id-1578 1578) (text-id-1579 1579) (text-id-1580 1580) (text-id-1581 1581) + (text-id-1582 1582) + (text-id-1583 1583) + (text-id-1584 1584) + (text-id-1585 1585) + (text-id-1586 1586) + (text-id-1587 1587) (text-id-1588 1588) + (text-id-1589 1589) + (text-id-1590 1590) + (text-id-1591 1591) + (text-id-1592 1592) + (text-id-1593 1593) + (text-id-1594 1594) + (text-id-1595 1595) + (text-id-1596 1596) + (text-id-1597 1597) + (text-id-1598 1598) + (text-id-1599 1599) + (text-id-1600 1600) + (text-id-1601 1601) + (text-id-1602 1602) + (text-id-1603 1603) + (text-id-1604 1604) + (text-id-1605 1605) + (text-id-1606 1606) + (text-id-1607 1607) + (text-id-1608 1608) + (text-id-1609 1609) + (text-id-1610 1610) + (text-id-1611 1611) + (text-id-1612 1612) + (text-id-1613 1613) + (text-id-1614 1614) + (text-id-1615 1615) + (text-id-1616 1616) + (text-id-1617 1617) + (text-id-1618 1618) + (text-id-1619 1619) + (text-id-1620 1620) + (text-id-1621 1621) + (text-id-1622 1622) + (text-id-1623 1623) (text-id-1624 1624) (text-id-1625 1625) + (text-id-1626 1626) + (text-id-1627 1627) + (text-id-1628 1628) + (text-id-1629 1629) + (text-id-1630 1630) + (text-id-1631 1631) + (text-id-1632 1632) (text-id-1633 1633) + (text-id-1634 1634) + (text-id-1635 1635) + (text-id-1636 1636) + (text-id-1637 1637) + (text-id-1638 1638) + (text-id-1639 1639) + (text-id-1640 1640) + (text-id-1641 1641) + (text-id-1642 1642) + (text-id-1643 1643) + (text-id-1644 1644) + (text-id-1645 1645) + (text-id-1646 1646) + (text-id-1647 1647) + (text-id-1648 1648) + (text-id-1649 1649) + (text-id-1650 1650) + (text-id-1651 1651) + (text-id-1652 1652) + (text-id-1653 1653) + (text-id-1654 1654) (text-id-1655 1655) (text-id-1656 1656) + (text-id-1657 1657) + (text-id-1658 1658) (text-id-1659 1659) + (text-id-1660 1660) + (text-id-1661 1661) + (text-id-1662 1662) + (text-id-1663 1663) + (text-id-1664 1664) + (text-id-1665 1665) + (text-id-1666 1666) + (text-id-1667 1667) + (text-id-1668 1668) + (text-id-1669 1669) + (text-id-1670 1670) + (text-id-1671 1671) + (text-id-1672 1672) + (text-id-1673 1673) + (text-id-1674 1674) + (text-id-1675 1675) + (text-id-1676 1676) + (text-id-1677 1677) + (text-id-1678 1678) + (text-id-1679 1679) + (text-id-1680 1680) + (text-id-1681 1681) + (text-id-1682 1682) + (text-id-1683 1683) + (text-id-1684 1684) + (text-id-1685 1685) + (text-id-1686 1686) + (text-id-1687 1687) + (text-id-1688 1688) + (text-id-1689 1689) + (text-id-1690 1690) + (text-id-1691 1691) + (text-id-1692 1692) + (text-id-1693 1693) (text-id-1694 1694) (text-id-1695 1695) + (text-id-1696 1696) + (text-id-1697 1697) + (text-id-1698 1698) + (text-id-1699 1699) + (text-id-1700 1700) + (text-id-1701 1701) + (text-id-1702 1702) + (text-id-1703 1703) + (text-id-1704 1704) + (text-id-1705 1705) + (text-id-1706 1706) + (text-id-1707 1707) + (text-id-1708 1708) + (text-id-1709 1709) + (text-id-1710 1710) + (text-id-1711 1711) + (text-id-1712 1712) + (text-id-1713 1713) + (text-id-1714 1714) + (text-id-1715 1715) + (text-id-1716 1716) + (text-id-1717 1717) + (text-id-1718 1718) + (text-id-1719 1719) + (text-id-1720 1720) + (text-id-1721 1721) + (text-id-1722 1722) + (text-id-1723 1723) + (text-id-1724 1724) + (text-id-1725 1725) + (text-id-1726 1726) + (text-id-1727 1727) + (text-id-1728 1728) + (text-id-1729 1729) + (text-id-1730 1730) + (text-id-1731 1731) + (text-id-1732 1732) + (text-id-1733 1733) + (text-id-1734 1734) + (text-id-1735 1735) + (text-id-1736 1736) + (text-id-1737 1737) + (text-id-1738 1738) + (text-id-1739 1739) + (text-id-1740 1740) + (text-id-1741 1741) + (text-id-1742 1742) + (text-id-1743 1743) + (text-id-1744 1744) + (text-id-1745 1745) + (text-id-1746 1746) + (text-id-1747 1747) + (text-id-1748 1748) + (text-id-1749 1749) + (text-id-1750 1750) + (text-id-1751 1751) + (text-id-1752 1752) + (text-id-1753 1753) + (text-id-1754 1754) + (text-id-1755 1755) + (text-id-1756 1756) + (text-id-1757 1757) + (text-id-1758 1758) + (text-id-1759 1759) + (text-id-1760 1760) + (text-id-1761 1761) + (text-id-1762 1762) + (text-id-1763 1763) + (text-id-1764 1764) + (text-id-1765 1765) + (text-id-1766 1766) + (text-id-1767 1767) + (text-id-1768 1768) + (text-id-1769 1769) + (text-id-1770 1770) + (text-id-1771 1771) + (text-id-1772 1772) + (text-id-1773 1773) + (text-id-1774 1774) + (text-id-1775 1775) + (text-id-1776 1776) + (text-id-1777 1777) + (text-id-1778 1778) + (text-id-1779 1779) + (text-id-1780 1780) + (text-id-1781 1781) + (text-id-1782 1782) + (text-id-1783 1783) + (text-id-1784 1784) + (text-id-1785 1785) + (text-id-1786 1786) + (text-id-1787 1787) + (text-id-1788 1788) + (text-id-1789 1789) + (text-id-1790 1790) + (text-id-1791 1791) + (text-id-1792 1792) + (text-id-1793 1793) + (text-id-1794 1794) + (text-id-1795 1795) + (text-id-1796 1796) + (text-id-1797 1797) + (text-id-1798 1798) + (text-id-1799 1799) + (text-id-1800 1800) + (text-id-1801 1801) + (text-id-1802 1802) + (text-id-1803 1803) + (text-id-1804 1804) + (text-id-1805 1805) + (text-id-1806 1806) + (text-id-1807 1807) + (text-id-1808 1808) + (text-id-1809 1809) + (text-id-1810 1810) + (text-id-1811 1811) + (text-id-1812 1812) + (text-id-1813 1813) + (text-id-1814 1814) + (text-id-1815 1815) + (text-id-1816 1816) + (text-id-1817 1817) + (text-id-1818 1818) + (text-id-1819 1819) + (text-id-1820 1820) + (text-id-1821 1821) + (text-id-1822 1822) + (text-id-1823 1823) + (text-id-1824 1824) + (text-id-1825 1825) + (text-id-1826 1826) + (text-id-1827 1827) + (text-id-1828 1828) + (text-id-1829 1829) + (text-id-1830 1830) + (text-id-1831 1831) + (text-id-1832 1832) + (text-id-1833 1833) + (text-id-1834 1834) + (text-id-1835 1835) + (text-id-1836 1836) + (text-id-1837 1837) (text-id-1838 1838) (text-id-1839 1839) - + (text-id-1840 1840) + (text-id-1841 1841) + (text-id-1842 1842) + (text-id-1843 1843) + (text-id-1844 1844) + (text-id-1845 1845) + (text-id-1846 1846) + (text-id-1847 1847) + (text-id-1848 1848) + (text-id-1849 1849) + (text-id-1850 1850) + (text-id-1851 1851) + (text-id-1852 1852) + (text-id-1853 1853) + (text-id-1854 1854) + (text-id-1855 1855) + (text-id-1856 1856) + (text-id-1857 1857) + (text-id-1858 1858) + (text-id-1859 1859) + (text-id-1860 1860) + (text-id-1861 1861) + (text-id-1862 1862) + (text-id-1863 1863) + (text-id-1864 1864) + (text-id-1865 1865) + (text-id-1866 1866) + (text-id-1867 1867) + (text-id-1868 1868) + (text-id-1869 1869) + (text-id-1870 1870) + (text-id-1871 1871) + (text-id-1872 1872) + (text-id-1873 1873) + (text-id-1874 1874) + (text-id-1875 1875) + (text-id-1876 1876) + (text-id-1877 1877) + (text-id-1878 1878) + (text-id-1879 1879) + (text-id-1880 1880) + (text-id-1881 1881) + (text-id-1882 1882) + (text-id-1883 1883) + (text-id-1884 1884) + (text-id-1885 1885) + (text-id-1886 1886) + (text-id-1887 1887) + (text-id-1888 1888) + (text-id-1889 1889) + (text-id-1890 1890) + (text-id-1891 1891) + (text-id-1892 1892) + (text-id-1893 1893) + (text-id-1894 1894) + (text-id-1895 1895) + (text-id-1896 1896) + (text-id-1897 1897) + (text-id-1898 1898) + (text-id-1899 1899) + (text-id-1900 1900) + (text-id-1901 1901) + (text-id-1902 1902) + (text-id-1903 1903) + (text-id-1904 1904) + (text-id-1905 1905) + (text-id-1906 1906) + (text-id-1907 1907) + (text-id-1908 1908) + (text-id-1909 1909) + (text-id-1910 1910) + (text-id-1911 1911) + (text-id-1912 1912) + (text-id-1913 1913) + (text-id-1914 1914) + (text-id-1915 1915) + (text-id-1916 1916) + (text-id-1917 1917) + (text-id-1918 1918) + (text-id-1919 1919) + (text-id-1920 1920) + (text-id-1921 1921) + (text-id-1922 1922) + (text-id-1923 1923) + (text-id-1924 1924) + (text-id-1925 1925) + (text-id-1926 1926) + (text-id-1927 1927) + (text-id-1928 1928) + (text-id-1929 1929) + (text-id-1930 1930) + (text-id-1931 1931) + (text-id-1932 1932) + (text-id-1933 1933) + (text-id-1934 1934) + (text-id-1935 1935) + (text-id-1936 1936) + (text-id-1937 1937) + (text-id-1938 1938) + (text-id-1939 1939) (text-id-1940 1940) - + (text-id-1941 1941) + (text-id-1942 1942) + (text-id-1943 1943) + (text-id-1944 1944) + (text-id-1945 1945) + (text-id-1946 1946) + (text-id-1947 1947) + (text-id-1948 1948) + (text-id-1949 1949) + (text-id-1950 1950) + (text-id-1951 1951) + (text-id-1952 1952) + (text-id-1953 1953) + (text-id-1954 1954) + (text-id-1955 1955) + (text-id-1956 1956) + (text-id-1957 1957) + (text-id-1958 1958) + (text-id-1959 1959) + (text-id-1960 1960) + (text-id-1961 1961) + (text-id-1962 1962) + (text-id-1963 1963) + (text-id-1964 1964) + (text-id-1965 1965) + (text-id-1966 1966) + (text-id-1967 1967) + (text-id-1968 1968) + (text-id-1969 1969) + (text-id-1970 1970) + (text-id-1971 1971) + (text-id-1972 1972) + (text-id-1973 1973) + (text-id-1974 1974) + (text-id-1975 1975) + (text-id-1976 1976) + (text-id-1977 1977) + (text-id-1978 1978) + (text-id-1979 1979) + (text-id-1980 1980) + (text-id-1981 1981) + (text-id-1982 1982) + (text-id-1983 1983) + (text-id-1984 1984) + (text-id-1985 1985) + (text-id-1986 1986) + (text-id-1987 1987) + (text-id-1988 1988) + (text-id-1989 1989) + (text-id-1990 1990) + (text-id-1991 1991) + (text-id-1992 1992) + (text-id-1993 1993) + (text-id-1994 1994) + (text-id-1995 1995) + (text-id-1996 1996) + (text-id-1997 1997) + (text-id-1998 1998) + (text-id-1999 1999) + (text-id-2000 2000) + (text-id-2001 2001) + (text-id-2002 2002) + (text-id-2003 2003) + (text-id-2004 2004) + (text-id-2005 2005) + (text-id-2006 2006) + (text-id-2007 2007) + (text-id-2008 2008) + (text-id-2009 2009) + (text-id-2010 2010) + (text-id-2011 2011) + (text-id-2012 2012) + (text-id-2013 2013) + (text-id-2014 2014) + (text-id-2015 2015) + (text-id-2016 2016) + (text-id-2017 2017) + (text-id-2018 2018) + (text-id-2019 2019) + (text-id-2020 2020) + (text-id-2021 2021) + (text-id-2022 2022) + (text-id-2023 2023) + (text-id-2024 2024) + (text-id-2025 2025) + (text-id-2026 2026) + (text-id-2027 2027) + (text-id-2028 2028) + (text-id-2029 2029) + (text-id-2030 2030) + (text-id-2031 2031) + (text-id-2032 2032) + (text-id-2033 2033) + (text-id-2034 2034) + (text-id-2035 2035) + (text-id-2036 2036) + (text-id-2037 2037) + (text-id-2038 2038) + (text-id-2039 2039) + (text-id-2040 2040) + (text-id-2041 2041) + (text-id-2042 2042) + (text-id-2043 2043) + (text-id-2044 2044) + (text-id-2045 2045) + (text-id-2046 2046) + (text-id-2047 2047) + (text-id-2048 2048) + (text-id-2049 2049) + (text-id-2050 2050) + (text-id-2051 2051) + (text-id-2052 2052) + (text-id-2053 2053) + (text-id-2054 2054) + (text-id-2055 2055) + (text-id-2056 2056) + (text-id-2057 2057) + (text-id-2058 2058) + (text-id-2059 2059) + (text-id-2060 2060) + (text-id-2061 2061) + (text-id-2062 2062) + (text-id-2063 2063) + (text-id-2064 2064) + (text-id-2065 2065) + (text-id-2066 2066) + (text-id-2067 2067) + (text-id-2068 2068) + (text-id-2069 2069) + (text-id-2070 2070) + (text-id-2071 2071) + (text-id-2072 2072) + (text-id-2073 2073) + (text-id-2074 2074) + (text-id-2075 2075) + (text-id-2076 2076) + (text-id-2077 2077) + (text-id-2078 2078) + (text-id-2079 2079) + (text-id-2080 2080) + (text-id-2081 2081) + (text-id-2082 2082) + (text-id-2083 2083) + (text-id-2084 2084) + (text-id-2085 2085) + (text-id-2086 2086) + (text-id-2087 2087) + (text-id-2088 2088) + (text-id-2089 2089) + (text-id-2090 2090) + (text-id-2091 2091) + (text-id-2092 2092) + (text-id-2093 2093) + (text-id-2094 2094) + (text-id-2095 2095) + (text-id-2096 2096) + (text-id-2097 2097) + (text-id-2098 2098) + (text-id-2099 2099) + (text-id-2100 2100) + (text-id-2101 2101) + (text-id-2102 2102) + (text-id-2103 2103) + (text-id-2104 2104) + (text-id-2105 2105) + (text-id-2106 2106) + (text-id-2107 2107) + (text-id-2108 2108) + (text-id-2109 2109) + (text-id-2110 2110) + (text-id-2111 2111) + (text-id-2112 2112) + (text-id-2113 2113) + (text-id-2114 2114) + (text-id-2115 2115) + (text-id-2116 2116) + (text-id-2117 2117) + (text-id-2118 2118) + (text-id-2119 2119) + (text-id-2120 2120) + (text-id-2121 2121) + (text-id-2122 2122) + (text-id-2123 2123) + (text-id-2124 2124) + (text-id-2125 2125) + (text-id-2126 2126) + (text-id-2127 2127) + (text-id-2128 2128) + (text-id-2129 2129) + (text-id-2130 2130) + (text-id-2131 2131) + (text-id-2132 2132) + (text-id-2133 2133) + (text-id-2134 2134) (text-id-2135 2135) (text-id-2136 2136) (text-id-2137 2137) @@ -196,9 +2306,21 @@ (text-id-2145 2145) (text-id-2146 2146) (text-id-2147 2147) - + (text-id-2148 2148) (text-id-2149 2149) - + (text-id-2150 2150) + (text-id-2151 2151) + (text-id-2152 2152) + (text-id-2153 2153) + (text-id-2154 2154) + (text-id-2155 2155) + (text-id-2156 2156) + (text-id-2157 2157) + (text-id-2158 2158) + (text-id-2159 2159) + (text-id-2160 2160) + (text-id-2161 2161) + (text-id-2162 2162) (text-id-2163 2163) (text-id-2164 2164) (text-id-2165 2165) @@ -216,6 +2338,9 @@ (text-id-2177 2177) (text-id-2178 2178) (text-id-2179 2179) + (text-id-2180 2180) + (text-id-2181 2181) + (text-id-2182 2182) (text-id-2183 2183) (text-id-2184 2184) (text-id-2185 2185) @@ -224,7 +2349,23 @@ (text-id-2188 2188) (text-id-2189 2189) (text-id-2190 2190) - + (text-id-2191 2191) + (text-id-2192 2192) + (text-id-2193 2193) + (text-id-2194 2194) + (text-id-2195 2195) + (text-id-2196 2196) + (text-id-2197 2197) + (text-id-2198 2198) + (text-id-2199 2199) + (text-id-2200 2200) + (text-id-2201 2201) + (text-id-2202 2202) + (text-id-2203 2203) + (text-id-2204 2204) + (text-id-2205 2205) + (text-id-2206 2206) + (text-id-2207 2207) (text-id-2208 2208) (text-id-2209 2209) (text-id-2210 2210) @@ -239,7 +2380,62 @@ (text-id-2219 2219) (text-id-2220 2220) (text-id-2221 2221) - + (text-id-2222 2222) + (text-id-2223 2223) + (text-id-2224 2224) + (text-id-2225 2225) + (text-id-2226 2226) + (text-id-2227 2227) + (text-id-2228 2228) + (text-id-2229 2229) + (text-id-2230 2230) + (text-id-2231 2231) + (text-id-2232 2232) + (text-id-2233 2233) + (text-id-2234 2234) + (text-id-2235 2235) + (text-id-2236 2236) + (text-id-2237 2237) + (text-id-2238 2238) + (text-id-2239 2239) + (text-id-2240 2240) + (text-id-2241 2241) + (text-id-2242 2242) + (text-id-2243 2243) + (text-id-2244 2244) + (text-id-2245 2245) + (text-id-2246 2246) + (text-id-2247 2247) + (text-id-2248 2248) + (text-id-2249 2249) + (text-id-2250 2250) + (text-id-2251 2251) + (text-id-2252 2252) + (text-id-2253 2253) + (text-id-2254 2254) + (text-id-2255 2255) + (text-id-2256 2256) + (text-id-2257 2257) + (text-id-2258 2258) + (text-id-2259 2259) + (text-id-2260 2260) + (text-id-2261 2261) + (text-id-2262 2262) + (text-id-2263 2263) + (text-id-2264 2264) + (text-id-2265 2265) + (text-id-2266 2266) + (text-id-2267 2267) + (text-id-2268 2268) + (text-id-2269 2269) + (text-id-2270 2270) + (text-id-2271 2271) + (text-id-2272 2272) + (text-id-2273 2273) + (text-id-2274 2274) + (text-id-2275 2275) + (text-id-2276 2276) + (text-id-2277 2277) (text-id-2278 2278) (text-id-2279 2279) (text-id-2280 2280) @@ -275,9 +2471,526 @@ (text-id-2310 2310) (text-id-2311 2311) (text-id-2312 2312) - + (text-id-2313 2313) + (text-id-2314 2314) + (text-id-2315 2315) + (text-id-2316 2316) + (text-id-2317 2317) + (text-id-2318 2318) + (text-id-2319 2319) + (text-id-2320 2320) + (text-id-2321 2321) + (text-id-2322 2322) + (text-id-2323 2323) + (text-id-2324 2324) + (text-id-2325 2325) + (text-id-2326 2326) + (text-id-2327 2327) + (text-id-2328 2328) + (text-id-2329 2329) + (text-id-2330 2330) + (text-id-2331 2331) + (text-id-2332 2332) + (text-id-2333 2333) + (text-id-2334 2334) + (text-id-2335 2335) + (text-id-2336 2336) + (text-id-2337 2337) + (text-id-2338 2338) + (text-id-2339 2339) + (text-id-2340 2340) + (text-id-2341 2341) + (text-id-2342 2342) + (text-id-2343 2343) + (text-id-2344 2344) + (text-id-2345 2345) + (text-id-2346 2346) + (text-id-2347 2347) + (text-id-2348 2348) + (text-id-2349 2349) + (text-id-2350 2350) + (text-id-2351 2351) + (text-id-2352 2352) + (text-id-2353 2353) + (text-id-2354 2354) + (text-id-2355 2355) + (text-id-2356 2356) + (text-id-2357 2357) + (text-id-2358 2358) + (text-id-2359 2359) + (text-id-2360 2360) + (text-id-2361 2361) + (text-id-2362 2362) + (text-id-2363 2363) + (text-id-2364 2364) + (text-id-2365 2365) + (text-id-2366 2366) + (text-id-2367 2367) + (text-id-2368 2368) + (text-id-2369 2369) + (text-id-2370 2370) + (text-id-2371 2371) + (text-id-2372 2372) + (text-id-2373 2373) + (text-id-2374 2374) + (text-id-2375 2375) + (text-id-2376 2376) + (text-id-2377 2377) + (text-id-2378 2378) + (text-id-2379 2379) + (text-id-2380 2380) + (text-id-2381 2381) + (text-id-2382 2382) + (text-id-2383 2383) + (text-id-2384 2384) + (text-id-2385 2385) + (text-id-2386 2386) + (text-id-2387 2387) + (text-id-2388 2388) + (text-id-2389 2389) + (text-id-2390 2390) + (text-id-2391 2391) + (text-id-2392 2392) + (text-id-2393 2393) + (text-id-2394 2394) + (text-id-2395 2395) + (text-id-2396 2396) + (text-id-2397 2397) + (text-id-2398 2398) + (text-id-2399 2399) + (text-id-2400 2400) + (text-id-2401 2401) + (text-id-2402 2402) + (text-id-2403 2403) + (text-id-2404 2404) + (text-id-2405 2405) + (text-id-2406 2406) + (text-id-2407 2407) + (text-id-2408 2408) + (text-id-2409 2409) + (text-id-2410 2410) + (text-id-2411 2411) + (text-id-2412 2412) + (text-id-2413 2413) + (text-id-2414 2414) + (text-id-2415 2415) + (text-id-2416 2416) + (text-id-2417 2417) + (text-id-2418 2418) + (text-id-2419 2419) + (text-id-2420 2420) + (text-id-2421 2421) + (text-id-2422 2422) + (text-id-2423 2423) + (text-id-2424 2424) + (text-id-2425 2425) + (text-id-2426 2426) + (text-id-2427 2427) + (text-id-2428 2428) + (text-id-2429 2429) + (text-id-2430 2430) + (text-id-2431 2431) + (text-id-2432 2432) + (text-id-2433 2433) + (text-id-2434 2434) + (text-id-2435 2435) + (text-id-2436 2436) + (text-id-2437 2437) + (text-id-2438 2438) + (text-id-2439 2439) + (text-id-2440 2440) + (text-id-2441 2441) + (text-id-2442 2442) + (text-id-2443 2443) + (text-id-2444 2444) + (text-id-2445 2445) + (text-id-2446 2446) + (text-id-2447 2447) + (text-id-2448 2448) + (text-id-2449 2449) + (text-id-2450 2450) + (text-id-2451 2451) + (text-id-2452 2452) + (text-id-2453 2453) + (text-id-2454 2454) + (text-id-2455 2455) + (text-id-2456 2456) + (text-id-2457 2457) + (text-id-2458 2458) + (text-id-2459 2459) + (text-id-2460 2460) + (text-id-2461 2461) + (text-id-2462 2462) + (text-id-2463 2463) + (text-id-2464 2464) + (text-id-2465 2465) + (text-id-2466 2466) + (text-id-2467 2467) + (text-id-2468 2468) + (text-id-2469 2469) + (text-id-2470 2470) + (text-id-2471 2471) + (text-id-2472 2472) + (text-id-2473 2473) + (text-id-2474 2474) + (text-id-2475 2475) + (text-id-2476 2476) + (text-id-2477 2477) + (text-id-2478 2478) + (text-id-2479 2479) + (text-id-2480 2480) + (text-id-2481 2481) + (text-id-2482 2482) + (text-id-2483 2483) + (text-id-2484 2484) + (text-id-2485 2485) + (text-id-2486 2486) + (text-id-2487 2487) + (text-id-2488 2488) + (text-id-2489 2489) + (text-id-2490 2490) + (text-id-2491 2491) + (text-id-2492 2492) + (text-id-2493 2493) + (text-id-2494 2494) + (text-id-2495 2495) + (text-id-2496 2496) + (text-id-2497 2497) + (text-id-2498 2498) + (text-id-2499 2499) + (text-id-2500 2500) + (text-id-2501 2501) + (text-id-2502 2502) + (text-id-2503 2503) + (text-id-2504 2504) + (text-id-2505 2505) + (text-id-2506 2506) + (text-id-2507 2507) + (text-id-2508 2508) + (text-id-2509 2509) + (text-id-2510 2510) + (text-id-2511 2511) + (text-id-2512 2512) (text-id-2513 2513) - + (text-id-2514 2514) + (text-id-2515 2515) + (text-id-2516 2516) + (text-id-2517 2517) + (text-id-2518 2518) + (text-id-2519 2519) + (text-id-2520 2520) + (text-id-2521 2521) + (text-id-2522 2522) + (text-id-2523 2523) + (text-id-2524 2524) + (text-id-2525 2525) + (text-id-2526 2526) + (text-id-2527 2527) + (text-id-2528 2528) + (text-id-2529 2529) + (text-id-2530 2530) + (text-id-2531 2531) + (text-id-2532 2532) + (text-id-2533 2533) + (text-id-2534 2534) + (text-id-2535 2535) + (text-id-2536 2536) + (text-id-2537 2537) + (text-id-2538 2538) + (text-id-2539 2539) + (text-id-2540 2540) + (text-id-2541 2541) + (text-id-2542 2542) + (text-id-2543 2543) + (text-id-2544 2544) + (text-id-2545 2545) + (text-id-2546 2546) + (text-id-2547 2547) + (text-id-2548 2548) + (text-id-2549 2549) + (text-id-2550 2550) + (text-id-2551 2551) + (text-id-2552 2552) + (text-id-2553 2553) + (text-id-2554 2554) + (text-id-2555 2555) + (text-id-2556 2556) + (text-id-2557 2557) + (text-id-2558 2558) + (text-id-2559 2559) + (text-id-2560 2560) + (text-id-2561 2561) + (text-id-2562 2562) + (text-id-2563 2563) + (text-id-2564 2564) + (text-id-2565 2565) + (text-id-2566 2566) + (text-id-2567 2567) + (text-id-2568 2568) + (text-id-2569 2569) + (text-id-2570 2570) + (text-id-2571 2571) + (text-id-2572 2572) + (text-id-2573 2573) + (text-id-2574 2574) + (text-id-2575 2575) + (text-id-2576 2576) + (text-id-2577 2577) + (text-id-2578 2578) + (text-id-2579 2579) + (text-id-2580 2580) + (text-id-2581 2581) + (text-id-2582 2582) + (text-id-2583 2583) + (text-id-2584 2584) + (text-id-2585 2585) + (text-id-2586 2586) + (text-id-2587 2587) + (text-id-2588 2588) + (text-id-2589 2589) + (text-id-2590 2590) + (text-id-2591 2591) + (text-id-2592 2592) + (text-id-2593 2593) + (text-id-2594 2594) + (text-id-2595 2595) + (text-id-2596 2596) + (text-id-2597 2597) + (text-id-2598 2598) + (text-id-2599 2599) + (text-id-2600 2600) + (text-id-2601 2601) + (text-id-2602 2602) + (text-id-2603 2603) + (text-id-2604 2604) + (text-id-2605 2605) + (text-id-2606 2606) + (text-id-2607 2607) + (text-id-2608 2608) + (text-id-2609 2609) + (text-id-2610 2610) + (text-id-2611 2611) + (text-id-2612 2612) + (text-id-2613 2613) + (text-id-2614 2614) + (text-id-2615 2615) + (text-id-2616 2616) + (text-id-2617 2617) + (text-id-2618 2618) + (text-id-2619 2619) + (text-id-2620 2620) + (text-id-2621 2621) + (text-id-2622 2622) + (text-id-2623 2623) + (text-id-2624 2624) + (text-id-2625 2625) + (text-id-2626 2626) + (text-id-2627 2627) + (text-id-2628 2628) + (text-id-2629 2629) + (text-id-2630 2630) + (text-id-2631 2631) + (text-id-2632 2632) + (text-id-2633 2633) + (text-id-2634 2634) + (text-id-2635 2635) + (text-id-2636 2636) + (text-id-2637 2637) + (text-id-2638 2638) + (text-id-2639 2639) + (text-id-2640 2640) + (text-id-2641 2641) + (text-id-2642 2642) + (text-id-2643 2643) + (text-id-2644 2644) + (text-id-2645 2645) + (text-id-2646 2646) + (text-id-2647 2647) + (text-id-2648 2648) + (text-id-2649 2649) + (text-id-2650 2650) + (text-id-2651 2651) + (text-id-2652 2652) + (text-id-2653 2653) + (text-id-2654 2654) + (text-id-2655 2655) + (text-id-2656 2656) + (text-id-2657 2657) + (text-id-2658 2658) + (text-id-2659 2659) + (text-id-2660 2660) + (text-id-2661 2661) + (text-id-2662 2662) + (text-id-2663 2663) + (text-id-2664 2664) + (text-id-2665 2665) + (text-id-2666 2666) + (text-id-2667 2667) + (text-id-2668 2668) + (text-id-2669 2669) + (text-id-2670 2670) + (text-id-2671 2671) + (text-id-2672 2672) + (text-id-2673 2673) + (text-id-2674 2674) + (text-id-2675 2675) + (text-id-2676 2676) + (text-id-2677 2677) + (text-id-2678 2678) + (text-id-2679 2679) + (text-id-2680 2680) + (text-id-2681 2681) + (text-id-2682 2682) + (text-id-2683 2683) + (text-id-2684 2684) + (text-id-2685 2685) + (text-id-2686 2686) + (text-id-2687 2687) + (text-id-2688 2688) + (text-id-2689 2689) + (text-id-2690 2690) + (text-id-2691 2691) + (text-id-2692 2692) + (text-id-2693 2693) + (text-id-2694 2694) + (text-id-2695 2695) + (text-id-2696 2696) + (text-id-2697 2697) + (text-id-2698 2698) + (text-id-2699 2699) + (text-id-2700 2700) + (text-id-2701 2701) + (text-id-2702 2702) + (text-id-2703 2703) + (text-id-2704 2704) + (text-id-2705 2705) + (text-id-2706 2706) + (text-id-2707 2707) + (text-id-2708 2708) + (text-id-2709 2709) + (text-id-2710 2710) + (text-id-2711 2711) + (text-id-2712 2712) + (text-id-2713 2713) + (text-id-2714 2714) + (text-id-2715 2715) + (text-id-2716 2716) + (text-id-2717 2717) + (text-id-2718 2718) + (text-id-2719 2719) + (text-id-2720 2720) + (text-id-2721 2721) + (text-id-2722 2722) + (text-id-2723 2723) + (text-id-2724 2724) + (text-id-2725 2725) + (text-id-2726 2726) + (text-id-2727 2727) + (text-id-2728 2728) + (text-id-2729 2729) + (text-id-2730 2730) + (text-id-2731 2731) + (text-id-2732 2732) + (text-id-2733 2733) + (text-id-2734 2734) + (text-id-2735 2735) + (text-id-2736 2736) + (text-id-2737 2737) + (text-id-2738 2738) + (text-id-2739 2739) + (text-id-2740 2740) + (text-id-2741 2741) + (text-id-2742 2742) + (text-id-2743 2743) + (text-id-2744 2744) + (text-id-2745 2745) + (text-id-2746 2746) + (text-id-2747 2747) + (text-id-2748 2748) + (text-id-2749 2749) + (text-id-2750 2750) + (text-id-2751 2751) + (text-id-2752 2752) + (text-id-2753 2753) + (text-id-2754 2754) + (text-id-2755 2755) + (text-id-2756 2756) + (text-id-2757 2757) + (text-id-2758 2758) + (text-id-2759 2759) + (text-id-2760 2760) + (text-id-2761 2761) + (text-id-2762 2762) + (text-id-2763 2763) + (text-id-2764 2764) + (text-id-2765 2765) + (text-id-2766 2766) + (text-id-2767 2767) + (text-id-2768 2768) + (text-id-2769 2769) + (text-id-2770 2770) + (text-id-2771 2771) + (text-id-2772 2772) + (text-id-2773 2773) + (text-id-2774 2774) + (text-id-2775 2775) + (text-id-2776 2776) + (text-id-2777 2777) + (text-id-2778 2778) + (text-id-2779 2779) + (text-id-2780 2780) + (text-id-2781 2781) + (text-id-2782 2782) + (text-id-2783 2783) + (text-id-2784 2784) + (text-id-2785 2785) + (text-id-2786 2786) + (text-id-2787 2787) + (text-id-2788 2788) + (text-id-2789 2789) + (text-id-2790 2790) + (text-id-2791 2791) + (text-id-2792 2792) + (text-id-2793 2793) + (text-id-2794 2794) + (text-id-2795 2795) + (text-id-2796 2796) + (text-id-2797 2797) + (text-id-2798 2798) + (text-id-2799 2799) + (text-id-2800 2800) + (text-id-2801 2801) + (text-id-2802 2802) + (text-id-2803 2803) + (text-id-2804 2804) + (text-id-2805 2805) + (text-id-2806 2806) + (text-id-2807 2807) + (text-id-2808 2808) + (text-id-2809 2809) + (text-id-2810 2810) + (text-id-2811 2811) + (text-id-2812 2812) + (text-id-2813 2813) + (text-id-2814 2814) + (text-id-2815 2815) + (text-id-2816 2816) + (text-id-2817 2817) + (text-id-2818 2818) + (text-id-2819 2819) + (text-id-2820 2820) + (text-id-2821 2821) + (text-id-2822 2822) + (text-id-2823 2823) + (text-id-2824 2824) + (text-id-2825 2825) + (text-id-2826 2826) + (text-id-2827 2827) + (text-id-2828 2828) + (text-id-2829 2829) + (text-id-2830 2830) + (text-id-2831 2831) + (text-id-2832 2832) (text-id-2833 2833) (text-id-2834 2834) (text-id-2835 2835) @@ -286,7 +2999,7 @@ (text-id-2838 2838) (text-id-2839 2839) (text-id-2840 2840) - + (text-id-2841 2841) (text-id-2842 2842) (text-id-2843 2843) (text-id-2844 2844) @@ -331,9 +3044,81 @@ (text-id-2883 2883) (text-id-2884 2884) (text-id-2885 2885) - (text-id-2886 2886) - + (text-id-2887 2887) + (text-id-2888 2888) + (text-id-2889 2889) + (text-id-2890 2890) + (text-id-2891 2891) + (text-id-2892 2892) + (text-id-2893 2893) + (text-id-2894 2894) + (text-id-2895 2895) + (text-id-2896 2896) + (text-id-2897 2897) + (text-id-2898 2898) + (text-id-2899 2899) + (text-id-2900 2900) + (text-id-2901 2901) + (text-id-2902 2902) + (text-id-2903 2903) + (text-id-2904 2904) + (text-id-2905 2905) + (text-id-2906 2906) + (text-id-2907 2907) + (text-id-2908 2908) + (text-id-2909 2909) + (text-id-2910 2910) + (text-id-2911 2911) + (text-id-2912 2912) + (text-id-2913 2913) + (text-id-2914 2914) + (text-id-2915 2915) + (text-id-2916 2916) + (text-id-2917 2917) + (text-id-2918 2918) + (text-id-2919 2919) + (text-id-2920 2920) + (text-id-2921 2921) + (text-id-2922 2922) + (text-id-2923 2923) + (text-id-2924 2924) + (text-id-2925 2925) + (text-id-2926 2926) + (text-id-2927 2927) + (text-id-2928 2928) + (text-id-2929 2929) + (text-id-2930 2930) + (text-id-2931 2931) + (text-id-2932 2932) + (text-id-2933 2933) + (text-id-2934 2934) + (text-id-2935 2935) + (text-id-2936 2936) + (text-id-2937 2937) + (text-id-2938 2938) + (text-id-2939 2939) + (text-id-2940 2940) + (text-id-2941 2941) + (text-id-2942 2942) + (text-id-2943 2943) + (text-id-2944 2944) + (text-id-2945 2945) + (text-id-2946 2946) + (text-id-2947 2947) + (text-id-2948 2948) + (text-id-2949 2949) + (text-id-2950 2950) + (text-id-2951 2951) + (text-id-2952 2952) + (text-id-2953 2953) + (text-id-2954 2954) + (text-id-2955 2955) + (text-id-2956 2956) + (text-id-2957 2957) + (text-id-2958 2958) + (text-id-2959 2959) + (text-id-2960 2960) (text-id-2961 2961) (text-id-2962 2962) (text-id-2963 2963) @@ -383,7 +3168,1366 @@ (text-id-3007 3007) (text-id-3008 3008) (text-id-3009 3009) - + (text-id-3010 3010) + (text-id-3011 3011) + (text-id-3012 3012) + (text-id-3013 3013) + (text-id-3014 3014) + (text-id-3015 3015) + (text-id-3016 3016) + (text-id-3017 3017) + (text-id-3018 3018) + (text-id-3019 3019) + (text-id-3020 3020) + (text-id-3021 3021) + (text-id-3022 3022) + (text-id-3023 3023) + (text-id-3024 3024) + (text-id-3025 3025) + (text-id-3026 3026) + (text-id-3027 3027) + (text-id-3028 3028) + (text-id-3029 3029) + (text-id-3030 3030) + (text-id-3031 3031) + (text-id-3032 3032) + (text-id-3033 3033) + (text-id-3034 3034) + (text-id-3035 3035) + (text-id-3036 3036) + (text-id-3037 3037) + (text-id-3038 3038) + (text-id-3039 3039) + (text-id-3040 3040) + (text-id-3041 3041) + (text-id-3042 3042) + (text-id-3043 3043) + (text-id-3044 3044) + (text-id-3045 3045) + (text-id-3046 3046) + (text-id-3047 3047) + (text-id-3048 3048) + (text-id-3049 3049) + (text-id-3050 3050) + (text-id-3051 3051) + (text-id-3052 3052) + (text-id-3053 3053) + (text-id-3054 3054) + (text-id-3055 3055) + (text-id-3056 3056) + (text-id-3057 3057) + (text-id-3058 3058) + (text-id-3059 3059) + (text-id-3060 3060) + (text-id-3061 3061) + (text-id-3062 3062) + (text-id-3063 3063) + (text-id-3064 3064) + (text-id-3065 3065) + (text-id-3066 3066) + (text-id-3067 3067) + (text-id-3068 3068) + (text-id-3069 3069) + (text-id-3070 3070) + (text-id-3071 3071) + (text-id-3072 3072) + (text-id-3073 3073) + (text-id-3074 3074) + (text-id-3075 3075) + (text-id-3076 3076) + (text-id-3077 3077) + (text-id-3078 3078) + (text-id-3079 3079) + (text-id-3080 3080) + (text-id-3081 3081) + (text-id-3082 3082) + (text-id-3083 3083) + (text-id-3084 3084) + (text-id-3085 3085) + (text-id-3086 3086) + (text-id-3087 3087) + (text-id-3088 3088) + (text-id-3089 3089) + (text-id-3090 3090) + (text-id-3091 3091) + (text-id-3092 3092) + (text-id-3093 3093) + (text-id-3094 3094) + (text-id-3095 3095) + (text-id-3096 3096) + (text-id-3097 3097) + (text-id-3098 3098) + (text-id-3099 3099) + (text-id-3100 3100) + (text-id-3101 3101) + (text-id-3102 3102) + (text-id-3103 3103) + (text-id-3104 3104) + (text-id-3105 3105) + (text-id-3106 3106) + (text-id-3107 3107) + (text-id-3108 3108) + (text-id-3109 3109) + (text-id-3110 3110) + (text-id-3111 3111) + (text-id-3112 3112) + (text-id-3113 3113) + (text-id-3114 3114) + (text-id-3115 3115) + (text-id-3116 3116) + (text-id-3117 3117) + (text-id-3118 3118) + (text-id-3119 3119) + (text-id-3120 3120) + (text-id-3121 3121) + (text-id-3122 3122) + (text-id-3123 3123) + (text-id-3124 3124) + (text-id-3125 3125) + (text-id-3126 3126) + (text-id-3127 3127) + (text-id-3128 3128) + (text-id-3129 3129) + (text-id-3130 3130) + (text-id-3131 3131) + (text-id-3132 3132) + (text-id-3133 3133) + (text-id-3134 3134) + (text-id-3135 3135) + (text-id-3136 3136) + (text-id-3137 3137) + (text-id-3138 3138) + (text-id-3139 3139) + (text-id-3140 3140) + (text-id-3141 3141) + (text-id-3142 3142) + (text-id-3143 3143) + (text-id-3144 3144) + (text-id-3145 3145) + (text-id-3146 3146) + (text-id-3147 3147) + (text-id-3148 3148) + (text-id-3149 3149) + (text-id-3150 3150) + (text-id-3151 3151) + (text-id-3152 3152) + (text-id-3153 3153) + (text-id-3154 3154) + (text-id-3155 3155) + (text-id-3156 3156) + (text-id-3157 3157) + (text-id-3158 3158) + (text-id-3159 3159) + (text-id-3160 3160) + (text-id-3161 3161) + (text-id-3162 3162) + (text-id-3163 3163) + (text-id-3164 3164) + (text-id-3165 3165) + (text-id-3166 3166) + (text-id-3167 3167) + (text-id-3168 3168) + (text-id-3169 3169) + (text-id-3170 3170) + (text-id-3171 3171) + (text-id-3172 3172) + (text-id-3173 3173) + (text-id-3174 3174) + (text-id-3175 3175) + (text-id-3176 3176) + (text-id-3177 3177) + (text-id-3178 3178) + (text-id-3179 3179) + (text-id-3180 3180) + (text-id-3181 3181) + (text-id-3182 3182) + (text-id-3183 3183) + (text-id-3184 3184) + (text-id-3185 3185) + (text-id-3186 3186) + (text-id-3187 3187) + (text-id-3188 3188) + (text-id-3189 3189) + (text-id-3190 3190) + (text-id-3191 3191) + (text-id-3192 3192) + (text-id-3193 3193) + (text-id-3194 3194) + (text-id-3195 3195) + (text-id-3196 3196) + (text-id-3197 3197) + (text-id-3198 3198) + (text-id-3199 3199) + (text-id-3200 3200) + (text-id-3201 3201) + (text-id-3202 3202) + (text-id-3203 3203) + (text-id-3204 3204) + (text-id-3205 3205) + (text-id-3206 3206) + (text-id-3207 3207) + (text-id-3208 3208) + (text-id-3209 3209) + (text-id-3210 3210) + (text-id-3211 3211) + (text-id-3212 3212) + (text-id-3213 3213) + (text-id-3214 3214) + (text-id-3215 3215) + (text-id-3216 3216) + (text-id-3217 3217) + (text-id-3218 3218) + (text-id-3219 3219) + (text-id-3220 3220) + (text-id-3221 3221) + (text-id-3222 3222) + (text-id-3223 3223) + (text-id-3224 3224) + (text-id-3225 3225) + (text-id-3226 3226) + (text-id-3227 3227) + (text-id-3228 3228) + (text-id-3229 3229) + (text-id-3230 3230) + (text-id-3231 3231) + (text-id-3232 3232) + (text-id-3233 3233) + (text-id-3234 3234) + (text-id-3235 3235) + (text-id-3236 3236) + (text-id-3237 3237) + (text-id-3238 3238) + (text-id-3239 3239) + (text-id-3240 3240) + (text-id-3241 3241) + (text-id-3242 3242) + (text-id-3243 3243) + (text-id-3244 3244) + (text-id-3245 3245) + (text-id-3246 3246) + (text-id-3247 3247) + (text-id-3248 3248) + (text-id-3249 3249) + (text-id-3250 3250) + (text-id-3251 3251) + (text-id-3252 3252) + (text-id-3253 3253) + (text-id-3254 3254) + (text-id-3255 3255) + (text-id-3256 3256) + (text-id-3257 3257) + (text-id-3258 3258) + (text-id-3259 3259) + (text-id-3260 3260) + (text-id-3261 3261) + (text-id-3262 3262) + (text-id-3263 3263) + (text-id-3264 3264) + (text-id-3265 3265) + (text-id-3266 3266) + (text-id-3267 3267) + (text-id-3268 3268) + (text-id-3269 3269) + (text-id-3270 3270) + (text-id-3271 3271) + (text-id-3272 3272) + (text-id-3273 3273) + (text-id-3274 3274) + (text-id-3275 3275) + (text-id-3276 3276) + (text-id-3277 3277) + (text-id-3278 3278) + (text-id-3279 3279) + (text-id-3280 3280) + (text-id-3281 3281) + (text-id-3282 3282) + (text-id-3283 3283) + (text-id-3284 3284) + (text-id-3285 3285) + (text-id-3286 3286) + (text-id-3287 3287) + (text-id-3288 3288) + (text-id-3289 3289) + (text-id-3290 3290) + (text-id-3291 3291) + (text-id-3292 3292) + (text-id-3293 3293) + (text-id-3294 3294) + (text-id-3295 3295) + (text-id-3296 3296) + (text-id-3297 3297) + (text-id-3298 3298) + (text-id-3299 3299) + (text-id-3300 3300) + (text-id-3301 3301) + (text-id-3302 3302) + (text-id-3303 3303) + (text-id-3304 3304) + (text-id-3305 3305) + (text-id-3306 3306) + (text-id-3307 3307) + (text-id-3308 3308) + (text-id-3309 3309) + (text-id-3310 3310) + (text-id-3311 3311) + (text-id-3312 3312) + (text-id-3313 3313) + (text-id-3314 3314) + (text-id-3315 3315) + (text-id-3316 3316) + (text-id-3317 3317) + (text-id-3318 3318) + (text-id-3319 3319) + (text-id-3320 3320) + (text-id-3321 3321) + (text-id-3322 3322) + (text-id-3323 3323) + (text-id-3324 3324) + (text-id-3325 3325) + (text-id-3326 3326) + (text-id-3327 3327) + (text-id-3328 3328) + (text-id-3329 3329) + (text-id-3330 3330) + (text-id-3331 3331) + (text-id-3332 3332) + (text-id-3333 3333) + (text-id-3334 3334) + (text-id-3335 3335) + (text-id-3336 3336) + (text-id-3337 3337) + (text-id-3338 3338) + (text-id-3339 3339) + (text-id-3340 3340) + (text-id-3341 3341) + (text-id-3342 3342) + (text-id-3343 3343) + (text-id-3344 3344) + (text-id-3345 3345) + (text-id-3346 3346) + (text-id-3347 3347) + (text-id-3348 3348) + (text-id-3349 3349) + (text-id-3350 3350) + (text-id-3351 3351) + (text-id-3352 3352) + (text-id-3353 3353) + (text-id-3354 3354) + (text-id-3355 3355) + (text-id-3356 3356) + (text-id-3357 3357) + (text-id-3358 3358) + (text-id-3359 3359) + (text-id-3360 3360) + (text-id-3361 3361) + (text-id-3362 3362) + (text-id-3363 3363) + (text-id-3364 3364) + (text-id-3365 3365) + (text-id-3366 3366) + (text-id-3367 3367) + (text-id-3368 3368) + (text-id-3369 3369) + (text-id-3370 3370) + (text-id-3371 3371) + (text-id-3372 3372) + (text-id-3373 3373) + (text-id-3374 3374) + (text-id-3375 3375) + (text-id-3376 3376) + (text-id-3377 3377) + (text-id-3378 3378) + (text-id-3379 3379) + (text-id-3380 3380) + (text-id-3381 3381) + (text-id-3382 3382) + (text-id-3383 3383) + (text-id-3384 3384) + (text-id-3385 3385) + (text-id-3386 3386) + (text-id-3387 3387) + (text-id-3388 3388) + (text-id-3389 3389) + (text-id-3390 3390) + (text-id-3391 3391) + (text-id-3392 3392) + (text-id-3393 3393) + (text-id-3394 3394) + (text-id-3395 3395) + (text-id-3396 3396) + (text-id-3397 3397) + (text-id-3398 3398) + (text-id-3399 3399) + (text-id-3400 3400) + (text-id-3401 3401) + (text-id-3402 3402) + (text-id-3403 3403) + (text-id-3404 3404) + (text-id-3405 3405) + (text-id-3406 3406) + (text-id-3407 3407) + (text-id-3408 3408) + (text-id-3409 3409) + (text-id-3410 3410) + (text-id-3411 3411) + (text-id-3412 3412) + (text-id-3413 3413) + (text-id-3414 3414) + (text-id-3415 3415) + (text-id-3416 3416) + (text-id-3417 3417) + (text-id-3418 3418) + (text-id-3419 3419) + (text-id-3420 3420) + (text-id-3421 3421) + (text-id-3422 3422) + (text-id-3423 3423) + (text-id-3424 3424) + (text-id-3425 3425) + (text-id-3426 3426) + (text-id-3427 3427) + (text-id-3428 3428) + (text-id-3429 3429) + (text-id-3430 3430) + (text-id-3431 3431) + (text-id-3432 3432) + (text-id-3433 3433) + (text-id-3434 3434) + (text-id-3435 3435) + (text-id-3436 3436) + (text-id-3437 3437) + (text-id-3438 3438) + (text-id-3439 3439) + (text-id-3440 3440) + (text-id-3441 3441) + (text-id-3442 3442) + (text-id-3443 3443) + (text-id-3444 3444) + (text-id-3445 3445) + (text-id-3446 3446) + (text-id-3447 3447) + (text-id-3448 3448) + (text-id-3449 3449) + (text-id-3450 3450) + (text-id-3451 3451) + (text-id-3452 3452) + (text-id-3453 3453) + (text-id-3454 3454) + (text-id-3455 3455) + (text-id-3456 3456) + (text-id-3457 3457) + (text-id-3458 3458) + (text-id-3459 3459) + (text-id-3460 3460) + (text-id-3461 3461) + (text-id-3462 3462) + (text-id-3463 3463) + (text-id-3464 3464) + (text-id-3465 3465) + (text-id-3466 3466) + (text-id-3467 3467) + (text-id-3468 3468) + (text-id-3469 3469) + (text-id-3470 3470) + (text-id-3471 3471) + (text-id-3472 3472) + (text-id-3473 3473) + (text-id-3474 3474) + (text-id-3475 3475) + (text-id-3476 3476) + (text-id-3477 3477) + (text-id-3478 3478) + (text-id-3479 3479) + (text-id-3480 3480) + (text-id-3481 3481) + (text-id-3482 3482) + (text-id-3483 3483) + (text-id-3484 3484) + (text-id-3485 3485) + (text-id-3486 3486) + (text-id-3487 3487) + (text-id-3488 3488) + (text-id-3489 3489) + (text-id-3490 3490) + (text-id-3491 3491) + (text-id-3492 3492) + (text-id-3493 3493) + (text-id-3494 3494) + (text-id-3495 3495) + (text-id-3496 3496) + (text-id-3497 3497) + (text-id-3498 3498) + (text-id-3499 3499) + (text-id-3500 3500) + (text-id-3501 3501) + (text-id-3502 3502) + (text-id-3503 3503) + (text-id-3504 3504) + (text-id-3505 3505) + (text-id-3506 3506) + (text-id-3507 3507) + (text-id-3508 3508) + (text-id-3509 3509) + (text-id-3510 3510) + (text-id-3511 3511) + (text-id-3512 3512) + (text-id-3513 3513) + (text-id-3514 3514) + (text-id-3515 3515) + (text-id-3516 3516) + (text-id-3517 3517) + (text-id-3518 3518) + (text-id-3519 3519) + (text-id-3520 3520) + (text-id-3521 3521) + (text-id-3522 3522) + (text-id-3523 3523) + (text-id-3524 3524) + (text-id-3525 3525) + (text-id-3526 3526) + (text-id-3527 3527) + (text-id-3528 3528) + (text-id-3529 3529) + (text-id-3530 3530) + (text-id-3531 3531) + (text-id-3532 3532) + (text-id-3533 3533) + (text-id-3534 3534) + (text-id-3535 3535) + (text-id-3536 3536) + (text-id-3537 3537) + (text-id-3538 3538) + (text-id-3539 3539) + (text-id-3540 3540) + (text-id-3541 3541) + (text-id-3542 3542) + (text-id-3543 3543) + (text-id-3544 3544) + (text-id-3545 3545) + (text-id-3546 3546) + (text-id-3547 3547) + (text-id-3548 3548) + (text-id-3549 3549) + (text-id-3550 3550) + (text-id-3551 3551) + (text-id-3552 3552) + (text-id-3553 3553) + (text-id-3554 3554) + (text-id-3555 3555) + (text-id-3556 3556) + (text-id-3557 3557) + (text-id-3558 3558) + (text-id-3559 3559) + (text-id-3560 3560) + (text-id-3561 3561) + (text-id-3562 3562) + (text-id-3563 3563) + (text-id-3564 3564) + (text-id-3565 3565) + (text-id-3566 3566) + (text-id-3567 3567) + (text-id-3568 3568) + (text-id-3569 3569) + (text-id-3570 3570) + (text-id-3571 3571) + (text-id-3572 3572) + (text-id-3573 3573) + (text-id-3574 3574) + (text-id-3575 3575) + (text-id-3576 3576) + (text-id-3577 3577) + (text-id-3578 3578) + (text-id-3579 3579) + (text-id-3580 3580) + (text-id-3581 3581) + (text-id-3582 3582) + (text-id-3583 3583) + (text-id-3584 3584) + (text-id-3585 3585) + (text-id-3586 3586) + (text-id-3587 3587) + (text-id-3588 3588) + (text-id-3589 3589) + (text-id-3590 3590) + (text-id-3591 3591) + (text-id-3592 3592) + (text-id-3593 3593) + (text-id-3594 3594) + (text-id-3595 3595) + (text-id-3596 3596) + (text-id-3597 3597) + (text-id-3598 3598) + (text-id-3599 3599) + (text-id-3600 3600) + (text-id-3601 3601) + (text-id-3602 3602) + (text-id-3603 3603) + (text-id-3604 3604) + (text-id-3605 3605) + (text-id-3606 3606) + (text-id-3607 3607) + (text-id-3608 3608) + (text-id-3609 3609) + (text-id-3610 3610) + (text-id-3611 3611) + (text-id-3612 3612) + (text-id-3613 3613) + (text-id-3614 3614) + (text-id-3615 3615) + (text-id-3616 3616) + (text-id-3617 3617) + (text-id-3618 3618) + (text-id-3619 3619) + (text-id-3620 3620) + (text-id-3621 3621) + (text-id-3622 3622) + (text-id-3623 3623) + (text-id-3624 3624) + (text-id-3625 3625) + (text-id-3626 3626) + (text-id-3627 3627) + (text-id-3628 3628) + (text-id-3629 3629) + (text-id-3630 3630) + (text-id-3631 3631) + (text-id-3632 3632) + (text-id-3633 3633) + (text-id-3634 3634) + (text-id-3635 3635) + (text-id-3636 3636) + (text-id-3637 3637) + (text-id-3638 3638) + (text-id-3639 3639) + (text-id-3640 3640) + (text-id-3641 3641) + (text-id-3642 3642) + (text-id-3643 3643) + (text-id-3644 3644) + (text-id-3645 3645) + (text-id-3646 3646) + (text-id-3647 3647) + (text-id-3648 3648) + (text-id-3649 3649) + (text-id-3650 3650) + (text-id-3651 3651) + (text-id-3652 3652) + (text-id-3653 3653) + (text-id-3654 3654) + (text-id-3655 3655) + (text-id-3656 3656) + (text-id-3657 3657) + (text-id-3658 3658) + (text-id-3659 3659) + (text-id-3660 3660) + (text-id-3661 3661) + (text-id-3662 3662) + (text-id-3663 3663) + (text-id-3664 3664) + (text-id-3665 3665) + (text-id-3666 3666) + (text-id-3667 3667) + (text-id-3668 3668) + (text-id-3669 3669) + (text-id-3670 3670) + (text-id-3671 3671) + (text-id-3672 3672) + (text-id-3673 3673) + (text-id-3674 3674) + (text-id-3675 3675) + (text-id-3676 3676) + (text-id-3677 3677) + (text-id-3678 3678) + (text-id-3679 3679) + (text-id-3680 3680) + (text-id-3681 3681) + (text-id-3682 3682) + (text-id-3683 3683) + (text-id-3684 3684) + (text-id-3685 3685) + (text-id-3686 3686) + (text-id-3687 3687) + (text-id-3688 3688) + (text-id-3689 3689) + (text-id-3690 3690) + (text-id-3691 3691) + (text-id-3692 3692) + (text-id-3693 3693) + (text-id-3694 3694) + (text-id-3695 3695) + (text-id-3696 3696) + (text-id-3697 3697) + (text-id-3698 3698) + (text-id-3699 3699) + (text-id-3700 3700) + (text-id-3701 3701) + (text-id-3702 3702) + (text-id-3703 3703) + (text-id-3704 3704) + (text-id-3705 3705) + (text-id-3706 3706) + (text-id-3707 3707) + (text-id-3708 3708) + (text-id-3709 3709) + (text-id-3710 3710) + (text-id-3711 3711) + (text-id-3712 3712) + (text-id-3713 3713) + (text-id-3714 3714) + (text-id-3715 3715) + (text-id-3716 3716) + (text-id-3717 3717) + (text-id-3718 3718) + (text-id-3719 3719) + (text-id-3720 3720) + (text-id-3721 3721) + (text-id-3722 3722) + (text-id-3723 3723) + (text-id-3724 3724) + (text-id-3725 3725) + (text-id-3726 3726) + (text-id-3727 3727) + (text-id-3728 3728) + (text-id-3729 3729) + (text-id-3730 3730) + (text-id-3731 3731) + (text-id-3732 3732) + (text-id-3733 3733) + (text-id-3734 3734) + (text-id-3735 3735) + (text-id-3736 3736) + (text-id-3737 3737) + (text-id-3738 3738) + (text-id-3739 3739) + (text-id-3740 3740) + (text-id-3741 3741) + (text-id-3742 3742) + (text-id-3743 3743) + (text-id-3744 3744) + (text-id-3745 3745) + (text-id-3746 3746) + (text-id-3747 3747) + (text-id-3748 3748) + (text-id-3749 3749) + (text-id-3750 3750) + (text-id-3751 3751) + (text-id-3752 3752) + (text-id-3753 3753) + (text-id-3754 3754) + (text-id-3755 3755) + (text-id-3756 3756) + (text-id-3757 3757) + (text-id-3758 3758) + (text-id-3759 3759) + (text-id-3760 3760) + (text-id-3761 3761) + (text-id-3762 3762) + (text-id-3763 3763) + (text-id-3764 3764) + (text-id-3765 3765) + (text-id-3766 3766) + (text-id-3767 3767) + (text-id-3768 3768) + (text-id-3769 3769) + (text-id-3770 3770) + (text-id-3771 3771) + (text-id-3772 3772) + (text-id-3773 3773) + (text-id-3774 3774) + (text-id-3775 3775) + (text-id-3776 3776) + (text-id-3777 3777) + (text-id-3778 3778) + (text-id-3779 3779) + (text-id-3780 3780) + (text-id-3781 3781) + (text-id-3782 3782) + (text-id-3783 3783) + (text-id-3784 3784) + (text-id-3785 3785) + (text-id-3786 3786) + (text-id-3787 3787) + (text-id-3788 3788) + (text-id-3789 3789) + (text-id-3790 3790) + (text-id-3791 3791) + (text-id-3792 3792) + (text-id-3793 3793) + (text-id-3794 3794) + (text-id-3795 3795) + (text-id-3796 3796) + (text-id-3797 3797) + (text-id-3798 3798) + (text-id-3799 3799) + (text-id-3800 3800) + (text-id-3801 3801) + (text-id-3802 3802) + (text-id-3803 3803) + (text-id-3804 3804) + (text-id-3805 3805) + (text-id-3806 3806) + (text-id-3807 3807) + (text-id-3808 3808) + (text-id-3809 3809) + (text-id-3810 3810) + (text-id-3811 3811) + (text-id-3812 3812) + (text-id-3813 3813) + (text-id-3814 3814) + (text-id-3815 3815) + (text-id-3816 3816) + (text-id-3817 3817) + (text-id-3818 3818) + (text-id-3819 3819) + (text-id-3820 3820) + (text-id-3821 3821) + (text-id-3822 3822) + (text-id-3823 3823) + (text-id-3824 3824) + (text-id-3825 3825) + (text-id-3826 3826) + (text-id-3827 3827) + (text-id-3828 3828) + (text-id-3829 3829) + (text-id-3830 3830) + (text-id-3831 3831) + (text-id-3832 3832) + (text-id-3833 3833) + (text-id-3834 3834) + (text-id-3835 3835) + (text-id-3836 3836) + (text-id-3837 3837) + (text-id-3838 3838) + (text-id-3839 3839) + (text-id-3840 3840) + (text-id-3841 3841) + (text-id-3842 3842) + (text-id-3843 3843) + (text-id-3844 3844) + (text-id-3845 3845) + (text-id-3846 3846) + (text-id-3847 3847) + (text-id-3848 3848) + (text-id-3849 3849) + (text-id-3850 3850) + (text-id-3851 3851) + (text-id-3852 3852) + (text-id-3853 3853) + (text-id-3854 3854) + (text-id-3855 3855) + (text-id-3856 3856) + (text-id-3857 3857) + (text-id-3858 3858) + (text-id-3859 3859) + (text-id-3860 3860) + (text-id-3861 3861) + (text-id-3862 3862) + (text-id-3863 3863) + (text-id-3864 3864) + (text-id-3865 3865) + (text-id-3866 3866) + (text-id-3867 3867) + (text-id-3868 3868) + (text-id-3869 3869) + (text-id-3870 3870) + (text-id-3871 3871) + (text-id-3872 3872) + (text-id-3873 3873) + (text-id-3874 3874) + (text-id-3875 3875) + (text-id-3876 3876) + (text-id-3877 3877) + (text-id-3878 3878) + (text-id-3879 3879) + (text-id-3880 3880) + (text-id-3881 3881) + (text-id-3882 3882) + (text-id-3883 3883) + (text-id-3884 3884) + (text-id-3885 3885) + (text-id-3886 3886) + (text-id-3887 3887) + (text-id-3888 3888) + (text-id-3889 3889) + (text-id-3890 3890) + (text-id-3891 3891) + (text-id-3892 3892) + (text-id-3893 3893) + (text-id-3894 3894) + (text-id-3895 3895) + (text-id-3896 3896) + (text-id-3897 3897) + (text-id-3898 3898) + (text-id-3899 3899) + (text-id-3900 3900) + (text-id-3901 3901) + (text-id-3902 3902) + (text-id-3903 3903) + (text-id-3904 3904) + (text-id-3905 3905) + (text-id-3906 3906) + (text-id-3907 3907) + (text-id-3908 3908) + (text-id-3909 3909) + (text-id-3910 3910) + (text-id-3911 3911) + (text-id-3912 3912) + (text-id-3913 3913) + (text-id-3914 3914) + (text-id-3915 3915) + (text-id-3916 3916) + (text-id-3917 3917) + (text-id-3918 3918) + (text-id-3919 3919) + (text-id-3920 3920) + (text-id-3921 3921) + (text-id-3922 3922) + (text-id-3923 3923) + (text-id-3924 3924) + (text-id-3925 3925) + (text-id-3926 3926) + (text-id-3927 3927) + (text-id-3928 3928) + (text-id-3929 3929) + (text-id-3930 3930) + (text-id-3931 3931) + (text-id-3932 3932) + (text-id-3933 3933) + (text-id-3934 3934) + (text-id-3935 3935) + (text-id-3936 3936) + (text-id-3937 3937) + (text-id-3938 3938) + (text-id-3939 3939) + (text-id-3940 3940) + (text-id-3941 3941) + (text-id-3942 3942) + (text-id-3943 3943) + (text-id-3944 3944) + (text-id-3945 3945) + (text-id-3946 3946) + (text-id-3947 3947) + (text-id-3948 3948) + (text-id-3949 3949) + (text-id-3950 3950) + (text-id-3951 3951) + (text-id-3952 3952) + (text-id-3953 3953) + (text-id-3954 3954) + (text-id-3955 3955) + (text-id-3956 3956) + (text-id-3957 3957) + (text-id-3958 3958) + (text-id-3959 3959) + (text-id-3960 3960) + (text-id-3961 3961) + (text-id-3962 3962) + (text-id-3963 3963) + (text-id-3964 3964) + (text-id-3965 3965) + (text-id-3966 3966) + (text-id-3967 3967) + (text-id-3968 3968) + (text-id-3969 3969) + (text-id-3970 3970) + (text-id-3971 3971) + (text-id-3972 3972) + (text-id-3973 3973) + (text-id-3974 3974) + (text-id-3975 3975) + (text-id-3976 3976) + (text-id-3977 3977) + (text-id-3978 3978) + (text-id-3979 3979) + (text-id-3980 3980) + (text-id-3981 3981) + (text-id-3982 3982) + (text-id-3983 3983) + (text-id-3984 3984) + (text-id-3985 3985) + (text-id-3986 3986) + (text-id-3987 3987) + (text-id-3988 3988) + (text-id-3989 3989) + (text-id-3990 3990) + (text-id-3991 3991) + (text-id-3992 3992) + (text-id-3993 3993) + (text-id-3994 3994) + (text-id-3995 3995) + (text-id-3996 3996) + (text-id-3997 3997) + (text-id-3998 3998) + (text-id-3999 3999) + (text-id-4000 4000) + (text-id-4001 4001) + (text-id-4002 4002) + (text-id-4003 4003) + (text-id-4004 4004) + (text-id-4005 4005) + (text-id-4006 4006) + (text-id-4007 4007) + (text-id-4008 4008) + (text-id-4009 4009) + (text-id-4010 4010) + (text-id-4011 4011) + (text-id-4012 4012) + (text-id-4013 4013) + (text-id-4014 4014) + (text-id-4015 4015) + (text-id-4016 4016) + (text-id-4017 4017) + (text-id-4018 4018) + (text-id-4019 4019) + (text-id-4020 4020) + (text-id-4021 4021) + (text-id-4022 4022) + (text-id-4023 4023) + (text-id-4024 4024) + (text-id-4025 4025) + (text-id-4026 4026) + (text-id-4027 4027) + (text-id-4028 4028) + (text-id-4029 4029) + (text-id-4030 4030) + (text-id-4031 4031) + (text-id-4032 4032) + (text-id-4033 4033) + (text-id-4034 4034) + (text-id-4035 4035) + (text-id-4036 4036) + (text-id-4037 4037) + (text-id-4038 4038) + (text-id-4039 4039) + (text-id-4040 4040) + (text-id-4041 4041) + (text-id-4042 4042) + (text-id-4043 4043) + (text-id-4044 4044) + (text-id-4045 4045) + (text-id-4046 4046) + (text-id-4047 4047) + (text-id-4048 4048) + (text-id-4049 4049) + (text-id-4050 4050) + (text-id-4051 4051) + (text-id-4052 4052) + (text-id-4053 4053) + (text-id-4054 4054) + (text-id-4055 4055) + (text-id-4056 4056) + (text-id-4057 4057) + (text-id-4058 4058) + (text-id-4059 4059) + (text-id-4060 4060) + (text-id-4061 4061) + (text-id-4062 4062) + (text-id-4063 4063) + (text-id-4064 4064) + (text-id-4065 4065) + (text-id-4066 4066) + (text-id-4067 4067) + (text-id-4068 4068) + (text-id-4069 4069) + (text-id-4070 4070) + (text-id-4071 4071) + (text-id-4072 4072) + (text-id-4073 4073) + (text-id-4074 4074) + (text-id-4075 4075) + (text-id-4076 4076) + (text-id-4077 4077) + (text-id-4078 4078) + (text-id-4079 4079) + (text-id-4080 4080) + (text-id-4081 4081) + (text-id-4082 4082) + (text-id-4083 4083) + (text-id-4084 4084) + (text-id-4085 4085) + (text-id-4086 4086) + (text-id-4087 4087) + (text-id-4088 4088) + (text-id-4089 4089) + (text-id-4090 4090) + (text-id-4091 4091) + (text-id-4092 4092) + (text-id-4093 4093) + (text-id-4094 4094) + (text-id-4095 4095) + (text-id-4096 4096) + (text-id-4097 4097) + (text-id-4098 4098) + (text-id-4099 4099) + (text-id-4100 4100) + (text-id-4101 4101) + (text-id-4102 4102) + (text-id-4103 4103) + (text-id-4104 4104) + (text-id-4105 4105) + (text-id-4106 4106) + (text-id-4107 4107) + (text-id-4108 4108) + (text-id-4109 4109) + (text-id-4110 4110) + (text-id-4111 4111) + (text-id-4112 4112) + (text-id-4113 4113) + (text-id-4114 4114) + (text-id-4115 4115) + (text-id-4116 4116) + (text-id-4117 4117) + (text-id-4118 4118) + (text-id-4119 4119) + (text-id-4120 4120) + (text-id-4121 4121) + (text-id-4122 4122) + (text-id-4123 4123) + (text-id-4124 4124) + (text-id-4125 4125) + (text-id-4126 4126) + (text-id-4127 4127) + (text-id-4128 4128) + (text-id-4129 4129) + (text-id-4130 4130) + (text-id-4131 4131) + (text-id-4132 4132) + (text-id-4133 4133) + (text-id-4134 4134) + (text-id-4135 4135) + (text-id-4136 4136) + (text-id-4137 4137) + (text-id-4138 4138) + (text-id-4139 4139) + (text-id-4140 4140) + (text-id-4141 4141) + (text-id-4142 4142) + (text-id-4143 4143) + (text-id-4144 4144) + (text-id-4145 4145) + (text-id-4146 4146) + (text-id-4147 4147) + (text-id-4148 4148) + (text-id-4149 4149) + (text-id-4150 4150) + (text-id-4151 4151) + (text-id-4152 4152) + (text-id-4153 4153) + (text-id-4154 4154) + (text-id-4155 4155) + (text-id-4156 4156) + (text-id-4157 4157) + (text-id-4158 4158) + (text-id-4159 4159) + (text-id-4160 4160) + (text-id-4161 4161) + (text-id-4162 4162) + (text-id-4163 4163) + (text-id-4164 4164) + (text-id-4165 4165) + (text-id-4166 4166) + (text-id-4167 4167) + (text-id-4168 4168) + (text-id-4169 4169) + (text-id-4170 4170) + (text-id-4171 4171) + (text-id-4172 4172) + (text-id-4173 4173) + (text-id-4174 4174) + (text-id-4175 4175) + (text-id-4176 4176) + (text-id-4177 4177) + (text-id-4178 4178) + (text-id-4179 4179) + (text-id-4180 4180) + (text-id-4181 4181) + (text-id-4182 4182) + (text-id-4183 4183) + (text-id-4184 4184) + (text-id-4185 4185) + (text-id-4186 4186) + (text-id-4187 4187) + (text-id-4188 4188) + (text-id-4189 4189) + (text-id-4190 4190) + (text-id-4191 4191) + (text-id-4192 4192) + (text-id-4193 4193) + (text-id-4194 4194) + (text-id-4195 4195) + (text-id-4196 4196) + (text-id-4197 4197) + (text-id-4198 4198) + (text-id-4199 4199) + (text-id-4200 4200) + (text-id-4201 4201) + (text-id-4202 4202) + (text-id-4203 4203) + (text-id-4204 4204) + (text-id-4205 4205) + (text-id-4206 4206) + (text-id-4207 4207) + (text-id-4208 4208) + (text-id-4209 4209) + (text-id-4210 4210) + (text-id-4211 4211) + (text-id-4212 4212) + (text-id-4213 4213) + (text-id-4214 4214) + (text-id-4215 4215) + (text-id-4216 4216) + (text-id-4217 4217) + (text-id-4218 4218) + (text-id-4219 4219) + (text-id-4220 4220) + (text-id-4221 4221) + (text-id-4222 4222) + (text-id-4223 4223) + (text-id-4224 4224) + (text-id-4225 4225) + (text-id-4226 4226) + (text-id-4227 4227) + (text-id-4228 4228) + (text-id-4229 4229) + (text-id-4230 4230) + (text-id-4231 4231) + (text-id-4232 4232) + (text-id-4233 4233) + (text-id-4234 4234) + (text-id-4235 4235) + (text-id-4236 4236) + (text-id-4237 4237) + (text-id-4238 4238) + (text-id-4239 4239) + (text-id-4240 4240) + (text-id-4241 4241) + (text-id-4242 4242) + (text-id-4243 4243) + (text-id-4244 4244) + (text-id-4245 4245) + (text-id-4246 4246) + (text-id-4247 4247) + (text-id-4248 4248) + (text-id-4249 4249) + (text-id-4250 4250) + (text-id-4251 4251) + (text-id-4252 4252) + (text-id-4253 4253) + (text-id-4254 4254) + (text-id-4255 4255) + (text-id-4256 4256) + (text-id-4257 4257) + (text-id-4258 4258) + (text-id-4259 4259) + (text-id-4260 4260) + (text-id-4261 4261) + (text-id-4262 4262) + (text-id-4263 4263) + (text-id-4264 4264) + (text-id-4265 4265) + (text-id-4266 4266) + (text-id-4267 4267) + (text-id-4268 4268) + (text-id-4269 4269) + (text-id-4270 4270) + (text-id-4271 4271) + (text-id-4272 4272) + (text-id-4273 4273) + (text-id-4274 4274) + (text-id-4275 4275) + (text-id-4276 4276) + (text-id-4277 4277) + (text-id-4278 4278) + (text-id-4279 4279) + (text-id-4280 4280) + (text-id-4281 4281) + (text-id-4282 4282) + (text-id-4283 4283) + (text-id-4284 4284) + (text-id-4285 4285) + (text-id-4286 4286) + (text-id-4287 4287) + (text-id-4288 4288) + (text-id-4289 4289) + (text-id-4290 4290) + (text-id-4291 4291) + (text-id-4292 4292) + (text-id-4293 4293) + (text-id-4294 4294) + (text-id-4295 4295) + (text-id-4296 4296) + (text-id-4297 4297) + (text-id-4298 4298) + (text-id-4299 4299) + (text-id-4300 4300) + (text-id-4301 4301) + (text-id-4302 4302) + (text-id-4303 4303) + (text-id-4304 4304) + (text-id-4305 4305) + (text-id-4306 4306) + (text-id-4307 4307) + (text-id-4308 4308) + (text-id-4309 4309) + (text-id-4310 4310) + (text-id-4311 4311) + (text-id-4312 4312) + (text-id-4313 4313) + (text-id-4314 4314) + (text-id-4315 4315) + (text-id-4316 4316) + (text-id-4317 4317) + (text-id-4318 4318) + (text-id-4319 4319) + (text-id-4320 4320) + (text-id-4321 4321) + (text-id-4322 4322) + (text-id-4323 4323) + (text-id-4324 4324) + (text-id-4325 4325) + (text-id-4326 4326) + (text-id-4327 4327) + (text-id-4328 4328) + (text-id-4329 4329) + (text-id-4330 4330) + (text-id-4331 4331) + (text-id-4332 4332) + (text-id-4333 4333) + (text-id-4334 4334) + (text-id-4335 4335) + (text-id-4336 4336) + (text-id-4337 4337) + (text-id-4338 4338) + (text-id-4339 4339) + (text-id-4340 4340) + (text-id-4341 4341) + (text-id-4342 4342) + (text-id-4343 4343) + (text-id-4344 4344) + (text-id-4345 4345) + (text-id-4346 4346) + (text-id-4347 4347) + (text-id-4348 4348) + (text-id-4349 4349) + (text-id-4350 4350) + (text-id-4351 4351) + (text-id-4352 4352) + (text-id-4353 4353) + (text-id-4354 4354) + (text-id-4355 4355) + (text-id-4356 4356) + (text-id-4357 4357) + (text-id-4358 4358) + (text-id-4359 4359) + (text-id-4360 4360) + (text-id-4361 4361) + (text-id-4362 4362) + (text-id-4363 4363) + (text-id-4364 4364) + (text-id-4365 4365) + (text-id-4366 4366) + (text-id-4367 4367) + (text-id-4368 4368) + (text-id-4369 4369) (text-id-4370 4370) (text-id-4371 4371) (text-id-4372 4372) @@ -397,7 +4541,283 @@ (text-id-4380 4380) (text-id-4381 4381) (text-id-4382 4382) - + (text-id-4383 4383) + (text-id-4384 4384) + (text-id-4385 4385) + (text-id-4386 4386) + (text-id-4387 4387) + (text-id-4388 4388) + (text-id-4389 4389) + (text-id-4390 4390) + (text-id-4391 4391) + (text-id-4392 4392) + (text-id-4393 4393) + (text-id-4394 4394) + (text-id-4395 4395) + (text-id-4396 4396) + (text-id-4397 4397) + (text-id-4398 4398) + (text-id-4399 4399) + (text-id-4400 4400) + (text-id-4401 4401) + (text-id-4402 4402) + (text-id-4403 4403) + (text-id-4404 4404) + (text-id-4405 4405) + (text-id-4406 4406) + (text-id-4407 4407) + (text-id-4408 4408) + (text-id-4409 4409) + (text-id-4410 4410) + (text-id-4411 4411) + (text-id-4412 4412) + (text-id-4413 4413) + (text-id-4414 4414) + (text-id-4415 4415) + (text-id-4416 4416) + (text-id-4417 4417) + (text-id-4418 4418) + (text-id-4419 4419) + (text-id-4420 4420) + (text-id-4421 4421) + (text-id-4422 4422) + (text-id-4423 4423) + (text-id-4424 4424) + (text-id-4425 4425) + (text-id-4426 4426) + (text-id-4427 4427) + (text-id-4428 4428) + (text-id-4429 4429) + (text-id-4430 4430) + (text-id-4431 4431) + (text-id-4432 4432) + (text-id-4433 4433) + (text-id-4434 4434) + (text-id-4435 4435) + (text-id-4436 4436) + (text-id-4437 4437) + (text-id-4438 4438) + (text-id-4439 4439) + (text-id-4440 4440) + (text-id-4441 4441) + (text-id-4442 4442) + (text-id-4443 4443) + (text-id-4444 4444) + (text-id-4445 4445) + (text-id-4446 4446) + (text-id-4447 4447) + (text-id-4448 4448) + (text-id-4449 4449) + (text-id-4450 4450) + (text-id-4451 4451) + (text-id-4452 4452) + (text-id-4453 4453) + (text-id-4454 4454) + (text-id-4455 4455) + (text-id-4456 4456) + (text-id-4457 4457) + (text-id-4458 4458) + (text-id-4459 4459) + (text-id-4460 4460) + (text-id-4461 4461) + (text-id-4462 4462) + (text-id-4463 4463) + (text-id-4464 4464) + (text-id-4465 4465) + (text-id-4466 4466) + (text-id-4467 4467) + (text-id-4468 4468) + (text-id-4469 4469) + (text-id-4470 4470) + (text-id-4471 4471) + (text-id-4472 4472) + (text-id-4473 4473) + (text-id-4474 4474) + (text-id-4475 4475) + (text-id-4476 4476) + (text-id-4477 4477) + (text-id-4478 4478) + (text-id-4479 4479) + (text-id-4480 4480) + (text-id-4481 4481) + (text-id-4482 4482) + (text-id-4483 4483) + (text-id-4484 4484) + (text-id-4485 4485) + (text-id-4486 4486) + (text-id-4487 4487) + (text-id-4488 4488) + (text-id-4489 4489) + (text-id-4490 4490) + (text-id-4491 4491) + (text-id-4492 4492) + (text-id-4493 4493) + (text-id-4494 4494) + (text-id-4495 4495) + (text-id-4496 4496) + (text-id-4497 4497) + (text-id-4498 4498) + (text-id-4499 4499) + (text-id-4500 4500) + (text-id-4501 4501) + (text-id-4502 4502) + (text-id-4503 4503) + (text-id-4504 4504) + (text-id-4505 4505) + (text-id-4506 4506) + (text-id-4507 4507) + (text-id-4508 4508) + (text-id-4509 4509) + (text-id-4510 4510) + (text-id-4511 4511) + (text-id-4512 4512) + (text-id-4513 4513) + (text-id-4514 4514) + (text-id-4515 4515) + (text-id-4516 4516) + (text-id-4517 4517) + (text-id-4518 4518) + (text-id-4519 4519) + (text-id-4520 4520) + (text-id-4521 4521) + (text-id-4522 4522) + (text-id-4523 4523) + (text-id-4524 4524) + (text-id-4525 4525) + (text-id-4526 4526) + (text-id-4527 4527) + (text-id-4528 4528) + (text-id-4529 4529) + (text-id-4530 4530) + (text-id-4531 4531) + (text-id-4532 4532) + (text-id-4533 4533) + (text-id-4534 4534) + (text-id-4535 4535) + (text-id-4536 4536) + (text-id-4537 4537) + (text-id-4538 4538) + (text-id-4539 4539) + (text-id-4540 4540) + (text-id-4541 4541) + (text-id-4542 4542) + (text-id-4543 4543) + (text-id-4544 4544) + (text-id-4545 4545) + (text-id-4546 4546) + (text-id-4547 4547) + (text-id-4548 4548) + (text-id-4549 4549) + (text-id-4550 4550) + (text-id-4551 4551) + (text-id-4552 4552) + (text-id-4553 4553) + (text-id-4554 4554) + (text-id-4555 4555) + (text-id-4556 4556) + (text-id-4557 4557) + (text-id-4558 4558) + (text-id-4559 4559) + (text-id-4560 4560) + (text-id-4561 4561) + (text-id-4562 4562) + (text-id-4563 4563) + (text-id-4564 4564) + (text-id-4565 4565) + (text-id-4566 4566) + (text-id-4567 4567) + (text-id-4568 4568) + (text-id-4569 4569) + (text-id-4570 4570) + (text-id-4571 4571) + (text-id-4572 4572) + (text-id-4573 4573) + (text-id-4574 4574) + (text-id-4575 4575) + (text-id-4576 4576) + (text-id-4577 4577) + (text-id-4578 4578) + (text-id-4579 4579) + (text-id-4580 4580) + (text-id-4581 4581) + (text-id-4582 4582) + (text-id-4583 4583) + (text-id-4584 4584) + (text-id-4585 4585) + (text-id-4586 4586) + (text-id-4587 4587) + (text-id-4588 4588) + (text-id-4589 4589) + (text-id-4590 4590) + (text-id-4591 4591) + (text-id-4592 4592) + (text-id-4593 4593) + (text-id-4594 4594) + (text-id-4595 4595) + (text-id-4596 4596) + (text-id-4597 4597) + (text-id-4598 4598) + (text-id-4599 4599) + (text-id-4600 4600) + (text-id-4601 4601) + (text-id-4602 4602) + (text-id-4603 4603) + (text-id-4604 4604) + (text-id-4605 4605) + (text-id-4606 4606) + (text-id-4607 4607) + (text-id-4608 4608) + (text-id-4609 4609) + (text-id-4610 4610) + (text-id-4611 4611) + (text-id-4612 4612) + (text-id-4613 4613) + (text-id-4614 4614) + (text-id-4615 4615) + (text-id-4616 4616) + (text-id-4617 4617) + (text-id-4618 4618) + (text-id-4619 4619) + (text-id-4620 4620) + (text-id-4621 4621) + (text-id-4622 4622) + (text-id-4623 4623) + (text-id-4624 4624) + (text-id-4625 4625) + (text-id-4626 4626) + (text-id-4627 4627) + (text-id-4628 4628) + (text-id-4629 4629) + (text-id-4630 4630) + (text-id-4631 4631) + (text-id-4632 4632) + (text-id-4633 4633) + (text-id-4634 4634) + (text-id-4635 4635) + (text-id-4636 4636) + (text-id-4637 4637) + (text-id-4638 4638) + (text-id-4639 4639) + (text-id-4640 4640) + (text-id-4641 4641) + (text-id-4642 4642) + (text-id-4643 4643) + (text-id-4644 4644) + (text-id-4645 4645) + (text-id-4646 4646) + (text-id-4647 4647) + (text-id-4648 4648) + (text-id-4649 4649) + (text-id-4650 4650) + (text-id-4651 4651) + (text-id-4652 4652) + (text-id-4653 4653) + (text-id-4654 4654) + (text-id-4655 4655) + (text-id-4656 4656) + (text-id-4657 4657) + (text-id-4658 4658) + (text-id-4659 4659) (text-id-4660 4660) (text-id-4661 4661) (text-id-4662 4662) @@ -430,7 +4850,6 @@ (text-id-4689 4689) (text-id-4690 4690) (text-id-4691 4691) - (text-id-4692 4692) (text-id-4693 4693) (text-id-4694 4694) @@ -551,6 +4970,773 @@ (text-id-4809 4809) (text-id-4810 4810) (text-id-4811 4811) + (text-id-4812 4812) + (text-id-4813 4813) + (text-id-4814 4814) + (text-id-4815 4815) + (text-id-4816 4816) + (text-id-4817 4817) + (text-id-4818 4818) + (text-id-4819 4819) + (text-id-4820 4820) + (text-id-4821 4821) + (text-id-4822 4822) + (text-id-4823 4823) + (text-id-4824 4824) + (text-id-4825 4825) + (text-id-4826 4826) + (text-id-4827 4827) + (text-id-4828 4828) + (text-id-4829 4829) + (text-id-4830 4830) + (text-id-4831 4831) + (text-id-4832 4832) + (text-id-4833 4833) + (text-id-4834 4834) + (text-id-4835 4835) + (text-id-4836 4836) + (text-id-4837 4837) + (text-id-4838 4838) + (text-id-4839 4839) + (text-id-4840 4840) + (text-id-4841 4841) + (text-id-4842 4842) + (text-id-4843 4843) + (text-id-4844 4844) + (text-id-4845 4845) + (text-id-4846 4846) + (text-id-4847 4847) + (text-id-4848 4848) + (text-id-4849 4849) + (text-id-4850 4850) + (text-id-4851 4851) + (text-id-4852 4852) + (text-id-4853 4853) + (text-id-4854 4854) + (text-id-4855 4855) + (text-id-4856 4856) + (text-id-4857 4857) + (text-id-4858 4858) + (text-id-4859 4859) + (text-id-4860 4860) + (text-id-4861 4861) + (text-id-4862 4862) + (text-id-4863 4863) + (text-id-4864 4864) + (text-id-4865 4865) + (text-id-4866 4866) + (text-id-4867 4867) + (text-id-4868 4868) + (text-id-4869 4869) + (text-id-4870 4870) + (text-id-4871 4871) + (text-id-4872 4872) + (text-id-4873 4873) + (text-id-4874 4874) + (text-id-4875 4875) + (text-id-4876 4876) + (text-id-4877 4877) + (text-id-4878 4878) + (text-id-4879 4879) + (text-id-4880 4880) + (text-id-4881 4881) + (text-id-4882 4882) + (text-id-4883 4883) + (text-id-4884 4884) + (text-id-4885 4885) + (text-id-4886 4886) + (text-id-4887 4887) + (text-id-4888 4888) + (text-id-4889 4889) + (text-id-4890 4890) + (text-id-4891 4891) + (text-id-4892 4892) + (text-id-4893 4893) + (text-id-4894 4894) + (text-id-4895 4895) + (text-id-4896 4896) + (text-id-4897 4897) + (text-id-4898 4898) + (text-id-4899 4899) + (text-id-4900 4900) + (text-id-4901 4901) + (text-id-4902 4902) + (text-id-4903 4903) + (text-id-4904 4904) + (text-id-4905 4905) + (text-id-4906 4906) + (text-id-4907 4907) + (text-id-4908 4908) + (text-id-4909 4909) + (text-id-4910 4910) + (text-id-4911 4911) + (text-id-4912 4912) + (text-id-4913 4913) + (text-id-4914 4914) + (text-id-4915 4915) + (text-id-4916 4916) + (text-id-4917 4917) + (text-id-4918 4918) + (text-id-4919 4919) + (text-id-4920 4920) + (text-id-4921 4921) + (text-id-4922 4922) + (text-id-4923 4923) + (text-id-4924 4924) + (text-id-4925 4925) + (text-id-4926 4926) + (text-id-4927 4927) + (text-id-4928 4928) + (text-id-4929 4929) + (text-id-4930 4930) + (text-id-4931 4931) + (text-id-4932 4932) + (text-id-4933 4933) + (text-id-4934 4934) + (text-id-4935 4935) + (text-id-4936 4936) + (text-id-4937 4937) + (text-id-4938 4938) + (text-id-4939 4939) + (text-id-4940 4940) + (text-id-4941 4941) + (text-id-4942 4942) + (text-id-4943 4943) + (text-id-4944 4944) + (text-id-4945 4945) + (text-id-4946 4946) + (text-id-4947 4947) + (text-id-4948 4948) + (text-id-4949 4949) + (text-id-4950 4950) + (text-id-4951 4951) + (text-id-4952 4952) + (text-id-4953 4953) + (text-id-4954 4954) + (text-id-4955 4955) + (text-id-4956 4956) + (text-id-4957 4957) + (text-id-4958 4958) + (text-id-4959 4959) + (text-id-4960 4960) + (text-id-4961 4961) + (text-id-4962 4962) + (text-id-4963 4963) + (text-id-4964 4964) + (text-id-4965 4965) + (text-id-4966 4966) + (text-id-4967 4967) + (text-id-4968 4968) + (text-id-4969 4969) + (text-id-4970 4970) + (text-id-4971 4971) + (text-id-4972 4972) + (text-id-4973 4973) + (text-id-4974 4974) + (text-id-4975 4975) + (text-id-4976 4976) + (text-id-4977 4977) + (text-id-4978 4978) + (text-id-4979 4979) + (text-id-4980 4980) + (text-id-4981 4981) + (text-id-4982 4982) + (text-id-4983 4983) + (text-id-4984 4984) + (text-id-4985 4985) + (text-id-4986 4986) + (text-id-4987 4987) + (text-id-4988 4988) + (text-id-4989 4989) + (text-id-4990 4990) + (text-id-4991 4991) + (text-id-4992 4992) + (text-id-4993 4993) + (text-id-4994 4994) + (text-id-4995 4995) + (text-id-4996 4996) + (text-id-4997 4997) + (text-id-4998 4998) + (text-id-4999 4999) + (text-id-5000 5000) + (text-id-5001 5001) + (text-id-5002 5002) + (text-id-5003 5003) + (text-id-5004 5004) + (text-id-5005 5005) + (text-id-5006 5006) + (text-id-5007 5007) + (text-id-5008 5008) + (text-id-5009 5009) + (text-id-5010 5010) + (text-id-5011 5011) + (text-id-5012 5012) + (text-id-5013 5013) + (text-id-5014 5014) + (text-id-5015 5015) + (text-id-5016 5016) + (text-id-5017 5017) + (text-id-5018 5018) + (text-id-5019 5019) + (text-id-5020 5020) + (text-id-5021 5021) + (text-id-5022 5022) + (text-id-5023 5023) + (text-id-5024 5024) + (text-id-5025 5025) + (text-id-5026 5026) + (text-id-5027 5027) + (text-id-5028 5028) + (text-id-5029 5029) + (text-id-5030 5030) + (text-id-5031 5031) + (text-id-5032 5032) + (text-id-5033 5033) + (text-id-5034 5034) + (text-id-5035 5035) + (text-id-5036 5036) + (text-id-5037 5037) + (text-id-5038 5038) + (text-id-5039 5039) + (text-id-5040 5040) + (text-id-5041 5041) + (text-id-5042 5042) + (text-id-5043 5043) + (text-id-5044 5044) + (text-id-5045 5045) + (text-id-5046 5046) + (text-id-5047 5047) + (text-id-5048 5048) + (text-id-5049 5049) + (text-id-5050 5050) + (text-id-5051 5051) + (text-id-5052 5052) + (text-id-5053 5053) + (text-id-5054 5054) + (text-id-5055 5055) + (text-id-5056 5056) + (text-id-5057 5057) + (text-id-5058 5058) + (text-id-5059 5059) + (text-id-5060 5060) + (text-id-5061 5061) + (text-id-5062 5062) + (text-id-5063 5063) + (text-id-5064 5064) + (text-id-5065 5065) + (text-id-5066 5066) + (text-id-5067 5067) + (text-id-5068 5068) + (text-id-5069 5069) + (text-id-5070 5070) + (text-id-5071 5071) + (text-id-5072 5072) + (text-id-5073 5073) + (text-id-5074 5074) + (text-id-5075 5075) + (text-id-5076 5076) + (text-id-5077 5077) + (text-id-5078 5078) + (text-id-5079 5079) + (text-id-5080 5080) + (text-id-5081 5081) + (text-id-5082 5082) + (text-id-5083 5083) + (text-id-5084 5084) + (text-id-5085 5085) + (text-id-5086 5086) + (text-id-5087 5087) + (text-id-5088 5088) + (text-id-5089 5089) + (text-id-5090 5090) + (text-id-5091 5091) + (text-id-5092 5092) + (text-id-5093 5093) + (text-id-5094 5094) + (text-id-5095 5095) + (text-id-5096 5096) + (text-id-5097 5097) + (text-id-5098 5098) + (text-id-5099 5099) + (text-id-5100 5100) + (text-id-5101 5101) + (text-id-5102 5102) + (text-id-5103 5103) + (text-id-5104 5104) + (text-id-5105 5105) + (text-id-5106 5106) + (text-id-5107 5107) + (text-id-5108 5108) + (text-id-5109 5109) + (text-id-5110 5110) + (text-id-5111 5111) + (text-id-5112 5112) + (text-id-5113 5113) + (text-id-5114 5114) + (text-id-5115 5115) + (text-id-5116 5116) + (text-id-5117 5117) + (text-id-5118 5118) + (text-id-5119 5119) + (text-id-5120 5120) + (text-id-5121 5121) + (text-id-5122 5122) + (text-id-5123 5123) + (text-id-5124 5124) + (text-id-5125 5125) + (text-id-5126 5126) + (text-id-5127 5127) + (text-id-5128 5128) + (text-id-5129 5129) + (text-id-5130 5130) + (text-id-5131 5131) + (text-id-5132 5132) + (text-id-5133 5133) + (text-id-5134 5134) + (text-id-5135 5135) + (text-id-5136 5136) + (text-id-5137 5137) + (text-id-5138 5138) + (text-id-5139 5139) + (text-id-5140 5140) + (text-id-5141 5141) + (text-id-5142 5142) + (text-id-5143 5143) + (text-id-5144 5144) + (text-id-5145 5145) + (text-id-5146 5146) + (text-id-5147 5147) + (text-id-5148 5148) + (text-id-5149 5149) + (text-id-5150 5150) + (text-id-5151 5151) + (text-id-5152 5152) + (text-id-5153 5153) + (text-id-5154 5154) + (text-id-5155 5155) + (text-id-5156 5156) + (text-id-5157 5157) + (text-id-5158 5158) + (text-id-5159 5159) + (text-id-5160 5160) + (text-id-5161 5161) + (text-id-5162 5162) + (text-id-5163 5163) + (text-id-5164 5164) + (text-id-5165 5165) + (text-id-5166 5166) + (text-id-5167 5167) + (text-id-5168 5168) + (text-id-5169 5169) + (text-id-5170 5170) + (text-id-5171 5171) + (text-id-5172 5172) + (text-id-5173 5173) + (text-id-5174 5174) + (text-id-5175 5175) + (text-id-5176 5176) + (text-id-5177 5177) + (text-id-5178 5178) + (text-id-5179 5179) + (text-id-5180 5180) + (text-id-5181 5181) + (text-id-5182 5182) + (text-id-5183 5183) + (text-id-5184 5184) + (text-id-5185 5185) + (text-id-5186 5186) + (text-id-5187 5187) + (text-id-5188 5188) + (text-id-5189 5189) + (text-id-5190 5190) + (text-id-5191 5191) + (text-id-5192 5192) + (text-id-5193 5193) + (text-id-5194 5194) + (text-id-5195 5195) + (text-id-5196 5196) + (text-id-5197 5197) + (text-id-5198 5198) + (text-id-5199 5199) + (text-id-5200 5200) + (text-id-5201 5201) + (text-id-5202 5202) + (text-id-5203 5203) + (text-id-5204 5204) + (text-id-5205 5205) + (text-id-5206 5206) + (text-id-5207 5207) + (text-id-5208 5208) + (text-id-5209 5209) + (text-id-5210 5210) + (text-id-5211 5211) + (text-id-5212 5212) + (text-id-5213 5213) + (text-id-5214 5214) + (text-id-5215 5215) + (text-id-5216 5216) + (text-id-5217 5217) + (text-id-5218 5218) + (text-id-5219 5219) + (text-id-5220 5220) + (text-id-5221 5221) + (text-id-5222 5222) + (text-id-5223 5223) + (text-id-5224 5224) + (text-id-5225 5225) + (text-id-5226 5226) + (text-id-5227 5227) + (text-id-5228 5228) + (text-id-5229 5229) + (text-id-5230 5230) + (text-id-5231 5231) + (text-id-5232 5232) + (text-id-5233 5233) + (text-id-5234 5234) + (text-id-5235 5235) + (text-id-5236 5236) + (text-id-5237 5237) + (text-id-5238 5238) + (text-id-5239 5239) + (text-id-5240 5240) + (text-id-5241 5241) + (text-id-5242 5242) + (text-id-5243 5243) + (text-id-5244 5244) + (text-id-5245 5245) + (text-id-5246 5246) + (text-id-5247 5247) + (text-id-5248 5248) + (text-id-5249 5249) + (text-id-5250 5250) + (text-id-5251 5251) + (text-id-5252 5252) + (text-id-5253 5253) + (text-id-5254 5254) + (text-id-5255 5255) + (text-id-5256 5256) + (text-id-5257 5257) + (text-id-5258 5258) + (text-id-5259 5259) + (text-id-5260 5260) + (text-id-5261 5261) + (text-id-5262 5262) + (text-id-5263 5263) + (text-id-5264 5264) + (text-id-5265 5265) + (text-id-5266 5266) + (text-id-5267 5267) + (text-id-5268 5268) + (text-id-5269 5269) + (text-id-5270 5270) + (text-id-5271 5271) + (text-id-5272 5272) + (text-id-5273 5273) + (text-id-5274 5274) + (text-id-5275 5275) + (text-id-5276 5276) + (text-id-5277 5277) + (text-id-5278 5278) + (text-id-5279 5279) + (text-id-5280 5280) + (text-id-5281 5281) + (text-id-5282 5282) + (text-id-5283 5283) + (text-id-5284 5284) + (text-id-5285 5285) + (text-id-5286 5286) + (text-id-5287 5287) + (text-id-5288 5288) + (text-id-5289 5289) + (text-id-5290 5290) + (text-id-5291 5291) + (text-id-5292 5292) + (text-id-5293 5293) + (text-id-5294 5294) + (text-id-5295 5295) + (text-id-5296 5296) + (text-id-5297 5297) + (text-id-5298 5298) + (text-id-5299 5299) + (text-id-5300 5300) + (text-id-5301 5301) + (text-id-5302 5302) + (text-id-5303 5303) + (text-id-5304 5304) + (text-id-5305 5305) + (text-id-5306 5306) + (text-id-5307 5307) + (text-id-5308 5308) + (text-id-5309 5309) + (text-id-5310 5310) + (text-id-5311 5311) + (text-id-5312 5312) + (text-id-5313 5313) + (text-id-5314 5314) + (text-id-5315 5315) + (text-id-5316 5316) + (text-id-5317 5317) + (text-id-5318 5318) + (text-id-5319 5319) + (text-id-5320 5320) + (text-id-5321 5321) + (text-id-5322 5322) + (text-id-5323 5323) + (text-id-5324 5324) + (text-id-5325 5325) + (text-id-5326 5326) + (text-id-5327 5327) + (text-id-5328 5328) + (text-id-5329 5329) + (text-id-5330 5330) + (text-id-5331 5331) + (text-id-5332 5332) + (text-id-5333 5333) + (text-id-5334 5334) + (text-id-5335 5335) + (text-id-5336 5336) + (text-id-5337 5337) + (text-id-5338 5338) + (text-id-5339 5339) + (text-id-5340 5340) + (text-id-5341 5341) + (text-id-5342 5342) + (text-id-5343 5343) + (text-id-5344 5344) + (text-id-5345 5345) + (text-id-5346 5346) + (text-id-5347 5347) + (text-id-5348 5348) + (text-id-5349 5349) + (text-id-5350 5350) + (text-id-5351 5351) + (text-id-5352 5352) + (text-id-5353 5353) + (text-id-5354 5354) + (text-id-5355 5355) + (text-id-5356 5356) + (text-id-5357 5357) + (text-id-5358 5358) + (text-id-5359 5359) + (text-id-5360 5360) + (text-id-5361 5361) + (text-id-5362 5362) + (text-id-5363 5363) + (text-id-5364 5364) + (text-id-5365 5365) + (text-id-5366 5366) + (text-id-5367 5367) + (text-id-5368 5368) + (text-id-5369 5369) + (text-id-5370 5370) + (text-id-5371 5371) + (text-id-5372 5372) + (text-id-5373 5373) + (text-id-5374 5374) + (text-id-5375 5375) + (text-id-5376 5376) + (text-id-5377 5377) + (text-id-5378 5378) + (text-id-5379 5379) + (text-id-5380 5380) + (text-id-5381 5381) + (text-id-5382 5382) + (text-id-5383 5383) + (text-id-5384 5384) + (text-id-5385 5385) + (text-id-5386 5386) + (text-id-5387 5387) + (text-id-5388 5388) + (text-id-5389 5389) + (text-id-5390 5390) + (text-id-5391 5391) + (text-id-5392 5392) + (text-id-5393 5393) + (text-id-5394 5394) + (text-id-5395 5395) + (text-id-5396 5396) + (text-id-5397 5397) + (text-id-5398 5398) + (text-id-5399 5399) + (text-id-5400 5400) + (text-id-5401 5401) + (text-id-5402 5402) + (text-id-5403 5403) + (text-id-5404 5404) + (text-id-5405 5405) + (text-id-5406 5406) + (text-id-5407 5407) + (text-id-5408 5408) + (text-id-5409 5409) + (text-id-5410 5410) + (text-id-5411 5411) + (text-id-5412 5412) + (text-id-5413 5413) + (text-id-5414 5414) + (text-id-5415 5415) + (text-id-5416 5416) + (text-id-5417 5417) + (text-id-5418 5418) + (text-id-5419 5419) + (text-id-5420 5420) + (text-id-5421 5421) + (text-id-5422 5422) + (text-id-5423 5423) + (text-id-5424 5424) + (text-id-5425 5425) + (text-id-5426 5426) + (text-id-5427 5427) + (text-id-5428 5428) + (text-id-5429 5429) + (text-id-5430 5430) + (text-id-5431 5431) + (text-id-5432 5432) + (text-id-5433 5433) + (text-id-5434 5434) + (text-id-5435 5435) + (text-id-5436 5436) + (text-id-5437 5437) + (text-id-5438 5438) + (text-id-5439 5439) + (text-id-5440 5440) + (text-id-5441 5441) + (text-id-5442 5442) + (text-id-5443 5443) + (text-id-5444 5444) + (text-id-5445 5445) + (text-id-5446 5446) + (text-id-5447 5447) + (text-id-5448 5448) + (text-id-5449 5449) + (text-id-5450 5450) + (text-id-5451 5451) + (text-id-5452 5452) + (text-id-5453 5453) + (text-id-5454 5454) + (text-id-5455 5455) + (text-id-5456 5456) + (text-id-5457 5457) + (text-id-5458 5458) + (text-id-5459 5459) + (text-id-5460 5460) + (text-id-5461 5461) + (text-id-5462 5462) + (text-id-5463 5463) + (text-id-5464 5464) + (text-id-5465 5465) + (text-id-5466 5466) + (text-id-5467 5467) + (text-id-5468 5468) + (text-id-5469 5469) + (text-id-5470 5470) + (text-id-5471 5471) + (text-id-5472 5472) + (text-id-5473 5473) + (text-id-5474 5474) + (text-id-5475 5475) + (text-id-5476 5476) + (text-id-5477 5477) + (text-id-5478 5478) + (text-id-5479 5479) + (text-id-5480 5480) + (text-id-5481 5481) + (text-id-5482 5482) + (text-id-5483 5483) + (text-id-5484 5484) + (text-id-5485 5485) + (text-id-5486 5486) + (text-id-5487 5487) + (text-id-5488 5488) + (text-id-5489 5489) + (text-id-5490 5490) + (text-id-5491 5491) + (text-id-5492 5492) + (text-id-5493 5493) + (text-id-5494 5494) + (text-id-5495 5495) + (text-id-5496 5496) + (text-id-5497 5497) + (text-id-5498 5498) + (text-id-5499 5499) + (text-id-5500 5500) + (text-id-5501 5501) + (text-id-5502 5502) + (text-id-5503 5503) + (text-id-5504 5504) + (text-id-5505 5505) + (text-id-5506 5506) + (text-id-5507 5507) + (text-id-5508 5508) + (text-id-5509 5509) + (text-id-5510 5510) + (text-id-5511 5511) + (text-id-5512 5512) + (text-id-5513 5513) + (text-id-5514 5514) + (text-id-5515 5515) + (text-id-5516 5516) + (text-id-5517 5517) + (text-id-5518 5518) + (text-id-5519 5519) + (text-id-5520 5520) + (text-id-5521 5521) + (text-id-5522 5522) + (text-id-5523 5523) + (text-id-5524 5524) + (text-id-5525 5525) + (text-id-5526 5526) + (text-id-5527 5527) + (text-id-5528 5528) + (text-id-5529 5529) + (text-id-5530 5530) + (text-id-5531 5531) + (text-id-5532 5532) + (text-id-5533 5533) + (text-id-5534 5534) + (text-id-5535 5535) + (text-id-5536 5536) + (text-id-5537 5537) + (text-id-5538 5538) + (text-id-5539 5539) + (text-id-5540 5540) + (text-id-5541 5541) + (text-id-5542 5542) + (text-id-5543 5543) + (text-id-5544 5544) + (text-id-5545 5545) + (text-id-5546 5546) + (text-id-5547 5547) + (text-id-5548 5548) + (text-id-5549 5549) + (text-id-5550 5550) + (text-id-5551 5551) + (text-id-5552 5552) + (text-id-5553 5553) + (text-id-5554 5554) + (text-id-5555 5555) + (text-id-5556 5556) + (text-id-5557 5557) + (text-id-5558 5558) + (text-id-5559 5559) + (text-id-5560 5560) + (text-id-5561 5561) + (text-id-5562 5562) + (text-id-5563 5563) + (text-id-5564 5564) + (text-id-5565 5565) + (text-id-5566 5566) + (text-id-5567 5567) + (text-id-5568 5568) + (text-id-5569 5569) + (text-id-5570 5570) + (text-id-5571 5571) + (text-id-5572 5572) + (text-id-5573 5573) + (text-id-5574 5574) + (text-id-5575 5575) + (text-id-5576 5576) + (text-id-5577 5577) + (text-id-5578 5578) ) ;; ---text-id diff --git a/goal_src/jakx/engine/game/penetrate-h.gc b/goal_src/jakx/engine/game/penetrate-h.gc index 66b19f8bc9..c41bde517d 100644 --- a/goal_src/jakx/engine/game/penetrate-h.gc +++ b/goal_src/jakx/engine/game/penetrate-h.gc @@ -93,3 +93,262 @@ ;; DECOMP BEGINS +;; WARN: Return type mismatch object vs string. +(defun-debug penetrate->string ((arg0 penetrate)) + (if (= (logand (penetrate jak-red-shockwave) arg0) (shl 4 32)) + (format #t "jak-red-shockwave ") + ) + (if (= (logand arg0 (penetrate mech-bonk)) (penetrate mech-bonk)) + (format #t "mech-bonk ") + ) + (if (= (logand (penetrate eco-blue) arg0) (shl #x8000 16)) + (format #t "eco-blue ") + ) + (if (= (logand (penetrate explode) arg0) (penetrate explode)) + (format #t "explode ") + ) + (if (= (logand arg0 (penetrate bonk)) (penetrate bonk)) + (format #t "bonk ") + ) + (if (= (logand (penetrate eco-red) arg0) (penetrate eco-red)) + (format #t "eco-red ") + ) + (if (= (logand arg0 (penetrate roll)) (penetrate roll)) + (format #t "roll ") + ) + (if (= (logand arg0 (penetrate mech)) (penetrate mech)) + (format #t "mech ") + ) + (if (= (logand arg0 (penetrate flut-attack)) (penetrate flut-attack)) + (format #t "flut-attack ") + ) + (if (= (logand arg0 (penetrate mech-punch)) (penetrate mech-punch)) + (format #t "mech-punch ") + ) + (if (= (logand (penetrate jak-dark-shot) arg0) (penetrate jak-dark-shot)) + (format #t "jak-dark-shot ") + ) + (if (= (logand (penetrate dark-smack) arg0) (penetrate dark-smack)) + (format #t "dark-smack ") + ) + (if (= (logand arg0 (penetrate flop)) (penetrate flop)) + (format #t "flop ") + ) + (if (= (logand arg0 (penetrate spin)) (penetrate spin)) + (format #t "spin ") + ) + (if (= (logand (penetrate dark-bomb) arg0) (penetrate dark-bomb)) + (format #t "dark-bomb ") + ) + (if (= (logand arg0 (penetrate vehicle)) (penetrate vehicle)) + (format #t "vehicle ") + ) + (if (= (logand arg0 (penetrate generic-attack)) (penetrate generic-attack)) + (format #t "generic-attack ") + ) + (if (= (logand arg0 (penetrate touch)) (penetrate touch)) + (format #t "touch ") + ) + (if (= (logand (penetrate eco-green) arg0) (shl 1 32)) + (format #t "eco-green ") + ) + (if (= (logand (penetrate jak-red-shot) arg0) (penetrate jak-red-shot)) + (format #t "jak-red-shot ") + ) + (if (= (logand arg0 (penetrate lunge)) (penetrate lunge)) + (format #t "lunge ") + ) + (if (= (logand arg0 (penetrate punch)) (penetrate punch)) + (format #t "punch ") + ) + (if (= (logand arg0 (penetrate tube)) (penetrate tube)) + (format #t "tube ") + ) + (if (= (logand (penetrate jak-dark-nuke) arg0) (shl 8 32)) + (format #t "jak-dark-nuke ") + ) + (if (= (logand (penetrate enemy-yellow-shot) arg0) (penetrate enemy-yellow-shot)) + (format #t "enemy-yellow-shot ") + ) + (if (= (logand (penetrate knocked) arg0) (shl 2 32)) + (format #t "knocked ") + ) + (if (= (logand (penetrate emp-blast) arg0) (shl 32 32)) + (format #t "emp-blast ") + ) + (if (= (logand arg0 (penetrate uppercut)) (penetrate uppercut)) + (format #t "uppercut ") + ) + (if (= (logand (penetrate dark-punch) arg0) (penetrate dark-punch)) + (format #t "dark-punch ") + ) + (if (= (logand (penetrate shield) arg0) (penetrate shield)) + (format #t "shield ") + ) + (if (= (logand (penetrate jak-yellow-shot) arg0) (penetrate jak-yellow-shot)) + (format #t "jak-yellow-shot ") + ) + (if (= (logand arg0 (penetrate board)) (penetrate board)) + (format #t "board ") + ) + (if (= (logand (penetrate flut) arg0) (penetrate flut)) + (format #t "flut ") + ) + (if (= (logand (penetrate eco-yellow) arg0) (penetrate eco-yellow)) + (format #t "eco-yellow ") + ) + (if (= (logand (penetrate dark-skin) arg0) (penetrate dark-skin)) + (format #t "dark-skin ") + ) + (if (= (logand (penetrate jak-dark-blackhole) arg0) (shl 16 32)) + (format #t "jak-dark-blackhole ") + ) + (if (= (logand (penetrate enemy-dark-shot) arg0) (penetrate enemy-dark-shot)) + (format #t "enemy-dark-shot ") + ) + (the-as string (if (= (logand (penetrate jak-blue-shot) arg0) (penetrate jak-blue-shot)) + (format #t "jak-blue-shot ") + ) + ) + ) + +(defun penetrate-using->damage ((arg0 penetrate)) + (cond + ((logtest? (penetrate dark-bomb dark-smack) arg0) + 15.0 + ) + ((logtest? arg0 (penetrate mech-punch mech-bonk)) + 5.0 + ) + ((logtest? (penetrate) arg0) + 4.0 + ) + ((logtest? (penetrate punch spin jak-dark-shot enemy-dark-shot) arg0) + 3.0 + ) + ((logtest? (penetrate + flop + uppercut + tube + flut-attack + dark-punch + explode + jak-yellow-shot + jak-red-shot + jak-blue-shot + enemy-yellow-shot + eco-yellow + ) + arg0 + ) + 2.0 + ) + ((logtest? arg0 (penetrate generic-attack roll bonk board)) + 1.0 + ) + (else + 0.0 + ) + ) + ) + +;; WARN: Return type mismatch uint vs penetrate. +(defun penetrated-by-all&hit-points->penetrated-by ((arg0 penetrate) (arg1 int)) + (let ((a0-1 arg1)) + (the-as penetrate (logior (logclear arg0 (penetrate + generic-attack + flop + punch + spin + roll + uppercut + bonk + tube + flut-attack + board + mech-punch + mech-bonk + dark-skin + dark-punch + dark-bomb + dark-smack + shield + explode + jak-yellow-shot + jak-red-shot + jak-blue-shot + jak-dark-shot + enemy-yellow-shot + enemy-dark-shot + eco-yellow + knocked + ) + ) + (cond + ((or (zero? a0-1) (= a0-1 1)) + (the-as int (the-as uint #x23fefdbfa)) + ) + ((= a0-1 2) + #x3fcecab8 + ) + ((= a0-1 3) + #x140cc030 + ) + ((= a0-1 4) + #xcc000 + ) + ((= a0-1 5) + #xcc000 + ) + ((or (= a0-1 6) + (= a0-1 7) + (= a0-1 8) + (= a0-1 9) + (= a0-1 10) + (= a0-1 11) + (= a0-1 12) + (= a0-1 13) + (= a0-1 14) + (= a0-1 15) + ) + #xc0000 + ) + (else + 0 + ) + ) + ) + ) + ) + ) + +;; WARN: Return type mismatch int vs knocked-type. +(defun pu->knocked-type ((arg0 penetrate)) + (the-as knocked-type (cond + ((logtest? arg0 (penetrate vehicle)) + 7 + ) + ((logtest? (penetrate jak-blue-shot) arg0) + 6 + ) + ((logtest? (penetrate jak-yellow-shot enemy-yellow-shot) arg0) + 4 + ) + ((logtest? (penetrate jak-red-shot) arg0) + 5 + ) + ((logtest? (penetrate explode jak-dark-shot enemy-dark-shot) arg0) + 2 + ) + ((logtest? (penetrate dark-bomb dark-smack) arg0) + 3 + ) + ((logtest? arg0 (penetrate mech-punch)) + 1 + ) + (else + 0 + ) + ) + ) + ) diff --git a/goal_src/jakx/engine/game/settings-h.gc b/goal_src/jakx/engine/game/settings-h.gc index a3a20d098e..9249644d87 100644 --- a/goal_src/jakx/engine/game/settings-h.gc +++ b/goal_src/jakx/engine/game/settings-h.gc @@ -466,33 +466,36 @@ (deftype setting-control (basic) - ((user-current user-setting-data :inline) - (user-target user-setting-data :inline) - (user-default user-setting-data :inline) - (cam-settings cam-setting-state 4 :inline) - (engine engine) - (engine-pers engine-pers) - (engine-hi engine) - (cam-engines engine-group 4) + ((user-current user-setting-data :inline :offset-assert 16) + (user-target user-setting-data :inline :offset-assert 800) + (user-default user-setting-data :inline :offset-assert 1584) + (cam-settings cam-setting-state 4 :inline :offset-assert 2368) + (engine engine :offset-assert 7168) ;; guessed by decompiler + (engine-pers engine-pers :offset-assert 7172) ;; guessed by decompiler + (engine-hi engine :offset-assert 7176) ;; guessed by decompiler + (cam-engines engine-group 4 :offset-assert 7180) ) + :method-count-assert 25 + :size-assert #x1c1c + :flag-assert #x1900001c1c (:methods - (new (symbol type int) _type_) - (setting-control-method-9 () none) - (setting-control-method-10 () none) - (setting-control-method-11 () none) - (setting-control-method-12 () none) - (setting-control-method-13 () none) - (setting-control-method-14 () none) - (setting-control-method-15 () none) - (setting-control-method-16 () none) - (setting-control-method-17 () none) - (setting-control-method-18 () none) - (setting-control-method-19 () none) - (setting-control-method-20 () none) - (setting-control-method-21 () none) - (setting-control-method-22 () none) - (setting-control-method-23 () none) - (setting-control-method-24 () none) + (new (symbol type int) _type_) ;; 0 + (setting-control-method-9 () none) ;; 9 ;; (add-setting (_type_ process symbol object object object) connection) + (setting-control-method-10 () none) ;; 10 ;; (persist-with-delay (_type_ symbol time-frame symbol symbol float int) none) + (setting-control-method-11 () none) ;; 11 ;; (set-setting (_type_ process symbol object object object) connection) + (setting-control-method-12 () none) ;; 12 ;; (remove-setting (_type_ process symbol) none) + (setting-control-method-13 () none) ;; 13 ;; (kill-persister (_type_ engine-pers object) none) + (setting-control-method-14 (_type_ symbol int symbol symbol float int) none) ;; 14 ;; (setting-control-method-14 (_type_ object) connectable) + (setting-control-method-15 () none) ;; 15 ;; (get-setting (_type_ object) connectable) + (setting-control-method-16 () none) ;; 16 ;; (remove-setting-by-arg0 (_type_ object) none) + (setting-control-method-17 () none) ;; 17 ;; (set-setting-by-param (_type_ symbol object object object) connection) + (setting-control-method-18 () none) ;; 18 ;; (apply-settings (_type_) user-setting-data) + (setting-control-method-19 () none) ;; 19 ;; (update (_type_) user-setting-data) + (setting-control-method-20 () none) ;; 20 + (setting-control-method-21 () none) ;; 21 + (setting-control-method-22 () none) ;; 22 + (setting-control-method-23 () none) ;; 23 + (setting-control-method-24 () none) ;; 24 ) ) diff --git a/goal_src/jakx/engine/game/task/game-task-h.gc b/goal_src/jakx/engine/game/task/game-task-h.gc index 148a65f2d2..d5cb725202 100644 --- a/goal_src/jakx/engine/game/task/game-task-h.gc +++ b/goal_src/jakx/engine/game/task/game-task-h.gc @@ -11,7 +11,189 @@ :type uint8 :bitfield #f (unknown -1) -) + (none 0) + (complete 1) + (dummy0 2) + (eco-blue-button 3) + (eco-yellow-button 4) + (eco-red-button 5) + (city-start 6) + (kras-training 7) + (spargus-race 8) + (docks-deathrace 9) + (kcross-deathmatch 10) + (spargus-timebox 11) + (dromdoc-race 12) + (cliffs-artifact 13) + (drome-race 14) + (ice-deathrace 15) + (peak-football 16) + (ice-race 17) + (jungle-timebox 18) + (snow-deathrace 19) + (temple-race 20) + (kcross-hunt 21) + (icepass-rushhour 22) + (kras-race 23) + (spargus-deathrace 24) + (docks-football 25) + (coliseum-deathmatch 26) + (sewer-race 27) + (canspar-race 28) + (kras-football 29) + (atoll-artifact 30) + (dockkra-timebox 31) + (snow-race 32) + (jungle-race 33) + (drome-deathrace 34) + (cliffs-hunt 35) + (desarena-deathmatch 36) + (canyon-rushhour 37) + (havjung-race 38) + (kras-deathrace 39) + (spartem-race 40) + (jungle-deathrace 41) + (iceberg-race 42) + (desisle-deathmatch 43) + (haven-race 44) + (canyon-timebox 45) + (kcross-artifact 46) + (kratour-race 47) + (havtour-race 48) + (dockkra-deathrace 49) + (ice-timebox 50) + (canyon-race 51) + (desarena-artifact 52) + (canspar-rushhour 53) + (dromdoc-football 54) + (cliffs-deathmatch 55) + (spatour-race 56) + (kras-timebox 57) + (kcross-ctf 58) + (docks-race 59) + (spartem-deathrace 60) + (peak-timebox 61) + (snobowl-deathmatch 62) + (drome-rushhour 63) + (icepass-race 64) + (spargus-football 65) + (havsew-timebox 66) + (dromdoc-deathrace 67) + (peak-race 68) + (temple-deathrace 69) + (dromdoc-rushhour 70) + (havsew-race 71) + (coliseum-artifact 72) + (canyon-deathrace 73) + (sewer-timebox 74) + (cliffs-ctf 75) + (kras-rushhour 76) + (atoll-deathmatch 77) + (spargus-rushhour 78) + (drome-football 79) + (icetour-race 80) + (havsew-deathrace 81) + (snobowl-artifact 82) + (canspar-timebox 83) + (temple-football 84) + (desisle-ctf 85) + (peak-deathrace 86) + (dockkra-race 87) + (coliseum-assassin 88) + (kcross-assassin 89) + (atoll-assassin 90) + (cliffs-assassin 91) + (desarena-assassin 92) + (desisle-assassin 93) + (snobowl-assassin 94) + (snow-rushhour 95) + (icepass-deathrace 96) + (jungle-rushhour 97) + (snow-football 98) + (docks-timebox 99) + (desarena-ctf 100) + (dockkra-football 101) + (drome-timebox 102) + (temple-timebox 103) + (sewer-rushhour 104) + (spartem-football 105) + (snow-timebox 106) + (snobowl-ctf 107) + (dromdoc-timebox 108) + (canspar-football 109) + (havsew-rushhour 110) + (ice-football 111) + (coliseum-ctf 112) + (havjung-rushhour1 113) + (atoll-hunt 114) + (havjung-football 115) + (haven-deathrace 116) + (iceberg-football 117) + (havjung-rushhour 118) + (sewer-football 119) + (desisle-hunt 120) + (jungle-football 121) + (haven-football 122) + (havjung-timebox 123) + (docks-rushhour 124) + (haven-timebox 125) + (kras-timetrial 126) + (docks-timetrial 127) + (drome-timetrial 128) + (dockkra-timetrial 129) + (dromdoc-timetrial 130) + (kratour-timetrial 131) + (jungle-timetrial 132) + (haven-timetrial 133) + (sewer-timetrial 134) + (havjung-timetrial 135) + (havsew-timetrial 136) + (havtour-timetrial 137) + (spargus-timetrial 138) + (canyon-timetrial 139) + (temple-timetrial 140) + (canspar-timetrial 141) + (spartem-timetrial 142) + (spatour-timetrial 143) + (snow-timetrial 144) + (peak-timetrial 145) + (ice-timetrial 146) + (iceberg-timetrial 147) + (icepass-timetrial 148) + (icetour-timetrial 149) + (sewer-deathrace 150) + (desarena-king-of-hill 151) + (ice-training 152) + (cliffs-training 153) + (snow-training2 154) + (jungle-training 155) + (coliseum-king-of-hill 156) + (snobowl-king-of-hill 157) + (cliffs-king-of-hill 158) + (havjung-deathrace 159) + (haven-rushhour 160) + (kcross-king-of-hill 161) + (havsew-football 162) + (dockkra-rushhour 163) + (canyon-football 164) + (canspar-deathrace 165) + (spartem-timebox 166) + (spartem-rushhour 167) + (temple-rushhour 168) + (icepass-timebox 169) + (iceberg-timebox 170) + (ice-rushhour 171) + (iceberg-deathrace 172) + (iceberg-rushhour 173) + (peak-rushhour 174) + (atoll-ctf 175) + (desisle-artifact 176) + (kratour-boss-battle 177) + (brdroom-intro-b 178) + (city-win2 179) + (artist-artist 180) + (max 181) + ) ;; ---game-task ;; +++game-task-node @@ -21,6 +203,333 @@ ) ;; ---game-task-node +;; +++game-task-node-command +(defenum game-task-node-command + :type uint8 + (none 0) + (add-sidekick 1) + (sub-sidekick 2) + (add-board 3) + (sub-board 4) + (add-gun-red-1 5) + (add-gun-red-2 6) + (add-gun-red-3 7) + (add-gun-red-ammo-1 8) + (add-gun-red-ammo-2 9) + (add-gun-yellow-1 10) + (add-gun-yellow-2 11) + (add-gun-yellow-3 12) + (add-gun-yellow-ammo-1 13) + (add-gun-yellow-ammo-2 14) + (add-gun-blue-1 15) + (add-gun-blue-2 16) + (add-gun-blue-3 17) + (add-gun-blue-ammo-1 18) + (add-gun-blue-ammo-2 19) + (add-gun-dark-1 20) + (add-gun-dark-2 21) + (add-gun-dark-3 22) + (add-gun-dark-ammo-1 23) + (add-gun-dark-ammo-2 24) + (add-pass-front-gate 25) + (add-pass-port-mh 26) + (add-pass-port-inda 27) + (add-pass-inda-indb 28) + (add-pass-indb-sluma 29) + (add-pass-slumb-genb 30) + (add-darkeco 31) + (add-darkjak 32) + (add-darkjak-smack 33) + (add-darkjak-bomb0 34) + (add-darkjak-bomb1 35) + (add-darkjak-tracking 36) + (add-darkjak-invinc 37) + (add-lighteco 38) + (add-lightjak 39) + (add-lightjak-regen 40) + (add-lightjak-freeze 41) + (add-lightjak-shield 42) + (add-lightjak-swoop 43) + (add-board-training 44) + (add-board-launch 45) + (add-board-trail 46) + (add-board-zap 47) + (sub-board-trail 48) + (add-artifact-invis 49) + (add-armor-0 50) + (add-armor-1 51) + (add-armor-2 52) + (add-armor-3 53) + (add-amulet-1 54) + (add-amulet-2 55) + (add-amulet-3 56) + (add-light-eco-crystal 57) + (add-dark-eco-crystal 58) + (add-seal 59) + (add-cypher-gliph 60) + (add-star-map 61) + (add-vehicle-toad 62) + (add-vehicle-snake 63) + (add-vehicle-scorpion 64) + (add-vehicle-turtle 65) + (add-vehicle-rhino 66) + (add-av-cube 67) + (add-av-reflector 68) + (add-av-prism 69) + (add-av-generator 70) + (add-av-map 71) + (add-jakc 72) + ) +;; +++game-task-h:game-task-node-command + +;; +++game-task-h:game-task-action +(defenum game-task-action + :bitfield #f + :type uint8 + (hide 0) + (idle 1) + (say 2) + (talk 3) + (show 4) + (trade 5) + (play 6) + (menu 7) + ) +;; ---game-task-action + +;; +++game-task-actor +(defenum game-task-actor + :type uint8 + (none 0) + (minimap 1) + (oracle-oracle 2) + (daxter 3) + (damus-arena 4) + (damus-waspal 5) + (damus-desert 6) + (damus-wasdoors 7) + (damus-wascity 8) + (damus-ruins 9) + (kleever-arena 10) + (kleever-wasdoors 11) + (kleever-pen 12) + (seem-wascity 13) + (seem-temple 14) + (ashelin-oasis 15) + (ashelin-talkbox 16) + (ashelin-freehq 17) + (veger-cave 18) + (veger-ruins 19) + (torn-hiphog 20) + (torn-hiptable 21) + (torn-hipbar 22) + (torn-hipbooth 23) + (torn-freehq 24) + (tess-gungame 25) + (samos-talkbox 26) + (sig-talkbox 27) + (sig-wasdoors 28) + (sig-nest 29) + (pecker-onintent 30) + (onin-onintent 31) + (onin-talkbox 32) + (keira-garage 33) + (was-pre-game-wascityb 34) + (kleever-wascityb 35) + (seem-wascitya 36) + (gun-gungame 37) + (vin-vinroom 38) + (power-game-vinroom 39) + (jinx-hiphog 40) + (samos-genb 41) + (wascity-turret 42) + (seem-leaper 44) + (monk-wascity 43) + (wascity-leaper 45) + (was-pre-game-deserte 46) + (onin-freehq 48) + (samos-freehq 47) + (keira-freehq 49) + (keira-genb 50) + (monk-mummy 51) + (pecker 52) + (samos-onintent 53) + (unused-slot-8 54) + (unused-slot-9 55) + (unused-slot-10 56) + (unused-slot-11 57) + (unused-slot-12 58) + (unused-slot-13 59) + (unused-slot-14 60) + (unused-slot-15 61) + (unused-slot-16 62) + (unused-slot-17 63) + (unused-slot-18 64) + (unused-slot-19 65) + (unused-slot-20 66) + (unused-slot-21 67) + (unused-slot-22 68) + (unused-slot-23 69) + (unused-slot-24 70) + (unused-slot-25 71) + (unused-slot-26 72) + (unused-slot-27 73) + (unused-slot-28 74) + (unused-slot-29 75) + (unused-slot-30 76) + (unused-slot-31 77) + (burning-bush-slumb 78) + (burning-bush-gena 79) + (burning-bush-genc 80) + (burning-bush-marka 81) + (burning-bush-sluma 82) + (burning-bush-slumb-2 83) + (burning-bush-slumc 84) + (burning-bush-farma 85) + (burning-bush-farmb 86) + (burning-bush-markb 87) + (burning-bush-markb-2 88) + (burning-bush-gena-2 89) + (burning-bush-genb 90) + (burning-bush-genc-2 91) + (burning-bush-inda 92) + (burning-bush-indb 93) + (burning-bush-port 94) + (burning-bush-port-2 95) + (burning-bush-port-3 96) + (burning-bush-pal 97) + (burning-bush-stadium 98) + (burning-bush-pal-2 99) + (burning-bush-genb-2 100) + (burning-bush-arena 101) + (burning-bush-desd 102) + (burning-bush-desc 103) + (burning-bush-desa 104) + (burning-bush-desg 105) + (burning-bush-desh 106) + (burning-bush-desc-2 107) + (burning-bush-dese 108) + (burning-bush-desb 109) + (burning-bush-desa-2 110) + (burning-bush-desc-3 111) + (burning-bush-desg-2 112) + (burning-bush-desd-2 113) + (burning-bush-desg-3 114) + (burning-bush-dese-2 115) + (burning-bush-dese-3 116) + (burning-bush-desd-3 117) + (burning-bush-desb-2 118) + (burning-bush-wasa-1 119) + (burning-bush-wasa-2 120) + (burning-bush-wasa-3 121) + (burning-bush-wasa-4 122) + (burning-bush-wasb-1 123) + (burning-bush-wasb-2 124) + (burning-bush-wasb-3 125) + (burning-bush-wasb-4 126) + (burning-bush-desg-4 127) + (burning-bush-wasb-5 128) + (burning-bush-wasb-6 129) + (burning-bush-desa-3 130) + (burning-bush-sluma-1 131) + (burning-bush-genb-1 132) + (burning-bush-slumb-1 133) + (burning-bush-wasa-5 134) + (burning-bush-desd-4 135) + (burning-bush-slumb-3 136) + (burning-bush-desc-4 137) + (burning-bush-inda-1 138) + (burning-bush-dese-4 139) + (burning-bush-desc-5 140) + (burning-bush-desb-3 141) + (burning-bush-wasa-6 142) + (burning-bush-wasb-7 143) + (burning-bush-indb-1 144) + (burning-bush-desf 145) + (burning-bush-port-1 146) + (burning-bush-genb-3 147) + (burning-bush-genb-4 148) + (burning-bush-genb-5 149) + (burning-bush-slumb-4 150) + (burning-bush-slumc-1 151) + (burning-bush-dese-5 152) + (burning-bush-port-4 153) + (burning-bush-slumc-2 154) + (burning-bush-sluma-2 155) + (burning-bush-sluma-3 156) + (burning-bush-indb-2 157) + (burning-bush-indb-3 158) + (burning-bush-inda-2 159) + (burning-bush-inda-3 160) + (burning-bush-inda-4 161) + (burning-bush-port-5 162) + (burning-bush-port-6 163) + (burning-bush-port-7 164) + (burning-bush-port-8 165) + (burning-bush-desd-5 166) + (burning-bush-inda-5 167) + (burning-bush-desb-4 168) + ) +;; ---game-task-actor + +;; +++game-task-flags +(defenum game-task-flags + :bitfield #t + :type uint8 + (gatflag-00) + (gatflag-01) + (gatflag-02) + ) +;; ---game-task-flags + +;; +++game-task-icon +(defenum game-task-icon + :type uint8 + (gaticon-00) + ) +;; ---game-task-icon + +;; +++game-task-node-flag +(defenum game-task-node-flag + :type uint32 ;; guess + :bitfield #t + (closed 0) + (data) + (close-task) + (unlocked) + (abs-task-mask) + (set-task-mask) + (clear-task-mask) + (cup1) + (cup2) + (cup3) + (cup4) + (intro-b) + (icelands) + (haven-city) + (kras-city) + (spargus) + (qualifier) + (grand-prix) + (boss-battle) + (score-lower-is-better) + (act2) + (act3) + (bbush) + ) +;; ---game-task-node-flag + +;; +++game-task-medal +(defenum game-task-medal + :type uint8 + (none 0) + (bronze 1) + (silver 2) + (gold 3) + ) +;; ---game-task-medal + + ;; DECOMP BEGINS (define *net-play-mode-names* (new 'static 'boxed-array :type symbol @@ -67,12 +576,12 @@ (text-id text-id-1659) (text-id text-id-1659) (text-id text-id-1940) - (text-id null) - (text-id null) - (text-id null) - (text-id null) - (text-id null) - (text-id null) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) ) ) diff --git a/goal_src/jakx/engine/game/task/task-control-h.gc b/goal_src/jakx/engine/game/task/task-control-h.gc index bb181b67c6..c81c630c38 100644 --- a/goal_src/jakx/engine/game/task/task-control-h.gc +++ b/goal_src/jakx/engine/game/task/task-control-h.gc @@ -7,3 +7,1357 @@ ;; DECOMP BEGINS +(defun-debug game-task->string ((arg0 game-task)) + (case arg0 + (((game-task canspar-timetrial)) + "canspar-timetrial" + ) + (((game-task havjung-rushhour)) + "havjung-rushhour" + ) + (((game-task dockkra-rushhour)) + "dockkra-rushhour" + ) + (((game-task canspar-deathrace)) + "canspar-deathrace" + ) + (((game-task havjung-deathrace)) + "havjung-deathrace" + ) + (((game-task coliseum-king-of-hill)) + "coliseum-king-of-hill" + ) + (((game-task desisle-hunt)) + "desisle-hunt" + ) + (((game-task ice-football)) + "havsew-rushhour" + ) + (((game-task coliseum-assassin)) + "coliseum-assassin" + ) + (((game-task coliseum-artifact)) + "coliseum-artifact" + ) + (((game-task havtour-race)) + "havtour-race" + ) + (((game-task kras-training)) + "kras-training" + ) + (((game-task drome-race)) + "drome-race" + ) + (((game-task spartem-race)) + "spartem-race" + ) + (((game-task peak-rushhour)) + "peak-rushhour" + ) + (((game-task drome-deathrace)) + "drome-deathrace" + ) + (((game-task none)) + "none" + ) + (((game-task snobowl-assassin)) + "snobowl-assassin" + ) + (((game-task dromdoc-timetrial)) + "dromdoc-timetrial" + ) + (((game-task havsew-timetrial)) + "havsew-timetrial" + ) + (((game-task kcross-ctf)) + "kcross-ctf" + ) + (((game-task kras-football)) + "kras-football" + ) + (((game-task desarena-deathmatch)) + "desarena-deathmatch" + ) + (((game-task drome-timetrial)) + "drome-timetrial" + ) + (((game-task iceberg-football)) + "iceberg-football" + ) + (((game-task docks-deathrace)) + "docks-deathrace" + ) + (((game-task atoll-assassin)) + "atoll-assassin" + ) + (((game-task canyon-deathrace)) + "canyon-deathrace" + ) + (((game-task havjung-race)) + "havjung-race" + ) + (((game-task docks-race)) + "docks-race" + ) + (((game-task kras-race)) + "kras-race" + ) + (((game-task docks-timetrial)) + "docks-timetrial" + ) + (((game-task icepass-timetrial)) + "icepass-timetrial" + ) + (((game-task dummy0)) + "dummy0" + ) + (((game-task snobowl-deathmatch)) + "snobowl-deathmatch" + ) + (((game-task eco-blue-button)) + "eco-blue-button" + ) + (((game-task snow-football)) + "snow-football" + ) + (((game-task jungle-rushhour)) + "jungle-rushhour" + ) + (((game-task havsew-rushhour)) + "canspar-football" + ) + (((game-task havsew-timebox)) + "havsew-timebox" + ) + (((game-task snobowl-artifact)) + "snobowl-artifact" + ) + (((game-task icetour-timetrial)) + "icetour-timetrial" + ) + (((game-task drome-timebox)) + "drome-timebox" + ) + (((game-task temple-rushhour)) + "temple-rushhour" + ) + (((game-task snow-race)) + "snow-race" + ) + (((game-task canspar-football)) + "dromdoc-timebox" + ) + (((game-task peak-timebox)) + "peak-timebox" + ) + (((game-task sewer-deathrace)) + "sewer-deathrace" + ) + (((game-task desarena-king-of-hill)) + "desarena-king-of-hill" + ) + (((game-task iceberg-rushhour)) + "iceberg-rushhour" + ) + (((game-task jungle-deathrace)) + "jungle-deathrace" + ) + (((game-task complete)) + "complete" + ) + (((game-task iceberg-deathrace)) + "iceberg-deathrace" + ) + (((game-task desarena-assassin)) + "desarena-assassin" + ) + (((game-task peak-deathrace)) + "peak-deathrace" + ) + (((game-task sewer-race)) + "sewer-race" + ) + (((game-task sewer-timetrial)) + "sewer-timetrial" + ) + (((game-task docks-timebox)) + "docks-timebox" + ) + (((game-task temple-deathrace)) + "temple-deathrace" + ) + (((game-task temple-timetrial)) + "temple-timetrial" + ) + (((game-task icepass-timebox)) + "icepass-timebox" + ) + (((game-task atoll-artifact)) + "atoll-artifact" + ) + (((game-task cliffs-ctf)) + "cliffs-ctf" + ) + (((game-task havjung-timetrial)) + "havjung-timetrial" + ) + (((game-task spatour-timetrial)) + "spatour-timetrial" + ) + (((game-task kcross-assassin)) + "kcross-assassin" + ) + (((game-task haven-deathrace)) + "haven-deathrace" + ) + (((game-task dockkra-deathrace)) + "dockkra-deathrace" + ) + (((game-task coliseum-ctf)) + "ice-football" + ) + (((game-task kratour-timetrial)) + "kratour-timetrial" + ) + (((game-task snobowl-ctf)) + "icepass-football" + ) + (((game-task canspar-rushhour)) + "canspar-rushhour" + ) + (((game-task desisle-ctf)) + "desisle-ctf" + ) + (((game-task havsew-deathrace)) + "havsew-deathrace" + ) + (((game-task canyon-race)) + "canyon-race" + ) + (((game-task ice-timetrial)) + "ice-timetrial" + ) + (((game-task haven-race)) + "haven-race" + ) + (((game-task haven-timetrial)) + "haven-timetrial" + ) + (((game-task jungle-timebox)) + "jungle-timebox" + ) + (((game-task spargus-timetrial)) + "spargus-timetrial" + ) + (((game-task drome-football)) + "drome-football" + ) + (((game-task kras-timetrial)) + "kras-timetrial" + ) + (((game-task ice-training)) + "ice-training" + ) + (((game-task spartem-deathrace)) + "spartem-deathrace" + ) + (((game-task havtour-timetrial)) + "havtour-timetrial" + ) + (((game-task spargus-deathrace)) + "spargus-deathrace" + ) + (((game-task sewer-timebox)) + "sewer-timebox" + ) + (((game-task temple-timebox)) + "temple-timebox" + ) + (((game-task iceberg-race)) + "iceberg-race" + ) + (((game-task atoll-hunt)) + "atoll-hunt" + ) + (((game-task havjung-rushhour1)) + "coliseum-ctf" + ) + (((game-task spartem-timetrial)) + "spartem-timetrial" + ) + (((game-task canspar-timebox)) + "canspar-timebox" + ) + (((game-task canyon-football)) + "canyon-football" + ) + (((game-task dockkra-race)) + "dockkra-race" + ) + (((game-task kcross-hunt)) + "kcross-hunt" + ) + (((game-task havjung-timebox)) + "havjung-timebox" + ) + (((game-task ice-deathrace)) + "ice-deathrace" + ) + (((game-task kcross-deathmatch)) + "kcross-deathmatch" + ) + (((game-task dromdoc-football)) + "dromdoc-football" + ) + (((game-task snow-timetrial)) + "snow-timetrial" + ) + (((game-task docks-football)) + "docks-football" + ) + (((game-task icepass-rushhour)) + "icepass-rushhour" + ) + (((game-task brdroom-intro-b)) + "brdroom-intro-b" + ) + (((game-task atoll-deathmatch)) + "atoll-deathmatch" + ) + (((game-task kras-rushhour)) + "kras-rushhour" + ) + (((game-task peak-football)) + "peak-football" + ) + (((game-task canspar-race)) + "canspar-race" + ) + (((game-task kcross-artifact)) + "kcross-artifact" + ) + (((game-task ice-race)) + "ice-race" + ) + (((game-task haven-timebox)) + "haven-timebox" + ) + (((game-task drome-rushhour)) + "drome-rushhour" + ) + (((game-task cliffs-assassin)) + "cliffs-assassin" + ) + (((game-task iceberg-timetrial)) + "iceberg-timetrial" + ) + (((game-task jungle-football)) + "jungle-football" + ) + (((game-task peak-race)) + "peak-race" + ) + (((game-task dromdoc-timebox)) + "snobowl-ctf" + ) + (((game-task spargus-football)) + "spargus-football" + ) + (((game-task kratour-boss-battle)) + "kratour-boss-battle" + ) + (((game-task snow-rushhour)) + "snow-rushhour" + ) + (((game-task havsew-race)) + "havsew-race" + ) + (((game-task ice-timebox)) + "ice-timebox" + ) + (((game-task temple-football)) + "temple-football" + ) + (((game-task sewer-football)) + "sewer-football" + ) + (((game-task cliffs-training)) + "cliffs-training" + ) + (((game-task spartem-football)) + "spartem-football" + ) + (((game-task dromdoc-rushhour)) + "dromdoc-rushhour" + ) + (((game-task jungle-training)) + "jungle-training" + ) + (((game-task dockkra-timetrial)) + "dockkra-timetrial" + ) + (((game-task spartem-timebox)) + "spartem-timebox" + ) + (((game-task desarena-ctf)) + "desarena-ctf" + ) + (((game-task icepass-race)) + "icepass-race" + ) + (((game-task docks-rushhour)) + "docks-rushhour" + ) + (((game-task eco-yellow-button)) + "eco-yellow-button" + ) + (((game-task atoll-ctf)) + "atoll-ctf" + ) + (((game-task canyon-rushhour)) + "canyon-rushhour" + ) + (((game-task artist-artist)) + "artist-artist" + ) + (((game-task snow-training2)) + "snow-training2" + ) + (((game-task havsew-football)) + "havsew-football" + ) + (((game-task dromdoc-deathrace)) + "dromdoc-deathrace" + ) + (((game-task kras-timebox)) + "kras-timebox" + ) + (((game-task cliffs-hunt)) + "cliffs-hunt" + ) + (((game-task cliffs-deathmatch)) + "cliffs-deathmatch" + ) + (((game-task haven-football)) + "haven-football" + ) + (((game-task kras-deathrace)) + "kras-deathrace" + ) + (((game-task iceberg-timebox)) + "iceberg-timebox" + ) + (((game-task desisle-assassin)) + "desisle-assassin" + ) + (((game-task canyon-timetrial)) + "canyon-timetrial" + ) + (((game-task spargus-rushhour)) + "spargus-rushhour" + ) + (((game-task icetour-race)) + "icetour-race" + ) + (((game-task havjung-football)) + "havjung-football" + ) + (((game-task coliseum-deathmatch)) + "coliseum-deathmatch" + ) + (((game-task cliffs-king-of-hill)) + "cliffs-king-of-hill" + ) + (((game-task icepass-deathrace)) + "icepass-deathrace" + ) + (((game-task cliffs-artifact)) + "cliffs-artifact" + ) + (((game-task jungle-race)) + "jungle-race" + ) + (((game-task spartem-rushhour)) + "spartem-rushhour" + ) + (((game-task snow-timebox)) + "snow-timebox" + ) + (((game-task sewer-rushhour)) + "sewer-rushhour" + ) + (((game-task dockkra-football)) + "dockkra-football" + ) + (((game-task max)) + "max" + ) + (((game-task city-win2)) + "city-win" + ) + (((game-task snow-deathrace)) + "snow-deathrace" + ) + (((game-task city-start)) + "city-start" + ) + (((game-task dockkra-timebox)) + "dockkra-timebox" + ) + (((game-task desisle-deathmatch)) + "desisle-deathmatch" + ) + (((game-task kcross-king-of-hill)) + "kcross-king-of-hill" + ) + (((game-task dromdoc-race)) + "dromdoc-race" + ) + (((game-task temple-race)) + "temple-race" + ) + (((game-task desarena-artifact)) + "desarena-artifact" + ) + (((game-task peak-timetrial)) + "peak-timetrial" + ) + (((game-task spargus-timebox)) + "spargus-timebox" + ) + (((game-task ice-rushhour)) + "ice-rushhour" + ) + (((game-task spatour-race)) + "spatour-race" + ) + (((game-task eco-red-button)) + "eco-red-button" + ) + (((game-task jungle-timetrial)) + "jungle-timetrial" + ) + (((game-task canyon-timebox)) + "canyon-timebox" + ) + (((game-task kratour-race)) + "kratour-race" + ) + (((game-task desisle-artifact)) + "desisle-artifact" + ) + (((game-task spargus-race)) + "spargus-race" + ) + (((game-task haven-rushhour)) + "haven-rushhour" + ) + (((game-task snobowl-king-of-hill)) + "snobowl-king-of-hill" + ) + (else + "*unknown*" + ) + ) + ) + +;; WARN: Return type mismatch int vs game-task. +(defun c-string->game-task ((arg0 string)) + "returns -1, dont call this" + (the-as game-task -1) + ) + +(defun-debug game-task-actor->string ((arg0 game-task-actor)) + (case arg0 + (((game-task-actor damus-wasdoors)) + "damus-wasdoors" + ) + (((game-task-actor unused-slot-17)) + "unused-slot-17" + ) + (((game-task-actor damus-desert)) + "damus-desert" + ) + (((game-task-actor unused-slot-14)) + "unused-slot-14" + ) + (((game-task-actor minimap)) + "minimap" + ) + (((game-task-actor sig-wasdoors)) + "sig-wasdoors" + ) + (((game-task-actor jinx-hiphog)) + "jinx-hiphog" + ) + (((game-task-actor gun-gungame)) + "gun-gungame" + ) + (((game-task-actor torn-freehq)) + "torn-freehq" + ) + (((game-task-actor unused-slot-20)) + "unused-slot-20" + ) + (((game-task-actor torn-hipbooth)) + "torn-hipbooth" + ) + (((game-task-actor kleever-wasdoors)) + "kleever-wasdoors" + ) + (((game-task-actor was-pre-game-deserte)) + "was-pre-game-deserte" + ) + (((game-task-actor keira-garage)) + "keira-garage" + ) + (((game-task-actor damus-waspal)) + "damus-waspal" + ) + (((game-task-actor keira-freehq)) + "keira-freehq" + ) + (((game-task-actor samos-freehq)) + "samos-freehq" + ) + (((game-task-actor unused-slot-9)) + "unused-slot-9" + ) + (((game-task-actor unused-slot-10)) + "unused-slot-10" + ) + (((game-task-actor unused-slot-23)) + "unused-slot-23" + ) + (((game-task-actor onin-freehq)) + "onin-freehq" + ) + (((game-task-actor kleever-wascityb)) + "kleever-wascityb" + ) + (((game-task-actor samos-onintent)) + "samos-onintent" + ) + (((game-task-actor ashelin-talkbox)) + "ashelin-talkbox" + ) + (((game-task-actor kleever-arena)) + "kleever-arena" + ) + (((game-task-actor tess-gungame)) + "tess-gungame" + ) + (((game-task-actor none)) + "none" + ) + (((game-task-actor seem-leaper)) + "seem-leaper" + ) + (((game-task-actor unused-slot-13)) + "unused-slot-13" + ) + (((game-task-actor damus-wascity)) + "damus-wascity" + ) + (((game-task-actor unused-slot-26)) + "unused-slot-26" + ) + (((game-task-actor monk-mummy)) + "monk-mummy" + ) + (((game-task-actor onin-talkbox)) + "onin-talkbox" + ) + (((game-task-actor unused-slot-29)) + "unused-slot-29" + ) + (((game-task-actor unused-slot-8)) + "unused-slot-8" + ) + (((game-task-actor vin-vinroom)) + "vin-vinroom" + ) + (((game-task-actor torn-hiphog)) + "torn-hiphog" + ) + (((game-task-actor sig-nest)) + "sig-nest" + ) + (((game-task-actor daxter)) + "daxter" + ) + (((game-task-actor samos-talkbox)) + "samos-talkbox" + ) + (((game-task-actor seem-wascitya)) + "seem-wascitya" + ) + (((game-task-actor unused-slot-19)) + "unused-slot-19" + ) + (((game-task-actor ashelin-freehq)) + "ashelin-freehq" + ) + (((game-task-actor wascity-leaper)) + "wascity-leaper" + ) + (((game-task-actor unused-slot-16)) + "unused-slot-16" + ) + (((game-task-actor veger-cave)) + "veger-cave" + ) + (((game-task-actor sig-talkbox)) + "sig-talkbox" + ) + (((game-task-actor wascity-turret)) + "wascity-turret" + ) + (((game-task-actor unused-slot-22)) + "unused-slot-22" + ) + (((game-task-actor power-game-vinroom)) + "power-game-vinroom" + ) + (((game-task-actor was-pre-game-wascityb)) + "was-pre-game-wascityb" + ) + (((game-task-actor damus-arena)) + "damus-arena" + ) + (((game-task-actor keira-genb)) + "keira-genb" + ) + (((game-task-actor samos-genb)) + "samos-genb" + ) + (((game-task-actor unused-slot-31)) + "unused-slot-31" + ) + (((game-task-actor unused-slot-12)) + "unused-slot-12" + ) + (((game-task-actor unused-slot-28)) + "unused-slot-28" + ) + (((game-task-actor torn-hiptable)) + "torn-hiptable" + ) + (((game-task-actor unused-slot-25)) + "unused-slot-25" + ) + (((game-task-actor ashelin-oasis)) + "ashelin-oasis" + ) + (((game-task-actor onin-onintent)) + "onin-onintent" + ) + (((game-task-actor pecker)) + "pecker" + ) + (((game-task-actor unused-slot-15)) + "unused-slot-15" + ) + (((game-task-actor unused-slot-18)) + "unused-slot-18" + ) + (((game-task-actor damus-ruins)) + "damus-ruins" + ) + (((game-task-actor veger-ruins)) + "veger-ruins" + ) + (((game-task-actor kleever-pen)) + "kleever-pen" + ) + (((game-task-actor torn-hipbar)) + "torn-hipbar" + ) + (((game-task-actor oracle-oracle)) + "oracle-oracle" + ) + (((game-task-actor unused-slot-21)) + "unused-slot-21" + ) + (((game-task-actor seem-temple)) + "seem-temple" + ) + (((game-task-actor seem-wascity)) + "seem-wascity" + ) + (((game-task-actor unused-slot-30)) + "unused-slot-30" + ) + (((game-task-actor pecker-onintent)) + "pecker-onintent" + ) + (((game-task-actor unused-slot-11)) + "unused-slot-11" + ) + (((game-task-actor monk-wascity)) + "monk-wascity" + ) + (((game-task-actor unused-slot-24)) + "unused-slot-24" + ) + (((game-task-actor unused-slot-27)) + "unused-slot-27" + ) + (else + "*unknown*" + ) + ) + ) + +(defun-debug game-task-action->string ((arg0 game-task-action)) + (case arg0 + (((game-task-action idle)) + "idle" + ) + (((game-task-action play)) + "play" + ) + (((game-task-action show)) + "show" + ) + (((game-task-action talk)) + "talk" + ) + (((game-task-action hide)) + "hide" + ) + (((game-task-action say)) + "say" + ) + (((game-task-action trade)) + "trade" + ) + (((game-task-action menu)) + "menu" + ) + (else + "*unknown*" + ) + ) + ) + +(defun-debug game-task-medal->string ((arg0 game-task-medal)) + (case arg0 + (((game-task-medal bronze)) + "bronze" + ) + (((game-task-medal silver)) + "silver" + ) + (((game-task-medal gold)) + "gold" + ) + (((game-task-medal none)) + "none" + ) + (else + "*unknown*" + ) + ) + ) + +(deftype game-task-event (basic) + ((actor game-task-actor) + (action game-task-action) + (tex game-task-icon) + (icon uint16 :overlay-at tex) + (flags game-task-flags :offset 7) + (scene string :offset 8) + (distance meters) + ) + ) + + +(defun-debug game-task-node-flag->string ((arg0 game-task-node-flag)) + (if (= (logand (game-task-node-flag boss-battle) arg0) (game-task-node-flag boss-battle)) + (format #t "boss-battle ") + ) + (if (= (logand arg0 (game-task-node-flag clear-task-mask)) (game-task-node-flag clear-task-mask)) + (format #t "clear-task-mask ") + ) + (if (= (logand arg0 (game-task-node-flag haven-city)) (game-task-node-flag haven-city)) + (format #t "haven-city ") + ) + (if (= (logand arg0 (game-task-node-flag unlocked)) (game-task-node-flag unlocked)) + (format #t "unlocked ") + ) + (if (= (logand arg0 (game-task-node-flag kras-city)) (game-task-node-flag kras-city)) + (format #t "kras-city ") + ) + (if (= (logand (game-task-node-flag qualifier) arg0) (game-task-node-flag qualifier)) + (format #t "qualifier ") + ) + (if (= (logand arg0 (game-task-node-flag cup4)) (game-task-node-flag cup4)) + (format #t "cup4 ") + ) + (if (= (logand arg0 (game-task-node-flag set-task-mask)) (game-task-node-flag set-task-mask)) + (format #t "set-task-mask ") + ) + (if (= (logand arg0 (game-task-node-flag closed)) (game-task-node-flag closed)) + (format #t "closed ") + ) + (if (= (logand arg0 (game-task-node-flag cup3)) (game-task-node-flag cup3)) + (format #t "cup3 ") + ) + (if (= (logand arg0 (game-task-node-flag data)) (game-task-node-flag data)) + (format #t "data ") + ) + (if (= (logand (game-task-node-flag grand-prix) arg0) (game-task-node-flag grand-prix)) + (format #t "grand-prix ") + ) + (if (= (logand arg0 (game-task-node-flag cup2)) (game-task-node-flag cup2)) + (format #t "cup2 ") + ) + (if (= (logand arg0 (game-task-node-flag close-task)) (game-task-node-flag close-task)) + (format #t "close-task ") + ) + (if (= (logand arg0 (game-task-node-flag icelands)) (game-task-node-flag icelands)) + (format #t "icelands ") + ) + (if (= (logand arg0 (game-task-node-flag cup1)) (game-task-node-flag cup1)) + (format #t "cup1 ") + ) + (if (= (logand arg0 (game-task-node-flag abs-task-mask)) (game-task-node-flag abs-task-mask)) + (format #t "abs-task-mask ") + ) + (if (= (logand (game-task-node-flag score-lower-is-better) arg0) (game-task-node-flag score-lower-is-better)) + (format #t "score-lower-is-better ") + ) + (if (= (logand arg0 (game-task-node-flag spargus)) (game-task-node-flag spargus)) + (format #t "spargus ") + ) + (if (= (logand arg0 (game-task-node-flag intro-b)) (game-task-node-flag intro-b)) + (format #t "intro-b ") + ) + ) + +(defun-debug game-task-node-command->string ((arg0 game-task-node-command)) + (case arg0 + (((game-task-node-command sub-board-trail)) + "sub-board-trail" + ) + (((game-task-node-command add-gun-yellow-1)) + "add-gun-yellow-1" + ) + (((game-task-node-command add-gun-yellow-2)) + "add-gun-yellow-2" + ) + (((game-task-node-command add-board-trail)) + "add-board-trail" + ) + (((game-task-node-command add-vehicle-snake)) + "add-vehicle-snake" + ) + (((game-task-node-command add-board-zap)) + "add-board-zap" + ) + (((game-task-node-command add-darkjak-smack)) + "add-darkjak-smack" + ) + (((game-task-node-command add-gun-yellow-ammo-2)) + "add-gun-yellow-ammo-2" + ) + (((game-task-node-command add-gun-red-1)) + "add-gun-red-1" + ) + (((game-task-node-command add-star-map)) + "add-star-map" + ) + (((game-task-node-command add-darkeco)) + "add-darkeco" + ) + (((game-task-node-command add-darkjak)) + "add-darkjak" + ) + (((game-task-node-command add-light-eco-crystal)) + "add-light-eco-crystal" + ) + (((game-task-node-command add-gun-blue-2)) + "add-gun-blue-2" + ) + (((game-task-node-command add-gun-dark-3)) + "add-gun-dark-3" + ) + (((game-task-node-command add-av-cube)) + "add-av-cube" + ) + (((game-task-node-command add-board-training)) + "add-board-training" + ) + (((game-task-node-command add-vehicle-toad)) + "add-vehicle-toad" + ) + (((game-task-node-command add-darkjak-tracking)) + "add-darkjak-tracking" + ) + (((game-task-node-command none)) + "none" + ) + (((game-task-node-command add-lighteco)) + "add-lighteco" + ) + (((game-task-node-command add-artifact-invis)) + "add-artifact-invis" + ) + (((game-task-node-command add-seal)) + "add-seal" + ) + (((game-task-node-command add-darkjak-bomb0)) + "add-darkjak-bomb0" + ) + (((game-task-node-command add-amulet-1)) + "add-amulet-1" + ) + (((game-task-node-command add-gun-red-ammo-2)) + "add-gun-red-ammo-2" + ) + (((game-task-node-command add-vehicle-scorpion)) + "add-vehicle-scorpion" + ) + (((game-task-node-command add-gun-blue-1)) + "add-gun-blue-1" + ) + (((game-task-node-command sub-sidekick)) + "sub-sidekick" + ) + (((game-task-node-command add-av-generator)) + "add-av-generator" + ) + (((game-task-node-command add-sidekick)) + "add-sidekick" + ) + (((game-task-node-command add-pass-indb-sluma)) + "add-pass-indb-sluma" + ) + (((game-task-node-command add-amulet-2)) + "add-amulet-2" + ) + (((game-task-node-command add-vehicle-turtle)) + "add-vehicle-turtle" + ) + (((game-task-node-command add-gun-yellow-ammo-1)) + "add-gun-yellow-ammo-1" + ) + (((game-task-node-command add-dark-eco-crystal)) + "add-dark-eco-crystal" + ) + (((game-task-node-command add-pass-port-inda)) + "add-pass-port-inda" + ) + (((game-task-node-command add-gun-dark-2)) + "add-gun-dark-2" + ) + (((game-task-node-command add-av-prism)) + "add-av-prism" + ) + (((game-task-node-command add-vehicle-rhino)) + "add-vehicle-rhino" + ) + (((game-task-node-command add-board-launch)) + "add-board-launch" + ) + (((game-task-node-command add-armor-3)) + "add-armor-3" + ) + (((game-task-node-command add-cypher-gliph)) + "add-cypher-gliph" + ) + (((game-task-node-command add-pass-port-mh)) + "add-pass-port-mh" + ) + (((game-task-node-command add-armor-2)) + "add-armor-2" + ) + (((game-task-node-command add-darkjak-bomb1)) + "add-darkjak-bomb1" + ) + (((game-task-node-command add-armor-1)) + "add-armor-1" + ) + (((game-task-node-command add-pass-front-gate)) + "add-pass-front-gate" + ) + (((game-task-node-command add-lightjak-swoop)) + "add-lightjak-swoop" + ) + (((game-task-node-command add-gun-blue-3)) + "add-gun-blue-3" + ) + (((game-task-node-command add-pass-slumb-genb)) + "add-pass-slumb-genb" + ) + (((game-task-node-command add-armor-0)) + "add-armor-0" + ) + (((game-task-node-command add-lightjak-shield)) + "add-lightjak-shield" + ) + (((game-task-node-command add-lightjak-regen)) + "add-lightjak-regen" + ) + (((game-task-node-command add-gun-blue-ammo-1)) + "add-gun-blue-ammo-1" + ) + (((game-task-node-command add-gun-blue-ammo-2)) + "add-gun-blue-ammo-2" + ) + (((game-task-node-command add-gun-red-ammo-1)) + "add-gun-red-ammo-1" + ) + (((game-task-node-command add-gun-red-3)) + "add-gun-red-3" + ) + (((game-task-node-command sub-board)) + "sub-board" + ) + (((game-task-node-command add-gun-red-2)) + "add-gun-red-2" + ) + (((game-task-node-command add-lightjak-freeze)) + "add-lightjak-freeze" + ) + (((game-task-node-command add-darkjak-invinc)) + "add-darkjak-invinc" + ) + (((game-task-node-command add-board)) + "add-board" + ) + (((game-task-node-command add-pass-inda-indb)) + "add-pass-inda-indb" + ) + (((game-task-node-command add-gun-dark-ammo-2)) + "add-gun-dark-ammo-2" + ) + (((game-task-node-command add-gun-dark-1)) + "add-gun-dark-1" + ) + (((game-task-node-command add-av-map)) + "add-av-map" + ) + (((game-task-node-command add-gun-yellow-3)) + "add-gun-yellow-3" + ) + (((game-task-node-command add-gun-dark-ammo-1)) + "add-gun-dark-ammo-1" + ) + (((game-task-node-command add-jakc)) + "add-jakc" + ) + (((game-task-node-command add-amulet-3)) + "add-amulet-3" + ) + (((game-task-node-command add-av-reflector)) + "add-av-reflector" + ) + (((game-task-node-command add-lightjak)) + "add-lightjak" + ) + (else + "*unknown*" + ) + ) + ) + +(deftype game-task-node-stats (structure) + ((death-count uint8) + (vehicle uint8) + (medal uint8) + (ranking uint8) + (score float) + (time float) + (duration float) + (order uint16) + (end-mode uint16) + (cash uint32) + (tuning uint32) + ) + ) + + +(deftype game-task-advanced-options (structure) + ((data uint8 8) + (weapons uint32 :overlay-at (-> data 0)) + (flags uint8 :overlay-at (-> data 4)) + (param1 uint8 :overlay-at (-> data 5)) + (param2 uint8 :overlay-at (-> data 6)) + (param3 uint8 :overlay-at (-> data 7)) + (lword uint64 :overlay-at (-> data 0)) + ) + :pack-me + ) + + +(deftype game-task-node-info (basic) + ((level symbol) + (task uint8) + (net-play-mode uint8) + (name string) + (max-humans int8) + (max-cpu int8) + (min-players int8) + (when-open (array game-task-event)) + (flags game-task-node-flag) + (task-mask task-mask) + (borrow pair) + (close-time uint32) + (description text-id) + (intro-scene basic) + (outro-scene basic) + (time-of-day int32) + (task-sound-description basic) + (ipu basic) + (gold-array uint32 2) + (silver-array uint32 2) + (bronze-array uint32 2) + (gold float :overlay-at (-> gold-array 0)) + (silver float :overlay-at (-> silver-array 0)) + (bronze float :overlay-at (-> bronze-array 0)) + (gold-hero float :overlay-at (-> gold-array 1)) + (silver-hero float :overlay-at (-> silver-array 1)) + (bronze-hero float :overlay-at (-> bronze-array 1)) + (medals-data uint32) + (medals game-task-medal 4 :overlay-at medals-data) + (unlocked uint8 :overlay-at (-> medals 2)) + (game-score-index uint8 :overlay-at (-> medals 3)) + (adv-score int16) + (exb-score int16) + (ai-tuning-indices basic) + (sound-bank basic) + (play-count uint32) + (time-limit uint32) + (ai-difficulty uint8) + (ai-easier-after uint8) + (ai-min-difficulty uint8) + (ai-difficulty-step uint8) + (default-advanced-options game-task-advanced-options :inline) + (user-advanced-options game-task-advanced-options :inline) + (default-advanced-options-adventure game-task-advanced-options :inline) + (adventure-drivers basic) + (race-start-speech basic) + (gp-start-speech basic) + (gp-win-speech basic) + (gp-finish-speech basic) + (high-scores-default basic) + (high-scores basic) + ) + (:methods + (game-task-node-info-method-9 () none) + (game-task-node-info-method-10 () none) + (game-task-node-info-method-11 () none) + (game-task-node-info-method-12 () none) + (game-task-node-info-method-13 () none) + ) + ) + + +(deftype game-task-info (basic) + ((name string) + (task-level uint8) + (text-name text-id) + (text-id-long uint32) + (single-player basic) + (kiosk-play-node uint16) + (play-node uint16) + (play-continue string) + (split-continue basic) + (kiosk-play-continue object) + (kiosk-online-play-continue basic) + ) + (:methods + (game-task-info-method-9 () none) + ) + ) + + +(deftype game-task-control (basic) + ((counter uint32) + (actor game-task-actor) + (current-node game-task-node) + (current-event game-task-event) + ) + (:methods + (new (symbol type) _type_) + (game-task-control-method-9 () none) + ) + ) + + +(deftype ambient-control (structure) + ((last-ambient-time uint64) + (last-ambient string) + (last-ambient-id sound-id) + ) + (:methods + (ambient-control-method-9 () none) + (ambient-control-method-10 () none) + (ambient-control-method-11 () none) + ) + ) + + +(define *traffic-engine* (the-as engine #f)) + +(deftype game-movie (structure) + ((name basic) + (score uint16) + (flags uint16) + (cup uint32) + ) + ) + + +(deftype grand-prix (structure) + ((name basic) + (score uint16) + (flags uint16) + (saved-data2 uint16 2) + (saved-data uint32 :overlay-at (-> saved-data2 0)) + (trophy uint16 :overlay-at (-> saved-data2 0)) + (play-count uint16 :overlay-at (-> saved-data2 1)) + (drivers basic) + (task uint16 3) + (task1 uint16 :overlay-at (-> task 0)) + (task2 uint16 :overlay-at (-> task 1)) + (task3 uint16 :overlay-at (-> task 2)) + (cup uint32) + (intro basic) + (outro basic) + (ai-tuning-indices1 basic) + (ai-tuning-indices2 basic) + (ai-tuning-indices3 basic) + (sound-description basic) + (boss uint16) + (boss-drivers basic) + ) + :pack-me + :allow-misaligned + ) + + +(define *game-movie* (new 'static 'boxed-array :type game-movie + (new 'static 'game-movie :name "2-first-race-res" :score #x1 :cup #x80) + (new 'static 'game-movie :name "3-daxter-poison-real" :score #x4 :cup #x80) + (new 'static 'game-movie :name "10-jak-faces-razer" :score #x11 :cup #x80) + (new 'static 'game-movie :name "12-pecker-added-to-show" :score #x16 :cup #x80) + (new 'static 'game-movie :name "4-blitz-earn-gadgets" :score #x1e :cup #x80) + (new 'static 'game-movie :name "81-sig-returns" :score #x2a :cup #x80) + (new 'static 'game-movie :name "006-keira-wants-to-race" :score #xa :cup #x100) + (new 'static 'game-movie :name "38-kleiver-shows-up" :score #x10 :cup #x100) + (new 'static 'game-movie :name "62-kleiver-bush-bash" :score #x16 :cup #x100) + (new 'static 'game-movie :name "18-blitz-sport-big" :score #x1d :cup #x100) + (new 'static 'game-movie :name "005-jungle-back-in-haven" :score #x26 :cup #x100) + (new 'static 'game-movie :name "52-daxter-wax-job" :score #x2c :cup #x100) + (new 'static 'game-movie :name "84-krews-diary" :score #x7 :cup #x200) + (new 'static 'game-movie :name "100-can-we-trust-mizo" :score #xe :cup #x200) + (new 'static 'game-movie :name "125-razer-gets-nasty" :score #x19 :cup #x200) + (new 'static 'game-movie :name "47-blitzs-father-died" :score #x20 :cup #x200) + (new 'static 'game-movie :name "139-blitz-father-killed" :score #x1 :cup #x400) + (new 'static 'game-movie :name "157-jak-killed-krew" :score #x12 :cup #x400) + (new 'static 'game-movie :name "164-blitz-bares-all" :score #x28 :cup #x400) + ) + ) diff --git a/goal_src/jakx/engine/geometry/bounding-box.gc b/goal_src/jakx/engine/geometry/bounding-box.gc index ab5df16c71..5f6594b0ed 100644 --- a/goal_src/jakx/engine/geometry/bounding-box.gc +++ b/goal_src/jakx/engine/geometry/bounding-box.gc @@ -7,3 +7,376 @@ ;; DECOMP BEGINS +(defmethod inside-xyz? ((this bounding-box) (arg0 vector)) + "Is the point in the box?" + (and (< (-> this min x) (-> arg0 x)) + (< (-> this min y) (-> arg0 y)) + (< (-> this min z) (-> arg0 z)) + (< (-> arg0 x) (-> this max x)) + (< (-> arg0 y) (-> this max y)) + (< (-> arg0 z) (-> this max z)) + ) + ) + +(defmethod inside-xz? ((this bounding-box) (arg0 vector)) + "Is the point in the box? Check xz only." + (and (< (-> this min x) (-> arg0 x)) + (< (-> this min z) (-> arg0 z)) + (< (-> arg0 x) (-> this max x)) + (< (-> arg0 z) (-> this max z)) + ) + ) + +(defun box-vector-enside? ((arg0 bounding-box) (arg1 vector)) + "Is the point in the box? On the edge doesn't count." + (and (< (-> arg0 min x) (-> arg1 x)) + (< (-> arg0 min y) (-> arg1 y)) + (< (-> arg0 min z) (-> arg1 z)) + (< (-> arg1 x) (-> arg0 max x)) + (< (-> arg1 y) (-> arg0 max y)) + (< (-> arg1 z) (-> arg0 max z)) + ) + ) + +(defun box-vector-inside? ((arg0 bounding-box) (arg1 vector)) + "Is the point in the box? On the edge counts." + (and (>= (-> arg1 x) (-> arg0 min x)) + (>= (-> arg1 y) (-> arg0 min y)) + (>= (-> arg1 z) (-> arg0 min z)) + (>= (-> arg0 max x) (-> arg1 x)) + (>= (-> arg0 max y) (-> arg1 y)) + (>= (-> arg0 max z) (-> arg1 z)) + ) + ) + +(defmethod bounding-box-method-21 ((this bounding-box) (arg0 (inline-array vector))) + (dotimes (v1-0 3) + (if (or (< (-> (&-> arg0 0 data v1-0) 4) (-> this min data v1-0)) + (< (-> this max data v1-0) (-> (&-> arg0 0 data v1-0) 0)) + ) + (return #f) + ) + ) + #t + ) + +(defmethod set-from-point-offset! ((this bounding-box) (arg0 vector) (arg1 vector)) + "Set to the smallest box containing arg0, (arg0 + arg1)" + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (.lvf vf3 (&-> arg1 quad)) + (.lvf vf4 (&-> arg0 quad)) + (.add.vf vf5 vf4 vf3) + (.min.vf vf1 vf4 vf5) + (.max.vf vf2 vf4 vf5) + (.mov.vf.w vf1 vf0) + (.mov.vf.w vf2 vf0) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + 0 + (none) + ) + ) + +(defmethod add-point! ((this bounding-box) (arg0 vector)) + "Expand the box as needed to contain the given point." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + ) + (.lvf vf1 (&-> this min quad)) + (.lvf vf2 (&-> this max quad)) + (.lvf vf3 (&-> arg0 quad)) + (.min.vf vf1 vf1 vf3) + (.max.vf vf2 vf2 vf3) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + 0 + (none) + ) + ) + +(defmethod add-box! ((this bounding-box) (arg0 bounding-box)) + "Expand the box as needed to contain the given box." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + ) + (.lvf vf1 (&-> this min quad)) + (.lvf vf2 (&-> this max quad)) + (.lvf vf3 (&-> arg0 min quad)) + (.lvf vf4 (&-> arg0 max quad)) + (.min.vf vf1 vf1 vf3) + (.max.vf vf2 vf2 vf4) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + 0 + ) + ) + +(defmethod set-to-point! ((this bounding-box) (arg0 vector)) + "Set the box to be a single point." + (set! (-> this min quad) (-> arg0 quad)) + (set! (-> this max quad) (-> arg0 quad)) + 0 + (none) + ) + +(defmethod set-from-point-offset-pad! ((this bounding-box) (arg0 vector) (arg1 vector) (arg2 float)) + "Set the box to contain arg0, arg0 + offset, with some padding." + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (.lvf vf4 (&-> arg1 quad)) + (.lvf vf5 (&-> arg0 quad)) + (.mov vf1 arg2) + (.add.vf vf6 vf5 vf4) + (.min.vf vf2 vf5 vf6) + (.max.vf vf3 vf5 vf6) + (.add.x.vf.xyz vf3 vf3 vf1) + (.sub.x.vf.xyz vf2 vf2 vf1) + (.mov.vf.w vf2 vf0) + (.mov.vf.w vf3 vf0) + (.svf (&-> this min quad) vf2) + (.svf (&-> this max quad) vf3) + 0 + ) + ) + +(defmethod set-from-sphere! ((this bounding-box) (arg0 sphere)) + "Set the box to contain a single sphere." + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + ) + (init-vf0-vector) + (.lvf vf1 (&-> arg0 quad)) + (.sub.w.vf.xyz vf2 vf1 vf1) + (.add.w.vf.xyz vf3 vf1 vf1) + (.mov.vf.w vf2 vf0) + (.mov.vf.w vf3 vf0) + (.svf (&-> this min quad) vf2) + (.svf (&-> this max quad) vf3) + 0 + (none) + ) + ) + +(defmethod set-from-spheres! ((this bounding-box) (spheres (inline-array sphere)) (count int)) + "Reset box to hold the given spheres. Note: this implementation could be optimized." + ;; This is also unrolled, but does 7 at a time. + (rlet ((vf0 :class vf) + (current-min :class vf) + (current-max :class vf) + (sph-min :class vf) + (sph-max :class vf) + (sph :class vf)) + ;; init constant + (init-vf0-vector) + ;; init min/max. in the case we don't have any spheres, we should return (0,0,0,1) for min/max. + (set! current-min vf0) + (set! current-max vf0) + + (dotimes (i count) + (.lvf sph (-> spheres i)) + (.sub.w.vf.xyz sph-min sph sph) + (.add.w.vf.xyz sph-max sph sph) + (cond + ((zero? i) + (set! current-min sph-min) + (set! current-max sph-max) + ) + (else + (.min.vf.xyz current-min current-min sph-min) + (.max.vf.xyz current-max current-max sph-max) + ) + ) + ) + + (.svf (-> this min) current-min) + (.svf (-> this max) current-max) + ) + 0 + ) + +(defmethod add-spheres! ((this bounding-box) (arg0 (inline-array sphere)) (arg1 int)) + "Add count spheres." + (rlet ((vf1 :class vf) + (vf10 :class vf) + (vf11 :class vf) + (vf12 :class vf) + (vf13 :class vf) + (vf14 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + (vf9 :class vf) + ) + (nop!) + (b! (zero? arg1) cfg-7 :delay (.lvf vf3 (&-> arg0 0 quad))) + (nop!) + (.lvf vf4 (&-> arg0 1 quad)) + (nop!) + (.lvf vf5 (&-> arg0 2 quad)) + (nop!) + (.lvf vf6 (&-> arg0 3 quad)) + (nop!) + (.lvf vf1 (&-> this min quad)) + (nop!) + (.lvf vf2 (&-> this max quad)) + (label cfg-2) + (.sub.w.vf.xyz vf7 vf3 vf3) + (set! arg0 (the-as (inline-array sphere) (-> arg0 4))) + (.add.w.vf.xyz vf8 vf3 vf3) + (nop!) + (.sub.w.vf.xyz vf9 vf4 vf4) + (nop!) + (.add.w.vf.xyz vf10 vf4 vf4) + (.lvf vf3 (&-> (the-as sphere arg0) quad)) + (let ((v1-0 (+ arg1 -1))) + (.min.vf.xyz vf1 vf1 vf7) + (b! (zero? v1-0) cfg-6 :delay (.max.vf.xyz vf2 vf2 vf8)) + (.sub.w.vf.xyz vf11 vf5 vf5) + (.lvf vf4 (&-> arg0 1 quad)) + (.add.w.vf.xyz vf12 vf5 vf5) + (nop!) + (let ((v1-1 (+ v1-0 -1))) + (.min.vf.xyz vf1 vf1 vf9) + (b! (zero? v1-1) cfg-6 :delay (.max.vf.xyz vf2 vf2 vf10)) + (.sub.w.vf.xyz vf13 vf6 vf6) + (.lvf vf5 (&-> arg0 2 quad)) + (.add.w.vf.xyz vf14 vf6 vf6) + (nop!) + (let ((v1-2 (+ v1-1 -1))) + (.min.vf.xyz vf1 vf1 vf11) + (b! (zero? v1-2) cfg-6 :delay (.max.vf.xyz vf2 vf2 vf12)) + (nop!) + (.lvf vf6 (&-> arg0 3 quad)) + (set! arg1 (+ v1-2 -1)) + ) + ) + ) + (.min.vf.xyz vf1 vf1 vf13) + (b! (nonzero? arg1) cfg-2 :delay (.max.vf.xyz vf2 vf2 vf14)) + (label cfg-6) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + (label cfg-7) + 0 + ) + ) + +(defmethod get-bounding-sphere ((this bounding-box) (arg0 vector)) + "Get a bounding sphere for a bounding box." + (rlet ((vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (let* ((a1-2 (vector-! (new 'stack-no-clear 'vector) (-> this max) (-> this min))) + (a0-3 (vector-float*! (new 'stack-no-clear 'vector) a1-2 0.5)) + ) + (let ((v1-1 arg0)) + (let ((a1-3 (-> this min)) + (a2-1 a0-3) + ) + (.lvf vf4 (&-> a1-3 quad)) + (.lvf vf5 (&-> a2-1 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> v1-1 quad) vf6) + ) + (set! (-> arg0 w) (vector-length a0-3)) + ) + arg0 + ) + ) + +(deftype liang-barsky-line-clip-params (structure) + ((te float) + (tl float) + ) + ) + + +(defun liang-barsky-line-clipt ((arg0 liang-barsky-line-clip-params) (arg1 float) (arg2 float)) + "Clip test in 1 dimension. Is arg1 in arg2?" + (cond + ((< 0.0 arg1) + (let ((f0-2 (/ arg2 arg1))) + (if (< (-> arg0 tl) f0-2) + (return #f) + ) + (if (< (-> arg0 te) f0-2) + (set! (-> arg0 te) f0-2) + ) + ) + ) + ((< arg1 0.0) + (let ((f0-5 (/ arg2 arg1))) + (if (< f0-5 (-> arg0 te)) + (return #f) + ) + (if (< f0-5 (-> arg0 tl)) + (set! (-> arg0 tl) f0-5) + ) + ) + ) + (else + (if (< 0.0 arg2) + (return #f) + ) + ) + ) + #t + ) + +;; WARN: disable def twice: 23. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. +(defmethod intersects-line-segment? ((this bounding-box) (arg0 vector) (arg1 vector)) + "Check intersection in xz plane, using liang-barsky. Not sure if this actually + a useful check or not..." + (let ((f28-0 (- (-> arg1 x) (-> arg0 x))) + (f30-0 (- (-> arg1 z) (-> arg0 z))) + ) + (cond + ((and (= f28-0 0.0) (= f30-0 0.0)) + (let ((f1-2 (-> arg0 x)) + (f0-4 (-> arg0 z)) + ) + (and (>= f1-2 (-> this min x)) (>= (-> this max x) f1-2) (>= f0-4 (-> this min z)) (>= (-> this max z) f0-4)) + ) + ) + (else + (let ((s4-0 (new 'stack-no-clear 'liang-barsky-line-clip-params))) + (set! (-> s4-0 te) 0.0) + (set! (-> s4-0 tl) 1.0) + (and (liang-barsky-line-clipt s4-0 f28-0 (- (-> this min x) (-> arg0 x))) + (liang-barsky-line-clipt s4-0 (- f28-0) (- (-> arg0 x) (-> this max x))) + (liang-barsky-line-clipt s4-0 f30-0 (- (-> this min z) (-> arg0 z))) + (liang-barsky-line-clipt s4-0 (- f30-0) (- (-> arg0 z) (-> this max z))) + ) + ) + ) + ) + ) + ) diff --git a/goal_src/jakx/engine/geometry/path-h.gc b/goal_src/jakx/engine/geometry/path-h.gc index 79d8c1ac48..60282968e7 100644 --- a/goal_src/jakx/engine/geometry/path-h.gc +++ b/goal_src/jakx/engine/geometry/path-h.gc @@ -20,3 +20,307 @@ ;; DECOMP BEGINS +(defun get-knot-name ((arg0 symbol)) + (case arg0 + (('path) + 'path-k + ) + (('flow) + 'flow-k + ) + (('intro) + 'intro-k + ) + (('pathshort) + 'pathshort-k + ) + (('patha) + 'patha-k + ) + (('pathb) + 'pathb-k + ) + (else + (format + 0 + "WARNING: curve-control is being asked to look up an unknown name '~A', it will have to do so by string.~%" + arg0 + ) + (let ((s5-0 string->symbol)) + (format (clear *temp-string*) "~A-k" arg0) + (s5-0 *temp-string*) + ) + ) + ) + ) + +(defun get-distmap-name ((arg0 symbol)) + (case arg0 + (('path) + 'path-distmap + ) + (('intro) + 'intro-distmap + ) + (else + #f + ) + ) + ) + +(deftype path-control (basic) + "The path-control is a reference a path data, which is just a list of points. +Although it contains a `curve`, the knot part is not populated, so it's just treated as +a bunch of line segments from the control points. +The child class curve-control does fill out the knot data and is a proper b-spline. +These path-controls are typically allocated on a process heap." + ((flags path-control-flag) + (name symbol) + (process process-drawable) + (distmap uint32) + (curve curve :inline) + (num-cverts int32 :overlay-at (-> curve num-cverts)) + (cverts uint32 :overlay-at (-> curve cverts)) + ) + (:methods + (new (symbol type process symbol float entity symbol) _type_) + (path-control-method-9 () none) + (path-control-method-10 () none) + (path-control-method-11 () none) + (path-control-method-12 () none) + (path-control-method-13 () none) + (path-control-method-14 () none) + (path-control-method-15 () none) + (path-control-method-16 () none) + (get-num-segments (_type_) float) + (path-control-method-18 () none) + (get-num-verts (_type_) int) + (segement-duration->path-duration (_type_ float) float) + (average-segment-length (_type_ float) float) + (path-control-method-22 () none) + (path-control-method-23 () none) + (path-control-method-24 () none) + (path-control-method-25 () none) + (path-control-method-26 () none) + (path-control-method-27 () none) + (path-control-method-28 () none) + (path-control-method-29 () none) + (path-control-method-30 () none) + (should-display-marks? (_type_) symbol) + (path-control-method-32 () none) + ) + ) + + +(set! (-> path-control method-table 9) nothing) + +(deftype curve-control (path-control) + "A curve-control is like a path control, but it has both control points and knot points." + () + (:methods + (new (symbol type process symbol res-lump symbol float) _type_) + (curve-control-method-33 () none) + (curve-control-method-34 () none) + ) + ) + + +;; ERROR: Stack slot load at 64 mismatch: defined as size 4, got size 16 +;; ERROR: Stack slot load at 64 mismatch: defined as size 4, got size 16 +;; WARN: Return type mismatch object vs path-control. +(defmethod new path-control ((allocation symbol) + (type-to-make type) + (arg0 process) + (arg1 symbol) + (arg2 float) + (arg3 entity) + (arg4 symbol) + ) + (let ((sv-64 arg2) + (s4-0 arg3) + (sv-48 arg4) + ) + (if (not s4-0) + (set! s4-0 (-> arg0 entity)) + ) + (when (= arg1 'path) + (let ((v0-0 (entity-actor-lookup s4-0 'path-actor 0))) + (if v0-0 + (set! s4-0 v0-0) + ) + ) + ) + (let ((s5-0 (the-as object 0))) + (let* ((s2-0 #f) + (sv-16 (new 'static 'res-tag)) + (sv-80 (res-lump-data s4-0 arg1 pointer :tag-ptr (& sv-16) :time sv-64)) + ) + (cond + (sv-80 + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as path-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as path-control s5-0)) + (set! (-> (the-as path-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as path-control s5-0) name) arg1) + (set! (-> (the-as path-control s5-0) curve cverts) (the-as (inline-array vector) sv-80)) + (set! (-> (the-as path-control s5-0) curve num-cverts) (the-as int (-> sv-16 elt-count))) + (cond + ((= arg1 'path) + (set! s2-0 'path-distmap) + ) + ((= arg1 'path-intro) + (set! s2-0 'path-intro-distmap) + ) + ) + (let* ((sv-32 0) + (v0-3 (res-lump-data s4-0 s2-0 pointer :tag-ptr (the-as (pointer res-tag) (& sv-32)))) + ) + (when v0-3 + (set! (-> (the-as path-control s5-0) distmap) (the-as uint v0-3)) + ((method-of-object (the-as path-control s5-0) path-control-method-30)) + ) + ) + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + (else + (when (not sv-48) + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as path-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as path-control s5-0)) + (logior! (-> (the-as path-control s5-0) flags) (path-control-flag not-found)) + (set! (-> (the-as path-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as path-control s5-0) name) arg1) + (set! (-> (the-as path-control s5-0) curve cverts) (the-as (inline-array vector) #f)) + (set! (-> (the-as path-control s5-0) curve num-cverts) 0) + 0 + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + ) + ) + ) + (the-as path-control s5-0) + ) + ) + ) + +(defmethod should-display-marks? ((this path-control)) + (and *display-path-marks* (logtest? (-> this flags) (path-control-flag display))) + ) + +(defmethod get-num-segments ((this path-control)) + (the float (+ (-> this curve num-cverts) -1)) + ) + +(defmethod get-num-verts ((this path-control)) + (-> this curve num-cverts) + ) + +(defmethod segement-duration->path-duration ((this path-control) (arg0 float)) + (* arg0 (get-num-segments this)) + ) + +(defmethod average-segment-length ((this path-control) (arg0 float)) + (/ arg0 (get-num-segments this)) + ) + +;; ERROR: Stack slot load at 80 mismatch: defined as size 4, got size 16 +;; ERROR: Stack slot load at 80 mismatch: defined as size 4, got size 16 +;; WARN: Return type mismatch object vs curve-control. +(defmethod new curve-control ((allocation symbol) + (type-to-make type) + (arg0 process) + (arg1 symbol) + (arg2 res-lump) + (arg3 symbol) + (arg4 float) + ) + (local-vars (r0-0 uint128) (v1-17 uint128)) + (let ((sv-64 arg3) + (sv-80 arg4) + ) + (if (not arg2) + (set! arg2 (-> arg0 entity)) + ) + (when (= arg1 'path) + (let ((v0-0 (entity-actor-lookup arg2 'path-actor 0))) + (if v0-0 + (set! arg2 v0-0) + ) + ) + ) + (let ((s5-0 (the-as object 0))) + (let* ((s4-0 (get-distmap-name arg1)) + (sv-112 (get-knot-name arg1)) + (sv-16 (new 'static 'res-tag)) + (sv-96 (res-lump-data arg2 arg1 pointer :tag-ptr (& sv-16) :time sv-80)) + ) + (cond + (sv-96 + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as curve-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as curve-control s5-0)) + (set! (-> (the-as curve-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as curve-control s5-0) name) arg1) + (set! (-> (the-as curve-control s5-0) curve cverts) (the-as (inline-array vector) sv-96)) + (set! (-> (the-as curve-control s5-0) curve num-cverts) (the-as int (-> sv-16 elt-count))) + (let* ((sv-32 0) + (v0-5 (res-lump-data arg2 sv-112 pointer :tag-ptr (the-as (pointer res-tag) (& sv-32)))) + ) + (when v0-5 + (set! (-> (the-as curve-control s5-0) curve knots) (the-as (pointer float) v0-5)) + (let ((v1-16 (the-as uint128 sv-32))) + (.pcpyud v1-17 v1-16 r0-0) + ) + (set! (-> (the-as curve-control s5-0) curve num-knots) (shr (* (the-as int v1-17) 2) 49)) + ) + ) + (let* ((sv-48 0) + (v0-6 (res-lump-data arg2 s4-0 pointer :tag-ptr (the-as (pointer res-tag) (& sv-48)))) + ) + (when v0-6 + (set! (-> (the-as curve-control s5-0) distmap) (the-as uint v0-6)) + ((method-of-object (the-as curve-control s5-0) path-control-method-30)) + ) + ) + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + (else + (when (not sv-64) + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as curve-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as curve-control s5-0)) + (logior! (-> (the-as curve-control s5-0) flags) (path-control-flag not-found)) + (set! (-> (the-as curve-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as curve-control s5-0) name) arg1) + (set! (-> (the-as curve-control s5-0) curve cverts) (the-as (inline-array vector) #f)) + (set! (-> (the-as curve-control s5-0) curve num-cverts) 0) + 0 + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + ) + ) + ) + (the-as curve-control s5-0) + ) + ) + ) diff --git a/goal_src/jakx/engine/gfx/background/subdivide.gc b/goal_src/jakx/engine/gfx/background/subdivide.gc index 09c506a3b9..9bb7af8148 100644 --- a/goal_src/jakx/engine/gfx/background/subdivide.gc +++ b/goal_src/jakx/engine/gfx/background/subdivide.gc @@ -7,3 +7,352 @@ ;; DECOMP BEGINS +(define *merc-global-stats* (new 'global 'merc-global-stats)) + +(defun clear-tr-stat ((arg0 tr-stat)) + "Reset all statistics to 0." + (set! (-> arg0 groups) (the-as uint 0)) + (set! (-> arg0 fragments) (the-as uint 0)) + (set! (-> arg0 tris) (the-as uint 0)) + (set! (-> arg0 dverts) (the-as uint 0)) + (set! (-> arg0 instances) (the-as uint 0)) + 0 + (none) + ) + +(define *stat-string-tfrag* (new 'global 'string 128 (the-as string #f))) + +(define *stat-string-tfrag-scissor* (new 'global 'string 128 (the-as string #f))) + +(define *stat-string-total* (new 'global 'string 128 (the-as string #f))) + +;; WARN: Return type mismatch uint vs none. +(defun-debug print-tr-stat ((arg0 tr-stat) (arg1 string) (arg2 string)) + "Print a single tr-stat to the screen." + (clear arg2) + (when (nonzero? (+ (-> arg0 groups) (-> arg0 fragments) (-> arg0 tris) (-> arg0 dverts) (-> arg0 instances))) + (format arg2 "~0k~4d ~5d ~6d ~6d" (-> arg0 groups) (-> arg0 fragments) (-> arg0 tris) (-> arg0 dverts)) + (format + arg2 + "~0k ~7f ~5d ~s" + (/ (* 2.0 (the float (-> arg0 tris))) (the float (- (-> arg0 dverts) (-> arg0 tris)))) + (-> arg0 instances) + arg1 + ) + (format *stdcon* "~S~%" arg2) + (+! (-> *terrain-stats* total groups) (-> arg0 groups)) + (+! (-> *terrain-stats* total fragments) (-> arg0 fragments)) + (+! (-> *terrain-stats* total tris) (-> arg0 tris)) + (+! (-> *terrain-stats* total dverts) (-> arg0 dverts)) + (+! (-> *terrain-stats* total instances) (-> arg0 instances)) + ) + (none) + ) + +(defun-debug print-terrain-stats () + "Print all tr-stats for renderers to the screen." + (format *stdcon* "~0k~%grps frags tris dverts strip insts~%") + (print-tr-stat (-> *terrain-stats* pris) "pris" *temp-string*) + (print-tr-stat (-> *merc-global-stats* merc) "merc" *temp-string*) + (print-tr-stat (-> *merc-global-stats* emerc) "emerc" *temp-string*) + (print-tr-stat (-> *merc-global-stats* mercneric) "mercneric" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-generic) "tie-generic" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-vanish) "tie-vanish" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie) "tie" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-scissor) "tie-scissor" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-envmap) "tie-envmap" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-envmap-scissor) "tie-envmap-scissor" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-trans) "tie-trans" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-scissor-trans) "tie-scissor-trans" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-envmap-trans) "tie-envmap-trans" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-envmap-scissor-trans) "tie-envmap-scissor-trans" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-water) "tie-water" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-scissor-water) "tie-scissor-water" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-envmap-water) "tie-envmap-water" *temp-string*) + (print-tr-stat (-> *terrain-stats* tie-envmap-scissor-water) "tie-envmap-scissor-water" *temp-string*) + (print-tr-stat (-> *terrain-stats* shrub-near) "shrub-near" *temp-string*) + (print-tr-stat (-> *terrain-stats* shrub) "shrub" *temp-string*) + (print-tr-stat (-> *terrain-stats* tfrag-scissor) "tfrag-scissor" *stat-string-tfrag-scissor*) + (print-tr-stat (-> *terrain-stats* tfrag) "tfrag" *stat-string-tfrag*) + (print-tr-stat (-> *terrain-stats* tfrag-trans) "tfrag-trans" *temp-string*) + (print-tr-stat (-> *terrain-stats* tfrag-scissor-trans) "tfrag-scissor-trans" *temp-string*) + (print-tr-stat (-> *terrain-stats* tfrag-water) "tfrag-water" *temp-string*) + (print-tr-stat (-> *terrain-stats* tfrag-scissor-water) "tfrag-scissor-water" *temp-string*) + (print-tr-stat (-> *terrain-stats* trans-pris) "trans-pris" *temp-string*) + (print-tr-stat (-> *terrain-stats* billboard) "billboard" *temp-string*) + (print-tr-stat (-> *terrain-stats* trans-shrub) "trans-shrub" *temp-string*) + (print-tr-stat (-> *terrain-stats* ocean-mid) "ocean-mid" *temp-string*) + (print-tr-stat (-> *terrain-stats* ocean-near) "ocean-near" *temp-string*) + (print-tr-stat (-> *terrain-stats* shadow) "shadow" *temp-string*) + (format *stdcon* "~0k---------------------------------------------------------------~%") + (print-tr-stat (-> *terrain-stats* total) "total" *stat-string-total*) + (clear-tr-stat (-> *terrain-stats* pris)) + (clear-tr-stat (-> *merc-global-stats* merc)) + (clear-tr-stat (-> *merc-global-stats* emerc)) + (clear-tr-stat (-> *merc-global-stats* mercneric)) + (clear-tr-stat (-> *terrain-stats* shrub-near)) + (clear-tr-stat (-> *terrain-stats* tie-generic)) + (clear-tr-stat (-> *terrain-stats* tie-vanish)) + (clear-tr-stat (-> *terrain-stats* tie)) + (clear-tr-stat (-> *terrain-stats* tie-scissor)) + (clear-tr-stat (-> *terrain-stats* tie-envmap)) + (clear-tr-stat (-> *terrain-stats* tie-envmap-scissor)) + (clear-tr-stat (-> *terrain-stats* tie-trans)) + (clear-tr-stat (-> *terrain-stats* tie-scissor-trans)) + (clear-tr-stat (-> *terrain-stats* tie-envmap-trans)) + (clear-tr-stat (-> *terrain-stats* tie-envmap-scissor-trans)) + (clear-tr-stat (-> *terrain-stats* tie-water)) + (clear-tr-stat (-> *terrain-stats* tie-scissor-water)) + (clear-tr-stat (-> *terrain-stats* tie-envmap-water)) + (clear-tr-stat (-> *terrain-stats* tie-envmap-scissor-water)) + (clear-tr-stat (-> *terrain-stats* shrub)) + (clear-tr-stat (-> *terrain-stats* tfrag-scissor)) + (clear-tr-stat (-> *terrain-stats* tfrag)) + (clear-tr-stat (-> *terrain-stats* tfrag-trans)) + (clear-tr-stat (-> *terrain-stats* tfrag-scissor-trans)) + (clear-tr-stat (-> *terrain-stats* tfrag-water)) + (clear-tr-stat (-> *terrain-stats* tfrag-scissor-water)) + (clear-tr-stat (-> *terrain-stats* trans-pris)) + (clear-tr-stat (-> *terrain-stats* billboard)) + (clear-tr-stat (-> *terrain-stats* trans-shrub)) + (clear-tr-stat (-> *terrain-stats* ocean-mid)) + (clear-tr-stat (-> *terrain-stats* ocean-near)) + (clear-tr-stat (-> *terrain-stats* shadow)) + (clear-tr-stat (-> *terrain-stats* total)) + 0 + (none) + ) + +(defun update-subdivide-settings! ((arg0 subdivide-settings) (arg1 math-camera) (arg2 int)) + "Update the subdivide settings from the far/close settings + This caches the settings in subdivide-settings itself, + as well as in tfrag-work, used by EE tfrag code." + (set! (-> arg0 meters 0) (-> arg0 far arg2)) + (set! (-> arg0 meters 4) (-> arg0 close arg2)) + (let ((f0-3 (* 0.14285715 (- (-> arg0 meters 0) (-> arg0 meters 4))))) + (set! (-> arg0 meters 3) (+ (-> arg0 meters 4) (/ f0-3 2))) + (set! (-> arg0 meters 2) (+ (-> arg0 meters 3) f0-3)) + (set! (-> arg0 meters 1) (+ (-> arg0 meters 2) (* 2.0 f0-3))) + ) + (let ((f0-7 (* (-> arg1 fov-correction-factor) (/ (-> arg1 inv-hmge-scale w) (-> arg1 d))))) + (dotimes (v1-8 5) + (set! (-> arg0 dist v1-8) (* f0-7 (-> arg0 meters v1-8))) + ) + ) + (set! (-> *tfrag-work* frag-dists x) (- (-> arg0 meters 0))) + (set! (-> *tfrag-work* frag-dists y) (- (-> arg0 meters 1))) + (set! (-> *tfrag-work* frag-dists z) (- (-> arg0 meters 2))) + (set! (-> *tfrag-work* frag-dists w) (- (-> arg0 meters 4))) + 0 + (none) + ) + +(define *subdivide-settings* (new 'global 'subdivide-settings 122880.0 286720.0)) + +;; WARN: Return type mismatch tfrag-dists vs none. +(defun set-tfrag-dists! ((arg0 tfrag-dists)) + "Update the subdivide settings used in tfrag VU1 code. + This must be called after update-subdivide-settings!" + (let ((f2-0 (-> *subdivide-settings* dist 0)) + (f1-0 (-> *subdivide-settings* dist 1)) + (f0-0 (-> *subdivide-settings* dist 2)) + ) + (set! (-> arg0 data 3) (the-as uint f2-0)) + (set! (-> arg0 data 7) (the-as uint f1-0)) + (let ((f4-1 (/ 1.0 (- f2-0 f1-0))) + (f3-2 (/ 1.0 (- f1-0 f0-0))) + ) + (set! (-> arg0 data 1) (the-as uint (- f4-1))) + (set! (-> arg0 data 5) (the-as uint (- f3-2))) + (set! (-> arg0 data 0) (the-as uint (/ f4-1 2))) + (set! (-> arg0 data 4) (the-as uint (/ f3-2 2))) + (let ((f2-1 (* f2-0 f4-1)) + (f5-7 (* f1-0 f3-2)) + ) + (set! (-> arg0 data 9) (the-as uint f2-1)) + (set! (-> arg0 data 13) (the-as uint f5-7)) + ) + (set! (-> arg0 data 8) (the-as uint (* (/ f4-1 -2) f1-0))) + (set! (-> arg0 data 12) (the-as uint (* (/ f3-2 -2) f0-0))) + ) + ) + (none) + ) + +(kmemopen global "terrain-context") + +(define *terrain-context* (new 'global 'terrain-context)) + +(kmemclose) + +;; WARN: Return type mismatch perf-stat vs none. +(defmethod print-to-stream ((this perf-stat) (arg0 string) (arg1 basic)) + (format + *stdcon* + "~3d ~8d ~8d ~6d ~6d" + (-> this count) + (-> this cycles) + (-> this instructions) + (-> this icache) + (-> this dcache) + ) + (format *stdcon* " ~2d ~2d ~2d" (-> this to-vu0-waits) (-> this to-spr-waits) (-> this from-spr-waits)) + (format *stdcon* " ~s~%" arg0) + (none) + ) + +(define GSH_ENABLE #f) + +(define GSH_BUCKET (bucket-id blit)) + +(define GSH_WHICH_STAT 1) + +(define GSH_MAX_DISPLAY (the-as basic #f)) + +(define GSH_TIME 64) + +(define *perf-stats* (new 'debug 'perf-stat-array 59)) + +(when *debug-segment* +(define *gomi-stats-hack* (the-as (inline-array perf-stat) (malloc 'debug (* 52 (+ GSH_TIME 1))))) + +) +(defun-debug start-perf-stat-collection () + "Start the per-frame performance stats. + This automatically cycles through various stats/categories, + collecting and aggregating the latest data. + The `gomi-stats-hack` likely refers to how the stat being + collected" + (let ((v1-2 (+ (-> *perf-stats* data 0 frame-number) 1))) + (set! (-> *perf-stats* data 0 frame-number) v1-2) + (let ((gp-0 (mod v1-2 (the-as uint 118)))) + (when GSH_ENABLE + (let ((v1-5 GSH_BUCKET)) + (let ((a0-2 GSH_WHICH_STAT)) + (set! gp-0 (+ (* (the-as uint v1-5) 2) a0-2)) + ) + (when GSH_MAX_DISPLAY + (let ((a0-7 (logand (-> *perf-stats* data 0 frame-number) (+ GSH_TIME -1)))) + (set! (-> *gomi-stats-hack* a0-7 cycles) (-> *perf-stats* data (the-as int v1-5) cycles)) + (set! (-> *gomi-stats-hack* a0-7 instructions) (-> *perf-stats* data (the-as int v1-5) instructions)) + (set! (-> *gomi-stats-hack* a0-7 icache) (-> *perf-stats* data (the-as int v1-5) icache)) + (set! (-> *gomi-stats-hack* a0-7 dcache) (-> *perf-stats* data (the-as int v1-5) dcache)) + (when (zero? a0-7) + (set! (-> *gomi-stats-hack* GSH_TIME cycles) (the-as uint 0)) + (set! (-> *gomi-stats-hack* GSH_TIME instructions) (the-as uint 0)) + (set! (-> *gomi-stats-hack* GSH_TIME icache) (the-as uint 0)) + (set! (-> *gomi-stats-hack* GSH_TIME dcache) (the-as uint 0)) + (dotimes (v1-22 GSH_TIME) + (if (< (-> *gomi-stats-hack* GSH_TIME cycles) (-> *gomi-stats-hack* v1-22 cycles)) + (set! (-> *gomi-stats-hack* GSH_TIME cycles) (-> *gomi-stats-hack* v1-22 cycles)) + ) + (if (< (-> *gomi-stats-hack* GSH_TIME instructions) (-> *gomi-stats-hack* v1-22 instructions)) + (set! (-> *gomi-stats-hack* GSH_TIME instructions) (-> *gomi-stats-hack* v1-22 instructions)) + ) + (if (< (-> *gomi-stats-hack* GSH_TIME icache) (-> *gomi-stats-hack* v1-22 icache)) + (set! (-> *gomi-stats-hack* GSH_TIME icache) (-> *gomi-stats-hack* v1-22 icache)) + ) + (if (< (-> *gomi-stats-hack* GSH_TIME dcache) (-> *gomi-stats-hack* v1-22 dcache)) + (set! (-> *gomi-stats-hack* GSH_TIME dcache) (-> *gomi-stats-hack* v1-22 dcache)) + ) + ) + ) + ) + (format *stdcon* "~%") + (print-to-stream (-> *gomi-stats-hack* GSH_TIME) "max-value" *stdcon*) + ) + ) + ) + (dotimes (v1-27 59) + (cond + ((!= v1-27 (shr gp-0 1)) + (set! (-> *perf-stats* data v1-27 ctrl) (the-as uint 0)) + 0 + ) + (else + (let ((a1-61 (logand gp-0 1)) + (a0-62 #x80004010) + ) + (cond + ((zero? a1-61) + (set! a0-62 (+ #x60020 a0-62)) + ) + ((= a1-61 1) + (set! a0-62 (+ #x300c0 a0-62)) + ) + ) + (set! (-> *perf-stats* data v1-27 count) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 select) a1-61) + (set! (-> *perf-stats* data v1-27 ctrl) a0-62) + ) + (set! (-> *perf-stats* data v1-27 accum0) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 accum1) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 to-vu0-waits) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 to-spr-waits) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 from-spr-waits) (the-as uint 0)) + 0 + ) + ) + ) + ) + ) + (-> *perf-stats* data) + 0 + 0 + (none) + ) + +;; og:preserve-this this part is patched +(if (not *debug-segment*) + (set! start-perf-stat-collection + (lambda () + (dotimes (v1-0 51) + (set! (-> *perf-stats* data v1-0 count) (the-as uint 0)) + ) + 0 + (none) + ) + ) + ) + +(defun-debug end-perf-stat-collection () + "End the per-frame performance stats" + (-> *perf-stats* data) + 0 + (dotimes (v1-3 59) + (when (nonzero? (-> *perf-stats* data v1-3 ctrl)) + (let ((a2-0 (-> *perf-stats* data v1-3 select)) + (a1-6 (-> *perf-stats* data v1-3 accum0)) + (a0-10 (-> *perf-stats* data v1-3 accum1)) + ) + (cond + ((zero? a2-0) + (set! (-> *perf-stats* data v1-3 cycles) a1-6) + (set! (-> *perf-stats* data v1-3 instructions) a0-10) + ) + ((= a2-0 1) + (set! (-> *perf-stats* data v1-3 icache) a1-6) + (set! (-> *perf-stats* data v1-3 dcache) a0-10) + ) + ) + ) + ) + ) + 0 + (none) + ) + +(defun-debug print-perf-stats () + (format *stdcon* "~0k~%count cycles instr icache dcache vu0/to/from~%") + (dotimes (gp-0 59) + (if (and (nonzero? (-> *perf-stats* data gp-0 count)) (< (the-as uint 500) (-> *perf-stats* data gp-0 cycles))) + (print-to-stream + (-> *perf-stats* data gp-0) + (perf-stat-bucket->string (the-as perf-stat-bucket gp-0)) + *stdcon* + ) + ) + ) + 0 + (none) + ) diff --git a/goal_src/jakx/engine/gfx/background/tfrag/tfrag-h.gc b/goal_src/jakx/engine/gfx/background/tfrag/tfrag-h.gc index 0dfc29b7fa..6f0f2a7357 100644 --- a/goal_src/jakx/engine/gfx/background/tfrag/tfrag-h.gc +++ b/goal_src/jakx/engine/gfx/background/tfrag/tfrag-h.gc @@ -5,6 +5,14 @@ ;; name in dgo: tfrag-h ;; dgos: ENGINE, GAME +(declare-type tfrag-work structure) +(declare-type drawable-tree-tfrag structure) +(define-extern *tfrag-work* tfrag-work) +(define-extern draw-drawable-tree-tfrag (function drawable-tree-tfrag none)) +(define-extern draw-drawable-tree-tfrag-trans (function drawable-tree-tfrag none)) +(define-extern draw-drawable-tree-tfrag-water (function drawable-tree-tfrag none)) +(define-extern *pc-tfrag-draw-level* level) ;; added + ;; DECOMP BEGINS (deftype tfragment-stats (structure) diff --git a/goal_src/jakx/engine/gfx/background/tie/tie-work.gc b/goal_src/jakx/engine/gfx/background/tie/tie-work.gc index c026e7031e..9dcedaa8dd 100644 --- a/goal_src/jakx/engine/gfx/background/tie/tie-work.gc +++ b/goal_src/jakx/engine/gfx/background/tie/tie-work.gc @@ -7,3 +7,162 @@ ;; DECOMP BEGINS +(define *instance-tie-work* (new 'static 'instance-tie-work + :wind-const (new 'static 'vector :data (new 'static 'array float 4 0.5 100.0 0.0166 -1.0)) + :constant (new 'static 'vector :data (new 'static 'array float 4 4096.0 128.0 0.0 0.0)) + :far-morph (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 256.0)) + :upload-color-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x80c6 :num #x6 :cmd (vif-cmd unpack-v4-32)) + ) + :upload-color-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #xc0cc :cmd (vif-cmd unpack-v4-8)) + ) + :upload-color-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + ) + :upload-color-ret (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ret)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + ) + :generic-color-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x3) + ) + :generic-color-1 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :generic-color-end (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id end))) + :envmap-color-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x8000 :num #x8 :cmd (vif-cmd unpack-v4-32)) + ) + :envmap-color-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #xc008 :cmd (vif-cmd unpack-v4-8)) + ) + :refl-fade-fac -0.000625 + :refl-fade-end 409600.0 + :use-etie #t + ) + ) + +(set! (-> *instance-tie-work* upload-color-2 vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)) + +(set! (-> *instance-tie-work* upload-color-ret vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)) + +(define *prototype-tie-work* (new 'static 'prototype-tie-work + :upload-flushe (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id cnt)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1) + ) + :upload-palette (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x1 :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #x4346 :num #x80 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) + ) + :upload-model-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16)) + ) + :upload-model-3 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :upload-model-near-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) + ) + :upload-model-near-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-near-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x1e :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-near-3 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16)) + ) + :upload-model-near-4 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :envmap-palette (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x1 :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #x4302 :num #x80 :cmd (vif-cmd unpack-v4-8)) + ) + :envmap-shader (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #x387 :num #x5 :cmd (vif-cmd unpack-v4-32)) + ) + :upload-envmap-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #xb8 :cmd (vif-cmd base)) + :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) + ) + :upload-envmap-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x20 :cmd (vif-cmd offset)) + :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-envmap-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x20 :cmd (vif-cmd unpack-v4-16)) + ) + :upload-envmap-3 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x84 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-envmap-4 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :upload-envmap-scissor-4 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #xac :cmd (vif-cmd unpack-v4-8)) + ) + :generic-palette (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x1) + ) + :generic-model-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x2) + ) + :generic-model-1 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :generic-model-2 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :model-next (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id next))) + :clamp #x8000ff00ff00ff + ) + ) + +(set! (-> *prototype-tie-work* upload-model-1 vif0) + (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1) + ) + +(set! (-> *prototype-tie-work* upload-model-3 vif0) + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1) + ) + +(set! (-> *prototype-tie-work* upload-model-near-1 vif0) + (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1) + ) + +(set! (-> *prototype-tie-work* upload-model-near-4 vif0) + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1) + ) + +(set! (-> *prototype-tie-work* upload-envmap-2 vif0) + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscalf) :msk #x1) + ) + +(set! (-> *prototype-tie-work* upload-envmap-4 vif1) + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) + ) diff --git a/goal_src/jakx/engine/gfx/background/wind-work.gc b/goal_src/jakx/engine/gfx/background/wind-work.gc index 640606d04c..d4e519f9b4 100644 --- a/goal_src/jakx/engine/gfx/background/wind-work.gc +++ b/goal_src/jakx/engine/gfx/background/wind-work.gc @@ -7,3 +7,12 @@ ;; DECOMP BEGINS +(define *wind-work* (new 'static 'wind-work + :wind-const (new 'static 'vector :data (new 'static 'array float 4 0.5 100.0 0.0166 -1.0)) + ) + ) + +;; og:preserve-this +(set! (-> *wind-work* to-ptrs 0) (the-as uint (&+ *fake-scratchpad-data* 8192))) +(set! (-> *wind-work* to-ptrs 1) (the-as uint (&+ *fake-scratchpad-data* 4096))) +(set! (-> *wind-work* to-ptrs 2) (the-as uint *fake-scratchpad-data*)) diff --git a/goal_src/jakx/engine/gfx/background/wind.gc b/goal_src/jakx/engine/gfx/background/wind.gc index e525adf7c9..17bc6fda43 100644 --- a/goal_src/jakx/engine/gfx/background/wind.gc +++ b/goal_src/jakx/engine/gfx/background/wind.gc @@ -7,3 +7,40 @@ ;; DECOMP BEGINS +(defun update-wind ((arg0 wind-work) (arg1 (array uint8))) + "Update the wind force for this frame. + This value will be used by level-update-wind to update tie/shrub wind values." + (with-pp + (let* ((f0-1 (+ (-> arg0 wind-normal w) (rand-vu-float-range -1024.0 1024.0))) + (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0))) + ) + (set! (-> arg0 wind-normal w) f30-1) + (set! (-> arg0 wind-normal x) (cos f30-1)) + (set! (-> arg0 wind-normal z) (sin f30-1)) + ) + (+! (-> arg0 wind-time) (- (-> pp clock integral-frame-counter) (-> pp clock old-integral-frame-counter))) + (let* ((s4-0 (logand (-> arg0 wind-time) 63)) + (f0-4 (rand-vu-float-range 0.0 100.0)) + (v1-7 (/ (-> arg0 wind-time) (the-as uint 120))) + (f1-6 (* 0.008333334 (the float (mod (-> arg0 wind-time) (the-as uint 120))))) + (f2-4 (* 0.0625 (the float (-> arg1 (mod (the-as int v1-7) (-> arg1 length)))))) + (f0-5 + (* (+ (* (- (* 0.0625 (the float (-> arg1 (mod (the-as int (+ v1-7 1)) (-> arg1 length))))) f2-4) f1-6) f2-4) + f0-4 + ) + ) + ) + (set! (-> *wind-work* wind-force s4-0) f0-5) + (vector-float*! (-> *wind-work* wind-array s4-0) (-> arg0 wind-normal) f0-5) + ) + 0 + (none) + ) + ) + +(defun wind-get-hashed-index ((arg0 vector) (arg1 wind-work)) + "Unused function, likely a leftover from Jak 1's different wind system." + (logand (+ (the int (-> arg0 x)) (the int (-> arg0 z)) (-> *wind-work* wind-time)) 63) + ) + +;; ERROR: function was not converted to expressions. Cannot decompile. diff --git a/goal_src/jakx/engine/gfx/font-h.gc b/goal_src/jakx/engine/gfx/font-h.gc index bac23ef8db..8b59a6dad5 100644 --- a/goal_src/jakx/engine/gfx/font-h.gc +++ b/goal_src/jakx/engine/gfx/font-h.gc @@ -7,7 +7,7 @@ ;; +++font-flags (defenum font-flags - :type uint16 + :type uint32 :bitfield #t (shadow 0) (kerning 1) @@ -74,6 +74,1032 @@ ) ;; ---font-color +;; +++draw-string-result +(deftype draw-string-result (uint64) + ((length float :offset 0) + (b float :offset 32)) + ) +;; ---draw-string-result + +(declare-type font-context structure) +(define-extern draw-string-xy (function string dma-buffer int int font-color font-flags draw-string-result)) ;; DECOMP BEGINS +(deftype font-char-effect (structure) + ((scale-x float) + (scale-y float) + (angle float) + (trans-x float) + (trans-y float) + (color vector4w :inline) + ) + ) + + +(deftype char-color (structure) + ((color rgba 4) + ) + ) + + +(deftype font-context (basic) + ((y-spacing float) + (alpha float) + (ialpha int32) + (flags font-flags) + (origin vector :inline) + (calc-origin vector :inline) + (strip-gif vector :inline) + (calc-mat matrix :inline) + (width float) + (height float) + (meters-per-texel float) + (start-line uint32) + (scaled-width float) + (scaled-height float) + (projection float) + (scale float) + (mat matrix) + (effect-time float) + (color font-color) + (effect uint8) + (effect-color font-color) + ) + (:methods + (new (symbol type matrix int int float font-color font-flags) _type_) + (font-context-method-9 () none) + (font-context-method-10 () none) + (font-context-method-11 () none) + (font-context-method-12 () none) + (set-mat! (_type_ matrix) none) + (set-x-y! (_type_ int int) none) + (set-z! (_type_ int) none) + (set-w! (_type_ float) none) + (set-width! (_type_ int) none) + (set-height! (_type_ int) none) + (set-projection! (_type_ float) none) + (set-color! (_type_ font-color) none) + (set-flags! (_type_ font-flags) none) + (set-start-line! (_type_ float) none) + (set-scale! (_type_ float) none) + (set-alpha! (_type_ float) none) + (set-y-spacing! (_type_ float) none) + (set-meters-per-texel! (_type_ float) none) + (set-effect! (_type_ uint) none) + (set-effect-color! (_type_ font-color) none) + (set-effect-time! (_type_ float) none) + ) + ) + + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-mat! ((this font-context) (arg0 matrix)) + (set! (-> this mat) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-x-y! ((this font-context) (arg0 int) (arg1 int)) + (set! (-> this origin x) (the float arg0)) + (set! (-> this origin y) (the float arg1)) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-z! ((this font-context) (arg0 int)) + (set! (-> this origin z) (the float arg0)) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-w! ((this font-context) (arg0 float)) + (set! (-> this origin w) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-width! ((this font-context) (arg0 int)) + (set! (-> this width) (the float arg0)) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-height! ((this font-context) (arg0 int)) + (set! (-> this height) (the float arg0)) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-projection! ((this font-context) (arg0 float)) + (set! (-> this projection) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-color! ((this font-context) (arg0 font-color)) + (set! (-> this color) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-flags! ((this font-context) (arg0 font-flags)) + (set! (-> this flags) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-start-line! ((this font-context) (arg0 float)) + (set! (-> this start-line) (the-as uint arg0)) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-scale! ((this font-context) (arg0 float)) + (set! (-> this scale) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-alpha! ((this font-context) (arg0 float)) + (set! (-> this alpha) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-y-spacing! ((this font-context) (arg0 float)) + (set! (-> this y-spacing) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-meters-per-texel! ((this font-context) (arg0 float)) + (set! (-> this meters-per-texel) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-effect! ((this font-context) (arg0 uint)) + (set! (-> this effect) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-effect-color! ((this font-context) (arg0 font-color)) + (set! (-> this effect-color) arg0) + (none) + ) + +;; WARN: Return type mismatch font-context vs none. +(defmethod set-effect-time! ((this font-context) (arg0 float)) + (set! (-> this effect-time) arg0) + (none) + ) + +(defmethod new font-context ((allocation symbol) + (type-to-make type) + (arg0 matrix) + (arg1 int) + (arg2 int) + (arg3 float) + (arg4 font-color) + (arg5 font-flags) + ) + (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> v0-0 flags) arg5) + (set! (-> v0-0 mat) arg0) + (let ((v1-4 v0-0)) + (set! (-> v1-4 origin x) (the float arg1)) + (set! (-> v1-4 origin y) (the float arg2)) + ) + (let ((v1-5 v0-0)) + (set! (-> v1-5 origin z) arg3) + ) + (let ((v1-6 v0-0)) + (set! (-> v1-6 origin w) 1.0) + ) + (set-width! v0-0 512) + (set-height! v0-0 416) + (let ((v1-9 v0-0)) + (set! (-> v1-9 projection) 1.0) + ) + (set! (-> v0-0 color) arg4) + (let ((a0-5 v0-0)) + (set! (-> a0-5 start-line) (the-as uint 0)) + ) + (set-scale! v0-0 1.0) + (let ((v1-13 v0-0)) + (set! (-> v1-13 alpha) 1.0) + ) + (let ((v1-14 v0-0)) + (set! (-> v1-14 y-spacing) 32.0) + ) + (let ((v1-15 v0-0)) + (set! (-> v1-15 meters-per-texel) 200.0) + ) + (let ((a0-10 v0-0)) + (set! (-> a0-10 effect) (the-as uint 0)) + ) + (let ((a0-11 v0-0)) + (set! (-> a0-11 effect-color) (font-color default)) + ) + (let ((v1-18 v0-0)) + (set! (-> v1-18 effect-time) (the float 0.0)) + ) + v0-0 + ) + ) + +(deftype char-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + (color0 vector :inline) + (st0 vector :inline) + (pos0 vector :inline) + (st1 vector :inline) + (pos1 vector :inline) + (color2 vector :inline) + (st2 vector :inline) + (pos2 vector :inline) + (st3 vector :inline) + (pos3 vector :inline) + ) + ) + + +(deftype char-ad-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + ) + ) + + +(deftype char-2d-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + (color vector :inline) + (st0 vector :inline) + (pos0 vector :inline) + (st1 vector :inline) + (pos1 vector :inline) + ) + ) + + +(deftype char-2d-packet-no-packed (structure) + ((tag dma-gif-packet :inline) + (color0 uint64) + (st0 uint64) + (pos0 uint64) + (st1 uint64) + (pos1 uint64) + (color1 uint64) + ) + ) + + +(deftype char-packet-no-packed (structure) + ((tag dma-gif-packet :inline) + (prim uint64) + (color0 uint64) + (st0 uint64) + (pos0 uint64) + (st1 uint64) + (pos1 uint64) + (st2 uint64) + (pos2 uint64) + (st3 uint64) + (pos3 uint64) + ) + ) + + +(deftype char-3d-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + (color vector :inline) + (st0 vector :inline) + (pos0 vector :inline) + (st1 vector :inline) + (pos1 vector :inline) + (color2 vector :inline) + (st2 vector :inline) + (pos2 vector :inline) + (st3 vector :inline) + (pos3 vector :inline) + ) + ) + + +(deftype font-work (structure) + ((char-2d-tmpl dma-gif-packet :inline) + (char-2d-no-packed-tmpl dma-gif-packet :inline) + (char-3d-tmpl dma-gif-packet :inline) + (char-ad-tmpl dma-gif-packet :inline) + (char-no-packed-tmpl dma-gif-packet :inline) + (char-tmpl dma-gif-packet :inline) + (small-font-0-tmpl uint64 2) + (small-font-1-tmpl uint64 2) + (small-font-2-tmpl uint64 2) + (small-font-3-tmpl uint64 2) + (large-font-0-tmpl uint64 2) + (large-font-1-tmpl uint64 2) + (large-font-2-tmpl uint64 2) + (large-font-3-tmpl uint64 2) + (size1-small vector :inline) + (size2-small vector :inline) + (size3-small vector :inline) + (size1-large vector :inline) + (size2-large vector :inline) + (size3-large vector :inline) + (size-st1 vector :inline) + (size-st2 vector :inline) + (size-st3 vector :inline) + (origin-right vector :inline) + (origin-center vector :inline) + (save vector :inline) + (save-color vector :inline) + (save-color2 vector :inline) + (current-color vector4w :inline) + (current-colorq uint64 :overlay-at (-> current-color data 0)) + (current-color2 vector4w :inline) + (current-color2q uint64 :overlay-at (-> current-color2 data 0)) + (effect-colors vector4w 2 :inline) + (color-shadow vector4w :inline) + (color-outline vector4w :inline) + (justify vector 256 :inline) + (hvdf-offset vector :inline) + (hvdf-shadow vector :inline) + (hvdf-outline vector 4 :inline) + (hvdf-outline0 vector :inline :overlay-at (-> hvdf-outline 0)) + (hvdf-outline1 vector :inline :overlay-at (-> hvdf-outline 1)) + (hvdf-outline2 vector :inline :overlay-at (-> hvdf-outline 2)) + (hvdf-outline3 vector :inline :overlay-at (-> hvdf-outline 3)) + (save-pos0 vector :inline) + (save-pos1 vector :inline) + (save-pos2 vector :inline) + (save-pos3 vector :inline) + (color-table char-color 74 :inline) + (current-font-0-tmpl uint64 2) + (current-font-1-tmpl uint64 2) + (current-font-2-tmpl uint64 2) + (current-font-3-tmpl uint64 2) + (screen-min vector2w :inline) + (screen-max vector2w :inline) + (last-color uint8) + (save-last-color uint8) + (buf basic) + (str-ptr uint32) + ) + ) + + +(define *font-work* + (new 'static 'font-work + :char-2d-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x602b400000008001 #x52521e) + ) + :char-2d-no-packed-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x642f400000008001 #x7f52521) + ) + :char-3d-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #xc :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #xc :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #xb02e400000008001 #x5252152521e) + ) + :char-ad-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x1000400000008001 #xe) + ) + :char-no-packed-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #xa42e400000008001 #x5252525210) + ) + :char-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #xc :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #xc :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #xb02e400000008001 #x5252152521e) + ) + :small-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6) + :small-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6) + :small-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6) + :small-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6) + :size1-small (new 'static 'vector :data (new 'static 'array float 4 12.0 0.0 0.0 0.5)) + :size2-small (new 'static 'vector :data (new 'static 'array float 4 0.0 14.857 0.0 8.0)) + :size3-small (new 'static 'vector :data (new 'static 'array float 4 12.0 14.857 0.0 16.0)) + :size1-large (new 'static 'vector :data (new 'static 'array float 4 24.0 0.0 0.0 1.0)) + :size2-large (new 'static 'vector :data (new 'static 'array float 4 0.0 29.714 0.0 24.0)) + :size3-large (new 'static 'vector :data (new 'static 'array float 4 24.0 29.714 0.0 32.0)) + :size-st1 (new 'static 'vector :data (new 'static 'array float 4 0.08985 0.0 0.0 0.5)) + :size-st2 (new 'static 'vector :data (new 'static 'array float 4 0.0 0.030761719 0.0 0.5)) + :size-st3 (new 'static 'vector :data (new 'static 'array float 4 0.08985 0.030761719 0.0 0.5)) + :color-shadow (new 'static 'vector4w :w #x80) + :color-table (new 'static 'inline-array char-color 74 + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x43 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x15 :a #x80) + (new 'static 'rgba :r #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x4e :b #x1 :a #x80) + (new 'static 'rgba :r #x70 :g #x20 :b #x1 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7b :g #x7f :b #x14 :a #x80) + (new 'static 'rgba :r #x70 :g #x53 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x1e :g #x80 :a #x80) + (new 'static 'rgba :r #x6 :g #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x22 :g #x22 :b #x69 :a #x80) + (new 'static 'rgba :r #x15 :g #x15 :b #x51 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x54 :a #x80) + (new 'static 'rgba :r #x80 :g #x54 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80) + (new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80) + (new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80) + (new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80) + (new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80) + (new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80) + (new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80) + (new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80) + (new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80) + (new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80) + (new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80) + (new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80) + (new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80) + (new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80) + (new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80) + (new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80) + (new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80) + (new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x9a :g #x4d :a #x60) + (new 'static 'rgba :r #x9a :g #x4d :a #x60) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :a #x80) + (new 'static 'rgba :r #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80) + (new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :b #x1 :a #x80) + (new 'static 'rgba :b #x1 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80) + (new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x39 :b #x67 :a #x80) + (new 'static 'rgba :g #x39 :b #x67 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7c :a #x80) + (new 'static 'rgba :r #x7c :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x37 :g #x37 :b #x37 :a #x80) + (new 'static 'rgba :r #x37 :g #x37 :b #x37 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x28 :b #x50 :a #x80) + (new 'static 'rgba :r #x28 :b #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x86 :g #x54 :b #x5 :a #x80) + (new 'static 'rgba :r #x86 :g #x54 :b #x5 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x69 :g #x69 :b #x49 :a #x80) + (new 'static 'rgba :r #x69 :g #x69 :b #x49 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x87 :g #x69 :a #x80) + (new 'static 'rgba :r #x87 :g #x69 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x70 :g #x50 :a #x80) + (new 'static 'rgba :r #x20 :g #x12 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80) + (new 'static 'rgba :g #x10 :b #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :g #x60 :b #x30 :a #x80) + (new 'static 'rgba :r #x30 :g #x30 :a #x80) + (new 'static 'rgba :r #x25 :g #x15 :b #x15 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x74 :g #x74 :b #x80 :a #x80) + (new 'static 'rgba :r #x4 :g #x4 :b #x58 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x74 :g #x74 :b #x80 :a #x80) + (new 'static 'rgba :r #x24 :g #x24 :b #x48 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :a #x80) + (new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x32 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x20 :g #x70 :b #x30 :a #x80) + (new 'static 'rgba :r #x60 :g #x80 :b #x60 :a #x80) + (new 'static 'rgba :g #x20 :b #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x50 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x5a :g #xe :b #x5 :a #x80) + (new 'static 'rgba :r #x80 :g #x7a :b #x31 :a #x80) + (new 'static 'rgba :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x5e :a #x80) + (new 'static 'rgba :r #x80 :g #x14 :a #x80) + (new 'static 'rgba :r #x80 :g #x34 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x20 :a #x80) + (new 'static 'rgba :r #x80 :g #x20 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :b #x20 :a #x80) + (new 'static 'rgba :g #x20 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x50 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x7f :b #x7e :a #x80) + (new 'static 'rgba :g #x40 :b #x5f :a #x80) + (new 'static 'rgba :a #x80) + (new 'static 'rgba) + ) + ) + ) + ) + ) + +(defun font-set-tex0 ((arg0 (pointer gs-tex0)) (arg1 texture) (arg2 int) (arg3 int) (arg4 int)) + (set! (-> arg0 0) (new 'static 'gs-tex0 + :tcc #x1 + :cld #x1 + :cbp arg4 + :th (+ (log2 (+ (-> arg1 h) -1)) 1) + :tw (log2 (-> arg1 w)) + :tbw (-> arg1 width 0) + :tbp0 (/ arg2 64) + :psm arg3 + ) + ) + (none) + ) + +(defun set-font-color ((arg0 font-color) (arg1 rgba) (arg2 rgba) (arg3 rgba) (arg4 rgba)) + (set! (-> *font-work* color-table arg0 color 0) arg1) + (set! (-> *font-work* color-table arg0 color 1) arg2) + (set! (-> *font-work* color-table arg0 color 2) arg3) + 0 + ) + +(define *font-default-matrix* + (new 'static 'matrix + :rvec (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 0.0)) + :uvec (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 0.0)) + :fvec (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.0)) + :trans (new 'static 'vector :data (new 'static 'array float 4 -256.0 -208.0 0.0 1.0)) + ) + ) + +(define *font-default-matrix-3d* (new 'static 'matrix + :rvec (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 0.0)) + :uvec (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 0.0)) + :fvec (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.0)) + :trans (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 1.0)) + ) + ) + +(define *font-context* (new + 'global + 'font-context + *font-default-matrix* + 0 + 0 + 8396850.0 + (font-color default) + (font-flags shadow kerning) + ) + ) + +(define *font-context-3d* (new + 'global + 'font-context + *font-default-matrix-3d* + 0 + 0 + 0.0 + (font-color default) + (font-flags shadow kerning ff9) + ) + ) + +(define *font-char-effect* (the-as font-char-effect (malloc 'global 6144))) diff --git a/goal_src/jakx/engine/gfx/font.gc b/goal_src/jakx/engine/gfx/font.gc index 0bd874fa7b..967ed71884 100644 --- a/goal_src/jakx/engine/gfx/font.gc +++ b/goal_src/jakx/engine/gfx/font.gc @@ -5,5 +5,13 @@ ;; name in dgo: font ;; dgos: ENGINE, GAME +;; +++draw-string-result +(deftype draw-string-result (uint64) + ((length float :offset 0) + (b float :offset 32)) + ) +;; ---draw-string-result + + ;; DECOMP BEGINS diff --git a/goal_src/jakx/engine/gfx/foreground/merc/emerc-vu1.gc b/goal_src/jakx/engine/gfx/foreground/merc/emerc-vu1.gc index 710244a33e..12358c2aa2 100644 --- a/goal_src/jakx/engine/gfx/foreground/merc/emerc-vu1.gc +++ b/goal_src/jakx/engine/gfx/foreground/merc/emerc-vu1.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define emerc-vu1-block (new 'static 'vu-function :length #x56b :qlength #x2b6)) diff --git a/goal_src/jakx/engine/gfx/foreground/merc/merc-vu1.gc b/goal_src/jakx/engine/gfx/foreground/merc/merc-vu1.gc index 8d85047bcf..032a7b4d11 100644 --- a/goal_src/jakx/engine/gfx/foreground/merc/merc-vu1.gc +++ b/goal_src/jakx/engine/gfx/foreground/merc/merc-vu1.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define merc-vu1-block (new 'static 'vu-function :length #x7e5 :qlength #x3f3)) diff --git a/goal_src/jakx/engine/gfx/generic/generic-vu0.gc b/goal_src/jakx/engine/gfx/generic/generic-vu0.gc index 51bf027829..72e38aaf72 100644 --- a/goal_src/jakx/engine/gfx/generic/generic-vu0.gc +++ b/goal_src/jakx/engine/gfx/generic/generic-vu0.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define generic-vu0-block (new 'static 'vu-function :length #x127 :qlength #x94)) diff --git a/goal_src/jakx/engine/gfx/hw/gs.gc b/goal_src/jakx/engine/gfx/hw/gs.gc index e40e3ac6f9..b54f5d180e 100644 --- a/goal_src/jakx/engine/gfx/hw/gs.gc +++ b/goal_src/jakx/engine/gfx/hw/gs.gc @@ -462,19 +462,60 @@ It is missing the SIGLBLID/LABELID register at 4224 (useless anyway?)" ) -;; type gs-frame is defined here, but it is unknown to the decompiler +(deftype gs-frame (uint64) + ((fbp uint16 :offset 0 :size 9) + (fbw uint8 :offset 16 :size 6) + (psm gs-psm :offset 24 :size 6) + (fbmsk uint32 :offset 32 :size 32) + ) + ) -;; type gs-zbuf is defined here, but it is unknown to the decompiler +(deftype gs-zbuf (uint64) + "The GS's ZBUF registers make various settings regarding Z buffer." + ((zbp uint16 :offset 0 :size 9) + (psm gs-psm :offset 24 :size 4) + (zmsk uint8 :offset 32 :size 1) + ) + ) -;; type gs-xy-offset is defined here, but it is unknown to the decompiler +(deftype gs-xy-offset (uint64) + "The GS's XYOFFSET registers set the offset value for converting from the primitive coordinate +system to the window coordinate system." + ((ofx uint16 :offset 0 :size 16) + (ofy uint16 :offset 32 :size 16) + ) + ) -;; type gs-scissor is defined here, but it is unknown to the decompiler +(deftype gs-scissor (uint64) + "The GS's SCISSOR registers specify the scissoring area. The coordinate values for +the upper-left/lower-right points of the enabled drawing area are specified by the window +coordinate system." + ((scax0 uint16 :offset 0 :size 11) + (scax1 uint16 :offset 16 :size 11) + (scay0 uint16 :offset 32 :size 11) + (scay1 uint16 :offset 48 :size 11) + ) + ) -;; type gs-prmode-cont is defined here, but it is unknown to the decompiler +(deftype gs-prmode-cont (uint64) + "The GS's PRMODECONT register sets whether to use primitive attributes (IIP, TME, FGE, ABE, +AA1, FST, CTXT, FIX) specified by the PRMODE register or the PRIM register." + ((ac uint8 :offset 0 :size 1) + ) + ) -;; type gs-color-clamp is defined here, but it is unknown to the decompiler +(deftype gs-color-clamp (uint64) + "The GS's COLCLAMP register stores settings as to whether clamping for the RGB value of the +pixel is performed." + ((clamp uint8 :offset 0 :size 1) + ) + ) -;; type gs-dthe is defined here, but it is unknown to the decompiler +(deftype gs-dthe (uint64) + "The GS's DTHE register stores settings for dithering (performed/not performed)." + ((dthe uint8 :offset 0 :size 1) + ) + ) (deftype gs-test (uint64) "The GS's TEST register performs settings related to the pixel test." diff --git a/goal_src/jakx/engine/gfx/mood/mood-tables.gc b/goal_src/jakx/engine/gfx/mood/mood-tables.gc index 0b6d33dbc6..2f10e2e9c7 100644 --- a/goal_src/jakx/engine/gfx/mood/mood-tables.gc +++ b/goal_src/jakx/engine/gfx/mood/mood-tables.gc @@ -7,3 +7,1176 @@ ;; DECOMP BEGINS +(define *no-cloud-haze-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 128.0 180.0 243.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.0 32.0 100.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 24.0 64.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 44.7999 57.5999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *no-cloud-clear-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 128.0 180.0 243.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 12.7999 25.5999 80.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 19.1999 51.1999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 44.7999 57.5999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *no-cloud-smog-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.75 87.5 61.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 105.625 100.3437 84.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 105.625 104.9648 103.6445 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 105.625 100.3437 84.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.75 90.0 61.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 54.0 62.0 108.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.5625 24.75 37.125 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 38.5 49.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *overcast-fog-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 84.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9842 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5702 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.6 196.0 60.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.5 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 83.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *overcast-clear-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.0 130.0 160.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 134.0 143.0 176.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 125.4 156.5999 194.3999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 134.0 143.0 176.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.0 130.0 160.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 23.68 31.3599 64.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 10.2399 21.7599 40.9599 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 11.5199 38.3999 46.0799 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *overcast-rain-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9841 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.2 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5701 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 45.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.2 196.0 40.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.2 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 73.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *storm-fog-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 84.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9842 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5702 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.6 196.0 60.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.5 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 83.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *storm-clear-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 115.0 115.0 110.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 122.5 127.5 127.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 127.5 127.5 127.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 122.5 127.5 127.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 110.0 110.0 105.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 90.0 85.0 90.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 12.0 32.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 28.0 36.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *storm-rain-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9841 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.2 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5701 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 45.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.2 196.0 40.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.2 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 73.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *desert-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.3944 92.6952 52.9687 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1228800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 154.1268 114.1443 76.7968 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 171.8592 135.5936 100.625 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 154.1268 114.1443 76.7968 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.3944 92.6952 52.9687 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 27.0 22.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 27.0 22.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 44.0 35.0 20.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *sandstorm-start-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 100.3943 76.6951 48.9686 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 131.1268 118.1443 83.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 155.8591 138.5934 93.6249 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 121.1268 103.1443 66.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 129.3943 107.695 71.9685 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 37.0 44.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 35.0 29.0 32.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 44.0 45.0 30.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *sandstorm-end-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 100.3943 76.6951 48.9686 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 131.1268 118.1443 83.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 155.8591 138.5934 93.6249 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 121.1268 103.1443 66.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 129.3943 107.695 71.9685 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 37.0 44.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1638400.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 35.0 29.0 32.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1638400.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 44.0 45.0 30.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1638400.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +(define *no-cloud-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5092 1.2699 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.498 0.4406 0.5777 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.8412 1.685 1.4374 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6464 1.2601 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3984 0.4478 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4317 0.1942 0.6517 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3373 0.4347 0.6026 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3252 0.566 0.9899 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3198 0.373 0.533 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1077 0.5357 0.4311 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2873 0.4071 0.479 1.0)) + ) + ) + ) + ) + +(define *overcast-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3772 0.3473 0.1886 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5378 0.4605 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4602 0.4407 0.4098 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4115 0.3633 0.2057 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4979 0.4975 0.6473 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4085 0.1837 0.6167 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3438 0.4431 0.6142 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3045 0.5122 0.9449 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2921 0.3637 0.533 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.114 0.6554 0.456 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2873 0.4071 0.479 1.0)) + ) + ) + ) + ) + +(define *storm-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1509 0.1449 0.1131 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3714 0.3964 0.4877 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1616 0.1579 0.1486 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3684 0.4604 0.5124 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1841 0.1802 0.174 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3684 0.4604 0.5124 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1616 0.1579 0.1486 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3684 0.4604 0.5124 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1646 0.1549 0.1234 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3648 0.4145 0.5142 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3827 0.352 0.5688 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3352 0.4319 0.5987 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3148 0.548 1.0785 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3198 0.373 0.533 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.5048 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2873 0.4071 0.479 1.0)) + ) + ) + ) + ) + +(define *desert-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5092 1.2699 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.498 0.4406 0.5777 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.8412 1.685 1.4374 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6464 1.2601 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3984 0.4478 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.426 0.3584 0.7049 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3071 0.3957 0.5485 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1097 0.384 0.8232 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2695 0.3143 0.4492 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.5749 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.239 0.3386 0.3984 1.0)) + ) + ) + ) + ) + +(define *sandstorm-start-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5092 1.2699 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.498 0.4406 0.5777 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.8412 1.685 1.4374 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6464 1.2601 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3984 0.4478 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.426 0.3584 0.7049 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3071 0.3957 0.5485 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1097 0.384 0.8232 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2695 0.3143 0.4492 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.5749 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.239 0.3386 0.3984 1.0)) + ) + ) + ) + ) + +(define *sandstorm-end-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3772 0.3473 0.1886 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5378 0.4605 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4602 0.4407 0.4098 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4115 0.3633 0.2057 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4979 0.4975 0.6473 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.426 0.3584 0.7049 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3071 0.3957 0.5485 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.0604 0.2114 0.4534 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2694 0.3142 0.4491 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.0503 0.2896 0.2015 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2389 0.3385 0.3983 1.0)) + ) + ) + ) + ) + +(define *no-cloud-mood-channel-group* + (new 'static 'mood-channel-group :data (new 'static 'inline-array mood-channel 4 + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.2 + 0.4 + 1.0 + 0.5 + 0.25 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.8 + 0.6 + 0.4 + 0.2 + 0.0 + 0.0 + 0.0 + 0.0 + 0.5 + 0.75 + 1.0 + 0.75 + 0.5 + 0.25 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.82 + 0.88 + 0.94 + 1.0 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.2 + 0.4 + 0.6 + 0.8 + 1.0 + 0.8 + 0.6 + 0.0 + 0.0 + 0.0 + 0.0 + 0.25 + 0.5 + 0.75 + 1.0 + 0.84 + 0.67 + 0.5 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.16 + 0.33 + 0.5 + 1.0 + 0.25 + 0.18 + 0.12 + 0.06 + 0.0 + ) + ) + ) + ) + ) + +(define *overcast-mood-channel-group* + (new 'static 'mood-channel-group :data (new 'static 'inline-array mood-channel 4 + (new 'static 'mood-channel) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.42 + 0.34 + 0.25 + 0.17 + 0.08 + 0.0 + 1.0 + 0.9 + 0.8 + 0.7 + 0.6 + 0.5 + 0.42 + 0.34 + 0.25 + 0.17 + 0.08 + 0.0 + 1.0 + 0.9 + 0.8 + 0.7 + 0.6 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.58 + 0.66 + 0.75 + 0.83 + 0.92 + 1.0 + 0.0 + 0.1 + 0.2 + 0.3 + 0.4 + 0.5 + 0.58 + 0.66 + 0.75 + 0.83 + 0.92 + 1.0 + 0.0 + 0.1 + 0.2 + 0.3 + 0.4 + ) + ) + (new 'static 'mood-channel) + ) + ) + ) + +(define *stormy-mood-channel-group* + (new 'static 'mood-channel-group :data (new 'static 'inline-array mood-channel 4 + (new 'static 'mood-channel) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + ) + ) + (new 'static 'mood-channel) + ) + ) + ) + +(define *clouds-000* (new 'static 'mood-clouds :cloud-min 1.0 :cloud-max 1.0)) + +(define *clouds-125* (new 'static 'mood-clouds :cloud-min 0.5 :cloud-max 1.0)) + +(define *clouds-250* (new 'static 'mood-clouds :cloud-min 0.333 :cloud-max 0.75)) + +(define *clouds-375* (new 'static 'mood-clouds :cloud-min 0.165 :cloud-max 0.75)) + +(define *clouds-500* (new 'static 'mood-clouds :cloud-max 0.655)) + +(define *clouds-625* (new 'static 'mood-clouds :cloud-max 0.605)) + +(define *clouds-750* (new 'static 'mood-clouds :cloud-max 0.555)) + +(define *clouds-875* (new 'static 'mood-clouds :cloud-max 0.505)) + +(define *clouds-1000* (new 'static 'mood-clouds :cloud-max 0.455)) + +(define *mood-direction-table* + (new 'static 'mood-direction-table + :data (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 0.906 0.397 0.143 0.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5 0.814 0.296 0.0)) + (new 'static 'vector :data (new 'static 'array float 4 -0.5 0.814 0.296 0.0)) + (new 'static 'vector :data (new 'static 'array float 4 -0.906 0.397 0.143 0.0)) + ) + ) + ) + +(define *mood-sky-table* (new 'static 'mood-sky-table + :data (new 'static 'inline-array vector 8 + (new 'static 'vector :data (new 'static 'array float 4 83.0 103.0 190.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 86.0 108.0 195.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 89.0 113.0 200.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 86.0 108.0 195.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 83.0 103.0 190.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 38.0 48.0 96.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 8.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 29.0 33.0 128.0)) + ) + ) + ) + +(define *mood-interp-table* + (new 'static 'sky-color-day + :hour (new 'static 'inline-array sky-color-hour 24 + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) + (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.75 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.99 :morph-end 0.84) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.84 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.66 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.5 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2) + ) + ) + ) + +;; WARN: Return type mismatch symbol vs none. +(defun init-mood-control ((ctrl mood-control)) + (set! (-> ctrl mood-fog-table) (new 'global 'mood-fog-table)) + (set! (-> ctrl mood-color-table) (new 'global 'mood-color-table)) + (set! (-> ctrl mood-channel-group) (new 'global 'mood-channel-group)) + (set! (-> ctrl mood-clouds) (new 'global 'mood-clouds)) + (set! (-> ctrl mood-direction-table) *mood-direction-table*) + (set! (-> ctrl mood-sky-table) *mood-sky-table*) + (set! (-> ctrl mood-interp-table) *mood-interp-table*) + (mem-copy! (the-as pointer (-> ctrl mood-fog-table)) (the-as pointer *no-cloud-clear-mood-fog-table*) 384) + (mem-copy! (the-as pointer (-> ctrl mood-color-table)) (the-as pointer *no-cloud-mood-color-table*) 256) + (mem-copy! (the-as pointer (-> ctrl mood-channel-group)) (the-as pointer *no-cloud-mood-channel-group*) 384) + (mem-copy! (the-as pointer (-> ctrl mood-clouds)) (the-as pointer *clouds-250*) 8) + (set! (-> ctrl fogs 0) *no-cloud-haze-mood-fog-table*) + (set! (-> ctrl fogs 1) *no-cloud-clear-mood-fog-table*) + (set! (-> ctrl fogs 2) *no-cloud-smog-mood-fog-table*) + (set! (-> ctrl fogs 3) *overcast-fog-mood-fog-table*) + (set! (-> ctrl fogs 4) *overcast-clear-mood-fog-table*) + (set! (-> ctrl fogs 5) *overcast-rain-mood-fog-table*) + (set! (-> ctrl fogs 6) *storm-fog-mood-fog-table*) + (set! (-> ctrl fogs 7) *storm-clear-mood-fog-table*) + (set! (-> ctrl fogs 8) *storm-rain-mood-fog-table*) + (set! (-> ctrl colors 0) *no-cloud-mood-color-table*) + (set! (-> ctrl colors 1) *overcast-mood-color-table*) + (set! (-> ctrl colors 2) *storm-mood-color-table*) + (set! (-> ctrl channels 0) *no-cloud-mood-channel-group*) + (set! (-> ctrl channels 1) *overcast-mood-channel-group*) + (set! (-> ctrl channels 2) *stormy-mood-channel-group*) + (set! (-> ctrl clouds 0) *clouds-000*) + (set! (-> ctrl clouds 1) *clouds-125*) + (set! (-> ctrl clouds 2) *clouds-250*) + (set! (-> ctrl clouds 3) *clouds-375*) + (set! (-> ctrl clouds 4) *clouds-500*) + (set! (-> ctrl clouds 5) *clouds-625*) + (set! (-> ctrl clouds 6) *clouds-750*) + (set! (-> ctrl clouds 7) *clouds-875*) + (set! (-> ctrl clouds 8) *clouds-1000*) + (set! (-> ctrl current-interp cloud) 0.25) + (set! (-> ctrl current-interp fog) 0.5) + (set! (-> ctrl target-interp cloud) 0.25) + (set! (-> ctrl target-interp fog) 0.5) + (set! (-> ctrl speed-interp cloud) 0.0005555556) + (set! (-> ctrl speed-interp fog) 0.0005555556) + (set! (-> ctrl range min-cloud) 0.0) + (set! (-> ctrl range max-cloud) 1.0) + (set! (-> ctrl range min-fog) 0.0) + (set! (-> ctrl range max-fog) 1.0) + (set! (-> ctrl time-until-random cloud) 36000.0) + (set! (-> ctrl time-until-random-min cloud) 36000.0) + (set! (-> ctrl time-until-random-max cloud) 72000.0) + (set! (-> ctrl time-until-random fog) 216000.0) + (set! (-> ctrl time-until-random-min fog) 36000.0) + (set! (-> ctrl time-until-random-max fog) 72000.0) + (set! (-> ctrl overide cloud) 0.25) + (set! (-> ctrl overide fog) 0.0) + (set! (-> ctrl overide-weather-flag) #t) + (set! (-> ctrl display-flag) #f) + (none) + ) + +(define *mood-control* (new 'static 'mood-control)) + +(init-mood-control *mood-control*) diff --git a/goal_src/jakx/engine/gfx/mood/mood-tables2.gc b/goal_src/jakx/engine/gfx/mood/mood-tables2.gc index 6c19d54511..5e38a9ff06 100644 --- a/goal_src/jakx/engine/gfx/mood/mood-tables2.gc +++ b/goal_src/jakx/engine/gfx/mood/mood-tables2.gc @@ -7,3 +7,414 @@ ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(define *override-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.375 1.157 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.625 0.553 0.725 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.473 1.337 1.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.527 0.652 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.473 1.348 1.15 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.527 0.652 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.473 1.337 1.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.527 0.652 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5 1.148 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5 0.562 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.05 0.149 0.375 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.35 0.451 0.625 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.35 0.5 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3 0.35 0.5 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.575 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3 0.425 0.5 1.0)) + ) + ) + ) + ) + +(define *override-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 128.0 180.0 243.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.0 32.0 100.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 24.0 64.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 56.0 72.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; WARN: Return type mismatch pointer vs none. +(defun init-override-table ((arg0 mood-table)) + (set! (-> arg0 mood-fog-table) (new 'debug 'mood-fog-table)) + (set! (-> arg0 mood-color-table) (new 'debug 'mood-color-table)) + (set! (-> arg0 mood-channel-group) *no-cloud-mood-channel-group*) + (set! (-> arg0 mood-direction-table) *mood-direction-table*) + (set! (-> arg0 mood-sky-table) *mood-sky-table*) + (set! (-> arg0 mood-interp-table) *mood-interp-table*) + (mem-copy! (the-as pointer (-> arg0 mood-fog-table)) (the-as pointer *no-cloud-clear-mood-fog-table*) 384) + (mem-copy! (the-as pointer (-> arg0 mood-color-table)) (the-as pointer *no-cloud-mood-color-table*) 256) + (none) + ) + +(define *override-table* (new 'static 'mood-table)) + +(init-override-table *override-table*) + +;; WARN: Return type mismatch object vs none. +(defun print-mood-tables () + (mem-copy! + (the-as pointer (-> *override-table* mood-fog-table)) + (the-as pointer *override-mood-fog-table*) + 384 + ) + (mem-copy! + (the-as pointer (-> *override-table* mood-color-table)) + (the-as pointer *override-mood-color-table*) + 256 + ) + (dotimes (v1-2 8) + (vector-float*! + (-> *override-table* mood-fog-table data v1-2 fog-color) + (-> *override-table* mood-fog-table data v1-2 fog-color) + (-> *override-table* mood-fog-table data v1-2 fog-color w) + ) + (vector-float*! + (-> *override-table* mood-color-table data v1-2 lgt-color) + (-> *override-table* mood-color-table data v1-2 lgt-color) + (-> *override-table* mood-color-table data v1-2 lgt-color w) + ) + (vector-float*! + (the-as vector (+ (the-as uint (-> *override-table* mood-color-table data 0 amb-color)) (* v1-2 32))) + (the-as vector (+ (the-as uint (-> *override-table* mood-color-table data 0 amb-color)) (* v1-2 32))) + (-> *override-table* mood-color-table data v1-2 amb-color w) + ) + (set! (-> *override-table* mood-fog-table data v1-2 fog-color w) 128.0) + (set! (-> *override-table* mood-color-table data v1-2 lgt-color w) 0.0) + (set! (-> *override-table* mood-color-table data v1-2 amb-color w) 1.0) + ) + (format 0 "(define *override-mood-color-table*~%") + (format 0 " (new 'static 'mood-color-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-color 0~%") + (dotimes (gp-0 8) + (format 0 " (new 'static 'mood-color") + (let ((v1-5 gp-0)) + (cond + ((zero? v1-5) + (format 0 " ; sun rise~%") + ) + ((= v1-5 1) + (format 0 " ; morning~%") + ) + ((= v1-5 2) + (format 0 " ; noon~%") + ) + ((= v1-5 3) + (format 0 " ; afternoon~%") + ) + ((= v1-5 4) + (format 0 " ; sunset~%") + ) + ((= v1-5 5) + (format 0 " ; twilight~%") + ) + ((= v1-5 6) + (format 0 " ; evening~%") + ) + ((= v1-5 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :lgt-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-0 lgt-color x) + (-> *override-table* mood-color-table data gp-0 lgt-color y) + (-> *override-table* mood-color-table data gp-0 lgt-color z) + (-> *override-table* mood-color-table data gp-0 lgt-color w) + ) + (format + 0 + " :amb-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-0 amb-color x) + (-> *override-table* mood-color-table data gp-0 amb-color y) + (-> *override-table* mood-color-table data gp-0 amb-color z) + (-> *override-table* mood-color-table data gp-0 amb-color w) + ) + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (format 0 "(define *override-mood-fog-table*~%") + (format 0 " (new 'static 'mood-fog-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-fog 0~%") + (dotimes (gp-1 8) + (format 0 " (new 'static 'mood-fog") + (let ((v1-33 gp-1)) + (cond + ((zero? v1-33) + (format 0 " ; sun rise~%") + ) + ((= v1-33 1) + (format 0 " ; morning~%") + ) + ((= v1-33 2) + (format 0 " ; noon~%") + ) + ((= v1-33 3) + (format 0 " ; afternoon~%") + ) + ((= v1-33 4) + (format 0 " ; sunset~%") + ) + ((= v1-33 5) + (format 0 " ; twilight~%") + ) + ((= v1-33 6) + (format 0 " ; evening~%") + ) + ((= v1-33 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :fog-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-fog-table data gp-1 fog-color x) + (-> *override-table* mood-fog-table data gp-1 fog-color y) + (-> *override-table* mood-fog-table data gp-1 fog-color z) + (-> *override-table* mood-fog-table data gp-1 fog-color w) + ) + (format + 0 + " :fog-start (meters ~f) :fog-end (meters ~f) :fog-min ~f :fog-max ~f ~%" + (-> *override-table* mood-fog-table data gp-1 fog-dists x) + (-> *override-table* mood-fog-table data gp-1 fog-dists y) + (-> *override-table* mood-fog-table data gp-1 fog-dists w) + (-> *override-table* mood-fog-table data gp-1 fog-dists z) + ) + (format 0 " :erase-color (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 128.0)~%") + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (format 0 "(define *override-table* (new 'static 'mood-table))~%") + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defun desaturate-mood-colors ((arg0 float) (arg1 float) (arg2 float)) + (mem-copy! + (the-as pointer (-> *override-table* mood-color-table)) + (the-as pointer *no-cloud-mood-color-table*) + 256 + ) + (dotimes (v1-1 8) + (let ((a1-3 (-> *override-table* mood-color-table data v1-1)) + (a0-8 (the-as + (inline-array mood-color) + (-> (the-as (inline-array mood-color) (-> *override-table* mood-color-table data 0 amb-color)) v1-1) + ) + ) + ) + (let ((f1-2 (fmax (fmax (-> a1-3 lgt-color x) (-> a1-3 lgt-color y)) (-> a1-3 lgt-color z))) + (f0-4 (fmax (fmax (-> a0-8 0 lgt-color x) (-> a0-8 0 lgt-color y)) (-> a0-8 0 lgt-color z))) + ) + (set! (-> a1-3 lgt-color x) (* (+ (-> a1-3 lgt-color x) (* (- f1-2 (-> a1-3 lgt-color x)) arg0)) arg1)) + (set! (-> a1-3 lgt-color y) (* (+ (-> a1-3 lgt-color y) (* (- f1-2 (-> a1-3 lgt-color y)) arg0)) arg1)) + (set! (-> a1-3 lgt-color z) (* (+ (-> a1-3 lgt-color z) (* (- f1-2 (-> a1-3 lgt-color z)) arg0)) arg1)) + (set! (-> a1-3 lgt-color w) 0.0) + (set! (-> a0-8 0 lgt-color x) (* (+ (-> a0-8 0 lgt-color x) (* (- f0-4 (-> a0-8 0 lgt-color x)) arg0)) arg2)) + (set! (-> a0-8 0 lgt-color y) (* (+ (-> a0-8 0 lgt-color y) (* (- f0-4 (-> a0-8 0 lgt-color x)) arg0)) arg2)) + (set! (-> a0-8 0 lgt-color z) (* (+ (-> a0-8 0 lgt-color z) (* (- f0-4 (-> a0-8 0 lgt-color x)) arg0)) arg2)) + ) + (set! (-> a0-8 0 lgt-color w) 1.0) + ) + ) + (format 0 "(define *override-mood-color-table*~%") + (format 0 " (new 'static 'mood-color-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-color 0~%") + (dotimes (gp-1 8) + (format 0 " (new 'static 'mood-color") + (let ((v1-4 gp-1)) + (cond + ((zero? v1-4) + (format 0 " ; sun rise~%") + ) + ((= v1-4 1) + (format 0 " ; morning~%") + ) + ((= v1-4 2) + (format 0 " ; noon~%") + ) + ((= v1-4 3) + (format 0 " ; afternoon~%") + ) + ((= v1-4 4) + (format 0 " ; sunset~%") + ) + ((= v1-4 5) + (format 0 " ; twilight~%") + ) + ((= v1-4 6) + (format 0 " ; evening~%") + ) + ((= v1-4 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :lgt-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-1 lgt-color x) + (-> *override-table* mood-color-table data gp-1 lgt-color y) + (-> *override-table* mood-color-table data gp-1 lgt-color z) + (-> *override-table* mood-color-table data gp-1 lgt-color w) + ) + (format + 0 + " :amb-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-1 amb-color x) + (-> *override-table* mood-color-table data gp-1 amb-color y) + (-> *override-table* mood-color-table data gp-1 amb-color z) + (-> *override-table* mood-color-table data gp-1 amb-color w) + ) + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (none) + ) + +;; WARN: Return type mismatch object vs none. +(defun desaturate-mood-fog ((arg0 (pointer mood-fog-table)) (arg1 float) (arg2 float)) + (mem-copy! (the-as pointer (-> *override-table* mood-fog-table)) arg0 384) + (dotimes (v1-2 8) + (let ((a0-5 (-> *override-table* mood-fog-table data v1-2))) + (let ((f0-2 (fmax (fmax (-> a0-5 fog-color x) (-> a0-5 fog-color y)) (-> a0-5 fog-color z)))) + (set! (-> a0-5 fog-color x) (* (+ (-> a0-5 fog-color x) (* (- f0-2 (-> a0-5 fog-color x)) arg1)) arg2)) + (set! (-> a0-5 fog-color y) (* (+ (-> a0-5 fog-color y) (* (- f0-2 (-> a0-5 fog-color y)) arg1)) arg2)) + (set! (-> a0-5 fog-color z) (* (+ (-> a0-5 fog-color z) (* (- f0-2 (-> a0-5 fog-color z)) arg1)) arg2)) + ) + (set! (-> a0-5 fog-color w) 1.0) + ) + ) + (format 0 "(define *override-mood-fog-table*~%") + (format 0 " (new 'static 'mood-fog-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-fog 0~%") + (dotimes (gp-1 8) + (format 0 " (new 'static 'mood-fog") + (let ((v1-5 gp-1)) + (cond + ((zero? v1-5) + (format 0 " ; sun rise~%") + ) + ((= v1-5 1) + (format 0 " ; morning~%") + ) + ((= v1-5 2) + (format 0 " ; noon~%") + ) + ((= v1-5 3) + (format 0 " ; afternoon~%") + ) + ((= v1-5 4) + (format 0 " ; sunset~%") + ) + ((= v1-5 5) + (format 0 " ; twilight~%") + ) + ((= v1-5 6) + (format 0 " ; evening~%") + ) + ((= v1-5 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :fog-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-fog-table data gp-1 fog-color x) + (-> *override-table* mood-fog-table data gp-1 fog-color y) + (-> *override-table* mood-fog-table data gp-1 fog-color z) + (-> *override-table* mood-fog-table data gp-1 fog-color w) + ) + (format + 0 + " :fog-start (meters ~f) :fog-end (meters ~f) :fog-min ~f :fog-max ~f ~%" + (/ (-> *override-table* mood-fog-table data gp-1 fog-dists x) METER_LENGTH) + (/ (-> *override-table* mood-fog-table data gp-1 fog-dists y) METER_LENGTH) + (-> *override-table* mood-fog-table data gp-1 fog-dists w) + (-> *override-table* mood-fog-table data gp-1 fog-dists z) + ) + (format 0 " :erase-color (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 128.0)~%") + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (none) + ) + +(define *debug-mood-color-table* (-> *mood-control* mood-color-table)) + +(define *debug-mood-fog-table* (-> *mood-control* mood-fog-table)) diff --git a/goal_src/jakx/engine/gfx/sparks-h.gc b/goal_src/jakx/engine/gfx/sparks-h.gc index 013ea59023..629ca80657 100644 --- a/goal_src/jakx/engine/gfx/sparks-h.gc +++ b/goal_src/jakx/engine/gfx/sparks-h.gc @@ -7,3 +7,108 @@ ;; DECOMP BEGINS +(deftype spark (structure) + ((pos vector :inline) + (age float :overlay-at (-> pos data 3)) + (vel vector :inline) + (length float :overlay-at (-> vel data 3)) + (accel vector :inline) + (alpha float :overlay-at (-> accel data 3)) + ) + ) + + +(deftype spark-vport (structure) + ((mat matrix 4 :inline) + (hvdf-offset vector :inline) + (hmge-scale vector :inline) + (frame qword :inline) + (zbuf qword :inline) + (scissor qword :inline) + (pfog0 vector :inline) + ) + ) + + +(deftype spark-color-group (structure) + ((colors vector 4 :inline) + (alpha gs-adcmd :inline) + ) + ) + + +(deftype spark-constants (structure) + ((vport spark-vport 2 :inline) + (adgif-tag qword :inline) + (prim-tags vector 3 :inline) + (color-groups spark-color-group 13 :inline) + (friction float) + (scale float) + (matrix-count int32) + (set-matrix-time int32) + ) + ) + + +(deftype spark-vert (structure) + ((color vector :inline) + (pos vector :inline) + ) + ) + + +(deftype spark-line-packet (structure) + ((tag qword :inline) + (alpha qword :inline) + (verts spark-vert 4 :inline) + ) + ) + + +(deftype spark-viewport-packet (structure) + ((tag qword :inline) + (frame qword :inline) + (zbuf qword :inline) + (scissor qword :inline) + ) + ) + + +(deftype spark-launch-params (structure) + ((pos vector :inline) + (vel vector :inline) + (accel vector :inline) + (age float) + (alpha float) + (y-floor float) + (length float) + (color-index uint32) + ) + ) + + +(deftype sparks-work (basic) + ((next-free int32) + (constants spark-constants :inline) + (start vector :inline) + (vel vector :inline) + (accel vector :inline) + (test basic) + (vecs vector 4 :inline) + (y-floor int32 512) + (data spark 512 :inline) + ) + (:methods + (sparks-work-method-9 () none) + (sparks-work-method-10 () none) + (sparks-work-method-11 () none) + (sparks-work-method-12 () none) + (sparks-work-method-13 () none) + (sparks-work-method-14 () none) + (sparks-work-method-15 () none) + (sparks-work-method-16 () none) + (sparks-work-method-17 () none) + (sparks-work-method-18 () none) + (sparks-work-method-19 () none) + ) + ) diff --git a/goal_src/jakx/engine/gfx/sprite/particles/sparticle-h.gc b/goal_src/jakx/engine/gfx/sprite/particles/sparticle-h.gc index 8d15643e20..e291595e36 100644 --- a/goal_src/jakx/engine/gfx/sprite/particles/sparticle-h.gc +++ b/goal_src/jakx/engine/gfx/sprite/particles/sparticle-h.gc @@ -79,7 +79,7 @@ (valid uint8) (clock-index uint8) (user1-int16 uint16) - (key sparticle-launch-control) + (key (pointer sparticle-launch-control)) (binding sparticle-launch-state) (data uint32 1 :overlay-at omega) (datab int8 4 :overlay-at omega) @@ -125,3 +125,8 @@ There are separate systems for different modes of sprite rendering: 2D/billboard (new (symbol type int int symbol pointer (inline-array adgif-shader)) _type_) ) ) + +(define-extern sp-kill-particle (function sparticle-system sparticle-cpuinfo symbol)) + +(define-extern *sp-particle-system-2d* sparticle-system) +(define-extern *sp-particle-system-3d* sparticle-system) \ No newline at end of file diff --git a/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher-h.gc b/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher-h.gc index ff32487b04..06f79b8578 100644 --- a/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher-h.gc +++ b/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher-h.gc @@ -9,10 +9,15 @@ (declare-type sparticle-cpuinfo structure) (declare-type sparticle-system structure) +(define-extern unlink-part-group-by-heap (function kheap int)) +(define-extern particle-adgif-cache-flush (function none)) +(define-extern execute-part-engine (function none)) +(define-extern execute-particle-local-space-engine (function int none)) + ;; +++sp-field-id (defenum sp-field-id :type uint16 - ;; todo copied from jak 2 + (misc-fields-start 0) (spt-texture 1) (spt-anim 2) @@ -20,80 +25,79 @@ (spt-birth-func 4) (spt-joint/refpoint 5) (spt-num 6) - (spt-sound 7) - (misc-fields-end 8) + (misc-fields-end 7) - (sprite-fields-start 9) - (spt-x 10) - (spt-y 11) - (spt-z 12) - (spt-scale-x 13) - (spt-rot-x 14) - (spt-rot-y 15) - (spt-rot-z 16) - (spt-scale-y 17) - (spt-r 18) - (spt-g 19) - (spt-b 20) - (spt-a 21) - (sprite-fields-end 22) + (sprite-fields-start 8) + (spt-x 9) + (spt-y 10) + (spt-z 11) + (spt-scale-x 12) + (spt-rot-x 13) + (spt-rot-y 14) + (spt-rot-z 15) + (spt-scale-y 16) + (spt-r 17) + (spt-g 18) + (spt-b 19) + (spt-a 20) + (sprite-fields-end 21) - (cpu-fields-start 23) - (spt-omega 24) - (spt-vel-x 25) - (spt-vel-y 26) - (spt-vel-z 27) - (spt-scalevel-x 28) - (spt-rotvel-x 29) - (spt-rotvel-y 30) - (spt-rotvel-z 31) - (spt-scalevel-y 32) - (spt-fade-r 33) - (spt-fade-g 34) - (spt-fade-b 35) - (spt-fade-a 36) - (spt-accel-x 37) - (spt-accel-y 38) - (spt-accel-z 39) - (spt-dummy 40) - (spt-quat-x 41) - (spt-quat-y 42) - (spt-quat-z 43) - (spt-quad-w 44) - (spt-friction 45) - (spt-timer 46) - (spt-flags 47) - (spt-userdata 48) - (spt-func 49) - (spt-next-time 50) - (spt-next-launcher 51) - (cpu-fields-end 52) + (cpu-fields-start 22) + (spt-omega 23) + (spt-vel-x 24) + (spt-vel-y 25) + (spt-vel-z 26) + (spt-scalevel-x 27) + (spt-rotvel-x 28) + (spt-rotvel-y 29) + (spt-rotvel-z 30) + (spt-scalevel-y 31) + (spt-fade-r 32) + (spt-fade-g 33) + (spt-fade-b 34) + (spt-fade-a 35) + (spt-accel-x 36) + (spt-accel-y 37) + (spt-accel-z 38) + (spt-dummy 39) + (spt-quat-x 40) + (spt-quat-y 41) + (spt-quat-z 42) + (spt-quad-w 43) + (spt-friction 44) + (spt-timer 45) + (spt-flags 46) + (spt-userdata 47) + (spt-func 48) + (spt-next-time 49) + (spt-next-launcher 50) + (cpu-fields-end 51) - (launch-fields-start 53) - (spt-launchrot-x 54) - (spt-launchrot-y 55) - (spt-launchrot-z 56) - (spt-launchrot-w 57) - (spt-conerot-x 58) - (spt-conerot-y 59) - (spt-conerot-z 60) - (spt-conerot-w 61) - (spt-rotate-x 62) - (spt-rotate-y 63) - (spt-rotate-z 64) + (launch-fields-start 52) + (spt-launchrot-x 53) + (spt-launchrot-y 54) + (spt-launchrot-z 55) + (spt-launchrot-w 56) + (spt-conerot-x 57) + (spt-conerot-y 58) + (spt-conerot-z 59) + (spt-conerot-w 60) + (spt-rotate-x 61) + (spt-rotate-y 62) + (spt-rotate-z 63) + (spt-conerot-radius 64) + (spt-mat-scale-x 65) + (spt-mat-scale-y 66) + (spt-mat-scale-z 67) + (launch-fields-end 68) - (spt-conerot-radius 65) - (spt-mat-scale-x 66) - (spt-mat-scale-y 67) - (spt-mat-scale-z 68) - (launch-fields-end 69) - - (spt-scale 70) - (spt-scalevel 71) - (spt-end 72) - ) + (spt-scale 69) + (spt-scalevel 70) + (spt-end 71) +) ;; ---sp-field-id + ;; +++sp-flag (defenum sp-flag :type uint16 @@ -109,6 +113,7 @@ ) ;; ---sp-flag + ;; +++sp-group-item-flag (defenum sp-group-item-flag :bitfield #t @@ -132,6 +137,7 @@ ) ;; ---sp-group-item-flag + ;; +++sp-launch-state-flags (defenum sp-launch-state-flags :bitfield #t @@ -142,6 +148,7 @@ ) ;; ---sp-launch-state-flags + ;; +++sp-group-flag (defenum sp-group-flag :bitfield #t @@ -165,6 +172,235 @@ ) ;; ---sp-group-flag + +(defmacro sp-item (launcher + &key (fade-after 0.0) + &key (falloff-to 0.0) + &key (flags ()) + &key (period 0) + &key (length 0) + &key (offset 0) + &key (hour-mask 0) + &key (binding 0) + ) + `(new 'static 'sparticle-group-item + :launcher ,launcher + :fade-after ,fade-after + :falloff-to ,falloff-to + :flags (sp-group-item-flag ,@flags) + :period ,period + :length ,length + :offset ,offset + :hour-mask ,hour-mask + :binding ,binding + ) + ) + +(defmacro defpartgroup (name &key id &key parts &key (duration 3000) &key (linger-duration 1500) &key (flags ()) &key bounds + &key (rotate (0.0 0.0 0.0)) &key (scale (1.0 1.0 1.0))) + "define a new part group. defines a constant with the name of the group with the ID as its value" + `(begin + ; (defconstant ,name ,id) + (set! (-> *part-group-id-table* ,id) + (new 'static 'sparticle-launch-group + :duration ,duration + :linger-duration ,linger-duration + :flags (sp-group-flag ,@flags) + :bounds ,bounds + :name ,(symbol->string name) + :length ,(length parts) + :launcher (new 'static 'inline-array sparticle-group-item ,(length parts) ,@parts) + :rotate-x ,(car rotate) + :rotate-y ,(cadr rotate) + :rotate-z ,(caddr rotate) + :scale-x ,(car scale) + :scale-y ,(cadr scale) + :scale-z ,(caddr scale) + ) + ) + ) + ) + +(desfun param-float? (p) + (or (float? p) (and (pair? p) (eq? 'meters (car p))) (and (pair? p) (eq? 'degrees (car p)))) + ) + +(desfun param-int? (p) + (or (integer? p) (and (pair? p) (eq? 'seconds (car p)))) + ) + +(desfun param-symbol? (p) + (and (pair? p) (eq? 'quote (car p))) + ) + +(seval (begin +(define *sparticle-fields* (make-string-hash-table)) +(doenum (name val 'sp-field-id) + (hash-table-set! + *sparticle-fields* + (if (string-starts-with? (symbol->string name) "spt-") + (string->symbol (string-substr (symbol->string name) 4 0)) + name) + (list + val name (member name '(spt-vel-x + spt-vel-y + spt-vel-z + spt-scalevel-x + spt-scalevel-y + spt-rotvel-x + spt-rotvel-y + spt-rotvel-z + spt-fade-r + spt-fade-g + spt-fade-b + spt-fade-a + spt-accel-x + spt-accel-y + spt-accel-z)) + ) + ) + ) +;; you cannot define these fields ever. +(define *sparticle-fields-banned* '(misc-fields-start + misc-fields-end + sprite-fields-start + sprite-fields-end + cpu-fields-start + cpu-fields-end + launch-fields-start + launch-fields-end + end + )) +)) + +;; the last field ID defined, to make sure that fields are defined in order. +(seval (define *last-field-id* -1)) + +(desfun process-init-spec (x) + (let* ((head (symbol->string (car x))) + (params (cdr x)) + (field-name (string->symbol (string-substr head 1 0))) + (field-lookup (hash-table-try-ref *sparticle-fields* field-name)) + (field (cdr field-lookup)) + (store? (member ':store params)) + (param-count (if store? (1- (length params)) (length params))) + ) + (when (not (car field-lookup)) + (fmt #t "unknown sparticle field {}\n" x)) + (when (neq? (string-ref head 0) #\:) + (fmt #t "invalid sparticle field {}\n" x)) + ; (when (member field-name *sparticle-fields-banned*) + ; (fmt #t "you cannot use sparticle field {}\n" field-name)) + (let ((field-id (car field)) + (field-enum-name (cadr field)) + (vel? (and #f (caddr field))) + (param0 (and (>= param-count 1) (first params))) + (param1 (and (>= param-count 2) (second params))) + (param2 (and (>= param-count 3) (third params)))) + (when (>= *last-field-id* field-id) + (fmt #t "field {} must come after field {}, not before\n" field-name (car (nth *last-field-id* *sparticle-fields*))) + ) + (set! *last-field-id* field-id) + (cond + ((eq? field-name 'flags) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :initial-value (sp-cpuinfo-flag ,@param0) :random-mult 1) + ) + ((eq? field-name 'texture) + (if (eq? (car param0) 'new) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :tex ,param0 :flags (sp-flag int)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :tex ,(string->symbol-format "{}-{}" (car param0) (cadr param0)) :flags (sp-flag int)) + ) + ) + ((eq? field-name 'next-launcher) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :initial-value ,param0 :flags (sp-flag launcher)) + ) + ((eq? field-name 'sound) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :sound ,param0 :flags (sp-flag object)) + ) + ((and (= 2 param-count) (symbol? param0) (eq? param0 ':copy)) + (let* ((other-field-lookup (hash-table-try-ref *sparticle-fields* (cadr (member ':copy params)))) + (other-field (cdr other-field-lookup)) + (other-field-id (car other-field))) + (when (>= other-field-id field-id) + (fmt #t "warning copying to sparticle field {} from {} - you can only copy from fields before this one!\n" field-name (cadr other-field)) ) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag copy-from-other) + :initial-value ,(- other-field-id field-id) :random-mult 1) + ) + ) + ((and (= 2 param-count) (symbol? param0) (eq? param0 ':data)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag object) + :object ,(cadr (member ':data params))) + ) + ((and (= 1 param-count) (param-symbol? param0)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag symbol) + :sym ,param0) + ) + ((and (= 1 param-count) (param-float? param0)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag ,(if store? 'float-store 'float)) + :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) + :random-rangef 0.0 + :random-multf 1.0) + ) + ((and (= 2 param-count) (param-float? param0) (param-float? param1)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag ,(if store? 'float-store 'float)) + :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) + :random-rangef ,(if vel? `(/ ,param1 60.0) param1) + :random-multf 1.0) + ) + ((and (= 3 param-count) (param-float? param0) (param-float? param1) (param-float? param2)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag ,(if store? 'float-store 'float)) + :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) + :random-rangef ,param1 + :random-multf ,(if vel? `(/ ,param2 60.0) param2)) + ) + ((and (= 3 param-count) (param-float? param0) (param-int? param1) (param-float? param2)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag float-int-rand) + :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) + :random-range ,param1 + :random-multf ,(if vel? `(/ ,param2 60.0) param2)) + ) + ((and (= 1 param-count) (param-int? param0)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag int) + :initial-value ,param0 + :random-range 0 + :random-mult 1) + ) + ((and (= 2 param-count) (param-int? param0) (param-int? param1)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag int) + :initial-value ,param0 + :random-range ,param1 + :random-mult 1) + ) + ((and (= 3 param-count) (param-int? param0) (param-int? param1) (param-int? param2)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag int) + :initial-value ,param0 + :random-range ,param1 + :random-mult ,param2) + ) + (#t + `(new 'static 'sp-field-init-spec :field (sp-field-id spt-end)) + ) + ) + ) + ) + ) + +(defmacro defpart (id &key (init-specs ())) + "define a new sparticle-launcher" + (begin + (set! *last-field-id* -1) + `(set! (-> *part-id-table* ,id) + (new 'static 'sparticle-launcher + :init-specs (new 'static 'inline-array sp-field-init-spec ,(1+ (length init-specs)) + ,@(apply process-init-spec init-specs) + (new 'static 'sp-field-init-spec :field (sp-field-id spt-end)) + ))) + ) + ) + +(define-extern local-space-proc-joint (function particle-local-space-info none)) +(define-extern *particle-quat* quaternion) + ;; DECOMP BEGINS (deftype sparticle-birthinfo (structure) @@ -204,12 +440,12 @@ (deftype sparticle-launcher (basic) "A definition of a single particle, as a list of init specs." ((birthaccum float) - (soundaccum float) (init-specs (inline-array sp-field-init-spec)) + (level-flag int32) ) (:methods - (get-field-spec-by-id (_type_ sp-field-id) sp-field-init-spec) - (setup-special-textures (_type_ string) none) + (sparticle-launcher-method-9 () none) + (sparticle-launcher-method-10 () none) ) ) @@ -376,3 +612,10 @@ particle system itself. This type just holds the launching-related state." (t-step float) ) ) + +(define-extern lookup-part-group-by-name (function string sparticle-launch-group)) +(define-extern sparticle-motion-blur (function sparticle-system sparticle-cpuinfo vector none)) +(define-extern sp-launch-particles-var (function sparticle-system sparticle-launcher matrix sparticle-launch-state sparticle-launch-control float none)) +(define-extern *part-id-table* (array sparticle-launcher)) +(define-extern *part-group-id-table* (array sparticle-launch-group)) +(define-extern sparticle-set-conerot (function sparticle-launcher vector none)) \ No newline at end of file diff --git a/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher.gc b/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher.gc index baf5f6baa2..537f1e15a7 100644 --- a/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher.gc +++ b/goal_src/jakx/engine/gfx/sprite/particles/sparticle-launcher.gc @@ -7,3 +7,5 @@ ;; DECOMP BEGINS +(define-extern spt-func-relative-pos (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d none)) +(define-extern sparticle-2d-spline-align-instant (function object sparticle-cpuinfo sprite-vec-data-2d none)) \ No newline at end of file diff --git a/goal_src/jakx/engine/gfx/sprite/sprite.gc b/goal_src/jakx/engine/gfx/sprite/sprite.gc index 0f5536b96c..185e0cc384 100644 --- a/goal_src/jakx/engine/gfx/sprite/sprite.gc +++ b/goal_src/jakx/engine/gfx/sprite/sprite.gc @@ -5,5 +5,15 @@ ;; name in dgo: sprite ;; dgos: ENGINE, GAME +;; +++sprite-aux-type +(defenum sprite-aux-type + :bitfield #f + :type uint32 + (distort 0) + (glow 1) + ) +;; ---sprite-aux-type + + ;; DECOMP BEGINS diff --git a/goal_src/jakx/engine/gfx/texture/texture.gc b/goal_src/jakx/engine/gfx/texture/texture.gc index 6338767925..5a9da4779e 100644 --- a/goal_src/jakx/engine/gfx/texture/texture.gc +++ b/goal_src/jakx/engine/gfx/texture/texture.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define-extern lookup-texture-id-by-name (function string string texture-id)) \ No newline at end of file diff --git a/goal_src/jakx/engine/gfx/view.gc b/goal_src/jakx/engine/gfx/view.gc index fc11d5e544..17f6a85828 100644 --- a/goal_src/jakx/engine/gfx/view.gc +++ b/goal_src/jakx/engine/gfx/view.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define-extern view-get-active-math-camera (function math-camera)) \ No newline at end of file diff --git a/goal_src/jakx/engine/gfx/viewport-h.gc b/goal_src/jakx/engine/gfx/viewport-h.gc index 8505ed6fb4..11bfc62406 100644 --- a/goal_src/jakx/engine/gfx/viewport-h.gc +++ b/goal_src/jakx/engine/gfx/viewport-h.gc @@ -7,3 +7,94 @@ ;; DECOMP BEGINS +(deftype viewport (structure) + ((fog-corner vector 4 :inline) + (min-fog-corner vector :inline) + (max-fog-corner vector :inline) + (prev-inv-camera-rot matrix :inline) + (motion-vector vector :inline) + (math-camera math-camera) + (index int32) + (frame uint64) + (frame-a uint64) + (zbuf-on uint64) + (zbuf-off uint64) + (scissor uint64) + (clamp uint64) + (tex0 uint64) + (tex0-24 uint64) + (copy-frame uint64) + (copy-tex0 uint64) + (copy-dma basic) + (hflip-zbuf-dma basic) + (glow-frame-1 uint64) + (glow-tex0-1 uint64) + (glow-frame-2 uint64) + (glow-tex0-2 uint64) + (shadow-texoffset vector :inline) + (shadow-texscale vector :inline) + (shadow-invert-frame uint64) + (shadow-dma-frame uint64) + (shadow-dma-tex0 uint64) + (shadow-dma basic) + (warp-shader adgif-shader :inline) + (blur-forward-dma basic) + (blur-reverse-dma basic) + (blur-finish-dma basic) + (blur-sx int32) + (blur-sy int32) + (blur-hx int32) + (blur-hy int32) + (blur-cx int32) + (blur-cy int32) + (blur-frame-0 uint64) + (blur-frame-1 uint64) + (blur-frame-a uint64) + (blur-tex0-0 uint64) + (blur-tex0-1 uint64) + (blur-tex0-a uint64) + (blur-clamp uint64) + (blur-scissor uint64) + (blur-scale float) + (screen-maxx int32) + (screen-maxy int32) + (screen-sx int32) + (screen-sy int32) + (screen-hx int32) + (screen-hy int32) + (screen-qx int32) + (screen-qy int32) + (screen-cx int32) + (screen-cy int32) + (ratio-x float) + (ratio-y float) + (pad int32 17) + (minx-on-screen int32) + (miny-on-screen int32) + (scissor-on-screen uint64) + ) + (:methods + (viewport-method-9 (_type_) none) + (viewport-method-10 (_type_) none) + (viewport-method-11 (_type_) none) + (viewport-method-12 (_type_) none) + (viewport-method-13 (_type_) none) + (viewport-method-14 (_type_) none) + (viewport-method-15 (_type_) none) + ) + ) + + +(deftype viewport-array (structure) + ((mode uint32) + (num-viewports uint32) + (current-viewport-index uint32) + (data viewport 3 :inline) + (default viewport :inline :overlay-at (-> data 2)) + ) + (:methods + (viewport-array-method-9 (_type_ viewport) none) + (get-viewport (_type_ uint) viewport) + (viewport-array-method-11 (_type_) none) + ) + ) diff --git a/goal_src/jakx/engine/gfx/viewport.gc b/goal_src/jakx/engine/gfx/viewport.gc index c603e31fef..662fff3584 100644 --- a/goal_src/jakx/engine/gfx/viewport.gc +++ b/goal_src/jakx/engine/gfx/viewport.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define-extern *viewport-array* viewport-array) \ No newline at end of file diff --git a/goal_src/jakx/engine/gfx/vu1-user-h.gc b/goal_src/jakx/engine/gfx/vu1-user-h.gc index 52f57fe222..2a219a53fb 100644 --- a/goal_src/jakx/engine/gfx/vu1-user-h.gc +++ b/goal_src/jakx/engine/gfx/vu1-user-h.gc @@ -782,6 +782,8 @@ (bucket786 786) (bucket788 788) + + (bucket794 794) ) ;; ---bucket-id diff --git a/goal_src/jakx/engine/load/load-dgo.gc b/goal_src/jakx/engine/load/load-dgo.gc index 7464cd1e19..b7eb4f4caa 100644 --- a/goal_src/jakx/engine/load/load-dgo.gc +++ b/goal_src/jakx/engine/load/load-dgo.gc @@ -5,5 +5,385 @@ ;; name in dgo: load-dgo ;; dgos: ENGINE, GAME +;; +++load-msg-result +(defenum load-msg-result + :type uint16 + :bitfield #f + (done 0) + (error 1) + (more 2) + (aborted 3) + (invalid 666) + ) +;; ---load-msg-result + +(define-extern *load-dgo-rpc* rpc-buffer-pair) +(define-extern *load-str-rpc* rpc-buffer-pair) +(define-extern *play-str-rpc* rpc-buffer-pair) +(define-extern *load-str-lock* symbol) +(define-extern *que-str-lock* symbol) +(define-extern *dgo-name* string) + +(define-extern dynamic-patch-hook (function dgo-header kheap uint none)) + ;; DECOMP BEGINS +(deftype load-dgo-msg (structure) + "IOP RPC message for loading a dgo." + ((rsvd uint16) + (result load-msg-result) + (b1 pointer) + (b2 pointer) + (bt pointer) + (name uint128) + (address uint32 :overlay-at b1) + (id uint128) + (pad uint32 7) + ) + ) + + +(deftype load-chunk-msg (structure) + "IOP RPC message for loading a chunk of a chunked animation" + ((rsvd uint16) + (result load-msg-result) + (address pointer) + (section uint32) + (maxlen uint32) + (dummy uint32 4) + (basename sound-stream-name :inline) + ) + ) + + +(deftype play-chunk-msg (structure) + "IOP RPC message for playing some streamed audio." + ((rsvd uint16) + (result uint16) + (address pointer) + (section uint32) + (volume int32 :overlay-at section) + (maxlen uint32) + (group uint8 :overlay-at maxlen) + (id uint32 4) + (basename sound-stream-name 4 :inline) + ) + ) + + +(when (zero? *load-dgo-rpc*) + (set! *load-dgo-rpc* (new 'global 'rpc-buffer-pair (the-as uint 64) (the-as uint 1) 4)) + (set! *load-str-rpc* (new 'global 'rpc-buffer-pair (the-as uint 80) (the-as uint 1) 5)) + (set! *play-str-rpc* (new 'global 'rpc-buffer-pair (the-as uint 256) (the-as uint 4) 6)) + (set! *load-str-lock* #f) + (set! *que-str-lock* #f) + (set! *dgo-name* (new 'global 'string 64 (the-as string #f))) + ) + +(defun str-load ((name string) (chunk-idx int) (dest-addr pointer) (max-len int)) + "Send a message to the IOP to start loading a chunk of a .STR file to the EE." + (if (or (check-busy *load-str-rpc*) *load-str-lock*) + (return #f) + ) + (let ((s2-0 (the-as load-chunk-msg (add-element *load-str-rpc*)))) + (set! (-> s2-0 result) (load-msg-result invalid)) + (set! (-> s2-0 address) dest-addr) + (set! (-> s2-0 section) (the-as uint chunk-idx)) + (set! (-> s2-0 maxlen) (the-as uint max-len)) + (copyn-charp<-string (-> s2-0 basename name) name 48) + (call *load-str-rpc* (the-as uint 0) (the-as pointer s2-0) (the-as uint 32)) + ) + (set! *load-str-lock* #t) + (set! *que-str-lock* #t) + #t + ) + +(defun str-load-status ((maxlen-out (pointer int32))) + "Get the status of the most recent load. + Return 'busy if in progress, 'error if failed, or 'complete. + If 'complete, returns the maxlen value from the IOP." + (if (check-busy *load-str-rpc*) + (return 'busy) + ) + (set! *load-str-lock* #f) + (set! *que-str-lock* #t) + (let ((v1-7 (the-as load-chunk-msg (pop-last-received *load-str-rpc*)))) + (if (= (-> v1-7 result) (load-msg-result error)) + (return 'error) + ) + (set! (-> maxlen-out 0) (the-as int (-> v1-7 maxlen))) + ) + 'complete + ) + +(defun str-load-cancel () + "Cancel a streaming load. Note that this does not actually stop the transfer, so the IOP may continue writing to the buffer." + (set! *load-str-lock* #f) + (set! *que-str-lock* #t) + 0 + (none) + ) + +(defun str-play-async ((name string) (id sound-id) (volume int) (group int)) + "Start playing a streaming audio." + (set! *que-str-lock* #t) + (let ((s2-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (copyn-charp<-string (-> s2-0 basename 0 name) name 48) + (copyn-charp<-string (-> s2-0 basename 1 name) "" 48) + (copyn-charp<-string (-> s2-0 basename 2 name) "" 48) + (copyn-charp<-string (-> s2-0 basename 3 name) "" 48) + (set! (-> s2-0 id 0) (the-as uint id)) + (set! (-> s2-0 id 1) (the-as uint 0)) + (set! (-> s2-0 id 2) (the-as uint 0)) + (set! (-> s2-0 id 3) (the-as uint 0)) + (set! (-> s2-0 section) (the-as uint volume)) + (set! (-> s2-0 maxlen) (the-as uint 0)) + (set! (-> s2-0 group) (the-as uint group)) + (set! (-> s2-0 result) (the-as uint 0)) + ) + 0 + 0 + (none) + ) + +(defun str-play-stop ((name string) (id sound-id)) + "Stop playing streaming audio." + (set! *que-str-lock* #t) + (let ((s4-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (copyn-charp<-string (-> s4-0 basename 0 name) name 48) + (copyn-charp<-string (-> s4-0 basename 1 name) "" 48) + (copyn-charp<-string (-> s4-0 basename 2 name) "" 48) + (copyn-charp<-string (-> s4-0 basename 3 name) "" 48) + (set! (-> s4-0 id 0) (the-as uint id)) + (set! (-> s4-0 id 1) (the-as uint 0)) + (set! (-> s4-0 id 2) (the-as uint 0)) + (set! (-> s4-0 id 3) (the-as uint 0)) + (set! (-> s4-0 result) (the-as uint 1)) + ) + 0 + (none) + ) + +(defun str-play-queue ((name0 string) (name1 string) (name2 string) (name3 string) (ids (pointer uint32)) (mask pointer)) + "Queue up streaming data, allowing it to start playing without delay." + (when (and (not (check-busy *play-str-rpc*)) (not *que-str-lock*)) + (let ((s4-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (if name0 + (copyn-charp<-string (-> s4-0 basename 0 name) name0 48) + (copyn-charp<-string (-> s4-0 basename 0 name) "" 48) + ) + (if name1 + (copyn-charp<-string (-> s4-0 basename 1 name) name1 48) + (copyn-charp<-string (-> s4-0 basename 1 name) "" 48) + ) + (if name2 + (copyn-charp<-string (-> s4-0 basename 2 name) name2 48) + (copyn-charp<-string (-> s4-0 basename 2 name) "" 48) + ) + (if name3 + (copyn-charp<-string (-> s4-0 basename 3 name) name3 48) + (copyn-charp<-string (-> s4-0 basename 3 name) "" 48) + ) + (dotimes (v1-14 4) + (set! (-> s4-0 id v1-14) (-> ids v1-14)) + ) + (set! (-> s4-0 address) mask) + (set! (-> s4-0 result) (the-as uint 2)) + ) + ) + (set! *que-str-lock* #f) + 0 + (none) + ) + +(defun str-ambient-play ((name string)) + "Start playing ambient (unused?)." + (set! *que-str-lock* #t) + (let ((s5-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (set! (-> s5-0 basename 0 name 0) (the-as uint 36)) + (copyn-charp<-string (&-> s5-0 basename 0 name 1) name 48) + (set! (-> s5-0 result) (the-as uint 0)) + ) + 0 + 0 + (none) + ) + +(defun str-ambient-stop ((name string)) + "Stop playing ambient (unused?)." + (set! *que-str-lock* #t) + (let ((s5-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (set! (-> s5-0 basename 0 name 0) (the-as uint 36)) + (copyn-charp<-string (&-> s5-0 basename 0 name 1) name 48) + (set! (-> s5-0 result) (the-as uint 1)) + ) + 0 + (none) + ) + +(defun str-play-kick () + "Do an empty RPC on play so the IOP code runs and can update buffers." + (cond + ((check-busy *play-str-rpc*) + ) + (else + (call *play-str-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) + ) + ) + 0 + (none) + ) + +(define *dgo-time* (the-as time-frame 0)) + +(defun dgo-load-begin ((name string) (buffer1 uint128) (buffer2 pointer) (buffer-top pointer) (arg4 pointer)) + "Start a DGO load!" + (set! *dgo-time* (-> *display* real-clock integral-frame-counter)) + (format 0 "Starting level load clock~%") + (sync *load-dgo-rpc* #t) + (let ((s1-0 (the-as load-dgo-msg (add-element *load-dgo-rpc*)))) + (set! (-> s1-0 result) (load-msg-result invalid)) + (set! (-> s1-0 b1) buffer2) + (set! (-> s1-0 b2) buffer-top) + (set! (-> s1-0 bt) arg4) + (set! (-> s1-0 name) (string->sound-name name)) + (set! (-> s1-0 id) buffer1) + (call *load-dgo-rpc* (the-as uint 0) (the-as pointer s1-0) (the-as uint 32)) + s1-0 + ) + ) + +(defun dgo-load-get-next ((done-out (pointer symbol))) + "Get the address of the most recently loaded object. #f is there is none. Returns if this is the last by arg0." + (set! (-> done-out 0) #f) + (let ((gp-0 (the-as pointer #f))) + (when (not (check-busy *load-dgo-rpc*)) + (let ((v1-4 (the-as load-dgo-msg (pop-last-received *load-dgo-rpc*)))) + (when v1-4 + (when (or (= (-> v1-4 result) (load-msg-result done)) (= (-> v1-4 result) (load-msg-result more))) + (set! gp-0 (-> v1-4 b1)) + (set! (-> done-out 0) #t) + ) + (if (= (-> v1-4 result) (load-msg-result more)) + (set! (-> done-out 0) #f) + ) + (if (= (-> v1-4 result) (load-msg-result done)) + (format + 0 + "Elapsed time for level = ~Fs~%" + (* 0.016666668 (the float (- (-> *display* real-clock integral-frame-counter) *dgo-time*))) + ) + ) + ) + ) + ) + gp-0 + ) + ) + +(defun dgo-load-continue ((buffer1 pointer) (buffer2 pointer) (buffer-top pointer)) + "Inform the IOP that it is safe to start loading the next object." + (let ((gp-0 (the-as load-dgo-msg (add-element *load-dgo-rpc*)))) + (set! (-> gp-0 result) (load-msg-result invalid)) + (set! (-> gp-0 b1) buffer1) + (set! (-> gp-0 b2) buffer2) + (set! (-> gp-0 bt) buffer-top) + (set! (-> gp-0 name) (the-as uint128 0)) + (call *load-dgo-rpc* (the-as uint 1) (the-as pointer gp-0) (the-as uint 32)) + gp-0 + ) + ) + +(defun dgo-load-cancel ((arg0 int)) + "Abort a DGO load." + (let ((v1-0 (the-as sound-rpc-cancel-dgo (get-sound-buffer-entry)))) + (set! (-> v1-0 command) (the-as uint 20)) + (set! (-> v1-0 id) (the-as uint arg0)) + ) + 0 + (none) + ) + +(defun find-temp-buffer ((size int)) + "Unused function to find some temporary leftover space in DMA buffer. + Unused since jak 1, and checks the same buffer twice??" + (let ((gp-0 (+ (/ size 16) 2))) + (cond + ((< (the-as uint gp-0) + (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) global-buf))) + ) + (logand -16 (&+ (-> *display* frames (-> *display* on-screen) global-buf base) 15)) + ) + ((< (the-as uint gp-0) + (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) global-buf))) + ) + (logand -16 (&+ (-> *display* frames (-> *display* on-screen) global-buf base) 15)) + ) + ) + ) + ) + +(defun dgo-load-link ((arg0 dgo-header) (arg1 kheap) (arg2 uint) (arg3 symbol) (arg4 symbol)) + "Start the async linker on a GOAL object file that was just loaded." + (dynamic-patch-hook arg0 arg1 arg2) + (let ((s4-0 (the-as object (&+ arg0 64)))) + (cond + ((>= (the-as int (+ (the-as uint s4-0) (-> arg0 length))) (the-as int (-> arg1 top-base))) + (format + 0 + "ERROR: -----> dgo file header ~g #x~X has overrun heap #x~X by ~D bytes. This is very bad!~%" + (-> arg0 rootname) + arg0 + arg1 + (- (+ (the-as uint s4-0) (-> arg0 length)) (the-as uint (-> arg1 top-base))) + ) + ) + ((and (< (the-as int arg0) (the-as int arg2)) + (>= (the-as int (+ (the-as uint s4-0) (-> arg0 length))) (the-as int arg2)) + ) + (format + 0 + "ERROR: -----> dgo file header ~g #x~X has overrun heap #x~X by ~D bytes. This is very bad!~%" + (-> arg0 rootname) + arg0 + arg1 + (- (+ (the-as uint s4-0) (-> arg0 length)) arg2) + ) + ) + ) + (if arg4 + (format + 0 + "NOTICE: loaded ~g, ~D bytes (~f K) at top ~D at #x~X - #x~X~%" + (-> arg0 rootname) + (-> arg0 length) + (* 0.0009765625 (the float (-> arg0 length))) + (- (+ (the-as uint s4-0) (-> arg0 length)) (the-as uint (-> arg1 base))) + arg0 + (+ (the-as uint s4-0) (-> arg0 length)) + ) + ) + (string<-charp (clear *dgo-name*) (-> arg0 rootname)) + (nonzero? (link-begin + (the-as pointer s4-0) + (-> *dgo-name* data) + (the-as int (-> arg0 length)) + arg1 + (if arg3 + (link-flag output-load-msg output-load-true-msg execute-login print-login fast-link) + (link-flag output-load-msg output-load-true-msg execute-login fast-link) + ) + ) + ) + ) + ) + +(defun destroy-mem ((start (pointer uint32)) (end (pointer uint32))) + "Overwrite memory with #xffffffff for debugging." + (while (< (the-as int start) (the-as int end)) + (set! (-> start 0) (the-as uint #xffffffff)) + (set! start (&-> start 1)) + ) + 0 + (none) + ) diff --git a/goal_src/jakx/engine/load/ramdisk.gc b/goal_src/jakx/engine/load/ramdisk.gc index 32738daa3a..ba70f9beab 100644 --- a/goal_src/jakx/engine/load/ramdisk.gc +++ b/goal_src/jakx/engine/load/ramdisk.gc @@ -7,3 +7,53 @@ ;; DECOMP BEGINS +(deftype ramdisk-rpc-fill (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." + ((rsvd1 int32) + (ee-id int32) + (rsvd2 int32 2) + (filename uint128) + ) + ) + + +(deftype ramdisk-rpc-load (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." + ((rsvd int32) + (ee-id int32) + (offset uint32) + (length uint32) + ) + ) + + +(deftype ramdisk-rpc-load-to-ee (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." + ((rsvd int32) + (addr int32) + (offset int32) + (length int32) + (filename uint128) + ) + ) + + +(define *ramdisk-rpc* (new 'global 'rpc-buffer-pair (the-as uint 32) (the-as uint 1) 3)) + +(define *current-ramdisk-id* 0) + +(defun ramdisk-load ((arg0 int) (arg1 uint) (arg2 uint) (arg3 pointer)) + (let ((v1-1 (the-as ramdisk-rpc-load (add-element *ramdisk-rpc*)))) + (set! (-> v1-1 offset) arg1) + (set! (-> v1-1 ee-id) arg0) + (set! (-> v1-1 length) arg2) + ) + (call *ramdisk-rpc* (the-as uint 0) arg3 arg2) + 0 + ) + +(defun ramdisk-sync () + (sync *ramdisk-rpc* #t) + 0 + (none) + ) diff --git a/goal_src/jakx/engine/math/transformq.gc b/goal_src/jakx/engine/math/transformq.gc index 5cef27b03d..f0cfaa01e6 100644 --- a/goal_src/jakx/engine/math/transformq.gc +++ b/goal_src/jakx/engine/math/transformq.gc @@ -7,3 +7,443 @@ ;; DECOMP BEGINS +(defmethod print ((this transformq)) + (format #t "# this trans x) (-> this trans y) (-> this trans z) (-> this trans w)) + (format #t "~T~Tquat: ~F ~F ~F ~F ~%" (-> this rot x) (-> this rot y) (-> this rot z) (-> this rot w)) + (format #t "~T~Tscale:~F ~F ~F ~F>" (-> this scale x) (-> this scale y) (-> this scale z) (-> this scale w)) + this + ) + +;; WARN: Return type mismatch vector vs quaternion. +(defmethod get-quaternion ((this trsqv)) + "Get the quat for this [[trsqv]]." + (the-as quaternion (-> this rot)) + ) + +(defmethod set-quaternion! ((this trsqv) (arg0 quaternion)) + "Set this [[trsqv]]'s quaternion." + (quaternion-copy! (get-quaternion this) arg0) + ) + +(defmethod rot->dir-targ! ((this trsqv)) + "Set the target direction for this [[trsqv]] to its quaternion." + (quaternion-copy! (-> this dir-targ) (get-quaternion this)) + ) + +(defmethod y-angle ((this trsqv)) + "Get the y angle for this [[trsqv]]'s quaternion." + (quaternion-y-angle (get-quaternion this)) + ) + +(defmethod seek-toward-heading-vec! ((this trsqv) (arg0 vector) (arg1 float) (arg2 time-frame)) + "Adjust the orientation to point along dir, only changing our yaw. + The vel is a maximum velocity limit. + The frame count is the time constant (first order). + There's some logic to avoid rapidly changing directions" + (let* ((f0-0 (deg-diff (quaternion-y-angle (the-as quaternion (-> this rot))) (vector-y-angle arg0))) + (f1-2 (fmin (* arg1 (seconds-per-frame)) (/ (* 5.0 (fabs f0-0)) (the float arg2)))) + (f30-0 (fmax (fmin f0-0 f1-2) (- f1-2))) + ) + (let ((f0-2 (-> this old-y-angle-diff))) + (set! f30-0 + (cond + ((or (= f0-2 0.0) + (and (< 0.0 f30-0) (< 0.0 f0-2)) + (or (and (< f30-0 0.0) (< f0-2 0.0)) (time-elapsed? (-> this angle-change-time) (seconds 0.2))) + ) + (set-time! (-> this angle-change-time)) + f30-0 + ) + (else + (/ f30-0 1000000000) + ) + ) + ) + ) + (set! (-> this old-y-angle-diff) f30-0) + (let ((a1-2 (get-quaternion this))) + (quaternion-rotate-y! a1-2 a1-2 f30-0) + ) + ) + ) + +(defmethod set-heading-vec! ((this trsqv) (arg0 vector)) + "Makes us look in the arg0 direction immediately. Pitch will be unchanged." + (let ((s3-0 (get-quaternion this))) + (forward-up-nopitch->quaternion + s3-0 + (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0) + ) + ) + ) + +(defmethod seek-to-point-toward-point! ((this trsqv) (arg0 vector) (arg1 float) (arg2 time-frame)) + "Seek toward pointing toward arg0 from our current location." + (seek-toward-heading-vec! this (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) arg1 arg2) + ) + +(defmethod point-toward-point! ((this trsqv) (arg0 vector)) + "Immediately point toward arg0." + (let ((s3-0 (get-quaternion this))) + (forward-up-nopitch->quaternion + s3-0 + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0) + ) + ) + ) + +(defmethod seek-toward-yaw-angle! ((this trsqv) (arg0 float) (arg1 float) (arg2 time-frame)) + "Seek toward the given yaw angle." + (let ((s3-0 (method-of-object this seek-toward-heading-vec!)) + (s2-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s2-0 x) (sin arg0)) + (set! (-> s2-0 y) 0.0) + (set! (-> s2-0 z) (cos arg0)) + (set! (-> s2-0 w) 1.0) + (s3-0 this s2-0 arg1 arg2) + ) + ) + +(defmethod set-yaw-angle-clear-roll-pitch! ((this trsqv) (arg0 float)) + "Immediately clear our roll and pitch and set yaw to the given angle." + (let ((s5-0 (method-of-object this set-heading-vec-clear-roll-pitch!)) + (s4-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s4-0 x) (sin arg0)) + (set! (-> s4-0 y) 0.0) + (set! (-> s4-0 z) (cos arg0)) + (set! (-> s4-0 w) 1.0) + (s5-0 this s4-0) + ) + ) + +(defmethod set-roll-to-grav! ((this trsqv) (arg0 float)) + "Set our roll so that our local down aligns with standard gravity." + (set-roll-to-grav-2! this arg0) + ) + +(defmethod set-roll-to-grav-2! ((this trsqv) (arg0 float)) + "Set our roll so that our local down aligns with standard gravity." + (let* ((s5-0 (get-quaternion this)) + (s1-0 (-> *standard-dynamics* gravity-normal)) + (s3-0 (quaternion->matrix (new 'stack-no-clear 'matrix) s5-0)) + ) + (let ((s4-0 (-> s3-0 fvec))) + (vector-normalize! (vector-flatten! (-> s3-0 uvec) s1-0 s4-0) 1.0) + (vector-cross! (-> s3-0 rvec) (-> s3-0 uvec) s4-0) + ) + (let ((a1-5 (matrix-rotate-z! (new 'stack-no-clear 'matrix) arg0))) + (matrix*! s3-0 a1-5 s3-0) + ) + (matrix->quaternion s5-0 s3-0) + ) + ) + +(defmethod roll-relative-to-gravity ((this trsqv)) + "Get our roll, relative to 'down' from gravity." + (let* ((s5-0 (get-quaternion this)) + (gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (s5-1 (vector-y-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (a1-2 (-> *standard-dynamics* gravity-normal)) + (v1-2 (vector-normalize! (vector-flatten! (new 'stack-no-clear 'vector) a1-2 gp-0) 1.0)) + (f0-1 (vector-dot v1-2 s5-1)) + ) + (if (< (vector-dot (vector-cross! (new 'stack-no-clear 'vector) v1-2 s5-1) gp-0) 0.0) + (- (acos f0-1)) + (acos f0-1) + ) + ) + ) + +;; ERROR: Unsupported inline assembly instruction kind - [mula.s f0, f3] +;; ERROR: Unsupported inline assembly instruction kind - [madda.s f1, f4] +;; ERROR: Unsupported inline assembly instruction kind - [madd.s f0, f2, f5] +(defmethod rotate-toward-orientation! ((this trsqv) (arg0 quaternion) (arg1 float) (arg2 float) (arg3 int) (arg4 int) (arg5 float)) + "Adjust our orientation toward target, subject to some rate limits. + For Jak 1, I said: + I don't think this is a very robust function and probably doesn't work right in cases + where an axis flips by 180 degrees. + But now they use matrix-from-two-vectors-the-long-way-smooth to fix it! Good job. + This additionally uses the fancy logic of matrix-from-two-vectors-smooth." + (local-vars (f0-4 float)) + (let ((sv-240 arg4) + (s2-0 arg5) + (s5-0 (get-quaternion this)) + ) + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (when (< 0.0 arg2) + (quaternion-from-two-vectors-smooth! + gp-0 + (vector-y-quaternion! (new 'stack-no-clear 'vector) s5-0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) arg0) + arg2 + sv-240 + ) + (quaternion-normalize! (quaternion*! s5-0 gp-0 s5-0)) + ) + (when (< 0.0 arg1) + (let ((sv-256 (vector-y-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (s1-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (sv-272 (vector-z-quaternion! (new 'stack-no-clear 'vector) arg0)) + (s0-1 (new 'stack-no-clear 'matrix)) + ) + (vector-flatten! s1-2 s1-2 sv-256) + (vector-flatten! sv-272 sv-272 sv-256) + (vector-normalize! s1-2 1.0) + (vector-normalize! sv-272 1.0) + (cond + ((!= s2-0 0.0) + (let* ((v1-5 (vector-cross! (new 'stack-no-clear 'vector) s1-2 sv-272))) + (set! f0-4 (vector-dot sv-256 v1-5)) + ) + (if (< (* f0-4 s2-0) 0.0) + (matrix-from-two-vectors-the-long-way-smooth! s0-1 s1-2 sv-272 arg1 arg3) + (matrix-from-two-vectors-smooth! s0-1 s1-2 sv-272 arg1 arg3) + ) + ) + (else + (matrix-from-two-vectors-smooth! s0-1 s1-2 sv-272 arg1 arg3) + ) + ) + (matrix->quaternion gp-0 s0-1) + ) + (quaternion-normalize! (quaternion*! s5-0 gp-0 s5-0)) + ) + ) + s5-0 + ) + ) + +(defmethod set-heading-vec-clear-roll-pitch! ((this trsqv) (arg0 vector)) + "Set our rotation to point along the given heading, with no roll or pitch." + (forward-up->quaternion + (get-quaternion this) + (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) + (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + ) + ) + +(defmethod point-toward-point-clear-roll-pitch! ((this trsqv) (arg0 vector)) + "Set our orientation to point toward arg0, clearing roll and pitch." + (forward-up->quaternion + (get-quaternion this) + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) + (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + ) + ) + +(defun transformq-copy! ((arg0 transformq) (arg1 transformq)) + (let ((v1-0 (-> arg1 trans quad)) + (a2-0 (-> arg1 rot quad)) + (a1-1 (-> arg1 scale quad)) + ) + (set! (-> arg0 trans quad) v1-0) + (set! (-> arg0 rot quad) a2-0) + (set! (-> arg0 scale quad) a1-1) + ) + arg0 + ) + +(defun matrix<-transformq! ((arg0 matrix) (arg1 transformq)) + (local-vars (v1-1 float)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (cond + (#f + (set! (-> arg0 trans quad) (-> arg1 trans quad)) + ) + (else + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + (.mov v1-1 vf5) + ) + ) + arg0 + ) + ) + +(defun matrix<-no-trans-transformq! ((arg0 matrix) (arg1 transformq)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) + +(defun matrix<-transformq+trans! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf6 (&-> arg2 quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.mul.x.vf acc vf3 vf6) + (.add.mul.y.vf acc vf4 vf6 acc) + (.add.mul.z.vf acc vf5 vf6 acc) + (.add.mul.w.vf.xyz vf2 vf2 vf0 acc) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) + +(defun matrix<-transformq+world-trans! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf6 (&-> arg2 quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.add.vf.xyz vf2 vf2 vf6) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) + +(defun matrix<-parented-transformq! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (local-vars (v1-1 float)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (set! (-> v1-0 x) (/ 1.0 (-> arg2 x))) + (set! (-> v1-0 y) (/ 1.0 (-> arg2 y))) + (set! (-> v1-0 z) (/ 1.0 (-> arg2 z))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.mov.vf.w vf2 vf0) + (.lvf vf4 (&-> arg0 rvec quad)) + (.lvf vf5 (&-> arg0 uvec quad)) + (.lvf vf6 (&-> arg0 fvec quad)) + (.mul.x.vf vf4 vf4 vf1) + (.mul.y.vf vf5 vf5 vf1) + (.mul.z.vf vf6 vf6 vf1) + (.lvf vf3 (&-> v1-0 quad)) + ) + (.mul.vf vf4 vf4 vf3) + (.mul.vf vf5 vf5 vf3) + (.mul.vf vf6 vf6 vf3) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf4) + (.svf (&-> arg0 uvec quad) vf5) + (.svf (&-> arg0 fvec quad) vf6) + (.mov v1-1 vf6) + arg0 + ) + ) + +(defun matrix<-transformq+rot-offset! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf6 (&-> arg2 quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.mul.x.vf acc vf3 vf6) + (.add.mul.y.vf acc vf4 vf6 acc) + (.add.mul.z.vf acc vf5 vf6 acc) + (.sub.mul.w.vf acc vf6 vf0 acc) + (.add.mul.w.vf.xyz vf2 vf2 vf0 acc) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) diff --git a/goal_src/jakx/engine/math/vector-h.gc b/goal_src/jakx/engine/math/vector-h.gc index b823b91e5c..83d30ef19e 100644 --- a/goal_src/jakx/engine/math/vector-h.gc +++ b/goal_src/jakx/engine/math/vector-h.gc @@ -56,6 +56,22 @@ )) ) +(defmacro static-vector (x y z w) + "Creates a static vector." + `(new 'static 'vector :x ,x :y ,y :z ,z :w ,w) + ) +(defmacro static-vectorm (x y z) + "Creates a static vector using meters. `w` is set to 1.0" + `(new 'static 'vector :x (meters ,x) :y (meters ,y) :z (meters ,z) :w 1.0) + ) +(defmacro static-spherem (x y z r) + "Creates a static vector using meters where the w component is used as sphere radius. For a 'real' sphere, use [[static-bspherem]]." + `(new 'static 'vector :x (meters ,x) :y (meters ,y) :z (meters ,z) :w (meters ,r)) + ) +(defmacro static-bspherem (x y z r) + "Creates a static sphere using meters." + `(new 'static 'sphere :x (meters ,x) :y (meters ,y) :z (meters ,z) :w (meters ,r)) + ) ;; DECOMP BEGINS diff --git a/goal_src/jakx/engine/net/net-predict-h.gc b/goal_src/jakx/engine/net/net-predict-h.gc index 279121c821..208bd4d85c 100644 --- a/goal_src/jakx/engine/net/net-predict-h.gc +++ b/goal_src/jakx/engine/net/net-predict-h.gc @@ -7,3 +7,46 @@ ;; DECOMP BEGINS +(deftype net-predictor-simple-state (structure) + ((time int32) + (pos vector :inline) + (vel vector :inline) + (rot quaternion :inline) + (angvel vector :inline) + ) + ) + + +(deftype net-predictor-simple (structure) + ((last-net net-predictor-simple-state :inline) + (extrapolated net-predictor-simple-state :inline) + (active net-predictor-simple-state :inline) + (vel-scale vector :inline) + (angvel-scale vector :inline) + (min-delay int32) + (max-delay int32) + (pos-err-thresh float) + (rot-err-thresh float) + (pos-track-factor float) + (vel-track-factor float) + (max-extrapolation int32) + (error-snap float) + (flags uint8) + ) + (:methods + (net-predictor-simple-method-9 () none) + (net-predictor-simple-method-10 () none) + (net-predictor-simple-method-11 () none) + (net-predictor-simple-method-12 () none) + (net-predictor-simple-method-13 () none) + (net-predictor-simple-method-14 () none) + (net-predictor-simple-method-15 () none) + (net-predictor-simple-method-16 () none) + (net-predictor-simple-method-17 () none) + ) + ) + + +(deftype net-predictor-sphcol (net-predictor-simple) + () + ) diff --git a/goal_src/jakx/engine/physics/rigid-body-h.gc b/goal_src/jakx/engine/physics/rigid-body-h.gc index 21ce50062d..8bcdefaf54 100644 --- a/goal_src/jakx/engine/physics/rigid-body-h.gc +++ b/goal_src/jakx/engine/physics/rigid-body-h.gc @@ -7,3 +7,17 @@ ;; DECOMP BEGINS +(deftype rigid-body-impact (structure) + ((point vector :inline :offset-assert 0) + (normal vector :inline :offset-assert 16) + (velocity vector :inline :offset-assert 32) + (impulse float :offset-assert 48) + (pat pat-surface :offset-assert 52) ;; guessed by decompiler + (process process :offset-assert 56) ;; guessed by decompiler + (prim-id uint32 :offset-assert 60) + (surface basic :offset-assert 64) + ) + :method-count-assert 9 + :size-assert #x44 + :flag-assert #x900000044 + ) \ No newline at end of file diff --git a/goal_src/jakx/engine/process-drawable/process-focusable.gc b/goal_src/jakx/engine/process-drawable/process-focusable.gc index e1ed9dd2b1..07d59b1efd 100644 --- a/goal_src/jakx/engine/process-drawable/process-focusable.gc +++ b/goal_src/jakx/engine/process-drawable/process-focusable.gc @@ -5,5 +5,69 @@ ;; name in dgo: process-focusable ;; dgos: ENGINE, GAME +;; TODO JAKX - https://github.com/open-goal/jak-project/pull/4311#discussion_r3410037499 +;; +++focus-status +(defenum focus-status + :type uint64 + :bitfield #t + (disable 0) ;; if set, all collide checks fail + (dead 1) ;; if set, all collide checks fail + (ignore 2) + (inactive 3) + (dangerous 4) + (in-air 5) + (hit 6) + (grabbed 7) + (in-head 8) + (touch-water 9) + (on-water 10) + (under-water 11) + (edge-grab 12) + (pole 13) + (pilot-riding 14) + (flut 15) + (tube 16) + (light 17) + (board 18) + (gun 19) + (pilot 20) ;; also racer? + (mech 21) + (dark 22) + (rail 23) + (halfpipe 24) + (carry 25) + (super 26) + (shooting 27) + (indax 28) + (arrestable 29) + (teleporting 30) + (invulnerable 31) + (turret 32) + (no-gravity 33) + (gun-no-target 34) + ) +;; ---focus-status + ;; DECOMP BEGINS +(deftype process-focusable (process-drawable) + ((self process-focusable :override) + (ppointer (pointer process-focusable) :override) + (root collide-shape :override) + (focus-status focus-status :offset-assert 248) ;; focus-status + ) + :method-count-assert 59 + :size-assert #x100 + :flag-assert #x3b00700100 + (:methods + (process-focusable-method-50 () none) ;; 50 + (process-focusable-method-51 () none) ;; 51 + (process-focusable-method-52 () none) ;; 52 + (process-focusable-method-53 () none) ;; 53 + (process-focusable-method-54 () none) ;; 54 + (process-focusable-method-55 () none) ;; 55 + (process-focusable-method-56 () none) ;; 56 + (process-focusable-method-57 () none) ;; 57 + (process-focusable-method-58 () none) ;; 58 + ) + ) \ No newline at end of file diff --git a/goal_src/jakx/engine/process-drawable/process-nettable-h.gc b/goal_src/jakx/engine/process-drawable/process-nettable-h.gc index c0da7d0376..468e8a83a1 100644 --- a/goal_src/jakx/engine/process-drawable/process-nettable-h.gc +++ b/goal_src/jakx/engine/process-drawable/process-nettable-h.gc @@ -7,3 +7,235 @@ ;; DECOMP BEGINS +(deftype net-process-class-info (structure) + ((msg-map (array symbol)) + (msg-count int32) + (send-packet-count int32) + (recv-packet-count int32) + (send-byte-count int32) + (recv-byte-count int32) + (owner-type type) + ) + ) + + +(define *net-process-class-count* 0) + +(define *net-process-class-array* + (new 'static 'boxed-array :type net-process-class-info :length 0 :allocated-length 96) + ) + +(define *net-process-class-names* (the-as (pointer symbol) (new 'static 'array uint32 95 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + ) + +;; WARN: Function net-process-class-register has a return type of none, but the expression builder found a return statement. +(defun net-process-class-register ((arg0 net-process-class-info)) + (dotimes (v1-0 *net-process-class-count*) + (when (= (-> *net-process-class-names* v1-0) (-> arg0 owner-type symbol)) + (set! (-> *net-process-class-array* v1-0) arg0) + (return #f) + ) + ) + (when (>= *net-process-class-count* 96) + (format 0 "net-process-class-count limit exceeded~%") + (break!) + 0 + ) + (set! (-> *net-process-class-array* *net-process-class-count*) arg0) + (set! (-> *net-process-class-names* *net-process-class-count*) (-> arg0 owner-type symbol)) + (set! *net-process-class-count* (+ *net-process-class-count* 1)) + 0 + (none) + ) + +(deftype net-process-id (uint16) + () + ) + +(deftype proximity-ownership-params (basic) + ((ownable-radius float) + (force-local symbol) + (last-ownership-req-time int32) + (min-ownership-req-delay int32) + (consider-ai-players symbol) + ) + (:methods + (proximity-ownership-params-method-9 () none) + ) + ) + + +(deftype process-nettable (process) + ((owner-idx int8) + (net-flags uint64) + (desired-owner-idx int8) + (net-id uint16) + (jump-in-send-pending uint16) + (prox basic) + (owner-link list-link :inline) + (active-link list-link :inline) + ) + (:methods + (process-nettable-method-15 () none) + (process-nettable-method-16 () none) + (process-nettable-method-17 () none) + (process-nettable-method-18 () none) + (process-nettable-method-19 () none) + (process-nettable-method-20 () none) + (process-nettable-method-21 () none) + (process-nettable-method-22 () none) + (process-nettable-method-23 () none) + (process-nettable-method-24 () none) + (process-nettable-method-25 () none) + (process-nettable-method-26 () none) + (process-nettable-method-27 () none) + (process-nettable-method-28 () none) + (process-nettable-method-29 () none) + (process-nettable-method-30 () none) + (process-nettable-method-31 () none) + (process-nettable-method-32 () none) + (process-nettable-method-33 () none) + (process-nettable-method-34 (_type_ int rgba) none) + (process-nettable-method-35 (_type_ int) none) + (process-nettable-method-36 (_type_) none) + (process-nettable-method-37 (_type_ net-process-class-info) none) + (process-nettable-method-38 () none) + (process-nettable-method-39 () none) + (process-nettable-method-40 (_type_) net-process-class-info) + (process-nettable-method-41 (_type_ int) process) + ) + ) + + +(defmethod process-nettable-method-37 ((this process-nettable) (arg0 net-process-class-info)) + (set! (-> arg0 msg-map 0) 'create) + (set! (-> arg0 msg-map 1) 'destroy) + (set! (-> arg0 msg-map 2) 'destroy-silent) + (set! (-> arg0 msg-map 3) 'ownership-request) + (set! (-> arg0 msg-map 4) 'ownership-update) + (set! (-> arg0 msg-map 5) 'ownership-reject) + (set! (-> arg0 msg-map 6) 'please-describe) + (set! (-> arg0 msg-map 7) 'state) + (set! (-> arg0 msg-count) 8) + 0 + (none) + ) + +;; og:preserve-this manually must be made a recursive function +(defun-recursive write-msg-map-rec none ((arg0 type) (arg1 net-process-class-info)) + (let* ((s3-0 37) + (s5-0 (the-as (function process-nettable net-process-class-info none) (-> arg0 method-table s3-0))) + ) + (cond + ((= arg0 process-nettable) + (set! (-> arg1 msg-count) 0) + (s5-0 (the-as process-nettable #f) arg1) + ) + (else + (write-msg-map-rec (-> arg0 parent) arg1) + (if (!= (-> arg0 parent method-table s3-0) s5-0) + (s5-0 (the-as process-nettable #f) arg1) + ) + ) + ) + ) + 0 + (none) + ) diff --git a/goal_src/jakx/engine/ps2/headset-h.gc b/goal_src/jakx/engine/ps2/headset-h.gc index d66febd208..7783f8b339 100644 --- a/goal_src/jakx/engine/ps2/headset-h.gc +++ b/goal_src/jakx/engine/ps2/headset-h.gc @@ -7,3 +7,1560 @@ ;; DECOMP BEGINS +(deftype headset-queue (structure) + ((write-offset int32) + (read-offset int32) + (bytes int32) + (size int32) + (data uint32) + ) + :pack-me + (:methods + (headset-queue-method-9 () none) + (headset-queue-method-10 () none) + (headset-queue-method-11 () none) + (headset-queue-method-12 () none) + ) + ) + + +(deftype nci-codec-io-block (structure) + ((pcm-buffer uint32) + (samples-in-pcm-buffer int16) + (nelly-buffer uint32) + (nelly-buffer-size uint16) + (nelly-buffer-read-byte-offset uint16) + (nelly-buffer-read-bit-offset uint8) + (nelly-buffer-write-byte-offset uint16) + (nelly-buffer-write-bit-offset uint8) + ) + :pack-me + ) + + +(define *headset-input-buffer* (new 'static 'array uint8 512 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +(define *headset-input-bytes* 0) + +(define *headset-output-buffer* (new 'static 'array uint8 512 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +(define *headset-output-bytes* 0) + +(define *headset-output-offset* 0) + +(define *headset-cmp-out-buffer* (new 'static 'array uint8 100 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +(define *headset-cmp-out-frames* 0) + +(define *headset-scratch-buffer* (new 'static 'array uint8 160 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +(define *headset-mix-buffer* (new 'static 'array uint8 160 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +(define *headset-decoder-ids* (new 'static 'array int8 4 0 0 0 0)) + +(define *headset-decoder-ptrs* + (new 'static 'boxed-array :type nci-codec-io-block :length 0 :allocated-length 4) + ) + +(deftype headset-decoder (structure) + ((client-idx int8) + (last-time int32) + (cmp-queue headset-queue :inline) + (io nci-codec-io-block :inline) + (scratch uint8 16) + (id int8) + ) + :allow-misaligned + ) + + +(deftype headset (process) + ((flags uint32) + (decoders headset-decoder 4 :inline) + (client-to-decoder uint8 16) + (encoder-io nci-codec-io-block :inline) + (last-speech-time int32) + (prev-operation basic) + (bytes-in-playback-queue int32) + (first-send basic) + (frame-ct int32) + (client-talking uint8 16) + ) + (:methods + (headset-method-15 () none) + (headset-method-16 () none) + (headset-method-17 () none) + (headset-method-18 () none) + (headset-method-19 () none) + (headset-method-20 () none) + (headset-method-21 () none) + (headset-method-22 () none) + (headset-method-23 () none) + (headset-method-24 () none) + (headset-method-25 () none) + (headset-method-26 () none) + (headset-method-27 () none) + (headset-method-28 () none) + (headset-method-29 () none) + (headset-method-30 () none) + (headset-method-31 () none) + (headset-method-32 () none) + ) + ) + + +(define *headset* (the-as headset #f)) diff --git a/goal_src/jakx/engine/ps2/memcard-h.gc b/goal_src/jakx/engine/ps2/memcard-h.gc index 6b9c775422..c5104ed64b 100644 --- a/goal_src/jakx/engine/ps2/memcard-h.gc +++ b/goal_src/jakx/engine/ps2/memcard-h.gc @@ -7,3 +7,156 @@ ;; DECOMP BEGINS +(deftype mc-handle (int32) + () + ) + +(deftype mc-file-info (structure) + "Data stored in a save file." + ((present int32) + (blind-data float 24) + (blind-data-int8 int8 96 :overlay-at (-> blind-data 0)) + (level-index int32 :overlay-at (-> blind-data 0)) + (gem-count float :overlay-at (-> blind-data 1)) + (skill-count float :overlay-at (-> blind-data 2)) + (completion-percentage float :overlay-at (-> blind-data 3)) + (minute uint8 :overlay-at (-> blind-data 5)) + (hour uint8 :overlay-at (-> blind-data-int8 21)) + (week uint8 :overlay-at (-> blind-data-int8 22)) + (day uint8 :overlay-at (-> blind-data-int8 23)) + (month uint8 :overlay-at (-> blind-data 6)) + (year uint8 :overlay-at (-> blind-data-int8 25)) + (language uint8 :overlay-at (-> blind-data-int8 26)) + (game-time0 uint32 :overlay-at (-> blind-data 8)) + (game-time1 uint32 :overlay-at (-> blind-data 9)) + (purchase-secrets uint32 :overlay-at (-> blind-data 10)) + (secrets uint32 :overlay-at (-> blind-data 12)) + (features uint32 :overlay-at (-> blind-data 14)) + (name uint8 16 :overlay-at (-> blind-data 16)) + ) + :pack-me + ) + + +(deftype mc-slot-info (structure) + "Data about a memory card slot." + ((handle mc-handle) + (known int32) + (formatted int32) + (inited int32) + (last-file int32) + (mem-required int32) + (mem-actual int32) + (file mc-file-info 4 :inline) + ) + ) + + +(defun mc-sync () + (let ((v0-0 0)) + (while (zero? v0-0) + (mc-run) + (set! v0-0 (the-as int (mc-check-result))) + ) + v0-0 + ) + ) + +(defun show-mc-info ((arg0 dma-buffer)) + (let ((s5-0 (new 'stack-no-clear 'mc-slot-info))) + (dotimes (s4-0 2) + (mc-get-slot-info s4-0 s5-0) + (cond + ((zero? (-> s5-0 known)) + (format (clear *temp-string*) "SLOT ~D: EXAMINING SLOT~%" s4-0) + *temp-string* + ) + ((zero? (-> s5-0 handle)) + (format (clear *temp-string*) "SLOT ~D: NO CARD~%" s4-0) + *temp-string* + ) + ((zero? (-> s5-0 formatted)) + (format (clear *temp-string*) "SLOT ~D: CARD [~D] : NOT FORMATTED~%" s4-0 (-> s5-0 handle)) + *temp-string* + ) + ((zero? (-> s5-0 inited)) + (format + (clear *temp-string*) + "SLOT ~D: CARD [~D] : NO FILE [~D/~D]~%" + s4-0 + (-> s5-0 handle) + (-> s5-0 mem-required) + (-> s5-0 mem-actual) + ) + *temp-string* + ) + (else + (format (clear *temp-string*) "SLOT ~D: CARD [~D] : " s4-0 (-> s5-0 handle)) + *temp-string* + (format + *temp-string* + "SAVES ~D ~D ~D ~D : LAST ~D~%" + (-> s5-0 file 0 present) + (-> s5-0 file 1 present) + (-> s5-0 file 2 present) + (-> s5-0 file 3 present) + (-> s5-0 last-file) + ) + ) + ) + (draw-string-xy *temp-string* arg0 32 (+ (* 12 s4-0) 8) (font-color red) (font-flags shadow)) + ) + ) + 0 + (none) + ) + +(deftype stored-network-account (structure) + ((name uint8 64) + (password uint8 64) + ) + :pack-me + (:methods + (stored-network-account-method-9 () none) + (stored-network-account-method-10 () none) + ) + ) + + +(deftype stored-network-accounts (structure) + ((accounts stored-network-account 4 :inline) + (default-idx int8) + (ct int8) + ) + :allow-misaligned + (:methods + (stored-network-accounts-method-9 () none) + ) + ) + + +(deftype mc-common-data (structure) + ((magic uint32) + (crc uint32) + (version uint32) + (data uint8 1012) + (net-accounts stored-network-accounts :inline :overlay-at (-> data 0)) + ) + ) + + +(deftype mc-patch-data (structure) + ((magic uint32) + (crc uint32) + (version uint32) + (size uint32) + (data uint8 524272) + ) + ) + + +(define *mc-common-data* (new 'static 'mc-common-data)) + +(define *mc-patch-data* (the-as mc-patch-data #f)) + +(define *mc-last-result* (mc-status-code ok)) diff --git a/goal_src/jakx/engine/ps2/pad.gc b/goal_src/jakx/engine/ps2/pad.gc index adf7c1cda4..7083b454fa 100644 --- a/goal_src/jakx/engine/ps2/pad.gc +++ b/goal_src/jakx/engine/ps2/pad.gc @@ -5,5 +5,44 @@ ;; name in dgo: pad ;; dgos: ENGINE, GAME +;; +++mouse-buttons +(defenum mouse-buttons + :bitfield #t + :type uint32 + (left) + (right) + (middle) + ) +;; ---mouse-buttons + ;; DECOMP BEGINS +(deftype mouse-info (basic) + ((active symbol :offset-assert 4) ;; guessed by decompiler + (cursor symbol :offset-assert 8) ;; guessed by decompiler + (valid symbol :offset-assert 12) ;; guessed by decompiler + (id uint8 :offset-assert 16) + (status uint16 :offset-assert 18) + (button0 uint16 :offset-assert 20) + (deltax int8 :offset-assert 22) + (deltay int8 :offset-assert 23) + (wheel uint8 :offset-assert 24) + (change-time uint64 :offset-assert 32) ;; time-frame + (button0-abs mouse-buttons 3 :offset-assert 40) ;; guessed by decompiler + (button0-shadow-abs mouse-buttons 1 :offset-assert 52) ;; guessed by decompiler + (button0-rel mouse-buttons 3 :offset-assert 56) ;; guessed by decompiler + (pos vector 2 :inline :offset-assert 80) ;; guessed by decompiler + ;; (UNKNOWN UNKNOWN :offset-assert -1) ;; field could not be read. + (posx float :offset 80) + (posy float :offset 84) + (oldposx float :offset 96) + (oldposy float :offset 100) + (speedx float :offset 92) + (speedy float :offset 108) + ) + :method-count-assert 9 + :size-assert #x70 + :flag-assert #x900000070 + ) + +(define-extern *mouse* mouse-info) \ No newline at end of file diff --git a/goal_src/jakx/engine/scene/fmv-player-h.gc b/goal_src/jakx/engine/scene/fmv-player-h.gc index ce90293bda..316f557f0f 100644 --- a/goal_src/jakx/engine/scene/fmv-player-h.gc +++ b/goal_src/jakx/engine/scene/fmv-player-h.gc @@ -7,3 +7,2018 @@ ;; DECOMP BEGINS +(deftype m2v-caption (structure) + ((text-id text-id) + (start int32) + (end int32) + ) + ) + + +(deftype m2v-info (structure) + ((name basic) + (sound basic) + (commentary-sound basic) + (captions basic) + (commentary-captions (array m2v-caption)) + (id uint32) + (idx int8) + (driver uint8) + (driver2 uint8) + (flags uint8) + ) + ) + + +(deftype fmv-player (process) + ((texture-base-page uint32) + (texture-width uint32) + (gui-id uint32) + (subtitle-change-time uint64) + (start-time uint64) + (fmv-mode uint8) + ) + (:methods + (fmv-player-method-15 () none) + (fmv-player-method-16 () none) + (fmv-player-method-17 () none) + (fmv-player-method-18 () none) + (fmv-player-method-19 () none) + ) + ) + + +(define *fmv-player* (the-as fmv-player #f)) + +(deftype fmv-display-params (structure) + ((display-mode int32) + (texture-base-page uint32) + (texture-width uint32) + (frame-base-pointer uint32) + (display-width uint32) + (display-height uint32) + (display-dx int32) + (display-dy int32) + (contrast float) + (brightness float) + (fast-z-clear int32) + (frame-buffer-mask uint32) + ) + ) + + +(deftype fmv-player-params (structure) + ((display-mode fmv-display-params :inline) + (file-init basic) + (file-read basic) + (get-time basic) + (video-type int32) + (zoom-mode int32) + (upper-field-first int32) + (buffer-mode int32) + (work-mem uint32) + (work-mem-size uint32) + ) + (:methods + (fmv-player-params-method-9 () none) + ) + ) + + +(define *m2v-info* (new 'static 'boxed-array :type m2v-info + (new 'static 'm2v-info + :name "intro" + :sound "intro-full" + :commentary-sound "intro" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2961) :start #x3a3 :end #x3fe) + (new 'static 'm2v-caption :text-id (text-id text-id-2962) :start #x3ff :end #x456) + (new 'static 'm2v-caption :text-id (text-id text-id-2963) :start #x457 :end #x4c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2964) :start #x4c4 :end #x521) + (new 'static 'm2v-caption :text-id (text-id text-id-2965) :start #x533 :end #x585) + (new 'static 'm2v-caption :text-id (text-id text-id-2966) :start #x586 :end #x5cf) + (new 'static 'm2v-caption :text-id (text-id text-id-2967) :start #x5d1 :end #x5ff) + (new 'static 'm2v-caption :text-id (text-id text-id-2968) :start #x600 :end #x638) + (new 'static 'm2v-caption :text-id (text-id text-id-2969) :start #x639 :end #x686) + (new 'static 'm2v-caption :text-id (text-id text-id-2970) :start #x69f :end #x6d0) + (new 'static 'm2v-caption :text-id (text-id text-id-2971) :start #x6e0 :end #x6fd) + (new 'static 'm2v-caption :text-id (text-id text-id-2972) :start #x6ff :end #x75d) + (new 'static 'm2v-caption :text-id (text-id text-id-2973) :start #x75f :end #x7a7) + (new 'static 'm2v-caption :text-id (text-id text-id-2974) :start #x7b4 :end #x7d1) + (new 'static 'm2v-caption :text-id (text-id text-id-2975) :start #x7db :end #x80a) + (new 'static 'm2v-caption :text-id (text-id text-id-2976) :start #x80b :end #x851) + (new 'static 'm2v-caption :text-id (text-id text-id-2977) :start #x852 :end #x88d) + (new 'static 'm2v-caption :text-id (text-id text-id-2978) :start #x88e :end #x8b3) + (new 'static 'm2v-caption :text-id (text-id text-id-2979) :start #x8b5 :end #x91f) + (new 'static 'm2v-caption :text-id (text-id text-id-2980) :start #x920 :end #x975) + (new 'static 'm2v-caption :text-id (text-id text-id-2981) :start #x976 :end #x9a4) + (new 'static 'm2v-caption :text-id (text-id text-id-2982) :start #x9a5 :end #x9e3) + (new 'static 'm2v-caption :text-id (text-id text-id-2983) :start #xc6f :end #xcf1) + (new 'static 'm2v-caption :text-id (text-id text-id-2984) :start #xd23 :end #xd74) + (new 'static 'm2v-caption :text-id (text-id text-id-2985) :start #xd75 :end #xdbb) + (new 'static 'm2v-caption :text-id (text-id text-id-2986) :start #xdc6 :end #xe19) + (new 'static 'm2v-caption :text-id (text-id text-id-2987) :start #xe1a :end #xe7c) + (new 'static 'm2v-caption :text-id (text-id text-id-2988) :start #xe89 :end #xec7) + (new 'static 'm2v-caption :text-id (text-id text-id-2989) :start #xec8 :end #xefe) + (new 'static 'm2v-caption :text-id (text-id text-id-2990) :start #x13f3 :end #x1429) + (new 'static 'm2v-caption :text-id (text-id text-id-2991) :start #x142a :end #x1466) + (new 'static 'm2v-caption :text-id (text-id text-id-2992) :start #x1467 :end #x14ae) + (new 'static 'm2v-caption :text-id (text-id text-id-2993) :start #x14b3 :end #x14c2) + (new 'static 'm2v-caption :text-id (text-id text-id-2994) :start #x14c4 :end #x14fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2995) :start #x14fb :end #x154a) + (new 'static 'm2v-caption :text-id (text-id text-id-2996) :start #x1558 :end #x1591) + (new 'static 'm2v-caption :text-id (text-id text-id-2997) :start #x15a3 :end #x1605) + (new 'static 'm2v-caption :text-id (text-id text-id-2998) :start #x1608 :end #x161f) + (new 'static 'm2v-caption :text-id (text-id text-id-2999) :start #x16ca :end #x1707) + (new 'static 'm2v-caption :text-id (text-id text-id-3000) :start #x17de :end #x1802) + (new 'static 'm2v-caption :text-id (text-id text-id-3001) :start #x1806 :end #x186a) + (new 'static 'm2v-caption :text-id (text-id text-id-3002) :start #x188d :end #x18a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3003) :start #x18cc :end #x192c) + (new 'static 'm2v-caption :text-id (text-id text-id-3004) :start #x19bc :end #x19df) + (new 'static 'm2v-caption :text-id (text-id text-id-3005) :start #x19e0 :end #x1a0f) + (new 'static 'm2v-caption :text-id (text-id text-id-3006) :start #x1a10 :end #x1a45) + (new 'static 'm2v-caption :text-id (text-id text-id-3007) :start #x1a49 :end #x1a97) + (new 'static 'm2v-caption :text-id (text-id text-id-3008) :start #x1a9e :end #x1aca) + (new 'static 'm2v-caption :text-id (text-id text-id-3009) :start #x1ae4 :end #x1b01) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4692) :start #x67 :end #xe0) + (new 'static 'm2v-caption :text-id (text-id text-id-4693) :start #xe1 :end #x118) + (new 'static 'm2v-caption :text-id (text-id text-id-4694) :start #x119 :end #x1a5) + (new 'static 'm2v-caption :text-id (text-id text-id-4695) :start #x1a6 :end #x21f) + (new 'static 'm2v-caption :text-id (text-id text-id-4696) :start #x220 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-4697) :start #x26c :end #x2df) + (new 'static 'm2v-caption :text-id (text-id text-id-4698) :start #x2e0 :end #x350) + (new 'static 'm2v-caption :text-id (text-id text-id-4699) :start #x351 :end #x3c1) + (new 'static 'm2v-caption :text-id (text-id text-id-4700) :start #x3d9 :end #x425) + (new 'static 'm2v-caption :text-id (text-id text-id-4701) :start #x426 :end #x4a2) + (new 'static 'm2v-caption :text-id (text-id text-id-4702) :start #x4a3 :end #x50b) + (new 'static 'm2v-caption :text-id (text-id text-id-4703) :start #x50c :end #x55b) + (new 'static 'm2v-caption :text-id (text-id text-id-4704) :start #x55c :end #x5bc) + (new 'static 'm2v-caption :text-id (text-id text-id-4705) :start #x5bd :end #x605) + (new 'static 'm2v-caption :text-id (text-id text-id-4706) :start #x606 :end #x674) + (new 'static 'm2v-caption :text-id (text-id text-id-4707) :start #x675 :end #x6a9) + (new 'static 'm2v-caption :text-id (text-id text-id-4708) :start #x6aa :end #x6db) + (new 'static 'm2v-caption :text-id (text-id text-id-4709) :start #x6dc :end #x75e) + (new 'static 'm2v-caption :text-id (text-id text-id-4710) :start #x75f :end #x7ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4711) :start #x7ba :end #x813) + (new 'static 'm2v-caption :text-id (text-id text-id-4712) :start #x814 :end #x873) + (new 'static 'm2v-caption :text-id (text-id text-id-4713) :start #x874 :end #x8cb) + (new 'static 'm2v-caption :text-id (text-id text-id-4714) :start #x8cc :end #x8fc) + (new 'static 'm2v-caption :text-id (text-id text-id-4715) :start #x8fd :end #x928) + (new 'static 'm2v-caption :text-id (text-id text-id-4716) :start #x929 :end #x96f) + (new 'static 'm2v-caption :text-id (text-id text-id-4717) :start #x970 :end #x9bc) + (new 'static 'm2v-caption :text-id (text-id text-id-4718) :start #x9bd :end #x9f2) + (new 'static 'm2v-caption :text-id (text-id text-id-4719) :start #x9f3 :end #xa28) + (new 'static 'm2v-caption :text-id (text-id text-id-4720) :start #xa4d :end #xab2) + (new 'static 'm2v-caption :text-id (text-id text-id-4721) :start #xab3 :end #xb07) + (new 'static 'm2v-caption :text-id (text-id text-id-4722) :start #xb08 :end #xb3e) + (new 'static 'm2v-caption :text-id (text-id text-id-4723) :start #xb3f :end #xbd1) + (new 'static 'm2v-caption :text-id (text-id text-id-4724) :start #xbd2 :end #xc46) + (new 'static 'm2v-caption :text-id (text-id text-id-4725) :start #xc47 :end #xc8b) + (new 'static 'm2v-caption :text-id (text-id text-id-4726) :start #xc8c :end #xcd8) + (new 'static 'm2v-caption :text-id (text-id text-id-4727) :start #xd2c :end #xd80) + (new 'static 'm2v-caption :text-id (text-id text-id-4728) :start #xd81 :end #xe26) + (new 'static 'm2v-caption :text-id (text-id text-id-4729) :start #xe27 :end #xe7c) + (new 'static 'm2v-caption :text-id (text-id text-id-4730) :start #xe7d :end #xf13) + (new 'static 'm2v-caption :text-id (text-id text-id-4731) :start #xf5a :end #xfba) + (new 'static 'm2v-caption :text-id (text-id text-id-4732) :start #xfbb :end #x1048) + (new 'static 'm2v-caption :text-id (text-id text-id-4733) :start #x1049 :end #x10ca) + (new 'static 'm2v-caption :text-id (text-id text-id-4734) :start #x10cb :end #x10e8) + (new 'static 'm2v-caption :text-id (text-id text-id-4736) :start #x10e9 :end #x115b) + (new 'static 'm2v-caption :text-id (text-id text-id-4735) :start #x115c :end #x11a7) + (new 'static 'm2v-caption :text-id (text-id text-id-4737) :start #x11a8 :end #x120c) + (new 'static 'm2v-caption :text-id (text-id text-id-4738) :start #x120d :end #x127a) + (new 'static 'm2v-caption :text-id (text-id text-id-4739) :start #x127b :end #x12ce) + (new 'static 'm2v-caption :text-id (text-id text-id-4740) :start #x12cf :end #x1352) + (new 'static 'm2v-caption :text-id (text-id text-id-4741) :start #x1353 :end #x13b9) + (new 'static 'm2v-caption :text-id (text-id text-id-4742) :start #x13ba :end #x13fe) + (new 'static 'm2v-caption :text-id (text-id text-id-4743) :start #x13ff :end #x1487) + (new 'static 'm2v-caption :text-id (text-id text-id-4744) :start #x1488 :end #x1503) + (new 'static 'm2v-caption :text-id (text-id text-id-4745) :start #x1504 :end #x159d) + (new 'static 'm2v-caption :text-id (text-id text-id-4746) :start #x159e :end #x161e) + (new 'static 'm2v-caption :text-id (text-id text-id-4747) :start #x161f :end #x1694) + (new 'static 'm2v-caption :text-id (text-id text-id-4748) :start #x1695 :end #x16f3) + (new 'static 'm2v-caption :text-id (text-id text-id-4749) :start #x16f4 :end #x1774) + (new 'static 'm2v-caption :text-id (text-id text-id-4750) :start #x1775 :end #x17ad) + (new 'static 'm2v-caption :text-id (text-id text-id-4751) :start #x17ae :end #x180d) + (new 'static 'm2v-caption :text-id (text-id text-id-4752) :start #x180e :end #x1874) + (new 'static 'm2v-caption :text-id (text-id text-id-4753) :start #x1875 :end #x18e7) + (new 'static 'm2v-caption :text-id (text-id text-id-4754) :start #x1907 :end #x1963) + (new 'static 'm2v-caption :text-id (text-id text-id-4755) :start #x1964 :end #x19d2) + (new 'static 'm2v-caption :text-id (text-id text-id-4756) :start #x19d3 :end #x1a30) + (new 'static 'm2v-caption :text-id (text-id text-id-4757) :start #x1a31 :end #x1a80) + (new 'static 'm2v-caption :text-id (text-id text-id-4758) :start #x1a81 :end #x1aef) + (new 'static 'm2v-caption :text-id (text-id text-id-4759) :start #x1af0 :end #x1b56) + (new 'static 'm2v-caption :text-id (text-id text-id-4760) :start #x1b57 :end #x1b93) + (new 'static 'm2v-caption :text-id (text-id text-id-4761) :start #x1b94 :end #x1bf2) + (new 'static 'm2v-caption :text-id (text-id text-id-4762) :start #x1bf3 :end #x1c34) + ) + :id #xd6e + :idx 1 + :driver #x17 + :driver2 #x17 + :flags #x8 + ) + (new 'static 'm2v-info + :name "introb" + :sound "intro-boardroom" + :commentary-sound "introb" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2833) :start 35 :end #x6a) + (new 'static 'm2v-caption :text-id (text-id text-id-2834) :start #x6b :end #x93) + (new 'static 'm2v-caption :text-id (text-id text-id-2835) :start #x9d :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-2836) :start #xce :end #xf6) + (new 'static 'm2v-caption :text-id (text-id text-id-2837) :start #xf7 :end #x15b) + (new 'static 'm2v-caption :text-id (text-id text-id-2838) :start #x15c :end #x1bb) + (new 'static 'm2v-caption :text-id (text-id text-id-2839) :start #x1c3 :end #x1f1) + (new 'static 'm2v-caption :text-id (text-id text-id-2840) :start #x1f2 :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-2886) :start #x243 :end #x273) + (new 'static 'm2v-caption :text-id (text-id text-id-2842) :start #x275 :end #x2c9) + (new 'static 'm2v-caption :text-id (text-id text-id-2843) :start #x2ca :end #x322) + (new 'static 'm2v-caption :text-id (text-id text-id-2844) :start #x323 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-2845) :start #x372 :end #x409) + (new 'static 'm2v-caption :text-id (text-id text-id-2846) :start #x424 :end #x4b0) + (new 'static 'm2v-caption :text-id (text-id text-id-2847) :start #x514 :end #x56d) + (new 'static 'm2v-caption :text-id (text-id text-id-2848) :start #x590 :end #x5ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2849) :start #x5eb :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2850) :start #x683 :end #x6fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2851) :start #x6fc :end #x763) + (new 'static 'm2v-caption :text-id (text-id text-id-2852) :start #x764 :end #x7dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2853) :start #x7dd :end #x85f) + (new 'static 'm2v-caption :text-id (text-id text-id-2854) :start #x860 :end #x8c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2855) :start #x8c6 :end #x93b) + (new 'static 'm2v-caption :text-id (text-id text-id-2856) :start #x942 :end #x94b) + (new 'static 'm2v-caption :text-id (text-id text-id-2857) :start #x94c :end #x955) + (new 'static 'm2v-caption :text-id (text-id text-id-2858) :start #x956 :end #x960) + (new 'static 'm2v-caption :text-id (text-id text-id-2859) :start #x968 :end #x9a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2860) :start #x9a7 :end #xa1c) + (new 'static 'm2v-caption :text-id (text-id text-id-2861) :start #xa1d :end #xa97) + (new 'static 'm2v-caption :text-id (text-id text-id-2862) :start #xa98 :end #xae9) + (new 'static 'm2v-caption :text-id (text-id text-id-2863) :start #xaea :end #xb3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2864) :start #xb3f :end #xb53) + (new 'static 'm2v-caption :text-id (text-id text-id-2865) :start #xb58 :end #xbe1) + (new 'static 'm2v-caption :text-id (text-id text-id-2866) :start #xbe2 :end #xc3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2867) :start #xc3f :end #xcac) + (new 'static 'm2v-caption :text-id (text-id text-id-2868) :start #xcad :end #xd08) + (new 'static 'm2v-caption :text-id (text-id text-id-2869) :start #xd09 :end #xd6d) + (new 'static 'm2v-caption :text-id (text-id text-id-2870) :start #xd86 :end #xdb7) + (new 'static 'm2v-caption :text-id (text-id text-id-2871) :start #xdbe :end #xe21) + (new 'static 'm2v-caption :text-id (text-id text-id-2872) :start #xe22 :end #xe5d) + (new 'static 'm2v-caption :text-id (text-id text-id-2873) :start #xe63 :end #xe9b) + (new 'static 'm2v-caption :text-id (text-id text-id-2874) :start #xe9e :end #xecf) + (new 'static 'm2v-caption :text-id (text-id text-id-2875) :start #xed9 :end #xf00) + (new 'static 'm2v-caption :text-id (text-id text-id-2876) :start #xf10 :end #xf73) + (new 'static 'm2v-caption :text-id (text-id text-id-2877) :start #xf60 :end #xfbf) + (new 'static 'm2v-caption :text-id (text-id text-id-2878) :start #xfc0 :end #xff7) + (new 'static 'm2v-caption :text-id (text-id text-id-2879) :start #xff8 :end #x103e) + (new 'static 'm2v-caption :text-id (text-id text-id-2880) :start #x1055 :end #x10c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2881) :start #x10d1 :end #x10ed) + (new 'static 'm2v-caption :text-id (text-id text-id-2882) :start #x10ee :end #x1148) + (new 'static 'm2v-caption :text-id (text-id text-id-2883) :start #x1153 :end #x1194) + (new 'static 'm2v-caption :text-id (text-id text-id-2884) :start #x1195 :end #x11fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2885) :start #x11fb :end #x125a) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4763) :start 2 :end 29) + (new 'static 'm2v-caption :text-id (text-id text-id-4764) :start 30 :end #x80) + (new 'static 'm2v-caption :text-id (text-id text-id-4765) :start #x81 :end #xfa) + (new 'static 'm2v-caption :text-id (text-id text-id-4766) :start #xfb :end #x155) + (new 'static 'm2v-caption :text-id (text-id text-id-4767) :start #x156 :end #x1c9) + (new 'static 'm2v-caption :text-id (text-id text-id-4768) :start #x1ca :end #x204) + (new 'static 'm2v-caption :text-id (text-id text-id-4769) :start #x205 :end #x25d) + (new 'static 'm2v-caption :text-id (text-id text-id-4770) :start #x25e :end #x2a4) + (new 'static 'm2v-caption :text-id (text-id text-id-4771) :start #x2a5 :end #x2d5) + (new 'static 'm2v-caption :text-id (text-id text-id-4772) :start #x2d6 :end #x311) + (new 'static 'm2v-caption :text-id (text-id text-id-4773) :start #x312 :end #x3a6) + (new 'static 'm2v-caption :text-id (text-id text-id-4774) :start #x3c9 :end #x41d) + (new 'static 'm2v-caption :text-id (text-id text-id-4775) :start #x41e :end #x459) + (new 'static 'm2v-caption :text-id (text-id text-id-4776) :start #x45a :end #x4bf) + (new 'static 'm2v-caption :text-id (text-id text-id-4777) :start #x4c0 :end #x502) + (new 'static 'm2v-caption :text-id (text-id text-id-4778) :start #x503 :end #x57a) + (new 'static 'm2v-caption :text-id (text-id text-id-4779) :start #x57b :end #x5f6) + (new 'static 'm2v-caption :text-id (text-id text-id-4780) :start #x5f7 :end #x627) + (new 'static 'm2v-caption :text-id (text-id text-id-4781) :start #x63d :end #x6c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4782) :start #x6c8 :end #x703) + (new 'static 'm2v-caption :text-id (text-id text-id-4783) :start #x704 :end #x766) + (new 'static 'm2v-caption :text-id (text-id text-id-4784) :start #x767 :end #x7c4) + (new 'static 'm2v-caption :text-id (text-id text-id-4785) :start #x7c5 :end #x83f) + (new 'static 'm2v-caption :text-id (text-id text-id-4786) :start #x840 :end #x8b1) + (new 'static 'm2v-caption :text-id (text-id text-id-4787) :start #x8b2 :end #x922) + (new 'static 'm2v-caption :text-id (text-id text-id-4788) :start #x949 :end #x9cc) + (new 'static 'm2v-caption :text-id (text-id text-id-4789) :start #x9cd :end #xa26) + (new 'static 'm2v-caption :text-id (text-id text-id-4791) :start #xa27 :end #xa76) + (new 'static 'm2v-caption :text-id (text-id text-id-4792) :start #xa77 :end #xaf7) + (new 'static 'm2v-caption :text-id (text-id text-id-4790) :start #xaf8 :end #xb7d) + (new 'static 'm2v-caption :text-id (text-id text-id-4793) :start #xb7e :end #xbe7) + (new 'static 'm2v-caption :text-id (text-id text-id-4794) :start #xbe8 :end #xc29) + (new 'static 'm2v-caption :text-id (text-id text-id-4795) :start #xc2a :end #xc63) + (new 'static 'm2v-caption :text-id (text-id text-id-4796) :start #xc64 :end #xcc5) + (new 'static 'm2v-caption :text-id (text-id text-id-4797) :start #xcc6 :end #xd2a) + (new 'static 'm2v-caption :text-id (text-id text-id-4798) :start #xd2b :end #xd97) + (new 'static 'm2v-caption :text-id (text-id text-id-4799) :start #xd98 :end #xe16) + (new 'static 'm2v-caption :text-id (text-id text-id-4800) :start #xe17 :end #xe71) + (new 'static 'm2v-caption :text-id (text-id text-id-4801) :start #xe72 :end #xed3) + (new 'static 'm2v-caption :text-id (text-id text-id-4802) :start #xed4 :end #xf41) + (new 'static 'm2v-caption :text-id (text-id text-id-4803) :start #xf42 :end #xfa4) + (new 'static 'm2v-caption :text-id (text-id text-id-4804) :start #xfa5 :end #xfd2) + (new 'static 'm2v-caption :text-id (text-id text-id-4805) :start #xfd3 :end #x104f) + (new 'static 'm2v-caption :text-id (text-id text-id-4806) :start #x1050 :end #x1084) + (new 'static 'm2v-caption :text-id (text-id text-id-4807) :start #x1085 :end #x10e3) + (new 'static 'm2v-caption :text-id (text-id text-id-4808) :start #x10e4 :end #x1156) + (new 'static 'm2v-caption :text-id (text-id text-id-4809) :start #x1157 :end #x11a9) + (new 'static 'm2v-caption :text-id (text-id text-id-4810) :start #x11aa :end #x11f3) + (new 'static 'm2v-caption :text-id (text-id text-id-4811) :start #x11f4 :end #x1254) + ) + :id #xd6f + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "firaintr" + :sound "002-first-race-intro" + :commentary-sound "firaintr" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2278) :start 23 :end 99) + (new 'static 'm2v-caption :text-id (text-id text-id-2279) :start 100 :end #xba) + (new 'static 'm2v-caption :text-id (text-id text-id-2280) :start #xbb :end #x119) + (new 'static 'm2v-caption :text-id (text-id text-id-2281) :start #x11a :end #x16e) + (new 'static 'm2v-caption :text-id (text-id text-id-2282) :start #x16f :end #x1b7) + (new 'static 'm2v-caption :text-id (text-id text-id-2283) :start #x1b8 :end #x23a) + (new 'static 'm2v-caption :text-id (text-id text-id-2284) :start #x23b :end #x293) + (new 'static 'm2v-caption :text-id (text-id text-id-2285) :start #x294 :end #x2e4) + (new 'static 'm2v-caption :text-id (text-id text-id-2286) :start #x2e5 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-2287) :start #x36e :end #x3b1) + (new 'static 'm2v-caption :text-id (text-id text-id-2288) :start #x3b2 :end #x421) + (new 'static 'm2v-caption :text-id (text-id text-id-2289) :start #x433 :end #x451) + (new 'static 'm2v-caption :text-id (text-id text-id-2290) :start #x454 :end #x4a5) + (new 'static 'm2v-caption :text-id (text-id text-id-2291) :start #x4a6 :end #x524) + (new 'static 'm2v-caption :text-id (text-id text-id-2292) :start #x525 :end #x579) + (new 'static 'm2v-caption :text-id (text-id text-id-2293) :start #x57a :end #x5af) + (new 'static 'm2v-caption :text-id (text-id text-id-2294) :start #x5b1 :end #x5d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2295) :start #x5d7 :end #x61c) + (new 'static 'm2v-caption :text-id (text-id text-id-2296) :start #x61d :end #x653) + (new 'static 'm2v-caption :text-id (text-id text-id-2297) :start #x65a :end #x6a8) + (new 'static 'm2v-caption :text-id (text-id text-id-2298) :start #x6a9 :end #x6d6) + (new 'static 'm2v-caption :text-id (text-id text-id-2299) :start #x6d8 :end #x706) + (new 'static 'm2v-caption :text-id (text-id text-id-2300) :start #x707 :end #x758) + (new 'static 'm2v-caption :text-id (text-id text-id-2301) :start #x764 :end #x7d7) + (new 'static 'm2v-caption :text-id (text-id text-id-2302) :start #x7d8 :end #x811) + (new 'static 'm2v-caption :text-id (text-id text-id-2303) :start #x812 :end #x844) + (new 'static 'm2v-caption :text-id (text-id text-id-2304) :start #x845 :end #x879) + (new 'static 'm2v-caption :text-id (text-id text-id-2305) :start #x87a :end #x8e4) + (new 'static 'm2v-caption :text-id (text-id text-id-2306) :start #x8e5 :end #x968) + (new 'static 'm2v-caption :text-id (text-id text-id-2307) :start #x969 :end #x9d6) + (new 'static 'm2v-caption :text-id (text-id text-id-2308) :start #x9d7 :end #xa02) + (new 'static 'm2v-caption :text-id (text-id text-id-2309) :start #xa03 :end #xa75) + (new 'static 'm2v-caption :text-id (text-id text-id-2310) :start #xa76 :end #xaff) + (new 'static 'm2v-caption :text-id (text-id text-id-2311) :start #xb00 :end #xb48) + (new 'static 'm2v-caption :text-id (text-id text-id-2312) :start #xb5e :end #xb77) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4660) :start 1 :end 40) + (new 'static 'm2v-caption :text-id (text-id text-id-4661) :start 45 :end #x6a) + (new 'static 'm2v-caption :text-id (text-id text-id-4662) :start #x6b :end #x100) + (new 'static 'm2v-caption :text-id (text-id text-id-4663) :start #x101 :end #x163) + (new 'static 'm2v-caption :text-id (text-id text-id-4664) :start #x164 :end #x1ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4665) :start #x1bb :end #x1e4) + (new 'static 'm2v-caption :text-id (text-id text-id-4666) :start #x1e5 :end #x226) + (new 'static 'm2v-caption :text-id (text-id text-id-4667) :start #x227 :end #x256) + (new 'static 'm2v-caption :text-id (text-id text-id-4668) :start #x257 :end #x299) + (new 'static 'm2v-caption :text-id (text-id text-id-4669) :start #x29a :end #x315) + (new 'static 'm2v-caption :text-id (text-id text-id-4670) :start #x316 :end #x360) + (new 'static 'm2v-caption :text-id (text-id text-id-4671) :start #x361 :end #x3db) + (new 'static 'm2v-caption :text-id (text-id text-id-4672) :start #x3dc :end #x43e) + (new 'static 'm2v-caption :text-id (text-id text-id-4673) :start #x43f :end #x47b) + (new 'static 'm2v-caption :text-id (text-id text-id-4674) :start #x47c :end #x4d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4675) :start #x4d5 :end #x548) + (new 'static 'm2v-caption :text-id (text-id text-id-4676) :start #x549 :end #x5c5) + (new 'static 'm2v-caption :text-id (text-id text-id-4677) :start #x5c6 :end #x611) + (new 'static 'm2v-caption :text-id (text-id text-id-4678) :start #x612 :end #x670) + (new 'static 'm2v-caption :text-id (text-id text-id-4679) :start #x671 :end #x6b4) + (new 'static 'm2v-caption :text-id (text-id text-id-4680) :start #x6b5 :end #x739) + (new 'static 'm2v-caption :text-id (text-id text-id-4681) :start #x73a :end #x764) + (new 'static 'm2v-caption :text-id (text-id text-id-4682) :start #x765 :end #x7ed) + (new 'static 'm2v-caption :text-id (text-id text-id-4683) :start #x7ee :end #x824) + (new 'static 'm2v-caption :text-id (text-id text-id-4684) :start #x825 :end #x866) + (new 'static 'm2v-caption :text-id (text-id text-id-4685) :start #x867 :end #x8b4) + (new 'static 'm2v-caption :text-id (text-id text-id-4686) :start #x8b5 :end #x960) + (new 'static 'm2v-caption :text-id (text-id text-id-4687) :start #x961 :end #x9dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4688) :start #x9dd :end #xa3c) + (new 'static 'm2v-caption :text-id (text-id text-id-4689) :start #xa3d :end #xaa0) + (new 'static 'm2v-caption :text-id (text-id text-id-4690) :start #xaa1 :end #xb2c) + (new 'static 'm2v-caption :text-id (text-id text-id-4691) :start #xb42 :end #xb66) + ) + :id #xd70 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "firares" + :sound "2-first-race-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2190) :start 40 :end #x9b) + (new 'static 'm2v-caption :text-id (text-id text-id-2189) :start #x9c :end #xce) + (new 'static 'm2v-caption :text-id (text-id text-id-2188) :start #xcf :end #x163) + (new 'static 'm2v-caption :text-id (text-id text-id-2187) :start #x164 :end #x1d7) + (new 'static 'm2v-caption :text-id (text-id text-id-2186) :start #x1d8 :end #x1e0) + (new 'static 'm2v-caption :text-id (text-id text-id-2208) :start #x1e8 :end #x238) + (new 'static 'm2v-caption :text-id (text-id text-id-2209) :start #x23c :end #x25f) + (new 'static 'm2v-caption :text-id (text-id text-id-2210) :start #x261 :end #x2d2) + (new 'static 'm2v-caption :text-id (text-id text-id-2211) :start #x2d5 :end #x2f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2212) :start #x2fb :end #x353) + (new 'static 'm2v-caption :text-id (text-id text-id-2213) :start #x354 :end #x3c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2214) :start #x3cb :end #x437) + (new 'static 'm2v-caption :text-id (text-id text-id-2215) :start #x438 :end #x473) + (new 'static 'm2v-caption :text-id (text-id text-id-2216) :start #x474 :end #x4c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2217) :start #x4c4 :end #x4f2) + (new 'static 'm2v-caption :text-id (text-id text-id-2218) :start #x4f3 :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-2219) :start #x541 :end #x56b) + (new 'static 'm2v-caption :text-id (text-id text-id-2220) :start #x56c :end #x5d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2221) :start #x5d4 :end #x627) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd71 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "daporeal" + :sound "3-daxter-poison-real" + :commentary-sound "daporeal" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2179) :start 17 :end #x8a) + (new 'static 'm2v-caption :text-id (text-id text-id-2178) :start #x8b :end #xd6) + (new 'static 'm2v-caption :text-id (text-id text-id-2177) :start #xdb :end #x102) + (new 'static 'm2v-caption :text-id (text-id text-id-2176) :start #x103 :end #x13d) + (new 'static 'm2v-caption :text-id (text-id text-id-2175) :start #x13e :end #x180) + (new 'static 'm2v-caption :text-id (text-id text-id-2174) :start #x181 :end #x1aa) + (new 'static 'm2v-caption :text-id (text-id text-id-2173) :start #x1ad :end #x1dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2171) :start #x1dd :end #x216) + (new 'static 'm2v-caption :text-id (text-id text-id-2172) :start #x21f :end #x29f) + (new 'static 'm2v-caption :text-id (text-id text-id-2170) :start #x2ac :end #x2e1) + (new 'static 'm2v-caption :text-id (text-id text-id-2169) :start #x2e9 :end #x337) + (new 'static 'm2v-caption :text-id (text-id text-id-2168) :start #x338 :end #x359) + (new 'static 'm2v-caption :text-id (text-id text-id-2167) :start #x35e :end #x380) + (new 'static 'm2v-caption :text-id (text-id text-id-2166) :start #x387 :end #x3eb) + (new 'static 'm2v-caption :text-id (text-id text-id-2165) :start #x3ec :end #x431) + (new 'static 'm2v-caption :text-id (text-id text-id-2164) :start #x43a :end #x4a3) + (new 'static 'm2v-caption :text-id (text-id text-id-2163) :start #x4a7 :end #x4c9) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4370) :start 1 :end 40) + (new 'static 'm2v-caption :text-id (text-id text-id-4371) :start 45 :end #x72) + (new 'static 'm2v-caption :text-id (text-id text-id-4372) :start #x73 :end #xb5) + (new 'static 'm2v-caption :text-id (text-id text-id-4373) :start #xb6 :end #x111) + (new 'static 'm2v-caption :text-id (text-id text-id-4374) :start #x112 :end #x171) + (new 'static 'm2v-caption :text-id (text-id text-id-4375) :start #x172 :end #x1ca) + (new 'static 'm2v-caption :text-id (text-id text-id-4376) :start #x1cb :end #x220) + (new 'static 'm2v-caption :text-id (text-id text-id-4377) :start #x221 :end #x2dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4378) :start #x2dd :end #x34f) + (new 'static 'm2v-caption :text-id (text-id text-id-4379) :start #x350 :end #x37c) + (new 'static 'm2v-caption :text-id (text-id text-id-4380) :start #x37d :end #x3cf) + (new 'static 'm2v-caption :text-id (text-id text-id-4381) :start #x3d0 :end #x41e) + (new 'static 'm2v-caption :text-id (text-id text-id-4382) :start #x41f :end #x45a) + ) + :id #xd72 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "jafaraze" + :sound "10-jak-faces-razer" + :commentary-sound "jafaraze" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2149) :start 62 :end #x7b) + (new 'static 'm2v-caption :text-id (text-id text-id-2147) :start #x7c :end #xc9) + (new 'static 'm2v-caption :text-id (text-id text-id-2146) :start #xce :end #x179) + (new 'static 'm2v-caption :text-id (text-id text-id-2144) :start #x184 :end #x1a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2145) :start #x1a8 :end #x1c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2143) :start #x1c2 :end #x1e2) + (new 'static 'm2v-caption :text-id (text-id text-id-2142) :start #x1e5 :end #x245) + (new 'static 'm2v-caption :text-id (text-id text-id-2140) :start #x249 :end #x2dd) + (new 'static 'm2v-caption :text-id (text-id text-id-2141) :start #x2de :end #x329) + (new 'static 'm2v-caption :text-id (text-id text-id-2139) :start #x32a :end #x374) + (new 'static 'm2v-caption :text-id (text-id text-id-2137) :start #x37d :end #x3a2) + (new 'static 'm2v-caption :text-id (text-id text-id-2138) :start #x3c8 :end #x404) + (new 'static 'm2v-caption :text-id (text-id text-id-2136) :start #x40d :end #x428) + (new 'static 'm2v-caption :text-id (text-id text-id-2135) :start #x430 :end #x47f) + (new 'static 'm2v-caption :text-id (text-id text-id-2267) :start #x480 :end #x4f2) + (new 'static 'm2v-caption :text-id (text-id text-id-2133) :start #x4f3 :end #x554) + (new 'static 'm2v-caption :text-id (text-id text-id-2132) :start #x555 :end #x5a8) + (new 'static 'm2v-caption :text-id (text-id text-id-2131) :start #x5ae :end #x5d9) + (new 'static 'm2v-caption :text-id (text-id text-id-2130) :start #x5df :end #x676) + (new 'static 'm2v-caption :text-id (text-id text-id-2129) :start #x677 :end #x6c6) + (new 'static 'm2v-caption :text-id (text-id text-id-2128) :start #x6c9 :end #x757) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4434) :start 51 :end 85) + (new 'static 'm2v-caption :text-id (text-id text-id-4435) :start 86 :end #x10b) + (new 'static 'm2v-caption :text-id (text-id text-id-4436) :start #x10c :end #x18a) + (new 'static 'm2v-caption :text-id (text-id text-id-4438) :start #x18b :end #x1dd) + (new 'static 'm2v-caption :text-id (text-id text-id-4437) :start #x1de :end #x225) + (new 'static 'm2v-caption :text-id (text-id text-id-4439) :start #x226 :end #x286) + (new 'static 'm2v-caption :text-id (text-id text-id-4440) :start #x287 :end #x304) + (new 'static 'm2v-caption :text-id (text-id text-id-4441) :start #x305 :end #x37e) + (new 'static 'm2v-caption :text-id (text-id text-id-4442) :start #x37f :end #x422) + (new 'static 'm2v-caption :text-id (text-id text-id-4443) :start #x423 :end #x479) + (new 'static 'm2v-caption :text-id (text-id text-id-4444) :start #x48d :end #x525) + (new 'static 'm2v-caption :text-id (text-id text-id-4445) :start #x526 :end #x568) + (new 'static 'm2v-caption :text-id (text-id text-id-4446) :start #x569 :end #x64d) + (new 'static 'm2v-caption :text-id (text-id text-id-4447) :start #x64e :end #x69c) + (new 'static 'm2v-caption :text-id (text-id text-id-4448) :start #x69d :end #x72a) + ) + :id #xd74 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "blderace" + :sound "9-blitz-deathdrome" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2162) :start 55 :end #x99) + (new 'static 'm2v-caption :text-id (text-id text-id-2161) :start #xa8 :end #x117) + (new 'static 'm2v-caption :text-id (text-id text-id-2160) :start #x118 :end #x185) + (new 'static 'm2v-caption :text-id (text-id text-id-2159) :start #x186 :end #x202) + (new 'static 'm2v-caption :text-id (text-id text-id-2158) :start #x203 :end #x246) + (new 'static 'm2v-caption :text-id (text-id text-id-2157) :start #x247 :end #x2c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2156) :start #x2ca :end #x301) + (new 'static 'm2v-caption :text-id (text-id text-id-2148) :start #x302 :end #x33a) + (new 'static 'm2v-caption :text-id (text-id text-id-2150) :start #x341 :end #x37e) + (new 'static 'm2v-caption :text-id (text-id text-id-2151) :start #x38b :end #x3e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2152) :start #x3e6 :end #x434) + (new 'static 'm2v-caption :text-id (text-id text-id-2153) :start #x435 :end #x4cf) + (new 'static 'm2v-caption :text-id (text-id text-id-2154) :start #x4d0 :end #x533) + (new 'static 'm2v-caption :text-id (text-id text-id-2155) :start #x534 :end #x5bc) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd73 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "peckshow" + :sound "12-pecker-added-to-show" + :commentary-sound "peckshow" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2229) :start 20 :end 100) + (new 'static 'm2v-caption :text-id (text-id text-id-2230) :start #x65 :end #xed) + (new 'static 'm2v-caption :text-id (text-id text-id-2231) :start #xee :end #x124) + (new 'static 'm2v-caption :text-id (text-id text-id-2232) :start #x125 :end #x189) + (new 'static 'm2v-caption :text-id (text-id text-id-2233) :start #x18a :end #x22a) + (new 'static 'm2v-caption :text-id (text-id text-id-2234) :start #x22b :end #x274) + (new 'static 'm2v-caption :text-id (text-id text-id-2235) :start #x280 :end #x2e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2236) :start #x2e6 :end #x354) + (new 'static 'm2v-caption :text-id (text-id text-id-2237) :start #x358 :end #x3fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2238) :start #x402 :end #x437) + (new 'static 'm2v-caption :text-id (text-id text-id-2239) :start #x438 :end #x48b) + (new 'static 'm2v-caption :text-id (text-id text-id-2240) :start #x48f :end #x4f4) + (new 'static 'm2v-caption :text-id (text-id text-id-2241) :start #x4f5 :end #x555) + (new 'static 'm2v-caption :text-id (text-id text-id-2242) :start #x556 :end #x5cf) + (new 'static 'm2v-caption :text-id (text-id text-id-2243) :start #x5d0 :end #x616) + (new 'static 'm2v-caption :text-id (text-id text-id-2244) :start #x617 :end #x663) + (new 'static 'm2v-caption :text-id (text-id text-id-2245) :start #x664 :end #x6c6) + (new 'static 'm2v-caption :text-id (text-id text-id-2246) :start #x6c7 :end #x762) + (new 'static 'm2v-caption :text-id (text-id text-id-2247) :start #x76b :end #x799) + (new 'static 'm2v-caption :text-id (text-id text-id-2248) :start #x79a :end #x810) + (new 'static 'm2v-caption :text-id (text-id text-id-2249) :start #x816 :end #x848) + (new 'static 'm2v-caption :text-id (text-id text-id-2250) :start #x855 :end #x87c) + (new 'static 'm2v-caption :text-id (text-id text-id-2251) :start #x87d :end #x89f) + (new 'static 'm2v-caption :text-id (text-id text-id-2252) :start #x8a0 :end #x8bd) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4313) :start 12 :end 59) + (new 'static 'm2v-caption :text-id (text-id text-id-4314) :start 60 :end #xcc) + (new 'static 'm2v-caption :text-id (text-id text-id-4315) :start #xeb :end #x181) + (new 'static 'm2v-caption :text-id (text-id text-id-4316) :start #x182 :end #x1c6) + (new 'static 'm2v-caption :text-id (text-id text-id-4317) :start #x1d7 :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-4318) :start #x243 :end #x2c2) + (new 'static 'm2v-caption :text-id (text-id text-id-4319) :start #x2ed :end #x30f) + (new 'static 'm2v-caption :text-id (text-id text-id-4320) :start #x310 :end #x363) + (new 'static 'm2v-caption :text-id (text-id text-id-4321) :start #x364 :end #x399) + (new 'static 'm2v-caption :text-id (text-id text-id-4322) :start #x39a :end #x3f7) + (new 'static 'm2v-caption :text-id (text-id text-id-4323) :start #x3f8 :end #x490) + (new 'static 'm2v-caption :text-id (text-id text-id-4324) :start #x491 :end #x4ec) + (new 'static 'm2v-caption :text-id (text-id text-id-4325) :start #x4ed :end #x57d) + (new 'static 'm2v-caption :text-id (text-id text-id-4326) :start #x597 :end #x5bf) + (new 'static 'm2v-caption :text-id (text-id text-id-4327) :start #x5c0 :end #x62f) + (new 'static 'm2v-caption :text-id (text-id text-id-4328) :start #x630 :end #x6c0) + (new 'static 'm2v-caption :text-id (text-id text-id-4329) :start #x6c1 :end #x74d) + (new 'static 'm2v-caption :text-id (text-id text-id-4330) :start #x74e :end #x7a0) + (new 'static 'm2v-caption :text-id (text-id text-id-4331) :start #x7a1 :end #x7de) + (new 'static 'm2v-caption :text-id (text-id text-id-4332) :start #x82a :end #x88a) + (new 'static 'm2v-caption :text-id (text-id text-id-4333) :start #x88b :end #x8bd) + ) + :id #xd75 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "meetur86" + :sound "025-meet-ur86" + :commentary-sound "meetur86" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2352) :start 27 :end 84) + (new 'static 'm2v-caption :text-id (text-id text-id-2353) :start 85 :end #xb1) + (new 'static 'm2v-caption :text-id (text-id text-id-2354) :start #xb2 :end #x101) + (new 'static 'm2v-caption :text-id (text-id text-id-2355) :start #x102 :end #x16a) + (new 'static 'm2v-caption :text-id (text-id text-id-2356) :start #x16e :end #x1b5) + (new 'static 'm2v-caption :text-id (text-id text-id-2357) :start #x1b6 :end #x205) + (new 'static 'm2v-caption :text-id (text-id text-id-2358) :start #x206 :end #x25b) + (new 'static 'm2v-caption :text-id (text-id text-id-2359) :start #x260 :end #x2ae) + (new 'static 'm2v-caption :text-id (text-id text-id-2360) :start #x2b7 :end #x33f) + (new 'static 'm2v-caption :text-id (text-id text-id-2361) :start #x346 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-2362) :start #x37d :end #x3ad) + (new 'static 'm2v-caption :text-id (text-id text-id-2363) :start #x3b8 :end #x430) + (new 'static 'm2v-caption :text-id (text-id text-id-2364) :start #x438 :end #x46e) + (new 'static 'm2v-caption :text-id (text-id text-id-2365) :start #x46f :end #x4de) + (new 'static 'm2v-caption :text-id (text-id text-id-2366) :start #x4df :end #x519) + (new 'static 'm2v-caption :text-id (text-id text-id-2367) :start #x52f :end #x5a9) + (new 'static 'm2v-caption :text-id (text-id text-id-2368) :start #x5b1 :end #x616) + (new 'static 'm2v-caption :text-id (text-id text-id-2369) :start #x617 :end #x63f) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4416) :start 1 :end 22) + (new 'static 'm2v-caption :text-id (text-id text-id-4417) :start 25 :end 84) + (new 'static 'm2v-caption :text-id (text-id text-id-4418) :start 85 :end #x74) + (new 'static 'm2v-caption :text-id (text-id text-id-4419) :start #x75 :end #xe8) + (new 'static 'm2v-caption :text-id (text-id text-id-4420) :start #xe9 :end #x175) + (new 'static 'm2v-caption :text-id (text-id text-id-4421) :start #x176 :end #x1e8) + (new 'static 'm2v-caption :text-id (text-id text-id-4422) :start #x1e9 :end #x24e) + (new 'static 'm2v-caption :text-id (text-id text-id-4423) :start #x24f :end #x29e) + (new 'static 'm2v-caption :text-id (text-id text-id-4911) :start #x29f :end #x336) + (new 'static 'm2v-caption :text-id (text-id text-id-4425) :start #x337 :end #x396) + (new 'static 'm2v-caption :text-id (text-id text-id-4426) :start #x397 :end #x405) + (new 'static 'm2v-caption :text-id (text-id text-id-4427) :start #x406 :end #x48e) + (new 'static 'm2v-caption :text-id (text-id text-id-4428) :start #x48f :end #x4d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4429) :start #x4d8 :end #x58a) + (new 'static 'm2v-caption :text-id (text-id text-id-4430) :start #x58b :end #x5ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4431) :start #x5bb :end #x5dd) + (new 'static 'm2v-caption :text-id (text-id text-id-4432) :start #x5de :end #x658) + (new 'static 'm2v-caption :text-id (text-id text-id-4433) :start #x659 :end #x6be) + ) + :id #xd77 + :driver #xb + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "bleagadg" + :sound "4-blitz-earn-gadgets" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2207) :start 47 :end #x7f) + (new 'static 'm2v-caption :text-id (text-id text-id-2206) :start #x80 :end #xf1) + (new 'static 'm2v-caption :text-id (text-id text-id-2205) :start #xf2 :end #x16c) + (new 'static 'm2v-caption :text-id (text-id text-id-2204) :start #x16d :end #x1bd) + (new 'static 'm2v-caption :text-id (text-id text-id-2203) :start #x1c4 :end #x1e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2202) :start #x1e6 :end #x20e) + (new 'static 'm2v-caption :text-id (text-id text-id-2201) :start #x210 :end #x27e) + (new 'static 'm2v-caption :text-id (text-id text-id-2200) :start #x27f :end #x2be) + (new 'static 'm2v-caption :text-id (text-id text-id-2199) :start #x2bf :end #x313) + (new 'static 'm2v-caption :text-id (text-id text-id-2198) :start #x314 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-2197) :start #x374 :end #x38a) + (new 'static 'm2v-caption :text-id (text-id text-id-2195) :start #x38d :end #x3b7) + (new 'static 'm2v-caption :text-id (text-id text-id-2196) :start #x3b9 :end #x425) + (new 'static 'm2v-caption :text-id (text-id text-id-2194) :start #x426 :end #x4a0) + (new 'static 'm2v-caption :text-id (text-id text-id-2193) :start #x4a1 :end #x4d4) + (new 'static 'm2v-caption :text-id (text-id text-id-2192) :start #x4d5 :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-2191) :start #x541 :end #x57b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd76 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "sireturn" + :sound "81-sig-returns" + :commentary-sound "sireturn" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2117) :start 20 :end 78) + (new 'static 'm2v-caption :text-id (text-id text-id-2116) :start 79 :end #xb0) + (new 'static 'm2v-caption :text-id (text-id text-id-2115) :start #xb1 :end #x103) + (new 'static 'm2v-caption :text-id (text-id text-id-2113) :start #x104 :end #x187) + (new 'static 'm2v-caption :text-id (text-id text-id-2114) :start #x188 :end #x1e6) + (new 'static 'm2v-caption :text-id (text-id text-id-2112) :start #x1fc :end #x24f) + (new 'static 'm2v-caption :text-id (text-id text-id-2111) :start #x258 :end #x27d) + (new 'static 'm2v-caption :text-id (text-id text-id-2109) :start #x283 :end #x2bc) + (new 'static 'm2v-caption :text-id (text-id text-id-2110) :start #x2c0 :end #x2d9) + (new 'static 'm2v-caption :text-id (text-id text-id-2108) :start #x2e1 :end #x320) + (new 'static 'm2v-caption :text-id (text-id text-id-2107) :start #x321 :end #x368) + (new 'static 'm2v-caption :text-id (text-id text-id-2105) :start #x369 :end #x37e) + (new 'static 'm2v-caption :text-id (text-id text-id-2106) :start #x37f :end #x3c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2104) :start #x3cb :end #x417) + (new 'static 'm2v-caption :text-id (text-id text-id-2103) :start #x424 :end #x453) + (new 'static 'm2v-caption :text-id (text-id text-id-2102) :start #x454 :end #x4a3) + (new 'static 'm2v-caption :text-id (text-id text-id-2101) :start #x4a4 :end #x4ff) + (new 'static 'm2v-caption :text-id (text-id text-id-2100) :start #x506 :end #x571) + (new 'static 'm2v-caption :text-id (text-id text-id-2099) :start #x575 :end #x5da) + (new 'static 'm2v-caption :text-id (text-id text-id-2098) :start #x5e7 :end #x603) + (new 'static 'm2v-caption :text-id (text-id text-id-2097) :start #x606 :end #x649) + (new 'static 'm2v-caption :text-id (text-id text-id-2096) :start #x64a :end #x694) + (new 'static 'm2v-caption :text-id (text-id text-id-2095) :start #x695 :end #x6fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2094) :start #x6fc :end #x775) + (new 'static 'm2v-caption :text-id (text-id text-id-2093) :start #x77c :end #x7bb) + (new 'static 'm2v-caption :text-id (text-id text-id-2092) :start #x7bc :end #x7f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2091) :start #x806 :end #x848) + (new 'static 'm2v-caption :text-id (text-id text-id-2090) :start #x849 :end #x881) + (new 'static 'm2v-caption :text-id (text-id text-id-2089) :start #x882 :end #x8de) + (new 'static 'm2v-caption :text-id (text-id text-id-2088) :start #x8df :end #x929) + (new 'static 'm2v-caption :text-id (text-id text-id-2087) :start #x92a :end #x99c) + (new 'static 'm2v-caption :text-id (text-id text-id-2086) :start #x989 :end #x9c8) + (new 'static 'm2v-caption :text-id (text-id text-id-2085) :start #x9d0 :end #x9f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2083) :start #x9fe :end #xa23) + (new 'static 'm2v-caption :text-id (text-id text-id-2084) :start #xa24 :end #xa7b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4554) :start 1 :end 16) + (new 'static 'm2v-caption :text-id (text-id text-id-4555) :start 17 :end 89) + (new 'static 'm2v-caption :text-id (text-id text-id-4556) :start 90 :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-4557) :start #xc7 :end #xf1) + (new 'static 'm2v-caption :text-id (text-id text-id-4558) :start #xf2 :end #x13a) + (new 'static 'm2v-caption :text-id (text-id text-id-4559) :start #x13b :end #x194) + (new 'static 'm2v-caption :text-id (text-id text-id-4560) :start #x195 :end #x1fd) + (new 'static 'm2v-caption :text-id (text-id text-id-4561) :start #x1fe :end #x249) + (new 'static 'm2v-caption :text-id (text-id text-id-4562) :start #x24a :end #x2a3) + (new 'static 'm2v-caption :text-id (text-id text-id-4563) :start #x2a4 :end #x323) + (new 'static 'm2v-caption :text-id (text-id text-id-4564) :start #x324 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-4565) :start #x372 :end #x3d9) + (new 'static 'm2v-caption :text-id (text-id text-id-4566) :start #x40d :end #x475) + (new 'static 'm2v-caption :text-id (text-id text-id-4567) :start #x476 :end #x4bb) + (new 'static 'm2v-caption :text-id (text-id text-id-4568) :start #x4bc :end #x513) + (new 'static 'm2v-caption :text-id (text-id text-id-4569) :start #x514 :end #x56e) + (new 'static 'm2v-caption :text-id (text-id text-id-4570) :start #x56f :end #x5b4) + (new 'static 'm2v-caption :text-id (text-id text-id-4571) :start #x5b5 :end #x60e) + (new 'static 'm2v-caption :text-id (text-id text-id-4572) :start #x60f :end #x63c) + (new 'static 'm2v-caption :text-id (text-id text-id-4573) :start #x656 :end #x696) + (new 'static 'm2v-caption :text-id (text-id text-id-4574) :start #x697 :end #x6dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4575) :start #x6dd :end #x72b) + (new 'static 'm2v-caption :text-id (text-id text-id-4576) :start #x72c :end #x76b) + (new 'static 'm2v-caption :text-id (text-id text-id-4577) :start #x795 :end #x7df) + (new 'static 'm2v-caption :text-id (text-id text-id-4578) :start #x7e0 :end #x7fb) + (new 'static 'm2v-caption :text-id (text-id text-id-4579) :start #x7fc :end #x82f) + (new 'static 'm2v-caption :text-id (text-id text-id-4580) :start #x830 :end #x847) + (new 'static 'm2v-caption :text-id (text-id text-id-4581) :start #x848 :end #x8cb) + (new 'static 'm2v-caption :text-id (text-id text-id-4582) :start #x8cc :end #x90f) + (new 'static 'm2v-caption :text-id (text-id text-id-4583) :start #x910 :end #x9c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4584) :start #x9c6 :end #x9f4) + (new 'static 'm2v-caption :text-id (text-id text-id-4585) :start #x9f5 :end #xa2b) + (new 'static 'm2v-caption :text-id (text-id text-id-4586) :start #xa2c :end #xa68) + ) + :id #xd78 + :driver #xa + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "urborain" + :sound "32-ur86-boss-race-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3051) :start 5 :end 71) + (new 'static 'm2v-caption :text-id (text-id text-id-3052) :start 72 :end #x9d) + (new 'static 'm2v-caption :text-id (text-id text-id-3054) :start #xa7 :end #x100) + (new 'static 'm2v-caption :text-id (text-id text-id-3055) :start #x101 :end #x14f) + (new 'static 'm2v-caption :text-id (text-id text-id-3056) :start #x150 :end #x1a7) + (new 'static 'm2v-caption :text-id (text-id text-id-3057) :start #x1a8 :end #x201) + (new 'static 'm2v-caption :text-id (text-id text-id-3058) :start #x202 :end #x273) + (new 'static 'm2v-caption :text-id (text-id text-id-3059) :start #x274 :end #x2d0) + (new 'static 'm2v-caption :text-id (text-id text-id-3060) :start #x2d3 :end #x32e) + (new 'static 'm2v-caption :text-id (text-id text-id-3061) :start #x333 :end #x387) + (new 'static 'm2v-caption :text-id (text-id text-id-3062) :start #x3a2 :end #x3ba) + (new 'static 'm2v-caption :text-id (text-id text-id-3063) :start #x3c1 :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3064) :start #x3e8 :end #x410) + (new 'static 'm2v-caption :text-id (text-id text-id-3065) :start #x411 :end #x458) + (new 'static 'm2v-caption :text-id (text-id text-id-3573) :start #x45b :end #x482) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd79 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "urborare" + :sound "32-ur86-boss-race-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3067) :start 3 :end 71) + (new 'static 'm2v-caption :text-id (text-id text-id-3068) :start 72 :end #x74) + (new 'static 'm2v-caption :text-id (text-id text-id-3069) :start #x75 :end #xc1) + (new 'static 'm2v-caption :text-id (text-id text-id-3070) :start #xc8 :end #x11f) + (new 'static 'm2v-caption :text-id (text-id text-id-3071) :start #x120 :end #x17f) + (new 'static 'm2v-caption :text-id (text-id text-id-3072) :start #x180 :end #x1bf) + (new 'static 'm2v-caption :text-id (text-id text-id-3073) :start #x1c6 :end #x1fa) + (new 'static 'm2v-caption :text-id (text-id text-id-3075) :start #x1fb :end #x24a) + (new 'static 'm2v-caption :text-id (text-id text-id-3076) :start #x24b :end #x28d) + (new 'static 'm2v-caption :text-id (text-id text-id-3077) :start #x28e :end #x295) + (new 'static 'm2v-caption :text-id (text-id text-id-3078) :start #x296 :end #x2c1) + (new 'static 'm2v-caption :text-id (text-id text-id-3079) :start #x2c2 :end #x2d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3080) :start #x2d2 :end #x2dc) + (new 'static 'm2v-caption :text-id (text-id text-id-3081) :start #x2dd :end #x2e8) + (new 'static 'm2v-caption :text-id (text-id text-id-3082) :start #x2e9 :end #x2f0) + (new 'static 'm2v-caption :text-id (text-id text-id-3083) :start #x2f1 :end #x32d) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd7a + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jahanoch" + :sound "21-jak-has-no-chance" + :commentary-sound "jahanoch" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2770) :start 18 :end 65) + (new 'static 'm2v-caption :text-id (text-id text-id-2771) :start 66 :end #x9e) + (new 'static 'm2v-caption :text-id (text-id text-id-2772) :start #x9f :end #x11f) + (new 'static 'm2v-caption :text-id (text-id text-id-2773) :start #x120 :end #x188) + (new 'static 'm2v-caption :text-id (text-id text-id-2774) :start #x18f :end #x1f6) + (new 'static 'm2v-caption :text-id (text-id text-id-2775) :start #x1ff :end #x261) + (new 'static 'm2v-caption :text-id (text-id text-id-2776) :start #x262 :end #x2e6) + (new 'static 'm2v-caption :text-id (text-id text-id-2777) :start #x2e8 :end #x32c) + (new 'static 'm2v-caption :text-id (text-id text-id-2778) :start #x333 :end #x348) + (new 'static 'm2v-caption :text-id (text-id text-id-2779) :start #x34d :end #x37a) + (new 'static 'm2v-caption :text-id (text-id text-id-2780) :start #x37c :end #x3ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2781) :start #x3eb :end #x438) + (new 'static 'm2v-caption :text-id (text-id text-id-2782) :start #x439 :end #x476) + (new 'static 'm2v-caption :text-id (text-id text-id-2783) :start #x477 :end #x4d2) + (new 'static 'm2v-caption :text-id (text-id text-id-2784) :start #x4d7 :end #x54b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4399) :start 2 :end 35) + (new 'static 'm2v-caption :text-id (text-id text-id-4400) :start 36 :end #x6f) + (new 'static 'm2v-caption :text-id (text-id text-id-4401) :start #x70 :end #xce) + (new 'static 'm2v-caption :text-id (text-id text-id-4402) :start #xcf :end #x136) + (new 'static 'm2v-caption :text-id (text-id text-id-4403) :start #x137 :end #x190) + (new 'static 'm2v-caption :text-id (text-id text-id-4404) :start #x191 :end #x1d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4405) :start #x1d8 :end #x21a) + (new 'static 'm2v-caption :text-id (text-id text-id-4406) :start #x21b :end #x275) + (new 'static 'm2v-caption :text-id (text-id text-id-4407) :start #x276 :end #x2ad) + (new 'static 'm2v-caption :text-id (text-id text-id-4408) :start #x2ae :end #x2fd) + (new 'static 'm2v-caption :text-id (text-id text-id-4409) :start #x2fe :end #x347) + (new 'static 'm2v-caption :text-id (text-id text-id-4410) :start #x348 :end #x3a8) + (new 'static 'm2v-caption :text-id (text-id text-id-4411) :start #x3a9 :end #x408) + (new 'static 'm2v-caption :text-id (text-id text-id-4412) :start #x42b :end #x477) + (new 'static 'm2v-caption :text-id (text-id text-id-4413) :start #x48b :end #x4e1) + (new 'static 'm2v-caption :text-id (text-id text-id-4414) :start #x4e2 :end #x518) + (new 'static 'm2v-caption :text-id (text-id text-id-4415) :start #x519 :end #x54d) + ) + :id #xd7b + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "kewatora" + :sound "006-keira-wants-to-race" + :commentary-sound "kewatora" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2434) :start 34 :end #x9c) + (new 'static 'm2v-caption :text-id (text-id text-id-2435) :start #xa2 :end #xec) + (new 'static 'm2v-caption :text-id (text-id text-id-2436) :start #xed :end #x15d) + (new 'static 'm2v-caption :text-id (text-id text-id-2437) :start #x160 :end #x18d) + (new 'static 'm2v-caption :text-id (text-id text-id-2438) :start #x18e :end #x1f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2439) :start #x1fc :end #x24f) + (new 'static 'm2v-caption :text-id (text-id text-id-2440) :start #x250 :end #x2b4) + (new 'static 'm2v-caption :text-id (text-id text-id-2441) :start #x2b5 :end #x2d4) + (new 'static 'm2v-caption :text-id (text-id text-id-2442) :start #x2d5 :end #x33f) + (new 'static 'm2v-caption :text-id (text-id text-id-2443) :start #x342 :end #x3a1) + (new 'static 'm2v-caption :text-id (text-id text-id-2444) :start #x3a2 :end #x410) + (new 'static 'm2v-caption :text-id (text-id text-id-2445) :start #x418 :end #x473) + (new 'static 'm2v-caption :text-id (text-id text-id-2446) :start #x47d :end #x4e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2447) :start #x4fc :end #x52a) + (new 'static 'm2v-caption :text-id (text-id text-id-2448) :start #x535 :end #x575) + (new 'static 'm2v-caption :text-id (text-id text-id-2449) :start #x582 :end #x5ce) + (new 'static 'm2v-caption :text-id (text-id text-id-2450) :start #x5d4 :end #x5ec) + (new 'static 'm2v-caption :text-id (text-id text-id-2451) :start #x5f1 :end #x642) + (new 'static 'm2v-caption :text-id (text-id text-id-2452) :start #x643 :end #x6a4) + (new 'static 'm2v-caption :text-id (text-id text-id-2453) :start #x6a5 :end #x70d) + (new 'static 'm2v-caption :text-id (text-id text-id-2454) :start #x70e :end #x731) + (new 'static 'm2v-caption :text-id (text-id text-id-2455) :start #x732 :end #x77c) + (new 'static 'm2v-caption :text-id (text-id text-id-2456) :start #x77d :end #x7ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2457) :start #x7ef :end #x7fc) + (new 'static 'm2v-caption :text-id (text-id text-id-2458) :start #x806 :end #x834) + (new 'static 'm2v-caption :text-id (text-id text-id-2459) :start #x83b :end #x877) + (new 'static 'm2v-caption :text-id (text-id text-id-2460) :start #x87b :end #x89b) + (new 'static 'm2v-caption :text-id (text-id text-id-2461) :start #x89f :end #x8c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2462) :start #x8d2 :end #x8fe) + (new 'static 'm2v-caption :text-id (text-id text-id-2463) :start #x8ff :end #x951) + (new 'static 'm2v-caption :text-id (text-id text-id-2464) :start #x952 :end #x97c) + (new 'static 'm2v-caption :text-id (text-id text-id-2465) :start #x97d :end #x9d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2466) :start #x9de :end #xa4b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4587) :start 1 :end 30) + (new 'static 'm2v-caption :text-id (text-id text-id-4588) :start 32 :end 94) + (new 'static 'm2v-caption :text-id (text-id text-id-4589) :start 95 :end #xe9) + (new 'static 'm2v-caption :text-id (text-id text-id-4590) :start #xea :end #x12e) + (new 'static 'm2v-caption :text-id (text-id text-id-4591) :start #x12f :end #x15e) + (new 'static 'm2v-caption :text-id (text-id text-id-4592) :start #x15f :end #x197) + (new 'static 'm2v-caption :text-id (text-id text-id-4593) :start #x198 :end #x1e6) + (new 'static 'm2v-caption :text-id (text-id text-id-4594) :start #x1e7 :end #x25c) + (new 'static 'm2v-caption :text-id (text-id text-id-4595) :start #x25d :end #x29c) + (new 'static 'm2v-caption :text-id (text-id text-id-4596) :start #x29d :end #x2d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4597) :start #x2d5 :end #x32b) + (new 'static 'm2v-caption :text-id (text-id text-id-4598) :start #x32c :end #x392) + (new 'static 'm2v-caption :text-id (text-id text-id-4599) :start #x393 :end #x3ee) + (new 'static 'm2v-caption :text-id (text-id text-id-4600) :start #x3ef :end #x43e) + (new 'static 'm2v-caption :text-id (text-id text-id-4601) :start #x43f :end #x47e) + (new 'static 'm2v-caption :text-id (text-id text-id-4602) :start #x47f :end #x4d2) + (new 'static 'm2v-caption :text-id (text-id text-id-4603) :start #x4d3 :end #x537) + (new 'static 'm2v-caption :text-id (text-id text-id-4604) :start #x538 :end #x586) + (new 'static 'm2v-caption :text-id (text-id text-id-4605) :start #x587 :end #x5bc) + (new 'static 'm2v-caption :text-id (text-id text-id-4606) :start #x5bd :end #x631) + (new 'static 'm2v-caption :text-id (text-id text-id-4607) :start #x632 :end #x680) + (new 'static 'm2v-caption :text-id (text-id text-id-4608) :start #x681 :end #x6ca) + (new 'static 'm2v-caption :text-id (text-id text-id-4609) :start #x6cb :end #x735) + (new 'static 'm2v-caption :text-id (text-id text-id-4610) :start #x736 :end #x79e) + (new 'static 'm2v-caption :text-id (text-id text-id-4611) :start #x79f :end #x7d8) + (new 'static 'm2v-caption :text-id (text-id text-id-4612) :start #x7d9 :end #x839) + (new 'static 'm2v-caption :text-id (text-id text-id-4613) :start #x83a :end #x8a9) + (new 'static 'm2v-caption :text-id (text-id text-id-4614) :start #x8aa :end #x901) + (new 'static 'm2v-caption :text-id (text-id text-id-4615) :start #x902 :end #x965) + (new 'static 'm2v-caption :text-id (text-id text-id-4616) :start #x966 :end #x9a7) + (new 'static 'm2v-caption :text-id (text-id text-id-4617) :start #x9a8 :end #x9d1) + (new 'static 'm2v-caption :text-id (text-id text-id-4618) :start #x9d2 :end #xa3d) + ) + :id #xd7c + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "klshup" + :sound "38-kleiver-shows-up" + :commentary-sound "klshup" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3084) :start 16 :end 87) + (new 'static 'm2v-caption :text-id (text-id text-id-3085) :start 88 :end #x8e) + (new 'static 'm2v-caption :text-id (text-id text-id-3086) :start #x93 :end #xdf) + (new 'static 'm2v-caption :text-id (text-id text-id-3087) :start #xe6 :end #x13d) + (new 'static 'm2v-caption :text-id (text-id text-id-3088) :start #x13e :end #x1a8) + (new 'static 'm2v-caption :text-id (text-id text-id-3089) :start #x1a9 :end #x1e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3090) :start #x1e3 :end #x212) + (new 'static 'm2v-caption :text-id (text-id text-id-3091) :start #x218 :end #x22f) + (new 'static 'm2v-caption :text-id (text-id text-id-3092) :start #x233 :end #x272) + (new 'static 'm2v-caption :text-id (text-id text-id-3093) :start #x273 :end #x2a4) + (new 'static 'm2v-caption :text-id (text-id text-id-3094) :start #x2a6 :end #x2c9) + (new 'static 'm2v-caption :text-id (text-id text-id-3095) :start #x2ca :end #x318) + (new 'static 'm2v-caption :text-id (text-id text-id-3096) :start #x319 :end #x380) + (new 'static 'm2v-caption :text-id (text-id text-id-3097) :start #x383 :end #x3d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3098) :start #x3d2 :end #x3f9) + (new 'static 'm2v-caption :text-id (text-id text-id-3099) :start #x402 :end #x433) + (new 'static 'm2v-caption :text-id (text-id text-id-3100) :start #x434 :end #x474) + (new 'static 'm2v-caption :text-id (text-id text-id-3101) :start #x475 :end #x4b4) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4449) :start 27 :end #x7c) + (new 'static 'm2v-caption :text-id (text-id text-id-4450) :start #x7d :end #xe1) + (new 'static 'm2v-caption :text-id (text-id text-id-4451) :start #xe2 :end #x13b) + (new 'static 'm2v-caption :text-id (text-id text-id-4452) :start #x13c :end #x199) + (new 'static 'm2v-caption :text-id (text-id text-id-4453) :start #x19a :end #x1e0) + (new 'static 'm2v-caption :text-id (text-id text-id-4454) :start #x1ee :end #x27d) + (new 'static 'm2v-caption :text-id (text-id text-id-4455) :start #x27e :end #x2da) + (new 'static 'm2v-caption :text-id (text-id text-id-4456) :start #x2db :end #x32f) + (new 'static 'm2v-caption :text-id (text-id text-id-4457) :start #x330 :end #x35f) + (new 'static 'm2v-caption :text-id (text-id text-id-4458) :start #x360 :end #x3a1) + (new 'static 'm2v-caption :text-id (text-id text-id-4459) :start #x3a2 :end #x40d) + (new 'static 'm2v-caption :text-id (text-id text-id-4460) :start #x40e :end #x46d) + (new 'static 'm2v-caption :text-id (text-id text-id-4461) :start #x46e :end #x4ba) + ) + :id #xd7d + :driver #x3 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "klbubash" + :sound "62-kleiver-bush-bash" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2127) :start 43 :end #x7a) + (new 'static 'm2v-caption :text-id (text-id text-id-2126) :start #x7b :end #xd9) + (new 'static 'm2v-caption :text-id (text-id text-id-2266) :start #xe1 :end #x141) + (new 'static 'm2v-caption :text-id (text-id text-id-2124) :start #x142 :end #x178) + (new 'static 'm2v-caption :text-id (text-id text-id-2123) :start #x17c :end #x1ca) + (new 'static 'm2v-caption :text-id (text-id text-id-2122) :start #x1cb :end #x238) + (new 'static 'm2v-caption :text-id (text-id text-id-2121) :start #x239 :end #x257) + (new 'static 'm2v-caption :text-id (text-id text-id-2120) :start #x25b :end #x2ac) + (new 'static 'm2v-caption :text-id (text-id text-id-2119) :start #x2c8 :end #x2f2) + (new 'static 'm2v-caption :text-id (text-id text-id-2118) :start #x2f3 :end #x324) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd7e + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blspbig" + :sound "18-blitz-sport-big" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2756) :start 18 :end 71) + (new 'static 'm2v-caption :text-id (text-id text-id-2757) :start 72 :end #x82) + (new 'static 'm2v-caption :text-id (text-id text-id-2758) :start #x83 :end #xd3) + (new 'static 'm2v-caption :text-id (text-id text-id-2759) :start #xd4 :end #x10e) + (new 'static 'm2v-caption :text-id (text-id text-id-2760) :start #x110 :end #x158) + (new 'static 'm2v-caption :text-id (text-id text-id-2761) :start #x159 :end #x19d) + (new 'static 'm2v-caption :text-id (text-id text-id-2762) :start #x19e :end #x218) + (new 'static 'm2v-caption :text-id (text-id text-id-2763) :start #x219 :end #x269) + (new 'static 'm2v-caption :text-id (text-id text-id-2764) :start #x27d :end #x2c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2765) :start #x2ca :end #x2f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2766) :start #x302 :end #x346) + (new 'static 'm2v-caption :text-id (text-id text-id-2767) :start #x34a :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-2768) :start #x371 :end #x38c) + (new 'static 'm2v-caption :text-id (text-id text-id-2769) :start #x394 :end #x3f8) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd7f + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "jaraonsh" + :sound "33-jak-razer-on-show" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2938) :start 13 :end #xa8) + (new 'static 'm2v-caption :text-id (text-id text-id-2939) :start #xa9 :end #xc3) + (new 'static 'm2v-caption :text-id (text-id text-id-2940) :start #xc4 :end #x100) + (new 'static 'm2v-caption :text-id (text-id text-id-2941) :start #x101 :end #x13a) + (new 'static 'm2v-caption :text-id (text-id text-id-2942) :start #x13b :end #x1cd) + (new 'static 'm2v-caption :text-id (text-id text-id-2943) :start #x1ce :end #x236) + (new 'static 'm2v-caption :text-id (text-id text-id-2944) :start #x237 :end #x2bd) + (new 'static 'm2v-caption :text-id (text-id text-id-2945) :start #x2c1 :end #x32a) + (new 'static 'm2v-caption :text-id (text-id text-id-2946) :start #x32b :end #x35f) + (new 'static 'm2v-caption :text-id (text-id text-id-2947) :start #x360 :end #x3ca) + (new 'static 'm2v-caption :text-id (text-id text-id-2948) :start #x3cb :end #x3f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2949) :start #x3fc :end #x445) + (new 'static 'm2v-caption :text-id (text-id text-id-2950) :start #x446 :end #x4a1) + (new 'static 'm2v-caption :text-id (text-id text-id-2951) :start #x4a2 :end #x4d1) + (new 'static 'm2v-caption :text-id (text-id text-id-2952) :start #x4d2 :end #x4dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2953) :start #x50c :end #x559) + (new 'static 'm2v-caption :text-id (text-id text-id-2954) :start #x563 :end #x5cc) + (new 'static 'm2v-caption :text-id (text-id text-id-2955) :start #x5d0 :end #x60a) + (new 'static 'm2v-caption :text-id (text-id text-id-2956) :start #x60b :end #x640) + (new 'static 'm2v-caption :text-id (text-id text-id-2957) :start #x645 :end #x66c) + (new 'static 'm2v-caption :text-id (text-id text-id-2958) :start #x66d :end #x6c2) + (new 'static 'm2v-caption :text-id (text-id text-id-2959) :start #x6c3 :end #x726) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd80 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "jubainha" + :sound "005-jungle-back-in-haven" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2908) :start 15 :end #x6e) + (new 'static 'm2v-caption :text-id (text-id text-id-2909) :start #x6f :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-2910) :start #xc7 :end #x130) + (new 'static 'm2v-caption :text-id (text-id text-id-2911) :start #x131 :end #x175) + (new 'static 'm2v-caption :text-id (text-id text-id-2912) :start #x176 :end #x1c1) + (new 'static 'm2v-caption :text-id (text-id text-id-2913) :start #x1c2 :end #x1f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2914) :start #x1f6 :end #x269) + (new 'static 'm2v-caption :text-id (text-id text-id-2915) :start #x26a :end #x2c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2916) :start #x2c4 :end #x32f) + (new 'static 'm2v-caption :text-id (text-id text-id-2917) :start #x34b :end #x392) + (new 'static 'm2v-caption :text-id (text-id text-id-2918) :start #x39d :end #x3c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2919) :start #x3c3 :end #x3f0) + (new 'static 'm2v-caption :text-id (text-id text-id-2920) :start #x3fd :end #x411) + (new 'static 'm2v-caption :text-id (text-id text-id-2921) :start #x421 :end #x468) + (new 'static 'm2v-caption :text-id (text-id text-id-2922) :start #x469 :end #x4c2) + (new 'static 'm2v-caption :text-id (text-id text-id-2923) :start #x4ca :end #x532) + (new 'static 'm2v-caption :text-id (text-id text-id-2924) :start #x538 :end #x55b) + (new 'static 'm2v-caption :text-id (text-id text-id-2925) :start #x560 :end #x5a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2926) :start #x5b2 :end #x5ee) + (new 'static 'm2v-caption :text-id (text-id text-id-2927) :start #x5ef :end #x602) + (new 'static 'm2v-caption :text-id (text-id text-id-2928) :start #x603 :end #x62b) + (new 'static 'm2v-caption :text-id (text-id text-id-2929) :start #x635 :end #x655) + (new 'static 'm2v-caption :text-id (text-id text-id-2930) :start #x656 :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2931) :start #x683 :end #x6d6) + (new 'static 'm2v-caption :text-id (text-id text-id-2932) :start #x6e4 :end #x71b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd81 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "dawajob" + :sound "52-daxter-wax-job" + :commentary-sound "dawajob" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2820) :start 68 :end #x86) + (new 'static 'm2v-caption :text-id (text-id text-id-2821) :start #x87 :end #xf5) + (new 'static 'm2v-caption :text-id (text-id text-id-2822) :start #x101 :end #x14e) + (new 'static 'm2v-caption :text-id (text-id text-id-2823) :start #x166 :end #x1aa) + (new 'static 'm2v-caption :text-id (text-id text-id-2824) :start #x1c0 :end #x211) + (new 'static 'm2v-caption :text-id (text-id text-id-2825) :start #x212 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-2826) :start #x26c :end #x2c7) + (new 'static 'm2v-caption :text-id (text-id text-id-2827) :start #x2c8 :end #x307) + (new 'static 'm2v-caption :text-id (text-id text-id-2828) :start #x30c :end #x338) + (new 'static 'm2v-caption :text-id (text-id text-id-2829) :start #x340 :end #x38b) + (new 'static 'm2v-caption :text-id (text-id text-id-2830) :start #x38c :end #x40a) + (new 'static 'm2v-caption :text-id (text-id text-id-2831) :start #x40b :end #x445) + (new 'static 'm2v-caption :text-id (text-id text-id-2832) :start #x446 :end #x493) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4383) :start 1 :end 22) + (new 'static 'm2v-caption :text-id (text-id text-id-4384) :start 23 :end 87) + (new 'static 'm2v-caption :text-id (text-id text-id-4385) :start 88 :end #x8f) + (new 'static 'm2v-caption :text-id (text-id text-id-4386) :start #x90 :end #xd1) + (new 'static 'm2v-caption :text-id (text-id text-id-4387) :start #xd2 :end #xfb) + (new 'static 'm2v-caption :text-id (text-id text-id-4388) :start #xfc :end #x14b) + (new 'static 'm2v-caption :text-id (text-id text-id-4389) :start #x14c :end #x19c) + (new 'static 'm2v-caption :text-id (text-id text-id-4390) :start #x19d :end #x1d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4391) :start #x1d8 :end #x21d) + (new 'static 'm2v-caption :text-id (text-id text-id-4392) :start #x21e :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-4393) :start #x267 :end #x295) + (new 'static 'm2v-caption :text-id (text-id text-id-4394) :start #x296 :end #x2db) + (new 'static 'm2v-caption :text-id (text-id text-id-4395) :start #x2dc :end #x31c) + (new 'static 'm2v-caption :text-id (text-id text-id-4396) :start #x31d :end #x3af) + (new 'static 'm2v-caption :text-id (text-id text-id-4397) :start #x3b0 :end #x434) + (new 'static 'm2v-caption :text-id (text-id text-id-4398) :start #x435 :end #x46d) + ) + :id #xd82 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "klborain" + :sound "80-klever-boss-race-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3162) :start 12 :end #x65) + (new 'static 'm2v-caption :text-id (text-id text-id-3163) :start #x66 :end #xe1) + (new 'static 'm2v-caption :text-id (text-id text-id-3164) :start #xe2 :end #x155) + (new 'static 'm2v-caption :text-id (text-id text-id-3165) :start #x15a :end #x1be) + (new 'static 'm2v-caption :text-id (text-id text-id-3166) :start #x1bf :end #x1f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3167) :start #x1f7 :end #x239) + (new 'static 'm2v-caption :text-id (text-id text-id-3168) :start #x23a :end #x26e) + (new 'static 'm2v-caption :text-id (text-id text-id-3169) :start #x276 :end #x2b2) + (new 'static 'm2v-caption :text-id (text-id text-id-3170) :start #x2b3 :end #x2de) + (new 'static 'm2v-caption :text-id (text-id text-id-3171) :start #x2e5 :end #x313) + (new 'static 'm2v-caption :text-id (text-id text-id-3172) :start #x314 :end #x363) + (new 'static 'm2v-caption :text-id (text-id text-id-3173) :start #x364 :end #x3c6) + (new 'static 'm2v-caption :text-id (text-id text-id-3174) :start #x3cd :end #x3f5) + (new 'static 'm2v-caption :text-id (text-id text-id-3175) :start #x3f6 :end #x436) + (new 'static 'm2v-caption :text-id (text-id text-id-3176) :start #x437 :end #x45d) + (new 'static 'm2v-caption :text-id (text-id text-id-3177) :start #x45e :end #x4b9) + (new 'static 'm2v-caption :text-id (text-id text-id-3178) :start #x4bd :end #x4ee) + (new 'static 'm2v-caption :text-id (text-id text-id-3179) :start #x4ef :end #x525) + (new 'static 'm2v-caption :text-id (text-id text-id-3180) :start #x526 :end #x586) + (new 'static 'm2v-caption :text-id (text-id text-id-3181) :start #x587 :end #x5e1) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd83 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "klborace" + :sound "80-klever-boss-race-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2314) :start 15 :end #x68) + (new 'static 'm2v-caption :text-id (text-id text-id-2315) :start #x69 :end #xb1) + (new 'static 'm2v-caption :text-id (text-id text-id-2316) :start #xb2 :end #xed) + (new 'static 'm2v-caption :text-id (text-id text-id-2317) :start #xee :end #x11e) + (new 'static 'm2v-caption :text-id (text-id text-id-2318) :start #x11f :end #x133) + (new 'static 'm2v-caption :text-id (text-id text-id-2319) :start #x139 :end #x19a) + (new 'static 'm2v-caption :text-id (text-id text-id-2320) :start #x19c :end #x1fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2321) :start #x1ff :end #x223) + (new 'static 'm2v-caption :text-id (text-id text-id-2322) :start #x224 :end #x27d) + (new 'static 'm2v-caption :text-id (text-id text-id-2323) :start #x27e :end #x2de) + (new 'static 'm2v-caption :text-id (text-id text-id-2324) :start #x2df :end #x30d) + (new 'static 'm2v-caption :text-id (text-id text-id-2325) :start #x30e :end #x34b) + (new 'static 'm2v-caption :text-id (text-id text-id-2326) :start #x34c :end #x370) + (new 'static 'm2v-caption :text-id (text-id text-id-2327) :start #x371 :end #x3b7) + (new 'static 'm2v-caption :text-id (text-id text-id-2328) :start #x3be :end #x406) + (new 'static 'm2v-caption :text-id (text-id text-id-2329) :start #x407 :end #x461) + (new 'static 'm2v-caption :text-id (text-id text-id-2330) :start #x46f :end #x4d7) + (new 'static 'm2v-caption :text-id (text-id text-id-2331) :start #x4db :end #x516) + (new 'static 'm2v-caption :text-id (text-id text-id-2332) :start #x517 :end #x596) + (new 'static 'm2v-caption :text-id (text-id text-id-2333) :start #x5a6 :end #x63a) + (new 'static 'm2v-caption :text-id (text-id text-id-2334) :start #x5dd :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2335) :start #x683 :end #x6b5) + (new 'static 'm2v-caption :text-id (text-id text-id-2336) :start #x6b6 :end #x743) + (new 'static 'm2v-caption :text-id (text-id text-id-2337) :start #x749 :end #x76d) + (new 'static 'm2v-caption :text-id (text-id text-id-2338) :start #x774 :end #x7a5) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd84 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blfadied" + :sound "47-blitzs-father-died" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2785) :start 11 :end 47) + (new 'static 'm2v-caption :text-id (text-id text-id-2786) :start 48 :end #x80) + (new 'static 'm2v-caption :text-id (text-id text-id-2787) :start #x84 :end #x118) + (new 'static 'm2v-caption :text-id (text-id text-id-2788) :start #x12f :end #x17f) + (new 'static 'm2v-caption :text-id (text-id text-id-2789) :start #x180 :end #x1d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2790) :start #x1d4 :end #x21e) + (new 'static 'm2v-caption :text-id (text-id text-id-2791) :start #x21f :end #x259) + (new 'static 'm2v-caption :text-id (text-id text-id-2792) :start #x261 :end #x290) + (new 'static 'm2v-caption :text-id (text-id text-id-2793) :start #x299 :end #x2d9) + (new 'static 'm2v-caption :text-id (text-id text-id-2794) :start #x2e3 :end #x322) + (new 'static 'm2v-caption :text-id (text-id text-id-2795) :start #x323 :end #x386) + (new 'static 'm2v-caption :text-id (text-id text-id-2796) :start #x387 :end #x3c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2797) :start #x3c6 :end #x3ff) + (new 'static 'm2v-caption :text-id (text-id text-id-2798) :start #x400 :end #x451) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd85 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "krdiary" + :sound "84-krews-diary" + :commentary-sound "krdiary" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3116) :start 61 :end #x91) + (new 'static 'm2v-caption :text-id (text-id text-id-3117) :start #x92 :end #xd5) + (new 'static 'm2v-caption :text-id (text-id text-id-3118) :start #xd6 :end #xfb) + (new 'static 'm2v-caption :text-id (text-id text-id-3119) :start #xfc :end #x126) + (new 'static 'm2v-caption :text-id (text-id text-id-3120) :start #x12e :end #x141) + (new 'static 'm2v-caption :text-id (text-id text-id-3121) :start #x16d :end #x1a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3122) :start #x1a4 :end #x1e1) + (new 'static 'm2v-caption :text-id (text-id text-id-3123) :start #x1e2 :end #x222) + (new 'static 'm2v-caption :text-id (text-id text-id-3124) :start #x223 :end #x278) + (new 'static 'm2v-caption :text-id (text-id text-id-3125) :start #x279 :end #x2cb) + (new 'static 'm2v-caption :text-id (text-id text-id-3126) :start #x2cc :end #x311) + (new 'static 'm2v-caption :text-id (text-id text-id-3127) :start #x312 :end #x377) + (new 'static 'm2v-caption :text-id (text-id text-id-3128) :start #x378 :end #x3d6) + (new 'static 'm2v-caption :text-id (text-id text-id-3129) :start #x3d7 :end #x434) + (new 'static 'm2v-caption :text-id (text-id text-id-3130) :start #x448 :end #x493) + (new 'static 'm2v-caption :text-id (text-id text-id-3131) :start #x49c :end #x4f7) + (new 'static 'm2v-caption :text-id (text-id text-id-3132) :start #x4ff :end #x54e) + (new 'static 'm2v-caption :text-id (text-id text-id-3133) :start #x54f :end #x5ad) + (new 'static 'm2v-caption :text-id (text-id text-id-3134) :start #x5b1 :end #x5fb) + (new 'static 'm2v-caption :text-id (text-id text-id-3135) :start #x5fc :end #x648) + (new 'static 'm2v-caption :text-id (text-id text-id-3136) :start #x657 :end #x675) + (new 'static 'm2v-caption :text-id (text-id text-id-3137) :start #x686 :end #x6aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3138) :start #x6ba :end #x6e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3139) :start #x6e3 :end #x719) + (new 'static 'm2v-caption :text-id (text-id text-id-3140) :start #x71b :end #x758) + (new 'static 'm2v-caption :text-id (text-id text-id-3141) :start #x75d :end #x77d) + (new 'static 'm2v-caption :text-id (text-id text-id-3142) :start #x77e :end #x7b9) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4494) :start 15 :end 40) + (new 'static 'm2v-caption :text-id (text-id text-id-4495) :start 41 :end #x9f) + (new 'static 'm2v-caption :text-id (text-id text-id-4496) :start #xa0 :end #x118) + (new 'static 'm2v-caption :text-id (text-id text-id-4497) :start #x119 :end #x15f) + (new 'static 'm2v-caption :text-id (text-id text-id-4498) :start #x160 :end #x1c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4499) :start #x1c8 :end #x218) + (new 'static 'm2v-caption :text-id (text-id text-id-4516) :start #x219 :end #x286) + (new 'static 'm2v-caption :text-id (text-id text-id-4501) :start #x287 :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-4502) :start #x2f5 :end #x340) + (new 'static 'm2v-caption :text-id (text-id text-id-4503) :start #x341 :end #x39c) + (new 'static 'm2v-caption :text-id (text-id text-id-4504) :start #x39d :end #x405) + (new 'static 'm2v-caption :text-id (text-id text-id-4505) :start #x406 :end #x44a) + (new 'static 'm2v-caption :text-id (text-id text-id-4506) :start #x44b :end #x48e) + (new 'static 'm2v-caption :text-id (text-id text-id-4507) :start #x48f :end #x4c9) + (new 'static 'm2v-caption :text-id (text-id text-id-4508) :start #x4ca :end #x51d) + (new 'static 'm2v-caption :text-id (text-id text-id-4510) :start #x51e :end #x561) + (new 'static 'm2v-caption :text-id (text-id text-id-4509) :start #x562 :end #x5d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4511) :start #x5d5 :end #x66d) + (new 'static 'm2v-caption :text-id (text-id text-id-4512) :start #x66e :end #x69f) + (new 'static 'm2v-caption :text-id (text-id text-id-4513) :start #x6a0 :end #x6d5) + (new 'static 'm2v-caption :text-id (text-id text-id-4514) :start #x702 :end #x71d) + (new 'static 'm2v-caption :text-id (text-id text-id-4515) :start #x71e :end #x751) + (new 'static 'm2v-caption :text-id (text-id text-id-4517) :start #x752 :end #x7b2) + ) + :id #xd86 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jacoraze" + :sound "104-jak-confronts-razer" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3803) :start 20 :end #x8d) + (new 'static 'm2v-caption :text-id (text-id text-id-3804) :start #x8e :end #xb4) + (new 'static 'm2v-caption :text-id (text-id text-id-3805) :start #xb5 :end #xf5) + (new 'static 'm2v-caption :text-id (text-id text-id-3806) :start #xfa :end #x158) + (new 'static 'm2v-caption :text-id (text-id text-id-3807) :start #x15a :end #x182) + (new 'static 'm2v-caption :text-id (text-id text-id-3808) :start #x183 :end #x1ba) + (new 'static 'm2v-caption :text-id (text-id text-id-3809) :start #x1bc :end #x1e5) + (new 'static 'm2v-caption :text-id (text-id text-id-3810) :start #x1e6 :end #x221) + (new 'static 'm2v-caption :text-id (text-id text-id-3811) :start #x222 :end #x267) + (new 'static 'm2v-caption :text-id (text-id text-id-3812) :start #x268 :end #x292) + (new 'static 'm2v-caption :text-id (text-id text-id-3813) :start #x293 :end #x2c5) + (new 'static 'm2v-caption :text-id (text-id text-id-3814) :start #x2c6 :end #x301) + (new 'static 'm2v-caption :text-id (text-id text-id-3815) :start #x302 :end #x343) + (new 'static 'm2v-caption :text-id (text-id text-id-3816) :start #x347 :end #x3a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3817) :start #x3a4 :end #x3fb) + (new 'static 'm2v-caption :text-id (text-id text-id-3818) :start #x3fc :end #x466) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd87 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "cawetrmi" + :sound "100-can-we-trust-mizo" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3590) :start 33 :end 98) + (new 'static 'm2v-caption :text-id (text-id text-id-3591) :start 99 :end #xaf) + (new 'static 'm2v-caption :text-id (text-id text-id-3592) :start #xb0 :end #x107) + (new 'static 'm2v-caption :text-id (text-id text-id-3593) :start #x10e :end #x123) + (new 'static 'm2v-caption :text-id (text-id text-id-3594) :start #x124 :end #x169) + (new 'static 'm2v-caption :text-id (text-id text-id-3595) :start #x171 :end #x1a9) + (new 'static 'm2v-caption :text-id (text-id text-id-3596) :start #x1aa :end #x1f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3597) :start #x1f7 :end #x22f) + (new 'static 'm2v-caption :text-id (text-id text-id-3598) :start #x23a :end #x295) + (new 'static 'm2v-caption :text-id (text-id text-id-3599) :start #x296 :end #x2b7) + (new 'static 'm2v-caption :text-id (text-id text-id-3600) :start #x2b8 :end #x30b) + (new 'static 'm2v-caption :text-id (text-id text-id-3601) :start #x30c :end #x33e) + (new 'static 'm2v-caption :text-id (text-id text-id-3602) :start #x33f :end #x387) + (new 'static 'm2v-caption :text-id (text-id text-id-3603) :start #x38f :end #x3e1) + (new 'static 'm2v-caption :text-id (text-id text-id-3604) :start #x3e2 :end #x40b) + (new 'static 'm2v-caption :text-id (text-id text-id-3605) :start #x40d :end #x42b) + (new 'static 'm2v-caption :text-id (text-id text-id-3606) :start #x42c :end #x45e) + (new 'static 'm2v-caption :text-id (text-id text-id-3607) :start #x45f :end #x484) + (new 'static 'm2v-caption :text-id (text-id text-id-3608) :start #x485 :end #x4b8) + (new 'static 'm2v-caption :text-id (text-id text-id-3609) :start #x4b9 :end #x4e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3610) :start #x4ea :end #x515) + (new 'static 'm2v-caption :text-id (text-id text-id-3611) :start #x516 :end #x545) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd88 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "pehainfo" + :sound "114-pecker-has-info" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3490) :start 30 :end 77) + (new 'static 'm2v-caption :text-id (text-id text-id-3491) :start 82 :end #x9e) + (new 'static 'm2v-caption :text-id (text-id text-id-3492) :start #x9f :end #xe7) + (new 'static 'm2v-caption :text-id (text-id text-id-3494) :start #xe8 :end #x148) + (new 'static 'm2v-caption :text-id (text-id text-id-3495) :start #x14b :end #x177) + (new 'static 'm2v-caption :text-id (text-id text-id-3496) :start #x17b :end #x1d3) + (new 'static 'm2v-caption :text-id (text-id text-id-3497) :start #x1d4 :end #x232) + (new 'static 'm2v-caption :text-id (text-id text-id-3498) :start #x233 :end #x265) + (new 'static 'm2v-caption :text-id (text-id text-id-3499) :start #x266 :end #x2a7) + (new 'static 'm2v-caption :text-id (text-id text-id-3500) :start #x2af :end #x309) + (new 'static 'm2v-caption :text-id (text-id text-id-3501) :start #x313 :end #x33d) + (new 'static 'm2v-caption :text-id (text-id text-id-3502) :start #x33e :end #x367) + (new 'static 'm2v-caption :text-id (text-id text-id-3503) :start #x368 :end #x39a) + (new 'static 'm2v-caption :text-id (text-id text-id-3504) :start #x39f :end #x3f9) + (new 'static 'm2v-caption :text-id (text-id text-id-3505) :start #x3fa :end #x436) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd89 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "ragenast" + :sound "125-razer-gets-nasty" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3506) :start 22 :end 67) + (new 'static 'm2v-caption :text-id (text-id text-id-3507) :start 73 :end 92) + (new 'static 'm2v-caption :text-id (text-id text-id-3508) :start 96 :end #x71) + (new 'static 'm2v-caption :text-id (text-id text-id-3509) :start #x76 :end #x82) + (new 'static 'm2v-caption :text-id (text-id text-id-3510) :start #x88 :end #xab) + (new 'static 'm2v-caption :text-id (text-id text-id-3511) :start #xb3 :end #xc3) + (new 'static 'm2v-caption :text-id (text-id text-id-3512) :start #xca :end #xff) + (new 'static 'm2v-caption :text-id (text-id text-id-3513) :start #x107 :end #x12b) + (new 'static 'm2v-caption :text-id (text-id text-id-3514) :start #x12c :end #x17b) + (new 'static 'm2v-caption :text-id (text-id text-id-3515) :start #x18e :end #x1d3) + (new 'static 'm2v-caption :text-id (text-id text-id-3516) :start #x1d4 :end #x228) + (new 'static 'm2v-caption :text-id (text-id text-id-3517) :start #x229 :end #x265) + (new 'static 'm2v-caption :text-id (text-id text-id-3518) :start #x26a :end #x298) + (new 'static 'm2v-caption :text-id (text-id text-id-3519) :start #x2a0 :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3520) :start #x2f5 :end #x337) + (new 'static 'm2v-caption :text-id (text-id text-id-3521) :start #x338 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-3522) :start #x36e :end #x3bc) + (new 'static 'm2v-caption :text-id (text-id text-id-3523) :start #x3bd :end #x41a) + (new 'static 'm2v-caption :text-id (text-id text-id-3524) :start #x41b :end #x44c) + (new 'static 'm2v-caption :text-id (text-id text-id-3525) :start #x44d :end #x47f) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd8a + :driver #x2 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jaberazo" + :sound "130-jak-beats-razer-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3144) :start 22 :end #x7e) + (new 'static 'm2v-caption :text-id (text-id text-id-3145) :start #x82 :end #x95) + (new 'static 'm2v-caption :text-id (text-id text-id-3146) :start #x9c :end #xd2) + (new 'static 'm2v-caption :text-id (text-id text-id-3147) :start #xd3 :end #x126) + (new 'static 'm2v-caption :text-id (text-id text-id-3790) :start #x127 :end #x16b) + (new 'static 'm2v-caption :text-id (text-id text-id-3149) :start #x16e :end #x19b) + (new 'static 'm2v-caption :text-id (text-id text-id-3150) :start #x19c :end #x1c1) + (new 'static 'm2v-caption :text-id (text-id text-id-3151) :start #x1c4 :end #x20b) + (new 'static 'm2v-caption :text-id (text-id text-id-3152) :start #x20c :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-3153) :start #x243 :end #x28c) + (new 'static 'm2v-caption :text-id (text-id text-id-3154) :start #x28d :end #x2f0) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd8b + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "miofdeal" + :sound "130-mizo-offers-deal-intro" + :commentary-sound "miofdeal" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2799) :start 23 :end 78) + (new 'static 'm2v-caption :text-id (text-id text-id-2800) :start 86 :end #x92) + (new 'static 'm2v-caption :text-id (text-id text-id-2801) :start #x9b :end #xd9) + (new 'static 'm2v-caption :text-id (text-id text-id-2802) :start #xda :end #x12a) + (new 'static 'm2v-caption :text-id (text-id text-id-2803) :start #x13a :end #x186) + (new 'static 'm2v-caption :text-id (text-id text-id-2804) :start #x187 :end #x1e4) + (new 'static 'm2v-caption :text-id (text-id text-id-2805) :start #x1e5 :end #x285) + (new 'static 'm2v-caption :text-id (text-id text-id-2806) :start #x28f :end #x2e8) + (new 'static 'm2v-caption :text-id (text-id text-id-2807) :start #x2fc :end #x32d) + (new 'static 'm2v-caption :text-id (text-id text-id-2808) :start #x32e :end #x399) + (new 'static 'm2v-caption :text-id (text-id text-id-2809) :start #x39a :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-2810) :start #x3e8 :end #x47b) + (new 'static 'm2v-caption :text-id (text-id text-id-2811) :start #x47c :end #x4cc) + (new 'static 'm2v-caption :text-id (text-id text-id-2812) :start #x4e8 :end #x535) + (new 'static 'm2v-caption :text-id (text-id text-id-2813) :start #x547 :end #x565) + (new 'static 'm2v-caption :text-id (text-id text-id-2814) :start #x566 :end #x5d0) + (new 'static 'm2v-caption :text-id (text-id text-id-2815) :start #x5d1 :end #x609) + (new 'static 'm2v-caption :text-id (text-id text-id-2816) :start #x60a :end #x657) + (new 'static 'm2v-caption :text-id (text-id text-id-2817) :start #x658 :end #x6a7) + (new 'static 'm2v-caption :text-id (text-id text-id-2818) :start #x6a8 :end #x6f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2819) :start #x72b :end #x76d) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4348) :start 10 :end 30) + (new 'static 'm2v-caption :text-id (text-id text-id-4349) :start 50 :end #x7a) + (new 'static 'm2v-caption :text-id (text-id text-id-4350) :start #x96 :end #xf7) + (new 'static 'm2v-caption :text-id (text-id text-id-4351) :start #xf8 :end #x169) + (new 'static 'm2v-caption :text-id (text-id text-id-4352) :start #x16a :end #x1b6) + (new 'static 'm2v-caption :text-id (text-id text-id-4353) :start #x1b7 :end #x200) + (new 'static 'm2v-caption :text-id (text-id text-id-4354) :start #x201 :end #x263) + (new 'static 'm2v-caption :text-id (text-id text-id-4355) :start #x264 :end #x29a) + (new 'static 'm2v-caption :text-id (text-id text-id-4356) :start #x2d0 :end #x2ff) + (new 'static 'm2v-caption :text-id (text-id text-id-4357) :start #x300 :end #x355) + (new 'static 'm2v-caption :text-id (text-id text-id-4358) :start #x356 :end #x393) + (new 'static 'm2v-caption :text-id (text-id text-id-4359) :start #x394 :end #x3f7) + (new 'static 'm2v-caption :text-id (text-id text-id-4360) :start #x3f8 :end #x448) + (new 'static 'm2v-caption :text-id (text-id text-id-4361) :start #x449 :end #x4de) + (new 'static 'm2v-caption :text-id (text-id text-id-4362) :start #x4df :end #x53d) + (new 'static 'm2v-caption :text-id (text-id text-id-4363) :start #x53e :end #x59c) + (new 'static 'm2v-caption :text-id (text-id text-id-4364) :start #x59d :end #x5d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4365) :start #x5d8 :end #x62f) + (new 'static 'm2v-caption :text-id (text-id text-id-4366) :start #x630 :end #x6b1) + (new 'static 'm2v-caption :text-id (text-id text-id-4367) :start #x6b2 :end #x6dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4368) :start #x6dd :end #x6f7) + (new 'static 'm2v-caption :text-id (text-id text-id-4369) :start #x6f8 :end #x74d) + ) + :id #xd8c + :driver #xd + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blfakill" + :sound "139-blitz-father-killed" + :commentary-sound "blfakill" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3554) :start 75 :end #x77) + (new 'static 'm2v-caption :text-id (text-id text-id-3555) :start #x7c :end #xc4) + (new 'static 'm2v-caption :text-id (text-id text-id-3556) :start #xc5 :end #xea) + (new 'static 'm2v-caption :text-id (text-id text-id-3557) :start #xeb :end #x140) + (new 'static 'm2v-caption :text-id (text-id text-id-3558) :start #x143 :end #x17c) + (new 'static 'm2v-caption :text-id (text-id text-id-3559) :start #x17e :end #x195) + (new 'static 'm2v-caption :text-id (text-id text-id-3560) :start #x196 :end #x1fd) + (new 'static 'm2v-caption :text-id (text-id text-id-3561) :start #x202 :end #x23b) + (new 'static 'm2v-caption :text-id (text-id text-id-3562) :start #x23c :end #x259) + (new 'static 'm2v-caption :text-id (text-id text-id-3563) :start #x25a :end #x290) + (new 'static 'm2v-caption :text-id (text-id text-id-3564) :start #x299 :end #x2ca) + (new 'static 'm2v-caption :text-id (text-id text-id-3565) :start #x2cb :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3566) :start #x2f5 :end #x358) + (new 'static 'm2v-caption :text-id (text-id text-id-3567) :start #x359 :end #x3aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3568) :start #x3b4 :end #x3f0) + (new 'static 'm2v-caption :text-id (text-id text-id-3569) :start #x3f6 :end #x414) + (new 'static 'm2v-caption :text-id (text-id text-id-3570) :start #x415 :end #x454) + (new 'static 'm2v-caption :text-id (text-id text-id-3571) :start #x455 :end #x496) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4518) :start 1 :end 23) + (new 'static 'm2v-caption :text-id (text-id text-id-4519) :start 25 :end 93) + (new 'static 'm2v-caption :text-id (text-id text-id-4520) :start 94 :end #x9b) + (new 'static 'm2v-caption :text-id (text-id text-id-4521) :start #x9c :end #xd3) + (new 'static 'm2v-caption :text-id (text-id text-id-4522) :start #xd4 :end #x12f) + (new 'static 'm2v-caption :text-id (text-id text-id-4523) :start #x130 :end #x15f) + (new 'static 'm2v-caption :text-id (text-id text-id-4524) :start #x160 :end #x1bf) + (new 'static 'm2v-caption :text-id (text-id text-id-4525) :start #x1c0 :end #x223) + (new 'static 'm2v-caption :text-id (text-id text-id-4526) :start #x224 :end #x266) + (new 'static 'm2v-caption :text-id (text-id text-id-4527) :start #x267 :end #x279) + (new 'static 'm2v-caption :text-id (text-id text-id-4528) :start #x27a :end #x29b) + (new 'static 'm2v-caption :text-id (text-id text-id-4529) :start #x29c :end #x2da) + (new 'static 'm2v-caption :text-id (text-id text-id-4530) :start #x2db :end #x348) + (new 'static 'm2v-caption :text-id (text-id text-id-4531) :start #x349 :end #x385) + (new 'static 'm2v-caption :text-id (text-id text-id-4532) :start #x386 :end #x3d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4533) :start #x3d5 :end #x401) + (new 'static 'm2v-caption :text-id (text-id text-id-4534) :start #x402 :end #x445) + (new 'static 'm2v-caption :text-id (text-id text-id-4535) :start #x446 :end #x496) + (new 'static 'm2v-caption :text-id (text-id text-id-4536) :start #x497 :end #x4ca) + ) + :id #xd8d + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jakikrew" + :sound "157-jak-killed-krew" + :commentary-sound "jakikrew" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3215) :start 76 :end #x7c) + (new 'static 'm2v-caption :text-id (text-id text-id-3216) :start #x7d :end #xb6) + (new 'static 'm2v-caption :text-id (text-id text-id-3217) :start #xc5 :end #x12c) + (new 'static 'm2v-caption :text-id (text-id text-id-3218) :start #x132 :end #x167) + (new 'static 'm2v-caption :text-id (text-id text-id-3219) :start #x16f :end #x1a8) + (new 'static 'm2v-caption :text-id (text-id text-id-3220) :start #x1a9 :end #x1ed) + (new 'static 'm2v-caption :text-id (text-id text-id-3221) :start #x1ee :end #x228) + (new 'static 'm2v-caption :text-id (text-id text-id-3222) :start #x229 :end #x280) + (new 'static 'm2v-caption :text-id (text-id text-id-3223) :start #x280 :end #x290) + (new 'static 'm2v-caption :text-id (text-id text-id-3224) :start #x297 :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3225) :start #x2f5 :end #x334) + (new 'static 'm2v-caption :text-id (text-id text-id-3226) :start #x337 :end #x384) + (new 'static 'm2v-caption :text-id (text-id text-id-3227) :start #x386 :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3228) :start #x3eb :end #x436) + (new 'static 'm2v-caption :text-id (text-id text-id-3229) :start #x43f :end #x486) + (new 'static 'm2v-caption :text-id (text-id text-id-3230) :start #x488 :end #x4d5) + (new 'static 'm2v-caption :text-id (text-id text-id-3231) :start #x4d6 :end #x52a) + (new 'static 'm2v-caption :text-id (text-id text-id-3232) :start #x532 :end #x54c) + (new 'static 'm2v-caption :text-id (text-id text-id-3233) :start #x54d :end #x5af) + (new 'static 'm2v-caption :text-id (text-id text-id-3234) :start #x5b5 :end #x5cd) + (new 'static 'm2v-caption :text-id (text-id text-id-3235) :start #x5d2 :end #x604) + (new 'static 'm2v-caption :text-id (text-id text-id-3236) :start #x605 :end #x631) + (new 'static 'm2v-caption :text-id (text-id text-id-3237) :start #x634 :end #x663) + (new 'static 'm2v-caption :text-id (text-id text-id-3238) :start #x664 :end #x69b) + (new 'static 'm2v-caption :text-id (text-id text-id-3239) :start #x69c :end #x6c6) + (new 'static 'm2v-caption :text-id (text-id text-id-3240) :start #x6db :end #x71a) + (new 'static 'm2v-caption :text-id (text-id text-id-3241) :start #x71b :end #x737) + (new 'static 'm2v-caption :text-id (text-id text-id-3242) :start #x738 :end #x769) + (new 'static 'm2v-caption :text-id (text-id text-id-3243) :start #x76a :end #x7a3) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4462) :start 1 :end 52) + (new 'static 'm2v-caption :text-id (text-id text-id-4463) :start 54 :end 95) + (new 'static 'm2v-caption :text-id (text-id text-id-4464) :start 96 :end #xd7) + (new 'static 'm2v-caption :text-id (text-id text-id-4465) :start #xd8 :end #x16f) + (new 'static 'm2v-caption :text-id (text-id text-id-4466) :start #x170 :end #x1ac) + (new 'static 'm2v-caption :text-id (text-id text-id-4467) :start #x1ad :end #x23c) + (new 'static 'm2v-caption :text-id (text-id text-id-4468) :start #x23d :end #x2de) + (new 'static 'm2v-caption :text-id (text-id text-id-4469) :start #x2df :end #x378) + (new 'static 'm2v-caption :text-id (text-id text-id-4470) :start #x379 :end #x3c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4471) :start #x405 :end #x4c5) + (new 'static 'm2v-caption :text-id (text-id text-id-4472) :start #x4c6 :end #x50c) + (new 'static 'm2v-caption :text-id (text-id text-id-4474) :start #x555 :end #x596) + (new 'static 'm2v-caption :text-id (text-id text-id-4475) :start #x5d8 :end #x615) + (new 'static 'm2v-caption :text-id (text-id text-id-4476) :start #x616 :end #x65c) + (new 'static 'm2v-caption :text-id (text-id text-id-4477) :start #x680 :end #x6ec) + (new 'static 'm2v-caption :text-id (text-id text-id-4478) :start #x6ed :end #x77a) + ) + :id #xd8e + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blbaall" + :sound "164-blitz-bares-all" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3526) :start 30 :end 86) + (new 'static 'm2v-caption :text-id (text-id text-id-3527) :start 98 :end #x8d) + (new 'static 'm2v-caption :text-id (text-id text-id-3528) :start #x8e :end #x9e) + (new 'static 'm2v-caption :text-id (text-id text-id-3529) :start #xa5 :end #xe2) + (new 'static 'm2v-caption :text-id (text-id text-id-3530) :start #xf4 :end #x115) + (new 'static 'm2v-caption :text-id (text-id text-id-3531) :start #x116 :end #x168) + (new 'static 'm2v-caption :text-id (text-id text-id-3532) :start #x169 :end #x1d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3533) :start #x1d2 :end #x228) + (new 'static 'm2v-caption :text-id (text-id text-id-3534) :start #x229 :end #x258) + (new 'static 'm2v-caption :text-id (text-id text-id-3535) :start #x259 :end #x26c) + (new 'static 'm2v-caption :text-id (text-id text-id-3536) :start #x28e :end #x2b7) + (new 'static 'm2v-caption :text-id (text-id text-id-3537) :start #x2b8 :end #x2fc) + (new 'static 'm2v-caption :text-id (text-id text-id-3547) :start #x309 :end #x331) + (new 'static 'm2v-caption :text-id (text-id text-id-3548) :start #x332 :end #x38c) + (new 'static 'm2v-caption :text-id (text-id text-id-3549) :start #x38d :end #x3e3) + (new 'static 'm2v-caption :text-id (text-id text-id-3550) :start #x3e4 :end #x42d) + (new 'static 'm2v-caption :text-id (text-id text-id-3551) :start #x42e :end #x474) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd8f + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "fiborain" + :sound "165-final-boss-race-intro" + :commentary-sound "fiborain" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3184) :start 17 :end #x88) + (new 'static 'm2v-caption :text-id (text-id text-id-3185) :start #x94 :end #xee) + (new 'static 'm2v-caption :text-id (text-id text-id-3186) :start #xef :end #x143) + (new 'static 'm2v-caption :text-id (text-id text-id-3187) :start #x144 :end #x169) + (new 'static 'm2v-caption :text-id (text-id text-id-3188) :start #x175 :end #x1a2) + (new 'static 'm2v-caption :text-id (text-id text-id-3189) :start #x1a3 :end #x1e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3190) :start #x1e8 :end #x234) + (new 'static 'm2v-caption :text-id (text-id text-id-3191) :start #x235 :end #x288) + (new 'static 'm2v-caption :text-id (text-id text-id-3192) :start #x289 :end #x2f7) + (new 'static 'm2v-caption :text-id (text-id text-id-3193) :start #x30a :end #x343) + (new 'static 'm2v-caption :text-id (text-id text-id-3194) :start #x344 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-3195) :start #x372 :end #x3d4) + (new 'static 'm2v-caption :text-id (text-id text-id-3196) :start #x3d5 :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3197) :start #x3e9 :end #x42b) + (new 'static 'm2v-caption :text-id (text-id text-id-3198) :start #x42c :end #x45c) + (new 'static 'm2v-caption :text-id (text-id text-id-3199) :start #x470 :end #x490) + (new 'static 'm2v-caption :text-id (text-id text-id-3200) :start #x49b :end #x4aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3201) :start #x4b2 :end #x4de) + (new 'static 'm2v-caption :text-id (text-id text-id-3202) :start #x4df :end #x511) + (new 'static 'm2v-caption :text-id (text-id text-id-3203) :start #x51a :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-3204) :start #x543 :end #x55d) + (new 'static 'm2v-caption :text-id (text-id text-id-3205) :start #x567 :end #x59b) + (new 'static 'm2v-caption :text-id (text-id text-id-3206) :start #x5a0 :end #x5b6) + (new 'static 'm2v-caption :text-id (text-id text-id-3207) :start #x5be :end #x5cc) + (new 'static 'm2v-caption :text-id (text-id text-id-3208) :start #x5d2 :end #x610) + (new 'static 'm2v-caption :text-id (text-id text-id-3209) :start #x611 :end #x658) + (new 'static 'm2v-caption :text-id (text-id text-id-3210) :start #x65e :end #x696) + (new 'static 'm2v-caption :text-id (text-id text-id-3211) :start #x6a0 :end #x6bf) + (new 'static 'm2v-caption :text-id (text-id text-id-3212) :start #x6c4 :end #x6db) + (new 'static 'm2v-caption :text-id (text-id text-id-3213) :start #x6e2 :end #x711) + (new 'static 'm2v-caption :text-id (text-id text-id-3214) :start #x714 :end #x749) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4537) :start 92 :end #xd4) + (new 'static 'm2v-caption :text-id (text-id text-id-4538) :start #xd5 :end #x129) + (new 'static 'm2v-caption :text-id (text-id text-id-4539) :start #x12a :end #x194) + (new 'static 'm2v-caption :text-id (text-id text-id-4540) :start #x195 :end #x1e4) + (new 'static 'm2v-caption :text-id (text-id text-id-4541) :start #x1e5 :end #x21b) + (new 'static 'm2v-caption :text-id (text-id text-id-4542) :start #x231 :end #x27e) + (new 'static 'm2v-caption :text-id (text-id text-id-4543) :start #x27f :end #x2d2) + (new 'static 'm2v-caption :text-id (text-id text-id-4544) :start #x2d3 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-4545) :start #x36e :end #x3b9) + (new 'static 'm2v-caption :text-id (text-id text-id-4546) :start #x3ba :end #x449) + (new 'static 'm2v-caption :text-id (text-id text-id-4547) :start #x44a :end #x4c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4548) :start #x4c8 :end #x528) + (new 'static 'm2v-caption :text-id (text-id text-id-4549) :start #x55d :end #x5c2) + (new 'static 'm2v-caption :text-id (text-id text-id-4550) :start #x5ff :end #x644) + (new 'static 'm2v-caption :text-id (text-id text-id-4551) :start #x645 :end #x66c) + (new 'static 'm2v-caption :text-id (text-id text-id-4552) :start #x66d :end #x6a0) + (new 'static 'm2v-caption :text-id (text-id text-id-4553) :start #x6a1 :end #x6f1) + ) + :id #xd90 + :driver #x4 + :driver2 #x13 + ) + (new 'static 'm2v-info + :name "outroa" + :sound "166-outro-a" + :commentary-sound "outroa" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3652) :start 13 :end 92) + (new 'static 'm2v-caption :text-id (text-id text-id-3653) :start 93 :end #x9d) + (new 'static 'm2v-caption :text-id (text-id text-id-3654) :start #x9e :end #xf9) + (new 'static 'm2v-caption :text-id (text-id text-id-3655) :start #xfa :end #x11c) + (new 'static 'm2v-caption :text-id (text-id text-id-3656) :start #x11d :end #x1a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3657) :start #x1af :end #x1cc) + (new 'static 'm2v-caption :text-id (text-id text-id-3658) :start #x1da :end #x211) + (new 'static 'm2v-caption :text-id (text-id text-id-3659) :start #x218 :end #x241) + (new 'static 'm2v-caption :text-id (text-id text-id-3660) :start #x249 :end #x292) + (new 'static 'm2v-caption :text-id (text-id text-id-3661) :start #x293 :end #x2b4) + (new 'static 'm2v-caption :text-id (text-id text-id-3662) :start #x2b5 :end #x306) + (new 'static 'm2v-caption :text-id (text-id text-id-3663) :start #x30c :end #x348) + (new 'static 'm2v-caption :text-id (text-id text-id-3664) :start #x352 :end #x38e) + (new 'static 'm2v-caption :text-id (text-id text-id-3665) :start #x38f :end #x3bb) + (new 'static 'm2v-caption :text-id (text-id text-id-3666) :start #x3bc :end #x3eb) + (new 'static 'm2v-caption :text-id (text-id text-id-3667) :start #x3ec :end #x44a) + (new 'static 'm2v-caption :text-id (text-id text-id-3668) :start #x455 :end #x494) + (new 'static 'm2v-caption :text-id (text-id text-id-3669) :start #x49b :end #x4aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3670) :start #x4ac :end #x4c2) + (new 'static 'm2v-caption :text-id (text-id text-id-3671) :start #x4c3 :end #x4fb) + (new 'static 'm2v-caption :text-id (text-id text-id-3672) :start #x4fc :end #x542) + (new 'static 'm2v-caption :text-id (text-id text-id-3673) :start #x543 :end #x58b) + (new 'static 'm2v-caption :text-id (text-id text-id-3674) :start #x592 :end #x5f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3675) :start #x5f7 :end #x5ff) + (new 'static 'm2v-caption :text-id (text-id text-id-3676) :start #x608 :end #x64b) + (new 'static 'm2v-caption :text-id (text-id text-id-3677) :start #x64c :end #x6a6) + (new 'static 'm2v-caption :text-id (text-id text-id-3678) :start #x6b0 :end #x706) + (new 'static 'm2v-caption :text-id (text-id text-id-3679) :start #x73a :end #x755) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4479) :start 31 :end 65) + (new 'static 'm2v-caption :text-id (text-id text-id-4480) :start 66 :end #xaa) + (new 'static 'm2v-caption :text-id (text-id text-id-4481) :start #xab :end #x150) + (new 'static 'm2v-caption :text-id (text-id text-id-4482) :start #x151 :end #x200) + (new 'static 'm2v-caption :text-id (text-id text-id-4483) :start #x201 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-4484) :start #x26c :end #x2bd) + (new 'static 'm2v-caption :text-id (text-id text-id-4485) :start #x2be :end #x32c) + (new 'static 'm2v-caption :text-id (text-id text-id-4486) :start #x32d :end #x3ec) + (new 'static 'm2v-caption :text-id (text-id text-id-4487) :start #x3ed :end #x463) + (new 'static 'm2v-caption :text-id (text-id text-id-4488) :start #x464 :end #x4e2) + (new 'static 'm2v-caption :text-id (text-id text-id-4489) :start #x501 :end #x57e) + (new 'static 'm2v-caption :text-id (text-id text-id-4490) :start #x57f :end #x619) + (new 'static 'm2v-caption :text-id (text-id text-id-4491) :start #x61a :end #x6c8) + (new 'static 'm2v-caption :text-id (text-id text-id-4492) :start #x6c9 :end #x718) + (new 'static 'm2v-caption :text-id (text-id text-id-4493) :start #x719 :end #x783) + ) + :id #xd91 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "outrob" + :sound "166-outro-b" + :commentary-sound "outrob" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3680) :start #x1d0 :end #x1fd) + (new 'static 'm2v-caption :text-id (text-id text-id-3681) :start #x202 :end #x224) + (new 'static 'm2v-caption :text-id (text-id text-id-3682) :start #x225 :end #x28e) + (new 'static 'm2v-caption :text-id (text-id text-id-3683) :start #x290 :end #x2da) + (new 'static 'm2v-caption :text-id (text-id text-id-3684) :start #x2db :end #x2f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3685) :start #x2f7 :end #x343) + (new 'static 'm2v-caption :text-id (text-id text-id-3686) :start #x344 :end #x3bb) + (new 'static 'm2v-caption :text-id (text-id text-id-3687) :start #x3bc :end #x417) + (new 'static 'm2v-caption :text-id (text-id text-id-3688) :start #x43e :end #x49f) + (new 'static 'm2v-caption :text-id (text-id text-id-3689) :start #x4bc :end #x4e5) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4334) :start 1 :end 26) + (new 'static 'm2v-caption :text-id (text-id text-id-4335) :start 27 :end #x69) + (new 'static 'm2v-caption :text-id (text-id text-id-4336) :start #x6a :end #xb7) + (new 'static 'm2v-caption :text-id (text-id text-id-4337) :start #xb8 :end #x11e) + (new 'static 'm2v-caption :text-id (text-id text-id-4338) :start #x11f :end #x1ab) + (new 'static 'm2v-caption :text-id (text-id text-id-4339) :start #x1ac :end #x202) + (new 'static 'm2v-caption :text-id (text-id text-id-4340) :start #x219 :end #x271) + (new 'static 'm2v-caption :text-id (text-id text-id-4341) :start #x272 :end #x2cd) + (new 'static 'm2v-caption :text-id (text-id text-id-4342) :start #x2ce :end #x336) + (new 'static 'm2v-caption :text-id (text-id text-id-4343) :start #x337 :end #x3a5) + (new 'static 'm2v-caption :text-id (text-id text-id-4344) :start #x3a6 :end #x433) + (new 'static 'm2v-caption :text-id (text-id text-id-4345) :start #x434 :end #x498) + (new 'static 'm2v-caption :text-id (text-id text-id-4346) :start #x499 :end #x4f2) + (new 'static 'm2v-caption :text-id (text-id text-id-4347) :start #x4f3 :end #x561) + ) + :id #x132d + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "outroc" + :sound "166-outro-c" + :commentary-sound "outroc" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3690) :start 48 :end #x7f) + (new 'static 'm2v-caption :text-id (text-id text-id-3691) :start #x80 :end #xed) + (new 'static 'm2v-caption :text-id (text-id text-id-3692) :start #xf4 :end #x133) + (new 'static 'm2v-caption :text-id (text-id text-id-3693) :start #x138 :end #x160) + (new 'static 'm2v-caption :text-id (text-id text-id-3694) :start #x166 :end #x18e) + (new 'static 'm2v-caption :text-id (text-id text-id-3695) :start #x197 :end #x1a5) + (new 'static 'm2v-caption :text-id (text-id text-id-3696) :start #x1ae :end #x1e9) + (new 'static 'm2v-caption :text-id (text-id text-id-3697) :start #x1f8 :end #x232) + (new 'static 'm2v-caption :text-id (text-id text-id-3698) :start #x233 :end #x25c) + (new 'static 'm2v-caption :text-id (text-id text-id-3699) :start #x25d :end #x28f) + (new 'static 'm2v-caption :text-id (text-id text-id-3700) :start #x290 :end #x2d2) + (new 'static 'm2v-caption :text-id (text-id text-id-3701) :start #x2d3 :end #x2fd) + (new 'static 'm2v-caption :text-id (text-id text-id-3702) :start #x2fe :end #x32d) + (new 'static 'm2v-caption :text-id (text-id text-id-3703) :start #x334 :end #x346) + (new 'static 'm2v-caption :text-id (text-id text-id-3704) :start #x36d :end #x391) + (new 'static 'm2v-caption :text-id (text-id text-id-3705) :start #x3c0 :end #x3f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3706) :start #x3f5 :end #x43b) + (new 'static 'm2v-caption :text-id (text-id text-id-3707) :start #x45d :end #x4b4) + (new 'static 'm2v-caption :text-id (text-id text-id-3708) :start #x4b5 :end #x4f5) + (new 'static 'm2v-caption :text-id (text-id text-id-3709) :start #x4f6 :end #x541) + (new 'static 'm2v-caption :text-id (text-id text-id-3710) :start #x542 :end #x574) + (new 'static 'm2v-caption :text-id (text-id text-id-3711) :start #x575 :end #x5e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3712) :start #x5e3 :end #x61b) + (new 'static 'm2v-caption :text-id (text-id text-id-3713) :start #x61c :end #x676) + (new 'static 'm2v-caption :text-id (text-id text-id-3714) :start #x677 :end #x6d2) + (new 'static 'm2v-caption :text-id (text-id text-id-3715) :start #x6d3 :end #x71c) + (new 'static 'm2v-caption :text-id (text-id text-id-3716) :start #x737 :end #x752) + (new 'static 'm2v-caption :text-id (text-id text-id-3717) :start #x768 :end #x77d) + (new 'static 'm2v-caption :text-id (text-id text-id-3718) :start #x77e :end #x7b4) + (new 'static 'm2v-caption :text-id (text-id text-id-3719) :start #x7b5 :end #x80b) + (new 'static 'm2v-caption :text-id (text-id text-id-3720) :start #x80c :end #x83e) + (new 'static 'm2v-caption :text-id (text-id text-id-3721) :start #x840 :end #x883) + (new 'static 'm2v-caption :text-id (text-id text-id-3722) :start #x884 :end #x8ae) + (new 'static 'm2v-caption :text-id (text-id text-id-3723) :start #x8af :end #x8f2) + (new 'static 'm2v-caption :text-id (text-id text-id-3724) :start #x8f3 :end #x94a) + (new 'static 'm2v-caption :text-id (text-id text-id-3725) :start #x961 :end #x982) + (new 'static 'm2v-caption :text-id (text-id text-id-3726) :start #x989 :end #x9d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3727) :start #x9d8 :end #x9f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3728) :start #x9f5 :end #xa5d) + (new 'static 'm2v-caption :text-id (text-id text-id-3729) :start #xa61 :end #xaaa) + (new 'static 'm2v-caption :text-id (text-id text-id-3730) :start #xaab :end #xb05) + (new 'static 'm2v-caption :text-id (text-id text-id-3731) :start #xb0f :end #xb4c) + (new 'static 'm2v-caption :text-id (text-id text-id-3732) :start #xb57 :end #xb67) + (new 'static 'm2v-caption :text-id (text-id text-id-3733) :start #xb7b :end #xbc5) + (new 'static 'm2v-caption :text-id (text-id text-id-3734) :start #xc01 :end #xc74) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4280) :start 1 :end 27) + (new 'static 'm2v-caption :text-id (text-id text-id-4281) :start 28 :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-4282) :start #xc7 :end #x17e) + (new 'static 'm2v-caption :text-id (text-id text-id-4283) :start #x17f :end #x201) + (new 'static 'm2v-caption :text-id (text-id text-id-4284) :start #x214 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-4285) :start #x26c :end #x2b1) + (new 'static 'm2v-caption :text-id (text-id text-id-4286) :start #x2b2 :end #x307) + (new 'static 'm2v-caption :text-id (text-id text-id-4287) :start #x308 :end #x34f) + (new 'static 'm2v-caption :text-id (text-id text-id-4288) :start #x350 :end #x39c) + (new 'static 'm2v-caption :text-id (text-id text-id-4289) :start #x39d :end #x404) + (new 'static 'm2v-caption :text-id (text-id text-id-4290) :start #x405 :end #x459) + (new 'static 'm2v-caption :text-id (text-id text-id-4291) :start #x45a :end #x4bb) + (new 'static 'm2v-caption :text-id (text-id text-id-4292) :start #x4bc :end #x52b) + (new 'static 'm2v-caption :text-id (text-id text-id-4293) :start #x52c :end #x5a6) + (new 'static 'm2v-caption :text-id (text-id text-id-4294) :start #x5a7 :end #x5e0) + (new 'static 'm2v-caption :text-id (text-id text-id-4295) :start #x5e1 :end #x63a) + (new 'static 'm2v-caption :text-id (text-id text-id-4296) :start #x63b :end #x667) + (new 'static 'm2v-caption :text-id (text-id text-id-4297) :start #x668 :end #x6ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4298) :start #x6bb :end #x6f6) + (new 'static 'm2v-caption :text-id (text-id text-id-4299) :start #x6f7 :end #x784) + (new 'static 'm2v-caption :text-id (text-id text-id-4300) :start #x785 :end #x7fe) + (new 'static 'm2v-caption :text-id (text-id text-id-4301) :start #x7ff :end #x8c2) + (new 'static 'm2v-caption :text-id (text-id text-id-4302) :start #x8c3 :end #x900) + (new 'static 'm2v-caption :text-id (text-id text-id-4303) :start #x901 :end #x928) + (new 'static 'm2v-caption :text-id (text-id text-id-4304) :start #x929 :end #x940) + (new 'static 'm2v-caption :text-id (text-id text-id-4305) :start #x941 :end #x990) + (new 'static 'm2v-caption :text-id (text-id text-id-4306) :start #x991 :end #xa07) + (new 'static 'm2v-caption :text-id (text-id text-id-4307) :start #xa09 :end #xa9b) + (new 'static 'm2v-caption :text-id (text-id text-id-4914) :start #xac2 :end #xb33) + (new 'static 'm2v-caption :text-id (text-id text-id-4309) :start #xb34 :end #xb7c) + (new 'static 'm2v-caption :text-id (text-id text-id-4310) :start #xb7d :end #xbf7) + (new 'static 'm2v-caption :text-id (text-id text-id-4311) :start #xbf8 :end #xc62) + (new 'static 'm2v-caption :text-id (text-id text-id-4312) :start #xc63 :end #xc7e) + ) + :id #x132e + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "introb2" + :sound "intro-boardroom" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2833) :start 35 :end #x6a) + (new 'static 'm2v-caption :text-id (text-id text-id-2834) :start #x6b :end #x93) + (new 'static 'm2v-caption :text-id (text-id text-id-2835) :start #x9d :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-2836) :start #xce :end #xf6) + (new 'static 'm2v-caption :text-id (text-id text-id-2837) :start #xf7 :end #x15b) + (new 'static 'm2v-caption :text-id (text-id text-id-2838) :start #x15c :end #x1bb) + (new 'static 'm2v-caption :text-id (text-id text-id-2839) :start #x1c3 :end #x1f1) + (new 'static 'm2v-caption :text-id (text-id text-id-2840) :start #x1f2 :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-2886) :start #x243 :end #x273) + (new 'static 'm2v-caption :text-id (text-id text-id-2842) :start #x275 :end #x2c9) + (new 'static 'm2v-caption :text-id (text-id text-id-2843) :start #x2ca :end #x322) + (new 'static 'm2v-caption :text-id (text-id text-id-2844) :start #x323 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-2845) :start #x372 :end #x409) + (new 'static 'm2v-caption :text-id (text-id text-id-2846) :start #x424 :end #x4b0) + (new 'static 'm2v-caption :text-id (text-id text-id-2847) :start #x514 :end #x56d) + (new 'static 'm2v-caption :text-id (text-id text-id-2848) :start #x590 :end #x5ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2849) :start #x5eb :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2850) :start #x683 :end #x6fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2851) :start #x6fc :end #x763) + (new 'static 'm2v-caption :text-id (text-id text-id-2852) :start #x764 :end #x7dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2853) :start #x7dd :end #x85f) + (new 'static 'm2v-caption :text-id (text-id text-id-2854) :start #x860 :end #x8c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2855) :start #x8c6 :end #x93b) + (new 'static 'm2v-caption :text-id (text-id text-id-2856) :start #x942 :end #x94b) + (new 'static 'm2v-caption :text-id (text-id text-id-2857) :start #x94c :end #x955) + (new 'static 'm2v-caption :text-id (text-id text-id-2858) :start #x956 :end #x960) + (new 'static 'm2v-caption :text-id (text-id text-id-2859) :start #x968 :end #x9a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2860) :start #x9a7 :end #xa1c) + (new 'static 'm2v-caption :text-id (text-id text-id-2861) :start #xa1d :end #xa97) + (new 'static 'm2v-caption :text-id (text-id text-id-2862) :start #xa98 :end #xae9) + (new 'static 'm2v-caption :text-id (text-id text-id-2863) :start #xaea :end #xb3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2864) :start #xb3f :end #xb53) + (new 'static 'm2v-caption :text-id (text-id text-id-2865) :start #xb58 :end #xbe1) + (new 'static 'm2v-caption :text-id (text-id text-id-2866) :start #xbe2 :end #xc3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2867) :start #xc3f :end #xcac) + (new 'static 'm2v-caption :text-id (text-id text-id-2868) :start #xcad :end #xd08) + (new 'static 'm2v-caption :text-id (text-id text-id-2869) :start #xd09 :end #xd6d) + (new 'static 'm2v-caption :text-id (text-id text-id-2870) :start #xd86 :end #xdb7) + (new 'static 'm2v-caption :text-id (text-id text-id-2871) :start #xdbe :end #xe21) + (new 'static 'm2v-caption :text-id (text-id text-id-2872) :start #xe22 :end #xe5d) + (new 'static 'm2v-caption :text-id (text-id text-id-2873) :start #xe63 :end #xe9b) + (new 'static 'm2v-caption :text-id (text-id text-id-2874) :start #xe9e :end #xecf) + (new 'static 'm2v-caption :text-id (text-id text-id-2875) :start #xed9 :end #xf00) + (new 'static 'm2v-caption :text-id (text-id text-id-2876) :start #xf10 :end #xf73) + (new 'static 'm2v-caption :text-id (text-id text-id-2877) :start #xf60 :end #xfbf) + (new 'static 'm2v-caption :text-id (text-id text-id-2878) :start #xfc0 :end #xff7) + (new 'static 'm2v-caption :text-id (text-id text-id-2879) :start #xff8 :end #x103e) + (new 'static 'm2v-caption :text-id (text-id text-id-2880) :start #x1055 :end #x10c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2881) :start #x10d1 :end #x10ed) + (new 'static 'm2v-caption :text-id (text-id text-id-2882) :start #x10ee :end #x1148) + (new 'static 'm2v-caption :text-id (text-id text-id-2883) :start #x1153 :end #x1194) + (new 'static 'm2v-caption :text-id (text-id text-id-2884) :start #x1195 :end #x11fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2885) :start #x11fb :end #x125a) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :driver #x17 + :driver2 #x17 + :flags #xb + ) + (new 'static 'm2v-info + :name "bloopers" + :sound "bloopers-reel" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4848) :start 10 :end 97) + (new 'static 'm2v-caption :text-id (text-id text-id-4849) :start #x7f :end #x115) + (new 'static 'm2v-caption :text-id (text-id text-id-4850) :start #x181 :end #x22e) + (new 'static 'm2v-caption :text-id (text-id text-id-4851) :start #x22f :end #x2fb) + (new 'static 'm2v-caption :text-id (text-id text-id-4852) :start #x2fc :end #x43c) + (new 'static 'm2v-caption :text-id (text-id text-id-4853) :start #x43d :end #x50f) + (new 'static 'm2v-caption :text-id (text-id text-id-4854) :start #x51e :end #x5f2) + (new 'static 'm2v-caption :text-id (text-id text-id-4855) :start #x62e :end #x6ee) + (new 'static 'm2v-caption :text-id (text-id text-id-4856) :start #x6f8 :end #x771) + (new 'static 'm2v-caption :text-id (text-id text-id-4857) :start #x772 :end #x8c8) + (new 'static 'm2v-caption :text-id (text-id text-id-4858) :start #x8f9 :end #x9f6) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :driver #x17 + :driver2 #x17 + :flags #xf + ) + (new 'static 'm2v-info + :name "makingin" + :sound "making-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4859) :start 15 :end #x291) + (new 'static 'm2v-caption :text-id (text-id text-id-4860) :start #x2b0 :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-4861) :start #x55f :end #x7f4) + (new 'static 'm2v-caption :text-id (text-id text-id-4862) :start #x7f5 :end #xaf0) + (new 'static 'm2v-caption :text-id (text-id text-id-4863) :start #xb00 :end #xe3f) + (new 'static 'm2v-caption :text-id (text-id text-id-4864) :start #xe4f :end #x119b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :driver #x17 + :driver2 #x17 + :flags #xf + ) + (new 'static 'm2v-info + :name "hotcoffe" + :sound "hot-coffee" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4865) :start 21 :end 80) + (new 'static 'm2v-caption :text-id (text-id text-id-4866) :start 81 :end #x6b) + (new 'static 'm2v-caption :text-id (text-id text-id-4867) :start #x6c :end #x7b) + (new 'static 'm2v-caption :text-id (text-id text-id-4868) :start #x7c :end #xb1) + (new 'static 'm2v-caption :text-id (text-id text-id-4869) :start #xb2 :end #x103) + (new 'static 'm2v-caption :text-id (text-id text-id-4870) :start #x130 :end #x148) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #x10b5 + :driver #x17 + :driver2 #x17 + :flags #x9 + ) + (new 'static 'm2v-info + :name "thx" + :sound "thx-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #x554 + :driver #x17 + :driver2 #x17 + :flags #x3 + ) + ) + ) diff --git a/goal_src/jakx/engine/scene/scene-h.gc b/goal_src/jakx/engine/scene/scene-h.gc index 53a4844000..9493dedc81 100644 --- a/goal_src/jakx/engine/scene/scene-h.gc +++ b/goal_src/jakx/engine/scene/scene-h.gc @@ -5,5 +5,144 @@ ;; name in dgo: scene-h ;; dgos: ENGINE, GAME +;; +++scene-flags +(defenum scene-flags + :bitfield #t + :type uint32 + (scf0 0) + (scf1 1) + (scf2 2) + (scf3 3) + (scf4 4) + (scf5 5) + (scf6 6) + (scf7 7) + (scf8 8) + (scf9 9) + (scf10 10) + (scf11 11) + (scf12 12) + (scf13 13) + (scf14 14) + (scf15 15) + ) +;; ---scene-flags + ;; DECOMP BEGINS +(deftype scene-actor (basic) + ((name string) + (level symbol) + (art-group string) + (prefix string) + (draw-frames pair) + (scissor-frames pair) + (shadow-frames pair) + (cloth-reset-frames pair) + (cloth-commands pair) + (camera int16) + (light-index uint8) + (shadow-mask uint8) + (shadow-values uint32) + (flags uint32) + (command-list pair) + (shadow-flags int32) + (shadow-volume-joint basic) + (draw-seg uint64) + (no-draw-seg uint64) + (last-frame float) + (process uint64) + ) + (:methods + (scene-actor-method-9 () none) + ) + ) + + +(deftype scene (art-group) + ((scene-flags scene-flags) + (mask-to-clear process-mask) + (entity string) + (art-group string) + (anim string) + (parts int32) + (command-list pair) + (cut-list pair) + (wait-max-time uint64) + (wait-air-time uint64) + (wait-ground-time uint64) + (actor (array scene-actor)) + (load-point basic) + (end-point basic) + (borrow pair) + (sfx-volume float) + (ambient-volume float) + (music-volume float) + (music-delay float) + (scene-task uint16) + (on-running pair) + (on-complete pair) + (vehicles basic) + (ipu basic) + ) + (:methods + (scene-method-16 () none) + (load-scene (_type_) scene) + ) + ) + + +(deftype scene-player (process-drawable) + ((scene-list (array scene)) + (scene scene) + (scene-index int32) + (anim spool-anim) + (next-anim spool-anim) + (camera uint64) + (main-entity entity-actor) + (wait symbol) + (old-target-pos transformq :inline) + (pre-cut-frame basic) + (preload-continue string) + (preload-sound basic) + (dma-max uint32) + (gui-id sound-id) + (aborted? symbol) + (scene-start-time uint64) + (targ-speed float) + (cur-speed float) + (speed-change-time uint64) + (speed-press-time uint64) + (speed-change-speed float) + (subtitle-change-time uint64) + (user-sound sound-id 4) + (last-frame float) + (end-point basic) + (blackout-end basic) + (new-trans-hook (function none)) + (cur-trans-hook (function none)) + (user-data uint64) + ) + (:methods + (scene-player-method-50 () none) + (scene-player-method-51 () none) + (scene-player-method-52 () none) + (scene-player-method-53 () none) + (scene-player-method-54 () none) + (scene-player-method-55 () none) + ) + ) + + +(define *scene-player* (the-as (pointer scene-player) #f)) + +(define *debug-menu-scene-play* #f) + +(defmethod load-scene ((this scene)) + (let ((v1-1 (-> *level* loading-level))) + (if v1-1 + (set-loaded-art (-> v1-1 art-group) this) + ) + ) + this + ) diff --git a/goal_src/jakx/engine/sound/gsound-h.gc b/goal_src/jakx/engine/sound/gsound-h.gc index f847e605c1..f061dd4263 100644 --- a/goal_src/jakx/engine/sound/gsound-h.gc +++ b/goal_src/jakx/engine/sound/gsound-h.gc @@ -33,406 +33,873 @@ ) ;; ---stream-status +(declare-type sound-name uint128) +(define-extern string->sound-name (function string sound-name)) + +(define-extern get-sound-buffer-entry (function pointer)) +(define-extern sound-set-ear-trans (function vector vector vector vector vector float int)) +(define-extern ear-trans (function int vector)) ;; DECOMP BEGINS +(define *debug-sound-sliders* #f) + +(define *music-volume-ducked-by-sound* 1.0) + (deftype sound-stream-name (structure) - ((name uint8 48 :offset-assert 0) ;; guessed by decompiler + ((name uint8 48) ) - :method-count-assert 9 - :size-assert #x30 - :flag-assert #x900000030 ) + (deftype sound-id (uint32) () - :flag-assert #x900000004 ) (deftype sound-bank-id (uint32) () - :flag-assert #x900000004 ) (deftype sound-name (uint128) - ((lo uint64 :offset 0) ;; added to help with cases where they access it by u64. - (hi uint64 :offset 64) + ((lo uint64 :offset 0 :size 64) + (hi uint64 :offset 64 :size 64) ) - :flag-assert #x900000010 ) +(define *music-lock* #f) + (deftype sound-rpc-cmd (structure) - ((rsvd1 uint16 :offset-assert 0) - (command uint16 :offset-assert 2) ;; sound-command + ((rsvd1 uint16) + (command uint16) ) - :method-count-assert 9 - :size-assert #x4 - :flag-assert #x900000004 ) + (deftype sound-play-params (structure) - ((mask uint8 :offset-assert 0) ;; uint16 - (group uint8 :offset-assert 1) - (volume int16 :offset-assert 2) ;; int32 - (pitch-mod int16 :offset-assert 4) - (bend int16 :offset-assert 6) - (pan int16 :offset-assert 8) + ((mask uint8) + (group uint8) + (volume int16) + (pitch-mod int16) + (bend int16) + (pan int16) ) - :method-count-assert 9 - :size-assert #xa - :flag-assert #x90000000a ) + (deftype sound-rpc-bank-cmd (sound-rpc-cmd) - ((bank-name uint128 :offset-assert 16) ;; sound-name + ((bank-name uint128) ) - :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 ) + (deftype sound-rpc-test-cmd (sound-rpc-cmd) - ((ee-addr pointer :offset-assert 4) ;; guessed by decompiler - (param0 uint16 :offset-assert 8) + ((ee-addr pointer) + (param0 uint16) ) - :method-count-assert 9 - :size-assert #xa - :flag-assert #x90000000a ) + (deftype sound-rpc-sound-cmd (sound-rpc-cmd) - ((id sound-id :offset-assert 4) ;; guessed by decompiler + ((id sound-id) ) - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-group-cmd (sound-rpc-cmd) - ((group uint32 :offset-assert 4) + ((group uint32) ) - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-load-bank (sound-rpc-bank-cmd) - ((ee-addr pointer :offset-assert 32) ;; guessed by decompiler - (mode uint32 :offset-assert 36) - (priority uint32 :offset-assert 40) + ((ee-addr pointer) + (mode uint32) + (priority uint32) ) - :method-count-assert 9 - :size-assert #x2c - :flag-assert #x90000002c ) + (deftype sound-rpc-load-music (sound-rpc-bank-cmd) () - :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 ) + (deftype sound-rpc-unload-bank (sound-rpc-cmd) - ((mode uint32 :offset-assert 4) + ((mode uint32) ) - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-play (sound-rpc-sound-cmd) - ((name uint128 :offset-assert 16) ;; sound-name - (params sound-play-params :inline :offset-assert 32) + ((name uint128) + (params sound-play-params :inline) ) - :method-count-assert 9 - :size-assert #x2a - :flag-assert #x90000002a ) + (deftype sound-rpc-pause-sound (sound-rpc-sound-cmd) () - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-stop-sound (sound-rpc-sound-cmd) () - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-continue-sound (sound-rpc-sound-cmd) () - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-set-param (sound-rpc-sound-cmd) - ((params sound-play-params :inline :offset-assert 16) - (auto-time int32 :offset-assert 28) - (auto-from int32 :offset-assert 32) + ((params sound-play-params :inline) + (auto-time int32) + (auto-from int32) ) - :method-count-assert 9 - :size-assert #x24 - :flag-assert #x900000024 ) + (deftype sound-rpc-set-master-volume (sound-rpc-group-cmd) - ((volume int32 :offset-assert 8) + ((volume int32) ) - :method-count-assert 9 - :size-assert #xc - :flag-assert #x90000000c ) + (deftype sound-rpc-pause-group (sound-rpc-group-cmd) () - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-stop-group (sound-rpc-group-cmd) () - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-continue-group (sound-rpc-group-cmd) () - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-cancel-dgo (sound-rpc-group-cmd) - ((id uint32 :offset-assert 8) + ((id uint32) ) - :method-count-assert 9 - :size-assert #xc - :flag-assert #x90000000c ) + (deftype sound-rpc-get-irx-version (sound-rpc-cmd) - ((major uint32 :offset-assert 4) - (minor uint32 :offset-assert 8) - (ee-addr pointer :offset-assert 12) ;; guessed by decompiler + ((major uint32) + (minor uint32) + (ee-addr pointer) ) - :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 ) + (deftype sound-rpc-set-language (sound-rpc-cmd) - ((lang uint32 :offset-assert 4) + ((lang uint32) ) - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-set-stereo-mode (sound-rpc-cmd) - ((mode int32 :offset-assert 4) + ((mode int32) ) - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-set-reverb (sound-rpc-cmd) - ((core uint8 :offset-assert 4) - (reverb int32 :offset-assert 8) - (left uint32 :offset-assert 12) - (right uint32 :offset-assert 16) + ((core uint8) + (reverb int32) + (left uint32) + (right uint32) ) - :method-count-assert 9 - :size-assert #x14 - :flag-assert #x900000014 ) + (deftype sound-rpc-set-ear-trans (sound-rpc-cmd) - ((ear-trans1 int32 3 :offset-assert 4) ;; guessed by decompiler - (ear-trans0 int32 3 :offset-assert 16) ;; guessed by decompiler - (cam-trans int32 3 :offset-assert 28) ;; guessed by decompiler - (cam-forward int32 3 :offset-assert 40) ;; guessed by decompiler - (cam-left int32 3 :offset-assert 52) ;; guessed by decompiler - (cam-scale int32 :offset-assert 64) - (cam-inverted int32 :offset-assert 68) + ((ear-trans1 int32 3) + (ear-trans0 int32 3) + (cam-trans int32 3) + (cam-forward int32 3) + (cam-left int32 3) + (cam-scale int32) + (cam-inverted int32) ) - :method-count-assert 9 - :size-assert #x48 - :flag-assert #x900000048 ) + (deftype sound-rpc-shutdown (sound-rpc-cmd) () - :method-count-assert 9 - :size-assert #x4 - :flag-assert #x900000004 ) + (deftype sound-rpc-set-fps (sound-rpc-cmd) - ((fps uint8 :offset-assert 4) + ((fps uint8) ) - :method-count-assert 9 - :size-assert #x5 - :flag-assert #x900000005 ) + (deftype sound-rpc-set-globals (sound-rpc-cmd) - ((cam-inverted uint8 :offset-assert 4) - (music-pitch-mod int16 :offset-assert 6) + ((cam-inverted uint8) + (music-pitch-mod int16) ) - :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 ) + (deftype sound-rpc-list-sounds (sound-rpc-cmd) () - :method-count-assert 9 - :size-assert #x4 - :flag-assert #x900000004 ) + (deftype sound-rpc-unload-music (sound-rpc-cmd) () - :method-count-assert 9 - :size-assert #x4 - :flag-assert #x900000004 ) + (deftype sound-rpc-union (structure) - ((data uint32 12 :offset-assert 0) ;; guessed by decompiler - (load-bank sound-rpc-load-bank :offset 0) - (unload-bank sound-rpc-unload-bank :offset 0) - (play sound-rpc-play :offset 0) - (pause-sound sound-rpc-pause-sound :offset 0) - (stop-sound sound-rpc-stop-sound :offset 0) - (continue-sound sound-rpc-continue-sound :offset 0) - (set-param sound-rpc-set-param :offset 0) - (set-master-volume sound-rpc-set-master-volume :offset 0) - (pause-group sound-rpc-pause-group :offset 0) - (stop-group sound-rpc-stop-group :offset 0) - (continue-group sound-rpc-continue-group :offset 0) - (get-irx-version sound-rpc-get-irx-version :offset 0) - (set-language sound-rpc-set-language :offset 0) - (set-reverb sound-rpc-set-reverb :offset 0) - (set-fps sound-rpc-set-fps :offset 0) - (set-globals sound-rpc-set-globals :offset 0) - (shutdown sound-rpc-shutdown :offset 0) - (list-sounds sound-rpc-list-sounds :offset 0) - (unload-music sound-rpc-unload-music :offset 0) + ((data uint32 12) + (load-bank sound-rpc-load-bank :overlay-at (-> data 0)) + (unload-bank sound-rpc-unload-bank :overlay-at (-> data 0)) + (play sound-rpc-play :overlay-at (-> data 0)) + (pause-sound sound-rpc-pause-sound :overlay-at (-> data 0)) + (stop-sound sound-rpc-stop-sound :overlay-at (-> data 0)) + (continue-sound sound-rpc-continue-sound :overlay-at (-> data 0)) + (set-param sound-rpc-set-param :overlay-at (-> data 0)) + (set-master-volume sound-rpc-set-master-volume :overlay-at (-> data 0)) + (pause-group sound-rpc-pause-group :overlay-at (-> data 0)) + (stop-group sound-rpc-stop-group :overlay-at (-> data 0)) + (continue-group sound-rpc-continue-group :overlay-at (-> data 0)) + (get-irx-version sound-rpc-get-irx-version :overlay-at (-> data 0)) + (set-language sound-rpc-set-language :overlay-at (-> data 0)) + (set-reverb sound-rpc-set-reverb :overlay-at (-> data 0)) + (set-fps sound-rpc-set-fps :overlay-at (-> data 0)) + (set-globals sound-rpc-set-globals :overlay-at (-> data 0)) + (shutdown sound-rpc-shutdown :overlay-at (-> data 0)) + (list-sounds sound-rpc-list-sounds :overlay-at (-> data 0)) + (unload-music sound-rpc-unload-music :overlay-at (-> data 0)) ) - :method-count-assert 9 - :size-assert #x30 - :flag-assert #x900000030 ) + (deftype sound-info (structure) - ((flags uint32 :offset-assert 0) - (num-instances uint32 :offset-assert 4) - (index uint32 :offset-assert 8) - (name uint128 :offset-assert 16) - (group uint8 :offset-assert 32) - (fo-power float :offset-assert 36) - (fo-min float :offset-assert 40) - (fo-max float :offset-assert 44) - (volume float :offset-assert 48) - (pan float :offset-assert 52) - (priority int8 :offset-assert 56) - (duck-amount float :offset-assert 60) + ((flags uint32) + (num-instances uint32) + (index uint32) + (name uint128) + (group uint8) + (fo-power float) + (fo-min float) + (fo-max float) + (volume float) + (pan float) + (priority int8) + (duck-amount float) ) - :method-count-assert 9 - :size-assert #x40 - :flag-assert #x900000040 ) + (deftype sound-spec (sound-play-params) - ((auto-time int32 :offset-assert 12) - (auto-from int32 :offset-assert 16) - (info sound-info :offset-assert 20) - (info-index uint32 :offset-assert 24) - (trans vector :inline :offset-assert 32) ;; int32 4 - (flags uint16 :offset-assert 48) - (fo-min float :offset-assert 52) ;; int16 - (fo-max float :offset-assert 56) ;; int16 - (fo-power float :offset-assert 60) + ((auto-time int32) + (auto-from int32) + (info sound-info) + (info-index uint32) + (trans vector :inline) + (flags uint16) + (fo-min float) + (fo-max float) + (fo-power float) ) - :method-count-assert 9 - :size-assert #x40 - :flag-assert #x900000040 ) + (deftype sound-handle (structure) - ((proc uint64 :offset-assert 0) - (flags uint64 :offset-assert 8) - (fader-cur float :offset-assert 16) - (fader-targ float :offset-assert 20) - (dist float :offset-assert 24) - (viewport int8 :offset-assert 28) - (num-instances uint8 :offset-assert 29) - (svc uint8 :offset-assert 30) - (index uint8 :offset-assert 31) + ((proc uint64) + (flags uint64) + (fader-cur float) + (fader-targ float) + (dist float) + (viewport int8) + (num-instances uint8) + (svc uint8) + (index uint8) ) - :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 ) + (deftype sound-instance (sound-spec) - ((last-update uint64 :offset-assert 64) - (joint uint8 :offset-assert 72) - (sh sound-handle :offset-assert 76) - (id uint32 :offset-assert 80) - (pan-angle float :offset-assert 84) - (volumef float :offset-assert 88) + ((last-update uint64) + (joint uint8) + (sh sound-handle) + (id uint32) + (pan-angle float) + (volumef float) ) - :method-count-assert 9 - :size-assert #x5c - :flag-assert #x90000005c ) -;; +++gsound-h:sound-bank-mode -(defenum sound-bank-mode - :type uint32 - (none 0) - (unknown 1) - (common 2) - (mode 3) - (full 4) - (half 5) - (halfa 6) - (halfb 7) - (halfc 8) - (virtual 9) - ) -;; ---gsound-h:sound-bank-mode (deftype sound-bank-state (structure) - ((name symbol :offset-assert 0) ;; guessed by decompiler - (mode sound-bank-mode :offset-assert 4) ;; guessed by decompiler - (high basic :offset-assert 8) - (str-name basic :offset-assert 12) + ((name symbol) + (mode sound-bank-mode) + (high basic) + (str-name basic) ) :pack-me - :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 ) -;; +++gsound-h:stream-status -(defenum stream-status - :type uint32 - :bitfield #t - (ss1 1) ;; id-is-playing - (ss4 4) ;; is-playing - (ss6 6) ;; id-is-playing - (ss9 9) + +(define *current-sound-id* (the-as sound-id #x10000)) + +(deftype sound-iop-info (structure) + ((freemem uint32) + (freemem2 uint32) + (nocd uint32) + (dirtycd uint32) + (chinfo uint8 48) + (id-info sound-info 48) + (pad int32 2) + (music-position uint32) + (music-status uint32 :offset 268) + (music-name string :offset 272) + (stream-position uint32 4 :offset 320) + (stream-status stream-status 4) + (stream-name sound-stream-name 4 :inline) + (stream-id sound-id 4) + (stream-id-signed int32 4 :overlay-at (-> stream-id 0)) + (sound-banks sound-bank-state 8 :inline :offset 560) + (sound-iop-info-pad int32 4) + ) ) -;; ---gsound-h:stream-status \ No newline at end of file + + +(define *sound-iop-info* (new 'global 'sound-iop-info)) + +(deftype ambient-sound (basic) + ((playing-id sound-id) + (entity entity) + (sound-count int32) + (spec sound-spec :inline) + (play-time uint64) + (time-base uint64) + (time-random uint64) + ) + (:methods + (new (symbol type basic vector float) _type_) + (ambient-sound-method-9 () none) + (ambient-sound-method-10 () none) + (ambient-sound-method-11 () none) + (ambient-sound-method-12 () none) + (ambient-sound-method-13 () none) + (ambient-sound-method-14 () none) + (ambient-sound-method-15 () none) + (ambient-sound-method-16 () none) + ) + ) + + +;; WARN: Return type mismatch object vs ambient-sound. +;; ERROR: Unsupported inline assembly instruction kind - [srl v1, v1, 24] +;; ERROR: Unsupported inline assembly instruction kind - [srl v1, v1, 24] +;; ERROR: Unsupported inline assembly instruction kind - [srl v1, v1, 24] +;; ERROR: Unsupported inline assembly instruction kind - [srl a0, a0, 24] +;; ERROR: Unsupported inline assembly instruction kind - [srl a0, a0, 24] +;; ERROR: Unsupported inline assembly instruction kind - [srl v1, v1, 24] +;; ERROR: Unsupported inline assembly instruction kind - [srl a0, a0, 24] +;; ERROR: Unsupported inline assembly instruction kind - [srl a1, a1, 24] +;; (defmethod new ambient-sound ((allocation symbol) (type-to-make type) (arg0 basic) (arg1 vector) (arg2 float)) +;; "Set up ambient-sound. Can use an entity-actor (grabs from lump), sound-spec, or name as a string." +;; (local-vars +;; (r0-0 uint128) +;; (v1-10 uint128) +;; (v1-64 int) +;; (v1-65 int) +;; (v1-67 int) +;; (v1-68 int) +;; (v1-126 uint128) +;; (v1-131 uint128) +;; (v1-139 uint128) +;; (v1-144 uint128) +;; (v1-152 uint128) +;; (v1-157 uint128) +;; (v1-165 uint128) +;; (v1-166 int) +;; (v1-169 uint128) +;; (v1-170 int) +;; (v1-176 uint128) +;; (v1-181 uint128) +;; (v1-189 uint128) +;; (v1-194 uint128) +;; (v1-202 uint128) +;; (v1-207 uint128) +;; (v1-215 uint128) +;; (v1-219 uint128) +;; (a0-58 int) +;; (a0-59 int) +;; (a0-61 int) +;; (a0-62 int) +;; (a0-110 uint128) +;; (a0-113 uint128) +;; (a0-118 uint128) +;; (a0-121 uint128) +;; (a0-126 uint128) +;; (a0-129 uint128) +;; (a0-134 uint128) +;; (a0-135 int) +;; (a0-136 uint128) +;; (a0-141 uint128) +;; (a0-144 uint128) +;; (a0-149 uint128) +;; (a0-152 uint128) +;; (a0-157 uint128) +;; (a0-160 uint128) +;; (a0-165 uint128) +;; (a0-167 uint128) +;; (a1-14 uint128) +;; (a1-22 uint128) +;; (a1-30 uint128) +;; (a1-38 uint128) +;; (a1-39 int) +;; (a1-45 uint128) +;; (a1-53 uint128) +;; (a1-61 uint128) +;; (a1-69 uint128) +;; ) +;; (with-pp +;; (let ((sv-16 (the-as sound-spec #f)) +;; (sv-32 0) +;; (sv-48 (the-as (pointer float) #f)) +;; (sv-52 (the-as pointer #f)) +;; (sv-56 0) +;; ) +;; (case (-> arg0 type) +;; ((entity-actor) +;; (let* ((a0-3 +;; ((method-of-type res-lump get-property-struct) +;; (the-as res-lump arg0) +;; 'effect-name +;; 'exact +;; arg2 +;; (the-as structure #f) +;; (the-as (pointer res-tag) #f) +;; *res-static-buf* +;; ) +;; ) +;; (v1-2 (when a0-3 +;; (case (rtype-of a0-3) +;; ((symbol) +;; (symbol->string (the-as symbol a0-3)) +;; ) +;; ((string) +;; a0-3 +;; ) +;; (else +;; "unknown" +;; ) +;; ) +;; ) +;; ) +;; ) +;; (when v1-2 +;; (set! sv-32 (the-as int (string->sound-name (the-as string v1-2)))) +;; (set! sv-48 (res-lump-data (the-as res-lump arg0) 'cycle-speed (pointer float))) +;; (let* ((sv-64 0) +;; (v1-8 +;; ((method-of-type res-lump get-property-data) +;; (the-as res-lump arg0) +;; 'effect-param +;; 'exact +;; arg2 +;; (the-as pointer #f) +;; (the-as (pointer res-tag) (& sv-64)) +;; *res-static-buf* +;; ) +;; ) +;; ) +;; (when v1-8 +;; (set! sv-52 v1-8) +;; (let ((v1-9 (the-as uint128 sv-64))) +;; (.pcpyud v1-10 v1-9 r0-0) +;; ) +;; (set! sv-56 (shr (* (the-as int v1-10) 2) 49)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; ((sound-spec) +;; (set! sv-16 (the-as sound-spec arg0)) +;; (set! sv-32 (the-as int (-> sv-16 info name))) +;; ) +;; ((string) +;; (set! sv-32 (the-as int (string->sound-name (the-as string arg0)))) +;; ) +;; (else +;; (format 0 "ERROR: ambient sound was told to play an unknown ~A.~%" arg0) +;; ) +;; ) +;; (the-as +;; ambient-sound +;; (cond +;; ((nonzero? sv-32) +;; (let ((s5-1 (the-as object (object-new allocation type-to-make (the-as int (-> type-to-make size)))))) +;; (cond +;; (sv-16 +;; (quad-copy! (the-as pointer (-> (the-as ambient-sound s5-1) spec)) (the-as pointer sv-16) 4) +;; ) +;; (else +;; (set! (-> (the-as ambient-sound s5-1) spec volume) 1024) +;; (set! (-> (the-as ambient-sound s5-1) spec pitch-mod) 0) +;; (effect-param->sound-spec +;; (-> (the-as ambient-sound s5-1) spec) +;; (the-as (pointer float) sv-52) +;; sv-56 +;; (the-as process-focusable pp) +;; ) +;; (when (and (>= (the-as uint (shr (shl sv-32 56) 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr (shl sv-32 56) 56))) +;; ) +;; (if (and (nonzero? (shr (shl sv-32 56) 56)) +;; (>= (the-as uint (shr (shl sv-32 56) 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr (shl sv-32 56) 56))) +;; ) +;; (set! sv-32 (logior (logand sv-32 -256) (shr (shl (+ (shr (shl sv-32 56) 56) 32) 56) 56))) +;; ) +;; (if (and (nonzero? (shr (shl sv-32 48) 56)) +;; (>= (the-as uint (shr (shl sv-32 48) 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr (shl sv-32 48) 56))) +;; ) +;; (set! sv-32 (logior (logand sv-32 -65281) (shr (shl (+ (shr (shl sv-32 48) 56) 32) 56) 48))) +;; ) +;; (if (and (nonzero? (shr (shl sv-32 40) 56)) +;; (>= (the-as uint (shr (shl sv-32 40) 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr (shl sv-32 40) 56))) +;; ) +;; (set! sv-32 (logior (logand sv-32 -16711681) (shr (shl (+ (shr (shl sv-32 40) 56) 32) 56) 40))) +;; ) +;; (.srl v1-65 v1-64 24) +;; (when (and (nonzero? v1-65) +;; (begin (.srl v1-68 v1-67 24) (>= (the-as uint v1-68) (the-as uint 65))) +;; (let ((v1-69 90)) +;; (.srl a0-59 a0-58 24) +;; (>= (the-as uint v1-69) (the-as uint a0-59)) +;; ) +;; ) +;; (let ((v1-72 (logand sv-32 (the-as uint #xffffffff00ffffff)))) +;; (.srl a0-62 a0-61 24) +;; (set! sv-32 (logior v1-72 (shr (shl (+ a0-62 32) 56) 32))) +;; ) +;; ) +;; (if (and (nonzero? (shr (shl sv-32 24) 56)) +;; (>= (the-as uint (shr (shl sv-32 24) 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr (shl sv-32 24) 56))) +;; ) +;; (set! sv-32 +;; (logior (logand sv-32 (the-as uint #xffffff00ffffffff)) (shr (shl (+ (shr (shl sv-32 24) 56) 32) 56) 24)) +;; ) +;; ) +;; (if (and (nonzero? (shr (shl sv-32 16) 56)) +;; (>= (the-as uint (shr (shl sv-32 16) 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr (shl sv-32 16) 56))) +;; ) +;; (set! sv-32 +;; (logior (logand sv-32 (the-as uint #xffff00ffffffffff)) (shr (shl (+ (shr (shl sv-32 16) 56) 32) 56) 16)) +;; ) +;; ) +;; (if (and (nonzero? (shr (* sv-32 256) 56)) +;; (>= (the-as uint (shr (* sv-32 256) 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr (* sv-32 256) 56))) +;; ) +;; (set! sv-32 +;; (logior (logand sv-32 (the-as uint #xff00ffffffffffff)) (shr (shl (+ (shr (* sv-32 256) 56) 32) 56) 8)) +;; ) +;; ) +;; (if (and (nonzero? (shr sv-32 56)) +;; (>= (the-as uint (shr sv-32 56)) (the-as uint 65)) +;; (>= (the-as uint 90) (the-as uint (shr sv-32 56))) +;; ) +;; (set! sv-32 (logior (logand sv-32 (the-as uint #xffffffffffffff)) (shr (shl (+ (shr sv-32 56) 32) 56) 0))) +;; ) +;; (let ((v1-125 (the-as uint128 sv-32))) +;; (.pcpyud v1-126 v1-125 r0-0) +;; ) +;; (when (and (nonzero? (shr (shl (the-as int v1-126) 56) 56)) +;; (begin +;; (let ((v1-130 (the-as uint128 sv-32))) +;; (.pcpyud v1-131 v1-130 r0-0) +;; ) +;; (>= (the-as uint (shr (shl (the-as int v1-131) 56) 56)) (the-as uint 65)) +;; ) +;; (let ((v1-134 90)) +;; (let ((a0-109 (the-as uint128 sv-32))) +;; (.pcpyud a0-110 a0-109 r0-0) +;; ) +;; (>= (the-as uint v1-134) (the-as uint (shr (shl (the-as int a0-110) 56) 56))) +;; ) +;; ) +;; (let ((v1-136 (the-as uint128 sv-32))) +;; (.pcpyud a0-113 v1-136 r0-0) +;; (let ((a0-114 (logand (the-as int a0-113) -256))) +;; (let ((a1-13 (the-as uint128 sv-32))) +;; (.pcpyud a1-14 a1-13 r0-0) +;; ) +;; (set! sv-32 +;; (the-as +;; int +;; (make-u128 (logior a0-114 (shr (shl (+ (shr (shl (the-as int a1-14) 56) 56) 32) 56) 56)) (the-as int v1-136)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; (let ((v1-138 (the-as uint128 sv-32))) +;; (.pcpyud v1-139 v1-138 r0-0) +;; ) +;; (when (and (nonzero? (shr (shl (the-as int v1-139) 48) 56)) +;; (begin +;; (let ((v1-143 (the-as uint128 sv-32))) +;; (.pcpyud v1-144 v1-143 r0-0) +;; ) +;; (>= (the-as uint (shr (shl (the-as int v1-144) 48) 56)) (the-as uint 65)) +;; ) +;; (let ((v1-147 90)) +;; (let ((a0-117 (the-as uint128 sv-32))) +;; (.pcpyud a0-118 a0-117 r0-0) +;; ) +;; (>= (the-as uint v1-147) (the-as uint (shr (shl (the-as int a0-118) 48) 56))) +;; ) +;; ) +;; (let ((v1-149 (the-as uint128 sv-32))) +;; (.pcpyud a0-121 v1-149 r0-0) +;; (let ((a0-122 (logand (the-as int a0-121) -65281))) +;; (let ((a1-21 (the-as uint128 sv-32))) +;; (.pcpyud a1-22 a1-21 r0-0) +;; ) +;; (set! sv-32 +;; (the-as +;; int +;; (make-u128 (logior a0-122 (shr (shl (+ (shr (shl (the-as int a1-22) 48) 56) 32) 56) 48)) (the-as int v1-149)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; (let ((v1-151 (the-as uint128 sv-32))) +;; (.pcpyud v1-152 v1-151 r0-0) +;; ) +;; (when (and (nonzero? (shr (shl (the-as int v1-152) 40) 56)) +;; (begin +;; (let ((v1-156 (the-as uint128 sv-32))) +;; (.pcpyud v1-157 v1-156 r0-0) +;; ) +;; (>= (the-as uint (shr (shl (the-as int v1-157) 40) 56)) (the-as uint 65)) +;; ) +;; (let ((v1-160 90)) +;; (let ((a0-125 (the-as uint128 sv-32))) +;; (.pcpyud a0-126 a0-125 r0-0) +;; ) +;; (>= (the-as uint v1-160) (the-as uint (shr (shl (the-as int a0-126) 40) 56))) +;; ) +;; ) +;; (let ((v1-162 (the-as uint128 sv-32))) +;; (.pcpyud a0-129 v1-162 r0-0) +;; (let ((a0-130 (logand (the-as int a0-129) -16711681))) +;; (let ((a1-29 (the-as uint128 sv-32))) +;; (.pcpyud a1-30 a1-29 r0-0) +;; ) +;; (set! sv-32 +;; (the-as +;; int +;; (make-u128 (logior a0-130 (shr (shl (+ (shr (shl (the-as int a1-30) 40) 56) 32) 56) 40)) (the-as int v1-162)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; (let ((v1-164 (the-as uint128 sv-32))) +;; (.pcpyud v1-165 v1-164 r0-0) +;; ) +;; (.srl v1-166 (the-as int v1-165) 24) +;; (when (and (nonzero? v1-166) +;; (begin +;; (let ((v1-168 (the-as uint128 sv-32))) +;; (.pcpyud v1-169 v1-168 r0-0) +;; ) +;; (.srl v1-170 (the-as int v1-169) 24) +;; (>= (the-as uint v1-170) (the-as uint 65)) +;; ) +;; (let ((v1-171 90)) +;; (let ((a0-133 (the-as uint128 sv-32))) +;; (.pcpyud a0-134 a0-133 r0-0) +;; ) +;; (.srl a0-135 (the-as int a0-134) 24) +;; (>= (the-as uint v1-171) (the-as uint a0-135)) +;; ) +;; ) +;; (let ((v1-173 (the-as uint128 sv-32))) +;; (.pcpyud a0-136 v1-173 r0-0) +;; (let ((a0-137 (logand (the-as int a0-136) (the-as uint #xffffffff00ffffff)))) +;; (let ((a1-37 (the-as uint128 sv-32))) +;; (.pcpyud a1-38 a1-37 r0-0) +;; ) +;; (.srl a1-39 (the-as int a1-38) 24) +;; (set! sv-32 (the-as int (make-u128 (logior a0-137 (shr (shl (+ a1-39 32) 56) 32)) (the-as int v1-173)))) +;; ) +;; ) +;; ) +;; (let ((v1-175 (the-as uint128 sv-32))) +;; (.pcpyud v1-176 v1-175 r0-0) +;; ) +;; (when (and (nonzero? (shr (shl (the-as int v1-176) 24) 56)) +;; (begin +;; (let ((v1-180 (the-as uint128 sv-32))) +;; (.pcpyud v1-181 v1-180 r0-0) +;; ) +;; (>= (the-as uint (shr (shl (the-as int v1-181) 24) 56)) (the-as uint 65)) +;; ) +;; (let ((v1-184 90)) +;; (let ((a0-140 (the-as uint128 sv-32))) +;; (.pcpyud a0-141 a0-140 r0-0) +;; ) +;; (>= (the-as uint v1-184) (the-as uint (shr (shl (the-as int a0-141) 24) 56))) +;; ) +;; ) +;; (let ((v1-186 (the-as uint128 sv-32))) +;; (.pcpyud a0-144 v1-186 r0-0) +;; (let ((a0-145 (logand (the-as int a0-144) (the-as uint #xffffff00ffffffff)))) +;; (let ((a1-44 (the-as uint128 sv-32))) +;; (.pcpyud a1-45 a1-44 r0-0) +;; ) +;; (set! sv-32 +;; (the-as +;; int +;; (make-u128 (logior a0-145 (shr (shl (+ (shr (shl (the-as int a1-45) 24) 56) 32) 56) 24)) (the-as int v1-186)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; (let ((v1-188 (the-as uint128 sv-32))) +;; (.pcpyud v1-189 v1-188 r0-0) +;; ) +;; (when (and (nonzero? (shr (shl (the-as int v1-189) 16) 56)) +;; (begin +;; (let ((v1-193 (the-as uint128 sv-32))) +;; (.pcpyud v1-194 v1-193 r0-0) +;; ) +;; (>= (the-as uint (shr (shl (the-as int v1-194) 16) 56)) (the-as uint 65)) +;; ) +;; (let ((v1-197 90)) +;; (let ((a0-148 (the-as uint128 sv-32))) +;; (.pcpyud a0-149 a0-148 r0-0) +;; ) +;; (>= (the-as uint v1-197) (the-as uint (shr (shl (the-as int a0-149) 16) 56))) +;; ) +;; ) +;; (let ((v1-199 (the-as uint128 sv-32))) +;; (.pcpyud a0-152 v1-199 r0-0) +;; (let ((a0-153 (logand (the-as int a0-152) (the-as uint #xffff00ffffffffff)))) +;; (let ((a1-52 (the-as uint128 sv-32))) +;; (.pcpyud a1-53 a1-52 r0-0) +;; ) +;; (set! sv-32 +;; (the-as +;; int +;; (make-u128 (logior a0-153 (shr (shl (+ (shr (shl (the-as int a1-53) 16) 56) 32) 56) 16)) (the-as int v1-199)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; (let ((v1-201 (the-as uint128 sv-32))) +;; (.pcpyud v1-202 v1-201 r0-0) +;; ) +;; (when (and (nonzero? (shr (* (the-as int v1-202) 256) 56)) +;; (begin +;; (let ((v1-206 (the-as uint128 sv-32))) +;; (.pcpyud v1-207 v1-206 r0-0) +;; ) +;; (>= (the-as uint (shr (* (the-as int v1-207) 256) 56)) (the-as uint 65)) +;; ) +;; (let ((v1-210 90)) +;; (let ((a0-156 (the-as uint128 sv-32))) +;; (.pcpyud a0-157 a0-156 r0-0) +;; ) +;; (>= (the-as uint v1-210) (the-as uint (shr (* (the-as int a0-157) 256) 56))) +;; ) +;; ) +;; (let ((v1-212 (the-as uint128 sv-32))) +;; (.pcpyud a0-160 v1-212 r0-0) +;; (let ((a0-161 (logand (the-as int a0-160) (the-as uint #xff00ffffffffffff)))) +;; (let ((a1-60 (the-as uint128 sv-32))) +;; (.pcpyud a1-61 a1-60 r0-0) +;; ) +;; (set! sv-32 +;; (the-as +;; int +;; (make-u128 (logior a0-161 (shr (shl (+ (shr (* (the-as int a1-61) 256) 56) 32) 56) 8)) (the-as int v1-212)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; (let ((v1-214 (the-as uint128 sv-32))) +;; (.pcpyud v1-215 v1-214 r0-0) +;; ) +;; (when (and (nonzero? (shr (the-as int v1-215) 56)) +;; (begin +;; (let ((v1-218 (the-as uint128 sv-32))) +;; (.pcpyud v1-219 v1-218 r0-0) +;; ) +;; (>= (the-as uint (shr (the-as int v1-219) 56)) (the-as uint 65)) +;; ) +;; (let ((v1-221 90)) +;; (let ((a0-164 (the-as uint128 sv-32))) +;; (.pcpyud a0-165 a0-164 r0-0) +;; ) +;; (>= (the-as uint v1-221) (the-as uint (shr (the-as int a0-165) 56))) +;; ) +;; ) +;; (let ((v1-223 (the-as uint128 sv-32))) +;; (.pcpyud a0-167 v1-223 r0-0) +;; (let ((a0-168 (logand (the-as int a0-167) (the-as uint #xffffffffffffff)))) +;; (let ((a1-68 (the-as uint128 sv-32))) +;; (.pcpyud a1-69 a1-68 r0-0) +;; ) +;; (set! sv-32 +;; (the-as +;; int +;; (make-u128 (logior a0-168 (shr (shl (+ (shr (the-as int a1-69) 56) 32) 56) 0)) (the-as int v1-223)) +;; ) +;; ) +;; ) +;; ) +;; ) +;; ) +;; (set! (-> (the-as ambient-sound s5-1) spec info) (sound-info-by-name (the-as string sv-32))) +;; ) +;; ) +;; (set! (-> (the-as ambient-sound s5-1) playing-id) (new-sound-id)) +;; (set! (-> (the-as ambient-sound s5-1) entity) #f) +;; (set! (-> (the-as ambient-sound s5-1) sound-count) 1) +;; (cond +;; (sv-48 +;; (set! (-> (the-as ambient-sound s5-1) time-base) (the-as uint (the int (* 300.0 (-> sv-48 0))))) +;; (set! (-> (the-as ambient-sound s5-1) time-random) (the-as uint (the int (* 300.0 (-> sv-48 1))))) +;; ) +;; (else +;; (set! (-> (the-as ambient-sound s5-1) time-base) (the-as uint -1)) +;; ) +;; ) +;; (set! (-> (the-as ambient-sound s5-1) spec trans quad) (-> arg1 quad)) +;; s5-1 +;; ) +;; ) +;; (else +;; 0 +;; ) +;; ) +;; ) +;; ) +;; ) +;; ) + +(define *jukebox-time* 0) diff --git a/goal_src/jakx/engine/sound/gsound.gc b/goal_src/jakx/engine/sound/gsound.gc index f022f90d37..c272f4a1f8 100644 --- a/goal_src/jakx/engine/sound/gsound.gc +++ b/goal_src/jakx/engine/sound/gsound.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define-extern get-sound-buffer-entry (function pointer)) \ No newline at end of file diff --git a/goal_src/jakx/engine/util/dynamic-patch.gc b/goal_src/jakx/engine/util/dynamic-patch.gc index 54584e47b0..b5cd743d3c 100644 --- a/goal_src/jakx/engine/util/dynamic-patch.gc +++ b/goal_src/jakx/engine/util/dynamic-patch.gc @@ -7,3 +7,4 @@ ;; DECOMP BEGINS +(define-extern dynamic-patch-hook (function dgo-header kheap uint none)) \ No newline at end of file diff --git a/goal_src/jakx/engine/util/glist-h.gc b/goal_src/jakx/engine/util/glist-h.gc index 3a1a9a7d4a..f9296362a2 100644 --- a/goal_src/jakx/engine/util/glist-h.gc +++ b/goal_src/jakx/engine/util/glist-h.gc @@ -7,3 +7,71 @@ ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(deftype glst-node (structure) + ((next glst-node) + (prev glst-node) + ) + ) + + +(deftype glst-named-node (glst-node) + ((privname string) + ) + ) + + +(deftype glst-list (structure) + ((head glst-node) + (tail glst-node) + (tailpred glst-node) + (numelem int32) + ) + ) + + +(defun glst-next ((arg0 glst-node)) + "return the next node in the list" + (-> arg0 next) + ) + +(defun glst-prev ((arg0 glst-node)) + "return the previous node in the list" + (-> arg0 prev) + ) + +(defun glst-head ((arg0 glst-list)) + "return the start of the list" + (-> arg0 head) + ) + +(defun glst-tail ((arg0 glst-list)) + "return the tail of the list" + (-> arg0 tailpred) + ) + +(defun glst-end-of-list? ((arg0 glst-node)) + "is this node the end of the list. #t = end" + (not (-> arg0 next)) + ) + +(defun glst-start-of-list? ((arg0 glst-node)) + "is this node the start of the list. #t = start" + (not (-> arg0 prev)) + ) + +(defun glst-empty? ((arg0 glst-list)) + "is the list empty, #t = empty" + (= (-> arg0 tailpred) arg0) + ) + +(defun glst-node-name ((arg0 glst-named-node)) + (-> arg0 privname) + ) + +(defun glst-set-name! ((arg0 glst-named-node) (arg1 string)) + (set! (-> arg0 privname) arg1) + arg1 + ) diff --git a/goal_src/jakx/engine/util/glist.gc b/goal_src/jakx/engine/util/glist.gc index 5d614d7d98..6f187cbd73 100644 --- a/goal_src/jakx/engine/util/glist.gc +++ b/goal_src/jakx/engine/util/glist.gc @@ -7,3 +7,182 @@ ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(defun glst-num-elements ((arg0 glst-list)) + (-> arg0 numelem) + ) + +(defun glst-remove ((arg0 glst-list) (arg1 glst-node)) + (let ((v1-0 arg1)) + "return the previous node in the list" + (let ((v1-1 (-> v1-0 prev)) + (a2-1 arg1) + ) + "return the next node in the list" + (let ((a2-2 (-> a2-1 next))) + (set! (-> v1-1 next) a2-2) + (set! (-> a2-2 prev) v1-1) + ) + ) + ) + (+! (-> arg0 numelem) -1) + arg1 + ) + +(defun glst-remove-tail ((arg0 glst-list)) + (let ((v1-0 arg0)) + "return the tail of the list" + (let* ((a1-1 (-> v1-0 tailpred)) + (v1-1 a1-1) + ) + "is this node the start of the list. #t = start" + (if (not (not (-> v1-1 prev))) + (glst-remove arg0 a1-1) + (the-as glst-node #f) + ) + ) + ) + ) + +(defun glst-remove-head ((arg0 glst-list)) + (let ((v1-0 arg0)) + "return the start of the list" + (let* ((a1-1 (-> v1-0 head)) + (v1-1 a1-1) + ) + "is this node the end of the list. #t = end" + (if (not (not (-> v1-1 next))) + (glst-remove arg0 a1-1) + (the-as glst-node #f) + ) + ) + ) + ) + +(defun glst-insert-before ((arg0 glst-list) (arg1 glst-node) (arg2 glst-node)) + (let ((v1-0 arg1)) + "return the previous node in the list" + (let ((v1-1 (-> v1-0 prev))) + (set! (-> arg2 prev) v1-1) + (set! (-> arg2 next) arg1) + (set! (-> v1-1 next) arg2) + ) + ) + (set! (-> arg1 prev) arg2) + (+! (-> arg0 numelem) 1) + arg2 + ) + +(defun glst-insert-after ((arg0 glst-list) (arg1 glst-node) (arg2 glst-node)) + (let ((v1-0 arg1)) + "return the next node in the list" + (let ((v1-1 (-> v1-0 next))) + (set! (-> arg2 prev) arg1) + (set! (-> arg2 next) v1-1) + (set! (-> v1-1 prev) arg2) + ) + ) + (set! (-> arg1 next) arg2) + (+! (-> arg0 numelem) 1) + arg2 + ) + +(defun glst-add-tail ((arg0 glst-list) (arg1 glst-node)) + (glst-insert-before arg0 (the-as glst-node (&-> arg0 tail)) arg1) + arg1 + ) + +(defun glst-add-head ((arg0 glst-list) (arg1 glst-node)) + (glst-insert-after arg0 (the-as glst-node arg0) arg1) + arg1 + ) + +(defun glst-init-list! ((arg0 glst-list)) + (set! (-> arg0 head) (the-as glst-node (&-> arg0 tail))) + (set! (-> arg0 tail) #f) + (set! (-> arg0 tailpred) (the-as glst-node (&-> arg0 head))) + (set! (-> arg0 numelem) 0) + arg0 + ) + +(defun glst-find-node-by-name ((arg0 glst-list) (arg1 string)) + (let ((v1-0 arg0)) + "return the start of the list" + (let ((s5-0 (-> v1-0 head))) + (while (let ((v1-6 s5-0)) + "is this node the end of the list. #t = end" + (not (not (-> v1-6 next))) + ) + (if (name= (-> (the-as glst-named-node s5-0) privname) arg1) + (return s5-0) + ) + "return the next node in the list" + (set! s5-0 (-> s5-0 next)) + ) + ) + ) + (the-as glst-node #f) + ) + +(defun glst-get-node-by-index ((arg0 glst-list) (arg1 int)) + (when (and (< arg1 (glst-num-elements arg0)) (>= arg1 0)) + "return the start of the list" + (let ((v1-3 (-> arg0 head))) + (dotimes (a0-3 arg1) + (nop!) + (nop!) + (nop!) + (nop!) + "return the next node in the list" + (set! v1-3 (-> v1-3 next)) + ) + (return v1-3) + ) + ) + (the-as glst-node #f) + ) + +(defun glst-length-of-longest-name ((arg0 glst-list)) + (let ((gp-0 0)) + (let ((v1-0 arg0)) + "return the start of the list" + (let ((s5-0 (-> v1-0 head))) + (while (let ((v1-6 s5-0)) + "is this node the end of the list. #t = end" + (not (not (-> v1-6 next))) + ) + (let ((v1-3 (length (-> (the-as glst-named-node s5-0) privname)))) + (if (< gp-0 v1-3) + (set! gp-0 v1-3) + ) + ) + "return the next node in the list" + (set! s5-0 (-> s5-0 next)) + ) + ) + ) + gp-0 + ) + ) + +(defun glst-get-node-index ((arg0 glst-list) (arg1 glst-node)) + (let ((v1-0 0)) + "return the start of the list" + (let ((a0-1 (-> arg0 head))) + (while (let ((a2-3 a0-1)) + "is this node the end of the list. #t = end" + (not (not (-> a2-3 next))) + ) + (if (= a0-1 arg1) + (return v1-0) + ) + (+! v1-0 1) + "return the next node in the list" + (set! a0-1 (-> a0-1 next)) + ) + ) + ) + -1 + ) diff --git a/goal_src/jakx/engine/util/obj-list.gc b/goal_src/jakx/engine/util/obj-list.gc index 6d668fbb55..7d11778e3c 100644 --- a/goal_src/jakx/engine/util/obj-list.gc +++ b/goal_src/jakx/engine/util/obj-list.gc @@ -7,3 +7,89 @@ ;; DECOMP BEGINS +;; definition of type list-link +(deftype list-link (structure) + ((prev list-link) + (next list-link) + ) + :pack-me + ) + +;; definition for method 3 of type list-link +(defmethod inspect ((this list-link)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'list-link) + (format #t "~1Tprev: #~%" (-> this prev)) + (format #t "~1Tnext: #~%" (-> this next)) + (label cfg-4) + this + ) + +;; definition of type linked-list +(deftype linked-list (structure) + ((head list-link) + (tail list-link) + ) + (:methods + (clear! (_type_) none) + (linked-list-method-10 (_type_ list-link) none) + (linked-list-method-11 (_type_ list-link) none) + ) + ) + +;; definition for method 3 of type linked-list +(defmethod inspect ((this linked-list)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'linked-list) + (format #t "~1Thead: #~%" (-> this head)) + (format #t "~1Ttail: #~%" (-> this tail)) + (label cfg-4) + this + ) + +;; definition for method 9 of type linked-list +;; WARN: Return type mismatch int vs none. +(defmethod clear! ((this linked-list)) + (set! (-> this head) #f) + (set! (-> this tail) #f) + 0 + (none) + ) + +;; definition for method 10 of type linked-list +;; WARN: Return type mismatch int vs none. +(defmethod linked-list-method-10 ((this linked-list) (arg0 list-link)) + (set! (-> arg0 next) #f) + (set! (-> arg0 prev) (-> this tail)) + (if (-> this tail) + (set! (-> this tail next) arg0) + (set! (-> this head) arg0) + ) + (set! (-> this tail) arg0) + 0 + (none) + ) + +;; definition for method 11 of type linked-list +;; WARN: Return type mismatch int vs none. +(defmethod linked-list-method-11 ((this linked-list) (arg0 list-link)) + (if (-> arg0 prev) + (set! (-> arg0 prev next) (-> arg0 next)) + (set! (-> this head) (-> arg0 next)) + ) + (if (-> arg0 next) + (set! (-> arg0 next prev) (-> arg0 prev)) + (set! (-> this tail) (-> arg0 prev)) + ) + 0 + (none) + ) + +;; definition for function fixup-relocated-link +;; ERROR: failed type prop at 7: add failed: list-link int \ No newline at end of file diff --git a/goal_src/jakx/engine/util/profile.gc b/goal_src/jakx/engine/util/profile.gc index 84166e0da8..849f13e843 100644 --- a/goal_src/jakx/engine/util/profile.gc +++ b/goal_src/jakx/engine/util/profile.gc @@ -7,3 +7,1592 @@ ;; DECOMP BEGINS +(define *profile-spec-array* + (new 'static 'inline-array profile-spec 13 + (new 'static 'profile-spec :name 'dummy :color (new 'static 'rgba :r #x20 :g #x20 :b #x20 :a #x80)) + (new 'static 'profile-spec :name 'blit-displays :color (new 'static 'rgba :r #x20 :g #x20 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'sky :color (new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)) + (new 'static 'profile-spec :name 'ocean :color (new 'static 'rgba :r #x20 :g #x80 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'tfrag :color (new 'static 'rgba :r #x80 :g #x20 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'texture :color (new 'static 'rgba :r #x80 :g #x80 :b #x20 :a #x80)) + (new 'static 'profile-spec :name 'tie :color (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'generic :color (new 'static 'rgba :r #xc0 :g #xc0 :a #x80)) + (new 'static 'profile-spec :name 'merc :color (new 'static 'rgba :r #xc0 :b #xc0 :a #x80)) + (new 'static 'profile-spec :name 'shrubbery :color (new 'static 'rgba :r #xc0 :a #x80)) + (new 'static 'profile-spec :name 'particle :color (new 'static 'rgba :g #xc0 :b #xc0 :a #x80)) + (new 'static 'profile-spec :name 'debug :color (new 'static 'rgba :g #xc0 :a #x80)) + (new 'static 'profile-spec :name 'other :color (new 'static 'rgba :r #xc0 :g #xc0 :b #xc0 :a #x80)) + ) + ) + +(define *profile-translate-array* (new 'static 'boxed-array :type uint8 + #x0 + #x0 + #x0 + #x1 + #x5 + #x2 + #x3 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #xc + #xc + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x3 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x1 + #x5 + #x7 + #xa + #x7 + #x7 + #xa + #x7 + #xc + #xc + #xc + #xc + #xc + #xc + #x5 + #x8 + #x8 + #xb + #x5 + #xc + #xc + #xc + #xc + #xb + #xb + #xb + ) + ) + +(deftype profile-work (structure) + "DMA templates for profile drawing." + ((sprite-tmpl dma-gif-packet :inline) + (line-tmpl dma-gif-packet :inline) + (last-index int32) + ) + ) + + +(define *profile-work* (new 'static 'profile-work + :sprite-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x3023400000008001 #x551) + ) + :line-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x3020c00000008001 #x551) + ) + ) + ) + +(define *profile-x* 1808) + +(define *profile-y* 1848) + +(define *profile-w* 416) + +(define *profile-h* 8) + +(define *profile-ticks* #f) + +(defmethod start-frame! ((this profile-segment-array)) + "Restart the profiler for the start of a frame." + (set! (-> this count) 0) + (set! (-> this depth) 0) + (set! (-> this max-depth) 0) + (set! (-> this base-time) (the-as int (timer-count (the-as timer-bank #x10000800)))) + 'all + (start-segment! this 'all *profile-all-color*) + 0 + (none) + ) + +(defmethod start-segment! ((this profile-segment-array) (arg0 symbol) (arg1 rgba)) + "Start an event." + (when (and *dproc* *debug-segment*) + (let ((s4-0 (-> this data (-> this count)))) + (let ((s3-0 (-> this base-time))) + (set! (-> s4-0 name) arg0) + (set! (-> s4-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-0)))) + ) + (set! (-> s4-0 depth) (the-as uint (-> this depth))) + (set! (-> s4-0 color) arg1) + (set! (-> this segment (-> this depth)) s4-0) + ) + (set! (-> this count) (min 2099 (+ (-> this count) 1))) + (+! (-> this depth) 1) + (set! (-> this max-depth) (max (-> this max-depth) (-> this depth))) + ) + 0 + (none) + ) + +(defmethod end-segment! ((this profile-segment-array)) + "Stop the most recently started event." + (when (and *dproc* *debug-segment*) + (let* ((v1-4 (+ (-> this depth) -1)) + (s5-0 (-> this segment v1-4)) + (s4-0 (-> this base-time)) + ) + (when (>= v1-4 0) + (set! (-> s5-0 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-0)))) + (+! (-> this depth) -1) + ) + ) + ) + 0 + (none) + ) + +(defmethod postprocess-data! ((this profile-array)) + "Create the collapsed summary of the collected data." + (dotimes (s5-0 2) + (let ((s3-0 (-> *profile-array* data s5-0)) + (s4-0 *profile-collapse*) + ) + (mem-copy! (&-> s3-0 type) (&-> this data s5-0 type) #x8370) + (cond + ((zero? s5-0) + ((lambda ((arg0 profile-segment-array) (arg1 profile-collapse)) + (let ((v0-0 0)) + (dotimes (v1-0 48) + (set! (-> arg1 data v1-0 name) #f) + (set! (-> arg1 data v1-0 count) (the-as uint 0)) + (set! (-> arg1 data v1-0 vu-count) (the-as uint 0)) + (set! (-> arg1 data v1-0 depth) (the-as uint 0)) + (set! (-> arg1 data v1-0 start-time) 0) + (set! (-> arg1 data v1-0 end-time) 0) + ) + (dotimes (v1-3 (-> arg0 count)) + (let ((a2-15 (- (-> arg0 data v1-3 end-time) (-> arg0 data v1-3 start-time)))) + (let ((t0-0 (-> arg0 data v1-3 name))) + (dotimes (a3-5 v0-0) + (when (= (-> arg1 data a3-5 name) t0-0) + (+! (-> arg1 data a3-5 count) 1) + (set! (-> arg1 data a3-5 start-time) (the-as int (+ (-> arg1 data a3-5 code-time) a2-15))) + (goto cfg-11) + ) + ) + (set! (-> arg1 data v0-0 name) t0-0) + ) + (set! (-> arg1 data v0-0 count) (the-as uint 1)) + (set! (-> arg1 data v0-0 depth) (-> arg0 data v1-3 depth)) + (set! (-> arg1 data v0-0 start-time) a2-15) + ) + (set! (-> arg1 data v0-0 color) (-> arg0 data v1-3 color)) + (set! v0-0 (min 47 (+ v0-0 1))) + (label cfg-11) + ) + (set! (-> arg1 count) v0-0) + ) + (none) + ) + s3-0 + s4-0 + ) + ) + (else + (let ((v1-6 3) + (a0-5 (+ (-> s3-0 count) -1)) + ) + (while (>= a0-5 v1-6) + (let ((a2-1 (-> s3-0 data v1-6))) + (set! (-> a2-1 name) (-> *profile-spec-array* (-> *profile-translate-array* v1-6) name)) + (set! (-> a2-1 color) (-> *profile-spec-array* (-> *profile-translate-array* v1-6) color)) + (let ((a1-17 (- (-> a2-1 end-time) (-> a2-1 start-time))) + (a3-3 (-> a2-1 name)) + ) + (dotimes (a2-2 (-> s4-0 count)) + (when (= (-> s4-0 data a2-2 name) a3-3) + (+! (-> s4-0 data a2-2 vu-count) 1) + (set! (-> s4-0 data a2-2 end-time) (the-as int (+ (-> s4-0 data a2-2 vu-time) a1-17))) + (goto cfg-11) + ) + ) + ) + ) + (label cfg-11) + (+! v1-6 1) + ) + ) + (countdown (v1-9 (-> s3-0 count)) + (when (nonzero? (-> s3-0 data v1-9 end-time)) + (set! (-> s4-0 data 0 vu-count) (the-as uint 1)) + (set! (-> s4-0 data 0 end-time) (- (-> s3-0 data v1-9 end-time) (-> s3-0 data 0 start-time))) + (goto cfg-19) + ) + ) + ) + ) + ) + (label cfg-19) + ) + 0 + (none) + ) + +(defmethod draw-bars! ((this profile-array) (arg0 dma-buffer) (arg1 int)) + "Generate DMA data for drawing the profile bars." + (let ((a1-1 (-> *viewport-array* default))) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (zbuf-1 (-> a1-1 zbuf-off)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) + ) + (let ((v1-6 (* (+ *profile-x* (/ *profile-w* 2)) 16)) + (a0-9 (-> arg0 base)) + ) + (set! (-> (the-as (pointer uint128) a0-9) 0) (-> *profile-work* line-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) a0-9) 1) (-> *profile-work* line-tmpl quad 1)) + (set-vector! (the-as vector4w (&-> (the-as (pointer uint128) a0-9) 2)) 64 64 64 64) + (set-vector! (the-as vector4w (&+ a0-9 48)) v1-6 #x7340 #xffffff 0) + (set-vector! (the-as vector4w (&+ a0-9 64)) v1-6 #x7580 #xffffff 0) + ) + (&+! (-> arg0 base) 80) + (dotimes (s3-0 2) + (let* ((v1-13 (-> this data s3-0)) + (a0-11 (-> v1-13 max-depth)) + (s2-1 (max 14 (* a0-11 2))) + ) + (set! *profile-y* (+ arg1 1840)) + (let ((a1-26 (-> arg0 base))) + (set! (-> (the-as (pointer uint128) a1-26) 0) (-> *profile-work* sprite-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) a1-26) 1) (-> *profile-work* sprite-tmpl quad 1)) + (set-vector! (the-as vector4w (&-> (the-as (pointer uint128) a1-26) 2)) 64 64 64 64) + (set-vector! (the-as vector4w (&+ a1-26 48)) (* *profile-x* 16) (* *profile-y* 16) #xffffff 0) + (set-vector! + (the-as vector4w (&+ a1-26 64)) + (* (+ *profile-x* *profile-w*) 16) + (* (+ *profile-y* s2-1) 16) + #xffffff + 0 + ) + ) + (&+! (-> arg0 base) 80) + (let ((a0-12 (/ s2-1 a0-11))) + (dotimes (a1-30 (-> v1-13 count)) + (let ((a2-29 (-> v1-13 data a1-30))) + (when (< (-> a2-29 start-time) (-> a2-29 end-time)) + (let* ((t0-1 (* *ticks-per-frame* 2)) + (a3-15 (* (+ *profile-x* (/ (* (-> a2-29 start-time) *profile-w*) t0-1)) 16)) + (t0-4 (* (+ *profile-x* (/ (* (-> a2-29 end-time) *profile-w*) t0-1)) 16)) + (t3-1 (* (+ arg1 1840 (* (-> a2-29 depth) (the-as uint a0-12))) 16)) + (t1-7 (+ t3-1 (* a0-12 16))) + (t2-5 (-> arg0 base)) + ) + (set! (-> (the-as (pointer uint128) t2-5) 0) (-> *profile-work* sprite-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) t2-5) 1) (-> *profile-work* sprite-tmpl quad 1)) + (set-vector! + (the-as vector4w (&-> (the-as (pointer uint128) t2-5) 2)) + (the int (* 1.9921875 (the float (-> a2-29 color r)))) + (the int (* 1.9921875 (the float (-> a2-29 color g)))) + (the int (* 1.9921875 (the float (-> a2-29 color b)))) + (the-as int (-> a2-29 color a)) + ) + (set-vector! (the-as vector4w (&+ t2-5 48)) a3-15 t3-1 #xffffff 0) + (set-vector! (the-as vector4w (&+ t2-5 64)) t0-4 t1-7 #xffffff 0) + ) + (&+! (-> arg0 base) 80) + ) + ) + ) + ) + (cond + ((zero? s3-0) + (let* ((s1-0 (-> v1-13 data 0 end-time)) + (f30-0 (* 100.0 (/ (the float s1-0) (the float *ticks-per-frame*)))) + ) + (cond + (*profile-ticks* + (let ((s0-0 draw-string-xy)) + (format (clear *temp-string*) "~5D" s1-0) + (s0-0 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-0 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + (else + (let ((s1-1 draw-string-xy)) + (format (clear *temp-string*) "~5,,2f" f30-0) + (s1-1 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-0 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + ) + ) + ) + (else + (let ((s1-2 0)) + (countdown (a0-21 (-> v1-13 count)) + (when (nonzero? (-> v1-13 data a0-21 end-time)) + (set! s1-2 (- (-> v1-13 data a0-21 end-time) (-> v1-13 data 0 start-time))) + (goto cfg-23) + ) + ) + (label cfg-23) + (let ((f30-1 (* 100.0 (/ (the float s1-2) (the float *ticks-per-frame*))))) + (cond + (*profile-ticks* + (let ((s0-2 draw-string-xy)) + (format (clear *temp-string*) "~5D" s1-2) + (s0-2 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-1 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + (else + (let ((s1-3 draw-string-xy)) + (format (clear *temp-string*) "~5,,2f" f30-1) + (s1-3 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-1 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + ) + ) + ) + ) + ) + (set! arg1 (+ s2-1 2 arg1)) + ) + ) + (none) + ) + +(defmethod draw-text! ((this profile-array)) + "Generate DMA data for drawing the profile information screen." + (let ((gp-0 *profile-collapse*)) + (dotimes (s5-0 (-> gp-0 count)) + (when (or (nonzero? (-> gp-0 data s5-0 count)) (nonzero? (-> gp-0 data s5-0 vu-count))) + (dotimes (s4-0 (the-as int (-> gp-0 data s5-0 depth))) + (format *stdcon* " ") + ) + (format *stdcon* "~o~s~0k" (-> gp-0 data s5-0 color) (symbol->string (-> gp-0 data s5-0 name))) + (if (nonzero? (-> gp-0 data s5-0 count)) + (format + *stdcon* + "~170h~5d~220h~5d~280h~5,,2f" + (-> gp-0 data s5-0 count) + (-> gp-0 data s5-0 code-time) + (* 100.0 (/ (the float (-> gp-0 data s5-0 code-time)) (the float *ticks-per-frame*))) + ) + ) + (if (nonzero? (-> gp-0 data s5-0 vu-count)) + (format + *stdcon* + "~338h~5d~388h~5d~448h~5,,2f" + (-> gp-0 data s5-0 vu-count) + (-> gp-0 data s5-0 vu-time) + (* 100.0 (/ (the float (-> gp-0 data s5-0 vu-time)) (the float *ticks-per-frame*))) + ) + ) + (format *stdcon* "~1k~%") + ) + ) + ) + 0 + (none) + ) diff --git a/goal_src/jakx/engine/vehicle/car-info-h.gc b/goal_src/jakx/engine/vehicle/car-info-h.gc index 2874b36456..d3d40e41c9 100644 --- a/goal_src/jakx/engine/vehicle/car-info-h.gc +++ b/goal_src/jakx/engine/vehicle/car-info-h.gc @@ -23,6 +23,7 @@ (gila 12) (snake 13) (daxtermobile 14) + (drone 15) ) ;; ---vehicle-type diff --git a/goal_src/jakx/kernel/gstring.gc b/goal_src/jakx/kernel/gstring.gc index 07a0180392..e55720bbca 100644 --- a/goal_src/jakx/kernel/gstring.gc +++ b/goal_src/jakx/kernel/gstring.gc @@ -191,6 +191,8 @@ ) ) +;; ERROR: function was not converted to expressions. Cannot decompile. +;; og:preserve-this manually fixed function (defun name= ((arg0 object) (arg1 object)) "Do arg0 and arg1 have the same name? This can use either strings or symbols" @@ -780,6 +782,8 @@ ) ) +;; ERROR: function was not converted to expressions. Cannot decompile. +;; og:preserve-this manually fixed function (defun string-word-wrap ((arg0 string) (arg1 int)) "Wrap lines to specified width." (let ((v1-0 (-> arg0 data))) diff --git a/goal_src/jakx/levels/common/common-part.gc b/goal_src/jakx/levels/common/common-part.gc index 8f9d298fc2..eca0a81161 100644 --- a/goal_src/jakx/levels/common/common-part.gc +++ b/goal_src/jakx/levels/common/common-part.gc @@ -7,3 +7,307 @@ ;; DECOMP BEGINS +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-cliffs-fence-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 51) 90)) + (s3-0 (logand 0 (rand-uint31-gen *random-generator*))) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-cliffs-fence-splinters ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 101) 70)) + (s3-0 (logand 0 (rand-uint31-gen *random-generator*))) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +(defpartgroup group-snow-icebreak-a + :id 423 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1682 :flags (sp3 sp6)) (sp-item 1683 :flags (sp3 sp6))) + ) + +(defpart 1682 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 30.0) + (:x (meters 0) (meters 3)) + (:y (meters 0) (meters 20)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1683 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 30.0) + (:x (meters 0) (meters 3)) + (:y (meters 0) (meters 20)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (glow left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-snow-icebreak-b + :id 424 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1684 :flags (sp3 sp6)) (sp-item 1685 :flags (sp3 sp6))) + ) + +(defpart 1684 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 30.0) + (:x (meters 0) (meters 3)) + (:y (meters 0) (meters 10)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1685 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 15.0) + (:x (meters 0) (meters 3)) + (:y (meters 0) (meters 10)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (glow left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-snow-icebreak-c + :id 425 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1686 :flags (sp3 sp6)) (sp-item 1687 :flags (sp3 sp6))) + ) + +(defpart 1686 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 30.0) + (:x (meters 0) (meters 3)) + (:y (meters 0) (meters 5)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1687 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 10.0) + (:x (meters 0) (meters 3)) + (:y (meters 0) (meters 5)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (glow left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-cliffs-fence-dust + :id 426 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1688 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 1689 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + ) + ) + +(defpart 1688 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-cliffs-fence-dust) + (:num 10.0) + (:x (meters -20) (meters 40)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-z (meters -0.05) (meters 0.1)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters -0.00066666666)) + (:friction 0.9) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1689 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:birth-func 'spt-birth-func-brightness-cliffs-fence-splinters) + (:num 70.0) + (:x (meters -20) (meters 40)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 0.3) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:timer (seconds 2)) + (:flags (glow)) + (:conerot-x (degrees -45) (degrees 90)) + (:conerot-z (degrees -45) (degrees 90)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-cliffs-fence-dust-small + :id 427 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1690 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 1691 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + ) + ) + +(defpart 1690 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-cliffs-fence-dust) + (:num 10.0) + (:x (meters -10) (meters 20)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-z (meters -0.05) (meters 0.1)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters -0.00066666666)) + (:friction 0.9) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1691 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:birth-func 'spt-birth-func-brightness-cliffs-fence-splinters) + (:num 70.0) + (:x (meters -10) (meters 20)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 0.3) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:timer (seconds 2)) + (:flags (glow)) + (:conerot-x (degrees -45) (degrees 90)) + (:conerot-z (degrees -45) (degrees 90)) + (:rotate-y (degrees 0)) + ) + ) diff --git a/goal_src/jakx/levels/common/ctf-part.gc b/goal_src/jakx/levels/common/ctf-part.gc index 35e6bbb1a0..88dd4af292 100644 --- a/goal_src/jakx/levels/common/ctf-part.gc +++ b/goal_src/jakx/levels/common/ctf-part.gc @@ -7,3 +7,267 @@ ;; DECOMP BEGINS +(defpartgroup group-ctf-captured-flag-lightning + :id 327 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1144 :flags (sp5 sp6)) (sp-item 1145 :flags (sp6))) + ) + +(defpart 1144 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x (degrees 11.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 40.96) + ) + ) + +(defpart 1145 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0 1.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0.0225)) + (:vel-y (meters 0.06666667)) + (:fade-a -2.56) + (:friction 0.97) + (:timer (seconds 0.167)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-ctf-captured-flag-lightning-from-ball + :id 328 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1144 :flags (sp5 sp6)) (sp-item 1145 :flags (sp6))) + ) + +(defpartgroup group-ctf-flag-returned + :id 329 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1146 :flags (sp3 sp6)) (sp-item 1147 :flags (sp6) :period (seconds 10) :length (seconds 1))) + ) + +(defpart 1146 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 100.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0.225)) + (:vel-y (meters 0.06666667)) + (:fade-a -0.42666668) + (:friction 0.96 0.01) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1147 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters 4) (meters 1)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters -0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2 3.2) + (:accel-y (meters -0.001)) + (:friction 0.85 0.05) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:next-time (seconds 0.067)) + (:next-launcher 1148) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1148 + :init-specs ((:fade-a -0.42666668 -0.42666668)) + ) + +(defpartgroup group-ctf-flag-scored + :id 330 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1149 :flags (sp3 sp6)) (sp-item 1150 :flags (sp3)) (sp-item 1151 :flags (is-3d sp3))) + ) + +(defpart 1149 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 200.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-z (meters 0.06666667) (meters 0.13333334)) + (:fade-a -0.21333334 -0.21333334) + (:friction 0.96 0.01) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 30)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1150 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 40.0) + (:y (meters 3)) + (:scale-x (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1) (meters 10)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:scalevel-x (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y (meters 0) (meters -0.00066666666)) + (:fade-a -0.053333335 -0.053333335) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1151 + :init-specs ((:texture (new 'static 'texture-id :index #x5a :page #x4)) + (:num 2.0) + (:y (meters 1)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 1)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-ctf-flag-grabbed + :id 331 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1152 :flags (sp3 sp6))) + ) + +(defpart 1152 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 200.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-z (meters 0.13333334) (meters 0.13333334)) + (:fade-a -0.21333334 -0.21333334) + (:friction 0.96 0.01) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 30)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-flag-grabbed-vehicle + :id 332 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1153 :flags (sp6))) + ) + +(defpart 1153 + :init-specs ((:texture (new 'static 'texture-id :index #x55 :page #x4)) + (:num 0.1) + (:scale-x (meters 30)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters -0.1)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + ) + ) + +(defpartgroup group-ctf-carried-flag + :id 333 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1154 :flags (sp5 sp6))) + ) + +(defpart 1154 + :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x4)) + (:num 0.4) + (:y (meters 0)) + (:scale-x (meters 2)) + (:rot-x (degrees 45)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0) (meters 0.02)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.7) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 right-multiply-quat)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 1155) + ) + ) + +(defpart 1155 + :init-specs ((:fade-a -1.7)) + ) diff --git a/goal_src/jakx/levels/common/menu2-part.gc b/goal_src/jakx/levels/common/menu2-part.gc index 629191eb53..f9f80a4f5e 100644 --- a/goal_src/jakx/levels/common/menu2-part.gc +++ b/goal_src/jakx/levels/common/menu2-part.gc @@ -5,5 +5,338 @@ ;; name in dgo: menu2-part ;; dgos: COMMON, GAME +(define-extern *range-jakxexplo-color* curve-color-fast) +(define-extern *range-jakxexplo-alpha* curve2d-fast) +(define-extern *range-jakxexplo-scale-x* curve2d-fast) +(define-extern *range-jakxexplo-scale-y* curve2d-fast) +(define-extern *curve-jakxexplo-alpha* curve2d-fast) +(define-extern *curve-jakxexplo-scale-x* curve2d-fast) +(define-extern *curve-jakxexplo-scale-y* curve2d-fast) +(define-extern *part-jakx-explosion-texture-curve-settings* particle-curve-settings) + ;; DECOMP BEGINS +(defpartgroup group-jakx-fire + :id 53 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 333 :flags (sp6))) + ) + +(defpart 333 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0) + (:g 80.0) + (:b 80.0) + (:a 64.0) + (:fade-a -2.56) + (:timer (seconds 0.085)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-jakx-fire-thin + :id 54 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 334 :flags (sp6))) + ) + +(defpart 334 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0) + (:g 80.0) + (:b 80.0) + (:a 64.0) + (:fade-a -4.266667) + (:timer (seconds 0.05)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-jakx-huge-explosion + :id 55 + :duration (seconds 5) + :flags (sp0 sp5) + :bounds (static-bspherem 0 0 0 15) + :parts ((sp-item 335 :period (seconds 30) :length (seconds 0.5)) + (sp-item 336 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 337 :period (seconds 30) :length (seconds 0.035)) + (sp-item 338 :period (seconds 30) :length (seconds 0.035)) + (sp-item 339 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 340 :period (seconds 30) :length (seconds 0.667)) + ) + ) + +(defpart 336 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 40.0) + (:a 64.0) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 339 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-x (degrees 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 6767.9995)) + (:scalevel-x (meters -0.083333336)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.267)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 335 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 3.0) + (:x (meters 0.2)) + (:scale-x (meters 0.7) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 60.0 20.0) + (:b 10.0 10.0) + (:a 128.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:scalevel-x (meters 0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 337 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 100.0) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0.1575)) + (:vel-y (meters 0.006666667) (meters 0.026666667)) + (:scalevel-x (meters -0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.28444445 -0.28444445) + (:fade-b -0.42666668) + (:fade-a -0.14222223 -0.14222223) + (:friction 0.92 0.02) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 338 + :init-specs ((:texture (new 'static 'texture-id :index #xaa :page #x4)) + (:num 40.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.006666667) (meters 0.026666667)) + (:scalevel-x (meters -0.00033333333)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.13333334) + (:fade-b -0.05) + (:fade-a -0.21333334 -0.21333334) + (:friction 0.96) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 341 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 10.0) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 160.0) + (:b 40.0) + (:a 128.0) + (:vel-y (meters 0.033333335) (meters 0.16666667)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.114285715) + (:fade-b -0.042857144) + (:fade-a -0.18285714 -0.18285714) + (:friction 0.93) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 340 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-curve) + (:num 4.0) + (:x (meters 0.2)) + (:y (meters 0) (meters 0.01)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.00066666666) (meters 0.006666667)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)) + ) + ) + +(if #t + (set! *range-jakxexplo-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-jakxexplo-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-jakxexplo-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.2 2.2 3.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.20000005 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-jakxexplo-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.2 2.2 3.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.20000005 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-jakxexplo-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.05 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.6 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 -0.6153846 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-jakxexplo-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.5 1.0 1.1 2.1)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.625 0.5000002 0.9999999 1.0)) + ) + ) + ) + +(if #t + (set! *curve-jakxexplo-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.5 1.0 1.1 2.1)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.625 0.5000002 0.9999999 1.0)) + ) + ) + ) + +(define *part-jakx-explosion-texture-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.7) + :lifetime-offset (seconds 0.2) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 340 init-specs 16 initial-valuef) + (the-as float *part-jakx-explosion-texture-curve-settings*) + ) + +(set! (-> *part-jakx-explosion-texture-curve-settings* color-start) *range-jakxexplo-color*) + +(set! (-> *part-jakx-explosion-texture-curve-settings* alpha-start) *range-jakxexplo-alpha*) + +(set! (-> *part-jakx-explosion-texture-curve-settings* scale-x-start) *range-jakxexplo-scale-x*) + +(set! (-> *part-jakx-explosion-texture-curve-settings* scale-y-start) *range-jakxexplo-scale-y*) + +(set! (-> *part-jakx-explosion-texture-curve-settings* r-scalar) #f) + +(set! (-> *part-jakx-explosion-texture-curve-settings* g-scalar) #f) + +(set! (-> *part-jakx-explosion-texture-curve-settings* b-scalar) #f) + +(set! (-> *part-jakx-explosion-texture-curve-settings* a-scalar) *curve-jakxexplo-alpha*) + +(set! (-> *part-jakx-explosion-texture-curve-settings* scale-x-scalar) *curve-jakxexplo-scale-x*) + +(set! (-> *part-jakx-explosion-texture-curve-settings* scale-y-scalar) *curve-jakxexplo-scale-y*) diff --git a/goal_src/jakx/levels/common/net-anim.gc b/goal_src/jakx/levels/common/net-anim.gc index 0ece1d3446..d7eb2a9dae 100644 --- a/goal_src/jakx/levels/common/net-anim.gc +++ b/goal_src/jakx/levels/common/net-anim.gc @@ -7,3 +7,58 @@ ;; DECOMP BEGINS +(deftype net-anim-path (uint8) + () + :flag-assert #x900000001 + ) + +(deftype net-anim-state (structure) + ((timestamp int32 :offset-assert 0) + (anim-idx int16 :offset-assert 4) + (anim-offset float :offset-assert 8) + (anim-rate float :offset-assert 12) + (vel vector :inline :offset-assert 16) + (path-info uint8 :offset-assert 32) + (path-offset float :offset-assert 36) + (anim-looped basic :offset-assert 40) + (need-snap basic :offset-assert 44) + ) + :method-count-assert 9 + :size-assert #x30 + :flag-assert #x900000030 + ) + +(deftype net-anim-result (structure) + ((now int32 :offset-assert 0) + (moved vector :inline :offset-assert 16) + (path-pos float :offset-assert 32) + (path-pos-dist float :offset-assert 36) + (cur-frame float :offset-assert 40) + (cur-loops int32 :offset-assert 44) + (anim-wrapped basic :offset-assert 48) + (path-wrapped basic :offset-assert 52) + (projected-end-time int32 :offset-assert 56) + (total-frames int32 :offset-assert 60) + (moved-no-frac vector :inline :offset-assert 64) + (vels uint32 :offset-assert 80) + (last-snap-time int32 :offset-assert 84) + ) + :method-count-assert 9 + :size-assert #x58 + :flag-assert #x900000058 + ) + +(deftype net-anim-control (structure) + ((active net-anim-state :inline :offset-assert 0) + (result net-anim-result :inline :offset-assert 48) + (path-array uint32 :offset-assert 136) + ) + :method-count-assert 12 + :size-assert #x8c + :flag-assert #xc0000008c + (:methods + (net-anim-control-method-9 () none) ;; 9 + (net-anim-control-method-10 () none) ;; 10 + (net-anim-control-method-11 () none) ;; 11 + ) + ) \ No newline at end of file diff --git a/goal_src/jakx/levels/common/net-enemy-h.gc b/goal_src/jakx/levels/common/net-enemy-h.gc index 9a5885e2bd..d938b116ee 100644 --- a/goal_src/jakx/levels/common/net-enemy-h.gc +++ b/goal_src/jakx/levels/common/net-enemy-h.gc @@ -7,3 +7,146 @@ ;; DECOMP BEGINS +(deftype net-enemy-transition (structure) + ((timestamp int32) + (name basic) + (preempt basic) + (data-len int32) + (buf-data uint8 64) + ) + ) + + +(define *tmp-construct-transition* (new 'static 'net-enemy-transition)) + +(deftype net-enemy-anim-info (structure) + ((name basic) + (anim-idx int32) + (forward-vel vector) + ) + ) + + +(deftype net-enemy-info (structure) + ((flags uint64) + (inverse-mass float) + (ragdoll-info ragdoll-setup) + (max-health float) + (damage-scale float) + (respawn-delay int32) + (smooth-root-trans float) + (smooth-root-quat float) + (fatal-impact-impulse float) + (min-fatal-impact-enemy-vel float) + (time-before-evaporate int32) + (time-before-respawn int32) + (anim-info basic) + (kill-score int32) + (wound-score-scale float) + (allow-vehicle-penetrate basic) + (min-ground-offset float) + (ground-probe-lod-dist float) + (show-kill-score int32) + ) + ) + + +(deftype net-enemy (process-focusable) + ((flags uint64) + (info net-enemy-info) + (ragdoll-proc uint64) + (health float) + (local-damage float) + (killed-by int8) + (last-health-send-time int32) + (net-anim net-anim-control :inline) + (minimap connection-minimap) + (transitions net-enemy-transition 3 :inline) + (transition-ct int32) + (last-attack-time int32) + (vehicle-penetrate-time int32) + (paths basic) + (pending-impulse-valid basic) + (pending-impulse rigid-body-impact :inline) + (last-transition-time int32) + (last-attack-id int32) + (vel-for-ragdoll vector :inline) + (nav-poly nav-poly) + (snap-flags uint64) + (prev-pos vector :inline) + (forward-path-vector vector :inline) + (enemy-link list-link :inline) + ) + (:methods + (net-enemy-method-59 () none) + (net-enemy-method-60 () none) + (net-enemy-method-61 () none) + (net-enemy-method-62 () none) + (net-enemy-method-63 () none) + (net-enemy-method-64 () none) + (net-enemy-method-65 () none) + (net-enemy-method-66 () none) + (net-enemy-method-67 () none) + (net-enemy-method-68 () none) + (net-enemy-method-69 () none) + (net-enemy-method-70 () none) + (net-enemy-method-71 () none) + (net-enemy-method-72 () none) + (net-enemy-method-73 () none) + (net-enemy-method-74 () none) + (net-enemy-method-75 () none) + (net-enemy-method-76 () none) + (net-enemy-method-77 () none) + (net-enemy-method-78 () none) + (net-enemy-method-79 () none) + (net-enemy-method-80 () none) + (net-enemy-method-81 () none) + (net-enemy-method-82 () none) + (net-enemy-method-83 () none) + (net-enemy-method-84 () none) + (net-enemy-method-85 () none) + (net-enemy-method-86 () none) + ) + ) + + +(defbehavior net-enemy-init-remote process-focusable ((arg0 int)) + (process-nettable-method-34 self -1 (new 'static 'rgba :r #xff :g #xff)) + (process-nettable-method-35 self arg0) + (process-nettable-method-36 self) + 0 + (none) + ) + +(defmethod process-nettable-method-41 ((this net-enemy) (arg0 int)) + (ppointer->process (process-spawn net-enemy :init net-enemy-init-remote arg0 :name "net-enemy")) + ) + +(defmethod process-nettable-method-37 ((this net-enemy) (arg0 net-process-class-info)) + (set! (-> arg0 msg-map (-> arg0 msg-count)) 'transition) + (+! (-> arg0 msg-count) 1) + (set! (-> arg0 msg-map (-> arg0 msg-count)) 'damage) + (+! (-> arg0 msg-count) 1) + 0 + (none) + ) + +(define *msg-map-net-enemy* (new 'static 'boxed-array :type symbol :length 0 :allocated-length 64)) + +(define *net-process-class-info-net-enemy* (new 'static 'net-process-class-info)) + +(set! (-> *net-process-class-info-net-enemy* msg-map) *msg-map-net-enemy*) + +(write-msg-map-rec net-enemy *net-process-class-info-net-enemy*) + +(set! (-> *net-process-class-info-net-enemy* owner-type) net-enemy) + +(net-process-class-register *net-process-class-info-net-enemy*) + +(defmethod process-nettable-method-40 ((this net-enemy)) + *net-process-class-info-net-enemy* + ) + +(define *net-enemy-list* (new 'static 'linked-list)) + +(clear! *net-enemy-list*) diff --git a/goal_src/jakx/levels/common/race-part.gc b/goal_src/jakx/levels/common/race-part.gc index fb049c9bbe..fed9573d76 100644 --- a/goal_src/jakx/levels/common/race-part.gc +++ b/goal_src/jakx/levels/common/race-part.gc @@ -7,3 +7,3052 @@ ;; DECOMP BEGINS +(defpartgroup group-spawn-red-eco + :id 179 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 603 :flags (sp3) :binding 600) + (sp-item 600 :flags (sp2 sp3) :binding 601) + (sp-item 601 :falloff-to (meters 400) :flags (sp2)) + (sp-item 603 :flags (sp3) :binding 602) + (sp-item 602 :flags (sp2 sp3) :binding 601) + (sp-item 601 :falloff-to (meters 400) :flags (sp2)) + (sp-item 604 :period (seconds 10) :length (seconds 0.035) :offset 100) + ) + ) + +(defpart 603 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:y (meters -3)) + (:scale-x (meters 2.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.046666667)) + (:timer (seconds 0.667)) + (:flags ()) + ) + ) + +(defpart 600 + :init-specs ((:texture (new 'static 'texture-id :index #x8b :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 605) + ) + ) + +(defpart 602 + :init-specs ((:texture (new 'static 'texture-id :index #x8b :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 180)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 605) + ) + ) + +(defpart 605 + :init-specs ((:fade-a -2.56)) + ) + +(defpart 601 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters -0.001) (meters -0.006666667)) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpart 604 + :init-specs ((:texture (new 'static 'texture-id :index #x8b :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:rot-x (degrees 67.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 0.2)) + (:scalevel-y (meters 0.2)) + (:timer (seconds 0.835)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 12288.0) + (:next-time (seconds 0.167)) + (:next-launcher 606) + ) + ) + +(defpart 606 + :init-specs ((:scalevel-x (meters -0.033333335)) + (:scalevel-y (meters 0.033333335)) + (:next-time (seconds 0.167)) + (:next-launcher 607) + ) + ) + +(defpart 607 + :init-specs ((:fade-a -0.64)) + ) + +(defpartgroup group-spawn-blue-eco + :id 180 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 611 :flags (sp3) :binding 608) + (sp-item 608 :flags (sp2 sp3) :binding 609) + (sp-item 609 :falloff-to (meters 400) :flags (sp2)) + (sp-item 611 :flags (sp3) :binding 610) + (sp-item 610 :flags (sp2 sp3) :binding 609) + (sp-item 609 :falloff-to (meters 400) :flags (sp2)) + (sp-item 612 :period (seconds 10) :length (seconds 0.035) :offset 100) + ) + ) + +(defpart 611 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:y (meters -3)) + (:scale-x (meters 2.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.046666667)) + (:timer (seconds 0.667)) + (:flags ()) + ) + ) + +(defpart 608 + :init-specs ((:texture (new 'static 'texture-id :index #xae :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 613) + ) + ) + +(defpart 610 + :init-specs ((:texture (new 'static 'texture-id :index #xae :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 180)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 613) + ) + ) + +(defpart 613 + :init-specs ((:fade-a -2.56)) + ) + +(defpart 609 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 64.0) + (:b 255.0) + (:a 128.0) + (:vel-y (meters -0.001) (meters -0.006666667)) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpart 612 + :init-specs ((:texture (new 'static 'texture-id :index #xae :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:rot-x (degrees 67.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 0.2)) + (:scalevel-y (meters 0.2)) + (:timer (seconds 0.835)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 12288.0) + (:next-time (seconds 0.167)) + (:next-launcher 614) + ) + ) + +(defpart 614 + :init-specs ((:scalevel-x (meters -0.033333335)) + (:scalevel-y (meters 0.033333335)) + (:next-time (seconds 0.167)) + (:next-launcher 615) + ) + ) + +(defpart 615 + :init-specs ((:fade-a -0.64)) + ) + +(defpartgroup group-spawn-yellow-eco + :id 181 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 619 :flags (sp3) :binding 616) + (sp-item 616 :flags (sp2 sp3) :binding 617) + (sp-item 617 :falloff-to (meters 400) :flags (sp2)) + (sp-item 619 :flags (sp3) :binding 618) + (sp-item 618 :flags (sp2 sp3) :binding 617) + (sp-item 617 :falloff-to (meters 400) :flags (sp2)) + (sp-item 620 :period (seconds 10) :length (seconds 0.035) :offset 100) + ) + ) + +(defpart 619 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:y (meters -3)) + (:scale-x (meters 2.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.046666667)) + (:timer (seconds 0.667)) + (:flags ()) + ) + ) + +(defpart 616 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 621) + ) + ) + +(defpart 618 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 180)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 621) + ) + ) + +(defpart 621 + :init-specs ((:fade-a -2.56)) + ) + +(defpart 617 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters -0.001) (meters -0.006666667)) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpart 620 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:rot-x (degrees 67.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 0.2)) + (:scalevel-y (meters 0.2)) + (:timer (seconds 0.835)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 12288.0) + (:next-time (seconds 0.167)) + (:next-launcher 622) + ) + ) + +(defpart 622 + :init-specs ((:scalevel-x (meters -0.033333335)) + (:scalevel-y (meters 0.033333335)) + (:next-time (seconds 0.167)) + (:next-launcher 623) + ) + ) + +(defpart 623 + :init-specs ((:fade-a -0.64)) + ) + +(defpartgroup group-spawn-green-eco + :id 182 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 627 :flags (sp3) :binding 624) + (sp-item 624 :flags (sp2 sp3) :binding 625) + (sp-item 625 :falloff-to (meters 400) :flags (sp2)) + (sp-item 627 :flags (sp3) :binding 626) + (sp-item 626 :flags (sp2 sp3) :binding 625) + (sp-item 625 :falloff-to (meters 400) :flags (sp2)) + (sp-item 628 :period (seconds 10) :length (seconds 0.035) :offset 100) + ) + ) + +(defpart 627 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:y (meters -3)) + (:scale-x (meters 2.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.046666667)) + (:timer (seconds 0.667)) + (:flags ()) + ) + ) + +(defpart 624 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:omega (degrees 0)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 629) + ) + ) + +(defpart 626 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:z (meters 1)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:omega (degrees 180)) + (:vel-x (meters -0.21333334)) + (:vel-z (meters 0.026666667)) + (:accel-z (meters -0.00083333335)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:next-time (seconds 0.335)) + (:next-launcher 629) + ) + ) + +(defpart 629 + :init-specs ((:fade-a -2.56)) + ) + +(defpart 625 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 255.0) + (:b 0.0 64.0) + (:a 128.0) + (:vel-y (meters -0.001) (meters -0.006666667)) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpart 628 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:rot-x (degrees 67.5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:scalevel-x (meters 0.2)) + (:scalevel-y (meters 0.2)) + (:timer (seconds 1.667)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 12288.0) + (:next-time (seconds 0.167)) + (:next-launcher 630) + ) + ) + +(defpart 630 + :init-specs ((:scalevel-x (meters -0.033333335)) + (:scalevel-y (meters 0.033333335)) + (:next-time (seconds 0.167)) + (:next-launcher 631) + ) + ) + +(defpart 631 + :init-specs ((:fade-a -0.64)) + ) + +(defpartgroup group-powerup-respawn + :id 183 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 632 :flags (sp3 sp6)) (sp-item 633 :flags (sp3 sp6))) + ) + +(defpart 632 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 10)) + (:rot-x (degrees 225)) + (:scale-y (meters 16)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters -0.05)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.64) + (:timer (seconds 0.667)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + ) + ) + +(defpart 633 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 8)) + (:rot-x (degrees 225)) + (:scale-y (meters 4)) + (:r 0.0) + (:g 32.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters -0.093333334)) + (:scalevel-y (meters 0.5)) + (:timer (seconds 0.667)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:next-time (seconds 0.167)) + (:next-launcher 634) + ) + ) + +(defpart 634 + :init-specs ((:scalevel-x (meters -0.033333335)) + (:scalevel-y (meters 0.06666667)) + (:next-time (seconds 0.167)) + (:next-launcher 635) + ) + ) + +(defpart 635 + :init-specs ((:scalevel-x (meters -0.013333334)) (:scalevel-y (meters 0.033333335)) (:fade-a -2.56)) + ) + +(defpart 636 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g :copy r) + (:b :copy r) + (:a 128.0) + (:vel-z (meters 0.033333335)) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.28) + (:fade-g -1.28) + (:fade-b -1.28) + (:fade-a -5.12 -5.12) + (:timer (seconds 0.085)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-rod-of-god + :id 184 + :flags (sp0) + :bounds (static-bspherem 0 300 0 640) + :parts ((sp-item 637 :fade-after (meters 80) :falloff-to (meters 160)) + (sp-item 638 :flags (sp5)) + (sp-item 639 :flags (sp5)) + ) + ) + +(defpart 637 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 8.0) + (:x (meters 0) (meters 2.7)) + (:y (meters 0) (meters 32)) + (:scale-x (meters 0.25)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.0016666667) (meters 0.0016666667)) + (:fade-a 0.4) + (:timer (seconds 0.535)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.267)) + (:next-launcher 640) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 640 + :init-specs ((:fade-a -0.4)) + ) + +(defpart 638 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters -0.25)) + (:scale-x (meters 18)) + (:rot-x (degrees 135)) + (:scale-y (meters 18)) + (:r 128.0) + (:g 128.0) + (:b 0.0 64.0) + (:a 32.0) + (:omega (degrees 4511.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 use-global-acc)) + (:userdata 20480.0) + ) + ) + +(defpart 639 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters -0.25)) + (:scale-x (meters 9)) + (:rot-x (degrees 135)) + (:scale-y (meters 9)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:omega (degrees 4511.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 use-global-acc)) + (:userdata 20480.0) + ) + ) + +(defpartgroup group-invisible-collision-shield + :id 185 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 641 :flags (is-3d sp6))) + ) + +(defpart 641 + :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x4)) + (:num 2.0) + (:scale-x (meters 1) (meters 2)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 90)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 0.1) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.28) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-wrong-way-lightning-spawn + :id 186 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 642 :flags (sp5 sp6))) + ) + +(defpart 642 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:y (meters -3)) + (:scale-x (meters 3) (meters 1)) + (:rot-x (degrees 45)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpartgroup group-wrong-way-lightning-vehicle + :id 187 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 643 :flags (sp5 sp6)) (sp-item 644 :flags (sp6))) + ) + +(defpart 643 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-x (degrees 45)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 644 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0 1.0) + (:y (meters 1)) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:friction 0.9) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + (:conerot-x (degrees 10) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-starting-linebot-projection + :id 188 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 645 :flags (is-3d sp5 sp6)) + (sp-item 646 :flags (is-3d sp5 sp6)) + (sp-item 647 :flags (is-3d sp5 sp6)) + ) + ) + +(defpart 645 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 0.3)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 2)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 8)) + (:r 20.0) + (:g 64.0) + (:b 20.0) + (:a 40.0 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 90)) + (:rotate-y (degrees -90)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 646 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 0.3)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 2)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 8)) + (:r 20.0) + (:g 64.0) + (:b 20.0) + (:a 40.0 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees -45)) + (:rotate-y (degrees -90)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 647 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 0.3)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 2)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 8)) + (:r 20.0) + (:g 64.0) + (:b 20.0) + (:a 40.0 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 45)) + (:rotate-y (degrees -90)) + (:rotate-z (degrees 0)) + ) + ) + +(defpartgroup group-starting-linebot-projection-red + :id 189 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 648 :flags (is-3d sp5 sp6)) + (sp-item 649 :flags (is-3d sp5 sp6)) + (sp-item 650 :flags (is-3d sp5 sp6)) + ) + ) + +(defpart 648 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 0.3)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 2)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 8)) + (:r 64.0) + (:g 20.0) + (:b 20.0) + (:a 40.0 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 90)) + (:rotate-y (degrees -90)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 649 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 0.3)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 2)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 8)) + (:r 64.0) + (:g 20.0) + (:b 20.0) + (:a 40.0 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees -45)) + (:rotate-y (degrees -90)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 650 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 0.3)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 2)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 8)) + (:r 64.0) + (:g 20.0) + (:b 20.0) + (:a 40.0 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 45)) + (:rotate-y (degrees -90)) + (:rotate-z (degrees 0)) + ) + ) + +(defpartgroup group-this-way-projection + :id 190 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 651 :flags (sp6))) + ) + +(defpart 651 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 5.0) + (:y (meters -8)) + (:scale-x (meters 40) (meters 2)) + (:rot-z (degrees 90)) + (:scale-y (meters 10)) + (:r 128.0) + (:g 40.0) + (:b 40.0) + (:a 0.0 15.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-race-finish-banner + :id 191 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 652 :flags (is-3d sp5 sp6)) + (sp-item 653 :flags (is-3d sp5 sp6)) + (sp-item 654 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 50) + (sp-item 655 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 100) + (sp-item 656 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 150) + (sp-item 657 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 150) + (sp-item 658 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 100) + (sp-item 659 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 50) + ) + ) + +(defpart 652 + :init-specs ((:texture (new 'static 'texture-id :index #xc6 :page #x4)) + (:num 1.0) + (:z (meters -5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 90)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 653 + :init-specs ((:texture (new 'static 'texture-id :index #xc6 :page #x4)) + (:num 1.0) + (:z (meters 5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 90)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 654 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:z (meters 32)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 90)) + (:scale-y (meters 5)) + (:r 80.0) + (:g 128.0) + (:b 64.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 655 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:z (meters 24)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 90)) + (:scale-y (meters 5)) + (:r 80.0) + (:g 128.0) + (:b 64.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 656 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:z (meters 16)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 90)) + (:scale-y (meters 5)) + (:r 80.0) + (:g 128.0) + (:b 64.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 657 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:z (meters -16)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees -90)) + (:scale-y (meters 5)) + (:r 80.0) + (:g 128.0) + (:b 64.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 658 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:z (meters -24)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees -90)) + (:scale-y (meters 5)) + (:r 80.0) + (:g 128.0) + (:b 64.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 659 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:z (meters -32)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees -90)) + (:scale-y (meters 5)) + (:r 80.0) + (:g 128.0) + (:b 64.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-race-start-banner-ready + :id 192 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 660 :flags (is-3d sp5 sp6)) + (sp-item 661 :flags (is-3d sp5 sp6)) + (sp-item 662 :flags (is-3d sp5 sp6)) + (sp-item 663 :flags (is-3d sp5 sp6)) + (sp-item 664 :flags (is-3d sp5 sp6)) + (sp-item 665 :flags (is-3d sp5 sp6)) + ) + ) + +(defpartgroup group-race-start-banner-3 + :id 193 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 666 :flags (is-3d sp5 sp6)) + (sp-item 667 :flags (is-3d sp5 sp6)) + (sp-item 661 :flags (is-3d sp5 sp6)) + (sp-item 662 :flags (is-3d sp5 sp6)) + (sp-item 663 :flags (is-3d sp5 sp6)) + (sp-item 664 :flags (is-3d sp5 sp6)) + (sp-item 668 :flags (is-3d sp5 sp6)) + ) + ) + +(defpartgroup group-race-start-banner-2 + :id 194 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 669 :flags (is-3d sp5 sp6)) + (sp-item 667 :flags (is-3d sp5 sp6)) + (sp-item 670 :flags (is-3d sp5 sp6)) + (sp-item 662 :flags (is-3d sp5 sp6)) + (sp-item 663 :flags (is-3d sp5 sp6)) + (sp-item 671 :flags (is-3d sp5 sp6)) + (sp-item 668 :flags (is-3d sp5 sp6)) + ) + ) + +(defpartgroup group-race-start-banner-1 + :id 195 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 672 :flags (is-3d sp5 sp6)) + (sp-item 667 :flags (is-3d sp5 sp6)) + (sp-item 670 :flags (is-3d sp5 sp6)) + (sp-item 673 :flags (is-3d sp5 sp6)) + (sp-item 674 :flags (is-3d sp5 sp6)) + (sp-item 671 :flags (is-3d sp5 sp6)) + (sp-item 668 :flags (is-3d sp5 sp6)) + ) + ) + +(defpartgroup group-race-start-banner-go + :id 196 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 675 :flags (is-3d sp5 sp6) :period (seconds 2) :length (seconds 0.667)) + (sp-item 676 :flags (is-3d sp5 sp6) :period (seconds 2) :length (seconds 0.667) :offset 200) + (sp-item 677 :flags (is-3d sp5 sp6) :period (seconds 2) :length (seconds 0.667) :offset 400) + (sp-item 678 :flags (is-3d sp5 sp6) :period (seconds 2) :length (seconds 0.667)) + (sp-item 679 :flags (is-3d sp5 sp6) :period (seconds 2) :length (seconds 0.667) :offset 200) + (sp-item 680 :flags (is-3d sp5 sp6) :period (seconds 2) :length (seconds 0.667) :offset 400) + (sp-item 681 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.5) :offset 100) + (sp-item 682 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.5) :offset 150) + (sp-item 683 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.5) :offset 200) + (sp-item 684 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.5) :offset 200) + (sp-item 685 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.5) :offset 150) + (sp-item 686 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.5) :offset 100) + (sp-item 687 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 50) + (sp-item 688 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 100) + (sp-item 689 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 150) + (sp-item 690 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 150) + (sp-item 691 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 100) + (sp-item 692 :flags (is-3d sp5 sp6) :period (seconds 0.667) :length (seconds 0.167) :offset 50) + ) + ) + +(defpart 693 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 70)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 8)) + (:r 128.0) + (:g 10.0) + (:b 20.0) + (:a 40.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 694 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 70)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 8)) + (:r 10.0) + (:g 128.0) + (:b 10.0) + (:a 40.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 666 + :init-specs ((:texture (new 'static 'texture-id :index #x84 :page #x4)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 6)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 70.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 669 + :init-specs ((:texture (new 'static 'texture-id :index #x83 :page #x4)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 6)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 70.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 672 + :init-specs ((:texture (new 'static 'texture-id :index #x82 :page #x4)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 6)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 70.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 675 + :init-specs ((:texture (new 'static 'texture-id :index #xc7 :page #x4)) + (:num 1.0) + (:x (meters 5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 676 + :init-specs ((:texture (new 'static 'texture-id :index #xc8 :page #x4)) + (:num 1.0) + (:x (meters 5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 677 + :init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #x4)) + (:num 1.0) + (:x (meters 5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 678 + :init-specs ((:texture (new 'static 'texture-id :index #xc7 :page #x4)) + (:num 1.0) + (:x (meters -5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees -180)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 679 + :init-specs ((:texture (new 'static 'texture-id :index #xc8 :page #x4)) + (:num 1.0) + (:x (meters -5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees -180)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 680 + :init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #x4)) + (:num 1.0) + (:x (meters -5)) + (:scale-x (meters 10)) + (:rot-x (degrees 90)) + (:rot-y (degrees -180)) + (:scale-y (meters 7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 660 + :init-specs ((:texture (new 'static 'texture-id :index #xad :page #x4)) + (:num 1.0) + (:x (meters 32)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 100.0) + (:a 100.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 661 + :init-specs ((:texture (new 'static 'texture-id :index #xad :page #x4)) + (:num 1.0) + (:x (meters 24)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 100.0) + (:a 100.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 662 + :init-specs ((:texture (new 'static 'texture-id :index #xad :page #x4)) + (:num 1.0) + (:x (meters 16)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 100.0) + (:a 100.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 663 + :init-specs ((:texture (new 'static 'texture-id :index #xad :page #x4)) + (:num 1.0) + (:x (meters -16)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 100.0) + (:a 100.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 664 + :init-specs ((:texture (new 'static 'texture-id :index #xad :page #x4)) + (:num 1.0) + (:x (meters -24)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 100.0) + (:a 100.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 665 + :init-specs ((:texture (new 'static 'texture-id :index #xad :page #x4)) + (:num 1.0) + (:x (meters -32)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 100.0) + (:a 100.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 667 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters 32)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 40.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 670 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters 24)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 80.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 673 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters 16)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 200.0) + (:g 255.0) + (:b 40.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 674 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters -16)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 200.0) + (:g 255.0) + (:b 40.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 671 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters -24)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 80.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 668 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:x (meters -32)) + (:scale-x (meters 4)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 40.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 681 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters 32)) + (:scale-x (meters 3)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 3)) + (:r 255.0) + (:g 20.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-4)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 682 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters 24)) + (:scale-x (meters 3)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 3)) + (:r 255.0) + (:g 20.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-4)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 683 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters 16)) + (:scale-x (meters 3)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 3)) + (:r 255.0) + (:g 20.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-4)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 684 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters -16)) + (:scale-x (meters 3)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 3)) + (:r 255.0) + (:g 20.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-4)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 685 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters -24)) + (:scale-x (meters 3)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 3)) + (:r 255.0) + (:g 20.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-4)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 686 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters -32)) + (:scale-x (meters 3)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 3)) + (:r 255.0) + (:g 20.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-4)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 687 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters 32)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 688 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters 24)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 689 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters 16)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 690 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters -16)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 691 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters -24)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 692 + :init-specs ((:texture (new 'static 'texture-id :index #x81 :page #x4)) + (:num 1.0) + (:x (meters -32)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:scale-y (meters 5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-race-signal-red-light-3 + :id 197 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 695 :flags (sp5))) + ) + +(defpart 695 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 3) (meters 0.5)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:omega (degrees 22509)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-race-signal-red-light-2 + :id 198 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 696 :flags (sp5))) + ) + +(defpart 696 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 4) (meters 0.5)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:omega (degrees 22509)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-race-signal-red-light-1 + :id 199 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 697 :flags (sp5))) + ) + +(defpart 697 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 6) (meters 0.5)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:omega (degrees 22509)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-race-signal-green-light + :id 200 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 698 :flags (sp5))) + ) + +(defpart 698 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 8) (meters 1)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0) + (:b 0.0) + (:a 96.0) + (:omega (degrees 22509)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-super-pellet + :id 201 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 702 :period (seconds 1) :length (seconds 0.035)) + (sp-item 703 :period (seconds 1) :length (seconds 0.035)) + (sp-item 704 :flags (sp3) :binding 699) + (sp-item 699 :falloff-to (meters 300) :flags (sp2) :binding 700) + (sp-item 705 :flags (sp3) :binding 701) + (sp-item 701 :falloff-to (meters 300) :flags (sp2)) + ) + ) + +(defpart 702 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 2.0) + (:scale-x (meters 20) (meters 0.5)) + (:rot-x (degrees 22.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 180.0) + (:b 200.0) + (:a 10.0 4.0) + (:omega (degrees 22511.25)) + (:scalevel-x (meters -0.13333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 703 + :init-specs ((:texture (new 'static 'texture-id :index #x64 :page #x4)) + (:num 50.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-x (meters 0.1) (meters 0.033333335)) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y (meters 0.016666668) (meters 0.016666668)) + (:fade-r -0.26666668) + (:fade-g -0.06666667) + (:friction 0.97) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:func 'sparticle-2d-spline-align-instant) + (:next-time (seconds 0.667)) + (:next-launcher 706) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 706 + :init-specs ((:scalevel-y (meters 0.0033333334) (meters 0.0033333334)) (:fade-a -0.42666668)) + ) + +(defpart 705 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y (meters 0.1)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags ()) + ) + ) + +(defpart 701 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.2) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0)) + (:scale-x (meters 3) (meters 3)) + (:scale-y (meters 3) (meters 3)) + (:r 20.0) + (:g 40.0) + (:b 120.0) + (:a 50.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.013333334) 1 (meters 0.026666667)) + (:vel-y (meters -0.00074074074) (meters 0.0014814815)) + (:vel-z (meters 0.006)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:accel-z (meters -0.000033333334)) + (:timer (seconds 2.667) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + ) + ) + +(defpart 704 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y (meters 0.1)) + (:r 255.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-14)) + ) + ) + +(defpart 699 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 0.06) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0)) + (:scale-x (meters 0.4) (meters 0.4)) + (:scale-y (meters 0.4) (meters 0.4)) + (:r 80.0) + (:g 80.0) + (:b 80.0) + (:a 128.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.10666667) 1 (meters 0.21333334)) + (:vel-y (meters -0.00074074074) (meters 0.0014814815)) + (:vel-z (meters 0.006666667)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:accel-z (meters -0.000033333334)) + (:timer (seconds 2.667) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-4 ready-to-launch)) + ) + ) + +(defpart 700 + :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x4)) + (:num 0.2) + (:scale-x (meters 2) (meters 2)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y (meters 0.006666667)) + (:fade-a 0.16) + (:accel-y (meters 0.001)) + (:friction 0.98 0.01) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.5)) + (:next-launcher 707) + ) + ) + +(defpart 707 + :init-specs ((:fade-a -0.035555556 -0.035555556)) + ) + +(defpartgroup group-green-pellet + :id 202 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 708 :flags (sp5))) + ) + +(defpart 708 + :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x4)) + (:num 0.3) + (:scale-x (meters 9) (meters 1)) + (:rot-x (degrees 22.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 80.0) + (:b 0.0) + (:a 0.0) + (:omega (degrees 9011.25)) + (:scalevel-x (meters -0.006666667) 1 (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.0) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:next-time (seconds 0.167)) + (:next-launcher 709) + ) + ) + +(defpart 709 + :init-specs ((:fade-a -3.0)) + ) + +(defpartgroup group-blue-pellet + :id 203 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 710) + (sp-item 711 :flags (sp5 sp6)) + (sp-item 712 :flags (sp5 sp6)) + (sp-item 713 :flags (sp5 sp6)) + (sp-item 714 :flags (sp5 sp6)) + ) + ) + +(defpart 710 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:scale-x (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 10.0 30.0) + (:b 100.0) + (:a 0.0 20.0) + (:scalevel-x (meters -0.006666667) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.0) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3)) + (:next-time (seconds 0.167)) + (:next-launcher 715) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 715 + :init-specs ((:fade-a -3.0)) + ) + +(defpart 711 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 1.0) + (:x (meters 0.6)) + (:y (meters 3.5)) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 80.0) + (:b 100.0) + (:a 220.0 4.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 712 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 1.0) + (:x (meters -0.4)) + (:y (meters 3.5)) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 80.0) + (:b 100.0) + (:a 220.0 4.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 713 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 1.0) + (:x (meters 0.5)) + (:y (meters -3.5)) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 80.0) + (:b 100.0) + (:a 220.0 4.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 714 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 1.0) + (:x (meters -0.6)) + (:y (meters -3.5)) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 80.0) + (:b 100.0) + (:a 220.0 4.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-light-pellet + :id 204 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 716) (sp-item 717) (sp-item 718) (sp-item 719 :flags (sp5)) (sp-item 720 :flags (sp5))) + ) + +(defpart 716 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.02) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 180.0) + (:b 200.0) + (:a 0.0) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + (:next-time (seconds 1)) + (:next-launcher 721) + ) + ) + +(defpart 721 + :init-specs ((:fade-a -0.21333334)) + ) + +(defpart 717 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 0.2) + (:scale-x (meters 0.2) (meters 0.2)) + (:rot-x 4) + (:scale-y (meters 0.2) (meters 0.2)) + (:r 80.0) + (:g 20.0) + (:b 10.0) + (:a 64.0) + (:vel-x (meters 0.02)) + (:rotvel-z (degrees -2.4) 1 (degrees 4.8)) + (:accel-x (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1.835)) + (:flags (sp-cpuinfo-flag-4)) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 718 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 0.2) + (:scale-x (meters 0.8) (meters 0.2)) + (:scale-y (meters 0.8) (meters 0.2)) + (:r 100.0) + (:g 128.0) + (:b 140.0) + (:a 32.0) + (:vel-z (meters 0.023333333)) + (:rotvel-z (degrees -0.6) 1 (degrees 1.2)) + (:accel-z (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1.835)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 719 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 1.5)) + (:scale-x (meters 1.5)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 60.0) + (:b 80.0) + (:a 70.0 4.0) + (:omega (degrees 22511.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 720 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters -1.5)) + (:scale-x (meters 1.5)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 60.0) + (:b 80.0) + (:a 70.0 4.0) + (:omega (degrees 22511.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpartgroup group-yellow-pellet + :id 205 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 722)) + ) + +(defpart 722 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.3) + (:scale-x (meters 8) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 140.0) + (:b 0.0) + (:a 0.0 20.0) + (:scalevel-x (meters -0.006666667) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.0) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3)) + (:next-time (seconds 0.167)) + (:next-launcher 723) + ) + ) + +(defpart 723 + :init-specs ((:fade-a -3.0)) + ) + +(defpartgroup group-red-pellet + :id 206 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 724)) + ) + +(defpart 724 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.3) + (:scale-x (meters 10) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 0.0 1 40.0) + (:b 0.0) + (:a 0.0 20.0) + (:scalevel-x (meters -0.006666667) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.0) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3)) + (:next-time (seconds 0.167)) + (:next-launcher 725) + ) + ) + +(defpart 725 + :init-specs ((:fade-a -3.0)) + ) + +(defpartgroup group-dark-pellet + :id 207 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 727 :flags (sp5)) + (sp-item 728 :flags (sp3) :binding 726) + (sp-item 726 :flags (sp2)) + (sp-item 729 :falloff-to (meters 300)) + ) + ) + +(defpart 727 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 20) (meters 0.5)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 40.0) + (:g 0.0) + (:b 255.0) + (:a 50.0 4.0) + (:omega (degrees 22511.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 728 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y (meters 0.1)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-14)) + ) + ) + +(defpart 726 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 0.4) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.5)) + (:scale-x (meters 8) (meters 1)) + (:scale-y (meters 4) (meters 1)) + (:r 80.0) + (:g 10.0) + (:b 255.0) + (:a 6.0 6.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters -0.00074074074) (meters 0.0014814815)) + (:vel-z (meters 0.0053333333)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:accel-z (meters -0.000033333334)) + (:timer (seconds 2.667) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + ) + ) + +(defpart 729 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 0.5) + (:x (meters 6) (meters 1)) + (:scale-x (meters 1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:fade-a 0.85) + (:accel-x (meters -0.00066666666)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-pellet-collect-super + :id 208 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 730 :flags (sp6)) (sp-item 731 :flags (sp6))) + ) + +(defpart 730 + :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x4)) + (:num 0.8) + (:scale-x (meters 6) (meters 4)) + (:rot-x (degrees 45)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 20.0) + (:g 0.0 100.0) + (:b 255.0) + (:a 0.0) + (:scalevel-x (meters -0.013333334) (meters -0.026666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.7) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 right-multiply-quat)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 732) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 732 + :init-specs ((:fade-a -1.7)) + ) + +(defpart 731 + :init-specs ((:texture (new 'static 'texture-id :index #xae :page #x4)) + (:num 2.0) + (:x (meters 2) (meters 1)) + (:scale-x (meters 0)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0.1125)) + (:scalevel-x (meters 0.0016666667) (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-b 1.024) + (:fade-a 1.024) + (:accel-x (meters -0.001)) + (:timer (seconds 0.417)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-part-super-turbo-charges) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defun spt-func-part-super-turbo-charges ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (sparticle-motion-blur arg0 arg1 (-> arg2 launchrot)) + (spt-func-relative-pos arg0 arg1 (the-as sprite-vec-data-3d arg2)) + (none) + ) + +(defpartgroup group-pellet-collect-yellow + :id 209 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 734 :flags (sp3)) (sp-item 735 :flags (sp3) :binding 733) (sp-item 733 :flags (sp2))) + ) + +(defpart 734 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 20)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 140.0) + (:b 0.0) + (:a 80.0) + (:omega (degrees 2261.25)) + (:scalevel-x (meters -0.13333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 735 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y (meters 0.1)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-14)) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 733 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 0.8) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 255.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters -0.00074074074) (meters 0.0014814815)) + (:vel-z (meters 0.0053333333)) + (:scalevel-x (meters -0.001)) + (:scalevel-y :copy scalevel-x) + (:accel-z (meters -0.00026666667)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch)) + (:func 'spt-func-relative-pos) + ) + ) + +(defpartgroup group-pellet-collect-red + :id 210 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 736 :flags (sp3)) (sp-item 737 :period (seconds 5) :length (seconds 0.5))) + ) + +(defpart 736 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 20)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0) + (:b 0.0) + (:a 80.0) + (:omega (degrees 2261.25)) + (:scalevel-x (meters -0.13333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 737 + :init-specs ((:texture (new 'static 'texture-id :index #x8b :page #x4)) + (:num 3.0) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega (degrees 0.0675)) + (:accel-x (meters 0.0046666665)) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-part-red-pellet-charges) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defun spt-func-part-red-pellet-charges ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (sparticle-motion-blur arg0 arg1 (-> arg2 launchrot)) + (spt-func-relative-pos arg0 arg1 (the-as sprite-vec-data-3d arg2)) + (none) + ) + +(defpartgroup group-pellet-collect-dark + :id 211 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 738 :flags (sp3)) (sp-item 739 :period (seconds 10) :length (seconds 0.5))) + ) + +(defpart 738 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 20)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 40.0) + (:g 0.0) + (:b 255.0) + (:a 130.0) + (:omega (degrees 2261.25)) + (:scalevel-x (meters -0.13333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 739 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 2.0) + (:x (meters 6) (meters 1)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:fade-a 1.7) + (:accel-x (meters -0.0013333333)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-pellet-collect-green + :id 212 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 740 :flags (sp3)) (sp-item 741 :period (seconds 10) :length (seconds 5))) + ) + +(defpart 740 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 40)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0) + (:b 0.0) + (:a 130.0) + (:omega (degrees 2261.25)) + (:scalevel-x (meters -0.2)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 741 + :init-specs ((:texture (new 'static 'texture-id :index #x9f :page #x4)) + (:num 1.0) + (:x (meters 4) (meters 1)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 128.0) + (:b 32.0) + (:a 0.0) + (:scalevel-x (meters -0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2 3.2) + (:accel-y (meters -0.001)) + (:friction 0.85 0.05) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.067)) + (:next-launcher 742) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 742 + :init-specs ((:fade-a -0.42666668 -0.42666668)) + ) + +(defpartgroup group-pellet-collect-blue + :id 213 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 743 :flags (sp3)) (sp-item 744 :period (seconds 5) :length (seconds 0.335))) + ) + +(defpart 743 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 2.0) + (:scale-x (meters 20)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 255.0) + (:a 100.0) + (:omega (degrees 2261.25)) + (:scalevel-x (meters -0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.3333334) + (:timer (seconds 0.25)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 744 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 5.0) + (:x (meters 7) (meters 1)) + (:scale-x (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 100.0) + (:b 255.0) + (:a 0.0) + (:omega (degrees 0.1125)) + (:fade-a 1.7) + (:accel-x (meters -0.005)) + (:timer (seconds 0.25)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'spt-func-part-pellet-collect-blue-blurs) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defun spt-func-part-pellet-collect-blue-blurs ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (sparticle-motion-blur arg0 arg1 (-> arg2 launchrot)) + (spt-func-relative-pos arg0 arg1 (the-as sprite-vec-data-3d arg2)) + (none) + ) + +(defpartgroup group-pellet-collect-light + :id 214 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 745 :flags (sp3)) (sp-item 746 :period (seconds 10) :length (seconds 0.167))) + ) + +(defpart 745 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 40)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 40.0) + (:omega (degrees 2261.25)) + (:scalevel-x (meters -0.53333336)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 746 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 3.0) + (:x (meters 6) (meters 1)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega (degrees 0.1125)) + (:vel-x (meters -0.07333333)) + (:fade-a 1.7) + (:friction 1.02) + (:timer (seconds 0.267)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'spt-func-part-pellet-collect-light-blurs) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defun spt-func-part-pellet-collect-light-blurs ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (sparticle-motion-blur arg0 arg1 (-> arg2 launchrot)) + (spt-func-relative-pos arg0 arg1 (the-as sprite-vec-data-3d arg2)) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-collectoid-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 51) 100)) + (s3-0 (+ (logand 0 (rand-uint31-gen *random-generator*)) 150)) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 101) 50)) + (v1-7 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 101) 50)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-7))) + ) + (none) + ) + +(defpartgroup group-collectoid + :id 215 + :flags (sp0) + :bounds (static-bspherem 0 0 0 10) + :parts ((sp-item 747 :flags (sp3)) (sp-item 748 :flags (sp3))) + ) + +(defpart 747 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 255.0) + (:scalevel-x (meters -0.1)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.167)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + ) + ) + +(defpart 749 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 60.0) + (:scale-x (meters 0.2)) + (:rot-x 4) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 128.0) + (:b :copy g) + (:a 128.0) + (:omega (degrees 0.1125)) + (:vel-y (meters 0.06666667) (meters 0.2)) + (:accel-y (meters 0)) + (:friction 0.9) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.167)) + (:next-launcher 750) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 750 + :init-specs ((:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17066666 -0.17066666) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:friction 0.92 0.07) + ) + ) + +(defpart 748 + :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x4)) + (:birth-func 'spt-birth-func-brightness-collectoid-dust) + (:num 10.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters 0)) + (:friction 0.8) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-collectoid-collect + :id 216 + :flags (sp0 sp4 sp14) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 751 :flags (sp3 sp6)) (sp-item 752 :flags (sp3 sp6))) + ) + +(defpart 751 + :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x4)) + (:num 2.0) + (:scale-x (meters 10)) + (:rot-x (degrees 45)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 130.0) + (:b 130.0) + (:a 130.0) + (:scalevel-x (meters -0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.43333334) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 753 + :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x4)) + (:birth-func 'spt-birth-func-brightness-collectoid-dust) + (:num 1.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpart 754 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 200.0) + (:a 128.0) + (:scalevel-x (meters -0.013333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 755 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'birth-func-inherit-size) + (:num 1.0) + (:scale-x (meters 0.00024414062) (meters 0.00012207031)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 32.0) + (:a 128.0) + (:fade-a -0.36571428 -0.36571428) + (:accel-y (meters 0) (meters -0.00033333333)) + (:timer (seconds 1.167)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpart 752 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 60.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 0.0 1 128.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:omega (degrees 0.1125) (degrees 0.1125)) + (:vel-z (meters 0.16666667)) + (:accel-y (meters -0.00066666666)) + (:friction 0.95 0.02) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-y (degrees 0) (degrees 30)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) diff --git a/goal_src/jakx/levels/desert/desert-part.gc b/goal_src/jakx/levels/desert/desert-part.gc index eccb684e5e..4e33db6ff1 100644 --- a/goal_src/jakx/levels/desert/desert-part.gc +++ b/goal_src/jakx/levels/desert/desert-part.gc @@ -7,3 +7,2435 @@ ;; DECOMP BEGINS +(defpartgroup group-volcano-smoke-all + :id 484 + :flags (sp0 sp4 sp11) + :bounds (static-bspherem 0 0 0 1000) + :parts ((sp-item 1549 :fade-after (meters 10000) :falloff-to (meters 10000) :flags (sp6))) + ) + +(defpart 1549 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.001 0.05) + (:x (meters -10) (meters 20)) + (:y (meters -30)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 40) (meters 10)) + (:rot-z (degrees 160) (degrees 40)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 10.0) + (:a 0.0) + (:vel-y (meters 0.1)) + (:scalevel-x (meters 0.006666667) (meters 0.033333335)) + (:rotvel-z (degrees -0.033333335) (degrees 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.13333334 0.26666668) + (:accel-x (meters 0.00016666666)) + (:friction 0.997) + (:timer (seconds 166.67)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 1550) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1550 + :init-specs ((:scalevel-x (meters 0.026666667) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.0) + (:next-time (seconds 2)) + (:next-launcher 1551) + ) + ) + +(defpart 1551 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.14222223) + (:fade-g 0.031111112) + (:fade-b 0.13111112) + (:next-time (seconds 2)) + (:next-launcher 1552) + ) + ) + +(defpart 1552 + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.006 -0.0024)) + ) + +(defpartgroup group-desert-hanging-fire + :id 485 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 40) + :parts ((sp-item 1553 :fade-after (meters 300) :falloff-to (meters 400) :flags (sp6)) + (sp-item 1554 :fade-after (meters 300) :falloff-to (meters 400) :flags (sp6)) + (sp-item 1555 :fade-after (meters 100) :falloff-to (meters 200)) + (sp-item 1556 :falloff-to (meters 60) :flags (sp6)) + ) + ) + +(defpart 1553 + :init-specs ((:texture (new 'static 'texture-id :index #x11 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 2.0 2.0) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees -20) (degrees 40)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:accel-y (meters 0.001) (meters 0.00033333333)) + (:timer (seconds 0.005)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees 70) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-color-desert-hanging-fire-flame* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-alpha-desert-hanging-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 96.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 159.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-hanging-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 4.0 6.0 7.0 8.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-hanging-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 2.0 4.0 5.0 6.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *r-curve-desert-hanging-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 1.0 1.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.6 0.0 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *g-curve-desert-hanging-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -1.0 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *b-curve-desert-hanging-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -5.0000005 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-alpha-desert-hanging-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 3.3333335 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-hanging-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.6 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.5 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -4.999999 -0.75000006 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-hanging-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.4 0.5 0.8)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.4 0.5 1.0 1.0)) + ) + ) + ) + +(define *part-desert-hanging-fire-flame-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.3) + :lifetime-offset (seconds 0.2) + :flags (particle-curve-flags pcf1) + ) + ) + +(set! (-> *part-id-table* 1553 init-specs 15 initial-valuef) + (the-as float *part-desert-hanging-fire-flame-curve-settings*) + ) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* color-start) + *range-color-desert-hanging-fire-flame* + ) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* alpha-start) + *range-alpha-desert-hanging-fire-flame* + ) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* scale-x-start) + *range-scale-desert-hanging-fire-flame-x* + ) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* scale-y-start) + *range-scale-desert-hanging-fire-flame-y* + ) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* r-scalar) *r-curve-desert-hanging-fire-flame*) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* g-scalar) *g-curve-desert-hanging-fire-flame*) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* b-scalar) *b-curve-desert-hanging-fire-flame*) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* a-scalar) *curve-alpha-desert-hanging-fire-flame*) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* scale-x-scalar) *curve-desert-hanging-fire-flame-x*) + +(set! (-> *part-desert-hanging-fire-flame-curve-settings* scale-y-scalar) *curve-desert-hanging-fire-flame-y*) + +(defpart 1554 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:y (meters 1)) + (:scale-x (meters 12) (meters 6)) + (:rot-x (degrees 6.7500005)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 32.0) + (:a 16.0 8.0) + (:omega (degrees 9011.25)) + (:timer (seconds 0.167) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 2048.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1556 + :init-specs ((:num 0.3) + (:x (meters -1) (meters 2)) + (:y (meters 2)) + (:z (meters -1) (meters 2)) + (:rot-x 8) + (:r 8192.0) + (:g 4096.0) + (:b 4096.0) + (:vel-y (meters 0.0033333334)) + (:fade-b -6.826667) + (:accel-y (meters 0.001)) + (:timer (seconds 1)) + (:flags (distort)) + (:next-time (seconds 0.5)) + (:next-launcher 1557) + ) + ) + +(defpart 1557 + :init-specs ((:fade-b 6.826667)) + ) + +(defpart 1555 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.01 0.2) + (:y (meters 0)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 8.0) + (:a 255.0) + (:vel-y (meters 0.026666667) (meters 0.04)) + (:fade-g -0.16666667) + (:fade-b -5.0) + (:fade-a -1.7) + (:friction 0.96 0.03) + (:timer (seconds 1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees 30) (degrees 30)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-desert-bowl-fire + :id 486 + :flags (sp0 sp4 sp11) + :bounds (static-bspherem 0 0 0 40) + :parts ((sp-item 1558 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp6)) + (sp-item 1559 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp6)) + (sp-item 1560 :fade-after (meters 100) :falloff-to (meters 200)) + (sp-item 1561 :falloff-to (meters 60) :flags (sp6)) + ) + ) + +(defpart 1558 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 1.0 1.0) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees -20) (degrees 40)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters -0.006666667) (meters 0.0033333334)) + (:accel-y (meters 0.001) (meters 0.00033333333)) + (:timer (seconds 0.005)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees -90) (degrees 180)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-color-desert-bowl-fire-flame* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-alpha-desert-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 96.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 159.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-bowl-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 5.0 8.0 9.0 10.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-bowl-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *r-curve-desert-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 1.0 1.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.6 0.0 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *g-curve-desert-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -1.0 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *b-curve-desert-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -5.0000005 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-alpha-desert-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 3.3333335 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-bowl-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.6 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.6 0.5 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.6 -1.0 -0.75000006 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-bowl-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.4 0.5 0.6)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.4 0.5 0.3333334 1.0)) + ) + ) + ) + +(define *part-desert-bowl-fire-flame-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.3) + :lifetime-offset (seconds 0.4) + :flags (particle-curve-flags pcf1) + ) + ) + +(set! (-> *part-id-table* 1558 init-specs 15 initial-valuef) + (the-as float *part-desert-bowl-fire-flame-curve-settings*) + ) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* color-start) *range-color-desert-bowl-fire-flame*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* alpha-start) *range-alpha-desert-bowl-fire-flame*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* scale-x-start) *range-scale-desert-bowl-fire-flame-x*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* scale-y-start) *range-scale-desert-bowl-fire-flame-y*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* r-scalar) *r-curve-desert-bowl-fire-flame*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* g-scalar) *g-curve-desert-bowl-fire-flame*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* b-scalar) *b-curve-desert-bowl-fire-flame*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* a-scalar) *curve-alpha-desert-bowl-fire-flame*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* scale-x-scalar) *curve-desert-bowl-fire-flame-x*) + +(set! (-> *part-desert-bowl-fire-flame-curve-settings* scale-y-scalar) *curve-desert-bowl-fire-flame-y*) + +(defpart 1559 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:y (meters 2)) + (:scale-x (meters 20) (meters 6)) + (:rot-x (degrees 6.7500005)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 24.0 8.0) + (:omega (degrees 11261.25)) + (:timer (seconds 0.167) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 2048.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1561 + :init-specs ((:num 0.3) + (:x (meters -1) (meters 2)) + (:y (meters 2)) + (:z (meters -1) (meters 2)) + (:rot-x 8) + (:r 8192.0) + (:g 4096.0) + (:b 4096.0) + (:vel-y (meters 0.0033333334)) + (:fade-b -6.826667) + (:accel-y (meters 0.001)) + (:timer (seconds 1)) + (:flags (distort)) + (:next-time (seconds 0.5)) + (:next-launcher 1562) + ) + ) + +(defpart 1562 + :init-specs ((:fade-b 6.826667)) + ) + +(defpart 1560 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.005 0.08) + (:y (meters 2)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 8.0) + (:a 255.0) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:fade-g -0.16666667) + (:fade-b -5.0) + (:fade-a -1.7) + (:friction 0.99 0.02) + (:timer (seconds 1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3598.0002)) + (:conerot-radius (meters 1) (meters 2)) + ) + ) + +(defpartgroup group-desert-dust-devil + :id 487 + :flags (sp0 sp4) + :bounds (static-bspherem 0 -2 0 100) + :parts ((sp-item 1566 :flags (sp3) :binding 1563) + (sp-item 1563 :flags (sp2 sp3) :binding 1564) + (sp-item 1564 :flags (sp2)) + (sp-item 1566 :flags (sp3) :binding 1563) + (sp-item 1563 :flags (sp2 sp3) :binding 1565) + (sp-item 1565 :flags (sp2)) + ) + ) + +(defpart 1566 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +(defpart 1563 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters 0)) + (:z (meters 5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:a 32.0) + (:vel-x (meters 0.0044444446)) + (:vel-z (meters -0.0013333333)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +(defpart 1564 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y (meters 3)) + (:r 170.0) + (:g 150.0) + (:b 120.0) + (:a 0.0) + (:vel-y (meters 0.015) (meters 0.0033333334)) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:scalevel-y (meters 0.0016666667)) + (:fade-a 0.88 0.48) + (:timer (seconds 16.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 glow)) + (:userdata :data (new 'static 'boxed-array :type int32 20 1 0 0 0 0)) + (:func 'sparticle-texture-animate) + (:next-time (seconds 0.167)) + (:next-launcher 1567) + ) + ) + +(defpart 1567 + :init-specs ((:fade-a 0.007191011) (:next-time (seconds 13.335)) (:next-launcher 1568)) + ) + +(defpart 1568 + :init-specs ((:fade-a -0.51)) + ) + +(defpart 1565 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.1) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 170.0) + (:g 150.0) + (:b 120.0) + (:a 0.0) + (:scalevel-x (meters 0.033333335)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.4) + (:friction 0.99) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 0.167)) + (:next-launcher 1569) + (:conerot-x (degrees -10) (degrees 20)) + (:rotate-x (degrees 30)) + (:rotate-z (degrees -20) (degrees 40)) + ) + ) + +(defpart 1569 + :init-specs ((:scalevel-x (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.02) + (:next-time (seconds 1.667)) + (:next-launcher 1570) + ) + ) + +(defpart 1570 + :init-specs ((:fade-a -0.08)) + ) + +(defpartgroup group-desert-small-bowl-fire + :id 488 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 40) + :parts ((sp-item 1571 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp6)) + (sp-item 1572 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp6)) + (sp-item 1573 :fade-after (meters 100) :falloff-to (meters 200)) + (sp-item 1574 :falloff-to (meters 60) :flags (sp6)) + ) + ) + +(defpart 1571 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 1.0 1.0) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees -20) (degrees 40)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters -0.006666667) (meters 0.0033333334)) + (:accel-y (meters 0.001) (meters 0.00033333333)) + (:timer (seconds 0.005)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees -90) (degrees 180)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-color-desert-small-bowl-fire-flame* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-alpha-desert-small-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 96.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 159.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-small-bowl-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 5.0 8.0 9.0 10.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-small-bowl-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *r-curve-desert-small-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 1.0 1.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.6 0.0 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *g-curve-desert-small-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -1.0 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *b-curve-desert-small-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -5.0000005 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-alpha-desert-small-bowl-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 3.3333335 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-small-bowl-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.6 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.6 0.5 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.6 -1.0 -0.75000006 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-small-bowl-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.4 0.5 0.6)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.4 0.5 0.3333334 1.0)) + ) + ) + ) + +(define *part-desert-small-bowl-fire-flame-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.3) + :lifetime-offset (seconds 0.4) + :flags (particle-curve-flags pcf1) + ) + ) + +(set! (-> *part-id-table* 1571 init-specs 15 initial-valuef) + (the-as float *part-desert-small-bowl-fire-flame-curve-settings*) + ) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* color-start) + *range-color-desert-small-bowl-fire-flame* + ) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* alpha-start) + *range-alpha-desert-small-bowl-fire-flame* + ) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* scale-x-start) + *range-scale-desert-small-bowl-fire-flame-x* + ) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* scale-y-start) + *range-scale-desert-small-bowl-fire-flame-y* + ) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* r-scalar) *r-curve-desert-small-bowl-fire-flame*) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* g-scalar) *g-curve-desert-small-bowl-fire-flame*) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* b-scalar) *b-curve-desert-small-bowl-fire-flame*) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* a-scalar) + *curve-alpha-desert-small-bowl-fire-flame* + ) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* scale-x-scalar) + *curve-desert-small-bowl-fire-flame-x* + ) + +(set! (-> *part-desert-small-bowl-fire-flame-curve-settings* scale-y-scalar) + *curve-desert-small-bowl-fire-flame-y* + ) + +(defpart 1572 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:y (meters 2)) + (:scale-x (meters 20) (meters 6)) + (:rot-x (degrees 6.7500005)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 24.0 8.0) + (:omega (degrees 11261.25)) + (:timer (seconds 0.167) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 2048.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1574 + :init-specs ((:num 0.3) + (:x (meters -1) (meters 2)) + (:y (meters 2)) + (:z (meters -1) (meters 2)) + (:rot-x 8) + (:r 8192.0) + (:g 4096.0) + (:b 4096.0) + (:vel-y (meters 0.0033333334)) + (:fade-b -6.826667) + (:accel-y (meters 0.001)) + (:timer (seconds 1)) + (:flags (distort)) + (:next-time (seconds 0.5)) + (:next-launcher 1575) + ) + ) + +(defpart 1575 + :init-specs ((:fade-b 6.826667)) + ) + +(defpart 1573 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.005 0.08) + (:y (meters 2)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 8.0) + (:a 255.0) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:fade-g -0.16666667) + (:fade-b -5.0) + (:fade-a -1.7) + (:friction 0.99 0.02) + (:timer (seconds 1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3598.0002)) + (:conerot-radius (meters 1) (meters 2)) + ) + ) + +(define *scenecamera-fog-update?* #f) + +;; WARN: Return type mismatch object vs none. +(defun scenecamera-fog-update () + (with-pp + (let ((f30-0 (ja-aframe-num 0))) + (if (and (< 0.0 f30-0) (< f30-0 2.0)) + (set! *scenecamera-fog-update?* #f) + ) + (when (and (< 268.0 f30-0) + (and (< f30-0 278.0) + (logtest? (logior (-> *cpad-list* cpads 1 button0-rel 0) (-> *cpad-list* cpads 1 button0-rel 1)) + (pad-buttons l2) + ) + (logtest? (logior (-> *cpad-list* cpads 1 button0-rel 0) (-> *cpad-list* cpads 1 button0-rel 1)) + (pad-buttons r1) + ) + (logtest? (logior (-> *cpad-list* cpads 1 button0-rel 0) (-> *cpad-list* cpads 1 button0-rel 1)) + (pad-buttons triangle) + ) + (logtest? (logior (-> *cpad-list* cpads 1 button0-rel 0) (-> *cpad-list* cpads 1 button0-rel 1)) + (pad-buttons left) + ) + (= (-> *setting-control* user-current audio-language) 5) + ) + ) + (set! *scenecamera-fog-update?* #t) + (setting-control-method-14 *setting-control* 'blur-a 300 'blur-a 'abs 0.9 0) + (set! (-> *display* force-sync) (the-as uint 120)) + ) + (if (and (< 1088.0 f30-0) (and (< f30-0 1090.0) *scenecamera-fog-update?*)) + (send-event pp 'anim-mode 'still) + ) + ) + (none) + ) + ) + +(defpartgroup group-desert-palace-fire-beacon + :id 489 + :flags (sp0 sp1 sp4) + :bounds (static-bspherem 0 0 0 1000) + :parts ((sp-item 1577 :flags (is-3d sp6) :period (seconds 6) :length (seconds 0.067) :binding 1576) + (sp-item 1576 :flags (is-3d sp2) :period (seconds 6) :length (seconds 1) :offset 25) + ) + ) + +(defpart 1577 + :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x21)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters 3)) + (:z (meters -20)) + (:scale-x (meters 10) (meters 10)) + (:scale-y (meters 1) (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.001)) + (:vel-z (meters 0.06666667) (meters 0.016666668)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-y (meters 0.026666667) (meters 0.013333334)) + (:fade-a 0.064) + (:accel-z (meters -0.0005) (meters -0.00006666667)) + (:friction 0.99) + (:timer (seconds 6.667)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:next-time (seconds 2.5)) + (:next-launcher 1578) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1578 + :init-specs ((:fade-a -0.1024 -0.1024)) + ) + +(defpart 1576 + :init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x21)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:scale-x (meters 20)) + (:scale-y (meters 20)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-z (meters -0.000033333334)) + (:fade-a 0.42666668) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:func 'sparticle-turn-to-vel) + (:next-time (seconds 0.5)) + (:next-launcher 1579) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1579 + :init-specs ((:scalevel-y (meters 0.033333335)) (:fade-a 0.0) (:next-time (seconds 1)) (:next-launcher 1580)) + ) + +(defpart 1580 + :init-specs ((:accel-z (meters -0.001)) (:next-time (seconds 0.335)) (:next-launcher 1581)) + ) + +(defpart 1581 + :init-specs ((:fade-a -0.32 -0.32)) + ) + +(defpartgroup group-part-water-rocks-splash + :id 490 + :duration (seconds 5) + :flags (sp0 sp9) + :bounds (static-bspherem 0 0 0 600) + :parts ((sp-item 1582 :fade-after (meters 300) :falloff-to (meters 300) :period (seconds 60) :length (seconds 0.2)) + (sp-item 1583 :fade-after (meters 300) :falloff-to (meters 300) :flags (is-3d) :period (seconds 60) :length (seconds 0.035) :offset 150) + (sp-item 1584 :fade-after (meters 300) :falloff-to (meters 300) :period (seconds 60) :length (seconds 0.2) :offset 20) + ) + ) + +(defpart 1585 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-desert-beacon-set-accel) + (:num 0.1) + (:x (meters -10) (meters 20)) + (:y (meters 10)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 20) (meters 4)) + (:rot-z (degrees 160) (degrees 40)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0) + (:b 10.0) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.016666668)) + (:rotvel-z (degrees -0.033333335) (degrees 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.13333334 0.13333334) + (:accel-x (meters 0.0016666667)) + (:accel-y (meters 0.0026666666)) + (:friction 0.98) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 2)) + (:next-launcher 1586) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1586 + :init-specs ((:fade-r -0.21333334) + (:fade-g 0.046666667) + (:fade-b 0.19666667) + (:fade-a -0.06666667) + (:accel-y (meters 0.0013333333)) + (:next-time (seconds 2)) + (:next-launcher 1587) + ) + ) + +(defpart 1587 + :init-specs ((:fade-g 0.0) (:fade-b 0.0) (:accel-y (meters 0.00066666666))) + ) + +;; WARN: Return type mismatch vector vs none. +(defun birth-func-desert-beacon-set-accel ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> (math-camera-matrix) rvec quad)) + (set! (-> s5-0 y) 0.0) + (vector-normalize! s5-0 6.826667) + (set! (-> s5-0 y) (-> arg1 acc y)) + (set! (-> arg1 acc x) (-> s5-0 x)) + (set! (-> arg1 acc y) (-> s5-0 y)) + (set! (-> arg1 acc z) (-> s5-0 z)) + ) + (-> arg1 acc) + (none) + ) + +(defpartgroup group-desert-totem-head-fire + :id 491 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 40) + :parts ((sp-item 1588 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp6)) + (sp-item 1589 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp6)) + (sp-item 1590 :fade-after (meters 300) :falloff-to (meters 400)) + (sp-item 1591 :falloff-to (meters 200) :flags (sp6)) + ) + ) + +(defpart 1582 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-curve) + (:num 3.0) + (:y (meters -3)) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.033333335)) + (:vel-z (meters 0.016666668) (meters 0.016666668)) + (:accel-y (meters -0.0011666666)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-wrsplash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 90.0 130.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-wrsplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 127.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-wrsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 2.0 8.0 9.0 10.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 6.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-wrsplash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.9 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 30.0 40.0 41.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 26.666668 99.99998 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-wrsplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-wrsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 3.0 4.0 5.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-wrsplash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -0.3 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 2.5 4.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 12.5 14.999999 0.0 1.0)) + ) + ) + ) + +(define *part-water-rocks-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 1.5) :lifetime-offset (seconds 1)) + ) + +(set! (-> *part-id-table* 1582 init-specs 16 initial-valuef) + (the-as float *part-water-rocks-splash-curve-settings*) + ) + +(set! (-> *part-water-rocks-splash-curve-settings* color-start) *range-wrsplash-color*) + +(set! (-> *part-water-rocks-splash-curve-settings* alpha-start) *range-wrsplash-alpha*) + +(set! (-> *part-water-rocks-splash-curve-settings* scale-x-start) *range-wrsplash-scale-x*) + +(set! (-> *part-water-rocks-splash-curve-settings* scale-y-start) *range-wrsplash-scale-y*) + +(set! (-> *part-water-rocks-splash-curve-settings* r-scalar) #f) + +(set! (-> *part-water-rocks-splash-curve-settings* g-scalar) #f) + +(set! (-> *part-water-rocks-splash-curve-settings* b-scalar) #f) + +(set! (-> *part-water-rocks-splash-curve-settings* a-scalar) *curve-wrsplash-alpha*) + +(set! (-> *part-water-rocks-splash-curve-settings* scale-x-scalar) *curve-wrsplash-scale-x*) + +(set! (-> *part-water-rocks-splash-curve-settings* scale-y-scalar) #f) + +(defpart 1583 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 1.0) + (:x (meters 0) (meters 4)) + (:y (meters 1.5)) + (:scale-x (meters 5) (meters 3)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 5) (meters 3)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.033333335) (meters 0.016666668)) + (:scalevel-y (meters 0.033333335) (meters 0.016666668)) + (:fade-a -0.21333334) + (:timer (seconds 8)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:rotate-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 1584 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 3.0) + (:x (meters 0) (meters 1)) + (:y (meters 5)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.064 -0.064) + (:accel-y (meters -0.0011666666)) + (:timer (seconds 3.335)) + (:flags (sp-cpuinfo-flag-14 glow)) + (:func 'check-drop-group-center) + (:conerot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1590 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.005 0.08) + (:x (meters 0) (meters 10)) + (:y (meters 8)) + (:scale-x (meters 1) (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 8.0) + (:a 255.0) + (:vel-y (meters 0.1) (meters 0.06666667)) + (:fade-g -0.16666667) + (:fade-b -5.0) + (:fade-a -1.7) + (:friction 0.99 0.02) + (:timer (seconds 1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3598.0002)) + (:conerot-radius (meters 1) (meters 2)) + ) + ) + +(defpartgroup group-firepit-fire + :id 492 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 1592 :fade-after (meters 800) :falloff-to (meters 1000) :flags (sp6)) + (sp-item 1593 :fade-after (meters 800) :falloff-to (meters 1000) :flags (sp6)) + (sp-item 1594 :fade-after (meters 300) :falloff-to (meters 400)) + (sp-item 1595 :falloff-to (meters 200) :flags (sp6)) + ) + ) + +(defpart 1592 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 2.0 1.0) + (:x (meters 0) (meters 3)) + (:y (meters 1)) + (:scale-x (meters 1)) + (:rot-z (degrees -20) (degrees 40)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters -0.006666667) (meters 0.0033333334)) + (:accel-y (meters 0.0026666666) (meters 0.0016666667)) + (:timer (seconds 0.005)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees -90) (degrees 180)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-color-firepit-fire-flame* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-alpha-firepit-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 96.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 159.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-firepit-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 10.0 15.0 16.0 17.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-firepit-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 10.0 15.0 16.0 17.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *r-curve-firepit-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 1.0 1.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.6 0.0 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *g-curve-firepit-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -1.0 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *b-curve-firepit-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -5.0000005 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-alpha-firepit-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 3.3333335 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-firepit-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.6 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.6 0.5 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.6 -1.0 -0.75000006 1.0)) + ) + ) + ) + +(if #t + (set! *curve-firepit-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.4 0.5 0.6)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.4 0.5 0.3333334 1.0)) + ) + ) + ) + +(define *part-firepit-fire-flame-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.3) + :lifetime-offset (seconds 0.4) + :flags (particle-curve-flags pcf1) + ) + ) + +(set! (-> *part-id-table* 1592 init-specs 16 initial-valuef) + (the-as float *part-firepit-fire-flame-curve-settings*) + ) + +(set! (-> *part-firepit-fire-flame-curve-settings* color-start) *range-color-firepit-fire-flame*) + +(set! (-> *part-firepit-fire-flame-curve-settings* alpha-start) *range-alpha-firepit-fire-flame*) + +(set! (-> *part-firepit-fire-flame-curve-settings* scale-x-start) *range-scale-firepit-fire-flame-x*) + +(set! (-> *part-firepit-fire-flame-curve-settings* scale-y-start) *range-scale-firepit-fire-flame-y*) + +(set! (-> *part-firepit-fire-flame-curve-settings* r-scalar) *r-curve-firepit-fire-flame*) + +(set! (-> *part-firepit-fire-flame-curve-settings* g-scalar) *g-curve-firepit-fire-flame*) + +(set! (-> *part-firepit-fire-flame-curve-settings* b-scalar) *b-curve-firepit-fire-flame*) + +(set! (-> *part-firepit-fire-flame-curve-settings* a-scalar) *curve-alpha-firepit-fire-flame*) + +(set! (-> *part-firepit-fire-flame-curve-settings* scale-x-scalar) *curve-firepit-fire-flame-x*) + +(set! (-> *part-firepit-fire-flame-curve-settings* scale-y-scalar) *curve-firepit-fire-flame-y*) + +(defpart 1593 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:y (meters 8)) + (:scale-x (meters 40) (meters 6)) + (:rot-x (degrees 22.5)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 24.0 8.0) + (:omega (degrees 18011.25)) + (:timer (seconds 0.167) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 2048.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1595 + :init-specs ((:num 1.0) + (:x (meters -5) (meters 10)) + (:y (meters 10)) + (:z (meters -5) (meters 10)) + (:rot-x 8) + (:r 16384.0) + (:g 8192.0) + (:b 8192.0) + (:vel-y (meters 0.0033333334)) + (:fade-b -10.922667) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 1)) + (:flags (distort)) + (:next-time (seconds 0.5)) + (:next-launcher 1596) + ) + ) + +(defpart 1596 + :init-specs ((:fade-b 10.922667)) + ) + +(defpart 1594 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.005 0.08) + (:x (meters 0) (meters 8)) + (:y (meters 8)) + (:scale-x (meters 1) (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 8.0) + (:a 255.0) + (:vel-y (meters 0.1) (meters 0.06666667)) + (:fade-g -0.16666667) + (:fade-b -5.0) + (:fade-a -1.7) + (:friction 0.99 0.02) + (:timer (seconds 1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3598.0002)) + (:conerot-radius (meters 1) (meters 2)) + ) + ) + +(defpartgroup group-stronghold-torchfire + :id 493 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1597 :fade-after (meters 100) :falloff-to (meters 200) :flags (sp6)) + (sp-item 1598 :fade-after (meters 100) :falloff-to (meters 200) :flags (sp6)) + (sp-item 1599 :fade-after (meters 50) :falloff-to (meters 100) :flags (sp6)) + (sp-item 1600 :fade-after (meters 50) :falloff-to (meters 100) :flags (sp6)) + ) + ) + +(defpart 1597 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 1.0 1.0) + (:y (meters 0)) + (:z (meters 0.5)) + (:scale-x (meters 2.5) (meters 2)) + (:rot-z (degrees -20) (degrees 40)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 200.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.0033333334)) + (:scalevel-x (meters -0.016666668)) + (:accel-y (meters 0.00066666666) (meters 0.00066666666)) + (:friction 0.999) + (:timer (seconds 0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees -10) (degrees 20)) + (:conerot-z (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(if #t + (set! *stronghold-range-color-flame* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *stronghold-range-alpha-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 96.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 159.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *stronghold-range-scale-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 3.0 5.0 6.0 7.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *stronghold-range-scale-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 4.0 8.0 9.0 10.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *r-stronghold-curve-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 1.0 1.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.6 0.0 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *g-stronghold-curve-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -1.0 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *b-stronghold-curve-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -5.0000005 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *stronghold-curve-alpha-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.01 0.01 1.0 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 3.3000002 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *stronghold-curve-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.6 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.6 0.5 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.6 -1.0 -0.75000006 1.0)) + ) + ) + ) + +(if #t + (set! *stronghold-curve-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.4 0.5 0.6)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.4 0.5 0.3333334 1.0)) + ) + ) + ) + +(define *part-stronghold-torchfire-flame-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.3) + :lifetime-offset (seconds 0.2) + :flags (particle-curve-flags pcf1) + ) + ) + +(set! (-> *part-id-table* 1597 init-specs 18 initial-valuef) + (the-as float *part-stronghold-torchfire-flame-curve-settings*) + ) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* color-start) *stronghold-range-color-flame*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* alpha-start) *stronghold-range-alpha-flame*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* scale-x-start) *stronghold-range-scale-flame-x*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* scale-y-start) *stronghold-range-scale-flame-y*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* r-scalar) *r-stronghold-curve-flame*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* g-scalar) *g-stronghold-curve-flame*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* b-scalar) *b-stronghold-curve-flame*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* a-scalar) *stronghold-curve-alpha-flame*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* scale-x-scalar) *stronghold-curve-flame-x*) + +(set! (-> *part-stronghold-torchfire-flame-curve-settings* scale-y-scalar) *stronghold-curve-flame-y*) + +(defpart 1598 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 1.0 1.0) + (:y (meters 0)) + (:z (meters 0.1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 10.0 20.0) + (:g 10.0 20.0) + (:b 200.0) + (:a 64.0) + (:vel-y (meters 0.016666668)) + (:scalevel-x (meters -0.00033333333)) + (:fade-a -0.64) + (:accel-y (meters 0.0013333333) (meters 0.0013333333)) + (:friction 0.999) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1599 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:y (meters 2)) + (:z (meters 0)) + (:scale-x (meters 12) (meters 6)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 32.0) + (:a 8.0 4.0) + (:omega (degrees 11261.25)) + (:timer (seconds 0.167) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 2048.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1600 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 0.01 0.05) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 8.0) + (:a 64.0 64.0) + (:omega (degrees 0.045)) + (:vel-y (meters 0.06666667) (meters 0.016666668)) + (:fade-g -0.43333334) + (:fade-b -0.8) + (:fade-a -0.42666668 -0.42666668) + (:accel-y (meters 0.0026666666)) + (:friction 0.95) + (:timer (seconds 2) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-desert-bollard-fire + :id 494 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 40) + :parts ((sp-item 1601 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp6)) + (sp-item 1602 :flags (sp6)) + (sp-item 1603 :fade-after (meters 100) :falloff-to (meters 200)) + (sp-item 1604 :falloff-to (meters 60) :flags (sp6)) + ) + ) + +(defpart 1601 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 1.0 1.0) + (:x (meters 0) (meters 0.5)) + (:y (meters 0.8)) + (:scale-x (meters 1)) + (:rot-z (degrees -20) (degrees 40)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters -0.006666667) (meters 0.0033333334)) + (:accel-y (meters 0.001) (meters 0.00033333333)) + (:timer (seconds 0.005)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees 0) (degrees 70)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-color-desert-bollard-fire-flame* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-alpha-desert-bollard-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 96.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 159.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-bollard-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 7.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-desert-bollard-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 8.0 12.0 13.0 14.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *r-curve-desert-bollard-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 1.0 1.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.6 0.0 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *g-curve-desert-bollard-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -1.0 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *b-curve-desert-bollard-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -5.0000005 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-alpha-desert-bollard-fire-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 3.3333335 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-bollard-fire-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.6 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.6 0.5 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.6 -1.0 -0.75000006 1.0)) + ) + ) + ) + +(if #t + (set! *curve-desert-bollard-fire-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.4 0.5 0.6)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.4 0.5 0.3333334 1.0)) + ) + ) + ) + +(define *part-desert-bollard-fire-flame-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.3) + :lifetime-offset (seconds 0.4) + :flags (particle-curve-flags pcf1) + ) + ) + +(set! (-> *part-id-table* 1601 init-specs 16 initial-valuef) + (the-as float *part-desert-bollard-fire-flame-curve-settings*) + ) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* color-start) + *range-color-desert-bollard-fire-flame* + ) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* alpha-start) + *range-alpha-desert-bollard-fire-flame* + ) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* scale-x-start) + *range-scale-desert-bollard-fire-flame-x* + ) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* scale-y-start) + *range-scale-desert-bollard-fire-flame-y* + ) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* r-scalar) *r-curve-desert-bollard-fire-flame*) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* g-scalar) *g-curve-desert-bollard-fire-flame*) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* b-scalar) *b-curve-desert-bollard-fire-flame*) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* a-scalar) *curve-alpha-desert-bollard-fire-flame*) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* scale-x-scalar) *curve-desert-bollard-fire-flame-x*) + +(set! (-> *part-desert-bollard-fire-flame-curve-settings* scale-y-scalar) *curve-desert-bollard-fire-flame-y*) + +(defpart 1602 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:y (meters 2)) + (:scale-x (meters 20) (meters 6)) + (:rot-x (degrees 6.7500005)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 24.0 8.0) + (:omega (degrees 22511.25)) + (:timer (seconds 0.167) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 2048.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1604 + :init-specs ((:num 0.3) + (:x (meters -1) (meters 2)) + (:y (meters 2)) + (:z (meters -1) (meters 2)) + (:rot-x 8) + (:r 8192.0) + (:g 4096.0) + (:b 4096.0) + (:vel-y (meters 0.0033333334)) + (:fade-b -6.826667) + (:accel-y (meters 0.001)) + (:timer (seconds 1)) + (:flags (distort)) + (:next-time (seconds 0.5)) + (:next-launcher 1605) + ) + ) + +(defpart 1605 + :init-specs ((:fade-b 6.826667)) + ) + +(defpart 1603 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.005 0.08) + (:y (meters 2)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 8.0) + (:a 255.0) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:fade-g -0.16666667) + (:fade-b -5.0) + (:fade-a -1.7) + (:friction 0.99 0.02) + (:timer (seconds 1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3598.0002)) + (:conerot-radius (meters 1) (meters 2)) + ) + ) + +(defpartgroup group-desert-waterfall-mist-fall + :id 495 + :flags (sp0 sp4) + :bounds (static-bspherem 0 -60 0 80) + :parts ((sp-item 1606 :falloff-to (meters 400) :flags (sp6))) + ) + +(defpart 1606 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 0.2 0.1) + (:x (meters -5) (meters 20)) + (:y (meters 10)) + (:z (meters 10)) + (:scale-x (meters 5) (meters 10)) + (:scale-y :copy scale-x) + (:r 200.0) + (:g 200.0) + (:b 200.0) + (:a 0.0) + (:vel-y (meters -0.046666667) (meters -0.013333334)) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.021333333 0.042666666) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 0 #x407800)) + (:next-time (seconds 2.5)) + (:next-launcher 1607) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1607 + :init-specs ((:fade-a -0.08533333 -0.08533333)) + ) + +(defpartgroup group-desert-waterfall-splash + :id 496 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 80) + :parts ((sp-item 1608 :falloff-to (meters 600) :flags (sp6))) + ) + +(defpart 1608 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 0.0 3.0) + (:y (meters 3)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 50.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.01)) + (:scalevel-x (meters 0.026666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.10666667) + (:accel-y (meters -0.0016666667)) + (:friction 0.98 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x405d00)) + (:conerot-x (degrees 90) (degrees 30)) + (:conerot-y (degrees -60) (degrees 120)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-desert-waterfall-mist-up + :id 497 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1609 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1610 :falloff-to (meters 400) :flags (is-3d sp6)) + (sp-item 1611 :falloff-to (meters 400) :flags (is-3d sp6)) + ) + ) + +(defpart 1609 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.1 0.1) + (:x (meters 10) (meters 5)) + (:z (meters -5) (meters 50)) + (:scale-x (meters 5) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters 0.026666667) (meters 0.016666668)) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.021333333 0.042666666) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 2.5)) + (:next-launcher 1607) + (:rotate-y (degrees -40)) + ) + ) + +(defpart 1610 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-texture-group) + (:num 0.2) + (:x (meters -10)) + (:y (meters 5)) + (:scale-x (meters 10) (meters 10)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 50.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28 1.28) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 0 0 0 #x405d00 #x406300)) + (:next-time (seconds 0.167)) + (:next-launcher 1612) + ) + ) + +(defpart 1611 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-texture-group) + (:num 0.2) + (:x (meters -3)) + (:y (meters 5)) + (:z (meters -10)) + (:scale-x (meters 10) (meters 10)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 50.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28 1.28) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 0 0 0 #x405d00 #x406300)) + (:next-time (seconds 0.167)) + (:next-launcher 1612) + ) + ) + +(defpart 1612 + :init-specs ((:fade-a -0.10666667 -0.10666667)) + ) + +(defpartgroup group-desert-waterfall-mist-rainbow + :id 498 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 80) + :parts ((sp-item 1613 :fade-after (meters 100) :flags (sp6) :hour-mask #b111110000000000001111111) + (sp-item 1614 :falloff-to (meters 400) :flags (is-3d sp6)) + (sp-item 1615 :falloff-to (meters 400) :flags (is-3d sp6)) + ) + ) + +(defpart 1613 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 0.1) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters -20)) + (:scale-x (meters 60)) + (:scale-y :copy scale-x) + (:r 180.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:fade-a 0.0 0.6666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.5)) + (:next-launcher 1616) + ) + ) + +(defpart 1616 + :init-specs ((:fade-a -0.42666668 -0.42666668)) + ) + +(defpart 1614 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-texture-group) + (:num 0.2) + (:x (meters -5)) + (:y (meters -1)) + (:z (meters 5)) + (:scale-x (meters 10) (meters 10)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 50.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28 1.28) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 0 0 0 #x405d00 #x406300)) + (:next-time (seconds 0.167)) + (:next-launcher 1612) + ) + ) + +(defpart 1615 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-texture-group) + (:num 0.2) + (:x (meters -15)) + (:y (meters -1)) + (:z (meters -15)) + (:scale-x (meters 10) (meters 10)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 50.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28 1.28) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 0 0 0 #x405d00 #x406300)) + (:next-time (seconds 0.167)) + (:next-launcher 1612) + ) + ) + +(defpartgroup group-desert-water-rocks-splash + :id 499 + :duration (seconds 1) + :linger-duration (seconds 6) + :flags (sp0 sp9) + :bounds (static-bspherem 0 0 0 600) + :parts ((sp-item 1617 :fade-after (meters 300) :falloff-to (meters 300) :period (seconds 60) :length (seconds 0.2)) + (sp-item 1618 :fade-after (meters 300) :falloff-to (meters 300) :flags (is-3d) :period (seconds 60) :length (seconds 0.035) :offset 150) + (sp-item 1619 :fade-after (meters 300) :falloff-to (meters 300) :period (seconds 60) :length (seconds 0.2) :offset 20) + ) + ) + +(defpart 1617 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:birth-func 'birth-func-curve) + (:num 3.0) + (:y (meters -3)) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.033333335)) + (:vel-z (meters 0.016666668) (meters 0.016666668)) + (:accel-y (meters -0.0011666666)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-dessplash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 90.0 130.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-dessplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 127.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-dessplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 2.0 8.0 9.0 10.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 6.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-dessplash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.9 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 30.0 40.0 41.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 26.666668 99.99998 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-dessplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-dessplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 3.0 4.0 5.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-dessplash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -0.3 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 2.5 4.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 12.5 14.999999 0.0 1.0)) + ) + ) + ) + +(define *part-desert-water-rocks-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 1.5) :lifetime-offset (seconds 1)) + ) + +(set! (-> *part-id-table* 1617 init-specs 16 initial-valuef) + (the-as float *part-desert-water-rocks-splash-curve-settings*) + ) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* color-start) *range-dessplash-color*) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* alpha-start) *range-dessplash-alpha*) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* scale-x-start) *range-dessplash-scale-x*) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* scale-y-start) *range-dessplash-scale-y*) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* r-scalar) #f) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* g-scalar) #f) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* b-scalar) #f) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* a-scalar) *curve-dessplash-alpha*) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* scale-x-scalar) *curve-dessplash-scale-x*) + +(set! (-> *part-desert-water-rocks-splash-curve-settings* scale-y-scalar) #f) + +(defpart 1618 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 1.0) + (:x (meters 0) (meters 4)) + (:y (meters 1.5)) + (:scale-x (meters 5) (meters 3)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 5) (meters 3)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.033333335) (meters 0.016666668)) + (:scalevel-y (meters 0.033333335) (meters 0.016666668)) + (:fade-a -0.21333334) + (:timer (seconds 8)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:rotate-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 1619 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 3.0) + (:x (meters 0) (meters 1)) + (:y (meters 5)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.064 -0.064) + (:accel-y (meters -0.0011666666)) + (:timer (seconds 3.335)) + (:flags (sp-cpuinfo-flag-14 glow)) + (:func 'check-drop-group-center) + (:conerot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) diff --git a/goal_src/jakx/levels/garage/garage-part.gc b/goal_src/jakx/levels/garage/garage-part.gc index 9711b641a2..f7d168dc47 100644 --- a/goal_src/jakx/levels/garage/garage-part.gc +++ b/goal_src/jakx/levels/garage/garage-part.gc @@ -7,3 +7,377 @@ ;; DECOMP BEGINS +(defpartgroup group-garage-steam + :id 463 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1515 :flags (sp6))) + ) + +(defpart 1515 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 2.0) + (:scale-x (meters 0.1) (meters 0.001)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 100.0) + (:a 0.0) + (:omega (degrees 0.18)) + (:vel-z (meters 0.016666668) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.32 0.32) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.167)) + (:next-launcher 1516) + (:conerot-y (degrees -45) (degrees 90)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1516 + :init-specs ((:fade-a -0.32 -0.32)) + ) + +(defpartgroup group-garage-panellight-red + :id 464 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1517 :flags (sp6) :period (seconds 1) :length (seconds 0.017))) + ) + +(defpart 1517 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.0 1 1.0) + (:scale-x (meters 0.15)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 100.0 20.0) + (:timer (seconds 0.5)) + (:flags (use-global-acc)) + (:userdata 819.2) + ) + ) + +(defpartgroup group-garage-panellight-yellow + :id 465 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1518 :flags (sp6) :period (seconds 0.667) :length (seconds 0.017) :offset 50)) + ) + +(defpart 1518 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.0 1 1.0) + (:scale-x (meters 0.15)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 60.0 10.0) + (:timer (seconds 0.25)) + (:flags (use-global-acc)) + (:userdata 819.2) + ) + ) + +(defpartgroup group-garage-panellight-blue + :id 466 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1519 :flags (sp6) :period (seconds 1.335) :length (seconds 0.017) :offset 25)) + ) + +(defpart 1519 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.0 1 1.0) + (:scale-x (meters 0.15)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0) + (:a 100.0 20.0) + (:timer (seconds 0.417)) + (:flags (use-global-acc)) + (:userdata 819.2) + ) + ) + +(defpartgroup group-garage-panellight-purple + :id 467 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1520 :flags (sp6) :period (seconds 0.835) :length (seconds 0.017) :offset 75)) + ) + +(defpart 1520 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.0 1 1.0) + (:scale-x (meters 0.15)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 60.0) + (:g 0.0) + (:b 100.0) + (:a 100.0 20.0) + (:timer (seconds 0.667)) + (:flags (use-global-acc)) + (:userdata 819.2) + ) + ) + +(defpartgroup group-garage-panellight-green + :id 468 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1521 :flags (sp6) :period (seconds 1.5) :length (seconds 0.017) :offset 85)) + ) + +(defpart 1521 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.0 1 1.0) + (:scale-x (meters 0.15)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0) + (:b 0.0) + (:a 60.0 10.0) + (:timer (seconds 0.335)) + (:flags (use-global-acc)) + (:userdata 819.2) + ) + ) + +(defpartgroup group-garage-screen-big + :id 469 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1522 :flags (is-3d sp3 sp6))) + ) + +(defpart 1522 + :init-specs ((:texture (new 'static 'texture-id :index #x9d :page #x659)) + (:num 1.0) + (:y (meters 0.01)) + (:scale-x (meters 1.2)) + (:scale-y (meters 0.7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 + 15 + 1 + 0 + #x65909d00 + #x65909e00 + #x65909f00 + #x6590a000 + #x6590a100 + #x6590a200 + #x6590a300 + #x6590a400 + #x6590a500 + #x6590a600 + #x6590a700 + #x6590a800 + #x6590a900 + #x6590aa00 + #x6590ab00 + #x6590ac00 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-garage-screen-small-top + :id 470 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1523 :flags (is-3d sp3 sp6))) + ) + +(defpart 1523 + :init-specs ((:texture (new 'static 'texture-id :index #x9d :page #x659)) + (:num 1.0) + (:z (meters 0.01)) + (:scale-x (meters 0.7)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 + 5 + 1 + 0 + #x65909d00 + #x65909e00 + #x65909f00 + #x6590a000 + #x6590a100 + #x6590a200 + #x6590a300 + #x6590a400 + #x6590a500 + #x6590a600 + #x6590a700 + #x6590a800 + #x6590a900 + #x6590aa00 + #x6590ab00 + #x6590ac00 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-garage-screen-small-btm + :id 471 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1524 :flags (is-3d sp3 sp6))) + ) + +(defpart 1524 + :init-specs ((:texture (new 'static 'texture-id :index #x9d :page #x659)) + (:num 1.0) + (:z (meters 0.01)) + (:scale-x (meters 0.7)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 + 10 + 1 + 0 + #x65909d00 + #x65909e00 + #x65909f00 + #x6590a000 + #x6590a100 + #x6590a200 + #x6590a300 + #x6590a400 + #x6590a500 + #x6590a600 + #x6590a700 + #x6590a800 + #x6590a900 + #x6590aa00 + #x6590ab00 + #x6590ac00 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-garage-lightglow + :id 472 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 1525 :flags (sp5 sp6)) (sp-item 1526 :flags (sp5 sp6))) + ) + +(defpart 1525 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.1)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 30.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + ) + ) + +(defpart 1526 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-garage-smalltv-glow + :id 473 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 1527 :flags (sp5 sp6))) + ) + +(defpart 1527 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 10) (meters 0.1)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + ) + ) + +(defpartgroup group-garage-largetv-glow + :id 474 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 1528 :flags (sp5 sp6))) + ) + +(defpart 1528 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 20) (meters 0.1)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + ) + ) diff --git a/goal_src/jakx/levels/haven/atoll/atoll-part.gc b/goal_src/jakx/levels/haven/atoll/atoll-part.gc index fe9f813020..2e10328de0 100644 --- a/goal_src/jakx/levels/haven/atoll/atoll-part.gc +++ b/goal_src/jakx/levels/haven/atoll/atoll-part.gc @@ -7,3 +7,189 @@ ;; DECOMP BEGINS +(defpartgroup group-part-atoll-ocean-splash + :id 478 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1531 :falloff-to (meters 1000) :period (seconds 5) :length (seconds 0.2)) + (sp-item 1532 :falloff-to (meters 1000) :flags (is-3d) :period (seconds 5) :length (seconds 2) :offset 250) + (sp-item 1533 :falloff-to (meters 1000) :period (seconds 5) :length (seconds 0.2) :offset 20) + ) + ) + +(defpart 1531 + :init-specs ((:texture (new 'static 'texture-id :index #x64 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 3.0) + (:y (meters -3)) + (:scale-x (meters 1)) + (:rot-z (degrees 90)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.26666668) (meters 0.033333335)) + (:vel-z (meters 0.033333335) (meters 0.033333335)) + (:accel-y (meters -0.0026666666)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-atoll-splash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 90.0 130.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-atoll-splash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 127.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-atoll-splash-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 4.0 12.0 13.0 14.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 8.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-atoll-splash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 4.0 6.0 7.0 8.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-atoll-splash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-atoll-splash-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 10.0 10.0 11.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 45.0 0.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-atoll-splash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 8.0 10.0 11.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 14.0 4.0 1.0 1.0)) + ) + ) + ) + +(define *part-atoll-ocean-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 1.5) :lifetime-offset (seconds 1)) + ) + +(set! (-> *part-id-table* 1531 init-specs 17 initial-valuef) + (the-as float *part-atoll-ocean-splash-curve-settings*) + ) + +(set! (-> *part-atoll-ocean-splash-curve-settings* color-start) *range-atoll-splash-color*) + +(set! (-> *part-atoll-ocean-splash-curve-settings* alpha-start) *range-atoll-splash-alpha*) + +(set! (-> *part-atoll-ocean-splash-curve-settings* scale-x-start) *range-atoll-splash-scale-x*) + +(set! (-> *part-atoll-ocean-splash-curve-settings* scale-y-start) *range-atoll-splash-scale-y*) + +(set! (-> *part-atoll-ocean-splash-curve-settings* r-scalar) #f) + +(set! (-> *part-atoll-ocean-splash-curve-settings* g-scalar) #f) + +(set! (-> *part-atoll-ocean-splash-curve-settings* b-scalar) #f) + +(set! (-> *part-atoll-ocean-splash-curve-settings* a-scalar) *curve-atoll-splash-alpha*) + +(set! (-> *part-atoll-ocean-splash-curve-settings* scale-x-scalar) *curve-atoll-splash-scale-x*) + +(set! (-> *part-atoll-ocean-splash-curve-settings* scale-y-scalar) *curve-atoll-splash-scale-y*) + +(defpart 1532 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:x (meters 0) (meters 10)) + (:y (meters 1.5)) + (:scale-x (meters 10) (meters 3)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 10) (meters 3)) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:scalevel-x (meters 0.1) (meters 0.016666668)) + (:scalevel-y (meters 0.1) (meters 0.016666668)) + (:fade-a -0.21333334) + (:timer (seconds 8)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:rotate-y (degrees 0) (degrees 360)) + ) + ) + +(defpart 1533 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 6.0) + (:x (meters 0) (meters 1)) + (:y (meters 5)) + (:scale-x (meters 8) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.2)) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.064 -0.064) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 6.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 glow)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x406300 #x407800)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) diff --git a/goal_src/jakx/levels/haven/haven-part.gc b/goal_src/jakx/levels/haven/haven-part.gc index 05c2c99721..a0fd812253 100644 --- a/goal_src/jakx/levels/haven/haven-part.gc +++ b/goal_src/jakx/levels/haven/haven-part.gc @@ -7,3 +7,292 @@ ;; DECOMP BEGINS +(defpartgroup group-haven-gen-light + :id 385 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1318 :falloff-to (meters 400) :flags (sp3 sp6)) + (sp-item 1319 :falloff-to (meters 400) :flags (sp3 sp6)) + (sp-item 1320 :falloff-to (meters 400) :flags (sp6) :period (seconds 10) :length (seconds 0.335)) + ) + ) + +(defpart 1318 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 30.0) + (:y (meters 2) (meters 26)) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 60.0) + (:b 50.0) + (:a 64.0 64.0) + (:vel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.0016666667)) + (:friction 0.9) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1321) + (:conerot-z (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1321 + :init-specs ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x)) + ) + +(defpart 1319 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 100.0) + (:y (meters 10) (meters 16)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:omega (degrees 0.0675)) + (:vel-x (meters 0.016666668) (meters 0.06666667)) + (:fade-a -0.14222223 -0.14222223) + (:accel-y (meters -0.0016666667)) + (:friction 0.98 0.01) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-z (degrees -60) (degrees 80)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1320 + :init-specs ((:texture (new 'static 'texture-id :index #x47 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 10.0) + (:y (meters 2) (meters 26)) + (:scale-x (meters 1) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 100.0) + (:b 80.0) + (:a 128.0) + (:timer (seconds 0.035) (seconds 0.13)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 15 1 0 #x404700 #x404800 #x404900)) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-sewer-water ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 60)) + (s3-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 41)) + (s4-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 11)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 30)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-sewer-water-foam ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 90)) + (s3-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 21)) + (s4-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 11)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 30)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +(defpartgroup group-haven-sewerwater + :id 386 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1322 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1323 :falloff-to (meters 800) :flags (sp6)) + (sp-item 1324 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1325 :falloff-to (meters 600) :flags (is-3d sp6)) + ) + ) + +(defpart 1322 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 0.8) + (:y (meters 4)) + (:z (meters 0)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega (degrees 0.045)) + (:vel-z (meters 0.2) (meters 0.016666668)) + (:accel-y (meters -0.0033333334) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.835)) + (:flags (aux-list left-multiply-quat right-multiply-quat)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.167) (seconds 0.33)) + (:next-launcher 1326) + (:conerot-y (degrees 0) (degrees 1)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees -90) (degrees 180)) + ) + ) + +(defpart 1326 + :init-specs ((:r 60.0 100.0) + (:g 160.0) + (:b 60.0 100.0) + (:a 60.0 60.0) + (:next-time (seconds 0.035) (seconds 0.03)) + (:next-launcher 1327) + ) + ) + +(defpart 1327 + :init-specs ((:r 0.0) (:g 0.0) (:b 0.0) (:a 0.0) (:next-time (seconds 0.035) (seconds 0.33)) (:next-launcher 1326)) + ) + +(defpart 1323 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'spt-birth-func-brightness-sewer-water) + (:num 1.0) + (:z (meters -3)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:vel-z (meters 0.2) (meters 0.016666668)) + (:scalevel-x (meters 0.016666668) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0033333334) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-y (degrees 0) (degrees 1)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1324 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'spt-birth-func-brightness-sewer-water-foam) + (:num 4.0) + (:x (meters -8) (meters 16)) + (:y (meters -23)) + (:z (meters 35) (meters 16)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.006666667) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.335) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-2 aux-list glow left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1325 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:x (meters -2) (meters 4)) + (:y (meters -24)) + (:z (meters 40) (meters 4)) + (:scale-x (meters 20) (meters 4)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 20.0) + (:g 130.0) + (:b 90.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.06666667) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-sewerwater-falls-splash + :id 387 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1328 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1329 :falloff-to (meters 600) :flags (is-3d sp6)) + ) + ) + +(defpart 1328 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'spt-birth-func-brightness-sewer-water) + (:num 8.0) + (:x (meters -10) (meters 25)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0026666666) (meters -0.00066666666)) + (:friction 0.99) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:conerot-z (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1329 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:birth-func 'spt-birth-func-brightness-sewer-water) + (:num 1.0) + (:x (meters -10) (meters 20)) + (:scale-x (meters 3)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 64.0) + (:scalevel-x (meters 0.06666667) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0)) + ) + ) diff --git a/goal_src/jakx/levels/icelands/peak-part.gc b/goal_src/jakx/levels/icelands/peak-part.gc index e62ae4204e..5372f74116 100644 --- a/goal_src/jakx/levels/icelands/peak-part.gc +++ b/goal_src/jakx/levels/icelands/peak-part.gc @@ -7,3 +7,497 @@ ;; DECOMP BEGINS +(defpartgroup group-snowball-explode + :id 428 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1424 :flags (sp3 sp6)) (sp-item 1425 :flags (sp3 sp6))) + ) + +(defpart 1424 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 100.0) + (:z (meters 20)) + (:scale-x (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 40.0) + (:g :copy r) + (:b :copy r) + (:a 128.0) + (:vel-y (meters 0.13333334) (meters 0.5)) + (:scalevel-x (meters 0.016666668) (meters 0.033333335)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.013333334) (meters -0.0033333334)) + (:friction 0.96 0.02) + (:timer (seconds 1.667)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees 0) (degrees -40)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees -90) (degrees 180)) + ) + ) + +(defpart 1425 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 10.0) + (:z (meters 20)) + (:scale-x (meters 100)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 40.0) + (:g :copy r) + (:b :copy r) + (:a 64.0) + (:vel-y (meters 0.13333334) (meters 0.33333334)) + (:scalevel-x (meters 0.16666667) (meters 0.33333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:accel-y (meters -0.0033333334) (meters -0.0033333334)) + (:friction 0.96 0.02) + (:timer (seconds 1.667)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:conerot-x (degrees 0) (degrees -40)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees -90) (degrees 180)) + ) + ) + +(defpartgroup group-snowball-moving + :id 429 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1426 :flags (sp6)) (sp-item 1427 :flags (sp6)) (sp-item 1428 :flags (sp6))) + ) + +(defpart 1426 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters -5)) + (:y (meters -18)) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 150.0 10.0) + (:g :copy r) + (:b :copy r) + (:a 128.0) + (:vel-y (meters -0.005)) + (:fade-a -0.14222223 -0.14222223) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1427 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters 5)) + (:y (meters -18)) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 150.0 10.0) + (:g :copy r) + (:b :copy r) + (:a 128.0) + (:vel-y (meters -0.005)) + (:fade-a -0.14222223 -0.14222223) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1428 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters 18)) + (:scale-x (meters 10) (meters 10)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.16666667) (meters 0.16666667)) + (:scalevel-x (meters 0.16666667)) + (:scalevel-y (meters 0.016666668) (meters 0.033333335)) + (:fade-a 0.64 0.64) + (:friction 0.99 0.01) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1429) + (:conerot-z (degrees -10) (degrees 20)) + (:rotate-x (degrees 0) (degrees 3600)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1429 + :init-specs ((:fade-a -0.32 -0.32) (:accel-z (meters 0) (meters 0.0046666665))) + ) + +(defpartgroup group-peak-blowing-snow-fast + :id 430 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1430 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1431 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1432 :falloff-to (meters 300) :flags (sp6)) + ) + ) + +(defpartgroup group-peak-blowing-snow-powder + :id 431 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1430 :falloff-to (meters 600) :flags (sp6)) (sp-item 1431 :falloff-to (meters 600) :flags (sp6))) + ) + +(defpart 1430 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.0 1 0.2) + (:z (meters 0)) + (:scale-x (meters 5) (meters 10)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters 0.13333334) (meters 0.2)) + (:vel-z (meters 0.033333335)) + (:scalevel-x (meters 0.16666667)) + (:scalevel-y (meters 0.016666668) (meters 0.033333335)) + (:fade-a 0.32 0.32) + (:accel-y (meters 0.0016666667) (meters 0.0016666667)) + (:friction 0.99 0.01) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1433) + (:conerot-x (degrees 0) (degrees 3.0000002)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1433 + :init-specs ((:fade-a -0.16 -0.16) (:accel-z (meters 0) (meters 0.0046666665))) + ) + +(defpart 1431 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 0.0 1 0.2) + (:z (meters 0) (meters 1)) + (:scale-x (meters 5) (meters 5)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters 0.13333334) (meters 0.2)) + (:scalevel-x (meters 0.16666667)) + (:fade-a 0.64 0.64) + (:friction 0.99 0.01) + (:timer (seconds 2)) + (:flags (glow)) + (:next-time (seconds 0.167)) + (:next-launcher 1434) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1434 + :init-specs ((:fade-a -0.32 -0.32)) + ) + +(defpart 1432 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 0.1 2.0) + (:z (meters 0) (meters 1)) + (:scale-x (meters 0.4) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:omega (degrees 0.0225)) + (:vel-y (meters 0.13333334) (meters 0.2)) + (:fade-a 1.28 1.28) + (:accel-z (meters 0) (meters -0.0016666667)) + (:friction 0.99 0.01) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.167)) + (:next-launcher 1435) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1435 + :init-specs ((:fade-a -0.08533333 -0.08533333) (:next-time (seconds 0.017)) (:next-launcher 1436)) + ) + +(defpart 1436 + :init-specs ((:accel-x (meters -0.006666667) (meters 0.013333334)) + (:accel-y (meters -0.006666667) (meters 0.013333334)) + (:accel-z (meters 0) (meters -0.0033333334)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 1436) + ) + ) + +(defpartgroup group-peak-billowing-snow-curl-small + :id 432 + :flags (sp0 sp4) + :bounds (static-bspherem 0 40 0 200) + :parts ((sp-item 1437 :falloff-to (meters 1000) :flags (sp6))) + ) + +(defpart 1437 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters -60) (meters 120)) + (:y (meters -30)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 10)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-z (meters 1)) + (:scalevel-x (meters 0.16666667) (meters 0.33333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.16 0.16) + (:accel-y (meters 0.033333335)) + (:accel-z (meters 0) (meters -0.013333334)) + (:friction 0.95) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:next-time (seconds 0.335)) + (:next-launcher 1438) + (:conerot-x (degrees 0) (degrees 3.0000002)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1438 + :init-specs ((:rotvel-z (degrees -0.4) (degrees -0.4)) + (:fade-a -0.053333335 -0.053333335) + (:accel-z (meters 0) (meters 0.0046666665)) + ) + ) + +(defpartgroup group-peak-billowing-snow-curl-large + :id 433 + :flags (sp0 sp4) + :bounds (static-bspherem 0 40 0 200) + :parts ((sp-item 1439 :falloff-to (meters 1000) :flags (sp6))) + ) + +(defpart 1439 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters -100) (meters 200)) + (:y (meters -30)) + (:z (meters 0)) + (:scale-x (meters 20) (meters 10)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-z (meters 1) (meters 0.33333334)) + (:scalevel-x (meters 0.16666667) (meters 0.33333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.16 0.16) + (:accel-y (meters 0.033333335)) + (:accel-z (meters 0) (meters -0.013333334)) + (:friction 0.95) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:next-time (seconds 0.335)) + (:next-launcher 1440) + (:conerot-x (degrees 0) (degrees 3.0000002)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1440 + :init-specs ((:rotvel-z (degrees -0.4) (degrees -0.4)) + (:fade-a -0.053333335 -0.053333335) + (:accel-z (meters 0) (meters 0.0046666665)) + ) + ) + +(defpartgroup group-peak-ice-shimmer-a + :id 434 + :flags (sp0 sp4) + :bounds (static-bspherem 0 40 0 200) + :parts ((sp-item 1441 :flags (sp6) :period (seconds 2) :length (seconds 0.017))) + ) + +(defpart 1441 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 35)) + (:z (meters 0)) + (:scale-x (meters 3)) + (:rot-x (degrees 67.5)) + (:rot-z (degrees 30)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:vel-y (meters -0.6666667)) + (:scalevel-x (meters 0.5)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.167)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 8192.0) + (:next-time (seconds 0.085)) + (:next-launcher 1442) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1442 + :init-specs ((:scalevel-x (meters -0.16666667)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-peak-ice-shimmer-b + :id 435 + :flags (sp0 sp4) + :bounds (static-bspherem 0 40 0 200) + :parts ((sp-item 1443 :flags (sp6) :period (seconds 3) :length (seconds 0.017))) + ) + +(defpart 1443 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 25)) + (:z (meters 0)) + (:scale-x (meters 3)) + (:rot-x (degrees 67.5)) + (:rot-z (degrees -50.000004)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:vel-y (meters -0.6666667)) + (:scalevel-x (meters 0.6666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.167)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 8192.0) + (:next-time (seconds 0.085)) + (:next-launcher 1444) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1444 + :init-specs ((:scalevel-x (meters -0.33333334)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-peak-ice-shimmer-c + :id 436 + :flags (sp0 sp4) + :bounds (static-bspherem 0 40 0 200) + :parts ((sp-item 1445 :flags (sp6) :period (seconds 3.5) :length (seconds 0.017))) + ) + +(defpart 1445 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 50)) + (:scale-x (meters 3)) + (:rot-x (degrees 67.5)) + (:rot-z (degrees 50.000004)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-y (meters -0.6666667)) + (:scalevel-x (meters 0.33333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 8192.0) + (:next-time (seconds 0.25)) + (:next-launcher 1446) + (:rotate-x (degrees -5)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1446 + :init-specs ((:scalevel-x (meters -0.33333334)) (:scalevel-y :copy scalevel-x)) + ) + +(deftype peak-states (structure) + ((light light-state :inline) + (flame flames-state :inline) + ) + ) + + +(defbehavior update-mood-peak time-of-day-proc ((arg0 mood-context) (arg1 float) (arg2 int)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (copy-mood-exterior arg0) + (when (= (-> *level* level arg2 display?) 'display) + (let ((a1-3 (-> arg0 current-fog erase-color)) + (v1-2 (new 'static 'vector :data (new 'static 'array float 4 96.0 96.0 96.0 128.0))) + (a2-1 (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0))) + ) + (set! (-> a1-3 quad) (-> arg0 light-group 0 ambi color quad)) + (let ((t0-0 a1-3)) + (let ((a0-6 a1-3)) + (let ((a3-2 (-> arg0 light-group 0 dir0 color))) + (let ((t1-0 (fmax (-> arg0 light-group 0 dir0 direction y) (-> arg0 light-group 0 dir1 direction y)))) + (.mov vf7 t1-0) + ) + (.lvf vf5 (&-> a3-2 quad)) + ) + (.lvf vf4 (&-> a0-6 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> t0-0 quad) vf6) + ) + (vector*! a1-3 a1-3 v1-2) + (vector-min! a1-3 a1-3 a2-1) + ) + ) + (when (and (= (-> *level* level arg2 status) 'active) + (< (the-as uint (-> *time-of-day-context* mode)) (the-as uint 9)) + ) + (-> arg0 state) + (update-mood-light arg0 5 0 -1.0 0.0 arg1 0.0 2.0) + (update-mood-flames arg0 6 1 8 1.0 0.000390625 1.5) + (set! (-> arg0 times 7 w) 1.0) + ) + 0 + (none) + ) + ) diff --git a/goal_src/jakx/levels/icelands/snow-part.gc b/goal_src/jakx/levels/icelands/snow-part.gc index 4e5374ed80..952868f5d4 100644 --- a/goal_src/jakx/levels/icelands/snow-part.gc +++ b/goal_src/jakx/levels/icelands/snow-part.gc @@ -7,3 +7,297 @@ ;; DECOMP BEGINS +(defpartgroup group-snow-dinobreak + :id 501 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1626 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 1627 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + ) + ) + +(defpart 1626 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 10.0) + (:y (meters 0) (meters 8)) + (:z (meters -15) (meters 30)) + (:scale-x (meters 5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 110.0) + (:b 100.0) + (:a 32.0 32.0) + (:vel-x (meters -0.05) (meters 0.1)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.053333335) + (:accel-y (meters -0.00066666666)) + (:friction 0.9) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1627 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:num 50.0) + (:y (meters 0) (meters 8)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 0.2) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 100.0) + (:a 128.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:timer (seconds 2)) + (:flags (glow)) + (:conerot-x (degrees -45) (degrees 90)) + (:conerot-z (degrees -45) (degrees 90)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-snow-torch + :id 502 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 1628 :fade-after (meters 800) :falloff-to (meters 1000) :flags (sp6)) + (sp-item 1629 :fade-after (meters 800) :falloff-to (meters 1000) :flags (sp6)) + (sp-item 1630 :fade-after (meters 300) :falloff-to (meters 400)) + (sp-item 1631 :falloff-to (meters 200) :flags (sp6)) + ) + ) + +(defpart 1628 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 2.0 1.0) + (:x (meters 0) (meters 3)) + (:y (meters 1)) + (:scale-x (meters 1)) + (:rot-z (degrees -20) (degrees 40)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters -0.006666667) (meters 0.0033333334)) + (:accel-y (meters 0.0026666666) (meters 0.0016666667)) + (:timer (seconds 0.005)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees -90) (degrees 180)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-color-snow-torch-flame* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-alpha-snow-torch-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 96.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 159.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-snow-torch-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 10.0 15.0 16.0 17.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-scale-snow-torch-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 10.0 15.0 16.0 17.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *r-curve-snow-torch-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 1.0 1.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.6 0.0 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *g-curve-snow-torch-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -1.0 -2.0 1.0)) + ) + ) + ) + +(if #t + (set! *b-curve-snow-torch-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 0.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 -5.0000005 0.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-alpha-snow-torch-flame* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 3.3333335 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-snow-torch-flame-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.6 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.6 0.5 0.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.6 -1.0 -0.75000006 1.0)) + ) + ) + ) + +(if #t + (set! *curve-snow-torch-flame-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.4 0.5 0.6)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.4 0.5 0.3333334 1.0)) + ) + ) + ) + +(define *part-snow-torch-flame-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.3) + :lifetime-offset (seconds 0.4) + :flags (particle-curve-flags pcf1) + ) + ) + +(set! (-> *part-id-table* 1628 init-specs 16 initial-valuef) + (the-as float *part-snow-torch-flame-curve-settings*) + ) + +(set! (-> *part-snow-torch-flame-curve-settings* color-start) *range-color-snow-torch-flame*) + +(set! (-> *part-snow-torch-flame-curve-settings* alpha-start) *range-alpha-snow-torch-flame*) + +(set! (-> *part-snow-torch-flame-curve-settings* scale-x-start) *range-scale-snow-torch-flame-x*) + +(set! (-> *part-snow-torch-flame-curve-settings* scale-y-start) *range-scale-snow-torch-flame-y*) + +(set! (-> *part-snow-torch-flame-curve-settings* r-scalar) *r-curve-snow-torch-flame*) + +(set! (-> *part-snow-torch-flame-curve-settings* g-scalar) *g-curve-snow-torch-flame*) + +(set! (-> *part-snow-torch-flame-curve-settings* b-scalar) *b-curve-snow-torch-flame*) + +(set! (-> *part-snow-torch-flame-curve-settings* a-scalar) *curve-alpha-snow-torch-flame*) + +(set! (-> *part-snow-torch-flame-curve-settings* scale-x-scalar) *curve-snow-torch-flame-x*) + +(set! (-> *part-snow-torch-flame-curve-settings* scale-y-scalar) *curve-snow-torch-flame-y*) + +(defpart 1629 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.4) + (:y (meters 8)) + (:scale-x (meters 40) (meters 6)) + (:rot-x (degrees 22.5)) + (:rot-z (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 24.0 8.0) + (:omega (degrees 18011.25)) + (:timer (seconds 0.167) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 2048.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1631 + :init-specs ((:num 1.0) + (:x (meters -5) (meters 10)) + (:y (meters 10)) + (:z (meters -5) (meters 10)) + (:rot-x 8) + (:r 16384.0) + (:g 8192.0) + (:b 8192.0) + (:vel-y (meters 0.0033333334)) + (:fade-b -10.922667) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 1)) + (:flags (distort)) + (:next-time (seconds 0.5)) + (:next-launcher 1632) + ) + ) + +(defpart 1632 + :init-specs ((:fade-b 10.922667)) + ) + +(defpart 1630 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.005 0.08) + (:x (meters 0) (meters 8)) + (:y (meters 8)) + (:scale-x (meters 1) (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 8.0) + (:a 255.0) + (:vel-y (meters 0.1) (meters 0.06666667)) + (:fade-g -0.16666667) + (:fade-b -5.0) + (:fade-a -1.7) + (:friction 0.99 0.02) + (:timer (seconds 1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3598.0002)) + (:conerot-radius (meters 1) (meters 2)) + ) + ) diff --git a/goal_src/jakx/levels/intro/intro-part.gc b/goal_src/jakx/levels/intro/intro-part.gc index 34bf6ee9d3..86f3b0d98b 100644 --- a/goal_src/jakx/levels/intro/intro-part.gc +++ b/goal_src/jakx/levels/intro/intro-part.gc @@ -5,5 +5,6772 @@ ;; name in dgo: intro-part ;; dgos: COMMON, GAME +(define-extern *range-carexplo-cu-dust-color* curve-color-fast) +(define-extern *range-carexplo-cu-dust-alpha* curve2d-fast) +(define-extern *range-carexplo-cu-dust-scale-x* curve2d-fast) +(define-extern *range-carexplo-cu-dust-scale-y* curve2d-fast) +(define-extern *curve-carexplo-cu-dust-alpha* curve2d-fast) +(define-extern *curve-carexplo-cu-dust-scale-x* curve2d-fast) +(define-extern *curve-carexplo-cu-dust-scale-y* curve2d-fast) +(define-extern *part-intro-car-explo-closeup-dust-in-curve-settings* particle-curve-settings) +(define-extern *range-intro-carexplo-cu-color* curve-color-fast) +(define-extern *range-intro-carexplo-cu-alpha* curve2d-fast) +(define-extern *range-intro-carexplo-cu-scale-x* curve2d-fast) +(define-extern *range-intro-carexplo-cu-scale-y* curve2d-fast) +(define-extern *curve-intro-carexplo-cu-alpha* curve2d-fast) +(define-extern *curve-intro-carexplo-cu-scale-x* curve2d-fast) +(define-extern *curve-intro-carexplo-cu-scale-y* curve2d-fast) +(define-extern *part-intro-car-explo-closeup-texture-curve-settings* particle-curve-settings) +(define-extern *range-carexplo-fnl-dust-color* curve-color-fast) +(define-extern *range-carexplo-fnl-dust-alpha* curve2d-fast) +(define-extern *range-carexplo-fnl-dust-scale-x* curve2d-fast) +(define-extern *range-carexplo-fnl-dust-scale-y* curve2d-fast) +(define-extern *curve-carexplo-fnl-dust-alpha* curve2d-fast) +(define-extern *curve-carexplo-fnl-dust-scale-x* curve2d-fast) +(define-extern *curve-carexplo-fnl-dust-scale-y* curve2d-fast) +(define-extern *part-outro-b-final-explosion-dust-in-curve-settings* particle-curve-settings) +(define-extern *range-outro-carexplo-fnl-color* curve-color-fast) +(define-extern *range-outro-carexplo-fnl-alpha* curve2d-fast) +(define-extern *range-outro-carexplo-fnl-scale-x* curve2d-fast) +(define-extern *range-outro-carexplo-fnl-scale-y* curve2d-fast) +(define-extern *curve-outro-carexplo-fnl-alpha* curve2d-fast) +(define-extern *curve-outro-carexplo-fnl-scale-x* curve2d-fast) +(define-extern *curve-outro-carexplo-fnl-scale-y* curve2d-fast) +(define-extern *part-outro-b-final-explosion-texture-curve-settings* particle-curve-settings) +(define-extern *range-carexplo-dust-color* curve-color-fast) +(define-extern *range-carexplo-dust-alpha* curve2d-fast) +(define-extern *range-carexplo-dust-scale-x* curve2d-fast) +(define-extern *range-carexplo-dust-scale-y* curve2d-fast) +(define-extern *curve-carexplo-dust-alpha* curve2d-fast) +(define-extern *curve-carexplo-dust-scale-x* curve2d-fast) +(define-extern *curve-carexplo-dust-scale-y* curve2d-fast) +(define-extern *part-intro-car-explosion-dust-in-curve-settings* particle-curve-settings) +(define-extern *range-intro-carexplo-color* curve-color-fast) +(define-extern *range-intro-carexplo-alpha* curve2d-fast) +(define-extern *range-intro-carexplo-scale-x* curve2d-fast) +(define-extern *range-intro-carexplo-scale-y* curve2d-fast) +(define-extern *curve-intro-carexplo-alpha* curve2d-fast) +(define-extern *curve-intro-carexplo-scale-x* curve2d-fast) +(define-extern *curve-intro-carexplo-scale-y* curve2d-fast) +(define-extern *part-intro-car-explosion-texture-curve-settings* particle-curve-settings) +(define-extern *range-intro-carexplo2-scale-x* curve2d-fast) +(define-extern *range-intro-carexplo2-scale-y* curve2d-fast) +(define-extern *part-intro-car-explosion-texture2-curve-settings* particle-curve-settings) + ;; DECOMP BEGINS +;; this file is debug only +(declare-file (debug)) + +(defskelgroup skel-thuga thuga 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defskelgroup skel-thugb thugb 0 3 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :shadow 2 + :origin-joint-index 3 + :shadow-joint-index 3 + ) + +(defpartgroup group-intro-opening-missile-thrust + :id 56 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 342 :flags (is-3d sp5 sp6)) (sp-item 343 :flags (sp5 sp6))) + ) + +(defpart 342 + :init-specs ((:texture (new 'static 'texture-id :index #x79 :page #x4)) + (:num 18.0) + (:z (meters 0.6)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) 2 (degrees 45)) + (:scale-y (meters 1) (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 180)) + ) + ) + +(defpart 343 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:x (meters 0)) + (:z (meters 0.5)) + (:scale-x (meters 2) (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 80.0 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-intro-opening-missile-smoke + :id 57 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 344 :flags (sp6))) + ) + +(defpart 344 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 64.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.28 -1.28) + (:timer (seconds 0.335)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-opening-muzzle-flash + :id 58 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 345 :flags (is-3d sp5 sp6)) (sp-item 346 :flags (sp5 sp6))) + ) + +(defpart 345 + :init-specs ((:texture (new 'static 'texture-id :index #x79 :page #x4)) + (:num 0.8) + (:z (meters 1.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) 2 (degrees 45)) + (:scale-y (meters 3) (meters 0.5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 346 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 0.8) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 130.0) + (:b 80.0) + (:a 255.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-opening-bullet-sparks + :id 59 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 347 :flags (sp5 sp6)) (sp-item 348 :flags (sp6))) + ) + +(defpart 347 + :init-specs ((:texture (new 'static 'texture-id :index #x20 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.2)) + (:rot-x (degrees 22.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 130.0) + (:b 80.0) + (:a 128.0) + (:scalevel-x (meters 0.1) (meters 0.1)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.035) (seconds 0.015)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 348 + :init-specs ((:texture (new 'static 'texture-id :index #x60 :page #x4)) + (:num 8.0 8.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 130.0) + (:b 80.0) + (:a 255.0) + (:omega (degrees 0.1125)) + (:vel-y (meters 0.06666667) (meters 0.13333334)) + (:friction 0.8) + (:timer (seconds 0.035) (seconds 0.047)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-opening-bullet-sparks-local + :id 60 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 349 :flags (sp6)) (sp-item 350 :flags (sp6))) + ) + +(defpart 349 + :init-specs ((:texture (new 'static 'texture-id :index #x20 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 180.0) + (:b 180.0) + (:a 128.0) + (:timer (seconds 0.05)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 350 + :init-specs ((:texture (new 'static 'texture-id :index #x60 :page #x4)) + (:num 8.0 8.0) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 110.0) + (:b 80.0) + (:a 255.0) + (:omega (degrees 0.0675)) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:friction 0.8) + (:timer (seconds 0.085)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-part-sparks-bits-local) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defun spt-func-part-sparks-bits-local ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (sparticle-motion-blur arg0 arg1 arg2) + (spt-func-relative-pos arg0 arg1 (the-as sprite-vec-data-3d arg2)) + (none) + ) + +(defpartgroup group-intro-vehicle-tire-skid + :id 61 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 351 :flags (sp6))) + ) + +(defpart 351 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:y (meters -0.5)) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0 50.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334)) + (:vel-z (meters -0.06666667)) + (:scalevel-x (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 352) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 352 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.016666668)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-intro-vehicle-tire-skid-stop + :id 62 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 353 :flags (sp6))) + ) + +(defpart 353 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 60.0 50.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334)) + (:vel-z (meters 0.56666666)) + (:scalevel-x (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 354) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 354 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.016666668)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-intro-vehicle-tire-skid-brake + :id 63 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 355 :flags (sp6))) + ) + +(defpart 355 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.5) + (:y (meters -0.5)) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 130.0) + (:b 130.0) + (:a 64.0 64.0) + (:vel-y (meters 0.01)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 356) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 356 + :init-specs ((:scalevel-x (meters 0.006666667) (meters 0.0033333334)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-outro-vehicle-tire-skid + :id 64 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 357 :flags (sp6))) + ) + +(defpart 357 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:y (meters -0.5)) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 110.0) + (:b 110.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334)) + (:vel-z (meters -0.06666667)) + (:scalevel-x (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 358) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 358 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.016666668)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-intro-car-explo-closeup + :id 65 + :flags (sp0) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 360 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 361 :period (seconds 30) :length (seconds 0.035)) + (sp-item 362 :period (seconds 30) :length (seconds 0.035) :offset 20) + (sp-item 363 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 364 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 365 :period (seconds 30) :length (seconds 0.167)) + (sp-item 366 :period (seconds 30) :length (seconds 0.035)) + (sp-item 367 :period (seconds 30) :length (seconds 0.5)) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 368 :flags (sp3) :binding 359) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 359 :flags (sp2) :period (seconds 4) :length (seconds 2)) + ) + ) + +(defpart 364 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 40)) + (:rot-x (degrees 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0) + (:b 40.0) + (:a 128.0) + (:omega (degrees 6767.9995)) + (:scalevel-x (meters -0.16666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.267)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 360 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 40)) + (:rot-x (degrees 675)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 40.0) + (:a 64.0) + (:omega (degrees 22511.25)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 40960.0) + ) + ) + +(defpart 366 + :init-specs ((:texture (new 'static 'texture-id :index #xaa :page #x4)) + (:num 200.0) + (:scale-x (meters 0.1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:vel-y (meters 0.33333334) (meters 0.6666667)) + (:rotvel-z (degrees -6.0000005) (degrees 12.000001)) + (:fade-g -0.13333334) + (:fade-b -0.05) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.006666667)) + (:friction 0.9 0.03) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 70)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 361 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 100.0) + (:scale-x (meters 0.5) (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 80.0 50.0) + (:b 30.0 1 100.0) + (:a 64.0 64.0) + (:omega (degrees 0.0675)) + (:vel-y (meters 0.33333334) (meters 1)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.14222223 -0.14222223) + (:friction 0.9 0.03) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 362 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 30.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.06666667)) + (:friction 0.97) + (:timer (seconds 2)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-z (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)) + ) + ) + +(if #t + (set! *range-carexplo-cu-dust-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 30.0 30.0 30.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-cu-dust-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 64.0 32.0 33.0 34.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -32.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-cu-dust-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 8.0 20.0 21.0 22.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 12.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-cu-dust-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 8.0 20.0 21.0 22.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 12.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-cu-dust-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.3 -0.8 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.6 1.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 0.79999995 -5.0000005 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-cu-dust-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.8 1.2 2.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.2 0.8000001 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-cu-dust-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.8 1.2 2.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.2 0.8000001 1.0 1.0)) + ) + ) + ) + +(define *part-intro-car-explo-closeup-dust-in-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 2) + :lifetime-offset (seconds 1) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 362 init-specs 14 initial-valuef) + (the-as float *part-intro-car-explo-closeup-dust-in-curve-settings*) + ) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* color-start) *range-carexplo-cu-dust-color*) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* alpha-start) *range-carexplo-cu-dust-alpha*) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* scale-x-start) + *range-carexplo-cu-dust-scale-x* + ) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* scale-y-start) + *range-carexplo-cu-dust-scale-y* + ) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* r-scalar) #f) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* g-scalar) #f) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* b-scalar) #f) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* a-scalar) *curve-carexplo-cu-dust-alpha*) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* scale-x-scalar) + *curve-carexplo-cu-dust-scale-x* + ) + +(set! (-> *part-intro-car-explo-closeup-dust-in-curve-settings* scale-y-scalar) + *curve-carexplo-cu-dust-scale-y* + ) + +(defpart 363 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 30.0) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 160.0) + (:b 40.0) + (:a 128.0) + (:vel-y (meters 0) (meters 0.26666668)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.114285715) + (:fade-b -0.042857144) + (:fade-a -0.18285714 -0.18285714) + (:friction 0.93) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 365 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 5.0) + (:scale-x (meters 6) (meters 4)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0 20.0) + (:b 30.0) + (:a 128.0) + (:vel-y (meters 0.6666667) (meters 0.26666668)) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.14222223 -0.14222223) + (:friction 0.7) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-2d-spline-align-instant) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 367 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-curve) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 0) (meters 2)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.26666668) (meters 0.13333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees 20) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-intro-carexplo-cu-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-intro-carexplo-cu-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-intro-carexplo-cu-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-intro-carexplo-cu-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-intro-carexplo-cu-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.05 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 -0.3076923 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-intro-carexplo-cu-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.5 2.5)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.25 2.5000002 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-intro-carexplo-cu-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.5 2.5)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.25 2.5000002 1.0 1.0)) + ) + ) + ) + +(define *part-intro-car-explo-closeup-texture-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.5) + :lifetime-offset (seconds 0.6) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 367 init-specs 16 initial-valuef) + (the-as float *part-intro-car-explo-closeup-texture-curve-settings*) + ) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* color-start) *range-intro-carexplo-cu-color*) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* alpha-start) *range-intro-carexplo-cu-alpha*) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* scale-x-start) + *range-intro-carexplo-cu-scale-x* + ) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* scale-y-start) + *range-intro-carexplo-cu-scale-y* + ) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* r-scalar) #f) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* g-scalar) #f) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* b-scalar) #f) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* a-scalar) *curve-intro-carexplo-cu-alpha*) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* scale-x-scalar) + *curve-intro-carexplo-cu-scale-x* + ) + +(set! (-> *part-intro-car-explo-closeup-texture-curve-settings* scale-y-scalar) + *curve-intro-carexplo-cu-scale-y* + ) + +(defpart 368 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 8) (meters 8)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 200.0) + (:a 128.0) + (:vel-y (meters 0.13333334) (meters 0.1)) + (:scalevel-x (meters -0.06666667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.99) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 359 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-inherit-size) + (:num 1.0) + (:scale-x (meters 0.00024414062) (meters 0.00012207031)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 32.0) + (:a 128.0) + (:fade-a -0.18285714 -0.18285714) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-outro-car-explo-closeup + :id 66 + :flags (sp0 sp12) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 369 :flags (sp3 sp6) :period (seconds 30) :length (seconds 0.017)) + (sp-item 370 :flags (sp3 sp6) :period (seconds 30) :length (seconds 0.017)) + (sp-item 371 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 372 :period (seconds 30) :length (seconds 0.5)) + ) + ) + +(defpart 371 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:y (meters 1.8)) + (:z (meters 9)) + (:scale-x (meters 5)) + (:rot-x (degrees 6.7500005)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0) + (:b 40.0) + (:a 128.0) + (:scalevel-x (meters -0.033333335)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.267)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 1228.8) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 369 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 40)) + (:rot-x (degrees 675)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 40.0) + (:a 64.0) + (:omega (degrees 22511.25)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 40960.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 370 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 600.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 80.0 50.0) + (:b 30.0 1 100.0) + (:a 255.0) + (:vel-z (meters 0.06666667) (meters 0.16666667)) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.28333333) + (:accel-y (meters -0.001)) + (:accel-z (meters -0.0033333334)) + (:friction 0.9 0.09) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'spt-func-relative-pos) + (:conerot-x (degrees 0) (degrees 20)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 372 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 0) (meters 2)) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:vel-y (meters 0) (meters 0.13333334)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.0033333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (left-multiply-quat)) + (:func 'spt-func-relative-pos) + (:conerot-x (degrees 20) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-opening-debris-smoke + :id 67 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 373 :flags (sp6))) + ) + +(defpart 373 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 8.0 32.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags ()) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-opening-debris-fire + :id 68 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 374 :flags (sp6))) + ) + +(defpart 374 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 1.0) + (:x (meters 0) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:scalevel-x (meters -0.016666668) (meters -0.033333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.28 -2.55) + (:accel-y (meters 0.0016666667) (meters 0.0033333334)) + (:timer (seconds 0.167) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-opening-debris-fire-glow + :id 69 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 375 :flags (sp6))) + ) + +(defpart 375 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 10) (meters 1)) + (:rot-x (degrees 22.5)) + (:scale-y (meters 20) (meters 1)) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 60.0 20.0) + (:omega (degrees 22511.25)) + (:fade-a -4.0) + (:timer (seconds 0.067)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-outro-crash-b-fire + :id 70 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 376 :flags (sp6))) + ) + +(defpart 376 + :init-specs ((:texture (new 'static 'texture-id :index #xbb :page #x4)) + (:num 4.0) + (:x (meters -3) (meters 6)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-z (meters 0.33333334)) + (:scalevel-x (meters -0.1) (meters -0.06666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.64 -0.64) + (:accel-y (meters 0.0016666667) (meters 0.0033333334)) + (:timer (seconds 0.167) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-outro-smoke ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 121) 50)) + (s3-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 40)) + (s4-0 (+ (logand 0 (rand-uint31-gen *random-generator*)) 120)) + (v1-6 (+ (logand 0 (rand-uint31-gen *random-generator*)) 170)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 (the-as int s4-0)))) + (set! (-> arg2 rotate-z) (the float (- s5-0 (the-as int v1-6)))) + ) + (none) + ) + +(defpartgroup group-outro-b-rising-smoke + :id 71 + :linger-duration (seconds 0) + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 377 :flags (sp6))) + ) + +(defpart 377 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-outro-smoke) + (:num 2.0) + (:x (meters 0) (meters 4)) + (:y (meters 0) (meters -2)) + (:scale-x (meters 1) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.0016666667) (meters 0.0016666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334 0.21333334) + (:accel-y (meters 0.0013333333) (meters 0.0013333333)) + (:friction 0.85) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 1)) + (:next-launcher 378) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 378 + :init-specs ((:scalevel-x (meters 0.00033333333) (meters 0.00033333333)) + (:scalevel-y (meters 0.00033333333) (meters 0.00033333333)) + (:fade-a 0.0) + ) + ) + +(defpartgroup group-outro-b-car-steam + :id 72 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 379 :flags (sp6))) + ) + +(defpart 379 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 2.0) + (:scale-x (meters 0.1) (meters 0.001)) + (:scale-y :copy scale-x) + (:r 250.0) + (:g 250.0) + (:b 250.0) + (:a 0.0) + (:omega (degrees 0.0675)) + (:vel-y (meters 0.033333335) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.32 0.32) + (:friction 0.95 0.02) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.167)) + (:next-launcher 380) + (:conerot-x (degrees 0) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 380 + :init-specs ((:fade-a -0.32 -0.32) (:func 'nothing)) + ) + +(defpartgroup group-outro-b-dripping-gas + :id 73 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 381 :flags (sp6)) (sp-item 382 :flags (sp6)) (sp-item 383 :flags (is-3d sp3 sp6))) + ) + +(defpart 381 + :init-specs ((:texture (new 'static 'texture-id :index #xbc :page #x4)) + (:num 1.0) + (:x (meters 0) (meters 0.3)) + (:scale-x (meters 0.02) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0) + (:b 0.0) + (:a 128.0) + (:omega (degrees 0.0225)) + (:accel-y (meters -0.001) (meters -0.00066666666)) + (:timer (seconds 0.5)) + (:flags ()) + (:func 'sparticle-motion-blur) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 382 + :init-specs ((:texture (new 'static 'texture-id :index #xbc :page #x4)) + (:num 2.0) + (:x (meters 0) (meters 0.5)) + (:y (meters -1)) + (:scale-x (meters 0.02) (meters 0.04)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0) + (:b 0.0) + (:a 64.0) + (:omega (degrees 0.045)) + (:vel-y (meters 0.01) (meters 0.026666667)) + (:accel-y (meters -0.005)) + (:timer (seconds 2)) + (:flags ()) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 10) (degrees 50.000004)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 383 + :init-specs ((:texture (new 'static 'texture-id :index #x95 :page #x4)) + (:num 1.0) + (:y (meters -1.05)) + (:z (meters -0.1)) + (:scale-x (meters 5)) + (:scale-y :copy scale-x) + (:r 10.0) + (:g 20.0) + (:b 60.0) + (:a 120.0) + (:scalevel-x (meters 0.00033333333)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 31.667)) + (:flags (sp-cpuinfo-flag-4 glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-outro-b-car-fire + :id 74 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 384 :flags (sp6)) (sp-item 385 :flags (sp6))) + ) + +(defpart 384 + :init-specs ((:texture (new 'static 'texture-id :index #xbb :page #x4)) + (:num 4.0) + (:x (meters 0) (meters 1.5)) + (:y (meters -0.2) (meters -1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1) (meters 1)) + (:r 128.0) + (:g 100.0 20.0) + (:b 64.0 100.0) + (:a 0.0) + (:vel-y (meters -0.006666667) (meters -0.006666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.8 0.8) + (:accel-y (meters 0.001) (meters 0.00066666666)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 386) + (:rotate-x (degrees 0) (degrees 3600)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 386 + :init-specs ((:scalevel-x (meters -0.0033333334) (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.21333334 -0.07111111) + (:fade-b -0.85333335 -0.28444445) + (:fade-a -0.85333335 -0.28444445) + ) + ) + +(defpart 385 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.5) + (:y (meters 0) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 20.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667 0.10666667) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:timer (seconds 13.335)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 387) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 387 + :init-specs ((:fade-a -0.07111111 -0.07111111)) + ) + +(defpartgroup group-outro-b-final-explosion + :id 75 + :flags (sp0) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 390 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 391 :period (seconds 30) :length (seconds 0.035)) + (sp-item 392 :period (seconds 30) :length (seconds 0.035) :offset 20) + (sp-item 393 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 394 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 395 :period (seconds 30) :length (seconds 0.167)) + (sp-item 396 :period (seconds 30) :length (seconds 0.5)) + (sp-item 397 :flags (sp3) :binding 388) + (sp-item 398 :flags (sp3) :binding 388) + (sp-item 399 :flags (sp3) :binding 388) + (sp-item 388 :flags (sp2) :period (seconds 30) :length (seconds 2)) + (sp-item 388 :flags (sp2) :period (seconds 30) :length (seconds 2)) + (sp-item 388 :flags (sp2) :period (seconds 30) :length (seconds 2)) + (sp-item 400 :flags (sp3) :binding 389) + (sp-item 401 :flags (sp3) :binding 389) + (sp-item 402 :flags (sp3) :binding 389) + (sp-item 389 :flags (sp2)) + (sp-item 389 :flags (sp2)) + (sp-item 389 :flags (sp2)) + (sp-item 403 :flags (is-3d sp3 sp6)) + (sp-item 404 :flags (sp6)) + (sp-item 405 :flags (sp6)) + (sp-item 406 :flags (sp6)) + ) + ) + +(defpart 400 + :init-specs ((:texture (new 'static 'texture-id :index #xc2 :page #x4)) + (:num 1.0) + (:x (meters -18)) + (:y (meters 15)) + (:scale-x (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:rotvel-z (degrees 2)) + (:accel-y (meters -0.0011333333)) + (:friction 0.95) + (:timer (seconds 5)) + (:flags (aux-list)) + (:rotate-y (degrees 10)) + ) + ) + +(defpart 401 + :init-specs ((:texture (new 'static 'texture-id :index #xc2 :page #x4)) + (:num 1.0) + (:x (meters -8)) + (:y (meters 15)) + (:scale-x (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:rotvel-z (degrees -2)) + (:accel-y (meters -0.0010666667)) + (:friction 0.95) + (:timer (seconds 5)) + (:flags (aux-list)) + (:rotate-y (degrees -20)) + ) + ) + +(defpart 402 + :init-specs ((:texture (new 'static 'texture-id :index #xc2 :page #x4)) + (:num 1.0) + (:x (meters -12)) + (:y (meters 20)) + (:scale-x (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:rotvel-z (degrees 2)) + (:accel-y (meters -0.001)) + (:friction 0.95) + (:timer (seconds 5)) + (:flags (aux-list)) + (:rotate-y (degrees -70)) + ) + ) + +(defpart 389 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 0.3 0.3) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 40.0 20.0) + (:b 0.0) + (:a 128.0) + (:fade-g -0.6666667) + (:fade-a -0.85333335 -0.85333335) + (:accel-y (meters -0.000033333334) (meters -0.00016666666)) + (:friction 0.99) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +(defpart 404 + :init-specs ((:texture (new 'static 'texture-id :index #x11 :page #x4)) + (:num 0.1 0.4) + (:y (meters -1.05)) + (:z (meters 0)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.2) (meters 0.2)) + (:r 255.0) + (:g 100.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.006666667) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.01)) + (:fade-a 5.12 5.12) + (:accel-y (meters 0.00033333333) (meters 0.001)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.085)) + (:next-launcher 407) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 405 + :init-specs ((:texture (new 'static 'texture-id :index #x11 :page #x4)) + (:num 0.1 0.4) + (:x (meters -3)) + (:y (meters -1.05)) + (:z (meters -5)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.2) (meters 0.2)) + (:r 255.0) + (:g 100.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.006666667) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.01)) + (:fade-a 5.12 5.12) + (:accel-y (meters 0.00033333333) (meters 0.001)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.085)) + (:next-launcher 407) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 406 + :init-specs ((:texture (new 'static 'texture-id :index #x11 :page #x4)) + (:num 0.1 0.4) + (:x (meters -6)) + (:y (meters -1.05)) + (:z (meters -1)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.2) (meters 0.2)) + (:r 255.0) + (:g 100.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.006666667) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.01)) + (:fade-a 5.12 5.12) + (:accel-y (meters 0.00033333333) (meters 0.001)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.085)) + (:next-launcher 407) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 407 + :init-specs ((:fade-a -2.55 -2.55)) + ) + +(defpart 403 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:y (meters -1.05)) + (:z (meters -0.1)) + (:scale-x (meters 30)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 31.667)) + (:flags (sp-cpuinfo-flag-4 glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 394 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 20)) + (:rot-x (degrees 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0) + (:b 40.0) + (:a 128.0) + (:omega (degrees 6767.9995)) + (:scalevel-x (meters -0.16666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.267)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 390 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 20)) + (:rot-x (degrees 675)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 40.0) + (:a 64.0) + (:omega (degrees 22511.25)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 40960.0) + ) + ) + +(defpart 408 + :init-specs ((:texture (new 'static 'texture-id :index #xaa :page #x4)) + (:num 200.0) + (:scale-x (meters 0.1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:vel-y (meters 0.33333334) (meters 0.6666667)) + (:rotvel-z (degrees -6.0000005) (degrees 12.000001)) + (:fade-g -0.13333334) + (:fade-b -0.05) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.006666667)) + (:friction 0.9 0.03) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 70)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 391 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 100.0) + (:scale-x (meters 0.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 80.0 50.0) + (:b 30.0 1 100.0) + (:a 64.0 64.0) + (:omega (degrees 0.0675)) + (:vel-y (meters 0.33333334) (meters 0.33333334)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.14222223 -0.14222223) + (:friction 0.9 0.03) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 392 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 30.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.06666667)) + (:friction 0.97) + (:timer (seconds 2)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-z (degrees -90) (degrees 180)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-carexplo-fnl-dust-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 30.0 30.0 30.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-fnl-dust-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 64.0 65.0 66.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -64.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-fnl-dust-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 8.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-fnl-dust-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 8.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-fnl-dust-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.3 -0.8 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.6 1.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 0.79999995 -5.0000005 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-fnl-dust-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.8 1.2 2.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.2 0.8000001 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-fnl-dust-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.8 1.2 2.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.2 0.8000001 1.0 1.0)) + ) + ) + ) + +(define *part-outro-b-final-explosion-dust-in-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 2) + :lifetime-offset (seconds 1) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 392 init-specs 14 initial-valuef) + (the-as float *part-outro-b-final-explosion-dust-in-curve-settings*) + ) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* color-start) *range-carexplo-fnl-dust-color*) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* alpha-start) *range-carexplo-fnl-dust-alpha*) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* scale-x-start) + *range-carexplo-fnl-dust-scale-x* + ) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* scale-y-start) + *range-carexplo-fnl-dust-scale-y* + ) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* r-scalar) #f) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* g-scalar) #f) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* b-scalar) #f) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* a-scalar) *curve-carexplo-fnl-dust-alpha*) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* scale-x-scalar) + *curve-carexplo-fnl-dust-scale-x* + ) + +(set! (-> *part-outro-b-final-explosion-dust-in-curve-settings* scale-y-scalar) + *curve-carexplo-fnl-dust-scale-y* + ) + +(defpart 393 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 30.0) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 160.0) + (:b 40.0) + (:a 255.0) + (:vel-y (meters 0) (meters 0.1)) + (:scalevel-x (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.114285715) + (:fade-b -0.042857144) + (:fade-a -0.3642857 -0.3642857) + (:friction 0.93) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 395 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 40.0) + (:scale-x (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y (meters 2)) + (:r 255.0) + (:g 100.0) + (:b 40.0) + (:a 128.0) + (:vel-y (meters 0.23333333) (meters 0.33333334)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.6666667) + (:fade-a -0.42666668 -0.42666668) + (:friction 0.8) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:func 'sparticle-2d-spline-align-instant) + (:conerot-x (degrees 20) (degrees -130)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 396 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-curve) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 0) (meters 2)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees 20) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-outro-carexplo-fnl-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-outro-carexplo-fnl-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-outro-carexplo-fnl-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 3.0 5.0 6.0 7.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-outro-carexplo-fnl-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 3.0 5.0 6.0 7.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-outro-carexplo-fnl-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.05 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 -0.3076923 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-outro-carexplo-fnl-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.5 2.5)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.25 2.5000002 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-outro-carexplo-fnl-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.5 2.5)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.25 2.5000002 1.0 1.0)) + ) + ) + ) + +(define *part-outro-b-final-explosion-texture-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.5) + :lifetime-offset (seconds 0.6) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 396 init-specs 16 initial-valuef) + (the-as float *part-outro-b-final-explosion-texture-curve-settings*) + ) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* color-start) *range-outro-carexplo-fnl-color*) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* alpha-start) *range-outro-carexplo-fnl-alpha*) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* scale-x-start) + *range-outro-carexplo-fnl-scale-x* + ) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* scale-y-start) + *range-outro-carexplo-fnl-scale-y* + ) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* r-scalar) #f) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* g-scalar) #f) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* b-scalar) #f) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* a-scalar) *curve-outro-carexplo-fnl-alpha*) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* scale-x-scalar) + *curve-outro-carexplo-fnl-scale-x* + ) + +(set! (-> *part-outro-b-final-explosion-texture-curve-settings* scale-y-scalar) + *curve-outro-carexplo-fnl-scale-y* + ) + +(defpart 397 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 200.0) + (:a 128.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters -0.033333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 10)) + (:rotate-y (degrees 180)) + ) + ) + +(defpart 398 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 6)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 200.0) + (:a 128.0) + (:vel-y (meters 0.16666667)) + (:scalevel-x (meters -0.033333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 40)) + (:rotate-y (degrees 180)) + ) + ) + +(defpart 399 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 200.0) + (:a 128.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters -0.033333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 80)) + (:rotate-y (degrees 180)) + ) + ) + +(defpart 388 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'birth-func-inherit-size) + (:num 1.0) + (:scale-x (meters 0.00024414062) (meters 0.00012207031)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 100.0 20.0) + (:b 0.0 32.0) + (:a 128.0) + (:fade-g -0.14285715) + (:fade-a -0.18285714 -0.18285714) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-outro-crash-b-wheel + :id 76 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 409 :flags (sp6)) (sp-item 410 :flags (sp6))) + ) + +(defpart 409 + :init-specs ((:texture (new 'static 'texture-id :index #x11 :page #x4)) + (:num 2.0) + (:y (meters 0) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1) (meters 1)) + (:r 255.0) + (:g 100.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters -0.0033333334) (meters -0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 5.12 5.12) + (:accel-y (meters 0.001)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.085)) + (:next-launcher 411) + (:rotate-x (degrees 0) (degrees 3600)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 411 + :init-specs ((:fade-a -2.55 -2.55)) + ) + +(defpart 410 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.5) + (:y (meters 0) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 20.0) + (:g :copy r) + (:b :copy r) + (:a 128.0) + (:vel-y (meters 0) (meters 0.01)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-vehicle-roll-fire + :id 77 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 412 :flags (sp6))) + ) + +(defpart 412 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 1.0) + (:x (meters 0) (meters 3)) + (:scale-x (meters 1.5) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.5) (meters 0.2)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:scalevel-x (meters -0.033333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.28) + (:fade-b -1.28 -1.28) + (:accel-y (meters 0.0033333334) (meters 0.0033333334)) + (:timer (seconds 0.1) (seconds 0.03)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:rotate-y (degrees 0) (degrees 3600)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-vehicle-roll-glow + :id 78 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 413 :flags (sp6))) + ) + +(defpart 413 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 30) (meters 1)) + (:rot-x (degrees 225)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 30.0) + (:omega (degrees 45011.25)) + (:fade-a -1.2) + (:timer (seconds 0.167)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-debris-landing-dust + :id 79 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 414 :flags (sp6))) + ) + +(defpart 414 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 6.0) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 32.0 32.0) + (:vel-y (meters 0.2)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:accel-y (meters 0.00033333333) (meters 0.0016666667)) + (:friction 0.8 0.05) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:conerot-x (degrees 80) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-debris-landing-sparks + :id 80 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 415 :flags (sp6)) (sp-item 414 :flags (sp6))) + ) + +(defpart 415 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 20.0) + (:x (meters -1) (meters 2)) + (:y (meters 0)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.05)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:omega (degrees 0.01125)) + (:vel-x (meters -0.16666667) (meters -0.06666667)) + (:fade-a -2.55 -2.55) + (:accel-y (meters -0.0023333333)) + (:friction 0.91) + (:timer (seconds 0.167) (seconds 0.33)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-y (degrees -10) (degrees 20)) + (:conerot-z (degrees 0) (degrees -40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-car-little-explo + :id 81 + :flags (sp0) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 416 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 417 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 418 :period (seconds 30) :length (seconds 0.167)) + (sp-item 419 :period (seconds 30) :length (seconds 0.035)) + ) + ) + +(defpart 416 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 20)) + (:rot-x (degrees 675)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 40.0) + (:a 64.0) + (:omega (degrees 22511.25)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 40960.0) + ) + ) + +(defpart 417 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 30.0) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 160.0) + (:b 40.0) + (:a 128.0) + (:vel-y (meters 0) (meters 0.13333334)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.114285715) + (:fade-b -0.042857144) + (:fade-a -0.18285714 -0.18285714) + (:friction 0.93) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 418 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 5.0) + (:scale-x (meters 3) (meters 2)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0 20.0) + (:b 30.0) + (:a 128.0) + (:vel-y (meters 0.33333334) (meters 0.13333334)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.14222223 -0.14222223) + (:friction 0.7) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-2d-spline-align-instant) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 419 + :init-specs ((:texture (new 'static 'texture-id :index #xaa :page #x4)) + (:num 50.0) + (:scale-x (meters 0.1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:vel-y (meters 0.16666667) (meters 0.33333334)) + (:rotvel-z (degrees -6.0000005) (degrees 12.000001)) + (:fade-g -0.13333334) + (:fade-b -0.05) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.006666667)) + (:friction 0.9 0.03) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 70)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-barrel-dust + :id 82 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 420 :flags (sp6)) (sp-item 421 :flags (sp6))) + ) + +(defpart 420 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 20.0) + (:scale-x (meters 4) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 64.0 64.0) + (:vel-y (meters 0.33333334) (meters 0.33333334)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.0016666667)) + (:friction 0.8 0.05) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 421 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:num 40.0) + (:x (meters -10) (meters 20)) + (:y (meters 0) (meters 10)) + (:scale-x (meters 0.1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0) + (:g 32.0) + (:b 32.0) + (:a 128.0) + (:vel-z (meters 0.1) (meters 0.033333335)) + (:rotvel-z (degrees -2) (degrees 4)) + (:accel-y (meters -0.0016666667) (meters -0.0033333334)) + (:friction 0.99) + (:timer (seconds 4)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees -90) (degrees 90)) + (:conerot-y (degrees -90) (degrees 180)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-vehicle-tunnel-dust + :id 83 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 422 :flags (sp6))) + ) + +(defpart 422 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 20.0 10.0) + (:vel-z (meters -0.06666667)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.05 -0.05) + (:accel-y (meters 0) (meters 0.00016666666)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.335)) + (:next-launcher 423) + (:conerot-x (degrees 10) (degrees 30)) + (:conerot-y (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-mine-tunnel-burning-car + :id 84 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 424 :flags (sp6))) + ) + +(defpart 424 + :init-specs ((:texture (new 'static 'texture-id :index #xbb :page #x4)) + (:num 4.0) + (:x (meters -2) (meters 4)) + (:z (meters 3)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 100.0 20.0) + (:b 90.0 20.0) + (:a 0.0) + (:vel-x (meters 0.033333335)) + (:scalevel-x (meters -0.033333335) (meters -0.033333335)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64 0.64) + (:accel-x (meters -0.0016666667)) + (:friction 0.9) + (:timer (seconds 0.167) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-mine-tunnel-burning-car-smoke + :id 85 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 425 :flags (sp6))) + ) + +(defpart 425 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:scalevel-x (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-mine-tunnel-burning-car-glow + :id 86 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 426 :flags (sp5 sp6))) + ) + +(defpart 426 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:z (meters -4)) + (:scale-x (meters 20) (meters 1)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 40.0 10.0) + (:omega (degrees 22511.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-tunnel-mine-glow + :id 87 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 427 :flags (sp6))) + ) + +(defpart 427 + :init-specs ((:texture (new 'static 'texture-id :index #x7b :page #x4)) + (:num 0.08) + (:y (meters 0.03)) + (:scale-x (meters 0.8)) + (:rot-x (degrees 11.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 16.0) + (:a 128.0) + (:omega (degrees 9011.25)) + (:timer (seconds 0.085)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 2048.0) + (:func 'spt-func-relative-pos) + ) + ) + +(defpartgroup group-intro-mine-landing-sparks + :id 88 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 428 :flags (sp6))) + ) + +(defpart 428 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:x (meters -1) (meters 2)) + (:y (meters 0)) + (:z (meters 0) (meters 3)) + (:scale-x (meters 0.03)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:omega (degrees 0.0045)) + (:vel-z (meters 0.4) (meters 0.16666667)) + (:fade-a -2.55 -2.55) + (:accel-y (meters -0.0023333333)) + (:friction 0.91) + (:timer (seconds 0.167) (seconds 0.33)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees -20)) + (:conerot-y (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-mine-landing-dust + :id 89 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 429 :flags (sp6))) + ) + +(defpart 429 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 32.0) + (:vel-z (meters 0.2)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.053333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.8 0.05) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:conerot-y (degrees 0) (degrees 80)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-mine-tunnel-car-explosion + :id 90 + :flags (sp0) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 431 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 432 :period (seconds 30) :length (seconds 0.035)) + (sp-item 433 :period (seconds 30) :length (seconds 0.035) :offset 20) + (sp-item 434 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 435 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 436 :period (seconds 30) :length (seconds 0.167)) + (sp-item 437 :period (seconds 30) :length (seconds 0.035)) + (sp-item 438 :period (seconds 30) :length (seconds 0.5)) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 439 :flags (sp3) :binding 430) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + (sp-item 430 :flags (sp2) :period (seconds 4) :length (seconds 2)) + ) + ) + +(defpart 435 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 40)) + (:rot-x (degrees 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0) + (:b 40.0) + (:a 128.0) + (:omega (degrees 6767.9995)) + (:scalevel-x (meters -0.16666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.267)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + ) + ) + +(defpart 431 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 40)) + (:rot-x (degrees 675)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 40.0) + (:a 64.0) + (:omega (degrees 22511.25)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 40960.0) + ) + ) + +(defpart 437 + :init-specs ((:texture (new 'static 'texture-id :index #xaa :page #x4)) + (:num 200.0) + (:scale-x (meters 0.1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 1.2)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:vel-y (meters 0.33333334) (meters 0.6666667)) + (:rotvel-z (degrees -6.0000005) (degrees 12.000001)) + (:fade-g -0.13333334) + (:fade-b -0.05) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.006666667)) + (:friction 0.9 0.03) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 70)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 432 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 100.0) + (:scale-x (meters 0.5) (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 80.0 50.0) + (:b 30.0 1 100.0) + (:a 64.0 64.0) + (:omega (degrees 0.0675)) + (:vel-y (meters 0.33333334) (meters 1)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.14222223 -0.14222223) + (:friction 0.9 0.03) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 434 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 30.0) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 160.0) + (:b 40.0) + (:a 128.0) + (:vel-y (meters 0) (meters 0.26666668)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.114285715) + (:fade-b -0.042857144) + (:fade-a -0.18285714 -0.18285714) + (:friction 0.93) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 440 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 5.0) + (:scale-x (meters 6) (meters 4)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g :copy r) + (:b :copy r) + (:a 64.0) + (:vel-y (meters 0.33333334) (meters 0.13333334)) + (:scalevel-x (meters 0.13333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.053333335) + (:friction 0.7) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-4 aux-list)) + (:func 'sparticle-2d-spline-align-instant) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 433 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 30.0) + (:z (meters 20)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.06666667)) + (:friction 0.97) + (:timer (seconds 2)) + (:flags (aux-list glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-z (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)) + ) + ) + +(if #t + (set! *range-carexplo-dust-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 30.0 30.0 30.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-dust-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 64.0 32.0 33.0 34.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -32.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-dust-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 8.0 20.0 21.0 22.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 12.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-carexplo-dust-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 8.0 20.0 21.0 22.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 12.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-dust-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.3 -0.8 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.6 1.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 0.79999995 -5.0000005 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-dust-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.8 1.2 2.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.2 0.8000001 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-carexplo-dust-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.2 0.8 1.2 2.2)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.2 0.8000001 1.0 1.0)) + ) + ) + ) + +(define *part-intro-car-explosion-dust-in-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 2) + :lifetime-offset (seconds 1) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 433 init-specs 15 initial-valuef) + (the-as float *part-intro-car-explosion-dust-in-curve-settings*) + ) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* color-start) *range-carexplo-dust-color*) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* alpha-start) *range-carexplo-dust-alpha*) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* scale-x-start) *range-carexplo-dust-scale-x*) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* scale-y-start) *range-carexplo-dust-scale-y*) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* r-scalar) #f) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* g-scalar) #f) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* b-scalar) #f) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* a-scalar) *curve-carexplo-dust-alpha*) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* scale-x-scalar) *curve-carexplo-dust-scale-x*) + +(set! (-> *part-intro-car-explosion-dust-in-curve-settings* scale-y-scalar) *curve-carexplo-dust-scale-y*) + +(defpart 436 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 5.0) + (:scale-x (meters 6) (meters 4)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0 20.0) + (:b 30.0) + (:a 128.0) + (:vel-y (meters 0.6666667) (meters 0.26666668)) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.14222223 -0.14222223) + (:friction 0.7) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-2d-spline-align-instant) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 438 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-curve) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 0) (meters 2)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.26666668) (meters 0.13333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees 20) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-intro-carexplo-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-intro-carexplo-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-intro-carexplo-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-intro-carexplo-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 6.0 10.0 11.0 12.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-intro-carexplo-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.05 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.8 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 -0.3076923 -2.6666665 1.0)) + ) + ) + ) + +(if #t + (set! *curve-intro-carexplo-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.5 2.5)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.25 2.5000002 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-intro-carexplo-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.8 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.5 2.5)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.25 2.5000002 1.0 1.0)) + ) + ) + ) + +(define *part-intro-car-explosion-texture-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.5) + :lifetime-offset (seconds 0.6) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 438 init-specs 16 initial-valuef) + (the-as float *part-intro-car-explosion-texture-curve-settings*) + ) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* color-start) *range-intro-carexplo-color*) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* alpha-start) *range-intro-carexplo-alpha*) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* scale-x-start) *range-intro-carexplo-scale-x*) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* scale-y-start) *range-intro-carexplo-scale-y*) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* r-scalar) #f) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* g-scalar) #f) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* b-scalar) #f) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* a-scalar) *curve-intro-carexplo-alpha*) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* scale-x-scalar) *curve-intro-carexplo-scale-x*) + +(set! (-> *part-intro-car-explosion-texture-curve-settings* scale-y-scalar) *curve-intro-carexplo-scale-y*) + +(defpart 439 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 1.0) + (:scale-x (meters 8) (meters 8)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 200.0) + (:a 128.0) + (:vel-y (meters 0.13333334) (meters 0.1)) + (:scalevel-x (meters -0.06666667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.99) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 0) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 430 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-inherit-size) + (:num 1.0) + (:scale-x (meters 0.00024414062) (meters 0.00012207031)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 32.0) + (:a 128.0) + (:fade-a -0.18285714 -0.18285714) + (:timer (seconds 2.335)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-intro-vehicle-tire-skid-smoke + :id 91 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 441 :flags (sp6))) + ) + +(defpart 441 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:y (meters -0.5)) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 110.0) + (:b 110.0) + (:a 16.0 16.0) + (:vel-x (meters -0.36666667)) + (:vel-y (meters 0.06666667)) + (:vel-z (meters 0.4)) + (:scalevel-x (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 442) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 442 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.016666668)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-intro-vehicle-tire-skid-smoke2 + :id 92 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 443 :flags (sp6))) + ) + +(defpart 443 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:y (meters -0.5)) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 110.0) + (:b 110.0) + (:a 16.0 16.0) + (:vel-x (meters -0.36666667)) + (:vel-y (meters 0.06666667)) + (:vel-z (meters 0.06666667)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.32) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-car-explosion-wall + :id 93 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 431 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 445 :period (seconds 30) :length (seconds 0.035)) + (sp-item 446 :period (seconds 30) :length (seconds 0.035)) + (sp-item 435 :flags (sp3) :period (seconds 30) :length (seconds 0.017)) + (sp-item 447 :period (seconds 30) :length (seconds 0.167)) + (sp-item 448 :period (seconds 30) :length (seconds 0.5)) + (sp-item 449 :flags (sp3) :binding 444) + (sp-item 449 :flags (sp3) :binding 444) + (sp-item 449 :flags (sp3) :binding 444) + (sp-item 444 :flags (sp2) :period (seconds 4) :length (seconds 1)) + (sp-item 444 :flags (sp2) :period (seconds 4) :length (seconds 1)) + (sp-item 444 :flags (sp2) :period (seconds 4) :length (seconds 1)) + ) + ) + +(defpart 445 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 50.0) + (:scale-x (meters 0.4) (meters 0.3)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 80.0 50.0) + (:b 30.0 1 100.0) + (:a 64.0 64.0) + (:omega (degrees 0.045)) + (:vel-y (meters 0.33333334) (meters 0.5)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.08888889) + (:fade-b -0.033333335) + (:fade-a -0.14222223 -0.14222223) + (:accel-y (meters -0.00033333333) (meters -0.0033333334)) + (:friction 0.9 0.03) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees -20) (degrees 60)) + (:conerot-z (degrees 0) (degrees 60)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 446 + :init-specs ((:texture (new 'static 'texture-id :index #xaa :page #x4)) + (:num 100.0) + (:scale-x (meters 0.1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.6)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:vel-y (meters 0.33333334) (meters 0.6666667)) + (:rotvel-z (degrees -6.0000005) (degrees 12.000001)) + (:fade-g -0.13333334) + (:fade-b -0.05) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.0033333334)) + (:friction 0.9 0.03) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 90)) + (:conerot-z (degrees 0) (degrees 60)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 448 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-curve) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 0) (meters 2)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.4) (meters 0.13333334)) + (:friction 0.91) + (:timer (seconds 1)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees 20) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-intro-carexplo2-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 20.0 40.0 41.0 42.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-intro-carexplo2-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 20.0 40.0 41.0 42.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 1.0 1.0 1.0)) + ) + ) + ) + +(define *part-intro-car-explosion-texture2-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 0.9) + :lifetime-offset (seconds 0.6) + :flags (particle-curve-flags pcf0) + ) + ) + +(set! (-> *part-id-table* 448 init-specs 16 initial-valuef) + (the-as float *part-intro-car-explosion-texture2-curve-settings*) + ) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* color-start) *range-intro-carexplo-color*) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* alpha-start) *range-intro-carexplo-alpha*) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* scale-x-start) *range-intro-carexplo2-scale-x*) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* scale-y-start) *range-intro-carexplo2-scale-y*) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* r-scalar) #f) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* g-scalar) #f) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* b-scalar) #f) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* a-scalar) *curve-intro-carexplo-alpha*) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* scale-x-scalar) *curve-intro-carexplo-scale-x*) + +(set! (-> *part-intro-car-explosion-texture2-curve-settings* scale-y-scalar) *curve-intro-carexplo-scale-y*) + +(defpart 449 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 1.0) + (:scale-x (meters 12) (meters 6)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:vel-y (meters 0.26666668) (meters 0.033333335)) + (:scalevel-x (meters -0.026666667) (meters -0.026666667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.97 0.02) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:conerot-x (degrees 20) (degrees 60)) + (:conerot-z (degrees 0) (degrees 30)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 444 + :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x4)) + (:birth-func 'birth-func-inherit-size) + (:num 1.0) + (:scale-x (meters 0.00024414062) (meters 0.000048828126)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 32.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpart 447 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 20.0) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 80.0 20.0) + (:b 30.0) + (:a 128.0) + (:vel-y (meters 0.5) (meters 0.06666667)) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.13333334) + (:fade-b -0.05) + (:fade-a -0.21333334 -0.21333334) + (:friction 0.93) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'sparticle-2d-spline-align-instant) + (:conerot-x (degrees -20) (degrees 180)) + (:conerot-z (degrees 0)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-railing-collision + :id 94 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 450 :flags (sp6)) (sp-item 451 :flags (sp6))) + ) + +(defpart 450 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 10.0) + (:y (meters 0)) + (:z (meters -8) (meters 16)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 32.0) + (:vel-y (meters 0.06666667) (meters 0.16666667)) + (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:friction 0.8) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 451 + :init-specs ((:texture (new 'static 'texture-id :index #x8d :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 10.0) + (:y (meters 0) (meters 4)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 0.1) (meters 0.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b :copy r) + (:a 128.0) + (:vel-y (meters 1)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:friction 0.98) + (:timer (seconds 0.335)) + (:flags (left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 + 5 + 1 + 0 + #x408d00 + #x408e00 + #x408f00 + #x409000 + #x409100 + #x409200 + #x409300 + #x409400 + #x409500 + #x409600 + #x409700 + #x409800 + #x409900 + #x409a00 + #x409b00 + #x409c00 + ) + ) + (:conerot-x (degrees -20) (degrees 40)) + (:conerot-z (degrees 70) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-car-splash-far + :id 95 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 452 :period (seconds 5) :length (seconds 0.2))) + ) + +(defpart 452 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 20.0) + (:x (meters 0) (meters 1)) + (:y (meters 5)) + (:scale-x (meters 8) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.06666667) (meters 0.2)) + (:scalevel-x (meters 0.0033333334) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223 -0.14222223) + (:accel-y (meters -0.0033333334)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 glow)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x406300 #x407800)) + (:func 'check-drop-group-center) + (:conerot-x (degrees -90) (degrees 180)) + (:conerot-z (degrees 40) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-car-water-splash + :id 96 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 80) + :parts ((sp-item 453 :flags (is-3d) :period (seconds 10) :length (seconds 0.335)) + (sp-item 454 :flags (sp6) :period (seconds 10) :length (seconds 0.335)) + ) + ) + +(defpart 453 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.4) + (:x (meters -2)) + (:scale-x (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.16666667) (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:next-time (seconds 0.167) (seconds 0.165)) + (:next-launcher 455) + (:rotate-y (degrees 20)) + ) + ) + +(defpart 455 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.033333335)) (:scalevel-y :copy scalevel-x)) + ) + +(defpart 454 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 20.0) + (:x (meters -6) (meters 8)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-z (meters 0.33333334) (meters 0.33333334)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.013333334)) + (:friction 0.92) + (:timer (seconds 2)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees 0) (degrees -80)) + (:conerot-y (degrees -50.000004) (degrees 60)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-fishtank-bubbles + :id 97 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 456)) + ) + +(defpart 456 + :init-specs ((:texture (new 'static 'texture-id :index #x8a :page #x4)) + (:birth-func 'spt-birth-func-brightness-fishtank-bubbles) + (:num 2.0 2.0) + (:x (meters 0) (meters 0.5)) + (:y (meters 0)) + (:scale-x (meters 0.05) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 16.0 32.0) + (:omega (degrees 157.5)) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:accel-y (meters 0.00016666666) (meters 0.00006666667)) + (:friction 0.96 0.02) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-0 left-multiply-quat)) + (:func 'spt-func-on-omega-height-die) + (:next-time (seconds 0.167)) + (:next-launcher 457) + (:conerot-x (degrees 0) (degrees 20)) + (:rotate-y (degrees -30) (degrees 60)) + ) + ) + +(defpart 457 + :init-specs ((:r 64.0 128.0) + (:g :copy r) + (:b 255.0) + (:a 16.0 1 64.0) + (:scalevel-x (meters -0.00033333333) (meters 0.00066666666)) + (:scalevel-y (meters -0.00033333333) (meters 0.00066666666)) + (:accel-x (meters -0.0013333333)) + (:accel-z (meters -0.0013333333)) + (:next-time (seconds 0.167) (seconds 0.065)) + (:next-launcher 458) + ) + ) + +(defpart 458 + :init-specs ((:r 64.0 128.0) + (:g :copy r) + (:b 255.0) + (:a 16.0 1 32.0) + (:scalevel-x (meters -0.00033333333) (meters 0.00066666666)) + (:scalevel-y (meters -0.00033333333) (meters 0.00066666666)) + (:accel-x (meters 0.0013333333)) + (:accel-z (meters 0.0013333333)) + (:next-time (seconds 0.167) (seconds 0.065)) + (:next-launcher 457) + ) + ) + +(defpartgroup group-rustyh-pouring-liquid + :id 98 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 459 :flags (sp6))) + ) + +(defpart 459 + :init-specs ((:texture (new 'static 'texture-id :index #x8a :page #x4)) + (:num 1.0) + (:scale-x (meters 0.03)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 128.0) + (:omega (degrees 0.0225)) + (:vel-y (meters 0.0016666667)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 0.067)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-rustyh-pouring-liquid2 + :id 99 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 460 :flags (sp6))) + ) + +(defpart 460 + :init-specs ((:texture (new 'static 'texture-id :index #x8a :page #x4)) + (:num 2.0) + (:scale-x (meters 0.03)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 64.0 64.0) + (:omega (degrees 0.0225)) + (:vel-y (meters 0.0016666667) (meters 0.00066666666)) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 0.2)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-rustyh-splashing-liquid + :id 100 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 461 :flags (sp6))) + ) + +(defpart 461 + :init-specs ((:texture (new 'static 'texture-id :index #x8a :page #x4)) + (:num 0.3 0.1) + (:scale-x (meters 0.01) (meters 0.01)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 128.0) + (:omega (degrees 0.0045)) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.335)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-rustyh-splashing-liquid-fog + :id 101 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 462 :flags (sp6))) + ) + +(defpart 462 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.1 0.5) + (:y (meters 0.1)) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.006666667)) + (:scalevel-x (meters 0.0013333333)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.32 0.32) + (:accel-y (meters -0.00033333333)) + (:friction 0.8) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 463) + (:conerot-x (degrees 80) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 463 + :init-specs ((:fade-a -0.128 -0.128)) + ) + +(defpartgroup group-rustyh-flying-liquid + :id 102 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 464 :flags (sp6)) (sp-item 465 :flags (sp6))) + ) + +(defpart 464 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 20.0) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 20.0 20.0) + (:vel-y (meters 0.016666668) (meters 0.03)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.13333334 -0.13333334) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.98 0.01) + (:timer (seconds 1)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 8)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 465 + :init-specs ((:texture (new 'static 'texture-id :index #x8a :page #x4)) + (:num 20.0) + (:scale-x (meters 0.06)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 128.0) + (:vel-y (meters 0.016666668) (meters 0.03)) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.98 0.01) + (:timer (seconds 0.2)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 8)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-rustyh-big-splashing-liquid + :id 103 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 466 :flags (sp6)) (sp-item 467 :flags (sp6))) + ) + +(defpart 466 + :init-specs ((:texture (new 'static 'texture-id :index #x64 :page #x4)) + (:num 5.0) + (:y (meters 0.1) (meters 0.8)) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 100.0 100.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.0 -1.0) + (:accel-y (meters -0.00066666666)) + (:friction 0.99) + (:timer (seconds 0.667)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:func 'sparticle-2d-spline-align-instant) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 467 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 5.0) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 20.0 20.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-rustyh-lighter-flame + :id 104 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 1 0 6) + :parts ((sp-item 468 :flags (sp6)) (sp-item 469 :flags (sp3 sp6))) + ) + +(defpart 468 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #x4)) + (:num 0.3 0.3) + (:y (meters 0.05)) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 180.0) + (:b 100.0) + (:a 255.0) + (:scalevel-y (meters 0.0016666667) (meters 0.0016666667)) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.99 0.02) + (:timer (seconds 0.167) (seconds 0.03)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0) (degrees 3598.0002)) + ) + ) + +(defpart 469 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:y (meters 0.1)) + (:scale-x (meters 0.5) (meters 0.1)) + (:rot-x (degrees 6.7500005)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0 4.0) + (:b 0.0) + (:a 80.0) + (:omega (degrees 11261.25)) + (:fade-a -3.0) + (:timer (seconds 0.167)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.067)) + (:next-launcher 470) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 470 + :init-specs ((:fade-a 0.0)) + ) + +(defpartgroup group-rustyh-cig-cherry-up + :id 105 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 1 0 6) + :parts ((sp-item 471 :flags (sp3 sp6)) (sp-item 472 :flags (sp3 sp6))) + ) + +(defpart 471 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.025)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 1.7066667) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.25)) + (:next-launcher 473) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 473 + :init-specs ((:fade-a -5.12)) + ) + +(defpart 472 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 1.0666667) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.25)) + (:next-launcher 474) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 474 + :init-specs ((:fade-a -3.2)) + ) + +(defpartgroup group-rustyh-cig-cherry + :id 106 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 1 0 6) + :parts ((sp-item 475 :flags (sp6)) (sp-item 476 :flags (sp5 sp6))) + ) + +(defpart 475 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 0.03) + (:scale-x (meters 0.025)) + (:rot-x (degrees 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 40.0 60.0) + (:b 40.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.42666668 0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 477) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 477 + :init-specs ((:fade-a -0.42666668)) + ) + +(defpart 476 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 30.0 2.0) + (:omega (degrees 11261.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-125-cig-cherry + :id 107 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 1 0 6) + :parts ((sp-item 478 :flags (sp6)) (sp-item 479 :flags (sp5 sp6))) + ) + +(defpart 478 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 0.03) + (:scale-x (meters 0.025)) + (:rot-x (degrees 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 40.0 60.0) + (:b 40.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.42666668 0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 480) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 480 + :init-specs ((:fade-a -0.42666668)) + ) + +(defpart 479 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 40.0 2.0) + (:omega (degrees 11261.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-cig-smoke + :id 108 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 481 :flags (sp6))) + ) + +(defpart 481 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 0) (meters 0.01)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 80.0) + (:g :copy r) + (:b :copy r) + (:a 4.0 4.0) + (:scalevel-x (meters 0.00006666667) (meters 0.00016666666)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0026666666 -0.0026666666) + (:accel-y (meters 0.000033333334) (meters 0.000033333334)) + (:friction 0.9) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2)) + (:next-time (seconds 3.335)) + (:next-launcher 482) + ) + ) + +(defpart 482 + :init-specs ((:scalevel-x (meters 0.0000033333336) (meters 0.0000033333336)) + (:scalevel-y (meters 0.0000033333336) (meters 0.0000033333336)) + (:friction 0.85) + ) + ) + +(defpartgroup group-125-cig-smoke + :id 109 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 483 :flags (sp6))) + ) + +(defpart 483 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 0) (meters 0.01)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 80.0) + (:g :copy r) + (:b :copy r) + (:a 8.0 8.0) + (:scalevel-x (meters 0.00006666667) (meters 0.00016666666)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0053333333 -0.0053333333) + (:accel-y (meters 0.000033333334) (meters 0.000033333334)) + (:friction 0.9) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2)) + (:next-time (seconds 3.335)) + (:next-launcher 484) + ) + ) + +(defpart 484 + :init-specs ((:scalevel-x (meters 0.0000033333336) (meters 0.0000033333336)) + (:scalevel-y (meters 0.0000033333336) (meters 0.0000033333336)) + (:friction 0.85) + ) + ) + +(defpartgroup group-cig-smoke-blow + :id 110 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 485 :flags (sp6))) + ) + +(defpart 485 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.03) (meters 0.03)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 120.0) + (:g :copy r) + (:b :copy r) + (:a 4.0 4.0) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.00033333333) (meters 0.00066666666)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y (meters 0.00033333333) (meters 0.00066666666)) + (:fade-a -0.00053333334 -0.00053333334) + (:accel-x (meters 0.000016666667) (meters 0.000016666667)) + (:accel-y (meters 0.000016666667) (meters 0.000016666667)) + (:accel-z (meters -0.000016666667) (meters -0.000016666667)) + (:friction 0.95 0.02) + (:timer (seconds 20)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 1.667)) + (:next-launcher 486) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 486 + :init-specs ((:scalevel-x (meters 0.00016666666) (meters 0.00016666666)) + (:scalevel-y (meters 0.00016666666) (meters 0.00016666666)) + ) + ) + +(defpartgroup group-cig-smoke-blow-laugh + :id 111 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 487 :flags (sp6))) + ) + +(defpart 487 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:z (meters -0.05)) + (:scale-x (meters 0.03) (meters 0.03)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 120.0) + (:g :copy r) + (:b :copy r) + (:a 4.0 16.0) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.00033333333) (meters 0.00033333333)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y (meters 0.00033333333) (meters 0.00033333333)) + (:fade-a -0.0033333334 -0.0033333334) + (:accel-x (meters 0.000016666667) (meters 0.000016666667)) + (:accel-y (meters 0.000016666667) (meters 0.000016666667)) + (:accel-z (meters -0.000006666667) (meters -0.000006666667)) + (:friction 0.94 0.02) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 1.667)) + (:next-launcher 486) + (:rotate-x (degrees -20)) + (:rotate-y (degrees 80)) + (:rotate-z (degrees -40)) + ) + ) + +(defpartgroup group-cig-ashes + :id 112 + :flags (sp0) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 488) (sp-item 489)) + ) + +(defpart 488 + :init-specs ((:texture (new 'static 'texture-id :index #x60 :page #x4)) + (:num 2.0) + (:scale-x (meters 0.03) (meters 0.05)) + (:rot-x (degrees 2.25)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 120.0) + (:g 0.0 80.0) + (:b 0.0) + (:a 40.0 40.0) + (:omega (degrees 11261.25)) + (:scalevel-y (meters 0.00066666666) (meters 0.00066666666)) + (:fade-a -0.53333336 -0.06666667) + (:accel-x (meters -0.00006666667) (meters 0.00013333333)) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:accel-z (meters -0.00006666667) (meters 0.00013333333)) + (:friction 0.95 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc left-multiply-quat)) + (:userdata 409.6) + ) + ) + +(defpart 489 + :init-specs ((:texture (new 'static 'texture-id :index #x5b :page #x4)) + (:birth-func 'birth-func-flip-based-on-scale) + (:num 1.0 4.0) + (:scale-x (meters -0.02) 1 (meters 0.04)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters -0.02) 1 (meters 0.04)) + (:r 40.0 100.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:omega (degrees 0.0225)) + (:scalevel-x (meters 0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.95 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2)) + (:func 'sparticle-motion-blur) + ) + ) + +(defpartgroup group-intro-rustyh-oncar-headlights + :id 113 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 490 :flags (sp5 sp6)) (sp-item 491 :flags (sp5 sp6))) + ) + +(defpart 490 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpart 491 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-intro-oncar-vehicle-dust + :id 114 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 492 :flags (sp6))) + ) + +(defpart 492 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0) + (:g 60.0) + (:b 50.0) + (:a 30.0 10.0) + (:vel-z (meters -0.06666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.06666667 -0.06666667) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x407800 #x407800 #x407800 #x400c00)) + (:next-time (seconds 0.335)) + (:next-launcher 493) + (:conerot-x (degrees 20) (degrees 10)) + (:conerot-y (degrees -10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 493 + :init-specs ((:scalevel-x (meters 0.0033333334)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-rustyh-flying-froth + :id 115 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 494 :flags (sp6)) (sp-item 495 :flags (sp6))) + ) + +(defpart 494 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 10.0) + (:scale-x (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 20.0 20.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.00066666666) (meters 0.0013333333)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.13333334 -0.13333334) + (:accel-y (meters -0.00066666666)) + (:friction 0.97 0.02) + (:timer (seconds 1)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 8)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 495 + :init-specs ((:texture (new 'static 'texture-id :index #x8a :page #x4)) + (:num 10.0) + (:scale-x (meters 0.01) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 16.0) + (:a 128.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a -0.42666668 -0.42666668) + (:accel-y (meters -0.00066666666)) + (:friction 0.98 0.01) + (:timer (seconds 1)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-cig-smoke-b + :id 116 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 496 :flags (sp6))) + ) + +(defpart 496 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.01) (meters 0.02)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 20.0 80.0) + (:g :copy r) + (:b :copy r) + (:a 8.0 16.0) + (:scalevel-x (meters 0.00006666667) (meters 0.00016666666)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.010666667 -0.010666667) + (:accel-y (meters 0.0000033333336) (meters 0.000036666668)) + (:friction 0.9) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2)) + (:next-time (seconds 3.335)) + (:next-launcher 497) + ) + ) + +(defpart 497 + :init-specs ((:scalevel-x (meters 0.0000033333336) (meters 0.0000033333336)) + (:scalevel-y (meters 0.0000033333336) (meters 0.0000033333336)) + (:friction 0.85) + ) + ) + +(defpartgroup group-rustyh-cig-cherry-drag + :id 117 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 1 0 6) + :parts ((sp-item 498 :flags (sp3 sp6)) (sp-item 499 :flags (sp3 sp6))) + ) + +(defpart 498 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.025)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.64) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.667)) + (:next-launcher 500) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 500 + :init-specs ((:fade-a -1.28)) + ) + +(defpart 499 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.4) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.667)) + (:next-launcher 501) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 501 + :init-specs ((:fade-a -0.8)) + ) + +(defpartgroup group-cig-ashes-fly + :id 118 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 502 :flags (sp6))) + ) + +(defpart 502 + :init-specs ((:texture (new 'static 'texture-id :index #x60 :page #x4)) + (:num 6.0) + (:scale-x (meters 0.1)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 120.0) + (:g 0.0 80.0) + (:b 0.0) + (:a 80.0 80.0) + (:omega (degrees 0.0225)) + (:vel-z (meters 0.05) (meters 0.016666668)) + (:scalevel-y (meters 0.00066666666) (meters 0.00066666666)) + (:fade-a -1.0666667 -1.0666667) + (:accel-y (meters -0.0016666667)) + (:friction 0.6 0.2) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.05)) + (:next-launcher 503) + (:conerot-y (degrees 0) (degrees 10)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 503 + :init-specs ((:func 'nothing)) + ) + +(defpartgroup group-intro-rustyh-headlights + :id 119 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 504 :flags (sp3 sp6)) (sp-item 505 :flags (sp3 sp6))) + ) + +(defpart 504 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.17) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + ) + ) + +(defpart 505 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.086666666) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + ) + ) + +(defpartgroup group-intro-fish-tank-glass + :id 120 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 506 :flags (is-3d sp6))) + ) + +(defpart 506 + :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x4c8)) + (:birth-func 'birth-func-texture-group) + (:num 5.0) + (:z (meters 3)) + (:scale-x (meters 0.05) (meters 0.3)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0) (degrees 360)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.05) (meters 0.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-z (meters 0.0016666667) (meters 0.06666667)) + (:rotvel-x (degrees -0.016666668) (degrees 0.033333335)) + (:rotvel-y (degrees -0.016666668) (degrees 0.033333335)) + (:rotvel-z (degrees -0.016666668) (degrees 0.033333335)) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x4c800b00 #x4c800c00 #x4c800d00 #x4c800e00)) + (:next-time (seconds 0.017) (seconds 1.665)) + (:next-launcher 507) + (:conerot-y (degrees -40) (degrees 80)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 507 + :init-specs ((:fade-a 6.0) (:next-time (seconds 0.1)) (:next-launcher 508)) + ) + +(defpart 508 + :init-specs ((:fade-a -6.0) (:next-time (seconds 0.1)) (:next-launcher 509)) + ) + +(defpart 509 + :init-specs ((:a 32.0 32.0) (:fade-a 0.0) (:next-time (seconds 1.335) (seconds 1.665)) (:next-launcher 507)) + ) + +(defpartgroup group-intro-fish-tank-water-explode + :id 121 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 510 :flags (sp6))) + ) + +(defpart 510 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4c8)) + (:num 5.0) + (:z (meters 1)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 135.0) + (:b 120.0) + (:a 16.0 16.0) + (:vel-z (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00008333333) (meters -0.00008333333)) + (:friction 0.98 0.01) + (:timer (seconds 2.835)) + (:flags (left-multiply-quat right-multiply-quat)) + (:conerot-y (degrees -40) (degrees 80)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-water-floor-splash + :id 122 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 511 :flags (sp6))) + ) + +(defpart 511 + :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x4)) + (:num 40.0) + (:x (meters -1.2) (meters 2.4)) + (:y (meters 0.1)) + (:z (meters -0.3) (meters 0.6)) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:scalevel-x (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -5.1 -5.1) + (:timer (seconds 0.085) (seconds 0.08)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:rotate-y (degrees -8)) + ) + ) + +(defpartgroup group-intro-water-car-splash + :id 123 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 512 :flags (sp6))) + ) + +(defpart 512 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4c8)) + (:num 20.0) + (:x (meters 0) (meters 10)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 135.0) + (:b 120.0) + (:a 32.0 32.0) + (:vel-y (meters 0.033333335) (meters 0.016666668)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (left-multiply-quat right-multiply-quat)) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-wood-bits + :id 124 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 513 :flags (sp3 sp6)) (sp-item 514 :flags (sp3 sp6))) + ) + +(defpart 513 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters 0.1)) + (:z (meters 0.1)) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:r 80.0) + (:g 64.0) + (:b 64.0) + (:a 32.0) + (:scalevel-x (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.010666667) + (:accel-y (meters -0.00006666667)) + (:friction 0.9) + (:timer (seconds 10)) + (:flags (left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 514 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:num 20.0) + (:y (meters -0.01) (meters 0.02)) + (:scale-x (meters 0.005) (meters 0.02)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0) + (:g 32.0) + (:b 32.0) + (:a 128.0) + (:vel-z (meters 0.0016666667) (meters 0.0033333334)) + (:rotvel-z (degrees -10) (degrees 20)) + (:accel-y (meters -0.00016666666)) + (:friction 0.99) + (:timer (seconds 4)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees -90) (degrees 180)) + (:conerot-y (degrees -90) (degrees 180)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-wood-barrel-shatter + :id 125 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 515 :flags (sp6)) (sp-item 516 :flags (sp6))) + ) + +(defpart 515 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 5.0) + (:y (meters 0)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 55.0) + (:g 40.0) + (:b 40.0) + (:a 16.0 16.0) + (:vel-y (meters 0.06666667) (meters 0.16666667)) + (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.026666667 -0.026666667) + (:friction 0.8) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 516 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:num 30.0) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0) + (:g 32.0) + (:b 32.0) + (:a 128.0) + (:vel-y (meters 0.1) (meters 0.13333334)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-wood-bar-shatter + :id 126 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 517 :flags (sp6)) (sp-item 518 :flags (sp6))) + ) + +(defpart 517 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 5.0) + (:x (meters -2) (meters 4)) + (:y (meters 0)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 55.0) + (:g 40.0) + (:b 40.0) + (:a 16.0 16.0) + (:vel-y (meters 0.06666667) (meters 0.16666667)) + (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.026666667 -0.026666667) + (:friction 0.8) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 518 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:num 30.0) + (:x (meters -20) (meters 40)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 0.3) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0) + (:g 32.0) + (:b 32.0) + (:a 128.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:timer (seconds 2)) + (:flags (left-multiply-quat)) + (:conerot-x (degrees -45) (degrees 90)) + (:conerot-z (degrees -45) (degrees 90)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-bottle-glass + :id 127 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 519 :flags (is-3d sp6)) (sp-item 520 :flags (is-3d sp6))) + ) + +(defpart 519 + :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x4c8)) + (:birth-func 'birth-func-texture-group) + (:num 10.0) + (:scale-x (meters 0.03) (meters 0.5)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0) (degrees 360)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.03) (meters 0.5)) + (:r 70.0) + (:g 40.0) + (:b 10.0) + (:a 64.0) + (:vel-y (meters 0.0016666667) (meters 0.016666668)) + (:rotvel-x (degrees -1) (degrees 2)) + (:rotvel-y (degrees -1) (degrees 2)) + (:rotvel-z (degrees -1) (degrees 2)) + (:accel-y (meters -0.0005) (meters -0.0005)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x4c800b00 #x4c800c00 #x4c800d00 #x4c800e00)) + (:next-time (seconds 0.017) (seconds 1.665)) + (:next-launcher 507) + (:conerot-x (degrees 0) (degrees 60)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 520 + :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x4c8)) + (:birth-func 'birth-func-texture-group) + (:num 10.0) + (:scale-x (meters 0.03) (meters 0.5)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0) (degrees 360)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.03) (meters 0.5)) + (:r 10.0) + (:g 60.0) + (:b 110.0) + (:a 64.0) + (:vel-y (meters 0.0016666667) (meters 0.016666668)) + (:rotvel-x (degrees -1) (degrees 2)) + (:rotvel-y (degrees -1) (degrees 2)) + (:rotvel-z (degrees -1) (degrees 2)) + (:accel-y (meters -0.0005) (meters -0.0005)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x4c800b00 #x4c800c00 #x4c800d00 #x4c800e00)) + (:next-time (seconds 0.017) (seconds 1.665)) + (:next-launcher 507) + (:conerot-x (degrees 0) (degrees 60)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-fish-tank-glass2 + :id 128 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 521 :flags (is-3d sp6))) + ) + +(defpart 521 + :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x4c8)) + (:birth-func 'birth-func-texture-group) + (:num 20.0) + (:x (meters -2) (meters 4)) + (:y (meters -1) (meters 2)) + (:scale-x (meters 0.05) (meters 0.3)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0) (degrees 360)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.05) (meters 0.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0016666667) (meters 0.033333335)) + (:rotvel-x (degrees -1) (degrees 2)) + (:rotvel-y (degrees -1) (degrees 2)) + (:rotvel-z (degrees -1) (degrees 2)) + (:accel-y (meters -0.0005) (meters -0.0005)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x4c800b00 #x4c800c00 #x4c800d00 #x4c800e00)) + (:next-time (seconds 0.017) (seconds 1.665)) + (:next-launcher 507) + (:conerot-x (degrees -90) (degrees 180)) + (:conerot-z (degrees -40) (degrees 80)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-fish-tank-water-part1 + :id 129 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 522 :flags (sp6))) + ) + +(defpart 522 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4c8)) + (:num 5.0) + (:y (meters -1)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 135.0) + (:b 120.0) + (:a 8.0 8.0) + (:vel-y (meters 0.016666668) (meters 0.05)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00083333335) (meters -0.00083333335)) + (:friction 0.98 0.01) + (:timer (seconds 2)) + (:flags (left-multiply-quat right-multiply-quat)) + (:conerot-z (degrees -80) (degrees 30)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-fish-tank-water-part2 + :id 130 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 523 :flags (sp6))) + ) + +(defpart 523 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4c8)) + (:num 5.0) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 135.0) + (:b 120.0) + (:a 8.0 8.0) + (:vel-y (meters 0.016666668) (meters 0.05)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00083333335) (meters -0.00083333335)) + (:friction 0.98 0.01) + (:timer (seconds 2)) + (:flags (left-multiply-quat right-multiply-quat)) + (:conerot-z (degrees 50.000004) (degrees 30)) + (:rotate-y (degrees -22.5)) + ) + ) + +(defpartgroup group-intro-vehicle-dust + :id 131 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 524 :flags (sp6))) + ) + +(defpart 524 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 30.0 10.0) + (:vel-z (meters -0.06666667)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.06666667 -0.06666667) + (:accel-y (meters 0) (meters 0.00016666666)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.335)) + (:next-launcher 423) + (:conerot-x (degrees 10) (degrees 30)) + (:conerot-y (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 423 + :init-specs ((:scalevel-x (meters 0.006666667) (meters 0.006666667)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-intro-opening-oncar-headlights + :id 132 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 525 :flags (sp5 sp6)) (sp-item 526 :flags (sp5 sp6))) + ) + +(defpart 525 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpart 526 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-intro-exhaust + :id 133 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 527 :flags (sp6))) + ) + +(defpart 527 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.01 0.3) + (:scale-x (meters 0.2) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy g) + (:a 0.0) + (:vel-z (meters -0.033333335) (meters -0.06666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.8) + (:accel-y (meters 0.00066666666)) + (:friction 0.8 0.1) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 528) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 528 + :init-specs ((:fade-a -1.6 -1.6)) + ) + +(defpartgroup group-intro-vehicle-peel-out + :id 134 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 529 :flags (sp6))) + ) + +(defpart 529 + :init-specs ((:texture (new 'static 'texture-id :index #xc :page #x4)) + (:num 1.0) + (:y (meters -0.5)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 130.0) + (:b 80.0) + (:a 32.0 32.0) + (:vel-z (meters -0.06666667)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0) (meters 0.00016666666)) + (:accel-z (meters 0.006666667)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:next-time (seconds 0.335)) + (:next-launcher 530) + (:conerot-x (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 530 + :init-specs ((:scalevel-x (meters 0.006666667) (meters 0.006666667)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-intro-opening-turbo-thrust + :id 135 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 531 :flags (is-3d sp5 sp6)) (sp-item 532 :flags (sp5 sp6))) + ) + +(defpart 531 + :init-specs ((:texture (new 'static 'texture-id :index #x89 :page #x4)) + (:num 18.0) + (:z (meters 1)) + (:scale-x (meters 1.5)) + (:rot-z (degrees 0) 2 (degrees 45)) + (:scale-y (meters 3) (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 180)) + ) + ) + +(defpart 532 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:x (meters -0.3)) + (:z (meters -1)) + (:scale-x (meters 4) (meters 2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0) + (:b 128.0) + (:a 30.0 60.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + ) + ) + +(defpartgroup group-intro-vehicle-landing-sparks + :id 136 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 533 :flags (sp6))) + ) + +(defpart 533 + :init-specs ((:texture (new 'static 'texture-id :index #x88 :page #x4)) + (:num 2.0) + (:x (meters -2) (meters 4)) + (:y (meters -0.8)) + (:z (meters 0) (meters 3)) + (:scale-x (meters 0.05)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 255.0) + (:omega (degrees 0.01125)) + (:vel-z (meters 0.4) (meters 0.16666667)) + (:fade-a -2.55 -2.55) + (:accel-y (meters -0.0023333333)) + (:friction 0.91) + (:timer (seconds 0.167) (seconds 0.33)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees -20)) + (:conerot-y (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-vehicle-landing-dust + :id 137 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 534 :flags (sp6))) + ) + +(defpart 534 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 64.0) + (:vel-z (meters 0.2)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.8 0.05) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:conerot-y (degrees 0) (degrees 80)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-intro-vehicle-dust-fall + :id 138 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 535 :flags (sp6))) + ) + +(defpart 535 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 30.0 10.0) + (:vel-z (meters 0.2)) + (:scalevel-x (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.033333335 -0.033333335) + (:accel-y (meters -0.0016666667) (meters -0.0016666667)) + (:friction 0.9 0.05) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-intro-vehicle-dust-trail + :id 139 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 536 :flags (sp6))) + ) + +(defpart 536 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 10.0 10.0) + (:vel-z (meters 0.06666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.013333334 -0.013333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.94 0.05) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-razer-cig-cherry-up + :id 140 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 1 0 6) + :parts ((sp-item 537 :flags (sp3 sp6)) (sp-item 538 :flags (sp3 sp6))) + ) + +(defpart 537 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.025)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.85333335) + (:timer (seconds 0.667)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 539) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 539 + :init-specs ((:fade-a -2.56)) + ) + +(defpart 538 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.53333336) + (:timer (seconds 0.667)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 540) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 540 + :init-specs ((:fade-a -1.6)) + ) + +(defpartgroup group-razer-cig-smoke-blow + :id 141 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 541 :flags (sp6))) + ) + +(defpart 541 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.03) (meters 0.03)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 120.0) + (:g :copy r) + (:b :copy r) + (:a 16.0 16.0) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667) (meters 0.00066666666)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y (meters 0.0016666667) (meters 0.00066666666)) + (:fade-a -0.0021333334 -0.0021333334) + (:accel-x (meters 0.000033333334) (meters 0.000033333334)) + (:accel-y (meters 0.000016666667) (meters 0.000016666667)) + (:accel-z (meters 0.000033333334) (meters 0.000033333334)) + (:friction 0.95 0.02) + (:timer (seconds 20)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 1.667)) + (:next-launcher 542) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 542 + :init-specs ((:scalevel-x (meters 0.00016666666) (meters 0.00016666666)) + (:scalevel-y (meters 0.00016666666) (meters 0.00016666666)) + ) + ) + +(defpartgroup group-introb-pouring-liquid + :id 142 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 543 :flags (sp6))) + ) + +(defpart 543 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 0.02)) + (:scale-y :copy scale-x) + (:r 40.0) + (:g 8.0) + (:b 5.0) + (:a 128.0) + (:omega (degrees 0.00675)) + (:vel-y (meters 0.002)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 0.085)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-157-splashing-liquid + :id 143 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 544 :flags (sp6))) + ) + +(defpart 544 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:y (meters -0.02)) + (:scale-x (meters 0.01) (meters 0.01)) + (:scale-y :copy scale-x) + (:r 50.0) + (:g 30.0) + (:b 10.0) + (:a 8.0 64.0) + (:omega (degrees 0.01125)) + (:vel-y (meters 0) (meters 0.0026666666)) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.335)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-x (degrees 0) (degrees 30)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-157-splashing-liquid-sparkles + :id 144 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 545 :flags (sp6))) + ) + +(defpart 545 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:y (meters -0.02)) + (:scale-x (meters 0.003) (meters 0.003)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega (degrees 0.0045)) + (:vel-y (meters 0) (meters 0.0026666666)) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.035) (seconds 0.165)) + (:next-launcher 546) + (:conerot-x (degrees 0) (degrees 30)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 546 + :init-specs ((:a 0.0 64.0) (:next-time (seconds 0.035) (seconds 0.03)) (:next-launcher 547)) + ) + +(defpart 547 + :init-specs ((:a 0.0) (:next-time (seconds 0.035) (seconds 0.165)) (:next-launcher 546)) + ) + +(defpartgroup group-104-cig-cherry-up + :id 145 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 1 0 6) + :parts ((sp-item 548 :flags (sp3 sp6)) (sp-item 549 :flags (sp3 sp6))) + ) + +(defpart 548 + :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.025)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.85333335) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 550) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 550 + :init-specs ((:fade-a -0.85333335)) + ) + +(defpart 549 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 2.25)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 0.0) + (:omega (degrees 11261.25)) + (:fade-a 0.53333336) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 409.6) + (:func 'spt-func-relative-pos) + (:next-time (seconds 0.5)) + (:next-launcher 551) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 551 + :init-specs ((:fade-a -0.53333336)) + ) + +(defpartgroup group-104-cig-smoke-blow + :id 146 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 24) + :parts ((sp-item 552 :flags (sp6))) + ) + +(defpart 552 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 2.0) + (:scale-x (meters 0.03) (meters 0.03)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 120.0) + (:g :copy r) + (:b :copy r) + (:a 4.0 4.0) + (:vel-z (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.00066666666) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y (meters 0.00066666666) (meters 0.005)) + (:accel-x (meters 0.000016666667) (meters 0.000016666667)) + (:accel-y (meters 0.000016666667) (meters 0.000016666667)) + (:accel-z (meters -0.000016666667) (meters -0.000016666667)) + (:friction 0.93 0.03) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 1.667)) + (:next-launcher 553) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 553 + :init-specs ((:scalevel-x (meters 0.00016666666) (meters 0.00016666666)) + (:scalevel-y (meters 0.00016666666) (meters 0.00016666666)) + (:fade-a -0.006666667 -0.006666667) + ) + ) + +(defpartgroup group-outro-b-dashboard + :id 147 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 554 :flags (sp6)) (sp-item 555 :flags (sp6))) + ) + +(defpart 554 + :init-specs ((:texture (new 'static 'texture-id :index #x4b :page #x4)) + (:num 0.4) + (:x (meters -0.4) (meters 0.5)) + (:y (meters -0.2) (meters 0.4)) + (:z (meters -0.1)) + (:scale-x (meters 0.02) (meters 0.02)) + (:scale-y (meters 0.05) (meters 0.05)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:vel-x (meters -0.00066666666) (meters 0.0013333333)) + (:vel-y (meters -0.00066666666) (meters 0.00083333335)) + (:accel-x (meters -0.000016666667) (meters 0.000033333334)) + (:timer (seconds 0.5) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-3 right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 15 1 0 #x40b800 #x40b900 #x40ba00)) + (:func 'spt-func-part-outro-b-dashboard) + (:next-time (seconds 0.035)) + (:next-launcher 556) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 556 + :init-specs ((:scale-x (meters 0.01) (meters 0.04)) + (:scale-y (meters 0.03) (meters 0.1)) + (:a 20.0 100.0) + (:next-time (seconds 0.035)) + (:next-launcher 556) + ) + ) + +(defun spt-func-part-outro-b-dashboard ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (spt-func-relative-pos arg0 arg1 (the-as sprite-vec-data-3d arg2)) + (sparticle-2d-spline-align-instant arg0 arg1 (the-as sprite-vec-data-2d arg2)) + (none) + ) + +(defpart 555 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 0.05 0.1) + (:x (meters -0.4) (meters 0.5)) + (:y (meters -0.2) (meters 0.4)) + (:z (meters -0.1)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 255.0) + (:a 255.0) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.017) (seconds 0.097)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-outro-b-dashboard-sparks + :id 148 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 557 :flags (sp6) :period (seconds 0.667) :length (seconds 0.017))) + ) + +(defpart 557 + :init-specs ((:texture (new 'static 'texture-id :index #xae :page #x4)) + (:num 8.0 8.0) + (:scale-x (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a :copy r) + (:omega (degrees 0.00675)) + (:vel-z (meters -0.00033333333) (meters -0.01)) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 left-multiply-quat)) + (:func 'spt-func-part-outro-b-dashboard-sparks) + (:conerot-x (degrees 0) (degrees 50.000004)) + (:rotate-x (degrees 30)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defun spt-func-part-outro-b-dashboard-sparks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (spt-func-relative-pos arg0 arg1 (the-as sprite-vec-data-3d arg2)) + (sparticle-motion-blur arg0 arg1 arg2) + (none) + ) + +(defpartgroup group-outro-b-dashboard-back + :id 149 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 558 :flags (sp6))) + ) + +(defpart 558 + :init-specs ((:texture (new 'static 'texture-id :index #x8c :page #x4)) + (:num 0.05 0.1) + (:x (meters -0.4) (meters 0.5)) + (:y (meters -0.2) (meters 0.6)) + (:z (meters -0.1)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 50.0 50.0) + (:g :copy r) + (:b 255.0) + (:a 255.0) + (:scalevel-x (meters -0.01)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.017) (seconds 0.097)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3)) + (:func 'spt-func-relative-pos) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-outro-b-dashboard-back-smoke + :id 150 + :flags (sp0 sp4 sp12) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 559 :flags (sp6))) + ) + +(defpart 559 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.6) + (:x (meters -0.4)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334)) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:func 'spt-func-relative-pos) + (:conerot-y (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-outro-b-dashboard-back-smoke-ws + :id 151 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 560 :flags (sp6))) + ) + +(defpart 560 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters -0.4)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 64.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.06666667)) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:friction 0.9 0.05) + (:timer (seconds 0.035)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-outro-vehicle-dust + :id 152 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 561 :flags (sp6))) + ) + +(defpart 561 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 30.0 10.0) + (:vel-z (meters -0.06666667)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.06666667 -0.06666667) + (:accel-y (meters 0) (meters 0.00016666666)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 0.335)) + (:next-launcher 562) + (:conerot-x (degrees 10) (degrees 30)) + (:conerot-y (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 562 + :init-specs ((:scalevel-x (meters 0.006666667) (meters 0.006666667)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-rayn-vehicle-dust + :id 153 + :flags (sp0 sp4 sp13) + :bounds (static-bspherem 0 0 0 64) + :parts ((sp-item 563 :flags (sp6))) + ) + +(defpart 563 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 80.0) + (:b 70.0) + (:a 30.0 10.0) + (:vel-z (meters -0.016666668)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.06666667 -0.06666667) + (:accel-y (meters 0) (meters 0.00016666666)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 0.335)) + (:next-launcher 564) + (:conerot-x (degrees -10) (degrees 20)) + (:conerot-y (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 564 + :init-specs ((:scalevel-x (meters 0.006666667) (meters 0.006666667)) (:scalevel-y :copy scalevel-x)) + ) + +(defpartgroup group-winners-circle-light-glow + :id 154 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 565 :flags (sp5 sp6)) + (sp-item 566 :flags (sp5 sp6)) + (sp-item 567 :flags (sp5 sp6)) + (sp-item 568 :flags (sp5 sp6)) + ) + ) + +(defpart 565 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:x (meters -1)) + (:scale-x (meters 2) (meters 0.1)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 70.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 566 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:x (meters 1)) + (:scale-x (meters 2) (meters 0.1)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 70.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 567 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:x (meters -1)) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 568 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:x (meters 1)) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-winners-circle-floor-light-glow + :id 155 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 569 :flags (sp5 sp6)) (sp-item 570 :flags (sp5 sp6))) + ) + +(defpart 569 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 2) (meters 0.1)) + (:rot-x (degrees 4.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 570 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-winner-light-glow + :id 156 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 4) + :parts ((sp-item 571 :flags (sp5 sp6)) + (sp-item 572 :flags (sp5 sp6)) + (sp-item 573 :flags (sp5 sp6)) + (sp-item 574 :flags (sp5 sp6)) + ) + ) + +(defpart 571 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:x (meters -0.5)) + (:scale-x (meters 2) (meters 0.1)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 572 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:x (meters 0.5)) + (:scale-x (meters 2) (meters 0.1)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 819.2) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 573 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:x (meters -0.5)) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 574 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:num 1.0) + (:x (meters 0.5)) + (:scale-x (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 60.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-1 + :id 157 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 575 :flags (is-3d sp5 sp6))) + ) + +(defpart 575 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #xf41)) + (:num 1.0) + (:scale-x (meters 0.8)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.15)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-2 + :id 158 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 576 :flags (is-3d sp5 sp6))) + ) + +(defpart 576 + :init-specs ((:texture (new 'static 'texture-id :index #x14 :page #xf41)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.43)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-3 + :id 159 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 577 :flags (is-3d sp6))) + ) + +(defpart 577 + :init-specs ((:texture (new 'static 'texture-id :page #xf41)) + (:num 0.0165) + (:scale-x (meters 0.7)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.25)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 30.0) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 + 20 + 1 + 0 + -200278016 + -200277760 + -200277504 + -200277248 + -200276992 + -200276736 + -200276480 + -200276224 + -200275968 + -200275712 + -200275456 + -200275200 + -200274944 + -200274688 + -200274432 + -200274176 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-4 + :id 160 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 578 :flags (is-3d sp5 sp6))) + ) + +(defpart 578 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #xf41)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.65)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-5 + :id 161 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 579 :flags (is-3d sp5 sp6))) + ) + +(defpart 579 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #xf41)) + (:num 1.0) + (:scale-x (meters 0.8)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.43)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-6 + :id 162 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 580 :flags (is-3d sp5 sp6))) + ) + +(defpart 580 + :init-specs ((:texture (new 'static 'texture-id :index #x14 :page #xf41)) + (:num 1.0) + (:z (meters 0.01)) + (:scale-x (meters 0.35)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.2)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-7 + :id 163 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 581 :flags (is-3d sp5 sp6))) + ) + +(defpart 581 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #xf41)) + (:num 1.0) + (:scale-x (meters 0.2)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:fade-a -0.16666667) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-33-1 + :id 164 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 582 :flags (is-3d sp5 sp6))) + ) + +(defpart 582 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #xf42)) + (:num 1.0) + (:z (meters 0.03)) + (:scale-x (meters 0.8)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.15)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-33-2 + :id 165 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 583 :flags (is-3d sp5 sp6))) + ) + +(defpart 583 + :init-specs ((:texture (new 'static 'texture-id :index #x14 :page #xf42)) + (:num 1.0) + (:z (meters 0.03)) + (:scale-x (meters 1)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.43)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-33-3 + :id 166 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 584 :flags (is-3d sp3 sp6))) + ) + +(defpart 584 + :init-specs ((:texture (new 'static 'texture-id :page #xf42)) + (:num 1.0) + (:z (meters 0.03)) + (:scale-x (meters 0.7)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.25)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 30.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 + 20 + 1 + 0 + -199229440 + -199229184 + -199228928 + -199228672 + -199228416 + -199228160 + -199227904 + -199227648 + -199227392 + -199227136 + -199226880 + -199226624 + -199226368 + -199226112 + -199225856 + -199225600 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-33-4 + :id 167 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 585 :flags (is-3d sp5 sp6))) + ) + +(defpart 585 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #xf42)) + (:num 1.0) + (:z (meters 0.03)) + (:scale-x (meters 1)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.65)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-33-5 + :id 168 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 586 :flags (is-3d sp5 sp6))) + ) + +(defpart 586 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #xf42)) + (:num 1.0) + (:z (meters 0.03)) + (:scale-x (meters 0.8)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.43)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-33-6 + :id 169 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 587 :flags (is-3d sp5 sp6))) + ) + +(defpart 587 + :init-specs ((:texture (new 'static 'texture-id :index #x14 :page #xf42)) + (:num 1.0) + (:z (meters 0.01)) + (:scale-x (meters 0.35)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.2)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-33-7 + :id 170 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 588 :flags (is-3d sp5 sp6))) + ) + +(defpart 588 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #xf42)) + (:num 1.0) + (:z (meters 0.03)) + (:scale-x (meters 0.2)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:fade-a -0.16666667) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-38-1 + :id 171 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 589 :flags (is-3d sp5 sp6))) + ) + +(defpart 589 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #xf43)) + (:num 1.0) + (:scale-x (meters 0.8)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.15)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-38-2 + :id 172 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 590 :flags (is-3d sp5 sp6))) + ) + +(defpart 590 + :init-specs ((:texture (new 'static 'texture-id :index #x14 :page #xf43)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.43)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-38-3 + :id 173 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 591 :flags (is-3d sp3 sp6))) + ) + +(defpart 591 + :init-specs ((:texture (new 'static 'texture-id :page #xf43)) + (:num 1.0) + (:scale-x (meters 0.7)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.25)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 30.0) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 + 20 + 1 + 0 + -198180864 + -198180608 + -198180352 + -198180096 + -198179840 + -198179584 + -198179328 + -198179072 + -198178816 + -198178560 + -198178304 + -198178048 + -198177792 + -198177536 + -198177280 + -198177024 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-38-4 + :id 174 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 592 :flags (is-3d sp5 sp6))) + ) + +(defpart 592 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #xf43)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.65)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-38-5 + :id 175 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 593 :flags (is-3d sp5 sp6))) + ) + +(defpart 593 + :init-specs ((:texture (new 'static 'texture-id :index #x16 :page #xf43)) + (:num 1.0) + (:scale-x (meters 0.8)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.43)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-38-6 + :id 176 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 594 :flags (is-3d sp5 sp6))) + ) + +(defpart 594 + :init-specs ((:texture (new 'static 'texture-id :index #x14 :page #xf43)) + (:num 1.0) + (:z (meters 0.01)) + (:scale-x (meters 0.35)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.2)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-diagnostic-screen-38-7 + :id 177 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 595 :flags (is-3d sp5 sp6))) + ) + +(defpart 595 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #xf43)) + (:num 1.0) + (:z (meters 0.03)) + (:scale-x (meters 0.2)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0 10.0) + (:fade-a -0.16666667) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-broken-fishtank-leak + :id 178 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 596 :flags (sp6)) (sp-item 597 :flags (sp6)) (sp-item 598 :flags (sp6)) (sp-item 599 :flags (sp6))) + ) + +(defpart 596 + :init-specs ((:texture (new 'static 'texture-id :index #xbc :page #x4)) + (:num 1.0) + (:x (meters -3.2)) + (:y (meters 1.85)) + (:z (meters -1.4)) + (:scale-x (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:omega (degrees 0.045)) + (:vel-z (meters 0.0033333334) (meters 0.0033333334)) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.667)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 597 + :init-specs ((:texture (new 'static 'texture-id :index #xbc :page #x4)) + (:num 1.0) + (:x (meters 2.55)) + (:y (meters 2.5)) + (:z (meters -1.4)) + (:scale-x (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:omega (degrees 0.045)) + (:vel-z (meters 0.0033333334) (meters 0.0033333334)) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.667)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 598 + :init-specs ((:texture (new 'static 'texture-id :index #xbc :page #x4)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 2.9)) + (:z (meters -1.4)) + (:scale-x (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:omega (degrees 0.045)) + (:vel-z (meters 0.0033333334) (meters 0.0033333334)) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.667)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 599 + :init-specs ((:texture (new 'static 'texture-id :index #xbc :page #x4)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 7.2)) + (:z (meters -1.4)) + (:scale-x (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:omega (degrees 0.045)) + (:vel-z (meters 0.0033333334) (meters 0.0033333334)) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 1.335)) + (:flags (left-multiply-quat)) + (:func 'sparticle-motion-blur) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees -20)) + ) + ) diff --git a/goal_src/jakx/levels/kras/coliseum/coliseum-part.gc b/goal_src/jakx/levels/kras/coliseum/coliseum-part.gc index b9b406ca99..4e27b25b51 100644 --- a/goal_src/jakx/levels/kras/coliseum/coliseum-part.gc +++ b/goal_src/jakx/levels/kras/coliseum/coliseum-part.gc @@ -7,3 +7,1038 @@ ;; DECOMP BEGINS +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-coliseum-statue-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 51) 150)) + (s3-0 (logand 0 (rand-uint31-gen *random-generator*))) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-coliseum-bridge-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 51) 90)) + (s3-0 (logand 0 (rand-uint31-gen *random-generator*))) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-coliseum-bridge-leg-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 91) 50)) + (s3-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 10)) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-8 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 35)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-8))) + ) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-coliseum-hanger-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 61) 60)) + (s3-0 (logand 0 (rand-uint31-gen *random-generator*))) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +(defpartgroup group-coli-center-arch + :id 335 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1164 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1164 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 80.0) + (:x (meters -10) (meters 20)) + (:y (meters 30)) + (:scale-x (meters 8)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:vel-x (meters -0.06666667) (meters 0.13333334)) + (:scalevel-x (meters 0.016666668) (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x407800 #x408000 #x408000)) + (:rotate-x (degrees -80) (degrees 160)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-coliseum-female-statue-collapse + :id 336 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1165 :period (seconds 10) :length (seconds 0.167)) + (sp-item 1166 :period (seconds 10) :length (seconds 0.335) :offset 25) + (sp-item 1167 :flags (sp6) :period (seconds 10) :length (seconds 0.667) :offset 100) + ) + ) + +(defpart 1165 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-statue-dust) + (:num 10.0) + (:x (meters 30) (meters 20)) + (:y (meters 20) (meters 100)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y (meters 0.016666668)) + (:fade-a -0.042666666 -0.042666666) + (:accel-y (meters -0.0033333334)) + (:friction 0.95 0.02) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1166 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 10.0) + (:x (meters 0) (meters 40)) + (:y (meters 20) (meters 100)) + (:scale-x (meters 8) (meters 8)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y (meters 0.033333335) (meters 0.033333335)) + (:fade-a 0.21333334 -0.21333334) + (:accel-y (meters -0.0033333334)) + (:friction 0.95 0.02) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 1168) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1168 + :init-specs ((:fade-a -0.042666666 -0.042666666)) + ) + +(defpart 1167 + :init-specs ((:texture (new 'static 'texture-id :index #xc :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 5.0) + (:x (meters 10)) + (:y (meters 15) (meters 5)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-x (meters 0.06666667) (meters 0.16666667)) + (:scalevel-x (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.064 -0.064) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.98) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-z (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-coliseum-statue-base-damage + :id 337 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1169 :flags (sp6) :period (seconds 5) :length (seconds 0.067)) + (sp-item 1170 :flags (sp6) :period (seconds 5) :length (seconds 0.067)) + (sp-item 1171 :flags (sp6) :period (seconds 5) :length (seconds 0.067)) + (sp-item 1172 :flags (sp6) :period (seconds 5) :length (seconds 0.067)) + ) + ) + +(defpart 1169 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 20.0) + (:x (meters 6) (meters 10)) + (:y (meters -4) (meters -10)) + (:z (meters 6)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y (meters 0.016666668)) + (:fade-a 1.28 -1.28) + (:accel-y (meters -0.0016666667)) + (:friction 0.95 0.02) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1173) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1170 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 20.0) + (:x (meters 6)) + (:y (meters -4) (meters -10)) + (:z (meters 6) (meters 10)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:scalevel-y (meters 0.0033333334) (meters 0.0033333334)) + (:fade-a 1.28 -1.28) + (:accel-y (meters -0.0016666667)) + (:friction 0.95 0.02) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1173) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1173 + :init-specs ((:fade-a -0.11130435 -0.11130435)) + ) + +(defpart 1171 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 10.0) + (:x (meters 6) (meters 10)) + (:y (meters -10) (meters -4)) + (:z (meters 6)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-z (meters -0.033333335) (meters -0.06666667)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00066666666)) + (:friction 0.97 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1172 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 10.0) + (:x (meters 6)) + (:y (meters -10) (meters -4)) + (:z (meters 6) (meters 10)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-x (meters -0.033333335) (meters -0.06666667)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00066666666)) + (:friction 0.97 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-z (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-coliseum-atlas-collapse + :id 338 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1174 :period (seconds 10) :length (seconds 0.167)) + (sp-item 1175 :period (seconds 10) :length (seconds 0.335) :offset 300) + (sp-item 1176 :flags (sp6) :period (seconds 10) :length (seconds 0.335) :offset 150) + ) + ) + +(defpart 1174 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 10.0) + (:x (meters -20) (meters 40)) + (:y (meters 20) (meters 40)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y (meters 0.016666668)) + (:fade-a -0.10666667 -0.10666667) + (:accel-y (meters -0.0033333334)) + (:friction 0.97 0.02) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1175 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 2.0) + (:y (meters 0)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.23333333) (meters 0.06666667)) + (:scalevel-x (meters 0.06666667) (meters 0.033333335)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees 80) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1176 + :init-specs ((:texture (new 'static 'texture-id :index #xc :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.26666668)) + (:scalevel-x (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees 80) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-coliseum-base-damage + :id 339 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1177 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 1178 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + ) + ) + +(defpart 1177 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-statue-dust) + (:num 40.0) + (:y (meters -1) (meters 0.8)) + (:z (meters 2) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y (meters 0.006666667)) + (:fade-a 1.28 -1.28) + (:accel-y (meters -0.00066666666)) + (:friction 0.95 0.02) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1173) + (:rotate-y (degrees -60) (degrees 120)) + ) + ) + +(defpart 1178 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 10.0) + (:y (meters -1) (meters 0.6)) + (:z (meters 3)) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-z (meters 0.0016666667) (meters 0.0016666667)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:accel-y (meters -0.00016666666)) + (:friction 0.95 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees -60) (degrees 120)) + (:rotate-y (degrees -60) (degrees 120)) + ) + ) + +(defpartgroup group-coliseum-toplight + :id 340 + :flags (sp4) + :bounds (static-bspherem 0 0 0 200) + :parts ((sp-item 1179 :flags (is-3d sp5 sp6) :hour-mask #b111111111111000000) + (sp-item 1180 :flags (is-3d sp5 sp6) :hour-mask #b111111111111000000) + (sp-item 1181 :flags (sp5 sp6) :hour-mask #b111111111111000000) + ) + ) + +(defpart 1181 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:birth-func 'spartacus-birth-func-set-color) + (:num 1.0) + (:scale-x (meters 200) (meters 1)) + (:rot-x (degrees 225)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 5.0) + (:omega (degrees 67511.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 40960.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1179 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 30)) + (:z (meters 0)) + (:scale-x (meters 800)) + (:rot-x (degrees 0)) + (:rot-y (degrees -50.000004)) + (:rot-z (degrees -90)) + (:scale-y (meters 200)) + (:r 80.0) + (:g 100.0) + (:b 128.0) + (:a 20.0 2.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1180 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 30)) + (:z (meters 0)) + (:scale-x (meters 800)) + (:rot-x (degrees 0)) + (:rot-y (degrees 50.000004)) + (:rot-z (degrees -90)) + (:scale-y (meters 200)) + (:r 80.0) + (:g 100.0) + (:b 128.0) + (:a 20.0 2.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1182 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 9.8)) + (:scale-x (meters 10)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 20)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 20.0 2.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees -45)) + ) + ) + +(defpart 1183 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 9)) + (:scale-x (meters 10)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 20)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 20.0 2.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 90)) + ) + ) + +(defpartgroup group-coliseum-big-bowl-fire + :id 341 + :flags (sp0 sp4 sp15) + :bounds (static-bspherem 0 0 0 40) + :parts ((sp-item 1184 :falloff-to (meters 2000) :flags (sp6)) (sp-item 1185 :flags (sp6))) + ) + +(defpart 1184 + :init-specs ((:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters 0) (meters 15)) + (:y (meters 6)) + (:scale-x (meters 8) (meters 2)) + (:rot-z (degrees 0) 1 (degrees 180)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-x (meters 0.083333336) (meters 0.033333335)) + (:scalevel-x (meters -0.026666667) (meters -0.033333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.06666667) + (:fade-b -0.2) + (:fade-a 1.275) + (:accel-x (meters -0.0033333334)) + (:accel-y (meters 0.002) (meters 0.0026666666)) + (:friction 0.98) + (:timer (seconds 0.667) (seconds 0.83)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 launch-along-z sp-cpuinfo-flag-21)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x401100 #x40bb00)) + (:next-time (seconds 0.5)) + (:next-launcher 1186) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1186 + :init-specs ((:scalevel-x (meters -0.0033333334) (meters -0.0033333334)) + (:scalevel-y (meters -0.016666668) (meters -0.016666668)) + (:fade-a -0.8 -1.7066667) + (:accel-x (meters 0.00066666666)) + ) + ) + +(defpart 1185 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.2 0.1) + (:y (meters 16)) + (:scale-x (meters 120) (meters 8)) + (:rot-x (degrees 45)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 40.0) + (:b 8.0) + (:a 0.0) + (:omega (degrees 67511.25)) + (:fade-a 0.15 0.2) + (:timer (seconds 0.667)) + (:flags (sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 4096.0) + (:next-time (seconds 0.335)) + (:next-launcher 1187) + ) + ) + +(defpart 1187 + :init-specs ((:fade-a -0.15 -0.1)) + ) + +(defpartgroup group-atlas-globe-impact + :id 342 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1188 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1188 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-hanger-dust) + (:num 10.0) + (:x (meters -10) (meters 20)) + (:y (meters -10) (meters 20)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 15)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-x (meters -0.016666668) (meters 0.033333335)) + (:scalevel-y (meters 0.016666668) (meters 0.033333335)) + (:fade-a -0.053333335 -0.053333335) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.97 0.02) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:rotate-x (degrees -55)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-atlas-globe-impact-ground + :id 343 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1189 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1189 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 20.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.2) (meters 0.06666667)) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16 -0.16) + (:friction 0.9) + (:timer (seconds 2)) + (:flags ()) + (:conerot-x (degrees 80) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-coliseum-rail-dust + :id 344 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1190 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1190 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 4.0) + (:y (meters 2) (meters 2)) + (:z (meters 0) (meters -20)) + (:scale-x (meters 5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-x (meters -0.05) (meters 0.1)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-coliseum-gate-dust + :id 345 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1191 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1191 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 80.0) + (:x (meters -10) (meters 20)) + (:y (meters 20)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:vel-x (meters -0.06666667) (meters 0.13333334)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667 -0.10666667) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:rotate-x (degrees -80) (degrees 160)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-coliseum-column-dust + :id 346 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1192 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1192 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 40.0) + (:x (meters 0) (meters 3)) + (:y (meters 0) (meters 20)) + (:scale-x (meters 4) (meters 8)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g :copy r) + (:b :copy r) + (:a 32.0 32.0) + (:scalevel-x (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.053333335) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters -0.0016666667)) + (:accel-z (meters 0.00033333333)) + (:friction 0.97) + (:timer (seconds 4)) + (:flags ()) + (:next-time (seconds 1)) + (:next-launcher 1193) + (:conerot-y (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1193 + :init-specs ((:scalevel-x (meters 0.033333335)) + (:accel-x (meters 0.00066666666)) + (:accel-y (meters 0.00033333333)) + (:accel-z (meters 0.00066666666)) + ) + ) + +(defpartgroup group-coliseum-hanger-dust + :id 347 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1194 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1194 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-hanger-dust) + (:num 10.0) + (:x (meters -1) (meters 2)) + (:y (meters 0) (meters 4)) + (:z (meters 0) (meters 25)) + (:scale-x (meters 15)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-x (meters -0.016666668) (meters 0.033333335)) + (:scalevel-y (meters 0.016666668) (meters 0.033333335)) + (:fade-a -0.053333335 -0.053333335) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.97 0.02) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:rotate-x (degrees -55)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-coliseum-hanging-bowl-dust + :id 348 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1195 :flags (sp6) :period (seconds 10) :length (seconds 0.067))) + ) + +(defpart 1195 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 10.0) + (:x (meters 0) (meters 5)) + (:y (meters -22) (meters 4)) + (:scale-x (meters 4) (meters 8)) + (:scale-y :copy scale-x) + (:r 80.0) + (:g 70.0) + (:b 50.0) + (:a 32.0 32.0) + (:vel-x (meters 0.033333335) (meters 0.06666667)) + (:scalevel-x (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.053333335) + (:accel-y (meters -0.0033333334)) + (:friction 0.97 0.02) + (:timer (seconds 4)) + (:flags ()) + (:next-time (seconds 1)) + (:next-launcher 1196) + (:conerot-y (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1196 + :init-specs ((:scalevel-x (meters 0.033333335))) + ) + +(defpartgroup group-coliseum-bridge-dust + :id 349 + :linger-duration (seconds 10) + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 1197 :period (seconds 10) :length (seconds 0.167) :offset 50) + (sp-item 1198 :period (seconds 10) :length (seconds 0.167) :offset 125) + (sp-item 1199 :flags (sp6) :period (seconds 10) :length (seconds 0.167)) + ) + ) + +(defpart 1199 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:num 10.0) + (:x (meters -20) (meters 40)) + (:y (meters 20) (meters 20)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 150.0) + (:g 120.0) + (:b 100.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y (meters 0.016666668)) + (:fade-a -0.10666667 -0.10666667) + (:accel-y (meters -0.0033333334)) + (:friction 0.97 0.02) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1197 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 5.0) + (:y (meters 0)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.23333333) (meters 0.06666667)) + (:scalevel-x (meters 0.06666667) (meters 0.033333335)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees 80) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1198 + :init-specs ((:texture (new 'static 'texture-id :index #xc :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 10.0) + (:y (meters 0)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.26666668)) + (:scalevel-x (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees 80) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-coliseum-bridge-leg-dust + :id 350 + :linger-duration (seconds 10) + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 1200 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 1201 :period (seconds 10) :length (seconds 0.085) :offset 150) + ) + ) + +(defpart 1200 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-leg-dust) + (:num 10.0) + (:x (meters 0) (meters 4)) + (:y (meters 0) (meters 16)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.053333335) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters -0.0016666667)) + (:accel-z (meters 0.00033333333)) + (:friction 0.97) + (:timer (seconds 4)) + (:flags ()) + (:conerot-y (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1201 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-coliseum-bridge-dust) + (:num 2.0) + (:y (meters 0)) + (:scale-x (meters 5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.033333335)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters 0) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-x (degrees 80) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) diff --git a/goal_src/jakx/levels/kras/cross/kcross-part.gc b/goal_src/jakx/levels/kras/cross/kcross-part.gc index f4b2b42962..fc11551a90 100644 --- a/goal_src/jakx/levels/kras/cross/kcross-part.gc +++ b/goal_src/jakx/levels/kras/cross/kcross-part.gc @@ -7,3 +7,251 @@ ;; DECOMP BEGINS +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-kcross-fence-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 51) 90)) + (s3-0 (logand 0 (rand-uint31-gen *random-generator*))) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-kcross-fence-splinters ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 101) 70)) + (s3-0 (logand 0 (rand-uint31-gen *random-generator*))) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 20)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0)))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +(defpartgroup group-kcross-fence-dust + :id 475 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1698 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 1699 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + ) + ) + +(defpart 1698 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-kcross-fence-dust) + (:num 10.0) + (:x (meters -20) (meters 40)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-z (meters -0.05) (meters 0.1)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters -0.00066666666)) + (:friction 0.9) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1699 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:birth-func 'spt-birth-func-brightness-kcross-fence-splinters) + (:num 70.0) + (:x (meters -20) (meters 40)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 0.3) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:timer (seconds 2)) + (:flags (glow)) + (:conerot-x (degrees -45) (degrees 90)) + (:conerot-z (degrees -45) (degrees 90)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-kcross-fence-dust-small + :id 476 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1700 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 1701 :flags (sp6) :period (seconds 10) :length (seconds 0.067)) + ) + ) + +(defpart 1700 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:birth-func 'spt-birth-func-brightness-kcross-fence-dust) + (:num 10.0) + (:x (meters -10) (meters 20)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-z (meters -0.05) (meters 0.1)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08 -0.08) + (:accel-y (meters -0.00066666666)) + (:friction 0.9) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1701 + :init-specs ((:texture (new 'static 'texture-id :index #x65 :page #x4)) + (:birth-func 'spt-birth-func-brightness-kcross-fence-splinters) + (:num 70.0) + (:x (meters -10) (meters 20)) + (:y (meters 0) (meters 4)) + (:scale-x (meters 0.3) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters -0.0033333334)) + (:timer (seconds 2)) + (:flags (glow)) + (:conerot-x (degrees -45) (degrees 90)) + (:conerot-z (degrees -45) (degrees 90)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-kcross-toplight + :id 522 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 200) + :parts ((sp-item 1702 :flags (is-3d sp5 sp6) :hour-mask #b111111111111000000) + (sp-item 1703 :flags (is-3d sp5 sp6) :hour-mask #b111111111111000000) + (sp-item 1704 :flags (sp5 sp6) :hour-mask #b111111111111000000) + (sp-item 1705 :flags (sp5 sp6) :hour-mask #b111111111111000000) + ) + ) + +(defpart 1706 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + ) + ) + +(defpart 1704 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:birth-func 'spartacus-birth-func-set-color) + (:num 1.0) + (:scale-x (meters 150) (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 30.0 2.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1705 + :init-specs ((:texture (new 'static 'texture-id :index #x51 :page #x4)) + (:birth-func 'spartacus-birth-func-set-color) + (:num 1.0) + (:scale-x (meters 250) (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 20.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1702 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters -20)) + (:y (meters 0)) + (:z (meters 0)) + (:scale-x (meters 500)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 200)) + (:r 80.0) + (:g 100.0) + (:b 128.0) + (:a 20.0 2.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees -50.000004)) + (:rotate-y (degrees 180)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1703 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters -20)) + (:y (meters 0)) + (:z (meters 0)) + (:scale-x (meters 500)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 200)) + (:r 80.0) + (:g 100.0) + (:b 128.0) + (:a 20.0 2.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 50.000004)) + (:rotate-y (degrees 180)) + (:rotate-z (degrees 0)) + ) + ) diff --git a/goal_src/jakx/levels/kras/dethdrome/drome-part.gc b/goal_src/jakx/levels/kras/dethdrome/drome-part.gc index d17873c948..4379f02da0 100644 --- a/goal_src/jakx/levels/kras/dethdrome/drome-part.gc +++ b/goal_src/jakx/levels/kras/dethdrome/drome-part.gc @@ -7,3 +7,580 @@ ;; DECOMP BEGINS +(defpartgroup group-drome-mist + :id 413 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 1000) + :parts ((sp-item 1394 :falloff-to (meters 400) :flags (sp6))) + ) + +(defpart 1394 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.3) + (:y (meters -10) (meters 20)) + (:z (meters 3)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 50.0) + (:g 40.0 20.0) + (:b 90.0) + (:a 0.0) + (:vel-x (meters 0) (meters 0.33333334)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-x (meters 0.0033333334) (meters 0.0033333334)) + (:accel-y (meters -0.00083333335) (meters 0.0016666667)) + (:friction 0.85 0.01) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2)) + (:next-time (seconds 1)) + (:next-launcher 1395) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1395 + :init-specs ((:scalevel-x (meters 0.00033333333)) (:scalevel-y :copy scalevel-x) (:fade-a -0.053333335 -0.026666667)) + ) + +(defpartgroup group-drome-steam + :id 414 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 1000) + :parts ((sp-item 1396 :falloff-to (meters 400) :flags (sp6))) + ) + +(defpart 1396 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.3) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0) + (:g 100.0) + (:b 220.0) + (:a 0.0) + (:vel-x (meters 0.13333334) (meters 0.06666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28) + (:accel-y (meters -0.001)) + (:friction 0.96 0.03) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1397) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1397 + :init-specs ((:scalevel-x (meters 0.0016666667) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + ) + ) + +(defpartgroup group-drome-bridge-night-glow-blinking + :id 415 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 10) + :parts ((sp-item 1398 :flags (sp6) :period (seconds 3) :length (seconds 0.017) :hour-mask #b111111111110000000)) + ) + +(defpart 1398 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 1.0) + (:scale-x (meters 10) (meters 1)) + (:rot-x (degrees 22.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 20.0) + (:b 20.0) + (:a 0.0) + (:omega (degrees 45011.25)) + (:fade-a 0.42666668) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:next-time (seconds 1)) + (:next-launcher 1399) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1399 + :init-specs ((:fade-a -0.42666668)) + ) + +(defpartgroup group-drome-warning-light + :id 416 + :flags (sp4) + :bounds (static-bspherem 0 0 0 10) + :parts ((sp-item 1400 :flags (sp6) :period (seconds 1) :length (seconds 0.035) :offset 220)) + ) + +(defpart 1400 + :init-specs ((:texture (new 'static 'texture-id :index #x8b :page #x4)) + (:num 1.0) + (:y (meters -0.5)) + (:scale-x (meters 10)) + (:rot-x (degrees 45)) + (:scale-y :copy scale-x) + (:r 200.0) + (:g 200.0) + (:b 200.0) + (:a 0.0) + (:omega (degrees 22511.25)) + (:fade-a 0.21333334) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:next-time (seconds 0.5)) + (:next-launcher 1401) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1401 + :init-specs ((:fade-a -0.21333334)) + ) + +(defpartgroup group-drome-canyon-mist + :id 417 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 1000) + :parts ((sp-item 1402 :falloff-to (meters 1000) :flags (sp6))) + ) + +(defpart 1402 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 1.0) + (:x (meters -20)) + (:y (meters -10) (meters 20)) + (:z (meters -30) (meters 80)) + (:scale-x (meters 30)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 80.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-x (meters 0.00033333333)) + (:friction 0.998) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 1)) + (:next-launcher 1403) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1403 + :init-specs ((:scalevel-x (meters 0.00033333333)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.026666667 -0.026666667) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + ) + ) + +(defpartgroup group-drome-waterfall-mist-wide-fall + :id 418 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 300) + :parts ((sp-item 1404 :falloff-to (meters 1000) :flags (sp6)) (sp-item 1405 :falloff-to (meters 1000) :flags (sp6))) + ) + +(defpart 1404 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 0.3 0.2) + (:z (meters -40) (meters 80)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 80.0 160.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 0.06666667 0.1) + (:accel-x (meters -0.000008333333) (meters 0.000016666667)) + (:accel-y (meters -0.0023333333)) + (:friction 0.99 0.005) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x408000 #x408000 #x400f00 #x406400)) + (:next-time (seconds 1)) + (:next-launcher 1406) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1406 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.033333335)) (:fade-a 0.0)) + ) + +(defpart 1405 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.05 0.05) + (:z (meters -70) (meters 100)) + (:scale-x (meters 10) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-x (meters 0.033333335)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.053333335 0.053333335) + (:accel-y (meters -0.00016666666) (meters -0.00033333333)) + (:friction 0.995) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 2)) + (:next-launcher 1407) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1407 + :init-specs ((:fade-a -0.021333333 -0.021333333)) + ) + +(defpartgroup group-drome-waterfall-mist-medium-fall + :id 419 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 250) + :parts ((sp-item 1408 :falloff-to (meters 1000) :flags (sp6)) (sp-item 1409 :falloff-to (meters 1000) :flags (sp6))) + ) + +(defpart 1408 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 0.2 0.2) + (:z (meters -15) (meters 30)) + (:scale-x (meters 5) (meters 10)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 80.0 160.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 0.06666667 0.1) + (:accel-x (meters -0.000008333333) (meters 0.000016666667)) + (:accel-y (meters -0.0023333333)) + (:friction 0.99 0.005) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x408000 #x408000 #x400f00 #x406400)) + (:next-time (seconds 1)) + (:next-launcher 1410) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1410 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.033333335)) (:fade-a 0.0)) + ) + +(defpart 1409 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.05 0.05) + (:x (meters 0) (meters 30)) + (:scale-x (meters 30) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters -0.006666667)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.026666667 0.026666667) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.995 0.004) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 2)) + (:next-launcher 1411) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1411 + :init-specs ((:fade-a -0.021333333 -0.021333333)) + ) + +(defpartgroup group-drome-waterfall-mist-small-fall + :id 420 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 250) + :parts ((sp-item 1412 :falloff-to (meters 1000) :flags (sp6)) (sp-item 1413 :falloff-to (meters 1000) :flags (sp6))) + ) + +(defpart 1412 + :init-specs ((:texture (new 'static 'texture-id :index #x80 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 0.2 0.2) + (:z (meters -15) (meters 30)) + (:scale-x (meters 5) (meters 10)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 80.0 160.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 0.06666667 0.1) + (:accel-x (meters -0.000008333333) (meters 0.000016666667)) + (:accel-y (meters -0.0023333333)) + (:friction 0.99 0.005) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x408000 #x408000 #x400f00 #x406400)) + (:next-time (seconds 1)) + (:next-launcher 1414) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1414 + :init-specs ((:scalevel-x (meters 0.016666668) (meters 0.033333335)) (:fade-a 0.0)) + ) + +(defpart 1413 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.05 0.05) + (:x (meters 0) (meters 30)) + (:scale-x (meters 30) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters -0.006666667)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.026666667 0.026666667) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.995 0.004) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 2)) + (:next-launcher 1415) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1415 + :init-specs ((:fade-a -0.021333333 -0.021333333)) + ) + +(defpartgroup group-drome-waterfall-wide-mist-rise + :id 421 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 200) + :parts ((sp-item 1416 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1417 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1418 :falloff-to (meters 600) :flags (is-3d sp6)) + ) + ) + +(defpart 1416 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.1 0.05) + (:x (meters 0) (meters 30)) + (:scale-x (meters 30) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334 0.21333334) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.98 0.01) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 0.5)) + (:next-launcher 1419) + (:conerot-x (degrees 80) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1419 + :init-specs ((:fade-a -0.021333333 -0.021333333)) + ) + +(defpart 1417 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters 0) (meters 10)) + (:y (meters 0)) + (:z (meters -25) (meters 50)) + (:scale-x (meters 10) (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 90.0 100.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.10666667) + (:accel-y (meters -0.0033333334)) + (:friction 0.98 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x400a00 #x407800)) + (:func 'check-drop-group-center) + (:conerot-x (degrees -10) (degrees 20)) + (:conerot-z (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1418 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:x (meters -2) (meters 4)) + (:y (meters 0.3)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 30) (meters 5)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 30) (meters 5)) + (:r 100.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:scalevel-x (meters 0.13333334) (meters 0.016666668)) + (:scalevel-y (meters 0.13333334) (meters 0.016666668)) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-drome-waterfall-mist-rise + :id 422 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 200) + :parts ((sp-item 1420 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1421 :falloff-to (meters 600) :flags (sp6)) + (sp-item 1422 :falloff-to (meters 600) :flags (is-3d sp6)) + ) + ) + +(defpart 1420 + :init-specs ((:texture (new 'static 'texture-id :index #x78 :page #x4)) + (:num 0.1 0.05) + (:x (meters 0) (meters 30)) + (:scale-x (meters 30) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 180.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334 0.21333334) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.98 0.01) + (:timer (seconds 10)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:next-time (seconds 0.5)) + (:next-launcher 1423) + (:conerot-x (degrees 80) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1423 + :init-specs ((:fade-a -0.021333333 -0.021333333)) + ) + +(defpart 1421 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters 0) (meters 10)) + (:y (meters 0)) + (:z (meters -25) (meters 50)) + (:scale-x (meters 10) (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 90.0 100.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335 -0.10666667) + (:accel-y (meters -0.0033333334)) + (:friction 0.98 0.02) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x400a00 #x407800)) + (:func 'check-drop-group-center) + (:conerot-x (degrees -10) (degrees 20)) + (:conerot-z (degrees -10) (degrees 20)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1422 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:x (meters -2) (meters 4)) + (:y (meters 0.3)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 30) (meters 5)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 30) (meters 5)) + (:r 100.0 70.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:scalevel-x (meters 0.13333334) (meters 0.016666668)) + (:scalevel-y (meters 0.13333334) (meters 0.016666668)) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:rotate-y (degrees 0)) + ) + ) diff --git a/goal_src/jakx/levels/kras/rusty-hook/brdroom-part.gc b/goal_src/jakx/levels/kras/rusty-hook/brdroom-part.gc index a9735d5e09..59a56aac49 100644 --- a/goal_src/jakx/levels/kras/rusty-hook/brdroom-part.gc +++ b/goal_src/jakx/levels/kras/rusty-hook/brdroom-part.gc @@ -7,3 +7,101 @@ ;; DECOMP BEGINS +(defpartgroup group-brdroom-fountain + :id 521 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 5) + :parts ((sp-item 1692 :flags (sp6)) (sp-item 1693 :flags (is-3d sp6)) (sp-item 1694 :flags (is-3d sp6))) + ) + +(defpart 1692 + :init-specs ((:texture (new 'static 'texture-id :index #x60 :page #x4)) + (:num 5.0) + (:z (meters -0.5) (meters 0.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 32.0) + (:omega (degrees 0.45)) + (:vel-z (meters 0.033333335) (meters 0.006666667)) + (:accel-z (meters -0.0013333333)) + (:timer (seconds 1)) + (:flags ()) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.017) (seconds 0.165)) + (:next-launcher 1695) + (:conerot-x (degrees 0) (degrees 10)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1695 + :init-specs ((:r 64.0 128.0) + (:g 64.0 128.0) + (:b 64.0 128.0) + (:a 32.0 128.0) + (:next-time (seconds 0.035)) + (:next-launcher 1696) + ) + ) + +(defpart 1696 + :init-specs ((:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 32.0) + (:next-time (seconds 0.335) (seconds 0.33)) + (:next-launcher 1695) + ) + ) + +(defpart 1693 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.1 0.1) + (:scale-x (meters 0.2) (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.005) (meters 0.0016666667)) + (:scalevel-y (meters 0.005) (meters 0.0016666667)) + (:fade-a 0.64 0.64) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 right-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1697) + (:rotate-y (degrees 90)) + ) + ) + +(defpart 1697 + :init-specs ((:fade-a -0.10666667 -0.10666667)) + ) + +(defpart 1694 + :init-specs ((:texture (new 'static 'texture-id :index #x55 :page #x4)) + (:num 1.0) + (:y (meters -2) (meters 4)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.1)) + (:rot-y (degrees 0) (degrees 360)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.005) (meters 0.0016666667)) + (:scalevel-y (meters 0.005) (meters 0.0016666667)) + (:fade-a -0.64 -0.64) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 right-multiply-quat)) + (:rotate-y (degrees 90)) + ) + ) diff --git a/goal_src/jakx/levels/kras/rusty-hook/rustyh-part.gc b/goal_src/jakx/levels/kras/rusty-hook/rustyh-part.gc index e67f40fdf3..f960df2fbb 100644 --- a/goal_src/jakx/levels/kras/rusty-hook/rustyh-part.gc +++ b/goal_src/jakx/levels/kras/rusty-hook/rustyh-part.gc @@ -7,3 +7,273 @@ ;; DECOMP BEGINS +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-fishtank-bubbles ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 51) 150)) + (s3-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 40)) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 21) 10)) + (v1-7 (mod (the-as int (rand-uint31-gen *random-generator*)) 6)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-7))) + ) + (none) + ) + +(defpartgroup group-fishtank-bubbles + :id 503 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 1633)) + ) + +(defpart 1633 + :init-specs ((:texture (new 'static 'texture-id :index #x8a :page #x4)) + (:birth-func 'spt-birth-func-brightness-fishtank-bubbles) + (:num 0.5 0.5) + (:x (meters 0) (meters 0.5)) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:omega (degrees 157.5)) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:accel-y (meters 0.00033333333)) + (:friction 0.96 0.02) + (:timer (seconds 3)) + (:flags (sp-cpuinfo-flag-0 glow left-multiply-quat)) + (:func 'spt-func-on-omega-height-die) + (:next-time (seconds 0.167)) + (:next-launcher 1634) + (:conerot-x (degrees 0) (degrees 20)) + (:rotate-y (degrees -30) (degrees 60)) + ) + ) + +(defpart 1634 + :init-specs ((:a 32.0 100.0) + (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) + (:scalevel-y (meters -0.0016666667) (meters 0.0033333334)) + (:accel-x (meters -0.00033333333) 1 (meters 0.00066666666)) + (:accel-z (meters -0.00033333333) 1 (meters 0.00066666666)) + (:next-time (seconds 0.035) (seconds 0.03)) + (:next-launcher 1634) + ) + ) + +(defpartgroup group-rustyh-smalltv + :id 504 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 1635 :flags (is-3d sp6)) (sp-item 1636 :flags (is-3d sp6))) + ) + +(defpart 1635 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x4c8)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters -0.7)) + (:y (meters -0.05)) + (:scale-x (meters -1.4) 1 (meters 2.8)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters -1.3) 1 (meters 2.6)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:timer (seconds 0.017)) + (:flags ()) + (:userdata :data (new 'static 'boxed-array :type int32 + 5 + 1 + 0 + #x4c800000 + #x4c800100 + #x4c800200 + #x4c800300 + #x4c800400 + #x4c800500 + #x4c800600 + #x4c800700 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1636 + :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x4c8)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters 0.7)) + (:y (meters -0.05)) + (:scale-x (meters -1.4) 1 (meters 2.8)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters -1.3) 1 (meters 2.6)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:timer (seconds 0.017)) + (:flags ()) + (:userdata :data (new 'static 'boxed-array :type int32 + 5 + 1 + 0 + #x4c800400 + #x4c800300 + #x4c800200 + #x4c800100 + #x4c800000 + #x4c800700 + #x4c800600 + #x4c800500 + ) + ) + (:func 'sparticle-texture-animate) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpartgroup group-rustyh-largetv + :id 505 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 60) + :parts ((sp-item 1637 :flags (is-3d sp5 sp6)) + (sp-item 1638 :flags (is-3d sp5 sp6)) + (sp-item 1639 :flags (is-3d sp6) :period (seconds 4) :length (seconds 0.017)) + (sp-item 1640 :flags (is-3d sp6) :period (seconds 6) :length (seconds 0.017)) + (sp-item 1641 :flags (is-3d sp6) :period (seconds 5) :length (seconds 0.017)) + ) + ) + +(defpart 1637 + :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x4c8)) + (:num 1.0) + (:x (meters -0.3)) + (:y (meters 0)) + (:z (meters 0.08)) + (:scale-x (meters 8.8)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 4)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1638 + :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x1)) + (:num 1.0) + (:x (meters -0.3)) + (:y (meters 0)) + (:z (meters 0.02)) + (:scale-x (meters 8.8)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 4)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags ()) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1639 + :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x4c8)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters -0.8) (meters 0.1)) + (:z (meters 0.028)) + (:scale-x (meters 1.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-x (meters 0.033333335)) + (:timer (seconds 1.035)) + (:flags (aux-list)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1640 + :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x4c8)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters -0.2) (meters 0.1)) + (:z (meters 0.026)) + (:scale-x (meters 1.2)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-x (meters 0.03)) + (:timer (seconds 1.135)) + (:flags (aux-list)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1641 + :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x4c8)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters 0.2) (meters 0.1)) + (:z (meters 0.024)) + (:scale-x (meters 0.9)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-x (meters 0.028333334)) + (:timer (seconds 1.2)) + (:flags (aux-list)) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) diff --git a/goal_src/jakx/levels/spargus/canyon/canyon-part.gc b/goal_src/jakx/levels/spargus/canyon/canyon-part.gc index 7b113310d2..bbf9197bab 100644 --- a/goal_src/jakx/levels/spargus/canyon/canyon-part.gc +++ b/goal_src/jakx/levels/spargus/canyon/canyon-part.gc @@ -7,3 +7,396 @@ ;; DECOMP BEGINS +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-part-canyon-leaf-fall ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 10)) + (s3-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 21)) + (s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 71) 20)) + (v1-7 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 70)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-7))) + ) + (none) + ) + +(defpartgroup group-canyon-leaf-fall + :id 437 + :flags (sp0 sp1 sp4) + :bounds (static-bspherem 0 -40 0 80) + :parts ((sp-item 1447 :flags (is-3d))) + ) + +(defpart 1447 + :init-specs ((:texture (new 'static 'texture-id :index #x7f :page #x4)) + (:birth-func 'birth-func-texture-group-2d) + (:num 0.05) + (:x (meters 0) (meters 80)) + (:y (meters 0)) + (:scale-x (meters 0.5) (meters 3)) + (:rot-x 4) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 3)) + (:r 32.0 50.0) + (:g 32.0 32.0) + (:b 32.0) + (:a 128.0) + (:rotvel-x (degrees -0.2) (degrees 0.4)) + (:rotvel-y (degrees -0.2) 1 (degrees 0.4)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.00066666666) (meters -0.00066666666)) + (:friction 0.99) + (:timer (seconds 10)) + (:flags (glow right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x407d00 #x407e00 #x407f00)) + (:next-time (seconds 1)) + (:next-launcher 1448) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1448 + :init-specs ((:rotvel-x (degrees -1.3333334) (degrees 2.6666667)) + (:rotvel-y (degrees -0.2) 1 (degrees 0.4)) + (:rotvel-z (degrees -1.3333334) (degrees 2.6666667)) + (:accel-x (meters -0.0016666667) (meters 0.0033333334)) + (:accel-y (meters 0.000033333334) (meters -0.0013333333)) + (:accel-z (meters -0.0016666667) (meters 0.0033333334)) + (:next-time (seconds 0.5) (seconds 0.497)) + (:next-launcher 1448) + ) + ) + +(defpart 1449 + :init-specs ((:fade-a -0.08533333) (:flags (sp-cpuinfo-flag-2 right-multiply-quat))) + ) + +(defun spt-birth-func-part-canyon-leaf-fall ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object)) + (birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4) + (spt-birth-func-brightness-part-canyon-leaf-fall arg0 arg1 arg2) + (none) + ) + +;; WARN: Return type mismatch quaternion vs none. +(defun spt-canyon-check-ground-lie-flat ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (local-vars (v1-12 float) (v1-13 float) (v1-18 float) (v1-19 float) (s5-1 quaternion)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + ) + (init-vf0-vector) + (let* ((v1-1 (-> arg1 key 0)) + (f0-1 (+ 819.2 (-> v1-1 origin trans y))) + (f30-0 (+ 8192.0 f0-1)) + ) + (when (< (-> arg2 launchrot y) f0-1) + (let ((s4-0 (new 'stack-no-clear 'quaternion))) + (let ((s3-0 (new 'stack-no-clear 'matrix))) + (set! (-> arg1 next-launcher) (-> *part-id-table* 1449)) + (set! (-> arg1 next-time) (the-as uint 5)) + (set! (-> arg1 acc quad) (the-as uint128 0)) + (set! (-> arg1 vel-sxvel quad) (the-as uint128 0)) + (set! (-> arg1 rot-syvel quad) (the-as uint128 0)) + (quaternion-identity! (-> arg1 rotvel3d)) + (let* ((v1-10 s4-0) + (a0-3 arg2) + (f0-2 (-> a0-3 conerot x)) + (f1-3 (-> a0-3 conerot y)) + (f2-0 (-> a0-3 conerot z)) + ) + (set! (-> v1-10 x) f0-2) + (set! (-> v1-10 y) f1-3) + (set! (-> v1-10 z) f2-0) + (set! (-> v1-10 w) (sqrtf (- (- (- 1.0 (square f2-0)) (square f1-3)) (square f0-2)))) + ) + (matrix-u-f-compose s3-0 *y-vector* (vector-z-quaternion! (new 'stack-no-clear 'vector) s4-0)) + (matrix->quaternion s4-0 s3-0) + ) + (let ((v1-11 arg2)) + (cond + ((< (-> s4-0 w) 0.0) + (.lvf vf1 (&-> v1-11 conerot quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.sub.vf.xyz vf1 vf0 vf2) + (.svf (&-> v1-11 conerot quad) vf1) + (.mov v1-12 vf1) + ) + (else + (.lvf vf1 (&-> v1-11 conerot quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.add.vf.xyz vf1 vf0 vf2) + (.svf (&-> v1-11 conerot quad) vf1) + (.mov v1-13 vf1) + ) + ) + ) + ) + (set! (-> arg1 sp-func) (the-as (function sparticle-system sparticle-cpuinfo sprite-vec-data-3d uint none) 0)) + 0 + ) + (set! s5-1 + (when (< (-> arg2 launchrot y) f30-0) + (set! s5-1 (new 'stack-no-clear 'quaternion)) + (let ((s4-1 (new 'stack-no-clear 'quaternion))) + (let ((s3-1 (new 'stack-no-clear 'matrix))) + (let* ((v1-15 s5-1) + (a0-9 arg2) + (f0-8 (-> a0-9 conerot x)) + (f1-7 (-> a0-9 conerot y)) + (f2-3 (-> a0-9 conerot z)) + ) + (set! (-> v1-15 x) f0-8) + (set! (-> v1-15 y) f1-7) + (set! (-> v1-15 z) f2-3) + (set! (-> v1-15 w) (sqrtf (- (- (- 1.0 (square f2-3)) (square f1-7)) (square f0-8)))) + ) + (matrix-u-f-compose s3-1 *y-vector* (vector-z-quaternion! (new 'stack-no-clear 'vector) s5-1)) + (matrix->quaternion s4-1 s3-1) + ) + (quaternion-pseudo-seek s5-1 s5-1 s4-1 (* 3.034074 (seconds-per-frame))) + ) + (cond + ((< (-> s5-1 w) 0.0) + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-1 quad)) + (.sub.vf.xyz vf1 vf0 vf2) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-18 vf1) + ) + (else + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-1 quad)) + (.add.vf.xyz vf1 vf0 vf2) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-19 vf1) + ) + ) + s5-1 + ) + ) + ) + (none) + ) + ) + +(defpartgroup group-can-leaves-floor + :id 438 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1450 :flags (is-3d sp6))) + ) + +(defpart 1450 + :init-specs ((:texture (new 'static 'texture-id :index #x7f :page #x4)) + (:birth-func 'birth-func-texture-group-2d) + (:num 0.3 1.0) + (:x (meters -10) (meters 20)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-x 4) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 32.0 50.0) + (:g 32.0 32.0) + (:b 32.0) + (:a 128.0) + (:vel-z (meters 0.06666667)) + (:rotvel-x (degrees -4) (degrees 8)) + (:rotvel-y (degrees -4) 1 (degrees 8)) + (:rotvel-z (degrees -4) (degrees 8)) + (:accel-y (meters 0.0033333334) (meters 0.0033333334)) + (:friction 0.94 0.02) + (:timer (seconds 4)) + (:flags (glow right-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x407d00 #x407e00 #x407f00)) + (:func 'check-drop-group-center) + (:next-time (seconds 0.167)) + (:next-launcher 1451) + (:conerot-x (degrees -10) (degrees 20)) + ) + ) + +(defpart 1451 + :init-specs ((:rotvel-x (degrees -2.6666667) (degrees 5.3333335)) + (:rotvel-y (degrees -0.4) 1 (degrees 0.8)) + (:rotvel-z (degrees -2.6666667) (degrees 5.3333335)) + (:accel-x (meters -0.0016666667) (meters 0.0033333334)) + (:accel-y (meters 0.000033333334) (meters -0.0013333333)) + (:accel-z (meters -0.0016666667) (meters 0.0033333334)) + (:next-time (seconds 0.5) (seconds 0.497)) + (:next-launcher 1451) + ) + ) + +(defpartgroup group-canyon-ocean-splash + :id 439 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1452 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2)) + (sp-item 1453 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2) :offset 20) + ) + ) + +(defpart 1452 + :init-specs ((:texture (new 'static 'texture-id :index #x64 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 3.0) + (:x (meters -30)) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees 90)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.13333334) (meters 0.033333335)) + (:vel-z (meters 0.033333335) (meters 0.033333335)) + (:accel-y (meters -0.0016666667)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0)) + ) + ) + +(if #t + (set! *range-cynsplash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 90.0 130.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-cynsplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 127.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-cynsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 5.0 8.0 9.0 10.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-cynsplash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 30.0 40.0 41.0 42.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-cynsplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-cynsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 8.0 8.0 9.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 35.0 0.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-cynsplash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 4.0 5.0 6.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +(define *part-canyon-ocean-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 1.5) :lifetime-offset (seconds 1)) + ) + +(set! (-> *part-id-table* 1452 init-specs 18 initial-valuef) + (the-as float *part-canyon-ocean-splash-curve-settings*) + ) + +(set! (-> *part-canyon-ocean-splash-curve-settings* color-start) *range-cynsplash-color*) + +(set! (-> *part-canyon-ocean-splash-curve-settings* alpha-start) *range-cynsplash-alpha*) + +(set! (-> *part-canyon-ocean-splash-curve-settings* scale-x-start) *range-cynsplash-scale-x*) + +(set! (-> *part-canyon-ocean-splash-curve-settings* scale-y-start) *range-cynsplash-scale-y*) + +(set! (-> *part-canyon-ocean-splash-curve-settings* r-scalar) #f) + +(set! (-> *part-canyon-ocean-splash-curve-settings* g-scalar) #f) + +(set! (-> *part-canyon-ocean-splash-curve-settings* b-scalar) #f) + +(set! (-> *part-canyon-ocean-splash-curve-settings* a-scalar) *curve-cynsplash-alpha*) + +(set! (-> *part-canyon-ocean-splash-curve-settings* scale-x-scalar) *curve-cynsplash-scale-x*) + +(set! (-> *part-canyon-ocean-splash-curve-settings* scale-y-scalar) *curve-cynsplash-scale-y*) + +(defpart 1453 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 20.0) + (:x (meters -30) (meters 10)) + (:y (meters 0)) + (:z (meters -30) (meters 60)) + (:scale-x (meters 5) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 120.0 40.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.1)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.128 -0.128) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 2.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 glow)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x407800)) + (:conerot-z (degrees 0) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-canyon-ocean-splash-2 + :id 440 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1452 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2) :offset 150) + (sp-item 1453 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2) :offset 170) + ) + ) diff --git a/goal_src/jakx/levels/spargus/desert/desarena-part.gc b/goal_src/jakx/levels/spargus/desert/desarena-part.gc index d8b712687c..d349a8109c 100644 --- a/goal_src/jakx/levels/spargus/desert/desarena-part.gc +++ b/goal_src/jakx/levels/spargus/desert/desarena-part.gc @@ -7,3 +7,124 @@ ;; DECOMP BEGINS +(defpartgroup group-desa-torch + :id 334 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 1156 :falloff-to (meters 1000) :flags (sp6)) + (sp-item 1157 :fade-after (meters 200) :flags (sp6)) + (sp-item 1158 :falloff-to (meters 100) :flags (sp6)) + (sp-item 1159 :falloff-to (meters 1000) :flags (sp6)) + ) + ) + +(defpart 1156 + :init-specs ((:texture (new 'static 'texture-id :index #xbb :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 0.5) + (:x (meters 0) (meters -1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:vel-z (meters 0.013333334)) + (:scalevel-x (meters -0.0033333334) (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.6666667) + (:fade-b -0.6666667) + (:fade-a 0.85333335 0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00066666666)) + (:friction 1.02) + (:timer (seconds 0.335) (seconds 0.33)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat sp-cpuinfo-flag-21)) + (:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x401100 #x40bb00)) + (:next-time (seconds 0.25)) + (:next-launcher 1160) + (:conerot-y (degrees 10)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1160 + :init-specs ((:fade-a -0.13333334 -1.7066667)) + ) + +(defpart 1157 + :init-specs ((:texture (new 'static 'texture-id :index #x15 :page #x4)) + (:num 0.2 0.1) + (:y (meters 1)) + (:scale-x (meters 10) (meters 5)) + (:rot-x (degrees 6.7500005)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 40.0) + (:b 8.0) + (:a 0.0) + (:omega (degrees 4511.25)) + (:fade-a 0.6 0.6) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 4096.0) + (:next-time (seconds 0.167)) + (:next-launcher 1161) + ) + ) + +(defpart 1161 + :init-specs ((:fade-a -0.4 -0.4)) + ) + +(defpart 1159 + :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x4)) + (:num 1.0) + (:y (meters 0.7)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees -70) (degrees -40)) + (:scale-y (meters 2) (meters 1)) + (:r 0.0) + (:g 0.0) + (:b 255.0) + (:a 0.0) + (:fade-a 0.8 2.0) + (:timer (seconds 0.335)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.167)) + (:next-launcher 1162) + ) + ) + +(defpart 1162 + :init-specs ((:fade-a -4.0 -4.0)) + ) + +(defpart 1158 + :init-specs ((:num 0.2) + (:x (meters 0) (meters 2)) + (:z (meters 2) (meters 6)) + (:rot-x 8) + (:r 8192.0) + (:g 4096.0) + (:b 4096.0) + (:vel-z (meters 0.033333335)) + (:fade-b 13.653334) + (:accel-y (meters 0.0016666667)) + (:friction 0.99) + (:timer (seconds 0.335)) + (:flags (distort left-multiply-quat)) + (:next-time (seconds 0.167)) + (:next-launcher 1163) + (:conerot-x (degrees 0) (degrees 20)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1163 + :init-specs ((:fade-b -13.653334)) + ) diff --git a/goal_src/jakx/levels/spargus/isle/desisle-part.gc b/goal_src/jakx/levels/spargus/isle/desisle-part.gc index 3d2053059a..18de7b81cc 100644 --- a/goal_src/jakx/levels/spargus/isle/desisle-part.gc +++ b/goal_src/jakx/levels/spargus/isle/desisle-part.gc @@ -7,3 +7,163 @@ ;; DECOMP BEGINS +(defpartgroup group-desisle-ocean-splash + :id 477 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1529 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2)) + (sp-item 1530 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2) :offset 20) + ) + ) + +(defpart 1529 + :init-specs ((:texture (new 'static 'texture-id :index #x64 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 3.0) + (:y (meters 10)) + (:scale-x (meters 1)) + (:rot-z (degrees 90)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.26666668) (meters 0.033333335)) + (:vel-z (meters 0.033333335) (meters 0.033333335)) + (:accel-y (meters -0.0016666667)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-displash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 90.0 130.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-displash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 127.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-displash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 10.0 16.0 17.0 18.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 6.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-displash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 60.0 80.0 81.0 82.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-displash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-displash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 10.0 10.0 11.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 45.0 0.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-displash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 4.0 5.0 6.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +(define *part-desisle-ocean-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 1.5) :lifetime-offset (seconds 1)) + ) + +(set! (-> *part-id-table* 1529 init-specs 17 initial-valuef) + (the-as float *part-desisle-ocean-splash-curve-settings*) + ) + +(set! (-> *part-desisle-ocean-splash-curve-settings* color-start) *range-displash-color*) + +(set! (-> *part-desisle-ocean-splash-curve-settings* alpha-start) *range-displash-alpha*) + +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-x-start) *range-displash-scale-x*) + +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-y-start) *range-displash-scale-y*) + +(set! (-> *part-desisle-ocean-splash-curve-settings* r-scalar) #f) + +(set! (-> *part-desisle-ocean-splash-curve-settings* g-scalar) #f) + +(set! (-> *part-desisle-ocean-splash-curve-settings* b-scalar) #f) + +(set! (-> *part-desisle-ocean-splash-curve-settings* a-scalar) *curve-displash-alpha*) + +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-x-scalar) *curve-displash-scale-x*) + +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-y-scalar) *curve-displash-scale-y*) + +(defpart 1530 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 20.0) + (:x (meters 0) (meters 30)) + (:y (meters 15)) + (:scale-x (meters 5) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 120.0 40.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.2)) + (:scalevel-x (meters 0.016666668) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.064 -0.064) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 6.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 glow)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x407800)) + (:func 'check-drop-group-center) + (:conerot-z (degrees 0) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) diff --git a/goal_src/jakx/levels/spargus/spargus-part.gc b/goal_src/jakx/levels/spargus/spargus-part.gc index d72a207068..7d1ef50392 100644 --- a/goal_src/jakx/levels/spargus/spargus-part.gc +++ b/goal_src/jakx/levels/spargus/spargus-part.gc @@ -7,3 +7,376 @@ ;; DECOMP BEGINS +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-spargus-sewer-water ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 60)) + (s3-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 21)) + (s4-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 21)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 40)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +;; WARN: Return type mismatch float vs none. +(defun spt-birth-func-brightness-spargus-sewer-water-foam ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) + (let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 90)) + (s3-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 21)) + (s4-0 (mod (the-as int (rand-uint31-gen *random-generator*)) 11)) + (v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 30)) + ) + (set! (-> arg2 rotate-x) (the float (- s5-0 s3-0))) + (set! (-> arg2 rotate-y) (the float (- s5-0 s4-0))) + (set! (-> arg2 rotate-z) (the float (- s5-0 v1-6))) + ) + (none) + ) + +(defpartgroup group-spargus-sewerwater + :id 441 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1454 :falloff-to (meters 600) :flags (sp6)) (sp-item 1455 :falloff-to (meters 600) :flags (sp6))) + ) + +(defpart 1454 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 0.8) + (:y (meters 2)) + (:z (meters 0)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega (degrees 0.045)) + (:vel-z (meters -0.1) (meters 0.016666668)) + (:accel-y (meters -0.0033333334) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.835)) + (:flags (aux-list left-multiply-quat right-multiply-quat)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.167) (seconds 0.33)) + (:next-launcher 1456) + (:conerot-y (degrees 0) (degrees 1)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees -90) (degrees 180)) + ) + ) + +(defpart 1456 + :init-specs ((:r 60.0 100.0) + (:g 160.0) + (:b 60.0 100.0) + (:a 60.0 60.0) + (:next-time (seconds 0.035) (seconds 0.03)) + (:next-launcher 1457) + ) + ) + +(defpart 1457 + :init-specs ((:r 0.0) (:g 0.0) (:b 0.0) (:a 0.0) (:next-time (seconds 0.035) (seconds 0.33)) (:next-launcher 1456)) + ) + +(defpart 1455 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 1.0) + (:x (meters -3) (meters 6)) + (:y (meters -2)) + (:z (meters 0)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 100.0 20.0) + (:vel-z (meters -0.1) (meters 0.016666668)) + (:scalevel-x (meters 0.026666667) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0033333334) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow left-multiply-quat)) + (:conerot-y (degrees 0) (degrees 1)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1458 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 4.0) + (:x (meters -8) (meters 16)) + (:y (meters -23)) + (:z (meters 35) (meters 16)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.033333335)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.006666667) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.335) (seconds 0.165)) + (:flags (sp-cpuinfo-flag-2 aux-list glow left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1459 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:x (meters -2) (meters 4)) + (:y (meters -24)) + (:z (meters 40) (meters 4)) + (:scale-x (meters 20) (meters 4)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 20.0) + (:g 130.0) + (:b 90.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.06666667) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-spargus-ocean-splash + :id 442 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1460 :falloff-to (meters 600) :flags (sp6) :period (seconds 5) :length (seconds 0.2)) + (sp-item 1461 :falloff-to (meters 600) :flags (sp6) :period (seconds 5) :length (seconds 0.2) :offset 20) + ) + ) + +(defpart 1460 + :init-specs ((:texture (new 'static 'texture-id :index #x64 :page #x4)) + (:birth-func 'birth-func-curve) + (:num 3.0) + (:y (meters 10)) + (:scale-x (meters 1)) + (:rot-z (degrees 90)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.26666668) (meters 0.033333335)) + (:vel-z (meters 0.033333335) (meters 0.033333335)) + (:accel-y (meters -0.0016666667)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(if #t + (set! *range-ssplash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 90.0 130.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-ssplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 127.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-ssplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 10.0 16.0 17.0 18.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 6.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *range-ssplash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 60.0 80.0 81.0 82.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 1.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-ssplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-ssplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 10.0 10.0 11.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 45.0 0.0 1.0 1.0)) + ) + ) + ) + +(if #t + (set! *curve-ssplash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 4.0 5.0 6.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +(define *part-spargus-ocean-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 1.5) :lifetime-offset (seconds 1)) + ) + +(set! (-> *part-id-table* 1460 init-specs 17 initial-valuef) + (the-as float *part-spargus-ocean-splash-curve-settings*) + ) + +(set! (-> *part-spargus-ocean-splash-curve-settings* color-start) *range-ssplash-color*) + +(set! (-> *part-spargus-ocean-splash-curve-settings* alpha-start) *range-ssplash-alpha*) + +(set! (-> *part-spargus-ocean-splash-curve-settings* scale-x-start) *range-ssplash-scale-x*) + +(set! (-> *part-spargus-ocean-splash-curve-settings* scale-y-start) *range-ssplash-scale-y*) + +(set! (-> *part-spargus-ocean-splash-curve-settings* r-scalar) #f) + +(set! (-> *part-spargus-ocean-splash-curve-settings* g-scalar) #f) + +(set! (-> *part-spargus-ocean-splash-curve-settings* b-scalar) #f) + +(set! (-> *part-spargus-ocean-splash-curve-settings* a-scalar) *curve-ssplash-alpha*) + +(set! (-> *part-spargus-ocean-splash-curve-settings* scale-x-scalar) *curve-ssplash-scale-x*) + +(set! (-> *part-spargus-ocean-splash-curve-settings* scale-y-scalar) *curve-ssplash-scale-y*) + +(defpart 1461 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 20.0) + (:x (meters -40) (meters 80)) + (:y (meters 15)) + (:scale-x (meters 8) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.2)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.064 -0.064) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 6.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 glow)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x407800)) + (:func 'check-drop-group-center) + (:conerot-z (degrees 0) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-spargus-lighthouse + :id 388 + :duration (seconds 166.827) + :flags (sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1464 :flags (sp3 sp6) :binding 1462) + (sp-item 1462 :flags (sp2 sp3 sp6) :binding 1463) + (sp-item 1463 :flags (sp2 sp5 sp6) :hour-mask #b111111111111000000) + ) + ) + +(defpart 1464 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 5)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags ()) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees 0)) + ) + ) + +(defpart 1462 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:z (meters 20)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:omega (degrees 0)) + (:vel-x (meters 0.0053333333)) + (:timer (seconds -0.005)) + (:flags (ready-to-launch)) + ) + ) + +(defpart 1463 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 100)) + (:rot-x (degrees 112.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 255.0) + (:omega (degrees 45011.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch use-global-acc)) + (:userdata 409600.0) + ) + ) diff --git a/goal_src/jakx/levels/temple/temple-part.gc b/goal_src/jakx/levels/temple/temple-part.gc index 7694139c9f..a7f62e11bd 100644 --- a/goal_src/jakx/levels/temple/temple-part.gc +++ b/goal_src/jakx/levels/temple/temple-part.gc @@ -7,3 +7,684 @@ ;; DECOMP BEGINS +(defpartgroup group-temple-lamp-light + :id 443 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 30) + :parts ((sp-item 1465 :flags (sp5 sp6))) + ) + +(defpart 1465 + :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x4)) + (:num 1.0) + (:scale-x (meters 10) (meters 1)) + (:rot-x (degrees 11.25)) + (:scale-y (meters 20) (meters 1)) + (:r 10.0) + (:g 80.0) + (:b 255.0) + (:a 100.0 5.0) + (:omega (degrees 18011.25)) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 use-global-acc)) + (:userdata 20480.0) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-temple-waterfalls + :id 444 + :flags (sp0 sp4) + :bounds (static-bspherem 0 -40 0 300) + :parts ((sp-item 1466 :falloff-to (meters 400) :flags (sp6)) (sp-item 1467 :falloff-to (meters 600) :flags (sp6))) + ) + +(defpart 1466 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 0.8) + (:x (meters -8) (meters 16)) + (:y (meters 3)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 60.0 100.0) + (:g 60.0 100.0) + (:b 60.0 100.0) + (:a 0.0) + (:omega (degrees 0.045)) + (:vel-z (meters 0.05) (meters 0.016666668)) + (:accel-y (meters -0.004) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 1.667)) + (:flags (sp-cpuinfo-flag-3 aux-list left-multiply-quat right-multiply-quat)) + (:func 'sparticle-motion-blur) + (:next-time (seconds 0.335) (seconds 0.08)) + (:next-launcher 1468) + (:conerot-y (degrees 0) (degrees 1)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1468 + :init-specs ((:r 10.0 200.0) + (:g 10.0 200.0) + (:b 10.0 200.0) + (:a 128.0) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 1469) + ) + ) + +(defpart 1469 + :init-specs ((:r 0.0) (:g 0.0) (:b 0.0) (:a 0.0) (:next-time (seconds 0.035) (seconds 0.33)) (:next-launcher 1468)) + ) + +(defpart 1467 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 3.0) + (:x (meters -8) (meters 16)) + (:y (meters 2)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 4) (meters 1)) + (:r 120.0 50.0) + (:g 255.0) + (:b :copy r) + (:a 30.0 30.0) + (:vel-z (meters 0.083333336) (meters 0.016666668)) + (:scalevel-x (meters 0.016666668) (meters 0.06666667)) + (:scalevel-y (meters 0.0033333334) (meters 0.0033333334)) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 1.335)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x408000 #x400f00 #x406400)) + (:func 'sparticle-2d-spline-align-instant) + (:next-time (seconds 0.085)) + (:next-launcher 1470) + (:conerot-y (degrees 0) (degrees 1)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1470 + :init-specs ((:accel-y (meters -0.008333334) (meters -0.0033333334)) (:friction 0.97)) + ) + +(defpartgroup group-temple-waterfalls-splash + :id 445 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1471 :falloff-to (meters 400) :flags (sp6))) + ) + +(defpart 1471 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 4.0) + (:x (meters 0) (meters 20)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 120.0 50.0) + (:g 140.0 30.0) + (:b :copy r) + (:a 20.0 20.0) + (:vel-y (meters 0.033333335) (meters 0.1)) + (:scalevel-x (meters 0.033333335) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.006666667) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 0.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1472 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:x (meters 0) (meters 6)) + (:scale-x (meters 20) (meters 4)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 30.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:scalevel-x (meters 0.06666667) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334 -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-temple-wavesplash + :id 446 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1473 :flags (sp6))) + ) + +(defpart 1473 + :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x4)) + (:num 1.0) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.01)) + (:timer (seconds 2)) + (:flags ()) + (:conerot-x (degrees -45) (degrees 90)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-temple-lavasplash + :id 447 + :flags (sp0 sp4) + :bounds (static-bspherem 0 30 0 60) + :parts ((sp-item 1474 :falloff-to (meters 1000) :flags (sp6) :period (seconds 2) :length (seconds 0.167)) + (sp-item 1475 :falloff-to (meters 1000) :flags (sp6) :period (seconds 2) :length (seconds 0.167)) + (sp-item 1476 :falloff-to (meters 1000) :flags (sp6) :period (seconds 2) :length (seconds 0.167)) + ) + ) + +(defpart 1474 + :init-specs ((:texture (new 'static 'texture-id :index #xc1 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0 5.0) + (:x (meters 0) (meters 10)) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 20.0 60.0) + (:b 0.0) + (:a 127.0 128.0) + (:vel-y (meters 0.1) (meters 0.2)) + (:scalevel-x (meters -0.00033333333) (meters 0.00066666666)) + (:rotvel-z (degrees -2) (degrees 4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0026666666) (meters -0.00066666666)) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x40c100 #x40c200 #x40c300)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 6.0000005)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1475 + :init-specs ((:texture (new 'static 'texture-id :index #xc1 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0 5.0) + (:x (meters -30) (meters 60)) + (:z (meters 0) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 20.0 60.0) + (:b 0.0) + (:a 127.0 128.0) + (:vel-y (meters 0.033333335) (meters 0.1)) + (:scalevel-x (meters -0.00033333333) (meters 0.00066666666)) + (:rotvel-z (degrees -2) (degrees 4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0026666666) (meters -0.00066666666)) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x40c100 #x40c200 #x40c300)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 6.0000005)) + (:conerot-z (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1476 + :init-specs ((:texture (new 'static 'texture-id :index #xc1 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0 1.0) + (:x (meters -30) (meters 60)) + (:z (meters 0) (meters 5)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 20.0 60.0) + (:b 0.0) + (:a 127.0 128.0) + (:vel-y (meters 0.06666667) (meters 0.13333334)) + (:scalevel-x (meters -0.00033333333) (meters 0.00066666666)) + (:rotvel-z (degrees -2) (degrees 4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0026666666) (meters -0.00066666666)) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x40c100 #x40c200 #x40c300)) + (:func 'check-drop-group-center) + (:conerot-x (degrees 0) (degrees 6.0000005)) + (:conerot-z (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)) + ) + ) + +(defpartgroup group-temple-lavafalls + :id 448 + :flags (sp0 sp4) + :bounds (static-bspherem 0 -60 0 400) + :parts ((sp-item 1477 :falloff-to (meters 1000) :flags (sp6)) (sp-item 1478 :falloff-to (meters 600) :flags (sp6))) + ) + +(defpart 1477 + :init-specs ((:texture (new 'static 'texture-id :index #xc3 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 2.0) + (:x (meters -5) (meters 10)) + (:y (meters 3)) + (:scale-x (meters 6) (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 30.0 30.0) + (:b 0.0) + (:a 128.0) + (:vel-z (meters 0.05)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-g -0.015384615) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1.335)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x40c200 #x40c300 #x408800)) + (:next-time (seconds 0.085)) + (:next-launcher 1479) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1479 + :init-specs ((:scalevel-x (meters 0.06666667)) + (:scalevel-y (meters 0.033333335)) + (:accel-y (meters -0.006666667) (meters -0.0033333334)) + ) + ) + +(defpart 1478 + :init-specs ((:texture (new 'static 'texture-id :index #xc2 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters -5) (meters 10)) + (:y (meters 4)) + (:z (meters 4)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 50.0) + (:g 200.0) + (:b 200.0) + (:a 127.0 128.0) + (:vel-z (meters 0.05)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1.335)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-4 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x40c200 #x40c300)) + (:next-time (seconds 0.085)) + (:next-launcher 1480) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1480 + :init-specs ((:accel-y (meters -0.006666667) (meters -0.0033333334))) + ) + +(defpartgroup group-temple-lavafalls-cheap + :id 449 + :flags (sp0 sp4) + :bounds (static-bspherem 0 -60 0 200) + :parts ((sp-item 1481 :falloff-to (meters 1000) :flags (sp6)) (sp-item 1482 :falloff-to (meters 300) :flags (sp6))) + ) + +(defpart 1481 + :init-specs ((:texture (new 'static 'texture-id :index #xc3 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters -5) (meters 10)) + (:y (meters 3)) + (:scale-x (meters 6) (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 30.0 30.0) + (:b 0.0) + (:a 128.0) + (:vel-z (meters 0.05)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-g -0.015384615) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1.335)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x40c200 #x40c300 #x408800)) + (:next-time (seconds 0.085)) + (:next-launcher 1483) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1483 + :init-specs ((:scalevel-x (meters 0.06666667)) + (:scalevel-y (meters 0.033333335)) + (:accel-y (meters -0.006666667) (meters -0.0033333334)) + ) + ) + +(defpart 1482 + :init-specs ((:texture (new 'static 'texture-id :index #xc2 :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0) + (:x (meters -5) (meters 10)) + (:y (meters 4)) + (:z (meters 4)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 50.0) + (:g 200.0) + (:b 200.0) + (:a 127.0 128.0) + (:vel-z (meters 0.05)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1.335)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-4 left-multiply-quat)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x40c200 #x40c300)) + (:next-time (seconds 0.085)) + (:next-launcher 1484) + (:conerot-y (degrees -5) (degrees 10)) + (:rotate-y (degrees 0)) + ) + ) + +(defpart 1484 + :init-specs ((:accel-y (meters -0.006666667) (meters -0.0033333334))) + ) + +(defpartgroup group-temple-lavaburst + :id 450 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1485 :falloff-to (meters 600) :flags (sp6))) + ) + +(defpart 1485 + :init-specs ((:texture (new 'static 'texture-id :index #x63 :page #x4)) + (:num 5.0) + (:x (meters 5) (meters 30)) + (:scale-x (meters 10) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 30.0 30.0) + (:b 0.0) + (:a 127.0 128.0) + (:vel-y (meters 0.06666667) (meters 0.13333334)) + (:scalevel-x (meters 0.033333335) (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.006666667) (meters -0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)) + (:conerot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0) (degrees 180)) + ) + ) + +(defpart 1486 + :init-specs ((:texture (new 'static 'texture-id :index #x5d :page #x4)) + (:num 0.2) + (:x (meters 0) (meters 6)) + (:y (meters 0.5)) + (:scale-x (meters 40) (meters 4)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 40.0 80.0) + (:b 0.0) + (:a 127.0 128.0) + (:scalevel-x (meters 0.06666667) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.2125 -0.2125) + (:timer (seconds 4)) + (:flags (sp-cpuinfo-flag-2)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-temple-lava-firebelch + :id 451 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1487 :falloff-to (meters 600) :period (seconds 3) :length (seconds 0.335))) + ) + +(defpart 1487 + :init-specs ((:texture (new 'static 'texture-id :index #xbb :page #x4)) + (:birth-func 'birth-func-texture-group) + (:num 1.0 1.0) + (:z (meters 10)) + (:scale-x (meters 10) (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 155.0) + (:g 80.0 30.0) + (:b 0.0 50.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.033333335)) + (:scalevel-x (meters -0.016666668) (meters -0.016666668)) + (:rotvel-z (degrees -1) (degrees 2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668 -0.42666668) + (:accel-y (meters 0.0016666667) (meters 0.0033333334)) + (:friction 0.99 0.01) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x401100 #x40bb00 #x400f00)) + (:conerot-x (degrees -40)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpartgroup group-temple-lava-heathaze + :id 452 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1488 :falloff-to (meters 1000) :flags (sp6))) + ) + +(defpart 1488 + :init-specs ((:num 0.2) + (:x (meters 20)) + (:y (meters 2) (meters 6)) + (:rot-x 8) + (:r 81920.0) + (:g 40960.0) + (:b 40960.0) + (:vel-y (meters 0.033333335)) + (:fade-b 68.26667) + (:accel-y (meters 0.0033333334)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (distort)) + (:next-time (seconds 0.5)) + (:next-launcher 1489) + (:conerot-x (degrees 0) (degrees 20)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +(defpart 1489 + :init-specs ((:fade-b -68.26667)) + ) + +(defpartgroup group-temple-caustic + :id 453 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 20) + :parts ((sp-item 1490 :flags (is-3d sp6)) (sp-item 1491 :flags (is-3d sp6))) + ) + +(defpart 1490 + :init-specs ((:texture (new 'static 'texture-id :index #xc0 :page #x4)) + (:num 0.01) + (:x (meters -0.5)) + (:y (meters -1)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 20)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:vel-z (meters -0.0033333334) (meters -0.01)) + (:scalevel-x (meters 0) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.033333335) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 1492) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 90)) + ) + ) + +(defpart 1492 + :init-specs ((:fade-a 0.2) (:next-time (seconds 0.167)) (:next-launcher 1493)) + ) + +(defpart 1493 + :init-specs ((:fade-a -0.1) (:next-time (seconds 0.335)) (:next-launcher 1494)) + ) + +(defpart 1494 + :init-specs ((:fade-a 0.1) (:next-time (seconds 0.335)) (:next-launcher 1495)) + ) + +(defpart 1495 + :init-specs ((:fade-a -0.2) (:next-time (seconds 0.167)) (:next-launcher 1496)) + ) + +(defpart 1496 + :init-specs ((:fade-a 0.1) (:next-time (seconds 0.335)) (:next-launcher 1497)) + ) + +(defpart 1497 + :init-specs ((:fade-a -0.2) (:next-time (seconds 0.167)) (:next-launcher 1498)) + ) + +(defpart 1491 + :init-specs ((:texture (new 'static 'texture-id :index #xc0 :page #x4)) + (:num 0.01) + (:x (meters -0.5)) + (:y (meters 0) (meters 10)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 20)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 180.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:vel-z (meters 0.01) (meters 0.01)) + (:scalevel-x (meters 0) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.06666667) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow left-multiply-quat right-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 1498) + (:rotate-x (degrees 0)) + (:rotate-y (degrees 90)) + ) + ) + +(defpart 1498 + :init-specs ((:fade-a -0.016666668 -0.016666668)) + ) + +(defpartgroup group-temple-lightcone + :id 454 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 80) + :parts ((sp-item 1499 :flags (is-3d sp5 sp6)) (sp-item 1500 :flags (is-3d sp5 sp6))) + ) + +(defpart 1499 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters -100)) + (:y (meters 0)) + (:z (meters 0)) + (:scale-x (meters 320)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 80)) + (:r 200.0) + (:g 200.0) + (:b 200.0) + (:a 30.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:rotate-x (degrees 45)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees -90)) + ) + ) + +(defpart 1500 + :init-specs ((:texture (new 'static 'texture-id :index #x87 :page #x4)) + (:num 1.0) + (:x (meters -100)) + (:y (meters 0)) + (:z (meters 0)) + (:scale-x (meters 320)) + (:rot-x (degrees 0)) + (:rot-y (degrees 0)) + (:rot-z (degrees 0)) + (:scale-y (meters 80)) + (:r 200.0) + (:g 200.0) + (:b 200.0) + (:a 30.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:rotate-x (degrees -45)) + (:rotate-y (degrees 0)) + (:rotate-z (degrees -90)) + ) + ) diff --git a/goal_src/jakx/levels/title/credits-h.gc b/goal_src/jakx/levels/title/credits-h.gc index 14a5046b17..3f55397982 100644 --- a/goal_src/jakx/levels/title/credits-h.gc +++ b/goal_src/jakx/levels/title/credits-h.gc @@ -7,3 +7,489 @@ ;; DECOMP BEGINS +(define *credits-ids* (new 'static 'boxed-array :type text-id + (text-id text-id-531) + (text-id text-id-532) + (text-id text-id-546) + (text-id text-id-538) + (text-id text-id-535) + (text-id text-id-536) + (text-id text-id-537) + (text-id text-id-539) + (text-id text-id-3938) + (text-id text-id-541) + (text-id text-id-542) + (text-id text-id-544) + (text-id text-id-545) + (text-id text-id-551) + (text-id text-id-554) + (text-id text-id-555) + (text-id text-id-556) + (text-id text-id-557) + (text-id text-id-3959) + (text-id text-id-560) + (text-id text-id-561) + (text-id text-id-562) + (text-id text-id-3940) + (text-id text-id-565) + (text-id text-id-3958) + (text-id text-id-569) + (text-id text-id-570) + (text-id text-id-571) + (text-id text-id-572) + (text-id text-id-564) + (text-id text-id-575) + (text-id text-id-579) + (text-id text-id-3957) + (text-id text-id-3956) + (text-id text-id-3955) + (text-id text-id-3954) + (text-id text-id-3952) + (text-id text-id-3953) + (text-id text-id-3951) + (text-id text-id-3950) + (text-id text-id-3949) + (text-id text-id-3948) + (text-id text-id-3947) + (text-id text-id-3946) + (text-id text-id-3945) + (text-id text-id-3944) + (text-id text-id-3943) + (text-id text-id-3942) + (text-id text-id-3903) + (text-id text-id-3904) + (text-id text-id-677) + (text-id text-id-548) + (text-id text-id-550) + (text-id text-id-3939) + (text-id text-id-3936) + (text-id text-id-3937) + (text-id text-id-3935) + (text-id text-id-3933) + (text-id text-id-3934) + (text-id text-id-3932) + (text-id text-id-3931) + (text-id text-id-3930) + (text-id text-id-3929) + (text-id text-id-3928) + (text-id text-id-3926) + (text-id text-id-3927) + (text-id text-id-3924) + (text-id text-id-3925) + (text-id text-id-3923) + (text-id text-id-3922) + (text-id text-id-3921) + (text-id text-id-3920) + (text-id text-id-3919) + (text-id text-id-3918) + (text-id text-id-3917) + (text-id text-id-3916) + (text-id text-id-3914) + (text-id text-id-3915) + (text-id text-id-3913) + (text-id text-id-3912) + (text-id text-id-3911) + (text-id text-id-3910) + (text-id text-id-3905) + (text-id text-id-3909) + (text-id text-id-574) + (text-id text-id-3908) + (text-id text-id-3907) + (text-id text-id-3906) + (text-id text-id-3963) + (text-id text-id-4241) + (text-id text-id-3964) + (text-id text-id-3962) + (text-id text-id-3965) + (text-id text-id-3966) + (text-id text-id-4240) + (text-id text-id-3968) + (text-id text-id-3969) + (text-id text-id-4883) + (text-id text-id-3971) + (text-id text-id-3972) + (text-id text-id-3973) + (text-id text-id-533) + (text-id text-id-534) + (text-id text-id-3974) + (text-id text-id-3975) + (text-id text-id-3976) + (text-id text-id-996) + (text-id text-id-997) + (text-id text-id-586) + (text-id text-id-4235) + (text-id text-id-588) + (text-id text-id-4236) + (text-id text-id-591) + (text-id text-id-590) + (text-id text-id-4237) + (text-id text-id-592) + (text-id text-id-594) + (text-id text-id-3977) + (text-id text-id-3978) + (text-id text-id-598) + (text-id text-id-3980) + (text-id text-id-3981) + (text-id text-id-3982) + (text-id text-id-3983) + (text-id text-id-3984) + (text-id text-id-3985) + (text-id text-id-3986) + (text-id text-id-599) + (text-id text-id-3987) + (text-id text-id-601) + (text-id text-id-4884) + (text-id text-id-606) + (text-id text-id-3989) + (text-id text-id-3990) + (text-id text-id-3991) + (text-id text-id-609) + (text-id text-id-610) + (text-id text-id-611) + (text-id text-id-612) + (text-id text-id-613) + (text-id text-id-614) + (text-id text-id-3992) + (text-id text-id-3993) + (text-id text-id-3994) + (text-id text-id-3995) + (text-id text-id-3996) + (text-id text-id-3997) + (text-id text-id-621) + (text-id text-id-622) + (text-id text-id-3998) + (text-id text-id-3999) + (text-id text-id-4000) + (text-id text-id-4001) + (text-id text-id-629) + (text-id text-id-630) + (text-id text-id-623) + (text-id text-id-624) + (text-id text-id-641) + (text-id text-id-642) + (text-id text-id-4002) + (text-id text-id-4003) + (text-id text-id-4004) + (text-id text-id-4005) + (text-id text-id-639) + (text-id text-id-640) + (text-id text-id-4006) + (text-id text-id-4007) + (text-id text-id-4008) + (text-id text-id-4009) + (text-id text-id-4010) + (text-id text-id-4011) + (text-id text-id-4012) + (text-id text-id-4013) + (text-id text-id-4035) + (text-id text-id-4036) + (text-id text-id-4014) + (text-id text-id-4037) + (text-id text-id-4016) + (text-id text-id-4259) + (text-id text-id-4260) + (text-id text-id-4261) + (text-id text-id-4262) + (text-id text-id-4263) + (text-id text-id-4264) + (text-id text-id-4265) + (text-id text-id-4266) + (text-id text-id-4267) + (text-id text-id-4268) + (text-id text-id-4880) + (text-id text-id-4631) + (text-id text-id-4886) + (text-id text-id-4887) + (text-id text-id-4888) + (text-id text-id-4889) + (text-id text-id-4885) + (text-id text-id-4874) + (text-id text-id-4634) + (text-id text-id-4635) + (text-id text-id-4636) + (text-id text-id-4940) + (text-id text-id-4941) + (text-id text-id-4942) + (text-id text-id-680) + (text-id text-id-681) + (text-id text-id-682) + (text-id text-id-683) + (text-id text-id-684) + (text-id text-id-686) + (text-id text-id-687) + (text-id text-id-688) + (text-id text-id-689) + (text-id text-id-690) + (text-id text-id-4072) + (text-id text-id-4071) + (text-id text-id-4070) + (text-id text-id-4069) + (text-id text-id-4068) + (text-id text-id-4067) + (text-id text-id-4066) + (text-id text-id-4065) + (text-id text-id-4064) + (text-id text-id-4063) + (text-id text-id-4062) + (text-id text-id-4060) + (text-id text-id-4061) + (text-id text-id-4059) + (text-id text-id-4058) + (text-id text-id-708) + (text-id text-id-4057) + (text-id text-id-4055) + (text-id text-id-4056) + (text-id text-id-713) + (text-id text-id-712) + (text-id text-id-4891) + (text-id text-id-4892) + (text-id text-id-4893) + (text-id text-id-725) + (text-id text-id-4054) + (text-id text-id-727) + (text-id text-id-4051) + (text-id text-id-4052) + (text-id text-id-4053) + (text-id text-id-4050) + (text-id text-id-4049) + (text-id text-id-4047) + (text-id text-id-4048) + (text-id text-id-4046) + (text-id text-id-4045) + (text-id text-id-4044) + (text-id text-id-4043) + (text-id text-id-4912) + (text-id text-id-4040) + (text-id text-id-4041) + (text-id text-id-749) + (text-id text-id-4039) + (text-id text-id-4073) + (text-id text-id-4074) + (text-id text-id-4082) + (text-id text-id-4081) + (text-id text-id-4075) + (text-id text-id-4076) + (text-id text-id-4077) + (text-id text-id-4078) + (text-id text-id-4079) + (text-id text-id-4080) + (text-id text-id-4083) + (text-id text-id-4084) + (text-id text-id-734) + (text-id text-id-753) + (text-id text-id-4107) + (text-id text-id-4108) + (text-id text-id-4106) + (text-id text-id-4104) + (text-id text-id-4105) + (text-id text-id-4102) + (text-id text-id-4101) + (text-id text-id-4100) + (text-id text-id-4099) + (text-id text-id-4098) + (text-id text-id-4097) + (text-id text-id-4096) + (text-id text-id-4095) + (text-id text-id-4094) + (text-id text-id-4932) + (text-id text-id-4933) + (text-id text-id-4934) + (text-id text-id-4935) + (text-id text-id-4937) + (text-id text-id-4938) + (text-id text-id-4939) + (text-id text-id-716) + (text-id text-id-717) + (text-id text-id-4882) + (text-id text-id-719) + (text-id text-id-4092) + (text-id text-id-4091) + (text-id text-id-4090) + (text-id text-id-4089) + (text-id text-id-4088) + (text-id text-id-715) + (text-id text-id-4087) + (text-id text-id-4086) + (text-id text-id-4085) + (text-id text-id-4109) + (text-id text-id-4110) + (text-id text-id-4131) + (text-id text-id-4130) + (text-id text-id-4129) + (text-id text-id-4128) + (text-id text-id-4127) + (text-id text-id-4126) + (text-id text-id-4125) + (text-id text-id-4124) + (text-id text-id-4118) + (text-id text-id-4119) + (text-id text-id-4120) + (text-id text-id-4121) + (text-id text-id-4122) + (text-id text-id-4123) + (text-id text-id-4117) + (text-id text-id-4116) + (text-id text-id-4114) + (text-id text-id-4115) + (text-id text-id-4112) + (text-id text-id-4113) + (text-id text-id-4132) + (text-id text-id-4147) + (text-id text-id-4145) + (text-id text-id-4146) + (text-id text-id-4143) + (text-id text-id-4144) + (text-id text-id-4890) + (text-id text-id-696) + (text-id text-id-4141) + (text-id text-id-4138) + (text-id text-id-4139) + (text-id text-id-4140) + (text-id text-id-4137) + (text-id text-id-4136) + (text-id text-id-4135) + (text-id text-id-4134) + (text-id text-id-4133) + (text-id text-id-698) + (text-id text-id-699) + (text-id text-id-700) + (text-id text-id-1012) + (text-id text-id-702) + (text-id text-id-4148) + (text-id text-id-704) + (text-id text-id-4149) + (text-id text-id-4150) + (text-id text-id-4151) + (text-id text-id-4152) + (text-id text-id-4153) + (text-id text-id-4154) + (text-id text-id-4155) + (text-id text-id-4156) + (text-id text-id-706) + (text-id text-id-4157) + (text-id text-id-4158) + (text-id text-id-4159) + (text-id text-id-4160) + (text-id text-id-4161) + (text-id text-id-4162) + (text-id text-id-4163) + (text-id text-id-4164) + (text-id text-id-4165) + (text-id text-id-4166) + (text-id text-id-4167) + (text-id text-id-4894) + (text-id text-id-4169) + (text-id text-id-4170) + (text-id text-id-4171) + (text-id text-id-4172) + (text-id text-id-4173) + (text-id text-id-4175) + (text-id text-id-4176) + (text-id text-id-4927) + (text-id text-id-4928) + (text-id text-id-4929) + (text-id text-id-4930) + (text-id text-id-4931) + (text-id text-id-756) + (text-id text-id-757) + (text-id text-id-758) + (text-id text-id-759) + (text-id text-id-760) + (text-id text-id-761) + (text-id text-id-762) + (text-id text-id-763) + (text-id text-id-764) + (text-id text-id-765) + (text-id text-id-766) + (text-id text-id-767) + (text-id text-id-768) + (text-id text-id-769) + (text-id text-id-770) + (text-id text-id-771) + (text-id text-id-772) + (text-id text-id-773) + (text-id text-id-774) + (text-id text-id-775) + (text-id text-id-839) + (text-id text-id-840) + (text-id text-id-4177) + (text-id text-id-4178) + (text-id text-id-4179) + (text-id text-id-4180) + (text-id text-id-4182) + (text-id text-id-4181) + (text-id text-id-4183) + (text-id text-id-4184) + (text-id text-id-874) + (text-id text-id-4185) + (text-id text-id-4186) + (text-id text-id-4187) + (text-id text-id-4188) + (text-id text-id-849) + (text-id text-id-850) + (text-id text-id-4189) + (text-id text-id-854) + (text-id text-id-4190) + (text-id text-id-856) + (text-id text-id-4191) + (text-id text-id-4192) + (text-id text-id-4193) + (text-id text-id-4194) + (text-id text-id-4195) + (text-id text-id-4196) + (text-id text-id-864) + (text-id text-id-4197) + (text-id text-id-4198) + (text-id text-id-4199) + (text-id text-id-865) + (text-id text-id-4200) + (text-id text-id-4201) + (text-id text-id-863) + (text-id text-id-4202) + (text-id text-id-867) + (text-id text-id-866) + (text-id text-id-4203) + (text-id text-id-868) + (text-id text-id-869) + (text-id text-id-870) + (text-id text-id-4204) + (text-id text-id-4205) + (text-id text-id-4206) + (text-id text-id-4207) + (text-id text-id-4208) + (text-id text-id-4209) + (text-id text-id-4210) + (text-id text-id-880) + (text-id text-id-879) + (text-id text-id-4211) + (text-id text-id-4212) + (text-id text-id-893) + (text-id text-id-896) + (text-id text-id-897) + (text-id text-id-4213) + (text-id text-id-4214) + (text-id text-id-4215) + (text-id text-id-4216) + (text-id text-id-4217) + (text-id text-id-4218) + (text-id text-id-4219) + (text-id text-id-4220) + (text-id text-id-4221) + (text-id text-id-4222) + (text-id text-id-889) + (text-id text-id-4223) + (text-id text-id-4224) + (text-id text-id-4895) + (text-id text-id-4226) + (text-id text-id-898) + (text-id text-id-899) + (text-id text-id-900) + (text-id text-id-4227) + (text-id text-id-901) + (text-id text-id-903) + (text-id text-id-904) + (text-id text-id-905) + (text-id text-id-4228) + (text-id text-id-529) + ) + ) diff --git a/scripts/gsrc/build-decomp-plan.py b/scripts/gsrc/build-decomp-plan.py index 1ecdaf3351..e89854ae71 100644 --- a/scripts/gsrc/build-decomp-plan.py +++ b/scripts/gsrc/build-decomp-plan.py @@ -13,9 +13,7 @@ with open("../../goal_src/jakx/build/all_objs.json") as f: plan = [] for file_info in target_build_order: file_name = file_info[0] - if file_name.endswith("-h") or ( - file_name in target_analysis and len(target_analysis[file_name]) > 0 - ): + if file_name.endswith("-part"): if file_name in target_analysis and len(target_analysis[file_name]) > 0: plan.append({"name": file_name, "matching": target_analysis[file_name]}) else: diff --git a/scripts/gsrc/update-files-from-decomp-plan.py b/scripts/gsrc/update-files-from-decomp-plan.py index 1457a30547..9cd56c3d0f 100644 --- a/scripts/gsrc/update-files-from-decomp-plan.py +++ b/scripts/gsrc/update-files-from-decomp-plan.py @@ -41,13 +41,15 @@ def copy_to_ref(name: str): shutil.copyfile(src, dst) -with open("./scripts/gsrc/decomp-plan.json", "r") as f: +with open("./scripts/gsrc/_decomp-plan.json", "r") as f: data = json.load(f) for entry in data: name = entry.get("name") done = entry.get("done") - + if entry.get("skip"): + print(f"skipping {name}") + continue if done and name: run_decomp(name) copy_to_ref(name) diff --git a/temp.py b/temp.py new file mode 100644 index 0000000000..a0184c22aa --- /dev/null +++ b/temp.py @@ -0,0 +1,2 @@ +for i in range(0, 1579): + print(f"(text-id-{i} {i})") diff --git a/test/decompiler/reference/jakx/engine/ai/traffic-h_REF.gc b/test/decompiler/reference/jakx/engine/ai/traffic-h_REF.gc new file mode 100644 index 0000000000..2ef1ba26bb --- /dev/null +++ b/test/decompiler/reference/jakx/engine/ai/traffic-h_REF.gc @@ -0,0 +1,369 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *vehicle-manager*, type vehicle-manager +(define *vehicle-manager* (the-as vehicle-manager #f)) + +;; definition (debug) for function vehicle-type->string +(defun-debug vehicle-type->string ((arg0 traffic-vehicle-type)) + (case arg0 + (((traffic-vehicle-type v-mongoose)) + "v-mongoose" + ) + (((traffic-vehicle-type v-wombat)) + "v-wombat" + ) + (((traffic-vehicle-type v-snake)) + "v-snake" + ) + (((traffic-vehicle-type v-bobcat)) + "v-bobcat" + ) + (((traffic-vehicle-type v-panther)) + "v-panther" + ) + (((traffic-vehicle-type v-dart)) + "v-dart" + ) + (((traffic-vehicle-type v-daxtermobile)) + "v-daxtermobile" + ) + (((traffic-vehicle-type v-cheetah)) + "v-cheetah" + ) + (((traffic-vehicle-type test-bike)) + "test-bike" + ) + (((traffic-vehicle-type v-bear)) + "v-bear" + ) + (((traffic-vehicle-type v-falcon)) + "v-falcon" + ) + (((traffic-vehicle-type v-gila)) + "v-gila" + ) + (((traffic-vehicle-type any)) + "any" + ) + (((traffic-vehicle-type v-drone)) + "v-drone" + ) + (((traffic-vehicle-type v-possum)) + "v-possum" + ) + (((traffic-vehicle-type test-car)) + "test-car" + ) + (((traffic-vehicle-type v-leopard)) + "v-leopard" + ) + (((traffic-vehicle-type none)) + "none" + ) + (((traffic-vehicle-type v-wolf)) + "v-wolf" + ) + (((traffic-vehicle-type v-tiger)) + "v-tiger" + ) + (((traffic-vehicle-type v-cougar)) + "v-cougar" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition (debug) for function driver-type->string +(defun-debug driver-type->string ((arg0 driver-type)) + (case arg0 + (((driver-type d-taryn)) + "d-taryn" + ) + (((driver-type d-ratchet)) + "d-ratchet" + ) + (((driver-type d-klever)) + "d-klever" + ) + (((driver-type d-jakb)) + "d-jakb" + ) + (((driver-type d-pecker)) + "d-pecker" + ) + (((driver-type d-razer)) + "d-razer" + ) + (((driver-type d-thug-b)) + "d-thug-b" + ) + (((driver-type d-sig)) + "d-sig" + ) + (((driver-type d-daxter)) + "d-daxter" + ) + (((driver-type d-torn)) + "d-torn" + ) + (((driver-type d-kiera)) + "d-kiera" + ) + (((driver-type d-osmo)) + "d-osmo" + ) + (((driver-type d-thug-c)) + "d-thug-c" + ) + (((driver-type d-kaeden)) + "d-kaeden" + ) + (((driver-type d-ashelin)) + "d-ashelin" + ) + (((driver-type d-ur-86)) + "d-ur-86" + ) + (((driver-type d-jak)) + "d-jak" + ) + (((driver-type none)) + "none" + ) + (((driver-type d-jaka)) + "d-jaka" + ) + (((driver-type d-jakc)) + "d-jakc" + ) + (((driver-type d-rayn)) + "d-rayn" + ) + (((driver-type d-thug-a)) + "d-thug-a" + ) + (((driver-type d-ximon)) + "d-ximon" + ) + (((driver-type d-gtblitz)) + "d-gtblitz" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition for function type-from-driver-type +(defun type-from-driver-type ((arg0 driver-type)) + (case arg0 + (((driver-type d-jak)) + driver-jak + ) + (((driver-type d-ashelin)) + driver-ashelin + ) + (((driver-type d-razer)) + driver-razer + ) + (((driver-type d-klever)) + driver-klever + ) + (((driver-type d-kiera)) + driver-kiera + ) + (((driver-type d-thug-a)) + driver-thug-a + ) + (((driver-type d-thug-b)) + driver-thug-b + ) + (((driver-type d-thug-c)) + driver-thug-c + ) + (((driver-type d-taryn)) + driver-taryn + ) + (((driver-type d-torn)) + driver-torn + ) + (((driver-type d-sig)) + driver-sig + ) + (((driver-type d-ur-86)) + driver-ur-86 + ) + (((driver-type d-kaeden)) + driver-kaeden + ) + (((driver-type d-rayn)) + driver-rayn + ) + (((driver-type d-ratchet)) + driver-ratchet + ) + (((driver-type d-jaka)) + driver-jaka + ) + (((driver-type d-jakb)) + driver-jakb + ) + (((driver-type d-jakc)) + driver-jakc + ) + (((driver-type d-daxter)) + driver-daxter + ) + (((driver-type d-gtblitz)) + driver-gtblitz + ) + (((driver-type d-pecker)) + driver-pecker + ) + (((driver-type d-ximon)) + driver-ximon + ) + (((driver-type d-osmo)) + driver-osmo + ) + (else + (the-as type #f) + ) + ) + ) + +;; definition for function level-from-driver-type +(defun level-from-driver-type ((arg0 driver-type)) + (case arg0 + (((driver-type d-jak)) + 'jaklev + ) + (((driver-type d-ashelin)) + 'ashlev + ) + (((driver-type d-razer)) + 'razlev + ) + (((driver-type d-klever)) + 'klelev + ) + (((driver-type d-kiera)) + 'kielev + ) + (((driver-type d-thug-a)) + 'thalev + ) + (((driver-type d-thug-b)) + 'thblev + ) + (((driver-type d-thug-c)) + 'thclev + ) + (((driver-type d-taryn)) + 'tarlev + ) + (((driver-type d-torn)) + 'torlev + ) + (((driver-type d-sig)) + 'siglev + ) + (((driver-type d-ur-86)) + 'ur8lev + ) + (((driver-type d-kaeden)) + 'kaelev + ) + (((driver-type d-rayn)) + 'raylev + ) + (((driver-type d-ratchet)) + 'ratlev + ) + (((driver-type d-jaka)) + 'jkalev + ) + (((driver-type d-jakb)) + 'jkblev + ) + (((driver-type d-jakc)) + 'jkclev + ) + (((driver-type d-daxter)) + 'daxlev + ) + (((driver-type d-gtblitz)) + 'gtblev + ) + (((driver-type d-pecker)) + 'peclev + ) + (((driver-type d-ximon)) + 'ximlev + ) + (((driver-type d-osmo)) + 'osmlev + ) + (else + #f + ) + ) + ) + +;; definition of type vehicle-spawn-params +(deftype vehicle-spawn-params (structure) + ((behavior uint64) + (nav-mesh basic) + (position vector :inline) + (rotation quaternion :inline) + (velocity vector :inline) + (handle uint64) + (handle-parent uint64) + (user-data uint32) + (entity basic) + (flags uint32) + (player-id int8) + (level-slot int8) + (driver-type driver-type) + (driver-slot int8) + (impact-callback basic) + (proc basic) + ) + ) + +;; definition for method 3 of type vehicle-spawn-params +(defmethod inspect ((this vehicle-spawn-params)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'vehicle-spawn-params) + (format #t "~1Tbehavior: ~D~%" (-> this behavior)) + (format #t "~1Tnav-mesh: ~A~%" (-> this nav-mesh)) + (format #t "~1Tposition: #~%" (-> this position)) + (format #t "~1Trotation: #~%" (-> this rotation)) + (format #t "~1Tvelocity: #~%" (-> this velocity)) + (format #t "~1Thandle: ~D~%" (-> this handle)) + (format #t "~1Thandle-parent: ~D~%" (-> this handle-parent)) + (format #t "~1Tuser-data: ~D~%" (-> this user-data)) + (format #t "~1Tentity: ~A~%" (-> this entity)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Tplayer-id: ~D~%" (-> this player-id)) + (format #t "~1Tlevel-slot: ~D~%" (-> this level-slot)) + (format #t "~1Tdriver-type: ~D~%" (-> this driver-type)) + (format #t "~1Tdriver-slot: ~D~%" (-> this driver-slot)) + (format #t "~1Timpact-callback: ~A~%" (-> this impact-callback)) + (format #t "~1Tproc: ~A~%" (-> this proc)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/collide/pat-h_REF.gc b/test/decompiler/reference/jakx/engine/collide/pat-h_REF.gc index b42de1a782..140bc6957e 100644 --- a/test/decompiler/reference/jakx/engine/collide/pat-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/collide/pat-h_REF.gc @@ -312,3 +312,7 @@ ;; failed to figure out what this is: 0 + + + + diff --git a/test/decompiler/reference/jakx/engine/common-obs/curves_REF.gc b/test/decompiler/reference/jakx/engine/common-obs/curves_REF.gc new file mode 100644 index 0000000000..615cdc031a --- /dev/null +++ b/test/decompiler/reference/jakx/engine/common-obs/curves_REF.gc @@ -0,0 +1,689 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type float-pair +(deftype float-pair (structure) + "Two floats. Specifies one point on a piecewise linear curve." + ((first float) + (second float) + (x float :overlay-at first) + (y float :overlay-at second) + ) + ) + +;; definition for method 3 of type float-pair +(defmethod inspect ((this float-pair)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'float-pair) + (format #t "~1Tfirst: ~f~%" (-> this first)) + (format #t "~1Tsecond: ~f~%" (-> this second)) + (format #t "~1Tx: ~f~%" (-> this first)) + (format #t "~1Ty: ~f~%" (-> this second)) + (label cfg-4) + this + ) + +;; definition of type float-pair-array +(deftype float-pair-array (inline-array-class) + "Array of points used to make a piecewise linear curve." + ((data float-pair :inline :dynamic) + ) + ) + +;; definition for method 3 of type float-pair-array +(defmethod inspect ((this float-pair-array)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tallocated-length: ~D~%" (-> this allocated-length)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +(set! (-> float-pair-array heap-base) (the-as uint 16)) + +;; definition of type curve2d +(deftype curve2d (basic) + "Interface for evaluating a 2d curve. +The input is a float (x-position) and the output is a float (y-position). +The curve is over (0, 1). Values outside of the range are either clamped +or wrapped depending on the loop-behavior flag." + () + (:methods + (evaluate (_type_ float loop-behavior) float) + ) + ) + +;; definition for method 3 of type curve2d +(defmethod inspect ((this curve2d)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (label cfg-4) + this + ) + +;; definition of type curve-color +(deftype curve-color (basic) + "Interface for evaluating a color curve. The input is a float, representing +progress through the curve, and the result is a floating point rgba color." + () + (:methods + (evaluate (_type_ float rgbaf loop-behavior) rgbaf) + ) + ) + +;; definition for method 3 of type curve-color +(defmethod inspect ((this curve-color)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (label cfg-4) + this + ) + +;; definition of type curve2d-piecewise +(deftype curve2d-piecewise (curve2d) + "Implementation of 2d-curve for a piecewise linear curve. +Not particularly efficient - each evaluation needs to check each point." + ((pts float-pair-array) + (default-loop-behavior uint64) + ) + (:methods + (allocate! (_type_ int symbol symbol) none) + (curve2d-piecewise-method-11 (_type_) none) + ) + ) + +;; definition for method 3 of type curve2d-piecewise +(defmethod inspect ((this curve2d-piecewise)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tpts: ~A~%" (-> this pts)) + (format #t "~1Tdefault-loop-behavior: ~D~%" (-> this default-loop-behavior)) + (label cfg-4) + this + ) + +;; definition of type curve2d-fast +(deftype curve2d-fast (curve2d) + "Implementation of 2d piecewise linear curve which tries to be faster. +While it is faster, it places the huge restriction that you can only have 4 points. +Note that the xs should be negative here." + ((xs vector :inline) + (ys vector :inline) + (one-over-x-deltas vector :inline) + ) + ) + +;; definition for method 3 of type curve2d-fast +(defmethod inspect ((this curve2d-fast)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Txs: #~%" (-> this xs)) + (format #t "~1Tys: #~%" (-> this ys)) + (format #t "~1Tone-over-x-deltas: #~%" (-> this one-over-x-deltas)) + (label cfg-4) + this + ) + +;; definition for function rgbaf-lerp! +(defun rgbaf-lerp! ((arg0 rgbaf) (arg1 rgbaf) (arg2 rgbaf) (arg3 float)) + "Lerp all four components of rgba." + (vector-lerp! arg0 arg1 arg2 arg3) + (set! (-> arg0 w) (lerp (-> arg1 w) (-> arg2 w) arg3)) + arg0 + ) + +;; definition of type curve-color-fast +(deftype curve-color-fast (curve-color) + "Implementation of color curve which tries to be faster. +While it is faster, it again has the restriction that you only +get 4 piecewise sections." + ((xs vector :inline) + (ys vector 4 :inline) + (one-over-x-deltas vector :inline) + ) + ) + +;; definition for method 3 of type curve-color-fast +(defmethod inspect ((this curve-color-fast)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Txs: #~%" (-> this xs)) + (format #t "~1Tys[4] @ #x~X~%" (-> this ys)) + (format #t "~1Tone-over-x-deltas: #~%" (-> this one-over-x-deltas)) + (label cfg-4) + this + ) + +;; definition of type color-pair +(deftype color-pair (structure) + "Single section of a piecewise linear color curve. +Unlike the fast version, this stores x values exactly like you'd expect." + ((first float) + (second rgbaf :inline) + (x float :overlay-at first) + (y rgbaf :inline :overlay-at second) + ) + ) + +;; definition for method 3 of type color-pair +(defmethod inspect ((this color-pair)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'color-pair) + (format #t "~1Tfirst: ~f~%" (-> this first)) + (format #t "~1Tsecond: #~%" (-> this second)) + (format #t "~1Tx: ~f~%" (-> this first)) + (format #t "~1Ty: #~%" (-> this second)) + (label cfg-4) + this + ) + +;; definition of type color-pair-array +(deftype color-pair-array (inline-array-class) + "Array of points for piecewise linear color curve." + ((data color-pair :inline :dynamic) + ) + ) + +;; definition for method 3 of type color-pair-array +(defmethod inspect ((this color-pair-array)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tallocated-length: ~D~%" (-> this allocated-length)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +(set! (-> color-pair-array heap-base) (the-as uint 32)) + +;; definition of type curve-color-piecewise +(deftype curve-color-piecewise (curve-color) + "Implementation of curve-color." + ((pts color-pair-array) + (default-loop-behavior uint64) + ) + (:methods + (allocate! (_type_ int symbol symbol) none) + ) + ) + +;; definition for method 3 of type curve-color-piecewise +(defmethod inspect ((this curve-color-piecewise)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tpts: ~A~%" (-> this pts)) + (format #t "~1Tdefault-loop-behavior: ~D~%" (-> this default-loop-behavior)) + (label cfg-4) + this + ) + +;; definition for method 10 of type curve2d-piecewise +;; WARN: Return type mismatch int vs none. +(defmethod allocate! ((this curve2d-piecewise) (arg0 int) (arg1 symbol) (arg2 symbol)) + "Allocate memory for points." + (set! (-> this pts) ((method-of-type float-pair-array new) arg1 float-pair-array arg0)) + (set! (-> this default-loop-behavior) (the-as uint (if arg2 + 0 + 1 + ) + ) + ) + 0 + (none) + ) + +;; definition for method 10 of type curve-color-piecewise +;; WARN: Return type mismatch int vs none. +(defmethod allocate! ((this curve-color-piecewise) (arg0 int) (arg1 symbol) (arg2 symbol)) + "Allocate memory for points." + (set! (-> this pts) ((method-of-type color-pair-array new) arg1 color-pair-array arg0)) + (set! (-> this default-loop-behavior) (the-as uint (if arg2 + 0 + 1 + ) + ) + ) + 0 + (none) + ) + +;; definition for method 9 of type curve-color-piecewise +;; INFO: Used lq/sq +(defmethod evaluate ((this curve-color-piecewise) (arg0 float) (arg1 rgbaf) (arg2 loop-behavior)) + (when (or (< 1.0 arg0) (< arg0 0.0)) + (if (= arg2 (loop-behavior use-default)) + (set! arg2 (the-as loop-behavior (-> this default-loop-behavior))) + ) + (let ((v1-8 (the-as uint arg2))) + (cond + ((zero? v1-8) + (set! arg0 (- arg0 (* (the float (the int (/ arg0 1.0))) 1.0))) + ) + ((= v1-8 1) + (set! arg0 (fmax 0.0 (fmin 1.0 arg0))) + ) + ) + ) + ) + (when (= arg0 0.0) + (set! (-> arg1 quad) (-> this pts data 0 second quad)) + (return arg1) + ) + (dotimes (s4-0 (-> this pts length)) + (when (>= (-> this pts data s4-0 first) arg0) + (let ((a3-4 (lerp-scale 0.0 1.0 arg0 (-> this pts data (+ s4-0 -1) first) (-> this pts data s4-0 first)))) + (return (rgbaf-lerp! + arg1 + (the-as rgbaf (+ (the-as uint (-> this pts data 0 second)) (* (+ s4-0 -1) 32))) + (the-as rgbaf (+ (the-as uint (-> this pts data 0 second)) (* s4-0 32))) + a3-4 + ) + ) + ) + ) + ) + (the-as rgbaf #f) + ) + +;; definition for method 9 of type curve2d-piecewise +(defmethod evaluate ((this curve2d-piecewise) (arg0 float) (arg1 loop-behavior)) + (when (or (< 1.0 arg0) (< arg0 0.0)) + (if (= arg1 (loop-behavior use-default)) + (set! arg1 (the-as loop-behavior (-> this default-loop-behavior))) + ) + (let ((v1-8 (the-as uint arg1))) + (cond + ((zero? v1-8) + (set! arg0 (- arg0 (* (the float (the int (/ arg0 1.0))) 1.0))) + ) + ((= v1-8 1) + (set! arg0 (fmax 0.0 (fmin 1.0 arg0))) + ) + ) + ) + ) + (if (= arg0 0.0) + (return (-> this pts data 0 second)) + ) + (dotimes (v1-18 (-> this pts length)) + (if (>= (-> this pts data v1-18 first) arg0) + (return (lerp-scale + (-> this pts data (+ v1-18 -1) second) + (-> this pts data v1-18 second) + arg0 + (-> this pts data (+ v1-18 -1) first) + (-> this pts data v1-18 first) + ) + ) + ) + ) + 0.0 + ) + +;; definition for function evaluate-curve-fast +;; WARN: Return type mismatch number vs float. +(defun evaluate-curve-fast ((arg0 curve2d-fast) (arg1 float)) + "Evaluate a curve2d-fast at the given value." + (local-vars (v0-0 number)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf24 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf27 :class vf) + (vf28 :class vf) + (vf29 :class vf) + ) + (init-vf0-vector) + (let ((a2-0 (new 'stack-no-clear 'vector)) + (v1-0 (new 'stack-no-clear 'vector)) + ) + (.mov vf27 arg1) + (.lvf vf24 (&-> arg0 xs quad)) + (.lvf vf25 (&-> arg0 ys quad)) + (.lvf vf26 (&-> arg0 one-over-x-deltas quad)) + (.min.w.vf vf27 vf27 vf0) + (.max.x.vf vf27 vf27 vf0) + (.add.x.vf vf28 vf24 vf27) + (.mul.w.vf acc vf25 vf0) + (.add.mul.vf vf29 vf28 vf26 acc) + (.svf (&-> a2-0 quad) vf28) + (.svf (&-> v1-0 quad) vf29) + (let ((a0-1 (-> a2-0 z)) + (a1-1 (-> a2-0 y)) + ) + (nop!) + (b! (>= (the-as int a0-1) 0) cfg-3 :delay (set! v0-0 (-> v1-0 z))) + (b! (>= (the-as int a1-1) 0) cfg-3 :delay (set! v0-0 (-> v1-0 y))) + ) + (set! v0-0 (-> v1-0 x)) + ) + (label cfg-3) + (the-as float v0-0) + ) + ) + +;; definition for method 9 of type curve2d-fast +;; WARN: Return type mismatch number vs float. +(defmethod evaluate ((this curve2d-fast) (arg0 float) (arg1 loop-behavior)) + (local-vars (v0-0 number)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf24 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf27 :class vf) + (vf28 :class vf) + (vf29 :class vf) + ) + (init-vf0-vector) + (let ((a1-1 (new 'stack-no-clear 'vector)) + (v1-0 (new 'stack-no-clear 'vector)) + ) + (let ((a2-1 arg0)) + (.mov vf27 a2-1) + ) + (.lvf vf24 (&-> this xs quad)) + (.lvf vf25 (&-> this ys quad)) + (.lvf vf26 (&-> this one-over-x-deltas quad)) + (.min.w.vf vf27 vf27 vf0) + (.max.x.vf vf27 vf27 vf0) + (.add.x.vf vf28 vf24 vf27) + (.mul.w.vf acc vf25 vf0) + (.add.mul.vf vf29 vf28 vf26 acc) + (.svf (&-> a1-1 quad) vf28) + (.svf (&-> v1-0 quad) vf29) + (let ((a0-1 (-> a1-1 z)) + (a1-2 (-> a1-1 y)) + ) + (nop!) + (b! (>= (the-as int a0-1) 0) cfg-3 :delay (set! v0-0 (-> v1-0 z))) + (b! (>= (the-as int a1-2) 0) cfg-3 :delay (set! v0-0 (-> v1-0 y))) + ) + (set! v0-0 (-> v1-0 x)) + ) + (label cfg-3) + (the-as float v0-0) + ) + ) + +;; definition for function evaluate-color-curve-fast +(defun evaluate-color-curve-fast ((arg0 curve-color-fast) (arg1 float) (arg2 rgbaf)) + "Evaluate a color-curve-fast at the given value." + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf23 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf28 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (.mov vf26 arg1) + (.lvf vf23 (&-> arg0 xs quad)) + (.lvf vf25 (&-> arg0 one-over-x-deltas quad)) + (.max.w.vf vf3 vf0 vf0) + (.mul.vf acc vf25 vf23) + (.add.mul.x.vf vf28 vf25 vf26 acc) + (.svf (&-> v1-0 quad) vf28) + (let ((a1-1 (-> v1-0 z)) + (v1-1 (-> v1-0 y)) + ) + (b! (>= (the-as int a1-1) 0) cfg-4 :delay (nop!)) + (b! (>= (the-as int v1-1) 0) cfg-3 :delay (nop!)) + ) + ) + (.lvf vf1 (&-> arg0 ys 0 quad)) + (.lvf vf2 (&-> arg0 ys 1 quad)) + (.sub.x.vf vf4 vf3 vf28) + (.mul.x.vf acc vf2 vf28) + (.add.mul.x.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> arg2 quad) vf5)) + (label cfg-3) + (.lvf vf1 (&-> arg0 ys 1 quad)) + (.lvf vf2 (&-> arg0 ys 2 quad)) + (.sub.y.vf vf4 vf3 vf28) + (.mul.y.vf acc vf2 vf28) + (.add.mul.y.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> arg2 quad) vf5)) + (label cfg-4) + (.lvf vf1 (&-> arg0 ys 2 quad)) + (.lvf vf2 (&-> arg0 ys 3 quad)) + (.sub.z.vf vf4 vf3 vf28) + (.mul.z.vf acc vf2 vf28) + (.add.mul.z.vf vf5 vf1 vf4 acc) + (.svf (&-> arg2 quad) vf5) + (label cfg-5) + arg2 + ) + ) + +;; definition for method 9 of type curve-color-fast +(defmethod evaluate ((this curve-color-fast) (arg0 float) (arg1 rgbaf) (arg2 loop-behavior)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf23 :class vf) + (vf25 :class vf) + (vf26 :class vf) + (vf28 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (let ((v1-0 this) + (f0-0 arg0) + (a0-1 arg1) + ) + (let ((a1-1 (new 'stack-no-clear 'rgbaf))) + (let ((a3-1 f0-0)) + (.mov vf26 a3-1) + ) + (.lvf vf23 (&-> v1-0 xs quad)) + (.lvf vf25 (&-> v1-0 one-over-x-deltas quad)) + (.max.w.vf vf3 vf0 vf0) + (.mul.vf acc vf25 vf23) + (.add.mul.x.vf vf28 vf25 vf26 acc) + (.svf (&-> a1-1 quad) vf28) + (let ((a3-2 (-> a1-1 z)) + (a1-2 (-> a1-1 y)) + ) + (b! (>= (the-as int a3-2) 0) cfg-4 :delay (nop!)) + (b! (>= (the-as int a1-2) 0) cfg-3 :delay (nop!)) + ) + ) + (.lvf vf1 (&-> v1-0 ys 0 quad)) + (.lvf vf2 (&-> v1-0 ys 1 quad)) + (.sub.x.vf vf4 vf3 vf28) + (.mul.x.vf acc vf2 vf28) + (.add.mul.x.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> a0-1 quad) vf5)) + (label cfg-3) + (.lvf vf1 (&-> v1-0 ys 1 quad)) + (.lvf vf2 (&-> v1-0 ys 2 quad)) + (.sub.y.vf vf4 vf3 vf28) + (.mul.y.vf acc vf2 vf28) + (.add.mul.y.vf vf5 vf1 vf4 acc) + (b! #t cfg-5 :delay (.svf (&-> a0-1 quad) vf5)) + (label cfg-4) + (.lvf vf1 (&-> v1-0 ys 2 quad)) + (.lvf vf2 (&-> v1-0 ys 3 quad)) + (.sub.z.vf vf4 vf3 vf28) + (.mul.z.vf acc vf2 vf28) + (.add.mul.z.vf vf5 vf1 vf4 acc) + (.svf (&-> a0-1 quad) vf5) + ) + (label cfg-5) + (set! (-> arg1 w) 1.0) + arg1 + ) + ) + +;; definition for function rgba<-rgbaf +(defun rgba<-rgbaf ((arg0 rgba) (arg1 rgbaf)) + "Convert rgbaf to rgba. Seems like the input rgba's value is not used in any way." + (copy-and-set-field + (copy-and-set-field + (copy-and-set-field + (copy-and-set-field arg0 r (the int (* 128.0 (-> arg1 x)))) + g + (the int (* 128.0 (-> arg1 y))) + ) + b + (the int (* 128.0 (-> arg1 z))) + ) + a + (the int (* 128.0 (-> arg1 w))) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-unity* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-linear-up* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-linear-down* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 1.0 2.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(when (or (zero? *curve-linear-up-hold*) (!= loading-level global)) + (set! *curve-linear-up-hold* (new 'loading-level 'curve2d-piecewise)) + (allocate! *curve-linear-up-hold* 2 'loading-level #f) + ) + +;; failed to figure out what this is: +(set! (-> *curve-linear-up-hold* pts data 0 first) 0.0) + +;; failed to figure out what this is: +(set! (-> *curve-linear-up-hold* pts data 0 second) 0.0) + +;; failed to figure out what this is: +(set! (-> *curve-linear-up-hold* pts data 1 first) 1.0) + +;; failed to figure out what this is: +(set! (-> *curve-linear-up-hold* pts data 1 second) 1.0) + +;; failed to figure out what this is: +(if #t + (set! *curve-linear-up-down* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.0 -2.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *trail-color-curve-white* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! particle-color-curve-white* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *trail-color-curve-red* (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -1.0 -2.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.3 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 1.25 1.0 1.0)) + ) + ) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/common-obs/particle-curves_REF.gc b/test/decompiler/reference/jakx/engine/common-obs/particle-curves_REF.gc new file mode 100644 index 0000000000..3d1e41f413 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/common-obs/particle-curves_REF.gc @@ -0,0 +1,197 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type particle-curve-settings +(deftype particle-curve-settings (structure) + ((color-start basic) + (alpha-start basic) + (scale-x-start basic) + (scale-y-start basic) + (r-scalar basic) + (g-scalar basic) + (b-scalar basic) + (a-scalar basic) + (scale-x-scalar basic) + (scale-y-scalar basic) + (lifetime-base time-frame) + (lifetime-offset time-frame) + (flags particle-curve-flags) + ) + ) + +;; definition for method 3 of type particle-curve-settings +(defmethod inspect ((this particle-curve-settings)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'particle-curve-settings) + (format #t "~1Tcolor-start: ~A~%" (-> this color-start)) + (format #t "~1Talpha-start: ~A~%" (-> this alpha-start)) + (format #t "~1Tscale-x-start: ~A~%" (-> this scale-x-start)) + (format #t "~1Tscale-y-start: ~A~%" (-> this scale-y-start)) + (format #t "~1Tr-scalar: ~A~%" (-> this r-scalar)) + (format #t "~1Tg-scalar: ~A~%" (-> this g-scalar)) + (format #t "~1Tb-scalar: ~A~%" (-> this b-scalar)) + (format #t "~1Ta-scalar: ~A~%" (-> this a-scalar)) + (format #t "~1Tscale-x-scalar: ~A~%" (-> this scale-x-scalar)) + (format #t "~1Tscale-y-scalar: ~A~%" (-> this scale-y-scalar)) + (format #t "~1Tlifetime-base: ~D~%" (-> this lifetime-base)) + (format #t "~1Tlifetime-offset: ~D~%" (-> this lifetime-offset)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (label cfg-4) + this + ) + +;; definition for function birth-func-curve +;; INFO: function output is handled by mips2c +(def-mips2c birth-func-curve (function int sparticle-cpuinfo sparticle-launchinfo none)) + +;; definition for function live-func-curve +;; INFO: function output is handled by mips2c +(def-mips2c live-func-curve (function sparticle-system sparticle-cpuinfo vector none)) + +;; failed to figure out what this is: +(defpart 45 + :init-specs ((:texture (common-white common)) + (:birth-func 'birth-func-curve) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.01)) + (:timer (seconds 16.667)) + (:flags ()) + (:userdata 0.0) + (:func 'live-func-curve) + (:conerot-x (degrees -30) (degrees 60)) + (:conerot-z (degrees -30) (degrees 60)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *alpha-fast* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.25 -0.5 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.75 0.5 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -1.0 -1.0 -1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *unity-fast* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *ccro* (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 0.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 0.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 128.0 0.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 2.5 3.3333335 3.3333333 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *scale-curve* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.3 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.1 0.1 6.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -2.9999998 0.0 19.666666 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *scale-range* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.4 1.4 2.4)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.099999994 1.0 1.0000001 1.0)) + ) + ) + ) + +;; definition for symbol *part-function-curve-test-curve-settings*, type particle-curve-settings +(define *part-function-curve-test-curve-settings* (new 'static 'particle-curve-settings + :lifetime-base (seconds 1.5) + :lifetime-offset (seconds 1) + :flags (particle-curve-flags pcf0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 45 init-specs 12 initial-valuef) + (the-as float *part-function-curve-test-curve-settings*) + ) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* color-start) *ccro*) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* alpha-start) *unity-fast*) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* scale-x-start) *scale-range*) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* scale-y-start) #f) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* r-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* g-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* b-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* a-scalar) *alpha-fast*) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* scale-x-scalar) *scale-curve*) + +;; failed to figure out what this is: +(set! (-> *part-function-curve-test-curve-settings* scale-y-scalar) #f) + +;; definition for function ptest +;; INFO: Used lq/sq +;; WARN: Return type mismatch symbol vs none. +(defun ptest () + (dotimes (gp-0 1000) + (let ((t9-0 sp-launch-particles-var) + (a0-0 *sp-particle-system-2d*) + (a1-0 (-> *part-id-table* 45)) + (a2-0 *launch-matrix*) + ) + (let ((v1-1 (-> a2-0 trans)) + (a3-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> a3-0 x) 0.0) + (set! (-> a3-0 y) 40960.0) + (set! (-> a3-0 z) 0.0) + (set! (-> a3-0 w) 1.0) + (set! (-> v1-1 quad) (-> a3-0 quad)) + ) + (t9-0 a0-0 a1-0 a2-0 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + (none) + ) diff --git a/test/decompiler/reference/jakx/engine/common-obs/prim-h_REF.gc b/test/decompiler/reference/jakx/engine/common-obs/prim-h_REF.gc new file mode 100644 index 0000000000..3f50433f09 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/common-obs/prim-h_REF.gc @@ -0,0 +1,259 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type prim-vertex +(deftype prim-vertex (structure) + "Vertex for the prim renderer. These vertices are generated by +some special effect code, then sent to the prim renderer to be drawn." + ((stq vector :inline) + (nokick uint32 :overlay-at (-> stq data 2)) + (col rgba :overlay-at (-> stq data 3)) + (pos vector :inline) + ) + ) + +;; definition for method 3 of type prim-vertex +(defmethod inspect ((this prim-vertex)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'prim-vertex) + (format #t "~1Tstq: #~%" (-> this stq)) + (format #t "~1Tnokick: ~D~%" (-> this stq z)) + (format #t "~1Tcol: ~D~%" (-> this col)) + (format #t "~1Tpos: #~%" (-> this pos)) + (label cfg-4) + this + ) + +;; definition of type prim-base +(deftype prim-base (basic) + "Base class for prim-strip." + () + (:methods + (generate-dma! (_type_ matrix) none) + ) + ) + +;; definition for method 3 of type prim-base +(defmethod inspect ((this prim-base)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (label cfg-4) + this + ) + +;; definition of type prim-client +(deftype prim-client (basic) + () + (:methods + (prim-client-method-9 (_type_) none) + ) + ) + +;; definition for method 3 of type prim-client +(defmethod inspect ((this prim-client)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (label cfg-4) + this + ) + +;; definition for method 9 of type prim-client +;; WARN: Return type mismatch int vs none. +(defmethod prim-client-method-9 ((this prim-client)) + 0 + (none) + ) + +;; definition of type prim-strip +(deftype prim-strip (prim-base) + "A collection of vertices, all with the same texture and draw settings. +These are owned by the thing submitting to prim, not the prim renderer itself." + ((flags prim-flags) + (tex-name basic) + (tex basic) + (tex-id texture-id) + (adnops gs-adcmd 2 :inline) + (data0 gs-test :overlay-at (-> adnops 0 word 0)) + (reg0 gs-reg64 :overlay-at (-> adnops 0 word 2)) + (data1 gs-test :offset 48) + (reg1 gs-reg64 :offset 56) + (clamp gs-clamp) + (alpha gs-alpha) + (level level) + (texture-index int8) + (num-verts uint16) + (allocated-num-verts uint16) + (last-tex-id uint32) + (data prim-vertex :dynamic) + ) + (:methods + (new (symbol type int texture-id string) _type_) + (setup-dma-and-tex (_type_ draw-control) none) + ) + ) + +;; definition for method 3 of type prim-strip +(defmethod inspect ((this prim-strip)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Ttex-name: ~A~%" (-> this tex-name)) + (format #t "~1Ttex: ~A~%" (-> this tex)) + (format #t "~1Ttex-id: ~D~%" (-> this tex-id)) + (format #t "~1Tadnops[2] @ #x~X~%" (-> this adnops)) + (format #t "~1Tdata0: ~D~%" (-> this data0)) + (format #t "~1Treg0: ~D~%" (-> this adnops 0 cmds)) + (format #t "~1Tdata1: ~D~%" (-> this data1)) + (format #t "~1Treg1: ~D~%" (-> this adnops 1 cmds)) + (format #t "~1Tclamp: ~D~%" (-> this clamp)) + (format #t "~1Talpha: ~D~%" (-> this alpha)) + (format #t "~1Tlevel: ~A~%" (-> this level)) + (format #t "~1Ttexture-index: ~D~%" (-> this texture-index)) + (format #t "~1Tnum-verts: ~D~%" (-> this num-verts)) + (format #t "~1Tallocated-num-verts: ~D~%" (-> this allocated-num-verts)) + (format #t "~1Tlast-tex-id: ~D~%" (-> this last-tex-id)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition for method 0 of type prim-strip +(defmethod new prim-strip ((allocation symbol) (type-to-make type) (arg0 int) (arg1 texture-id) (arg2 string)) + "Allocate a new prim-strip and room for vertices. The texture can be specified by name or ID." + (with-pp + (let ((s5-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* arg0 32)))))) + (if (zero? s5-0) + (go process-drawable-art-error "prim-strip") + ) + (add-connection *prim-engine* pp #f pp s5-0 #f) + (set! (-> s5-0 flags) (prim-flags alpha-blend-enable texture-enable)) + (set! (-> s5-0 num-verts) (the-as uint arg0)) + (set! (-> s5-0 allocated-num-verts) (the-as uint arg0)) + (set! (-> s5-0 data0) (new 'static 'gs-test)) + (set! (-> s5-0 adnops 0 cmds) (gs-reg64 hack)) + (set! (-> s5-0 data1) (new 'static 'gs-test)) + (set! (-> s5-0 adnops 1 cmds) (gs-reg64 hack)) + (set! (-> s5-0 clamp) (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (set! (-> s5-0 alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) + (cond + (arg2 + (set! (-> s5-0 tex-id) (lookup-texture-id-by-name arg2 (the-as string #f))) + (set! (-> s5-0 tex-name) arg2) + (logclear! (-> s5-0 flags) (prim-flags no-texture-name)) + ) + (else + (set! (-> s5-0 tex-id) arg1) + (set! (-> s5-0 tex-name) #f) + (logior! (-> s5-0 flags) (prim-flags no-texture-name)) + ) + ) + (set! (-> s5-0 tex) #f) + (set! (-> s5-0 level) (-> *level* level-default)) + (set! (-> s5-0 texture-index) 4) + (let ((f0-1 (/ 1.0 (the float (/ (+ arg0 -1) 2))))) + (dotimes (v1-22 arg0) + (let ((a0-6 (&+ (-> s5-0 data) (* v1-22 32)))) + (set! (-> a0-6 0) (the-as prim-vertex (* (the float (/ v1-22 2)) f0-1))) + (set! (-> a0-6 1) (the-as prim-vertex (the float (logand v1-22 1)))) + (set! (-> a0-6 2) (the-as prim-vertex 0.0)) + (set! (-> a0-6 3) (the-as prim-vertex 0.0)) + ) + (set! (-> (the-as (inline-array prim-vertex) (+ (the-as uint s5-0) (* v1-22 32))) 3 stq z) + (the-as float (the-as uint #x80808080)) + ) + (set-vector! + (the-as vector (+ (the-as uint (the-as vector (&-> s5-0 data 4))) (* v1-22 32))) + (* 4096.0 (the float (/ v1-22 2))) + (* 4096.0 (the float (logand v1-22 1))) + 0.0 + 1.0 + ) + ) + ) + s5-0 + ) + ) + ) + +;; definition for method 5 of type prim-strip +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of ((this prim-strip)) + (the-as int (+ (-> this type size) (* (-> this allocated-num-verts) 32))) + ) + +;; definition of type prim-sink +(deftype prim-sink (structure) + ((vertex-count uint8) + (control-count uint8) + ) + :allow-misaligned + ) + +;; definition for method 3 of type prim-sink +(defmethod inspect ((this prim-sink)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'prim-sink) + (format #t "~1Tvertex-count: ~D~%" (-> this vertex-count)) + (format #t "~1Tcontrol-count: ~D~%" (-> this control-count)) + (label cfg-4) + this + ) + +;; definition of type prim-work +(deftype prim-work (structure) + ((vertex-tmpl dma-packet 3 :inline) + (control-tmpl dma-packet 2 :inline) + (giftag generic-gif-tag :inline) + (call-scissor dma-packet :inline) + (call-noclip dma-packet :inline) + (shader adgif-shader :inline) + (mask vector4w :inline) + (in-verts int32) + (num-verts int32) + (vert-ptr (inline-array prim-vertex)) + (sinks prim-sink 114 :inline) + ) + (:methods + (prim-work-method-9 () none) + ) + ) + +;; definition for method 3 of type prim-work +(defmethod inspect ((this prim-work)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'prim-work) + (format #t "~1Tvertex-tmpl[3] @ #x~X~%" (-> this vertex-tmpl)) + (format #t "~1Tcontrol-tmpl[2] @ #x~X~%" (-> this control-tmpl)) + (format #t "~1Tgiftag: #~%" (-> this giftag)) + (format #t "~1Tcall-scissor: #~%" (-> this call-scissor)) + (format #t "~1Tcall-noclip: #~%" (-> this call-noclip)) + (format #t "~1Tshader: #~%" (-> this shader)) + (format #t "~1Tmask: #~%" (-> this mask)) + (format #t "~1Tin-verts: ~D~%" (-> this in-verts)) + (format #t "~1Tnum-verts: ~D~%" (-> this num-verts)) + (format #t "~1Tvert-ptr: #~%" (-> this vert-ptr)) + (format #t "~1Tsinks[114] @ #x~X~%" (-> this sinks)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +0 diff --git a/test/decompiler/reference/jakx/engine/common-obs/water-part_REF.gc b/test/decompiler/reference/jakx/engine/common-obs/water-part_REF.gc new file mode 100644 index 0000000000..59d6c32c6e --- /dev/null +++ b/test/decompiler/reference/jakx/engine/common-obs/water-part_REF.gc @@ -0,0 +1,804 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defpart 136 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 0.1) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.05) (meters 0.1)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.05) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +;; failed to figure out what this is: +(defpart 137 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 0.1) + (:x (meters -0.25) (meters 0.5)) + (:y (meters 0.15)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:accel-y (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +;; failed to figure out what this is: +(defpart 138 + :init-specs ((:texture (splash-foam level-default-sprite)) + (:num 0.05) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:scalevel-x (meters 0.005) (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.04 -0.04) + (:timer (seconds 2.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 right-multiply-quat)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(defpart 139 + :init-specs ((:texture (common-white common)) + (:num 0.06) + (:x (meters 10)) + (:scale-x (meters 0.75) (meters 1.5)) + (:rot-y (degrees 0)) + (:scale-y (meters 0.75) (meters 1.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.004333333)) + (:scalevel-y (meters 0.0033333334) (meters 0.004333333)) + (:fade-a 0.000111111105) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 right-multiply-quat)) + (:next-time (seconds 0.3)) + (:next-launcher 140) + (:rotate-y (degrees 0)) + ) + ) + +;; failed to figure out what this is: +(defpart 140 + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.3) (seconds 0.397)) (:next-launcher 141)) + ) + +;; failed to figure out what this is: +(defpart 141 + :init-specs ((:fade-a -0.21333334)) + ) + +;; failed to figure out what this is: +(defpart 142 + :init-specs ((:texture (explosion-nebula level-default-sprite)) + (:num 0.05 0.4) + (:x (meters -0.75) (meters 1.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 0.2) (meters 0.7)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.0016666667) (meters 0.003)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 right-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 143) + (:rotate-y (degrees 0)) + ) + ) + +;; failed to figure out what this is: +(defpart 143 + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 144)) + ) + +;; failed to figure out what this is: +(defpart 144 + :init-specs ((:fade-a -0.7111111)) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-water-splash + :id 26 + :duration (seconds 5) + :flags (sp0 sp4) + :bounds (static-bspherem 0 -12 0 14) + :parts ((sp-item 145 :flags (sp6) :period (seconds 10) :length (seconds 0.2)) + (sp-item 146 :flags (sp6) :period (seconds 10) :length (seconds 0.067) :offset 125) + (sp-item 147 :flags (is-3d sp6) :period (seconds 10) :length (seconds 0.067)) + (sp-item 148 :flags (is-3d sp6) :period (seconds 10) :length (seconds 0.167) :offset 125) + (sp-item 149 :flags (is-3d sp6) :period (seconds 10) :length (seconds 0.5) :offset 150) + (sp-item 150 :flags (sp6) :period (seconds 10) :length (seconds 0.167) :offset 20) + (sp-item 151 :flags (sp6) :period (seconds 10) :length (seconds 0.167) :offset 125) + ) + ) + +;; failed to figure out what this is: +(defpart 145 + :init-specs ((:texture (common-white common)) + (:birth-func 'birth-func-curve) + (:num 5.0) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-z (meters 0.016666668)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-wsplash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 158.0 128.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-wsplash-alpha* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 64.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 64.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-wsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.5 1.0 2.0 3.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.5 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-wsplash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 2.0 3.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-wsplash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-wsplash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 2.0 3.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-wsplash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 2.0 0.5 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 5.0 -5.0000005 -1.6666666 1.0)) + ) + ) + ) + +;; definition for symbol *part-water-splash-curve-settings*, type particle-curve-settings +(define *part-water-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 0.95) :lifetime-offset (seconds 0.1)) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 145 init-specs 13 initial-valuef) (the-as float *part-water-splash-curve-settings*)) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* color-start) *range-wsplash-color*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* alpha-start) *range-wsplash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* scale-x-start) *range-wsplash-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* scale-y-start) *range-wsplash-scale-y*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* r-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* g-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* b-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* a-scalar) *curve-wsplash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* scale-x-scalar) *curve-wsplash-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-curve-settings* scale-y-scalar) *curve-wsplash-scale-y*) + +;; failed to figure out what this is: +(defpart 146 + :init-specs ((:texture (common-white common)) + (:birth-func 'birth-func-curve) + (:num 2.0) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-splash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 128.0 128.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 235.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 235.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 235.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-splash-alpha* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 64.0 128.0 129.0 130.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 64.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-splash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 5.0 6.0 7.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 4.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-splash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 2.0 3.0 4.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-splash-alpha* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 1.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 0.0 -3.3333333 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-splash-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.3 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 0.15 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 -2.8333333 -0.21428573 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-splash-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.5 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 3.0 2.0 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 6.0 -5.0000005 -6.6666665 1.0)) + ) + ) + ) + +;; definition for symbol *part-water-splash-center-curve-settings*, type particle-curve-settings +(define *part-water-splash-center-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 0.8) :lifetime-offset (seconds 0.4)) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 146 init-specs 11 initial-valuef) + (the-as float *part-water-splash-center-curve-settings*) + ) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* color-start) *range-splash-color*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* alpha-start) *range-splash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* scale-x-start) *range-splash-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* scale-y-start) *range-splash-scale-y*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* r-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* g-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* b-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* a-scalar) *curve-splash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* scale-x-scalar) *curve-splash-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-center-curve-settings* scale-y-scalar) *curve-splash-scale-y*) + +;; failed to figure out what this is: +(defpart 147 + :init-specs ((:texture (splash-foam level-default-sprite)) + (:num 0.4) + (:scale-x (meters 2) (meters 0.5)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 2) (meters 0.5)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:scalevel-y (meters 0.01) (meters 0.0033333334)) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + ) + ) + +;; failed to figure out what this is: +(defpart 148 + :init-specs ((:texture (splash-foam level-default-sprite)) + (:num 0.2) + (:scale-x (meters 0) (meters 0.1)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 0) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.00033333333) (meters 0.006666667)) + (:scalevel-y (meters 0.00033333333) (meters 0.006666667)) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + ) + ) + +;; failed to figure out what this is: +(defpart 150 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 10.0) + (:x (meters 0) (meters 1)) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'check-water-level-drop) + (:conerot-x (degrees -40) (degrees 80)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(defpart 149 + :init-specs ((:texture (ripples level-default-sprite)) + (:num 0.5 1.0) + (:x (meters 1) (meters 5)) + (:scale-x (meters 0.1) (meters 0.2)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.001) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(defpart 151 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 2.0 2.0) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'check-water-level-drop) + (:conerot-x (degrees -2) (degrees 4)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-water-splash-small + :id 27 + :duration (seconds 3) + :flags (sp0) + :bounds (static-bspherem 0 -12 0 14) + :parts ((sp-item 152 :period (seconds 10) :length (seconds 0.2)) + (sp-item 153 :flags (is-3d) :period (seconds 10) :length (seconds 0.067)) + (sp-item 154 :period (seconds 10) :length (seconds 0.167) :offset 20) + ) + ) + +;; failed to figure out what this is: +(defpart 153 + :init-specs ((:texture (splash-foam level-default-sprite)) + (:num 0.8) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-y (degrees 0) (degrees 3600)) + (:scale-y (meters 0.5) (meters 0.2)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.01) (meters 0.0033333334)) + (:scalevel-y (meters 0.01) (meters 0.0033333334)) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow right-multiply-quat)) + ) + ) + +;; failed to figure out what this is: +(defpart 154 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 5.0) + (:scale-x (meters 0.05) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.016666668)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-3)) + (:func 'check-water-level-drop) + (:conerot-x (degrees -40) (degrees 80)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(defpart 152 + :init-specs ((:texture (common-white common)) + (:birth-func 'birth-func-curve) + (:num 4.0) + (:scale-x (meters 1)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-z (meters 0.01)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-wsplash-small-scale-x* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.3 0.7 1.7 2.7)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 0.39999998 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-wsplash-small-scale-y* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.4 -0.7 -1.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 0.7 0.2 0.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.75 -1.6666667 -0.6666666 1.0)) + ) + ) + ) + +;; definition for symbol *part-water-splash-small-curve-settings*, type particle-curve-settings +(define *part-water-splash-small-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 0.25) :lifetime-offset (seconds 0.1)) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 152 init-specs 13 initial-valuef) + (the-as float *part-water-splash-small-curve-settings*) + ) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* color-start) *range-wsplash-color*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* alpha-start) *range-wsplash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* scale-x-start) *range-wsplash-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* scale-y-start) *range-wsplash-scale-y*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* r-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* g-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* b-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* a-scalar) *curve-wsplash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* scale-x-scalar) *curve-wsplash-small-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-water-splash-small-curve-settings* scale-y-scalar) *curve-wsplash-small-scale-y*) + +;; failed to figure out what this is: +(defpart 155 + :init-specs ((:texture (glow-soft level-default-sprite)) + (:num 1.0) + (:scale-x (meters 6) (meters 0.1)) + (:rot-x (degrees 11.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g :copy r) + (:b 255.0) + (:a 0.0) + (:scalevel-x (meters 0.16)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 use-global-acc sp-cpuinfo-flag-21)) + (:userdata 10240.0) + (:rotate-y (degrees 0)) + ) + ) + +;; failed to figure out what this is: +(defpart 156 + :init-specs ((:fade-a -0.64)) + ) + +;; failed to figure out what this is: +(defpart 157 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 12.0) + (:y (meters 0)) + (:scale-x (meters 0.08) (meters 0.03)) + (:rot-x 4) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b 64.0 32.0) + (:a 128.0) + (:omega (degrees 0.01575) (degrees 0.009)) + (:vel-y (meters 0.033333335) (meters 0.05)) + (:accel-y (meters -0.005) (meters -0.00066666666)) + (:friction 0.96 0.02) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21)) + (:userdata -208896.0) + (:func 'check-water-level-drop-motion) + (:next-time (seconds 0) (seconds 0.58)) + (:next-launcher 30) + (:conerot-x (degrees 15) (degrees 65)) + (:conerot-y (degrees 0) (degrees 3600)) + (:rotate-y (degrees 0)) + (:conerot-radius (meters 0) (meters 1)) + ) + ) + +;; failed to figure out what this is: +(defpart 30 + :init-specs ((:r 255.0) (:g 255.0) (:b 255.0) (:next-time (seconds 0.017)) (:next-launcher 158)) + ) + +;; failed to figure out what this is: +(defpart 158 + :init-specs ((:r 32.0 32.0) (:g 32.0 32.0) (:b 64.0 32.0) (:next-time (seconds 0) (seconds 1.497)) (:next-launcher 159)) + ) + +;; failed to figure out what this is: +(defpart 160 + :init-specs ((:texture (common-white common)) + (:num 0.3) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b :copy r) + (:a 0.0) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.32 -0.32) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21)) + (:userdata :data (new 'static 'boxed-array :type int32 10 0 0 0 0 #x401000 #x405d00)) + (:func 'sparticle-texture-animate) + (:rotate-y (degrees 0)) + ) + ) + +;; failed to figure out what this is: +(defpart 161 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 0.0 0.5) + (:scale-x (meters 0.08) (meters 0.03)) + (:rot-x 4) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b 64.0 32.0) + (:a 0.0) + (:omega (degrees 0.01575) (degrees 0.009)) + (:vel-y (meters 0.026666667) (meters 0.05)) + (:accel-y (meters -0.005) (meters -0.00066666666)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21)) + (:userdata -208896.0) + (:func 'check-water-level-drop-and-die-motion) + (:next-time (seconds 0) (seconds 0.33)) + (:next-launcher 30) + (:conerot-x (degrees 30) (degrees 40)) + (:conerot-y (degrees 0) (degrees 3600)) + (:rotate-y (degrees 0)) + ) + ) + +;; failed to figure out what this is: +(defpart 162 + :init-specs ((:texture (lakedrop level-default-sprite)) + (:num 1.0) + (:scale-x (meters 0.15) (meters 0.05)) + (:rot-x 4) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g :copy r) + (:b 64.0 32.0) + (:a 0.0) + (:omega (degrees 0.0225) (degrees 0.0225)) + (:vel-x (meters -0.016666668) (meters 0.0016666667)) + (:vel-y (meters 0.016666668)) + (:vel-z (meters -0.016666668) (meters 0.0016666667)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 2)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:userdata 0.0) + (:func 'check-water-level-drop-motion) + (:next-time (seconds 2)) + (:next-launcher 163) + ) + ) + +;; failed to figure out what this is: +0 diff --git a/test/decompiler/reference/jakx/engine/data/art-h_REF.gc b/test/decompiler/reference/jakx/engine/data/art-h_REF.gc new file mode 100644 index 0000000000..0b2db30003 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/data/art-h_REF.gc @@ -0,0 +1,727 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type joint-anim +(deftype joint-anim (basic) + "Base class for all joint animations. These are animations that store joint transforms." + ((name string) + (number int16) + (length int16) + ) + ) + +;; definition for method 3 of type joint-anim +(defmethod inspect ((this joint-anim)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tnumber: ~D~%" (-> this number)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (label cfg-4) + this + ) + +;; definition of type joint-anim-matrix +(deftype joint-anim-matrix (joint-anim) + "Joint animation which stores matrices directly. Not used." + ((data matrix :inline :dynamic :offset 16) + ) + ) + +;; definition of type joint-anim-transformq +(deftype joint-anim-transformq (joint-anim) + "Joint animation which stores transformq's directly. Not used." + ((data transformq :inline :dynamic) + ) + ) + +;; definition for method 3 of type joint-anim-transformq +(defmethod inspect ((this joint-anim-transformq)) + (when (not this) + (set! this this) + (goto cfg-7) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tnumber: ~D~%" (-> this number)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (dotimes (s5-0 (-> this length)) + (format #t "~T [~D]~1Tdata: ~`transformq`P~%" s5-0 (-> this data s5-0)) + ) + (label cfg-7) + this + ) + +;; definition of type joint-anim-drawable +(deftype joint-anim-drawable (joint-anim) + "Mysterious unused joint animation type." + ((data drawable :dynamic) + ) + ) + +;; definition for method 3 of type joint-anim-drawable +(defmethod inspect ((this joint-anim-drawable)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tnumber: ~D~%" (-> this number)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition of type joint-anim-frame +(deftype joint-anim-frame (structure) + "Frame containing all joint transforms. Note that there are two special frames: align and prejoint. +The 'align' frame is used for the complicated animation alignment system, which allows the animation to move +a character, among other things. The prejoint is just the root of the skeleton. +The remaining transformq's are the joint transforms you'd expect." + ((matrices matrix 2 :inline) + (data transformq :inline :dynamic) + ) + (:methods + (new (symbol type int) _type_) + ) + ) + +;; definition for method 3 of type joint-anim-frame +(defmethod inspect ((this joint-anim-frame)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'joint-anim-frame) + (format #t "~1Tmatrices[2] @ #x~X~%" (-> this matrices)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition for method 0 of type joint-anim-frame +;; WARN: Return type mismatch structure vs joint-anim-frame. +(defmethod new joint-anim-frame ((allocation symbol) (type-to-make type) (arg0 int)) + (let ((v1-1 (max 0 (+ arg0 -2)))) + (the-as + joint-anim-frame + (new-dynamic-structure allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 v1-1)))) + ) + ) + ) + +;; definition of type joint-anim-compressed-hdr +(deftype joint-anim-compressed-hdr (structure) + "Header for the compressed joint animation format." + ((control-bits uint32 14) + (num-joints uint32) + (matrix-bits uint32) + ) + ) + +;; definition for method 3 of type joint-anim-compressed-hdr +(defmethod inspect ((this joint-anim-compressed-hdr)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'joint-anim-compressed-hdr) + (format #t "~1Tcontrol-bits[14] @ #x~X~%" (-> this control-bits)) + (format #t "~1Tnum-joints: ~D~%" (-> this num-joints)) + (format #t "~1Tmatrix-bits: ~D~%" (-> this matrix-bits)) + (label cfg-4) + this + ) + +;; definition of type joint-anim-compressed-fixed +(deftype joint-anim-compressed-fixed (structure) + ((hdr joint-anim-compressed-hdr :inline) + (offset-64 uint32) + (offset-32 uint32) + (offset-16 uint32) + (reserved uint32) + (data vector 133 :inline) + ) + ) + +;; definition for method 3 of type joint-anim-compressed-fixed +(defmethod inspect ((this joint-anim-compressed-fixed)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'joint-anim-compressed-fixed) + (format #t "~1Thdr: #~%" (-> this hdr)) + (format #t "~1Toffset-64: ~D~%" (-> this offset-64)) + (format #t "~1Toffset-32: ~D~%" (-> this offset-32)) + (format #t "~1Toffset-16: ~D~%" (-> this offset-16)) + (format #t "~1Treserved: ~D~%" (-> this reserved)) + (format #t "~1Tdata[133] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition of type joint-anim-compressed-frame +(deftype joint-anim-compressed-frame (structure) + ((offset-64 uint32) + (offset-32 uint32) + (offset-16 uint32) + (reserved uint32) + (data vector 133 :inline) + ) + ) + +;; definition for method 3 of type joint-anim-compressed-frame +(defmethod inspect ((this joint-anim-compressed-frame)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'joint-anim-compressed-frame) + (format #t "~1Toffset-64: ~D~%" (-> this offset-64)) + (format #t "~1Toffset-32: ~D~%" (-> this offset-32)) + (format #t "~1Toffset-16: ~D~%" (-> this offset-16)) + (format #t "~1Treserved: ~D~%" (-> this reserved)) + (format #t "~1Tdata[133] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition of type joint-anim-compressed-control +(deftype joint-anim-compressed-control (structure) + ((num-frames uint16) + (flags uint16) + (fixed-qwc uint32) + (frame-qwc uint32) + (fixed joint-anim-compressed-fixed) + (data joint-anim-compressed-frame :dynamic) + ) + ) + +;; definition for method 3 of type joint-anim-compressed-control +(defmethod inspect ((this joint-anim-compressed-control)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'joint-anim-compressed-control) + (format #t "~1Tnum-frames: ~D~%" (-> this num-frames)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Tfixed-qwc: ~D~%" (-> this fixed-qwc)) + (format #t "~1Tframe-qwc: ~D~%" (-> this frame-qwc)) + (format #t "~1Tfixed: #~%" (-> this fixed)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition of type art +(deftype art (basic) + "Base class for anything considered `art`. This is typically foreground model data. +This can be either an art container containing more arts, or an actual art thing (art-element)." + ((name string :offset 8) + (length int32) + (extra res-lump) + ) + (:methods + (login (_type_) _type_) + (art-method-10 (_type_) _type_) + (get-art-by-name-method (_type_ string type) basic) + (get-art-idx-by-name-method (_type_ string type) int) + (contains-art-for-other-group? (_type_) symbol) + ) + ) + +;; definition for method 3 of type art +(defmethod inspect ((this art)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Textra: ~A~%" (-> this extra)) + (label cfg-4) + this + ) + +;; definition of type art-element +(deftype art-element (art) + "Base class Art which is not a container of more art." + ((master-art-group-name string) + (master-art-group-index int32) + (pad uint8 20) + ) + ) + +;; definition for method 3 of type art-element +(defmethod inspect ((this art-element)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Textra: ~A~%" (-> this extra)) + (format #t "~1Tmaster-art-group-name: ~A~%" (-> this master-art-group-name)) + (format #t "~1Tmaster-art-group-index: ~D~%" (-> this master-art-group-index)) + (label cfg-4) + this + ) + +;; type art-mesh-anim is defined here, but it is unknown to the decompiler + +;; definition of type art-joint-anim +(deftype art-joint-anim (art-element) + "Art for a joint animation. Also contains the eye animation." + ((eye-anim merc-eye-anim-block :overlay-at (-> pad 0)) + (blend-shape-anim (pointer int8) :overlay-at (-> pad 4)) + (frames joint-anim-compressed-control :overlay-at (-> pad 8)) + (speed float :offset 48) + (artist-base float) + (artist-step float) + ) + ) + +;; definition for method 3 of type art-joint-anim +(defmethod inspect ((this art-joint-anim)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Textra: ~A~%" (-> this extra)) + (format #t "~1Tmaster-art-group-name: ~A~%" (-> this master-art-group-name)) + (format #t "~1Tmaster-art-group-index: ~D~%" (-> this master-art-group-index)) + (format #t "~1Teye-anim: ~`merc-eye-anim-block`P~%" (-> this eye-anim)) + (format #t "~1Tblend-shape-anim: ~A~%" (-> this blend-shape-anim)) + (format #t "~1Tframes: #~%" (-> this frames)) + (format #t "~1Tspeed: ~f~%" (-> this speed)) + (format #t "~1Tartist-base: ~f~%" (-> this artist-base)) + (format #t "~1Tartist-step: ~f~%" (-> this artist-step)) + (label cfg-4) + this + ) + +;; definition of type art-group +(deftype art-group (art) + "Art which is a list of more art. The -ag files are an art group with all the art needed for a +actor, like the mesh, animations, shadow mesh, skeleton, etc." + ((info file-info :offset 4) + (data art-element :dynamic :offset 32) + ) + (:methods + (relocate (_type_ kheap (pointer uint8)) none :replace) + (link-art-to-master (_type_) art-group) + (unlink-art-to-master (_type_) int) + ) + ) + +;; definition of type art-mesh-geo +(deftype art-mesh-geo (art-element) + "Unused art format for a mesh. This might have been for the renderer that came before merc." + ((data basic :dynamic) + ) + ) + +;; definition of type art-joint-geo +(deftype art-joint-geo (art-element) + "Collection of joints for an actor." + ((data joint :dynamic) + ) + ) + +;; definition of type art-cloth-geo +(deftype art-cloth-geo (art-element) + ((anchor-transforms anchor-transform-array) + (sphere-transforms sphere-transform-array) + (disc-transforms disc-transform-array) + (cloth-thickness cloth-thickness-array) + (thickness-scalar float) + (num-points int32 :overlay-at length) + (mesh cloth-pt :inline :dynamic :offset 80) + ) + ) + +;; definition for method 3 of type art-cloth-geo +(defmethod inspect ((this art-cloth-geo)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Textra: ~A~%" (-> this extra)) + (format #t "~1Tmaster-art-group-name: ~A~%" (-> this master-art-group-name)) + (format #t "~1Tmaster-art-group-index: ~D~%" (-> this master-art-group-index)) + (format #t "~1Tanchor-transforms: ~A~%" (-> this anchor-transforms)) + (format #t "~1Tsphere-transforms: ~A~%" (-> this sphere-transforms)) + (format #t "~1Tdisc-transforms: ~A~%" (-> this disc-transforms)) + (format #t "~1Tcloth-thickness: ~A~%" (-> this cloth-thickness)) + (format #t "~1Tthickness-scalar: ~f~%" (-> this thickness-scalar)) + (format #t "~1Tnum-points: ~D~%" (-> this length)) + (format #t "~1Tmesh[0] @ #x~X~%" (-> this mesh)) + (label cfg-4) + this + ) + +;; definition for method 7 of type art-cloth-geo +(defmethod relocate ((this art-cloth-geo) (offset int)) + this + ) + +;; definition of type skeleton-group +(deftype skeleton-group (art-group) + "Unlike other art types, the skeleton-groups are defined in GOAL code. +This stores settings like the name of the art-group, shadow/level-of-detail settings, etc." + ((art-group-name string) + (jgeo int16) + (janim int16) + (bounds vector :inline) + (radius meters :overlay-at (-> bounds data 3)) + (mgeo int16 6) + (max-lod int32) + (lod-dist float 6) + (longest-edge meters) + (texture-level int8) + (version int8) + (shadow int16) + (shadow-joint-index int8) + (origin-joint-index int8) + (sort int8) + (light-index uint8) + (clothing (array cloth-params)) + (global-effects uint8) + ) + (:methods + (add-to-loading-level (_type_) skeleton-group) + ) + ) + +;; definition for method 3 of type skeleton-group +(defmethod inspect ((this skeleton-group)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Textra: ~A~%" (-> this extra)) + (format #t "~1Tinfo: ~A~%" (-> this info)) + (format #t "~1Tdata[0] @ #x~X~%" (&-> this art-group-name)) + (format #t "~1Tart-group-name: ~A~%" (-> this art-group-name)) + (format #t "~1Tjgeo: ~D~%" (-> this jgeo)) + (format #t "~1Tjanim: ~D~%" (-> this janim)) + (format #t "~1Tbounds: ~`vector`P~%" (-> this bounds)) + (format #t "~1Tradius: (meters ~m)~%" (-> this bounds w)) + (format #t "~1Tmgeo[6] @ #x~X~%" (-> this mgeo)) + (format #t "~1Tmax-lod: ~D~%" (-> this max-lod)) + (format #t "~1Tlod-dist[6] @ #x~X~%" (-> this lod-dist)) + (format #t "~1Tlongest-edge: (meters ~m)~%" (-> this longest-edge)) + (format #t "~1Ttexture-level: ~D~%" (-> this texture-level)) + (format #t "~1Tversion: ~D~%" (-> this version)) + (format #t "~1Tshadow: ~D~%" (-> this shadow)) + (format #t "~1Tshadow-joint-index: ~D~%" (-> this shadow-joint-index)) + (format #t "~1Torigin-joint-index: ~D~%" (-> this origin-joint-index)) + (format #t "~1Tsort: ~D~%" (-> this sort)) + (format #t "~1Tlight-index: ~D~%" (-> this light-index)) + (format #t "~1Tclothing: ~A~%" (-> this clothing)) + (format #t "~1Tglobal-effects: ~D~%" (-> this global-effects)) + (label cfg-4) + this + ) + +;; definition of type lod-group +(deftype lod-group (structure) + "A single level of detail mesh." + ((geo merc-ctrl) + (dist meters) + ) + :pack-me + ) + +;; definition for method 3 of type lod-group +(defmethod inspect ((this lod-group)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'lod-group) + (format #t "~1Tgeo: ~A~%" (-> this geo)) + (format #t "~1Tdist: (meters ~m)~%" (-> this dist)) + (label cfg-4) + this + ) + +;; definition of type lod-set +(deftype lod-set (structure) + "All the different level-of-detail meshes for an actor." + ((lod lod-group 6 :inline) + (max-lod int8) + ) + :allow-misaligned + (:methods + (setup-lods! (_type_ skeleton-group art-group entity) _type_) + ) + ) + +;; definition for method 3 of type lod-set +(defmethod inspect ((this lod-set)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'lod-set) + (format #t "~1Tlod[6] @ #x~X~%" (-> this lod)) + (format #t "~1Tmax-lod: ~D~%" (-> this max-lod)) + (label cfg-4) + this + ) + +;; definition of type draw-control +(deftype draw-control (basic) + ((process process-drawable) + (status draw-control-status) + (data-format draw-control-data-format) + (global-effect draw-control-global-effect) + (art-group art-group) + (jgeo art-joint-geo) + (mgeo merc-ctrl) + (dma-add-func (function process-drawable draw-control symbol object none)) + (skeleton skeleton) + (lod-set lod-set :inline) + (max-lod int8 :overlay-at (-> lod-set max-lod)) + (force-lod int8) + (cur-lod int8) + (cur-lods int8 2 :offset 87) + (effect-masks uint64 2) + (prev-seg-mask uint64) + (want-lod int8) + (ripple ripple-control) + (longest-edge meters) + (longest-edge? uint32 :overlay-at longest-edge) + (light-index uint8) + (shadow-mask uint8) + (level-index uint8) + (death-draw-overlap uint8) + (death-timer uint8) + (death-timer-org uint8) + (death-vertex-skip uint16) + (death-effect uint32) + (shadow shadow-geo) + (shadow-ctrl shadow-control) + (distance meters) + (origin vector :inline) + (bounds vector :inline) + (radius meters :overlay-at (-> bounds data 3)) + (color-mult rgbaf :inline) + (color-emissive rgbaf :inline) + (effect-mask uint64) + (seg-mask uint64) + (origin-joint-index uint8) + (shadow-joint-index uint8) + (force-fade uint8) + (default-texture-page uint8) + (shadow-values uint32) + (cloth-instances (array cloth-system)) + (lights vu-lights) + (envmap-override float) + ) + (:methods + (new (symbol type) _type_) + (get-skeleton-origin (_type_) vector) + (draw-control-method-10 () none) + (draw-control-method-11 () none) + (draw-control-method-12 () none) + (draw-control-method-13 () none) + (draw-control-method-14 () none) + (draw-control-method-15 () none) + ) + ) + +;; definition for method 3 of type draw-control +(defmethod inspect ((this draw-control)) + (when (not this) + (set! this this) + (goto cfg-63) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tprocess: ~A~%" (-> this process)) + (format #t "~1Tstatus: #x~X : (draw-control-status " (-> this status)) + (let ((s5-0 (-> this status))) + (if (= (logand s5-0 (draw-control-status no-draw-temp)) (draw-control-status no-draw-temp)) + (format #t "no-draw-temp ") + ) + (if (= (logand s5-0 (draw-control-status lod-set)) (draw-control-status lod-set)) + (format #t "lod-set ") + ) + (if (= (logand (draw-control-status suppress-vport-1) s5-0) (draw-control-status suppress-vport-1)) + (format #t "suppress-vport-1 ") + ) + (if (= (logand s5-0 (draw-control-status no-draw-bounds2)) (draw-control-status no-draw-bounds2)) + (format #t "no-draw-bounds2 ") + ) + (if (= (logand s5-0 (draw-control-status math-skel)) (draw-control-status math-skel)) + (format #t "math-skel ") + ) + (if (= (logand (draw-control-status disable-shadow) s5-0) (draw-control-status disable-shadow)) + (format #t "disable-shadow ") + ) + (if (= (logand (draw-control-status suppress-vport-0) s5-0) (draw-control-status suppress-vport-0)) + (format #t "suppress-vport-0 ") + ) + (if (= (logand s5-0 (draw-control-status force-vu1)) (draw-control-status force-vu1)) + (format #t "force-vu1 ") + ) + (if (= (logand s5-0 (draw-control-status warp-cross-fade)) (draw-control-status warp-cross-fade)) + (format #t "warp-cross-fade ") + ) + (if (= (logand s5-0 (draw-control-status disable-fog)) (draw-control-status disable-fog)) + (format #t "disable-fog ") + ) + (if (= (logand s5-0 (draw-control-status no-bounds-check)) (draw-control-status no-bounds-check)) + (format #t "no-bounds-check ") + ) + (if (= (logand s5-0 (draw-control-status no-closest-distance)) (draw-control-status no-closest-distance)) + (format #t "no-closest-distance ") + ) + (if (= (logand s5-0 (draw-control-status hud)) (draw-control-status hud)) + (format #t "hud ") + ) + (if (= (logand s5-0 (draw-control-status no-draw)) (draw-control-status no-draw)) + (format #t "no-draw ") + ) + (if (= (logand s5-0 (draw-control-status on-screen)) (draw-control-status on-screen)) + (format #t "on-screen ") + ) + (if (= (logand s5-0 (draw-control-status close-to-screen)) (draw-control-status close-to-screen)) + (format #t "close-to-screen ") + ) + (if (= (logand s5-0 (draw-control-status force-fade)) (draw-control-status force-fade)) + (format #t "force-fade ") + ) + (if (= (logand s5-0 (draw-control-status no-draw-bounds)) (draw-control-status no-draw-bounds)) + (format #t "no-draw-bounds ") + ) + (if (= (logand s5-0 (draw-control-status uninited)) (draw-control-status uninited)) + (format #t "uninited ") + ) + ) + (format #t ")~%") + (let ((t9-23 format) + (a0-46 #t) + (a1-23 "~1Tdata-format: #x~X : ~S~%") + (a2-3 (-> this data-format)) + (v1-59 (-> this data-format)) + ) + (t9-23 a0-46 a1-23 a2-3 (cond + ((= v1-59 (draw-control-data-format merc)) + "merc" + ) + ((= v1-59 (draw-control-data-format pris)) + "pris" + ) + (else + "*unknown*" + ) + ) + ) + ) + (format #t "~1Tglobal-effect: #x~X : (draw-control-global-effect " (-> this global-effect)) + (let ((s5-1 (-> this global-effect))) + (if (= (logand s5-1 (draw-control-global-effect title-light)) (draw-control-global-effect title-light)) + (format #t "title-light ") + ) + (if (= (logand s5-1 (draw-control-global-effect disable-envmap)) (draw-control-global-effect disable-envmap)) + (format #t "shield-lights ") + ) + (if (= (logand s5-1 (draw-control-global-effect shield-lights)) (draw-control-global-effect shield-lights)) + (format #t "front-rear-lights ") + ) + (if (= (logand s5-1 (draw-control-global-effect bit-1)) (draw-control-global-effect bit-1)) + (format #t "bit-1 ") + ) + (if (= (logand s5-1 (draw-control-global-effect rim-lights3)) (draw-control-global-effect rim-lights3)) + (format #t "disable-envmap ") + ) + (if (= (logand s5-1 (draw-control-global-effect no-textures)) (draw-control-global-effect no-textures)) + (format #t "no-textures ") + ) + (if (= (logand s5-1 (draw-control-global-effect bit-0)) (draw-control-global-effect bit-0)) + (format #t "bit-0 ") + ) + (if (= (logand s5-1 (draw-control-global-effect rim-lights)) (draw-control-global-effect rim-lights)) + (format #t "rim-lights ") + ) + ) + (format #t ")~%") + (format #t "~1Tart-group: ~A~%" (-> this art-group)) + (format #t "~1Tjgeo: ~A~%" (-> this jgeo)) + (format #t "~1Tmgeo: ~A~%" (-> this mgeo)) + (format #t "~1Tdma-add-func: ~A~%" (-> this dma-add-func)) + (format #t "~1Tskeleton: ~A~%" (-> this skeleton)) + (format #t "~1Tlod-set: #~%" (-> this lod-set)) + (format #t "~1Tlod[6] @ #x~X~%" (-> this lod-set)) + (format #t "~1Tmax-lod: ~D~%" (-> this lod-set max-lod)) + (format #t "~1Tforce-lod: ~D~%" (-> this force-lod)) + (format #t "~1Tcur-lod: ~D~%" (-> this cur-lod)) + (format #t "~1Tcur-lods[2] @ #x~X~%" (-> this cur-lods)) + (format #t "~1Teffect-masks[2] @ #x~X~%" (-> this effect-masks)) + (format #t "~1Tprev-seg-mask: ~D~%" (-> this prev-seg-mask)) + (format #t "~1Twant-lod: ~D~%" (-> this want-lod)) + (format #t "~1Tripple: ~A~%" (-> this ripple)) + (format #t "~1Tlongest-edge: (meters ~m)~%" (-> this longest-edge)) + (format #t "~1Tlongest-edge?: ~D~%" (-> this longest-edge)) + (format #t "~1Tlight-index: ~D~%" (-> this light-index)) + (format #t "~1Tshadow-mask: ~D~%" (-> this shadow-mask)) + (format #t "~1Tlevel-index: ~D~%" (-> this level-index)) + (format #t "~1Tdeath-draw-overlap: ~D~%" (-> this death-draw-overlap)) + (format #t "~1Tdeath-timer: ~D~%" (-> this death-timer)) + (format #t "~1Tdeath-timer-org: ~D~%" (-> this death-timer-org)) + (format #t "~1Tdeath-vertex-skip: ~D~%" (-> this death-vertex-skip)) + (format #t "~1Tdeath-effect: ~D~%" (-> this death-effect)) + (format #t "~1Tshadow: ~A~%" (-> this shadow)) + (format #t "~1Tshadow-ctrl: ~A~%" (-> this shadow-ctrl)) + (format #t "~1Tdistance: (meters ~m)~%" (-> this distance)) + (format #t "~1Torigin: ~`vector`P~%" (-> this origin)) + (format #t "~1Tbounds: ~`vector`P~%" (-> this bounds)) + (format #t "~1Tradius: (meters ~m)~%" (-> this bounds w)) + (format #t "~1Tcolor-mult: #~%" (-> this color-mult)) + (format #t "~1Tcolor-emissive: #~%" (-> this color-emissive)) + (format #t "~1Teffect-mask: #x~X~%" (-> this effect-mask)) + (format #t "~1Tseg-mask: #x~X~%" (-> this seg-mask)) + (format #t "~1Torigin-joint-index: ~D~%" (-> this origin-joint-index)) + (format #t "~1Tshadow-joint-index: ~D~%" (-> this shadow-joint-index)) + (format #t "~1Tforce-fade: ~D~%" (-> this force-fade)) + (format #t "~1Tdefault-texture-page: ~D~%" (-> this default-texture-page)) + (format #t "~1Tshadow-values: ~D~%" (-> this shadow-values)) + (format #t "~1Tcloth-instances: ~A~%" (-> this cloth-instances)) + (format #t "~1Tlights: #~%" (-> this lights)) + (format #t "~1Tenvmap-override: ~f~%" (-> this envmap-override)) + (label cfg-63) + this + ) + +;; definition for method 9 of type draw-control +(defmethod get-skeleton-origin ((this draw-control)) + (-> this skeleton bones 0 transform trans) + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/data/font-data_REF.gc b/test/decompiler/reference/jakx/engine/data/font-data_REF.gc new file mode 100644 index 0000000000..f3aac8def0 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/data/font-data_REF.gc @@ -0,0 +1,516 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *font12-table*, type (inline-array vector) +(define *font12-table* (new 'static 'inline-array vector 250 + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0322 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0634 1.0 22.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0634 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0634 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0634 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0634 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0634 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0634 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0947 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0947 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0947 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0947 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0947 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0947 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0947 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0947 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0947 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0947 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1259 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1259 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1259 1.0 11.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1259 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1572 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1572 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1572 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1572 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1572 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1572 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1572 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1572 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1572 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1572 1.0 17.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1884 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1884 1.0 15.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1884 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1884 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1884 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1884 1.0 7.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2197 1.0 15.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2197 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2197 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2197 1.0 15.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2197 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2197 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2509 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2509 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2509 1.0 17.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2509 1.0 9.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2509 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2509 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2509 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2822 1.0 6.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2822 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2822 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2822 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2822 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2822 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2822 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2822 1.0 17.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2822 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2822 1.0 9.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3134 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3134 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3134 1.0 9.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3134 1.0 18.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3134 1.0 14.25)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3134 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3134 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3134 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3134 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3134 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3447 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3447 1.0 12.75)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3447 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3447 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3447 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3447 1.0 16.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3447 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3447 1.0 10.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3447 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3447 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3759 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3759 1.0 13.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3759 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4072 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4384 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4697 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6259 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7509 1.0 16.0)) + ) + ) + +;; definition for symbol *font24-table*, type (inline-array vector) +(define *font24-table* (new 'static 'inline-array vector 250 + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0322 1.0 19.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0322 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0322 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0322 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0322 1.0 12.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0634 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0634 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0634 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0634 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0634 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0634 1.0 17.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.0947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.0947 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.0947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.0947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.0947 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.0947 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.0947 1.0 22.5)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.0947 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.0947 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.0947 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1259 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1259 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1259 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1259 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1259 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1572 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1572 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1572 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1572 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1572 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1572 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1572 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1572 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1572 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.1884 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.1884 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.1884 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.1884 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.1884 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.1884 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.1884 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.1884 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.1884 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.1884 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2197 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2197 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2197 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2197 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2197 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2197 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2197 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2197 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2197 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2197 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2509 1.0 26.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2509 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2509 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2509 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2509 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2509 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.2822 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.2822 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.2822 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.2822 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.2822 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.2822 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.2822 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3134 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3134 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3134 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3134 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3134 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3134 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3134 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3134 1.0 25.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3134 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3134 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3447 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3447 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3447 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3447 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3447 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3447 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3447 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3447 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3447 1.0 27.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3447 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.3759 1.0 10.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.3759 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4072 1.0 11.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4072 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4072 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4072 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4384 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.4697 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5009 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5322 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5322 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5634 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5634 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5634 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5634 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5634 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5634 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5634 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5634 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.5947 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.5947 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.5947 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.5947 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.5947 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.5947 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.5947 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.5947 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.5947 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.5947 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6259 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6259 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6259 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6259 1.0 23.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6259 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6572 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6572 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6572 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6572 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6572 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6572 1.0 19.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6572 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.6884 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.6884 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.6884 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.6884 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.6884 1.0 18.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.6884 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.6884 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7197 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7197 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7197 1.0 22.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7197 1.0 14.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7197 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7197 1.0 15.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7197 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7197 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0039 0.7509 1.0 20.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0976 0.7509 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.1914 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.2851 0.7509 1.0 13.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.3789 0.7509 1.0 21.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.4726 0.7509 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5664 0.7509 1.0 16.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.6601 0.7509 1.0 17.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.7539 0.7509 1.0 24.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.8476 0.7509 1.0 24.0)) + ) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/debug/debug-part_REF.gc b/test/decompiler/reference/jakx/engine/debug/debug-part_REF.gc new file mode 100644 index 0000000000..a14a01be16 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/debug/debug-part_REF.gc @@ -0,0 +1,1948 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) + +;; failed to figure out what this is: +(defpart 46 + :init-specs ((:texture (glow level-default-sprite)) + (:num 1.0) + (:scale-x (meters 5) (meters 2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0) + (:b 0.0) + (:a 64.0 64.0) + (:rotvel-z (degrees 0.3)) + (:fade-a -1.6) + (:timer (seconds 0.067)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-red-eco-strike-ground + :id 6 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 47) (sp-item 48)) + ) + +;; failed to figure out what this is: +(defpart 47 + :init-specs ((:texture (common-white common)) + (:num 24.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 32.0) + (:a 8.0 56.0) + (:vel-y (meters 0.13333334) (meters 0.16666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.4222223) + (:fade-a -0.35555556) + (:accel-y (meters 0.00008333333)) + (:friction 0.7) + (:timer (seconds 0.6)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.3)) + (:next-launcher 49) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +;; failed to figure out what this is: +(defpart 48 + :init-specs ((:texture (common-white common)) + (:num 32.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 64.0 8.0) + (:vel-y (meters 0.3)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.8444445) + (:fade-a -0.82222223) + (:friction 0.7) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.15)) + (:next-launcher 49) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-red-eco-spinkick + :id 7 + :duration (seconds 0.035) + :linger-duration (seconds 1.5) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 50) (sp-item 51) (sp-item 52 :flags (sp5))) + ) + +;; failed to figure out what this is: +(defpart 50 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 32.0) + (:a 8.0 56.0) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.4222223) + (:fade-a -0.35555556) + (:accel-y (meters 0.00008333333)) + (:timer (seconds 0.6)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.3)) + (:next-launcher 49) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + ) + ) + +;; failed to figure out what this is: +(defpart 49 + :init-specs ((:fade-r -0.7111111) (:fade-g 0.7111111) (:fade-b 0.35555556)) + ) + +;; failed to figure out what this is: +(defpart 51 + :init-specs ((:texture (common-white common)) + (:num 0.66) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 64.0 8.0) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.8444445) + (:fade-a -0.82222223) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.15)) + (:next-launcher 49) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.1)) + ) + ) + +;; failed to figure out what this is: +(defpart 52 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:a 64.0) + (:fade-a -4.0) + (:accel-y (meters 0.00008333333)) + (:timer (seconds 0.035)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-eco-blue + :id 8 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 59 :flags (sp3) :binding 53) + (sp-item 53 :fade-after (meters 40) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 60) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 80) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 100) :flags (sp2 sp3) :binding 54) + (sp-item 53 :fade-after (meters 130) :flags (sp2 sp3) :binding 54) + (sp-item 53 :flags (sp2 sp3) :binding 54) + (sp-item 54 :flags (sp2 sp3) :binding 55) + (sp-item 54 :flags (sp2 sp3) :binding 56) + (sp-item 54 :flags (sp2 sp3) :binding 57) + (sp-item 54 :flags (sp2 sp3) :binding 55) + (sp-item 54 :flags (sp2 sp3) :binding 56) + (sp-item 54 :flags (sp2 sp3) :binding 57) + (sp-item 55 :fade-after (meters 60) :flags (sp2) :binding 58) + (sp-item 56 :fade-after (meters 70) :flags (sp2) :binding 58) + (sp-item 57 :fade-after (meters 80) :flags (sp2) :binding 58) + (sp-item 55 :fade-after (meters 90) :flags (sp2) :binding 58) + (sp-item 56 :fade-after (meters 100) :flags (sp2) :binding 58) + (sp-item 57 :fade-after (meters 100) :flags (sp2) :binding 58) + (sp-item 58 :flags (sp2)) + ) + ) + +;; failed to figure out what this is: +(defpart 59 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +;; failed to figure out what this is: +(defpart 53 + :init-specs ((:texture (common-white common)) + (:num 6.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.15)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 32.0 96.0) + (:b 128.0 128.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 60) + ) + ) + +;; failed to figure out what this is: +(defpart 60 + :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5))) + ) + +;; failed to figure out what this is: +(defpart 54 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.2) (meters 0.1)) + (:scale-x (meters 0.8) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 192.0) + (:a 32.0 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees 269.52002) (degrees 208.99998)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 61) + ) + ) + +;; failed to figure out what this is: +(defpart 61 + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) + ) + +;; failed to figure out what this is: +(defpart 55 + :init-specs ((:texture (common-white common)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 56 + :init-specs ((:texture (common-white common)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 57 + :init-specs ((:texture (common-white common)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 58 + :init-specs ((:texture (common-white common)) + (:num 0.2 0.2) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 96.0 64.0) + (:timer (seconds 0.017)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-eco-blue-collect + :id 9 + :duration (seconds 0.5) + :linger-duration (seconds 2) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 67 :flags (sp3) :binding 63) + (sp-item 63 :flags (sp2 sp3) :binding 64) + (sp-item 63 :flags (sp2 sp3) :binding 65) + (sp-item 63 :flags (sp2 sp3) :binding 64) + (sp-item 63 :flags (sp2 sp3) :binding 65) + (sp-item 63 :flags (sp2 sp3) :binding 66) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 64 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 65 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + (sp-item 66 :fade-after (meters 40) :flags (sp2)) + ) + ) + +;; failed to figure out what this is: +(defpart 67 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 192.0) + (:a 64.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 68) + ) + ) + +;; failed to figure out what this is: +(defpart 63 + :init-specs ((:texture (common-white common)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.75) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 127.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 64 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 65 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 66 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-vent-blue-active + :id 10 + :bounds (static-bspherem 0 5 0 5) + :parts ((sp-item 72 :fade-after (meters 140) :falloff-to (meters 140) :binding 69) + (sp-item 72 :fade-after (meters 140) :falloff-to (meters 140) :binding 70) + (sp-item 72 :fade-after (meters 140) :falloff-to (meters 140) :binding 71) + (sp-item 73) + (sp-item 74 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 75 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 76 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 71 :fade-after (meters 30) :falloff-to (meters 30) :flags (sp2)) + (sp-item 70 :fade-after (meters 60) :falloff-to (meters 60) :flags (sp2)) + (sp-item 69 :fade-after (meters 80) :falloff-to (meters 80) :flags (sp2)) + (sp-item 71 :fade-after (meters 90) :falloff-to (meters 90) :flags (sp2)) + (sp-item 70 :fade-after (meters 100) :falloff-to (meters 100) :flags (sp2)) + (sp-item 69 :fade-after (meters 110) :falloff-to (meters 110) :flags (sp2)) + (sp-item 71 :fade-after (meters 120) :falloff-to (meters 120) :flags (sp2)) + (sp-item 70 :fade-after (meters 120) :falloff-to (meters 120) :flags (sp2)) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-vent-blue-inactive + :id 11 + :bounds (static-bspherem 0 5 0 5) + :parts ((sp-item 72 :fade-after (meters 100)) (sp-item 73)) + ) + +;; failed to figure out what this is: +(defpart 73 + :init-specs ((:texture (common-white common)) + (:num 0.1 1.0) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 1.4)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:fade-a -0.2) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 72 + :init-specs ((:texture (common-white common)) + (:num 0.05 0.1) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 192.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 69 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 70 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 71 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 74 + :init-specs ((:texture (common-white common)) + (:num 0.1 0.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 75 + :init-specs ((:texture (common-white common)) + (:num 0.2 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 76 + :init-specs ((:texture (common-white common)) + (:num 0.3 0.1) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.035)) + (:next-launcher 62) + ) + ) + +;; failed to figure out what this is: +(defpart 62 + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-eco-red + :id 12 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 81 :flags (sp3) :binding 77) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 77 :flags (sp2 sp3) :binding 78) + (sp-item 78 :flags (sp2 sp3) :binding 79) + (sp-item 78 :flags (sp2 sp3) :binding 79) + (sp-item 78 :flags (sp2 sp3) :binding 79) + (sp-item 79 :fade-after (meters 100) :flags (sp2 sp3) :binding 80) + (sp-item 79 :fade-after (meters 100) :flags (sp2 sp3) :binding 80) + (sp-item 79 :fade-after (meters 100) :flags (sp2 sp3) :binding 80) + (sp-item 80 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 80 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 80 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + ) + ) + +;; failed to figure out what this is: +(defpart 81 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +;; failed to figure out what this is: +(defpart 77 + :init-specs ((:texture (common-white common)) + (:num 6.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.15) (meters 0.2)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 24.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 82) + ) + ) + +;; failed to figure out what this is: +(defpart 82 + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) + ) + +;; failed to figure out what this is: +(defpart 78 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 0.1)) + (:scale-x (meters 0.6) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 83) + ) + ) + +;; failed to figure out what this is: +(defpart 83 + :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5))) + ) + +;; failed to figure out what this is: +(defpart 79 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.07) (meters 0.03)) + (:scale-x (meters 0.6) (meters 0.6)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:vel-x (meters 0.11259259)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 83) + ) + ) + +;; failed to figure out what this is: +(defpart 80 + :init-specs ((:texture (common-white common)) + (:num 0.1 1.0) + (:scale-x (meters 0.4) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.00038095238)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 84) + ) + ) + +;; failed to figure out what this is: +(defpart 84 + :init-specs ((:fade-g 0.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-eco-red-collect + :id 13 + :duration (seconds 0.5) + :linger-duration (seconds 2) + :flags (sp0) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 87 :flags (sp3) :binding 85) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 85 :flags (sp2 sp3) :binding 86) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + (sp-item 86 :fade-after (meters 40) :flags (sp2)) + ) + ) + +;; failed to figure out what this is: +(defpart 87 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 68) + ) + ) + +;; failed to figure out what this is: +(defpart 85 + :init-specs ((:texture (common-white common)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 86 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.005555555)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.0) + (:fade-a -0.22857143) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.18)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 88) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-vent-red-active + :id 14 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 92 :fade-after (meters 30) :period (seconds 1.1) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 90) :period (seconds 3.12) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 130) :period (seconds 1.76) :length (seconds 0.017) :binding 89) + (sp-item 92 :fade-after (meters 170) :period (seconds 2.67) :length (seconds 0.017) :binding 89) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 89 :flags (sp2 sp3) :binding 90) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 90 :flags (sp2 sp3) :binding 91) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 50) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 60) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 70) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 80) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 90) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 91 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 93 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 94) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-vent-red-inactive + :id 15 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 93 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 94)) + ) + +;; failed to figure out what this is: +(defpart 94 + :init-specs ((:texture (common-white common)) + (:num 0.6 0.6) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.9) (meters 1.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 93 + :init-specs ((:texture (common-white common)) + (:num 0.1 0.3) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.1)) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 92 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:conerot-x (degrees 0) (degrees 5)) + (:rotate-y (degrees 0) (degrees 360)) + ) + ) + +;; failed to figure out what this is: +(defpart 89 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.5)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.28444445) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 90 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 0.1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 91 + :init-specs ((:texture (common-white common)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.0023809525)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.07619048) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 88) + ) + ) + +;; failed to figure out what this is: +(defpart 88 + :init-specs ((:fade-g 0.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-vent-yellow-active + :id 16 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 98 :fade-after (meters 40) :period (seconds 1.1) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 80) :period (seconds 3.12) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 100) :period (seconds 1.76) :length (seconds 0.017) :binding 95) + (sp-item 98 :fade-after (meters 130) :period (seconds 2.67) :length (seconds 0.017) :binding 95) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 95 :flags (sp2 sp3) :binding 96) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 96 :flags (sp2 sp3) :binding 97) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 60) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 70) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 80) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 90) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 97 :fade-after (meters 90) :falloff-to (meters 100) :flags (sp2)) + (sp-item 99 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 100) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-part-vent-yellow-inactive + :id 17 + :bounds (static-bspherem 0 3 0 5) + :parts ((sp-item 99 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 100)) + ) + +;; failed to figure out what this is: +(defpart 100 + :init-specs ((:texture (common-white common)) + (:num 0.6 0.6) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.9) (meters 1.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 92.0 32.0) + (:g 32.0 92.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 99 + :init-specs ((:texture (common-white common)) + (:num 0.1 0.3) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.1)) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 98 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:timer (seconds 1.25)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:conerot-x (degrees 0) (degrees 5)) + (:rotate-y (degrees 0) (degrees 360)) + ) + ) + +;; failed to figure out what this is: +(defpart 95 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 0.2) (meters 0.2)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 128.0) + (:vel-x (meters 0.10666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a -0.34133333) + (:timer (seconds 1.25)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 96 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.2)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 128.0) + (:vel-x (meters 0.11259259)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a -0.34133333) + (:timer (seconds 1.25)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 97 + :init-specs ((:texture (common-white common)) + (:num 0.5 2.0) + (:y (meters -0.05)) + (:scale-x (meters 0.4) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0023333333) (meters 0.0016666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.024242423) + (:accel-y (meters -0.000100000005) (meters -0.0003)) + (:friction 0.93) + (:timer (seconds 0.1) (seconds 0.697)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.3)) + (:next-launcher 101) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.05)) + ) + ) + +;; failed to figure out what this is: +(defpart 101 + :init-specs ((:fade-r 0.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-eco-yellow + :id 18 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 106 :flags (sp3) :binding 102) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 102 :flags (sp2 sp3) :binding 103) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 103 :flags (sp2 sp3) :binding 104) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 104 :fade-after (meters 100) :flags (sp2 sp3) :binding 105) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + (sp-item 105 :fade-after (meters 90) :falloff-to (meters 110) :flags (sp2)) + ) + ) + +;; failed to figure out what this is: +(defpart 106 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +;; failed to figure out what this is: +(defpart 102 + :init-specs ((:texture (common-white common)) + (:num 5.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.15) (meters 0.2)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 16.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 107) + ) + ) + +;; failed to figure out what this is: +(defpart 107 + :init-specs ((:fade-a -0.10666667) (:timer (seconds 0.5))) + ) + +;; failed to figure out what this is: +(defpart 103 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.75) (meters 0.1)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 108) + ) + ) + +;; failed to figure out what this is: +(defpart 108 + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) + ) + +;; failed to figure out what this is: +(defpart 104 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.12) (meters 0.03)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:vel-x (meters 0.11259259)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 108) + ) + ) + +;; failed to figure out what this is: +(defpart 105 + :init-specs ((:texture (common-white common)) + (:num 0.1 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 109) + ) + ) + +;; failed to figure out what this is: +(defpart 109 + :init-specs ((:fade-g 0.0)) + ) + +;; failed to figure out what this is: +(defpartgroup group-eco-yellow-collect + :id 19 + :duration (seconds 0.5) + :linger-duration (seconds 2) + :bounds (static-bspherem 0 0 0 2) + :parts ((sp-item 112 :flags (sp3) :binding 110) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 110 :flags (sp2 sp3) :binding 111) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + (sp-item 111 :fade-after (meters 40) :flags (sp2)) + ) + ) + +;; failed to figure out what this is: +(defpart 112 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 64.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 68) + ) + ) + +;; failed to figure out what this is: +(defpart 110 + :init-specs ((:texture (common-white common)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega (degrees 0) (degrees 360)) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)) + ) + ) + +;; failed to figure out what this is: +(defpart 111 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:next-time (seconds 0.8)) + (:next-launcher 109) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-fuel-cell-starburst + :id 20 + :bounds (static-bspherem 0 0.5 0 1.5) + :parts ((sp-item 113 :fade-after (meters 35)) + (sp-item 114 :fade-after (meters 20)) + (sp-item 115 :flags (sp1 sp3)) + (sp-item 116 :flags (sp1 sp3)) + ) + ) + +;; failed to figure out what this is: +(defpart 113 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 0.5) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + (:next-time (seconds 0.3)) + (:next-launcher 117) + ) + ) + +;; failed to figure out what this is: +(defpart 117 + :init-specs ((:fade-a -0.53333336)) + ) + +;; failed to figure out what this is: +(defpart 114 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 0.06) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + (:next-time (seconds 0.25)) + (:next-launcher 117) + ) + ) + +;; failed to figure out what this is: +(defpart 115 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:rot-z (degrees 0)) + (:scale-y (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 64.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +;; failed to figure out what this is: +(defpart 116 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0)) + (:scale-y (meters 3.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds -0.005)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root-prim) + ) + ) + +;; definition for function sparticle-track-root-money +;; WARN: Return type mismatch int vs none. +(defun sparticle-track-root-money ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) + (let ((v1-2 (-> arg1 key 0 proc))) + (when (!= (-> v1-2 type) hud-money) + (let ((v1-4 (-> v1-2 root trans))) + (set! (-> arg2 x) (-> v1-4 x)) + (set! (-> arg2 y) (+ 2048.0 (-> v1-4 y))) + (set! (-> arg2 z) (-> v1-4 z)) + ) + ) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +(defpart 118 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 0.5) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.3)) + (:next-launcher 119) + ) + ) + +;; failed to figure out what this is: +(defpart 119 + :init-specs ((:fade-a -0.53333336)) + ) + +;; failed to figure out what this is: +(defpart 120 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 0.06) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:next-time (seconds 0.25)) + (:next-launcher 119) + ) + ) + +;; failed to figure out what this is: +(defpart 121 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 2.5)) + (:rot-z (degrees 0)) + (:scale-y (meters 2)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 32.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds 12)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:func 'sparticle-track-root-money) + ) + ) + +;; failed to figure out what this is: +(defpart 122 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-z (degrees 0)) + (:scale-y (meters 2.5)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 32.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds 12)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)) + (:func 'sparticle-track-root-money) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-money-starburst :id 21 :bounds (static-bspherem 0 0.5 0 1.5) :parts ((sp-item 123))) + +;; failed to figure out what this is: +(defpartgroup group-buzzer-effect :id 22 :bounds (static-bspherem 0 0 0 1) :parts ((sp-item 124))) + +;; failed to figure out what this is: +(defpartgroup group-blue-collect + :id 23 + :duration (seconds 0.017) + :linger-duration (seconds 4) + :flags (sp0) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 125) (sp-item 126) (sp-item 127)) + ) + +;; failed to figure out what this is: +(defpart 125 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +;; failed to figure out what this is: +(defpart 126 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +;; failed to figure out what this is: +(defpart 127 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 129) + ) + ) + +;; failed to figure out what this is: +(defpartgroup group-yellow-collect + :id 24 + :duration (seconds 0.017) + :linger-duration (seconds 4) + :flags (sp0) + :bounds (static-bspherem 0 0 0 8) + :parts ((sp-item 130) (sp-item 131) (sp-item 132)) + ) + +;; failed to figure out what this is: +(defpart 130 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +;; failed to figure out what this is: +(defpart 131 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +;; failed to figure out what this is: +(defpart 132 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 129) + ) + ) + +;; failed to figure out what this is: +(defpart 129 + :init-specs ((:scalevel-x (meters -0.025)) (:scalevel-y :copy scalevel-x)) + ) + +;; failed to figure out what this is: +(defpartgroup group-red-collect + :id 25 + :duration (seconds 0.017) + :linger-duration (seconds 4) + :flags (sp0) + :bounds (static-bspherem 0 0 0 12) + :parts ((sp-item 133) (sp-item 134) (sp-item 135)) + ) + +;; failed to figure out what this is: +(defpart 133 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +;; failed to figure out what this is: +(defpart 134 + :init-specs ((:texture (motion-blur-part level-default-sprite)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 128) + ) + ) + +;; failed to figure out what this is: +(defpart 135 + :init-specs ((:texture (common-white common)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 129) + ) + ) diff --git a/test/decompiler/reference/jakx/engine/debug/debug-sphere_REF.gc b/test/decompiler/reference/jakx/engine/debug/debug-sphere_REF.gc new file mode 100644 index 0000000000..f212b0fd2c --- /dev/null +++ b/test/decompiler/reference/jakx/engine/debug/debug-sphere_REF.gc @@ -0,0 +1,103 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for function make-debug-sphere-table +;; INFO: Used lq/sq +(defun make-debug-sphere-table ((arg0 vector-array) (arg1 float) (arg2 float)) + "Create a table of lines on a sphere." + (let ((s2-0 (new-stack-vector0)) + (f30-0 1.0) + (s5-0 0) + ) + (set-vector! s2-0 0.0 0.0 0.0 1.0) + (dotimes (s1-0 (the int arg2)) + (let ((f28-0 (* f30-0 (sin (* (the float s1-0) (/ 32768.0 arg2))))) + (f26-0 (* f30-0 (sin (* (the float (+ s1-0 1)) (/ 32768.0 arg2))))) + (s0-0 (new-stack-vector0)) + (sv-80 (new 'stack-no-clear 'vector)) + ) + (set! (-> sv-80 quad) (the-as uint128 0)) + (let ((sv-96 (new 'stack-no-clear 'vector))) + (set! (-> sv-96 quad) (the-as uint128 0)) + (set! (-> s0-0 y) (+ (-> s2-0 y) (* (cos (* (the float s1-0) (/ 32768.0 arg2))) f30-0))) + (set! (-> sv-80 y) (-> s0-0 y)) + (set! (-> sv-96 y) (+ (-> s2-0 y) (* (cos (* (the float (+ s1-0 1)) (/ 32768.0 arg2))) f30-0))) + (let ((sv-112 0)) + (while (< sv-112 (the int arg1)) + (set! (-> s0-0 x) (+ (-> s2-0 x) (* (cos (* (the float sv-112) (/ 65536.0 arg1))) f28-0))) + (set! (-> s0-0 z) (+ (-> s2-0 z) (* (sin (* (the float sv-112) (/ 65536.0 arg1))) f28-0))) + (set! (-> sv-80 x) (+ (-> s2-0 x) (* (cos (* (the float (+ sv-112 1)) (/ 65536.0 arg1))) f28-0))) + (set! (-> sv-80 z) (+ (-> s2-0 z) (* (sin (* (the float (+ sv-112 1)) (/ 65536.0 arg1))) f28-0))) + (set! (-> sv-96 x) (+ (-> s2-0 x) (* (cos (* (the float sv-112) (/ 65536.0 arg1))) f26-0))) + (set! (-> sv-96 z) (+ (-> s2-0 z) (* (sin (* (the float sv-112) (/ 65536.0 arg1))) f26-0))) + (set! (-> arg0 data s5-0 quad) (-> s0-0 quad)) + (set! (-> arg0 data (+ s5-0 1) quad) (-> sv-80 quad)) + (set! (-> arg0 data (+ s5-0 2) quad) (-> sv-96 quad)) + (+! s5-0 3) + (+! sv-112 1) + ) + ) + ) + ) + ) + (set! (-> arg0 length) s5-0) + ) + arg0 + ) + +;; this part is debug only +(when *debug-segment* +;; definition for symbol *debug-sphere-table*, type (array vector-array) +(define *debug-sphere-table* (new 'debug 'boxed-array vector-array 10)) + +) +;; definition for function add-debug-sphere-from-table +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defun add-debug-sphere-from-table ((arg0 bucket-id) (arg1 vector) (arg2 meters) (arg3 rgba) (arg4 int)) + "Draw a sphere out of debug lines, using the precomputed table of lines." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (if (zero? (-> *debug-sphere-table* arg4)) + (set! (-> *debug-sphere-table* arg4) + (make-debug-sphere-table (new 'debug 'vector-array (* (* 3 arg4) arg4)) (the float arg4) (the float arg4)) + ) + ) + (let* ((sv-32 (-> *debug-sphere-table* arg4)) + (sv-36 (the-as vector (new-stack-vector0))) + (s2-1 (new-stack-vector0)) + (s1-1 (new-stack-vector0)) + (s0-0 (the-as object (-> sv-32 data))) + ) + (.lvf vf1 (&-> arg1 quad)) + (.mov vf2 arg2) + (countdown (s4-1 (/ (-> sv-32 length) 3)) + (.lvf vf3 (&-> (the-as (inline-array vector) s0-0) 0 quad)) + (.lvf vf4 (&-> (the-as (inline-array vector) s0-0) 1 quad)) + (.lvf vf5 (&-> (the-as (inline-array vector) s0-0) 2 quad)) + (set! s0-0 (-> (the-as (inline-array vector) s0-0) 3)) + (.mul.x.vf vf3 vf3 vf2) + (.mul.x.vf vf4 vf4 vf2) + (.mul.x.vf vf5 vf5 vf2) + (.add.vf vf3 vf3 vf1) + (.add.vf vf4 vf4 vf1) + (.add.vf vf5 vf5 vf1) + (.svf (&-> s2-1 quad) vf3) + (.svf (&-> s1-1 quad) vf4) + (.svf (&-> sv-36 quad) vf5) + (add-debug-line #t arg0 s2-1 s1-1 arg3 #f (the-as rgba -1)) + (add-debug-line #t arg0 s2-1 sv-36 arg3 #f (the-as rgba -1)) + ) + ) + 0 + (none) + ) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/debug/editable-h_REF.gc b/test/decompiler/reference/jakx/engine/debug/editable-h_REF.gc new file mode 100644 index 0000000000..e2e411f12f --- /dev/null +++ b/test/decompiler/reference/jakx/engine/debug/editable-h_REF.gc @@ -0,0 +1,1386 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) + +;; definition for symbol *editable-temp-id*, type int +(define *editable-temp-id* 0) + +;; definition for symbol *editable-default-name*, type string +(define *editable-default-name* (new 'debug 'string 32 "undefined")) + +;; definition for function editable-command->string +(defun editable-command->string ((arg0 editable-command)) + (case arg0 + (((editable-command select-current-face)) + "select-current-face" + ) + (((editable-command camera-move)) + "camera-move" + ) + (((editable-command select-current-region)) + "select-current-region" + ) + (((editable-command insert-sample)) + "insert-sample" + ) + (((editable-command print-region-info)) + "print-region-info" + ) + (((editable-command camera-rotate)) + "camera-rotate" + ) + (((editable-command select-user1)) + "select-user1" + ) + (((editable-command select-add)) + "select-add" + ) + (((editable-command camera-xz)) + "camera-xz" + ) + (((editable-command pick-loc)) + "pick-loc" + ) + (((editable-command insert-box)) + "insert-box" + ) + (((editable-command insert-entity)) + "insert-entity" + ) + (((editable-command translate-y-level)) + "translate-y-level" + ) + (((editable-command select-user11)) + "select-user11" + ) + (((editable-command select-user10)) + "select-user10" + ) + (((editable-command select-all)) + "select-all" + ) + (((editable-command copy-region)) + "copy-region" + ) + (((editable-command select-none)) + "select-none" + ) + (((editable-command camera-zoom)) + "camera-zoom" + ) + (((editable-command delete-region)) + "delete-region" + ) + (((editable-command select-toggle)) + "select-toggle" + ) + (((editable-command copy)) + "copy" + ) + (((editable-command pick-yes-no)) + "pick-yes-no" + ) + (((editable-command insert-light)) + "insert-light" + ) + (((editable-command none)) + "none" + ) + (((editable-command select-user4)) + "select-user4" + ) + (((editable-command resize)) + "resize" + ) + (((editable-command flip-side)) + "flip-side" + ) + (((editable-command refresh-filter)) + "refresh-filter" + ) + (((editable-command cancel)) + "cancel" + ) + (((editable-command save)) + "save" + ) + (((editable-command select-user6)) + "select-user6" + ) + (((editable-command region-new)) + "region-new" + ) + (((editable-command snap-to-ground)) + "snap-to-ground" + ) + (((editable-command pick-target)) + "pick-target" + ) + (((editable-command snap-y)) + "snap-y" + ) + (((editable-command select-user8)) + "select-user8" + ) + (((editable-command select-face)) + "select-face" + ) + (((editable-command exit)) + "exit" + ) + (((editable-command drag-move)) + "drag-move" + ) + (((editable-command edit-plane-set)) + "edit-plane-set" + ) + (((editable-command select-region)) + "select-region" + ) + (((editable-command delete)) + "delete" + ) + (((editable-command select-user0)) + "select-user0" + ) + (((editable-command camera-xy)) + "camera-xy" + ) + (((editable-command select-current-owner)) + "select-current-owner" + ) + (((editable-command region-add)) + "region-add" + ) + (((editable-command insert-sphere)) + "insert-sphere" + ) + (((editable-command insert-plane)) + "insert-plane" + ) + (((editable-command drag-rotate)) + "drag-rotate" + ) + (((editable-command select-one)) + "select-one" + ) + (((editable-command update-game)) + "update-game" + ) + (((editable-command select-user2)) + "select-user2" + ) + (((editable-command select-user3)) + "select-user3" + ) + (((editable-command snap-rotate)) + "snap-rotate" + ) + (((editable-command rotate-level)) + "rotate-level" + ) + (((editable-command select-prim)) + "select-prim" + ) + (((editable-command drag-none)) + "drag-none" + ) + (((editable-command select-current-prim)) + "select-current-prim" + ) + (((editable-command select-user5)) + "select-user5" + ) + (((editable-command insert-wall)) + "insert-wall" + ) + (((editable-command insert-simple-camera)) + "insert-sample-camera" + ) + (((editable-command insert-face)) + "insert-face" + ) + (((editable-command region-set)) + "region-set" + ) + (((editable-command select-user7)) + "select-user7" + ) + (((editable-command insert-point)) + "insert-point" + ) + (((editable-command drag-resize)) + "drag-resize" + ) + (((editable-command kill)) + "kill" + ) + (((editable-command snap-xz)) + "snap-xz" + ) + (((editable-command select-user12)) + "select-user12" + ) + (((editable-command camera-tumble)) + "camera-tumble" + ) + (((editable-command select-user9)) + "select-user9" + ) + (((editable-command edit-plane-clear)) + "edit-plane-clear" + ) + (((editable-command drag-scale)) + "drag-scale" + ) + (((editable-command load)) + "load" + ) + (((editable-command select-remove)) + "select-remove" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition for function editable-filter->string +;; WARN: Return type mismatch basic vs string. +(defun editable-filter->string ((arg0 editable-filter) (arg1 basic)) + (if (= (logand arg0 (editable-filter target)) (editable-filter target)) + (format arg1 "target ") + ) + (if (= (logand arg0 (editable-filter city_vis)) (editable-filter city_vis)) + (format arg1 "city_vis ") + ) + (if (= (logand arg0 (editable-filter water-command)) (editable-filter water-command)) + (format arg1 "water-command ") + ) + (if (= (logand arg0 (editable-filter user-setting)) (editable-filter user-setting)) + (format arg1 "user-setting ") + ) + (if (= (logand arg0 (editable-filter sample)) (editable-filter sample)) + (format arg1 "sample ") + ) + (if (= (logand arg0 (editable-filter light)) (editable-filter light)) + (format arg1 "light ") + ) + (if (= (logand arg0 (editable-filter part)) (editable-filter part)) + (format arg1 "part ") + ) + (if (= (logand arg0 (editable-filter unknown)) (editable-filter unknown)) + (format arg1 "unknown ") + ) + (if (= (logand arg0 (editable-filter entity)) (editable-filter entity)) + (format arg1 "entity ") + ) + (if (= (logand arg0 (editable-filter data)) (editable-filter data)) + (format arg1 "data ") + ) + (if (= (logand arg0 (editable-filter water)) (editable-filter water)) + (format arg1 "water ") + ) + (if (= (logand arg0 (editable-filter cam-setting)) (editable-filter cam-setting)) + (format arg1 "cam-setting ") + ) + (if (= (logand (editable-filter selected) arg0) (editable-filter selected)) + (format arg1 "selected ") + ) + (if (= (logand arg0 (editable-filter none)) (editable-filter none)) + (format arg1 "none ") + ) + (if (= (logand arg0 (editable-filter camera)) (editable-filter camera)) + (format arg1 "camera ") + ) + (if (= (logand arg0 (editable-filter load)) (editable-filter load)) + (format arg1 "load ") + ) + (if (= (logand arg0 (editable-filter sound)) (editable-filter sound)) + (format arg1 "sound ") + ) + (the-as string arg1) + ) + +;; definition of type editable-region +(deftype editable-region (basic) + ((changed symbol) + (locked symbol) + (id uint64) + (filter editable-filter) + (tree symbol) + (level string) + (on-enter pair) + (on-inside pair) + (on-exit pair) + ) + (:methods + (new (symbol type) _type_) + (editable-region-method-9 () none) + (editable-region-method-10 () none) + (editable-region-method-11 () none) + (editable-region-method-12 () none) + ) + ) + +;; definition for method 3 of type editable-region +(defmethod inspect ((this editable-region)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tchanged: ~A~%" (-> this changed)) + (format #t "~1Tlocked: ~A~%" (-> this locked)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tfilter: ~D~%" (-> this filter)) + (format #t "~1Ttree: ~A~%" (-> this tree)) + (format #t "~1Tlevel: ~A~%" (-> this level)) + (format #t "~1Ton-enter: ~A~%" (-> this on-enter)) + (format #t "~1Ton-inside: ~A~%" (-> this on-inside)) + (format #t "~1Ton-exit: ~A~%" (-> this on-exit)) + (label cfg-4) + this + ) + +;; definition of type editable +(deftype editable (basic) + ((flags editable-flag) + (name string) + (id uint32) + (region editable-region) + (owner pair) + (prefix basic) + ) + (:methods + (editable-method-9 () none) + (editable-method-10 () none) + (editable-method-11 () none) + (editable-method-12 () none) + (editable-method-13 () none) + (editable-method-14 () none) + (editable-method-15 () none) + (editable-method-16 () none) + (editable-method-17 () none) + (editable-method-18 () none) + (editable-method-19 () none) + (editable-method-20 () none) + (editable-method-21 () none) + (editable-method-22 () none) + (editable-method-23 () none) + (editable-method-24 () none) + (editable-method-25 () none) + (editable-method-26 () none) + (editable-method-27 () none) + (editable-method-28 () none) + (editable-method-29 () none) + (editable-method-30 () none) + (editable-method-31 () none) + (editable-method-32 () none) + (editable-method-33 () none) + (editable-method-34 () none) + (editable-method-35 () none) + ) + ) + +;; definition for method 3 of type editable +(defmethod inspect ((this editable)) + (when (not this) + (set! this this) + (goto cfg-30) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (label cfg-30) + this + ) + +;; definition of type editable-array +(deftype editable-array (basic) + ((allocated-length int32) + (length int32) + (region editable-region) + (backup-region editable-region) + (region-lock? symbol) + (move-lock? symbol) + (move-speed float) + (selection (array editable)) + (filter editable-filter 2) + (target editable) + (target-mode editable-command) + (target-command editable-command) + (target-message string) + (edit-plane editable-plane) + (edit-plane-center vector :inline) + (edit-plane-normal vector :inline) + (level-offset vector :inline) + (level-info-id uint32) + (level uint32) + (edit-param0 float) + (data editable :dynamic) + ) + (:methods + (new (symbol type int) _type_) + (editable-array-method-9 () none) + (editable-array-method-10 () none) + (editable-array-method-11 () none) + (editable-array-method-12 () none) + (editable-array-method-13 () none) + (editable-array-method-14 () none) + (editable-array-method-15 () none) + (editable-array-method-16 () none) + (editable-array-method-17 () none) + (editable-array-method-18 () none) + (editable-array-method-19 () none) + ) + ) + +;; definition for method 3 of type editable-array +(defmethod inspect ((this editable-array)) + (when (not this) + (set! this this) + (goto cfg-7) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tallocated-length: ~D~%" (-> this allocated-length)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Tbackup-region: ~A~%" (-> this backup-region)) + (format #t "~1Tregion-lock?: ~A~%" (-> this region-lock?)) + (format #t "~1Tmove-lock?: ~A~%" (-> this move-lock?)) + (format #t "~1Tmove-speed: ~f~%" (-> this move-speed)) + (format #t "~1Tselection: ~`basic`P~%" (-> this selection)) + (format #t "~1Tfilter[2] @ #x~X~%" (-> this filter)) + (format #t "~1Ttarget: ~A~%" (-> this target)) + (format #t "~1Ttarget-mode: ~D~%" (-> this target-mode)) + (format #t "~1Ttarget-command: ~D~%" (-> this target-command)) + (format #t "~1Ttarget-message: ~A~%" (-> this target-message)) + (format #t "~1Tedit-plane: ~A~%" (-> this edit-plane)) + (format #t "~1Tedit-plane-center: ~`vector`P~%" (-> this edit-plane-center)) + (format #t "~1Tedit-plane-normal: ~`vector`P~%" (-> this edit-plane-normal)) + (format #t "~1Tlevel-offset: ~`vector`P~%" (-> this level-offset)) + (format #t "~1Tlevel-info-id: ~D~%" (-> this level-info-id)) + (format #t "~1Tlevel: ~A~%" (-> this level)) + (format #t "~1Tedit-param0: ~f~%" (-> this edit-param0)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (dotimes (s5-0 (-> this length)) + (format #t "~T [~D]~1Tdata: ~A~%" s5-0 (-> this data s5-0)) + ) + (label cfg-7) + this + ) + +;; definition for method 0 of type editable-array +(defmethod new editable-array ((allocation symbol) (type-to-make type) (arg0 int)) + (let ((s5-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* arg0 4)))))) + (set! (-> s5-0 allocated-length) arg0) + (set! (-> s5-0 length) 0) + (set! (-> s5-0 region) #f) + (set! (-> s5-0 backup-region) #f) + (set! (-> s5-0 region-lock?) #f) + (set! (-> s5-0 move-lock?) #f) + (set! (-> s5-0 target) #f) + (set! (-> s5-0 target-command) (editable-command none)) + (set! (-> s5-0 target-message) #f) + (set! (-> s5-0 selection) + (the-as (array editable) ((method-of-type array new) allocation array editable arg0)) + ) + (set! (-> s5-0 edit-plane) #f) + (set! (-> s5-0 filter 0) (editable-filter + none + unknown + sound + part + user-setting + cam-setting + load + water-command + city_vis + sample + light + entity + ) + ) + (set! (-> s5-0 filter 1) (editable-filter camera target water data city_vis sample light entity selected)) + (dotimes (v1-5 arg0) + (set! (-> s5-0 data v1-5) #f) + (set! (-> s5-0 selection v1-5) #f) + ) + s5-0 + ) + ) + +;; definition of type editable-point +(deftype editable-point (editable) + ((radius meters) + (trans vector :inline) + ) + (:methods + (new (symbol type vector editable-region) _type_) + ) + ) + +;; definition for method 3 of type editable-point +(defmethod inspect ((this editable-point)) + (when (not this) + (set! this this) + (goto cfg-30) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tradius: (meters ~m)~%" (-> this radius)) + (format #t "~1Ttrans: ~`vector`P~%" (-> this trans)) + (label cfg-30) + this + ) + +;; definition for method 0 of type editable-point +;; INFO: Used lq/sq +(defmethod new editable-point ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (set! (-> gp-0 name) "undefined") + (set! (-> gp-0 prefix) "undefined") + (let* ((s3-0 gp-0) + (s2-0 (method-of-object s3-0 editable-method-23)) + ) + (set! arg1 (cond + (arg1 + (empty) + arg1 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s2-0) + ) + (set! (-> gp-0 trans quad) (-> arg0 quad)) + (set! (-> gp-0 radius) 2048.0) + (set! (-> gp-0 owner) '()) + gp-0 + ) + ) + +;; definition of type editable-sphere +(deftype editable-sphere (editable-point) + () + (:methods + (new (symbol type vector float editable-region) _type_) + ) + ) + +;; definition for method 3 of type editable-sphere +(defmethod inspect ((this editable-sphere)) + (when (not this) + (set! this this) + (goto cfg-30) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tradius: (meters ~m)~%" (-> this radius)) + (format #t "~1Ttrans: ~`vector`P~%" (-> this trans)) + (label cfg-30) + this + ) + +;; definition for method 0 of type editable-sphere +;; INFO: Used lq/sq +(defmethod new editable-sphere ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 float) (arg2 editable-region)) + (let ((s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> s5-0 region) #f) + (set! (-> s5-0 name) "undefined") + (set! (-> s5-0 prefix) "undefined") + (let* ((s2-0 s5-0) + (s1-0 (method-of-object s2-0 editable-method-23)) + ) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s1-0) + ) + (set! (-> s5-0 trans quad) (-> arg0 quad)) + (set! (-> s5-0 radius) arg1) + (set! (-> s5-0 owner) '()) + s5-0 + ) + ) + +;; definition of type editable-sample +(deftype editable-sample (editable-point) + () + ) + +;; definition for method 3 of type editable-sample +(defmethod inspect ((this editable-sample)) + (when (not this) + (set! this this) + (goto cfg-30) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tradius: (meters ~m)~%" (-> this radius)) + (format #t "~1Ttrans: ~`vector`P~%" (-> this trans)) + (label cfg-30) + this + ) + +;; definition of type editable-light +(deftype editable-light (editable-sphere) + ((direction vector :inline) + (color vector :inline) + (decay-start float) + (ambient-point-ratio float) + (brightness float) + (shadow uint32 :overlay-at (-> direction data 0)) + (shadows float 5) + (shadow-ambi float :overlay-at (-> shadows 0)) + (shadow-dir0 float :overlay-at (-> shadows 1)) + (shadow-dir1 float :overlay-at (-> shadows 2)) + (shadow-dir2 float :overlay-at (-> shadows 3)) + (shadow-dir3 float :overlay-at (-> shadows 4)) + (alt-level basic) + ) + (:methods + (new (symbol type vector float editable-region) _type_) + ) + ) + +;; definition for method 3 of type editable-light +(defmethod inspect ((this editable-light)) + (when (not this) + (set! this this) + (goto cfg-30) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tradius: (meters ~m)~%" (-> this radius)) + (format #t "~1Ttrans: ~`vector`P~%" (-> this trans)) + (format #t "~1Tdirection: ~`vector`P~%" (-> this direction)) + (format #t "~1Tcolor: ~`vector`P~%" (-> this color)) + (format #t "~1Tdecay-start: ~f~%" (-> this decay-start)) + (format #t "~1Tambient-point-ratio: ~f~%" (-> this ambient-point-ratio)) + (format #t "~1Tbrightness: ~f~%" (-> this brightness)) + (format #t "~1Tshadow: ~D~%" (-> this direction x)) + (format #t "~1Tshadows[5] @ #x~X~%" (-> this shadows)) + (format #t "~1Tshadow-ambi: ~f~%" (-> this shadow-ambi)) + (format #t "~1Tshadow-dir0: ~f~%" (-> this shadow-dir0)) + (format #t "~1Tshadow-dir1: ~f~%" (-> this shadow-dir1)) + (format #t "~1Tshadow-dir2: ~f~%" (-> this shadow-dir2)) + (format #t "~1Tshadow-dir3: ~f~%" (-> this shadow-dir3)) + (format #t "~1Talt-level: ~A~%" (-> this alt-level)) + (label cfg-30) + this + ) + +;; definition for method 0 of type editable-light +;; INFO: Used lq/sq +(defmethod new editable-light ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 float) (arg2 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (let* ((s2-0 gp-0) + (s1-0 (method-of-object s2-0 editable-method-23)) + ) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s1-0) + ) + (set! (-> gp-0 trans quad) (-> arg0 quad)) + (set! (-> gp-0 radius) arg1) + (set! (-> gp-0 owner) '()) + (set! (-> gp-0 prefix) (new 'debug 'string 32 *editable-default-name*)) + (let ((s5-1 (new 'debug 'string 32 (the-as string #f)))) + (format s5-1 "~s-~d" (-> gp-0 prefix) *editable-temp-id*) + (set! (-> gp-0 name) s5-1) + ) + (set! *editable-temp-id* (+ *editable-temp-id* 1)) + (set! (-> gp-0 decay-start) 0.5) + (set! (-> gp-0 ambient-point-ratio) 1.0) + (set! (-> gp-0 brightness) 1.0) + (set-vector! (-> gp-0 color) 1.0 1.0 1.0 -1.0) + (set-vector! (-> gp-0 direction) 0.0 0.0 0.0 0.0) + (set! (-> gp-0 shadow-ambi) 1.0) + (set! (-> gp-0 shadow-dir0) 1.0) + (set! (-> gp-0 shadow-dir1) 1.0) + (set! (-> gp-0 shadow-dir2) 1.0) + (set! (-> gp-0 shadow-dir3) 1.0) + (set! (-> gp-0 alt-level) #f) + gp-0 + ) + ) + +;; definition of type editable-entity +(deftype editable-entity (editable-point) + ((angles euler-angles :inline) + (idx int32) + ) + (:methods + (new (symbol type vector float editable-region) _type_) + (editable-entity-method-36 () none) + ) + ) + +;; definition for method 3 of type editable-entity +(defmethod inspect ((this editable-entity)) + (when (not this) + (set! this this) + (goto cfg-30) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tradius: (meters ~m)~%" (-> this radius)) + (format #t "~1Ttrans: ~`vector`P~%" (-> this trans)) + (format #t "~1Tangles: #~%" (-> this angles)) + (format #t "~1Tidx: ~D~%" (-> this idx)) + (label cfg-30) + this + ) + +;; definition for method 0 of type editable-entity +;; INFO: Used lq/sq +(defmethod new editable-entity ((allocation symbol) (type-to-make type) (arg0 vector) (arg1 float) (arg2 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (let* ((s2-0 gp-0) + (s1-0 (method-of-object s2-0 editable-method-23)) + ) + (set! arg2 (cond + (arg2 + (empty) + arg2 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s1-0) + ) + (set! (-> gp-0 trans quad) (-> arg0 quad)) + (set! (-> gp-0 radius) arg1) + (set! (-> gp-0 owner) '()) + (set! (-> gp-0 prefix) (new 'debug 'string 32 "entity")) + (set! (-> gp-0 name) (new 'debug 'string 32 "entity")) + gp-0 + ) + ) + +;; definition of type editable-face +(deftype editable-face (editable) + ((length int32) + (normal vector :inline) + (center vector :inline) + (vertex editable-point 6) + ) + (:methods + (new (symbol type editable-region) _type_) + (editable-face-method-36 () none) + (editable-face-method-37 () none) + ) + ) + +;; definition for method 3 of type editable-face +(defmethod inspect ((this editable-face)) + (when (not this) + (set! this this) + (goto cfg-33) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tnormal: ~`vector`P~%" (-> this normal)) + (format #t "~1Tcenter: ~`vector`P~%" (-> this center)) + (format #t "~1Tvertex[6] @ #x~X~%" (-> this vertex)) + (dotimes (s5-1 (-> this length)) + (format #t "~T [~D]~1Tvertex: ~A~%" s5-1 (-> this vertex s5-1)) + ) + (label cfg-33) + this + ) + +;; definition for method 0 of type editable-face +(defmethod new editable-face ((allocation symbol) (type-to-make type) (arg0 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (set! (-> gp-0 name) "undefined") + (set! (-> gp-0 prefix) "undefined") + (let* ((s4-0 gp-0) + (s3-0 (method-of-object s4-0 editable-method-23)) + ) + (set! arg0 (cond + (arg0 + (empty) + arg0 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s3-0) + ) + (set! (-> gp-0 owner) '()) + gp-0 + ) + ) + +;; definition of type editable-plane +(deftype editable-plane (editable) + ((length int32) + (radius meters) + (vertex editable-point 2) + ) + (:methods + (new (symbol type editable-region) _type_) + (editable-plane-method-36 () none) + (editable-plane-method-37 () none) + ) + ) + +;; definition for method 3 of type editable-plane +(defmethod inspect ((this editable-plane)) + (when (not this) + (set! this this) + (goto cfg-33) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X : (editable-flag " (-> this flags)) + (let ((s5-0 (-> this flags))) + (if (= (logand s5-0 (editable-flag no-save)) (editable-flag no-save)) + (format #t "no-save ") + ) + (if (= (logand s5-0 (editable-flag top-set)) (editable-flag top-set)) + (format #t "top-set ") + ) + (if (= (logand s5-0 (editable-flag orient)) (editable-flag orient)) + (format #t "orient ") + ) + (if (= (logand s5-0 (editable-flag z)) (editable-flag z)) + (format #t "z ") + ) + (if (= (logand s5-0 (editable-flag y)) (editable-flag y)) + (format #t "y ") + ) + (if (= (logand s5-0 (editable-flag x)) (editable-flag x)) + (format #t "x ") + ) + (if (= (logand s5-0 (editable-flag changed)) (editable-flag changed)) + (format #t "changed ") + ) + (if (= (logand s5-0 (editable-flag no-plane-snap)) (editable-flag no-plane-snap)) + (format #t "no-plane-snap ") + ) + (if (= (logand s5-0 (editable-flag mark)) (editable-flag mark)) + (format #t "mark ") + ) + (if (= (logand s5-0 (editable-flag changed-name)) (editable-flag changed-name)) + (format #t "changed-name ") + ) + (if (= (logand s5-0 (editable-flag bot-set)) (editable-flag bot-set)) + (format #t "bot-set ") + ) + (if (= (logand s5-0 (editable-flag selected)) (editable-flag selected)) + (format #t "selected ") + ) + (if (= (logand s5-0 (editable-flag no-update)) (editable-flag no-update)) + (format #t "no-update ") + ) + ) + (format #t ")~%") + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tregion: ~A~%" (-> this region)) + (format #t "~1Towner: ~A~%" (-> this owner)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tradius: (meters ~m)~%" (-> this radius)) + (format #t "~1Tvertex[2] @ #x~X~%" (-> this vertex)) + (dotimes (s5-1 (-> this length)) + (format #t "~T [~D]~1Tvertex: ~A~%" s5-1 (-> this vertex s5-1)) + ) + (label cfg-33) + this + ) + +;; definition for method 0 of type editable-plane +(defmethod new editable-plane ((allocation symbol) (type-to-make type) (arg0 editable-region)) + (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> gp-0 region) #f) + (set! (-> gp-0 name) "undefined") + (set! (-> gp-0 prefix) "undefined") + (let* ((s4-0 gp-0) + (s3-0 (method-of-object s4-0 editable-method-23)) + ) + (set! arg0 (cond + (arg0 + (empty) + arg0 + ) + (else + (new 'debug 'editable-region) + ) + ) + ) + (s3-0) + ) + (set! (-> gp-0 owner) '()) + (set! (-> gp-0 radius) 20480.0) + gp-0 + ) + ) + +;; definition of type editable-player +(deftype editable-player (process-drawable) + ((current editable-array) + (current-command editable-command) + (select-command (function object)) + (drag-command uint32) + (extra-command (function object)) + (left-handed basic) + (light-names basic) + (external-cam-mode symbol) + (command editable-command 6) + (close-menu-time uint64) + (mouse-pos vector :inline) + (mouse-end vector :inline) + (manipulator manipulator :inline) + (mouse-box vector 2 :inline) + (mouse-hit vector :inline) + (mouse-normal vector :inline) + (float-variable float) + (float-step float) + (float-max float) + (float-min float) + (float-id uint32) + ) + (:methods + (editable-player-method-50 () none) + (editable-player-method-51 () none) + (editable-player-method-52 () none) + (editable-player-method-53 () none) + ) + ) + +;; definition for method 3 of type editable-player +(defmethod inspect ((this editable-player)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 this) + ) + (format #t "~2Tcurrent: ~A~%" (-> this current)) + (format #t "~2Tcurrent-command: ~D~%" (-> this current-command)) + (format #t "~2Tselect-command: ~D~%" (-> this select-command)) + (format #t "~2Tdrag-command: ~D~%" (-> this drag-command)) + (format #t "~2Textra-command: ~D~%" (-> this extra-command)) + (format #t "~2Tleft-handed: ~A~%" (-> this left-handed)) + (format #t "~2Tlight-names: ~A~%" (-> this light-names)) + (format #t "~2Texternal-cam-mode: ~A~%" (-> this external-cam-mode)) + (format #t "~2Tcommand[6] @ #x~X~%" (-> this command)) + (format #t "~2Tclose-menu-time: ~D~%" (-> this close-menu-time)) + (format #t "~2Tmouse-pos: #~%" (-> this mouse-pos)) + (format #t "~2Tmouse-end: #~%" (-> this mouse-end)) + (format #t "~2Tmanipulator: #~%" (-> this manipulator)) + (format #t "~2Tmouse-box[2] @ #x~X~%" (-> this mouse-box)) + (format #t "~2Tmouse-hit: #~%" (-> this mouse-hit)) + (format #t "~2Tmouse-normal: #~%" (-> this mouse-normal)) + (format #t "~2Tfloat-variable: ~f~%" (-> this float-variable)) + (format #t "~2Tfloat-step: ~f~%" (-> this float-step)) + (format #t "~2Tfloat-max: ~f~%" (-> this float-max)) + (format #t "~2Tfloat-min: ~f~%" (-> this float-min)) + (format #t "~2Tfloat-id: ~D~%" (-> this float-id)) + (label cfg-4) + this + ) + +;; definition of type editable-work +(deftype editable-work (basic) + ((num-found int16) + (last-found int16) + (last-x float) + (last-y float) + (hide symbol) + (found editable 256) + (dists uint32 256) + ) + ) + +;; definition for method 3 of type editable-work +(defmethod inspect ((this editable-work)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tnum-found: ~D~%" (-> this num-found)) + (format #t "~1Tlast-found: ~D~%" (-> this last-found)) + (format #t "~1Tlast-x: ~f~%" (-> this last-x)) + (format #t "~1Tlast-y: ~f~%" (-> this last-y)) + (format #t "~1Thide: ~A~%" (-> this hide)) + (format #t "~1Tfound[256] @ #x~X~%" (-> this found)) + (format #t "~1Tdists[256] @ #x~X~%" (-> this dists)) + (label cfg-4) + this + ) + +;; definition for symbol *editable-work*, type editable-work +(define *editable-work* (new 'global 'editable-work)) + +;; definition for symbol *editable*, type (pointer editable-player) +(define *editable* (the-as (pointer editable-player) #f)) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/debug/history_REF.gc b/test/decompiler/reference/jakx/engine/debug/history_REF.gc new file mode 100644 index 0000000000..8a10baeade --- /dev/null +++ b/test/decompiler/reference/jakx/engine/debug/history_REF.gc @@ -0,0 +1,723 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) + +;; definition for function history-channel->string +(defun history-channel->string ((arg0 history-channel)) + (case arg0 + (((history-channel friction)) + "friction" + ) + (((history-channel transv-out)) + "transv-out" + ) + (((history-channel pat)) + "pat" + ) + (((history-channel transv-in)) + "transv-in" + ) + (((history-channel trans)) + "trans" + ) + (((history-channel local-normal)) + "local-normal" + ) + (((history-channel collide-status)) + "collide-status" + ) + (((history-channel time)) + "time" + ) + (((history-channel intersect)) + "intersect" + ) + (((history-channel surface-normal)) + "surface-normal" + ) + (((history-channel transv)) + "transv" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition of type history-elt +(deftype history-elt (structure) + ((record-tag-bytes uint8 4) + (record-tag uint32 :overlay-at (-> record-tag-bytes 0)) + (record-id uint16 :overlay-at (-> record-tag-bytes 0)) + (owner uint8 :overlay-at (-> record-tag-bytes 2)) + (channel history-channel :offset 4) + (timestamp time-frame) + (origin vector :inline) + (bytes uint8 16) + (vector vector :inline :overlay-at (-> bytes 0)) + (float float :overlay-at (-> bytes 0)) + (collide-status collide-status :overlay-at (-> bytes 0)) + (collide-reaction-flag uint32 :overlay-at (-> bytes 8)) + (pat pat-surface :overlay-at (-> bytes 0)) + ) + ) + +;; definition for method 3 of type history-elt +(defmethod inspect ((this history-elt)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'history-elt) + (format #t "~1Trecord-tag-bytes[4] @ #x~X~%" (-> this record-tag-bytes)) + (format #t "~1Trecord-tag: ~D~%" (-> this record-tag)) + (format #t "~1Trecord-id: ~D~%" (-> this record-id)) + (format #t "~1Towner: ~D~%" (-> this owner)) + (format #t "~1Tchannel: ~D~%" (-> this channel)) + (format #t "~1Ttimestamp: ~D~%" (-> this timestamp)) + (format #t "~1Torigin: #~%" (-> this origin)) + (format #t "~1Tbytes[16] @ #x~X~%" (-> this vector)) + (format #t "~1Tvector: #~%" (-> this vector)) + (format #t "~1Tfloat: ~f~%" (-> this vector x)) + (format #t "~1Tcollide-status: ~D~%" (-> this collide-status)) + (format #t "~1Tcollide-reaction-flag: ~D~%" (-> this vector z)) + (format #t "~1Tpat: ~D~%" (-> this vector x)) + (label cfg-4) + this + ) + +;; definition of type history-iterator +(deftype history-iterator (basic) + ((max-age uint32) + (owner uint8) + (proc process) + (out object) + (channel-mask uint64) + (index int32) + (done? symbol) + ) + (:methods + (new (symbol type uint) _type_) + (frame-counter-delta (_type_ history-elt) time-frame) + (update-entries! (_type_) history-elt) + (get-age (_type_ history-elt) float) + ) + ) + +;; definition for method 3 of type history-iterator +(defmethod inspect ((this history-iterator)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tmax-age: ~D~%" (-> this max-age)) + (format #t "~1Towner: ~D~%" (-> this owner)) + (format #t "~1Tproc: ~A~%" (-> this proc)) + (format #t "~1Tout: ~A~%" (-> this out)) + (format #t "~1Tchannel-mask: ~D~%" (-> this channel-mask)) + (format #t "~1Tindex: ~D~%" (-> this index)) + (format #t "~1Tdone?: ~A~%" (-> this done?)) + (label cfg-4) + this + ) + +;; definition of type history +(deftype history (basic) + ((alloc-index int32) + (allocated-length int32) + (elts history-elt :inline :dynamic) + ) + (:methods + (new (symbol type int) _type_) + (clear-record-tags! (_type_ history-channel uint uint) history-elt) + (clear-history-entries! (_type_) none) + ) + ) + +;; definition for method 3 of type history +(defmethod inspect ((this history)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Talloc-index: ~D~%" (-> this alloc-index)) + (format #t "~1Tallocated-length: ~D~%" (-> this allocated-length)) + (format #t "~1Telts[0] @ #x~X~%" (-> this elts)) + (label cfg-4) + this + ) + +;; definition for method 4 of type history +(defmethod length ((this history)) + (-> this allocated-length) + ) + +;; definition for method 5 of type history +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of ((this history)) + (the-as int (+ (-> this type size) (* 48 (-> this allocated-length)))) + ) + +;; definition for method 0 of type history +(defmethod new history ((allocation symbol) (type-to-make type) (arg0 int)) + (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 arg0)))))) + (set! (-> v0-0 allocated-length) arg0) + v0-0 + ) + ) + +;; definition for method 10 of type history +;; WARN: Return type mismatch int vs none. +(defmethod clear-history-entries! ((this history)) + (set! (-> this alloc-index) 0) + (countdown (v1-0 (-> this allocated-length)) + (let ((a1-3 (-> this elts v1-0))) + (set! (-> a1-3 record-tag) (the-as uint 0)) + (set! (-> a1-3 timestamp) 0) + ) + 0 + ) + 0 + (none) + ) + +;; definition (perm) for symbol *history*, type history +(define-perm *history* history (new 'debug 'history 4096)) + +;; failed to figure out what this is: +(clear-history-entries! *history*) + +;; definition for method 9 of type history +;; WARN: new jak 2 until loop case, check carefully +(defmethod clear-record-tags! ((this history) (arg0 history-channel) (arg1 uint) (arg2 uint)) + (let* ((t1-0 (-> this alloc-index)) + (v1-0 (-> this elts)) + (v0-0 (-> v1-0 t1-0)) + ) + (let ((t2-0 (-> v0-0 record-tag)) + (t0-2 (-> v0-0 timestamp)) + ) + (set! (-> v0-0 channel) arg0) + (set! (-> v0-0 record-id) arg1) + (set! (-> v0-0 owner) arg2) + (set! (-> v0-0 timestamp) (-> *display* base-clock frame-counter)) + (let* ((a1-4 (-> this allocated-length)) + (a2-2 (mod (+ t1-0 1) a1-4)) + ) + (set! (-> this alloc-index) a2-2) + (when (nonzero? t2-0) + (until #f + (let ((a0-4 (-> v1-0 a2-2))) + (if (!= t0-2 (-> a0-4 timestamp)) + (return v0-0) + ) + (set! (-> a0-4 record-tag) (the-as uint 0)) + ) + (set! a2-2 (mod (+ a2-2 1) a1-4)) + ) + #f + ) + ) + ) + v0-0 + ) + ) + +;; definition for method 0 of type history-iterator +(defmethod new history-iterator ((allocation symbol) (type-to-make type) (arg0 uint)) + (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> v0-0 max-age) arg0) + (set! (-> v0-0 owner) (the-as uint 1)) + (set! (-> v0-0 proc) #f) + (set! (-> v0-0 out) *stdcon*) + (set! (-> v0-0 channel-mask) (the-as uint -1)) + (set! (-> v0-0 index) (-> *history* alloc-index)) + (set! (-> v0-0 done?) #f) + v0-0 + ) + ) + +;; definition for method 10 of type history-iterator +(defmethod update-entries! ((this history-iterator)) + (let ((v1-0 *history*) + (a1-2 (-> *display* base-clock frame-counter)) + ) + (while (not (-> this done?)) + (let ((a2-1 (+ (-> this index) -1))) + (if (< a2-1 0) + (set! a2-1 (+ (-> v1-0 allocated-length) -1)) + ) + (set! (-> this index) a2-1) + (if (= a2-1 (-> v1-0 alloc-index)) + (set! (-> this done?) #t) + ) + (let ((a2-5 (-> v1-0 elts a2-1))) + (when (nonzero? (-> a2-5 record-tag)) + (when (< (the-as time-frame (-> this max-age)) (- a1-2 (-> a2-5 timestamp))) + (set! (-> this done?) #t) + (return (the-as history-elt #f)) + ) + (if (= (-> a2-5 owner) (-> this owner)) + (return a2-5) + ) + ) + ) + ) + ) + ) + (the-as history-elt #f) + ) + +;; definition for method 11 of type history-iterator +(defmethod get-age ((this history-iterator) (arg0 history-elt)) + (- 1.0 (fmin 1.0 (/ (the float (+ (- 1 (-> arg0 timestamp)) (-> *display* base-clock frame-counter))) + (the float (+ (-> this max-age) 1)) + ) + ) + ) + ) + +;; definition for method 9 of type history-iterator +(defmethod frame-counter-delta ((this history-iterator) (arg0 history-elt)) + (- (-> *display* base-clock frame-counter) (-> arg0 timestamp)) + ) + +;; definition for function history-print +;; INFO: Used lq/sq +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Return type mismatch int vs none. +;; WARN: new jak 2 until loop case, check carefully +(defun history-print ((arg0 history-iterator)) + (let ((sv-16 (-> arg0 out)) + (sv-24 -1) + (sv-32 0) + ) + (until #f + (let ((sv-40 (update-entries! arg0))) + (if (not sv-40) + (goto cfg-71) + ) + (when (logtest? (-> arg0 channel-mask) (ash 1 (the-as int (-> sv-40 channel)))) + (let ((sv-48 (frame-counter-delta arg0 sv-40)) + (sv-56 (-> sv-40 record-id)) + ) + (cond + ((!= sv-24 sv-48) + (set! sv-24 (the-as int sv-48)) + (set! sv-32 (the-as int sv-56)) + (format sv-16 "~3D ~4X " sv-48 (-> sv-40 record-id)) + ) + ((!= sv-32 sv-56) + (set! sv-32 (the-as int sv-56)) + (format sv-16 " ~4X " (-> sv-40 record-id)) + ) + (else + (format sv-16 " ") + ) + ) + ) + (let ((v1-22 (-> sv-40 channel))) + (cond + ((or (= v1-22 (history-channel trans)) + (or (= v1-22 (history-channel transv)) + (= v1-22 (history-channel transv-in)) + (= v1-22 (history-channel transv-out)) + (= v1-22 (history-channel intersect)) + ) + ) + (format + sv-16 + "~-15S: ~14Mm ~14Mm ~14Mm~%" + (history-channel->string (-> sv-40 channel)) + (-> sv-40 vector x) + (-> sv-40 vector y) + (-> sv-40 vector z) + ) + ) + ((or (= v1-22 (history-channel local-normal)) (= v1-22 (history-channel surface-normal))) + (format + sv-16 + "~-15S: ~14f ~14f ~14f~%" + (history-channel->string (-> sv-40 channel)) + (-> sv-40 vector x) + (-> sv-40 vector y) + (-> sv-40 vector z) + ) + ) + ((= v1-22 (history-channel pat)) + (let ((s2-0 (-> sv-40 vector x))) + (format + sv-16 + "~-15S: #x~6X mode:~-8S material:~-10S event:~S~%" + (history-channel->string (-> sv-40 channel)) + s2-0 + (pat-mode->string (the-as pat-surface s2-0)) + (pat-material->string (the-as pat-surface s2-0)) + (pat-event->string (the-as pat-surface s2-0)) + ) + ) + ) + ((= v1-22 (history-channel collide-status)) + (let ((sv-64 (-> sv-40 collide-status)) + (sv-72 (-> sv-40 vector z)) + ) + (format sv-16 "~-15S: #x~6X " (history-channel->string (-> sv-40 channel)) sv-64) + (let ((s5-4 sv-64)) + (if (= (logand s5-4 (collide-status touch-background)) (collide-status touch-background)) + (format sv-16 "touch-background ") + ) + (if (= (logand s5-4 (collide-status on-special-surface)) (collide-status on-special-surface)) + (format sv-16 "on-special-surface ") + ) + (if (= (logand s5-4 (collide-status touch-wall)) (collide-status touch-wall)) + (format sv-16 "touch-wall ") + ) + (if (= (logand s5-4 (collide-status on-surface)) (collide-status on-surface)) + (format sv-16 "on-surface ") + ) + (if (= (logand s5-4 (collide-status impact-surface)) (collide-status impact-surface)) + (format sv-16 "impact-surface ") + ) + (if (= (logand s5-4 (collide-status touch-ceiling)) (collide-status touch-ceiling)) + (format sv-16 "touch-ceiling ") + ) + (if (= (logand s5-4 (collide-status on-ground)) (collide-status on-ground)) + (format sv-16 "on-ground ") + ) + (if (= (logand s5-4 (collide-status glance)) (collide-status glance)) + (format sv-16 "glance ") + ) + (if (= (logand s5-4 (collide-status blocked)) (collide-status blocked)) + (format sv-16 "blocked ") + ) + (if (= (logand s5-4 (collide-status touch-edge)) (collide-status touch-edge)) + (format sv-16 "touch-edge ") + ) + (if (= (logand s5-4 (collide-status touch-ceiling-sticky)) (collide-status touch-ceiling-sticky)) + (format sv-16 "touch-ceiling-sticky ") + ) + (if (= (logand s5-4 (collide-status on-water)) (collide-status on-water)) + (format sv-16 "on-water ") + ) + (if (= (logand s5-4 (collide-status touch-actor)) (collide-status touch-actor)) + (format sv-16 "touch-actor ") + ) + (if (= (logand (collide-status probe-hit) s5-4) (collide-status probe-hit)) + (format sv-16 "probe-hit ") + ) + (if (= (logand s5-4 (collide-status stuck)) (collide-status stuck)) + (format sv-16 "stuck ") + ) + (if (= (logand s5-4 (collide-status no-touch)) (collide-status no-touch)) + (format sv-16 "no-touch ") + ) + (if (= (logand s5-4 (collide-status touch-surface)) (collide-status touch-surface)) + (format sv-16 "touch-surface ") + ) + ) + (format sv-16 " #x~6X~%" sv-72) + ) + ) + ((= v1-22 (history-channel friction)) + (let ((f30-0 (-> sv-40 vector x))) + (format sv-16 "~-15S: ~f~%" (history-channel->string (-> sv-40 channel)) f30-0) + ) + ) + ) + ) + ) + ) + ) + ) + #f + (label cfg-71) + 0 + (none) + ) + +;; definition for function history-draw +;; WARN: Return type mismatch int vs none. +;; WARN: new jak 2 until loop case, check carefully +(defun history-draw ((arg0 history-iterator)) + (let ((sv-16 (the-as vector #f)) + (sv-20 (the-as vector #f)) + (sv-24 0.0) + ) + (until #f + (let ((s5-0 (update-entries! arg0))) + (if (not s5-0) + (goto cfg-34) + ) + (when (logtest? (-> arg0 channel-mask) (ash 1 (the-as int (-> s5-0 channel)))) + (let* ((f0-0 (get-age arg0 s5-0)) + (v1-8 (the int (lerp 4.0 128.0 f0-0))) + ) + (case (-> s5-0 channel) + (((history-channel trans)) + (if sv-16 + (add-debug-line + #t + (bucket-id bucket785) + sv-16 + (-> s5-0 vector) + (the-as rgba (logior #xffff00 (shl v1-8 24))) + #f + (the-as rgba -1) + ) + (add-debug-x #t (bucket-id bucket785) (-> s5-0 vector) (the-as rgba (logior #xffff00 (shl v1-8 24)))) + ) + (set! sv-16 (-> s5-0 vector)) + ) + (((history-channel intersect)) + (if sv-20 + (add-debug-line + #t + (bucket-id bucket785) + sv-20 + (-> s5-0 vector) + (the-as rgba (logior #xffffff (shl v1-8 24))) + #f + (the-as rgba -1) + ) + (add-debug-x #t (bucket-id bucket785) (-> s5-0 vector) (the-as rgba (logior #xffffff (shl v1-8 24)))) + ) + (set! sv-20 (-> s5-0 vector)) + ) + (((history-channel transv)) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 0.000024414063) + (the-as rgba (logior (shl v1-8 24) #xff00)) + ) + ) + (((history-channel transv-in)) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 0.000024414063) + (the-as rgba (logior #x408040 (shl v1-8 24))) + ) + ) + (((history-channel transv-out)) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 0.000024414063) + (the-as rgba (logior #x404080 (shl v1-8 24))) + ) + ) + (((history-channel local-normal) (history-channel surface-normal)) + (let ((t1-7 + (logand (the-as uint (-> *pat-mode-info* (shr (shl (the-as int sv-24) 54) 61) hilite-color)) + (the-as uint #xffffffff00ffffff) + ) + ) + ) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + (-> s5-0 vector) + (meters 1) + (the-as rgba (logior t1-7 (shl v1-8 24))) + ) + ) + ) + (((history-channel pat)) + (set! sv-24 (-> s5-0 vector x)) + ) + (((history-channel friction)) + (let ((f0-3 (-> s5-0 vector x)) + (a3-10 (new 'stack-no-clear 'vector)) + ) + (set-vector! a3-10 0.0 (* -8192.0 f0-3) 0.0 1.0) + (add-debug-vector + #t + (bucket-id bucket785) + (-> s5-0 origin) + a3-10 + (meters 0.00024414062) + (the-as rgba (logior #xffffff (shl v1-8 24))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + #f + (label cfg-34) + 0 + (none) + ) + +;; failed to figure out what this is: +0 diff --git a/test/decompiler/reference/jakx/engine/debug/manipulator_REF.gc b/test/decompiler/reference/jakx/engine/debug/manipulator_REF.gc new file mode 100644 index 0000000000..5938f13fb1 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/debug/manipulator_REF.gc @@ -0,0 +1,943 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) + +;; definition of type manipulator +(deftype manipulator (structure) + ((action manipulator-action) + (mode manipulator-mode) + (dragging? symbol) + (position vector :inline) + (speed vector :inline) + (drag-ref-position vector :inline) + (mouse-ref-position vector :inline) + (mat matrix :inline) + (rotate-ref int32) + (angles euler-angles :inline) + ) + (:methods + (set-mode (_type_ manipulator-mode) none) + (manipulator-method-10 (_type_ vector vector) none) + (manipulator-method-11 (_type_) none) + (drag-update! (_type_ vector) none) + (manipulator-method-13 (_type_ vector vector) none) + (stop-dragging! (_type_) none) + ) + ) + +;; definition for method 3 of type manipulator +(defmethod inspect ((this manipulator)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'manipulator) + (format #t "~1Taction: ~D~%" (-> this action)) + (format #t "~1Tmode: ~D~%" (-> this mode)) + (format #t "~1Tdragging?: ~A~%" (-> this dragging?)) + (format #t "~1Tposition: #~%" (-> this position)) + (format #t "~1Tspeed: #~%" (-> this speed)) + (format #t "~1Tdrag-ref-position: #~%" (-> this drag-ref-position)) + (format #t "~1Tmouse-ref-position: #~%" (-> this mouse-ref-position)) + (format #t "~1Tmat: #~%" (-> this mat)) + (format #t "~1Trotate-ref: ~D~%" (-> this rotate-ref)) + (format #t "~1Tangles: #~%" (-> this angles)) + (label cfg-4) + this + ) + +;; definition for function draw-axis +;; INFO: Used lq/sq +(defun draw-axis ((arg0 vector) (arg1 vector) (arg2 float) (arg3 float) (arg4 rgba)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (let ((s1-0 (new 'stack-no-clear 'vector))) + (cond + ((< (fabs (vector-dot arg1 *x-vector*)) 0.5) + (vector-cross! s1-0 *x-vector* arg1) + ) + ((< (fabs (vector-dot arg1 *y-vector*)) 0.5) + (vector-cross! s1-0 *y-vector* arg1) + ) + (else + (vector-cross! s1-0 *z-vector* arg1) + ) + ) + (vector-cross! s1-0 s1-0 arg1) + (vector-normalize! s1-0 1.0) + (let ((s0-0 (new 'stack-no-clear 'vector))) + (let ((v1-10 arg0)) + (let ((a0-8 arg1)) + (let ((a1-10 arg2)) + (.mov vf7 a1-10) + ) + (.lvf vf5 (&-> a0-8 quad)) + ) + (.lvf vf4 (&-> v1-10 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> s0-0 quad) vf6) + (let ((sv-160 0)) + (while (< sv-160 8) + (let ((sv-176 add-debug-flat-triangle-noclip) + (sv-192 #t) + (sv-208 794) + (sv-224 (new 'stack-no-clear 'vector)) + ) + (let ((v1-16 s0-0)) + (let ((a0-9 arg1)) + (let ((a1-11 arg3)) + (.mov vf7 a1-11) + ) + (.lvf vf5 (&-> a0-9 quad)) + ) + (.lvf vf4 (&-> v1-16 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-224 quad) vf6) + (let ((sv-256 (new 'stack-no-clear 'vector))) + (let ((sv-240 s0-0)) + (let* ((a2-3 + (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) arg1 (* 182.04445 (the float (* 45 sv-160)))) + ) + (v1-22 (vector-orient-by-quat! (new 'stack-no-clear 'vector) s1-0 a2-3)) + ) + (let ((a0-13 (/ arg3 4))) + (.mov vf7 a0-13) + ) + (.lvf vf5 (&-> v1-22 quad)) + ) + (.lvf vf4 (&-> sv-240 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-256 quad) vf6) + (let ((sv-288 (new 'stack-no-clear 'vector))) + (let ((sv-272 s0-0)) + (let* ((a2-7 (quaternion-vector-angle! + (new 'stack-no-clear 'quaternion) + arg1 + (* 182.04445 (the float (* 45 (+ sv-160 1)))) + ) + ) + (v1-29 (vector-orient-by-quat! (new 'stack-no-clear 'vector) s1-0 a2-7)) + ) + (let ((a0-17 (/ arg3 4))) + (.mov vf7 a0-17) + ) + (.lvf vf5 (&-> v1-29 quad)) + ) + (.lvf vf4 (&-> sv-272 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-288 quad) vf6) + (sv-176 (the-as vector sv-192) (the-as vector sv-208) sv-224 sv-256 sv-288) + ) + ) + ) + (+! sv-160 1) + ) + ) + ) + ) + (add-debug-vector #t (bucket-id bucket794) arg0 arg1 arg2 arg4) + ) + ) + +;; definition for method 9 of type manipulator +;; WARN: Return type mismatch int vs none. +(defmethod set-mode ((this manipulator) (arg0 manipulator-mode)) + (set! (-> this mode) arg0) + 0 + (none) + ) + +;; definition for method 10 of type manipulator +;; WARN: Return type mismatch int vs none. +(defmethod manipulator-method-10 ((this manipulator) (arg0 vector) (arg1 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (let* ((sv-16 (-> this position)) + (sv-20 0.0) + (sv-48 (vector-normalize! + (vector-! (new 'stack-no-clear 'vector) (-> (view-get-active-math-camera) trans) (-> this position)) + 1.0 + ) + ) + (sv-52 (< (fabs (vector-dot sv-48 (-> this mat rvec))) 0.9)) + (sv-56 (< (fabs (vector-dot sv-48 (-> this mat uvec))) 0.9)) + (sv-60 (< (fabs (vector-dot sv-48 (-> this mat fvec))) 0.9)) + (sv-64 (the-as float #x7f800000)) + ) + (set! sv-20 (* 0.15 (vector-vector-distance (-> (view-get-active-math-camera) trans) sv-16))) + (set! (-> this action) (manipulator-action manip-action0)) + (let ((s4-2 (new 'stack-no-clear 'vector))) + 0.0 + (let ((s3-3 (vector-! (new 'stack-no-clear 'vector) arg1 arg0))) + (let ((f0-16 (ray-sphere-intersect arg0 s3-3 sv-16 (* 0.2 (the-as float sv-20))))) + (when (and (< 0.0 f0-16) (>= sv-64 f0-16)) + (set! sv-64 f0-16) + (set! (-> this action) (manipulator-action manip-action7)) + ) + ) + (when (= (-> this action) (manipulator-action manip-action0)) + (when (and sv-52 sv-56) + (let ((t9-5 ray-sphere-intersect) + (a0-8 arg0) + (a1-4 s3-3) + (a2-2 (new 'stack-no-clear 'vector)) + ) + (let ((v1-27 sv-16)) + (let ((a3-1 (new 'stack-no-clear 'vector))) + (let ((t0-0 (-> this mat)) + (t1-0 (-> this mat uvec)) + ) + (.lvf vf4 (&-> t0-0 rvec quad)) + (.lvf vf5 (&-> t1-0 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a3-1 quad) vf6) + (let ((t0-1 (the-as float sv-20))) + (.mov vf7 t0-1) + ) + (.lvf vf5 (&-> a3-1 quad)) + ) + (.lvf vf4 (&-> v1-27 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a2-2 quad) vf6) + (let ((f0-20 (t9-5 a0-8 a1-4 a2-2 (* 0.3 (the-as float sv-20))))) + (when (and (< 0.0 f0-20) (>= sv-64 f0-20)) + (set! sv-64 f0-20) + (set! (-> this action) (manipulator-action manip-action4)) + ) + ) + ) + ) + (when (and sv-52 sv-60) + (let ((t9-6 ray-sphere-intersect) + (a0-9 arg0) + (a1-5 s3-3) + (a2-3 (new 'stack-no-clear 'vector)) + ) + (let ((v1-36 sv-16)) + (let ((a3-3 (new 'stack-no-clear 'vector))) + (let ((t0-2 (-> this mat)) + (t1-1 (-> this mat fvec)) + ) + (.lvf vf4 (&-> t0-2 rvec quad)) + (.lvf vf5 (&-> t1-1 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a3-3 quad) vf6) + (let ((t0-3 (the-as float sv-20))) + (.mov vf7 t0-3) + ) + (.lvf vf5 (&-> a3-3 quad)) + ) + (.lvf vf4 (&-> v1-36 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a2-3 quad) vf6) + (let ((f0-24 (t9-6 a0-9 a1-5 a2-3 (* 0.3 (the-as float sv-20))))) + (when (and (< 0.0 f0-24) (>= sv-64 f0-24)) + (set! sv-64 f0-24) + (set! (-> this action) (manipulator-action manip-action5)) + ) + ) + ) + ) + (when (and sv-56 sv-60) + (let ((t9-7 ray-sphere-intersect) + (a0-10 arg0) + (a1-6 s3-3) + (a2-4 (new 'stack-no-clear 'vector)) + ) + (let ((v1-45 sv-16)) + (let ((a3-5 (new 'stack-no-clear 'vector))) + (let ((t0-4 (-> this mat uvec)) + (t1-2 (-> this mat fvec)) + ) + (.lvf vf4 (&-> t0-4 quad)) + (.lvf vf5 (&-> t1-2 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a3-5 quad) vf6) + (let ((t0-5 (the-as float sv-20))) + (.mov vf7 t0-5) + ) + (.lvf vf5 (&-> a3-5 quad)) + ) + (.lvf vf4 (&-> v1-45 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a2-4 quad) vf6) + (let ((f0-28 (t9-7 a0-10 a1-6 a2-4 (* 0.3 (the-as float sv-20))))) + (when (and (< 0.0 f0-28) (>= sv-64 f0-28)) + (set! sv-64 f0-28) + (set! (-> this action) (manipulator-action manip-action6)) + ) + ) + ) + ) + (when sv-52 + (let ((f0-33 (ray-cylinder-intersect + arg0 + s3-3 + sv-16 + (-> this mat rvec) + (* 0.1 (the-as float sv-20)) + (* 1.3 (the-as float sv-20)) + s4-2 + ) + ) + ) + (when (and (< 0.0 f0-33) (>= sv-64 f0-33)) + (set! sv-64 f0-33) + (set! (-> this action) (manipulator-action manip-action1)) + ) + ) + ) + (when sv-56 + (let ((f0-38 (ray-cylinder-intersect + arg0 + s3-3 + sv-16 + (-> this mat uvec) + (* 0.1 (the-as float sv-20)) + (* 1.3 (the-as float sv-20)) + s4-2 + ) + ) + ) + (when (and (< 0.0 f0-38) (>= sv-64 f0-38)) + (set! sv-64 f0-38) + (set! (-> this action) (manipulator-action manip-action2)) + ) + ) + ) + (when sv-60 + (let ((f0-43 (ray-cylinder-intersect + arg0 + s3-3 + sv-16 + (-> this mat fvec) + (* 0.1 (the-as float sv-20)) + (* 1.3 (the-as float sv-20)) + s4-2 + ) + ) + ) + (when (and (< 0.0 f0-43) (>= sv-64 f0-43)) + (set! sv-64 f0-43) + (set! (-> this action) (manipulator-action manip-action3)) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +;; definition for method 11 of type manipulator +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod manipulator-method-11 ((this manipulator)) + (local-vars (sv-432 rgba)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (format *stdcon* "~M ~M ~M~%" (-> this position x) (-> this position y) (-> this position z)) + (let ((s5-0 (-> this position))) + 0.0 + (let* ((v0-2 (vector-normalize! + (vector-! (new 'stack-no-clear 'vector) (-> (view-get-active-math-camera) trans) (-> this position)) + 1.0 + ) + ) + (s4-1 (< (fabs (vector-dot v0-2 (-> this mat rvec))) 0.9)) + (s3-2 (< (fabs (vector-dot v0-2 (-> this mat uvec))) 0.9)) + (s2-0 (< (fabs (vector-dot v0-2 (-> this mat fvec))) 0.9)) + (f30-1 (* 0.15 (vector-vector-distance (-> (view-get-active-math-camera) trans) s5-0))) + ) + (if s4-1 + (draw-axis + s5-0 + (-> this mat rvec) + f30-1 + (/ f30-1 4) + (if (= (-> this action) (manipulator-action manip-action1)) + *color-yellow* + *color-red* + ) + ) + ) + (if s3-2 + (draw-axis + s5-0 + (-> this mat uvec) + f30-1 + (/ f30-1 4) + (if (= (-> this action) (manipulator-action manip-action2)) + *color-yellow* + *color-green* + ) + ) + ) + (if s2-0 + (draw-axis + s5-0 + (-> this mat fvec) + f30-1 + (/ f30-1 4) + (if (= (-> this action) (manipulator-action manip-action3)) + *color-yellow* + *color-blue* + ) + ) + ) + (let ((s1-1 (new 'stack-no-clear 'vector)) + (s0-0 (new 'stack-no-clear 'vector)) + ) + (let ((f28-0 0.1)) + (set! sv-432 (cond + ((= (-> this action) (manipulator-action manip-action7)) + (set! sv-432 *color-yellow*) + sv-432 + ) + (else + *color-light-blue* + ) + ) + ) + (let ((sv-288 s1-1)) + (let ((sv-240 s5-0)) + (let ((sv-272 (new 'stack-no-clear 'vector))) + (let ((sv-256 (-> (view-get-active-math-camera) inv-camera-rot)) + (v1-26 (-> (view-get-active-math-camera) inv-camera-rot uvec)) + ) + (.lvf vf4 (&-> sv-256 rvec quad)) + (.lvf vf5 (&-> v1-26 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> sv-272 quad) vf6) + (let ((v1-28 (* f30-1 f28-0))) + (.mov vf7 v1-28) + ) + (.lvf vf5 (&-> sv-272 quad)) + ) + (.lvf vf4 (&-> sv-240 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-288 quad) vf6) + ) + (let ((sv-320 s0-0)) + (let ((sv-304 s1-1)) + (let ((v1-32 (-> (view-get-active-math-camera) inv-camera-rot uvec))) + (let ((a0-14 (* -2.0 f30-1 f28-0))) + (.mov vf7 a0-14) + ) + (.lvf vf5 (&-> v1-32 quad)) + ) + (.lvf vf4 (&-> sv-304 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-320 quad) vf6) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + (set! (-> s1-1 quad) (-> s0-0 quad)) + (let ((sv-352 s0-0)) + (let ((sv-336 s0-0)) + (let ((v1-36 (-> (view-get-active-math-camera) inv-camera-rot))) + (let ((a0-19 (* -2.0 f30-1 f28-0))) + (.mov vf7 a0-19) + ) + (.lvf vf5 (&-> v1-36 rvec quad)) + ) + (.lvf vf4 (&-> sv-336 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-352 quad) vf6) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + (set! (-> s1-1 quad) (-> s0-0 quad)) + (let ((sv-384 s0-0)) + (let ((sv-368 s0-0)) + (let ((v1-40 (-> (view-get-active-math-camera) inv-camera-rot uvec))) + (let ((a0-24 (* 2.0 f30-1 f28-0))) + (.mov vf7 a0-24) + ) + (.lvf vf5 (&-> v1-40 quad)) + ) + (.lvf vf4 (&-> sv-368 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-384 quad) vf6) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + (set! (-> s1-1 quad) (-> s0-0 quad)) + (let ((sv-416 s0-0)) + (let ((sv-400 s0-0)) + (let ((v1-44 (-> (view-get-active-math-camera) inv-camera-rot))) + (let ((a0-29 (* 2.0 f30-1 f28-0))) + (.mov vf7 a0-29) + ) + (.lvf vf5 (&-> v1-44 rvec quad)) + ) + (.lvf vf4 (&-> sv-400 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> sv-416 quad) vf6) + ) + ) + (add-debug-line #t (bucket-id bucket785) s1-1 s0-0 sv-432 #f (the-as rgba -1)) + ) + (let ((s1-2 (new 'stack-no-clear 'vector))) + (when (and s3-2 s2-0) + (let ((a1-10 s1-2)) + (let ((v1-49 s5-0)) + (let ((a0-31 (new 'stack-no-clear 'vector))) + (let ((a2-8 (-> this mat fvec)) + (a3-8 (-> this mat uvec)) + ) + (.lvf vf4 (&-> a2-8 quad)) + (.lvf vf5 (&-> a3-8 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a0-31 quad) vf6) + (let ((a2-9 f30-1)) + (.mov vf7 a2-9) + ) + (.lvf vf5 (&-> a0-31 quad)) + ) + (.lvf vf4 (&-> v1-49 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-10 quad) vf6) + ) + (let ((s0-1 draw-axis) + (sv-448 s1-2) + ) + (s0-1 + sv-448 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat uvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action6)) + *color-yellow* + *color-green* + ) + ) + ) + (let ((s0-2 draw-axis) + (sv-464 s1-2) + ) + (s0-2 + sv-464 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat fvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action6)) + *color-yellow* + *color-blue* + ) + ) + ) + ) + (set! s2-0 (and s4-1 s2-0)) + (when s2-0 + (let ((a1-15 s1-2)) + (let ((v1-57 s5-0)) + (let ((a0-38 (new 'stack-no-clear 'vector))) + (let ((a2-12 (-> this mat)) + (a3-11 (-> this mat fvec)) + ) + (.lvf vf4 (&-> a2-12 rvec quad)) + (.lvf vf5 (&-> a3-11 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a0-38 quad) vf6) + (let ((a2-13 f30-1)) + (.mov vf7 a2-13) + ) + (.lvf vf5 (&-> a0-38 quad)) + ) + (.lvf vf4 (&-> v1-57 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-15 quad) vf6) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat rvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action5)) + *color-yellow* + *color-red* + ) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat fvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action5)) + *color-yellow* + *color-blue* + ) + ) + ) + (set! s3-2 (and s4-1 s3-2)) + (when s3-2 + (let ((a0-45 s1-2)) + (let ((v1-64 (new 'stack-no-clear 'vector))) + (let ((a1-20 (-> this mat)) + (a2-16 (-> this mat uvec)) + ) + (.lvf vf4 (&-> a1-20 rvec quad)) + (.lvf vf5 (&-> a2-16 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> v1-64 quad) vf6) + (let ((a1-21 f30-1)) + (.mov vf7 a1-21) + ) + (.lvf vf5 (&-> v1-64 quad)) + ) + (.lvf vf4 (&-> s5-0 quad)) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a0-45 quad) vf6) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat rvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action4)) + *color-yellow* + *color-red* + ) + ) + (draw-axis + s1-2 + (vector-negate! (new 'stack-no-clear 'vector) (-> this mat uvec)) + (* 0.15 f30-1) + (* 0.15 f30-1) + (if (= (-> this action) (manipulator-action manip-action4)) + *color-yellow* + *color-green* + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + ) + +;; definition for method 12 of type manipulator +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod drag-update! ((this manipulator) (arg0 vector)) + (set! (-> this rotate-ref) (the int (-> *mouse* posx))) + (set! (-> this mouse-ref-position quad) (-> arg0 quad)) + (set! (-> this drag-ref-position quad) (-> this position quad)) + (set! (-> this dragging?) #t) + (set! (-> this speed quad) (the-as uint128 0)) + 0 + (none) + ) + +;; definition for method 13 of type manipulator +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod manipulator-method-13 ((this manipulator) (arg0 vector) (arg1 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + ) + (init-vf0-vector) + (cond + ((= (-> this mode) (manipulator-mode manip-mode0)) + (set! (-> this speed quad) (-> this position quad)) + (let ((s5-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0)) + (s4-1 (vector-! (new 'stack-no-clear 'vector) (-> this mouse-ref-position) arg0)) + ) + 0.0 + 0.0 + (let ((s2-0 (new 'stack-no-clear 'vector)) + (s1-0 (new 'stack-no-clear 'vector)) + ) + (cond + ((or (= (-> this action) (manipulator-action manip-action1)) + (= (-> this action) (manipulator-action manip-action2)) + (= (-> this action) (manipulator-action manip-action3)) + ) + (cond + ((= (-> this action) (manipulator-action manip-action1)) + (cond + ((< (fabs (vector-dot s5-1 (-> this mat uvec))) (fabs (vector-dot s5-1 (-> this mat fvec)))) + (set! (-> s2-0 quad) (-> this mat fvec quad)) + (set! (-> s1-0 quad) (-> this mat uvec quad)) + ) + (else + (set! (-> s2-0 quad) (-> this mat uvec quad)) + (set! (-> s1-0 quad) (-> this mat fvec quad)) + ) + ) + ) + ((= (-> this action) (manipulator-action manip-action2)) + (cond + ((< (fabs (vector-dot s5-1 (-> this mat rvec))) (fabs (vector-dot s5-1 (-> this mat fvec)))) + (set! (-> s2-0 quad) (-> this mat fvec quad)) + (set! (-> s1-0 quad) (-> this mat rvec quad)) + ) + (else + (set! (-> s2-0 quad) (-> this mat rvec quad)) + (set! (-> s1-0 quad) (-> this mat fvec quad)) + ) + ) + ) + ((= (-> this action) (manipulator-action manip-action3)) + (cond + ((< (fabs (vector-dot s5-1 (-> this mat uvec))) (fabs (vector-dot s5-1 (-> this mat rvec)))) + (set! (-> s2-0 quad) (-> this mat rvec quad)) + (set! (-> s1-0 quad) (-> this mat uvec quad)) + ) + (else + (set! (-> s2-0 quad) (-> this mat uvec quad)) + (set! (-> s1-0 quad) (-> this mat rvec quad)) + ) + ) + ) + ) + (let ((f30-0 (intersect-ray-plane arg0 s5-1 (-> this position) s2-0)) + (f0-11 (intersect-ray-plane arg0 s4-1 (-> this position) s2-0)) + ) + (let ((a1-3 s5-1)) + (let ((v1-41 arg0)) + (let ((a0-43 s5-1)) + (let ((a2-3 f30-0)) + (.mov vf7 a2-3) + ) + (.lvf vf5 (&-> a0-43 quad)) + ) + (.lvf vf4 (&-> v1-41 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-3 quad) vf6) + ) + (let ((a0-44 s4-1)) + (let ((v1-42 s4-1)) + (let ((a1-4 f0-11)) + (.mov vf7 a1-4) + ) + (.lvf vf5 (&-> v1-42 quad)) + ) + (.lvf vf4 (&-> arg0 quad)) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a0-44 quad) vf6) + ) + ) + (vector-flatten! s5-1 (vector-! (new 'stack-no-clear 'vector) s5-1 (-> this position)) s1-0) + (vector-flatten! s4-1 (vector-! (new 'stack-no-clear 'vector) s4-1 (-> this position)) s1-0) + (let ((v1-46 (vector-! (new 'stack-no-clear 'vector) s5-1 s4-1))) + (let ((a2-8 (-> this position))) + (let ((a0-47 (-> this drag-ref-position)) + (a1-9 v1-46) + ) + (.lvf vf4 (&-> a0-47 quad)) + (.lvf vf5 (&-> a1-9 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> a2-8 quad) vf6) + ) + (format *stdcon* "delta ~M ~M ~M~%" (-> v1-46 x) (-> v1-46 y) (-> v1-46 z)) + ) + ) + ((or (= (-> this action) (manipulator-action manip-action4)) + (= (-> this action) (manipulator-action manip-action5)) + (= (-> this action) (manipulator-action manip-action6)) + (= (-> this action) (manipulator-action manip-action7)) + ) + (cond + ((= (-> this action) (manipulator-action manip-action4)) + (set! (-> s2-0 quad) (-> *z-vector* quad)) + ) + ((= (-> this action) (manipulator-action manip-action5)) + (set! (-> s2-0 quad) (-> *y-vector* quad)) + ) + ((= (-> this action) (manipulator-action manip-action6)) + (set! (-> s2-0 quad) (-> *x-vector* quad)) + ) + ((= (-> this action) (manipulator-action manip-action7)) + (set! (-> s2-0 quad) (-> (view-get-active-math-camera) inv-camera-rot fvec quad)) + ) + ) + (vector-normalize! s2-0 1.0) + (let ((f30-1 (intersect-ray-plane arg0 s5-1 (-> this position) s2-0)) + (f0-15 (intersect-ray-plane arg0 s4-1 (-> this position) s2-0)) + ) + (let ((a1-14 s5-1)) + (let ((v1-70 arg0)) + (let ((a0-66 s5-1)) + (let ((a2-12 f30-1)) + (.mov vf7 a2-12) + ) + (.lvf vf5 (&-> a0-66 quad)) + ) + (.lvf vf4 (&-> v1-70 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> a1-14 quad) vf6) + ) + (let ((v1-71 s4-1)) + (let ((a0-67 arg0)) + (let ((a1-15 s4-1)) + (let ((a2-13 f0-15)) + (.mov vf7 a2-13) + ) + (.lvf vf5 (&-> a1-15 quad)) + ) + (.lvf vf4 (&-> a0-67 quad)) + ) + (.add.x.vf.w vf6 vf0 vf0) + (.mul.x.vf.xyz acc vf5 vf7) + (.add.mul.w.vf.xyz vf6 vf4 vf0 acc) + (.svf (&-> v1-71 quad) vf6) + ) + ) + (let ((v1-72 (-> this position))) + (let ((a0-68 (-> this drag-ref-position)) + (a1-17 (vector-! (new 'stack-no-clear 'vector) s5-1 s4-1)) + ) + (.lvf vf4 (&-> a0-68 quad)) + (.lvf vf5 (&-> a1-17 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> v1-72 quad) vf6) + ) + ) + ) + ) + ) + (vector-! (-> this speed) (-> this position) (-> this speed)) + ) + ((= (-> this mode) (manipulator-mode manip-mode1)) + (let ((s4-2 (- (-> this rotate-ref) (the int (-> *mouse* posx)))) + (s5-2 (new 'stack-no-clear 'matrix)) + ) + (new 'stack 'euler-angles) + (matrix-identity! s5-2) + (cond + ((= (-> this action) (manipulator-action manip-action1)) + (matrix-axis-angle! s5-2 (-> this mat rvec) (* 182.04445 (the float s4-2))) + ) + ((= (-> this action) (manipulator-action manip-action2)) + (matrix-axis-angle! s5-2 (-> this mat uvec) (* 182.04445 (the float s4-2))) + ) + ((= (-> this action) (manipulator-action manip-action3)) + (matrix-axis-angle! s5-2 (-> this mat fvec) (* 182.04445 (the float s4-2))) + ) + ) + (matrix*! (-> this mat) (-> this mat) s5-2) + ) + (matrix-remove-scale! + (-> this mat) + (-> this mat) + (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 0.0)) + ) + (matrix->eul (-> this angles) (-> this mat) 21) + (format *stdcon* "X = ~R~%Y = ~R~%Z = ~R~%" (-> this angles x) (-> this angles y) (-> this angles z)) + (set! (-> this rotate-ref) (the int (-> *mouse* posx))) + ) + (else + ) + ) + 0 + (none) + ) + ) + +;; definition for method 14 of type manipulator +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod stop-dragging! ((this manipulator)) + (set! (-> this speed quad) (the-as uint128 0)) + (set! (-> this dragging?) #f) + 0 + (none) + ) diff --git a/test/decompiler/reference/jakx/engine/entity/entity-h_REF.gc b/test/decompiler/reference/jakx/engine/entity/entity-h_REF.gc index 356aee641b..82ca79ab77 100644 --- a/test/decompiler/reference/jakx/engine/entity/entity-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/entity/entity-h_REF.gc @@ -233,11 +233,31 @@ that gets accessed by the accompanying process." ) ) -;; type entity-camera is defined here, but it is unknown to the decompiler +;; definition of type entity-camera +(deftype entity-camera (entity) + ((connect quaternion :inline) + ) + ) -;; type entity-nav-mesh is defined here, but it is unknown to the decompiler +;; definition of type entity-nav-mesh +(deftype entity-nav-mesh (entity) + ((nav-mesh nav-mesh) + ) + (:methods + (initialize-nav-mesh! (_type_) none) + (debug-draw (_type_) none) + ) + ) -;; type entity-race-mesh is defined here, but it is unknown to the decompiler +;; definition of type entity-race-mesh +(deftype entity-race-mesh (entity) + ((race-mesh race-mesh) + ) + (:methods + (entity-race-mesh-method-27 () none) + (entity-race-mesh-method-28 () none) + ) + ) ;; definition of type entity-actor (deftype entity-actor (entity) diff --git a/test/decompiler/reference/jakx/engine/entity/res_REF.gc b/test/decompiler/reference/jakx/engine/entity/res_REF.gc new file mode 100644 index 0000000000..767b4713a2 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/entity/res_REF.gc @@ -0,0 +1,922 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for method 2 of type res-tag +(defmethod print ((this res-tag)) + (if (zero? (-> this inlined?)) + (format + #t + "#" + (-> this name) + (-> this key-frame) + (-> this elt-type) + (-> this elt-count) + ) + (format + #t + "#" + (-> this name) + (-> this key-frame) + (-> this elt-type) + (-> this elt-count) + ) + ) + this + ) + +;; definition for method 4 of type res-tag +;; WARN: Return type mismatch uint vs int. +(defmethod length ((this res-tag)) + (the-as int (if (zero? (-> this inlined?)) + (* (-> this elt-count) 4) + (* (-> this elt-count) (-> this elt-type size)) + ) + ) + ) + +;; definition for method 13 of type res-lump +;; INFO: Used lq/sq +(defmethod get-tag-index-data ((this res-lump) (arg0 int)) + "Get the data address of the n'th tag." + (&+ (-> this data-base) (-> this tag arg0 data-offset)) + ) + +;; definition for method 14 of type res-lump +(defmethod get-tag-data ((this res-lump) (arg0 res-tag)) + "Get the data address of the specified tag." + (&+ (-> this data-base) (-> arg0 data-offset)) + ) + +;; definition for method 0 of type res-lump +(defmethod new res-lump ((allocation symbol) (type-to-make type) (arg0 int) (arg1 int)) + (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* (+ arg0 -1) 16) arg1))))) + (set! (-> v0-0 allocated-length) arg0) + (set! (-> v0-0 data-size) arg1) + (set! (-> v0-0 length) 0) + (set! (-> v0-0 data-base) (&-> v0-0 tag arg0)) + (set! (-> v0-0 data-top) (&-> v0-0 tag arg0)) + v0-0 + ) + ) + +;; definition for method 4 of type res-lump +(defmethod length ((this res-lump)) + (-> this length) + ) + +;; definition for method 5 of type res-lump +;; WARN: Return type mismatch uint vs int. +(defmethod asize-of ((this res-lump)) + (the-as int (+ (-> this type psize) (* (-> this allocated-length) 16) (-> this data-size))) + ) + +;; definition for method 3 of type res-lump +;; INFO: Used lq/sq +(defmethod inspect ((this res-lump)) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~Textra: ~A~%" (-> this extra)) + (format #t "~Tallocated-length: ~D~%" (-> this allocated-length)) + (format #t "~Tlength: ~D~%" (-> this length)) + (format #t "~Tflags: #x~X~%" (-> this flags)) + (format #t "~Tdata-base: #x~X~%" (-> this data-base)) + (format #t "~Tdata-top: #x~X~%" (-> this data-top)) + (format #t "~Tdata-size: #x~X~%" (-> this data-size)) + (format #t "~Ttag[~D]: @ #x~X~%" (-> this allocated-length) (-> this tag)) + (dotimes (s5-0 (-> this length)) + (format #t "~T [~D] " s5-0) + (print (-> this tag s5-0)) + (let ((t9-11 format) + (a0-13 #t) + (a1-10 " @ #x~X") + (a3-2 this) + (a2-10 s5-0) + ) + (t9-11 a0-13 a1-10 (&+ (-> a3-2 data-base) (-> a3-2 tag a2-10 data-offset))) + ) + (cond + ((zero? (-> this tag s5-0 inlined?)) + (let ((t9-12 format) + (a0-15 #t) + (a1-11 " = ~A~%") + (a3-4 this) + (a2-18 s5-0) + ) + (t9-12 a0-15 a1-11 (-> (the-as (pointer uint32) (&+ (-> a3-4 data-base) (-> a3-4 tag a2-18 data-offset))))) + ) + ) + (else + (format #t "~%") + ) + ) + ) + this + ) + +;; definition for method 19 of type res-lump +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs res-tag-pair. +(defmethod lookup-tag-idx ((this res-lump) (arg0 symbol) (arg1 symbol) (arg2 float)) + "Look up the index of the tag containing with the given name and timestamp. + Correct lookups return a res-tag-pair, which contains one tag index in the lower 32 bits and one in the upper 32 bits. + Depending on the mode, they may be the same, or they may be two tags that you should interpolate + between, if the exact time was not found. + + @param name-sym should be the name of the thing you want. + @param time is for the timestamp you want. + If mode = 'base, then both the indices are the same and the timestamp is ignored. + If mode = 'interp, then it tries to get closest below/closest above (or both the same, if exact match found). + If mode = 'exact, then it requires an exact timestamp match and both indices are the same. + If things go wrong, returns a negative number." + (local-vars (t0-1 int)) + (if (or (not this) (zero? this) (<= (-> this length) 0)) + (return (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff)) + ) + (if (zero? (-> this flags)) + (sort! this) + ) + (let ((v1-8 -1) + (a0-2 -1) + ) + (let ((a1-1 -1) + (a2-1 (the-as object arg0)) + ) + (let ((a3-2 (+ (-> this length) -1)) + (t0-0 0) + ) + (while (>= a3-2 t0-0) + (let* ((t1-2 (+ t0-0 (/ (- a3-2 t0-0) 2))) + (t2-5 (- (the-as int a2-1) (the-as uint (the-as int (-> this tag t1-2 name))))) + ) + (cond + ((zero? t2-5) + (set! t0-1 t1-2) + (goto cfg-19) + ) + ((< t2-5 0) + (set! a3-2 (+ t1-2 -1)) + ) + (else + (set! t0-0 (+ t1-2 1)) + ) + ) + ) + ) + ) + (set! t0-1 -1) + (label cfg-19) + (if (< t0-1 0) + (return (the-as res-tag-pair t0-1)) + ) + (while (and (> t0-1 0) (= (the-as symbol a2-1) (-> this tag (+ t0-1 -1) name))) + (+! t0-1 -1) + ) + (when (= arg1 'base) + (set! a0-2 t0-1) + (set! v1-8 t0-1) + (goto cfg-60) + ) + (let ((a3-14 t0-1) + (t0-4 (&-> this tag t0-1)) + ) + (while (not (or (>= a3-14 (-> this length)) (< (the-as int a2-1) (the-as int (-> t0-4 0 name))))) + (cond + ((!= arg0 (-> t0-4 0 name)) + ) + ((= (-> t0-4 0 key-frame) arg2) + (set! a0-2 a3-14) + (set! v1-8 a3-14) + (goto cfg-60) + ) + ((and (>= arg2 (-> t0-4 0 key-frame)) (!= arg1 'exact)) + (set! a0-2 a3-14) + (set! v1-8 a3-14) + (if (= (-> t0-4 0 key-frame) -1000000000.0) + (set! a1-1 a3-14) + ) + ) + ((< arg2 (-> t0-4 0 key-frame)) + (if (and (!= a0-2 a1-1) (= arg1 'interp)) + (set! v1-8 a3-14) + ) + (goto cfg-60) + ) + ) + (+! a3-14 1) + (set! t0-4 (&-> t0-4 1)) + ) + ) + ) + (label cfg-60) + (the-as res-tag-pair (logior (logand (the-as uint #xffffffff) a0-2) (shl v1-8 32))) + ) + ) + +;; definition for method 20 of type res-lump +;; INFO: Used lq/sq +(defmethod make-property-data ((this res-lump) (arg1 float) (tag-pair res-tag-pair) (arg3 pointer)) + "Returns (a pointer to) the value data of a property with the tag-pair. + If tag-pair does not represent an exact point in the timeline, then the data is interpolated based on time + with the result written into buf. buf must have enough space to copy all of the data. + Otherwise, simply returns an address to the resource binary." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + ) + (let* ((t0-2 (-> this tag (-> tag-pair lo))) + (t1-2 (-> this tag (-> tag-pair hi))) + (v1-6 (-> t0-2 elt-count)) + ) + (cond + ((zero? (-> t0-2 inlined?)) + (&+ (-> this data-base) (-> t0-2 data-offset)) + ) + ((or (not arg3) + (= (-> tag-pair lo) (-> tag-pair hi)) + (!= v1-6 (-> t1-2 elt-count)) + (!= (-> t0-2 elt-type) (-> t1-2 elt-type)) + ) + (let ((a0-4 t0-2)) + (&+ (-> this data-base) (-> a0-4 data-offset)) + ) + ) + (else + (let* ((f0-2 (/ (- arg1 (-> t0-2 key-frame)) (- (-> t1-2 key-frame) (-> t0-2 key-frame)))) + (a1-4 this) + (a2-7 t0-2) + (a1-6 (&+ (-> a1-4 data-base) (-> a2-7 data-offset))) + (a2-13 (&+ (-> this data-base) (-> t1-2 data-offset))) + ) + (case (-> t0-2 elt-type symbol) + (('float) + (dotimes (a0-8 (the-as int v1-6)) + (set! (-> (the-as (pointer float) (&+ arg3 (* a0-8 4)))) + (+ (* (-> (the-as (pointer float) (&+ a1-6 (* a0-8 4)))) (- 1.0 f0-2)) + (* (-> (the-as (pointer float) (&+ a2-13 (* a0-8 4)))) f0-2) + ) + ) + ) + arg3 + ) + (('integer 'sinteger 'uinteger 'int64 'uint64) + (let ((a0-10 (the int (* 4096.0 f0-2)))) + (dotimes (t0-10 (the-as int v1-6)) + (set! (-> (the-as (pointer int64) (&+ arg3 (* t0-10 8)))) + (sar + (+ (* (the-as int (-> (the-as (pointer uint64) (&+ a1-6 (* t0-10 8))))) (- 4096 a0-10)) + (* (the-as int (-> (the-as (pointer uint64) (&+ a2-13 (* t0-10 8))))) a0-10) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('int8) + (let ((a0-12 (the int (* 4096.0 f0-2)))) + (dotimes (t0-11 (the-as int v1-6)) + (set! (-> (the-as (pointer int8) (&+ arg3 t0-11))) + (sar + (+ (* (-> (the-as (pointer int8) (&+ a1-6 t0-11))) (- 4096 a0-12)) + (* (-> (the-as (pointer int8) (&+ a2-13 t0-11))) a0-12) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('uint8) + (let ((a0-14 (the int (* 4096.0 f0-2)))) + (dotimes (t0-12 (the-as int v1-6)) + (set! (-> (the-as (pointer uint8) (&+ arg3 t0-12))) + (shr + (+ (* (-> (the-as (pointer uint8) (&+ a1-6 t0-12))) (the-as uint (- 4096 a0-14))) + (* (-> (the-as (pointer uint8) (&+ a2-13 t0-12))) (the-as uint a0-14)) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('int16) + (let ((a0-16 (the int (* 4096.0 f0-2)))) + (dotimes (t0-13 (the-as int v1-6)) + (set! (-> (the-as (pointer int16) (&+ arg3 (* t0-13 2)))) + (sar + (+ (* (-> (the-as (pointer int16) (&+ a1-6 (* t0-13 2)))) (- 4096 a0-16)) + (* (-> (the-as (pointer int16) (&+ a2-13 (* t0-13 2)))) a0-16) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('uint16) + (let ((a0-18 (the int (* 4096.0 f0-2)))) + (dotimes (t0-14 (the-as int v1-6)) + (set! (-> (the-as (pointer uint16) (&+ arg3 (* t0-14 2)))) + (shr + (+ (* (-> (the-as (pointer uint16) (&+ a1-6 (* t0-14 2)))) (the-as uint (- 4096 a0-18))) + (* (-> (the-as (pointer uint16) (&+ a2-13 (* t0-14 2)))) (the-as uint a0-18)) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('int32) + (let ((a0-20 (the int (* 4096.0 f0-2)))) + (dotimes (t0-15 (the-as int v1-6)) + (set! (-> (the-as (pointer int32) (&+ arg3 (* t0-15 4)))) + (sar + (+ (* (-> (the-as (pointer int32) (&+ a1-6 (* t0-15 4)))) (- 4096 a0-20)) + (* (-> (the-as (pointer int32) (&+ a2-13 (* t0-15 4)))) a0-20) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('uint32) + (let ((a0-22 (the int (* 4096.0 f0-2)))) + (dotimes (t0-16 (the-as int v1-6)) + (set! (-> (the-as (pointer uint32) (&+ arg3 (* t0-16 4)))) + (shr + (+ (* (-> (the-as (pointer uint32) (&+ a1-6 (* t0-16 4)))) (the-as uint (- 4096 a0-22))) + (* (-> (the-as (pointer uint32) (&+ a2-13 (* t0-16 4)))) (the-as uint a0-22)) + ) + 12 + ) + ) + ) + ) + arg3 + ) + (('vector) + (let ((a0-23 f0-2)) + (.mov vf3 a0-23) + ) + (let ((a0-25 (- 1.0 f0-2))) + (.mov vf4 a0-25) + ) + (dotimes (a0-26 (the-as int v1-6)) + (let ((t0-18 (+ (* a0-26 16) (the-as int a1-6)))) + (.lvf vf1 (&-> (the-as (pointer int128) t0-18))) + ) + (let ((t0-20 (+ (* a0-26 16) (the-as int a2-13)))) + (.lvf vf2 (&-> (the-as (pointer int128) t0-20))) + ) + (.mul.x.vf vf1 vf1 vf4) + (.mul.x.vf vf2 vf2 vf3) + (.add.vf vf1 vf1 vf2) + (.svf (&-> (the-as (pointer uint128) (+ (* a0-26 16) (the-as int arg3))) 0) vf1) + ) + arg3 + ) + (else + (let ((a0-27 t0-2)) + (&+ (-> this data-base) (-> a0-27 data-offset)) + ) + ) + ) + ) + ) + ) + ) + ) + ) + +;; definition for method 9 of type res-lump +;; INFO: Used lq/sq +(defmethod get-property-data ((this res-lump) + (name symbol) + (mode symbol) + (time float) + (arg3 pointer) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + "Returns an address to a given property's data at a specific time stamp, or default on error. + @param name is the name of the property you want, mode is its lookup mode ('interp 'base 'exact), time is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f + @param buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode." + (let ((s3-0 (lookup-tag-idx this name mode time))) + (cond + ((< (the-as int s3-0) 0) + (empty) + ) + (else + (set! arg3 (make-property-data this time s3-0 arg5)) + (if arg4 + (set! (-> arg4 0) (-> this tag (-> s3-0 lo))) + ) + ) + ) + ) + arg3 + ) + +;; definition for method 10 of type res-lump +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs structure. +(defmethod get-property-struct ((this res-lump) + (arg0 symbol) + (arg1 symbol) + (arg2 float) + (arg3 structure) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + "Returns a given struct property's value at a specific time stamp, or default on error. + @param name is the name of the property you want, `mode` is its lookup mode ('interp 'base 'exact), `time` is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a [[res-tag]]. The current base tag is written to this. Ignored if tag-addr is #f. + @param buf-addr is an address to the data buffer used to write interpolated data to. + It must have enough space! Only necessary for 'interp mode." + (let ((s3-0 (lookup-tag-idx this arg0 arg1 arg2))) + (cond + ((< (the-as int s3-0) 0) + (empty) + ) + (else + (set! arg3 (the-as structure (make-property-data this arg2 s3-0 arg5))) + (let ((v1-4 (-> this tag (-> s3-0 lo)))) + (if arg4 + (set! (-> arg4 0) v1-4) + ) + (if (zero? (-> v1-4 inlined?)) + (set! arg3 (the-as structure (-> (the-as (pointer uint32) arg3)))) + (empty) + ) + ) + ) + ) + ) + (the-as structure arg3) + ) + +;; definition for method 11 of type res-lump +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs uint128. +(defmethod get-property-value ((this res-lump) + (arg0 symbol) + (arg1 symbol) + (arg2 float) + (arg3 uint128) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + "Returns a given value property's value at a specific time stamp, or default on error. + @param name is the name of the property you want, `mode` is its lookup mode ('interp 'base 'exact), `time` is the timestamp. + @param default is the default result returned in the case of an error. + @param tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if `tag-addr` is #f. + @param buf-addr is an address to the data buffer used to write interpolated data to. + It must have enough space! Only necessary for 'interp mode." + (let ((a2-1 (lookup-tag-idx this arg0 arg1 arg2))) + (cond + ((< (the-as int a2-1) 0) + (empty) + ) + (else + (let* ((a0-2 (-> a2-1 lo)) + (s1-0 (-> this tag a0-2)) + (s0-0 (-> s1-0 elt-type)) + (gp-1 (make-property-data this arg2 a2-1 arg5)) + ) + (if arg4 + (set! (-> arg4 0) s1-0) + ) + (cond + ((type-type? (the-as type s0-0) uinteger) + (case (-> s1-0 elt-type size) + ((1) + (set! arg3 (the-as uint128 (-> (the-as (pointer uint8) gp-1)))) + ) + ((2) + (set! arg3 (the-as uint128 (-> (the-as (pointer uint16) gp-1)))) + ) + ((4) + (set! arg3 (the-as uint128 (-> (the-as (pointer uint32) gp-1)))) + ) + ((16) + (set! arg3 (-> (the-as (pointer uint128) gp-1))) + ) + (else + (set! arg3 (the-as uint128 (-> (the-as (pointer uint64) gp-1)))) + ) + ) + ) + ((type-type? (the-as type s0-0) integer) + (case (-> s1-0 elt-type size) + ((1) + (set! arg3 (the-as uint128 (-> (the-as (pointer int8) gp-1)))) + ) + ((2) + (set! arg3 (the-as uint128 (-> (the-as (pointer int16) gp-1)))) + ) + ((4) + (set! arg3 (the-as uint128 (-> (the-as (pointer int32) gp-1)))) + ) + ((16) + (set! arg3 (-> (the-as (pointer uint128) gp-1))) + ) + (else + (set! arg3 (the-as uint128 (-> (the-as (pointer uint64) gp-1)))) + ) + ) + ) + ((type-type? (the-as type s0-0) float) + (set! arg3 (the-as uint128 (the int (-> (the-as (pointer float) gp-1))))) + ) + (else + (empty) + ) + ) + ) + ) + ) + ) + (the-as uint128 arg3) + ) + +;; definition for method 12 of type res-lump +;; INFO: Used lq/sq +(defmethod get-property-value-float ((this res-lump) + (arg0 symbol) + (arg1 symbol) + (arg2 float) + (arg3 float) + (arg4 (pointer res-tag)) + (arg5 pointer) + ) + (local-vars (v1-8 uint) (v1-11 int)) + (let ((a2-1 (lookup-tag-idx this arg0 arg1 arg2))) + (cond + ((< (the-as int a2-1) 0) + (empty) + ) + (else + (let* ((a0-2 (-> a2-1 lo)) + (s1-0 (-> this tag a0-2)) + (s0-0 (-> s1-0 elt-type)) + (gp-1 (make-property-data this arg2 a2-1 arg5)) + ) + (if arg4 + (set! (-> arg4 0) s1-0) + ) + (cond + ((type-type? (the-as type s0-0) float) + (set! arg3 (-> (the-as (pointer float) gp-1))) + ) + ((type-type? (the-as type s0-0) uinteger) + (case (-> s1-0 elt-type size) + ((1) + (set! v1-8 (-> (the-as (pointer uint8) gp-1))) + ) + ((2) + (set! v1-8 (-> (the-as (pointer uint16) gp-1))) + ) + ((4) + (set! v1-8 (-> (the-as (pointer uint32) gp-1))) + ) + ((16) + (set! v1-8 (the-as uint (-> (the-as (pointer uint128) gp-1)))) + ) + (else + (set! v1-8 (-> (the-as (pointer uint64) gp-1))) + ) + ) + (set! arg3 (the float v1-8)) + ) + ((type-type? (the-as type s0-0) integer) + (case (-> s1-0 elt-type size) + ((1) + (set! v1-11 (-> (the-as (pointer int8) gp-1))) + ) + ((2) + (set! v1-11 (-> (the-as (pointer int16) gp-1))) + ) + ((4) + (set! v1-11 (-> (the-as (pointer int32) gp-1))) + ) + ((16) + (set! v1-11 (the-as int (-> (the-as (pointer uint128) gp-1)))) + ) + (else + (set! v1-11 (the-as int (-> (the-as (pointer uint64) gp-1)))) + ) + ) + (set! arg3 (the float v1-11)) + ) + (else + (empty) + ) + ) + ) + ) + ) + ) + arg3 + ) + +;; definition for method 16 of type res-lump +;; INFO: Used lq/sq +(defmethod sort! ((this res-lump)) + "Sort all tags based on name, then key-frame." + (let ((v1-0 -1)) + (while (nonzero? v1-0) + (set! v1-0 0) + (let ((a1-0 0) + (a2-1 (+ (-> this length) -2)) + ) + (while (>= a2-1 a1-0) + (let* ((a3-2 (-> this tag a1-0)) + (t0-3 (-> this tag (+ a1-0 1))) + (t1-3 (-> a3-2 name)) + (t2-1 (-> t0-3 name)) + ) + (when (or (< (the-as int t2-1) (the-as int t1-3)) (and (= t1-3 t2-1) (< (-> t0-3 key-frame) (-> a3-2 key-frame)))) + (+! v1-0 1) + (set! (-> this tag a1-0) t0-3) + (set! (-> this tag (+ a1-0 1)) a3-2) + ) + ) + (+! a1-0 1) + ) + ) + ) + ) + (set! (-> this flags) (res-lump-flags sorted)) + this + ) + +;; definition for method 15 of type res-lump +;; INFO: Used lq/sq +(defmethod allocate-data-memory-for-tag! ((this res-lump) (arg0 res-tag)) + "Find space for the data described by arg0 in this. + Returns a tag with data-offset set correctly for this res-lump. + If the lump already contains memory for the given tag, and it is big enough, + it will be reused. Alignment will be at least 8 bytes. + If the input tag has elt-count = 0, it will return a tag for elt-count = 1." + (local-vars (resource-mem pointer)) + (let* ((tag-pair (lookup-tag-idx this (-> arg0 name) 'exact (-> arg0 key-frame))) + (existing-tag (-> this tag (-> tag-pair lo))) + ) + 0 + (if (and (>= (the-as int tag-pair) 0) (!= (-> arg0 key-frame) (-> arg0 key-frame))) + (set! tag-pair (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff)) + ) + (if (zero? (-> arg0 elt-count)) + (set! arg0 (copy-and-set-field arg0 elt-count 1)) + ) + (let ((data-size (length arg0))) + (cond + ((and (>= (the-as int tag-pair) 0) (>= (length existing-tag) data-size)) + (set! resource-mem (&+ (-> this data-base) (-> existing-tag data-offset))) + (when (logtest? (the-as int resource-mem) 7) + (set! resource-mem (logand -16 (&+ (-> this data-top) 15))) + (set! (-> this data-top) (&+ resource-mem data-size)) + ) + ) + (else + (set! resource-mem (logand -16 (&+ (-> this data-top) 15))) + (set! (-> this data-top) (&+ resource-mem data-size)) + ) + ) + (let* ((a0-22 arg0) + (s4-1 (copy-and-set-field a0-22 data-offset (&- resource-mem (the-as uint (-> this data-base))))) + ) + (when (>= (the-as int (&+ resource-mem data-size)) (the-as int (&+ (-> this data-base) (-> this data-size)))) + (format + 0 + "ERROR: attempting to a new tag ~`res-tag`P data of #x~X bytes to ~A, but data memory is full.~%" + s4-1 + data-size + this + ) + (return (the-as res-tag #f)) + ) + (cond + ((< (the-as int tag-pair) 0) + (cond + ((>= (-> this length) (-> this allocated-length)) + (format 0 "ERROR: attempting to a new tag ~`res-tag`P to ~A, but tag memory is full.~%" s4-1 this) + (return (the-as res-tag #f)) + ) + (else + (set! (-> this tag (-> this length)) s4-1) + (+! (-> this length) 1) + (sort! this) + ) + ) + ) + (else + (set! (-> this tag (-> tag-pair lo)) s4-1) + ) + ) + s4-1 + ) + ) + ) + ) + +;; definition for method 17 of type res-lump +(defmethod add-data! ((this res-lump) (tag res-tag) (arg2 pointer)) + "Given a tag and a pointer to its data, copy it to this res-lump. + This doesn't seem to do the right thing if the given tag is a non-inline tag + with > 1 element." + (let ((a0-2 (allocate-data-memory-for-tag! this tag))) + (when a0-2 + (let* ((v1-2 this) + (a1-1 a0-2) + (s4-0 (&+ (-> v1-2 data-base) (-> a1-1 data-offset))) + ) + (cond + ((zero? (-> a0-2 inlined?)) + (length a0-2) + (set! (-> (the-as (pointer pointer) s4-0) 0) arg2) + ) + (else + (let ((a2-1 (length a0-2))) + (mem-copy! s4-0 arg2 a2-1) + ) + ) + ) + ) + ) + ) + this + ) + +;; definition for method 18 of type res-lump +(defmethod add-32bit-data! ((this res-lump) (arg0 res-tag) (arg1 object)) + "Add a single 32-bit value using [[add-data!]]." + (let* ((sv-16 arg1) + (v1-0 arg0) + (a1-4 (copy-and-set-field v1-0 inlined? 1)) + ) + (add-data! this a1-4 (& sv-16)) + ) + ) + +;; definition for method 21 of type res-lump +;; INFO: Used lq/sq +(defmethod get-curve-data! ((this res-lump) (arg0 curve) (arg1 symbol) (arg2 symbol) (arg3 float)) + "Read curve data and write it to curve-target. Return #t if both + control points and knots data was succesfully read, #f otherwise." + (let ((s5-0 #f)) + (let* ((sv-16 (new 'static 'res-tag)) + (a0-2 ((method-of-object this get-property-data) + this + arg1 + 'exact + arg3 + (the-as pointer #f) + (& sv-16) + *res-static-buf* + ) + ) + ) + (when a0-2 + (set! (-> arg0 cverts) (the-as (inline-array vector) a0-2)) + (set! (-> arg0 num-cverts) (the-as int (-> sv-16 elt-count))) + (when (< 256 (-> arg0 num-cverts)) + (format + 0 + "ERROR: curve has ~D control points--only ~D are allowed. Increase MAX-CURVE-CONTROL-POINTS or shorten the curve.~%" + (-> arg0 num-cverts) + 256 + ) + (set! (-> arg0 num-cverts) 256) + ) + (let* ((sv-32 (new 'static 'res-tag)) + (a0-6 ((method-of-object this get-property-data) + this + arg2 + 'exact + arg3 + (the-as pointer #f) + (& sv-32) + *res-static-buf* + ) + ) + ) + (when a0-6 + (set! (-> arg0 knots) (the-as (pointer float) a0-6)) + (set! (-> arg0 num-knots) (the-as int (-> sv-32 elt-count))) + (set! s5-0 #t) + ) + ) + ) + ) + s5-0 + ) + ) + +;; definition for method 8 of type res-lump +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs res-lump. +(defmethod mem-usage ((this res-lump) (usage memory-usage-block) (flags int)) + (let ((s3-0 48) + (s2-0 "res") + ) + (cond + ((logtest? flags 256) + (set! s3-0 44) + (set! s2-0 "camera") + ) + ((logtest? flags 64) + (set! s3-0 43) + (set! s2-0 "entity") + ) + ((logtest? flags 512) + (set! s3-0 76) + (set! s2-0 "art-joint-geo") + ) + ) + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let ((v1-19 (asize-of this))) + (+! (-> usage data s3-0 used) v1-19) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-19 15))) + ) + (dotimes (s1-0 (-> this length)) + (when (zero? (-> this tag s1-0 inlined?)) + (let* ((a1-4 this) + (a0-15 s1-0) + (s0-0 (the-as object (-> (the-as (pointer int32) (&+ (-> a1-4 data-base) (-> a1-4 tag a0-15 data-offset)))))) + ) + (when (not (part-group-pointer? (the-as pointer s0-0))) + (let ((v1-34 (rtype-of (the-as int s0-0)))) + (cond + ((or (= v1-34 symbol) (or (= v1-34 type) (= v1-34 pair))) + ) + ((= v1-34 string) + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let ((v1-48 ((method-of-type (rtype-of (the-as int s0-0)) asize-of) (the-as int s0-0)))) + (+! (-> usage data s3-0 used) v1-48) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-48 15))) + ) + ) + ((or (= v1-34 nav-mesh) (= v1-34 collide-mesh)) + (let ((a0-48 (the-as (array object) s0-0))) + ((method-of-type (rtype-of a0-48) mem-usage) a0-48 usage flags) + ) + ) + ((= v1-34 array) + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let* ((a0-53 (the-as (array object) s0-0)) + (v1-68 ((method-of-type (rtype-of a0-53) asize-of) a0-53)) + ) + (+! (-> usage data s3-0 used) v1-68) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-68 15))) + ) + (let ((sv-16 0)) + (while (< sv-16 (-> (the-as array s0-0) length)) + (let ((a0-63 (-> (the-as (array object) s0-0) sv-16))) + ((method-of-type (rtype-of a0-63) mem-usage) a0-63 usage flags) + ) + (+! sv-16 1) + ) + ) + ) + (else + (set! (-> usage length) (max (-> usage length) (+ s3-0 1))) + (set! (-> usage data s3-0 name) s2-0) + (+! (-> usage data s3-0 count) 1) + (let* ((a0-68 (the-as int s0-0)) + (v1-96 ((method-of-type (rtype-of a0-68) asize-of) a0-68)) + ) + (+! (-> usage data s3-0 used) v1-96) + (+! (-> usage data s3-0 total) (logand -16 (+ v1-96 15))) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (the-as res-lump 0) + ) + +;; definition for symbol *res-static-buf*, type pointer +(define *res-static-buf* (malloc 'global 128)) diff --git a/test/decompiler/reference/jakx/engine/game/fact-h_REF.gc b/test/decompiler/reference/jakx/engine/game/fact-h_REF.gc new file mode 100644 index 0000000000..1f983cda22 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/game/fact-h_REF.gc @@ -0,0 +1,926 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type fact-bank +(deftype fact-bank (basic) + ((eco-level-max float) + (eco-single-inc float) + (eco-full-inc float) + (eco-single-timeout seconds) + (eco-full-timeout seconds) + (dummy seconds) + (health-max-default float) + (health-max-max float) + (health-small-inc float) + (health-single-inc float) + (health-default-inc float) + (eco-pill-green-max-default float) + (eco-pill-dark-max-default float) + (eco-pill-light-max-default float) + (eco-green-max-default float) + (default-eco-pill-green-inc float) + (default-eco-pill-dark-inc float) + (default-eco-pill-light-inc float) + (buzzer-max-default float) + (buzzer-single-inc float) + (suck-bounce-dist meters) + (suck-suck-dist meters) + (shield-max float) + (shield-use-speed float) + (shield-time-min seconds) + (trick-point-max float) + (super-skill-inc float) + (darkjak-spin-inc float) + (darkjak-punch-inc float) + (darkjak-flop-inc float) + (darkjak-uppercut-inc float) + (darkjak-bomb0-inc float) + (darkjak-bomb1-inc float) + (darkjak-smack-inc float) + (darkjak-bomb-min float) + (darkjak-button-invis-inc float) + ) + ) + +;; definition for method 3 of type fact-bank +(defmethod inspect ((this fact-bank)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Teco-level-max: ~f~%" (-> this eco-level-max)) + (format #t "~1Teco-single-inc: ~f~%" (-> this eco-single-inc)) + (format #t "~1Teco-full-inc: ~f~%" (-> this eco-full-inc)) + (format #t "~1Teco-single-timeout: (seconds ~e)~%" (-> this eco-single-timeout)) + (format #t "~1Teco-full-timeout: (seconds ~e)~%" (-> this eco-full-timeout)) + (format #t "~1Tdummy: (seconds ~e)~%" (-> this dummy)) + (format #t "~1Thealth-max-default: ~f~%" (-> this health-max-default)) + (format #t "~1Thealth-max-max: ~f~%" (-> this health-max-max)) + (format #t "~1Thealth-small-inc: ~f~%" (-> this health-small-inc)) + (format #t "~1Thealth-single-inc: ~f~%" (-> this health-single-inc)) + (format #t "~1Thealth-default-inc: ~f~%" (-> this health-default-inc)) + (format #t "~1Teco-pill-green-max-default: ~f~%" (-> this eco-pill-green-max-default)) + (format #t "~1Teco-pill-dark-max-default: ~f~%" (-> this eco-pill-dark-max-default)) + (format #t "~1Teco-pill-light-max-default: ~f~%" (-> this eco-pill-light-max-default)) + (format #t "~1Teco-green-max-default: ~f~%" (-> this eco-green-max-default)) + (format #t "~1Tdefault-eco-pill-green-inc: ~f~%" (-> this default-eco-pill-green-inc)) + (format #t "~1Tdefault-eco-pill-dark-inc: ~f~%" (-> this default-eco-pill-dark-inc)) + (format #t "~1Tdefault-eco-pill-light-inc: ~f~%" (-> this default-eco-pill-light-inc)) + (format #t "~1Tbuzzer-max-default: ~f~%" (-> this buzzer-max-default)) + (format #t "~1Tbuzzer-single-inc: ~f~%" (-> this buzzer-single-inc)) + (format #t "~1Tsuck-bounce-dist: (meters ~m)~%" (-> this suck-bounce-dist)) + (format #t "~1Tsuck-suck-dist: (meters ~m)~%" (-> this suck-suck-dist)) + (format #t "~1Tshield-max: ~f~%" (-> this shield-max)) + (format #t "~1Tshield-use-speed: ~f~%" (-> this shield-use-speed)) + (format #t "~1Tshield-time-min: (seconds ~e)~%" (-> this shield-time-min)) + (format #t "~1Ttrick-point-max: ~f~%" (-> this trick-point-max)) + (format #t "~1Tsuper-skill-inc: ~f~%" (-> this super-skill-inc)) + (format #t "~1Tdarkjak-spin-inc: ~f~%" (-> this darkjak-spin-inc)) + (format #t "~1Tdarkjak-punch-inc: ~f~%" (-> this darkjak-punch-inc)) + (format #t "~1Tdarkjak-flop-inc: ~f~%" (-> this darkjak-flop-inc)) + (format #t "~1Tdarkjak-uppercut-inc: ~f~%" (-> this darkjak-uppercut-inc)) + (format #t "~1Tdarkjak-bomb0-inc: ~f~%" (-> this darkjak-bomb0-inc)) + (format #t "~1Tdarkjak-bomb1-inc: ~f~%" (-> this darkjak-bomb1-inc)) + (format #t "~1Tdarkjak-smack-inc: ~f~%" (-> this darkjak-smack-inc)) + (format #t "~1Tdarkjak-bomb-min: ~f~%" (-> this darkjak-bomb-min)) + (format #t "~1Tdarkjak-button-invis-inc: ~f~%" (-> this darkjak-button-invis-inc)) + (label cfg-4) + this + ) + +;; definition for symbol *FACT-bank*, type fact-bank +(define *FACT-bank* (new 'static 'fact-bank + :eco-level-max 2.0 + :eco-single-inc 1.0 + :eco-full-inc 5.0 + :eco-single-timeout (seconds 5) + :eco-full-timeout (seconds 20) + :dummy (seconds 15) + :health-max-default 8.0 + :health-max-max 16.0 + :health-small-inc 1.0 + :health-single-inc 1.0 + :health-default-inc 2.0 + :eco-pill-green-max-default 50.0 + :eco-pill-dark-max-default 100.0 + :eco-pill-light-max-default 100.0 + :eco-green-max-default 100.0 + :buzzer-max-default 7.0 + :buzzer-single-inc 1.0 + :suck-bounce-dist (meters 18) + :suck-suck-dist (meters 7.5) + :shield-max 100.0 + :shield-use-speed 10.0 + :shield-time-min (seconds 1.5) + :trick-point-max 999999.0 + :super-skill-inc 3.0 + :darkjak-spin-inc 4.0 + :darkjak-punch-inc 4.0 + :darkjak-flop-inc 6.0 + :darkjak-uppercut-inc 6.0 + :darkjak-bomb0-inc 100.0 + :darkjak-bomb1-inc 100.0 + :darkjak-smack-inc 15.0 + :darkjak-bomb-min 50.0 + :darkjak-button-invis-inc 20.0 + ) + ) + +;; definition (debug) for function pickup-type->string +(defun-debug pickup-type->string ((arg0 pickup-type)) + (case arg0 + (((pickup-type eco-pill-dark)) + "eco-pill-dark" + ) + (((pickup-type ammo-dark-light-random)) + "ammo-dark-light-random" + ) + (((pickup-type ammo-random)) + "ammo-random" + ) + (((pickup-type eco-blue)) + "eco-blue" + ) + (((pickup-type gun-yellow-1)) + "gun-yellow-1" + ) + (((pickup-type pass-red)) + "pass-red" + ) + (((pickup-type eco-pill-green)) + "eco-pill-green" + ) + (((pickup-type eco-red)) + "eco-red" + ) + (((pickup-type dark-eco-crystal)) + "dark-eco-crystal" + ) + (((pickup-type skill)) + "skill" + ) + (((pickup-type karma)) + "karma" + ) + (((pickup-type eco-dark)) + "eco-dark" + ) + (((pickup-type gun-red-3)) + "gun-red-3" + ) + (((pickup-type gun-dark-1)) + "gun-dark-1" + ) + (((pickup-type gun-yellow-3)) + "gun-yellow-3" + ) + (((pickup-type gem)) + "gem" + ) + (((pickup-type eco-green)) + "eco-green" + ) + (((pickup-type darkjak)) + "darkjak" + ) + (((pickup-type ammo-yellow)) + "ammo-yellow" + ) + (((pickup-type gun-blue-1)) + "gun-blue-1" + ) + (((pickup-type pass-blue)) + "pass-blue" + ) + (((pickup-type ammo-light-random)) + "ammo-light-random" + ) + (((pickup-type gun-dark-2)) + "gun-dark-2" + ) + (((pickup-type ammo-red)) + "ammo-red" + ) + (((pickup-type lightjak)) + "lightjak" + ) + (((pickup-type fuel-cell)) + "fuel-cell" + ) + (((pickup-type gun-blue-2)) + "gun-blue-2" + ) + (((pickup-type buzzer)) + "buzzer" + ) + (((pickup-type gun-dark-3)) + "gun-dark-3" + ) + (((pickup-type gun-red-1)) + "gun-red-1" + ) + (((pickup-type gun-blue-3)) + "gun-blue-3" + ) + (((pickup-type shield)) + "shield" + ) + (((pickup-type eco-pill-random)) + "eco-pill-random" + ) + (((pickup-type health-max)) + "health-max" + ) + (((pickup-type light-eco-crystal)) + "light-eco-crystal" + ) + (((pickup-type board)) + "board" + ) + (((pickup-type none)) + "none" + ) + (((pickup-type pass-green)) + "pass-green" + ) + (((pickup-type light-random)) + "light-random" + ) + (((pickup-type gun-yellow-2)) + "gun-yellow-2" + ) + (((pickup-type pass-slumb-genb)) + "pass-slumb-genb" + ) + (((pickup-type money)) + "money" + ) + (((pickup-type eco-yellow)) + "eco-yellow" + ) + (((pickup-type ammo-dark)) + "ammo-dark" + ) + (((pickup-type trick-judge)) + "trick-judge" + ) + (((pickup-type eco-pill-light)) + "eco-pill-light" + ) + (((pickup-type trick-point)) + "trick-point" + ) + (((pickup-type ammo-blue)) + "ammo-blue" + ) + (((pickup-type pass-yellow)) + "pass-yellow" + ) + (((pickup-type gun-red-2)) + "gun-red-2" + ) + (((pickup-type health)) + "health" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition of type fact-info +(deftype fact-info (basic) + ((process process) + (pickup-type pickup-type) + (pickup-amount float) + (pickup-spawn-amount float) + (options actor-option) + (fade-time time-frame) + ) + (:methods + (new (symbol type process pickup-type float) _type_) + (drop-pickup (_type_ symbol process-tree fact-info int symbol) (pointer process)) + (reset! (_type_ symbol) none) + (pickup-collectable! (_type_ pickup-type float handle) float) + ) + ) + +;; definition for method 3 of type fact-info +(defmethod inspect ((this fact-info)) + (when (not this) + (set! this this) + (goto cfg-62) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tprocess: ~A~%" (-> this process)) + (format #t "~1Tpickup-type: #x~X : ~S~%" (-> this pickup-type) (pickup-type->string (-> this pickup-type))) + (format #t "~1Tpickup-amount: ~f~%" (-> this pickup-amount)) + (format #t "~1Tpickup-spawn-amount: ~f~%" (-> this pickup-spawn-amount)) + (format #t "~1Toptions: #x~X : (actor-option " (-> this options)) + (let ((s5-1 (-> this options))) + (if (= (logand s5-1 (actor-option respawn-delay)) (actor-option respawn-delay)) + (format #t "respawn-delay ") + ) + (if (= (logand s5-1 (actor-option draw-blocker)) (actor-option draw-blocker)) + (format #t "draw-blocker ") + ) + (if (= (logand (actor-option user20) s5-1) (actor-option user20)) + (format #t "user20 ") + ) + (if (= (logand (actor-option no-amb-sound) s5-1) (actor-option no-amb-sound)) + (format #t "no-amb-sound ") + ) + (if (= (logand s5-1 (actor-option auto-pickup)) (actor-option auto-pickup)) + (format #t "auto-pickup ") + ) + (if (= (logand (actor-option no-track) s5-1) (actor-option no-track)) + (format #t "no-track ") + ) + (if (= (logand s5-1 (actor-option no-shadow)) (actor-option no-shadow)) + (format #t "no-shadow ") + ) + (if (= (logand s5-1 (actor-option loop)) (actor-option loop)) + (format #t "loop ") + ) + (if (= (logand s5-1 (actor-option fuel-cell-no-jump)) (actor-option fuel-cell-no-jump)) + (format #t "fuel-cell-no-jump ") + ) + (if (= (logand (actor-option fall) s5-1) (actor-option fall)) + (format #t "fall ") + ) + (if (= (logand (actor-option user18) s5-1) (actor-option user18)) + (format #t "user18 ") + ) + (if (= (logand s5-1 (actor-option big-collision)) (actor-option big-collision)) + (format #t "big-collision ") + ) + (if (= (logand s5-1 (actor-option no-reaction)) (actor-option no-reaction)) + (format #t "no-reaction ") + ) + (if (= (logand s5-1 (actor-option suck-in)) (actor-option suck-in)) + (format #t "suck-in ") + ) + (if (= (logand s5-1 (actor-option racer-only)) (actor-option racer-only)) + (format #t "racer-only ") + ) + (if (= (logand s5-1 (actor-option blocked)) (actor-option blocked)) + (format #t "blocked ") + ) + (if (= (logand (actor-option no-distance-check-fadeout) s5-1) (actor-option no-distance-check-fadeout)) + (format #t "no-distance-check-fadeout ") + ) + (if (= (logand (actor-option cond-hide) s5-1) (actor-option cond-hide)) + (format #t "cond-hide ") + ) + (if (= (logand (actor-option dont-override-fact) s5-1) (actor-option dont-override-fact)) + (format #t "dont-override-fact ") + ) + (if (= (logand (actor-option user17) s5-1) (actor-option user17)) + (format #t "user17 ") + ) + (if (= (logand s5-1 (actor-option wait-for-cue)) (actor-option wait-for-cue)) + (format #t "wait-for-cue ") + ) + (if (= (logand s5-1 (actor-option reflect)) (actor-option reflect)) + (format #t "reflect ") + ) + (if (= (logand (actor-option user19) s5-1) (actor-option user19)) + (format #t "user19 ") + ) + (if (= (logand (actor-option cond-respawn) s5-1) (actor-option cond-respawn)) + (format #t "cond-respawn ") + ) + (if (= (logand s5-1 (actor-option wait-for-task-complete)) (actor-option wait-for-task-complete)) + (format #t "wait-for-task-complete ") + ) + (if (= (logand s5-1 (actor-option fade-out)) (actor-option fade-out)) + (format #t "fade-out ") + ) + (if (= (logand (actor-option cond-low-ammo) s5-1) (actor-option cond-low-ammo)) + (format #t "cond-low-ammo ") + ) + (if (= (logand (actor-option mirror) s5-1) (actor-option mirror)) + (format #t "mirror ") + ) + (if (= (logand s5-1 (actor-option spawns-fuel-cell)) (actor-option spawns-fuel-cell)) + (format #t "spawns-fuel-cell ") + ) + ) + (format #t ")~%") + (format #t "~1Tfade-time: ~D~%" (-> this fade-time)) + (label cfg-62) + this + ) + +;; definition of type fact-info-enemy +(deftype fact-info-enemy (fact-info) + ((speed float) + (idle-distance meters) + (notice-top meters) + (notice-bottom meters) + (cam-horz meters) + (cam-vert meters) + (cam-notice-dist meters) + (enemy-options enemy-option) + (trig-dist meters) + (trig-actor-group (pointer actor-group)) + (trig-mask-count int8) + (trig-mask uint8 2) + ) + (:methods + (new (symbol type process (pointer float)) _type_) + (clear-mask-bits (_type_ int) none) + ) + ) + +;; definition for method 3 of type fact-info-enemy +(defmethod inspect ((this fact-info-enemy)) + (when (not this) + (set! this this) + (goto cfg-114) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tprocess: ~A~%" (-> this process)) + (format #t "~1Tpickup-type: #x~X : ~S~%" (-> this pickup-type) (pickup-type->string (-> this pickup-type))) + (format #t "~1Tpickup-amount: ~f~%" (-> this pickup-amount)) + (format #t "~1Tpickup-spawn-amount: ~f~%" (-> this pickup-spawn-amount)) + (format #t "~1Toptions: #x~X : (actor-option " (-> this options)) + (let ((s5-1 (-> this options))) + (if (= (logand s5-1 (actor-option respawn-delay)) (actor-option respawn-delay)) + (format #t "respawn-delay ") + ) + (if (= (logand s5-1 (actor-option draw-blocker)) (actor-option draw-blocker)) + (format #t "draw-blocker ") + ) + (if (= (logand (actor-option user20) s5-1) (actor-option user20)) + (format #t "user20 ") + ) + (if (= (logand (actor-option no-amb-sound) s5-1) (actor-option no-amb-sound)) + (format #t "no-amb-sound ") + ) + (if (= (logand s5-1 (actor-option auto-pickup)) (actor-option auto-pickup)) + (format #t "auto-pickup ") + ) + (if (= (logand (actor-option no-track) s5-1) (actor-option no-track)) + (format #t "no-track ") + ) + (if (= (logand s5-1 (actor-option no-shadow)) (actor-option no-shadow)) + (format #t "no-shadow ") + ) + (if (= (logand s5-1 (actor-option loop)) (actor-option loop)) + (format #t "loop ") + ) + (if (= (logand s5-1 (actor-option fuel-cell-no-jump)) (actor-option fuel-cell-no-jump)) + (format #t "fuel-cell-no-jump ") + ) + (if (= (logand (actor-option fall) s5-1) (actor-option fall)) + (format #t "fall ") + ) + (if (= (logand (actor-option user18) s5-1) (actor-option user18)) + (format #t "user18 ") + ) + (if (= (logand s5-1 (actor-option big-collision)) (actor-option big-collision)) + (format #t "big-collision ") + ) + (if (= (logand s5-1 (actor-option no-reaction)) (actor-option no-reaction)) + (format #t "no-reaction ") + ) + (if (= (logand s5-1 (actor-option suck-in)) (actor-option suck-in)) + (format #t "suck-in ") + ) + (if (= (logand s5-1 (actor-option racer-only)) (actor-option racer-only)) + (format #t "racer-only ") + ) + (if (= (logand s5-1 (actor-option blocked)) (actor-option blocked)) + (format #t "blocked ") + ) + (if (= (logand (actor-option no-distance-check-fadeout) s5-1) (actor-option no-distance-check-fadeout)) + (format #t "no-distance-check-fadeout ") + ) + (if (= (logand (actor-option cond-hide) s5-1) (actor-option cond-hide)) + (format #t "cond-hide ") + ) + (if (= (logand (actor-option dont-override-fact) s5-1) (actor-option dont-override-fact)) + (format #t "dont-override-fact ") + ) + (if (= (logand (actor-option user17) s5-1) (actor-option user17)) + (format #t "user17 ") + ) + (if (= (logand s5-1 (actor-option wait-for-cue)) (actor-option wait-for-cue)) + (format #t "wait-for-cue ") + ) + (if (= (logand s5-1 (actor-option reflect)) (actor-option reflect)) + (format #t "reflect ") + ) + (if (= (logand (actor-option user19) s5-1) (actor-option user19)) + (format #t "user19 ") + ) + (if (= (logand (actor-option cond-respawn) s5-1) (actor-option cond-respawn)) + (format #t "cond-respawn ") + ) + (if (= (logand s5-1 (actor-option wait-for-task-complete)) (actor-option wait-for-task-complete)) + (format #t "wait-for-task-complete ") + ) + (if (= (logand s5-1 (actor-option fade-out)) (actor-option fade-out)) + (format #t "fade-out ") + ) + (if (= (logand (actor-option cond-low-ammo) s5-1) (actor-option cond-low-ammo)) + (format #t "cond-low-ammo ") + ) + (if (= (logand (actor-option mirror) s5-1) (actor-option mirror)) + (format #t "mirror ") + ) + (if (= (logand s5-1 (actor-option spawns-fuel-cell)) (actor-option spawns-fuel-cell)) + (format #t "spawns-fuel-cell ") + ) + ) + (format #t ")~%") + (format #t "~1Tfade-time: ~D~%" (-> this fade-time)) + (format #t "~1Tspeed: ~f~%" (-> this speed)) + (format #t "~1Tidle-distance: (meters ~m)~%" (-> this idle-distance)) + (format #t "~1Tnotice-top: (meters ~m)~%" (-> this notice-top)) + (format #t "~1Tnotice-bottom: (meters ~m)~%" (-> this notice-bottom)) + (format #t "~1Tcam-horz: (meters ~m)~%" (-> this cam-horz)) + (format #t "~1Tcam-vert: (meters ~m)~%" (-> this cam-vert)) + (format #t "~1Tcam-notice-dist: (meters ~m)~%" (-> this cam-notice-dist)) + (format #t "~1Tenemy-options: #x~X : (enemy-option " (-> this enemy-options)) + (let ((s5-2 (-> this enemy-options))) + (if (= (logand s5-2 (enemy-option user11)) (enemy-option user11)) + (format #t "user11 ") + ) + (if (= (logand (enemy-option spawner) s5-2) (enemy-option spawner)) + (format #t "spawner ") + ) + (if (= (logand (enemy-option dormant-aware) s5-2) (enemy-option dormant-aware)) + (format #t "dormant-aware ") + ) + (if (= (logand s5-2 (enemy-option user0)) (enemy-option user0)) + (format #t "user0 ") + ) + (if (= (logand s5-2 (enemy-option user2)) (enemy-option user2)) + (format #t "user2 ") + ) + (if (= (logand (enemy-option prespawned) s5-2) (enemy-option prespawned)) + (format #t "prespawned ") + ) + (if (= (logand s5-2 (enemy-option user4)) (enemy-option user4)) + (format #t "user4 ") + ) + (if (= (logand s5-2 (enemy-option user6)) (enemy-option user6)) + (format #t "user6 ") + ) + (if (= (logand s5-2 (enemy-option user8)) (enemy-option user8)) + (format #t "user8 ") + ) + (if (= (logand (enemy-option multi-focus) s5-2) (enemy-option multi-focus)) + (format #t "multi-focus ") + ) + (if (= (logand (enemy-option ambush) s5-2) (enemy-option ambush)) + (format #t "ambush ") + ) + (if (= (logand s5-2 (enemy-option user12)) (enemy-option user12)) + (format #t "user12 ") + ) + (if (= (logand (enemy-option water) s5-2) (enemy-option water)) + (format #t "water ") + ) + (if (= (logand s5-2 (enemy-option user14)) (enemy-option user14)) + (format #t "user14 ") + ) + (if (= (logand (enemy-option knocked-into-water) s5-2) (enemy-option knocked-into-water)) + (format #t "knocked-into-water ") + ) + (if (= (logand s5-2 (enemy-option user10)) (enemy-option user10)) + (format #t "user10 ") + ) + (if (= (logand (enemy-option idle-til-trigger) s5-2) (enemy-option idle-til-trigger)) + (format #t "idle-til-trigger ") + ) + (if (= (logand s5-2 (enemy-option user1)) (enemy-option user1)) + (format #t "user1 ") + ) + (if (= (logand s5-2 (enemy-option user3)) (enemy-option user3)) + (format #t "user3 ") + ) + (if (= (logand s5-2 (enemy-option user5)) (enemy-option user5)) + (format #t "user5 ") + ) + (if (= (logand s5-2 (enemy-option user7)) (enemy-option user7)) + (format #t "user7 ") + ) + (if (= (logand (enemy-option dormant) s5-2) (enemy-option dormant)) + (format #t "dormant ") + ) + (if (= (logand s5-2 (enemy-option user9)) (enemy-option user9)) + (format #t "user9 ") + ) + (if (= (logand s5-2 (enemy-option user13)) (enemy-option user13)) + (format #t "user13 ") + ) + (if (= (logand s5-2 (enemy-option user15)) (enemy-option user15)) + (format #t "user15 ") + ) + (if (= (logand (enemy-option has-trigger) s5-2) (enemy-option has-trigger)) + (format #t "has-trigger ") + ) + ) + (format #t ")~%") + (format #t "~1Ttrig-dist: (meters ~m)~%" (-> this trig-dist)) + (format #t "~1Ttrig-actor-group: #x~X~%" (-> this trig-actor-group)) + (format #t "~1Ttrig-mask-count: ~D~%" (-> this trig-mask-count)) + (format #t "~1Ttrig-mask[2] @ #x~X~%" (-> this trig-mask)) + (label cfg-114) + this + ) + +;; definition of type fact-info-crate +(deftype fact-info-crate (fact-info) + ((suck-count int32) + ) + (:methods + (new (symbol type process pickup-type float) _type_) + ) + ) + +;; definition for method 3 of type fact-info-crate +(defmethod inspect ((this fact-info-crate)) + (when (not this) + (set! this this) + (goto cfg-62) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tprocess: ~A~%" (-> this process)) + (format #t "~1Tpickup-type: #x~X : ~S~%" (-> this pickup-type) (pickup-type->string (-> this pickup-type))) + (format #t "~1Tpickup-amount: ~f~%" (-> this pickup-amount)) + (format #t "~1Tpickup-spawn-amount: ~f~%" (-> this pickup-spawn-amount)) + (format #t "~1Toptions: #x~X : (actor-option " (-> this options)) + (let ((s5-1 (-> this options))) + (if (= (logand s5-1 (actor-option respawn-delay)) (actor-option respawn-delay)) + (format #t "respawn-delay ") + ) + (if (= (logand s5-1 (actor-option draw-blocker)) (actor-option draw-blocker)) + (format #t "draw-blocker ") + ) + (if (= (logand (actor-option user20) s5-1) (actor-option user20)) + (format #t "user20 ") + ) + (if (= (logand (actor-option no-amb-sound) s5-1) (actor-option no-amb-sound)) + (format #t "no-amb-sound ") + ) + (if (= (logand s5-1 (actor-option auto-pickup)) (actor-option auto-pickup)) + (format #t "auto-pickup ") + ) + (if (= (logand (actor-option no-track) s5-1) (actor-option no-track)) + (format #t "no-track ") + ) + (if (= (logand s5-1 (actor-option no-shadow)) (actor-option no-shadow)) + (format #t "no-shadow ") + ) + (if (= (logand s5-1 (actor-option loop)) (actor-option loop)) + (format #t "loop ") + ) + (if (= (logand s5-1 (actor-option fuel-cell-no-jump)) (actor-option fuel-cell-no-jump)) + (format #t "fuel-cell-no-jump ") + ) + (if (= (logand (actor-option fall) s5-1) (actor-option fall)) + (format #t "fall ") + ) + (if (= (logand (actor-option user18) s5-1) (actor-option user18)) + (format #t "user18 ") + ) + (if (= (logand s5-1 (actor-option big-collision)) (actor-option big-collision)) + (format #t "big-collision ") + ) + (if (= (logand s5-1 (actor-option no-reaction)) (actor-option no-reaction)) + (format #t "no-reaction ") + ) + (if (= (logand s5-1 (actor-option suck-in)) (actor-option suck-in)) + (format #t "suck-in ") + ) + (if (= (logand s5-1 (actor-option racer-only)) (actor-option racer-only)) + (format #t "racer-only ") + ) + (if (= (logand s5-1 (actor-option blocked)) (actor-option blocked)) + (format #t "blocked ") + ) + (if (= (logand (actor-option no-distance-check-fadeout) s5-1) (actor-option no-distance-check-fadeout)) + (format #t "no-distance-check-fadeout ") + ) + (if (= (logand (actor-option cond-hide) s5-1) (actor-option cond-hide)) + (format #t "cond-hide ") + ) + (if (= (logand (actor-option dont-override-fact) s5-1) (actor-option dont-override-fact)) + (format #t "dont-override-fact ") + ) + (if (= (logand (actor-option user17) s5-1) (actor-option user17)) + (format #t "user17 ") + ) + (if (= (logand s5-1 (actor-option wait-for-cue)) (actor-option wait-for-cue)) + (format #t "wait-for-cue ") + ) + (if (= (logand s5-1 (actor-option reflect)) (actor-option reflect)) + (format #t "reflect ") + ) + (if (= (logand (actor-option user19) s5-1) (actor-option user19)) + (format #t "user19 ") + ) + (if (= (logand (actor-option cond-respawn) s5-1) (actor-option cond-respawn)) + (format #t "cond-respawn ") + ) + (if (= (logand s5-1 (actor-option wait-for-task-complete)) (actor-option wait-for-task-complete)) + (format #t "wait-for-task-complete ") + ) + (if (= (logand s5-1 (actor-option fade-out)) (actor-option fade-out)) + (format #t "fade-out ") + ) + (if (= (logand (actor-option cond-low-ammo) s5-1) (actor-option cond-low-ammo)) + (format #t "cond-low-ammo ") + ) + (if (= (logand (actor-option mirror) s5-1) (actor-option mirror)) + (format #t "mirror ") + ) + (if (= (logand s5-1 (actor-option spawns-fuel-cell)) (actor-option spawns-fuel-cell)) + (format #t "spawns-fuel-cell ") + ) + ) + (format #t ")~%") + (format #t "~1Tfade-time: ~D~%" (-> this fade-time)) + (format #t "~1Tsuck-count: ~D~%" (-> this suck-count)) + (label cfg-62) + this + ) + +;; definition for method 0 of type fact-info +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs fact-info. +(defmethod new fact-info ((allocation symbol) (type-to-make type) (arg0 process) (arg1 pickup-type) (arg2 float)) + (let ((sv-16 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (let ((sv-20 (the-as res-lump (-> arg0 entity)))) + (let ((sv-24 (process-task-mask arg0))) + (when (zero? sv-16) + (go process-drawable-art-error "memory") + (return (the-as fact-info 0)) + ) + (set! (-> sv-16 process) arg0) + (set! (-> sv-16 pickup-type) arg1) + (set! (-> sv-16 pickup-amount) arg2) + (let ((s4-1 (-> (lookup-tag-idx sv-20 'eco-info 'base -1000000000.0) lo))) + (when (>= (the-as int s4-1) 0) + (let ((s3-0 (the-as int s4-1)) + (s2-0 (-> sv-20 tag s4-1)) + ) + 0 + (while (= (-> s2-0 name) (-> sv-20 tag s4-1 name)) + (let ((v1-17 (make-property-data sv-20 0.0 (the-as res-tag-pair s3-0) (the-as pointer #f))) + (a0-7 (the int (-> s2-0 key-frame))) + ) + (when (or (< a0-7 0) (and (-> arg0 entity) (logtest? sv-24 (ash 1 a0-7)))) + (when v1-17 + (let ((a0-15 (-> s2-0 elt-count))) + (set! (-> sv-16 pickup-type) (the-as pickup-type (-> (the-as (pointer int32) v1-17)))) + (set! (-> sv-16 pickup-amount) (if (< (the-as uint 1) a0-15) + (the float (-> (the-as (pointer int32) v1-17) 1)) + arg2 + ) + ) + ) + ) + ) + ) + (+! s3-0 1) + (set! s2-0 (-> sv-20 tag s3-0)) + ) + ) + ) + ) + ) + (set! (-> sv-16 options) (res-lump-value sv-20 'options actor-option :time -1000000000.0)) + (if (logtest? (-> sv-16 options) (actor-option fade-out respawn-delay)) + (set! (-> sv-16 fade-time) (the-as time-frame (the int (* 300.0 (res-lump-float sv-20 'timeout))))) + ) + ) + (the-as fact-info sv-16) + ) + ) + +;; definition for method 11 of type fact-info +(defmethod pickup-collectable! ((this fact-info) (arg0 pickup-type) (arg1 float) (arg2 handle)) + 0.0 + ) + +;; definition of type fact-info-enemy-defaults +(deftype fact-info-enemy-defaults (basic) + ((idle-distance meters) + (pickup-type int32) + (pickup-amount float) + ) + ) + +;; definition for method 3 of type fact-info-enemy-defaults +(defmethod inspect ((this fact-info-enemy-defaults)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tidle-distance: (meters ~m)~%" (-> this idle-distance)) + (format #t "~1Tpickup-type: ~D~%" (-> this pickup-type)) + (format #t "~1Tpickup-amount: ~f~%" (-> this pickup-amount)) + (label cfg-4) + this + ) + +;; definition for symbol *fact-info-enemy-defaults*, type fact-info-enemy-defaults +(define *fact-info-enemy-defaults* + (new 'static 'fact-info-enemy-defaults :idle-distance (meters 80) :pickup-type 9) + ) + +;; definition for method 0 of type fact-info-enemy +;; INFO: Used lq/sq +(defmethod new fact-info-enemy ((allocation symbol) (type-to-make type) (arg0 process) (arg1 (pointer float))) + (let ((gp-0 + (the-as + fact-info-enemy + ((method-of-type fact-info new) allocation type-to-make arg0 (the-as pickup-type (-> arg1 1)) (-> arg1 2)) + ) + ) + ) + (let ((s5-0 (-> gp-0 process entity))) + (set! (-> gp-0 speed) (res-lump-float s5-0 'speed :default 1.0)) + (set! (-> gp-0 idle-distance) (res-lump-float s5-0 'idle-distance :default (-> arg1 0))) + (set! (-> gp-0 notice-top) (res-lump-float s5-0 'notice-top :default 4096000.0)) + (set! (-> gp-0 notice-bottom) (res-lump-float s5-0 'notice-bottom :default 4096000.0)) + (set! (-> gp-0 cam-horz) (res-lump-float s5-0 'cam-horz)) + (set! (-> gp-0 cam-vert) (res-lump-float s5-0 'cam-vert)) + (set! (-> gp-0 cam-notice-dist) (res-lump-float s5-0 'cam-notice-dist :default -4096.0)) + (set! (-> gp-0 enemy-options) (res-lump-value s5-0 'enemy-options enemy-option :time -1000000000.0)) + (let ((s4-1 0)) + (let* ((sv-16 (new 'static 'res-tag)) + (v1-11 (res-lump-data s5-0 'trigger pointer :tag-ptr (& sv-16))) + ) + (when v1-11 + (logior! (-> gp-0 enemy-options) (enemy-option has-trigger)) + (let ((a0-13 0)) + (dotimes (a1-11 (the-as int (-> sv-16 elt-count))) + (let ((a2-12 (-> (the-as (pointer uint32) (&+ v1-11 (* a1-11 4)))))) + (when (and (nonzero? a2-12) (< a0-13 2)) + (set! (-> gp-0 trig-mask a0-13) a2-12) + (set! s4-1 (logior s4-1 a2-12)) + (+! a0-13 1) + ) + ) + ) + (set! (-> gp-0 trig-mask-count) a0-13) + ) + ) + ) + (set! (-> gp-0 trig-dist) (if (logtest? s4-1 1) + (res-lump-float s5-0 'trig-dist :default 327680.0) + 327680.0 + ) + ) + (when (logtest? s4-1 2) + (let* ((sv-32 (new 'static 'res-tag)) + (v1-20 (res-lump-data s5-0 'trig-ag pointer :tag-ptr (& sv-32))) + ) + (if (and v1-20 (nonzero? (-> sv-32 elt-count))) + (set! (-> gp-0 trig-actor-group) (the-as (pointer actor-group) v1-20)) + (clear-mask-bits gp-0 2) + ) + ) + ) + ) + ) + gp-0 + ) + ) + +;; definition for method 12 of type fact-info-enemy +;; WARN: Return type mismatch int vs none. +(defmethod clear-mask-bits ((this fact-info-enemy) (arg0 int)) + (let ((v1-0 (lognot arg0))) + (dotimes (a1-1 (-> this trig-mask-count)) + (logand! (-> this trig-mask a1-1) v1-0) + ) + ) + 0 + (none) + ) + +;; definition for method 0 of type fact-info-crate +(defmethod new fact-info-crate ((allocation symbol) (type-to-make type) (arg0 process) (arg1 pickup-type) (arg2 float)) + (let ((gp-0 (the-as fact-info-crate ((method-of-type fact-info new) allocation type-to-make arg0 arg1 arg2)))) + (let ((a0-1 (-> gp-0 process entity))) + (set! (-> gp-0 suck-count) (res-lump-value a0-1 'suck-count int :time -1000000000.0)) + ) + gp-0 + ) + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/game/penetrate-h_REF.gc b/test/decompiler/reference/jakx/engine/game/penetrate-h_REF.gc new file mode 100644 index 0000000000..9f30da5701 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/game/penetrate-h_REF.gc @@ -0,0 +1,270 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition (debug) for function penetrate->string +;; WARN: Return type mismatch object vs string. +(defun-debug penetrate->string ((arg0 penetrate)) + (if (= (logand (penetrate jak-red-shockwave) arg0) (shl 4 32)) + (format #t "jak-red-shockwave ") + ) + (if (= (logand arg0 (penetrate mech-bonk)) (penetrate mech-bonk)) + (format #t "mech-bonk ") + ) + (if (= (logand (penetrate eco-blue) arg0) (shl #x8000 16)) + (format #t "eco-blue ") + ) + (if (= (logand (penetrate explode) arg0) (penetrate explode)) + (format #t "explode ") + ) + (if (= (logand arg0 (penetrate bonk)) (penetrate bonk)) + (format #t "bonk ") + ) + (if (= (logand (penetrate eco-red) arg0) (penetrate eco-red)) + (format #t "eco-red ") + ) + (if (= (logand arg0 (penetrate roll)) (penetrate roll)) + (format #t "roll ") + ) + (if (= (logand arg0 (penetrate mech)) (penetrate mech)) + (format #t "mech ") + ) + (if (= (logand arg0 (penetrate flut-attack)) (penetrate flut-attack)) + (format #t "flut-attack ") + ) + (if (= (logand arg0 (penetrate mech-punch)) (penetrate mech-punch)) + (format #t "mech-punch ") + ) + (if (= (logand (penetrate jak-dark-shot) arg0) (penetrate jak-dark-shot)) + (format #t "jak-dark-shot ") + ) + (if (= (logand (penetrate dark-smack) arg0) (penetrate dark-smack)) + (format #t "dark-smack ") + ) + (if (= (logand arg0 (penetrate flop)) (penetrate flop)) + (format #t "flop ") + ) + (if (= (logand arg0 (penetrate spin)) (penetrate spin)) + (format #t "spin ") + ) + (if (= (logand (penetrate dark-bomb) arg0) (penetrate dark-bomb)) + (format #t "dark-bomb ") + ) + (if (= (logand arg0 (penetrate vehicle)) (penetrate vehicle)) + (format #t "vehicle ") + ) + (if (= (logand arg0 (penetrate generic-attack)) (penetrate generic-attack)) + (format #t "generic-attack ") + ) + (if (= (logand arg0 (penetrate touch)) (penetrate touch)) + (format #t "touch ") + ) + (if (= (logand (penetrate eco-green) arg0) (shl 1 32)) + (format #t "eco-green ") + ) + (if (= (logand (penetrate jak-red-shot) arg0) (penetrate jak-red-shot)) + (format #t "jak-red-shot ") + ) + (if (= (logand arg0 (penetrate lunge)) (penetrate lunge)) + (format #t "lunge ") + ) + (if (= (logand arg0 (penetrate punch)) (penetrate punch)) + (format #t "punch ") + ) + (if (= (logand arg0 (penetrate tube)) (penetrate tube)) + (format #t "tube ") + ) + (if (= (logand (penetrate jak-dark-nuke) arg0) (shl 8 32)) + (format #t "jak-dark-nuke ") + ) + (if (= (logand (penetrate enemy-yellow-shot) arg0) (penetrate enemy-yellow-shot)) + (format #t "enemy-yellow-shot ") + ) + (if (= (logand (penetrate knocked) arg0) (shl 2 32)) + (format #t "knocked ") + ) + (if (= (logand (penetrate emp-blast) arg0) (shl 32 32)) + (format #t "emp-blast ") + ) + (if (= (logand arg0 (penetrate uppercut)) (penetrate uppercut)) + (format #t "uppercut ") + ) + (if (= (logand (penetrate dark-punch) arg0) (penetrate dark-punch)) + (format #t "dark-punch ") + ) + (if (= (logand (penetrate shield) arg0) (penetrate shield)) + (format #t "shield ") + ) + (if (= (logand (penetrate jak-yellow-shot) arg0) (penetrate jak-yellow-shot)) + (format #t "jak-yellow-shot ") + ) + (if (= (logand arg0 (penetrate board)) (penetrate board)) + (format #t "board ") + ) + (if (= (logand (penetrate flut) arg0) (penetrate flut)) + (format #t "flut ") + ) + (if (= (logand (penetrate eco-yellow) arg0) (penetrate eco-yellow)) + (format #t "eco-yellow ") + ) + (if (= (logand (penetrate dark-skin) arg0) (penetrate dark-skin)) + (format #t "dark-skin ") + ) + (if (= (logand (penetrate jak-dark-blackhole) arg0) (shl 16 32)) + (format #t "jak-dark-blackhole ") + ) + (if (= (logand (penetrate enemy-dark-shot) arg0) (penetrate enemy-dark-shot)) + (format #t "enemy-dark-shot ") + ) + (the-as string (if (= (logand (penetrate jak-blue-shot) arg0) (penetrate jak-blue-shot)) + (format #t "jak-blue-shot ") + ) + ) + ) + +;; definition for function penetrate-using->damage +(defun penetrate-using->damage ((arg0 penetrate)) + (cond + ((logtest? (penetrate dark-bomb dark-smack) arg0) + 15.0 + ) + ((logtest? arg0 (penetrate mech-punch mech-bonk)) + 5.0 + ) + ((logtest? (penetrate) arg0) + 4.0 + ) + ((logtest? (penetrate punch spin jak-dark-shot enemy-dark-shot) arg0) + 3.0 + ) + ((logtest? (penetrate + flop + uppercut + tube + flut-attack + dark-punch + explode + jak-yellow-shot + jak-red-shot + jak-blue-shot + enemy-yellow-shot + eco-yellow + ) + arg0 + ) + 2.0 + ) + ((logtest? arg0 (penetrate generic-attack roll bonk board)) + 1.0 + ) + (else + 0.0 + ) + ) + ) + +;; definition for function penetrated-by-all&hit-points->penetrated-by +;; WARN: Return type mismatch uint vs penetrate. +(defun penetrated-by-all&hit-points->penetrated-by ((arg0 penetrate) (arg1 int)) + (let ((a0-1 arg1)) + (the-as penetrate (logior (logclear arg0 (penetrate + generic-attack + flop + punch + spin + roll + uppercut + bonk + tube + flut-attack + board + mech-punch + mech-bonk + dark-skin + dark-punch + dark-bomb + dark-smack + shield + explode + jak-yellow-shot + jak-red-shot + jak-blue-shot + jak-dark-shot + enemy-yellow-shot + enemy-dark-shot + eco-yellow + knocked + ) + ) + (cond + ((or (zero? a0-1) (= a0-1 1)) + (the-as int (the-as uint #x23fefdbfa)) + ) + ((= a0-1 2) + #x3fcecab8 + ) + ((= a0-1 3) + #x140cc030 + ) + ((= a0-1 4) + #xcc000 + ) + ((= a0-1 5) + #xcc000 + ) + ((or (= a0-1 6) + (= a0-1 7) + (= a0-1 8) + (= a0-1 9) + (= a0-1 10) + (= a0-1 11) + (= a0-1 12) + (= a0-1 13) + (= a0-1 14) + (= a0-1 15) + ) + #xc0000 + ) + (else + 0 + ) + ) + ) + ) + ) + ) + +;; definition for function pu->knocked-type +;; WARN: Return type mismatch int vs knocked-type. +(defun pu->knocked-type ((arg0 penetrate)) + (the-as knocked-type (cond + ((logtest? arg0 (penetrate vehicle)) + 7 + ) + ((logtest? (penetrate jak-blue-shot) arg0) + 6 + ) + ((logtest? (penetrate jak-yellow-shot enemy-yellow-shot) arg0) + 4 + ) + ((logtest? (penetrate jak-red-shot) arg0) + 5 + ) + ((logtest? (penetrate explode jak-dark-shot enemy-dark-shot) arg0) + 2 + ) + ((logtest? (penetrate dark-bomb dark-smack) arg0) + 3 + ) + ((logtest? arg0 (penetrate mech-punch)) + 1 + ) + (else + 0 + ) + ) + ) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/game/settings-h_REF.gc b/test/decompiler/reference/jakx/engine/game/settings-h_REF.gc index 90ea96ba86..81f9bbd6f7 100644 --- a/test/decompiler/reference/jakx/engine/game/settings-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/game/settings-h_REF.gc @@ -686,7 +686,7 @@ (setting-control-method-11 () none) (setting-control-method-12 () none) (setting-control-method-13 () none) - (setting-control-method-14 () none) + (setting-control-method-14 (_type_ symbol int symbol symbol float int) none) (setting-control-method-15 () none) (setting-control-method-16 () none) (setting-control-method-17 () none) @@ -745,7 +745,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jakx/engine/game/task/game-task-h_REF.gc b/test/decompiler/reference/jakx/engine/game/task/game-task-h_REF.gc index d90eb505f7..efa01b820d 100644 --- a/test/decompiler/reference/jakx/engine/game/task/game-task-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/game/task/game-task-h_REF.gc @@ -47,12 +47,12 @@ (text-id text-id-1659) (text-id text-id-1659) (text-id text-id-1940) - (text-id null) - (text-id null) - (text-id null) - (text-id null) - (text-id null) - (text-id null) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) + (text-id text-id-0) ) ) diff --git a/test/decompiler/reference/jakx/engine/game/task/task-control-h_REF.gc b/test/decompiler/reference/jakx/engine/game/task/task-control-h_REF.gc new file mode 100644 index 0000000000..3f7d63cde2 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/game/task/task-control-h_REF.gc @@ -0,0 +1,1658 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition (debug) for function game-task->string +(defun-debug game-task->string ((arg0 game-task)) + (case arg0 + (((game-task canspar-timetrial)) + "canspar-timetrial" + ) + (((game-task havjung-rushhour)) + "havjung-rushhour" + ) + (((game-task dockkra-rushhour)) + "dockkra-rushhour" + ) + (((game-task canspar-deathrace)) + "canspar-deathrace" + ) + (((game-task havjung-deathrace)) + "havjung-deathrace" + ) + (((game-task coliseum-king-of-hill)) + "coliseum-king-of-hill" + ) + (((game-task desisle-hunt)) + "desisle-hunt" + ) + (((game-task ice-football)) + "havsew-rushhour" + ) + (((game-task coliseum-assassin)) + "coliseum-assassin" + ) + (((game-task coliseum-artifact)) + "coliseum-artifact" + ) + (((game-task havtour-race)) + "havtour-race" + ) + (((game-task kras-training)) + "kras-training" + ) + (((game-task drome-race)) + "drome-race" + ) + (((game-task spartem-race)) + "spartem-race" + ) + (((game-task peak-rushhour)) + "peak-rushhour" + ) + (((game-task drome-deathrace)) + "drome-deathrace" + ) + (((game-task none)) + "none" + ) + (((game-task snobowl-assassin)) + "snobowl-assassin" + ) + (((game-task dromdoc-timetrial)) + "dromdoc-timetrial" + ) + (((game-task havsew-timetrial)) + "havsew-timetrial" + ) + (((game-task kcross-ctf)) + "kcross-ctf" + ) + (((game-task kras-football)) + "kras-football" + ) + (((game-task desarena-deathmatch)) + "desarena-deathmatch" + ) + (((game-task drome-timetrial)) + "drome-timetrial" + ) + (((game-task iceberg-football)) + "iceberg-football" + ) + (((game-task docks-deathrace)) + "docks-deathrace" + ) + (((game-task atoll-assassin)) + "atoll-assassin" + ) + (((game-task canyon-deathrace)) + "canyon-deathrace" + ) + (((game-task havjung-race)) + "havjung-race" + ) + (((game-task docks-race)) + "docks-race" + ) + (((game-task kras-race)) + "kras-race" + ) + (((game-task docks-timetrial)) + "docks-timetrial" + ) + (((game-task icepass-timetrial)) + "icepass-timetrial" + ) + (((game-task dummy0)) + "dummy0" + ) + (((game-task snobowl-deathmatch)) + "snobowl-deathmatch" + ) + (((game-task eco-blue-button)) + "eco-blue-button" + ) + (((game-task snow-football)) + "snow-football" + ) + (((game-task jungle-rushhour)) + "jungle-rushhour" + ) + (((game-task havsew-rushhour)) + "canspar-football" + ) + (((game-task havsew-timebox)) + "havsew-timebox" + ) + (((game-task snobowl-artifact)) + "snobowl-artifact" + ) + (((game-task icetour-timetrial)) + "icetour-timetrial" + ) + (((game-task drome-timebox)) + "drome-timebox" + ) + (((game-task temple-rushhour)) + "temple-rushhour" + ) + (((game-task snow-race)) + "snow-race" + ) + (((game-task canspar-football)) + "dromdoc-timebox" + ) + (((game-task peak-timebox)) + "peak-timebox" + ) + (((game-task sewer-deathrace)) + "sewer-deathrace" + ) + (((game-task desarena-king-of-hill)) + "desarena-king-of-hill" + ) + (((game-task iceberg-rushhour)) + "iceberg-rushhour" + ) + (((game-task jungle-deathrace)) + "jungle-deathrace" + ) + (((game-task complete)) + "complete" + ) + (((game-task iceberg-deathrace)) + "iceberg-deathrace" + ) + (((game-task desarena-assassin)) + "desarena-assassin" + ) + (((game-task peak-deathrace)) + "peak-deathrace" + ) + (((game-task sewer-race)) + "sewer-race" + ) + (((game-task sewer-timetrial)) + "sewer-timetrial" + ) + (((game-task docks-timebox)) + "docks-timebox" + ) + (((game-task temple-deathrace)) + "temple-deathrace" + ) + (((game-task temple-timetrial)) + "temple-timetrial" + ) + (((game-task icepass-timebox)) + "icepass-timebox" + ) + (((game-task atoll-artifact)) + "atoll-artifact" + ) + (((game-task cliffs-ctf)) + "cliffs-ctf" + ) + (((game-task havjung-timetrial)) + "havjung-timetrial" + ) + (((game-task spatour-timetrial)) + "spatour-timetrial" + ) + (((game-task kcross-assassin)) + "kcross-assassin" + ) + (((game-task haven-deathrace)) + "haven-deathrace" + ) + (((game-task dockkra-deathrace)) + "dockkra-deathrace" + ) + (((game-task coliseum-ctf)) + "ice-football" + ) + (((game-task kratour-timetrial)) + "kratour-timetrial" + ) + (((game-task snobowl-ctf)) + "icepass-football" + ) + (((game-task canspar-rushhour)) + "canspar-rushhour" + ) + (((game-task desisle-ctf)) + "desisle-ctf" + ) + (((game-task havsew-deathrace)) + "havsew-deathrace" + ) + (((game-task canyon-race)) + "canyon-race" + ) + (((game-task ice-timetrial)) + "ice-timetrial" + ) + (((game-task haven-race)) + "haven-race" + ) + (((game-task haven-timetrial)) + "haven-timetrial" + ) + (((game-task jungle-timebox)) + "jungle-timebox" + ) + (((game-task spargus-timetrial)) + "spargus-timetrial" + ) + (((game-task drome-football)) + "drome-football" + ) + (((game-task kras-timetrial)) + "kras-timetrial" + ) + (((game-task ice-training)) + "ice-training" + ) + (((game-task spartem-deathrace)) + "spartem-deathrace" + ) + (((game-task havtour-timetrial)) + "havtour-timetrial" + ) + (((game-task spargus-deathrace)) + "spargus-deathrace" + ) + (((game-task sewer-timebox)) + "sewer-timebox" + ) + (((game-task temple-timebox)) + "temple-timebox" + ) + (((game-task iceberg-race)) + "iceberg-race" + ) + (((game-task atoll-hunt)) + "atoll-hunt" + ) + (((game-task havjung-rushhour1)) + "coliseum-ctf" + ) + (((game-task spartem-timetrial)) + "spartem-timetrial" + ) + (((game-task canspar-timebox)) + "canspar-timebox" + ) + (((game-task canyon-football)) + "canyon-football" + ) + (((game-task dockkra-race)) + "dockkra-race" + ) + (((game-task kcross-hunt)) + "kcross-hunt" + ) + (((game-task havjung-timebox)) + "havjung-timebox" + ) + (((game-task ice-deathrace)) + "ice-deathrace" + ) + (((game-task kcross-deathmatch)) + "kcross-deathmatch" + ) + (((game-task dromdoc-football)) + "dromdoc-football" + ) + (((game-task snow-timetrial)) + "snow-timetrial" + ) + (((game-task docks-football)) + "docks-football" + ) + (((game-task icepass-rushhour)) + "icepass-rushhour" + ) + (((game-task brdroom-intro-b)) + "brdroom-intro-b" + ) + (((game-task atoll-deathmatch)) + "atoll-deathmatch" + ) + (((game-task kras-rushhour)) + "kras-rushhour" + ) + (((game-task peak-football)) + "peak-football" + ) + (((game-task canspar-race)) + "canspar-race" + ) + (((game-task kcross-artifact)) + "kcross-artifact" + ) + (((game-task ice-race)) + "ice-race" + ) + (((game-task haven-timebox)) + "haven-timebox" + ) + (((game-task drome-rushhour)) + "drome-rushhour" + ) + (((game-task cliffs-assassin)) + "cliffs-assassin" + ) + (((game-task iceberg-timetrial)) + "iceberg-timetrial" + ) + (((game-task jungle-football)) + "jungle-football" + ) + (((game-task peak-race)) + "peak-race" + ) + (((game-task dromdoc-timebox)) + "snobowl-ctf" + ) + (((game-task spargus-football)) + "spargus-football" + ) + (((game-task kratour-boss-battle)) + "kratour-boss-battle" + ) + (((game-task snow-rushhour)) + "snow-rushhour" + ) + (((game-task havsew-race)) + "havsew-race" + ) + (((game-task ice-timebox)) + "ice-timebox" + ) + (((game-task temple-football)) + "temple-football" + ) + (((game-task sewer-football)) + "sewer-football" + ) + (((game-task cliffs-training)) + "cliffs-training" + ) + (((game-task spartem-football)) + "spartem-football" + ) + (((game-task dromdoc-rushhour)) + "dromdoc-rushhour" + ) + (((game-task jungle-training)) + "jungle-training" + ) + (((game-task dockkra-timetrial)) + "dockkra-timetrial" + ) + (((game-task spartem-timebox)) + "spartem-timebox" + ) + (((game-task desarena-ctf)) + "desarena-ctf" + ) + (((game-task icepass-race)) + "icepass-race" + ) + (((game-task docks-rushhour)) + "docks-rushhour" + ) + (((game-task eco-yellow-button)) + "eco-yellow-button" + ) + (((game-task atoll-ctf)) + "atoll-ctf" + ) + (((game-task canyon-rushhour)) + "canyon-rushhour" + ) + (((game-task artist-artist)) + "artist-artist" + ) + (((game-task snow-training2)) + "snow-training2" + ) + (((game-task havsew-football)) + "havsew-football" + ) + (((game-task dromdoc-deathrace)) + "dromdoc-deathrace" + ) + (((game-task kras-timebox)) + "kras-timebox" + ) + (((game-task cliffs-hunt)) + "cliffs-hunt" + ) + (((game-task cliffs-deathmatch)) + "cliffs-deathmatch" + ) + (((game-task haven-football)) + "haven-football" + ) + (((game-task kras-deathrace)) + "kras-deathrace" + ) + (((game-task iceberg-timebox)) + "iceberg-timebox" + ) + (((game-task desisle-assassin)) + "desisle-assassin" + ) + (((game-task canyon-timetrial)) + "canyon-timetrial" + ) + (((game-task spargus-rushhour)) + "spargus-rushhour" + ) + (((game-task icetour-race)) + "icetour-race" + ) + (((game-task havjung-football)) + "havjung-football" + ) + (((game-task coliseum-deathmatch)) + "coliseum-deathmatch" + ) + (((game-task cliffs-king-of-hill)) + "cliffs-king-of-hill" + ) + (((game-task icepass-deathrace)) + "icepass-deathrace" + ) + (((game-task cliffs-artifact)) + "cliffs-artifact" + ) + (((game-task jungle-race)) + "jungle-race" + ) + (((game-task spartem-rushhour)) + "spartem-rushhour" + ) + (((game-task snow-timebox)) + "snow-timebox" + ) + (((game-task sewer-rushhour)) + "sewer-rushhour" + ) + (((game-task dockkra-football)) + "dockkra-football" + ) + (((game-task max)) + "max" + ) + (((game-task city-win2)) + "city-win" + ) + (((game-task snow-deathrace)) + "snow-deathrace" + ) + (((game-task city-start)) + "city-start" + ) + (((game-task dockkra-timebox)) + "dockkra-timebox" + ) + (((game-task desisle-deathmatch)) + "desisle-deathmatch" + ) + (((game-task kcross-king-of-hill)) + "kcross-king-of-hill" + ) + (((game-task dromdoc-race)) + "dromdoc-race" + ) + (((game-task temple-race)) + "temple-race" + ) + (((game-task desarena-artifact)) + "desarena-artifact" + ) + (((game-task peak-timetrial)) + "peak-timetrial" + ) + (((game-task spargus-timebox)) + "spargus-timebox" + ) + (((game-task ice-rushhour)) + "ice-rushhour" + ) + (((game-task spatour-race)) + "spatour-race" + ) + (((game-task eco-red-button)) + "eco-red-button" + ) + (((game-task jungle-timetrial)) + "jungle-timetrial" + ) + (((game-task canyon-timebox)) + "canyon-timebox" + ) + (((game-task kratour-race)) + "kratour-race" + ) + (((game-task desisle-artifact)) + "desisle-artifact" + ) + (((game-task spargus-race)) + "spargus-race" + ) + (((game-task haven-rushhour)) + "haven-rushhour" + ) + (((game-task snobowl-king-of-hill)) + "snobowl-king-of-hill" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition for function c-string->game-task +;; WARN: Return type mismatch int vs game-task. +(defun c-string->game-task ((arg0 string)) + "returns -1, dont call this" + (the-as game-task -1) + ) + +;; definition (debug) for function game-task-actor->string +(defun-debug game-task-actor->string ((arg0 game-task-actor)) + (case arg0 + (((game-task-actor damus-wasdoors)) + "damus-wasdoors" + ) + (((game-task-actor unused-slot-17)) + "unused-slot-17" + ) + (((game-task-actor damus-desert)) + "damus-desert" + ) + (((game-task-actor unused-slot-14)) + "unused-slot-14" + ) + (((game-task-actor minimap)) + "minimap" + ) + (((game-task-actor sig-wasdoors)) + "sig-wasdoors" + ) + (((game-task-actor jinx-hiphog)) + "jinx-hiphog" + ) + (((game-task-actor gun-gungame)) + "gun-gungame" + ) + (((game-task-actor torn-freehq)) + "torn-freehq" + ) + (((game-task-actor unused-slot-20)) + "unused-slot-20" + ) + (((game-task-actor torn-hipbooth)) + "torn-hipbooth" + ) + (((game-task-actor kleever-wasdoors)) + "kleever-wasdoors" + ) + (((game-task-actor was-pre-game-deserte)) + "was-pre-game-deserte" + ) + (((game-task-actor keira-garage)) + "keira-garage" + ) + (((game-task-actor damus-waspal)) + "damus-waspal" + ) + (((game-task-actor keira-freehq)) + "keira-freehq" + ) + (((game-task-actor samos-freehq)) + "samos-freehq" + ) + (((game-task-actor unused-slot-9)) + "unused-slot-9" + ) + (((game-task-actor unused-slot-10)) + "unused-slot-10" + ) + (((game-task-actor unused-slot-23)) + "unused-slot-23" + ) + (((game-task-actor onin-freehq)) + "onin-freehq" + ) + (((game-task-actor kleever-wascityb)) + "kleever-wascityb" + ) + (((game-task-actor samos-onintent)) + "samos-onintent" + ) + (((game-task-actor ashelin-talkbox)) + "ashelin-talkbox" + ) + (((game-task-actor kleever-arena)) + "kleever-arena" + ) + (((game-task-actor tess-gungame)) + "tess-gungame" + ) + (((game-task-actor none)) + "none" + ) + (((game-task-actor seem-leaper)) + "seem-leaper" + ) + (((game-task-actor unused-slot-13)) + "unused-slot-13" + ) + (((game-task-actor damus-wascity)) + "damus-wascity" + ) + (((game-task-actor unused-slot-26)) + "unused-slot-26" + ) + (((game-task-actor monk-mummy)) + "monk-mummy" + ) + (((game-task-actor onin-talkbox)) + "onin-talkbox" + ) + (((game-task-actor unused-slot-29)) + "unused-slot-29" + ) + (((game-task-actor unused-slot-8)) + "unused-slot-8" + ) + (((game-task-actor vin-vinroom)) + "vin-vinroom" + ) + (((game-task-actor torn-hiphog)) + "torn-hiphog" + ) + (((game-task-actor sig-nest)) + "sig-nest" + ) + (((game-task-actor daxter)) + "daxter" + ) + (((game-task-actor samos-talkbox)) + "samos-talkbox" + ) + (((game-task-actor seem-wascitya)) + "seem-wascitya" + ) + (((game-task-actor unused-slot-19)) + "unused-slot-19" + ) + (((game-task-actor ashelin-freehq)) + "ashelin-freehq" + ) + (((game-task-actor wascity-leaper)) + "wascity-leaper" + ) + (((game-task-actor unused-slot-16)) + "unused-slot-16" + ) + (((game-task-actor veger-cave)) + "veger-cave" + ) + (((game-task-actor sig-talkbox)) + "sig-talkbox" + ) + (((game-task-actor wascity-turret)) + "wascity-turret" + ) + (((game-task-actor unused-slot-22)) + "unused-slot-22" + ) + (((game-task-actor power-game-vinroom)) + "power-game-vinroom" + ) + (((game-task-actor was-pre-game-wascityb)) + "was-pre-game-wascityb" + ) + (((game-task-actor damus-arena)) + "damus-arena" + ) + (((game-task-actor keira-genb)) + "keira-genb" + ) + (((game-task-actor samos-genb)) + "samos-genb" + ) + (((game-task-actor unused-slot-31)) + "unused-slot-31" + ) + (((game-task-actor unused-slot-12)) + "unused-slot-12" + ) + (((game-task-actor unused-slot-28)) + "unused-slot-28" + ) + (((game-task-actor torn-hiptable)) + "torn-hiptable" + ) + (((game-task-actor unused-slot-25)) + "unused-slot-25" + ) + (((game-task-actor ashelin-oasis)) + "ashelin-oasis" + ) + (((game-task-actor onin-onintent)) + "onin-onintent" + ) + (((game-task-actor pecker)) + "pecker" + ) + (((game-task-actor unused-slot-15)) + "unused-slot-15" + ) + (((game-task-actor unused-slot-18)) + "unused-slot-18" + ) + (((game-task-actor damus-ruins)) + "damus-ruins" + ) + (((game-task-actor veger-ruins)) + "veger-ruins" + ) + (((game-task-actor kleever-pen)) + "kleever-pen" + ) + (((game-task-actor torn-hipbar)) + "torn-hipbar" + ) + (((game-task-actor oracle-oracle)) + "oracle-oracle" + ) + (((game-task-actor unused-slot-21)) + "unused-slot-21" + ) + (((game-task-actor seem-temple)) + "seem-temple" + ) + (((game-task-actor seem-wascity)) + "seem-wascity" + ) + (((game-task-actor unused-slot-30)) + "unused-slot-30" + ) + (((game-task-actor pecker-onintent)) + "pecker-onintent" + ) + (((game-task-actor unused-slot-11)) + "unused-slot-11" + ) + (((game-task-actor monk-wascity)) + "monk-wascity" + ) + (((game-task-actor unused-slot-24)) + "unused-slot-24" + ) + (((game-task-actor unused-slot-27)) + "unused-slot-27" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition (debug) for function game-task-action->string +(defun-debug game-task-action->string ((arg0 game-task-action)) + (case arg0 + (((game-task-action idle)) + "idle" + ) + (((game-task-action play)) + "play" + ) + (((game-task-action show)) + "show" + ) + (((game-task-action talk)) + "talk" + ) + (((game-task-action hide)) + "hide" + ) + (((game-task-action say)) + "say" + ) + (((game-task-action trade)) + "trade" + ) + (((game-task-action menu)) + "menu" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition (debug) for function game-task-medal->string +(defun-debug game-task-medal->string ((arg0 game-task-medal)) + (case arg0 + (((game-task-medal bronze)) + "bronze" + ) + (((game-task-medal silver)) + "silver" + ) + (((game-task-medal gold)) + "gold" + ) + (((game-task-medal none)) + "none" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition of type game-task-event +(deftype game-task-event (basic) + ((actor game-task-actor) + (action game-task-action) + (tex game-task-icon) + (icon uint16 :overlay-at tex) + (flags game-task-flags :offset 7) + (scene string :offset 8) + (distance meters) + ) + ) + +;; definition for method 3 of type game-task-event +(defmethod inspect ((this game-task-event)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tactor: #x~X : ~S~%" (-> this actor) (game-task-actor->string (-> this actor))) + (format #t "~1Taction: #x~X : ~S~%" (-> this action) (game-task-action->string (-> this action))) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Ticon: ~D~%" (-> this icon)) + (format #t "~1Tskull-cost: ~D~%" (-> this tex)) + (format #t "~1Tscene: ~A~%" (-> this scene)) + (format #t "~1Tdistance: (meters ~m)~%" (-> this distance)) + (label cfg-4) + this + ) + +;; definition (debug) for function game-task-node-flag->string +(defun-debug game-task-node-flag->string ((arg0 game-task-node-flag)) + (if (= (logand (game-task-node-flag boss-battle) arg0) (game-task-node-flag boss-battle)) + (format #t "boss-battle ") + ) + (if (= (logand arg0 (game-task-node-flag clear-task-mask)) (game-task-node-flag clear-task-mask)) + (format #t "clear-task-mask ") + ) + (if (= (logand arg0 (game-task-node-flag haven-city)) (game-task-node-flag haven-city)) + (format #t "haven-city ") + ) + (if (= (logand arg0 (game-task-node-flag unlocked)) (game-task-node-flag unlocked)) + (format #t "unlocked ") + ) + (if (= (logand arg0 (game-task-node-flag kras-city)) (game-task-node-flag kras-city)) + (format #t "kras-city ") + ) + (if (= (logand (game-task-node-flag qualifier) arg0) (game-task-node-flag qualifier)) + (format #t "qualifier ") + ) + (if (= (logand arg0 (game-task-node-flag cup4)) (game-task-node-flag cup4)) + (format #t "cup4 ") + ) + (if (= (logand arg0 (game-task-node-flag set-task-mask)) (game-task-node-flag set-task-mask)) + (format #t "set-task-mask ") + ) + (if (= (logand arg0 (game-task-node-flag closed)) (game-task-node-flag closed)) + (format #t "closed ") + ) + (if (= (logand arg0 (game-task-node-flag cup3)) (game-task-node-flag cup3)) + (format #t "cup3 ") + ) + (if (= (logand arg0 (game-task-node-flag data)) (game-task-node-flag data)) + (format #t "data ") + ) + (if (= (logand (game-task-node-flag grand-prix) arg0) (game-task-node-flag grand-prix)) + (format #t "grand-prix ") + ) + (if (= (logand arg0 (game-task-node-flag cup2)) (game-task-node-flag cup2)) + (format #t "cup2 ") + ) + (if (= (logand arg0 (game-task-node-flag close-task)) (game-task-node-flag close-task)) + (format #t "close-task ") + ) + (if (= (logand arg0 (game-task-node-flag icelands)) (game-task-node-flag icelands)) + (format #t "icelands ") + ) + (if (= (logand arg0 (game-task-node-flag cup1)) (game-task-node-flag cup1)) + (format #t "cup1 ") + ) + (if (= (logand arg0 (game-task-node-flag abs-task-mask)) (game-task-node-flag abs-task-mask)) + (format #t "abs-task-mask ") + ) + (if (= (logand (game-task-node-flag score-lower-is-better) arg0) (game-task-node-flag score-lower-is-better)) + (format #t "score-lower-is-better ") + ) + (if (= (logand arg0 (game-task-node-flag spargus)) (game-task-node-flag spargus)) + (format #t "spargus ") + ) + (if (= (logand arg0 (game-task-node-flag intro-b)) (game-task-node-flag intro-b)) + (format #t "intro-b ") + ) + ) + +;; definition (debug) for function game-task-node-command->string +(defun-debug game-task-node-command->string ((arg0 game-task-node-command)) + (case arg0 + (((game-task-node-command sub-board-trail)) + "sub-board-trail" + ) + (((game-task-node-command add-gun-yellow-1)) + "add-gun-yellow-1" + ) + (((game-task-node-command add-gun-yellow-2)) + "add-gun-yellow-2" + ) + (((game-task-node-command add-board-trail)) + "add-board-trail" + ) + (((game-task-node-command add-vehicle-snake)) + "add-vehicle-snake" + ) + (((game-task-node-command add-board-zap)) + "add-board-zap" + ) + (((game-task-node-command add-darkjak-smack)) + "add-darkjak-smack" + ) + (((game-task-node-command add-gun-yellow-ammo-2)) + "add-gun-yellow-ammo-2" + ) + (((game-task-node-command add-gun-red-1)) + "add-gun-red-1" + ) + (((game-task-node-command add-star-map)) + "add-star-map" + ) + (((game-task-node-command add-darkeco)) + "add-darkeco" + ) + (((game-task-node-command add-darkjak)) + "add-darkjak" + ) + (((game-task-node-command add-light-eco-crystal)) + "add-light-eco-crystal" + ) + (((game-task-node-command add-gun-blue-2)) + "add-gun-blue-2" + ) + (((game-task-node-command add-gun-dark-3)) + "add-gun-dark-3" + ) + (((game-task-node-command add-av-cube)) + "add-av-cube" + ) + (((game-task-node-command add-board-training)) + "add-board-training" + ) + (((game-task-node-command add-vehicle-toad)) + "add-vehicle-toad" + ) + (((game-task-node-command add-darkjak-tracking)) + "add-darkjak-tracking" + ) + (((game-task-node-command none)) + "none" + ) + (((game-task-node-command add-lighteco)) + "add-lighteco" + ) + (((game-task-node-command add-artifact-invis)) + "add-artifact-invis" + ) + (((game-task-node-command add-seal)) + "add-seal" + ) + (((game-task-node-command add-darkjak-bomb0)) + "add-darkjak-bomb0" + ) + (((game-task-node-command add-amulet-1)) + "add-amulet-1" + ) + (((game-task-node-command add-gun-red-ammo-2)) + "add-gun-red-ammo-2" + ) + (((game-task-node-command add-vehicle-scorpion)) + "add-vehicle-scorpion" + ) + (((game-task-node-command add-gun-blue-1)) + "add-gun-blue-1" + ) + (((game-task-node-command sub-sidekick)) + "sub-sidekick" + ) + (((game-task-node-command add-av-generator)) + "add-av-generator" + ) + (((game-task-node-command add-sidekick)) + "add-sidekick" + ) + (((game-task-node-command add-pass-indb-sluma)) + "add-pass-indb-sluma" + ) + (((game-task-node-command add-amulet-2)) + "add-amulet-2" + ) + (((game-task-node-command add-vehicle-turtle)) + "add-vehicle-turtle" + ) + (((game-task-node-command add-gun-yellow-ammo-1)) + "add-gun-yellow-ammo-1" + ) + (((game-task-node-command add-dark-eco-crystal)) + "add-dark-eco-crystal" + ) + (((game-task-node-command add-pass-port-inda)) + "add-pass-port-inda" + ) + (((game-task-node-command add-gun-dark-2)) + "add-gun-dark-2" + ) + (((game-task-node-command add-av-prism)) + "add-av-prism" + ) + (((game-task-node-command add-vehicle-rhino)) + "add-vehicle-rhino" + ) + (((game-task-node-command add-board-launch)) + "add-board-launch" + ) + (((game-task-node-command add-armor-3)) + "add-armor-3" + ) + (((game-task-node-command add-cypher-gliph)) + "add-cypher-gliph" + ) + (((game-task-node-command add-pass-port-mh)) + "add-pass-port-mh" + ) + (((game-task-node-command add-armor-2)) + "add-armor-2" + ) + (((game-task-node-command add-darkjak-bomb1)) + "add-darkjak-bomb1" + ) + (((game-task-node-command add-armor-1)) + "add-armor-1" + ) + (((game-task-node-command add-pass-front-gate)) + "add-pass-front-gate" + ) + (((game-task-node-command add-lightjak-swoop)) + "add-lightjak-swoop" + ) + (((game-task-node-command add-gun-blue-3)) + "add-gun-blue-3" + ) + (((game-task-node-command add-pass-slumb-genb)) + "add-pass-slumb-genb" + ) + (((game-task-node-command add-armor-0)) + "add-armor-0" + ) + (((game-task-node-command add-lightjak-shield)) + "add-lightjak-shield" + ) + (((game-task-node-command add-lightjak-regen)) + "add-lightjak-regen" + ) + (((game-task-node-command add-gun-blue-ammo-1)) + "add-gun-blue-ammo-1" + ) + (((game-task-node-command add-gun-blue-ammo-2)) + "add-gun-blue-ammo-2" + ) + (((game-task-node-command add-gun-red-ammo-1)) + "add-gun-red-ammo-1" + ) + (((game-task-node-command add-gun-red-3)) + "add-gun-red-3" + ) + (((game-task-node-command sub-board)) + "sub-board" + ) + (((game-task-node-command add-gun-red-2)) + "add-gun-red-2" + ) + (((game-task-node-command add-lightjak-freeze)) + "add-lightjak-freeze" + ) + (((game-task-node-command add-darkjak-invinc)) + "add-darkjak-invinc" + ) + (((game-task-node-command add-board)) + "add-board" + ) + (((game-task-node-command add-pass-inda-indb)) + "add-pass-inda-indb" + ) + (((game-task-node-command add-gun-dark-ammo-2)) + "add-gun-dark-ammo-2" + ) + (((game-task-node-command add-gun-dark-1)) + "add-gun-dark-1" + ) + (((game-task-node-command add-av-map)) + "add-av-map" + ) + (((game-task-node-command add-gun-yellow-3)) + "add-gun-yellow-3" + ) + (((game-task-node-command add-gun-dark-ammo-1)) + "add-gun-dark-ammo-1" + ) + (((game-task-node-command add-jakc)) + "add-jakc" + ) + (((game-task-node-command add-amulet-3)) + "add-amulet-3" + ) + (((game-task-node-command add-av-reflector)) + "add-av-reflector" + ) + (((game-task-node-command add-lightjak)) + "add-lightjak" + ) + (else + "*unknown*" + ) + ) + ) + +;; definition of type game-task-node-stats +(deftype game-task-node-stats (structure) + ((death-count uint8) + (vehicle uint8) + (medal uint8) + (ranking uint8) + (score float) + (time float) + (duration float) + (order uint16) + (end-mode uint16) + (cash uint32) + (tuning uint32) + ) + ) + +;; definition for method 3 of type game-task-node-stats +(defmethod inspect ((this game-task-node-stats)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'game-task-node-stats) + (format #t "~1Tdeath-count: ~D~%" (-> this death-count)) + (format #t "~1Tvehicle: ~D~%" (-> this vehicle)) + (format #t "~1Tmedal: ~D~%" (-> this medal)) + (format #t "~1Tranking: ~D~%" (-> this ranking)) + (format #t "~1Tscore: ~f~%" (-> this score)) + (format #t "~1Ttime: ~f~%" (-> this time)) + (format #t "~1Tduration: ~f~%" (-> this duration)) + (format #t "~1Torder: ~D~%" (-> this order)) + (format #t "~1Tend-mode: ~D~%" (-> this end-mode)) + (format #t "~1Tcash: ~D~%" (-> this cash)) + (format #t "~1Ttuning: ~D~%" (-> this tuning)) + (label cfg-4) + this + ) + +;; definition of type game-task-advanced-options +(deftype game-task-advanced-options (structure) + ((data uint8 8) + (weapons uint32 :overlay-at (-> data 0)) + (flags uint8 :overlay-at (-> data 4)) + (param1 uint8 :overlay-at (-> data 5)) + (param2 uint8 :overlay-at (-> data 6)) + (param3 uint8 :overlay-at (-> data 7)) + (lword uint64 :overlay-at (-> data 0)) + ) + :pack-me + ) + +;; definition for method 3 of type game-task-advanced-options +(defmethod inspect ((this game-task-advanced-options)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'game-task-advanced-options) + (format #t "~1Tdata[8] @ #x~X~%" (-> this data)) + (format #t "~1Tweapons: ~D~%" (-> this weapons)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Tparam1: ~D~%" (-> this param1)) + (format #t "~1Tparam2: ~D~%" (-> this param2)) + (format #t "~1Tparam3: ~D~%" (-> this param3)) + (format #t "~1Tlword: ~D~%" (-> this lword)) + (label cfg-4) + this + ) + +;; definition of type game-task-node-info +(deftype game-task-node-info (basic) + ((level symbol) + (task uint8) + (net-play-mode uint8) + (name string) + (max-humans int8) + (max-cpu int8) + (min-players int8) + (when-open (array game-task-event)) + (flags game-task-node-flag) + (task-mask task-mask) + (borrow pair) + (close-time uint32) + (description text-id) + (intro-scene basic) + (outro-scene basic) + (time-of-day int32) + (task-sound-description basic) + (ipu basic) + (gold-array uint32 2) + (silver-array uint32 2) + (bronze-array uint32 2) + (gold float :overlay-at (-> gold-array 0)) + (silver float :overlay-at (-> silver-array 0)) + (bronze float :overlay-at (-> bronze-array 0)) + (gold-hero float :overlay-at (-> gold-array 1)) + (silver-hero float :overlay-at (-> silver-array 1)) + (bronze-hero float :overlay-at (-> bronze-array 1)) + (medals-data uint32) + (medals game-task-medal 4 :overlay-at medals-data) + (unlocked uint8 :overlay-at (-> medals 2)) + (game-score-index uint8 :overlay-at (-> medals 3)) + (adv-score int16) + (exb-score int16) + (ai-tuning-indices basic) + (sound-bank basic) + (play-count uint32) + (time-limit uint32) + (ai-difficulty uint8) + (ai-easier-after uint8) + (ai-min-difficulty uint8) + (ai-difficulty-step uint8) + (default-advanced-options game-task-advanced-options :inline) + (user-advanced-options game-task-advanced-options :inline) + (default-advanced-options-adventure game-task-advanced-options :inline) + (adventure-drivers basic) + (race-start-speech basic) + (gp-start-speech basic) + (gp-win-speech basic) + (gp-finish-speech basic) + (high-scores-default basic) + (high-scores basic) + ) + (:methods + (game-task-node-info-method-9 () none) + (game-task-node-info-method-10 () none) + (game-task-node-info-method-11 () none) + (game-task-node-info-method-12 () none) + (game-task-node-info-method-13 () none) + ) + ) + +;; definition for method 3 of type game-task-node-info +(defmethod inspect ((this game-task-node-info)) + (when (not this) + (set! this this) + (goto cfg-42) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tlevel: ~A~%" (-> this level)) + (format #t "~1Ttask: #x~X : ~S~%" (-> this task) (game-task->string (the-as game-task (-> this task)))) + (format #t "~1Tnet-play-mode: ~D~%" (-> this net-play-mode)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tmax-humans: ~D~%" (-> this max-humans)) + (format #t "~1Tmax-cpu: ~D~%" (-> this max-cpu)) + (format #t "~1Tmin-players: ~D~%" (-> this min-players)) + (format #t "~1Twhen-open: ~A~%" (-> this when-open)) + (format #t "~1Tflags: #x~X : (game-task-node-flag " (-> this flags)) + (game-task-node-flag->string (-> this flags)) + (format #t ")~%") + (format #t "~1Ttask-mask: #x~X : (task-mask " (-> this task-mask)) + (let ((s5-1 (-> this task-mask))) + (if (= (logand s5-1 (task-mask network)) (task-mask network)) + (format #t "network ") + ) + (if (= (logand s5-1 (task-mask task0)) (task-mask task0)) + (format #t "task0 ") + ) + (if (= (logand s5-1 (task-mask task2)) (task-mask task2)) + (format #t "task2 ") + ) + (if (= (logand s5-1 (task-mask task4)) (task-mask task4)) + (format #t "task4 ") + ) + (if (= (logand s5-1 (task-mask task6)) (task-mask task6)) + (format #t "task6 ") + ) + (if (= (logand s5-1 (task-mask ctywide)) (task-mask ctywide)) + (format #t "ctywide ") + ) + (if (= (logand s5-1 (task-mask never)) (task-mask never)) + (format #t "never ") + ) + (if (= (logand (task-mask movie1) s5-1) (task-mask movie1)) + (format #t "movie1 ") + ) + (if (= (logand s5-1 (task-mask vehicle)) (task-mask vehicle)) + (format #t "vehicle ") + ) + (if (= (logand s5-1 (task-mask primary0)) (task-mask primary0)) + (format #t "primary0 ") + ) + (if (= (logand s5-1 (task-mask task1)) (task-mask task1)) + (format #t "task1 ") + ) + (if (= (logand s5-1 (task-mask task3)) (task-mask task3)) + (format #t "task3 ") + ) + (if (= (logand s5-1 (task-mask task5)) (task-mask task5)) + (format #t "task5 ") + ) + (if (= (logand s5-1 (task-mask task7)) (task-mask task7)) + (format #t "task7 ") + ) + (if (= (logand (task-mask movie2) s5-1) (task-mask movie2)) + (format #t "movie2 ") + ) + (if (= (logand s5-1 (task-mask done)) (task-mask done)) + (format #t "done ") + ) + (if (= (logand s5-1 (task-mask special)) (task-mask special)) + (format #t "special ") + ) + (if (= (logand (task-mask movie0) s5-1) (task-mask movie0)) + (format #t "movie0 ") + ) + (if (= (logand s5-1 (task-mask dummy0)) (task-mask dummy0)) + (format #t "dummy0 ") + ) + ) + (format #t ")~%") + (format #t "~1Tborrow: ~A~%" (-> this borrow)) + (format #t "~1Tclose-time: ~D~%" (-> this close-time)) + (format #t "~1Tdescription: ~D~%" (-> this description)) + (format #t "~1Tintro-scene: ~A~%" (-> this intro-scene)) + (format #t "~1Toutro-scene: ~A~%" (-> this outro-scene)) + (format #t "~1Ttime-of-day: ~D~%" (-> this time-of-day)) + (format #t "~1Ttask-sound-description: ~A~%" (-> this task-sound-description)) + (format #t "~1Tipu: ~A~%" (-> this ipu)) + (format #t "~1Tgold-array[2] @ #x~X~%" (-> this gold-array)) + (format #t "~1Tsilver-array[2] @ #x~X~%" (-> this silver-array)) + (format #t "~1Tbronze-array[2] @ #x~X~%" (-> this bronze-array)) + (format #t "~1Tgold: ~f~%" (-> this gold)) + (format #t "~1Tsilver: ~f~%" (-> this silver)) + (format #t "~1Tbronze: ~f~%" (-> this bronze)) + (format #t "~1Tgold-hero: ~f~%" (-> this gold-hero)) + (format #t "~1Tsilver-hero: ~f~%" (-> this silver-hero)) + (format #t "~1Tbronze-hero: ~f~%" (-> this bronze-hero)) + (format #t "~1Tmedals-data: ~D~%" (-> this medals-data)) + (format #t "~1Tmedals[4] @ #x~X~%" (&-> this medals-data)) + (format #t "~1Tunlocked: ~D~%" (-> this unlocked)) + (format #t "~1Tgame-score-index: ~D~%" (-> this game-score-index)) + (format #t "~1Tadv-score: ~D~%" (-> this adv-score)) + (format #t "~1Texb-score: ~D~%" (-> this exb-score)) + (format #t "~1Tai-tuning-indices: ~A~%" (-> this ai-tuning-indices)) + (format #t "~1Tsound-bank: ~A~%" (-> this sound-bank)) + (format #t "~1Tplay-count: ~D~%" (-> this play-count)) + (format #t "~1Ttime-limit: ~D~%" (-> this time-limit)) + (format #t "~1Tai-difficulty: ~D~%" (-> this ai-difficulty)) + (format #t "~1Tai-easier-after: ~D~%" (-> this ai-easier-after)) + (format #t "~1Tai-min-difficulty: ~D~%" (-> this ai-min-difficulty)) + (format #t "~1Tai-difficulty-step: ~D~%" (-> this ai-difficulty-step)) + (format + #t + "~1Tdefault-advanced-options: #~%" + (-> this default-advanced-options) + ) + (format #t "~1Tuser-advanced-options: #~%" (-> this user-advanced-options)) + (format + #t + "~1Tdefault-advanced-options-adventure: #~%" + (-> this default-advanced-options-adventure) + ) + (format #t "~1Tadventure-drivers: ~A~%" (-> this adventure-drivers)) + (format #t "~1Trace-start-speech: ~A~%" (-> this race-start-speech)) + (format #t "~1Tgp-start-speech: ~A~%" (-> this gp-start-speech)) + (format #t "~1Tgp-win-speech: ~A~%" (-> this gp-win-speech)) + (format #t "~1Tgp-finish-speech: ~A~%" (-> this gp-finish-speech)) + (format #t "~1Thigh-scores-default: ~A~%" (-> this high-scores-default)) + (format #t "~1Thigh-scores: ~A~%" (-> this high-scores)) + (label cfg-42) + this + ) + +;; definition of type game-task-info +(deftype game-task-info (basic) + ((name string) + (task-level uint8) + (text-name text-id) + (text-id-long uint32) + (single-player basic) + (kiosk-play-node uint16) + (play-node uint16) + (play-continue string) + (split-continue basic) + (kiosk-play-continue object) + (kiosk-online-play-continue basic) + ) + (:methods + (game-task-info-method-9 () none) + ) + ) + +;; definition for method 3 of type game-task-info +(defmethod inspect ((this game-task-info)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Ttask-level: ~D~%" (-> this task-level)) + (format #t "~1Ttext-name: ~D~%" (-> this text-name)) + (format #t "~1Ttext-id-long: ~D~%" (-> this text-id-long)) + (format #t "~1Tsingle-player: ~A~%" (-> this single-player)) + (format #t "~1Tkiosk-play-node: ~D~%" (-> this kiosk-play-node)) + (format #t "~1Tplay-node: ~D~%" (-> this play-node)) + (format #t "~1Tplay-continue: ~A~%" (-> this play-continue)) + (format #t "~1Tsplit-continue: ~A~%" (-> this split-continue)) + (format #t "~1Tkiosk-play-continue: ~A~%" (-> this kiosk-play-continue)) + (format #t "~1Tkiosk-online-play-continue: ~A~%" (-> this kiosk-online-play-continue)) + (label cfg-4) + this + ) + +;; definition of type game-task-control +(deftype game-task-control (basic) + ((counter uint32) + (actor game-task-actor) + (current-node game-task-node) + (current-event game-task-event) + ) + (:methods + (new (symbol type) _type_) + (game-task-control-method-9 () none) + ) + ) + +;; definition for method 3 of type game-task-control +(defmethod inspect ((this game-task-control)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tcounter: ~D~%" (-> this counter)) + (format #t "~1Tactor: #x~X : ~S~%" (-> this actor) (game-task-actor->string (-> this actor))) + (format #t "~1Tcurrent-node: ~D~%" (-> this current-node)) + (format #t "~1Tcurrent-event: ~A~%" (-> this current-event)) + (label cfg-4) + this + ) + +;; definition of type ambient-control +(deftype ambient-control (structure) + ((last-ambient-time uint64) + (last-ambient string) + (last-ambient-id sound-id) + ) + (:methods + (ambient-control-method-9 () none) + (ambient-control-method-10 () none) + (ambient-control-method-11 () none) + ) + ) + +;; definition for method 3 of type ambient-control +(defmethod inspect ((this ambient-control)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'ambient-control) + (format #t "~1Tlast-ambient-time: ~D~%" (-> this last-ambient-time)) + (format #t "~1Tlast-ambient: ~A~%" (-> this last-ambient)) + (format #t "~1Tlast-ambient-id: ~D~%" (-> this last-ambient-id)) + (label cfg-4) + this + ) + +;; definition for symbol *traffic-engine*, type engine +(define *traffic-engine* (the-as engine #f)) + +;; definition of type game-movie +(deftype game-movie (structure) + ((name basic) + (score uint16) + (flags uint16) + (cup uint32) + ) + ) + +;; definition for method 3 of type game-movie +(defmethod inspect ((this game-movie)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'game-movie) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tscore: ~D~%" (-> this score)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Tcup: ~D~%" (-> this cup)) + (label cfg-4) + this + ) + +;; definition of type grand-prix +(deftype grand-prix (structure) + ((name basic) + (score uint16) + (flags uint16) + (saved-data2 uint16 2) + (saved-data uint32 :overlay-at (-> saved-data2 0)) + (trophy uint16 :overlay-at (-> saved-data2 0)) + (play-count uint16 :overlay-at (-> saved-data2 1)) + (drivers basic) + (task uint16 3) + (task1 uint16 :overlay-at (-> task 0)) + (task2 uint16 :overlay-at (-> task 1)) + (task3 uint16 :overlay-at (-> task 2)) + (cup uint32) + (intro basic) + (outro basic) + (ai-tuning-indices1 basic) + (ai-tuning-indices2 basic) + (ai-tuning-indices3 basic) + (sound-description basic) + (boss uint16) + (boss-drivers basic) + ) + :pack-me + :allow-misaligned + ) + +;; definition for method 3 of type grand-prix +(defmethod inspect ((this grand-prix)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'grand-prix) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tscore: ~D~%" (-> this score)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Tsaved-data2[2] @ #x~X~%" (-> this saved-data2)) + (format #t "~1Tsaved-data: ~D~%" (-> this saved-data)) + (format #t "~1Ttrophy: ~D~%" (-> this trophy)) + (format #t "~1Tplay-count: ~D~%" (-> this play-count)) + (format #t "~1Tdrivers: ~A~%" (-> this drivers)) + (format #t "~1Ttask[3] @ #x~X~%" (-> this task)) + (format #t "~1Ttask1: ~D~%" (-> this task1)) + (format #t "~1Ttask2: ~D~%" (-> this task2)) + (format #t "~1Ttask3: ~D~%" (-> this task3)) + (format #t "~1Tcup: ~D~%" (-> this cup)) + (format #t "~1Tintro: ~A~%" (-> this intro)) + (format #t "~1Toutro: ~A~%" (-> this outro)) + (format #t "~1Tai-tuning-indices1: ~A~%" (-> this ai-tuning-indices1)) + (format #t "~1Tai-tuning-indices2: ~A~%" (-> this ai-tuning-indices2)) + (format #t "~1Tai-tuning-indices3: ~A~%" (-> this ai-tuning-indices3)) + (format #t "~1Tsound-description: ~A~%" (-> this sound-description)) + (format #t "~1Tboss: ~D~%" (-> this boss)) + (format #t "~1Tboss-drivers: ~A~%" (-> this boss-drivers)) + (label cfg-4) + this + ) + +;; definition for symbol *game-movie*, type (array game-movie) +(define *game-movie* (new 'static 'boxed-array :type game-movie + (new 'static 'game-movie :name "2-first-race-res" :score #x1 :cup #x80) + (new 'static 'game-movie :name "3-daxter-poison-real" :score #x4 :cup #x80) + (new 'static 'game-movie :name "10-jak-faces-razer" :score #x11 :cup #x80) + (new 'static 'game-movie :name "12-pecker-added-to-show" :score #x16 :cup #x80) + (new 'static 'game-movie :name "4-blitz-earn-gadgets" :score #x1e :cup #x80) + (new 'static 'game-movie :name "81-sig-returns" :score #x2a :cup #x80) + (new 'static 'game-movie :name "006-keira-wants-to-race" :score #xa :cup #x100) + (new 'static 'game-movie :name "38-kleiver-shows-up" :score #x10 :cup #x100) + (new 'static 'game-movie :name "62-kleiver-bush-bash" :score #x16 :cup #x100) + (new 'static 'game-movie :name "18-blitz-sport-big" :score #x1d :cup #x100) + (new 'static 'game-movie :name "005-jungle-back-in-haven" :score #x26 :cup #x100) + (new 'static 'game-movie :name "52-daxter-wax-job" :score #x2c :cup #x100) + (new 'static 'game-movie :name "84-krews-diary" :score #x7 :cup #x200) + (new 'static 'game-movie :name "100-can-we-trust-mizo" :score #xe :cup #x200) + (new 'static 'game-movie :name "125-razer-gets-nasty" :score #x19 :cup #x200) + (new 'static 'game-movie :name "47-blitzs-father-died" :score #x20 :cup #x200) + (new 'static 'game-movie :name "139-blitz-father-killed" :score #x1 :cup #x400) + (new 'static 'game-movie :name "157-jak-killed-krew" :score #x12 :cup #x400) + (new 'static 'game-movie :name "164-blitz-bares-all" :score #x28 :cup #x400) + ) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/geometry/bounding-box_REF.gc b/test/decompiler/reference/jakx/engine/geometry/bounding-box_REF.gc new file mode 100644 index 0000000000..10cd9b2d77 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/geometry/bounding-box_REF.gc @@ -0,0 +1,375 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for method 19 of type bounding-box +(defmethod inside-xyz? ((this bounding-box) (arg0 vector)) + "Is the point in the box?" + (and (< (-> this min x) (-> arg0 x)) + (< (-> this min y) (-> arg0 y)) + (< (-> this min z) (-> arg0 z)) + (< (-> arg0 x) (-> this max x)) + (< (-> arg0 y) (-> this max y)) + (< (-> arg0 z) (-> this max z)) + ) + ) + +;; definition for method 20 of type bounding-box +(defmethod inside-xz? ((this bounding-box) (arg0 vector)) + "Is the point in the box? Check xz only." + (and (< (-> this min x) (-> arg0 x)) + (< (-> this min z) (-> arg0 z)) + (< (-> arg0 x) (-> this max x)) + (< (-> arg0 z) (-> this max z)) + ) + ) + +;; definition for function box-vector-enside? +(defun box-vector-enside? ((arg0 bounding-box) (arg1 vector)) + "Is the point in the box? On the edge doesn't count." + (and (< (-> arg0 min x) (-> arg1 x)) + (< (-> arg0 min y) (-> arg1 y)) + (< (-> arg0 min z) (-> arg1 z)) + (< (-> arg1 x) (-> arg0 max x)) + (< (-> arg1 y) (-> arg0 max y)) + (< (-> arg1 z) (-> arg0 max z)) + ) + ) + +;; definition for function box-vector-inside? +(defun box-vector-inside? ((arg0 bounding-box) (arg1 vector)) + "Is the point in the box? On the edge counts." + (and (>= (-> arg1 x) (-> arg0 min x)) + (>= (-> arg1 y) (-> arg0 min y)) + (>= (-> arg1 z) (-> arg0 min z)) + (>= (-> arg0 max x) (-> arg1 x)) + (>= (-> arg0 max y) (-> arg1 y)) + (>= (-> arg0 max z) (-> arg1 z)) + ) + ) + +;; definition for method 21 of type bounding-box +(defmethod bounding-box-method-21 ((this bounding-box) (arg0 (inline-array vector))) + (dotimes (v1-0 3) + (if (or (< (-> (&-> arg0 0 data v1-0) 4) (-> this min data v1-0)) + (< (-> this max data v1-0) (-> (&-> arg0 0 data v1-0) 0)) + ) + (return #f) + ) + ) + #t + ) + +;; definition for method 13 of type bounding-box +;; WARN: Return type mismatch int vs none. +(defmethod set-from-point-offset! ((this bounding-box) (arg0 vector) (arg1 vector)) + "Set to the smallest box containing arg0, (arg0 + arg1)" + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (.lvf vf3 (&-> arg1 quad)) + (.lvf vf4 (&-> arg0 quad)) + (.add.vf vf5 vf4 vf3) + (.min.vf vf1 vf4 vf5) + (.max.vf vf2 vf4 vf5) + (.mov.vf.w vf1 vf0) + (.mov.vf.w vf2 vf0) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + 0 + (none) + ) + ) + +;; definition for method 11 of type bounding-box +;; WARN: Return type mismatch int vs none. +(defmethod add-point! ((this bounding-box) (arg0 vector)) + "Expand the box as needed to contain the given point." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + ) + (.lvf vf1 (&-> this min quad)) + (.lvf vf2 (&-> this max quad)) + (.lvf vf3 (&-> arg0 quad)) + (.min.vf vf1 vf1 vf3) + (.max.vf vf2 vf2 vf3) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + 0 + (none) + ) + ) + +;; definition for method 10 of type bounding-box +(defmethod add-box! ((this bounding-box) (arg0 bounding-box)) + "Expand the box as needed to contain the given box." + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + ) + (.lvf vf1 (&-> this min quad)) + (.lvf vf2 (&-> this max quad)) + (.lvf vf3 (&-> arg0 min quad)) + (.lvf vf4 (&-> arg0 max quad)) + (.min.vf vf1 vf1 vf3) + (.max.vf vf2 vf2 vf4) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + 0 + ) + ) + +;; definition for method 15 of type bounding-box +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod set-to-point! ((this bounding-box) (arg0 vector)) + "Set the box to be a single point." + (set! (-> this min quad) (-> arg0 quad)) + (set! (-> this max quad) (-> arg0 quad)) + 0 + (none) + ) + +;; definition for method 14 of type bounding-box +(defmethod set-from-point-offset-pad! ((this bounding-box) (arg0 vector) (arg1 vector) (arg2 float)) + "Set the box to contain arg0, arg0 + offset, with some padding." + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (.lvf vf4 (&-> arg1 quad)) + (.lvf vf5 (&-> arg0 quad)) + (.mov vf1 arg2) + (.add.vf vf6 vf5 vf4) + (.min.vf vf2 vf5 vf6) + (.max.vf vf3 vf5 vf6) + (.add.x.vf.xyz vf3 vf3 vf1) + (.sub.x.vf.xyz vf2 vf2 vf1) + (.mov.vf.w vf2 vf0) + (.mov.vf.w vf3 vf0) + (.svf (&-> this min quad) vf2) + (.svf (&-> this max quad) vf3) + 0 + ) + ) + +;; definition for method 16 of type bounding-box +;; WARN: Return type mismatch int vs none. +(defmethod set-from-sphere! ((this bounding-box) (arg0 sphere)) + "Set the box to contain a single sphere." + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + ) + (init-vf0-vector) + (.lvf vf1 (&-> arg0 quad)) + (.sub.w.vf.xyz vf2 vf1 vf1) + (.add.w.vf.xyz vf3 vf1 vf1) + (.mov.vf.w vf2 vf0) + (.mov.vf.w vf3 vf0) + (.svf (&-> this min quad) vf2) + (.svf (&-> this max quad) vf3) + 0 + (none) + ) + ) + +;; definition for method 17 of type bounding-box +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for method 9 of type bounding-box +(defmethod add-spheres! ((this bounding-box) (arg0 (inline-array sphere)) (arg1 int)) + "Add count spheres." + (rlet ((vf1 :class vf) + (vf10 :class vf) + (vf11 :class vf) + (vf12 :class vf) + (vf13 :class vf) + (vf14 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + (vf9 :class vf) + ) + (nop!) + (b! (zero? arg1) cfg-7 :delay (.lvf vf3 (&-> arg0 0 quad))) + (nop!) + (.lvf vf4 (&-> arg0 1 quad)) + (nop!) + (.lvf vf5 (&-> arg0 2 quad)) + (nop!) + (.lvf vf6 (&-> arg0 3 quad)) + (nop!) + (.lvf vf1 (&-> this min quad)) + (nop!) + (.lvf vf2 (&-> this max quad)) + (label cfg-2) + (.sub.w.vf.xyz vf7 vf3 vf3) + (set! arg0 (the-as (inline-array sphere) (-> arg0 4))) + (.add.w.vf.xyz vf8 vf3 vf3) + (nop!) + (.sub.w.vf.xyz vf9 vf4 vf4) + (nop!) + (.add.w.vf.xyz vf10 vf4 vf4) + (.lvf vf3 (&-> (the-as sphere arg0) quad)) + (let ((v1-0 (+ arg1 -1))) + (.min.vf.xyz vf1 vf1 vf7) + (b! (zero? v1-0) cfg-6 :delay (.max.vf.xyz vf2 vf2 vf8)) + (.sub.w.vf.xyz vf11 vf5 vf5) + (.lvf vf4 (&-> arg0 1 quad)) + (.add.w.vf.xyz vf12 vf5 vf5) + (nop!) + (let ((v1-1 (+ v1-0 -1))) + (.min.vf.xyz vf1 vf1 vf9) + (b! (zero? v1-1) cfg-6 :delay (.max.vf.xyz vf2 vf2 vf10)) + (.sub.w.vf.xyz vf13 vf6 vf6) + (.lvf vf5 (&-> arg0 2 quad)) + (.add.w.vf.xyz vf14 vf6 vf6) + (nop!) + (let ((v1-2 (+ v1-1 -1))) + (.min.vf.xyz vf1 vf1 vf11) + (b! (zero? v1-2) cfg-6 :delay (.max.vf.xyz vf2 vf2 vf12)) + (nop!) + (.lvf vf6 (&-> arg0 3 quad)) + (set! arg1 (+ v1-2 -1)) + ) + ) + ) + (.min.vf.xyz vf1 vf1 vf13) + (b! (nonzero? arg1) cfg-2 :delay (.max.vf.xyz vf2 vf2 vf14)) + (label cfg-6) + (.svf (&-> this min quad) vf1) + (.svf (&-> this max quad) vf2) + (label cfg-7) + 0 + ) + ) + +;; definition for method 18 of type bounding-box +(defmethod get-bounding-sphere ((this bounding-box) (arg0 vector)) + "Get a bounding sphere for a bounding box." + (rlet ((vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (let* ((a1-2 (vector-! (new 'stack-no-clear 'vector) (-> this max) (-> this min))) + (a0-3 (vector-float*! (new 'stack-no-clear 'vector) a1-2 0.5)) + ) + (let ((v1-1 arg0)) + (let ((a1-3 (-> this min)) + (a2-1 a0-3) + ) + (.lvf vf4 (&-> a1-3 quad)) + (.lvf vf5 (&-> a2-1 quad)) + ) + (.mov.vf.w vf6 vf0) + (.add.vf.xyz vf6 vf4 vf5) + (.svf (&-> v1-1 quad) vf6) + ) + (set! (-> arg0 w) (vector-length a0-3)) + ) + arg0 + ) + ) + +;; definition of type liang-barsky-line-clip-params +(deftype liang-barsky-line-clip-params (structure) + ((te float) + (tl float) + ) + ) + +;; definition for method 3 of type liang-barsky-line-clip-params +(defmethod inspect ((this liang-barsky-line-clip-params)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'liang-barsky-line-clip-params) + (format #t "~1Tte: ~f~%" (-> this te)) + (format #t "~1Ttl: ~f~%" (-> this tl)) + (label cfg-4) + this + ) + +;; definition for function liang-barsky-line-clipt +(defun liang-barsky-line-clipt ((arg0 liang-barsky-line-clip-params) (arg1 float) (arg2 float)) + "Clip test in 1 dimension. Is arg1 in arg2?" + (cond + ((< 0.0 arg1) + (let ((f0-2 (/ arg2 arg1))) + (if (< (-> arg0 tl) f0-2) + (return #f) + ) + (if (< (-> arg0 te) f0-2) + (set! (-> arg0 te) f0-2) + ) + ) + ) + ((< arg1 0.0) + (let ((f0-5 (/ arg2 arg1))) + (if (< f0-5 (-> arg0 te)) + (return #f) + ) + (if (< f0-5 (-> arg0 tl)) + (set! (-> arg0 tl) f0-5) + ) + ) + ) + (else + (if (< 0.0 arg2) + (return #f) + ) + ) + ) + #t + ) + +;; definition for method 12 of type bounding-box +;; WARN: disable def twice: 23. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. +(defmethod intersects-line-segment? ((this bounding-box) (arg0 vector) (arg1 vector)) + "Check intersection in xz plane, using liang-barsky. Not sure if this actually + a useful check or not..." + (let ((f28-0 (- (-> arg1 x) (-> arg0 x))) + (f30-0 (- (-> arg1 z) (-> arg0 z))) + ) + (cond + ((and (= f28-0 0.0) (= f30-0 0.0)) + (let ((f1-2 (-> arg0 x)) + (f0-4 (-> arg0 z)) + ) + (and (>= f1-2 (-> this min x)) (>= (-> this max x) f1-2) (>= f0-4 (-> this min z)) (>= (-> this max z) f0-4)) + ) + ) + (else + (let ((s4-0 (new 'stack-no-clear 'liang-barsky-line-clip-params))) + (set! (-> s4-0 te) 0.0) + (set! (-> s4-0 tl) 1.0) + (and (liang-barsky-line-clipt s4-0 f28-0 (- (-> this min x) (-> arg0 x))) + (liang-barsky-line-clipt s4-0 (- f28-0) (- (-> arg0 x) (-> this max x))) + (liang-barsky-line-clipt s4-0 f30-0 (- (-> this min z) (-> arg0 z))) + (liang-barsky-line-clipt s4-0 (- f30-0) (- (-> arg0 z) (-> this max z))) + ) + ) + ) + ) + ) + ) diff --git a/test/decompiler/reference/jakx/engine/geometry/path-h_REF.gc b/test/decompiler/reference/jakx/engine/geometry/path-h_REF.gc new file mode 100644 index 0000000000..7470e29694 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/geometry/path-h_REF.gc @@ -0,0 +1,355 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for function get-knot-name +(defun get-knot-name ((arg0 symbol)) + (case arg0 + (('path) + 'path-k + ) + (('flow) + 'flow-k + ) + (('intro) + 'intro-k + ) + (('pathshort) + 'pathshort-k + ) + (('patha) + 'patha-k + ) + (('pathb) + 'pathb-k + ) + (else + (format + 0 + "WARNING: curve-control is being asked to look up an unknown name '~A', it will have to do so by string.~%" + arg0 + ) + (let ((s5-0 string->symbol)) + (format (clear *temp-string*) "~A-k" arg0) + (s5-0 *temp-string*) + ) + ) + ) + ) + +;; definition for function get-distmap-name +(defun get-distmap-name ((arg0 symbol)) + (case arg0 + (('path) + 'path-distmap + ) + (('intro) + 'intro-distmap + ) + (else + #f + ) + ) + ) + +;; definition of type path-control +(deftype path-control (basic) + "The path-control is a reference a path data, which is just a list of points. +Although it contains a `curve`, the knot part is not populated, so it's just treated as +a bunch of line segments from the control points. +The child class curve-control does fill out the knot data and is a proper b-spline. +These path-controls are typically allocated on a process heap." + ((flags path-control-flag) + (name symbol) + (process process-drawable) + (distmap uint32) + (curve curve :inline) + (num-cverts int32 :overlay-at (-> curve num-cverts)) + (cverts uint32 :overlay-at (-> curve cverts)) + ) + (:methods + (new (symbol type process symbol float entity symbol) _type_) + (path-control-method-9 () none) + (path-control-method-10 () none) + (path-control-method-11 () none) + (path-control-method-12 () none) + (path-control-method-13 () none) + (path-control-method-14 () none) + (path-control-method-15 () none) + (path-control-method-16 () none) + (get-num-segments (_type_) float) + (path-control-method-18 () none) + (get-num-verts (_type_) int) + (segement-duration->path-duration (_type_ float) float) + (average-segment-length (_type_ float) float) + (path-control-method-22 () none) + (path-control-method-23 () none) + (path-control-method-24 () none) + (path-control-method-25 () none) + (path-control-method-26 () none) + (path-control-method-27 () none) + (path-control-method-28 () none) + (path-control-method-29 () none) + (path-control-method-30 () none) + (should-display-marks? (_type_) symbol) + (path-control-method-32 () none) + ) + ) + +;; definition for method 3 of type path-control +(defmethod inspect ((this path-control)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X~%" (-> this flags)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tprocess: ~A~%" (-> this process)) + (format #t "~1Tdistmap: #x~X~%" (-> this distmap)) + (format #t "~1Tcurve: #~%" (-> this curve)) + (format #t "~1Tnum-cverts: ~D~%" (-> this curve num-cverts)) + (format #t "~1Tcverts: #x~X~%" (-> this curve cverts)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +(set! (-> path-control method-table 9) nothing) + +;; definition of type curve-control +(deftype curve-control (path-control) + "A curve-control is like a path control, but it has both control points and knot points." + () + (:methods + (new (symbol type process symbol res-lump symbol float) _type_) + (curve-control-method-33 () none) + (curve-control-method-34 () none) + ) + ) + +;; definition for method 3 of type curve-control +(defmethod inspect ((this curve-control)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tflags: #x~X~%" (-> this flags)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tprocess: ~A~%" (-> this process)) + (format #t "~1Tdistmap: #x~X~%" (-> this distmap)) + (format #t "~1Tcurve: #~%" (-> this curve)) + (format #t "~1Tnum-cverts: ~D~%" (-> this curve num-cverts)) + (format #t "~1Tcverts: #x~X~%" (-> this curve cverts)) + (label cfg-4) + this + ) + +;; definition for method 0 of type path-control +;; INFO: Used lq/sq +;; ERROR: Stack slot load at 64 mismatch: defined as size 4, got size 16 +;; ERROR: Stack slot load at 64 mismatch: defined as size 4, got size 16 +;; WARN: Return type mismatch object vs path-control. +(defmethod new path-control ((allocation symbol) + (type-to-make type) + (arg0 process) + (arg1 symbol) + (arg2 float) + (arg3 entity) + (arg4 symbol) + ) + (let ((sv-64 arg2) + (s4-0 arg3) + (sv-48 arg4) + ) + (if (not s4-0) + (set! s4-0 (-> arg0 entity)) + ) + (when (= arg1 'path) + (let ((v0-0 (entity-actor-lookup s4-0 'path-actor 0))) + (if v0-0 + (set! s4-0 v0-0) + ) + ) + ) + (let ((s5-0 (the-as object 0))) + (let* ((s2-0 #f) + (sv-16 (new 'static 'res-tag)) + (sv-80 (res-lump-data s4-0 arg1 pointer :tag-ptr (& sv-16) :time sv-64)) + ) + (cond + (sv-80 + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as path-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as path-control s5-0)) + (set! (-> (the-as path-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as path-control s5-0) name) arg1) + (set! (-> (the-as path-control s5-0) curve cverts) (the-as (inline-array vector) sv-80)) + (set! (-> (the-as path-control s5-0) curve num-cverts) (the-as int (-> sv-16 elt-count))) + (cond + ((= arg1 'path) + (set! s2-0 'path-distmap) + ) + ((= arg1 'path-intro) + (set! s2-0 'path-intro-distmap) + ) + ) + (let* ((sv-32 0) + (v0-3 (res-lump-data s4-0 s2-0 pointer :tag-ptr (the-as (pointer res-tag) (& sv-32)))) + ) + (when v0-3 + (set! (-> (the-as path-control s5-0) distmap) (the-as uint v0-3)) + ((method-of-object (the-as path-control s5-0) path-control-method-30)) + ) + ) + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + (else + (when (not sv-48) + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as path-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as path-control s5-0)) + (logior! (-> (the-as path-control s5-0) flags) (path-control-flag not-found)) + (set! (-> (the-as path-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as path-control s5-0) name) arg1) + (set! (-> (the-as path-control s5-0) curve cverts) (the-as (inline-array vector) #f)) + (set! (-> (the-as path-control s5-0) curve num-cverts) 0) + 0 + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + ) + ) + ) + (the-as path-control s5-0) + ) + ) + ) + +;; definition for method 31 of type path-control +(defmethod should-display-marks? ((this path-control)) + (and *display-path-marks* (logtest? (-> this flags) (path-control-flag display))) + ) + +;; definition for method 17 of type path-control +(defmethod get-num-segments ((this path-control)) + (the float (+ (-> this curve num-cverts) -1)) + ) + +;; definition for method 19 of type path-control +(defmethod get-num-verts ((this path-control)) + (-> this curve num-cverts) + ) + +;; definition for method 20 of type path-control +(defmethod segement-duration->path-duration ((this path-control) (arg0 float)) + (* arg0 (get-num-segments this)) + ) + +;; definition for method 21 of type path-control +(defmethod average-segment-length ((this path-control) (arg0 float)) + (/ arg0 (get-num-segments this)) + ) + +;; definition for method 0 of type curve-control +;; INFO: Used lq/sq +;; ERROR: Stack slot load at 80 mismatch: defined as size 4, got size 16 +;; ERROR: Stack slot load at 80 mismatch: defined as size 4, got size 16 +;; WARN: Return type mismatch object vs curve-control. +(defmethod new curve-control ((allocation symbol) + (type-to-make type) + (arg0 process) + (arg1 symbol) + (arg2 res-lump) + (arg3 symbol) + (arg4 float) + ) + (local-vars (r0-0 uint128) (v1-17 uint128)) + (let ((sv-64 arg3) + (sv-80 arg4) + ) + (if (not arg2) + (set! arg2 (-> arg0 entity)) + ) + (when (= arg1 'path) + (let ((v0-0 (entity-actor-lookup arg2 'path-actor 0))) + (if v0-0 + (set! arg2 v0-0) + ) + ) + ) + (let ((s5-0 (the-as object 0))) + (let* ((s4-0 (get-distmap-name arg1)) + (sv-112 (get-knot-name arg1)) + (sv-16 (new 'static 'res-tag)) + (sv-96 (res-lump-data arg2 arg1 pointer :tag-ptr (& sv-16) :time sv-80)) + ) + (cond + (sv-96 + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as curve-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as curve-control s5-0)) + (set! (-> (the-as curve-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as curve-control s5-0) name) arg1) + (set! (-> (the-as curve-control s5-0) curve cverts) (the-as (inline-array vector) sv-96)) + (set! (-> (the-as curve-control s5-0) curve num-cverts) (the-as int (-> sv-16 elt-count))) + (let* ((sv-32 0) + (v0-5 (res-lump-data arg2 sv-112 pointer :tag-ptr (the-as (pointer res-tag) (& sv-32)))) + ) + (when v0-5 + (set! (-> (the-as curve-control s5-0) curve knots) (the-as (pointer float) v0-5)) + (let ((v1-16 (the-as uint128 sv-32))) + (.pcpyud v1-17 v1-16 r0-0) + ) + (set! (-> (the-as curve-control s5-0) curve num-knots) (shr (* (the-as int v1-17) 2) 49)) + ) + ) + (let* ((sv-48 0) + (v0-6 (res-lump-data arg2 s4-0 pointer :tag-ptr (the-as (pointer res-tag) (& sv-48)))) + ) + (when v0-6 + (set! (-> (the-as curve-control s5-0) distmap) (the-as uint v0-6)) + ((method-of-object (the-as curve-control s5-0) path-control-method-30)) + ) + ) + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + (else + (when (not sv-64) + (set! s5-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))) + (set! (-> (the-as curve-control s5-0) distmap) (the-as uint #f)) + (cond + ((nonzero? (the-as curve-control s5-0)) + (logior! (-> (the-as curve-control s5-0) flags) (path-control-flag not-found)) + (set! (-> (the-as curve-control s5-0) process) (the-as process-drawable arg0)) + (set! (-> (the-as curve-control s5-0) name) arg1) + (set! (-> (the-as curve-control s5-0) curve cverts) (the-as (inline-array vector) #f)) + (set! (-> (the-as curve-control s5-0) curve num-cverts) 0) + 0 + ) + (else + (go process-drawable-art-error "memory") + ) + ) + ) + ) + ) + ) + (the-as curve-control s5-0) + ) + ) + ) diff --git a/test/decompiler/reference/jakx/engine/gfx/background/tie/generic-tie-h_REF.gc b/test/decompiler/reference/jakx/engine/gfx/background/tie/generic-tie-h_REF.gc new file mode 100644 index 0000000000..b4ea1340ca --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/background/tie/generic-tie-h_REF.gc @@ -0,0 +1,657 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type generic-tie-instance +(deftype generic-tie-instance (structure) + ((matrix-tag dma-packet :inline) + (matrix-data vector 6 :inline) + (index-tag dma-packet :inline) + (indices uint8 224) + (end-tag dma-packet :inline) + ) + ) + +;; definition for method 3 of type generic-tie-instance +(defmethod inspect ((this generic-tie-instance)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-instance) + (format #t "~1Tmatrix-tag: #~%" (-> this matrix-tag)) + (format #t "~1Tmatrix-data[6] @ #x~X~%" (-> this matrix-data)) + (format #t "~1Tindex-tag: #~%" (-> this index-tag)) + (format #t "~1Tindices[224] @ #x~X~%" (-> this indices)) + (format #t "~1Tend-tag: #~%" (-> this end-tag)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-input +(deftype generic-tie-input (structure) + ((palette-tag dma-packet :inline) + (palette rgba 128) + (model-tag dma-packet :inline) + (model vector 146 :inline) + (matrix-tag dma-packet :inline) + (matrix-data vector 6 :inline) + (index-tag dma-packet :inline) + (indices uint8 224) + (end-tag dma-packet :inline) + ) + ) + +;; definition for method 3 of type generic-tie-input +(defmethod inspect ((this generic-tie-input)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-input) + (format #t "~1Tpalette-tag: #~%" (-> this palette-tag)) + (format #t "~1Tpalette[128] @ #x~X~%" (-> this palette)) + (format #t "~1Tmodel-tag: #~%" (-> this model-tag)) + (format #t "~1Tmodel[146] @ #x~X~%" (-> this model)) + (format #t "~1Tmatrix-tag: #~%" (-> this matrix-tag)) + (format #t "~1Tmatrix-data[6] @ #x~X~%" (-> this matrix-data)) + (format #t "~1Tindex-tag: #~%" (-> this index-tag)) + (format #t "~1Tindices[224] @ #x~X~%" (-> this indices)) + (format #t "~1Tend-tag: #~%" (-> this end-tag)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-run-control +(deftype generic-tie-run-control (structure) + ((skip-bp2 uint8) + (skip-ips uint8) + (gifbuf-skip uint8) + (strips uint8) + (target-bp1 uint8) + (target-bp2 uint8) + (target-ip1 uint8) + (target-ip2 uint8) + (target-bps uint8) + (target-ips uint8) + (is-generic uint8) + (reserved uint8) + ) + ) + +;; definition for method 3 of type generic-tie-run-control +(defmethod inspect ((this generic-tie-run-control)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-run-control) + (format #t "~1Tskip-bp2: ~D~%" (-> this skip-bp2)) + (format #t "~1Tskip-ips: ~D~%" (-> this skip-ips)) + (format #t "~1Tgifbuf-skip: ~D~%" (-> this gifbuf-skip)) + (format #t "~1Tstrips: ~D~%" (-> this strips)) + (format #t "~1Ttarget-bp1: ~D~%" (-> this target-bp1)) + (format #t "~1Ttarget-bp2: ~D~%" (-> this target-bp2)) + (format #t "~1Ttarget-ip1: ~D~%" (-> this target-ip1)) + (format #t "~1Ttarget-ip2: ~D~%" (-> this target-ip2)) + (format #t "~1Ttarget-bps: ~D~%" (-> this target-bps)) + (format #t "~1Ttarget-ips: ~D~%" (-> this target-ips)) + (format #t "~1Tis-generic: ~D~%" (-> this is-generic)) + (format #t "~1Treserved: ~D~%" (-> this reserved)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-base-point +(deftype generic-tie-base-point (structure) + ((data uint16 8) + (quad uint128 :overlay-at (-> data 0)) + (x int16 :overlay-at (-> data 0)) + (y int16 :overlay-at (-> data 1)) + (z int16 :overlay-at (-> data 2)) + (d0 int16 :overlay-at (-> data 3)) + (vtx uint64 :overlay-at (-> data 0)) + (u int16 :overlay-at (-> data 4)) + (v int16 :overlay-at (-> data 5)) + (tex uint32 :overlay-at (-> data 4)) + (w int16 :overlay-at (-> data 6)) + (d1 int16 :overlay-at (-> data 7)) + ) + ) + +;; definition for method 3 of type generic-tie-base-point +;; INFO: Used lq/sq +(defmethod inspect ((this generic-tie-base-point)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-base-point) + (format #t "~1Tdata[8] @ #x~X~%" (-> this data)) + (format #t "~1Tquad: ~D~%" (-> this quad)) + (format #t "~1Tx: ~D~%" (-> this x)) + (format #t "~1Ty: ~D~%" (-> this y)) + (format #t "~1Tz: ~D~%" (-> this z)) + (format #t "~1Td0: ~D~%" (-> this d0)) + (format #t "~1Tvtx: ~D~%" (-> this vtx)) + (format #t "~1Tu: ~D~%" (-> this u)) + (format #t "~1Tv: ~D~%" (-> this v)) + (format #t "~1Ttex: ~D~%" (-> this tex)) + (format #t "~1Tw: ~D~%" (-> this w)) + (format #t "~1Td1: ~D~%" (-> this d1)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-bps +(deftype generic-tie-bps (structure) + ((bp generic-tie-base-point 4 :inline) + ) + ) + +;; definition for method 3 of type generic-tie-bps +(defmethod inspect ((this generic-tie-bps)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-bps) + (format #t "~1Tbp[4] @ #x~X~%" (-> this bp)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-interp-point +(deftype generic-tie-interp-point (structure) + ((data uint16 12) + (x int16 :overlay-at (-> data 0)) + (y int16 :overlay-at (-> data 1)) + (z int16 :overlay-at (-> data 2)) + (d0 int16 :overlay-at (-> data 3)) + (vtx0 uint64 :overlay-at (-> data 0)) + (dx int16 :overlay-at (-> data 4)) + (dy int16 :overlay-at (-> data 5)) + (dz int16 :overlay-at (-> data 6)) + (unused int16 :overlay-at (-> data 7)) + (vtx1 uint64 :overlay-at (-> data 4)) + (u int16 :overlay-at (-> data 8)) + (v int16 :overlay-at (-> data 9)) + (tex uint32 :overlay-at (-> data 8)) + (w int16 :overlay-at (-> data 10)) + (d1 int16 :overlay-at (-> data 11)) + ) + :pack-me + ) + +;; definition for method 3 of type generic-tie-interp-point +;; INFO: Used lq/sq +;; ERROR: failed type prop at 19: Could not figure out load: (set! a2 (l.q gp)) +(defmethod inspect ((a0-0 generic-tie-interp-point)) + (local-vars + (v0-0 object) + (v0-1 object) + (v0-2 none) + (v0-3 none) + (v0-4 none) + (v0-5 none) + (v0-6 none) + (v0-7 none) + (v0-8 none) + (v0-9 none) + (v0-10 none) + (v0-11 none) + (v0-12 none) + (v0-13 none) + (v0-14 none) + (v0-15 none) + (v0-16 none) + (v0-17 none) + (v0-18 generic-tie-interp-point) + (a0-1 symbol) + (a0-2 symbol) + (a0-3 symbol) + (a0-4 none) + (a0-5 none) + (a0-6 none) + (a0-7 none) + (a0-8 none) + (a0-9 none) + (a0-10 none) + (a0-11 none) + (a0-12 none) + (a0-13 none) + (a0-14 none) + (a0-15 none) + (a0-16 none) + (a0-17 none) + (a0-18 none) + (a1-0 string) + (a1-1 string) + (a1-2 string) + (a1-3 none) + (a1-4 none) + (a1-5 none) + (a1-6 none) + (a1-7 none) + (a1-8 none) + (a1-9 none) + (a1-10 none) + (a1-11 none) + (a1-12 none) + (a1-13 none) + (a1-14 none) + (a1-15 none) + (a1-16 none) + (a1-17 none) + (a2-0 generic-tie-interp-point) + (a2-1 (pointer uint16)) + (a2-2 none) + (a2-3 none) + (a2-4 none) + (a2-5 none) + (a2-6 none) + (a2-7 none) + (a2-8 none) + (a2-9 none) + (a2-10 none) + (a2-11 none) + (a2-12 none) + (a2-13 none) + (a2-14 none) + (a2-15 none) + (a2-16 none) + (a2-17 none) + (a3-0 symbol) + (t9-0 (function _varargs_ object)) + (t9-1 (function _varargs_ object)) + (t9-2 (function _varargs_ object)) + (t9-3 none) + (t9-4 none) + (t9-5 none) + (t9-6 none) + (t9-7 none) + (t9-8 none) + (t9-9 none) + (t9-10 none) + (t9-11 none) + (t9-12 none) + (t9-13 none) + (t9-14 none) + (t9-15 none) + (t9-16 none) + (t9-17 none) + ) + (if (begin (not a0-0)) + (begin (set! a0-0 a0-0) (goto cfg-4)) + ) + (set! t9-0 format) + (set! a0-1 #t) + (set! a1-0 L144) + (set! a2-0 a0-0) + (set! a3-0 'generic-tie-interp-point) + (call! a0-1 a1-0 a2-0 a3-0) + (set! t9-1 format) + (set! a0-2 #t) + (set! a1-1 L109) + (set! a2-1 (-> a0-0 data)) + (call! a0-2 a1-1 a2-1) + (set! t9-2 format) + (set! a0-3 #t) + (set! a1-2 L121) + (set! a2-2 (the-as none (l.q a0-0))) + (call!) + (set! t9-3 (the-as none format)) + (set! a0-4 (the-as none #t)) + (set! a1-3 (the-as none L120)) + (set! a2-3 (the-as none (-> a0-0 x))) + (call!) + (set! t9-4 (the-as none format)) + (set! a0-5 (the-as none #t)) + (set! a1-4 (the-as none L119)) + (set! a2-4 (the-as none (-> a0-0 y))) + (call!) + (set! t9-5 (the-as none format)) + (set! a0-6 (the-as none #t)) + (set! a1-5 (the-as none L118)) + (set! a2-5 (the-as none (-> a0-0 z))) + (call!) + (set! t9-6 (the-as none format)) + (set! a0-7 (the-as none #t)) + (set! a1-6 (the-as none L117)) + (set! a2-6 (the-as none (-> a0-0 d0))) + (call!) + (set! t9-7 (the-as none format)) + (set! a0-8 (the-as none #t)) + (set! a1-7 (the-as none L108)) + (set! a2-7 (the-as none (-> a0-0 vtx0))) + (call!) + (set! t9-8 (the-as none format)) + (set! a0-9 (the-as none #t)) + (set! a1-8 (the-as none L107)) + (set! a2-8 (the-as none (-> a0-0 dx))) + (call!) + (set! t9-9 (the-as none format)) + (set! a0-10 (the-as none #t)) + (set! a1-9 (the-as none L106)) + (set! a2-9 (the-as none (-> a0-0 dy))) + (call!) + (set! t9-10 (the-as none format)) + (set! a0-11 (the-as none #t)) + (set! a1-10 (the-as none L105)) + (set! a2-10 (the-as none (-> a0-0 dz))) + (call!) + (set! t9-11 (the-as none format)) + (set! a0-12 (the-as none #t)) + (set! a1-11 (the-as none L104)) + (set! a2-11 (the-as none (-> a0-0 unused))) + (call!) + (set! t9-12 (the-as none format)) + (set! a0-13 (the-as none #t)) + (set! a1-12 (the-as none L103)) + (set! a2-12 (the-as none (-> a0-0 vtx1))) + (call!) + (set! t9-13 (the-as none format)) + (set! a0-14 (the-as none #t)) + (set! a1-13 (the-as none L115)) + (set! a2-13 (the-as none (-> a0-0 u))) + (call!) + (set! t9-14 (the-as none format)) + (set! a0-15 (the-as none #t)) + (set! a1-14 (the-as none L114)) + (set! a2-14 (the-as none (-> a0-0 v))) + (call!) + (set! t9-15 (the-as none format)) + (set! a0-16 (the-as none #t)) + (set! a1-15 (the-as none L113)) + (set! a2-15 (the-as none (-> a0-0 tex))) + (call!) + (set! t9-16 (the-as none format)) + (set! a0-17 (the-as none #t)) + (set! a1-16 (the-as none L112)) + (set! a2-16 (the-as none (-> a0-0 w))) + (call!) + (set! t9-17 (the-as none format)) + (set! a0-18 (the-as none #t)) + (set! a1-17 (the-as none L111)) + (set! a2-17 (the-as none (-> a0-0 d1))) + (call!) + (label cfg-4) + (set! v0-18 a0-0) + (ret-value v0-18) + ) + +;; definition of type generic-tie-ips +(deftype generic-tie-ips (structure) + ((ip generic-tie-interp-point 2 :inline) + ) + ) + +;; definition for method 3 of type generic-tie-ips +(defmethod inspect ((this generic-tie-ips)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-ips) + (format #t "~1Tip[2] @ #x~X~%" (-> this ip)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-header +(deftype generic-tie-header (structure) + ((effect uint8) + (interp-table-size uint8) + (num-bps uint8) + (num-ips uint8) + (tint-color uint32) + (index-table-offset uint16) + (kick-table-offset uint16) + (normal-table-offset uint16) + (interp-table-offset uint16) + (gsf-header gsf-header :inline) + ) + ) + +;; definition for method 3 of type generic-tie-header +(defmethod inspect ((this generic-tie-header)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-header) + (format #t "~1Teffect: ~D~%" (-> this effect)) + (format #t "~1Tinterp-table-size: ~D~%" (-> this interp-table-size)) + (format #t "~1Tnum-bps: ~D~%" (-> this num-bps)) + (format #t "~1Tnum-ips: ~D~%" (-> this num-ips)) + (format #t "~1Ttint-color: ~D~%" (-> this tint-color)) + (format #t "~1Tindex-table-offset: ~D~%" (-> this index-table-offset)) + (format #t "~1Tkick-table-offset: ~D~%" (-> this kick-table-offset)) + (format #t "~1Tnormal-table-offset: ~D~%" (-> this normal-table-offset)) + (format #t "~1Tinterp-table-offset: ~D~%" (-> this interp-table-offset)) + (format #t "~1Tgsf-header: #~%" (-> this gsf-header)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-matrix +(deftype generic-tie-matrix (structure) + ((matrix matrix :inline) + (morph vector :inline) + (fog qword :inline) + ) + ) + +;; definition for method 3 of type generic-tie-matrix +(defmethod inspect ((this generic-tie-matrix)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-matrix) + (format #t "~1Tmatrix: #~%" (-> this matrix)) + (format #t "~1Tmorph: #~%" (-> this morph)) + (format #t "~1Tfog: #~%" (-> this fog)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-normal +(deftype generic-tie-normal (structure) + ((x int8) + (y int8) + (z int8) + (dummy int8) + ) + ) + +;; definition for method 3 of type generic-tie-normal +(defmethod inspect ((this generic-tie-normal)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-normal) + (format #t "~1Tx: ~D~%" (-> this x)) + (format #t "~1Ty: ~D~%" (-> this y)) + (format #t "~1Tz: ~D~%" (-> this z)) + (format #t "~1Tdummy: ~D~%" (-> this dummy)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-control +(deftype generic-tie-control (structure) + ((ptr-palette uint32) + (ptr-shaders uint32) + (ptr-runctrl generic-tie-run-control) + (ptr-verts uint32) + (ptr-generic generic-tie-header) + (ptr-dps uint32) + (ptr-kicks uint32) + (ptr-normals uint32) + (ptr-interp uint32) + (ptr-mtxs generic-tie-matrix) + (ptr-cinds uint32) + (next-instance uint32) + (next-model uint32) + (next-is-model uint32) + (tie-type uint32) + ) + ) + +;; definition for method 3 of type generic-tie-control +(defmethod inspect ((this generic-tie-control)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-control) + (format #t "~1Tptr-palette: #x~X~%" (-> this ptr-palette)) + (format #t "~1Tptr-shaders: #x~X~%" (-> this ptr-shaders)) + (format #t "~1Tptr-runctrl: #~%" (-> this ptr-runctrl)) + (format #t "~1Tptr-verts: #x~X~%" (-> this ptr-verts)) + (format #t "~1Tptr-generic: #~%" (-> this ptr-generic)) + (format #t "~1Tptr-dps: #x~X~%" (-> this ptr-dps)) + (format #t "~1Tptr-kicks: #x~X~%" (-> this ptr-kicks)) + (format #t "~1Tptr-normals: #x~X~%" (-> this ptr-normals)) + (format #t "~1Tptr-interp: #x~X~%" (-> this ptr-interp)) + (format #t "~1Tptr-mtxs: #~%" (-> this ptr-mtxs)) + (format #t "~1Tptr-cinds: #x~X~%" (-> this ptr-cinds)) + (format #t "~1Tnext-instance: #x~X~%" (-> this next-instance)) + (format #t "~1Tnext-model: #x~X~%" (-> this next-model)) + (format #t "~1Tnext-is-model: ~D~%" (-> this next-is-model)) + (format #t "~1Ttie-type: ~D~%" (-> this tie-type)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-stats +(deftype generic-tie-stats (structure) + ((num-bps uint32) + (num-ips uint32) + (num-dps uint32) + (num-shaders uint32) + (num-models uint32) + (num-instances uint32) + (num-waits uint32) + (num-qwc uint32) + (max-qwc uint32) + ) + ) + +;; definition for method 3 of type generic-tie-stats +(defmethod inspect ((this generic-tie-stats)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-stats) + (format #t "~1Tnum-bps: ~D~%" (-> this num-bps)) + (format #t "~1Tnum-ips: ~D~%" (-> this num-ips)) + (format #t "~1Tnum-dps: ~D~%" (-> this num-dps)) + (format #t "~1Tnum-shaders: ~D~%" (-> this num-shaders)) + (format #t "~1Tnum-models: ~D~%" (-> this num-models)) + (format #t "~1Tnum-instances: ~D~%" (-> this num-instances)) + (format #t "~1Tnum-waits: ~D~%" (-> this num-waits)) + (format #t "~1Tnum-qwc: ~D~%" (-> this num-qwc)) + (format #t "~1Tmax-qwc: ~D~%" (-> this max-qwc)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-calls +(deftype generic-tie-calls (structure) + ((generic-prepare-dma-double basic) + (generic-envmap-dproc basic) + (generic-interp-dproc basic) + (generic-no-light-dproc basic) + ) + :pack-me + ) + +;; definition for method 3 of type generic-tie-calls +(defmethod inspect ((this generic-tie-calls)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-calls) + (format #t "~1Tgeneric-prepare-dma-double: ~A~%" (-> this generic-prepare-dma-double)) + (format #t "~1Tgeneric-envmap-dproc: ~A~%" (-> this generic-envmap-dproc)) + (format #t "~1Tgeneric-interp-dproc: ~A~%" (-> this generic-interp-dproc)) + (format #t "~1Tgeneric-no-light-dproc: ~A~%" (-> this generic-no-light-dproc)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-shadow +(deftype generic-tie-shadow (structure) + ((out-buf gsf-buffer) + (cur-buf uint32) + (tie-type int32) + (ptr-inst uint32) + (ptr-buf uint32) + (inst-xor int32) + (end-of-chain uint32) + (write-limit uint32) + (calls generic-tie-calls :inline) + ) + :pack-me + ) + +;; definition for method 3 of type generic-tie-shadow +(defmethod inspect ((this generic-tie-shadow)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-shadow) + (format #t "~1Tout-buf: #~%" (-> this out-buf)) + (format #t "~1Tcur-buf: #x~X~%" (-> this cur-buf)) + (format #t "~1Ttie-type: ~D~%" (-> this tie-type)) + (format #t "~1Tptr-inst: #x~X~%" (-> this ptr-inst)) + (format #t "~1Tptr-buf: #x~X~%" (-> this ptr-buf)) + (format #t "~1Tinst-xor: ~D~%" (-> this inst-xor)) + (format #t "~1Tend-of-chain: ~D~%" (-> this end-of-chain)) + (format #t "~1Twrite-limit: ~D~%" (-> this write-limit)) + (format #t "~1Tcalls: #~%" (-> this calls)) + (label cfg-4) + this + ) + +;; definition of type generic-tie-work +(deftype generic-tie-work (structure) + ((control generic-tie-control :inline) + (interp-job generic-interp-job :inline) + (shadow generic-tie-shadow :inline) + (input-a generic-tie-input :inline) + (input-b generic-tie-input :inline) + (inst-buf generic-tie-instance :inline) + (palette-buf rgba 128) + ) + ) + +;; definition for method 3 of type generic-tie-work +(defmethod inspect ((this generic-tie-work)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'generic-tie-work) + (format #t "~1Tcontrol: #~%" (-> this control)) + (format #t "~1Tinterp-job: #~%" (-> this interp-job)) + (format #t "~1Tshadow: #~%" (-> this shadow)) + (format #t "~1Tinput-a: #~%" (-> this input-a)) + (format #t "~1Tinput-b: #~%" (-> this input-b)) + (format #t "~1Tinst-buf: #~%" (-> this inst-buf)) + (format #t "~1Tpalette-buf[128] @ #x~X~%" (-> this palette-buf)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/background/tie/tie-work_REF.gc b/test/decompiler/reference/jakx/engine/gfx/background/tie/tie-work_REF.gc new file mode 100644 index 0000000000..bad62dbdfc --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/background/tie/tie-work_REF.gc @@ -0,0 +1,176 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *instance-tie-work*, type instance-tie-work +(define *instance-tie-work* (new 'static 'instance-tie-work + :wind-const (new 'static 'vector :data (new 'static 'array float 4 0.5 100.0 0.0166 -1.0)) + :constant (new 'static 'vector :data (new 'static 'array float 4 4096.0 128.0 0.0 0.0)) + :far-morph (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 256.0)) + :upload-color-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x80c6 :num #x6 :cmd (vif-cmd unpack-v4-32)) + ) + :upload-color-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #xc0cc :cmd (vif-cmd unpack-v4-8)) + ) + :upload-color-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + ) + :upload-color-ret (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ret)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + ) + :generic-color-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x3) + ) + :generic-color-1 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :generic-color-end (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id end))) + :envmap-color-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x8000 :num #x8 :cmd (vif-cmd unpack-v4-32)) + ) + :envmap-color-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #xc008 :cmd (vif-cmd unpack-v4-8)) + ) + :refl-fade-fac -0.000625 + :refl-fade-end 409600.0 + :use-etie #t + ) + ) + +;; failed to figure out what this is: +(set! (-> *instance-tie-work* upload-color-2 vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)) + +;; failed to figure out what this is: +(set! (-> *instance-tie-work* upload-color-ret vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)) + +;; definition for symbol *prototype-tie-work*, type prototype-tie-work +(define *prototype-tie-work* (new 'static 'prototype-tie-work + :upload-flushe (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id cnt)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1) + ) + :upload-palette (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x1 :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #x4346 :num #x80 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) + ) + :upload-model-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16)) + ) + :upload-model-3 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :upload-model-near-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) + ) + :upload-model-near-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-near-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x1e :cmd (vif-cmd unpack-v4-8)) + ) + :upload-model-near-3 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16)) + ) + :upload-model-near-4 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :envmap-palette (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x1 :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #x4302 :num #x80 :cmd (vif-cmd unpack-v4-8)) + ) + :envmap-shader (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 (new 'static 'vif-tag :imm #x387 :num #x5 :cmd (vif-cmd unpack-v4-32)) + ) + :upload-envmap-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #xb8 :cmd (vif-cmd base)) + :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) + ) + :upload-envmap-1 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x20 :cmd (vif-cmd offset)) + :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-envmap-2 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x20 :cmd (vif-cmd unpack-v4-16)) + ) + :upload-envmap-3 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #x84 :cmd (vif-cmd unpack-v4-8)) + ) + :upload-envmap-4 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :upload-envmap-scissor-4 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 (new 'static 'vif-tag :imm #xac :cmd (vif-cmd unpack-v4-8)) + ) + :generic-palette (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x1) + ) + :generic-model-0 (new 'static 'dma-packet + :dma (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 (new 'static 'vif-tag :imm #x2) + ) + :generic-model-1 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :generic-model-2 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :model-next (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id next))) + :clamp #x8000ff00ff00ff + ) + ) + +;; failed to figure out what this is: +(set! (-> *prototype-tie-work* upload-model-1 vif0) + (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1) + ) + +;; failed to figure out what this is: +(set! (-> *prototype-tie-work* upload-model-3 vif0) + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1) + ) + +;; failed to figure out what this is: +(set! (-> *prototype-tie-work* upload-model-near-1 vif0) + (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1) + ) + +;; failed to figure out what this is: +(set! (-> *prototype-tie-work* upload-model-near-4 vif0) + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1) + ) + +;; failed to figure out what this is: +(set! (-> *prototype-tie-work* upload-envmap-2 vif0) + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscalf) :msk #x1) + ) + +;; failed to figure out what this is: +(set! (-> *prototype-tie-work* upload-envmap-4 vif1) + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/background/wind-work_REF.gc b/test/decompiler/reference/jakx/engine/gfx/background/wind-work_REF.gc new file mode 100644 index 0000000000..cb63f676dd --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/background/wind-work_REF.gc @@ -0,0 +1,21 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *wind-work*, type wind-work +(define *wind-work* (new 'static 'wind-work + :wind-const (new 'static 'vector :data (new 'static 'array float 4 0.5 100.0 0.0166 -1.0)) + ) + ) + +;; failed to figure out what this is: +(set! (-> *wind-work* to-ptrs 0) (the-as uint (+ 8192 #x70000000))) + +;; failed to figure out what this is: +(set! (-> *wind-work* to-ptrs 1) (the-as uint (+ 4096 #x70000000))) + +;; failed to figure out what this is: +(set! (-> *wind-work* to-ptrs 2) (the-as uint (+ #x70000000 0))) + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/background/wind_REF.gc b/test/decompiler/reference/jakx/engine/gfx/background/wind_REF.gc new file mode 100644 index 0000000000..ee97fc391d --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/background/wind_REF.gc @@ -0,0 +1,48 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for function update-wind +;; WARN: Return type mismatch int vs none. +(defun update-wind ((arg0 wind-work) (arg1 (array uint8))) + "Update the wind force for this frame. + This value will be used by level-update-wind to update tie/shrub wind values." + (with-pp + (let* ((f0-1 (+ (-> arg0 wind-normal w) (rand-vu-float-range -1024.0 1024.0))) + (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0))) + ) + (set! (-> arg0 wind-normal w) f30-1) + (set! (-> arg0 wind-normal x) (cos f30-1)) + (set! (-> arg0 wind-normal z) (sin f30-1)) + ) + (+! (-> arg0 wind-time) (- (-> pp clock integral-frame-counter) (-> pp clock old-integral-frame-counter))) + (let* ((s4-0 (logand (-> arg0 wind-time) 63)) + (f0-4 (rand-vu-float-range 0.0 100.0)) + (v1-7 (/ (-> arg0 wind-time) (the-as uint 120))) + (f1-6 (* 0.008333334 (the float (mod (-> arg0 wind-time) (the-as uint 120))))) + (f2-4 (* 0.0625 (the float (-> arg1 (mod (the-as int v1-7) (-> arg1 length)))))) + (f0-5 + (* (+ (* (- (* 0.0625 (the float (-> arg1 (mod (the-as int (+ v1-7 1)) (-> arg1 length))))) f2-4) f1-6) f2-4) + f0-4 + ) + ) + ) + (set! (-> *wind-work* wind-force s4-0) f0-5) + (vector-float*! (-> *wind-work* wind-array s4-0) (-> arg0 wind-normal) f0-5) + ) + 0 + (none) + ) + ) + +;; definition for function wind-get-hashed-index +(defun wind-get-hashed-index ((arg0 vector) (arg1 wind-work)) + "Unused function, likely a leftover from Jak 1's different wind system." + (logand (+ (the int (-> arg0 x)) (the int (-> arg0 z)) (-> *wind-work* wind-time)) 63) + ) + +;; definition for function level-update-wind +;; ERROR: function was not converted to expressions. Cannot decompile. + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/blit-displays-h_REF.gc b/test/decompiler/reference/jakx/engine/gfx/blit-displays-h_REF.gc index a4e589bf21..8edd7d8c98 100644 --- a/test/decompiler/reference/jakx/engine/gfx/blit-displays-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/gfx/blit-displays-h_REF.gc @@ -90,3 +90,7 @@ ;; failed to figure out what this is: 0 + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/font-h_REF.gc b/test/decompiler/reference/jakx/engine/gfx/font-h_REF.gc new file mode 100644 index 0000000000..19d29ff465 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/font-h_REF.gc @@ -0,0 +1,1294 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type font-char-effect +(deftype font-char-effect (structure) + ((scale-x float) + (scale-y float) + (angle float) + (trans-x float) + (trans-y float) + (color vector4w :inline) + ) + ) + +;; definition for method 3 of type font-char-effect +(defmethod inspect ((this font-char-effect)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'font-char-effect) + (format #t "~1Tscale-x: ~f~%" (-> this scale-x)) + (format #t "~1Tscale-y: ~f~%" (-> this scale-y)) + (format #t "~1Tangle: ~f~%" (-> this angle)) + (format #t "~1Ttrans-x: ~f~%" (-> this trans-x)) + (format #t "~1Ttrans-y: ~f~%" (-> this trans-y)) + (format #t "~1Tcolor: #~%" (-> this color)) + (label cfg-4) + this + ) + +;; definition of type char-color +(deftype char-color (structure) + ((color rgba 4) + ) + ) + +;; definition for method 3 of type char-color +(defmethod inspect ((this char-color)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'char-color) + (format #t "~1Tcolor[4] @ #x~X~%" (-> this color)) + (label cfg-4) + this + ) + +;; definition of type font-context +(deftype font-context (basic) + ((y-spacing float) + (alpha float) + (ialpha int32) + (flags font-flags) + (origin vector :inline) + (calc-origin vector :inline) + (strip-gif vector :inline) + (calc-mat matrix :inline) + (width float) + (height float) + (meters-per-texel float) + (start-line uint32) + (scaled-width float) + (scaled-height float) + (projection float) + (scale float) + (mat matrix) + (effect-time float) + (color font-color) + (effect uint8) + (effect-color font-color) + ) + (:methods + (new (symbol type matrix int int float font-color font-flags) _type_) + (font-context-method-9 () none) + (font-context-method-10 () none) + (font-context-method-11 () none) + (font-context-method-12 () none) + (set-mat! (_type_ matrix) none) + (set-x-y! (_type_ int int) none) + (set-z! (_type_ int) none) + (set-w! (_type_ float) none) + (set-width! (_type_ int) none) + (set-height! (_type_ int) none) + (set-projection! (_type_ float) none) + (set-color! (_type_ font-color) none) + (set-flags! (_type_ font-flags) none) + (set-start-line! (_type_ float) none) + (set-scale! (_type_ float) none) + (set-alpha! (_type_ float) none) + (set-y-spacing! (_type_ float) none) + (set-meters-per-texel! (_type_ float) none) + (set-effect! (_type_ uint) none) + (set-effect-color! (_type_ font-color) none) + (set-effect-time! (_type_ float) none) + ) + ) + +;; definition for method 3 of type font-context +(defmethod inspect ((this font-context)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Ty-spacing: ~f~%" (-> this y-spacing)) + (format #t "~1Talpha: ~f~%" (-> this alpha)) + (format #t "~1Tialpha: ~D~%" (-> this ialpha)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Torigin: #~%" (-> this origin)) + (format #t "~1Tcalc-origin: #~%" (-> this calc-origin)) + (format #t "~1Tstrip-gif: #~%" (-> this strip-gif)) + (format #t "~1Tcalc-mat: #~%" (-> this calc-mat)) + (format #t "~1Twidth: ~f~%" (-> this width)) + (format #t "~1Theight: ~f~%" (-> this height)) + (format #t "~1Tmeters-per-texel: ~f~%" (-> this meters-per-texel)) + (format #t "~1Tstart-line: ~D~%" (-> this start-line)) + (format #t "~1Tscaled-width: ~f~%" (-> this scaled-width)) + (format #t "~1Tscaled-height: ~f~%" (-> this scaled-height)) + (format #t "~1Tprojection: ~f~%" (-> this projection)) + (format #t "~1Tscale: ~f~%" (-> this scale)) + (format #t "~1Tmat: #~%" (-> this mat)) + (format #t "~1Teffect-time: ~f~%" (-> this effect-time)) + (format #t "~1Tcolor: ~D~%" (-> this color)) + (format #t "~1Teffect: ~D~%" (-> this effect)) + (format #t "~1Teffect-color: ~D~%" (-> this effect-color)) + (label cfg-4) + this + ) + +;; definition for method 13 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-mat! ((this font-context) (arg0 matrix)) + (set! (-> this mat) arg0) + (none) + ) + +;; definition for method 14 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-x-y! ((this font-context) (arg0 int) (arg1 int)) + (set! (-> this origin x) (the float arg0)) + (set! (-> this origin y) (the float arg1)) + (none) + ) + +;; definition for method 15 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-z! ((this font-context) (arg0 int)) + (set! (-> this origin z) (the float arg0)) + (none) + ) + +;; definition for method 16 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-w! ((this font-context) (arg0 float)) + (set! (-> this origin w) arg0) + (none) + ) + +;; definition for method 17 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-width! ((this font-context) (arg0 int)) + (set! (-> this width) (the float arg0)) + (none) + ) + +;; definition for method 18 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-height! ((this font-context) (arg0 int)) + (set! (-> this height) (the float arg0)) + (none) + ) + +;; definition for method 19 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-projection! ((this font-context) (arg0 float)) + (set! (-> this projection) arg0) + (none) + ) + +;; definition for method 20 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-color! ((this font-context) (arg0 font-color)) + (set! (-> this color) arg0) + (none) + ) + +;; definition for method 21 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-flags! ((this font-context) (arg0 font-flags)) + (set! (-> this flags) arg0) + (none) + ) + +;; definition for method 22 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-start-line! ((this font-context) (arg0 float)) + (set! (-> this start-line) (the-as uint arg0)) + (none) + ) + +;; definition for method 23 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-scale! ((this font-context) (arg0 float)) + (set! (-> this scale) arg0) + (none) + ) + +;; definition for method 24 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-alpha! ((this font-context) (arg0 float)) + (set! (-> this alpha) arg0) + (none) + ) + +;; definition for method 25 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-y-spacing! ((this font-context) (arg0 float)) + (set! (-> this y-spacing) arg0) + (none) + ) + +;; definition for method 26 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-meters-per-texel! ((this font-context) (arg0 float)) + (set! (-> this meters-per-texel) arg0) + (none) + ) + +;; definition for method 27 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-effect! ((this font-context) (arg0 uint)) + (set! (-> this effect) arg0) + (none) + ) + +;; definition for method 28 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-effect-color! ((this font-context) (arg0 font-color)) + (set! (-> this effect-color) arg0) + (none) + ) + +;; definition for method 29 of type font-context +;; WARN: Return type mismatch font-context vs none. +(defmethod set-effect-time! ((this font-context) (arg0 float)) + (set! (-> this effect-time) arg0) + (none) + ) + +;; definition for method 0 of type font-context +(defmethod new font-context ((allocation symbol) + (type-to-make type) + (arg0 matrix) + (arg1 int) + (arg2 int) + (arg3 float) + (arg4 font-color) + (arg5 font-flags) + ) + (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> v0-0 flags) arg5) + (set! (-> v0-0 mat) arg0) + (let ((v1-4 v0-0)) + (set! (-> v1-4 origin x) (the float arg1)) + (set! (-> v1-4 origin y) (the float arg2)) + ) + (let ((v1-5 v0-0)) + (set! (-> v1-5 origin z) arg3) + ) + (let ((v1-6 v0-0)) + (set! (-> v1-6 origin w) 1.0) + ) + (set-width! v0-0 512) + (set-height! v0-0 416) + (let ((v1-9 v0-0)) + (set! (-> v1-9 projection) 1.0) + ) + (set! (-> v0-0 color) arg4) + (let ((a0-5 v0-0)) + (set! (-> a0-5 start-line) (the-as uint 0)) + ) + (set-scale! v0-0 1.0) + (let ((v1-13 v0-0)) + (set! (-> v1-13 alpha) 1.0) + ) + (let ((v1-14 v0-0)) + (set! (-> v1-14 y-spacing) 32.0) + ) + (let ((v1-15 v0-0)) + (set! (-> v1-15 meters-per-texel) 200.0) + ) + (let ((a0-10 v0-0)) + (set! (-> a0-10 effect) (the-as uint 0)) + ) + (let ((a0-11 v0-0)) + (set! (-> a0-11 effect-color) (font-color default)) + ) + (let ((v1-18 v0-0)) + (set! (-> v1-18 effect-time) (the float 0.0)) + ) + v0-0 + ) + ) + +;; definition of type char-packet +(deftype char-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + (color0 vector :inline) + (st0 vector :inline) + (pos0 vector :inline) + (st1 vector :inline) + (pos1 vector :inline) + (color2 vector :inline) + (st2 vector :inline) + (pos2 vector :inline) + (st3 vector :inline) + (pos3 vector :inline) + ) + ) + +;; definition for method 3 of type char-packet +(defmethod inspect ((this char-packet)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'char-packet) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Tfont: #~%" (-> this font)) + (format #t "~1Tcolor0: #~%" (-> this color0)) + (format #t "~1Tst0: #~%" (-> this st0)) + (format #t "~1Tpos0: #~%" (-> this pos0)) + (format #t "~1Tst1: #~%" (-> this st1)) + (format #t "~1Tpos1: #~%" (-> this pos1)) + (format #t "~1Tcolor2: #~%" (-> this color2)) + (format #t "~1Tst2: #~%" (-> this st2)) + (format #t "~1Tpos2: #~%" (-> this pos2)) + (format #t "~1Tst3: #~%" (-> this st3)) + (format #t "~1Tpos3: #~%" (-> this pos3)) + (label cfg-4) + this + ) + +;; definition of type char-ad-packet +(deftype char-ad-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + ) + ) + +;; definition for method 3 of type char-ad-packet +(defmethod inspect ((this char-ad-packet)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'char-ad-packet) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Tfont: #~%" (-> this font)) + (label cfg-4) + this + ) + +;; definition of type char-2d-packet +(deftype char-2d-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + (color vector :inline) + (st0 vector :inline) + (pos0 vector :inline) + (st1 vector :inline) + (pos1 vector :inline) + ) + ) + +;; definition for method 3 of type char-2d-packet +(defmethod inspect ((this char-2d-packet)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'char-2d-packet) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Tfont: #~%" (-> this font)) + (format #t "~1Tcolor: #~%" (-> this color)) + (format #t "~1Tst0: #~%" (-> this st0)) + (format #t "~1Tpos0: #~%" (-> this pos0)) + (format #t "~1Tst1: #~%" (-> this st1)) + (format #t "~1Tpos1: #~%" (-> this pos1)) + (label cfg-4) + this + ) + +;; definition of type char-2d-packet-no-packed +(deftype char-2d-packet-no-packed (structure) + ((tag dma-gif-packet :inline) + (color0 uint64) + (st0 uint64) + (pos0 uint64) + (st1 uint64) + (pos1 uint64) + (color1 uint64) + ) + ) + +;; definition for method 3 of type char-2d-packet-no-packed +(defmethod inspect ((this char-2d-packet-no-packed)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'char-2d-packet-no-packed) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Tcolor0: ~D~%" (-> this color0)) + (format #t "~1Tst0: ~D~%" (-> this st0)) + (format #t "~1Tpos0: ~D~%" (-> this pos0)) + (format #t "~1Tst1: ~D~%" (-> this st1)) + (format #t "~1Tpos1: ~D~%" (-> this pos1)) + (format #t "~1Tcolor1: ~D~%" (-> this color1)) + (label cfg-4) + this + ) + +;; definition of type char-packet-no-packed +(deftype char-packet-no-packed (structure) + ((tag dma-gif-packet :inline) + (prim uint64) + (color0 uint64) + (st0 uint64) + (pos0 uint64) + (st1 uint64) + (pos1 uint64) + (st2 uint64) + (pos2 uint64) + (st3 uint64) + (pos3 uint64) + ) + ) + +;; definition for method 3 of type char-packet-no-packed +(defmethod inspect ((this char-packet-no-packed)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'char-packet-no-packed) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Tprim: ~D~%" (-> this prim)) + (format #t "~1Tcolor0: ~D~%" (-> this color0)) + (format #t "~1Tst0: ~D~%" (-> this st0)) + (format #t "~1Tpos0: ~D~%" (-> this pos0)) + (format #t "~1Tst1: ~D~%" (-> this st1)) + (format #t "~1Tpos1: ~D~%" (-> this pos1)) + (format #t "~1Tst2: ~D~%" (-> this st2)) + (format #t "~1Tpos2: ~D~%" (-> this pos2)) + (format #t "~1Tst3: ~D~%" (-> this st3)) + (format #t "~1Tpos3: ~D~%" (-> this pos3)) + (label cfg-4) + this + ) + +;; definition of type char-3d-packet +(deftype char-3d-packet (structure) + ((tag dma-gif-packet :inline) + (font dma-packet :inline) + (color vector :inline) + (st0 vector :inline) + (pos0 vector :inline) + (st1 vector :inline) + (pos1 vector :inline) + (color2 vector :inline) + (st2 vector :inline) + (pos2 vector :inline) + (st3 vector :inline) + (pos3 vector :inline) + ) + ) + +;; definition for method 3 of type char-3d-packet +(defmethod inspect ((this char-3d-packet)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'char-3d-packet) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Tfont: #~%" (-> this font)) + (format #t "~1Tcolor: #~%" (-> this color)) + (format #t "~1Tst0: #~%" (-> this st0)) + (format #t "~1Tpos0: #~%" (-> this pos0)) + (format #t "~1Tst1: #~%" (-> this st1)) + (format #t "~1Tpos1: #~%" (-> this pos1)) + (format #t "~1Tcolor2: #~%" (-> this color2)) + (format #t "~1Tst2: #~%" (-> this st2)) + (format #t "~1Tpos2: #~%" (-> this pos2)) + (format #t "~1Tst3: #~%" (-> this st3)) + (format #t "~1Tpos3: #~%" (-> this pos3)) + (label cfg-4) + this + ) + +;; definition of type font-work +(deftype font-work (structure) + ((char-2d-tmpl dma-gif-packet :inline) + (char-2d-no-packed-tmpl dma-gif-packet :inline) + (char-3d-tmpl dma-gif-packet :inline) + (char-ad-tmpl dma-gif-packet :inline) + (char-no-packed-tmpl dma-gif-packet :inline) + (char-tmpl dma-gif-packet :inline) + (small-font-0-tmpl uint64 2) + (small-font-1-tmpl uint64 2) + (small-font-2-tmpl uint64 2) + (small-font-3-tmpl uint64 2) + (large-font-0-tmpl uint64 2) + (large-font-1-tmpl uint64 2) + (large-font-2-tmpl uint64 2) + (large-font-3-tmpl uint64 2) + (size1-small vector :inline) + (size2-small vector :inline) + (size3-small vector :inline) + (size1-large vector :inline) + (size2-large vector :inline) + (size3-large vector :inline) + (size-st1 vector :inline) + (size-st2 vector :inline) + (size-st3 vector :inline) + (origin-right vector :inline) + (origin-center vector :inline) + (save vector :inline) + (save-color vector :inline) + (save-color2 vector :inline) + (current-color vector4w :inline) + (current-colorq uint64 :overlay-at (-> current-color data 0)) + (current-color2 vector4w :inline) + (current-color2q uint64 :overlay-at (-> current-color2 data 0)) + (effect-colors vector4w 2 :inline) + (color-shadow vector4w :inline) + (color-outline vector4w :inline) + (justify vector 256 :inline) + (hvdf-offset vector :inline) + (hvdf-shadow vector :inline) + (hvdf-outline vector 4 :inline) + (hvdf-outline0 vector :inline :overlay-at (-> hvdf-outline 0)) + (hvdf-outline1 vector :inline :overlay-at (-> hvdf-outline 1)) + (hvdf-outline2 vector :inline :overlay-at (-> hvdf-outline 2)) + (hvdf-outline3 vector :inline :overlay-at (-> hvdf-outline 3)) + (save-pos0 vector :inline) + (save-pos1 vector :inline) + (save-pos2 vector :inline) + (save-pos3 vector :inline) + (color-table char-color 74 :inline) + (current-font-0-tmpl uint64 2) + (current-font-1-tmpl uint64 2) + (current-font-2-tmpl uint64 2) + (current-font-3-tmpl uint64 2) + (screen-min vector2w :inline) + (screen-max vector2w :inline) + (last-color uint8) + (save-last-color uint8) + (buf basic) + (str-ptr uint32) + ) + ) + +;; definition for method 3 of type font-work +(defmethod inspect ((this font-work)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'font-work) + (format #t "~1Tchar-2d-tmpl: #~%" (-> this char-2d-tmpl)) + (format #t "~1Tchar-2d-no-packed-tmpl: #~%" (-> this char-2d-no-packed-tmpl)) + (format #t "~1Tchar-3d-tmpl: #~%" (-> this char-3d-tmpl)) + (format #t "~1Tchar-ad-tmpl: #~%" (-> this char-ad-tmpl)) + (format #t "~1Tchar-no-packed-tmpl: #~%" (-> this char-no-packed-tmpl)) + (format #t "~1Tchar-tmpl: #~%" (-> this char-tmpl)) + (format #t "~1Tsmall-font-0-tmpl[2] @ #x~X~%" (-> this small-font-0-tmpl)) + (format #t "~1Tsmall-font-1-tmpl[2] @ #x~X~%" (-> this small-font-1-tmpl)) + (format #t "~1Tsmall-font-2-tmpl[2] @ #x~X~%" (-> this small-font-2-tmpl)) + (format #t "~1Tsmall-font-3-tmpl[2] @ #x~X~%" (-> this small-font-3-tmpl)) + (format #t "~1Tlarge-font-0-tmpl[2] @ #x~X~%" (-> this large-font-0-tmpl)) + (format #t "~1Tlarge-font-1-tmpl[2] @ #x~X~%" (-> this large-font-1-tmpl)) + (format #t "~1Tlarge-font-2-tmpl[2] @ #x~X~%" (-> this large-font-2-tmpl)) + (format #t "~1Tlarge-font-3-tmpl[2] @ #x~X~%" (-> this large-font-3-tmpl)) + (format #t "~1Tsize1-small: #~%" (-> this size1-small)) + (format #t "~1Tsize2-small: #~%" (-> this size2-small)) + (format #t "~1Tsize3-small: #~%" (-> this size3-small)) + (format #t "~1Tsize1-large: #~%" (-> this size1-large)) + (format #t "~1Tsize2-large: #~%" (-> this size2-large)) + (format #t "~1Tsize3-large: #~%" (-> this size3-large)) + (format #t "~1Tsize-st1: #~%" (-> this size-st1)) + (format #t "~1Tsize-st2: #~%" (-> this size-st2)) + (format #t "~1Tsize-st3: #~%" (-> this size-st3)) + (format #t "~1Torigin-right: #~%" (-> this origin-right)) + (format #t "~1Torigin-center: #~%" (-> this origin-center)) + (format #t "~1Tsave: #~%" (-> this save)) + (format #t "~1Tsave-color: #~%" (-> this save-color)) + (format #t "~1Tsave-color2: #~%" (-> this save-color2)) + (format #t "~1Tcurrent-color: #~%" (-> this current-color)) + (format #t "~1Tcurrent-colorq: ~D~%" (-> this current-colorq)) + (format #t "~1Tcurrent-color2: #~%" (-> this current-color2)) + (format #t "~1Tcurrent-color2q: ~D~%" (-> this current-color2q)) + (format #t "~1Teffect-colors[2] @ #x~X~%" (-> this effect-colors)) + (format #t "~1Tcolor-shadow: #~%" (-> this color-shadow)) + (format #t "~1Tcolor-outline: #~%" (-> this color-outline)) + (format #t "~1Tjustify[256] @ #x~X~%" (-> this justify)) + (format #t "~1Thvdf-offset: #~%" (-> this hvdf-offset)) + (format #t "~1Thvdf-shadow: #~%" (-> this hvdf-shadow)) + (format #t "~1Thvdf-outline[4] @ #x~X~%" (-> this hvdf-outline)) + (format #t "~1Thvdf-outline0: #~%" (-> this hvdf-outline)) + (format #t "~1Thvdf-outline1: #~%" (-> this hvdf-outline1)) + (format #t "~1Thvdf-outline2: #~%" (-> this hvdf-outline2)) + (format #t "~1Thvdf-outline3: #~%" (-> this hvdf-outline3)) + (format #t "~1Tsave-pos0: #~%" (-> this save-pos0)) + (format #t "~1Tsave-pos1: #~%" (-> this save-pos1)) + (format #t "~1Tsave-pos2: #~%" (-> this save-pos2)) + (format #t "~1Tsave-pos3: #~%" (-> this save-pos3)) + (format #t "~1Tcolor-table[74] @ #x~X~%" (-> this color-table)) + (format #t "~1Tcurrent-font-0-tmpl[2] @ #x~X~%" (-> this current-font-0-tmpl)) + (format #t "~1Tcurrent-font-1-tmpl[2] @ #x~X~%" (-> this current-font-1-tmpl)) + (format #t "~1Tcurrent-font-2-tmpl[2] @ #x~X~%" (-> this current-font-2-tmpl)) + (format #t "~1Tcurrent-font-3-tmpl[2] @ #x~X~%" (-> this current-font-3-tmpl)) + (format #t "~1Tscreen-min: #~%" (-> this screen-min)) + (format #t "~1Tscreen-max: #~%" (-> this screen-max)) + (format #t "~1Tlast-color: ~D~%" (-> this last-color)) + (format #t "~1Tsave-last-color: ~D~%" (-> this save-last-color)) + (format #t "~1Tbuf: ~A~%" (-> this buf)) + (format #t "~1Tstr-ptr: ~A~%" (-> this str-ptr)) + (label cfg-4) + this + ) + +;; definition for symbol *font-work*, type font-work +(define *font-work* + (new 'static 'font-work + :char-2d-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x602b400000008001 #x52521e) + ) + :char-2d-no-packed-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x642f400000008001 #x7f52521) + ) + :char-3d-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #xc :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #xc :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #xb02e400000008001 #x5252152521e) + ) + :char-ad-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x1000400000008001 #xe) + ) + :char-no-packed-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #xa42e400000008001 #x5252525210) + ) + :char-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #xc :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #xc :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #xb02e400000008001 #x5252152521e) + ) + :small-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6) + :small-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6) + :small-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6) + :small-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6) + :large-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6) + :size1-small (new 'static 'vector :data (new 'static 'array float 4 12.0 0.0 0.0 0.5)) + :size2-small (new 'static 'vector :data (new 'static 'array float 4 0.0 14.857 0.0 8.0)) + :size3-small (new 'static 'vector :data (new 'static 'array float 4 12.0 14.857 0.0 16.0)) + :size1-large (new 'static 'vector :data (new 'static 'array float 4 24.0 0.0 0.0 1.0)) + :size2-large (new 'static 'vector :data (new 'static 'array float 4 0.0 29.714 0.0 24.0)) + :size3-large (new 'static 'vector :data (new 'static 'array float 4 24.0 29.714 0.0 32.0)) + :size-st1 (new 'static 'vector :data (new 'static 'array float 4 0.08985 0.0 0.0 0.5)) + :size-st2 (new 'static 'vector :data (new 'static 'array float 4 0.0 0.030761719 0.0 0.5)) + :size-st3 (new 'static 'vector :data (new 'static 'array float 4 0.08985 0.030761719 0.0 0.5)) + :color-shadow (new 'static 'vector4w :w #x80) + :color-table (new 'static 'inline-array char-color 74 + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x43 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x15 :a #x80) + (new 'static 'rgba :r #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x4e :b #x1 :a #x80) + (new 'static 'rgba :r #x70 :g #x20 :b #x1 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7b :g #x7f :b #x14 :a #x80) + (new 'static 'rgba :r #x70 :g #x53 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x1e :g #x80 :a #x80) + (new 'static 'rgba :r #x6 :g #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x22 :g #x22 :b #x69 :a #x80) + (new 'static 'rgba :r #x15 :g #x15 :b #x51 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x54 :a #x80) + (new 'static 'rgba :r #x80 :g #x54 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80) + (new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80) + (new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80) + (new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80) + (new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80) + (new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80) + (new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80) + (new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80) + (new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80) + (new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80) + (new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80) + (new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80) + (new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80) + (new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80) + (new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80) + (new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80) + (new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80) + (new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x9a :g #x4d :a #x60) + (new 'static 'rgba :r #x9a :g #x4d :a #x60) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :a #x80) + (new 'static 'rgba :r #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80) + (new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :b #x1 :a #x80) + (new 'static 'rgba :b #x1 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80) + (new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x39 :b #x67 :a #x80) + (new 'static 'rgba :g #x39 :b #x67 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x7c :a #x80) + (new 'static 'rgba :r #x7c :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x37 :g #x37 :b #x37 :a #x80) + (new 'static 'rgba :r #x37 :g #x37 :b #x37 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x28 :b #x50 :a #x80) + (new 'static 'rgba :r #x28 :b #x50 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x86 :g #x54 :b #x5 :a #x80) + (new 'static 'rgba :r #x86 :g #x54 :b #x5 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x69 :g #x69 :b #x49 :a #x80) + (new 'static 'rgba :r #x69 :g #x69 :b #x49 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x87 :g #x69 :a #x80) + (new 'static 'rgba :r #x87 :g #x69 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x70 :g #x50 :a #x80) + (new 'static 'rgba :r #x20 :g #x12 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80) + (new 'static 'rgba :g #x10 :b #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x60 :g #x60 :b #x30 :a #x80) + (new 'static 'rgba :r #x30 :g #x30 :a #x80) + (new 'static 'rgba :r #x25 :g #x15 :b #x15 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x40 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x74 :g #x74 :b #x80 :a #x80) + (new 'static 'rgba :r #x4 :g #x4 :b #x58 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x74 :g #x74 :b #x80 :a #x80) + (new 'static 'rgba :r #x24 :g #x24 :b #x48 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :a #x80) + (new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x32 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x20 :g #x70 :b #x30 :a #x80) + (new 'static 'rgba :r #x60 :g #x80 :b #x60 :a #x80) + (new 'static 'rgba :g #x20 :b #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x50 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x5a :g #xe :b #x5 :a #x80) + (new 'static 'rgba :r #x80 :g #x7a :b #x31 :a #x80) + (new 'static 'rgba :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x80 :g #x5e :a #x80) + (new 'static 'rgba :r #x80 :g #x14 :a #x80) + (new 'static 'rgba :r #x80 :g #x34 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x50 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :b #x50) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x20 :a #x80) + (new 'static 'rgba :r #x80 :g #x20 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :b #x20 :a #x80) + (new 'static 'rgba :g #x20 :b #x80 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :r #x70 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x50 :g #x30 :b #x30 :a #x80) + (new 'static 'rgba :r #x20 :a #x80) + (new 'static 'rgba) + ) + ) + (new 'static 'char-color :color (new 'static 'array rgba 4 + (new 'static 'rgba :g #x7f :b #x7e :a #x80) + (new 'static 'rgba :g #x40 :b #x5f :a #x80) + (new 'static 'rgba :a #x80) + (new 'static 'rgba) + ) + ) + ) + ) + ) + +;; definition for function font-set-tex0 +;; WARN: Return type mismatch int vs none. +(defun font-set-tex0 ((arg0 (pointer gs-tex0)) (arg1 texture) (arg2 int) (arg3 int) (arg4 int)) + (set! (-> arg0 0) (new 'static 'gs-tex0 + :tcc #x1 + :cld #x1 + :cbp arg4 + :th (+ (log2 (+ (-> arg1 h) -1)) 1) + :tw (log2 (-> arg1 w)) + :tbw (-> arg1 width 0) + :tbp0 (/ arg2 64) + :psm arg3 + ) + ) + (none) + ) + +;; definition for function set-font-color +(defun set-font-color ((arg0 font-color) (arg1 rgba) (arg2 rgba) (arg3 rgba) (arg4 rgba)) + (set! (-> *font-work* color-table arg0 color 0) arg1) + (set! (-> *font-work* color-table arg0 color 1) arg2) + (set! (-> *font-work* color-table arg0 color 2) arg3) + 0 + ) + +;; definition for symbol *font-default-matrix*, type matrix +(define *font-default-matrix* + (new 'static 'matrix + :rvec (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 0.0)) + :uvec (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 0.0)) + :fvec (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.0)) + :trans (new 'static 'vector :data (new 'static 'array float 4 -256.0 -208.0 0.0 1.0)) + ) + ) + +;; definition for symbol *font-default-matrix-3d*, type matrix +(define *font-default-matrix-3d* (new 'static 'matrix + :rvec (new 'static 'vector :data (new 'static 'array float 4 1.0 0.0 0.0 0.0)) + :uvec (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 0.0)) + :fvec (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 1.0 0.0)) + :trans (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 1.0)) + ) + ) + +;; definition for symbol *font-context*, type font-context +(define *font-context* (new + 'global + 'font-context + *font-default-matrix* + 0 + 0 + 8396850.0 + (font-color default) + (font-flags shadow kerning) + ) + ) + +;; definition for symbol *font-context-3d*, type font-context +(define *font-context-3d* (new + 'global + 'font-context + *font-default-matrix-3d* + 0 + 0 + 0.0 + (font-color default) + (font-flags shadow kerning ff9) + ) + ) + +;; definition for symbol *font-char-effect*, type font-char-effect +(define *font-char-effect* (the-as font-char-effect (malloc 'global 6144))) diff --git a/test/decompiler/reference/jakx/engine/gfx/foreground/merc/emerc-vu1_REF.gc b/test/decompiler/reference/jakx/engine/gfx/foreground/merc/emerc-vu1_REF.gc new file mode 100644 index 0000000000..17225ac1a1 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/foreground/merc/emerc-vu1_REF.gc @@ -0,0 +1,9 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol emerc-vu1-block, type vu-function +(define emerc-vu1-block (new 'static 'vu-function :length #x56b :qlength #x2b6)) + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/foreground/merc/merc-vu1_REF.gc b/test/decompiler/reference/jakx/engine/gfx/foreground/merc/merc-vu1_REF.gc new file mode 100644 index 0000000000..3d06642913 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/foreground/merc/merc-vu1_REF.gc @@ -0,0 +1,9 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol merc-vu1-block, type vu-function +(define merc-vu1-block (new 'static 'vu-function :length #x7e5 :qlength #x3f3)) + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/generic/generic-vu0_REF.gc b/test/decompiler/reference/jakx/engine/gfx/generic/generic-vu0_REF.gc new file mode 100644 index 0000000000..38b1d2bd08 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/generic/generic-vu0_REF.gc @@ -0,0 +1,9 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol generic-vu0-block, type vu-function +(define generic-vu0-block (new 'static 'vu-function :length #x127 :qlength #x94)) + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/hw/gs_REF.gc b/test/decompiler/reference/jakx/engine/gfx/hw/gs_REF.gc index e1c7cef0c4..a3056830fc 100644 --- a/test/decompiler/reference/jakx/engine/gfx/hw/gs_REF.gc +++ b/test/decompiler/reference/jakx/engine/gfx/hw/gs_REF.gc @@ -205,19 +205,67 @@ It is missing the SIGLBLID/LABELID register at 4224 (useless anyway?)" this ) -;; type gs-frame is defined here, but it is unknown to the decompiler +;; definition of type gs-frame +(deftype gs-frame (uint64) + ((fbp uint16 :offset 0 :size 9) + (fbw uint8 :offset 16 :size 6) + (psm gs-psm :offset 24 :size 6) + (fbmsk uint32 :offset 32 :size 32) + ) + ) -;; type gs-zbuf is defined here, but it is unknown to the decompiler +;; definition of type gs-zbuf +(deftype gs-zbuf (uint64) + "The GS's ZBUF registers make various settings regarding Z buffer." + ((zbp uint16 :offset 0 :size 9) + (psm gs-psm :offset 24 :size 4) + (zmsk uint8 :offset 32 :size 1) + ) + ) -;; type gs-xy-offset is defined here, but it is unknown to the decompiler +;; definition of type gs-xy-offset +(deftype gs-xy-offset (uint64) + "The GS's XYOFFSET registers set the offset value for converting from the primitive coordinate +system to the window coordinate system." + ((ofx uint16 :offset 0 :size 16) + (ofy uint16 :offset 32 :size 16) + ) + ) -;; type gs-scissor is defined here, but it is unknown to the decompiler +;; definition of type gs-scissor +(deftype gs-scissor (uint64) + "The GS's SCISSOR registers specify the scissoring area. The coordinate values for +the upper-left/lower-right points of the enabled drawing area are specified by the window +coordinate system." + ((scax0 uint16 :offset 0 :size 11) + (scax1 uint16 :offset 16 :size 11) + (scay0 uint16 :offset 32 :size 11) + (scay1 uint16 :offset 48 :size 11) + ) + ) -;; type gs-prmode-cont is defined here, but it is unknown to the decompiler +;; definition of type gs-prmode-cont +(deftype gs-prmode-cont (uint64) + "The GS's PRMODECONT register sets whether to use primitive attributes (IIP, TME, FGE, ABE, +AA1, FST, CTXT, FIX) specified by the PRMODE register or the PRIM register." + ((ac uint8 :offset 0 :size 1) + ) + ) -;; type gs-color-clamp is defined here, but it is unknown to the decompiler +;; definition of type gs-color-clamp +(deftype gs-color-clamp (uint64) + "The GS's COLCLAMP register stores settings as to whether clamping for the RGB value of the +pixel is performed." + ((clamp uint8 :offset 0 :size 1) + ) + ) -;; type gs-dthe is defined here, but it is unknown to the decompiler +;; definition of type gs-dthe +(deftype gs-dthe (uint64) + "The GS's DTHE register stores settings for dithering (performed/not performed)." + ((dthe uint8 :offset 0 :size 1) + ) + ) ;; definition of type gs-test (deftype gs-test (uint64) diff --git a/test/decompiler/reference/jakx/engine/gfx/mood/mood-tables2_REF.gc b/test/decompiler/reference/jakx/engine/gfx/mood/mood-tables2_REF.gc new file mode 100644 index 0000000000..e057e56a70 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/mood/mood-tables2_REF.gc @@ -0,0 +1,428 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) + +;; definition for symbol *override-mood-color-table*, type mood-color-table +(define *override-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.375 1.157 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.625 0.553 0.725 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.473 1.337 1.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.527 0.652 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.473 1.348 1.15 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.527 0.652 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.473 1.337 1.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.527 0.652 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5 1.148 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5 0.562 0.75 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.05 0.149 0.375 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.35 0.451 0.625 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.35 0.5 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3 0.35 0.5 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.575 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3 0.425 0.5 1.0)) + ) + ) + ) + ) + +;; definition for symbol *override-mood-fog-table*, type mood-fog-table +(define *override-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 128.0 180.0 243.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.0 32.0 100.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 24.0 64.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 56.0 72.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3690496.0 255.0 64.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for function init-override-table +;; WARN: Return type mismatch pointer vs none. +(defun init-override-table ((arg0 mood-table)) + (set! (-> arg0 mood-fog-table) (new 'debug 'mood-fog-table)) + (set! (-> arg0 mood-color-table) (new 'debug 'mood-color-table)) + (set! (-> arg0 mood-channel-group) *no-cloud-mood-channel-group*) + (set! (-> arg0 mood-direction-table) *mood-direction-table*) + (set! (-> arg0 mood-sky-table) *mood-sky-table*) + (set! (-> arg0 mood-interp-table) *mood-interp-table*) + (mem-copy! (the-as pointer (-> arg0 mood-fog-table)) (the-as pointer *no-cloud-clear-mood-fog-table*) 384) + (mem-copy! (the-as pointer (-> arg0 mood-color-table)) (the-as pointer *no-cloud-mood-color-table*) 256) + (none) + ) + +;; definition for symbol *override-table*, type mood-table +(define *override-table* (new 'static 'mood-table)) + +;; failed to figure out what this is: +(init-override-table *override-table*) + +;; definition for function print-mood-tables +;; WARN: Return type mismatch object vs none. +(defun print-mood-tables () + (mem-copy! + (the-as pointer (-> *override-table* mood-fog-table)) + (the-as pointer *override-mood-fog-table*) + 384 + ) + (mem-copy! + (the-as pointer (-> *override-table* mood-color-table)) + (the-as pointer *override-mood-color-table*) + 256 + ) + (dotimes (v1-2 8) + (vector-float*! + (-> *override-table* mood-fog-table data v1-2 fog-color) + (-> *override-table* mood-fog-table data v1-2 fog-color) + (-> *override-table* mood-fog-table data v1-2 fog-color w) + ) + (vector-float*! + (-> *override-table* mood-color-table data v1-2 lgt-color) + (-> *override-table* mood-color-table data v1-2 lgt-color) + (-> *override-table* mood-color-table data v1-2 lgt-color w) + ) + (vector-float*! + (the-as vector (+ (the-as uint (-> *override-table* mood-color-table data 0 amb-color)) (* v1-2 32))) + (the-as vector (+ (the-as uint (-> *override-table* mood-color-table data 0 amb-color)) (* v1-2 32))) + (-> *override-table* mood-color-table data v1-2 amb-color w) + ) + (set! (-> *override-table* mood-fog-table data v1-2 fog-color w) 128.0) + (set! (-> *override-table* mood-color-table data v1-2 lgt-color w) 0.0) + (set! (-> *override-table* mood-color-table data v1-2 amb-color w) 1.0) + ) + (format 0 "(define *override-mood-color-table*~%") + (format 0 " (new 'static 'mood-color-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-color 0~%") + (dotimes (gp-0 8) + (format 0 " (new 'static 'mood-color") + (let ((v1-5 gp-0)) + (cond + ((zero? v1-5) + (format 0 " ; sun rise~%") + ) + ((= v1-5 1) + (format 0 " ; morning~%") + ) + ((= v1-5 2) + (format 0 " ; noon~%") + ) + ((= v1-5 3) + (format 0 " ; afternoon~%") + ) + ((= v1-5 4) + (format 0 " ; sunset~%") + ) + ((= v1-5 5) + (format 0 " ; twilight~%") + ) + ((= v1-5 6) + (format 0 " ; evening~%") + ) + ((= v1-5 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :lgt-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-0 lgt-color x) + (-> *override-table* mood-color-table data gp-0 lgt-color y) + (-> *override-table* mood-color-table data gp-0 lgt-color z) + (-> *override-table* mood-color-table data gp-0 lgt-color w) + ) + (format + 0 + " :amb-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-0 amb-color x) + (-> *override-table* mood-color-table data gp-0 amb-color y) + (-> *override-table* mood-color-table data gp-0 amb-color z) + (-> *override-table* mood-color-table data gp-0 amb-color w) + ) + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (format 0 "(define *override-mood-fog-table*~%") + (format 0 " (new 'static 'mood-fog-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-fog 0~%") + (dotimes (gp-1 8) + (format 0 " (new 'static 'mood-fog") + (let ((v1-33 gp-1)) + (cond + ((zero? v1-33) + (format 0 " ; sun rise~%") + ) + ((= v1-33 1) + (format 0 " ; morning~%") + ) + ((= v1-33 2) + (format 0 " ; noon~%") + ) + ((= v1-33 3) + (format 0 " ; afternoon~%") + ) + ((= v1-33 4) + (format 0 " ; sunset~%") + ) + ((= v1-33 5) + (format 0 " ; twilight~%") + ) + ((= v1-33 6) + (format 0 " ; evening~%") + ) + ((= v1-33 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :fog-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-fog-table data gp-1 fog-color x) + (-> *override-table* mood-fog-table data gp-1 fog-color y) + (-> *override-table* mood-fog-table data gp-1 fog-color z) + (-> *override-table* mood-fog-table data gp-1 fog-color w) + ) + (format + 0 + " :fog-start (meters ~f) :fog-end (meters ~f) :fog-min ~f :fog-max ~f ~%" + (-> *override-table* mood-fog-table data gp-1 fog-dists x) + (-> *override-table* mood-fog-table data gp-1 fog-dists y) + (-> *override-table* mood-fog-table data gp-1 fog-dists w) + (-> *override-table* mood-fog-table data gp-1 fog-dists z) + ) + (format 0 " :erase-color (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 128.0)~%") + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (format 0 "(define *override-table* (new 'static 'mood-table))~%") + (none) + ) + +;; definition for function desaturate-mood-colors +;; WARN: Return type mismatch object vs none. +(defun desaturate-mood-colors ((arg0 float) (arg1 float) (arg2 float)) + (mem-copy! + (the-as pointer (-> *override-table* mood-color-table)) + (the-as pointer *no-cloud-mood-color-table*) + 256 + ) + (dotimes (v1-1 8) + (let ((a1-3 (-> *override-table* mood-color-table data v1-1)) + (a0-8 (the-as + (inline-array mood-color) + (-> (the-as (inline-array mood-color) (-> *override-table* mood-color-table data 0 amb-color)) v1-1) + ) + ) + ) + (let ((f1-2 (fmax (fmax (-> a1-3 lgt-color x) (-> a1-3 lgt-color y)) (-> a1-3 lgt-color z))) + (f0-4 (fmax (fmax (-> a0-8 0 lgt-color x) (-> a0-8 0 lgt-color y)) (-> a0-8 0 lgt-color z))) + ) + (set! (-> a1-3 lgt-color x) (* (+ (-> a1-3 lgt-color x) (* (- f1-2 (-> a1-3 lgt-color x)) arg0)) arg1)) + (set! (-> a1-3 lgt-color y) (* (+ (-> a1-3 lgt-color y) (* (- f1-2 (-> a1-3 lgt-color y)) arg0)) arg1)) + (set! (-> a1-3 lgt-color z) (* (+ (-> a1-3 lgt-color z) (* (- f1-2 (-> a1-3 lgt-color z)) arg0)) arg1)) + (set! (-> a1-3 lgt-color w) 0.0) + (set! (-> a0-8 0 lgt-color x) (* (+ (-> a0-8 0 lgt-color x) (* (- f0-4 (-> a0-8 0 lgt-color x)) arg0)) arg2)) + (set! (-> a0-8 0 lgt-color y) (* (+ (-> a0-8 0 lgt-color y) (* (- f0-4 (-> a0-8 0 lgt-color x)) arg0)) arg2)) + (set! (-> a0-8 0 lgt-color z) (* (+ (-> a0-8 0 lgt-color z) (* (- f0-4 (-> a0-8 0 lgt-color x)) arg0)) arg2)) + ) + (set! (-> a0-8 0 lgt-color w) 1.0) + ) + ) + (format 0 "(define *override-mood-color-table*~%") + (format 0 " (new 'static 'mood-color-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-color 0~%") + (dotimes (gp-1 8) + (format 0 " (new 'static 'mood-color") + (let ((v1-4 gp-1)) + (cond + ((zero? v1-4) + (format 0 " ; sun rise~%") + ) + ((= v1-4 1) + (format 0 " ; morning~%") + ) + ((= v1-4 2) + (format 0 " ; noon~%") + ) + ((= v1-4 3) + (format 0 " ; afternoon~%") + ) + ((= v1-4 4) + (format 0 " ; sunset~%") + ) + ((= v1-4 5) + (format 0 " ; twilight~%") + ) + ((= v1-4 6) + (format 0 " ; evening~%") + ) + ((= v1-4 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :lgt-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-1 lgt-color x) + (-> *override-table* mood-color-table data gp-1 lgt-color y) + (-> *override-table* mood-color-table data gp-1 lgt-color z) + (-> *override-table* mood-color-table data gp-1 lgt-color w) + ) + (format + 0 + " :amb-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-color-table data gp-1 amb-color x) + (-> *override-table* mood-color-table data gp-1 amb-color y) + (-> *override-table* mood-color-table data gp-1 amb-color z) + (-> *override-table* mood-color-table data gp-1 amb-color w) + ) + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (none) + ) + +;; definition for function desaturate-mood-fog +;; WARN: Return type mismatch object vs none. +(defun desaturate-mood-fog ((arg0 (pointer mood-fog-table)) (arg1 float) (arg2 float)) + (mem-copy! (the-as pointer (-> *override-table* mood-fog-table)) arg0 384) + (dotimes (v1-2 8) + (let ((a0-5 (-> *override-table* mood-fog-table data v1-2))) + (let ((f0-2 (fmax (fmax (-> a0-5 fog-color x) (-> a0-5 fog-color y)) (-> a0-5 fog-color z)))) + (set! (-> a0-5 fog-color x) (* (+ (-> a0-5 fog-color x) (* (- f0-2 (-> a0-5 fog-color x)) arg1)) arg2)) + (set! (-> a0-5 fog-color y) (* (+ (-> a0-5 fog-color y) (* (- f0-2 (-> a0-5 fog-color y)) arg1)) arg2)) + (set! (-> a0-5 fog-color z) (* (+ (-> a0-5 fog-color z) (* (- f0-2 (-> a0-5 fog-color z)) arg1)) arg2)) + ) + (set! (-> a0-5 fog-color w) 1.0) + ) + ) + (format 0 "(define *override-mood-fog-table*~%") + (format 0 " (new 'static 'mood-fog-table~%") + (format 0 " :data (new 'static 'inline-array 'mood-fog 0~%") + (dotimes (gp-1 8) + (format 0 " (new 'static 'mood-fog") + (let ((v1-5 gp-1)) + (cond + ((zero? v1-5) + (format 0 " ; sun rise~%") + ) + ((= v1-5 1) + (format 0 " ; morning~%") + ) + ((= v1-5 2) + (format 0 " ; noon~%") + ) + ((= v1-5 3) + (format 0 " ; afternoon~%") + ) + ((= v1-5 4) + (format 0 " ; sunset~%") + ) + ((= v1-5 5) + (format 0 " ; twilight~%") + ) + ((= v1-5 6) + (format 0 " ; evening~%") + ) + ((= v1-5 7) + (format 0 " ; green sun~%") + ) + ) + ) + (format + 0 + " :fog-color (new 'static 'vector :x ~f :y ~f :z ~f :w ~f)~%" + (-> *override-table* mood-fog-table data gp-1 fog-color x) + (-> *override-table* mood-fog-table data gp-1 fog-color y) + (-> *override-table* mood-fog-table data gp-1 fog-color z) + (-> *override-table* mood-fog-table data gp-1 fog-color w) + ) + (format + 0 + " :fog-start (meters ~f) :fog-end (meters ~f) :fog-min ~f :fog-max ~f ~%" + (/ (-> *override-table* mood-fog-table data gp-1 fog-dists x) METER_LENGTH) + (/ (-> *override-table* mood-fog-table data gp-1 fog-dists y) METER_LENGTH) + (-> *override-table* mood-fog-table data gp-1 fog-dists w) + (-> *override-table* mood-fog-table data gp-1 fog-dists z) + ) + (format 0 " :erase-color (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 128.0)~%") + (format 0 " )~%") + ) + (format 0 " )~%") + (format 0 " )~%") + (format 0 " )~%") + (none) + ) + +;; definition for symbol *debug-mood-color-table*, type mood-color-table +(define *debug-mood-color-table* (-> *mood-control* mood-color-table)) + +;; definition for symbol *debug-mood-fog-table*, type mood-fog-table +(define *debug-mood-fog-table* (-> *mood-control* mood-fog-table)) + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/mood/mood-tables_REF.gc b/test/decompiler/reference/jakx/engine/gfx/mood/mood-tables_REF.gc new file mode 100644 index 0000000000..10b5adcc74 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/mood/mood-tables_REF.gc @@ -0,0 +1,1216 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *no-cloud-haze-mood-fog-table*, type mood-fog-table +(define *no-cloud-haze-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 128.0 180.0 243.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 262144.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.0 32.0 100.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 24.0 64.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 44.7999 57.5999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 3072000.0 255.0 128.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *no-cloud-clear-mood-fog-table*, type mood-fog-table +(define *no-cloud-clear-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 128.0 180.0 243.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 150.0 165.0 220.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 160.0 150.0 200.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 12.7999 25.5999 80.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 19.1999 51.1999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 44.7999 57.5999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *no-cloud-smog-mood-fog-table*, type mood-fog-table +(define *no-cloud-smog-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.75 87.5 61.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 105.625 100.3437 84.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 105.625 104.9648 103.6445 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 105.625 100.3437 84.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.75 90.0 61.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 54.0 62.0 108.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.5625 24.75 37.125 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 38.5 49.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 65536.0 2621440.0 255.0 96.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *overcast-fog-mood-fog-table*, type mood-fog-table +(define *overcast-fog-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 84.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9842 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5702 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.6 196.0 60.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.5 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 83.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *overcast-clear-mood-fog-table*, type mood-fog-table +(define *overcast-clear-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.0 130.0 160.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 134.0 143.0 176.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 125.4 156.5999 194.3999 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 134.0 143.0 176.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.0 130.0 160.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 23.68 31.3599 64.0 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 10.2399 21.7599 40.9599 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 11.5199 38.3999 46.0799 1.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 131072.0 6826668.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *overcast-rain-mood-fog-table*, type mood-fog-table +(define *overcast-rain-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9841 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.2 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5701 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 45.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.2 196.0 40.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.2 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 73.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *storm-fog-mood-fog-table*, type mood-fog-table +(define *storm-fog-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 84.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9842 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.7811 116.2733 117.2342 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.6 196.0 80.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5702 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.6 196.0 60.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.5 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.6 196.0 83.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *storm-clear-mood-fog-table*, type mood-fog-table +(define *storm-clear-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 115.0 115.0 110.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 122.5 127.5 127.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 127.5 127.5 127.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 122.5 127.5 127.5 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 110.0 110.0 105.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 90.0 85.0 90.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 12.0 32.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 0.0 28.0 36.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 32768.0 3413332.0 255.0 162.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *storm-rain-mood-fog-table*, type mood-fog-table +(define *storm-rain-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.5625 83.875 80.7124 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 75.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 108.9841 116.25 124.2421 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 65.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 103.781 116.2733 117.2341 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1764011.2 196.0 70.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 84.082 84.7656 79.5701 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 45.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 34.0 40.0 61.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 196608.0 1870507.2 196.0 40.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 16.7343 18.7031 26.5781 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 2116267.2 221.0 93.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 18.75 28.75 33.75 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1706667.2 196.0 73.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *desert-mood-fog-table*, type mood-fog-table +(define *desert-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.3944 92.6952 52.9687 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1228800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 154.1268 114.1443 76.7968 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 171.8592 135.5936 100.625 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 154.1268 114.1443 76.7968 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 136.3944 92.6952 52.9687 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 27.0 22.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 27.0 22.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 44.0 35.0 20.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 180.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *sandstorm-start-mood-fog-table*, type mood-fog-table +(define *sandstorm-start-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 100.3943 76.6951 48.9686 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 131.1268 118.1443 83.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 155.8591 138.5934 93.6249 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 121.1268 103.1443 66.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 129.3943 107.695 71.9685 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 37.0 44.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 35.0 29.0 32.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 44.0 45.0 30.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 3276800.0 255.0 10.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *sandstorm-end-mood-fog-table*, type mood-fog-table +(define *sandstorm-end-mood-fog-table* + (new 'static 'mood-fog-table + :data (new 'static 'inline-array mood-fog 8 + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 100.3943 76.6951 48.9686 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 131.1268 118.1443 83.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 155.8591 138.5934 93.6249 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 121.1268 103.1443 66.7967 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 129.3943 107.695 71.9685 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1048576.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 46.0 37.0 44.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1638400.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 35.0 29.0 32.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1638400.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + (new 'static 'mood-fog + :fog-color (new 'static 'vector :data (new 'static 'array float 4 44.0 45.0 30.0 128.0)) + :fog-dists (new 'static 'vector :data (new 'static 'array float 4 0.0 1638400.0 255.0 8.0)) + :erase-color (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 0.0 128.0)) + ) + ) + ) + ) + +;; definition for symbol *no-cloud-mood-color-table*, type mood-color-table +(define *no-cloud-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5092 1.2699 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.498 0.4406 0.5777 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.8412 1.685 1.4374 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6464 1.2601 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3984 0.4478 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4317 0.1942 0.6517 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3373 0.4347 0.6026 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3252 0.566 0.9899 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3198 0.373 0.533 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1077 0.5357 0.4311 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2873 0.4071 0.479 1.0)) + ) + ) + ) + ) + +;; definition for symbol *overcast-mood-color-table*, type mood-color-table +(define *overcast-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3772 0.3473 0.1886 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5378 0.4605 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4602 0.4407 0.4098 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4115 0.3633 0.2057 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4979 0.4975 0.6473 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4085 0.1837 0.6167 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3438 0.4431 0.6142 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3045 0.5122 0.9449 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2921 0.3637 0.533 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.114 0.6554 0.456 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2873 0.4071 0.479 1.0)) + ) + ) + ) + ) + +;; definition for symbol *storm-mood-color-table*, type mood-color-table +(define *storm-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1509 0.1449 0.1131 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3714 0.3964 0.4877 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1616 0.1579 0.1486 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3684 0.4604 0.5124 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1841 0.1802 0.174 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3684 0.4604 0.5124 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1616 0.1579 0.1486 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3684 0.4604 0.5124 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1646 0.1549 0.1234 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3648 0.4145 0.5142 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3827 0.352 0.5688 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3352 0.4319 0.5987 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3148 0.548 1.0785 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3198 0.373 0.533 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.5048 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2873 0.4071 0.479 1.0)) + ) + ) + ) + ) + +;; definition for symbol *desert-mood-color-table*, type mood-color-table +(define *desert-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5092 1.2699 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.498 0.4406 0.5777 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.8412 1.685 1.4374 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6464 1.2601 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3984 0.4478 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.426 0.3584 0.7049 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3071 0.3957 0.5485 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1097 0.384 0.8232 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2695 0.3143 0.4492 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.5749 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.239 0.3386 0.3984 1.0)) + ) + ) + ) + ) + +;; definition for symbol *sandstorm-start-mood-color-table*, type mood-color-table +(define *sandstorm-start-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.5092 1.2699 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.498 0.4406 0.5777 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.8412 1.685 1.4374 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6168 1.4675 1.0976 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4199 0.5195 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 1.6464 1.2601 0.0 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3984 0.4478 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.426 0.3584 0.7049 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3071 0.3957 0.5485 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1097 0.384 0.8232 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2695 0.3143 0.4492 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.1 0.5749 0.4 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.239 0.3386 0.3984 1.0)) + ) + ) + ) + ) + +;; definition for symbol *sandstorm-end-mood-color-table*, type mood-color-table +(define *sandstorm-end-mood-color-table* + (new 'static 'mood-color-table + :data (new 'static 'inline-array mood-color 8 + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.3772 0.3473 0.1886 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5378 0.4605 0.5976 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4602 0.4407 0.4098 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4041 0.3855 0.3392 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.5087 0.5639 0.642 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.4115 0.3633 0.2057 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.4979 0.4975 0.6473 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.426 0.3584 0.7049 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.3071 0.3957 0.5485 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.0604 0.2114 0.4534 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2694 0.3142 0.4491 1.0)) + ) + (new 'static 'mood-color + :lgt-color (new 'static 'vector :data (new 'static 'array float 4 0.0503 0.2896 0.2015 0.0)) + :amb-color (new 'static 'vector :data (new 'static 'array float 4 0.2389 0.3385 0.3983 1.0)) + ) + ) + ) + ) + +;; definition for symbol *no-cloud-mood-channel-group*, type mood-channel-group +(define *no-cloud-mood-channel-group* + (new 'static 'mood-channel-group :data (new 'static 'inline-array mood-channel 4 + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.2 + 0.4 + 1.0 + 0.5 + 0.25 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.8 + 0.6 + 0.4 + 0.2 + 0.0 + 0.0 + 0.0 + 0.0 + 0.5 + 0.75 + 1.0 + 0.75 + 0.5 + 0.25 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.82 + 0.88 + 0.94 + 1.0 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.2 + 0.4 + 0.6 + 0.8 + 1.0 + 0.8 + 0.6 + 0.0 + 0.0 + 0.0 + 0.0 + 0.25 + 0.5 + 0.75 + 1.0 + 0.84 + 0.67 + 0.5 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.16 + 0.33 + 0.5 + 1.0 + 0.25 + 0.18 + 0.12 + 0.06 + 0.0 + ) + ) + ) + ) + ) + +;; definition for symbol *overcast-mood-channel-group*, type mood-channel-group +(define *overcast-mood-channel-group* + (new 'static 'mood-channel-group :data (new 'static 'inline-array mood-channel 4 + (new 'static 'mood-channel) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.42 + 0.34 + 0.25 + 0.17 + 0.08 + 0.0 + 1.0 + 0.9 + 0.8 + 0.7 + 0.6 + 0.5 + 0.42 + 0.34 + 0.25 + 0.17 + 0.08 + 0.0 + 1.0 + 0.9 + 0.8 + 0.7 + 0.6 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.58 + 0.66 + 0.75 + 0.83 + 0.92 + 1.0 + 0.0 + 0.1 + 0.2 + 0.3 + 0.4 + 0.5 + 0.58 + 0.66 + 0.75 + 0.83 + 0.92 + 1.0 + 0.0 + 0.1 + 0.2 + 0.3 + 0.4 + ) + ) + (new 'static 'mood-channel) + ) + ) + ) + +;; definition for symbol *stormy-mood-channel-group*, type mood-channel-group +(define *stormy-mood-channel-group* + (new 'static 'mood-channel-group :data (new 'static 'inline-array mood-channel 4 + (new 'static 'mood-channel) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + ) + ) + (new 'static 'mood-channel :data (new 'static 'array float 24 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + ) + ) + (new 'static 'mood-channel) + ) + ) + ) + +;; definition for symbol *clouds-000*, type mood-clouds +(define *clouds-000* (new 'static 'mood-clouds :cloud-min 1.0 :cloud-max 1.0)) + +;; definition for symbol *clouds-125*, type mood-clouds +(define *clouds-125* (new 'static 'mood-clouds :cloud-min 0.5 :cloud-max 1.0)) + +;; definition for symbol *clouds-250*, type mood-clouds +(define *clouds-250* (new 'static 'mood-clouds :cloud-min 0.333 :cloud-max 0.75)) + +;; definition for symbol *clouds-375*, type mood-clouds +(define *clouds-375* (new 'static 'mood-clouds :cloud-min 0.165 :cloud-max 0.75)) + +;; definition for symbol *clouds-500*, type mood-clouds +(define *clouds-500* (new 'static 'mood-clouds :cloud-max 0.655)) + +;; definition for symbol *clouds-625*, type mood-clouds +(define *clouds-625* (new 'static 'mood-clouds :cloud-max 0.605)) + +;; definition for symbol *clouds-750*, type mood-clouds +(define *clouds-750* (new 'static 'mood-clouds :cloud-max 0.555)) + +;; definition for symbol *clouds-875*, type mood-clouds +(define *clouds-875* (new 'static 'mood-clouds :cloud-max 0.505)) + +;; definition for symbol *clouds-1000*, type mood-clouds +(define *clouds-1000* (new 'static 'mood-clouds :cloud-max 0.455)) + +;; definition for symbol *mood-direction-table*, type mood-direction-table +(define *mood-direction-table* + (new 'static 'mood-direction-table + :data (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 0.906 0.397 0.143 0.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.5 0.814 0.296 0.0)) + (new 'static 'vector :data (new 'static 'array float 4 -0.5 0.814 0.296 0.0)) + (new 'static 'vector :data (new 'static 'array float 4 -0.906 0.397 0.143 0.0)) + ) + ) + ) + +;; definition for symbol *mood-sky-table*, type mood-sky-table +(define *mood-sky-table* (new 'static 'mood-sky-table + :data (new 'static 'inline-array vector 8 + (new 'static 'vector :data (new 'static 'array float 4 83.0 103.0 190.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 86.0 108.0 195.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 89.0 113.0 200.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 86.0 108.0 195.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 83.0 103.0 190.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 38.0 48.0 96.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 0.0 8.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 0.0 29.0 33.0 128.0)) + ) + ) + ) + +;; definition for symbol *mood-interp-table*, type sky-color-day +(define *mood-interp-table* + (new 'static 'sky-color-day + :hour (new 'static 'inline-array sky-color-hour 24 + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) + (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.75 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.99 :morph-end 0.84) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.84 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.66 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.5 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2) + ) + ) + ) + +;; definition for function init-mood-control +;; WARN: Return type mismatch symbol vs none. +(defun init-mood-control ((ctrl mood-control)) + (set! (-> ctrl mood-fog-table) (new 'global 'mood-fog-table)) + (set! (-> ctrl mood-color-table) (new 'global 'mood-color-table)) + (set! (-> ctrl mood-channel-group) (new 'global 'mood-channel-group)) + (set! (-> ctrl mood-clouds) (new 'global 'mood-clouds)) + (set! (-> ctrl mood-direction-table) *mood-direction-table*) + (set! (-> ctrl mood-sky-table) *mood-sky-table*) + (set! (-> ctrl mood-interp-table) *mood-interp-table*) + (mem-copy! (the-as pointer (-> ctrl mood-fog-table)) (the-as pointer *no-cloud-clear-mood-fog-table*) 384) + (mem-copy! (the-as pointer (-> ctrl mood-color-table)) (the-as pointer *no-cloud-mood-color-table*) 256) + (mem-copy! (the-as pointer (-> ctrl mood-channel-group)) (the-as pointer *no-cloud-mood-channel-group*) 384) + (mem-copy! (the-as pointer (-> ctrl mood-clouds)) (the-as pointer *clouds-250*) 8) + (set! (-> ctrl fogs 0) *no-cloud-haze-mood-fog-table*) + (set! (-> ctrl fogs 1) *no-cloud-clear-mood-fog-table*) + (set! (-> ctrl fogs 2) *no-cloud-smog-mood-fog-table*) + (set! (-> ctrl fogs 3) *overcast-fog-mood-fog-table*) + (set! (-> ctrl fogs 4) *overcast-clear-mood-fog-table*) + (set! (-> ctrl fogs 5) *overcast-rain-mood-fog-table*) + (set! (-> ctrl fogs 6) *storm-fog-mood-fog-table*) + (set! (-> ctrl fogs 7) *storm-clear-mood-fog-table*) + (set! (-> ctrl fogs 8) *storm-rain-mood-fog-table*) + (set! (-> ctrl colors 0) *no-cloud-mood-color-table*) + (set! (-> ctrl colors 1) *overcast-mood-color-table*) + (set! (-> ctrl colors 2) *storm-mood-color-table*) + (set! (-> ctrl channels 0) *no-cloud-mood-channel-group*) + (set! (-> ctrl channels 1) *overcast-mood-channel-group*) + (set! (-> ctrl channels 2) *stormy-mood-channel-group*) + (set! (-> ctrl clouds 0) *clouds-000*) + (set! (-> ctrl clouds 1) *clouds-125*) + (set! (-> ctrl clouds 2) *clouds-250*) + (set! (-> ctrl clouds 3) *clouds-375*) + (set! (-> ctrl clouds 4) *clouds-500*) + (set! (-> ctrl clouds 5) *clouds-625*) + (set! (-> ctrl clouds 6) *clouds-750*) + (set! (-> ctrl clouds 7) *clouds-875*) + (set! (-> ctrl clouds 8) *clouds-1000*) + (set! (-> ctrl current-interp cloud) 0.25) + (set! (-> ctrl current-interp fog) 0.5) + (set! (-> ctrl target-interp cloud) 0.25) + (set! (-> ctrl target-interp fog) 0.5) + (set! (-> ctrl speed-interp cloud) 0.0005555556) + (set! (-> ctrl speed-interp fog) 0.0005555556) + (set! (-> ctrl range min-cloud) 0.0) + (set! (-> ctrl range max-cloud) 1.0) + (set! (-> ctrl range min-fog) 0.0) + (set! (-> ctrl range max-fog) 1.0) + (set! (-> ctrl time-until-random cloud) 36000.0) + (set! (-> ctrl time-until-random-min cloud) 36000.0) + (set! (-> ctrl time-until-random-max cloud) 72000.0) + (set! (-> ctrl time-until-random fog) 216000.0) + (set! (-> ctrl time-until-random-min fog) 36000.0) + (set! (-> ctrl time-until-random-max fog) 72000.0) + (set! (-> ctrl overide cloud) 0.25) + (set! (-> ctrl overide fog) 0.0) + (set! (-> ctrl overide-weather-flag) #t) + (set! (-> ctrl display-flag) #f) + (none) + ) + +;; definition for symbol *mood-control*, type mood-control +(define *mood-control* (new 'static 'mood-control)) + +;; failed to figure out what this is: +(init-mood-control *mood-control*) + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/sparks-h_REF.gc b/test/decompiler/reference/jakx/engine/gfx/sparks-h_REF.gc new file mode 100644 index 0000000000..e017fdd55c --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/sparks-h_REF.gc @@ -0,0 +1,264 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type spark +(deftype spark (structure) + ((pos vector :inline) + (age float :overlay-at (-> pos data 3)) + (vel vector :inline) + (length float :overlay-at (-> vel data 3)) + (accel vector :inline) + (alpha float :overlay-at (-> accel data 3)) + ) + ) + +;; definition for method 3 of type spark +(defmethod inspect ((this spark)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark) + (format #t "~1Tpos: #~%" (-> this pos)) + (format #t "~1Tage: ~f~%" (-> this pos w)) + (format #t "~1Tvel: #~%" (-> this vel)) + (format #t "~1Tlength: ~f~%" (-> this vel w)) + (format #t "~1Taccel: #~%" (-> this accel)) + (format #t "~1Talpha: ~f~%" (-> this accel w)) + (label cfg-4) + this + ) + +;; definition of type spark-vport +(deftype spark-vport (structure) + ((mat matrix 4 :inline) + (hvdf-offset vector :inline) + (hmge-scale vector :inline) + (frame qword :inline) + (zbuf qword :inline) + (scissor qword :inline) + (pfog0 vector :inline) + ) + ) + +;; definition for method 3 of type spark-vport +(defmethod inspect ((this spark-vport)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark-vport) + (format #t "~1Tmat[4] @ #x~X~%" (-> this mat)) + (format #t "~1Thvdf-offset: #~%" (-> this hvdf-offset)) + (format #t "~1Thmge-scale: #~%" (-> this hmge-scale)) + (format #t "~1Tframe: #~%" (-> this frame)) + (format #t "~1Tzbuf: #~%" (-> this zbuf)) + (format #t "~1Tscissor: #~%" (-> this scissor)) + (format #t "~1Tpfog0: #~%" (-> this pfog0)) + (label cfg-4) + this + ) + +;; definition of type spark-color-group +(deftype spark-color-group (structure) + ((colors vector 4 :inline) + (alpha gs-adcmd :inline) + ) + ) + +;; definition for method 3 of type spark-color-group +(defmethod inspect ((this spark-color-group)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark-color-group) + (format #t "~1Tcolors[4] @ #x~X~%" (-> this colors)) + (format #t "~1Talpha: #~%" (-> this alpha)) + (label cfg-4) + this + ) + +;; definition of type spark-constants +(deftype spark-constants (structure) + ((vport spark-vport 2 :inline) + (adgif-tag qword :inline) + (prim-tags vector 3 :inline) + (color-groups spark-color-group 13 :inline) + (friction float) + (scale float) + (matrix-count int32) + (set-matrix-time int32) + ) + ) + +;; definition for method 3 of type spark-constants +(defmethod inspect ((this spark-constants)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark-constants) + (format #t "~1Tvport[2] @ #x~X~%" (-> this vport)) + (format #t "~1Tadgif-tag: #~%" (-> this adgif-tag)) + (format #t "~1Tprim-tags[3] @ #x~X~%" (-> this prim-tags)) + (format #t "~1Tcolor-groups[13] @ #x~X~%" (-> this color-groups)) + (format #t "~1Tfriction: ~f~%" (-> this friction)) + (format #t "~1Tscale: ~f~%" (-> this scale)) + (format #t "~1Tmatrix-count: ~D~%" (-> this matrix-count)) + (format #t "~1Tset-matrix-time: ~D~%" (-> this set-matrix-time)) + (label cfg-4) + this + ) + +;; definition of type spark-vert +(deftype spark-vert (structure) + ((color vector :inline) + (pos vector :inline) + ) + ) + +;; definition for method 3 of type spark-vert +(defmethod inspect ((this spark-vert)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark-vert) + (format #t "~1Tcolor: #~%" (-> this color)) + (format #t "~1Tpos: #~%" (-> this pos)) + (label cfg-4) + this + ) + +;; definition of type spark-line-packet +(deftype spark-line-packet (structure) + ((tag qword :inline) + (alpha qword :inline) + (verts spark-vert 4 :inline) + ) + ) + +;; definition for method 3 of type spark-line-packet +(defmethod inspect ((this spark-line-packet)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark-line-packet) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Talpha: #~%" (-> this alpha)) + (format #t "~1Tverts[4] @ #x~X~%" (-> this verts)) + (label cfg-4) + this + ) + +;; definition of type spark-viewport-packet +(deftype spark-viewport-packet (structure) + ((tag qword :inline) + (frame qword :inline) + (zbuf qword :inline) + (scissor qword :inline) + ) + ) + +;; definition for method 3 of type spark-viewport-packet +(defmethod inspect ((this spark-viewport-packet)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark-viewport-packet) + (format #t "~1Ttag: #~%" (-> this tag)) + (format #t "~1Tframe: #~%" (-> this frame)) + (format #t "~1Tzbuf: #~%" (-> this zbuf)) + (format #t "~1Tscissor: #~%" (-> this scissor)) + (label cfg-4) + this + ) + +;; definition of type spark-launch-params +(deftype spark-launch-params (structure) + ((pos vector :inline) + (vel vector :inline) + (accel vector :inline) + (age float) + (alpha float) + (y-floor float) + (length float) + (color-index uint32) + ) + ) + +;; definition for method 3 of type spark-launch-params +(defmethod inspect ((this spark-launch-params)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'spark-launch-params) + (format #t "~1Tpos: #~%" (-> this pos)) + (format #t "~1Tvel: #~%" (-> this vel)) + (format #t "~1Taccel: #~%" (-> this accel)) + (format #t "~1Tage: ~f~%" (-> this age)) + (format #t "~1Talpha: ~f~%" (-> this alpha)) + (format #t "~1Ty-floor: ~f~%" (-> this y-floor)) + (format #t "~1Tlength: ~f~%" (-> this length)) + (format #t "~1Tcolor-index: ~D~%" (-> this color-index)) + (label cfg-4) + this + ) + +;; definition of type sparks-work +(deftype sparks-work (basic) + ((next-free int32) + (constants spark-constants :inline) + (start vector :inline) + (vel vector :inline) + (accel vector :inline) + (test basic) + (vecs vector 4 :inline) + (y-floor int32 512) + (data spark 512 :inline) + ) + (:methods + (sparks-work-method-9 () none) + (sparks-work-method-10 () none) + (sparks-work-method-11 () none) + (sparks-work-method-12 () none) + (sparks-work-method-13 () none) + (sparks-work-method-14 () none) + (sparks-work-method-15 () none) + (sparks-work-method-16 () none) + (sparks-work-method-17 () none) + (sparks-work-method-18 () none) + (sparks-work-method-19 () none) + ) + ) + +;; definition for method 3 of type sparks-work +(defmethod inspect ((this sparks-work)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tnext-free: ~D~%" (-> this next-free)) + (format #t "~1Tconstants: #~%" (-> this constants)) + (format #t "~1Tstart: #~%" (-> this start)) + (format #t "~1Tvel: #~%" (-> this vel)) + (format #t "~1Taccel: #~%" (-> this accel)) + (format #t "~1Ttest: ~A~%" (-> this test)) + (format #t "~1Tvecs[4] @ #x~X~%" (-> this vecs)) + (format #t "~1Ty-floor[512] @ #x~X~%" (-> this y-floor)) + (format #t "~1Tdata[512] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-h_REF.gc b/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-h_REF.gc index bee8d9e3b0..24f372cfd6 100644 --- a/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-h_REF.gc @@ -37,7 +37,7 @@ (valid uint8) (clock-index uint8) (user1-int16 uint16) - (key sparticle-launch-control) + (key (pointer sparticle-launch-control)) (binding sparticle-launch-state) (data uint32 1 :overlay-at omega) (datab int8 4 :overlay-at omega) diff --git a/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-launcher-h_REF.gc b/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-launcher-h_REF.gc index 726db844d8..3d2f5e7c5e 100644 --- a/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-launcher-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/gfx/sprite/particles/sparticle-launcher-h_REF.gc @@ -82,12 +82,12 @@ (deftype sparticle-launcher (basic) "A definition of a single particle, as a list of init specs." ((birthaccum float) - (soundaccum float) (init-specs (inline-array sp-field-init-spec)) + (level-flag int32) ) (:methods - (get-field-spec-by-id (_type_ sp-field-id) sp-field-init-spec) - (setup-special-textures (_type_ string) none) + (sparticle-launcher-method-9 () none) + (sparticle-launcher-method-10 () none) ) ) @@ -99,8 +99,8 @@ ) (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~1Tbirthaccum: ~f~%" (-> this birthaccum)) - (format #t "~1Tinit-specs: #x~X~%" (-> this soundaccum)) - (format #t "~1Tlevel-flag: ~D~%" (-> this init-specs)) + (format #t "~1Tinit-specs: #x~X~%" (-> this init-specs)) + (format #t "~1Tlevel-flag: ~D~%" (-> this level-flag)) (label cfg-4) this ) diff --git a/test/decompiler/reference/jakx/engine/gfx/viewport-h_REF.gc b/test/decompiler/reference/jakx/engine/gfx/viewport-h_REF.gc new file mode 100644 index 0000000000..dbd41403e9 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/gfx/viewport-h_REF.gc @@ -0,0 +1,193 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type viewport +(deftype viewport (structure) + ((fog-corner vector 4 :inline) + (min-fog-corner vector :inline) + (max-fog-corner vector :inline) + (prev-inv-camera-rot matrix :inline) + (motion-vector vector :inline) + (math-camera math-camera) + (index int32) + (frame uint64) + (frame-a uint64) + (zbuf-on uint64) + (zbuf-off uint64) + (scissor uint64) + (clamp uint64) + (tex0 uint64) + (tex0-24 uint64) + (copy-frame uint64) + (copy-tex0 uint64) + (copy-dma basic) + (hflip-zbuf-dma basic) + (glow-frame-1 uint64) + (glow-tex0-1 uint64) + (glow-frame-2 uint64) + (glow-tex0-2 uint64) + (shadow-texoffset vector :inline) + (shadow-texscale vector :inline) + (shadow-invert-frame uint64) + (shadow-dma-frame uint64) + (shadow-dma-tex0 uint64) + (shadow-dma basic) + (warp-shader adgif-shader :inline) + (blur-forward-dma basic) + (blur-reverse-dma basic) + (blur-finish-dma basic) + (blur-sx int32) + (blur-sy int32) + (blur-hx int32) + (blur-hy int32) + (blur-cx int32) + (blur-cy int32) + (blur-frame-0 uint64) + (blur-frame-1 uint64) + (blur-frame-a uint64) + (blur-tex0-0 uint64) + (blur-tex0-1 uint64) + (blur-tex0-a uint64) + (blur-clamp uint64) + (blur-scissor uint64) + (blur-scale float) + (screen-maxx int32) + (screen-maxy int32) + (screen-sx int32) + (screen-sy int32) + (screen-hx int32) + (screen-hy int32) + (screen-qx int32) + (screen-qy int32) + (screen-cx int32) + (screen-cy int32) + (ratio-x float) + (ratio-y float) + (pad int32 17) + (minx-on-screen int32) + (miny-on-screen int32) + (scissor-on-screen uint64) + ) + (:methods + (viewport-method-9 (_type_) none) + (viewport-method-10 (_type_) none) + (viewport-method-11 (_type_) none) + (viewport-method-12 (_type_) none) + (viewport-method-13 (_type_) none) + (viewport-method-14 (_type_) none) + (viewport-method-15 (_type_) none) + ) + ) + +;; definition for method 3 of type viewport +(defmethod inspect ((this viewport)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'viewport) + (format #t "~1Tfog-corner[4] @ #x~X~%" (-> this fog-corner)) + (format #t "~1Tmin-fog-corner: #~%" (-> this min-fog-corner)) + (format #t "~1Tmax-fog-corner: #~%" (-> this max-fog-corner)) + (format #t "~1Tprev-inv-camera-rot: #~%" (-> this prev-inv-camera-rot)) + (format #t "~1Tmotion-vector: #~%" (-> this motion-vector)) + (format #t "~1Tmath-camera: ~A~%" (-> this math-camera)) + (format #t "~1Tindex: ~D~%" (-> this index)) + (format #t "~1Tframe: ~D~%" (-> this frame)) + (format #t "~1Tframe-a: ~D~%" (-> this frame-a)) + (format #t "~1Tzbuf-on: ~D~%" (-> this zbuf-on)) + (format #t "~1Tzbuf-off: ~D~%" (-> this zbuf-off)) + (format #t "~1Tscissor: ~D~%" (-> this scissor)) + (format #t "~1Tclamp: ~D~%" (-> this clamp)) + (format #t "~1Ttex0: ~D~%" (-> this tex0)) + (format #t "~1Ttex0-24: ~D~%" (-> this tex0-24)) + (format #t "~1Tcopy-frame: ~D~%" (-> this copy-frame)) + (format #t "~1Tcopy-tex0: ~D~%" (-> this copy-tex0)) + (format #t "~1Tcopy-dma: ~A~%" (-> this copy-dma)) + (format #t "~1Thflip-zbuf-dma: ~A~%" (-> this hflip-zbuf-dma)) + (format #t "~1Tglow-frame-1: ~D~%" (-> this glow-frame-1)) + (format #t "~1Tglow-tex0-1: ~D~%" (-> this glow-tex0-1)) + (format #t "~1Tglow-frame-2: ~D~%" (-> this glow-frame-2)) + (format #t "~1Tglow-tex0-2: ~D~%" (-> this glow-tex0-2)) + (format #t "~1Tshadow-texoffset: #~%" (-> this shadow-texoffset)) + (format #t "~1Tshadow-texscale: #~%" (-> this shadow-texscale)) + (format #t "~1Tshadow-invert-frame: ~D~%" (-> this shadow-invert-frame)) + (format #t "~1Tshadow-dma-frame: ~D~%" (-> this shadow-dma-frame)) + (format #t "~1Tshadow-dma-tex0: ~D~%" (-> this shadow-dma-tex0)) + (format #t "~1Tshadow-dma: ~A~%" (-> this shadow-dma)) + (format #t "~1Twarp-shader: #~%" (-> this warp-shader)) + (format #t "~1Tblur-forward-dma: ~A~%" (-> this blur-forward-dma)) + (format #t "~1Tblur-reverse-dma: ~A~%" (-> this blur-reverse-dma)) + (format #t "~1Tblur-finish-dma: ~A~%" (-> this blur-finish-dma)) + (format #t "~1Tblur-sx: ~D~%" (-> this blur-sx)) + (format #t "~1Tblur-sy: ~D~%" (-> this blur-sy)) + (format #t "~1Tblur-hx: ~D~%" (-> this blur-hx)) + (format #t "~1Tblur-hy: ~D~%" (-> this blur-hy)) + (format #t "~1Tblur-cx: ~D~%" (-> this blur-cx)) + (format #t "~1Tblur-cy: ~D~%" (-> this blur-cy)) + (format #t "~1Tblur-frame-0: ~D~%" (-> this blur-frame-0)) + (format #t "~1Tblur-frame-1: ~D~%" (-> this blur-frame-1)) + (format #t "~1Tblur-frame-a: ~D~%" (-> this blur-frame-a)) + (format #t "~1Tblur-tex0-0: ~D~%" (-> this blur-tex0-0)) + (format #t "~1Tblur-tex0-1: ~D~%" (-> this blur-tex0-1)) + (format #t "~1Tblur-tex0-a: ~D~%" (-> this blur-tex0-a)) + (format #t "~1Tblur-clamp: ~D~%" (-> this blur-clamp)) + (format #t "~1Tblur-scissor: ~D~%" (-> this blur-scissor)) + (format #t "~1Tblur-scale: ~f~%" (-> this blur-scale)) + (format #t "~1Tscreen-maxx: ~D~%" (-> this screen-maxx)) + (format #t "~1Tscreen-maxy: ~D~%" (-> this screen-maxy)) + (format #t "~1Tscreen-sx: ~D~%" (-> this screen-sx)) + (format #t "~1Tscreen-sy: ~D~%" (-> this screen-sy)) + (format #t "~1Tscreen-hx: ~D~%" (-> this screen-hx)) + (format #t "~1Tscreen-hy: ~D~%" (-> this screen-hy)) + (format #t "~1Tscreen-qx: ~D~%" (-> this screen-qx)) + (format #t "~1Tscreen-qy: ~D~%" (-> this screen-qy)) + (format #t "~1Tscreen-cx: ~D~%" (-> this screen-cx)) + (format #t "~1Tscreen-cy: ~D~%" (-> this screen-cy)) + (format #t "~1Tratio-x: ~f~%" (-> this ratio-x)) + (format #t "~1Tratio-y: ~f~%" (-> this ratio-y)) + (format #t "~1Tprev-inv-camera-rot: #~%" (-> this prev-inv-camera-rot)) + (format #t "~1Tminx-on-screen: ~D~%" (-> this minx-on-screen)) + (format #t "~1Tminy-on-screen: ~D~%" (-> this miny-on-screen)) + (format #t "~1Tscissor-on-screen: ~D~%" (-> this scissor-on-screen)) + (label cfg-4) + this + ) + +;; definition of type viewport-array +(deftype viewport-array (structure) + ((mode uint32) + (num-viewports uint32) + (current-viewport-index uint32) + (data viewport 3 :inline) + (default viewport :inline :overlay-at (-> data 2)) + ) + (:methods + (viewport-array-method-9 (_type_ viewport) none) + (get-viewport (_type_ uint) viewport) + (viewport-array-method-11 (_type_) none) + ) + ) + +;; definition for method 3 of type viewport-array +(defmethod inspect ((this viewport-array)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'viewport-array) + (format #t "~1Tmode: ~D~%" (-> this mode)) + (format #t "~1Tnum-viewports: ~D~%" (-> this num-viewports)) + (format #t "~1Tcurrent-viewport-index: ~D~%" (-> this current-viewport-index)) + (format #t "~1Tdata[3] @ #x~X~%" (-> this data)) + (format #t "~1Tdefault: #~%" (-> this default)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/load/load-dgo_REF.gc b/test/decompiler/reference/jakx/engine/load/load-dgo_REF.gc new file mode 100644 index 0000000000..2dde09e880 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/load/load-dgo_REF.gc @@ -0,0 +1,453 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type load-dgo-msg +(deftype load-dgo-msg (structure) + "IOP RPC message for loading a dgo." + ((rsvd uint16) + (result load-msg-result) + (b1 pointer) + (b2 pointer) + (bt pointer) + (name uint128) + (address uint32 :overlay-at b1) + (id uint128) + (pad uint32 7) + ) + ) + +;; definition for method 3 of type load-dgo-msg +;; INFO: Used lq/sq +(defmethod inspect ((this load-dgo-msg)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'load-dgo-msg) + (format #t "~1Trsvd: ~D~%" (-> this rsvd)) + (format #t "~1Tresult: ~D~%" (-> this result)) + (format #t "~1Tb1: #x~X~%" (-> this b1)) + (format #t "~1Tb2: #x~X~%" (-> this b2)) + (format #t "~1Tbt: #x~X~%" (-> this bt)) + (format #t "~1Tname: ~D~%" (-> this name)) + (format #t "~1Taddress: ~D~%" (-> this b1)) + (format #t "~1Tid: ~D~%" (-> this id)) + (label cfg-4) + this + ) + +;; definition of type load-chunk-msg +(deftype load-chunk-msg (structure) + "IOP RPC message for loading a chunk of a chunked animation" + ((rsvd uint16) + (result load-msg-result) + (address pointer) + (section uint32) + (maxlen uint32) + (dummy uint32 4) + (basename sound-stream-name :inline) + ) + ) + +;; definition for method 3 of type load-chunk-msg +(defmethod inspect ((this load-chunk-msg)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'load-chunk-msg) + (format #t "~1Trsvd: ~D~%" (-> this rsvd)) + (format #t "~1Tresult: ~D~%" (-> this result)) + (format #t "~1Taddress: ~D~%" (-> this address)) + (format #t "~1Tsection: ~D~%" (-> this section)) + (format #t "~1Tmaxlen: ~D~%" (-> this maxlen)) + (format #t "~1Tdummy[4] @ #x~X~%" (-> this dummy)) + (format #t "~1Tbasename: #~%" (-> this basename)) + (label cfg-4) + this + ) + +;; definition of type play-chunk-msg +(deftype play-chunk-msg (structure) + "IOP RPC message for playing some streamed audio." + ((rsvd uint16) + (result uint16) + (address pointer) + (section uint32) + (volume int32 :overlay-at section) + (maxlen uint32) + (group uint8 :overlay-at maxlen) + (id uint32 4) + (basename sound-stream-name 4 :inline) + ) + ) + +;; definition for method 3 of type play-chunk-msg +(defmethod inspect ((this play-chunk-msg)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'play-chunk-msg) + (format #t "~1Trsvd: ~D~%" (-> this rsvd)) + (format #t "~1Tresult: ~D~%" (-> this result)) + (format #t "~1Taddress: ~D~%" (-> this address)) + (format #t "~1Tsection: ~D~%" (-> this section)) + (format #t "~1Tvolume: ~D~%" (-> this volume)) + (format #t "~1Tmaxlen: ~D~%" (-> this maxlen)) + (format #t "~1Tgroup: ~D~%" (-> this group)) + (format #t "~1Tid[4] @ #x~X~%" (-> this id)) + (format #t "~1Tbasename[4] @ #x~X~%" (-> this basename)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +(when (zero? *load-dgo-rpc*) + (set! *load-dgo-rpc* (new 'global 'rpc-buffer-pair (the-as uint 64) (the-as uint 1) 4)) + (set! *load-str-rpc* (new 'global 'rpc-buffer-pair (the-as uint 80) (the-as uint 1) 5)) + (set! *play-str-rpc* (new 'global 'rpc-buffer-pair (the-as uint 256) (the-as uint 4) 6)) + (set! *load-str-lock* #f) + (set! *que-str-lock* #f) + (set! *dgo-name* (new 'global 'string 64 (the-as string #f))) + ) + +;; definition for function str-load +(defun str-load ((name string) (chunk-idx int) (dest-addr pointer) (max-len int)) + "Send a message to the IOP to start loading a chunk of a .STR file to the EE." + (if (or (check-busy *load-str-rpc*) *load-str-lock*) + (return #f) + ) + (let ((s2-0 (the-as load-chunk-msg (add-element *load-str-rpc*)))) + (set! (-> s2-0 result) (load-msg-result invalid)) + (set! (-> s2-0 address) dest-addr) + (set! (-> s2-0 section) (the-as uint chunk-idx)) + (set! (-> s2-0 maxlen) (the-as uint max-len)) + (copyn-charp<-string (-> s2-0 basename name) name 48) + (call *load-str-rpc* (the-as uint 0) (the-as pointer s2-0) (the-as uint 32)) + ) + (set! *load-str-lock* #t) + (set! *que-str-lock* #t) + #t + ) + +;; definition for function str-load-status +(defun str-load-status ((maxlen-out (pointer int32))) + "Get the status of the most recent load. + Return 'busy if in progress, 'error if failed, or 'complete. + If 'complete, returns the maxlen value from the IOP." + (if (check-busy *load-str-rpc*) + (return 'busy) + ) + (set! *load-str-lock* #f) + (set! *que-str-lock* #t) + (let ((v1-7 (the-as load-chunk-msg (pop-last-received *load-str-rpc*)))) + (if (= (-> v1-7 result) (load-msg-result error)) + (return 'error) + ) + (set! (-> maxlen-out 0) (the-as int (-> v1-7 maxlen))) + ) + 'complete + ) + +;; definition for function str-load-cancel +;; WARN: Return type mismatch int vs none. +(defun str-load-cancel () + "Cancel a streaming load. Note that this does not actually stop the transfer, so the IOP may continue writing to the buffer." + (set! *load-str-lock* #f) + (set! *que-str-lock* #t) + 0 + (none) + ) + +;; definition for function str-play-async +;; WARN: Return type mismatch int vs none. +(defun str-play-async ((name string) (id sound-id) (volume int) (group int)) + "Start playing a streaming audio." + (set! *que-str-lock* #t) + (let ((s2-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (copyn-charp<-string (-> s2-0 basename 0 name) name 48) + (copyn-charp<-string (-> s2-0 basename 1 name) "" 48) + (copyn-charp<-string (-> s2-0 basename 2 name) "" 48) + (copyn-charp<-string (-> s2-0 basename 3 name) "" 48) + (set! (-> s2-0 id 0) (the-as uint id)) + (set! (-> s2-0 id 1) (the-as uint 0)) + (set! (-> s2-0 id 2) (the-as uint 0)) + (set! (-> s2-0 id 3) (the-as uint 0)) + (set! (-> s2-0 section) (the-as uint volume)) + (set! (-> s2-0 maxlen) (the-as uint 0)) + (set! (-> s2-0 group) (the-as uint group)) + (set! (-> s2-0 result) (the-as uint 0)) + ) + 0 + 0 + (none) + ) + +;; definition for function str-play-stop +;; WARN: Return type mismatch int vs none. +(defun str-play-stop ((name string) (id sound-id)) + "Stop playing streaming audio." + (set! *que-str-lock* #t) + (let ((s4-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (copyn-charp<-string (-> s4-0 basename 0 name) name 48) + (copyn-charp<-string (-> s4-0 basename 1 name) "" 48) + (copyn-charp<-string (-> s4-0 basename 2 name) "" 48) + (copyn-charp<-string (-> s4-0 basename 3 name) "" 48) + (set! (-> s4-0 id 0) (the-as uint id)) + (set! (-> s4-0 id 1) (the-as uint 0)) + (set! (-> s4-0 id 2) (the-as uint 0)) + (set! (-> s4-0 id 3) (the-as uint 0)) + (set! (-> s4-0 result) (the-as uint 1)) + ) + 0 + (none) + ) + +;; definition for function str-play-queue +;; WARN: Return type mismatch int vs none. +(defun str-play-queue ((name0 string) (name1 string) (name2 string) (name3 string) (ids (pointer uint32)) (mask pointer)) + "Queue up streaming data, allowing it to start playing without delay." + (when (and (not (check-busy *play-str-rpc*)) (not *que-str-lock*)) + (let ((s4-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (if name0 + (copyn-charp<-string (-> s4-0 basename 0 name) name0 48) + (copyn-charp<-string (-> s4-0 basename 0 name) "" 48) + ) + (if name1 + (copyn-charp<-string (-> s4-0 basename 1 name) name1 48) + (copyn-charp<-string (-> s4-0 basename 1 name) "" 48) + ) + (if name2 + (copyn-charp<-string (-> s4-0 basename 2 name) name2 48) + (copyn-charp<-string (-> s4-0 basename 2 name) "" 48) + ) + (if name3 + (copyn-charp<-string (-> s4-0 basename 3 name) name3 48) + (copyn-charp<-string (-> s4-0 basename 3 name) "" 48) + ) + (dotimes (v1-14 4) + (set! (-> s4-0 id v1-14) (-> ids v1-14)) + ) + (set! (-> s4-0 address) mask) + (set! (-> s4-0 result) (the-as uint 2)) + ) + ) + (set! *que-str-lock* #f) + 0 + (none) + ) + +;; definition for function str-ambient-play +;; WARN: Return type mismatch int vs none. +(defun str-ambient-play ((name string)) + "Start playing ambient (unused?)." + (set! *que-str-lock* #t) + (let ((s5-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (set! (-> s5-0 basename 0 name 0) (the-as uint 36)) + (copyn-charp<-string (&-> s5-0 basename 0 name 1) name 48) + (set! (-> s5-0 result) (the-as uint 0)) + ) + 0 + 0 + (none) + ) + +;; definition for function str-ambient-stop +;; WARN: Return type mismatch int vs none. +(defun str-ambient-stop ((name string)) + "Stop playing ambient (unused?)." + (set! *que-str-lock* #t) + (let ((s5-0 (the-as play-chunk-msg (add-element *play-str-rpc*)))) + (set! (-> s5-0 basename 0 name 0) (the-as uint 36)) + (copyn-charp<-string (&-> s5-0 basename 0 name 1) name 48) + (set! (-> s5-0 result) (the-as uint 1)) + ) + 0 + (none) + ) + +;; definition for function str-play-kick +;; WARN: Return type mismatch int vs none. +(defun str-play-kick () + "Do an empty RPC on play so the IOP code runs and can update buffers." + (cond + ((check-busy *play-str-rpc*) + ) + (else + (call *play-str-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) + ) + ) + 0 + (none) + ) + +;; definition for symbol *dgo-time*, type time-frame +(define *dgo-time* (the-as time-frame 0)) + +;; definition for function dgo-load-begin +;; INFO: Used lq/sq +(defun dgo-load-begin ((name string) (buffer1 uint128) (buffer2 pointer) (buffer-top pointer) (arg4 pointer)) + "Start a DGO load!" + (set! *dgo-time* (-> *display* real-clock integral-frame-counter)) + (format 0 "Starting level load clock~%") + (sync *load-dgo-rpc* #t) + (let ((s1-0 (the-as load-dgo-msg (add-element *load-dgo-rpc*)))) + (set! (-> s1-0 result) (load-msg-result invalid)) + (set! (-> s1-0 b1) buffer2) + (set! (-> s1-0 b2) buffer-top) + (set! (-> s1-0 bt) arg4) + (set! (-> s1-0 name) (string->sound-name name)) + (set! (-> s1-0 id) buffer1) + (call *load-dgo-rpc* (the-as uint 0) (the-as pointer s1-0) (the-as uint 32)) + s1-0 + ) + ) + +;; definition for function dgo-load-get-next +(defun dgo-load-get-next ((done-out (pointer symbol))) + "Get the address of the most recently loaded object. #f is there is none. Returns if this is the last by arg0." + (set! (-> done-out 0) #f) + (let ((gp-0 (the-as pointer #f))) + (when (not (check-busy *load-dgo-rpc*)) + (let ((v1-4 (the-as load-dgo-msg (pop-last-received *load-dgo-rpc*)))) + (when v1-4 + (when (or (= (-> v1-4 result) (load-msg-result done)) (= (-> v1-4 result) (load-msg-result more))) + (set! gp-0 (-> v1-4 b1)) + (set! (-> done-out 0) #t) + ) + (if (= (-> v1-4 result) (load-msg-result more)) + (set! (-> done-out 0) #f) + ) + (if (= (-> v1-4 result) (load-msg-result done)) + (format + 0 + "Elapsed time for level = ~Fs~%" + (* 0.016666668 (the float (- (-> *display* real-clock integral-frame-counter) *dgo-time*))) + ) + ) + ) + ) + ) + gp-0 + ) + ) + +;; definition for function dgo-load-continue +;; INFO: Used lq/sq +(defun dgo-load-continue ((buffer1 pointer) (buffer2 pointer) (buffer-top pointer)) + "Inform the IOP that it is safe to start loading the next object." + (let ((gp-0 (the-as load-dgo-msg (add-element *load-dgo-rpc*)))) + (set! (-> gp-0 result) (load-msg-result invalid)) + (set! (-> gp-0 b1) buffer1) + (set! (-> gp-0 b2) buffer2) + (set! (-> gp-0 bt) buffer-top) + (set! (-> gp-0 name) (the-as uint128 0)) + (call *load-dgo-rpc* (the-as uint 1) (the-as pointer gp-0) (the-as uint 32)) + gp-0 + ) + ) + +;; definition for function dgo-load-cancel +;; WARN: Return type mismatch int vs none. +(defun dgo-load-cancel ((arg0 int)) + "Abort a DGO load." + (let ((v1-0 (the-as sound-rpc-cancel-dgo (get-sound-buffer-entry)))) + (set! (-> v1-0 command) (the-as uint 20)) + (set! (-> v1-0 id) (the-as uint arg0)) + ) + 0 + (none) + ) + +;; definition for function find-temp-buffer +(defun find-temp-buffer ((size int)) + "Unused function to find some temporary leftover space in DMA buffer. + Unused since jak 1, and checks the same buffer twice??" + (let ((gp-0 (+ (/ size 16) 2))) + (cond + ((< (the-as uint gp-0) + (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) global-buf))) + ) + (logand -16 (&+ (-> *display* frames (-> *display* on-screen) global-buf base) 15)) + ) + ((< (the-as uint gp-0) + (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) global-buf))) + ) + (logand -16 (&+ (-> *display* frames (-> *display* on-screen) global-buf base) 15)) + ) + ) + ) + ) + +;; definition for function dgo-load-link +(defun dgo-load-link ((arg0 dgo-header) (arg1 kheap) (arg2 uint) (arg3 symbol) (arg4 symbol)) + "Start the async linker on a GOAL object file that was just loaded." + (dynamic-patch-hook arg0 arg1 arg2) + (let ((s4-0 (the-as object (&+ arg0 64)))) + (cond + ((>= (the-as int (+ (the-as uint s4-0) (-> arg0 length))) (the-as int (-> arg1 top-base))) + (format + 0 + "ERROR: -----> dgo file header ~g #x~X has overrun heap #x~X by ~D bytes. This is very bad!~%" + (-> arg0 rootname) + arg0 + arg1 + (- (+ (the-as uint s4-0) (-> arg0 length)) (the-as uint (-> arg1 top-base))) + ) + ) + ((and (< (the-as int arg0) (the-as int arg2)) + (>= (the-as int (+ (the-as uint s4-0) (-> arg0 length))) (the-as int arg2)) + ) + (format + 0 + "ERROR: -----> dgo file header ~g #x~X has overrun heap #x~X by ~D bytes. This is very bad!~%" + (-> arg0 rootname) + arg0 + arg1 + (- (+ (the-as uint s4-0) (-> arg0 length)) arg2) + ) + ) + ) + (if arg4 + (format + 0 + "NOTICE: loaded ~g, ~D bytes (~f K) at top ~D at #x~X - #x~X~%" + (-> arg0 rootname) + (-> arg0 length) + (* 0.0009765625 (the float (-> arg0 length))) + (- (+ (the-as uint s4-0) (-> arg0 length)) (the-as uint (-> arg1 base))) + arg0 + (+ (the-as uint s4-0) (-> arg0 length)) + ) + ) + (string<-charp (clear *dgo-name*) (-> arg0 rootname)) + (nonzero? (link-begin + (the-as pointer s4-0) + (-> *dgo-name* data) + (the-as int (-> arg0 length)) + arg1 + (if arg3 + (link-flag output-load-msg output-load-true-msg execute-login print-login fast-link) + (link-flag output-load-msg output-load-true-msg execute-login fast-link) + ) + ) + ) + ) + ) + +;; definition for function destroy-mem +;; WARN: Return type mismatch int vs none. +(defun destroy-mem ((start (pointer uint32)) (end (pointer uint32))) + "Overwrite memory with #xffffffff for debugging." + (while (< (the-as int start) (the-as int end)) + (set! (-> start 0) (the-as uint #xffffffff)) + (set! start (&-> start 1)) + ) + 0 + (none) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/load/loader-h_REF.gc b/test/decompiler/reference/jakx/engine/load/loader-h_REF.gc index 92e6f40bc5..7dc320cd47 100644 --- a/test/decompiler/reference/jakx/engine/load/loader-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/load/loader-h_REF.gc @@ -294,3 +294,7 @@ to a pair of external-art-buffers." ;; failed to figure out what this is: 0 + + + + diff --git a/test/decompiler/reference/jakx/engine/load/ramdisk_REF.gc b/test/decompiler/reference/jakx/engine/load/ramdisk_REF.gc new file mode 100644 index 0000000000..e9bb7ff83c --- /dev/null +++ b/test/decompiler/reference/jakx/engine/load/ramdisk_REF.gc @@ -0,0 +1,113 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type ramdisk-rpc-fill +(deftype ramdisk-rpc-fill (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." + ((rsvd1 int32) + (ee-id int32) + (rsvd2 int32 2) + (filename uint128) + ) + ) + +;; definition for method 3 of type ramdisk-rpc-fill +;; INFO: Used lq/sq +(defmethod inspect ((this ramdisk-rpc-fill)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'ramdisk-rpc-fill) + (format #t "~1Trsvd1: ~D~%" (-> this rsvd1)) + (format #t "~1Tee-id: ~D~%" (-> this ee-id)) + (format #t "~1Trsvd2[2] @ #x~X~%" (-> this rsvd2)) + (format #t "~1Tfilename: ~D~%" (-> this filename)) + (label cfg-4) + this + ) + +;; definition of type ramdisk-rpc-load +(deftype ramdisk-rpc-load (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." + ((rsvd int32) + (ee-id int32) + (offset uint32) + (length uint32) + ) + ) + +;; definition for method 3 of type ramdisk-rpc-load +(defmethod inspect ((this ramdisk-rpc-load)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'ramdisk-rpc-load) + (format #t "~1Trsvd: ~D~%" (-> this rsvd)) + (format #t "~1Tee-id: ~D~%" (-> this ee-id)) + (format #t "~1Toffset: ~D~%" (-> this offset)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (label cfg-4) + this + ) + +;; definition of type ramdisk-rpc-load-to-ee +(deftype ramdisk-rpc-load-to-ee (structure) + "Unused RAMDISK rpc to load files from DVD to the IOP RAM." + ((rsvd int32) + (addr int32) + (offset int32) + (length int32) + (filename uint128) + ) + ) + +;; definition for method 3 of type ramdisk-rpc-load-to-ee +;; INFO: Used lq/sq +(defmethod inspect ((this ramdisk-rpc-load-to-ee)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'ramdisk-rpc-load-to-ee) + (format #t "~1Trsvd: ~D~%" (-> this rsvd)) + (format #t "~1Taddr: ~D~%" (-> this addr)) + (format #t "~1Toffset: ~D~%" (-> this offset)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Tfilename: ~D~%" (-> this filename)) + (label cfg-4) + this + ) + +;; definition for symbol *ramdisk-rpc*, type rpc-buffer-pair +(define *ramdisk-rpc* (new 'global 'rpc-buffer-pair (the-as uint 32) (the-as uint 1) 3)) + +;; definition for symbol *current-ramdisk-id*, type int +(define *current-ramdisk-id* 0) + +;; definition for function ramdisk-load +(defun ramdisk-load ((arg0 int) (arg1 uint) (arg2 uint) (arg3 pointer)) + (let ((v1-1 (the-as ramdisk-rpc-load (add-element *ramdisk-rpc*)))) + (set! (-> v1-1 offset) arg1) + (set! (-> v1-1 ee-id) arg0) + (set! (-> v1-1 length) arg2) + ) + (call *ramdisk-rpc* (the-as uint 0) arg3 arg2) + 0 + ) + +;; definition for function ramdisk-sync +;; WARN: Return type mismatch int vs none. +(defun ramdisk-sync () + (sync *ramdisk-rpc* #t) + 0 + (none) + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/math/transformq_REF.gc b/test/decompiler/reference/jakx/engine/math/transformq_REF.gc new file mode 100644 index 0000000000..a4d52c4f1c --- /dev/null +++ b/test/decompiler/reference/jakx/engine/math/transformq_REF.gc @@ -0,0 +1,474 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for method 2 of type transformq +(defmethod print ((this transformq)) + (format #t "# this trans x) (-> this trans y) (-> this trans z) (-> this trans w)) + (format #t "~T~Tquat: ~F ~F ~F ~F ~%" (-> this rot x) (-> this rot y) (-> this rot z) (-> this rot w)) + (format #t "~T~Tscale:~F ~F ~F ~F>" (-> this scale x) (-> this scale y) (-> this scale z) (-> this scale w)) + this + ) + +;; definition for method 27 of type trsqv +;; WARN: Return type mismatch vector vs quaternion. +(defmethod get-quaternion ((this trsqv)) + "Get the quat for this [[trsqv]]." + (the-as quaternion (-> this rot)) + ) + +;; definition for method 18 of type trsqv +(defmethod set-quaternion! ((this trsqv) (arg0 quaternion)) + "Set this [[trsqv]]'s quaternion." + (quaternion-copy! (get-quaternion this) arg0) + ) + +;; definition for method 21 of type trsqv +(defmethod rot->dir-targ! ((this trsqv)) + "Set the target direction for this [[trsqv]] to its quaternion." + (quaternion-copy! (-> this dir-targ) (get-quaternion this)) + ) + +;; definition for method 22 of type trsqv +(defmethod y-angle ((this trsqv)) + "Get the y angle for this [[trsqv]]'s quaternion." + (quaternion-y-angle (get-quaternion this)) + ) + +;; definition for method 9 of type trsqv +(defmethod seek-toward-heading-vec! ((this trsqv) (arg0 vector) (arg1 float) (arg2 time-frame)) + "Adjust the orientation to point along dir, only changing our yaw. + The vel is a maximum velocity limit. + The frame count is the time constant (first order). + There's some logic to avoid rapidly changing directions" + (let* ((f0-0 (deg-diff (quaternion-y-angle (the-as quaternion (-> this rot))) (vector-y-angle arg0))) + (f1-2 (fmin (* arg1 (seconds-per-frame)) (/ (* 5.0 (fabs f0-0)) (the float arg2)))) + (f30-0 (fmax (fmin f0-0 f1-2) (- f1-2))) + ) + (let ((f0-2 (-> this old-y-angle-diff))) + (set! f30-0 + (cond + ((or (= f0-2 0.0) + (and (< 0.0 f30-0) (< 0.0 f0-2)) + (or (and (< f30-0 0.0) (< f0-2 0.0)) (time-elapsed? (-> this angle-change-time) (seconds 0.2))) + ) + (set-time! (-> this angle-change-time)) + f30-0 + ) + (else + (/ f30-0 1000000000) + ) + ) + ) + ) + (set! (-> this old-y-angle-diff) f30-0) + (let ((a1-2 (get-quaternion this))) + (quaternion-rotate-y! a1-2 a1-2 f30-0) + ) + ) + ) + +;; definition for method 10 of type trsqv +(defmethod set-heading-vec! ((this trsqv) (arg0 vector)) + "Makes us look in the arg0 direction immediately. Pitch will be unchanged." + (let ((s3-0 (get-quaternion this))) + (forward-up-nopitch->quaternion + s3-0 + (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0) + ) + ) + ) + +;; definition for method 11 of type trsqv +(defmethod seek-to-point-toward-point! ((this trsqv) (arg0 vector) (arg1 float) (arg2 time-frame)) + "Seek toward pointing toward arg0 from our current location." + (seek-toward-heading-vec! this (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) arg1 arg2) + ) + +;; definition for method 12 of type trsqv +(defmethod point-toward-point! ((this trsqv) (arg0 vector)) + "Immediately point toward arg0." + (let ((s3-0 (get-quaternion this))) + (forward-up-nopitch->quaternion + s3-0 + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0) + ) + ) + ) + +;; definition for method 13 of type trsqv +(defmethod seek-toward-yaw-angle! ((this trsqv) (arg0 float) (arg1 float) (arg2 time-frame)) + "Seek toward the given yaw angle." + (let ((s3-0 (method-of-object this seek-toward-heading-vec!)) + (s2-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s2-0 x) (sin arg0)) + (set! (-> s2-0 y) 0.0) + (set! (-> s2-0 z) (cos arg0)) + (set! (-> s2-0 w) 1.0) + (s3-0 this s2-0 arg1 arg2) + ) + ) + +;; definition for method 14 of type trsqv +(defmethod set-yaw-angle-clear-roll-pitch! ((this trsqv) (arg0 float)) + "Immediately clear our roll and pitch and set yaw to the given angle." + (let ((s5-0 (method-of-object this set-heading-vec-clear-roll-pitch!)) + (s4-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s4-0 x) (sin arg0)) + (set! (-> s4-0 y) 0.0) + (set! (-> s4-0 z) (cos arg0)) + (set! (-> s4-0 w) 1.0) + (s5-0 this s4-0) + ) + ) + +;; definition for method 15 of type trsqv +(defmethod set-roll-to-grav! ((this trsqv) (arg0 float)) + "Set our roll so that our local down aligns with standard gravity." + (set-roll-to-grav-2! this arg0) + ) + +;; definition for method 16 of type trsqv +(defmethod set-roll-to-grav-2! ((this trsqv) (arg0 float)) + "Set our roll so that our local down aligns with standard gravity." + (let* ((s5-0 (get-quaternion this)) + (s1-0 (-> *standard-dynamics* gravity-normal)) + (s3-0 (quaternion->matrix (new 'stack-no-clear 'matrix) s5-0)) + ) + (let ((s4-0 (-> s3-0 fvec))) + (vector-normalize! (vector-flatten! (-> s3-0 uvec) s1-0 s4-0) 1.0) + (vector-cross! (-> s3-0 rvec) (-> s3-0 uvec) s4-0) + ) + (let ((a1-5 (matrix-rotate-z! (new 'stack-no-clear 'matrix) arg0))) + (matrix*! s3-0 a1-5 s3-0) + ) + (matrix->quaternion s5-0 s3-0) + ) + ) + +;; definition for method 25 of type trsqv +(defmethod roll-relative-to-gravity ((this trsqv)) + "Get our roll, relative to 'down' from gravity." + (let* ((s5-0 (get-quaternion this)) + (gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (s5-1 (vector-y-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (a1-2 (-> *standard-dynamics* gravity-normal)) + (v1-2 (vector-normalize! (vector-flatten! (new 'stack-no-clear 'vector) a1-2 gp-0) 1.0)) + (f0-1 (vector-dot v1-2 s5-1)) + ) + (if (< (vector-dot (vector-cross! (new 'stack-no-clear 'vector) v1-2 s5-1) gp-0) 0.0) + (- (acos f0-1)) + (acos f0-1) + ) + ) + ) + +;; definition for method 17 of type trsqv +;; INFO: Used lq/sq +;; ERROR: Unsupported inline assembly instruction kind - [mula.s f0, f3] +;; ERROR: Unsupported inline assembly instruction kind - [madda.s f1, f4] +;; ERROR: Unsupported inline assembly instruction kind - [madd.s f0, f2, f5] +(defmethod rotate-toward-orientation! ((this trsqv) (arg0 quaternion) (arg1 float) (arg2 float) (arg3 int) (arg4 int) (arg5 float)) + "Adjust our orientation toward target, subject to some rate limits. + For Jak 1, I said: + I don't think this is a very robust function and probably doesn't work right in cases + where an axis flips by 180 degrees. + But now they use matrix-from-two-vectors-the-long-way-smooth to fix it! Good job. + This additionally uses the fancy logic of matrix-from-two-vectors-smooth." + (local-vars (f0-4 float)) + (let ((sv-240 arg4) + (s2-0 arg5) + (s5-0 (get-quaternion this)) + ) + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (when (< 0.0 arg2) + (quaternion-from-two-vectors-smooth! + gp-0 + (vector-y-quaternion! (new 'stack-no-clear 'vector) s5-0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) arg0) + arg2 + sv-240 + ) + (quaternion-normalize! (quaternion*! s5-0 gp-0 s5-0)) + ) + (when (< 0.0 arg1) + (let ((sv-256 (vector-y-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (s1-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) s5-0)) + (sv-272 (vector-z-quaternion! (new 'stack-no-clear 'vector) arg0)) + (s0-1 (new 'stack-no-clear 'matrix)) + ) + (vector-flatten! s1-2 s1-2 sv-256) + (vector-flatten! sv-272 sv-272 sv-256) + (vector-normalize! s1-2 1.0) + (vector-normalize! sv-272 1.0) + (cond + ((!= s2-0 0.0) + (let* ((v1-5 (vector-cross! (new 'stack-no-clear 'vector) s1-2 sv-272))) + (set! f0-4 (vector-dot sv-256 v1-5)) + ) + (if (< (* f0-4 s2-0) 0.0) + (matrix-from-two-vectors-the-long-way-smooth! s0-1 s1-2 sv-272 arg1 arg3) + (matrix-from-two-vectors-smooth! s0-1 s1-2 sv-272 arg1 arg3) + ) + ) + (else + (matrix-from-two-vectors-smooth! s0-1 s1-2 sv-272 arg1 arg3) + ) + ) + (matrix->quaternion gp-0 s0-1) + ) + (quaternion-normalize! (quaternion*! s5-0 gp-0 s5-0)) + ) + ) + s5-0 + ) + ) + +;; definition for method 19 of type trsqv +(defmethod set-heading-vec-clear-roll-pitch! ((this trsqv) (arg0 vector)) + "Set our rotation to point along the given heading, with no roll or pitch." + (forward-up->quaternion + (get-quaternion this) + (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) + (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + ) + ) + +;; definition for method 20 of type trsqv +(defmethod point-toward-point-clear-roll-pitch! ((this trsqv) (arg0 vector)) + "Set our orientation to point toward arg0, clearing roll and pitch." + (forward-up->quaternion + (get-quaternion this) + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) + (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + ) + ) + +;; definition for function transformq-copy! +;; INFO: Used lq/sq +(defun transformq-copy! ((arg0 transformq) (arg1 transformq)) + (let ((v1-0 (-> arg1 trans quad)) + (a2-0 (-> arg1 rot quad)) + (a1-1 (-> arg1 scale quad)) + ) + (set! (-> arg0 trans quad) v1-0) + (set! (-> arg0 rot quad) a2-0) + (set! (-> arg0 scale quad) a1-1) + ) + arg0 + ) + +;; definition for function matrix<-transformq! +;; INFO: Used lq/sq +(defun matrix<-transformq! ((arg0 matrix) (arg1 transformq)) + (local-vars (v1-1 float)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (cond + (#f + (set! (-> arg0 trans quad) (-> arg1 trans quad)) + ) + (else + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + (.mov v1-1 vf5) + ) + ) + arg0 + ) + ) + +;; definition for function matrix<-no-trans-transformq! +(defun matrix<-no-trans-transformq! ((arg0 matrix) (arg1 transformq)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) + +;; definition for function matrix<-transformq+trans! +(defun matrix<-transformq+trans! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf6 (&-> arg2 quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.mul.x.vf acc vf3 vf6) + (.add.mul.y.vf acc vf4 vf6 acc) + (.add.mul.z.vf acc vf5 vf6 acc) + (.add.mul.w.vf.xyz vf2 vf2 vf0 acc) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) + +;; definition for function matrix<-transformq+world-trans! +(defun matrix<-transformq+world-trans! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf6 (&-> arg2 quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.add.vf.xyz vf2 vf2 vf6) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) + +;; definition for function matrix<-parented-transformq! +(defun matrix<-parented-transformq! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (local-vars (v1-1 float)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (let ((v1-0 (new 'stack-no-clear 'vector))) + (set! (-> v1-0 x) (/ 1.0 (-> arg2 x))) + (set! (-> v1-0 y) (/ 1.0 (-> arg2 y))) + (set! (-> v1-0 z) (/ 1.0 (-> arg2 z))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.mov.vf.w vf2 vf0) + (.lvf vf4 (&-> arg0 rvec quad)) + (.lvf vf5 (&-> arg0 uvec quad)) + (.lvf vf6 (&-> arg0 fvec quad)) + (.mul.x.vf vf4 vf4 vf1) + (.mul.y.vf vf5 vf5 vf1) + (.mul.z.vf vf6 vf6 vf1) + (.lvf vf3 (&-> v1-0 quad)) + ) + (.mul.vf vf4 vf4 vf3) + (.mul.vf vf5 vf5 vf3) + (.mul.vf vf6 vf6 vf3) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf4) + (.svf (&-> arg0 uvec quad) vf5) + (.svf (&-> arg0 fvec quad) vf6) + (.mov v1-1 vf6) + arg0 + ) + ) + +;; definition for function matrix<-transformq+rot-offset! +(defun matrix<-transformq+rot-offset! ((arg0 matrix) (arg1 transformq) (arg2 vector)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + ) + (init-vf0-vector) + (quaternion->matrix arg0 (the-as quaternion (-> arg1 rot))) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf6 (&-> arg2 quad)) + (.lvf vf3 (&-> arg0 rvec quad)) + (.lvf vf4 (&-> arg0 uvec quad)) + (.lvf vf5 (&-> arg0 fvec quad)) + (.mov.vf.w vf2 vf0) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.mul.x.vf acc vf3 vf6) + (.add.mul.y.vf acc vf4 vf6 acc) + (.add.mul.z.vf acc vf5 vf6 acc) + (.sub.mul.w.vf acc vf6 vf0 acc) + (.add.mul.w.vf.xyz vf2 vf2 vf0 acc) + (.svf (&-> arg0 trans quad) vf2) + (.svf (&-> arg0 rvec quad) vf3) + (.svf (&-> arg0 uvec quad) vf4) + (.svf (&-> arg0 fvec quad) vf5) + arg0 + ) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/net/net-predict-h_REF.gc b/test/decompiler/reference/jakx/engine/net/net-predict-h_REF.gc new file mode 100644 index 0000000000..c5e96afb3e --- /dev/null +++ b/test/decompiler/reference/jakx/engine/net/net-predict-h_REF.gc @@ -0,0 +1,120 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type net-predictor-simple-state +(deftype net-predictor-simple-state (structure) + ((time int32) + (pos vector :inline) + (vel vector :inline) + (rot quaternion :inline) + (angvel vector :inline) + ) + ) + +;; definition for method 3 of type net-predictor-simple-state +(defmethod inspect ((this net-predictor-simple-state)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'net-predictor-simple-state) + (format #t "~1Ttime: ~D~%" (-> this time)) + (format #t "~1Tpos: #~%" (-> this pos)) + (format #t "~1Tvel: #~%" (-> this vel)) + (format #t "~1Trot: #~%" (-> this rot)) + (format #t "~1Tangvel: #~%" (-> this angvel)) + (label cfg-4) + this + ) + +;; definition of type net-predictor-simple +(deftype net-predictor-simple (structure) + ((last-net net-predictor-simple-state :inline) + (extrapolated net-predictor-simple-state :inline) + (active net-predictor-simple-state :inline) + (vel-scale vector :inline) + (angvel-scale vector :inline) + (min-delay int32) + (max-delay int32) + (pos-err-thresh float) + (rot-err-thresh float) + (pos-track-factor float) + (vel-track-factor float) + (max-extrapolation int32) + (error-snap float) + (flags uint8) + ) + (:methods + (net-predictor-simple-method-9 () none) + (net-predictor-simple-method-10 () none) + (net-predictor-simple-method-11 () none) + (net-predictor-simple-method-12 () none) + (net-predictor-simple-method-13 () none) + (net-predictor-simple-method-14 () none) + (net-predictor-simple-method-15 () none) + (net-predictor-simple-method-16 () none) + (net-predictor-simple-method-17 () none) + ) + ) + +;; definition for method 3 of type net-predictor-simple +(defmethod inspect ((this net-predictor-simple)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'net-predictor-simple) + (format #t "~1Tlast-net: #~%" (-> this last-net)) + (format #t "~1Textrapolated: #~%" (-> this extrapolated)) + (format #t "~1Tactive: #~%" (-> this active)) + (format #t "~1Tvel-scale: #~%" (-> this vel-scale)) + (format #t "~1Tangvel-scale: #~%" (-> this angvel-scale)) + (format #t "~1Tmin-delay: ~D~%" (-> this min-delay)) + (format #t "~1Tmax-delay: ~D~%" (-> this max-delay)) + (format #t "~1Tpos-err-thresh: ~f~%" (-> this pos-err-thresh)) + (format #t "~1Trot-err-thresh: ~f~%" (-> this rot-err-thresh)) + (format #t "~1Tpos-track-factor: ~f~%" (-> this pos-track-factor)) + (format #t "~1Tvel-track-factor: ~f~%" (-> this vel-track-factor)) + (format #t "~1Tmax-extrapolation: ~D~%" (-> this max-extrapolation)) + (format #t "~1Terror-snap: ~f~%" (-> this error-snap)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (label cfg-4) + this + ) + +;; definition of type net-predictor-sphcol +(deftype net-predictor-sphcol (net-predictor-simple) + () + ) + +;; definition for method 3 of type net-predictor-sphcol +(defmethod inspect ((this net-predictor-sphcol)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'net-predictor-sphcol) + (format #t "~1Tlast-net: #~%" (-> this last-net)) + (format #t "~1Textrapolated: #~%" (-> this extrapolated)) + (format #t "~1Tactive: #~%" (-> this active)) + (format #t "~1Tvel-scale: #~%" (-> this vel-scale)) + (format #t "~1Tangvel-scale: #~%" (-> this angvel-scale)) + (format #t "~1Tmin-delay: ~D~%" (-> this min-delay)) + (format #t "~1Tmax-delay: ~D~%" (-> this max-delay)) + (format #t "~1Tpos-err-thresh: ~f~%" (-> this pos-err-thresh)) + (format #t "~1Trot-err-thresh: ~f~%" (-> this rot-err-thresh)) + (format #t "~1Tpos-track-factor: ~f~%" (-> this pos-track-factor)) + (format #t "~1Tvel-track-factor: ~f~%" (-> this vel-track-factor)) + (format #t "~1Tmax-extrapolation: ~D~%" (-> this max-extrapolation)) + (format #t "~1Terror-snap: ~f~%" (-> this error-snap)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/process-drawable/process-nettable-h_REF.gc b/test/decompiler/reference/jakx/engine/process-drawable/process-nettable-h_REF.gc new file mode 100644 index 0000000000..5c640c4a93 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/process-drawable/process-nettable-h_REF.gc @@ -0,0 +1,302 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type net-process-class-info +(deftype net-process-class-info (structure) + ((msg-map (array symbol)) + (msg-count int32) + (send-packet-count int32) + (recv-packet-count int32) + (send-byte-count int32) + (recv-byte-count int32) + (owner-type type) + ) + ) + +;; definition for method 3 of type net-process-class-info +(defmethod inspect ((this net-process-class-info)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'net-process-class-info) + (format #t "~1Tmsg-map: ~A~%" (-> this msg-map)) + (format #t "~1Tmsg-count: ~D~%" (-> this msg-count)) + (format #t "~1Tsend-packet-count: ~D~%" (-> this send-packet-count)) + (format #t "~1Trecv-packet-count: ~D~%" (-> this recv-packet-count)) + (format #t "~1Tsend-byte-count: ~D~%" (-> this send-byte-count)) + (format #t "~1Trecv-byte-count: ~D~%" (-> this recv-byte-count)) + (format #t "~1Towner-type: ~A~%" (-> this owner-type)) + (label cfg-4) + this + ) + +;; definition for symbol *net-process-class-count*, type int +(define *net-process-class-count* 0) + +;; definition for symbol *net-process-class-array*, type (array net-process-class-info) +(define *net-process-class-array* + (new 'static 'boxed-array :type net-process-class-info :length 0 :allocated-length 96) + ) + +;; definition for symbol *net-process-class-names*, type (pointer symbol) +(define *net-process-class-names* (the-as (pointer symbol) (new 'static 'array uint32 95 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + ) + +;; definition for function net-process-class-register +;; WARN: Return type mismatch int vs none. +;; WARN: Function net-process-class-register has a return type of none, but the expression builder found a return statement. +(defun net-process-class-register ((arg0 net-process-class-info)) + (dotimes (v1-0 *net-process-class-count*) + (when (= (-> *net-process-class-names* v1-0) (-> arg0 owner-type symbol)) + (set! (-> *net-process-class-array* v1-0) arg0) + (return #f) + ) + ) + (when (>= *net-process-class-count* 96) + (format 0 "net-process-class-count limit exceeded~%") + (break!) + 0 + ) + (set! (-> *net-process-class-array* *net-process-class-count*) arg0) + (set! (-> *net-process-class-names* *net-process-class-count*) (-> arg0 owner-type symbol)) + (set! *net-process-class-count* (+ *net-process-class-count* 1)) + 0 + (none) + ) + +;; definition of type net-process-id +(deftype net-process-id (uint16) + () + ) + +;; definition of type proximity-ownership-params +(deftype proximity-ownership-params (basic) + ((ownable-radius float) + (force-local symbol) + (last-ownership-req-time int32) + (min-ownership-req-delay int32) + (consider-ai-players symbol) + ) + (:methods + (proximity-ownership-params-method-9 () none) + ) + ) + +;; definition for method 3 of type proximity-ownership-params +(defmethod inspect ((this proximity-ownership-params)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Townable-radius: ~f~%" (-> this ownable-radius)) + (format #t "~1Tforce-local: ~A~%" (-> this force-local)) + (format #t "~1Tlast-ownership-req-time: ~D~%" (-> this last-ownership-req-time)) + (format #t "~1Tmin-ownership-req-delay: ~D~%" (-> this min-ownership-req-delay)) + (format #t "~1Tconsider-ai-players: ~A~%" (-> this consider-ai-players)) + (label cfg-4) + this + ) + +;; definition of type process-nettable +(deftype process-nettable (process) + ((owner-idx int8) + (net-flags uint64) + (desired-owner-idx int8) + (net-id uint16) + (jump-in-send-pending uint16) + (prox basic) + (owner-link list-link :inline) + (active-link list-link :inline) + ) + (:methods + (process-nettable-method-15 () none) + (process-nettable-method-16 () none) + (process-nettable-method-17 () none) + (process-nettable-method-18 () none) + (process-nettable-method-19 () none) + (process-nettable-method-20 () none) + (process-nettable-method-21 () none) + (process-nettable-method-22 () none) + (process-nettable-method-23 () none) + (process-nettable-method-24 () none) + (process-nettable-method-25 () none) + (process-nettable-method-26 () none) + (process-nettable-method-27 () none) + (process-nettable-method-28 () none) + (process-nettable-method-29 () none) + (process-nettable-method-30 () none) + (process-nettable-method-31 () none) + (process-nettable-method-32 () none) + (process-nettable-method-33 () none) + (process-nettable-method-34 (_type_ int rgba) none) + (process-nettable-method-35 (_type_ int) none) + (process-nettable-method-36 (_type_) none) + (process-nettable-method-37 (_type_ net-process-class-info) none) + (process-nettable-method-38 () none) + (process-nettable-method-39 () none) + (process-nettable-method-40 (_type_) net-process-class-info) + (process-nettable-method-41 (_type_ int) process) + ) + ) + +;; definition for method 3 of type process-nettable +(defmethod inspect ((this process-nettable)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process inspect))) + (t9-0 this) + ) + (format #t "~2Towner-idx: ~D~%" (-> this owner-idx)) + (format #t "~2Tnet-flags: ~D~%" (-> this net-flags)) + (format #t "~2Tdesired-owner-idx: ~D~%" (-> this desired-owner-idx)) + (format #t "~2Tnet-id: ~D~%" (-> this net-id)) + (format #t "~2Tjump-in-send-pending: ~D~%" (-> this jump-in-send-pending)) + (format #t "~2Tprox: ~A~%" (-> this prox)) + (format #t "~2Towner-link: #~%" (-> this owner-link)) + (format #t "~2Tactive-link: #~%" (-> this active-link)) + (label cfg-4) + this + ) + +;; definition for method 37 of type process-nettable +;; WARN: Return type mismatch int vs none. +(defmethod process-nettable-method-37 ((this process-nettable) (arg0 net-process-class-info)) + (set! (-> arg0 msg-map 0) 'create) + (set! (-> arg0 msg-map 1) 'destroy) + (set! (-> arg0 msg-map 2) 'destroy-silent) + (set! (-> arg0 msg-map 3) 'ownership-request) + (set! (-> arg0 msg-map 4) 'ownership-update) + (set! (-> arg0 msg-map 5) 'ownership-reject) + (set! (-> arg0 msg-map 6) 'please-describe) + (set! (-> arg0 msg-map 7) 'state) + (set! (-> arg0 msg-count) 8) + 0 + (none) + ) + +;; definition for function write-msg-map-rec +;; WARN: Return type mismatch int vs none. +(defun write-msg-map-rec ((arg0 type) (arg1 net-process-class-info)) + (let* ((s3-0 37) + (s5-0 (the-as (function process-nettable net-process-class-info none) (-> arg0 method-table s3-0))) + ) + (cond + ((= arg0 process-nettable) + (set! (-> arg1 msg-count) 0) + (s5-0 (the-as process-nettable #f) arg1) + ) + (else + (write-msg-map-rec (-> arg0 parent) arg1) + (if (!= (-> arg0 parent method-table s3-0) s5-0) + (s5-0 (the-as process-nettable #f) arg1) + ) + ) + ) + ) + 0 + (none) + ) + +;; failed to figure out what this is: +0 diff --git a/test/decompiler/reference/jakx/engine/ps2/headset-h_REF.gc b/test/decompiler/reference/jakx/engine/ps2/headset-h_REF.gc new file mode 100644 index 0000000000..248af23c0a --- /dev/null +++ b/test/decompiler/reference/jakx/engine/ps2/headset-h_REF.gc @@ -0,0 +1,1651 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type headset-queue +(deftype headset-queue (structure) + ((write-offset int32) + (read-offset int32) + (bytes int32) + (size int32) + (data uint32) + ) + :pack-me + (:methods + (headset-queue-method-9 () none) + (headset-queue-method-10 () none) + (headset-queue-method-11 () none) + (headset-queue-method-12 () none) + ) + ) + +;; definition for method 3 of type headset-queue +(defmethod inspect ((this headset-queue)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'headset-queue) + (format #t "~1Twrite-offset: ~D~%" (-> this write-offset)) + (format #t "~1Tread-offset: ~D~%" (-> this read-offset)) + (format #t "~1Tbytes: ~D~%" (-> this bytes)) + (format #t "~1Tsize: ~D~%" (-> this size)) + (format #t "~1Tdata: #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition of type nci-codec-io-block +(deftype nci-codec-io-block (structure) + ((pcm-buffer uint32) + (samples-in-pcm-buffer int16) + (nelly-buffer uint32) + (nelly-buffer-size uint16) + (nelly-buffer-read-byte-offset uint16) + (nelly-buffer-read-bit-offset uint8) + (nelly-buffer-write-byte-offset uint16) + (nelly-buffer-write-bit-offset uint8) + ) + :pack-me + ) + +;; definition for method 3 of type nci-codec-io-block +(defmethod inspect ((this nci-codec-io-block)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'nci-codec-io-block) + (format #t "~1Tpcm-buffer: #x~X~%" (-> this pcm-buffer)) + (format #t "~1Tsamples-in-pcm-buffer: ~D~%" (-> this samples-in-pcm-buffer)) + (format #t "~1Tnelly-buffer: #x~X~%" (-> this nelly-buffer)) + (format #t "~1Tnelly-buffer-size: ~D~%" (-> this nelly-buffer-size)) + (format #t "~1Tnelly-buffer-read-byte-offset: ~D~%" (-> this nelly-buffer-read-byte-offset)) + (format #t "~1Tnelly-buffer-read-bit-offset: ~D~%" (-> this nelly-buffer-read-bit-offset)) + (format #t "~1Tnelly-buffer-write-byte-offset: ~D~%" (-> this nelly-buffer-write-byte-offset)) + (format #t "~1Tnelly-buffer-write-bit-offset: ~D~%" (-> this nelly-buffer-write-bit-offset)) + (label cfg-4) + this + ) + +;; definition for symbol *headset-input-buffer*, type (pointer uint8) +(define *headset-input-buffer* (new 'static 'array uint8 512 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +;; definition for symbol *headset-input-bytes*, type int +(define *headset-input-bytes* 0) + +;; definition for symbol *headset-output-buffer*, type (pointer uint8) +(define *headset-output-buffer* (new 'static 'array uint8 512 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +;; definition for symbol *headset-output-bytes*, type int +(define *headset-output-bytes* 0) + +;; definition for symbol *headset-output-offset*, type int +(define *headset-output-offset* 0) + +;; definition for symbol *headset-cmp-out-buffer*, type (pointer uint8) +(define *headset-cmp-out-buffer* (new 'static 'array uint8 100 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +;; definition for symbol *headset-cmp-out-frames*, type int +(define *headset-cmp-out-frames* 0) + +;; definition for symbol *headset-scratch-buffer*, type (pointer uint8) +(define *headset-scratch-buffer* (new 'static 'array uint8 160 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +;; definition for symbol *headset-mix-buffer*, type (pointer uint8) +(define *headset-mix-buffer* (new 'static 'array uint8 160 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + ) + ) + +;; definition for symbol *headset-decoder-ids*, type (pointer int8) +(define *headset-decoder-ids* (new 'static 'array int8 4 0 0 0 0)) + +;; definition for symbol *headset-decoder-ptrs*, type (array nci-codec-io-block) +(define *headset-decoder-ptrs* + (new 'static 'boxed-array :type nci-codec-io-block :length 0 :allocated-length 4) + ) + +;; definition of type headset-decoder +(deftype headset-decoder (structure) + ((client-idx int8) + (last-time int32) + (cmp-queue headset-queue :inline) + (io nci-codec-io-block :inline) + (scratch uint8 16) + (id int8) + ) + :allow-misaligned + ) + +;; definition for method 3 of type headset-decoder +(defmethod inspect ((this headset-decoder)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'headset-decoder) + (format #t "~1Tclient-idx: ~D~%" (-> this client-idx)) + (format #t "~1Tlast-time: ~D~%" (-> this last-time)) + (format #t "~1Tcmp-queue: #~%" (-> this cmp-queue)) + (format #t "~1Tio: #~%" (-> this io)) + (format #t "~1Tscratch[16] @ #x~X~%" (-> this scratch)) + (format #t "~1Tid: ~D~%" (-> this id)) + (label cfg-4) + this + ) + +;; definition of type headset +(deftype headset (process) + ((flags uint32) + (decoders headset-decoder 4 :inline) + (client-to-decoder uint8 16) + (encoder-io nci-codec-io-block :inline) + (last-speech-time int32) + (prev-operation basic) + (bytes-in-playback-queue int32) + (first-send basic) + (frame-ct int32) + (client-talking uint8 16) + ) + (:methods + (headset-method-15 () none) + (headset-method-16 () none) + (headset-method-17 () none) + (headset-method-18 () none) + (headset-method-19 () none) + (headset-method-20 () none) + (headset-method-21 () none) + (headset-method-22 () none) + (headset-method-23 () none) + (headset-method-24 () none) + (headset-method-25 () none) + (headset-method-26 () none) + (headset-method-27 () none) + (headset-method-28 () none) + (headset-method-29 () none) + (headset-method-30 () none) + (headset-method-31 () none) + (headset-method-32 () none) + ) + ) + +;; definition for method 3 of type headset +(defmethod inspect ((this headset)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process inspect))) + (t9-0 this) + ) + (format #t "~2Tflags: ~D~%" (-> this flags)) + (format #t "~2Tdecoders[4] @ #x~X~%" (-> this decoders)) + (format #t "~2Tclient-to-decoder[16] @ #x~X~%" (-> this client-to-decoder)) + (format #t "~2Tencoder-io: #~%" (-> this encoder-io)) + (format #t "~2Tlast-speech-time: ~D~%" (-> this last-speech-time)) + (format #t "~2Tprev-operation: ~A~%" (-> this prev-operation)) + (format #t "~2Tbytes-in-playback-queue: ~D~%" (-> this bytes-in-playback-queue)) + (format #t "~2Tfirst-send: ~A~%" (-> this first-send)) + (format #t "~2Tframe-ct: ~D~%" (-> this frame-ct)) + (format #t "~2Tclient-talking[16] @ #x~X~%" (-> this client-talking)) + (label cfg-4) + this + ) + +;; definition for symbol *headset*, type headset +(define *headset* (the-as headset #f)) + + + + diff --git a/test/decompiler/reference/jakx/engine/ps2/memcard-h_REF.gc b/test/decompiler/reference/jakx/engine/ps2/memcard-h_REF.gc new file mode 100644 index 0000000000..71509c516d --- /dev/null +++ b/test/decompiler/reference/jakx/engine/ps2/memcard-h_REF.gc @@ -0,0 +1,279 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type mc-handle +(deftype mc-handle (int32) + () + ) + +;; definition of type mc-file-info +(deftype mc-file-info (structure) + "Data stored in a save file." + ((present int32) + (blind-data float 24) + (blind-data-int8 int8 96 :overlay-at (-> blind-data 0)) + (level-index int32 :overlay-at (-> blind-data 0)) + (gem-count float :overlay-at (-> blind-data 1)) + (skill-count float :overlay-at (-> blind-data 2)) + (completion-percentage float :overlay-at (-> blind-data 3)) + (minute uint8 :overlay-at (-> blind-data 5)) + (hour uint8 :overlay-at (-> blind-data-int8 21)) + (week uint8 :overlay-at (-> blind-data-int8 22)) + (day uint8 :overlay-at (-> blind-data-int8 23)) + (month uint8 :overlay-at (-> blind-data 6)) + (year uint8 :overlay-at (-> blind-data-int8 25)) + (language uint8 :overlay-at (-> blind-data-int8 26)) + (game-time0 uint32 :overlay-at (-> blind-data 8)) + (game-time1 uint32 :overlay-at (-> blind-data 9)) + (purchase-secrets uint32 :overlay-at (-> blind-data 10)) + (secrets uint32 :overlay-at (-> blind-data 12)) + (features uint32 :overlay-at (-> blind-data 14)) + (name uint8 16 :overlay-at (-> blind-data 16)) + ) + :pack-me + ) + +;; definition for method 3 of type mc-file-info +(defmethod inspect ((this mc-file-info)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'mc-file-info) + (format #t "~1Tpresent: ~D~%" (-> this present)) + (format #t "~1Tblind-data[24] @ #x~X~%" (-> this blind-data)) + (format #t "~1Tblind-data-int8[96] @ #x~X~%" (-> this blind-data)) + (format #t "~1Tlevel-index: ~D~%" (-> this level-index)) + (format #t "~1Tgem-count: ~f~%" (-> this gem-count)) + (format #t "~1Tskill-count: ~f~%" (-> this skill-count)) + (format #t "~1Tcompletion-percentage: ~f~%" (-> this completion-percentage)) + (format #t "~1Tminute: #x~X~%" (-> this minute)) + (format #t "~1Thour: #x~X~%" (-> this hour)) + (format #t "~1Tweek: #x~X~%" (-> this week)) + (format #t "~1Tday: #x~X~%" (-> this day)) + (format #t "~1Tmonth: #x~X~%" (-> this month)) + (format #t "~1Tyear: #x~X~%" (-> this year)) + (format #t "~1Tlanguage: ~D~%" (-> this language)) + (format #t "~1Tgame-time0: ~D~%" (-> this game-time0)) + (format #t "~1Tgame-time1: ~D~%" (-> this game-time1)) + (format #t "~1Tpurchase-secrets: #x~X~%" (&-> this purchase-secrets)) + (format #t "~1Tsecrets: #x~X~%" (&-> this secrets)) + (format #t "~1Tfeatures: #x~X~%" (&-> this features)) + (format #t "~1Tname[16] @ #x~X~%" (-> this name)) + (label cfg-4) + this + ) + +;; definition of type mc-slot-info +(deftype mc-slot-info (structure) + "Data about a memory card slot." + ((handle mc-handle) + (known int32) + (formatted int32) + (inited int32) + (last-file int32) + (mem-required int32) + (mem-actual int32) + (file mc-file-info 4 :inline) + ) + ) + +;; definition for method 3 of type mc-slot-info +(defmethod inspect ((this mc-slot-info)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'mc-slot-info) + (format #t "~1Thandle: ~D~%" (-> this handle)) + (format #t "~1Tknown: ~D~%" (-> this known)) + (format #t "~1Tformatted: ~D~%" (-> this formatted)) + (format #t "~1Tinited: ~D~%" (-> this inited)) + (format #t "~1Tlast-file: ~D~%" (-> this last-file)) + (format #t "~1Tmem-required: ~D~%" (-> this mem-required)) + (format #t "~1Tmem-actual: ~D~%" (-> this mem-actual)) + (format #t "~1Tfile[4] @ #x~X~%" (-> this file)) + (label cfg-4) + this + ) + +;; definition for function mc-sync +(defun mc-sync () + (let ((v0-0 0)) + (while (zero? v0-0) + (mc-run) + (set! v0-0 (the-as int (mc-check-result))) + ) + v0-0 + ) + ) + +;; definition for function show-mc-info +;; WARN: Return type mismatch int vs none. +(defun show-mc-info ((arg0 dma-buffer)) + (let ((s5-0 (new 'stack-no-clear 'mc-slot-info))) + (dotimes (s4-0 2) + (mc-get-slot-info s4-0 s5-0) + (cond + ((zero? (-> s5-0 known)) + (format (clear *temp-string*) "SLOT ~D: EXAMINING SLOT~%" s4-0) + *temp-string* + ) + ((zero? (-> s5-0 handle)) + (format (clear *temp-string*) "SLOT ~D: NO CARD~%" s4-0) + *temp-string* + ) + ((zero? (-> s5-0 formatted)) + (format (clear *temp-string*) "SLOT ~D: CARD [~D] : NOT FORMATTED~%" s4-0 (-> s5-0 handle)) + *temp-string* + ) + ((zero? (-> s5-0 inited)) + (format + (clear *temp-string*) + "SLOT ~D: CARD [~D] : NO FILE [~D/~D]~%" + s4-0 + (-> s5-0 handle) + (-> s5-0 mem-required) + (-> s5-0 mem-actual) + ) + *temp-string* + ) + (else + (format (clear *temp-string*) "SLOT ~D: CARD [~D] : " s4-0 (-> s5-0 handle)) + *temp-string* + (format + *temp-string* + "SAVES ~D ~D ~D ~D : LAST ~D~%" + (-> s5-0 file 0 present) + (-> s5-0 file 1 present) + (-> s5-0 file 2 present) + (-> s5-0 file 3 present) + (-> s5-0 last-file) + ) + ) + ) + (draw-string-xy *temp-string* arg0 32 (+ (* 12 s4-0) 8) (font-color red) (font-flags shadow)) + ) + ) + 0 + (none) + ) + +;; definition of type stored-network-account +(deftype stored-network-account (structure) + ((name uint8 64) + (password uint8 64) + ) + :pack-me + (:methods + (stored-network-account-method-9 () none) + (stored-network-account-method-10 () none) + ) + ) + +;; definition for method 3 of type stored-network-account +(defmethod inspect ((this stored-network-account)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'stored-network-account) + (format #t "~1Tname[64] @ #x~X~%" (-> this name)) + (format #t "~1Tpassword[64] @ #x~X~%" (-> this password)) + (label cfg-4) + this + ) + +;; definition of type stored-network-accounts +(deftype stored-network-accounts (structure) + ((accounts stored-network-account 4 :inline) + (default-idx int8) + (ct int8) + ) + :allow-misaligned + (:methods + (stored-network-accounts-method-9 () none) + ) + ) + +;; definition for method 3 of type stored-network-accounts +(defmethod inspect ((this stored-network-accounts)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'stored-network-accounts) + (format #t "~1Taccounts[4] @ #x~X~%" (-> this accounts)) + (format #t "~1Tdefault-idx: ~D~%" (-> this default-idx)) + (format #t "~1Tct: ~D~%" (-> this ct)) + (label cfg-4) + this + ) + +;; definition of type mc-common-data +(deftype mc-common-data (structure) + ((magic uint32) + (crc uint32) + (version uint32) + (data uint8 1012) + (net-accounts stored-network-accounts :inline :overlay-at (-> data 0)) + ) + ) + +;; definition for method 3 of type mc-common-data +(defmethod inspect ((this mc-common-data)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'mc-common-data) + (format #t "~1Tmagic: ~D~%" (-> this magic)) + (format #t "~1Tcrc: ~D~%" (-> this crc)) + (format #t "~1Tversion: ~D~%" (-> this version)) + (format #t "~1Tdata[1012] @ #x~X~%" (-> this data)) + (format #t "~1Tnet-accounts: #~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition of type mc-patch-data +(deftype mc-patch-data (structure) + ((magic uint32) + (crc uint32) + (version uint32) + (size uint32) + (data uint8 524272) + ) + ) + +;; definition for method 3 of type mc-patch-data +(defmethod inspect ((this mc-patch-data)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'mc-patch-data) + (format #t "~1Tmagic: ~D~%" (-> this magic)) + (format #t "~1Tcrc: ~D~%" (-> this crc)) + (format #t "~1Tversion: ~D~%" (-> this version)) + (format #t "~1Tsize: ~D~%" (-> this size)) + (format #t "~1Tdata[524272] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; definition for symbol *mc-common-data*, type mc-common-data +(define *mc-common-data* (new 'static 'mc-common-data)) + +;; definition for symbol *mc-patch-data*, type mc-patch-data +(define *mc-patch-data* (the-as mc-patch-data #f)) + +;; definition for symbol *mc-last-result*, type mc-status-code +(define *mc-last-result* (mc-status-code ok)) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/scene/fmv-player-h_REF.gc b/test/decompiler/reference/jakx/engine/scene/fmv-player-h_REF.gc new file mode 100644 index 0000000000..032d9f711d --- /dev/null +++ b/test/decompiler/reference/jakx/engine/scene/fmv-player-h_REF.gc @@ -0,0 +1,2122 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type m2v-caption +(deftype m2v-caption (structure) + ((text-id text-id) + (start int32) + (end int32) + ) + ) + +;; definition for method 3 of type m2v-caption +(defmethod inspect ((this m2v-caption)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'm2v-caption) + (format #t "~1Ttext-id: ~D~%" (-> this text-id)) + (format #t "~1Tstart: ~D~%" (-> this start)) + (format #t "~1Tend: ~D~%" (-> this end)) + (label cfg-4) + this + ) + +;; definition of type m2v-info +(deftype m2v-info (structure) + ((name basic) + (sound basic) + (commentary-sound basic) + (captions basic) + (commentary-captions (array m2v-caption)) + (id uint32) + (idx int8) + (driver uint8) + (driver2 uint8) + (flags uint8) + ) + ) + +;; definition for method 3 of type m2v-info +(defmethod inspect ((this m2v-info)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'm2v-info) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tsound: ~A~%" (-> this sound)) + (format #t "~1Tcommentary-sound: ~A~%" (-> this commentary-sound)) + (format #t "~1Tcaptions: ~A~%" (-> this captions)) + (format #t "~1Tcommentary-captions: ~A~%" (-> this commentary-captions)) + (format #t "~1Tid: ~D~%" (-> this id)) + (format #t "~1Tidx: ~D~%" (-> this idx)) + (format #t "~1Tdriver: ~D~%" (-> this driver)) + (format #t "~1Tdriver2: ~D~%" (-> this driver2)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (label cfg-4) + this + ) + +;; definition of type fmv-player +(deftype fmv-player (process) + ((texture-base-page uint32) + (texture-width uint32) + (gui-id uint32) + (subtitle-change-time uint64) + (start-time uint64) + (fmv-mode uint8) + ) + (:methods + (fmv-player-method-15 () none) + (fmv-player-method-16 () none) + (fmv-player-method-17 () none) + (fmv-player-method-18 () none) + (fmv-player-method-19 () none) + ) + ) + +;; definition for method 3 of type fmv-player +(defmethod inspect ((this fmv-player)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process inspect))) + (t9-0 this) + ) + (format #t "~2Ttexture-base-page: ~D~%" (-> this texture-base-page)) + (format #t "~2Ttexture-width: ~D~%" (-> this texture-width)) + (format #t "~2Tgui-id: ~D~%" (-> this gui-id)) + (format #t "~2Tsubtitle-change-time: ~D~%" (-> this subtitle-change-time)) + (format #t "~2Tstart-time: ~D~%" (-> this start-time)) + (format #t "~2Tfmv-mode: ~D~%" (-> this fmv-mode)) + (label cfg-4) + this + ) + +;; definition for symbol *fmv-player*, type fmv-player +(define *fmv-player* (the-as fmv-player #f)) + +;; definition of type fmv-display-params +(deftype fmv-display-params (structure) + ((display-mode int32) + (texture-base-page uint32) + (texture-width uint32) + (frame-base-pointer uint32) + (display-width uint32) + (display-height uint32) + (display-dx int32) + (display-dy int32) + (contrast float) + (brightness float) + (fast-z-clear int32) + (frame-buffer-mask uint32) + ) + ) + +;; definition for method 3 of type fmv-display-params +(defmethod inspect ((this fmv-display-params)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'fmv-display-params) + (format #t "~1Tdisplay-mode: ~D~%" (-> this display-mode)) + (format #t "~1Ttexture-base-page: ~D~%" (-> this texture-base-page)) + (format #t "~1Ttexture-width: ~D~%" (-> this texture-width)) + (format #t "~1Tframe-base-pointer: ~D~%" (-> this frame-base-pointer)) + (format #t "~1Tdisplay-width: ~D~%" (-> this display-width)) + (format #t "~1Tdisplay-height: ~D~%" (-> this display-height)) + (format #t "~1Tdisplay-dx: ~D~%" (-> this display-dx)) + (format #t "~1Tdisplay-dy: ~D~%" (-> this display-dy)) + (format #t "~1Tcontrast: ~f~%" (-> this contrast)) + (format #t "~1Tbrightness: ~f~%" (-> this brightness)) + (format #t "~1Tfast-z-clear: ~D~%" (-> this fast-z-clear)) + (format #t "~1Tframe-buffer-mask: ~D~%" (-> this frame-buffer-mask)) + (label cfg-4) + this + ) + +;; definition of type fmv-player-params +(deftype fmv-player-params (structure) + ((display-mode fmv-display-params :inline) + (file-init basic) + (file-read basic) + (get-time basic) + (video-type int32) + (zoom-mode int32) + (upper-field-first int32) + (buffer-mode int32) + (work-mem uint32) + (work-mem-size uint32) + ) + (:methods + (fmv-player-params-method-9 () none) + ) + ) + +;; definition for method 3 of type fmv-player-params +(defmethod inspect ((this fmv-player-params)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'fmv-player-params) + (format #t "~1Tdisplay-mode: #~%" (-> this display-mode)) + (format #t "~1Tfile-init: ~A~%" (-> this file-init)) + (format #t "~1Tfile-read: ~A~%" (-> this file-read)) + (format #t "~1Tget-time: ~A~%" (-> this get-time)) + (format #t "~1Tvideo-type: ~D~%" (-> this video-type)) + (format #t "~1Tzoom-mode: ~D~%" (-> this zoom-mode)) + (format #t "~1Tupper-field-first: ~D~%" (-> this upper-field-first)) + (format #t "~1Tbuffer-mode: ~D~%" (-> this buffer-mode)) + (format #t "~1Twork-mem: #x~X~%" (-> this work-mem)) + (format #t "~1Twork-mem-size: ~D~%" (-> this work-mem-size)) + (label cfg-4) + this + ) + +;; definition for symbol *m2v-info*, type (array m2v-info) +(define *m2v-info* (new 'static 'boxed-array :type m2v-info + (new 'static 'm2v-info + :name "intro" + :sound "intro-full" + :commentary-sound "intro" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2961) :start #x3a3 :end #x3fe) + (new 'static 'm2v-caption :text-id (text-id text-id-2962) :start #x3ff :end #x456) + (new 'static 'm2v-caption :text-id (text-id text-id-2963) :start #x457 :end #x4c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2964) :start #x4c4 :end #x521) + (new 'static 'm2v-caption :text-id (text-id text-id-2965) :start #x533 :end #x585) + (new 'static 'm2v-caption :text-id (text-id text-id-2966) :start #x586 :end #x5cf) + (new 'static 'm2v-caption :text-id (text-id text-id-2967) :start #x5d1 :end #x5ff) + (new 'static 'm2v-caption :text-id (text-id text-id-2968) :start #x600 :end #x638) + (new 'static 'm2v-caption :text-id (text-id text-id-2969) :start #x639 :end #x686) + (new 'static 'm2v-caption :text-id (text-id text-id-2970) :start #x69f :end #x6d0) + (new 'static 'm2v-caption :text-id (text-id text-id-2971) :start #x6e0 :end #x6fd) + (new 'static 'm2v-caption :text-id (text-id text-id-2972) :start #x6ff :end #x75d) + (new 'static 'm2v-caption :text-id (text-id text-id-2973) :start #x75f :end #x7a7) + (new 'static 'm2v-caption :text-id (text-id text-id-2974) :start #x7b4 :end #x7d1) + (new 'static 'm2v-caption :text-id (text-id text-id-2975) :start #x7db :end #x80a) + (new 'static 'm2v-caption :text-id (text-id text-id-2976) :start #x80b :end #x851) + (new 'static 'm2v-caption :text-id (text-id text-id-2977) :start #x852 :end #x88d) + (new 'static 'm2v-caption :text-id (text-id text-id-2978) :start #x88e :end #x8b3) + (new 'static 'm2v-caption :text-id (text-id text-id-2979) :start #x8b5 :end #x91f) + (new 'static 'm2v-caption :text-id (text-id text-id-2980) :start #x920 :end #x975) + (new 'static 'm2v-caption :text-id (text-id text-id-2981) :start #x976 :end #x9a4) + (new 'static 'm2v-caption :text-id (text-id text-id-2982) :start #x9a5 :end #x9e3) + (new 'static 'm2v-caption :text-id (text-id text-id-2983) :start #xc6f :end #xcf1) + (new 'static 'm2v-caption :text-id (text-id text-id-2984) :start #xd23 :end #xd74) + (new 'static 'm2v-caption :text-id (text-id text-id-2985) :start #xd75 :end #xdbb) + (new 'static 'm2v-caption :text-id (text-id text-id-2986) :start #xdc6 :end #xe19) + (new 'static 'm2v-caption :text-id (text-id text-id-2987) :start #xe1a :end #xe7c) + (new 'static 'm2v-caption :text-id (text-id text-id-2988) :start #xe89 :end #xec7) + (new 'static 'm2v-caption :text-id (text-id text-id-2989) :start #xec8 :end #xefe) + (new 'static 'm2v-caption :text-id (text-id text-id-2990) :start #x13f3 :end #x1429) + (new 'static 'm2v-caption :text-id (text-id text-id-2991) :start #x142a :end #x1466) + (new 'static 'm2v-caption :text-id (text-id text-id-2992) :start #x1467 :end #x14ae) + (new 'static 'm2v-caption :text-id (text-id text-id-2993) :start #x14b3 :end #x14c2) + (new 'static 'm2v-caption :text-id (text-id text-id-2994) :start #x14c4 :end #x14fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2995) :start #x14fb :end #x154a) + (new 'static 'm2v-caption :text-id (text-id text-id-2996) :start #x1558 :end #x1591) + (new 'static 'm2v-caption :text-id (text-id text-id-2997) :start #x15a3 :end #x1605) + (new 'static 'm2v-caption :text-id (text-id text-id-2998) :start #x1608 :end #x161f) + (new 'static 'm2v-caption :text-id (text-id text-id-2999) :start #x16ca :end #x1707) + (new 'static 'm2v-caption :text-id (text-id text-id-3000) :start #x17de :end #x1802) + (new 'static 'm2v-caption :text-id (text-id text-id-3001) :start #x1806 :end #x186a) + (new 'static 'm2v-caption :text-id (text-id text-id-3002) :start #x188d :end #x18a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3003) :start #x18cc :end #x192c) + (new 'static 'm2v-caption :text-id (text-id text-id-3004) :start #x19bc :end #x19df) + (new 'static 'm2v-caption :text-id (text-id text-id-3005) :start #x19e0 :end #x1a0f) + (new 'static 'm2v-caption :text-id (text-id text-id-3006) :start #x1a10 :end #x1a45) + (new 'static 'm2v-caption :text-id (text-id text-id-3007) :start #x1a49 :end #x1a97) + (new 'static 'm2v-caption :text-id (text-id text-id-3008) :start #x1a9e :end #x1aca) + (new 'static 'm2v-caption :text-id (text-id text-id-3009) :start #x1ae4 :end #x1b01) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4692) :start #x67 :end #xe0) + (new 'static 'm2v-caption :text-id (text-id text-id-4693) :start #xe1 :end #x118) + (new 'static 'm2v-caption :text-id (text-id text-id-4694) :start #x119 :end #x1a5) + (new 'static 'm2v-caption :text-id (text-id text-id-4695) :start #x1a6 :end #x21f) + (new 'static 'm2v-caption :text-id (text-id text-id-4696) :start #x220 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-4697) :start #x26c :end #x2df) + (new 'static 'm2v-caption :text-id (text-id text-id-4698) :start #x2e0 :end #x350) + (new 'static 'm2v-caption :text-id (text-id text-id-4699) :start #x351 :end #x3c1) + (new 'static 'm2v-caption :text-id (text-id text-id-4700) :start #x3d9 :end #x425) + (new 'static 'm2v-caption :text-id (text-id text-id-4701) :start #x426 :end #x4a2) + (new 'static 'm2v-caption :text-id (text-id text-id-4702) :start #x4a3 :end #x50b) + (new 'static 'm2v-caption :text-id (text-id text-id-4703) :start #x50c :end #x55b) + (new 'static 'm2v-caption :text-id (text-id text-id-4704) :start #x55c :end #x5bc) + (new 'static 'm2v-caption :text-id (text-id text-id-4705) :start #x5bd :end #x605) + (new 'static 'm2v-caption :text-id (text-id text-id-4706) :start #x606 :end #x674) + (new 'static 'm2v-caption :text-id (text-id text-id-4707) :start #x675 :end #x6a9) + (new 'static 'm2v-caption :text-id (text-id text-id-4708) :start #x6aa :end #x6db) + (new 'static 'm2v-caption :text-id (text-id text-id-4709) :start #x6dc :end #x75e) + (new 'static 'm2v-caption :text-id (text-id text-id-4710) :start #x75f :end #x7ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4711) :start #x7ba :end #x813) + (new 'static 'm2v-caption :text-id (text-id text-id-4712) :start #x814 :end #x873) + (new 'static 'm2v-caption :text-id (text-id text-id-4713) :start #x874 :end #x8cb) + (new 'static 'm2v-caption :text-id (text-id text-id-4714) :start #x8cc :end #x8fc) + (new 'static 'm2v-caption :text-id (text-id text-id-4715) :start #x8fd :end #x928) + (new 'static 'm2v-caption :text-id (text-id text-id-4716) :start #x929 :end #x96f) + (new 'static 'm2v-caption :text-id (text-id text-id-4717) :start #x970 :end #x9bc) + (new 'static 'm2v-caption :text-id (text-id text-id-4718) :start #x9bd :end #x9f2) + (new 'static 'm2v-caption :text-id (text-id text-id-4719) :start #x9f3 :end #xa28) + (new 'static 'm2v-caption :text-id (text-id text-id-4720) :start #xa4d :end #xab2) + (new 'static 'm2v-caption :text-id (text-id text-id-4721) :start #xab3 :end #xb07) + (new 'static 'm2v-caption :text-id (text-id text-id-4722) :start #xb08 :end #xb3e) + (new 'static 'm2v-caption :text-id (text-id text-id-4723) :start #xb3f :end #xbd1) + (new 'static 'm2v-caption :text-id (text-id text-id-4724) :start #xbd2 :end #xc46) + (new 'static 'm2v-caption :text-id (text-id text-id-4725) :start #xc47 :end #xc8b) + (new 'static 'm2v-caption :text-id (text-id text-id-4726) :start #xc8c :end #xcd8) + (new 'static 'm2v-caption :text-id (text-id text-id-4727) :start #xd2c :end #xd80) + (new 'static 'm2v-caption :text-id (text-id text-id-4728) :start #xd81 :end #xe26) + (new 'static 'm2v-caption :text-id (text-id text-id-4729) :start #xe27 :end #xe7c) + (new 'static 'm2v-caption :text-id (text-id text-id-4730) :start #xe7d :end #xf13) + (new 'static 'm2v-caption :text-id (text-id text-id-4731) :start #xf5a :end #xfba) + (new 'static 'm2v-caption :text-id (text-id text-id-4732) :start #xfbb :end #x1048) + (new 'static 'm2v-caption :text-id (text-id text-id-4733) :start #x1049 :end #x10ca) + (new 'static 'm2v-caption :text-id (text-id text-id-4734) :start #x10cb :end #x10e8) + (new 'static 'm2v-caption :text-id (text-id text-id-4736) :start #x10e9 :end #x115b) + (new 'static 'm2v-caption :text-id (text-id text-id-4735) :start #x115c :end #x11a7) + (new 'static 'm2v-caption :text-id (text-id text-id-4737) :start #x11a8 :end #x120c) + (new 'static 'm2v-caption :text-id (text-id text-id-4738) :start #x120d :end #x127a) + (new 'static 'm2v-caption :text-id (text-id text-id-4739) :start #x127b :end #x12ce) + (new 'static 'm2v-caption :text-id (text-id text-id-4740) :start #x12cf :end #x1352) + (new 'static 'm2v-caption :text-id (text-id text-id-4741) :start #x1353 :end #x13b9) + (new 'static 'm2v-caption :text-id (text-id text-id-4742) :start #x13ba :end #x13fe) + (new 'static 'm2v-caption :text-id (text-id text-id-4743) :start #x13ff :end #x1487) + (new 'static 'm2v-caption :text-id (text-id text-id-4744) :start #x1488 :end #x1503) + (new 'static 'm2v-caption :text-id (text-id text-id-4745) :start #x1504 :end #x159d) + (new 'static 'm2v-caption :text-id (text-id text-id-4746) :start #x159e :end #x161e) + (new 'static 'm2v-caption :text-id (text-id text-id-4747) :start #x161f :end #x1694) + (new 'static 'm2v-caption :text-id (text-id text-id-4748) :start #x1695 :end #x16f3) + (new 'static 'm2v-caption :text-id (text-id text-id-4749) :start #x16f4 :end #x1774) + (new 'static 'm2v-caption :text-id (text-id text-id-4750) :start #x1775 :end #x17ad) + (new 'static 'm2v-caption :text-id (text-id text-id-4751) :start #x17ae :end #x180d) + (new 'static 'm2v-caption :text-id (text-id text-id-4752) :start #x180e :end #x1874) + (new 'static 'm2v-caption :text-id (text-id text-id-4753) :start #x1875 :end #x18e7) + (new 'static 'm2v-caption :text-id (text-id text-id-4754) :start #x1907 :end #x1963) + (new 'static 'm2v-caption :text-id (text-id text-id-4755) :start #x1964 :end #x19d2) + (new 'static 'm2v-caption :text-id (text-id text-id-4756) :start #x19d3 :end #x1a30) + (new 'static 'm2v-caption :text-id (text-id text-id-4757) :start #x1a31 :end #x1a80) + (new 'static 'm2v-caption :text-id (text-id text-id-4758) :start #x1a81 :end #x1aef) + (new 'static 'm2v-caption :text-id (text-id text-id-4759) :start #x1af0 :end #x1b56) + (new 'static 'm2v-caption :text-id (text-id text-id-4760) :start #x1b57 :end #x1b93) + (new 'static 'm2v-caption :text-id (text-id text-id-4761) :start #x1b94 :end #x1bf2) + (new 'static 'm2v-caption :text-id (text-id text-id-4762) :start #x1bf3 :end #x1c34) + ) + :id #xd6e + :idx 1 + :driver #x17 + :driver2 #x17 + :flags #x8 + ) + (new 'static 'm2v-info + :name "introb" + :sound "intro-boardroom" + :commentary-sound "introb" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2833) :start 35 :end #x6a) + (new 'static 'm2v-caption :text-id (text-id text-id-2834) :start #x6b :end #x93) + (new 'static 'm2v-caption :text-id (text-id text-id-2835) :start #x9d :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-2836) :start #xce :end #xf6) + (new 'static 'm2v-caption :text-id (text-id text-id-2837) :start #xf7 :end #x15b) + (new 'static 'm2v-caption :text-id (text-id text-id-2838) :start #x15c :end #x1bb) + (new 'static 'm2v-caption :text-id (text-id text-id-2839) :start #x1c3 :end #x1f1) + (new 'static 'm2v-caption :text-id (text-id text-id-2840) :start #x1f2 :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-2886) :start #x243 :end #x273) + (new 'static 'm2v-caption :text-id (text-id text-id-2842) :start #x275 :end #x2c9) + (new 'static 'm2v-caption :text-id (text-id text-id-2843) :start #x2ca :end #x322) + (new 'static 'm2v-caption :text-id (text-id text-id-2844) :start #x323 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-2845) :start #x372 :end #x409) + (new 'static 'm2v-caption :text-id (text-id text-id-2846) :start #x424 :end #x4b0) + (new 'static 'm2v-caption :text-id (text-id text-id-2847) :start #x514 :end #x56d) + (new 'static 'm2v-caption :text-id (text-id text-id-2848) :start #x590 :end #x5ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2849) :start #x5eb :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2850) :start #x683 :end #x6fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2851) :start #x6fc :end #x763) + (new 'static 'm2v-caption :text-id (text-id text-id-2852) :start #x764 :end #x7dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2853) :start #x7dd :end #x85f) + (new 'static 'm2v-caption :text-id (text-id text-id-2854) :start #x860 :end #x8c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2855) :start #x8c6 :end #x93b) + (new 'static 'm2v-caption :text-id (text-id text-id-2856) :start #x942 :end #x94b) + (new 'static 'm2v-caption :text-id (text-id text-id-2857) :start #x94c :end #x955) + (new 'static 'm2v-caption :text-id (text-id text-id-2858) :start #x956 :end #x960) + (new 'static 'm2v-caption :text-id (text-id text-id-2859) :start #x968 :end #x9a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2860) :start #x9a7 :end #xa1c) + (new 'static 'm2v-caption :text-id (text-id text-id-2861) :start #xa1d :end #xa97) + (new 'static 'm2v-caption :text-id (text-id text-id-2862) :start #xa98 :end #xae9) + (new 'static 'm2v-caption :text-id (text-id text-id-2863) :start #xaea :end #xb3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2864) :start #xb3f :end #xb53) + (new 'static 'm2v-caption :text-id (text-id text-id-2865) :start #xb58 :end #xbe1) + (new 'static 'm2v-caption :text-id (text-id text-id-2866) :start #xbe2 :end #xc3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2867) :start #xc3f :end #xcac) + (new 'static 'm2v-caption :text-id (text-id text-id-2868) :start #xcad :end #xd08) + (new 'static 'm2v-caption :text-id (text-id text-id-2869) :start #xd09 :end #xd6d) + (new 'static 'm2v-caption :text-id (text-id text-id-2870) :start #xd86 :end #xdb7) + (new 'static 'm2v-caption :text-id (text-id text-id-2871) :start #xdbe :end #xe21) + (new 'static 'm2v-caption :text-id (text-id text-id-2872) :start #xe22 :end #xe5d) + (new 'static 'm2v-caption :text-id (text-id text-id-2873) :start #xe63 :end #xe9b) + (new 'static 'm2v-caption :text-id (text-id text-id-2874) :start #xe9e :end #xecf) + (new 'static 'm2v-caption :text-id (text-id text-id-2875) :start #xed9 :end #xf00) + (new 'static 'm2v-caption :text-id (text-id text-id-2876) :start #xf10 :end #xf73) + (new 'static 'm2v-caption :text-id (text-id text-id-2877) :start #xf60 :end #xfbf) + (new 'static 'm2v-caption :text-id (text-id text-id-2878) :start #xfc0 :end #xff7) + (new 'static 'm2v-caption :text-id (text-id text-id-2879) :start #xff8 :end #x103e) + (new 'static 'm2v-caption :text-id (text-id text-id-2880) :start #x1055 :end #x10c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2881) :start #x10d1 :end #x10ed) + (new 'static 'm2v-caption :text-id (text-id text-id-2882) :start #x10ee :end #x1148) + (new 'static 'm2v-caption :text-id (text-id text-id-2883) :start #x1153 :end #x1194) + (new 'static 'm2v-caption :text-id (text-id text-id-2884) :start #x1195 :end #x11fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2885) :start #x11fb :end #x125a) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4763) :start 2 :end 29) + (new 'static 'm2v-caption :text-id (text-id text-id-4764) :start 30 :end #x80) + (new 'static 'm2v-caption :text-id (text-id text-id-4765) :start #x81 :end #xfa) + (new 'static 'm2v-caption :text-id (text-id text-id-4766) :start #xfb :end #x155) + (new 'static 'm2v-caption :text-id (text-id text-id-4767) :start #x156 :end #x1c9) + (new 'static 'm2v-caption :text-id (text-id text-id-4768) :start #x1ca :end #x204) + (new 'static 'm2v-caption :text-id (text-id text-id-4769) :start #x205 :end #x25d) + (new 'static 'm2v-caption :text-id (text-id text-id-4770) :start #x25e :end #x2a4) + (new 'static 'm2v-caption :text-id (text-id text-id-4771) :start #x2a5 :end #x2d5) + (new 'static 'm2v-caption :text-id (text-id text-id-4772) :start #x2d6 :end #x311) + (new 'static 'm2v-caption :text-id (text-id text-id-4773) :start #x312 :end #x3a6) + (new 'static 'm2v-caption :text-id (text-id text-id-4774) :start #x3c9 :end #x41d) + (new 'static 'm2v-caption :text-id (text-id text-id-4775) :start #x41e :end #x459) + (new 'static 'm2v-caption :text-id (text-id text-id-4776) :start #x45a :end #x4bf) + (new 'static 'm2v-caption :text-id (text-id text-id-4777) :start #x4c0 :end #x502) + (new 'static 'm2v-caption :text-id (text-id text-id-4778) :start #x503 :end #x57a) + (new 'static 'm2v-caption :text-id (text-id text-id-4779) :start #x57b :end #x5f6) + (new 'static 'm2v-caption :text-id (text-id text-id-4780) :start #x5f7 :end #x627) + (new 'static 'm2v-caption :text-id (text-id text-id-4781) :start #x63d :end #x6c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4782) :start #x6c8 :end #x703) + (new 'static 'm2v-caption :text-id (text-id text-id-4783) :start #x704 :end #x766) + (new 'static 'm2v-caption :text-id (text-id text-id-4784) :start #x767 :end #x7c4) + (new 'static 'm2v-caption :text-id (text-id text-id-4785) :start #x7c5 :end #x83f) + (new 'static 'm2v-caption :text-id (text-id text-id-4786) :start #x840 :end #x8b1) + (new 'static 'm2v-caption :text-id (text-id text-id-4787) :start #x8b2 :end #x922) + (new 'static 'm2v-caption :text-id (text-id text-id-4788) :start #x949 :end #x9cc) + (new 'static 'm2v-caption :text-id (text-id text-id-4789) :start #x9cd :end #xa26) + (new 'static 'm2v-caption :text-id (text-id text-id-4791) :start #xa27 :end #xa76) + (new 'static 'm2v-caption :text-id (text-id text-id-4792) :start #xa77 :end #xaf7) + (new 'static 'm2v-caption :text-id (text-id text-id-4790) :start #xaf8 :end #xb7d) + (new 'static 'm2v-caption :text-id (text-id text-id-4793) :start #xb7e :end #xbe7) + (new 'static 'm2v-caption :text-id (text-id text-id-4794) :start #xbe8 :end #xc29) + (new 'static 'm2v-caption :text-id (text-id text-id-4795) :start #xc2a :end #xc63) + (new 'static 'm2v-caption :text-id (text-id text-id-4796) :start #xc64 :end #xcc5) + (new 'static 'm2v-caption :text-id (text-id text-id-4797) :start #xcc6 :end #xd2a) + (new 'static 'm2v-caption :text-id (text-id text-id-4798) :start #xd2b :end #xd97) + (new 'static 'm2v-caption :text-id (text-id text-id-4799) :start #xd98 :end #xe16) + (new 'static 'm2v-caption :text-id (text-id text-id-4800) :start #xe17 :end #xe71) + (new 'static 'm2v-caption :text-id (text-id text-id-4801) :start #xe72 :end #xed3) + (new 'static 'm2v-caption :text-id (text-id text-id-4802) :start #xed4 :end #xf41) + (new 'static 'm2v-caption :text-id (text-id text-id-4803) :start #xf42 :end #xfa4) + (new 'static 'm2v-caption :text-id (text-id text-id-4804) :start #xfa5 :end #xfd2) + (new 'static 'm2v-caption :text-id (text-id text-id-4805) :start #xfd3 :end #x104f) + (new 'static 'm2v-caption :text-id (text-id text-id-4806) :start #x1050 :end #x1084) + (new 'static 'm2v-caption :text-id (text-id text-id-4807) :start #x1085 :end #x10e3) + (new 'static 'm2v-caption :text-id (text-id text-id-4808) :start #x10e4 :end #x1156) + (new 'static 'm2v-caption :text-id (text-id text-id-4809) :start #x1157 :end #x11a9) + (new 'static 'm2v-caption :text-id (text-id text-id-4810) :start #x11aa :end #x11f3) + (new 'static 'm2v-caption :text-id (text-id text-id-4811) :start #x11f4 :end #x1254) + ) + :id #xd6f + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "firaintr" + :sound "002-first-race-intro" + :commentary-sound "firaintr" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2278) :start 23 :end 99) + (new 'static 'm2v-caption :text-id (text-id text-id-2279) :start 100 :end #xba) + (new 'static 'm2v-caption :text-id (text-id text-id-2280) :start #xbb :end #x119) + (new 'static 'm2v-caption :text-id (text-id text-id-2281) :start #x11a :end #x16e) + (new 'static 'm2v-caption :text-id (text-id text-id-2282) :start #x16f :end #x1b7) + (new 'static 'm2v-caption :text-id (text-id text-id-2283) :start #x1b8 :end #x23a) + (new 'static 'm2v-caption :text-id (text-id text-id-2284) :start #x23b :end #x293) + (new 'static 'm2v-caption :text-id (text-id text-id-2285) :start #x294 :end #x2e4) + (new 'static 'm2v-caption :text-id (text-id text-id-2286) :start #x2e5 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-2287) :start #x36e :end #x3b1) + (new 'static 'm2v-caption :text-id (text-id text-id-2288) :start #x3b2 :end #x421) + (new 'static 'm2v-caption :text-id (text-id text-id-2289) :start #x433 :end #x451) + (new 'static 'm2v-caption :text-id (text-id text-id-2290) :start #x454 :end #x4a5) + (new 'static 'm2v-caption :text-id (text-id text-id-2291) :start #x4a6 :end #x524) + (new 'static 'm2v-caption :text-id (text-id text-id-2292) :start #x525 :end #x579) + (new 'static 'm2v-caption :text-id (text-id text-id-2293) :start #x57a :end #x5af) + (new 'static 'm2v-caption :text-id (text-id text-id-2294) :start #x5b1 :end #x5d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2295) :start #x5d7 :end #x61c) + (new 'static 'm2v-caption :text-id (text-id text-id-2296) :start #x61d :end #x653) + (new 'static 'm2v-caption :text-id (text-id text-id-2297) :start #x65a :end #x6a8) + (new 'static 'm2v-caption :text-id (text-id text-id-2298) :start #x6a9 :end #x6d6) + (new 'static 'm2v-caption :text-id (text-id text-id-2299) :start #x6d8 :end #x706) + (new 'static 'm2v-caption :text-id (text-id text-id-2300) :start #x707 :end #x758) + (new 'static 'm2v-caption :text-id (text-id text-id-2301) :start #x764 :end #x7d7) + (new 'static 'm2v-caption :text-id (text-id text-id-2302) :start #x7d8 :end #x811) + (new 'static 'm2v-caption :text-id (text-id text-id-2303) :start #x812 :end #x844) + (new 'static 'm2v-caption :text-id (text-id text-id-2304) :start #x845 :end #x879) + (new 'static 'm2v-caption :text-id (text-id text-id-2305) :start #x87a :end #x8e4) + (new 'static 'm2v-caption :text-id (text-id text-id-2306) :start #x8e5 :end #x968) + (new 'static 'm2v-caption :text-id (text-id text-id-2307) :start #x969 :end #x9d6) + (new 'static 'm2v-caption :text-id (text-id text-id-2308) :start #x9d7 :end #xa02) + (new 'static 'm2v-caption :text-id (text-id text-id-2309) :start #xa03 :end #xa75) + (new 'static 'm2v-caption :text-id (text-id text-id-2310) :start #xa76 :end #xaff) + (new 'static 'm2v-caption :text-id (text-id text-id-2311) :start #xb00 :end #xb48) + (new 'static 'm2v-caption :text-id (text-id text-id-2312) :start #xb5e :end #xb77) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4660) :start 1 :end 40) + (new 'static 'm2v-caption :text-id (text-id text-id-4661) :start 45 :end #x6a) + (new 'static 'm2v-caption :text-id (text-id text-id-4662) :start #x6b :end #x100) + (new 'static 'm2v-caption :text-id (text-id text-id-4663) :start #x101 :end #x163) + (new 'static 'm2v-caption :text-id (text-id text-id-4664) :start #x164 :end #x1ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4665) :start #x1bb :end #x1e4) + (new 'static 'm2v-caption :text-id (text-id text-id-4666) :start #x1e5 :end #x226) + (new 'static 'm2v-caption :text-id (text-id text-id-4667) :start #x227 :end #x256) + (new 'static 'm2v-caption :text-id (text-id text-id-4668) :start #x257 :end #x299) + (new 'static 'm2v-caption :text-id (text-id text-id-4669) :start #x29a :end #x315) + (new 'static 'm2v-caption :text-id (text-id text-id-4670) :start #x316 :end #x360) + (new 'static 'm2v-caption :text-id (text-id text-id-4671) :start #x361 :end #x3db) + (new 'static 'm2v-caption :text-id (text-id text-id-4672) :start #x3dc :end #x43e) + (new 'static 'm2v-caption :text-id (text-id text-id-4673) :start #x43f :end #x47b) + (new 'static 'm2v-caption :text-id (text-id text-id-4674) :start #x47c :end #x4d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4675) :start #x4d5 :end #x548) + (new 'static 'm2v-caption :text-id (text-id text-id-4676) :start #x549 :end #x5c5) + (new 'static 'm2v-caption :text-id (text-id text-id-4677) :start #x5c6 :end #x611) + (new 'static 'm2v-caption :text-id (text-id text-id-4678) :start #x612 :end #x670) + (new 'static 'm2v-caption :text-id (text-id text-id-4679) :start #x671 :end #x6b4) + (new 'static 'm2v-caption :text-id (text-id text-id-4680) :start #x6b5 :end #x739) + (new 'static 'm2v-caption :text-id (text-id text-id-4681) :start #x73a :end #x764) + (new 'static 'm2v-caption :text-id (text-id text-id-4682) :start #x765 :end #x7ed) + (new 'static 'm2v-caption :text-id (text-id text-id-4683) :start #x7ee :end #x824) + (new 'static 'm2v-caption :text-id (text-id text-id-4684) :start #x825 :end #x866) + (new 'static 'm2v-caption :text-id (text-id text-id-4685) :start #x867 :end #x8b4) + (new 'static 'm2v-caption :text-id (text-id text-id-4686) :start #x8b5 :end #x960) + (new 'static 'm2v-caption :text-id (text-id text-id-4687) :start #x961 :end #x9dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4688) :start #x9dd :end #xa3c) + (new 'static 'm2v-caption :text-id (text-id text-id-4689) :start #xa3d :end #xaa0) + (new 'static 'm2v-caption :text-id (text-id text-id-4690) :start #xaa1 :end #xb2c) + (new 'static 'm2v-caption :text-id (text-id text-id-4691) :start #xb42 :end #xb66) + ) + :id #xd70 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "firares" + :sound "2-first-race-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2190) :start 40 :end #x9b) + (new 'static 'm2v-caption :text-id (text-id text-id-2189) :start #x9c :end #xce) + (new 'static 'm2v-caption :text-id (text-id text-id-2188) :start #xcf :end #x163) + (new 'static 'm2v-caption :text-id (text-id text-id-2187) :start #x164 :end #x1d7) + (new 'static 'm2v-caption :text-id (text-id text-id-2186) :start #x1d8 :end #x1e0) + (new 'static 'm2v-caption :text-id (text-id text-id-2208) :start #x1e8 :end #x238) + (new 'static 'm2v-caption :text-id (text-id text-id-2209) :start #x23c :end #x25f) + (new 'static 'm2v-caption :text-id (text-id text-id-2210) :start #x261 :end #x2d2) + (new 'static 'm2v-caption :text-id (text-id text-id-2211) :start #x2d5 :end #x2f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2212) :start #x2fb :end #x353) + (new 'static 'm2v-caption :text-id (text-id text-id-2213) :start #x354 :end #x3c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2214) :start #x3cb :end #x437) + (new 'static 'm2v-caption :text-id (text-id text-id-2215) :start #x438 :end #x473) + (new 'static 'm2v-caption :text-id (text-id text-id-2216) :start #x474 :end #x4c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2217) :start #x4c4 :end #x4f2) + (new 'static 'm2v-caption :text-id (text-id text-id-2218) :start #x4f3 :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-2219) :start #x541 :end #x56b) + (new 'static 'm2v-caption :text-id (text-id text-id-2220) :start #x56c :end #x5d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2221) :start #x5d4 :end #x627) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd71 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "daporeal" + :sound "3-daxter-poison-real" + :commentary-sound "daporeal" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2179) :start 17 :end #x8a) + (new 'static 'm2v-caption :text-id (text-id text-id-2178) :start #x8b :end #xd6) + (new 'static 'm2v-caption :text-id (text-id text-id-2177) :start #xdb :end #x102) + (new 'static 'm2v-caption :text-id (text-id text-id-2176) :start #x103 :end #x13d) + (new 'static 'm2v-caption :text-id (text-id text-id-2175) :start #x13e :end #x180) + (new 'static 'm2v-caption :text-id (text-id text-id-2174) :start #x181 :end #x1aa) + (new 'static 'm2v-caption :text-id (text-id text-id-2173) :start #x1ad :end #x1dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2171) :start #x1dd :end #x216) + (new 'static 'm2v-caption :text-id (text-id text-id-2172) :start #x21f :end #x29f) + (new 'static 'm2v-caption :text-id (text-id text-id-2170) :start #x2ac :end #x2e1) + (new 'static 'm2v-caption :text-id (text-id text-id-2169) :start #x2e9 :end #x337) + (new 'static 'm2v-caption :text-id (text-id text-id-2168) :start #x338 :end #x359) + (new 'static 'm2v-caption :text-id (text-id text-id-2167) :start #x35e :end #x380) + (new 'static 'm2v-caption :text-id (text-id text-id-2166) :start #x387 :end #x3eb) + (new 'static 'm2v-caption :text-id (text-id text-id-2165) :start #x3ec :end #x431) + (new 'static 'm2v-caption :text-id (text-id text-id-2164) :start #x43a :end #x4a3) + (new 'static 'm2v-caption :text-id (text-id text-id-2163) :start #x4a7 :end #x4c9) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4370) :start 1 :end 40) + (new 'static 'm2v-caption :text-id (text-id text-id-4371) :start 45 :end #x72) + (new 'static 'm2v-caption :text-id (text-id text-id-4372) :start #x73 :end #xb5) + (new 'static 'm2v-caption :text-id (text-id text-id-4373) :start #xb6 :end #x111) + (new 'static 'm2v-caption :text-id (text-id text-id-4374) :start #x112 :end #x171) + (new 'static 'm2v-caption :text-id (text-id text-id-4375) :start #x172 :end #x1ca) + (new 'static 'm2v-caption :text-id (text-id text-id-4376) :start #x1cb :end #x220) + (new 'static 'm2v-caption :text-id (text-id text-id-4377) :start #x221 :end #x2dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4378) :start #x2dd :end #x34f) + (new 'static 'm2v-caption :text-id (text-id text-id-4379) :start #x350 :end #x37c) + (new 'static 'm2v-caption :text-id (text-id text-id-4380) :start #x37d :end #x3cf) + (new 'static 'm2v-caption :text-id (text-id text-id-4381) :start #x3d0 :end #x41e) + (new 'static 'm2v-caption :text-id (text-id text-id-4382) :start #x41f :end #x45a) + ) + :id #xd72 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "jafaraze" + :sound "10-jak-faces-razer" + :commentary-sound "jafaraze" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2149) :start 62 :end #x7b) + (new 'static 'm2v-caption :text-id (text-id text-id-2147) :start #x7c :end #xc9) + (new 'static 'm2v-caption :text-id (text-id text-id-2146) :start #xce :end #x179) + (new 'static 'm2v-caption :text-id (text-id text-id-2144) :start #x184 :end #x1a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2145) :start #x1a8 :end #x1c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2143) :start #x1c2 :end #x1e2) + (new 'static 'm2v-caption :text-id (text-id text-id-2142) :start #x1e5 :end #x245) + (new 'static 'm2v-caption :text-id (text-id text-id-2140) :start #x249 :end #x2dd) + (new 'static 'm2v-caption :text-id (text-id text-id-2141) :start #x2de :end #x329) + (new 'static 'm2v-caption :text-id (text-id text-id-2139) :start #x32a :end #x374) + (new 'static 'm2v-caption :text-id (text-id text-id-2137) :start #x37d :end #x3a2) + (new 'static 'm2v-caption :text-id (text-id text-id-2138) :start #x3c8 :end #x404) + (new 'static 'm2v-caption :text-id (text-id text-id-2136) :start #x40d :end #x428) + (new 'static 'm2v-caption :text-id (text-id text-id-2135) :start #x430 :end #x47f) + (new 'static 'm2v-caption :text-id (text-id text-id-2267) :start #x480 :end #x4f2) + (new 'static 'm2v-caption :text-id (text-id text-id-2133) :start #x4f3 :end #x554) + (new 'static 'm2v-caption :text-id (text-id text-id-2132) :start #x555 :end #x5a8) + (new 'static 'm2v-caption :text-id (text-id text-id-2131) :start #x5ae :end #x5d9) + (new 'static 'm2v-caption :text-id (text-id text-id-2130) :start #x5df :end #x676) + (new 'static 'm2v-caption :text-id (text-id text-id-2129) :start #x677 :end #x6c6) + (new 'static 'm2v-caption :text-id (text-id text-id-2128) :start #x6c9 :end #x757) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4434) :start 51 :end 85) + (new 'static 'm2v-caption :text-id (text-id text-id-4435) :start 86 :end #x10b) + (new 'static 'm2v-caption :text-id (text-id text-id-4436) :start #x10c :end #x18a) + (new 'static 'm2v-caption :text-id (text-id text-id-4438) :start #x18b :end #x1dd) + (new 'static 'm2v-caption :text-id (text-id text-id-4437) :start #x1de :end #x225) + (new 'static 'm2v-caption :text-id (text-id text-id-4439) :start #x226 :end #x286) + (new 'static 'm2v-caption :text-id (text-id text-id-4440) :start #x287 :end #x304) + (new 'static 'm2v-caption :text-id (text-id text-id-4441) :start #x305 :end #x37e) + (new 'static 'm2v-caption :text-id (text-id text-id-4442) :start #x37f :end #x422) + (new 'static 'm2v-caption :text-id (text-id text-id-4443) :start #x423 :end #x479) + (new 'static 'm2v-caption :text-id (text-id text-id-4444) :start #x48d :end #x525) + (new 'static 'm2v-caption :text-id (text-id text-id-4445) :start #x526 :end #x568) + (new 'static 'm2v-caption :text-id (text-id text-id-4446) :start #x569 :end #x64d) + (new 'static 'm2v-caption :text-id (text-id text-id-4447) :start #x64e :end #x69c) + (new 'static 'm2v-caption :text-id (text-id text-id-4448) :start #x69d :end #x72a) + ) + :id #xd74 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "blderace" + :sound "9-blitz-deathdrome" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2162) :start 55 :end #x99) + (new 'static 'm2v-caption :text-id (text-id text-id-2161) :start #xa8 :end #x117) + (new 'static 'm2v-caption :text-id (text-id text-id-2160) :start #x118 :end #x185) + (new 'static 'm2v-caption :text-id (text-id text-id-2159) :start #x186 :end #x202) + (new 'static 'm2v-caption :text-id (text-id text-id-2158) :start #x203 :end #x246) + (new 'static 'm2v-caption :text-id (text-id text-id-2157) :start #x247 :end #x2c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2156) :start #x2ca :end #x301) + (new 'static 'm2v-caption :text-id (text-id text-id-2148) :start #x302 :end #x33a) + (new 'static 'm2v-caption :text-id (text-id text-id-2150) :start #x341 :end #x37e) + (new 'static 'm2v-caption :text-id (text-id text-id-2151) :start #x38b :end #x3e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2152) :start #x3e6 :end #x434) + (new 'static 'm2v-caption :text-id (text-id text-id-2153) :start #x435 :end #x4cf) + (new 'static 'm2v-caption :text-id (text-id text-id-2154) :start #x4d0 :end #x533) + (new 'static 'm2v-caption :text-id (text-id text-id-2155) :start #x534 :end #x5bc) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd73 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "peckshow" + :sound "12-pecker-added-to-show" + :commentary-sound "peckshow" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2229) :start 20 :end 100) + (new 'static 'm2v-caption :text-id (text-id text-id-2230) :start #x65 :end #xed) + (new 'static 'm2v-caption :text-id (text-id text-id-2231) :start #xee :end #x124) + (new 'static 'm2v-caption :text-id (text-id text-id-2232) :start #x125 :end #x189) + (new 'static 'm2v-caption :text-id (text-id text-id-2233) :start #x18a :end #x22a) + (new 'static 'm2v-caption :text-id (text-id text-id-2234) :start #x22b :end #x274) + (new 'static 'm2v-caption :text-id (text-id text-id-2235) :start #x280 :end #x2e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2236) :start #x2e6 :end #x354) + (new 'static 'm2v-caption :text-id (text-id text-id-2237) :start #x358 :end #x3fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2238) :start #x402 :end #x437) + (new 'static 'm2v-caption :text-id (text-id text-id-2239) :start #x438 :end #x48b) + (new 'static 'm2v-caption :text-id (text-id text-id-2240) :start #x48f :end #x4f4) + (new 'static 'm2v-caption :text-id (text-id text-id-2241) :start #x4f5 :end #x555) + (new 'static 'm2v-caption :text-id (text-id text-id-2242) :start #x556 :end #x5cf) + (new 'static 'm2v-caption :text-id (text-id text-id-2243) :start #x5d0 :end #x616) + (new 'static 'm2v-caption :text-id (text-id text-id-2244) :start #x617 :end #x663) + (new 'static 'm2v-caption :text-id (text-id text-id-2245) :start #x664 :end #x6c6) + (new 'static 'm2v-caption :text-id (text-id text-id-2246) :start #x6c7 :end #x762) + (new 'static 'm2v-caption :text-id (text-id text-id-2247) :start #x76b :end #x799) + (new 'static 'm2v-caption :text-id (text-id text-id-2248) :start #x79a :end #x810) + (new 'static 'm2v-caption :text-id (text-id text-id-2249) :start #x816 :end #x848) + (new 'static 'm2v-caption :text-id (text-id text-id-2250) :start #x855 :end #x87c) + (new 'static 'm2v-caption :text-id (text-id text-id-2251) :start #x87d :end #x89f) + (new 'static 'm2v-caption :text-id (text-id text-id-2252) :start #x8a0 :end #x8bd) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4313) :start 12 :end 59) + (new 'static 'm2v-caption :text-id (text-id text-id-4314) :start 60 :end #xcc) + (new 'static 'm2v-caption :text-id (text-id text-id-4315) :start #xeb :end #x181) + (new 'static 'm2v-caption :text-id (text-id text-id-4316) :start #x182 :end #x1c6) + (new 'static 'm2v-caption :text-id (text-id text-id-4317) :start #x1d7 :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-4318) :start #x243 :end #x2c2) + (new 'static 'm2v-caption :text-id (text-id text-id-4319) :start #x2ed :end #x30f) + (new 'static 'm2v-caption :text-id (text-id text-id-4320) :start #x310 :end #x363) + (new 'static 'm2v-caption :text-id (text-id text-id-4321) :start #x364 :end #x399) + (new 'static 'm2v-caption :text-id (text-id text-id-4322) :start #x39a :end #x3f7) + (new 'static 'm2v-caption :text-id (text-id text-id-4323) :start #x3f8 :end #x490) + (new 'static 'm2v-caption :text-id (text-id text-id-4324) :start #x491 :end #x4ec) + (new 'static 'm2v-caption :text-id (text-id text-id-4325) :start #x4ed :end #x57d) + (new 'static 'm2v-caption :text-id (text-id text-id-4326) :start #x597 :end #x5bf) + (new 'static 'm2v-caption :text-id (text-id text-id-4327) :start #x5c0 :end #x62f) + (new 'static 'm2v-caption :text-id (text-id text-id-4328) :start #x630 :end #x6c0) + (new 'static 'm2v-caption :text-id (text-id text-id-4329) :start #x6c1 :end #x74d) + (new 'static 'm2v-caption :text-id (text-id text-id-4330) :start #x74e :end #x7a0) + (new 'static 'm2v-caption :text-id (text-id text-id-4331) :start #x7a1 :end #x7de) + (new 'static 'm2v-caption :text-id (text-id text-id-4332) :start #x82a :end #x88a) + (new 'static 'm2v-caption :text-id (text-id text-id-4333) :start #x88b :end #x8bd) + ) + :id #xd75 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "meetur86" + :sound "025-meet-ur86" + :commentary-sound "meetur86" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2352) :start 27 :end 84) + (new 'static 'm2v-caption :text-id (text-id text-id-2353) :start 85 :end #xb1) + (new 'static 'm2v-caption :text-id (text-id text-id-2354) :start #xb2 :end #x101) + (new 'static 'm2v-caption :text-id (text-id text-id-2355) :start #x102 :end #x16a) + (new 'static 'm2v-caption :text-id (text-id text-id-2356) :start #x16e :end #x1b5) + (new 'static 'm2v-caption :text-id (text-id text-id-2357) :start #x1b6 :end #x205) + (new 'static 'm2v-caption :text-id (text-id text-id-2358) :start #x206 :end #x25b) + (new 'static 'm2v-caption :text-id (text-id text-id-2359) :start #x260 :end #x2ae) + (new 'static 'm2v-caption :text-id (text-id text-id-2360) :start #x2b7 :end #x33f) + (new 'static 'm2v-caption :text-id (text-id text-id-2361) :start #x346 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-2362) :start #x37d :end #x3ad) + (new 'static 'm2v-caption :text-id (text-id text-id-2363) :start #x3b8 :end #x430) + (new 'static 'm2v-caption :text-id (text-id text-id-2364) :start #x438 :end #x46e) + (new 'static 'm2v-caption :text-id (text-id text-id-2365) :start #x46f :end #x4de) + (new 'static 'm2v-caption :text-id (text-id text-id-2366) :start #x4df :end #x519) + (new 'static 'm2v-caption :text-id (text-id text-id-2367) :start #x52f :end #x5a9) + (new 'static 'm2v-caption :text-id (text-id text-id-2368) :start #x5b1 :end #x616) + (new 'static 'm2v-caption :text-id (text-id text-id-2369) :start #x617 :end #x63f) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4416) :start 1 :end 22) + (new 'static 'm2v-caption :text-id (text-id text-id-4417) :start 25 :end 84) + (new 'static 'm2v-caption :text-id (text-id text-id-4418) :start 85 :end #x74) + (new 'static 'm2v-caption :text-id (text-id text-id-4419) :start #x75 :end #xe8) + (new 'static 'm2v-caption :text-id (text-id text-id-4420) :start #xe9 :end #x175) + (new 'static 'm2v-caption :text-id (text-id text-id-4421) :start #x176 :end #x1e8) + (new 'static 'm2v-caption :text-id (text-id text-id-4422) :start #x1e9 :end #x24e) + (new 'static 'm2v-caption :text-id (text-id text-id-4423) :start #x24f :end #x29e) + (new 'static 'm2v-caption :text-id (text-id text-id-4911) :start #x29f :end #x336) + (new 'static 'm2v-caption :text-id (text-id text-id-4425) :start #x337 :end #x396) + (new 'static 'm2v-caption :text-id (text-id text-id-4426) :start #x397 :end #x405) + (new 'static 'm2v-caption :text-id (text-id text-id-4427) :start #x406 :end #x48e) + (new 'static 'm2v-caption :text-id (text-id text-id-4428) :start #x48f :end #x4d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4429) :start #x4d8 :end #x58a) + (new 'static 'm2v-caption :text-id (text-id text-id-4430) :start #x58b :end #x5ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4431) :start #x5bb :end #x5dd) + (new 'static 'm2v-caption :text-id (text-id text-id-4432) :start #x5de :end #x658) + (new 'static 'm2v-caption :text-id (text-id text-id-4433) :start #x659 :end #x6be) + ) + :id #xd77 + :driver #xb + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "bleagadg" + :sound "4-blitz-earn-gadgets" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2207) :start 47 :end #x7f) + (new 'static 'm2v-caption :text-id (text-id text-id-2206) :start #x80 :end #xf1) + (new 'static 'm2v-caption :text-id (text-id text-id-2205) :start #xf2 :end #x16c) + (new 'static 'm2v-caption :text-id (text-id text-id-2204) :start #x16d :end #x1bd) + (new 'static 'm2v-caption :text-id (text-id text-id-2203) :start #x1c4 :end #x1e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2202) :start #x1e6 :end #x20e) + (new 'static 'm2v-caption :text-id (text-id text-id-2201) :start #x210 :end #x27e) + (new 'static 'm2v-caption :text-id (text-id text-id-2200) :start #x27f :end #x2be) + (new 'static 'm2v-caption :text-id (text-id text-id-2199) :start #x2bf :end #x313) + (new 'static 'm2v-caption :text-id (text-id text-id-2198) :start #x314 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-2197) :start #x374 :end #x38a) + (new 'static 'm2v-caption :text-id (text-id text-id-2195) :start #x38d :end #x3b7) + (new 'static 'm2v-caption :text-id (text-id text-id-2196) :start #x3b9 :end #x425) + (new 'static 'm2v-caption :text-id (text-id text-id-2194) :start #x426 :end #x4a0) + (new 'static 'm2v-caption :text-id (text-id text-id-2193) :start #x4a1 :end #x4d4) + (new 'static 'm2v-caption :text-id (text-id text-id-2192) :start #x4d5 :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-2191) :start #x541 :end #x57b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd76 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "sireturn" + :sound "81-sig-returns" + :commentary-sound "sireturn" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2117) :start 20 :end 78) + (new 'static 'm2v-caption :text-id (text-id text-id-2116) :start 79 :end #xb0) + (new 'static 'm2v-caption :text-id (text-id text-id-2115) :start #xb1 :end #x103) + (new 'static 'm2v-caption :text-id (text-id text-id-2113) :start #x104 :end #x187) + (new 'static 'm2v-caption :text-id (text-id text-id-2114) :start #x188 :end #x1e6) + (new 'static 'm2v-caption :text-id (text-id text-id-2112) :start #x1fc :end #x24f) + (new 'static 'm2v-caption :text-id (text-id text-id-2111) :start #x258 :end #x27d) + (new 'static 'm2v-caption :text-id (text-id text-id-2109) :start #x283 :end #x2bc) + (new 'static 'm2v-caption :text-id (text-id text-id-2110) :start #x2c0 :end #x2d9) + (new 'static 'm2v-caption :text-id (text-id text-id-2108) :start #x2e1 :end #x320) + (new 'static 'm2v-caption :text-id (text-id text-id-2107) :start #x321 :end #x368) + (new 'static 'm2v-caption :text-id (text-id text-id-2105) :start #x369 :end #x37e) + (new 'static 'm2v-caption :text-id (text-id text-id-2106) :start #x37f :end #x3c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2104) :start #x3cb :end #x417) + (new 'static 'm2v-caption :text-id (text-id text-id-2103) :start #x424 :end #x453) + (new 'static 'm2v-caption :text-id (text-id text-id-2102) :start #x454 :end #x4a3) + (new 'static 'm2v-caption :text-id (text-id text-id-2101) :start #x4a4 :end #x4ff) + (new 'static 'm2v-caption :text-id (text-id text-id-2100) :start #x506 :end #x571) + (new 'static 'm2v-caption :text-id (text-id text-id-2099) :start #x575 :end #x5da) + (new 'static 'm2v-caption :text-id (text-id text-id-2098) :start #x5e7 :end #x603) + (new 'static 'm2v-caption :text-id (text-id text-id-2097) :start #x606 :end #x649) + (new 'static 'm2v-caption :text-id (text-id text-id-2096) :start #x64a :end #x694) + (new 'static 'm2v-caption :text-id (text-id text-id-2095) :start #x695 :end #x6fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2094) :start #x6fc :end #x775) + (new 'static 'm2v-caption :text-id (text-id text-id-2093) :start #x77c :end #x7bb) + (new 'static 'm2v-caption :text-id (text-id text-id-2092) :start #x7bc :end #x7f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2091) :start #x806 :end #x848) + (new 'static 'm2v-caption :text-id (text-id text-id-2090) :start #x849 :end #x881) + (new 'static 'm2v-caption :text-id (text-id text-id-2089) :start #x882 :end #x8de) + (new 'static 'm2v-caption :text-id (text-id text-id-2088) :start #x8df :end #x929) + (new 'static 'm2v-caption :text-id (text-id text-id-2087) :start #x92a :end #x99c) + (new 'static 'm2v-caption :text-id (text-id text-id-2086) :start #x989 :end #x9c8) + (new 'static 'm2v-caption :text-id (text-id text-id-2085) :start #x9d0 :end #x9f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2083) :start #x9fe :end #xa23) + (new 'static 'm2v-caption :text-id (text-id text-id-2084) :start #xa24 :end #xa7b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4554) :start 1 :end 16) + (new 'static 'm2v-caption :text-id (text-id text-id-4555) :start 17 :end 89) + (new 'static 'm2v-caption :text-id (text-id text-id-4556) :start 90 :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-4557) :start #xc7 :end #xf1) + (new 'static 'm2v-caption :text-id (text-id text-id-4558) :start #xf2 :end #x13a) + (new 'static 'm2v-caption :text-id (text-id text-id-4559) :start #x13b :end #x194) + (new 'static 'm2v-caption :text-id (text-id text-id-4560) :start #x195 :end #x1fd) + (new 'static 'm2v-caption :text-id (text-id text-id-4561) :start #x1fe :end #x249) + (new 'static 'm2v-caption :text-id (text-id text-id-4562) :start #x24a :end #x2a3) + (new 'static 'm2v-caption :text-id (text-id text-id-4563) :start #x2a4 :end #x323) + (new 'static 'm2v-caption :text-id (text-id text-id-4564) :start #x324 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-4565) :start #x372 :end #x3d9) + (new 'static 'm2v-caption :text-id (text-id text-id-4566) :start #x40d :end #x475) + (new 'static 'm2v-caption :text-id (text-id text-id-4567) :start #x476 :end #x4bb) + (new 'static 'm2v-caption :text-id (text-id text-id-4568) :start #x4bc :end #x513) + (new 'static 'm2v-caption :text-id (text-id text-id-4569) :start #x514 :end #x56e) + (new 'static 'm2v-caption :text-id (text-id text-id-4570) :start #x56f :end #x5b4) + (new 'static 'm2v-caption :text-id (text-id text-id-4571) :start #x5b5 :end #x60e) + (new 'static 'm2v-caption :text-id (text-id text-id-4572) :start #x60f :end #x63c) + (new 'static 'm2v-caption :text-id (text-id text-id-4573) :start #x656 :end #x696) + (new 'static 'm2v-caption :text-id (text-id text-id-4574) :start #x697 :end #x6dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4575) :start #x6dd :end #x72b) + (new 'static 'm2v-caption :text-id (text-id text-id-4576) :start #x72c :end #x76b) + (new 'static 'm2v-caption :text-id (text-id text-id-4577) :start #x795 :end #x7df) + (new 'static 'm2v-caption :text-id (text-id text-id-4578) :start #x7e0 :end #x7fb) + (new 'static 'm2v-caption :text-id (text-id text-id-4579) :start #x7fc :end #x82f) + (new 'static 'm2v-caption :text-id (text-id text-id-4580) :start #x830 :end #x847) + (new 'static 'm2v-caption :text-id (text-id text-id-4581) :start #x848 :end #x8cb) + (new 'static 'm2v-caption :text-id (text-id text-id-4582) :start #x8cc :end #x90f) + (new 'static 'm2v-caption :text-id (text-id text-id-4583) :start #x910 :end #x9c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4584) :start #x9c6 :end #x9f4) + (new 'static 'm2v-caption :text-id (text-id text-id-4585) :start #x9f5 :end #xa2b) + (new 'static 'm2v-caption :text-id (text-id text-id-4586) :start #xa2c :end #xa68) + ) + :id #xd78 + :driver #xa + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "urborain" + :sound "32-ur86-boss-race-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3051) :start 5 :end 71) + (new 'static 'm2v-caption :text-id (text-id text-id-3052) :start 72 :end #x9d) + (new 'static 'm2v-caption :text-id (text-id text-id-3054) :start #xa7 :end #x100) + (new 'static 'm2v-caption :text-id (text-id text-id-3055) :start #x101 :end #x14f) + (new 'static 'm2v-caption :text-id (text-id text-id-3056) :start #x150 :end #x1a7) + (new 'static 'm2v-caption :text-id (text-id text-id-3057) :start #x1a8 :end #x201) + (new 'static 'm2v-caption :text-id (text-id text-id-3058) :start #x202 :end #x273) + (new 'static 'm2v-caption :text-id (text-id text-id-3059) :start #x274 :end #x2d0) + (new 'static 'm2v-caption :text-id (text-id text-id-3060) :start #x2d3 :end #x32e) + (new 'static 'm2v-caption :text-id (text-id text-id-3061) :start #x333 :end #x387) + (new 'static 'm2v-caption :text-id (text-id text-id-3062) :start #x3a2 :end #x3ba) + (new 'static 'm2v-caption :text-id (text-id text-id-3063) :start #x3c1 :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3064) :start #x3e8 :end #x410) + (new 'static 'm2v-caption :text-id (text-id text-id-3065) :start #x411 :end #x458) + (new 'static 'm2v-caption :text-id (text-id text-id-3573) :start #x45b :end #x482) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd79 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "urborare" + :sound "32-ur86-boss-race-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3067) :start 3 :end 71) + (new 'static 'm2v-caption :text-id (text-id text-id-3068) :start 72 :end #x74) + (new 'static 'm2v-caption :text-id (text-id text-id-3069) :start #x75 :end #xc1) + (new 'static 'm2v-caption :text-id (text-id text-id-3070) :start #xc8 :end #x11f) + (new 'static 'm2v-caption :text-id (text-id text-id-3071) :start #x120 :end #x17f) + (new 'static 'm2v-caption :text-id (text-id text-id-3072) :start #x180 :end #x1bf) + (new 'static 'm2v-caption :text-id (text-id text-id-3073) :start #x1c6 :end #x1fa) + (new 'static 'm2v-caption :text-id (text-id text-id-3075) :start #x1fb :end #x24a) + (new 'static 'm2v-caption :text-id (text-id text-id-3076) :start #x24b :end #x28d) + (new 'static 'm2v-caption :text-id (text-id text-id-3077) :start #x28e :end #x295) + (new 'static 'm2v-caption :text-id (text-id text-id-3078) :start #x296 :end #x2c1) + (new 'static 'm2v-caption :text-id (text-id text-id-3079) :start #x2c2 :end #x2d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3080) :start #x2d2 :end #x2dc) + (new 'static 'm2v-caption :text-id (text-id text-id-3081) :start #x2dd :end #x2e8) + (new 'static 'm2v-caption :text-id (text-id text-id-3082) :start #x2e9 :end #x2f0) + (new 'static 'm2v-caption :text-id (text-id text-id-3083) :start #x2f1 :end #x32d) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd7a + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jahanoch" + :sound "21-jak-has-no-chance" + :commentary-sound "jahanoch" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2770) :start 18 :end 65) + (new 'static 'm2v-caption :text-id (text-id text-id-2771) :start 66 :end #x9e) + (new 'static 'm2v-caption :text-id (text-id text-id-2772) :start #x9f :end #x11f) + (new 'static 'm2v-caption :text-id (text-id text-id-2773) :start #x120 :end #x188) + (new 'static 'm2v-caption :text-id (text-id text-id-2774) :start #x18f :end #x1f6) + (new 'static 'm2v-caption :text-id (text-id text-id-2775) :start #x1ff :end #x261) + (new 'static 'm2v-caption :text-id (text-id text-id-2776) :start #x262 :end #x2e6) + (new 'static 'm2v-caption :text-id (text-id text-id-2777) :start #x2e8 :end #x32c) + (new 'static 'm2v-caption :text-id (text-id text-id-2778) :start #x333 :end #x348) + (new 'static 'm2v-caption :text-id (text-id text-id-2779) :start #x34d :end #x37a) + (new 'static 'm2v-caption :text-id (text-id text-id-2780) :start #x37c :end #x3ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2781) :start #x3eb :end #x438) + (new 'static 'm2v-caption :text-id (text-id text-id-2782) :start #x439 :end #x476) + (new 'static 'm2v-caption :text-id (text-id text-id-2783) :start #x477 :end #x4d2) + (new 'static 'm2v-caption :text-id (text-id text-id-2784) :start #x4d7 :end #x54b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4399) :start 2 :end 35) + (new 'static 'm2v-caption :text-id (text-id text-id-4400) :start 36 :end #x6f) + (new 'static 'm2v-caption :text-id (text-id text-id-4401) :start #x70 :end #xce) + (new 'static 'm2v-caption :text-id (text-id text-id-4402) :start #xcf :end #x136) + (new 'static 'm2v-caption :text-id (text-id text-id-4403) :start #x137 :end #x190) + (new 'static 'm2v-caption :text-id (text-id text-id-4404) :start #x191 :end #x1d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4405) :start #x1d8 :end #x21a) + (new 'static 'm2v-caption :text-id (text-id text-id-4406) :start #x21b :end #x275) + (new 'static 'm2v-caption :text-id (text-id text-id-4407) :start #x276 :end #x2ad) + (new 'static 'm2v-caption :text-id (text-id text-id-4408) :start #x2ae :end #x2fd) + (new 'static 'm2v-caption :text-id (text-id text-id-4409) :start #x2fe :end #x347) + (new 'static 'm2v-caption :text-id (text-id text-id-4410) :start #x348 :end #x3a8) + (new 'static 'm2v-caption :text-id (text-id text-id-4411) :start #x3a9 :end #x408) + (new 'static 'm2v-caption :text-id (text-id text-id-4412) :start #x42b :end #x477) + (new 'static 'm2v-caption :text-id (text-id text-id-4413) :start #x48b :end #x4e1) + (new 'static 'm2v-caption :text-id (text-id text-id-4414) :start #x4e2 :end #x518) + (new 'static 'm2v-caption :text-id (text-id text-id-4415) :start #x519 :end #x54d) + ) + :id #xd7b + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "kewatora" + :sound "006-keira-wants-to-race" + :commentary-sound "kewatora" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2434) :start 34 :end #x9c) + (new 'static 'm2v-caption :text-id (text-id text-id-2435) :start #xa2 :end #xec) + (new 'static 'm2v-caption :text-id (text-id text-id-2436) :start #xed :end #x15d) + (new 'static 'm2v-caption :text-id (text-id text-id-2437) :start #x160 :end #x18d) + (new 'static 'm2v-caption :text-id (text-id text-id-2438) :start #x18e :end #x1f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2439) :start #x1fc :end #x24f) + (new 'static 'm2v-caption :text-id (text-id text-id-2440) :start #x250 :end #x2b4) + (new 'static 'm2v-caption :text-id (text-id text-id-2441) :start #x2b5 :end #x2d4) + (new 'static 'm2v-caption :text-id (text-id text-id-2442) :start #x2d5 :end #x33f) + (new 'static 'm2v-caption :text-id (text-id text-id-2443) :start #x342 :end #x3a1) + (new 'static 'm2v-caption :text-id (text-id text-id-2444) :start #x3a2 :end #x410) + (new 'static 'm2v-caption :text-id (text-id text-id-2445) :start #x418 :end #x473) + (new 'static 'm2v-caption :text-id (text-id text-id-2446) :start #x47d :end #x4e5) + (new 'static 'm2v-caption :text-id (text-id text-id-2447) :start #x4fc :end #x52a) + (new 'static 'm2v-caption :text-id (text-id text-id-2448) :start #x535 :end #x575) + (new 'static 'm2v-caption :text-id (text-id text-id-2449) :start #x582 :end #x5ce) + (new 'static 'm2v-caption :text-id (text-id text-id-2450) :start #x5d4 :end #x5ec) + (new 'static 'm2v-caption :text-id (text-id text-id-2451) :start #x5f1 :end #x642) + (new 'static 'm2v-caption :text-id (text-id text-id-2452) :start #x643 :end #x6a4) + (new 'static 'm2v-caption :text-id (text-id text-id-2453) :start #x6a5 :end #x70d) + (new 'static 'm2v-caption :text-id (text-id text-id-2454) :start #x70e :end #x731) + (new 'static 'm2v-caption :text-id (text-id text-id-2455) :start #x732 :end #x77c) + (new 'static 'm2v-caption :text-id (text-id text-id-2456) :start #x77d :end #x7ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2457) :start #x7ef :end #x7fc) + (new 'static 'm2v-caption :text-id (text-id text-id-2458) :start #x806 :end #x834) + (new 'static 'm2v-caption :text-id (text-id text-id-2459) :start #x83b :end #x877) + (new 'static 'm2v-caption :text-id (text-id text-id-2460) :start #x87b :end #x89b) + (new 'static 'm2v-caption :text-id (text-id text-id-2461) :start #x89f :end #x8c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2462) :start #x8d2 :end #x8fe) + (new 'static 'm2v-caption :text-id (text-id text-id-2463) :start #x8ff :end #x951) + (new 'static 'm2v-caption :text-id (text-id text-id-2464) :start #x952 :end #x97c) + (new 'static 'm2v-caption :text-id (text-id text-id-2465) :start #x97d :end #x9d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2466) :start #x9de :end #xa4b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4587) :start 1 :end 30) + (new 'static 'm2v-caption :text-id (text-id text-id-4588) :start 32 :end 94) + (new 'static 'm2v-caption :text-id (text-id text-id-4589) :start 95 :end #xe9) + (new 'static 'm2v-caption :text-id (text-id text-id-4590) :start #xea :end #x12e) + (new 'static 'm2v-caption :text-id (text-id text-id-4591) :start #x12f :end #x15e) + (new 'static 'm2v-caption :text-id (text-id text-id-4592) :start #x15f :end #x197) + (new 'static 'm2v-caption :text-id (text-id text-id-4593) :start #x198 :end #x1e6) + (new 'static 'm2v-caption :text-id (text-id text-id-4594) :start #x1e7 :end #x25c) + (new 'static 'm2v-caption :text-id (text-id text-id-4595) :start #x25d :end #x29c) + (new 'static 'm2v-caption :text-id (text-id text-id-4596) :start #x29d :end #x2d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4597) :start #x2d5 :end #x32b) + (new 'static 'm2v-caption :text-id (text-id text-id-4598) :start #x32c :end #x392) + (new 'static 'm2v-caption :text-id (text-id text-id-4599) :start #x393 :end #x3ee) + (new 'static 'm2v-caption :text-id (text-id text-id-4600) :start #x3ef :end #x43e) + (new 'static 'm2v-caption :text-id (text-id text-id-4601) :start #x43f :end #x47e) + (new 'static 'm2v-caption :text-id (text-id text-id-4602) :start #x47f :end #x4d2) + (new 'static 'm2v-caption :text-id (text-id text-id-4603) :start #x4d3 :end #x537) + (new 'static 'm2v-caption :text-id (text-id text-id-4604) :start #x538 :end #x586) + (new 'static 'm2v-caption :text-id (text-id text-id-4605) :start #x587 :end #x5bc) + (new 'static 'm2v-caption :text-id (text-id text-id-4606) :start #x5bd :end #x631) + (new 'static 'm2v-caption :text-id (text-id text-id-4607) :start #x632 :end #x680) + (new 'static 'm2v-caption :text-id (text-id text-id-4608) :start #x681 :end #x6ca) + (new 'static 'm2v-caption :text-id (text-id text-id-4609) :start #x6cb :end #x735) + (new 'static 'm2v-caption :text-id (text-id text-id-4610) :start #x736 :end #x79e) + (new 'static 'm2v-caption :text-id (text-id text-id-4611) :start #x79f :end #x7d8) + (new 'static 'm2v-caption :text-id (text-id text-id-4612) :start #x7d9 :end #x839) + (new 'static 'm2v-caption :text-id (text-id text-id-4613) :start #x83a :end #x8a9) + (new 'static 'm2v-caption :text-id (text-id text-id-4614) :start #x8aa :end #x901) + (new 'static 'm2v-caption :text-id (text-id text-id-4615) :start #x902 :end #x965) + (new 'static 'm2v-caption :text-id (text-id text-id-4616) :start #x966 :end #x9a7) + (new 'static 'm2v-caption :text-id (text-id text-id-4617) :start #x9a8 :end #x9d1) + (new 'static 'm2v-caption :text-id (text-id text-id-4618) :start #x9d2 :end #xa3d) + ) + :id #xd7c + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "klshup" + :sound "38-kleiver-shows-up" + :commentary-sound "klshup" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3084) :start 16 :end 87) + (new 'static 'm2v-caption :text-id (text-id text-id-3085) :start 88 :end #x8e) + (new 'static 'm2v-caption :text-id (text-id text-id-3086) :start #x93 :end #xdf) + (new 'static 'm2v-caption :text-id (text-id text-id-3087) :start #xe6 :end #x13d) + (new 'static 'm2v-caption :text-id (text-id text-id-3088) :start #x13e :end #x1a8) + (new 'static 'm2v-caption :text-id (text-id text-id-3089) :start #x1a9 :end #x1e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3090) :start #x1e3 :end #x212) + (new 'static 'm2v-caption :text-id (text-id text-id-3091) :start #x218 :end #x22f) + (new 'static 'm2v-caption :text-id (text-id text-id-3092) :start #x233 :end #x272) + (new 'static 'm2v-caption :text-id (text-id text-id-3093) :start #x273 :end #x2a4) + (new 'static 'm2v-caption :text-id (text-id text-id-3094) :start #x2a6 :end #x2c9) + (new 'static 'm2v-caption :text-id (text-id text-id-3095) :start #x2ca :end #x318) + (new 'static 'm2v-caption :text-id (text-id text-id-3096) :start #x319 :end #x380) + (new 'static 'm2v-caption :text-id (text-id text-id-3097) :start #x383 :end #x3d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3098) :start #x3d2 :end #x3f9) + (new 'static 'm2v-caption :text-id (text-id text-id-3099) :start #x402 :end #x433) + (new 'static 'm2v-caption :text-id (text-id text-id-3100) :start #x434 :end #x474) + (new 'static 'm2v-caption :text-id (text-id text-id-3101) :start #x475 :end #x4b4) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4449) :start 27 :end #x7c) + (new 'static 'm2v-caption :text-id (text-id text-id-4450) :start #x7d :end #xe1) + (new 'static 'm2v-caption :text-id (text-id text-id-4451) :start #xe2 :end #x13b) + (new 'static 'm2v-caption :text-id (text-id text-id-4452) :start #x13c :end #x199) + (new 'static 'm2v-caption :text-id (text-id text-id-4453) :start #x19a :end #x1e0) + (new 'static 'm2v-caption :text-id (text-id text-id-4454) :start #x1ee :end #x27d) + (new 'static 'm2v-caption :text-id (text-id text-id-4455) :start #x27e :end #x2da) + (new 'static 'm2v-caption :text-id (text-id text-id-4456) :start #x2db :end #x32f) + (new 'static 'm2v-caption :text-id (text-id text-id-4457) :start #x330 :end #x35f) + (new 'static 'm2v-caption :text-id (text-id text-id-4458) :start #x360 :end #x3a1) + (new 'static 'm2v-caption :text-id (text-id text-id-4459) :start #x3a2 :end #x40d) + (new 'static 'm2v-caption :text-id (text-id text-id-4460) :start #x40e :end #x46d) + (new 'static 'm2v-caption :text-id (text-id text-id-4461) :start #x46e :end #x4ba) + ) + :id #xd7d + :driver #x3 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "klbubash" + :sound "62-kleiver-bush-bash" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2127) :start 43 :end #x7a) + (new 'static 'm2v-caption :text-id (text-id text-id-2126) :start #x7b :end #xd9) + (new 'static 'm2v-caption :text-id (text-id text-id-2266) :start #xe1 :end #x141) + (new 'static 'm2v-caption :text-id (text-id text-id-2124) :start #x142 :end #x178) + (new 'static 'm2v-caption :text-id (text-id text-id-2123) :start #x17c :end #x1ca) + (new 'static 'm2v-caption :text-id (text-id text-id-2122) :start #x1cb :end #x238) + (new 'static 'm2v-caption :text-id (text-id text-id-2121) :start #x239 :end #x257) + (new 'static 'm2v-caption :text-id (text-id text-id-2120) :start #x25b :end #x2ac) + (new 'static 'm2v-caption :text-id (text-id text-id-2119) :start #x2c8 :end #x2f2) + (new 'static 'm2v-caption :text-id (text-id text-id-2118) :start #x2f3 :end #x324) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd7e + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blspbig" + :sound "18-blitz-sport-big" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2756) :start 18 :end 71) + (new 'static 'm2v-caption :text-id (text-id text-id-2757) :start 72 :end #x82) + (new 'static 'm2v-caption :text-id (text-id text-id-2758) :start #x83 :end #xd3) + (new 'static 'm2v-caption :text-id (text-id text-id-2759) :start #xd4 :end #x10e) + (new 'static 'm2v-caption :text-id (text-id text-id-2760) :start #x110 :end #x158) + (new 'static 'm2v-caption :text-id (text-id text-id-2761) :start #x159 :end #x19d) + (new 'static 'm2v-caption :text-id (text-id text-id-2762) :start #x19e :end #x218) + (new 'static 'm2v-caption :text-id (text-id text-id-2763) :start #x219 :end #x269) + (new 'static 'm2v-caption :text-id (text-id text-id-2764) :start #x27d :end #x2c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2765) :start #x2ca :end #x2f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2766) :start #x302 :end #x346) + (new 'static 'm2v-caption :text-id (text-id text-id-2767) :start #x34a :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-2768) :start #x371 :end #x38c) + (new 'static 'm2v-caption :text-id (text-id text-id-2769) :start #x394 :end #x3f8) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd7f + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "jaraonsh" + :sound "33-jak-razer-on-show" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2938) :start 13 :end #xa8) + (new 'static 'm2v-caption :text-id (text-id text-id-2939) :start #xa9 :end #xc3) + (new 'static 'm2v-caption :text-id (text-id text-id-2940) :start #xc4 :end #x100) + (new 'static 'm2v-caption :text-id (text-id text-id-2941) :start #x101 :end #x13a) + (new 'static 'm2v-caption :text-id (text-id text-id-2942) :start #x13b :end #x1cd) + (new 'static 'm2v-caption :text-id (text-id text-id-2943) :start #x1ce :end #x236) + (new 'static 'm2v-caption :text-id (text-id text-id-2944) :start #x237 :end #x2bd) + (new 'static 'm2v-caption :text-id (text-id text-id-2945) :start #x2c1 :end #x32a) + (new 'static 'm2v-caption :text-id (text-id text-id-2946) :start #x32b :end #x35f) + (new 'static 'm2v-caption :text-id (text-id text-id-2947) :start #x360 :end #x3ca) + (new 'static 'm2v-caption :text-id (text-id text-id-2948) :start #x3cb :end #x3f8) + (new 'static 'm2v-caption :text-id (text-id text-id-2949) :start #x3fc :end #x445) + (new 'static 'm2v-caption :text-id (text-id text-id-2950) :start #x446 :end #x4a1) + (new 'static 'm2v-caption :text-id (text-id text-id-2951) :start #x4a2 :end #x4d1) + (new 'static 'm2v-caption :text-id (text-id text-id-2952) :start #x4d2 :end #x4dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2953) :start #x50c :end #x559) + (new 'static 'm2v-caption :text-id (text-id text-id-2954) :start #x563 :end #x5cc) + (new 'static 'm2v-caption :text-id (text-id text-id-2955) :start #x5d0 :end #x60a) + (new 'static 'm2v-caption :text-id (text-id text-id-2956) :start #x60b :end #x640) + (new 'static 'm2v-caption :text-id (text-id text-id-2957) :start #x645 :end #x66c) + (new 'static 'm2v-caption :text-id (text-id text-id-2958) :start #x66d :end #x6c2) + (new 'static 'm2v-caption :text-id (text-id text-id-2959) :start #x6c3 :end #x726) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd80 + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "jubainha" + :sound "005-jungle-back-in-haven" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2908) :start 15 :end #x6e) + (new 'static 'm2v-caption :text-id (text-id text-id-2909) :start #x6f :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-2910) :start #xc7 :end #x130) + (new 'static 'm2v-caption :text-id (text-id text-id-2911) :start #x131 :end #x175) + (new 'static 'm2v-caption :text-id (text-id text-id-2912) :start #x176 :end #x1c1) + (new 'static 'm2v-caption :text-id (text-id text-id-2913) :start #x1c2 :end #x1f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2914) :start #x1f6 :end #x269) + (new 'static 'm2v-caption :text-id (text-id text-id-2915) :start #x26a :end #x2c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2916) :start #x2c4 :end #x32f) + (new 'static 'm2v-caption :text-id (text-id text-id-2917) :start #x34b :end #x392) + (new 'static 'm2v-caption :text-id (text-id text-id-2918) :start #x39d :end #x3c0) + (new 'static 'm2v-caption :text-id (text-id text-id-2919) :start #x3c3 :end #x3f0) + (new 'static 'm2v-caption :text-id (text-id text-id-2920) :start #x3fd :end #x411) + (new 'static 'm2v-caption :text-id (text-id text-id-2921) :start #x421 :end #x468) + (new 'static 'm2v-caption :text-id (text-id text-id-2922) :start #x469 :end #x4c2) + (new 'static 'm2v-caption :text-id (text-id text-id-2923) :start #x4ca :end #x532) + (new 'static 'm2v-caption :text-id (text-id text-id-2924) :start #x538 :end #x55b) + (new 'static 'm2v-caption :text-id (text-id text-id-2925) :start #x560 :end #x5a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2926) :start #x5b2 :end #x5ee) + (new 'static 'm2v-caption :text-id (text-id text-id-2927) :start #x5ef :end #x602) + (new 'static 'm2v-caption :text-id (text-id text-id-2928) :start #x603 :end #x62b) + (new 'static 'm2v-caption :text-id (text-id text-id-2929) :start #x635 :end #x655) + (new 'static 'm2v-caption :text-id (text-id text-id-2930) :start #x656 :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2931) :start #x683 :end #x6d6) + (new 'static 'm2v-caption :text-id (text-id text-id-2932) :start #x6e4 :end #x71b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd81 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "dawajob" + :sound "52-daxter-wax-job" + :commentary-sound "dawajob" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2820) :start 68 :end #x86) + (new 'static 'm2v-caption :text-id (text-id text-id-2821) :start #x87 :end #xf5) + (new 'static 'm2v-caption :text-id (text-id text-id-2822) :start #x101 :end #x14e) + (new 'static 'm2v-caption :text-id (text-id text-id-2823) :start #x166 :end #x1aa) + (new 'static 'm2v-caption :text-id (text-id text-id-2824) :start #x1c0 :end #x211) + (new 'static 'm2v-caption :text-id (text-id text-id-2825) :start #x212 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-2826) :start #x26c :end #x2c7) + (new 'static 'm2v-caption :text-id (text-id text-id-2827) :start #x2c8 :end #x307) + (new 'static 'm2v-caption :text-id (text-id text-id-2828) :start #x30c :end #x338) + (new 'static 'm2v-caption :text-id (text-id text-id-2829) :start #x340 :end #x38b) + (new 'static 'm2v-caption :text-id (text-id text-id-2830) :start #x38c :end #x40a) + (new 'static 'm2v-caption :text-id (text-id text-id-2831) :start #x40b :end #x445) + (new 'static 'm2v-caption :text-id (text-id text-id-2832) :start #x446 :end #x493) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4383) :start 1 :end 22) + (new 'static 'm2v-caption :text-id (text-id text-id-4384) :start 23 :end 87) + (new 'static 'm2v-caption :text-id (text-id text-id-4385) :start 88 :end #x8f) + (new 'static 'm2v-caption :text-id (text-id text-id-4386) :start #x90 :end #xd1) + (new 'static 'm2v-caption :text-id (text-id text-id-4387) :start #xd2 :end #xfb) + (new 'static 'm2v-caption :text-id (text-id text-id-4388) :start #xfc :end #x14b) + (new 'static 'm2v-caption :text-id (text-id text-id-4389) :start #x14c :end #x19c) + (new 'static 'm2v-caption :text-id (text-id text-id-4390) :start #x19d :end #x1d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4391) :start #x1d8 :end #x21d) + (new 'static 'm2v-caption :text-id (text-id text-id-4392) :start #x21e :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-4393) :start #x267 :end #x295) + (new 'static 'm2v-caption :text-id (text-id text-id-4394) :start #x296 :end #x2db) + (new 'static 'm2v-caption :text-id (text-id text-id-4395) :start #x2dc :end #x31c) + (new 'static 'm2v-caption :text-id (text-id text-id-4396) :start #x31d :end #x3af) + (new 'static 'm2v-caption :text-id (text-id text-id-4397) :start #x3b0 :end #x434) + (new 'static 'm2v-caption :text-id (text-id text-id-4398) :start #x435 :end #x46d) + ) + :id #xd82 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "klborain" + :sound "80-klever-boss-race-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3162) :start 12 :end #x65) + (new 'static 'm2v-caption :text-id (text-id text-id-3163) :start #x66 :end #xe1) + (new 'static 'm2v-caption :text-id (text-id text-id-3164) :start #xe2 :end #x155) + (new 'static 'm2v-caption :text-id (text-id text-id-3165) :start #x15a :end #x1be) + (new 'static 'm2v-caption :text-id (text-id text-id-3166) :start #x1bf :end #x1f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3167) :start #x1f7 :end #x239) + (new 'static 'm2v-caption :text-id (text-id text-id-3168) :start #x23a :end #x26e) + (new 'static 'm2v-caption :text-id (text-id text-id-3169) :start #x276 :end #x2b2) + (new 'static 'm2v-caption :text-id (text-id text-id-3170) :start #x2b3 :end #x2de) + (new 'static 'm2v-caption :text-id (text-id text-id-3171) :start #x2e5 :end #x313) + (new 'static 'm2v-caption :text-id (text-id text-id-3172) :start #x314 :end #x363) + (new 'static 'm2v-caption :text-id (text-id text-id-3173) :start #x364 :end #x3c6) + (new 'static 'm2v-caption :text-id (text-id text-id-3174) :start #x3cd :end #x3f5) + (new 'static 'm2v-caption :text-id (text-id text-id-3175) :start #x3f6 :end #x436) + (new 'static 'm2v-caption :text-id (text-id text-id-3176) :start #x437 :end #x45d) + (new 'static 'm2v-caption :text-id (text-id text-id-3177) :start #x45e :end #x4b9) + (new 'static 'm2v-caption :text-id (text-id text-id-3178) :start #x4bd :end #x4ee) + (new 'static 'm2v-caption :text-id (text-id text-id-3179) :start #x4ef :end #x525) + (new 'static 'm2v-caption :text-id (text-id text-id-3180) :start #x526 :end #x586) + (new 'static 'm2v-caption :text-id (text-id text-id-3181) :start #x587 :end #x5e1) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd83 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "klborace" + :sound "80-klever-boss-race-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2314) :start 15 :end #x68) + (new 'static 'm2v-caption :text-id (text-id text-id-2315) :start #x69 :end #xb1) + (new 'static 'm2v-caption :text-id (text-id text-id-2316) :start #xb2 :end #xed) + (new 'static 'm2v-caption :text-id (text-id text-id-2317) :start #xee :end #x11e) + (new 'static 'm2v-caption :text-id (text-id text-id-2318) :start #x11f :end #x133) + (new 'static 'm2v-caption :text-id (text-id text-id-2319) :start #x139 :end #x19a) + (new 'static 'm2v-caption :text-id (text-id text-id-2320) :start #x19c :end #x1fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2321) :start #x1ff :end #x223) + (new 'static 'm2v-caption :text-id (text-id text-id-2322) :start #x224 :end #x27d) + (new 'static 'm2v-caption :text-id (text-id text-id-2323) :start #x27e :end #x2de) + (new 'static 'm2v-caption :text-id (text-id text-id-2324) :start #x2df :end #x30d) + (new 'static 'm2v-caption :text-id (text-id text-id-2325) :start #x30e :end #x34b) + (new 'static 'm2v-caption :text-id (text-id text-id-2326) :start #x34c :end #x370) + (new 'static 'm2v-caption :text-id (text-id text-id-2327) :start #x371 :end #x3b7) + (new 'static 'm2v-caption :text-id (text-id text-id-2328) :start #x3be :end #x406) + (new 'static 'm2v-caption :text-id (text-id text-id-2329) :start #x407 :end #x461) + (new 'static 'm2v-caption :text-id (text-id text-id-2330) :start #x46f :end #x4d7) + (new 'static 'm2v-caption :text-id (text-id text-id-2331) :start #x4db :end #x516) + (new 'static 'm2v-caption :text-id (text-id text-id-2332) :start #x517 :end #x596) + (new 'static 'm2v-caption :text-id (text-id text-id-2333) :start #x5a6 :end #x63a) + (new 'static 'm2v-caption :text-id (text-id text-id-2334) :start #x5dd :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2335) :start #x683 :end #x6b5) + (new 'static 'm2v-caption :text-id (text-id text-id-2336) :start #x6b6 :end #x743) + (new 'static 'm2v-caption :text-id (text-id text-id-2337) :start #x749 :end #x76d) + (new 'static 'm2v-caption :text-id (text-id text-id-2338) :start #x774 :end #x7a5) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd84 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blfadied" + :sound "47-blitzs-father-died" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2785) :start 11 :end 47) + (new 'static 'm2v-caption :text-id (text-id text-id-2786) :start 48 :end #x80) + (new 'static 'm2v-caption :text-id (text-id text-id-2787) :start #x84 :end #x118) + (new 'static 'm2v-caption :text-id (text-id text-id-2788) :start #x12f :end #x17f) + (new 'static 'm2v-caption :text-id (text-id text-id-2789) :start #x180 :end #x1d3) + (new 'static 'm2v-caption :text-id (text-id text-id-2790) :start #x1d4 :end #x21e) + (new 'static 'm2v-caption :text-id (text-id text-id-2791) :start #x21f :end #x259) + (new 'static 'm2v-caption :text-id (text-id text-id-2792) :start #x261 :end #x290) + (new 'static 'm2v-caption :text-id (text-id text-id-2793) :start #x299 :end #x2d9) + (new 'static 'm2v-caption :text-id (text-id text-id-2794) :start #x2e3 :end #x322) + (new 'static 'm2v-caption :text-id (text-id text-id-2795) :start #x323 :end #x386) + (new 'static 'm2v-caption :text-id (text-id text-id-2796) :start #x387 :end #x3c3) + (new 'static 'm2v-caption :text-id (text-id text-id-2797) :start #x3c6 :end #x3ff) + (new 'static 'm2v-caption :text-id (text-id text-id-2798) :start #x400 :end #x451) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd85 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "krdiary" + :sound "84-krews-diary" + :commentary-sound "krdiary" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3116) :start 61 :end #x91) + (new 'static 'm2v-caption :text-id (text-id text-id-3117) :start #x92 :end #xd5) + (new 'static 'm2v-caption :text-id (text-id text-id-3118) :start #xd6 :end #xfb) + (new 'static 'm2v-caption :text-id (text-id text-id-3119) :start #xfc :end #x126) + (new 'static 'm2v-caption :text-id (text-id text-id-3120) :start #x12e :end #x141) + (new 'static 'm2v-caption :text-id (text-id text-id-3121) :start #x16d :end #x1a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3122) :start #x1a4 :end #x1e1) + (new 'static 'm2v-caption :text-id (text-id text-id-3123) :start #x1e2 :end #x222) + (new 'static 'm2v-caption :text-id (text-id text-id-3124) :start #x223 :end #x278) + (new 'static 'm2v-caption :text-id (text-id text-id-3125) :start #x279 :end #x2cb) + (new 'static 'm2v-caption :text-id (text-id text-id-3126) :start #x2cc :end #x311) + (new 'static 'm2v-caption :text-id (text-id text-id-3127) :start #x312 :end #x377) + (new 'static 'm2v-caption :text-id (text-id text-id-3128) :start #x378 :end #x3d6) + (new 'static 'm2v-caption :text-id (text-id text-id-3129) :start #x3d7 :end #x434) + (new 'static 'm2v-caption :text-id (text-id text-id-3130) :start #x448 :end #x493) + (new 'static 'm2v-caption :text-id (text-id text-id-3131) :start #x49c :end #x4f7) + (new 'static 'm2v-caption :text-id (text-id text-id-3132) :start #x4ff :end #x54e) + (new 'static 'm2v-caption :text-id (text-id text-id-3133) :start #x54f :end #x5ad) + (new 'static 'm2v-caption :text-id (text-id text-id-3134) :start #x5b1 :end #x5fb) + (new 'static 'm2v-caption :text-id (text-id text-id-3135) :start #x5fc :end #x648) + (new 'static 'm2v-caption :text-id (text-id text-id-3136) :start #x657 :end #x675) + (new 'static 'm2v-caption :text-id (text-id text-id-3137) :start #x686 :end #x6aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3138) :start #x6ba :end #x6e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3139) :start #x6e3 :end #x719) + (new 'static 'm2v-caption :text-id (text-id text-id-3140) :start #x71b :end #x758) + (new 'static 'm2v-caption :text-id (text-id text-id-3141) :start #x75d :end #x77d) + (new 'static 'm2v-caption :text-id (text-id text-id-3142) :start #x77e :end #x7b9) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4494) :start 15 :end 40) + (new 'static 'm2v-caption :text-id (text-id text-id-4495) :start 41 :end #x9f) + (new 'static 'm2v-caption :text-id (text-id text-id-4496) :start #xa0 :end #x118) + (new 'static 'm2v-caption :text-id (text-id text-id-4497) :start #x119 :end #x15f) + (new 'static 'm2v-caption :text-id (text-id text-id-4498) :start #x160 :end #x1c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4499) :start #x1c8 :end #x218) + (new 'static 'm2v-caption :text-id (text-id text-id-4516) :start #x219 :end #x286) + (new 'static 'm2v-caption :text-id (text-id text-id-4501) :start #x287 :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-4502) :start #x2f5 :end #x340) + (new 'static 'm2v-caption :text-id (text-id text-id-4503) :start #x341 :end #x39c) + (new 'static 'm2v-caption :text-id (text-id text-id-4504) :start #x39d :end #x405) + (new 'static 'm2v-caption :text-id (text-id text-id-4505) :start #x406 :end #x44a) + (new 'static 'm2v-caption :text-id (text-id text-id-4506) :start #x44b :end #x48e) + (new 'static 'm2v-caption :text-id (text-id text-id-4507) :start #x48f :end #x4c9) + (new 'static 'm2v-caption :text-id (text-id text-id-4508) :start #x4ca :end #x51d) + (new 'static 'm2v-caption :text-id (text-id text-id-4510) :start #x51e :end #x561) + (new 'static 'm2v-caption :text-id (text-id text-id-4509) :start #x562 :end #x5d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4511) :start #x5d5 :end #x66d) + (new 'static 'm2v-caption :text-id (text-id text-id-4512) :start #x66e :end #x69f) + (new 'static 'm2v-caption :text-id (text-id text-id-4513) :start #x6a0 :end #x6d5) + (new 'static 'm2v-caption :text-id (text-id text-id-4514) :start #x702 :end #x71d) + (new 'static 'm2v-caption :text-id (text-id text-id-4515) :start #x71e :end #x751) + (new 'static 'm2v-caption :text-id (text-id text-id-4517) :start #x752 :end #x7b2) + ) + :id #xd86 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jacoraze" + :sound "104-jak-confronts-razer" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3803) :start 20 :end #x8d) + (new 'static 'm2v-caption :text-id (text-id text-id-3804) :start #x8e :end #xb4) + (new 'static 'm2v-caption :text-id (text-id text-id-3805) :start #xb5 :end #xf5) + (new 'static 'm2v-caption :text-id (text-id text-id-3806) :start #xfa :end #x158) + (new 'static 'm2v-caption :text-id (text-id text-id-3807) :start #x15a :end #x182) + (new 'static 'm2v-caption :text-id (text-id text-id-3808) :start #x183 :end #x1ba) + (new 'static 'm2v-caption :text-id (text-id text-id-3809) :start #x1bc :end #x1e5) + (new 'static 'm2v-caption :text-id (text-id text-id-3810) :start #x1e6 :end #x221) + (new 'static 'm2v-caption :text-id (text-id text-id-3811) :start #x222 :end #x267) + (new 'static 'm2v-caption :text-id (text-id text-id-3812) :start #x268 :end #x292) + (new 'static 'm2v-caption :text-id (text-id text-id-3813) :start #x293 :end #x2c5) + (new 'static 'm2v-caption :text-id (text-id text-id-3814) :start #x2c6 :end #x301) + (new 'static 'm2v-caption :text-id (text-id text-id-3815) :start #x302 :end #x343) + (new 'static 'm2v-caption :text-id (text-id text-id-3816) :start #x347 :end #x3a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3817) :start #x3a4 :end #x3fb) + (new 'static 'm2v-caption :text-id (text-id text-id-3818) :start #x3fc :end #x466) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd87 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "cawetrmi" + :sound "100-can-we-trust-mizo" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3590) :start 33 :end 98) + (new 'static 'm2v-caption :text-id (text-id text-id-3591) :start 99 :end #xaf) + (new 'static 'm2v-caption :text-id (text-id text-id-3592) :start #xb0 :end #x107) + (new 'static 'm2v-caption :text-id (text-id text-id-3593) :start #x10e :end #x123) + (new 'static 'm2v-caption :text-id (text-id text-id-3594) :start #x124 :end #x169) + (new 'static 'm2v-caption :text-id (text-id text-id-3595) :start #x171 :end #x1a9) + (new 'static 'm2v-caption :text-id (text-id text-id-3596) :start #x1aa :end #x1f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3597) :start #x1f7 :end #x22f) + (new 'static 'm2v-caption :text-id (text-id text-id-3598) :start #x23a :end #x295) + (new 'static 'm2v-caption :text-id (text-id text-id-3599) :start #x296 :end #x2b7) + (new 'static 'm2v-caption :text-id (text-id text-id-3600) :start #x2b8 :end #x30b) + (new 'static 'm2v-caption :text-id (text-id text-id-3601) :start #x30c :end #x33e) + (new 'static 'm2v-caption :text-id (text-id text-id-3602) :start #x33f :end #x387) + (new 'static 'm2v-caption :text-id (text-id text-id-3603) :start #x38f :end #x3e1) + (new 'static 'm2v-caption :text-id (text-id text-id-3604) :start #x3e2 :end #x40b) + (new 'static 'm2v-caption :text-id (text-id text-id-3605) :start #x40d :end #x42b) + (new 'static 'm2v-caption :text-id (text-id text-id-3606) :start #x42c :end #x45e) + (new 'static 'm2v-caption :text-id (text-id text-id-3607) :start #x45f :end #x484) + (new 'static 'm2v-caption :text-id (text-id text-id-3608) :start #x485 :end #x4b8) + (new 'static 'm2v-caption :text-id (text-id text-id-3609) :start #x4b9 :end #x4e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3610) :start #x4ea :end #x515) + (new 'static 'm2v-caption :text-id (text-id text-id-3611) :start #x516 :end #x545) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd88 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "pehainfo" + :sound "114-pecker-has-info" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3490) :start 30 :end 77) + (new 'static 'm2v-caption :text-id (text-id text-id-3491) :start 82 :end #x9e) + (new 'static 'm2v-caption :text-id (text-id text-id-3492) :start #x9f :end #xe7) + (new 'static 'm2v-caption :text-id (text-id text-id-3494) :start #xe8 :end #x148) + (new 'static 'm2v-caption :text-id (text-id text-id-3495) :start #x14b :end #x177) + (new 'static 'm2v-caption :text-id (text-id text-id-3496) :start #x17b :end #x1d3) + (new 'static 'm2v-caption :text-id (text-id text-id-3497) :start #x1d4 :end #x232) + (new 'static 'm2v-caption :text-id (text-id text-id-3498) :start #x233 :end #x265) + (new 'static 'm2v-caption :text-id (text-id text-id-3499) :start #x266 :end #x2a7) + (new 'static 'm2v-caption :text-id (text-id text-id-3500) :start #x2af :end #x309) + (new 'static 'm2v-caption :text-id (text-id text-id-3501) :start #x313 :end #x33d) + (new 'static 'm2v-caption :text-id (text-id text-id-3502) :start #x33e :end #x367) + (new 'static 'm2v-caption :text-id (text-id text-id-3503) :start #x368 :end #x39a) + (new 'static 'm2v-caption :text-id (text-id text-id-3504) :start #x39f :end #x3f9) + (new 'static 'm2v-caption :text-id (text-id text-id-3505) :start #x3fa :end #x436) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd89 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "ragenast" + :sound "125-razer-gets-nasty" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3506) :start 22 :end 67) + (new 'static 'm2v-caption :text-id (text-id text-id-3507) :start 73 :end 92) + (new 'static 'm2v-caption :text-id (text-id text-id-3508) :start 96 :end #x71) + (new 'static 'm2v-caption :text-id (text-id text-id-3509) :start #x76 :end #x82) + (new 'static 'm2v-caption :text-id (text-id text-id-3510) :start #x88 :end #xab) + (new 'static 'm2v-caption :text-id (text-id text-id-3511) :start #xb3 :end #xc3) + (new 'static 'm2v-caption :text-id (text-id text-id-3512) :start #xca :end #xff) + (new 'static 'm2v-caption :text-id (text-id text-id-3513) :start #x107 :end #x12b) + (new 'static 'm2v-caption :text-id (text-id text-id-3514) :start #x12c :end #x17b) + (new 'static 'm2v-caption :text-id (text-id text-id-3515) :start #x18e :end #x1d3) + (new 'static 'm2v-caption :text-id (text-id text-id-3516) :start #x1d4 :end #x228) + (new 'static 'm2v-caption :text-id (text-id text-id-3517) :start #x229 :end #x265) + (new 'static 'm2v-caption :text-id (text-id text-id-3518) :start #x26a :end #x298) + (new 'static 'm2v-caption :text-id (text-id text-id-3519) :start #x2a0 :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3520) :start #x2f5 :end #x337) + (new 'static 'm2v-caption :text-id (text-id text-id-3521) :start #x338 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-3522) :start #x36e :end #x3bc) + (new 'static 'm2v-caption :text-id (text-id text-id-3523) :start #x3bd :end #x41a) + (new 'static 'm2v-caption :text-id (text-id text-id-3524) :start #x41b :end #x44c) + (new 'static 'm2v-caption :text-id (text-id text-id-3525) :start #x44d :end #x47f) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd8a + :driver #x2 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jaberazo" + :sound "130-jak-beats-razer-res" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3144) :start 22 :end #x7e) + (new 'static 'm2v-caption :text-id (text-id text-id-3145) :start #x82 :end #x95) + (new 'static 'm2v-caption :text-id (text-id text-id-3146) :start #x9c :end #xd2) + (new 'static 'm2v-caption :text-id (text-id text-id-3147) :start #xd3 :end #x126) + (new 'static 'm2v-caption :text-id (text-id text-id-3790) :start #x127 :end #x16b) + (new 'static 'm2v-caption :text-id (text-id text-id-3149) :start #x16e :end #x19b) + (new 'static 'm2v-caption :text-id (text-id text-id-3150) :start #x19c :end #x1c1) + (new 'static 'm2v-caption :text-id (text-id text-id-3151) :start #x1c4 :end #x20b) + (new 'static 'm2v-caption :text-id (text-id text-id-3152) :start #x20c :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-3153) :start #x243 :end #x28c) + (new 'static 'm2v-caption :text-id (text-id text-id-3154) :start #x28d :end #x2f0) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd8b + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "miofdeal" + :sound "130-mizo-offers-deal-intro" + :commentary-sound "miofdeal" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2799) :start 23 :end 78) + (new 'static 'm2v-caption :text-id (text-id text-id-2800) :start 86 :end #x92) + (new 'static 'm2v-caption :text-id (text-id text-id-2801) :start #x9b :end #xd9) + (new 'static 'm2v-caption :text-id (text-id text-id-2802) :start #xda :end #x12a) + (new 'static 'm2v-caption :text-id (text-id text-id-2803) :start #x13a :end #x186) + (new 'static 'm2v-caption :text-id (text-id text-id-2804) :start #x187 :end #x1e4) + (new 'static 'm2v-caption :text-id (text-id text-id-2805) :start #x1e5 :end #x285) + (new 'static 'm2v-caption :text-id (text-id text-id-2806) :start #x28f :end #x2e8) + (new 'static 'm2v-caption :text-id (text-id text-id-2807) :start #x2fc :end #x32d) + (new 'static 'm2v-caption :text-id (text-id text-id-2808) :start #x32e :end #x399) + (new 'static 'm2v-caption :text-id (text-id text-id-2809) :start #x39a :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-2810) :start #x3e8 :end #x47b) + (new 'static 'm2v-caption :text-id (text-id text-id-2811) :start #x47c :end #x4cc) + (new 'static 'm2v-caption :text-id (text-id text-id-2812) :start #x4e8 :end #x535) + (new 'static 'm2v-caption :text-id (text-id text-id-2813) :start #x547 :end #x565) + (new 'static 'm2v-caption :text-id (text-id text-id-2814) :start #x566 :end #x5d0) + (new 'static 'm2v-caption :text-id (text-id text-id-2815) :start #x5d1 :end #x609) + (new 'static 'm2v-caption :text-id (text-id text-id-2816) :start #x60a :end #x657) + (new 'static 'm2v-caption :text-id (text-id text-id-2817) :start #x658 :end #x6a7) + (new 'static 'm2v-caption :text-id (text-id text-id-2818) :start #x6a8 :end #x6f5) + (new 'static 'm2v-caption :text-id (text-id text-id-2819) :start #x72b :end #x76d) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4348) :start 10 :end 30) + (new 'static 'm2v-caption :text-id (text-id text-id-4349) :start 50 :end #x7a) + (new 'static 'm2v-caption :text-id (text-id text-id-4350) :start #x96 :end #xf7) + (new 'static 'm2v-caption :text-id (text-id text-id-4351) :start #xf8 :end #x169) + (new 'static 'm2v-caption :text-id (text-id text-id-4352) :start #x16a :end #x1b6) + (new 'static 'm2v-caption :text-id (text-id text-id-4353) :start #x1b7 :end #x200) + (new 'static 'm2v-caption :text-id (text-id text-id-4354) :start #x201 :end #x263) + (new 'static 'm2v-caption :text-id (text-id text-id-4355) :start #x264 :end #x29a) + (new 'static 'm2v-caption :text-id (text-id text-id-4356) :start #x2d0 :end #x2ff) + (new 'static 'm2v-caption :text-id (text-id text-id-4357) :start #x300 :end #x355) + (new 'static 'm2v-caption :text-id (text-id text-id-4358) :start #x356 :end #x393) + (new 'static 'm2v-caption :text-id (text-id text-id-4359) :start #x394 :end #x3f7) + (new 'static 'm2v-caption :text-id (text-id text-id-4360) :start #x3f8 :end #x448) + (new 'static 'm2v-caption :text-id (text-id text-id-4361) :start #x449 :end #x4de) + (new 'static 'm2v-caption :text-id (text-id text-id-4362) :start #x4df :end #x53d) + (new 'static 'm2v-caption :text-id (text-id text-id-4363) :start #x53e :end #x59c) + (new 'static 'm2v-caption :text-id (text-id text-id-4364) :start #x59d :end #x5d7) + (new 'static 'm2v-caption :text-id (text-id text-id-4365) :start #x5d8 :end #x62f) + (new 'static 'm2v-caption :text-id (text-id text-id-4366) :start #x630 :end #x6b1) + (new 'static 'm2v-caption :text-id (text-id text-id-4367) :start #x6b2 :end #x6dc) + (new 'static 'm2v-caption :text-id (text-id text-id-4368) :start #x6dd :end #x6f7) + (new 'static 'm2v-caption :text-id (text-id text-id-4369) :start #x6f8 :end #x74d) + ) + :id #xd8c + :driver #xd + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blfakill" + :sound "139-blitz-father-killed" + :commentary-sound "blfakill" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3554) :start 75 :end #x77) + (new 'static 'm2v-caption :text-id (text-id text-id-3555) :start #x7c :end #xc4) + (new 'static 'm2v-caption :text-id (text-id text-id-3556) :start #xc5 :end #xea) + (new 'static 'm2v-caption :text-id (text-id text-id-3557) :start #xeb :end #x140) + (new 'static 'm2v-caption :text-id (text-id text-id-3558) :start #x143 :end #x17c) + (new 'static 'm2v-caption :text-id (text-id text-id-3559) :start #x17e :end #x195) + (new 'static 'm2v-caption :text-id (text-id text-id-3560) :start #x196 :end #x1fd) + (new 'static 'm2v-caption :text-id (text-id text-id-3561) :start #x202 :end #x23b) + (new 'static 'm2v-caption :text-id (text-id text-id-3562) :start #x23c :end #x259) + (new 'static 'm2v-caption :text-id (text-id text-id-3563) :start #x25a :end #x290) + (new 'static 'm2v-caption :text-id (text-id text-id-3564) :start #x299 :end #x2ca) + (new 'static 'm2v-caption :text-id (text-id text-id-3565) :start #x2cb :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3566) :start #x2f5 :end #x358) + (new 'static 'm2v-caption :text-id (text-id text-id-3567) :start #x359 :end #x3aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3568) :start #x3b4 :end #x3f0) + (new 'static 'm2v-caption :text-id (text-id text-id-3569) :start #x3f6 :end #x414) + (new 'static 'm2v-caption :text-id (text-id text-id-3570) :start #x415 :end #x454) + (new 'static 'm2v-caption :text-id (text-id text-id-3571) :start #x455 :end #x496) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4518) :start 1 :end 23) + (new 'static 'm2v-caption :text-id (text-id text-id-4519) :start 25 :end 93) + (new 'static 'm2v-caption :text-id (text-id text-id-4520) :start 94 :end #x9b) + (new 'static 'm2v-caption :text-id (text-id text-id-4521) :start #x9c :end #xd3) + (new 'static 'm2v-caption :text-id (text-id text-id-4522) :start #xd4 :end #x12f) + (new 'static 'm2v-caption :text-id (text-id text-id-4523) :start #x130 :end #x15f) + (new 'static 'm2v-caption :text-id (text-id text-id-4524) :start #x160 :end #x1bf) + (new 'static 'm2v-caption :text-id (text-id text-id-4525) :start #x1c0 :end #x223) + (new 'static 'm2v-caption :text-id (text-id text-id-4526) :start #x224 :end #x266) + (new 'static 'm2v-caption :text-id (text-id text-id-4527) :start #x267 :end #x279) + (new 'static 'm2v-caption :text-id (text-id text-id-4528) :start #x27a :end #x29b) + (new 'static 'm2v-caption :text-id (text-id text-id-4529) :start #x29c :end #x2da) + (new 'static 'm2v-caption :text-id (text-id text-id-4530) :start #x2db :end #x348) + (new 'static 'm2v-caption :text-id (text-id text-id-4531) :start #x349 :end #x385) + (new 'static 'm2v-caption :text-id (text-id text-id-4532) :start #x386 :end #x3d4) + (new 'static 'm2v-caption :text-id (text-id text-id-4533) :start #x3d5 :end #x401) + (new 'static 'm2v-caption :text-id (text-id text-id-4534) :start #x402 :end #x445) + (new 'static 'm2v-caption :text-id (text-id text-id-4535) :start #x446 :end #x496) + (new 'static 'm2v-caption :text-id (text-id text-id-4536) :start #x497 :end #x4ca) + ) + :id #xd8d + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "jakikrew" + :sound "157-jak-killed-krew" + :commentary-sound "jakikrew" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3215) :start 76 :end #x7c) + (new 'static 'm2v-caption :text-id (text-id text-id-3216) :start #x7d :end #xb6) + (new 'static 'm2v-caption :text-id (text-id text-id-3217) :start #xc5 :end #x12c) + (new 'static 'm2v-caption :text-id (text-id text-id-3218) :start #x132 :end #x167) + (new 'static 'm2v-caption :text-id (text-id text-id-3219) :start #x16f :end #x1a8) + (new 'static 'm2v-caption :text-id (text-id text-id-3220) :start #x1a9 :end #x1ed) + (new 'static 'm2v-caption :text-id (text-id text-id-3221) :start #x1ee :end #x228) + (new 'static 'm2v-caption :text-id (text-id text-id-3222) :start #x229 :end #x280) + (new 'static 'm2v-caption :text-id (text-id text-id-3223) :start #x280 :end #x290) + (new 'static 'm2v-caption :text-id (text-id text-id-3224) :start #x297 :end #x2f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3225) :start #x2f5 :end #x334) + (new 'static 'm2v-caption :text-id (text-id text-id-3226) :start #x337 :end #x384) + (new 'static 'm2v-caption :text-id (text-id text-id-3227) :start #x386 :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3228) :start #x3eb :end #x436) + (new 'static 'm2v-caption :text-id (text-id text-id-3229) :start #x43f :end #x486) + (new 'static 'm2v-caption :text-id (text-id text-id-3230) :start #x488 :end #x4d5) + (new 'static 'm2v-caption :text-id (text-id text-id-3231) :start #x4d6 :end #x52a) + (new 'static 'm2v-caption :text-id (text-id text-id-3232) :start #x532 :end #x54c) + (new 'static 'm2v-caption :text-id (text-id text-id-3233) :start #x54d :end #x5af) + (new 'static 'm2v-caption :text-id (text-id text-id-3234) :start #x5b5 :end #x5cd) + (new 'static 'm2v-caption :text-id (text-id text-id-3235) :start #x5d2 :end #x604) + (new 'static 'm2v-caption :text-id (text-id text-id-3236) :start #x605 :end #x631) + (new 'static 'm2v-caption :text-id (text-id text-id-3237) :start #x634 :end #x663) + (new 'static 'm2v-caption :text-id (text-id text-id-3238) :start #x664 :end #x69b) + (new 'static 'm2v-caption :text-id (text-id text-id-3239) :start #x69c :end #x6c6) + (new 'static 'm2v-caption :text-id (text-id text-id-3240) :start #x6db :end #x71a) + (new 'static 'm2v-caption :text-id (text-id text-id-3241) :start #x71b :end #x737) + (new 'static 'm2v-caption :text-id (text-id text-id-3242) :start #x738 :end #x769) + (new 'static 'm2v-caption :text-id (text-id text-id-3243) :start #x76a :end #x7a3) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4462) :start 1 :end 52) + (new 'static 'm2v-caption :text-id (text-id text-id-4463) :start 54 :end 95) + (new 'static 'm2v-caption :text-id (text-id text-id-4464) :start 96 :end #xd7) + (new 'static 'm2v-caption :text-id (text-id text-id-4465) :start #xd8 :end #x16f) + (new 'static 'm2v-caption :text-id (text-id text-id-4466) :start #x170 :end #x1ac) + (new 'static 'm2v-caption :text-id (text-id text-id-4467) :start #x1ad :end #x23c) + (new 'static 'm2v-caption :text-id (text-id text-id-4468) :start #x23d :end #x2de) + (new 'static 'm2v-caption :text-id (text-id text-id-4469) :start #x2df :end #x378) + (new 'static 'm2v-caption :text-id (text-id text-id-4470) :start #x379 :end #x3c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4471) :start #x405 :end #x4c5) + (new 'static 'm2v-caption :text-id (text-id text-id-4472) :start #x4c6 :end #x50c) + (new 'static 'm2v-caption :text-id (text-id text-id-4474) :start #x555 :end #x596) + (new 'static 'm2v-caption :text-id (text-id text-id-4475) :start #x5d8 :end #x615) + (new 'static 'm2v-caption :text-id (text-id text-id-4476) :start #x616 :end #x65c) + (new 'static 'm2v-caption :text-id (text-id text-id-4477) :start #x680 :end #x6ec) + (new 'static 'm2v-caption :text-id (text-id text-id-4478) :start #x6ed :end #x77a) + ) + :id #xd8e + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "blbaall" + :sound "164-blitz-bares-all" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3526) :start 30 :end 86) + (new 'static 'm2v-caption :text-id (text-id text-id-3527) :start 98 :end #x8d) + (new 'static 'm2v-caption :text-id (text-id text-id-3528) :start #x8e :end #x9e) + (new 'static 'm2v-caption :text-id (text-id text-id-3529) :start #xa5 :end #xe2) + (new 'static 'm2v-caption :text-id (text-id text-id-3530) :start #xf4 :end #x115) + (new 'static 'm2v-caption :text-id (text-id text-id-3531) :start #x116 :end #x168) + (new 'static 'm2v-caption :text-id (text-id text-id-3532) :start #x169 :end #x1d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3533) :start #x1d2 :end #x228) + (new 'static 'm2v-caption :text-id (text-id text-id-3534) :start #x229 :end #x258) + (new 'static 'm2v-caption :text-id (text-id text-id-3535) :start #x259 :end #x26c) + (new 'static 'm2v-caption :text-id (text-id text-id-3536) :start #x28e :end #x2b7) + (new 'static 'm2v-caption :text-id (text-id text-id-3537) :start #x2b8 :end #x2fc) + (new 'static 'm2v-caption :text-id (text-id text-id-3547) :start #x309 :end #x331) + (new 'static 'm2v-caption :text-id (text-id text-id-3548) :start #x332 :end #x38c) + (new 'static 'm2v-caption :text-id (text-id text-id-3549) :start #x38d :end #x3e3) + (new 'static 'm2v-caption :text-id (text-id text-id-3550) :start #x3e4 :end #x42d) + (new 'static 'm2v-caption :text-id (text-id text-id-3551) :start #x42e :end #x474) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #xd8f + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "fiborain" + :sound "165-final-boss-race-intro" + :commentary-sound "fiborain" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3184) :start 17 :end #x88) + (new 'static 'm2v-caption :text-id (text-id text-id-3185) :start #x94 :end #xee) + (new 'static 'm2v-caption :text-id (text-id text-id-3186) :start #xef :end #x143) + (new 'static 'm2v-caption :text-id (text-id text-id-3187) :start #x144 :end #x169) + (new 'static 'm2v-caption :text-id (text-id text-id-3188) :start #x175 :end #x1a2) + (new 'static 'm2v-caption :text-id (text-id text-id-3189) :start #x1a3 :end #x1e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3190) :start #x1e8 :end #x234) + (new 'static 'm2v-caption :text-id (text-id text-id-3191) :start #x235 :end #x288) + (new 'static 'm2v-caption :text-id (text-id text-id-3192) :start #x289 :end #x2f7) + (new 'static 'm2v-caption :text-id (text-id text-id-3193) :start #x30a :end #x343) + (new 'static 'm2v-caption :text-id (text-id text-id-3194) :start #x344 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-3195) :start #x372 :end #x3d4) + (new 'static 'm2v-caption :text-id (text-id text-id-3196) :start #x3d5 :end #x3e7) + (new 'static 'm2v-caption :text-id (text-id text-id-3197) :start #x3e9 :end #x42b) + (new 'static 'm2v-caption :text-id (text-id text-id-3198) :start #x42c :end #x45c) + (new 'static 'm2v-caption :text-id (text-id text-id-3199) :start #x470 :end #x490) + (new 'static 'm2v-caption :text-id (text-id text-id-3200) :start #x49b :end #x4aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3201) :start #x4b2 :end #x4de) + (new 'static 'm2v-caption :text-id (text-id text-id-3202) :start #x4df :end #x511) + (new 'static 'm2v-caption :text-id (text-id text-id-3203) :start #x51a :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-3204) :start #x543 :end #x55d) + (new 'static 'm2v-caption :text-id (text-id text-id-3205) :start #x567 :end #x59b) + (new 'static 'm2v-caption :text-id (text-id text-id-3206) :start #x5a0 :end #x5b6) + (new 'static 'm2v-caption :text-id (text-id text-id-3207) :start #x5be :end #x5cc) + (new 'static 'm2v-caption :text-id (text-id text-id-3208) :start #x5d2 :end #x610) + (new 'static 'm2v-caption :text-id (text-id text-id-3209) :start #x611 :end #x658) + (new 'static 'm2v-caption :text-id (text-id text-id-3210) :start #x65e :end #x696) + (new 'static 'm2v-caption :text-id (text-id text-id-3211) :start #x6a0 :end #x6bf) + (new 'static 'm2v-caption :text-id (text-id text-id-3212) :start #x6c4 :end #x6db) + (new 'static 'm2v-caption :text-id (text-id text-id-3213) :start #x6e2 :end #x711) + (new 'static 'm2v-caption :text-id (text-id text-id-3214) :start #x714 :end #x749) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4537) :start 92 :end #xd4) + (new 'static 'm2v-caption :text-id (text-id text-id-4538) :start #xd5 :end #x129) + (new 'static 'm2v-caption :text-id (text-id text-id-4539) :start #x12a :end #x194) + (new 'static 'm2v-caption :text-id (text-id text-id-4540) :start #x195 :end #x1e4) + (new 'static 'm2v-caption :text-id (text-id text-id-4541) :start #x1e5 :end #x21b) + (new 'static 'm2v-caption :text-id (text-id text-id-4542) :start #x231 :end #x27e) + (new 'static 'm2v-caption :text-id (text-id text-id-4543) :start #x27f :end #x2d2) + (new 'static 'm2v-caption :text-id (text-id text-id-4544) :start #x2d3 :end #x36d) + (new 'static 'm2v-caption :text-id (text-id text-id-4545) :start #x36e :end #x3b9) + (new 'static 'm2v-caption :text-id (text-id text-id-4546) :start #x3ba :end #x449) + (new 'static 'm2v-caption :text-id (text-id text-id-4547) :start #x44a :end #x4c7) + (new 'static 'm2v-caption :text-id (text-id text-id-4548) :start #x4c8 :end #x528) + (new 'static 'm2v-caption :text-id (text-id text-id-4549) :start #x55d :end #x5c2) + (new 'static 'm2v-caption :text-id (text-id text-id-4550) :start #x5ff :end #x644) + (new 'static 'm2v-caption :text-id (text-id text-id-4551) :start #x645 :end #x66c) + (new 'static 'm2v-caption :text-id (text-id text-id-4552) :start #x66d :end #x6a0) + (new 'static 'm2v-caption :text-id (text-id text-id-4553) :start #x6a1 :end #x6f1) + ) + :id #xd90 + :driver #x4 + :driver2 #x13 + ) + (new 'static 'm2v-info + :name "outroa" + :sound "166-outro-a" + :commentary-sound "outroa" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3652) :start 13 :end 92) + (new 'static 'm2v-caption :text-id (text-id text-id-3653) :start 93 :end #x9d) + (new 'static 'm2v-caption :text-id (text-id text-id-3654) :start #x9e :end #xf9) + (new 'static 'm2v-caption :text-id (text-id text-id-3655) :start #xfa :end #x11c) + (new 'static 'm2v-caption :text-id (text-id text-id-3656) :start #x11d :end #x1a3) + (new 'static 'm2v-caption :text-id (text-id text-id-3657) :start #x1af :end #x1cc) + (new 'static 'm2v-caption :text-id (text-id text-id-3658) :start #x1da :end #x211) + (new 'static 'm2v-caption :text-id (text-id text-id-3659) :start #x218 :end #x241) + (new 'static 'm2v-caption :text-id (text-id text-id-3660) :start #x249 :end #x292) + (new 'static 'm2v-caption :text-id (text-id text-id-3661) :start #x293 :end #x2b4) + (new 'static 'm2v-caption :text-id (text-id text-id-3662) :start #x2b5 :end #x306) + (new 'static 'm2v-caption :text-id (text-id text-id-3663) :start #x30c :end #x348) + (new 'static 'm2v-caption :text-id (text-id text-id-3664) :start #x352 :end #x38e) + (new 'static 'm2v-caption :text-id (text-id text-id-3665) :start #x38f :end #x3bb) + (new 'static 'm2v-caption :text-id (text-id text-id-3666) :start #x3bc :end #x3eb) + (new 'static 'm2v-caption :text-id (text-id text-id-3667) :start #x3ec :end #x44a) + (new 'static 'm2v-caption :text-id (text-id text-id-3668) :start #x455 :end #x494) + (new 'static 'm2v-caption :text-id (text-id text-id-3669) :start #x49b :end #x4aa) + (new 'static 'm2v-caption :text-id (text-id text-id-3670) :start #x4ac :end #x4c2) + (new 'static 'm2v-caption :text-id (text-id text-id-3671) :start #x4c3 :end #x4fb) + (new 'static 'm2v-caption :text-id (text-id text-id-3672) :start #x4fc :end #x542) + (new 'static 'm2v-caption :text-id (text-id text-id-3673) :start #x543 :end #x58b) + (new 'static 'm2v-caption :text-id (text-id text-id-3674) :start #x592 :end #x5f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3675) :start #x5f7 :end #x5ff) + (new 'static 'm2v-caption :text-id (text-id text-id-3676) :start #x608 :end #x64b) + (new 'static 'm2v-caption :text-id (text-id text-id-3677) :start #x64c :end #x6a6) + (new 'static 'm2v-caption :text-id (text-id text-id-3678) :start #x6b0 :end #x706) + (new 'static 'm2v-caption :text-id (text-id text-id-3679) :start #x73a :end #x755) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4479) :start 31 :end 65) + (new 'static 'm2v-caption :text-id (text-id text-id-4480) :start 66 :end #xaa) + (new 'static 'm2v-caption :text-id (text-id text-id-4481) :start #xab :end #x150) + (new 'static 'm2v-caption :text-id (text-id text-id-4482) :start #x151 :end #x200) + (new 'static 'm2v-caption :text-id (text-id text-id-4483) :start #x201 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-4484) :start #x26c :end #x2bd) + (new 'static 'm2v-caption :text-id (text-id text-id-4485) :start #x2be :end #x32c) + (new 'static 'm2v-caption :text-id (text-id text-id-4486) :start #x32d :end #x3ec) + (new 'static 'm2v-caption :text-id (text-id text-id-4487) :start #x3ed :end #x463) + (new 'static 'm2v-caption :text-id (text-id text-id-4488) :start #x464 :end #x4e2) + (new 'static 'm2v-caption :text-id (text-id text-id-4489) :start #x501 :end #x57e) + (new 'static 'm2v-caption :text-id (text-id text-id-4490) :start #x57f :end #x619) + (new 'static 'm2v-caption :text-id (text-id text-id-4491) :start #x61a :end #x6c8) + (new 'static 'm2v-caption :text-id (text-id text-id-4492) :start #x6c9 :end #x718) + (new 'static 'm2v-caption :text-id (text-id text-id-4493) :start #x719 :end #x783) + ) + :id #xd91 + :driver #x17 + :driver2 #x17 + :flags #x2 + ) + (new 'static 'm2v-info + :name "outrob" + :sound "166-outro-b" + :commentary-sound "outrob" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3680) :start #x1d0 :end #x1fd) + (new 'static 'm2v-caption :text-id (text-id text-id-3681) :start #x202 :end #x224) + (new 'static 'm2v-caption :text-id (text-id text-id-3682) :start #x225 :end #x28e) + (new 'static 'm2v-caption :text-id (text-id text-id-3683) :start #x290 :end #x2da) + (new 'static 'm2v-caption :text-id (text-id text-id-3684) :start #x2db :end #x2f6) + (new 'static 'm2v-caption :text-id (text-id text-id-3685) :start #x2f7 :end #x343) + (new 'static 'm2v-caption :text-id (text-id text-id-3686) :start #x344 :end #x3bb) + (new 'static 'm2v-caption :text-id (text-id text-id-3687) :start #x3bc :end #x417) + (new 'static 'm2v-caption :text-id (text-id text-id-3688) :start #x43e :end #x49f) + (new 'static 'm2v-caption :text-id (text-id text-id-3689) :start #x4bc :end #x4e5) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4334) :start 1 :end 26) + (new 'static 'm2v-caption :text-id (text-id text-id-4335) :start 27 :end #x69) + (new 'static 'm2v-caption :text-id (text-id text-id-4336) :start #x6a :end #xb7) + (new 'static 'm2v-caption :text-id (text-id text-id-4337) :start #xb8 :end #x11e) + (new 'static 'm2v-caption :text-id (text-id text-id-4338) :start #x11f :end #x1ab) + (new 'static 'm2v-caption :text-id (text-id text-id-4339) :start #x1ac :end #x202) + (new 'static 'm2v-caption :text-id (text-id text-id-4340) :start #x219 :end #x271) + (new 'static 'm2v-caption :text-id (text-id text-id-4341) :start #x272 :end #x2cd) + (new 'static 'm2v-caption :text-id (text-id text-id-4342) :start #x2ce :end #x336) + (new 'static 'm2v-caption :text-id (text-id text-id-4343) :start #x337 :end #x3a5) + (new 'static 'm2v-caption :text-id (text-id text-id-4344) :start #x3a6 :end #x433) + (new 'static 'm2v-caption :text-id (text-id text-id-4345) :start #x434 :end #x498) + (new 'static 'm2v-caption :text-id (text-id text-id-4346) :start #x499 :end #x4f2) + (new 'static 'm2v-caption :text-id (text-id text-id-4347) :start #x4f3 :end #x561) + ) + :id #x132d + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "outroc" + :sound "166-outro-c" + :commentary-sound "outroc" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-3690) :start 48 :end #x7f) + (new 'static 'm2v-caption :text-id (text-id text-id-3691) :start #x80 :end #xed) + (new 'static 'm2v-caption :text-id (text-id text-id-3692) :start #xf4 :end #x133) + (new 'static 'm2v-caption :text-id (text-id text-id-3693) :start #x138 :end #x160) + (new 'static 'm2v-caption :text-id (text-id text-id-3694) :start #x166 :end #x18e) + (new 'static 'm2v-caption :text-id (text-id text-id-3695) :start #x197 :end #x1a5) + (new 'static 'm2v-caption :text-id (text-id text-id-3696) :start #x1ae :end #x1e9) + (new 'static 'm2v-caption :text-id (text-id text-id-3697) :start #x1f8 :end #x232) + (new 'static 'm2v-caption :text-id (text-id text-id-3698) :start #x233 :end #x25c) + (new 'static 'm2v-caption :text-id (text-id text-id-3699) :start #x25d :end #x28f) + (new 'static 'm2v-caption :text-id (text-id text-id-3700) :start #x290 :end #x2d2) + (new 'static 'm2v-caption :text-id (text-id text-id-3701) :start #x2d3 :end #x2fd) + (new 'static 'm2v-caption :text-id (text-id text-id-3702) :start #x2fe :end #x32d) + (new 'static 'm2v-caption :text-id (text-id text-id-3703) :start #x334 :end #x346) + (new 'static 'm2v-caption :text-id (text-id text-id-3704) :start #x36d :end #x391) + (new 'static 'm2v-caption :text-id (text-id text-id-3705) :start #x3c0 :end #x3f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3706) :start #x3f5 :end #x43b) + (new 'static 'm2v-caption :text-id (text-id text-id-3707) :start #x45d :end #x4b4) + (new 'static 'm2v-caption :text-id (text-id text-id-3708) :start #x4b5 :end #x4f5) + (new 'static 'm2v-caption :text-id (text-id text-id-3709) :start #x4f6 :end #x541) + (new 'static 'm2v-caption :text-id (text-id text-id-3710) :start #x542 :end #x574) + (new 'static 'm2v-caption :text-id (text-id text-id-3711) :start #x575 :end #x5e2) + (new 'static 'm2v-caption :text-id (text-id text-id-3712) :start #x5e3 :end #x61b) + (new 'static 'm2v-caption :text-id (text-id text-id-3713) :start #x61c :end #x676) + (new 'static 'm2v-caption :text-id (text-id text-id-3714) :start #x677 :end #x6d2) + (new 'static 'm2v-caption :text-id (text-id text-id-3715) :start #x6d3 :end #x71c) + (new 'static 'm2v-caption :text-id (text-id text-id-3716) :start #x737 :end #x752) + (new 'static 'm2v-caption :text-id (text-id text-id-3717) :start #x768 :end #x77d) + (new 'static 'm2v-caption :text-id (text-id text-id-3718) :start #x77e :end #x7b4) + (new 'static 'm2v-caption :text-id (text-id text-id-3719) :start #x7b5 :end #x80b) + (new 'static 'm2v-caption :text-id (text-id text-id-3720) :start #x80c :end #x83e) + (new 'static 'm2v-caption :text-id (text-id text-id-3721) :start #x840 :end #x883) + (new 'static 'm2v-caption :text-id (text-id text-id-3722) :start #x884 :end #x8ae) + (new 'static 'm2v-caption :text-id (text-id text-id-3723) :start #x8af :end #x8f2) + (new 'static 'm2v-caption :text-id (text-id text-id-3724) :start #x8f3 :end #x94a) + (new 'static 'm2v-caption :text-id (text-id text-id-3725) :start #x961 :end #x982) + (new 'static 'm2v-caption :text-id (text-id text-id-3726) :start #x989 :end #x9d1) + (new 'static 'm2v-caption :text-id (text-id text-id-3727) :start #x9d8 :end #x9f4) + (new 'static 'm2v-caption :text-id (text-id text-id-3728) :start #x9f5 :end #xa5d) + (new 'static 'm2v-caption :text-id (text-id text-id-3729) :start #xa61 :end #xaaa) + (new 'static 'm2v-caption :text-id (text-id text-id-3730) :start #xaab :end #xb05) + (new 'static 'm2v-caption :text-id (text-id text-id-3731) :start #xb0f :end #xb4c) + (new 'static 'm2v-caption :text-id (text-id text-id-3732) :start #xb57 :end #xb67) + (new 'static 'm2v-caption :text-id (text-id text-id-3733) :start #xb7b :end #xbc5) + (new 'static 'm2v-caption :text-id (text-id text-id-3734) :start #xc01 :end #xc74) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4280) :start 1 :end 27) + (new 'static 'm2v-caption :text-id (text-id text-id-4281) :start 28 :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-4282) :start #xc7 :end #x17e) + (new 'static 'm2v-caption :text-id (text-id text-id-4283) :start #x17f :end #x201) + (new 'static 'm2v-caption :text-id (text-id text-id-4284) :start #x214 :end #x26b) + (new 'static 'm2v-caption :text-id (text-id text-id-4285) :start #x26c :end #x2b1) + (new 'static 'm2v-caption :text-id (text-id text-id-4286) :start #x2b2 :end #x307) + (new 'static 'm2v-caption :text-id (text-id text-id-4287) :start #x308 :end #x34f) + (new 'static 'm2v-caption :text-id (text-id text-id-4288) :start #x350 :end #x39c) + (new 'static 'm2v-caption :text-id (text-id text-id-4289) :start #x39d :end #x404) + (new 'static 'm2v-caption :text-id (text-id text-id-4290) :start #x405 :end #x459) + (new 'static 'm2v-caption :text-id (text-id text-id-4291) :start #x45a :end #x4bb) + (new 'static 'm2v-caption :text-id (text-id text-id-4292) :start #x4bc :end #x52b) + (new 'static 'm2v-caption :text-id (text-id text-id-4293) :start #x52c :end #x5a6) + (new 'static 'm2v-caption :text-id (text-id text-id-4294) :start #x5a7 :end #x5e0) + (new 'static 'm2v-caption :text-id (text-id text-id-4295) :start #x5e1 :end #x63a) + (new 'static 'm2v-caption :text-id (text-id text-id-4296) :start #x63b :end #x667) + (new 'static 'm2v-caption :text-id (text-id text-id-4297) :start #x668 :end #x6ba) + (new 'static 'm2v-caption :text-id (text-id text-id-4298) :start #x6bb :end #x6f6) + (new 'static 'm2v-caption :text-id (text-id text-id-4299) :start #x6f7 :end #x784) + (new 'static 'm2v-caption :text-id (text-id text-id-4300) :start #x785 :end #x7fe) + (new 'static 'm2v-caption :text-id (text-id text-id-4301) :start #x7ff :end #x8c2) + (new 'static 'm2v-caption :text-id (text-id text-id-4302) :start #x8c3 :end #x900) + (new 'static 'm2v-caption :text-id (text-id text-id-4303) :start #x901 :end #x928) + (new 'static 'm2v-caption :text-id (text-id text-id-4304) :start #x929 :end #x940) + (new 'static 'm2v-caption :text-id (text-id text-id-4305) :start #x941 :end #x990) + (new 'static 'm2v-caption :text-id (text-id text-id-4306) :start #x991 :end #xa07) + (new 'static 'm2v-caption :text-id (text-id text-id-4307) :start #xa09 :end #xa9b) + (new 'static 'm2v-caption :text-id (text-id text-id-4914) :start #xac2 :end #xb33) + (new 'static 'm2v-caption :text-id (text-id text-id-4309) :start #xb34 :end #xb7c) + (new 'static 'm2v-caption :text-id (text-id text-id-4310) :start #xb7d :end #xbf7) + (new 'static 'm2v-caption :text-id (text-id text-id-4311) :start #xbf8 :end #xc62) + (new 'static 'm2v-caption :text-id (text-id text-id-4312) :start #xc63 :end #xc7e) + ) + :id #x132e + :driver #x17 + :driver2 #x17 + ) + (new 'static 'm2v-info + :name "introb2" + :sound "intro-boardroom" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-2833) :start 35 :end #x6a) + (new 'static 'm2v-caption :text-id (text-id text-id-2834) :start #x6b :end #x93) + (new 'static 'm2v-caption :text-id (text-id text-id-2835) :start #x9d :end #xc6) + (new 'static 'm2v-caption :text-id (text-id text-id-2836) :start #xce :end #xf6) + (new 'static 'm2v-caption :text-id (text-id text-id-2837) :start #xf7 :end #x15b) + (new 'static 'm2v-caption :text-id (text-id text-id-2838) :start #x15c :end #x1bb) + (new 'static 'm2v-caption :text-id (text-id text-id-2839) :start #x1c3 :end #x1f1) + (new 'static 'm2v-caption :text-id (text-id text-id-2840) :start #x1f2 :end #x242) + (new 'static 'm2v-caption :text-id (text-id text-id-2886) :start #x243 :end #x273) + (new 'static 'm2v-caption :text-id (text-id text-id-2842) :start #x275 :end #x2c9) + (new 'static 'm2v-caption :text-id (text-id text-id-2843) :start #x2ca :end #x322) + (new 'static 'm2v-caption :text-id (text-id text-id-2844) :start #x323 :end #x371) + (new 'static 'm2v-caption :text-id (text-id text-id-2845) :start #x372 :end #x409) + (new 'static 'm2v-caption :text-id (text-id text-id-2846) :start #x424 :end #x4b0) + (new 'static 'm2v-caption :text-id (text-id text-id-2847) :start #x514 :end #x56d) + (new 'static 'm2v-caption :text-id (text-id text-id-2848) :start #x590 :end #x5ea) + (new 'static 'm2v-caption :text-id (text-id text-id-2849) :start #x5eb :end #x682) + (new 'static 'm2v-caption :text-id (text-id text-id-2850) :start #x683 :end #x6fb) + (new 'static 'm2v-caption :text-id (text-id text-id-2851) :start #x6fc :end #x763) + (new 'static 'm2v-caption :text-id (text-id text-id-2852) :start #x764 :end #x7dc) + (new 'static 'm2v-caption :text-id (text-id text-id-2853) :start #x7dd :end #x85f) + (new 'static 'm2v-caption :text-id (text-id text-id-2854) :start #x860 :end #x8c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2855) :start #x8c6 :end #x93b) + (new 'static 'm2v-caption :text-id (text-id text-id-2856) :start #x942 :end #x94b) + (new 'static 'm2v-caption :text-id (text-id text-id-2857) :start #x94c :end #x955) + (new 'static 'm2v-caption :text-id (text-id text-id-2858) :start #x956 :end #x960) + (new 'static 'm2v-caption :text-id (text-id text-id-2859) :start #x968 :end #x9a6) + (new 'static 'm2v-caption :text-id (text-id text-id-2860) :start #x9a7 :end #xa1c) + (new 'static 'm2v-caption :text-id (text-id text-id-2861) :start #xa1d :end #xa97) + (new 'static 'm2v-caption :text-id (text-id text-id-2862) :start #xa98 :end #xae9) + (new 'static 'm2v-caption :text-id (text-id text-id-2863) :start #xaea :end #xb3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2864) :start #xb3f :end #xb53) + (new 'static 'm2v-caption :text-id (text-id text-id-2865) :start #xb58 :end #xbe1) + (new 'static 'm2v-caption :text-id (text-id text-id-2866) :start #xbe2 :end #xc3e) + (new 'static 'm2v-caption :text-id (text-id text-id-2867) :start #xc3f :end #xcac) + (new 'static 'm2v-caption :text-id (text-id text-id-2868) :start #xcad :end #xd08) + (new 'static 'm2v-caption :text-id (text-id text-id-2869) :start #xd09 :end #xd6d) + (new 'static 'm2v-caption :text-id (text-id text-id-2870) :start #xd86 :end #xdb7) + (new 'static 'm2v-caption :text-id (text-id text-id-2871) :start #xdbe :end #xe21) + (new 'static 'm2v-caption :text-id (text-id text-id-2872) :start #xe22 :end #xe5d) + (new 'static 'm2v-caption :text-id (text-id text-id-2873) :start #xe63 :end #xe9b) + (new 'static 'm2v-caption :text-id (text-id text-id-2874) :start #xe9e :end #xecf) + (new 'static 'm2v-caption :text-id (text-id text-id-2875) :start #xed9 :end #xf00) + (new 'static 'm2v-caption :text-id (text-id text-id-2876) :start #xf10 :end #xf73) + (new 'static 'm2v-caption :text-id (text-id text-id-2877) :start #xf60 :end #xfbf) + (new 'static 'm2v-caption :text-id (text-id text-id-2878) :start #xfc0 :end #xff7) + (new 'static 'm2v-caption :text-id (text-id text-id-2879) :start #xff8 :end #x103e) + (new 'static 'm2v-caption :text-id (text-id text-id-2880) :start #x1055 :end #x10c5) + (new 'static 'm2v-caption :text-id (text-id text-id-2881) :start #x10d1 :end #x10ed) + (new 'static 'm2v-caption :text-id (text-id text-id-2882) :start #x10ee :end #x1148) + (new 'static 'm2v-caption :text-id (text-id text-id-2883) :start #x1153 :end #x1194) + (new 'static 'm2v-caption :text-id (text-id text-id-2884) :start #x1195 :end #x11fa) + (new 'static 'm2v-caption :text-id (text-id text-id-2885) :start #x11fb :end #x125a) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :driver #x17 + :driver2 #x17 + :flags #xb + ) + (new 'static 'm2v-info + :name "bloopers" + :sound "bloopers-reel" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4848) :start 10 :end 97) + (new 'static 'm2v-caption :text-id (text-id text-id-4849) :start #x7f :end #x115) + (new 'static 'm2v-caption :text-id (text-id text-id-4850) :start #x181 :end #x22e) + (new 'static 'm2v-caption :text-id (text-id text-id-4851) :start #x22f :end #x2fb) + (new 'static 'm2v-caption :text-id (text-id text-id-4852) :start #x2fc :end #x43c) + (new 'static 'm2v-caption :text-id (text-id text-id-4853) :start #x43d :end #x50f) + (new 'static 'm2v-caption :text-id (text-id text-id-4854) :start #x51e :end #x5f2) + (new 'static 'm2v-caption :text-id (text-id text-id-4855) :start #x62e :end #x6ee) + (new 'static 'm2v-caption :text-id (text-id text-id-4856) :start #x6f8 :end #x771) + (new 'static 'm2v-caption :text-id (text-id text-id-4857) :start #x772 :end #x8c8) + (new 'static 'm2v-caption :text-id (text-id text-id-4858) :start #x8f9 :end #x9f6) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :driver #x17 + :driver2 #x17 + :flags #xf + ) + (new 'static 'm2v-info + :name "makingin" + :sound "making-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4859) :start 15 :end #x291) + (new 'static 'm2v-caption :text-id (text-id text-id-4860) :start #x2b0 :end #x540) + (new 'static 'm2v-caption :text-id (text-id text-id-4861) :start #x55f :end #x7f4) + (new 'static 'm2v-caption :text-id (text-id text-id-4862) :start #x7f5 :end #xaf0) + (new 'static 'm2v-caption :text-id (text-id text-id-4863) :start #xb00 :end #xe3f) + (new 'static 'm2v-caption :text-id (text-id text-id-4864) :start #xe4f :end #x119b) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :driver #x17 + :driver2 #x17 + :flags #xf + ) + (new 'static 'm2v-info + :name "hotcoffe" + :sound "hot-coffee" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption + (new 'static 'm2v-caption :text-id (text-id text-id-4865) :start 21 :end 80) + (new 'static 'm2v-caption :text-id (text-id text-id-4866) :start 81 :end #x6b) + (new 'static 'm2v-caption :text-id (text-id text-id-4867) :start #x6c :end #x7b) + (new 'static 'm2v-caption :text-id (text-id text-id-4868) :start #x7c :end #xb1) + (new 'static 'm2v-caption :text-id (text-id text-id-4869) :start #xb2 :end #x103) + (new 'static 'm2v-caption :text-id (text-id text-id-4870) :start #x130 :end #x148) + ) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #x10b5 + :driver #x17 + :driver2 #x17 + :flags #x9 + ) + (new 'static 'm2v-info + :name "thx" + :sound "thx-intro" + :commentary-sound "#f" + :captions (new 'static 'boxed-array :type m2v-caption) + :commentary-captions (new 'static 'boxed-array :type m2v-caption) + :id #x554 + :driver #x17 + :driver2 #x17 + :flags #x3 + ) + ) + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/scene/scene-h_REF.gc b/test/decompiler/reference/jakx/engine/scene/scene-h_REF.gc new file mode 100644 index 0000000000..402e2920b1 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/scene/scene-h_REF.gc @@ -0,0 +1,240 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type scene-actor +(deftype scene-actor (basic) + ((name string) + (level symbol) + (art-group string) + (prefix string) + (draw-frames pair) + (scissor-frames pair) + (shadow-frames pair) + (cloth-reset-frames pair) + (cloth-commands pair) + (camera int16) + (light-index uint8) + (shadow-mask uint8) + (shadow-values uint32) + (flags uint32) + (command-list pair) + (shadow-flags int32) + (shadow-volume-joint basic) + (draw-seg uint64) + (no-draw-seg uint64) + (last-frame float) + (process uint64) + ) + (:methods + (scene-actor-method-9 () none) + ) + ) + +;; definition for method 3 of type scene-actor +(defmethod inspect ((this scene-actor)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tlevel: ~A~%" (-> this level)) + (format #t "~1Tart-group: ~A~%" (-> this art-group)) + (format #t "~1Tprefix: ~A~%" (-> this prefix)) + (format #t "~1Tdraw-frames: ~A~%" (-> this draw-frames)) + (format #t "~1Tscissor-frames: ~A~%" (-> this scissor-frames)) + (format #t "~1Tshadow-frames: ~A~%" (-> this shadow-frames)) + (format #t "~1Tcloth-reset-frames: ~A~%" (-> this cloth-reset-frames)) + (format #t "~1Tcloth-commands: ~A~%" (-> this cloth-commands)) + (format #t "~1Tcamera: ~D~%" (-> this camera)) + (format #t "~1Tlight-index: ~D~%" (-> this light-index)) + (format #t "~1Tshadow-mask: ~D~%" (-> this shadow-mask)) + (format #t "~1Tshadow-values: ~D~%" (-> this shadow-values)) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Tcommand-list: ~A~%" (-> this command-list)) + (format #t "~1Tshadow-flags: ~D~%" (-> this shadow-flags)) + (format #t "~1Tshadow-volume-joint: ~A~%" (-> this shadow-volume-joint)) + (format #t "~1Tdraw-seg: ~D~%" (-> this draw-seg)) + (format #t "~1Tno-draw-seg: ~D~%" (-> this no-draw-seg)) + (format #t "~1Tlast-frame: ~f~%" (-> this last-frame)) + (format #t "~1Tprocess: ~D~%" (-> this process)) + (label cfg-4) + this + ) + +;; definition of type scene +(deftype scene (art-group) + ((scene-flags scene-flags) + (mask-to-clear process-mask) + (entity string) + (art-group string) + (anim string) + (parts int32) + (command-list pair) + (cut-list pair) + (wait-max-time uint64) + (wait-air-time uint64) + (wait-ground-time uint64) + (actor (array scene-actor)) + (load-point basic) + (end-point basic) + (borrow pair) + (sfx-volume float) + (ambient-volume float) + (music-volume float) + (music-delay float) + (scene-task uint16) + (on-running pair) + (on-complete pair) + (vehicles basic) + (ipu basic) + ) + (:methods + (scene-method-16 () none) + (load-scene (_type_) scene) + ) + ) + +;; definition for method 3 of type scene +(defmethod inspect ((this scene)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Textra: ~A~%" (-> this extra)) + (format #t "~1Tinfo: ~A~%" (-> this info)) + (format #t "~1Tdata[0] @ #x~X~%" (&-> this scene-flags)) + (format #t "~1Tscene-flags: ~D~%" (-> this scene-flags)) + (format #t "~1Tmask-to-clear: ~D~%" (-> this mask-to-clear)) + (format #t "~1Tentity: ~A~%" (-> this entity)) + (format #t "~1Tart-group: ~A~%" (-> this art-group)) + (format #t "~1Tanim: ~A~%" (-> this anim)) + (format #t "~1Tparts: ~D~%" (-> this parts)) + (format #t "~1Tcommand-list: ~A~%" (-> this command-list)) + (format #t "~1Tcut-list: ~A~%" (-> this cut-list)) + (format #t "~1Twait-max-time: ~D~%" (-> this wait-max-time)) + (format #t "~1Twait-air-time: ~D~%" (-> this wait-air-time)) + (format #t "~1Twait-ground-time: ~D~%" (-> this wait-ground-time)) + (format #t "~1Tactor: ~A~%" (-> this actor)) + (format #t "~1Tload-point: ~A~%" (-> this load-point)) + (format #t "~1Tend-point: ~A~%" (-> this end-point)) + (format #t "~1Tborrow: ~A~%" (-> this borrow)) + (format #t "~1Tsfx-volume: ~f~%" (-> this sfx-volume)) + (format #t "~1Tambient-volume: ~f~%" (-> this ambient-volume)) + (format #t "~1Tmusic-volume: ~f~%" (-> this music-volume)) + (format #t "~1Tmusic-delay: ~f~%" (-> this music-delay)) + (format #t "~1Tscene-task: ~D~%" (-> this scene-task)) + (format #t "~1Ton-running: ~A~%" (-> this on-running)) + (format #t "~1Ton-complete: ~A~%" (-> this on-complete)) + (format #t "~1Tvehicles: ~A~%" (-> this vehicles)) + (format #t "~1Tipu: ~A~%" (-> this ipu)) + (label cfg-4) + this + ) + +;; definition of type scene-player +(deftype scene-player (process-drawable) + ((scene-list (array scene)) + (scene scene) + (scene-index int32) + (anim spool-anim) + (next-anim spool-anim) + (camera uint64) + (main-entity entity-actor) + (wait symbol) + (old-target-pos transformq :inline) + (pre-cut-frame basic) + (preload-continue string) + (preload-sound basic) + (dma-max uint32) + (gui-id sound-id) + (aborted? symbol) + (scene-start-time uint64) + (targ-speed float) + (cur-speed float) + (speed-change-time uint64) + (speed-press-time uint64) + (speed-change-speed float) + (subtitle-change-time uint64) + (user-sound sound-id 4) + (last-frame float) + (end-point basic) + (blackout-end basic) + (new-trans-hook (function none)) + (cur-trans-hook (function none)) + (user-data uint64) + ) + (:methods + (scene-player-method-50 () none) + (scene-player-method-51 () none) + (scene-player-method-52 () none) + (scene-player-method-53 () none) + (scene-player-method-54 () none) + (scene-player-method-55 () none) + ) + ) + +;; definition for method 3 of type scene-player +(defmethod inspect ((this scene-player)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 this) + ) + (format #t "~2Tscene-list: ~A~%" (-> this scene-list)) + (format #t "~2Tscene: ~A~%" (-> this scene)) + (format #t "~2Tscene-index: ~D~%" (-> this scene-index)) + (format #t "~2Tanim: ~A~%" (-> this anim)) + (format #t "~2Tnext-anim: ~A~%" (-> this next-anim)) + (format #t "~2Tcamera: ~D~%" (-> this camera)) + (format #t "~2Tmain-entity: ~A~%" (-> this main-entity)) + (format #t "~2Twait: ~A~%" (-> this wait)) + (format #t "~2Told-target-pos: #~%" (-> this old-target-pos)) + (format #t "~2Tpre-cut-frame: ~A~%" (-> this pre-cut-frame)) + (format #t "~2Tpreload-continue: ~A~%" (-> this preload-continue)) + (format #t "~2Tpreload-sound: ~A~%" (-> this preload-sound)) + (format #t "~2Tdma-max: ~D~%" (-> this dma-max)) + (format #t "~2Tgui-id: ~D~%" (-> this gui-id)) + (format #t "~2Taborted?: ~A~%" (-> this aborted?)) + (format #t "~2Tscene-start-time: ~D~%" (-> this scene-start-time)) + (format #t "~2Ttarg-speed: ~f~%" (-> this targ-speed)) + (format #t "~2Tcur-speed: ~f~%" (-> this cur-speed)) + (format #t "~2Tspeed-change-time: ~D~%" (-> this speed-change-time)) + (format #t "~2Tspeed-press-time: ~D~%" (-> this speed-press-time)) + (format #t "~2Tspeed-change-speed: ~f~%" (-> this speed-change-speed)) + (format #t "~2Tsubtitle-change-time: ~D~%" (-> this subtitle-change-time)) + (format #t "~2Tuser-sound[4] @ #x~X~%" (-> this user-sound)) + (format #t "~2Tlast-frame: ~f~%" (-> this last-frame)) + (format #t "~2Tend-point: ~A~%" (-> this end-point)) + (format #t "~2Tblackout-end: ~A~%" (-> this blackout-end)) + (format #t "~2Tnew-trans-hook: ~A~%" (-> this new-trans-hook)) + (format #t "~2Tcur-trans-hook: ~A~%" (-> this cur-trans-hook)) + (format #t "~2Tuser-data: ~A~%" (-> this user-data)) + (label cfg-4) + this + ) + +;; definition for symbol *scene-player*, type (pointer scene-player) +(define *scene-player* (the-as (pointer scene-player) #f)) + +;; definition for symbol *debug-menu-scene-play*, type symbol +(define *debug-menu-scene-play* #f) + +;; definition for method 17 of type scene +(defmethod load-scene ((this scene)) + (let ((v1-1 (-> *level* loading-level))) + (if v1-1 + (set-loaded-art (-> v1-1 art-group) this) + ) + ) + this + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/ui/hud-h_REF.gc b/test/decompiler/reference/jakx/engine/ui/hud-h_REF.gc index 45992af3a1..e10534f778 100644 --- a/test/decompiler/reference/jakx/engine/ui/hud-h_REF.gc +++ b/test/decompiler/reference/jakx/engine/ui/hud-h_REF.gc @@ -8,7 +8,7 @@ (width float) (height float) (color font-color) - (flags font-flags) + (flags uint16) (pos vector4w :inline) (alpha float) (time float) @@ -242,7 +242,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jakx/engine/util/glist-h_REF.gc b/test/decompiler/reference/jakx/engine/util/glist-h_REF.gc new file mode 100644 index 0000000000..ae53709e7b --- /dev/null +++ b/test/decompiler/reference/jakx/engine/util/glist-h_REF.gc @@ -0,0 +1,129 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) + +;; definition of type glst-node +(deftype glst-node (structure) + ((next glst-node) + (prev glst-node) + ) + ) + +;; definition for method 3 of type glst-node +(defmethod inspect ((this glst-node)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'glst-node) + (format #t "~1Tnext: #~%" (-> this next)) + (format #t "~1Tprev: #~%" (-> this prev)) + (label cfg-4) + this + ) + +;; definition of type glst-named-node +(deftype glst-named-node (glst-node) + ((privname string) + ) + ) + +;; definition for method 3 of type glst-named-node +(defmethod inspect ((this glst-named-node)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'glst-named-node) + (format #t "~1Tnext: #~%" (-> this next)) + (format #t "~1Tprev: #~%" (-> this prev)) + (format #t "~1Tprivname: ~A~%" (-> this privname)) + (label cfg-4) + this + ) + +;; definition of type glst-list +(deftype glst-list (structure) + ((head glst-node) + (tail glst-node) + (tailpred glst-node) + (numelem int32) + ) + ) + +;; definition for method 3 of type glst-list +(defmethod inspect ((this glst-list)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'glst-list) + (format #t "~1Thead: #~%" (-> this head)) + (format #t "~1Ttail: #~%" (-> this tail)) + (format #t "~1Ttailpred: #~%" (-> this tailpred)) + (format #t "~1Tnumelem: ~D~%" (-> this numelem)) + (label cfg-4) + this + ) + +;; definition for function glst-next +(defun glst-next ((arg0 glst-node)) + "return the next node in the list" + (-> arg0 next) + ) + +;; definition for function glst-prev +(defun glst-prev ((arg0 glst-node)) + "return the previous node in the list" + (-> arg0 prev) + ) + +;; definition for function glst-head +(defun glst-head ((arg0 glst-list)) + "return the start of the list" + (-> arg0 head) + ) + +;; definition for function glst-tail +(defun glst-tail ((arg0 glst-list)) + "return the tail of the list" + (-> arg0 tailpred) + ) + +;; definition for function glst-end-of-list? +(defun glst-end-of-list? ((arg0 glst-node)) + "is this node the end of the list. #t = end" + (not (-> arg0 next)) + ) + +;; definition for function glst-start-of-list? +(defun glst-start-of-list? ((arg0 glst-node)) + "is this node the start of the list. #t = start" + (not (-> arg0 prev)) + ) + +;; definition for function glst-empty? +(defun glst-empty? ((arg0 glst-list)) + "is the list empty, #t = empty" + (= (-> arg0 tailpred) arg0) + ) + +;; definition for function glst-node-name +(defun glst-node-name ((arg0 glst-named-node)) + (-> arg0 privname) + ) + +;; definition for function glst-set-name! +(defun glst-set-name! ((arg0 glst-named-node) (arg1 string)) + (set! (-> arg0 privname) arg1) + arg1 + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/engine/util/glist_REF.gc b/test/decompiler/reference/jakx/engine/util/glist_REF.gc new file mode 100644 index 0000000000..b4a1d7bb95 --- /dev/null +++ b/test/decompiler/reference/jakx/engine/util/glist_REF.gc @@ -0,0 +1,199 @@ +;;-*-Lisp-*- +(in-package goal) + +;; this file is debug only +(declare-file (debug)) + +;; definition for function glst-num-elements +(defun glst-num-elements ((arg0 glst-list)) + (-> arg0 numelem) + ) + +;; definition for function glst-remove +(defun glst-remove ((arg0 glst-list) (arg1 glst-node)) + (let ((v1-0 arg1)) + "return the previous node in the list" + (let ((v1-1 (-> v1-0 prev)) + (a2-1 arg1) + ) + "return the next node in the list" + (let ((a2-2 (-> a2-1 next))) + (set! (-> v1-1 next) a2-2) + (set! (-> a2-2 prev) v1-1) + ) + ) + ) + (+! (-> arg0 numelem) -1) + arg1 + ) + +;; definition for function glst-remove-tail +(defun glst-remove-tail ((arg0 glst-list)) + (let ((v1-0 arg0)) + "return the tail of the list" + (let* ((a1-1 (-> v1-0 tailpred)) + (v1-1 a1-1) + ) + "is this node the start of the list. #t = start" + (if (not (not (-> v1-1 prev))) + (glst-remove arg0 a1-1) + (the-as glst-node #f) + ) + ) + ) + ) + +;; definition for function glst-remove-head +(defun glst-remove-head ((arg0 glst-list)) + (let ((v1-0 arg0)) + "return the start of the list" + (let* ((a1-1 (-> v1-0 head)) + (v1-1 a1-1) + ) + "is this node the end of the list. #t = end" + (if (not (not (-> v1-1 next))) + (glst-remove arg0 a1-1) + (the-as glst-node #f) + ) + ) + ) + ) + +;; definition for function glst-insert-before +(defun glst-insert-before ((arg0 glst-list) (arg1 glst-node) (arg2 glst-node)) + (let ((v1-0 arg1)) + "return the previous node in the list" + (let ((v1-1 (-> v1-0 prev))) + (set! (-> arg2 prev) v1-1) + (set! (-> arg2 next) arg1) + (set! (-> v1-1 next) arg2) + ) + ) + (set! (-> arg1 prev) arg2) + (+! (-> arg0 numelem) 1) + arg2 + ) + +;; definition for function glst-insert-after +(defun glst-insert-after ((arg0 glst-list) (arg1 glst-node) (arg2 glst-node)) + (let ((v1-0 arg1)) + "return the next node in the list" + (let ((v1-1 (-> v1-0 next))) + (set! (-> arg2 prev) arg1) + (set! (-> arg2 next) v1-1) + (set! (-> v1-1 prev) arg2) + ) + ) + (set! (-> arg1 next) arg2) + (+! (-> arg0 numelem) 1) + arg2 + ) + +;; definition for function glst-add-tail +(defun glst-add-tail ((arg0 glst-list) (arg1 glst-node)) + (glst-insert-before arg0 (the-as glst-node (&-> arg0 tail)) arg1) + arg1 + ) + +;; definition for function glst-add-head +(defun glst-add-head ((arg0 glst-list) (arg1 glst-node)) + (glst-insert-after arg0 (the-as glst-node arg0) arg1) + arg1 + ) + +;; definition for function glst-init-list! +(defun glst-init-list! ((arg0 glst-list)) + (set! (-> arg0 head) (the-as glst-node (&-> arg0 tail))) + (set! (-> arg0 tail) #f) + (set! (-> arg0 tailpred) (the-as glst-node (&-> arg0 head))) + (set! (-> arg0 numelem) 0) + arg0 + ) + +;; definition for function glst-find-node-by-name +(defun glst-find-node-by-name ((arg0 glst-list) (arg1 string)) + (let ((v1-0 arg0)) + "return the start of the list" + (let ((s5-0 (-> v1-0 head))) + (while (let ((v1-6 s5-0)) + "is this node the end of the list. #t = end" + (not (not (-> v1-6 next))) + ) + (if (name= (-> (the-as glst-named-node s5-0) privname) arg1) + (return s5-0) + ) + "return the next node in the list" + (set! s5-0 (-> s5-0 next)) + ) + ) + ) + (the-as glst-node #f) + ) + +;; definition for function glst-get-node-by-index +(defun glst-get-node-by-index ((arg0 glst-list) (arg1 int)) + (when (and (< arg1 (glst-num-elements arg0)) (>= arg1 0)) + "return the start of the list" + (let ((v1-3 (-> arg0 head))) + (dotimes (a0-3 arg1) + (nop!) + (nop!) + (nop!) + (nop!) + "return the next node in the list" + (set! v1-3 (-> v1-3 next)) + ) + (return v1-3) + ) + ) + (the-as glst-node #f) + ) + +;; definition for function glst-length-of-longest-name +(defun glst-length-of-longest-name ((arg0 glst-list)) + (let ((gp-0 0)) + (let ((v1-0 arg0)) + "return the start of the list" + (let ((s5-0 (-> v1-0 head))) + (while (let ((v1-6 s5-0)) + "is this node the end of the list. #t = end" + (not (not (-> v1-6 next))) + ) + (let ((v1-3 (length (-> (the-as glst-named-node s5-0) privname)))) + (if (< gp-0 v1-3) + (set! gp-0 v1-3) + ) + ) + "return the next node in the list" + (set! s5-0 (-> s5-0 next)) + ) + ) + ) + gp-0 + ) + ) + +;; definition for function glst-get-node-index +(defun glst-get-node-index ((arg0 glst-list) (arg1 glst-node)) + (let ((v1-0 0)) + "return the start of the list" + (let ((a0-1 (-> arg0 head))) + (while (let ((a2-3 a0-1)) + "is this node the end of the list. #t = end" + (not (not (-> a2-3 next))) + ) + (if (= a0-1 arg1) + (return v1-0) + ) + (+! v1-0 1) + "return the next node in the list" + (set! a0-1 (-> a0-1 next)) + ) + ) + ) + -1 + ) + + + + diff --git a/test/decompiler/reference/jakx/engine/util/profile_REF.gc b/test/decompiler/reference/jakx/engine/util/profile_REF.gc new file mode 100644 index 0000000000..f8928234bc --- /dev/null +++ b/test/decompiler/reference/jakx/engine/util/profile_REF.gc @@ -0,0 +1,1627 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *profile-spec-array*, type (inline-array profile-spec) +(define *profile-spec-array* + (new 'static 'inline-array profile-spec 13 + (new 'static 'profile-spec :name 'dummy :color (new 'static 'rgba :r #x20 :g #x20 :b #x20 :a #x80)) + (new 'static 'profile-spec :name 'blit-displays :color (new 'static 'rgba :r #x20 :g #x20 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'sky :color (new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)) + (new 'static 'profile-spec :name 'ocean :color (new 'static 'rgba :r #x20 :g #x80 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'tfrag :color (new 'static 'rgba :r #x80 :g #x20 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'texture :color (new 'static 'rgba :r #x80 :g #x80 :b #x20 :a #x80)) + (new 'static 'profile-spec :name 'tie :color (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)) + (new 'static 'profile-spec :name 'generic :color (new 'static 'rgba :r #xc0 :g #xc0 :a #x80)) + (new 'static 'profile-spec :name 'merc :color (new 'static 'rgba :r #xc0 :b #xc0 :a #x80)) + (new 'static 'profile-spec :name 'shrubbery :color (new 'static 'rgba :r #xc0 :a #x80)) + (new 'static 'profile-spec :name 'particle :color (new 'static 'rgba :g #xc0 :b #xc0 :a #x80)) + (new 'static 'profile-spec :name 'debug :color (new 'static 'rgba :g #xc0 :a #x80)) + (new 'static 'profile-spec :name 'other :color (new 'static 'rgba :r #xc0 :g #xc0 :b #xc0 :a #x80)) + ) + ) + +;; definition for symbol *profile-translate-array*, type (array uint8) +(define *profile-translate-array* (new 'static 'boxed-array :type uint8 + #x0 + #x0 + #x0 + #x1 + #x5 + #x2 + #x3 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x4 + #x6 + #x6 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x6 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x9 + #x7 + #x9 + #x9 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x4 + #x6 + #x6 + #x8 + #x8 + #x7 + #x4 + #x6 + #x6 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #xc + #xc + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x8 + #x8 + #x7 + #x7 + #x8 + #x8 + #x7 + #x7 + #x5 + #x3 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x8 + #x7 + #x4 + #x6 + #x6 + #x6 + #x4 + #x6 + #x7 + #x5 + #x8 + #x8 + #x7 + #x8 + #x8 + #x7 + #x1 + #x5 + #x7 + #xa + #x7 + #x7 + #xa + #x7 + #xc + #xc + #xc + #xc + #xc + #xc + #x5 + #x8 + #x8 + #xb + #x5 + #xc + #xc + #xc + #xc + #xb + #xb + #xb + ) + ) + +;; definition of type profile-work +(deftype profile-work (structure) + "DMA templates for profile drawing." + ((sprite-tmpl dma-gif-packet :inline) + (line-tmpl dma-gif-packet :inline) + (last-index int32) + ) + ) + +;; definition for method 3 of type profile-work +(defmethod inspect ((this profile-work)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'profile-work) + (format #t "~1Tsprite-tmpl: #~%" (-> this sprite-tmpl)) + (format #t "~1Tline-tmpl: #~%" (-> this line-tmpl)) + (format #t "~1Tlast-index: ~D~%" (-> this last-index)) + (label cfg-4) + this + ) + +;; definition for symbol *profile-work*, type profile-work +(define *profile-work* (new 'static 'profile-work + :sprite-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x3023400000008001 #x551) + ) + :line-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1) + ) + :gif (new 'static 'array uint64 2 #x3020c00000008001 #x551) + ) + ) + ) + +;; definition for symbol *profile-x*, type int +(define *profile-x* 1808) + +;; definition for symbol *profile-y*, type int +(define *profile-y* 1848) + +;; definition for symbol *profile-w*, type int +(define *profile-w* 416) + +;; definition for symbol *profile-h*, type int +(define *profile-h* 8) + +;; definition for symbol *profile-ticks*, type symbol +(define *profile-ticks* #f) + +;; definition for method 10 of type profile-segment-array +;; WARN: Return type mismatch int vs none. +(defmethod start-frame! ((this profile-segment-array)) + "Restart the profiler for the start of a frame." + (set! (-> this count) 0) + (set! (-> this depth) 0) + (set! (-> this max-depth) 0) + (set! (-> this base-time) (the-as int (timer-count (the-as timer-bank #x10000800)))) + 'all + (start-segment! this 'all *profile-all-color*) + 0 + (none) + ) + +;; definition for method 11 of type profile-segment-array +;; WARN: Return type mismatch int vs none. +(defmethod start-segment! ((this profile-segment-array) (arg0 symbol) (arg1 rgba)) + "Start an event." + (when (and *dproc* *debug-segment*) + (let ((s4-0 (-> this data (-> this count)))) + (let ((s3-0 (-> this base-time))) + (set! (-> s4-0 name) arg0) + (set! (-> s4-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-0)))) + ) + (set! (-> s4-0 depth) (the-as uint (-> this depth))) + (set! (-> s4-0 color) arg1) + (set! (-> this segment (-> this depth)) s4-0) + ) + (set! (-> this count) (min 2099 (+ (-> this count) 1))) + (+! (-> this depth) 1) + (set! (-> this max-depth) (max (-> this max-depth) (-> this depth))) + ) + 0 + (none) + ) + +;; definition for method 12 of type profile-segment-array +;; WARN: Return type mismatch int vs none. +(defmethod end-segment! ((this profile-segment-array)) + "Stop the most recently started event." + (when (and *dproc* *debug-segment*) + (let* ((v1-4 (+ (-> this depth) -1)) + (s5-0 (-> this segment v1-4)) + (s4-0 (-> this base-time)) + ) + (when (>= v1-4 0) + (set! (-> s5-0 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-0)))) + (+! (-> this depth) -1) + ) + ) + ) + 0 + (none) + ) + +;; definition for method 9 of type profile-array +;; WARN: Return type mismatch int vs none. +(defmethod postprocess-data! ((this profile-array)) + "Create the collapsed summary of the collected data." + (dotimes (s5-0 2) + (let ((s3-0 (-> *profile-array* data s5-0)) + (s4-0 *profile-collapse*) + ) + (mem-copy! (&-> s3-0 type) (&-> this data s5-0 type) #x8370) + (cond + ((zero? s5-0) + ((lambda ((arg0 profile-segment-array) (arg1 profile-collapse)) + (let ((v0-0 0)) + (dotimes (v1-0 48) + (set! (-> arg1 data v1-0 name) #f) + (set! (-> arg1 data v1-0 count) (the-as uint 0)) + (set! (-> arg1 data v1-0 vu-count) (the-as uint 0)) + (set! (-> arg1 data v1-0 depth) (the-as uint 0)) + (set! (-> arg1 data v1-0 start-time) 0) + (set! (-> arg1 data v1-0 end-time) 0) + ) + (dotimes (v1-3 (-> arg0 count)) + (let ((a2-15 (- (-> arg0 data v1-3 end-time) (-> arg0 data v1-3 start-time)))) + (let ((t0-0 (-> arg0 data v1-3 name))) + (dotimes (a3-5 v0-0) + (when (= (-> arg1 data a3-5 name) t0-0) + (+! (-> arg1 data a3-5 count) 1) + (set! (-> arg1 data a3-5 start-time) (the-as int (+ (-> arg1 data a3-5 code-time) a2-15))) + (goto cfg-11) + ) + ) + (set! (-> arg1 data v0-0 name) t0-0) + ) + (set! (-> arg1 data v0-0 count) (the-as uint 1)) + (set! (-> arg1 data v0-0 depth) (-> arg0 data v1-3 depth)) + (set! (-> arg1 data v0-0 start-time) a2-15) + ) + (set! (-> arg1 data v0-0 color) (-> arg0 data v1-3 color)) + (set! v0-0 (min 47 (+ v0-0 1))) + (label cfg-11) + ) + (set! (-> arg1 count) v0-0) + ) + (none) + ) + s3-0 + s4-0 + ) + ) + (else + (let ((v1-6 3) + (a0-5 (+ (-> s3-0 count) -1)) + ) + (while (>= a0-5 v1-6) + (let ((a2-1 (-> s3-0 data v1-6))) + (set! (-> a2-1 name) (-> *profile-spec-array* (-> *profile-translate-array* v1-6) name)) + (set! (-> a2-1 color) (-> *profile-spec-array* (-> *profile-translate-array* v1-6) color)) + (let ((a1-17 (- (-> a2-1 end-time) (-> a2-1 start-time))) + (a3-3 (-> a2-1 name)) + ) + (dotimes (a2-2 (-> s4-0 count)) + (when (= (-> s4-0 data a2-2 name) a3-3) + (+! (-> s4-0 data a2-2 vu-count) 1) + (set! (-> s4-0 data a2-2 end-time) (the-as int (+ (-> s4-0 data a2-2 vu-time) a1-17))) + (goto cfg-11) + ) + ) + ) + ) + (label cfg-11) + (+! v1-6 1) + ) + ) + (countdown (v1-9 (-> s3-0 count)) + (when (nonzero? (-> s3-0 data v1-9 end-time)) + (set! (-> s4-0 data 0 vu-count) (the-as uint 1)) + (set! (-> s4-0 data 0 end-time) (- (-> s3-0 data v1-9 end-time) (-> s3-0 data 0 start-time))) + (goto cfg-19) + ) + ) + ) + ) + ) + (label cfg-19) + ) + 0 + (none) + ) + +;; definition for method 10 of type profile-array +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. +(defmethod draw-bars! ((this profile-array) (arg0 dma-buffer) (arg1 int)) + "Generate DMA data for drawing the profile bars." + (let ((a1-1 (-> *viewport-array* default))) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (zbuf-1 (-> a1-1 zbuf-off)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) + ) + (let ((v1-6 (* (+ *profile-x* (/ *profile-w* 2)) 16)) + (a0-9 (-> arg0 base)) + ) + (set! (-> (the-as (pointer uint128) a0-9) 0) (-> *profile-work* line-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) a0-9) 1) (-> *profile-work* line-tmpl quad 1)) + (set-vector! (the-as vector4w (&-> (the-as (pointer uint128) a0-9) 2)) 64 64 64 64) + (set-vector! (the-as vector4w (&+ a0-9 48)) v1-6 #x7340 #xffffff 0) + (set-vector! (the-as vector4w (&+ a0-9 64)) v1-6 #x7580 #xffffff 0) + ) + (&+! (-> arg0 base) 80) + (dotimes (s3-0 2) + (let* ((v1-13 (-> this data s3-0)) + (a0-11 (-> v1-13 max-depth)) + (s2-1 (max 14 (* a0-11 2))) + ) + (set! *profile-y* (+ arg1 1840)) + (let ((a1-26 (-> arg0 base))) + (set! (-> (the-as (pointer uint128) a1-26) 0) (-> *profile-work* sprite-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) a1-26) 1) (-> *profile-work* sprite-tmpl quad 1)) + (set-vector! (the-as vector4w (&-> (the-as (pointer uint128) a1-26) 2)) 64 64 64 64) + (set-vector! (the-as vector4w (&+ a1-26 48)) (* *profile-x* 16) (* *profile-y* 16) #xffffff 0) + (set-vector! + (the-as vector4w (&+ a1-26 64)) + (* (+ *profile-x* *profile-w*) 16) + (* (+ *profile-y* s2-1) 16) + #xffffff + 0 + ) + ) + (&+! (-> arg0 base) 80) + (let ((a0-12 (/ s2-1 a0-11))) + (dotimes (a1-30 (-> v1-13 count)) + (let ((a2-29 (-> v1-13 data a1-30))) + (when (< (-> a2-29 start-time) (-> a2-29 end-time)) + (let* ((t0-1 (* *ticks-per-frame* 2)) + (a3-15 (* (+ *profile-x* (/ (* (-> a2-29 start-time) *profile-w*) t0-1)) 16)) + (t0-4 (* (+ *profile-x* (/ (* (-> a2-29 end-time) *profile-w*) t0-1)) 16)) + (t3-1 (* (+ arg1 1840 (* (-> a2-29 depth) (the-as uint a0-12))) 16)) + (t1-7 (+ t3-1 (* a0-12 16))) + (t2-5 (-> arg0 base)) + ) + (set! (-> (the-as (pointer uint128) t2-5) 0) (-> *profile-work* sprite-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) t2-5) 1) (-> *profile-work* sprite-tmpl quad 1)) + (set-vector! + (the-as vector4w (&-> (the-as (pointer uint128) t2-5) 2)) + (the int (* 1.9921875 (the float (-> a2-29 color r)))) + (the int (* 1.9921875 (the float (-> a2-29 color g)))) + (the int (* 1.9921875 (the float (-> a2-29 color b)))) + (the-as int (-> a2-29 color a)) + ) + (set-vector! (the-as vector4w (&+ t2-5 48)) a3-15 t3-1 #xffffff 0) + (set-vector! (the-as vector4w (&+ t2-5 64)) t0-4 t1-7 #xffffff 0) + ) + (&+! (-> arg0 base) 80) + ) + ) + ) + ) + (cond + ((zero? s3-0) + (let* ((s1-0 (-> v1-13 data 0 end-time)) + (f30-0 (* 100.0 (/ (the float s1-0) (the float *ticks-per-frame*)))) + ) + (cond + (*profile-ticks* + (let ((s0-0 draw-string-xy)) + (format (clear *temp-string*) "~5D" s1-0) + (s0-0 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-0 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + (else + (let ((s1-1 draw-string-xy)) + (format (clear *temp-string*) "~5,,2f" f30-0) + (s1-1 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-0 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + ) + ) + ) + (else + (let ((s1-2 0)) + (countdown (a0-21 (-> v1-13 count)) + (when (nonzero? (-> v1-13 data a0-21 end-time)) + (set! s1-2 (- (-> v1-13 data a0-21 end-time) (-> v1-13 data 0 start-time))) + (goto cfg-23) + ) + ) + (label cfg-23) + (let ((f30-1 (* 100.0 (/ (the float s1-2) (the float *ticks-per-frame*))))) + (cond + (*profile-ticks* + (let ((s0-2 draw-string-xy)) + (format (clear *temp-string*) "~5D" s1-2) + (s0-2 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-1 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + (else + (let ((s1-3 draw-string-xy)) + (format (clear *temp-string*) "~5,,2f" f30-1) + (s1-3 + *temp-string* + arg0 + 488 + arg1 + (if (>= f30-1 100.0) + (font-color red) + (font-color default) + ) + (font-flags shadow right) + ) + ) + ) + ) + ) + ) + ) + ) + (set! arg1 (+ s2-1 2 arg1)) + ) + ) + (none) + ) + +;; definition for method 11 of type profile-array +;; WARN: Return type mismatch int vs none. +(defmethod draw-text! ((this profile-array)) + "Generate DMA data for drawing the profile information screen." + (let ((gp-0 *profile-collapse*)) + (dotimes (s5-0 (-> gp-0 count)) + (when (or (nonzero? (-> gp-0 data s5-0 count)) (nonzero? (-> gp-0 data s5-0 vu-count))) + (dotimes (s4-0 (the-as int (-> gp-0 data s5-0 depth))) + (format *stdcon* " ") + ) + (format *stdcon* "~o~s~0k" (-> gp-0 data s5-0 color) (symbol->string (-> gp-0 data s5-0 name))) + (if (nonzero? (-> gp-0 data s5-0 count)) + (format + *stdcon* + "~170h~5d~220h~5d~280h~5,,2f" + (-> gp-0 data s5-0 count) + (-> gp-0 data s5-0 code-time) + (* 100.0 (/ (the float (-> gp-0 data s5-0 code-time)) (the float *ticks-per-frame*))) + ) + ) + (if (nonzero? (-> gp-0 data s5-0 vu-count)) + (format + *stdcon* + "~338h~5d~388h~5d~448h~5,,2f" + (-> gp-0 data s5-0 vu-count) + (-> gp-0 data s5-0 vu-time) + (* 100.0 (/ (the float (-> gp-0 data s5-0 vu-time)) (the float *ticks-per-frame*))) + ) + ) + (format *stdcon* "~1k~%") + ) + ) + ) + 0 + (none) + ) diff --git a/test/decompiler/reference/jakx/kernel/dgo-h_REF.gc b/test/decompiler/reference/jakx/kernel/dgo-h_REF.gc new file mode 100644 index 0000000000..75cef1afc0 --- /dev/null +++ b/test/decompiler/reference/jakx/kernel/dgo-h_REF.gc @@ -0,0 +1,73 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type dgo-header +(deftype dgo-header (structure) + ((length uint32) + (rootname uint8 60) + ) + ) + +;; definition for method 3 of type dgo-header +(defmethod inspect ((this dgo-header)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'dgo-header) + (format #t "~1Tlength: ~D~%" (-> this length)) + (format #t "~1Trootname[60] @ #x~X~%" (-> this rootname)) + (label cfg-4) + this + ) + +;; definition of type dgo-entry +(deftype dgo-entry (structure) + ((offset uint32) + (length uint32) + ) + ) + +;; definition for method 3 of type dgo-entry +(defmethod inspect ((this dgo-entry)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'dgo-entry) + (format #t "~1Toffset: ~D~%" (-> this offset)) + (format #t "~1Tlength: ~D~%" (-> this length)) + (label cfg-4) + this + ) + +;; definition of type dgo-file +(deftype dgo-file (basic) + ((num-go-files uint32) + (total-length uint32) + (rsvd uint32) + (data uint8 :dynamic) + ) + ) + +;; definition for method 3 of type dgo-file +(defmethod inspect ((this dgo-file)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this (-> this type)) + (format #t "~1Tnum-go-files: ~D~%" (-> this num-go-files)) + (format #t "~1Ttotal-length: ~D~%" (-> this total-length)) + (format #t "~1Trsvd: ~D~%" (-> this rsvd)) + (format #t "~1Tdata[0] @ #x~X~%" (-> this data)) + (label cfg-4) + this + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/kernel/gstring-h_REF.gc b/test/decompiler/reference/jakx/kernel/gstring-h_REF.gc new file mode 100644 index 0000000000..ce20a32967 --- /dev/null +++ b/test/decompiler/reference/jakx/kernel/gstring-h_REF.gc @@ -0,0 +1,55 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for function strlen +(defun strlen ((arg0 pointer)) + (let ((v1-0 arg0) + (v0-0 0) + ) + (while (nonzero? (-> (the-as (pointer int8) v1-0))) + (+! v0-0 1) + (&+! v1-0 1) + ) + v0-0 + ) + ) + +;; definition for function strncmp +(defun strncmp ((arg0 pointer) (arg1 pointer) (arg2 int)) + (let ((v1-0 arg0) + (a0-1 arg1) + ) + (while (nonzero? arg2) + (if (!= (-> (the-as (pointer int8) v1-0)) (-> (the-as (pointer int8) a0-1))) + (return #f) + ) + (if (zero? (-> (the-as (pointer int8) v1-0))) + (return #t) + ) + (set! arg2 (+ arg2 -1)) + (&+! v1-0 1) + (&+! a0-1 1) + ) + ) + #t + ) + +;; definition for function strstr +(defun strstr ((arg0 pointer) (arg1 pointer)) + (let ((s4-0 (strlen arg1))) + (while (nonzero? (-> (the-as (pointer int8) arg0))) + (if (strncmp arg0 arg1 s4-0) + (return arg0) + ) + (&+! arg0 1) + ) + ) + (the-as pointer #f) + ) + +;; failed to figure out what this is: +0 + + + + diff --git a/test/decompiler/reference/jakx/kernel/gstring_REF.gc b/test/decompiler/reference/jakx/kernel/gstring_REF.gc new file mode 100644 index 0000000000..5ce4b1ae53 --- /dev/null +++ b/test/decompiler/reference/jakx/kernel/gstring_REF.gc @@ -0,0 +1,835 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for method 4 of type string +(defmethod length ((this string)) + (let ((v1-0 (-> this data))) + (while (nonzero? (-> v1-0 0)) + (nop!) + (nop!) + (nop!) + (set! v1-0 (&-> v1-0 1)) + ) + (&- v1-0 (the-as uint (-> this data))) + ) + ) + +;; definition for method 5 of type string +(defmethod asize-of ((this string)) + (+ (-> this allocated-length) 1 (-> string size)) + ) + +;; definition for function copy-string<-string +(defun copy-string<-string ((arg0 string) (arg1 string)) + "Copy a string. No bounds check. Writes null terminator." + (let ((v1-0 (-> arg0 data))) + (let ((a1-1 (-> arg1 data))) + (while (nonzero? (-> a1-1 0)) + (set! (-> v1-0 0) (-> a1-1 0)) + (set! v1-0 (&-> v1-0 1)) + (set! a1-1 (&-> a1-1 1)) + ) + ) + (set! (-> v1-0 0) (the-as uint 0)) + ) + arg0 + ) + +;; definition for method 0 of type string +(defmethod new string ((allocation symbol) (type-to-make type) (arg0 int) (arg1 string)) + (cond + (arg1 + (let* ((s2-1 (max (length arg1) arg0)) + (a0-4 (object-new allocation type-to-make (+ s2-1 1 (-> type-to-make size)))) + ) + (set! (-> a0-4 allocated-length) s2-1) + (copy-string<-string a0-4 arg1) + ) + ) + (else + (let ((v0-2 (object-new allocation type-to-make (+ arg0 1 (-> type-to-make size))))) + (set! (-> v0-2 allocated-length) arg0) + v0-2 + ) + ) + ) + ) + +;; definition for function to-upper +;; WARN: Return type mismatch object vs string. +(defun to-upper ((arg0 string)) + (the-as string (if (and (>= (the-as uint arg0) (the-as uint 97)) (>= (the-as uint 122) (the-as uint arg0))) + (&-> (the-as (pointer uint8) arg0) -32) + arg0 + ) + ) + ) + +;; definition for function string= +(defun string= ((arg0 string) (arg1 string)) + (let ((a2-0 (-> arg0 data)) + (v1-0 (-> arg1 data)) + ) + (if (or (zero? arg0) (zero? arg1)) + (return #f) + ) + (while (and (nonzero? (-> a2-0 0)) (nonzero? (-> v1-0 0))) + (if (!= (-> a2-0 0) (-> v1-0 0)) + (return #f) + ) + (set! a2-0 (&-> a2-0 1)) + (set! v1-0 (&-> v1-0 1)) + ) + (and (zero? (-> a2-0 0)) (zero? (-> v1-0 0))) + ) + ) + +;; definition for function nocase-string= +(defun nocase-string= ((arg0 string) (arg1 string)) + (let ((s5-0 (-> arg0 data)) + (gp-0 (-> arg1 data)) + ) + (if (or (zero? arg0) (zero? arg1)) + (return #f) + ) + (while (and (nonzero? (-> s5-0 0)) (nonzero? (-> gp-0 0))) + (if (!= (to-upper (the-as string (-> s5-0 0))) (to-upper (the-as string (-> gp-0 0)))) + (return #f) + ) + (set! s5-0 (&-> s5-0 1)) + (set! gp-0 (&-> gp-0 1)) + ) + (and (zero? (-> s5-0 0)) (zero? (-> gp-0 0))) + ) + ) + +;; definition for function string-prefix= +(defun string-prefix= ((arg0 string) (arg1 string)) + "Check if a string starts with a given string." + (let ((v1-0 (-> arg0 data))) + (let ((a2-0 (-> arg1 data))) + (if (or (zero? arg0) (zero? arg1)) + (return #f) + ) + (while (and (nonzero? (-> v1-0 0)) (nonzero? (-> a2-0 0))) + (if (!= (-> v1-0 0) (-> a2-0 0)) + (return #f) + ) + (set! v1-0 (&-> v1-0 1)) + (set! a2-0 (&-> a2-0 1)) + ) + ) + (zero? (-> v1-0 0)) + ) + ) + +;; definition for function charp-prefix= +(defun charp-prefix= ((arg0 (pointer uint8)) (arg1 (pointer uint8))) + "Check if a c-string starts with a given c-string." + (while (and (nonzero? (-> arg0 0)) (nonzero? (-> arg1 0))) + (if (!= (-> arg0 0) (-> arg1 0)) + (return #f) + ) + (set! arg0 (&-> arg0 1)) + (set! arg1 (&-> arg1 1)) + ) + (zero? (-> arg0 0)) + ) + +;; definition for function string-suffix= +(defun string-suffix= ((arg0 string) (arg1 string)) + "Check if a string ends with a given string." + (let ((s5-0 (-> arg0 data)) + (gp-0 (-> arg1 data)) + ) + (if (or (zero? arg0) (zero? arg1)) + (return #f) + ) + (let ((s4-0 (length arg0)) + (v1-5 (length arg1)) + ) + (if (< s4-0 v1-5) + (return #f) + ) + (let ((v1-7 (&+ s5-0 (- s4-0 v1-5)))) + (while (and (nonzero? (-> v1-7 0)) (nonzero? (-> gp-0 0))) + (if (!= (-> v1-7 0) (-> gp-0 0)) + (return #f) + ) + (set! v1-7 (&-> v1-7 1)) + (set! gp-0 (&-> gp-0 1)) + ) + (zero? (-> v1-7 0)) + ) + ) + ) + ) + +;; definition for function string-position +(defun string-position ((arg0 string) (arg1 string)) + "Find the point where a string occurs in another. If it doesn't, return -1." + (let ((s5-0 0) + (s4-0 (-> arg1 data)) + ) + (while (nonzero? (-> s4-0 0)) + (if (charp-prefix= (-> arg0 data) s4-0) + (return s5-0) + ) + (+! s5-0 1) + (set! s4-0 (&-> s4-0 1)) + ) + ) + -1 + ) + +;; definition for function string-charp= +(defun string-charp= ((arg0 string) (arg1 (pointer uint8))) + "Check if a string is equal to a c-string." + (let ((v1-0 (-> arg0 data))) + (while (and (nonzero? (-> v1-0 0)) (nonzero? (-> arg1 0))) + (if (!= (-> v1-0 0) (-> arg1 0)) + (return #f) + ) + (set! v1-0 (&-> v1-0 1)) + (set! arg1 (&-> arg1 1)) + ) + (and (zero? (-> v1-0 0)) (zero? (-> arg1 0))) + ) + ) + +;; definition for function name= +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function copyn-string<-charp +(defun copyn-string<-charp ((arg0 string) (arg1 (pointer uint8)) (arg2 int)) + "Copy part of a c-string to a string. Writes null terminator after num-chars." + (let ((v1-0 (-> arg0 data))) + (dotimes (a3-0 arg2) + (set! (-> v1-0 0) (-> arg1 0)) + (set! v1-0 (&-> v1-0 1)) + (set! arg1 (&-> arg1 1)) + ) + (set! (-> v1-0 0) (the-as uint 0)) + ) + arg0 + ) + +;; definition for function string<-charp +(defun string<-charp ((arg0 string) (arg1 (pointer uint8))) + "Copy a c-string to a string. Writes the null terminator." + (let ((v1-0 (-> arg0 data))) + (while (nonzero? (-> arg1 0)) + (set! (-> v1-0 0) (-> arg1 0)) + (set! v1-0 (&-> v1-0 1)) + (set! arg1 (&-> arg1 1)) + ) + (set! (-> v1-0 0) (the-as uint 0)) + ) + arg0 + ) + +;; definition for function charp<-string +(defun charp<-string ((arg0 (pointer uint8)) (arg1 string)) + "Copy a string to a c-string. Writes the null terminator." + (let ((v1-0 (-> arg1 data))) + (while (nonzero? (-> v1-0 0)) + (set! (-> arg0 0) (-> v1-0 0)) + (set! arg0 (&-> arg0 1)) + (set! v1-0 (&-> v1-0 1)) + ) + ) + (set! (-> arg0 0) (the-as uint 0)) + 0 + ) + +;; definition for function copyn-charp<-string +;; WARN: Return type mismatch int vs none. +(defun copyn-charp<-string ((arg0 (pointer uint8)) (arg1 string) (arg2 int)) + "Copy part of a string to a c-string. Writes null terminator, repeatedly, to reach the given length. + If the source is longer than the length, the null terminator is still included." + (let ((v1-0 (-> arg1 data))) + (while (and (nonzero? (-> v1-0 0)) (< 1 arg2)) + (set! (-> arg0 0) (-> v1-0 0)) + (set! arg0 (&-> arg0 1)) + (set! v1-0 (&-> v1-0 1)) + (set! arg2 (+ arg2 -1)) + ) + ) + (while (> arg2 0) + (set! (-> arg0 0) (the-as uint 0)) + (set! arg0 (&-> arg0 1)) + (set! arg2 (+ arg2 -1)) + ) + 0 + (none) + ) + +;; definition for function copy-charp<-charp +(defun copy-charp<-charp ((arg0 (pointer uint8)) (arg1 (pointer uint8))) + "C-string copy, writes null terminator." + (while (nonzero? (-> arg1 0)) + (set! (-> arg0 0) (-> arg1 0)) + (set! arg0 (&-> arg0 1)) + (set! arg1 (&-> arg1 1)) + ) + (set! (-> arg0 0) (the-as uint 0)) + arg0 + ) + +;; definition for function cat-string<-string +(defun cat-string<-string ((arg0 string) (arg1 string)) + "Append a string to another." + (let ((v1-0 (-> arg0 data))) + (let ((a1-1 (-> arg1 data))) + (while (nonzero? (-> v1-0 0)) + (nop!) + (nop!) + (nop!) + (set! v1-0 (&-> v1-0 1)) + ) + (while (nonzero? (-> a1-1 0)) + (set! (-> v1-0 0) (-> a1-1 0)) + (set! v1-0 (&-> v1-0 1)) + (set! a1-1 (&-> a1-1 1)) + ) + ) + (set! (-> v1-0 0) (the-as uint 0)) + ) + arg0 + ) + +;; definition for function catn-string<-charp +(defun catn-string<-charp ((arg0 string) (arg1 (pointer uint8)) (arg2 int)) + "Append part of a string to another. Writes null terminator." + (let ((v1-0 (-> arg0 data))) + (while (nonzero? (-> v1-0 0)) + (nop!) + (nop!) + (nop!) + (set! v1-0 (&-> v1-0 1)) + ) + (dotimes (a3-2 arg2) + (set! (-> v1-0 0) (-> arg1 0)) + (set! v1-0 (&-> v1-0 1)) + (set! arg1 (&-> arg1 1)) + ) + (set! (-> v1-0 0) (the-as uint 0)) + ) + arg0 + ) + +;; definition for function cat-string<-string_to_charp +(defun cat-string<-string_to_charp ((arg0 string) (arg1 string) (arg2 (pointer uint8))) + "Append part of a string to another, up to the given pointer." + (let ((v1-0 (-> arg1 data)) + (v0-0 (-> arg0 data)) + ) + (while (nonzero? (-> v0-0 0)) + (nop!) + (nop!) + (nop!) + (set! v0-0 (&-> v0-0 1)) + ) + (while (and (>= (the-as int arg2) (the-as int v1-0)) (nonzero? (-> v1-0 0))) + (set! (-> v0-0 0) (-> v1-0 0)) + (set! v0-0 (&-> v0-0 1)) + (set! v1-0 (&-> v1-0 1)) + ) + (set! (-> v0-0 0) (the-as uint 0)) + v0-0 + ) + ) + +;; definition for function append-character-to-string +(defun append-character-to-string ((arg0 string) (arg1 uint8)) + "Append a single character to a string. Writes null terminator after." + (let ((v1-0 (-> arg0 data))) + (while (nonzero? (-> v1-0 0)) + (nop!) + (nop!) + (nop!) + (set! v1-0 (&-> v1-0 1)) + ) + (set! (-> v1-0 0) (the-as uint arg1)) + (set! (-> v1-0 1) (the-as uint 0)) + ) + 0 + 0 + ) + +;; definition for function charp-basename +(defun charp-basename ((arg0 (pointer uint8))) + "Strip the directory and suffix from a c-string." + (let ((v1-0 arg0)) + (while (nonzero? (-> v1-0 0)) + (set! v1-0 (&-> v1-0 1)) + ) + (while (< (the-as int arg0) (the-as int v1-0)) + (set! v1-0 (&-> v1-0 -1)) + (if (or (= (-> v1-0 0) 47) (= (-> v1-0 0) 92)) + (return (&-> v1-0 1)) + ) + ) + ) + arg0 + ) + +;; definition for function clear +(defun clear ((arg0 string)) + "Set string to the empty string." + (set! (-> arg0 data 0) (the-as uint 0)) + arg0 + ) + +;; definition for function string arg0 data v1-4) (-> arg1 data v1-4)) + (return #t) + ) + ((< (-> arg1 data v1-4) (-> arg0 data v1-4)) + (return #f) + ) + ) + ) + ) + #f + ) + +;; definition for function string>? +(defun string>? ((arg0 string) (arg1 string)) + "Slightly incorrect ordering of strings." + (let ((s4-1 (min (length arg0) (length arg1)))) + (dotimes (v1-4 s4-1) + (cond + ((< (-> arg0 data v1-4) (-> arg1 data v1-4)) + (return #f) + ) + ((< (-> arg1 data v1-4) (-> arg0 data v1-4)) + (return #t) + ) + ) + ) + ) + #f + ) + +;; definition for function string<=? +(defun string<=? ((arg0 string) (arg1 string)) + "Slightly incorrect ordering of strings." + (let ((s4-1 (min (length arg0) (length arg1)))) + (dotimes (v1-4 s4-1) + (cond + ((< (-> arg0 data v1-4) (-> arg1 data v1-4)) + (return #t) + ) + ((< (-> arg1 data v1-4) (-> arg0 data v1-4)) + (return #f) + ) + ) + ) + ) + #t + ) + +;; definition for function string>=? +(defun string>=? ((arg0 string) (arg1 string)) + "Slightly incorrect ordering of strings." + (let ((s4-1 (min (length arg0) (length arg1)))) + (dotimes (v1-4 s4-1) + (cond + ((< (-> arg0 data v1-4) (-> arg1 data v1-4)) + (return #f) + ) + ((< (-> arg1 data v1-4) (-> arg0 data v1-4)) + (return #t) + ) + ) + ) + ) + #t + ) + +;; definition for symbol *string-tmp-str*, type string +(define *string-tmp-str* (new 'global 'string 128 (the-as string #f))) + +;; definition for function string-skip-to-char +(defun string-skip-to-char ((arg0 (pointer uint8)) (arg1 uint)) + "Advance to the given character." + (while (and (nonzero? (-> arg0 0)) (!= (-> arg0 0) arg1)) + (set! arg0 (&-> arg0 1)) + ) + arg0 + ) + +;; definition for function string-cat-to-last-char +(defun string-cat-to-last-char ((arg0 string) (arg1 string) (arg2 uint)) + "Append append-str to end of base-str, up to the last occurance of char" + (let ((s4-0 (&-> (the-as (pointer uint8) arg1) 3))) + (let ((v1-0 (string-skip-to-char (-> arg1 data) arg2))) + (when (= (-> v1-0 0) arg2) + (until (!= (-> v1-0 0) arg2) + (set! s4-0 v1-0) + (set! v1-0 (string-skip-to-char (&-> v1-0 1) arg2)) + ) + ) + ) + (cat-string<-string_to_charp arg0 arg1 s4-0) + ) + ) + +;; definition for function string-skip-whitespace +(defun string-skip-whitespace ((arg0 (pointer uint8))) + "Jump over whitespace chars." + (while (and (nonzero? (-> arg0 0)) (or (= (-> arg0 0) 32) (= (-> arg0 0) 9) (= (-> arg0 0) 13) (= (-> arg0 0) 10))) + (set! arg0 (&-> arg0 1)) + ) + arg0 + ) + +;; definition for function string-suck-up! +(defun string-suck-up! ((arg0 string) (arg1 (pointer uint8))) + "Move the string forward so the pointer is now at the beginning." + (when (!= arg1 (-> arg0 data)) + (let ((v1-2 (-> arg0 data))) + (while (nonzero? (-> arg1 0)) + (set! (-> v1-2 0) (-> arg1 0)) + (set! v1-2 (&-> v1-2 1)) + (set! arg1 (&-> arg1 1)) + ) + (set! (-> v1-2 0) (the-as uint 0)) + ) + 0 + ) + #f + ) + +;; definition for function string-strip-leading-whitespace! +(defun string-strip-leading-whitespace! ((arg0 string)) + "Strip leading whitespace." + (let ((a1-0 (string-skip-whitespace (-> arg0 data)))) + (string-suck-up! arg0 a1-0) + ) + #f + ) + +;; definition for function string-strip-trailing-whitespace! +(defun string-strip-trailing-whitespace! ((arg0 string)) + "String trailing whitespace." + (when (nonzero? (length arg0)) + (let ((v1-6 (&+ (-> arg0 data) (+ (length arg0) -1)))) + (while (and (>= (the-as int v1-6) (the-as int (-> arg0 data))) + (or (= (-> v1-6 0) 32) (= (-> v1-6 0) 9) (= (-> v1-6 0) 13) (= (-> v1-6 0) 10)) + ) + (set! v1-6 (&-> v1-6 -1)) + ) + (set! (-> v1-6 1) (the-as uint 0)) + ) + 0 + ) + #f + ) + +;; definition for function string-strip-whitespace! +(defun string-strip-whitespace! ((arg0 string)) + "Strip whitespace from the beginning and end of a string" + (string-strip-trailing-whitespace! arg0) + (string-strip-leading-whitespace! arg0) + #f + ) + +;; definition for function string-upcase +;; WARN: Return type mismatch string vs none. +(defun string-upcase ((arg0 string) (arg1 string) (arg2 symbol)) + "Uppercase characters. If convert-dash is set, - will be uppercased to _" + (let* ((a0-1 (-> arg0 data)) + (t0-0 (the-as int (-> a0-1 0))) + (a3-0 1) + (v1-0 0) + ) + (while (nonzero? (the-as uint t0-0)) + (cond + ((and (>= (the-as uint t0-0) (the-as uint 97)) (>= (the-as uint 122) (the-as uint t0-0))) + (set! t0-0 (the-as int (+ (the-as uint t0-0) -32))) + ) + ((and arg2 (= (the-as uint t0-0) 45)) + (set! t0-0 95) + ) + ) + (set! (-> arg1 data v1-0) (the-as uint t0-0)) + (set! t0-0 (the-as int (-> a0-1 a3-0))) + (+! a3-0 1) + (+! v1-0 1) + ) + (set! (-> arg1 data v1-0) (the-as uint 0)) + ) + 0 + (none) + ) + +;; definition for function string-get-arg!! +(defun string-get-arg!! ((arg0 string) (arg1 string)) + (let ((s4-0 (string-skip-whitespace (-> arg1 data)))) + (cond + ((= (-> s4-0 0) 34) + (let ((s4-1 (&-> s4-0 1))) + (let ((v1-3 s4-1)) + (while (and (nonzero? (-> s4-1 0)) (!= (-> s4-1 0) 34)) + (set! s4-1 (&-> s4-1 1)) + ) + (copyn-string<-charp arg0 v1-3 (&- s4-1 (the-as uint v1-3))) + ) + (if (= (-> s4-1 0) 34) + (set! s4-1 (&-> s4-1 1)) + ) + (let ((a1-3 (string-skip-whitespace s4-1))) + (string-suck-up! arg1 a1-3) + ) + ) + (return #t) + ) + ((nonzero? (-> s4-0 0)) + (let ((v1-11 s4-0)) + (while (and (nonzero? (-> s4-0 0)) (!= (-> s4-0 0) 32) (!= (-> s4-0 0) 9) (!= (-> s4-0 0) 13) (!= (-> s4-0 0) 10)) + (set! s4-0 (&-> s4-0 1)) + ) + (copyn-string<-charp arg0 v1-11 (&- s4-0 (the-as uint v1-11))) + ) + (let ((a1-9 (string-skip-whitespace s4-0))) + (string-suck-up! arg1 a1-9) + ) + (return #t) + ) + ) + ) + #f + ) + +;; definition for function string->int +(defun string->int ((arg0 string)) + "Convert string to int." + (let ((a0-1 (-> arg0 data)) + (v0-0 0) + (v1-0 #f) + ) + (cond + ((= (-> a0-1 0) 35) + (let ((a0-2 (&-> a0-1 1))) + (cond + ((or (= (-> a0-2 0) 120) (= (-> a0-2 0) 88)) + (let ((a0-3 (&-> a0-2 1))) + (when (= (-> a0-3 1) 45) + (set! v1-0 #t) + (set! a0-3 (&-> a0-3 1)) + ) + (while (or (and (>= (-> a0-3 0) (the-as uint 48)) (>= (the-as uint 57) (-> a0-3 0))) + (and (>= (-> a0-3 0) (the-as uint 65)) (>= (the-as uint 70) (-> a0-3 0))) + (and (>= (-> a0-3 0) (the-as uint 97)) (>= (the-as uint 102) (-> a0-3 0))) + ) + (cond + ((and (>= (-> a0-3 0) (the-as uint 65)) (>= (the-as uint 70) (-> a0-3 0))) + (set! v0-0 (the-as int (+ (-> a0-3 0) -55 (* v0-0 16)))) + ) + ((and (>= (-> a0-3 0) (the-as uint 97)) (>= (the-as uint 102) (-> a0-3 0))) + (set! v0-0 (the-as int (+ (-> a0-3 0) -87 (* v0-0 16)))) + ) + (else + (set! v0-0 (the-as int (+ (-> a0-3 0) -48 (* v0-0 16)))) + ) + ) + (set! a0-3 (&-> a0-3 1)) + ) + ) + ) + ((or (= (-> a0-2 0) 98) (= (-> a0-2 0) 66)) + (let ((a0-4 (&-> a0-2 1))) + (while (and (>= (-> a0-4 0) (the-as uint 48)) (>= (the-as uint 49) (-> a0-4 0))) + (set! v0-0 (the-as int (+ (-> a0-4 0) -48 (* v0-0 2)))) + (set! a0-4 (&-> a0-4 1)) + ) + ) + ) + ) + ) + ) + (else + (when (= (-> a0-1 1) 45) + (set! v1-0 #t) + (set! a0-1 (&-> a0-1 1)) + ) + (while (and (>= (-> a0-1 0) (the-as uint 48)) (>= (the-as uint 57) (-> a0-1 0))) + (set! v0-0 (the-as int (+ (-> a0-1 0) -48 (* 10 v0-0)))) + (set! a0-1 (&-> a0-1 1)) + ) + ) + ) + (cond + (v1-0 + (- v0-0) + ) + (else + (empty) + v0-0 + ) + ) + ) + ) + +;; definition for function string->float +(defun string->float ((arg0 string)) + "Convert string to float. Finally implemented!" + (let ((a0-1 (-> arg0 data)) + (f0-0 0.0) + (v1-0 #f) + ) + (when (= (-> a0-1 0) 45) + (set! v1-0 #t) + (set! a0-1 (&-> a0-1 1)) + ) + (while (and (>= (-> a0-1 0) (the-as uint 48)) (>= (the-as uint 57) (-> a0-1 0))) + (set! f0-0 (+ (* 10.0 f0-0) (the float (+ (-> a0-1 0) -48)))) + (set! a0-1 (&-> a0-1 1)) + ) + (when (= (-> a0-1 0) 46) + (set! a0-1 (&-> a0-1 1)) + (let ((a2-4 #xf4240) + (a1-12 0) + ) + (while (and (>= (-> a0-1 0) (the-as uint 48)) (>= (the-as uint 57) (-> a0-1 0))) + (+! a1-12 (* (+ (-> a0-1 0) -48) (the-as uint a2-4))) + (set! a2-4 (/ a2-4 10)) + (set! a0-1 (&-> a0-1 1)) + ) + (+! f0-0 (* 0.0000001 (the float a1-12))) + ) + ) + (when (= (-> a0-1 0) 101) + (let ((a1-16 (&-> a0-1 1)) + (f1-5 0.0) + (a0-2 #f) + ) + (cond + ((= (-> a1-16 0) 45) + (set! a0-2 #t) + (set! a1-16 (&-> a1-16 1)) + ) + ((= (-> a1-16 0) 43) + (set! a1-16 (&-> a1-16 1)) + ) + ) + (while (and (>= (-> a1-16 0) (the-as uint 48)) (>= (the-as uint 57) (-> a1-16 0))) + (set! f1-5 (+ (* 10.0 f1-5) (the float (+ (-> a1-16 0) -48)))) + (set! a1-16 (&-> a1-16 1)) + ) + (when (!= f1-5 0.0) + (let ((f2-6 1.0)) + (cond + (a0-2 + (dotimes (a0-3 (the int f1-5)) + (set! f2-6 (/ f2-6 10)) + (nop!) + (nop!) + ) + ) + (else + (dotimes (a0-6 (the int f1-5)) + (set! f2-6 (* 10.0 f2-6)) + (nop!) + (nop!) + ) + ) + ) + (set! f0-0 (* f0-0 f2-6)) + ) + ) + ) + ) + (if v1-0 + (- f0-0) + f0-0 + ) + ) + ) + +;; definition for function string-get-int32!! +(defun string-get-int32!! ((arg0 (pointer int32)) (arg1 string)) + (cond + ((string-get-arg!! *string-tmp-str* arg1) + (set! (-> arg0 0) (string->int *string-tmp-str*)) + #t + ) + (else + #f + ) + ) + ) + +;; definition for function string-get-float!! +(defun string-get-float!! ((arg0 (pointer float)) (arg1 string)) + (cond + ((string-get-arg!! *string-tmp-str* arg1) + (set! (-> arg0 0) (string->float *string-tmp-str*)) + #t + ) + (else + #f + ) + ) + ) + +;; definition for function string-get-flag!! +(defun string-get-flag!! ((arg0 (pointer symbol)) (arg1 string) (arg2 string) (arg3 string)) + (cond + ((string-get-arg!! *string-tmp-str* arg1) + (cond + ((or (string= *string-tmp-str* arg2) (string= *string-tmp-str* arg3)) + (set! (-> arg0 0) (string= *string-tmp-str* arg2)) + #t + ) + (else + #f + ) + ) + ) + (else + #f + ) + ) + ) + +;; definition for function string-word-wrap +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; failed to figure out what this is: +(kmemopen global "gstring-globals") + +;; definition for symbol *debug-draw-pauseable*, type symbol +(define *debug-draw-pauseable* #f) + +;; definition for symbol *stdcon0*, type string +(define *stdcon0* (new 'global 'string #x4000 (the-as string #f))) + +;; definition for symbol *stdcon1*, type string +(define *stdcon1* (new 'global 'string #x4000 (the-as string #f))) + +;; definition for symbol *null*, type string +(define *null* (new 'global 'string 0 (the-as string #f))) + +;; definition for symbol *stdcon*, type string +(define *stdcon* *stdcon0*) + +;; definition for symbol *stdebug*, type string +(define *stdebug* *stdcon1*) + +;; definition for symbol *temp-string*, type string +(define *temp-string* (new 'global 'string 2048 (the-as string #f))) + +;; failed to figure out what this is: +(kmemclose) + + + + diff --git a/test/decompiler/reference/jakx/levels/common/net-enemy-h_REF.gc b/test/decompiler/reference/jakx/levels/common/net-enemy-h_REF.gc new file mode 100644 index 0000000000..370edcdbd4 --- /dev/null +++ b/test/decompiler/reference/jakx/levels/common/net-enemy-h_REF.gc @@ -0,0 +1,258 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition of type net-enemy-transition +(deftype net-enemy-transition (structure) + ((timestamp int32) + (name basic) + (preempt basic) + (data-len int32) + (buf-data uint8 64) + ) + ) + +;; definition for method 3 of type net-enemy-transition +(defmethod inspect ((this net-enemy-transition)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'net-enemy-transition) + (format #t "~1Ttimestamp: ~D~%" (-> this timestamp)) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tpreempt: ~A~%" (-> this preempt)) + (format #t "~1Tdata-len: ~D~%" (-> this data-len)) + (format #t "~1Tbuf-data[64] @ #x~X~%" (-> this buf-data)) + (label cfg-4) + this + ) + +;; definition for symbol *tmp-construct-transition*, type net-enemy-transition +(define *tmp-construct-transition* (new 'static 'net-enemy-transition)) + +;; definition of type net-enemy-anim-info +(deftype net-enemy-anim-info (structure) + ((name basic) + (anim-idx int32) + (forward-vel vector) + ) + ) + +;; definition for method 3 of type net-enemy-anim-info +(defmethod inspect ((this net-enemy-anim-info)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'net-enemy-anim-info) + (format #t "~1Tname: ~A~%" (-> this name)) + (format #t "~1Tanim-idx: ~D~%" (-> this anim-idx)) + (format #t "~1Tforward-vel: #~%" (-> this forward-vel)) + (label cfg-4) + this + ) + +;; definition of type net-enemy-info +(deftype net-enemy-info (structure) + ((flags uint64) + (inverse-mass float) + (ragdoll-info ragdoll-setup) + (max-health float) + (damage-scale float) + (respawn-delay int32) + (smooth-root-trans float) + (smooth-root-quat float) + (fatal-impact-impulse float) + (min-fatal-impact-enemy-vel float) + (time-before-evaporate int32) + (time-before-respawn int32) + (anim-info basic) + (kill-score int32) + (wound-score-scale float) + (allow-vehicle-penetrate basic) + (min-ground-offset float) + (ground-probe-lod-dist float) + (show-kill-score int32) + ) + ) + +;; definition for method 3 of type net-enemy-info +(defmethod inspect ((this net-enemy-info)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (format #t "[~8x] ~A~%" this 'net-enemy-info) + (format #t "~1Tflags: ~D~%" (-> this flags)) + (format #t "~1Tinverse-mass: ~f~%" (-> this inverse-mass)) + (format #t "~1Tragdoll-info: #~%" (-> this ragdoll-info)) + (format #t "~1Tmax-health: ~f~%" (-> this max-health)) + (format #t "~1Tdamage-scale: ~f~%" (-> this damage-scale)) + (format #t "~1Trespawn-delay: ~D~%" (-> this respawn-delay)) + (format #t "~1Tsmooth-root-trans: ~f~%" (-> this smooth-root-trans)) + (format #t "~1Tsmooth-root-quat: ~f~%" (-> this smooth-root-quat)) + (format #t "~1Tfatal-impact-impulse: ~f~%" (-> this fatal-impact-impulse)) + (format #t "~1Tmin-fatal-impact-enemy-vel: ~f~%" (-> this min-fatal-impact-enemy-vel)) + (format #t "~1Ttime-before-evaporate: ~D~%" (-> this time-before-evaporate)) + (format #t "~1Ttime-before-respawn: ~D~%" (-> this time-before-respawn)) + (format #t "~1Tanim-info: ~A~%" (-> this anim-info)) + (format #t "~1Tkill-score: ~D~%" (-> this kill-score)) + (format #t "~1Twound-score-scale: ~f~%" (-> this wound-score-scale)) + (format #t "~1Tallow-vehicle-penetrate: ~A~%" (-> this allow-vehicle-penetrate)) + (format #t "~1Tmin-ground-offset: ~f~%" (-> this min-ground-offset)) + (format #t "~1Tground-probe-lod-dist: ~f~%" (-> this ground-probe-lod-dist)) + (format #t "~1Tshow-kill-score: ~D~%" (-> this show-kill-score)) + (label cfg-4) + this + ) + +;; definition of type net-enemy +(deftype net-enemy (process-focusable) + ((flags uint64) + (info net-enemy-info) + (ragdoll-proc uint64) + (health float) + (local-damage float) + (killed-by int8) + (last-health-send-time int32) + (net-anim net-anim-control :inline) + (minimap connection-minimap) + (transitions net-enemy-transition 3 :inline) + (transition-ct int32) + (last-attack-time int32) + (vehicle-penetrate-time int32) + (paths basic) + (pending-impulse-valid basic) + (pending-impulse rigid-body-impact :inline) + (last-transition-time int32) + (last-attack-id int32) + (vel-for-ragdoll vector :inline) + (nav-poly nav-poly) + (snap-flags uint64) + (prev-pos vector :inline) + (forward-path-vector vector :inline) + (enemy-link list-link :inline) + ) + (:methods + (net-enemy-method-59 () none) + (net-enemy-method-60 () none) + (net-enemy-method-61 () none) + (net-enemy-method-62 () none) + (net-enemy-method-63 () none) + (net-enemy-method-64 () none) + (net-enemy-method-65 () none) + (net-enemy-method-66 () none) + (net-enemy-method-67 () none) + (net-enemy-method-68 () none) + (net-enemy-method-69 () none) + (net-enemy-method-70 () none) + (net-enemy-method-71 () none) + (net-enemy-method-72 () none) + (net-enemy-method-73 () none) + (net-enemy-method-74 () none) + (net-enemy-method-75 () none) + (net-enemy-method-76 () none) + (net-enemy-method-77 () none) + (net-enemy-method-78 () none) + (net-enemy-method-79 () none) + (net-enemy-method-80 () none) + (net-enemy-method-81 () none) + (net-enemy-method-82 () none) + (net-enemy-method-83 () none) + (net-enemy-method-84 () none) + (net-enemy-method-85 () none) + (net-enemy-method-86 () none) + ) + ) + +;; definition for method 3 of type net-enemy +(defmethod inspect ((this net-enemy)) + (when (not this) + (set! this this) + (goto cfg-4) + ) + (let ((t9-0 (method-of-type process-focusable inspect))) + (t9-0 this) + ) + (format #t "~2Tflags: ~D~%" (-> this flags)) + (format #t "~2Tinfo: #~%" (-> this info)) + (format #t "~2Tragdoll-proc: ~D~%" (-> this ragdoll-proc)) + (format #t "~2Thealth: ~f~%" (-> this health)) + (format #t "~2Tlocal-damage: ~f~%" (-> this local-damage)) + (format #t "~2Tkilled-by: ~D~%" (-> this killed-by)) + (format #t "~2Tlast-health-send-time: ~D~%" (-> this last-health-send-time)) + (format #t "~2Tnet-anim: #~%" (-> this net-anim)) + (format #t "~2Tminimap: #~%" (-> this minimap)) + (format #t "~2Ttransitions[3] @ #x~X~%" (-> this transitions)) + (format #t "~2Ttransition-ct: ~D~%" (-> this transition-ct)) + (format #t "~2Tlast-attack-time: ~D~%" (-> this last-attack-time)) + (format #t "~2Tvehicle-penetrate-time: ~D~%" (-> this vehicle-penetrate-time)) + (format #t "~2Tpaths: ~A~%" (-> this paths)) + (format #t "~2Tpending-impulse-valid: ~A~%" (-> this pending-impulse-valid)) + (format #t "~2Tpending-impulse: #~%" (-> this pending-impulse)) + (format #t "~2Tlast-transition-time: ~D~%" (-> this last-transition-time)) + (format #t "~2Tlast-attack-id: ~D~%" (-> this last-attack-id)) + (format #t "~2Tvel-for-ragdoll: #~%" (-> this vel-for-ragdoll)) + (format #t "~2Tnav-poly: #~%" (-> this nav-poly)) + (format #t "~2Tsnap-flags: ~D~%" (-> this snap-flags)) + (format #t "~2Tprev-pos: #~%" (-> this prev-pos)) + (format #t "~2Tforward-path-vector: #~%" (-> this forward-path-vector)) + (format #t "~2Tenemy-link: #~%" (-> this enemy-link)) + (label cfg-4) + this + ) + +;; definition for function net-enemy-init-remote +;; WARN: Return type mismatch int vs none. +(defbehavior net-enemy-init-remote process-focusable ((arg0 int)) + (process-nettable-method-34 self -1 (new 'static 'rgba :r #xff :g #xff)) + (process-nettable-method-35 self arg0) + (process-nettable-method-36 self) + 0 + (none) + ) + +;; definition for method 41 of type net-enemy +(defmethod process-nettable-method-41 ((this net-enemy) (arg0 int)) + (ppointer->process (process-spawn net-enemy :init net-enemy-init-remote arg0 :name "net-enemy")) + ) + +;; definition for method 37 of type net-enemy +;; WARN: Return type mismatch int vs none. +(defmethod process-nettable-method-37 ((this net-enemy) (arg0 net-process-class-info)) + (set! (-> arg0 msg-map (-> arg0 msg-count)) 'transition) + (+! (-> arg0 msg-count) 1) + (set! (-> arg0 msg-map (-> arg0 msg-count)) 'damage) + (+! (-> arg0 msg-count) 1) + 0 + (none) + ) + +;; definition for symbol *msg-map-net-enemy*, type (array symbol) +(define *msg-map-net-enemy* (new 'static 'boxed-array :type symbol :length 0 :allocated-length 64)) + +;; definition for symbol *net-process-class-info-net-enemy*, type net-process-class-info +(define *net-process-class-info-net-enemy* (new 'static 'net-process-class-info)) + +;; failed to figure out what this is: +(set! (-> *net-process-class-info-net-enemy* msg-map) *msg-map-net-enemy*) + +;; failed to figure out what this is: +(write-msg-map-rec net-enemy *net-process-class-info-net-enemy*) + +;; failed to figure out what this is: +(set! (-> *net-process-class-info-net-enemy* owner-type) net-enemy) + +;; failed to figure out what this is: +(net-process-class-register *net-process-class-info-net-enemy*) + +;; definition for method 40 of type net-enemy +(defmethod process-nettable-method-40 ((this net-enemy)) + *net-process-class-info-net-enemy* + ) + +;; definition for symbol *net-enemy-list*, type linked-list +(define *net-enemy-list* (new 'static 'linked-list)) + +;; failed to figure out what this is: +(clear! *net-enemy-list*) diff --git a/test/decompiler/reference/jakx/levels/spargus/isle/desisle-part_REF.gc b/test/decompiler/reference/jakx/levels/spargus/isle/desisle-part_REF.gc new file mode 100644 index 0000000000..4ceaf236cf --- /dev/null +++ b/test/decompiler/reference/jakx/levels/spargus/isle/desisle-part_REF.gc @@ -0,0 +1,185 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defpartgroup group-desisle-ocean-splash + :id 477 + :flags (sp0 sp4) + :bounds (static-bspherem 0 0 0 100) + :parts ((sp-item 1529 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2)) + (sp-item 1530 :falloff-to (meters 1000) :flags (sp6) :period (seconds 5) :length (seconds 0.2) :offset 20) + ) + ) + +;; failed to figure out what this is: +(defpart 1529 + :init-specs ((:texture (water-radiate level-default-sprite)) + (:birth-func 'birth-func-curve) + (:num 3.0) + (:y (meters 10)) + (:scale-x (meters 1)) + (:rot-z (degrees 90)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.26666668) (meters 0.033333335)) + (:vel-z (meters 0.033333335) (meters 0.033333335)) + (:accel-y (meters -0.0016666667)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (sp-cpuinfo-flag-2 glow)) + (:userdata 0.0) + (:func 'live-func-curve) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-displash-color* + (new 'static 'curve-color-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'inline-array vector 4 + (new 'static 'vector :data (new 'static 'array float 4 90.0 130.0 110.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + (new 'static 'vector :data (new 'static 'array float 4 255.0 255.0 255.0 128.0)) + ) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 1.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-displash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 128.0 255.0 256.0 257.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 127.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-displash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 10.0 16.0 17.0 18.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 6.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *range-displash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 60.0 80.0 81.0 82.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 20.0 1.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-displash-alpha* + (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.1 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 10.0 -1.1111112 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-displash-scale-x* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -0.2 -1.0 -2.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 10.0 10.0 11.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 45.0 0.0 1.0 1.0)) + ) + ) + ) + +;; failed to figure out what this is: +(if #t + (set! *curve-displash-scale-y* (new 'static 'curve2d-fast + :xs (new 'static 'vector :data (new 'static 'array float 4 0.0 -1.0 -2.0 -3.0)) + :ys (new 'static 'vector :data (new 'static 'array float 4 1.0 4.0 5.0 6.0)) + :one-over-x-deltas (new 'static 'vector :data (new 'static 'array float 4 3.0 1.0 1.0 1.0)) + ) + ) + ) + +;; definition for symbol *part-desisle-ocean-splash-curve-settings*, type particle-curve-settings +(define *part-desisle-ocean-splash-curve-settings* + (new 'static 'particle-curve-settings :lifetime-base (seconds 1.5) :lifetime-offset (seconds 1)) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 1529 init-specs 17 initial-valuef) + (the-as float *part-desisle-ocean-splash-curve-settings*) + ) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* color-start) *range-displash-color*) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* alpha-start) *range-displash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-x-start) *range-displash-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-y-start) *range-displash-scale-y*) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* r-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* g-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* b-scalar) #f) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* a-scalar) *curve-displash-alpha*) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-x-scalar) *curve-displash-scale-x*) + +;; failed to figure out what this is: +(set! (-> *part-desisle-ocean-splash-curve-settings* scale-y-scalar) *curve-displash-scale-y*) + +;; failed to figure out what this is: +(defpart 1530 + :init-specs ((:texture (water-drops level-default-sprite)) + (:birth-func 'birth-func-texture-group) + (:num 20.0) + (:x (meters 0) (meters 30)) + (:y (meters 15)) + (:scale-x (meters 5) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 120.0 40.0) + (:g :copy r) + (:b :copy r) + (:a 64.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.2)) + (:scalevel-x (meters 0.016666668) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.064 -0.064) + (:accel-y (meters -0.0016666667)) + (:friction 0.99) + (:timer (seconds 6.667)) + (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 glow)) + (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406300 #x407800)) + (:func 'check-drop-group-center) + (:conerot-z (degrees 0) (degrees 10)) + (:rotate-y (degrees 0) (degrees 3600)) + ) + ) diff --git a/test/decompiler/reference/jakx/levels/title/credits-h_REF.gc b/test/decompiler/reference/jakx/levels/title/credits-h_REF.gc new file mode 100644 index 0000000000..c19a554c39 --- /dev/null +++ b/test/decompiler/reference/jakx/levels/title/credits-h_REF.gc @@ -0,0 +1,494 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *credits-ids*, type (array text-id) +(define *credits-ids* (new 'static 'boxed-array :type text-id + (text-id text-id-531) + (text-id text-id-532) + (text-id text-id-546) + (text-id text-id-538) + (text-id text-id-535) + (text-id text-id-536) + (text-id text-id-537) + (text-id text-id-539) + (text-id text-id-3938) + (text-id text-id-541) + (text-id text-id-542) + (text-id text-id-544) + (text-id text-id-545) + (text-id text-id-551) + (text-id text-id-554) + (text-id text-id-555) + (text-id text-id-556) + (text-id text-id-557) + (text-id text-id-3959) + (text-id text-id-560) + (text-id text-id-561) + (text-id text-id-562) + (text-id text-id-3940) + (text-id text-id-565) + (text-id text-id-3958) + (text-id text-id-569) + (text-id text-id-570) + (text-id text-id-571) + (text-id text-id-572) + (text-id text-id-564) + (text-id text-id-575) + (text-id text-id-579) + (text-id text-id-3957) + (text-id text-id-3956) + (text-id text-id-3955) + (text-id text-id-3954) + (text-id text-id-3952) + (text-id text-id-3953) + (text-id text-id-3951) + (text-id text-id-3950) + (text-id text-id-3949) + (text-id text-id-3948) + (text-id text-id-3947) + (text-id text-id-3946) + (text-id text-id-3945) + (text-id text-id-3944) + (text-id text-id-3943) + (text-id text-id-3942) + (text-id text-id-3903) + (text-id text-id-3904) + (text-id text-id-677) + (text-id text-id-548) + (text-id text-id-550) + (text-id text-id-3939) + (text-id text-id-3936) + (text-id text-id-3937) + (text-id text-id-3935) + (text-id text-id-3933) + (text-id text-id-3934) + (text-id text-id-3932) + (text-id text-id-3931) + (text-id text-id-3930) + (text-id text-id-3929) + (text-id text-id-3928) + (text-id text-id-3926) + (text-id text-id-3927) + (text-id text-id-3924) + (text-id text-id-3925) + (text-id text-id-3923) + (text-id text-id-3922) + (text-id text-id-3921) + (text-id text-id-3920) + (text-id text-id-3919) + (text-id text-id-3918) + (text-id text-id-3917) + (text-id text-id-3916) + (text-id text-id-3914) + (text-id text-id-3915) + (text-id text-id-3913) + (text-id text-id-3912) + (text-id text-id-3911) + (text-id text-id-3910) + (text-id text-id-3905) + (text-id text-id-3909) + (text-id text-id-574) + (text-id text-id-3908) + (text-id text-id-3907) + (text-id text-id-3906) + (text-id text-id-3963) + (text-id text-id-4241) + (text-id text-id-3964) + (text-id text-id-3962) + (text-id text-id-3965) + (text-id text-id-3966) + (text-id text-id-4240) + (text-id text-id-3968) + (text-id text-id-3969) + (text-id text-id-4883) + (text-id text-id-3971) + (text-id text-id-3972) + (text-id text-id-3973) + (text-id text-id-533) + (text-id text-id-534) + (text-id text-id-3974) + (text-id text-id-3975) + (text-id text-id-3976) + (text-id text-id-996) + (text-id text-id-997) + (text-id text-id-586) + (text-id text-id-4235) + (text-id text-id-588) + (text-id text-id-4236) + (text-id text-id-591) + (text-id text-id-590) + (text-id text-id-4237) + (text-id text-id-592) + (text-id text-id-594) + (text-id text-id-3977) + (text-id text-id-3978) + (text-id text-id-598) + (text-id text-id-3980) + (text-id text-id-3981) + (text-id text-id-3982) + (text-id text-id-3983) + (text-id text-id-3984) + (text-id text-id-3985) + (text-id text-id-3986) + (text-id text-id-599) + (text-id text-id-3987) + (text-id text-id-601) + (text-id text-id-4884) + (text-id text-id-606) + (text-id text-id-3989) + (text-id text-id-3990) + (text-id text-id-3991) + (text-id text-id-609) + (text-id text-id-610) + (text-id text-id-611) + (text-id text-id-612) + (text-id text-id-613) + (text-id text-id-614) + (text-id text-id-3992) + (text-id text-id-3993) + (text-id text-id-3994) + (text-id text-id-3995) + (text-id text-id-3996) + (text-id text-id-3997) + (text-id text-id-621) + (text-id text-id-622) + (text-id text-id-3998) + (text-id text-id-3999) + (text-id text-id-4000) + (text-id text-id-4001) + (text-id text-id-629) + (text-id text-id-630) + (text-id text-id-623) + (text-id text-id-624) + (text-id text-id-641) + (text-id text-id-642) + (text-id text-id-4002) + (text-id text-id-4003) + (text-id text-id-4004) + (text-id text-id-4005) + (text-id text-id-639) + (text-id text-id-640) + (text-id text-id-4006) + (text-id text-id-4007) + (text-id text-id-4008) + (text-id text-id-4009) + (text-id text-id-4010) + (text-id text-id-4011) + (text-id text-id-4012) + (text-id text-id-4013) + (text-id text-id-4035) + (text-id text-id-4036) + (text-id text-id-4014) + (text-id text-id-4037) + (text-id text-id-4016) + (text-id text-id-4259) + (text-id text-id-4260) + (text-id text-id-4261) + (text-id text-id-4262) + (text-id text-id-4263) + (text-id text-id-4264) + (text-id text-id-4265) + (text-id text-id-4266) + (text-id text-id-4267) + (text-id text-id-4268) + (text-id text-id-4880) + (text-id text-id-4631) + (text-id text-id-4886) + (text-id text-id-4887) + (text-id text-id-4888) + (text-id text-id-4889) + (text-id text-id-4885) + (text-id text-id-4874) + (text-id text-id-4634) + (text-id text-id-4635) + (text-id text-id-4636) + (text-id text-id-4940) + (text-id text-id-4941) + (text-id text-id-4942) + (text-id text-id-680) + (text-id text-id-681) + (text-id text-id-682) + (text-id text-id-683) + (text-id text-id-684) + (text-id text-id-686) + (text-id text-id-687) + (text-id text-id-688) + (text-id text-id-689) + (text-id text-id-690) + (text-id text-id-4072) + (text-id text-id-4071) + (text-id text-id-4070) + (text-id text-id-4069) + (text-id text-id-4068) + (text-id text-id-4067) + (text-id text-id-4066) + (text-id text-id-4065) + (text-id text-id-4064) + (text-id text-id-4063) + (text-id text-id-4062) + (text-id text-id-4060) + (text-id text-id-4061) + (text-id text-id-4059) + (text-id text-id-4058) + (text-id text-id-708) + (text-id text-id-4057) + (text-id text-id-4055) + (text-id text-id-4056) + (text-id text-id-713) + (text-id text-id-712) + (text-id text-id-4891) + (text-id text-id-4892) + (text-id text-id-4893) + (text-id text-id-725) + (text-id text-id-4054) + (text-id text-id-727) + (text-id text-id-4051) + (text-id text-id-4052) + (text-id text-id-4053) + (text-id text-id-4050) + (text-id text-id-4049) + (text-id text-id-4047) + (text-id text-id-4048) + (text-id text-id-4046) + (text-id text-id-4045) + (text-id text-id-4044) + (text-id text-id-4043) + (text-id text-id-4912) + (text-id text-id-4040) + (text-id text-id-4041) + (text-id text-id-749) + (text-id text-id-4039) + (text-id text-id-4073) + (text-id text-id-4074) + (text-id text-id-4082) + (text-id text-id-4081) + (text-id text-id-4075) + (text-id text-id-4076) + (text-id text-id-4077) + (text-id text-id-4078) + (text-id text-id-4079) + (text-id text-id-4080) + (text-id text-id-4083) + (text-id text-id-4084) + (text-id text-id-734) + (text-id text-id-753) + (text-id text-id-4107) + (text-id text-id-4108) + (text-id text-id-4106) + (text-id text-id-4104) + (text-id text-id-4105) + (text-id text-id-4102) + (text-id text-id-4101) + (text-id text-id-4100) + (text-id text-id-4099) + (text-id text-id-4098) + (text-id text-id-4097) + (text-id text-id-4096) + (text-id text-id-4095) + (text-id text-id-4094) + (text-id text-id-4932) + (text-id text-id-4933) + (text-id text-id-4934) + (text-id text-id-4935) + (text-id text-id-4937) + (text-id text-id-4938) + (text-id text-id-4939) + (text-id text-id-716) + (text-id text-id-717) + (text-id text-id-4882) + (text-id text-id-719) + (text-id text-id-4092) + (text-id text-id-4091) + (text-id text-id-4090) + (text-id text-id-4089) + (text-id text-id-4088) + (text-id text-id-715) + (text-id text-id-4087) + (text-id text-id-4086) + (text-id text-id-4085) + (text-id text-id-4109) + (text-id text-id-4110) + (text-id text-id-4131) + (text-id text-id-4130) + (text-id text-id-4129) + (text-id text-id-4128) + (text-id text-id-4127) + (text-id text-id-4126) + (text-id text-id-4125) + (text-id text-id-4124) + (text-id text-id-4118) + (text-id text-id-4119) + (text-id text-id-4120) + (text-id text-id-4121) + (text-id text-id-4122) + (text-id text-id-4123) + (text-id text-id-4117) + (text-id text-id-4116) + (text-id text-id-4114) + (text-id text-id-4115) + (text-id text-id-4112) + (text-id text-id-4113) + (text-id text-id-4132) + (text-id text-id-4147) + (text-id text-id-4145) + (text-id text-id-4146) + (text-id text-id-4143) + (text-id text-id-4144) + (text-id text-id-4890) + (text-id text-id-696) + (text-id text-id-4141) + (text-id text-id-4138) + (text-id text-id-4139) + (text-id text-id-4140) + (text-id text-id-4137) + (text-id text-id-4136) + (text-id text-id-4135) + (text-id text-id-4134) + (text-id text-id-4133) + (text-id text-id-698) + (text-id text-id-699) + (text-id text-id-700) + (text-id text-id-1012) + (text-id text-id-702) + (text-id text-id-4148) + (text-id text-id-704) + (text-id text-id-4149) + (text-id text-id-4150) + (text-id text-id-4151) + (text-id text-id-4152) + (text-id text-id-4153) + (text-id text-id-4154) + (text-id text-id-4155) + (text-id text-id-4156) + (text-id text-id-706) + (text-id text-id-4157) + (text-id text-id-4158) + (text-id text-id-4159) + (text-id text-id-4160) + (text-id text-id-4161) + (text-id text-id-4162) + (text-id text-id-4163) + (text-id text-id-4164) + (text-id text-id-4165) + (text-id text-id-4166) + (text-id text-id-4167) + (text-id text-id-4894) + (text-id text-id-4169) + (text-id text-id-4170) + (text-id text-id-4171) + (text-id text-id-4172) + (text-id text-id-4173) + (text-id text-id-4175) + (text-id text-id-4176) + (text-id text-id-4927) + (text-id text-id-4928) + (text-id text-id-4929) + (text-id text-id-4930) + (text-id text-id-4931) + (text-id text-id-756) + (text-id text-id-757) + (text-id text-id-758) + (text-id text-id-759) + (text-id text-id-760) + (text-id text-id-761) + (text-id text-id-762) + (text-id text-id-763) + (text-id text-id-764) + (text-id text-id-765) + (text-id text-id-766) + (text-id text-id-767) + (text-id text-id-768) + (text-id text-id-769) + (text-id text-id-770) + (text-id text-id-771) + (text-id text-id-772) + (text-id text-id-773) + (text-id text-id-774) + (text-id text-id-775) + (text-id text-id-839) + (text-id text-id-840) + (text-id text-id-4177) + (text-id text-id-4178) + (text-id text-id-4179) + (text-id text-id-4180) + (text-id text-id-4182) + (text-id text-id-4181) + (text-id text-id-4183) + (text-id text-id-4184) + (text-id text-id-874) + (text-id text-id-4185) + (text-id text-id-4186) + (text-id text-id-4187) + (text-id text-id-4188) + (text-id text-id-849) + (text-id text-id-850) + (text-id text-id-4189) + (text-id text-id-854) + (text-id text-id-4190) + (text-id text-id-856) + (text-id text-id-4191) + (text-id text-id-4192) + (text-id text-id-4193) + (text-id text-id-4194) + (text-id text-id-4195) + (text-id text-id-4196) + (text-id text-id-864) + (text-id text-id-4197) + (text-id text-id-4198) + (text-id text-id-4199) + (text-id text-id-865) + (text-id text-id-4200) + (text-id text-id-4201) + (text-id text-id-863) + (text-id text-id-4202) + (text-id text-id-867) + (text-id text-id-866) + (text-id text-id-4203) + (text-id text-id-868) + (text-id text-id-869) + (text-id text-id-870) + (text-id text-id-4204) + (text-id text-id-4205) + (text-id text-id-4206) + (text-id text-id-4207) + (text-id text-id-4208) + (text-id text-id-4209) + (text-id text-id-4210) + (text-id text-id-880) + (text-id text-id-879) + (text-id text-id-4211) + (text-id text-id-4212) + (text-id text-id-893) + (text-id text-id-896) + (text-id text-id-897) + (text-id text-id-4213) + (text-id text-id-4214) + (text-id text-id-4215) + (text-id text-id-4216) + (text-id text-id-4217) + (text-id text-id-4218) + (text-id text-id-4219) + (text-id text-id-4220) + (text-id text-id-4221) + (text-id text-id-4222) + (text-id text-id-889) + (text-id text-id-4223) + (text-id text-id-4224) + (text-id text-id-4895) + (text-id text-id-4226) + (text-id text-id-898) + (text-id text-id-899) + (text-id text-id-900) + (text-id text-id-4227) + (text-id text-id-901) + (text-id text-id-903) + (text-id text-id-904) + (text-id text-id-905) + (text-id text-id-4228) + (text-id text-id-529) + ) + ) + + + + diff --git a/test/offline/config/jakx/config.jsonc b/test/offline/config/jakx/config.jsonc index cbc9b984e2..a23e4186e4 100644 --- a/test/offline/config/jakx/config.jsonc +++ b/test/offline/config/jakx/config.jsonc @@ -398,7 +398,8 @@ // sky (multiple definition) "(method 3 sky-vertex)", // timer - "(method 9 clock)" + "(method 9 clock)", + "(method 3 generic-tie-interp-point)" ], "skip_compile_states": {} } \ No newline at end of file diff --git a/text-ids.txt b/text-ids.txt new file mode 100644 index 0000000000..cb93e7472b --- /dev/null +++ b/text-ids.txt @@ -0,0 +1,1579 @@ +(text-id-0 0) +(text-id-1 1) +(text-id-2 2) +(text-id-3 3) +(text-id-4 4) +(text-id-5 5) +(text-id-6 6) +(text-id-7 7) +(text-id-8 8) +(text-id-9 9) +(text-id-10 10) +(text-id-11 11) +(text-id-12 12) +(text-id-13 13) +(text-id-14 14) +(text-id-15 15) +(text-id-16 16) +(text-id-17 17) +(text-id-18 18) +(text-id-19 19) +(text-id-20 20) +(text-id-21 21) +(text-id-22 22) +(text-id-23 23) +(text-id-24 24) +(text-id-25 25) +(text-id-26 26) +(text-id-27 27) +(text-id-28 28) +(text-id-29 29) +(text-id-30 30) +(text-id-31 31) +(text-id-32 32) +(text-id-33 33) +(text-id-34 34) +(text-id-35 35) +(text-id-36 36) +(text-id-37 37) +(text-id-38 38) +(text-id-39 39) +(text-id-40 40) +(text-id-41 41) +(text-id-42 42) +(text-id-43 43) +(text-id-44 44) +(text-id-45 45) +(text-id-46 46) +(text-id-47 47) +(text-id-48 48) +(text-id-49 49) +(text-id-50 50) +(text-id-51 51) +(text-id-52 52) +(text-id-53 53) +(text-id-54 54) +(text-id-55 55) +(text-id-56 56) +(text-id-57 57) +(text-id-58 58) +(text-id-59 59) +(text-id-60 60) +(text-id-61 61) +(text-id-62 62) +(text-id-63 63) +(text-id-64 64) +(text-id-65 65) +(text-id-66 66) +(text-id-67 67) +(text-id-68 68) +(text-id-69 69) +(text-id-70 70) +(text-id-71 71) +(text-id-72 72) +(text-id-73 73) +(text-id-74 74) +(text-id-75 75) +(text-id-76 76) +(text-id-77 77) +(text-id-78 78) +(text-id-79 79) +(text-id-80 80) +(text-id-81 81) +(text-id-82 82) +(text-id-83 83) +(text-id-84 84) +(text-id-85 85) +(text-id-86 86) +(text-id-87 87) +(text-id-88 88) +(text-id-89 89) +(text-id-90 90) +(text-id-91 91) +(text-id-92 92) +(text-id-93 93) +(text-id-94 94) +(text-id-95 95) +(text-id-96 96) +(text-id-97 97) +(text-id-98 98) +(text-id-99 99) +(text-id-100 100) +(text-id-101 101) +(text-id-102 102) +(text-id-103 103) +(text-id-104 104) +(text-id-105 105) +(text-id-106 106) +(text-id-107 107) +(text-id-108 108) +(text-id-109 109) +(text-id-110 110) +(text-id-111 111) +(text-id-112 112) +(text-id-113 113) +(text-id-114 114) +(text-id-115 115) +(text-id-116 116) +(text-id-117 117) +(text-id-118 118) +(text-id-119 119) +(text-id-120 120) +(text-id-121 121) +(text-id-122 122) +(text-id-123 123) +(text-id-124 124) +(text-id-125 125) +(text-id-126 126) +(text-id-127 127) +(text-id-128 128) +(text-id-129 129) +(text-id-130 130) +(text-id-131 131) +(text-id-132 132) +(text-id-133 133) +(text-id-134 134) +(text-id-135 135) +(text-id-136 136) +(text-id-137 137) +(text-id-138 138) +(text-id-139 139) +(text-id-140 140) +(text-id-141 141) +(text-id-142 142) +(text-id-143 143) +(text-id-144 144) +(text-id-145 145) +(text-id-146 146) +(text-id-147 147) +(text-id-148 148) +(text-id-149 149) +(text-id-150 150) +(text-id-151 151) +(text-id-152 152) +(text-id-153 153) +(text-id-154 154) +(text-id-155 155) +(text-id-156 156) +(text-id-157 157) +(text-id-158 158) +(text-id-159 159) +(text-id-160 160) +(text-id-161 161) +(text-id-162 162) +(text-id-163 163) +(text-id-164 164) +(text-id-165 165) +(text-id-166 166) +(text-id-167 167) +(text-id-168 168) +(text-id-169 169) +(text-id-170 170) +(text-id-171 171) +(text-id-172 172) +(text-id-173 173) +(text-id-174 174) +(text-id-175 175) +(text-id-176 176) +(text-id-177 177) +(text-id-178 178) +(text-id-179 179) +(text-id-180 180) +(text-id-181 181) +(text-id-182 182) +(text-id-183 183) +(text-id-184 184) +(text-id-185 185) +(text-id-186 186) +(text-id-187 187) +(text-id-188 188) +(text-id-189 189) +(text-id-190 190) +(text-id-191 191) +(text-id-192 192) +(text-id-193 193) +(text-id-194 194) +(text-id-195 195) +(text-id-196 196) +(text-id-197 197) +(text-id-198 198) +(text-id-199 199) +(text-id-200 200) +(text-id-201 201) +(text-id-202 202) +(text-id-203 203) +(text-id-204 204) +(text-id-205 205) +(text-id-206 206) +(text-id-207 207) +(text-id-208 208) +(text-id-209 209) +(text-id-210 210) +(text-id-211 211) +(text-id-212 212) +(text-id-213 213) +(text-id-214 214) +(text-id-215 215) +(text-id-216 216) +(text-id-217 217) +(text-id-218 218) +(text-id-219 219) +(text-id-220 220) +(text-id-221 221) +(text-id-222 222) +(text-id-223 223) +(text-id-224 224) +(text-id-225 225) +(text-id-226 226) +(text-id-227 227) +(text-id-228 228) +(text-id-229 229) +(text-id-230 230) +(text-id-231 231) +(text-id-232 232) +(text-id-233 233) +(text-id-234 234) +(text-id-235 235) +(text-id-236 236) +(text-id-237 237) +(text-id-238 238) +(text-id-239 239) +(text-id-240 240) +(text-id-241 241) +(text-id-242 242) +(text-id-243 243) +(text-id-244 244) +(text-id-245 245) +(text-id-246 246) +(text-id-247 247) +(text-id-248 248) +(text-id-249 249) +(text-id-250 250) +(text-id-251 251) +(text-id-252 252) +(text-id-253 253) +(text-id-254 254) +(text-id-255 255) +(text-id-256 256) +(text-id-257 257) +(text-id-258 258) +(text-id-259 259) +(text-id-260 260) +(text-id-261 261) +(text-id-262 262) +(text-id-263 263) +(text-id-264 264) +(text-id-265 265) +(text-id-266 266) +(text-id-267 267) +(text-id-268 268) +(text-id-269 269) +(text-id-270 270) +(text-id-271 271) +(text-id-272 272) +(text-id-273 273) +(text-id-274 274) +(text-id-275 275) +(text-id-276 276) +(text-id-277 277) +(text-id-278 278) +(text-id-279 279) +(text-id-280 280) +(text-id-281 281) +(text-id-282 282) +(text-id-283 283) +(text-id-284 284) +(text-id-285 285) +(text-id-286 286) +(text-id-287 287) +(text-id-288 288) +(text-id-289 289) +(text-id-290 290) +(text-id-291 291) +(text-id-292 292) +(text-id-293 293) +(text-id-294 294) +(text-id-295 295) +(text-id-296 296) +(text-id-297 297) +(text-id-298 298) +(text-id-299 299) +(text-id-300 300) +(text-id-301 301) +(text-id-302 302) +(text-id-303 303) +(text-id-304 304) +(text-id-305 305) +(text-id-306 306) +(text-id-307 307) +(text-id-308 308) +(text-id-309 309) +(text-id-310 310) +(text-id-311 311) +(text-id-312 312) +(text-id-313 313) +(text-id-314 314) +(text-id-315 315) +(text-id-316 316) +(text-id-317 317) +(text-id-318 318) +(text-id-319 319) +(text-id-320 320) +(text-id-321 321) +(text-id-322 322) +(text-id-323 323) +(text-id-324 324) +(text-id-325 325) +(text-id-326 326) +(text-id-327 327) +(text-id-328 328) +(text-id-329 329) +(text-id-330 330) +(text-id-331 331) +(text-id-332 332) +(text-id-333 333) +(text-id-334 334) +(text-id-335 335) +(text-id-336 336) +(text-id-337 337) +(text-id-338 338) +(text-id-339 339) +(text-id-340 340) +(text-id-341 341) +(text-id-342 342) +(text-id-343 343) +(text-id-344 344) +(text-id-345 345) +(text-id-346 346) +(text-id-347 347) +(text-id-348 348) +(text-id-349 349) +(text-id-350 350) +(text-id-351 351) +(text-id-352 352) +(text-id-353 353) +(text-id-354 354) +(text-id-355 355) +(text-id-356 356) +(text-id-357 357) +(text-id-358 358) +(text-id-359 359) +(text-id-360 360) +(text-id-361 361) +(text-id-362 362) +(text-id-363 363) +(text-id-364 364) +(text-id-365 365) +(text-id-366 366) +(text-id-367 367) +(text-id-368 368) +(text-id-369 369) +(text-id-370 370) +(text-id-371 371) +(text-id-372 372) +(text-id-373 373) +(text-id-374 374) +(text-id-375 375) +(text-id-376 376) +(text-id-377 377) +(text-id-378 378) +(text-id-379 379) +(text-id-380 380) +(text-id-381 381) +(text-id-382 382) +(text-id-383 383) +(text-id-384 384) +(text-id-385 385) +(text-id-386 386) +(text-id-387 387) +(text-id-388 388) +(text-id-389 389) +(text-id-390 390) +(text-id-391 391) +(text-id-392 392) +(text-id-393 393) +(text-id-394 394) +(text-id-395 395) +(text-id-396 396) +(text-id-397 397) +(text-id-398 398) +(text-id-399 399) +(text-id-400 400) +(text-id-401 401) +(text-id-402 402) +(text-id-403 403) +(text-id-404 404) +(text-id-405 405) +(text-id-406 406) +(text-id-407 407) +(text-id-408 408) +(text-id-409 409) +(text-id-410 410) +(text-id-411 411) +(text-id-412 412) +(text-id-413 413) +(text-id-414 414) +(text-id-415 415) +(text-id-416 416) +(text-id-417 417) +(text-id-418 418) +(text-id-419 419) +(text-id-420 420) +(text-id-421 421) +(text-id-422 422) +(text-id-423 423) +(text-id-424 424) +(text-id-425 425) +(text-id-426 426) +(text-id-427 427) +(text-id-428 428) +(text-id-429 429) +(text-id-430 430) +(text-id-431 431) +(text-id-432 432) +(text-id-433 433) +(text-id-434 434) +(text-id-435 435) +(text-id-436 436) +(text-id-437 437) +(text-id-438 438) +(text-id-439 439) +(text-id-440 440) +(text-id-441 441) +(text-id-442 442) +(text-id-443 443) +(text-id-444 444) +(text-id-445 445) +(text-id-446 446) +(text-id-447 447) +(text-id-448 448) +(text-id-449 449) +(text-id-450 450) +(text-id-451 451) +(text-id-452 452) +(text-id-453 453) +(text-id-454 454) +(text-id-455 455) +(text-id-456 456) +(text-id-457 457) +(text-id-458 458) +(text-id-459 459) +(text-id-460 460) +(text-id-461 461) +(text-id-462 462) +(text-id-463 463) +(text-id-464 464) +(text-id-465 465) +(text-id-466 466) +(text-id-467 467) +(text-id-468 468) +(text-id-469 469) +(text-id-470 470) +(text-id-471 471) +(text-id-472 472) +(text-id-473 473) +(text-id-474 474) +(text-id-475 475) +(text-id-476 476) +(text-id-477 477) +(text-id-478 478) +(text-id-479 479) +(text-id-480 480) +(text-id-481 481) +(text-id-482 482) +(text-id-483 483) +(text-id-484 484) +(text-id-485 485) +(text-id-486 486) +(text-id-487 487) +(text-id-488 488) +(text-id-489 489) +(text-id-490 490) +(text-id-491 491) +(text-id-492 492) +(text-id-493 493) +(text-id-494 494) +(text-id-495 495) +(text-id-496 496) +(text-id-497 497) +(text-id-498 498) +(text-id-499 499) +(text-id-500 500) +(text-id-501 501) +(text-id-502 502) +(text-id-503 503) +(text-id-504 504) +(text-id-505 505) +(text-id-506 506) +(text-id-507 507) +(text-id-508 508) +(text-id-509 509) +(text-id-510 510) +(text-id-511 511) +(text-id-512 512) +(text-id-513 513) +(text-id-514 514) +(text-id-515 515) +(text-id-516 516) +(text-id-517 517) +(text-id-518 518) +(text-id-519 519) +(text-id-520 520) +(text-id-521 521) +(text-id-522 522) +(text-id-523 523) +(text-id-524 524) +(text-id-525 525) +(text-id-526 526) +(text-id-527 527) +(text-id-528 528) +(text-id-529 529) +(text-id-530 530) +(text-id-531 531) +(text-id-532 532) +(text-id-533 533) +(text-id-534 534) +(text-id-535 535) +(text-id-536 536) +(text-id-537 537) +(text-id-538 538) +(text-id-539 539) +(text-id-540 540) +(text-id-541 541) +(text-id-542 542) +(text-id-543 543) +(text-id-544 544) +(text-id-545 545) +(text-id-546 546) +(text-id-547 547) +(text-id-548 548) +(text-id-549 549) +(text-id-550 550) +(text-id-551 551) +(text-id-552 552) +(text-id-553 553) +(text-id-554 554) +(text-id-555 555) +(text-id-556 556) +(text-id-557 557) +(text-id-558 558) +(text-id-559 559) +(text-id-560 560) +(text-id-561 561) +(text-id-562 562) +(text-id-563 563) +(text-id-564 564) +(text-id-565 565) +(text-id-566 566) +(text-id-567 567) +(text-id-568 568) +(text-id-569 569) +(text-id-570 570) +(text-id-571 571) +(text-id-572 572) +(text-id-573 573) +(text-id-574 574) +(text-id-575 575) +(text-id-576 576) +(text-id-577 577) +(text-id-578 578) +(text-id-579 579) +(text-id-580 580) +(text-id-581 581) +(text-id-582 582) +(text-id-583 583) +(text-id-584 584) +(text-id-585 585) +(text-id-586 586) +(text-id-587 587) +(text-id-588 588) +(text-id-589 589) +(text-id-590 590) +(text-id-591 591) +(text-id-592 592) +(text-id-593 593) +(text-id-594 594) +(text-id-595 595) +(text-id-596 596) +(text-id-597 597) +(text-id-598 598) +(text-id-599 599) +(text-id-600 600) +(text-id-601 601) +(text-id-602 602) +(text-id-603 603) +(text-id-604 604) +(text-id-605 605) +(text-id-606 606) +(text-id-607 607) +(text-id-608 608) +(text-id-609 609) +(text-id-610 610) +(text-id-611 611) +(text-id-612 612) +(text-id-613 613) +(text-id-614 614) +(text-id-615 615) +(text-id-616 616) +(text-id-617 617) +(text-id-618 618) +(text-id-619 619) +(text-id-620 620) +(text-id-621 621) +(text-id-622 622) +(text-id-623 623) +(text-id-624 624) +(text-id-625 625) +(text-id-626 626) +(text-id-627 627) +(text-id-628 628) +(text-id-629 629) +(text-id-630 630) +(text-id-631 631) +(text-id-632 632) +(text-id-633 633) +(text-id-634 634) +(text-id-635 635) +(text-id-636 636) +(text-id-637 637) +(text-id-638 638) +(text-id-639 639) +(text-id-640 640) +(text-id-641 641) +(text-id-642 642) +(text-id-643 643) +(text-id-644 644) +(text-id-645 645) +(text-id-646 646) +(text-id-647 647) +(text-id-648 648) +(text-id-649 649) +(text-id-650 650) +(text-id-651 651) +(text-id-652 652) +(text-id-653 653) +(text-id-654 654) +(text-id-655 655) +(text-id-656 656) +(text-id-657 657) +(text-id-658 658) +(text-id-659 659) +(text-id-660 660) +(text-id-661 661) +(text-id-662 662) +(text-id-663 663) +(text-id-664 664) +(text-id-665 665) +(text-id-666 666) +(text-id-667 667) +(text-id-668 668) +(text-id-669 669) +(text-id-670 670) +(text-id-671 671) +(text-id-672 672) +(text-id-673 673) +(text-id-674 674) +(text-id-675 675) +(text-id-676 676) +(text-id-677 677) +(text-id-678 678) +(text-id-679 679) +(text-id-680 680) +(text-id-681 681) +(text-id-682 682) +(text-id-683 683) +(text-id-684 684) +(text-id-685 685) +(text-id-686 686) +(text-id-687 687) +(text-id-688 688) +(text-id-689 689) +(text-id-690 690) +(text-id-691 691) +(text-id-692 692) +(text-id-693 693) +(text-id-694 694) +(text-id-695 695) +(text-id-696 696) +(text-id-697 697) +(text-id-698 698) +(text-id-699 699) +(text-id-700 700) +(text-id-701 701) +(text-id-702 702) +(text-id-703 703) +(text-id-704 704) +(text-id-705 705) +(text-id-706 706) +(text-id-707 707) +(text-id-708 708) +(text-id-709 709) +(text-id-710 710) +(text-id-711 711) +(text-id-712 712) +(text-id-713 713) +(text-id-714 714) +(text-id-715 715) +(text-id-716 716) +(text-id-717 717) +(text-id-718 718) +(text-id-719 719) +(text-id-720 720) +(text-id-721 721) +(text-id-722 722) +(text-id-723 723) +(text-id-724 724) +(text-id-725 725) +(text-id-726 726) +(text-id-727 727) +(text-id-728 728) +(text-id-729 729) +(text-id-730 730) +(text-id-731 731) +(text-id-732 732) +(text-id-733 733) +(text-id-734 734) +(text-id-735 735) +(text-id-736 736) +(text-id-737 737) +(text-id-738 738) +(text-id-739 739) +(text-id-740 740) +(text-id-741 741) +(text-id-742 742) +(text-id-743 743) +(text-id-744 744) +(text-id-745 745) +(text-id-746 746) +(text-id-747 747) +(text-id-748 748) +(text-id-749 749) +(text-id-750 750) +(text-id-751 751) +(text-id-752 752) +(text-id-753 753) +(text-id-754 754) +(text-id-755 755) +(text-id-756 756) +(text-id-757 757) +(text-id-758 758) +(text-id-759 759) +(text-id-760 760) +(text-id-761 761) +(text-id-762 762) +(text-id-763 763) +(text-id-764 764) +(text-id-765 765) +(text-id-766 766) +(text-id-767 767) +(text-id-768 768) +(text-id-769 769) +(text-id-770 770) +(text-id-771 771) +(text-id-772 772) +(text-id-773 773) +(text-id-774 774) +(text-id-775 775) +(text-id-776 776) +(text-id-777 777) +(text-id-778 778) +(text-id-779 779) +(text-id-780 780) +(text-id-781 781) +(text-id-782 782) +(text-id-783 783) +(text-id-784 784) +(text-id-785 785) +(text-id-786 786) +(text-id-787 787) +(text-id-788 788) +(text-id-789 789) +(text-id-790 790) +(text-id-791 791) +(text-id-792 792) +(text-id-793 793) +(text-id-794 794) +(text-id-795 795) +(text-id-796 796) +(text-id-797 797) +(text-id-798 798) +(text-id-799 799) +(text-id-800 800) +(text-id-801 801) +(text-id-802 802) +(text-id-803 803) +(text-id-804 804) +(text-id-805 805) +(text-id-806 806) +(text-id-807 807) +(text-id-808 808) +(text-id-809 809) +(text-id-810 810) +(text-id-811 811) +(text-id-812 812) +(text-id-813 813) +(text-id-814 814) +(text-id-815 815) +(text-id-816 816) +(text-id-817 817) +(text-id-818 818) +(text-id-819 819) +(text-id-820 820) +(text-id-821 821) +(text-id-822 822) +(text-id-823 823) +(text-id-824 824) +(text-id-825 825) +(text-id-826 826) +(text-id-827 827) +(text-id-828 828) +(text-id-829 829) +(text-id-830 830) +(text-id-831 831) +(text-id-832 832) +(text-id-833 833) +(text-id-834 834) +(text-id-835 835) +(text-id-836 836) +(text-id-837 837) +(text-id-838 838) +(text-id-839 839) +(text-id-840 840) +(text-id-841 841) +(text-id-842 842) +(text-id-843 843) +(text-id-844 844) +(text-id-845 845) +(text-id-846 846) +(text-id-847 847) +(text-id-848 848) +(text-id-849 849) +(text-id-850 850) +(text-id-851 851) +(text-id-852 852) +(text-id-853 853) +(text-id-854 854) +(text-id-855 855) +(text-id-856 856) +(text-id-857 857) +(text-id-858 858) +(text-id-859 859) +(text-id-860 860) +(text-id-861 861) +(text-id-862 862) +(text-id-863 863) +(text-id-864 864) +(text-id-865 865) +(text-id-866 866) +(text-id-867 867) +(text-id-868 868) +(text-id-869 869) +(text-id-870 870) +(text-id-871 871) +(text-id-872 872) +(text-id-873 873) +(text-id-874 874) +(text-id-875 875) +(text-id-876 876) +(text-id-877 877) +(text-id-878 878) +(text-id-879 879) +(text-id-880 880) +(text-id-881 881) +(text-id-882 882) +(text-id-883 883) +(text-id-884 884) +(text-id-885 885) +(text-id-886 886) +(text-id-887 887) +(text-id-888 888) +(text-id-889 889) +(text-id-890 890) +(text-id-891 891) +(text-id-892 892) +(text-id-893 893) +(text-id-894 894) +(text-id-895 895) +(text-id-896 896) +(text-id-897 897) +(text-id-898 898) +(text-id-899 899) +(text-id-900 900) +(text-id-901 901) +(text-id-902 902) +(text-id-903 903) +(text-id-904 904) +(text-id-905 905) +(text-id-906 906) +(text-id-907 907) +(text-id-908 908) +(text-id-909 909) +(text-id-910 910) +(text-id-911 911) +(text-id-912 912) +(text-id-913 913) +(text-id-914 914) +(text-id-915 915) +(text-id-916 916) +(text-id-917 917) +(text-id-918 918) +(text-id-919 919) +(text-id-920 920) +(text-id-921 921) +(text-id-922 922) +(text-id-923 923) +(text-id-924 924) +(text-id-925 925) +(text-id-926 926) +(text-id-927 927) +(text-id-928 928) +(text-id-929 929) +(text-id-930 930) +(text-id-931 931) +(text-id-932 932) +(text-id-933 933) +(text-id-934 934) +(text-id-935 935) +(text-id-936 936) +(text-id-937 937) +(text-id-938 938) +(text-id-939 939) +(text-id-940 940) +(text-id-941 941) +(text-id-942 942) +(text-id-943 943) +(text-id-944 944) +(text-id-945 945) +(text-id-946 946) +(text-id-947 947) +(text-id-948 948) +(text-id-949 949) +(text-id-950 950) +(text-id-951 951) +(text-id-952 952) +(text-id-953 953) +(text-id-954 954) +(text-id-955 955) +(text-id-956 956) +(text-id-957 957) +(text-id-958 958) +(text-id-959 959) +(text-id-960 960) +(text-id-961 961) +(text-id-962 962) +(text-id-963 963) +(text-id-964 964) +(text-id-965 965) +(text-id-966 966) +(text-id-967 967) +(text-id-968 968) +(text-id-969 969) +(text-id-970 970) +(text-id-971 971) +(text-id-972 972) +(text-id-973 973) +(text-id-974 974) +(text-id-975 975) +(text-id-976 976) +(text-id-977 977) +(text-id-978 978) +(text-id-979 979) +(text-id-980 980) +(text-id-981 981) +(text-id-982 982) +(text-id-983 983) +(text-id-984 984) +(text-id-985 985) +(text-id-986 986) +(text-id-987 987) +(text-id-988 988) +(text-id-989 989) +(text-id-990 990) +(text-id-991 991) +(text-id-992 992) +(text-id-993 993) +(text-id-994 994) +(text-id-995 995) +(text-id-996 996) +(text-id-997 997) +(text-id-998 998) +(text-id-999 999) +(text-id-1000 1000) +(text-id-1001 1001) +(text-id-1002 1002) +(text-id-1003 1003) +(text-id-1004 1004) +(text-id-1005 1005) +(text-id-1006 1006) +(text-id-1007 1007) +(text-id-1008 1008) +(text-id-1009 1009) +(text-id-1010 1010) +(text-id-1011 1011) +(text-id-1012 1012) +(text-id-1013 1013) +(text-id-1014 1014) +(text-id-1015 1015) +(text-id-1016 1016) +(text-id-1017 1017) +(text-id-1018 1018) +(text-id-1019 1019) +(text-id-1020 1020) +(text-id-1021 1021) +(text-id-1022 1022) +(text-id-1023 1023) +(text-id-1024 1024) +(text-id-1025 1025) +(text-id-1026 1026) +(text-id-1027 1027) +(text-id-1028 1028) +(text-id-1029 1029) +(text-id-1030 1030) +(text-id-1031 1031) +(text-id-1032 1032) +(text-id-1033 1033) +(text-id-1034 1034) +(text-id-1035 1035) +(text-id-1036 1036) +(text-id-1037 1037) +(text-id-1038 1038) +(text-id-1039 1039) +(text-id-1040 1040) +(text-id-1041 1041) +(text-id-1042 1042) +(text-id-1043 1043) +(text-id-1044 1044) +(text-id-1045 1045) +(text-id-1046 1046) +(text-id-1047 1047) +(text-id-1048 1048) +(text-id-1049 1049) +(text-id-1050 1050) +(text-id-1051 1051) +(text-id-1052 1052) +(text-id-1053 1053) +(text-id-1054 1054) +(text-id-1055 1055) +(text-id-1056 1056) +(text-id-1057 1057) +(text-id-1058 1058) +(text-id-1059 1059) +(text-id-1060 1060) +(text-id-1061 1061) +(text-id-1062 1062) +(text-id-1063 1063) +(text-id-1064 1064) +(text-id-1065 1065) +(text-id-1066 1066) +(text-id-1067 1067) +(text-id-1068 1068) +(text-id-1069 1069) +(text-id-1070 1070) +(text-id-1071 1071) +(text-id-1072 1072) +(text-id-1073 1073) +(text-id-1074 1074) +(text-id-1075 1075) +(text-id-1076 1076) +(text-id-1077 1077) +(text-id-1078 1078) +(text-id-1079 1079) +(text-id-1080 1080) +(text-id-1081 1081) +(text-id-1082 1082) +(text-id-1083 1083) +(text-id-1084 1084) +(text-id-1085 1085) +(text-id-1086 1086) +(text-id-1087 1087) +(text-id-1088 1088) +(text-id-1089 1089) +(text-id-1090 1090) +(text-id-1091 1091) +(text-id-1092 1092) +(text-id-1093 1093) +(text-id-1094 1094) +(text-id-1095 1095) +(text-id-1096 1096) +(text-id-1097 1097) +(text-id-1098 1098) +(text-id-1099 1099) +(text-id-1100 1100) +(text-id-1101 1101) +(text-id-1102 1102) +(text-id-1103 1103) +(text-id-1104 1104) +(text-id-1105 1105) +(text-id-1106 1106) +(text-id-1107 1107) +(text-id-1108 1108) +(text-id-1109 1109) +(text-id-1110 1110) +(text-id-1111 1111) +(text-id-1112 1112) +(text-id-1113 1113) +(text-id-1114 1114) +(text-id-1115 1115) +(text-id-1116 1116) +(text-id-1117 1117) +(text-id-1118 1118) +(text-id-1119 1119) +(text-id-1120 1120) +(text-id-1121 1121) +(text-id-1122 1122) +(text-id-1123 1123) +(text-id-1124 1124) +(text-id-1125 1125) +(text-id-1126 1126) +(text-id-1127 1127) +(text-id-1128 1128) +(text-id-1129 1129) +(text-id-1130 1130) +(text-id-1131 1131) +(text-id-1132 1132) +(text-id-1133 1133) +(text-id-1134 1134) +(text-id-1135 1135) +(text-id-1136 1136) +(text-id-1137 1137) +(text-id-1138 1138) +(text-id-1139 1139) +(text-id-1140 1140) +(text-id-1141 1141) +(text-id-1142 1142) +(text-id-1143 1143) +(text-id-1144 1144) +(text-id-1145 1145) +(text-id-1146 1146) +(text-id-1147 1147) +(text-id-1148 1148) +(text-id-1149 1149) +(text-id-1150 1150) +(text-id-1151 1151) +(text-id-1152 1152) +(text-id-1153 1153) +(text-id-1154 1154) +(text-id-1155 1155) +(text-id-1156 1156) +(text-id-1157 1157) +(text-id-1158 1158) +(text-id-1159 1159) +(text-id-1160 1160) +(text-id-1161 1161) +(text-id-1162 1162) +(text-id-1163 1163) +(text-id-1164 1164) +(text-id-1165 1165) +(text-id-1166 1166) +(text-id-1167 1167) +(text-id-1168 1168) +(text-id-1169 1169) +(text-id-1170 1170) +(text-id-1171 1171) +(text-id-1172 1172) +(text-id-1173 1173) +(text-id-1174 1174) +(text-id-1175 1175) +(text-id-1176 1176) +(text-id-1177 1177) +(text-id-1178 1178) +(text-id-1179 1179) +(text-id-1180 1180) +(text-id-1181 1181) +(text-id-1182 1182) +(text-id-1183 1183) +(text-id-1184 1184) +(text-id-1185 1185) +(text-id-1186 1186) +(text-id-1187 1187) +(text-id-1188 1188) +(text-id-1189 1189) +(text-id-1190 1190) +(text-id-1191 1191) +(text-id-1192 1192) +(text-id-1193 1193) +(text-id-1194 1194) +(text-id-1195 1195) +(text-id-1196 1196) +(text-id-1197 1197) +(text-id-1198 1198) +(text-id-1199 1199) +(text-id-1200 1200) +(text-id-1201 1201) +(text-id-1202 1202) +(text-id-1203 1203) +(text-id-1204 1204) +(text-id-1205 1205) +(text-id-1206 1206) +(text-id-1207 1207) +(text-id-1208 1208) +(text-id-1209 1209) +(text-id-1210 1210) +(text-id-1211 1211) +(text-id-1212 1212) +(text-id-1213 1213) +(text-id-1214 1214) +(text-id-1215 1215) +(text-id-1216 1216) +(text-id-1217 1217) +(text-id-1218 1218) +(text-id-1219 1219) +(text-id-1220 1220) +(text-id-1221 1221) +(text-id-1222 1222) +(text-id-1223 1223) +(text-id-1224 1224) +(text-id-1225 1225) +(text-id-1226 1226) +(text-id-1227 1227) +(text-id-1228 1228) +(text-id-1229 1229) +(text-id-1230 1230) +(text-id-1231 1231) +(text-id-1232 1232) +(text-id-1233 1233) +(text-id-1234 1234) +(text-id-1235 1235) +(text-id-1236 1236) +(text-id-1237 1237) +(text-id-1238 1238) +(text-id-1239 1239) +(text-id-1240 1240) +(text-id-1241 1241) +(text-id-1242 1242) +(text-id-1243 1243) +(text-id-1244 1244) +(text-id-1245 1245) +(text-id-1246 1246) +(text-id-1247 1247) +(text-id-1248 1248) +(text-id-1249 1249) +(text-id-1250 1250) +(text-id-1251 1251) +(text-id-1252 1252) +(text-id-1253 1253) +(text-id-1254 1254) +(text-id-1255 1255) +(text-id-1256 1256) +(text-id-1257 1257) +(text-id-1258 1258) +(text-id-1259 1259) +(text-id-1260 1260) +(text-id-1261 1261) +(text-id-1262 1262) +(text-id-1263 1263) +(text-id-1264 1264) +(text-id-1265 1265) +(text-id-1266 1266) +(text-id-1267 1267) +(text-id-1268 1268) +(text-id-1269 1269) +(text-id-1270 1270) +(text-id-1271 1271) +(text-id-1272 1272) +(text-id-1273 1273) +(text-id-1274 1274) +(text-id-1275 1275) +(text-id-1276 1276) +(text-id-1277 1277) +(text-id-1278 1278) +(text-id-1279 1279) +(text-id-1280 1280) +(text-id-1281 1281) +(text-id-1282 1282) +(text-id-1283 1283) +(text-id-1284 1284) +(text-id-1285 1285) +(text-id-1286 1286) +(text-id-1287 1287) +(text-id-1288 1288) +(text-id-1289 1289) +(text-id-1290 1290) +(text-id-1291 1291) +(text-id-1292 1292) +(text-id-1293 1293) +(text-id-1294 1294) +(text-id-1295 1295) +(text-id-1296 1296) +(text-id-1297 1297) +(text-id-1298 1298) +(text-id-1299 1299) +(text-id-1300 1300) +(text-id-1301 1301) +(text-id-1302 1302) +(text-id-1303 1303) +(text-id-1304 1304) +(text-id-1305 1305) +(text-id-1306 1306) +(text-id-1307 1307) +(text-id-1308 1308) +(text-id-1309 1309) +(text-id-1310 1310) +(text-id-1311 1311) +(text-id-1312 1312) +(text-id-1313 1313) +(text-id-1314 1314) +(text-id-1315 1315) +(text-id-1316 1316) +(text-id-1317 1317) +(text-id-1318 1318) +(text-id-1319 1319) +(text-id-1320 1320) +(text-id-1321 1321) +(text-id-1322 1322) +(text-id-1323 1323) +(text-id-1324 1324) +(text-id-1325 1325) +(text-id-1326 1326) +(text-id-1327 1327) +(text-id-1328 1328) +(text-id-1329 1329) +(text-id-1330 1330) +(text-id-1331 1331) +(text-id-1332 1332) +(text-id-1333 1333) +(text-id-1334 1334) +(text-id-1335 1335) +(text-id-1336 1336) +(text-id-1337 1337) +(text-id-1338 1338) +(text-id-1339 1339) +(text-id-1340 1340) +(text-id-1341 1341) +(text-id-1342 1342) +(text-id-1343 1343) +(text-id-1344 1344) +(text-id-1345 1345) +(text-id-1346 1346) +(text-id-1347 1347) +(text-id-1348 1348) +(text-id-1349 1349) +(text-id-1350 1350) +(text-id-1351 1351) +(text-id-1352 1352) +(text-id-1353 1353) +(text-id-1354 1354) +(text-id-1355 1355) +(text-id-1356 1356) +(text-id-1357 1357) +(text-id-1358 1358) +(text-id-1359 1359) +(text-id-1360 1360) +(text-id-1361 1361) +(text-id-1362 1362) +(text-id-1363 1363) +(text-id-1364 1364) +(text-id-1365 1365) +(text-id-1366 1366) +(text-id-1367 1367) +(text-id-1368 1368) +(text-id-1369 1369) +(text-id-1370 1370) +(text-id-1371 1371) +(text-id-1372 1372) +(text-id-1373 1373) +(text-id-1374 1374) +(text-id-1375 1375) +(text-id-1376 1376) +(text-id-1377 1377) +(text-id-1378 1378) +(text-id-1379 1379) +(text-id-1380 1380) +(text-id-1381 1381) +(text-id-1382 1382) +(text-id-1383 1383) +(text-id-1384 1384) +(text-id-1385 1385) +(text-id-1386 1386) +(text-id-1387 1387) +(text-id-1388 1388) +(text-id-1389 1389) +(text-id-1390 1390) +(text-id-1391 1391) +(text-id-1392 1392) +(text-id-1393 1393) +(text-id-1394 1394) +(text-id-1395 1395) +(text-id-1396 1396) +(text-id-1397 1397) +(text-id-1398 1398) +(text-id-1399 1399) +(text-id-1400 1400) +(text-id-1401 1401) +(text-id-1402 1402) +(text-id-1403 1403) +(text-id-1404 1404) +(text-id-1405 1405) +(text-id-1406 1406) +(text-id-1407 1407) +(text-id-1408 1408) +(text-id-1409 1409) +(text-id-1410 1410) +(text-id-1411 1411) +(text-id-1412 1412) +(text-id-1413 1413) +(text-id-1414 1414) +(text-id-1415 1415) +(text-id-1416 1416) +(text-id-1417 1417) +(text-id-1418 1418) +(text-id-1419 1419) +(text-id-1420 1420) +(text-id-1421 1421) +(text-id-1422 1422) +(text-id-1423 1423) +(text-id-1424 1424) +(text-id-1425 1425) +(text-id-1426 1426) +(text-id-1427 1427) +(text-id-1428 1428) +(text-id-1429 1429) +(text-id-1430 1430) +(text-id-1431 1431) +(text-id-1432 1432) +(text-id-1433 1433) +(text-id-1434 1434) +(text-id-1435 1435) +(text-id-1436 1436) +(text-id-1437 1437) +(text-id-1438 1438) +(text-id-1439 1439) +(text-id-1440 1440) +(text-id-1441 1441) +(text-id-1442 1442) +(text-id-1443 1443) +(text-id-1444 1444) +(text-id-1445 1445) +(text-id-1446 1446) +(text-id-1447 1447) +(text-id-1448 1448) +(text-id-1449 1449) +(text-id-1450 1450) +(text-id-1451 1451) +(text-id-1452 1452) +(text-id-1453 1453) +(text-id-1454 1454) +(text-id-1455 1455) +(text-id-1456 1456) +(text-id-1457 1457) +(text-id-1458 1458) +(text-id-1459 1459) +(text-id-1460 1460) +(text-id-1461 1461) +(text-id-1462 1462) +(text-id-1463 1463) +(text-id-1464 1464) +(text-id-1465 1465) +(text-id-1466 1466) +(text-id-1467 1467) +(text-id-1468 1468) +(text-id-1469 1469) +(text-id-1470 1470) +(text-id-1471 1471) +(text-id-1472 1472) +(text-id-1473 1473) +(text-id-1474 1474) +(text-id-1475 1475) +(text-id-1476 1476) +(text-id-1477 1477) +(text-id-1478 1478) +(text-id-1479 1479) +(text-id-1480 1480) +(text-id-1481 1481) +(text-id-1482 1482) +(text-id-1483 1483) +(text-id-1484 1484) +(text-id-1485 1485) +(text-id-1486 1486) +(text-id-1487 1487) +(text-id-1488 1488) +(text-id-1489 1489) +(text-id-1490 1490) +(text-id-1491 1491) +(text-id-1492 1492) +(text-id-1493 1493) +(text-id-1494 1494) +(text-id-1495 1495) +(text-id-1496 1496) +(text-id-1497 1497) +(text-id-1498 1498) +(text-id-1499 1499) +(text-id-1500 1500) +(text-id-1501 1501) +(text-id-1502 1502) +(text-id-1503 1503) +(text-id-1504 1504) +(text-id-1505 1505) +(text-id-1506 1506) +(text-id-1507 1507) +(text-id-1508 1508) +(text-id-1509 1509) +(text-id-1510 1510) +(text-id-1511 1511) +(text-id-1512 1512) +(text-id-1513 1513) +(text-id-1514 1514) +(text-id-1515 1515) +(text-id-1516 1516) +(text-id-1517 1517) +(text-id-1518 1518) +(text-id-1519 1519) +(text-id-1520 1520) +(text-id-1521 1521) +(text-id-1522 1522) +(text-id-1523 1523) +(text-id-1524 1524) +(text-id-1525 1525) +(text-id-1526 1526) +(text-id-1527 1527) +(text-id-1528 1528) +(text-id-1529 1529) +(text-id-1530 1530) +(text-id-1531 1531) +(text-id-1532 1532) +(text-id-1533 1533) +(text-id-1534 1534) +(text-id-1535 1535) +(text-id-1536 1536) +(text-id-1537 1537) +(text-id-1538 1538) +(text-id-1539 1539) +(text-id-1540 1540) +(text-id-1541 1541) +(text-id-1542 1542) +(text-id-1543 1543) +(text-id-1544 1544) +(text-id-1545 1545) +(text-id-1546 1546) +(text-id-1547 1547) +(text-id-1548 1548) +(text-id-1549 1549) +(text-id-1550 1550) +(text-id-1551 1551) +(text-id-1552 1552) +(text-id-1553 1553) +(text-id-1554 1554) +(text-id-1555 1555) +(text-id-1556 1556) +(text-id-1557 1557) +(text-id-1558 1558) +(text-id-1559 1559) +(text-id-1560 1560) +(text-id-1561 1561) +(text-id-1562 1562) +(text-id-1563 1563) +(text-id-1564 1564) +(text-id-1565 1565) +(text-id-1566 1566) +(text-id-1567 1567) +(text-id-1568 1568) +(text-id-1569 1569) +(text-id-1570 1570) +(text-id-1571 1571) +(text-id-1572 1572) +(text-id-1573 1573) +(text-id-1574 1574) +(text-id-1575 1575) +(text-id-1576 1576) +(text-id-1577 1577) +(text-id-1578 1578)