fix bad defpartgroup decomp and improve entity debug display a bit (#2423)

- Makes very nasty bugs fixed in #2402 print onscreen when detected
instead of to the console.

![image](https://user-images.githubusercontent.com/7569514/227754516-d508376e-8b23-4af6-bc44-e4d33d586e17.png)
- Fixes `valid?` decomp
- Moves `entity-debug.gc` to the end of `COMMON.CGO` so we can check for
keys in a few more commonly-used actor types.
- Entity debug display (jak 2) now properly parses the `art-name` tag of
part spawners, which gets overwritten at runtime.
- Fixes #2422 . Decompiler was writing out part group rotation for the
scale part, so all of those part groups had a zero in one (or all) of
the axes. This "only" affected 38 groups, including all of the flame
pots in tomb, jetpack guard, wasp, onin tent seal of mar, dark eco pill
and a few other things.

![image](https://cdn.discordapp.com/attachments/995787558816595968/1089395776880390174/image.png)

![image](https://cdn.discordapp.com/attachments/995787558816595968/1089395777253671013/image.png)
This commit is contained in:
ManDude 2023-03-26 05:13:54 +01:00 committed by GitHub
parent d82ce11e9b
commit 7170db51ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 179 additions and 162 deletions

View file

@ -195,7 +195,7 @@
"${workspaceRoot}/decompiler_out",
"--version",
"ntsc_v1",
"--config-override \"{\\\"decompile_code\\\": false}\""
"--config-override \"{\\\"decompile_code\\\": false, \\\"levels_extract\\\": true, \\\"allowed_objects\\\": []}\""
]
},
{

View file

@ -3215,8 +3215,8 @@ goos::Object DefpartgroupElement::to_form_internal(const Env& env) const {
}
if (m_static_info.scale != 1) {
forms.push_back(pretty_print::to_symbol(fmt::format(
":scale ({} {} {})", float_to_string(m_static_info.rot.x()),
float_to_string(m_static_info.rot.y()), float_to_string(m_static_info.rot.z()))));
":scale ({} {} {})", float_to_string(m_static_info.scale.x()),
float_to_string(m_static_info.scale.y()), float_to_string(m_static_info.scale.z()))));
}
}

View file

@ -227,7 +227,7 @@
(define-extern *trace-list* pair)
(define-extern print-tree-bitmask (function int int symbol))
(define-extern breakpoint-range-set! (function uint uint uint int))
(define-extern valid? (function object type symbol symbol object symbol))
(define-extern valid? (function object type string symbol object symbol))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; gstring-h ;;

View file

@ -81,7 +81,7 @@
"is_pal": false,
// jak 1's all-types, used to generate "hints"
// "old_all_types_file": "decompiler/config/jak1/all-types.gc",
"old_all_types_file": "decompiler/config/jak1/all-types.gc",
////////////////////////////
// CONFIG FILES

View file

@ -34,4 +34,5 @@
"battle.o"
"elec-gate.o"
"cty-guard-turret-button.o"
"entity-debug.o" ;; added
))

View file

@ -376,6 +376,5 @@
"sampler.o"
"default-menu.o"
"anim-tester-x.o" ;; added
"entity-debug.o" ;; added
"default-menu-pc.o" ;; added
))

View file

@ -376,7 +376,6 @@
"sampler.o"
"default-menu.o"
"anim-tester-x.o" ;; added
"entity-debug.o" ;; added
"default-menu-pc.o" ;; added
"dir-tpages.go"
"tpage-11.go"
@ -444,4 +443,5 @@
"battle.o"
"elec-gate.o"
"cty-guard-turret-button.o"
"entity-debug.o" ;; added
))

View file

@ -396,7 +396,7 @@
:id 82
:flags (unk-7)
:bounds (static-bspherem 0 0 0 4)
:scale (0.0 0.0 0.0)
:scale (1.0 10.0 1.0)
:parts ((sp-item 290 :period 25 :length 5 :binding 288)
(sp-item 288 :flags (bit1 start-dead launch-asap))
(sp-item 288 :flags (bit1 start-dead launch-asap))

View file

@ -1145,7 +1145,7 @@
(let ((s3-0 (-> (the-as drawable-tree-instance-shrub v1-7) info prototype-inline-array-shrub)))
(dotimes (s2-0 (-> s3-0 length))
(let ((a1-4
(new 'global 'debug-menu-item-flag (-> s3-0 data s2-0 name) (-> s3-0 data s2-0 name) dm-instance-pick-func)
(new 'debug 'debug-menu-item-flag (-> s3-0 data s2-0 name) (-> s3-0 data s2-0 name) dm-instance-pick-func)
)
)
(debug-menu-append-item *instance-shrub-menu* a1-4)
@ -2699,22 +2699,22 @@
#t
)
(let ((s2-0 (method-of-type pair new))
(s1-0 'global)
(s1-0 'debug)
(s0-0 pair)
)
(set! sv-16 (method-of-type pair new))
(set! sv-32 'global)
(set! sv-32 'debug)
(set! sv-48 pair)
(set! sv-64 'flag)
(set! sv-80 (method-of-type pair new))
(set! sv-96 'global)
(set! sv-96 'debug)
(set! sv-112 pair)
(set! sv-128 (-> (the-as continue-point v1-2) name))
(set! sv-144 (method-of-type pair new))
(set! sv-160 'global)
(set! sv-160 'debug)
(set! sv-176 pair)
(set! sv-192 (-> (the-as continue-point v1-2) name))
(let* ((a3-1 (cons 'dm-current-continue '()))
(let* ((a3-1 (dcons 'dm-current-continue '()))
(a3-2 (sv-144 sv-160 sv-176 sv-192 a3-1))
(a3-3 (sv-80 sv-96 sv-112 sv-128 a3-2))
)
@ -2733,12 +2733,12 @@
(let ((a3-5 '()))
(let ((a2-6 (car s5-0)))
(while (not (null? s5-0))
(set! a3-5 (cons a2-6 a3-5))
(set! a3-5 (dcons a2-6 a3-5))
(set! s5-0 (cdr s5-0))
(set! a2-6 (car s5-0))
)
)
(cons 'menu (cons (symbol->string arg1) a3-5))
(dcons 'menu (dcons (symbol->string arg1) a3-5))
)
)
)
@ -2766,22 +2766,22 @@
(let ((v1-4 (-> s4-0 s3-0)))
(when (= (-> v1-4 level) arg0)
(let ((s2-0 (method-of-type pair new))
(s1-0 'global)
(s1-0 'debug)
(s0-0 pair)
)
(set! sv-16 (method-of-type pair new))
(set! sv-32 'global)
(set! sv-32 'debug)
(set! sv-48 pair)
(set! sv-64 'flag)
(set! sv-80 (method-of-type pair new))
(set! sv-96 'global)
(set! sv-96 'debug)
(set! sv-112 pair)
(set! sv-128 (-> v1-4 name))
(set! sv-144 (method-of-type pair new))
(set! sv-160 'global)
(set! sv-160 'debug)
(set! sv-176 pair)
(set! sv-192 (* s3-0 8))
(let* ((a3-1 (cons 'dm-task-menu-pick-func '()))
(let* ((a3-1 (dcons 'dm-task-menu-pick-func '()))
(a3-2 (sv-144 sv-160 sv-176 sv-192 a3-1))
(a3-3 (sv-80 sv-96 sv-112 sv-128 a3-2))
)
@ -2793,7 +2793,7 @@
)
)
)
(cons 'menu (cons (symbol->string arg0) gp-0))
(dcons 'menu (dcons (symbol->string arg0) gp-0))
)
)
@ -2957,22 +2957,22 @@
(let ((v1-4 (-> *game-info* play-list s4-0)))
(when (-> v1-4 play-continue)
(let ((s3-0 (method-of-type pair new))
(s2-0 'global)
(s2-0 'debug)
(s1-0 pair)
(s0-0 (method-of-type pair new))
)
(set! sv-16 'global)
(set! sv-16 'debug)
(set! sv-32 pair)
(set! sv-48 'function)
(set! sv-64 (method-of-type pair new))
(set! sv-80 'global)
(set! sv-80 'debug)
(set! sv-96 pair)
(set! sv-112 (-> v1-4 name))
(set! sv-128 (method-of-type pair new))
(set! sv-144 'global)
(set! sv-144 'debug)
(set! sv-160 pair)
(set! sv-176 (* s4-0 8))
(let* ((a3-1 (cons 'dm-play-task '()))
(let* ((a3-1 (dcons 'dm-play-task '()))
(a3-2 (sv-128 sv-144 sv-160 sv-176 a3-1))
(a3-3 (sv-64 sv-80 sv-96 sv-112 a3-2))
)
@ -2982,7 +2982,7 @@
)
)
)
(debug-menu-make-from-template arg0 (cons 'menu (cons "Play" gp-0)))
(debug-menu-make-from-template arg0 (dcons 'menu (dcons "Play" gp-0)))
)
)
@ -3756,7 +3756,7 @@
(function "Reset Actors" #f ,(lambda () (reset-actors 'debug) (none)))
(function "Traffic Start" #f ,(lambda ()
(let ((gp-0 traffic-start))
(if (valid? gp-0 function (the-as symbol "") #t 0)
(if (valid? gp-0 function "" #t 0)
(gp-0)
)
)
@ -3765,7 +3765,7 @@
)
(function "Traffic Kill" #f ,(lambda ()
(let ((gp-0 traffic-kill))
(if (valid? gp-0 function (the-as symbol "") #t 0)
(if (valid? gp-0 function "" #t 0)
(gp-0)
)
)

View file

@ -217,7 +217,7 @@ This commonly includes things such as:
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(let ((s4-0 (-> arg0 etype)))
(if (valid? s4-0 type #f #f 0)
(if (valid? s4-0 type (the-as string #f) #f 0)
(init-viewer (symbol->string (-> s4-0 symbol)) (res-lump-struct arg0 'name string))
(go process-drawable-art-error "unknown")
)

View file

@ -403,7 +403,7 @@ Debug tool to print out a DMA list.
(a2-2 "dma-list tag pointer")
)
(cond
((not (t9-1 a0-2 (the-as type a1-2) (the-as symbol a2-2) #t gp-0))
((not (t9-1 a0-2 (the-as type a1-2) a2-2 #t gp-0))
(format gp-0 "ERROR: dma-list tag pointer invalid~%")
(set! s0-0 'error)
)
@ -414,7 +414,7 @@ Debug tool to print out a DMA list.
(a1-4 #f)
)
(set! a2-2 "dma-list data pointer")
(t9-3 a0-4 (the-as type a1-4) (the-as symbol a2-2) #t gp-0)
(t9-3 a0-4 (the-as type a1-4) a2-2 #t gp-0)
)
)
)

View file

@ -539,7 +539,7 @@
;; WARN: Return type mismatch entity-actor vs none.
(defmethod debug-print entity-actor ((obj entity-actor) (arg0 symbol) (arg1 type))
(let ((s4-0 (-> obj etype)))
(when (or (not arg1) (and s4-0 (valid? s4-0 type #f #f 0) (type-type? s4-0 arg1)))
(when (or (not arg1) (and s4-0 (valid? s4-0 type (the-as string #f) #f 0) (type-type? s4-0 arg1)))
(format #t "~5D #x~8X ~-26S" (-> obj extra vis-id) obj (res-lump-struct obj 'name structure))
(let ((t9-4 format)
(a0-5 #t)
@ -1605,7 +1605,7 @@
)
((begin
(set! (-> s4-0 type) s5-0)
(and s5-0 (valid? s5-0 type #f #f 0) (valid? (method-of-object s4-0 init-from-entity!) function #f #f 0))
(and s5-0 (valid? s5-0 type (the-as string #f) #f 0) (valid? (method-of-object s4-0 init-from-entity!) function (the-as string #f) #f 0))
)
(init-entity s4-0 obj (the-as process s5-0))
)
@ -2243,9 +2243,9 @@
(or (-> s4-1 vis-info 0) (< (vector-vector-distance (-> sv-48 trans) sv-16) (-> sv-48 vis-dist)))
;; PC port note : added this extra check to fix level types being used after deloaded because of bad entity placement
(#if PC_PORT
(or (not (type-type? (-> sv-48 entity type) entity-actor)) (and (valid? (-> (the-as entity-actor (-> sv-48 entity)) etype) type 'entity-type-check1 #f 0)
(valid? (-> (the-as entity-actor (-> sv-48 entity)) etype symbol) symbol 'entity-type-check2 #f 0)
(valid? (-> (the-as entity-actor (-> sv-48 entity)) etype symbol value) type 'entity-type-check3 #f 0)
(or (not (type-type? (-> sv-48 entity type) entity-actor)) (and (valid? (-> (the-as entity-actor (-> sv-48 entity)) etype) type "entity-type-check etype" #f *stdcon*)
(valid? (-> (the-as entity-actor (-> sv-48 entity)) etype symbol) symbol "entity-type-check symbol" #f *stdcon*)
(valid? (-> (the-as entity-actor (-> sv-48 entity)) etype symbol value) type "entity-type-check value" #f *stdcon*)
(= (-> (the-as entity-actor (-> sv-48 entity)) etype) (-> (the-as entity-actor (-> sv-48 entity)) etype symbol value))
))
#f)

View file

@ -280,7 +280,7 @@ into 7 sections, which might explain the weird sizes in the center.
(dotimes (s5-0 8)
(let ((s4-0 (-> obj bsp vis-info s5-0)))
(cond
((and s4-0 (nonzero? s4-0) (valid? s4-0 level-vis-info #f #f 0))
((and s4-0 (nonzero? s4-0) (valid? s4-0 level-vis-info (the-as string #f) #f 0))
;; looks good
;; level -> vis info
@ -1465,7 +1465,7 @@ into 7 sections, which might explain the weird sizes in the center.
(set! (-> *level* loading-level) obj)
(set! *level-type-list* (the-as type (&-> obj level-type)))
(cond
((valid? (-> obj bsp light-hash) light-hash #f #t 0)
((valid? (-> obj bsp light-hash) light-hash (the-as string #f) #t 0)
(set! (-> obj light-hash) (-> obj bsp light-hash))
)
(else

View file

@ -838,7 +838,7 @@
)
(format (clear *temp-string*) "skel-~S" arg0)
(let ((s4-1 (s3-0 s4-0 *temp-string* (the-as (pointer uint32) #f))))
(if (and (nonzero? s4-1) (valid? s4-1 skeleton-group #f #f 0))
(if (and (nonzero? s4-1) (valid? s4-1 skeleton-group (the-as string #f) #f 0))
(initialize-skeleton obj (the-as skeleton-group s4-1) (the-as pair 0))
(go process-drawable-art-error arg0)
)
@ -1914,7 +1914,7 @@
(let ((s3-0 (-> arg0 node-list data s4-0)))
(when (-> s3-0 geo)
(cond
((valid? (-> s3-0 geo) drawable (the-as symbol "cspace geo") #t *valid-con*)
((valid? (-> s3-0 geo) drawable "cspace geo" #t *valid-con*)
)
(else
(format *valid-con* "ERROR: ~A has an invalid geo ~A~%" s3-0 (-> s3-0 geo))
@ -1940,7 +1940,7 @@
(cond
((logtest? (-> s2-0 command) (joint-control-command joint-control-command-4))
)
((valid? (-> s2-0 frame-group) art-joint-anim (the-as symbol "joint-control frame-group") #t *valid-con*)
((valid? (-> s2-0 frame-group) art-joint-anim "joint-control frame-group" #t *valid-con*)
(when (not (and (>= (the int (-> s2-0 frame-num)) 0)
(< (the int (-> s2-0 frame-num)) (the-as int (-> s2-0 frame-group frames num-frames)))
)

View file

@ -894,7 +894,7 @@
(defmethod validate-objects spatial-hash ((obj spatial-hash))
(dotimes (s5-0 (-> obj object-count))
(let ((a0-2 (-> obj object-array s5-0 object)))
(when (not (valid? a0-2 basic (the-as symbol "") #t 0))
(when (not (valid? a0-2 basic "" #t 0))
(break!)
0
)

View file

@ -2120,7 +2120,7 @@
)
(defmethod deactivate base-turret ((obj base-turret))
(if (valid? (-> obj hud) (the-as type #f) (the-as symbol "") #t 0)
(if (valid? (-> obj hud) (the-as type #f) "" #t 0)
(send-event (handle->process (-> obj hud)) 'hide-and-die)
)
(sound-stop (-> obj sound-id 0))

View file

@ -1087,9 +1087,9 @@
)
(define-extern boolean type) ;; not really... but they use it here as if it was one.
(define-extern valid? (function object type symbol symbol object symbol))
(define-extern valid? (function object type string symbol object symbol))
(defun valid? ((obj object) (expected-type type) (name symbol) (allow-false symbol) (print-dest object))
(defun valid? ((obj object) (expected-type type) (name string) (allow-false symbol) (print-dest object))
"Check if the given object is valid. This will work for structures, pairs, basics, bintegers, symbols, and types.
If you set expected-type to #f, it just checks for a 4-byte aligned address that's in GOAL memory.
If you're checking a structure, set expected-type to structure. This requires 16-byte alignment
@ -1224,7 +1224,7 @@
)
#f
)
((and (!= expected-type type) (not (valid? (rtype-of obj) type #f #t 0)))
((and (!= expected-type type) (not (valid? (rtype-of obj) type (the-as string #f) #t 0)))
(if name
(format
print-dest

View file

@ -114,7 +114,7 @@
:flags (unk-4 unk-6 unk-7)
:bounds (static-bspherem 0 -2 2 6)
:rotate ((degrees 0) (degrees -90) (degrees 0))
:scale (0.0 -16384.0 0.0)
:scale (1.5 0.6 1.5)
:parts ((sp-item 5203 :fade-after (meters 300) :falloff-to (meters 300) :flags (bit7)))
)

View file

@ -399,7 +399,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 0 0 4)
:rotate ((degrees 90) (degrees 0) (degrees 0))
:scale (16384.0 0.0 0.0)
:scale (0.5 0.5 0.5)
:parts ((sp-item 3478 :flags (is-3d bit6 bit7)) (sp-item 3481 :flags (bit6)))
)

View file

@ -27,7 +27,7 @@
:id 930
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 12)
:scale (0.0 0.0 0.0)
:scale (0.625 0.625 0.625)
:parts ((sp-item 4148 :fade-after (meters 250) :falloff-to (meters 150) :flags (bit7)))
)

View file

@ -1424,7 +1424,7 @@
(#when PC_PORT
;; added. a battle may have enemies from an unloaded level in its ally list (e.g. atoll battle has atollext enemies).
(dotimes (i gp-0)
(if (not (valid? (-> v1-0 data i entity) entity-actor 'battle-ally-check #f #t))
(if (not (valid? (-> v1-0 data i entity) entity-actor "battle allies" #f *stdcon*))
(deactivate self)))
)
(when (> gp-0 0)

View file

@ -14,7 +14,7 @@
:flags (use-local-clock unk-5 unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (0.75 0.75 0.75)
:parts ((sp-item 744 :flags (bit6) :period 900 :length 5)
(sp-item 745 :flags (bit6) :period 900 :length 5)
(sp-item 746 :period 900 :length 15)
@ -32,7 +32,7 @@
:flags (use-local-clock unk-5 unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (0.3 0.3 0.3)
:parts ((sp-item 744 :flags (bit6) :period 900 :length 5)
(sp-item 745 :flags (bit6) :period 900 :length 5)
(sp-item 746 :period 900 :length 15)

View file

@ -14,7 +14,7 @@
:flags (use-local-clock unk-5 unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (0.25 0.25 0.25)
:parts ((sp-item 726 :flags (bit6) :period 900 :length 5)
(sp-item 727 :flags (bit6) :period 900 :length 5)
(sp-item 728 :period 900 :length 15)

View file

@ -435,7 +435,7 @@
:id 404
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 7)
:scale (0.0 0.0 0.0)
:scale (0.6 0.6 0.6)
:parts ((sp-item 1687 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1688 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1689 :fade-after (meters 200) :flags (bit6 bit7))
@ -446,7 +446,7 @@
:id 405
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.7 0.7 0.7)
:parts ((sp-item 1687 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1688 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1689 :fade-after (meters 200) :flags (bit6 bit7))
@ -2032,7 +2032,7 @@
:flags (unk-4 unk-6 unk-7)
:bounds (static-bspherem 0 -2 2 6)
:rotate ((degrees 0) (degrees -90) (degrees 0))
:scale (0.0 -16384.0 0.0)
:scale (0.6 0.6 0.6)
:parts ((sp-item 1752 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 1753 :fade-after (meters 200) :falloff-to (meters 240) :flags (bit7))
)

View file

@ -428,7 +428,7 @@ This commonly includes things such as:
)
(defmethod deactivate forest-youngsamos ((obj forest-youngsamos))
(if (valid? (-> obj hud) (the-as type #f) (the-as symbol "") #t 0)
(if (valid? (-> obj hud) (the-as type #f) "" #t 0)
(send-event (handle->process (-> obj hud)) 'hide-and-die)
)
(sound-stop (the-as sound-id (-> obj sound-id)))

View file

@ -249,7 +249,7 @@
:id 664
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2904 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100)
(sp-item 2905 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100)
(sp-item 2906 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300)
@ -345,7 +345,7 @@
:id 665
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.85 0.85 0.85)
:parts ((sp-item 2908 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 150)
(sp-item 2909 :fade-after (meters 60) :flags (bit6 bit7) :period 150 :length 50)
(sp-item 2910 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 300)
@ -438,7 +438,7 @@
:id 667
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2911 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 75)
(sp-item 2912 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 50)
(sp-item 2913 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 225)
@ -738,7 +738,7 @@
:id 669
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2923 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 150 :offset 150)
(sp-item 2924 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 150 :offset 150)
(sp-item 2925 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 150 :offset 300)
@ -1410,7 +1410,7 @@
:id 673
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2954 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100)
(sp-item 2955 :fade-after (meters 60) :flags (bit6 bit7) :period 400 :length 100)
(sp-item 2956 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 300)
@ -1528,7 +1528,7 @@
:id 674
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2959 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2960 :fade-after (meters 60) :flags (bit6 bit7) :period 200 :length 100)
(sp-item 2961 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 100)
@ -1756,7 +1756,7 @@
:id 675
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2969 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 100)
(sp-item 2970 :fade-after (meters 60) :flags (bit6 bit7) :period 400 :length 150)
(sp-item 2971 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 125 :offset 85)
@ -2028,7 +2028,7 @@
:id 676
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2981 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2982 :fade-after (meters 60) :flags (bit6 bit7) :period 300 :length 75 :offset 150)
(sp-item 2983 :fade-after (meters 40) :flags (bit6 bit7) :period 350 :length 150 :offset 80)
@ -2168,7 +2168,7 @@
:id 677
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2987 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2988 :fade-after (meters 60) :flags (bit6 bit7) :period 300 :length 75)
(sp-item 2989 :fade-after (meters 40) :flags (bit6 bit7) :period 350 :length 150 :offset 125)
@ -2352,7 +2352,7 @@
:id 678
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2995 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2996 :fade-after (meters 60) :flags (bit6 bit7) :period 300 :length 75 :offset 150)
(sp-item 2997 :fade-after (meters 40) :flags (bit6 bit7) :period 350 :length 150 :offset 80)

View file

@ -96,7 +96,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.83 1.2)
:parts ((sp-item 2297 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2298 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -264,7 +264,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.97 0.87)
:parts ((sp-item 2304 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2305 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -383,7 +383,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.97 1.27)
:parts ((sp-item 2306 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2307 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -502,7 +502,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 1.13 1.3)
:parts ((sp-item 2308 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2309 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -621,7 +621,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.83 1.2)
:parts ((sp-item 2310 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2311 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2312 :flags (bit7) :period 1200 :length 15)
@ -789,7 +789,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.83 1.2)
:parts ((sp-item 2314 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2315 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2316 :flags (bit7) :period 1200 :length 15)
@ -957,7 +957,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.73 0.97)
:parts ((sp-item 2318 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2319 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)
@ -1209,7 +1209,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.6 0.43)
:parts ((sp-item 2323 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2324 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)
@ -1328,7 +1328,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.9 0.67)
:parts ((sp-item 2325 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2326 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)
@ -1447,7 +1447,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 1.07 0.6)
:parts ((sp-item 2327 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2328 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)

View file

@ -57,7 +57,7 @@
:id 687
:flags (unk-7)
:bounds (static-bspherem 0 3 0 16)
:scale (0.0 0.0 0.0)
:scale (1.4 2.0 1.4)
:parts ((sp-item 3069 :fade-after (meters 200) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 105 :length 45)
(sp-item 3071 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 130 :length 35 :offset 20)
@ -174,7 +174,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 3 0 16)
:rotate ((degrees 0) (degrees 87) (degrees 0))
:scale (0.0 15837.866 0.0)
:scale (0.9 0.7 1.2)
:parts ((sp-item 3069 :fade-after (meters 200) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 115 :length 40)
(sp-item 3071 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 175 :length 45 :offset 20)
@ -195,7 +195,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 3 0 16)
:rotate ((degrees 0) (degrees 223) (degrees 0))
:scale (0.0 40595.91 0.0)
:scale (1.0 1.25 0.8)
:parts ((sp-item 3069 :fade-after (meters 200) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 125 :length 40)
(sp-item 3071 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 190 :length 45 :offset 20)
@ -215,7 +215,7 @@
:id 691
:flags (unk-7)
:bounds (static-bspherem 0 3 0 16)
:scale (0.0 0.0 0.0)
:scale (0.5 0.5 0.5)
:parts ((sp-item 3069 :fade-after (meters 50) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 100) :falloff-to (meters 250) :flags (bit7) :period 125 :length 40)
(sp-item 3071 :fade-after (meters 100) :falloff-to (meters 250) :flags (bit7) :period 190 :length 45 :offset 20)
@ -440,7 +440,7 @@
:id 692
:flags (unk-7)
:bounds (static-bspherem 0 2 0 6)
:scale (0.0 0.0 0.0)
:scale (0.3 0.5 0.3)
:parts ((sp-item 3083 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 3084 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 100 :length 50)
(sp-item 3085 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 120 :length 55 :offset 20)
@ -463,7 +463,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 2 0 6)
:rotate ((degrees 0) (degrees 63) (degrees 0))
:scale (0.0 11468.8 0.0)
:scale (0.25 0.6 0.35)
:parts ((sp-item 3083 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 3084 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 90 :length 50)
(sp-item 3085 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 160 :length 55 :offset 20)
@ -486,7 +486,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 2 0 6)
:rotate ((degrees 0) (degrees 173) (degrees 0))
:scale (0.0 31493.69 0.0)
:scale (0.325 0.4 0.275)
:parts ((sp-item 3083 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 3084 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 125 :length 50)
(sp-item 3085 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 145 :length 55 :offset 20)

View file

@ -2086,7 +2086,7 @@ This commonly includes things such as:
)
(defmethod deactivate stad-samos ((obj stad-samos))
(if (valid? (-> obj hud) (the-as type #f) (the-as symbol "") #t 0)
(if (valid? (-> obj hud) (the-as type #f) "" #t 0)
(send-event (handle->process (-> obj hud)) 'hide-and-die)
)
(kill-lightning obj)

View file

@ -603,7 +603,7 @@
:id 507
:flags (unk-7)
:bounds (static-bspherem 0 2 0 6)
:scale (0.0 0.0 0.0)
:scale (0.3 0.5 0.3)
:parts ((sp-item 2234 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 2235 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 100 :length 50)
(sp-item 2236 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 120 :length 55 :offset 20)

View file

@ -56,14 +56,14 @@
(let ((data (get-tag-index-data e i)))
;; tag info
(format (clear *debug-temp-string*) "~3L~2D)~0L ~20L~A~0L:" i (-> e tag i name) (-> e tag i elt-type))
(format (clear *debug-temp-string*) "~3L~2D)~0L ~20L~A~0L: " i (-> e tag i name) (-> e tag i elt-type))
;; tag data - special cases first
(cond
;; some water-height info
((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float))
(+! y-adv (* 14 1))
(format *debug-temp-string* " ~mm ~mm ~mm~%(~S)"
(format *debug-temp-string* "~mm ~mm ~mm~%(~S)"
(-> (the (pointer float) data) 0)
(-> (the (pointer float) data) 1)
(-> (the (pointer float) data) 2)
@ -73,7 +73,7 @@
;; some water-height info but with 5 elts
((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float))
(+! y-adv (* 14 3))
(format *debug-temp-string* " ~mm ~mm ~mm~%(~S)~%~mm"
(format *debug-temp-string* "~mm ~mm ~mm~%(~S)~%~mm"
(-> (the (pointer float) data) 0)
(-> (the (pointer float) data) 1)
(-> (the (pointer float) data) 2)
@ -83,17 +83,17 @@
)
;; text id (can be hint ambient)
;; ((and (= (-> e tag i name) 'text-id) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32))
;; (format *debug-temp-string* " (game-text-id ~S)" (game-text-id->string (-> (the (pointer game-text-id) data) 0)))
;; (format *debug-temp-string* "(game-text-id ~S)" (game-text-id->string (-> (the (pointer game-text-id) data) 0)))
;; )
;; eco-info, like in vents, crates, or collectables in general
((and (= (-> e tag i name) 'eco-info) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) int32))
(format *debug-temp-string* " ~S " (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) 0))))
(format *debug-temp-string* "~S " (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) 0))))
(if (= (pickup-type fuel-cell) (-> (the (pointer int32) data) 0))
(format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) 1))))
(format *debug-temp-string* "~D" (-> (the (pointer int32) data) 1))
)
(if (= (pickup-type buzzer) (-> (the (pointer int32) data) 0))
(format *debug-temp-string* " ~S" (game-task->string (the-as game-task (logand #xffff (-> (the (pointer int32) data) 1)))))
(format *debug-temp-string* "~S" (game-task->string (the-as game-task (logand #xffff (-> (the (pointer int32) data) 1)))))
)
)
;; fact options, usually enemies or crates
@ -104,18 +104,33 @@
;; )
;; these can be displayed visually with other tools.
((and (= (-> e tag i name) 'visvol) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) vector))
(format *debug-temp-string* " display actor-vis!")
(format *debug-temp-string* "display actor-vis!")
)
((and (= (-> e tag i name) 'path) (= (-> e tag i elt-type) vector))
(format *debug-temp-string* " display path marks!")
(format *debug-temp-string* "display path marks!")
)
((and (= (-> e tag i name) 'vol) (= (-> e tag i elt-type) vector))
(format *debug-temp-string* " display vol marks!")
(format *debug-temp-string* "display vol marks!")
)
((and (= (-> e tag i name) 'art-name) (= (-> e tag i elt-count) 1) (type-type? (-> e type) entity-actor) (type-type? (-> (the-as entity-actor e) etype) part-spawner))
(let* ((as-launch-group-ptr (-> (the (pointer (pointer sparticle-launch-group)) data)))
(as-string (the string as-launch-group-ptr)))
(cond
((part-group-pointer? as-launch-group-ptr)
(format *debug-temp-string* "(group) ~A" (-> as-launch-group-ptr 0 name))
)
((= (-> as-string type) string)
(format *debug-temp-string* "(string) ~A" as-string)
)
(else
(format *debug-temp-string* "<unknown art-name res-tag #x~x>" as-launch-group-ptr)
)
)
)
)
(else
;; more generic tag info
(dotimes (ii (-> e tag i elt-count))
(format *debug-temp-string* " ")
(case (-> e tag i elt-type)
((string symbol type)
(format *debug-temp-string* "~A" (-> (the (pointer basic) data) ii)))
@ -198,10 +213,10 @@
(format *debug-temp-string* "~%(~S)" (begin (bit-enum->string task-mask (-> (the (pointer uint32) data) ii) (clear *temp-string*)) *temp-string*))
(+! y-adv 14)
)
;; (('elevator-flags)
;; (format *debug-temp-string* "~%(~S)" (begin (bit-enum->string elevator-flags (-> (the (pointer uint32) data) ii) (clear *temp-string*)) *temp-string*))
;; (+! y-adv 14)
;; )
(('elevator-flags)
(format *debug-temp-string* "~%(~S)" (begin (bit-enum->string elevator-flags (-> (the (pointer uint32) data) ii) (clear *temp-string*)) *temp-string*))
(+! y-adv 14)
)
(else
(format *debug-temp-string* "#x~x" (-> (the (pointer uint32) data) ii))
)
@ -267,6 +282,7 @@
(set! ii (the int (-> e tag i elt-count)))
)
)
(format *debug-temp-string* " ")
)
)
)

View file

@ -417,7 +417,7 @@
:id 82
:flags (unk-7)
:bounds (static-bspherem 0 0 0 4)
:scale (0.0 0.0 0.0)
:scale (1.0 10.0 1.0)
:parts ((sp-item 290 :period 25 :length 5 :binding 288)
(sp-item 288 :flags (bit1 start-dead launch-asap))
(sp-item 288 :flags (bit1 start-dead launch-asap))
@ -1461,7 +1461,3 @@
(sp-flt spt-rotate-y (degrees 0.0))
)
)

View file

@ -3839,7 +3839,7 @@
(function "Reset Actors" #f ,(lambda () (reset-actors 'debug) (none)))
(function "Traffic Start" #f ,(lambda ()
(let ((gp-0 traffic-start))
(if (valid? gp-0 function (the-as symbol "") #t 0)
(if (valid? gp-0 function "" #t 0)
(gp-0)
)
)
@ -3848,7 +3848,7 @@
)
(function "Traffic Kill" #f ,(lambda ()
(let ((gp-0 traffic-kill))
(if (valid? gp-0 function (the-as symbol "") #t 0)
(if (valid? gp-0 function "" #t 0)
(gp-0)
)
)

View file

@ -231,7 +231,7 @@ This commonly includes things such as:
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(let ((s4-0 (-> arg0 etype)))
(if (valid? s4-0 type #f #f 0)
(if (valid? s4-0 type (the-as string #f) #f 0)
(init-viewer (symbol->string (-> s4-0 symbol)) (res-lump-struct arg0 'name string))
(go process-drawable-art-error "unknown")
)

View file

@ -547,7 +547,7 @@
(a2-2 "dma-list tag pointer")
)
(cond
((not (t9-1 a0-2 (the-as type a1-2) (the-as symbol a2-2) #t gp-0))
((not (t9-1 a0-2 (the-as type a1-2) a2-2 #t gp-0))
(format gp-0 "ERROR: dma-list tag pointer invalid~%")
(set! s0-0 'error)
)
@ -558,7 +558,7 @@
(a1-4 #f)
)
(set! a2-2 "dma-list data pointer")
(t9-3 a0-4 (the-as type a1-4) (the-as symbol a2-2) #t gp-0)
(t9-3 a0-4 (the-as type a1-4) a2-2 #t gp-0)
)
)
)

View file

@ -71,6 +71,7 @@
)
;; definition for method 3 of type actor-group
;; INFO: this function exists in multiple non-identical object files
(defmethod inspect actor-group ((obj actor-group))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tlength: ~D~%" (-> obj length))
@ -530,6 +531,7 @@
)
;; definition for method 2 of type process
;; INFO: this function exists in multiple non-identical object files
(defmethod print process ((obj process))
(cond
((and (-> obj top-thread) (!= (-> obj status) 'dead))
@ -658,7 +660,7 @@
;; WARN: Return type mismatch entity-actor vs none.
(defmethod debug-print entity-actor ((obj entity-actor) (arg0 symbol) (arg1 type))
(let ((s4-0 (-> obj etype)))
(when (or (not arg1) (and s4-0 (valid? s4-0 type #f #f 0) (type-type? s4-0 arg1)))
(when (or (not arg1) (and s4-0 (valid? s4-0 type (the-as string #f) #f 0) (type-type? s4-0 arg1)))
(format #t "~5D #x~8X ~-26S" (-> obj extra vis-id) obj (res-lump-struct obj 'name structure))
(let ((t9-4 format)
(a0-5 #t)
@ -1813,7 +1815,10 @@
)
((begin
(set! (-> s4-0 type) s5-0)
(and s5-0 (valid? s5-0 type #f #f 0) (valid? (method-of-object s4-0 init-from-entity!) function #f #f 0))
(and s5-0
(valid? s5-0 type (the-as string #f) #f 0)
(valid? (method-of-object s4-0 init-from-entity!) function (the-as string #f) #f 0)
)
)
(init-entity s4-0 obj (the-as process s5-0))
)

View file

@ -186,7 +186,7 @@
(dotimes (s5-0 8)
(let ((s4-0 (-> obj bsp vis-info s5-0)))
(cond
((and s4-0 (nonzero? s4-0) (valid? s4-0 level-vis-info #f #f 0))
((and s4-0 (nonzero? s4-0) (valid? s4-0 level-vis-info (the-as string #f) #f 0))
(set! (-> obj vis-info s5-0) s4-0)
(set! (-> s4-0 current-vis-string) (the-as uint -1))
(if (= (-> s4-0 from-level) (-> obj load-name))
@ -1110,7 +1110,7 @@
(set! (-> *level* loading-level) obj)
(set! *level-type-list* (the-as type (&-> obj level-type)))
(cond
((valid? (-> obj bsp light-hash) light-hash #f #t 0)
((valid? (-> obj bsp light-hash) light-hash (the-as string #f) #t 0)
(set! (-> obj light-hash) (-> obj bsp light-hash))
)
(else

View file

@ -813,7 +813,7 @@
)
(format (clear *temp-string*) "skel-~S" arg0)
(let ((s4-1 (s3-0 s4-0 *temp-string* (the-as (pointer uint32) #f))))
(if (and (nonzero? s4-1) (valid? s4-1 skeleton-group #f #f 0))
(if (and (nonzero? s4-1) (valid? s4-1 skeleton-group (the-as string #f) #f 0))
(initialize-skeleton obj (the-as skeleton-group s4-1) (the-as pair 0))
(go process-drawable-art-error arg0)
)
@ -1948,7 +1948,7 @@
(let ((s3-0 (-> arg0 node-list data s4-0)))
(when (-> s3-0 geo)
(cond
((valid? (-> s3-0 geo) drawable (the-as symbol "cspace geo") #t *valid-con*)
((valid? (-> s3-0 geo) drawable "cspace geo" #t *valid-con*)
)
(else
(format *valid-con* "ERROR: ~A has an invalid geo ~A~%" s3-0 (-> s3-0 geo))
@ -1974,7 +1974,7 @@
(cond
((logtest? (-> s2-0 command) (joint-control-command joint-control-command-4))
)
((valid? (-> s2-0 frame-group) art-joint-anim (the-as symbol "joint-control frame-group") #t *valid-con*)
((valid? (-> s2-0 frame-group) art-joint-anim "joint-control frame-group" #t *valid-con*)
(when (not (and (>= (the int (-> s2-0 frame-num)) 0)
(< (the int (-> s2-0 frame-num)) (the-as int (-> s2-0 frame-group frames num-frames)))
)

View file

@ -949,7 +949,7 @@
(defmethod validate-objects spatial-hash ((obj spatial-hash))
(dotimes (s5-0 (-> obj object-count))
(let ((a0-2 (-> obj object-array s5-0 object)))
(when (not (valid? a0-2 basic (the-as symbol "") #t 0))
(when (not (valid? a0-2 basic "" #t 0))
(break!)
0
)

View file

@ -2336,7 +2336,7 @@
;; definition for method 10 of type base-turret
(defmethod deactivate base-turret ((obj base-turret))
(if (valid? (-> obj hud) (the-as type #f) (the-as symbol "") #t 0)
(if (valid? (-> obj hud) (the-as type #f) "" #t 0)
(send-event (handle->process (-> obj hud)) 'hide-and-die)
)
(sound-stop (-> obj sound-id 0))

View file

@ -974,7 +974,7 @@
;; ERROR: Unsupported inline assembly instruction kind - [daddu v1, v1, s7]
;; ERROR: Unsupported inline assembly instruction kind - [daddu v1, v1, s7]
;; ERROR: Unsupported inline assembly instruction kind - [daddu v1, v1, s7]
(defun valid? ((arg0 object) (arg1 type) (arg2 symbol) (arg3 symbol) (arg4 object))
(defun valid? ((arg0 object) (arg1 type) (arg2 string) (arg3 symbol) (arg4 object))
(local-vars (v1-11 int) (v1-26 int) (v1-56 int) (v1-60 int) (s7-0 none))
(let ((v1-1
(and (>= (the-as uint arg0) (the-as uint __START-OF-TABLE__)) (< (the-as uint arg0) (the-as uint #x8000000)))
@ -1110,7 +1110,7 @@
)
#f
)
((and (!= arg1 type) (not (valid? (rtype-of arg0) type #f #t 0)))
((and (!= arg1 type) (not (valid? (rtype-of arg0) type (the-as string #f) #t 0)))
(if arg2
(format
arg4

View file

@ -141,7 +141,7 @@
:flags (unk-4 unk-6 unk-7)
:bounds (static-bspherem 0 -2 2 6)
:rotate ((degrees 0) (degrees -90) (degrees 0))
:scale (0.0 -16384.0 0.0)
:scale (1.5 0.6 1.5)
:parts ((sp-item 5203 :fade-after (meters 300) :falloff-to (meters 300) :flags (bit7)))
)

View file

@ -417,7 +417,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 0 0 4)
:rotate ((degrees 90) (degrees 0) (degrees 0))
:scale (16384.0 0.0 0.0)
:scale (0.5 0.5 0.5)
:parts ((sp-item 3478 :flags (is-3d bit6 bit7)) (sp-item 3481 :flags (bit6)))
)

View file

@ -36,7 +36,7 @@
:id 930
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 12)
:scale (0.0 0.0 0.0)
:scale (0.625 0.625 0.625)
:parts ((sp-item 4148 :fade-after (meters 250) :falloff-to (meters 150) :flags (bit7)))
)

View file

@ -9,7 +9,7 @@
:flags (use-local-clock unk-5 unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (0.75 0.75 0.75)
:parts ((sp-item 744 :flags (bit6) :period 900 :length 5)
(sp-item 745 :flags (bit6) :period 900 :length 5)
(sp-item 746 :period 900 :length 15)
@ -28,7 +28,7 @@
:flags (use-local-clock unk-5 unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (0.3 0.3 0.3)
:parts ((sp-item 744 :flags (bit6) :period 900 :length 5)
(sp-item 745 :flags (bit6) :period 900 :length 5)
(sp-item 746 :period 900 :length 15)

View file

@ -9,7 +9,7 @@
:flags (use-local-clock unk-5 unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (0.25 0.25 0.25)
:parts ((sp-item 726 :flags (bit6) :period 900 :length 5)
(sp-item 727 :flags (bit6) :period 900 :length 5)
(sp-item 728 :period 900 :length 15)

View file

@ -466,7 +466,7 @@
:id 404
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 7)
:scale (0.0 0.0 0.0)
:scale (0.6 0.6 0.6)
:parts ((sp-item 1687 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1688 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1689 :fade-after (meters 200) :flags (bit6 bit7))
@ -478,7 +478,7 @@
:id 405
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.7 0.7 0.7)
:parts ((sp-item 1687 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1688 :fade-after (meters 200) :flags (bit6 bit7))
(sp-item 1689 :fade-after (meters 200) :flags (bit6 bit7))
@ -2138,7 +2138,7 @@
:flags (unk-4 unk-6 unk-7)
:bounds (static-bspherem 0 -2 2 6)
:rotate ((degrees 0) (degrees -90) (degrees 0))
:scale (0.0 -16384.0 0.0)
:scale (0.6 0.6 0.6)
:parts ((sp-item 1752 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 1753 :fade-after (meters 200) :falloff-to (meters 240) :flags (bit7))
)

View file

@ -471,7 +471,7 @@ This commonly includes things such as:
;; definition for method 10 of type forest-youngsamos
(defmethod deactivate forest-youngsamos ((obj forest-youngsamos))
(if (valid? (-> obj hud) (the-as type #f) (the-as symbol "") #t 0)
(if (valid? (-> obj hud) (the-as type #f) "" #t 0)
(send-event (handle->process (-> obj hud)) 'hide-and-die)
)
(sound-stop (the-as sound-id (-> obj sound-id)))

View file

@ -275,7 +275,7 @@
:id 664
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2904 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100)
(sp-item 2905 :fade-after (meters 80) :flags (bit6 bit7) :period 400 :length 100)
(sp-item 2906 :fade-after (meters 60) :flags (bit6 bit7) :period 600 :length 300)
@ -376,7 +376,7 @@
:id 665
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.85 0.85 0.85)
:parts ((sp-item 2908 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 150)
(sp-item 2909 :fade-after (meters 60) :flags (bit6 bit7) :period 150 :length 50)
(sp-item 2910 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 300)
@ -474,7 +474,7 @@
:id 667
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2911 :fade-after (meters 40) :flags (bit6 bit7) :period 150 :length 75)
(sp-item 2912 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 50)
(sp-item 2913 :fade-after (meters 80) :flags (bit6 bit7) :period 300 :length 225)
@ -788,7 +788,7 @@
:id 669
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2923 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 150 :offset 150)
(sp-item 2924 :fade-after (meters 60) :flags (bit6 bit7) :period 450 :length 150 :offset 150)
(sp-item 2925 :fade-after (meters 80) :flags (bit6 bit7) :period 600 :length 150 :offset 300)
@ -1495,7 +1495,7 @@
:id 673
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2954 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100)
(sp-item 2955 :fade-after (meters 60) :flags (bit6 bit7) :period 400 :length 100)
(sp-item 2956 :fade-after (meters 40) :flags (bit6 bit7) :period 600 :length 300)
@ -1619,7 +1619,7 @@
:id 674
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2959 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2960 :fade-after (meters 60) :flags (bit6 bit7) :period 200 :length 100)
(sp-item 2961 :fade-after (meters 40) :flags (bit6 bit7) :period 300 :length 100)
@ -1858,7 +1858,7 @@
:id 675
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2969 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 100)
(sp-item 2970 :fade-after (meters 60) :flags (bit6 bit7) :period 400 :length 150)
(sp-item 2971 :fade-after (meters 40) :flags (bit6 bit7) :period 450 :length 125 :offset 85)
@ -2143,7 +2143,7 @@
:id 676
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2981 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2982 :fade-after (meters 60) :flags (bit6 bit7) :period 300 :length 75 :offset 150)
(sp-item 2983 :fade-after (meters 40) :flags (bit6 bit7) :period 350 :length 150 :offset 80)
@ -2290,7 +2290,7 @@
:id 677
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2987 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2988 :fade-after (meters 60) :flags (bit6 bit7) :period 300 :length 75)
(sp-item 2989 :fade-after (meters 40) :flags (bit6 bit7) :period 350 :length 150 :offset 125)
@ -2483,7 +2483,7 @@
:id 678
:flags (unk-4 unk-7)
:bounds (static-bspherem 0 0 0 5)
:scale (0.0 0.0 0.0)
:scale (0.8 0.8 0.8)
:parts ((sp-item 2995 :fade-after (meters 80) :flags (bit6 bit7) :period 200 :length 100 :offset 50)
(sp-item 2996 :fade-after (meters 60) :flags (bit6 bit7) :period 300 :length 75 :offset 150)
(sp-item 2997 :fade-after (meters 40) :flags (bit6 bit7) :period 350 :length 150 :offset 80)

View file

@ -63,7 +63,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.83 1.2)
:parts ((sp-item 2297 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2298 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -236,7 +236,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.97 0.87)
:parts ((sp-item 2304 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2305 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -358,7 +358,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.97 1.27)
:parts ((sp-item 2306 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2307 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -480,7 +480,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 1.13 1.3)
:parts ((sp-item 2308 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2309 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2299 :flags (bit7) :period 1200 :length 15)
@ -602,7 +602,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.83 1.2)
:parts ((sp-item 2310 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2311 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2312 :flags (bit7) :period 1200 :length 15)
@ -775,7 +775,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.83 1.2)
:parts ((sp-item 2314 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2315 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2316 :flags (bit7) :period 1200 :length 15)
@ -948,7 +948,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.73 0.97)
:parts ((sp-item 2318 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2319 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)
@ -1210,7 +1210,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.6 0.43)
:parts ((sp-item 2323 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2324 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)
@ -1332,7 +1332,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 0.9 0.67)
:parts ((sp-item 2325 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2326 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)
@ -1454,7 +1454,7 @@
:flags (use-local-clock unk-6 unk-7)
:bounds (static-bspherem 0 0 0 15)
:rotate ((degrees 0) (degrees 90) (degrees 0))
:scale (0.0 16384.0 0.0)
:scale (1.0 1.07 0.6)
:parts ((sp-item 2327 :flags (is-3d bit7) :period 1200 :length 10)
(sp-item 2328 :flags (is-3d bit7) :period 1200 :length 15)
(sp-item 2320 :flags (bit7) :period 1200 :length 15)

View file

@ -67,7 +67,7 @@
:id 687
:flags (unk-7)
:bounds (static-bspherem 0 3 0 16)
:scale (0.0 0.0 0.0)
:scale (1.4 2.0 1.4)
:parts ((sp-item 3069 :fade-after (meters 200) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 105 :length 45)
(sp-item 3071 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 130 :length 35 :offset 20)
@ -190,7 +190,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 3 0 16)
:rotate ((degrees 0) (degrees 87) (degrees 0))
:scale (0.0 15837.866 0.0)
:scale (0.9 0.7 1.2)
:parts ((sp-item 3069 :fade-after (meters 200) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 115 :length 40)
(sp-item 3071 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 175 :length 45 :offset 20)
@ -212,7 +212,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 3 0 16)
:rotate ((degrees 0) (degrees 223) (degrees 0))
:scale (0.0 40595.91 0.0)
:scale (1.0 1.25 0.8)
:parts ((sp-item 3069 :fade-after (meters 200) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 125 :length 40)
(sp-item 3071 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 190 :length 45 :offset 20)
@ -233,7 +233,7 @@
:id 691
:flags (unk-7)
:bounds (static-bspherem 0 3 0 16)
:scale (0.0 0.0 0.0)
:scale (0.5 0.5 0.5)
:parts ((sp-item 3069 :fade-after (meters 50) :falloff-to (meters 200) :flags (bit7))
(sp-item 3070 :fade-after (meters 100) :falloff-to (meters 250) :flags (bit7) :period 125 :length 40)
(sp-item 3071 :fade-after (meters 100) :falloff-to (meters 250) :flags (bit7) :period 190 :length 45 :offset 20)
@ -468,7 +468,7 @@
:id 692
:flags (unk-7)
:bounds (static-bspherem 0 2 0 6)
:scale (0.0 0.0 0.0)
:scale (0.3 0.5 0.3)
:parts ((sp-item 3083 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 3084 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 100 :length 50)
(sp-item 3085 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 120 :length 55 :offset 20)
@ -492,7 +492,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 2 0 6)
:rotate ((degrees 0) (degrees 63) (degrees 0))
:scale (0.0 11468.8 0.0)
:scale (0.25 0.6 0.35)
:parts ((sp-item 3083 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 3084 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 90 :length 50)
(sp-item 3085 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 160 :length 55 :offset 20)
@ -516,7 +516,7 @@
:flags (unk-6 unk-7)
:bounds (static-bspherem 0 2 0 6)
:rotate ((degrees 0) (degrees 173) (degrees 0))
:scale (0.0 31493.69 0.0)
:scale (0.325 0.4 0.275)
:parts ((sp-item 3083 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 3084 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 125 :length 50)
(sp-item 3085 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 145 :length 55 :offset 20)

View file

@ -2280,7 +2280,7 @@ This commonly includes things such as:
;; definition for method 10 of type stad-samos
(defmethod deactivate stad-samos ((obj stad-samos))
(if (valid? (-> obj hud) (the-as type #f) (the-as symbol "") #t 0)
(if (valid? (-> obj hud) (the-as type #f) "" #t 0)
(send-event (handle->process (-> obj hud)) 'hide-and-die)
)
(kill-lightning obj)

View file

@ -642,7 +642,7 @@
:id 507
:flags (unk-7)
:bounds (static-bspherem 0 2 0 6)
:scale (0.0 0.0 0.0)
:scale (0.3 0.5 0.3)
:parts ((sp-item 2234 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7))
(sp-item 2235 :fade-after (meters 250) :falloff-to (meters 250) :flags (bit7) :period 100 :length 50)
(sp-item 2236 :fade-after (meters 150) :falloff-to (meters 150) :flags (bit7) :period 120 :length 55 :offset 20)