From 76aaa2fb1034fba6f3654d5e45856c400d95912d Mon Sep 17 00:00:00 2001 From: Hat Kid <6624576+Hat-Kid@users.noreply.github.com> Date: Tue, 27 Jun 2023 23:52:19 +0200 Subject: [PATCH] jak2: add `.gd` files and level info for some ps3 test levels (#2776) --- decompiler/config/jak2/ntsc_v1/hacks.jsonc | 2 +- decompiler/config/jak2/ntsc_v1/inputs.jsonc | 41 +- goal_src/goos-lib.gs | 2 + goal_src/jak2/dgos/4aaron.gd | 5 + goal_src/jak2/dgos/4pal01.gd | 8 + goal_src/jak2/dgos/andrew01.gd | 5 + goal_src/jak2/dgos/bsbs.gd | 5 + goal_src/jak2/dgos/chartest.gd | 10 + goal_src/jak2/dgos/ctyfence.gd | 5 + goal_src/jak2/dgos/dptest.gd | 6 + goal_src/jak2/dgos/eitest.gd | 8 + goal_src/jak2/dgos/island1.gd | 4 + goal_src/jak2/dgos/miketest.gd | 9 + goal_src/jak2/dgos/skatepar.gd | 12 + goal_src/jak2/dgos/stadocc.gd | 4 + goal_src/jak2/dgos/tatetest.gd | 5 + goal_src/jak2/dgos/teststdc.gd | 9 + goal_src/jak2/dgos/teststdd.gd | 9 + goal_src/jak2/dgos/tobytest.gd | 11 + goal_src/jak2/dgos/wasall.gd | 6 + goal_src/jak2/engine/level/level-info.gc | 895 +++++++++++++++++++- goal_src/jak2/game.gp | 20 + scripts/gen-dgo-txt.py | 107 +++ 23 files changed, 1183 insertions(+), 5 deletions(-) create mode 100644 goal_src/jak2/dgos/4aaron.gd create mode 100644 goal_src/jak2/dgos/4pal01.gd create mode 100644 goal_src/jak2/dgos/andrew01.gd create mode 100644 goal_src/jak2/dgos/bsbs.gd create mode 100644 goal_src/jak2/dgos/chartest.gd create mode 100644 goal_src/jak2/dgos/ctyfence.gd create mode 100644 goal_src/jak2/dgos/dptest.gd create mode 100644 goal_src/jak2/dgos/eitest.gd create mode 100644 goal_src/jak2/dgos/island1.gd create mode 100644 goal_src/jak2/dgos/miketest.gd create mode 100644 goal_src/jak2/dgos/skatepar.gd create mode 100644 goal_src/jak2/dgos/stadocc.gd create mode 100644 goal_src/jak2/dgos/tatetest.gd create mode 100644 goal_src/jak2/dgos/teststdc.gd create mode 100644 goal_src/jak2/dgos/teststdd.gd create mode 100644 goal_src/jak2/dgos/tobytest.gd create mode 100644 goal_src/jak2/dgos/wasall.gd create mode 100644 scripts/gen-dgo-txt.py diff --git a/decompiler/config/jak2/ntsc_v1/hacks.jsonc b/decompiler/config/jak2/ntsc_v1/hacks.jsonc index bf818de8c6..d64128aab7 100644 --- a/decompiler/config/jak2/ntsc_v1/hacks.jsonc +++ b/decompiler/config/jak2/ntsc_v1/hacks.jsonc @@ -768,7 +768,7 @@ // there are some missing textures. I don't know what the game actually does here. // the format for entries is [level, tpage, index] - "missing_textures": [["vinroom", 0, 0]], + "missing_textures": [["vinroom", 0, 0], ["ctyfence", 0, 0]], // some object files have garbage pad data at the end which makes the decompiler // assume they must be different files, such as the art group for orb-cache-top. diff --git a/decompiler/config/jak2/ntsc_v1/inputs.jsonc b/decompiler/config/jak2/ntsc_v1/inputs.jsonc index d358108327..1d0fba5b43 100644 --- a/decompiler/config/jak2/ntsc_v1/inputs.jsonc +++ b/decompiler/config/jak2/ntsc_v1/inputs.jsonc @@ -161,6 +161,25 @@ "DGO/CASCITY.DGO", "DGO/LYSAMSAM.DGO", "DGO/VI1.DGO" + + // ps3 test levels + // "DGO/4AARON.DGO", + // "DGO/4PAL01.DGO", + // "DGO/ANDREW01.DGO", + // "DGO/BSBS.DGO", + // "DGO/CHARTEST.DGO", + // "DGO/CTYFENCE.DGO", // this level needs a bigger level heap, adjust in level.gc + // "DGO/DPTEST.DGO", + // "DGO/EITEST.DGO", + // "DGO/MIKETEST.DGO", + // "DGO/ISLAND1.DGO", + // "DGO/SKATEPARK.DGO", + // "DGO/STADOCC.DGO", + // "DGO/TATETEST.DGO", + // "DGO/TESTSTDC.DGO", + // "DGO/TESTSTDD.DGO", + // "DGO/TOBYTEST.DGO", + // "DGO/WASALL.DGO" ], // some objects are part of STR files (streaming data). @@ -570,6 +589,26 @@ "UNB.DGO", "UND.DGO", "VI1.DGO", - "VIN.DGO" + "VIN.DGO", + "HALFPIPE.DGO" + + // ps3 test levels + // "4AARON.DGO", + // "4PAL01.DGO", + // "ANDREW01.DGO", + // "BSBS.DGO", + // "CHARTEST.DGO", + // "CTYFENCE.DGO", // this level needs a bigger level heap, adjust in level.gc + // "DPTEST.DGO", + // "EITEST.DGO", + // "MIKETEST.DGO", + // "ISLAND1.DGO", + // "SKATEPARK.DGO", + // "STADOCC.DGO" + // "TATETEST.DGO", + // "TESTSTDC.DGO", + // "TESTSTDD.DGO", + // "TOBYTEST.DGO", + // "WASALL.DGO" ] } diff --git a/goal_src/goos-lib.gs b/goal_src/goos-lib.gs index 073797b1da..549db06b27 100644 --- a/goal_src/goos-lib.gs +++ b/goal_src/goos-lib.gs @@ -503,3 +503,5 @@ (define *jak1-full-game* (if (user? dass) #t #f)) (define *jak1-territory* GAME_TERRITORY_SCEA) +;; whether to enable ps3 test levels for jak 2 +(define USE_PS3_LEVELS #f) \ No newline at end of file diff --git a/goal_src/jak2/dgos/4aaron.gd b/goal_src/jak2/dgos/4aaron.gd new file mode 100644 index 0000000000..3c14e6dd5c --- /dev/null +++ b/goal_src/jak2/dgos/4aaron.gd @@ -0,0 +1,5 @@ +("4AARON.DGO" + ( + "4aaron-vis.go" + "tpage-2764.go" + )) diff --git a/goal_src/jak2/dgos/4pal01.gd b/goal_src/jak2/dgos/4pal01.gd new file mode 100644 index 0000000000..987ff2b1c4 --- /dev/null +++ b/goal_src/jak2/dgos/4pal01.gd @@ -0,0 +1,8 @@ +("4PAL01.DGO" + ( + "4pal01-vis.go" + "tpage-308.go" + "tpage-2330.go" + "tpage-307.go" + "tomb-bounce-web-ag.go" + )) diff --git a/goal_src/jak2/dgos/andrew01.gd b/goal_src/jak2/dgos/andrew01.gd new file mode 100644 index 0000000000..7183fd1b97 --- /dev/null +++ b/goal_src/jak2/dgos/andrew01.gd @@ -0,0 +1,5 @@ +("ANDREW01.DGO" + ( + "andrew01-vis.go" + "tpage-1337.go" + )) diff --git a/goal_src/jak2/dgos/bsbs.gd b/goal_src/jak2/dgos/bsbs.gd new file mode 100644 index 0000000000..676ff4424e --- /dev/null +++ b/goal_src/jak2/dgos/bsbs.gd @@ -0,0 +1,5 @@ +("BSBS.DGO" + ( + "bsbs-vis.go" + "tpage-504.go" + )) diff --git a/goal_src/jak2/dgos/chartest.gd b/goal_src/jak2/dgos/chartest.gd new file mode 100644 index 0000000000..faccb05972 --- /dev/null +++ b/goal_src/jak2/dgos/chartest.gd @@ -0,0 +1,10 @@ +("CHARTEST.DGO" + ( + "chartest-vis.go" + "tpage-1846.go" + "tpage-496.go" + "tpage-498.go" + "jak-highres-ag.go" + "mech-ag.go" + "daxter-highres-ag.go" + )) diff --git a/goal_src/jak2/dgos/ctyfence.gd b/goal_src/jak2/dgos/ctyfence.gd new file mode 100644 index 0000000000..e7f711fb61 --- /dev/null +++ b/goal_src/jak2/dgos/ctyfence.gd @@ -0,0 +1,5 @@ +("CTYFENCE.DGO" + ( + "ctyfence-vis.go" + "tpage-760.go" + )) diff --git a/goal_src/jak2/dgos/dptest.gd b/goal_src/jak2/dgos/dptest.gd new file mode 100644 index 0000000000..0c5393d76d --- /dev/null +++ b/goal_src/jak2/dgos/dptest.gd @@ -0,0 +1,6 @@ +("DPT.DGO" + ( + "dptest-vis.go" + "tpage-776.go" + "tpage-780.go" + )) diff --git a/goal_src/jak2/dgos/eitest.gd b/goal_src/jak2/dgos/eitest.gd new file mode 100644 index 0000000000..cfff8b0b32 --- /dev/null +++ b/goal_src/jak2/dgos/eitest.gd @@ -0,0 +1,8 @@ +("EITEST.DGO" + ( + "eitest-vis.go" + "tpage-691.go" + "tpage-658.go" + "tpage-690.go" + "eitest-ag.go" + )) diff --git a/goal_src/jak2/dgos/island1.gd b/goal_src/jak2/dgos/island1.gd new file mode 100644 index 0000000000..b4b867f1c0 --- /dev/null +++ b/goal_src/jak2/dgos/island1.gd @@ -0,0 +1,4 @@ +("ISLAND1.DGO" + ("tpage-3510.go" + "island1-vis.go" + )) \ No newline at end of file diff --git a/goal_src/jak2/dgos/miketest.gd b/goal_src/jak2/dgos/miketest.gd new file mode 100644 index 0000000000..7f59edfb91 --- /dev/null +++ b/goal_src/jak2/dgos/miketest.gd @@ -0,0 +1,9 @@ +("MIKETEST.DGO" + ( + "miketest-vis.go" + "tpage-3096.go" + "tpage-3097.go" + "tpage-3099.go" + "tpage-3098.go" + "com-airlock-inner-ag.go" + )) diff --git a/goal_src/jak2/dgos/skatepar.gd b/goal_src/jak2/dgos/skatepar.gd new file mode 100644 index 0000000000..046f9543e9 --- /dev/null +++ b/goal_src/jak2/dgos/skatepar.gd @@ -0,0 +1,12 @@ +("SKATEPARK.DGO" + ("drill-turret-ext-ag.go" + "drill-turret-int-ag.go" + "jak-pole+0-ag.go" + "lazerfence-ag.go" + "lazerpit-ag.go" + "mech-ag.go" + "tpage-243.go" + "tpage-354.go" + "tpage-3279.go" + "skatepark-vis.go" + )) \ No newline at end of file diff --git a/goal_src/jak2/dgos/stadocc.gd b/goal_src/jak2/dgos/stadocc.gd new file mode 100644 index 0000000000..ade1efd9e0 --- /dev/null +++ b/goal_src/jak2/dgos/stadocc.gd @@ -0,0 +1,4 @@ +("STADOCC.DGO" + ( + "stadocc-vis.go" + )) diff --git a/goal_src/jak2/dgos/tatetest.gd b/goal_src/jak2/dgos/tatetest.gd new file mode 100644 index 0000000000..b4bd44495f --- /dev/null +++ b/goal_src/jak2/dgos/tatetest.gd @@ -0,0 +1,5 @@ +("TATETEST.DGO" + ( + "tatetest-vis.go" + "tpage-922.go" + )) diff --git a/goal_src/jak2/dgos/teststdc.gd b/goal_src/jak2/dgos/teststdc.gd new file mode 100644 index 0000000000..5e076d5694 --- /dev/null +++ b/goal_src/jak2/dgos/teststdc.gd @@ -0,0 +1,9 @@ +("TESTSTDC.DGO" + ( + "teststdc-vis.go" + "tpage-3392.go" + "tpage-3390.go" + "tpage-3391.go" + "stdmb-race-hatch-ag.go" + "stad-c-force-field-ag.go" + )) diff --git a/goal_src/jak2/dgos/teststdd.gd b/goal_src/jak2/dgos/teststdd.gd new file mode 100644 index 0000000000..9103d8690b --- /dev/null +++ b/goal_src/jak2/dgos/teststdd.gd @@ -0,0 +1,9 @@ +("TESTSTDD.DGO" + ( + "teststdd-vis.go" + "tpage-3386.go" + "tpage-3387.go" + "tpage-3385.go" + "stdmb-race-hatch-ag.go" + "stad-d-force-field-ag.go" + )) diff --git a/goal_src/jak2/dgos/tobytest.gd b/goal_src/jak2/dgos/tobytest.gd new file mode 100644 index 0000000000..bcb916de63 --- /dev/null +++ b/goal_src/jak2/dgos/tobytest.gd @@ -0,0 +1,11 @@ +("TOBYTEST.DGO" + ( + "tobytest-vis.go" + "tpage-667.go" + "tpage-665.go" + "tpage-664.go" + "cas-conveyor-switch-ag.go" + "cas-robot-door-ag.go" + "cas-chain-plat-ag.go" + "cas-electric-fence-ag.go" + )) diff --git a/goal_src/jak2/dgos/wasall.gd b/goal_src/jak2/dgos/wasall.gd new file mode 100644 index 0000000000..0b2f640cda --- /dev/null +++ b/goal_src/jak2/dgos/wasall.gd @@ -0,0 +1,6 @@ +("WASALL.DGO" + ("com-airlock-inner-ag.go" + "tpage-3574.go" + "tpage-3575.go" + "wasall-vis.go" + )) \ No newline at end of file diff --git a/goal_src/jak2/engine/level/level-info.gc b/goal_src/jak2/engine/level/level-info.gc index adf59612b4..82faf61b47 100644 --- a/goal_src/jak2/engine/level/level-info.gc +++ b/goal_src/jak2/engine/level/level-info.gc @@ -14527,9 +14527,9 @@ (new 'static 'vector3s :data (new 'static 'array float 3 -0.0926 -0.12 -0.9884)) ) :on-goto #f - :vis-nick 'atoll + :vis-nick 'dptest ;; changed :want (new 'static 'inline-array level-buffer-state 6 - (new 'static 'level-buffer-state :name 'atoll :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name 'dptest :display? 'display :force-vis? #f :force-inside? #f) ;; changed (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) @@ -14594,7 +14594,31 @@ :ocean #f :sky #t :use-camera-other #f - :continues '() + ;; added + :continues '((new 'static 'continue-point + :name "ctyfence-start" + :level 'ctyfence + :trans (new 'static 'vector :x (meters 170.7) :y (meters 9.1063) :z (meters 1133.2773) :w 1.0) + :quat (new 'static 'vector :y -0.3182 :w -0.9480) + :camera-trans (new 'static 'vector :x (meters 169.222) :y (meters 14.23) :z (meters 1121) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.0601 0.0604 -0.0036)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0601 0.0604 -0.0036)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0601 0.0604 -0.0036)) + ) + :on-goto #f + :vis-nick 'ctyfence + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'ctyfence :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) :tasks '() :priority 100 :load-commands '() @@ -14638,6 +14662,858 @@ 0 ) +;; added in PC port: test levels from the ps3 version +(#when USE_PS3_LEVELS + (define 4aaron (new 'static 'level-load-info + :index 1 + :name '4aaron + :visname '4aaron-vis + :nickname '4aaron + :dbname '4aaron + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "4aaron-start" + :level '4aaron + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters 6) :y (meters 0) :z (meters 5.8) :w 1.0) + :quat (new 'static 'vector :y -0.7267 :w 0.6868) + :camera-trans (new 'static 'vector :x (meters 14.04) :y (meters 4.5716) :z (meters 12.4) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0297 0.9011 -0.0626)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0297 0.9011 -0.0626)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0297 0.9011 -0.0626)) + ) + :on-goto #f + :vis-nick '4aaron + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name '4aaron :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define 4pal01 (new 'static 'level-load-info + :index 1 + :name '4pal01 + :visname '4pal01-vis + :nickname '4pal01 + :dbname '4pal01 + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "4pal01-start" + :level '4pal01 + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters -5.632) :y (meters 0) :z (meters -5.682) :w 1.0) + :quat (new 'static 'vector :y 0.9642 :w 0.2650) + :camera-trans (new 'static 'vector :x (meters -15.704) :y (meters 5) :z (meters -12.1401) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.869 0.0 -0.4947)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0663 0.9909 0.1165)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.4903 -0.134 0.8611)) + ) + :on-goto #f + :vis-nick '4pal01 + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name '4pal01 :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define andrew01 (new 'static 'level-load-info + :index 1 + :name 'andrew01 + :visname 'andrew01-vis + :nickname 'andrew01 + :dbname 'andrew01 + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "andrew01-start" + :level 'andrew01 + :flags (continue-flags game-start) + :trans (new 'static 'vector :x 1942413.2 :y 34479.31 :z 275525.62 :w 1.0) + :quat (new 'static 'vector :y 0.4562 :w 0.8898) + :camera-trans (new 'static 'vector :x 1921090.8 :y 53425.766 :z 237949.75 :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.869 0.0 -0.4947)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0663 0.9909 0.1165)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.4903 -0.134 0.8611)) + ) + :on-goto #f + :vis-nick 'andrew01 + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'andrew01 :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define bsbs (new 'static 'level-load-info + :index 1 + :name 'bsbs + :visname 'bsbs-vis + :nickname 'bsbs + :dbname 'bsbs + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "bsbs-start" + :level 'bsbs + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters 118.7956) :y (meters 0) :z (meters 91) :w 1.0) + :quat (new 'static 'vector :y -0.4269 :w 0.9042) + :camera-trans (new 'static 'vector :x (meters 131) :y (meters 5.146) :z (meters 93.7) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.0370 -0.769 0.6365)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0370 -0.769 0.6365)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0370 -0.769 0.6365)) + ) + :on-goto #f + :vis-nick 'bsbs + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'bsbs :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define eitest (new 'static 'level-load-info + :index 1 + :name 'eitest + :visname 'eitest-vis + :nickname 'eitest + :dbname 'eitest + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "eitest-start" + :level 'eitest + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters 8.5438) :y (meters -10) :z (meters 18.304) :w 1.0) + :quat (new 'static 'vector :y -0.8945 :w 0.4468) + :camera-trans (new 'static 'vector :x (meters 12.6751) :y (meters -4.9116) :z (meters 29.8563) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0104 0.9830 -0.0591)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0104 0.9830 -0.0591)) + (new 'static 'vector3s :data (new 'static 'array float 3 -0.0104 0.9830 -0.0591)) + ) + :on-goto #f + :vis-nick 'eitest + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'eitest :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define miketest (new 'static 'level-load-info + :index 1 + :name 'miketest + :visname 'miketest-vis + :nickname 'miketest + :dbname 'miketest + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "miketest-start" + :level 'miketest + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters 0.547) :y (meters 0.6084) :z (meters -1.3416) :w 1.0) + :quat (new 'static 'vector :y 0.9923 :w -0.1234) + :camera-trans (new 'static 'vector :x (meters 11.8525) :y (meters 5.7214) :z (meters -6.3575) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.0500 -0.5936 -6.3575)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0500 -0.5936 -6.3575)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0500 -0.5936 -6.3575)) + ) + :on-goto #f + :vis-nick 'miketest + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'miketest :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define tatetest (new 'static 'level-load-info + :index 1 + :name 'tatetest + :visname 'tatetest-vis + :nickname 'tatetest + :dbname 'tatetest + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "tatetest-start" + :level 'tatetest + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters 39.2181) :y (meters 59.47) :z (meters 15.41) :w 1.0) + :quat (new 'static 'vector :y -0.6084 :w 0.735) + :camera-trans (new 'static 'vector :x (meters 50.601) :y (meters 64.6123) :z (meters 20.558) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.0322 -0.8364 0.0495)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0322 -0.8364 0.0495)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0322 -0.8364 0.0495)) + ) + :on-goto #f + :vis-nick 'tatetest + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'tatetest :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define teststdc (new 'static 'level-load-info + :index 1 + :name 'teststdc + :visname 'teststdc-vis + :nickname 'teststdc + :dbname 'teststdc + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "teststdc-start" + :level 'teststdc + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters -87.3788) :y (meters 11.4971) :z (meters -696.8) :w 1.0) + :quat (new 'static 'vector :y 0.4821 :w 0.8760) + :camera-trans (new 'static 'vector :x (meters -95.4312) :y (meters 16.6371) :z (meters -706.36) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.0569 0.3426 -0.0208)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0569 0.3426 -0.0208)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0569 0.3426 -0.0208)) + ) + :on-goto #f + :vis-nick 'teststdc + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'teststdc :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define teststdd (new 'static 'level-load-info + :index 1 + :name 'teststdd + :visname 'teststdd-vis + :nickname 'teststdd + :dbname 'teststdd + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "teststdd-start" + :level 'teststdd + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters 35.106) :y (meters 11.5) :z (meters -687.111) :w 1.0) + :quat (new 'static 'vector :y -0.4833 :w -0.8754) + :camera-trans (new 'static 'vector :x (meters 28.0362) :y (meters 16.65) :z (meters -697.26) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.055 0.3174 -0.0184)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.055 0.3174 -0.0184)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.055 0.3174 -0.0184)) + ) + :on-goto #f + :vis-nick 'teststdd + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'teststdd :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define wasall (new 'static 'level-load-info + :index 1 + :name 'wasall + :visname 'wasall-vis + :nickname 'wasall + :dbname 'wasall + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "wasall-start" + :level 'wasall + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters -38.3113) :y (meters 16) :z (meters 124.927) :w 1.0) + :quat (new 'static 'vector :y -0.4833 :w -0.8754) + :camera-trans (new 'static 'vector :x (meters -48.3764) :y (meters 20.5) :z (meters 124.3) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.0524 0.6814 -0.05)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0524 0.6814 -0.05)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0524 0.6814 -0.05)) + ) + :on-goto #f + :vis-nick 'wasall + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'wasall :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + (define stadocc (new 'static 'level-load-info + :index 1 + :name 'stadocc + :visname 'stadocc-vis + :nickname 'stadocc + :dbname 'stadocc + :taskname 'default + :packages '() + :memory-mode (load-buffer-mode large) + :music-bank #f + :ambient-sounds '() + :mood-func 'update-mood-default + :mood-init #f + :ocean #f + :sky #t + :use-camera-other #f + :continues '((new 'static 'continue-point + :name "stadocc-start" + :level 'stadocc + :flags (continue-flags game-start) + :trans (new 'static 'vector :x (meters -38.3113) :y (meters 16) :z (meters 124.927) :w 1.0) + :quat (new 'static 'vector :y -0.4833 :w -0.8754) + :camera-trans (new 'static 'vector :x (meters -48.3764) :y (meters 20.5) :z (meters 124.3) :w 1.0) + :camera-rot (new 'static 'inline-array vector3s 3 + (new 'static 'vector3s :data (new 'static 'array float 3 0.0524 0.6814 -0.05)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0524 0.6814 -0.05)) + (new 'static 'vector3s :data (new 'static 'array float 3 0.0524 0.6814 -0.05)) + ) + :on-goto #f + :vis-nick 'stadocc + :want (new 'static 'inline-array level-buffer-state 6 + (new 'static 'level-buffer-state :name 'stadocc :display? 'display :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + (new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f) + ) + :want-sound (new 'static 'array symbol 3 #f #f #f) + ) + ) + :tasks '() + :priority 100 + :load-commands '() + :alt-load-commands '() + :bsp-mask #xffffffffffffffff + :buttom-height (meters -20) + :run-packages '() + :wait-for-load #t + :login-func #f + :activate-func #f + :deactivate-func #f + :kill-func #f + :borrow-level (new 'static 'array symbol 2 #f #f) + :borrow-display? (new 'static 'array symbol 2 #f #f) + :texture-anim-tfrag #f + :texture-anim-pris #f + :texture-anim-shrub #f + :texture-anim-alpha #f + :texture-anim-water #f + :texture-anim-twarp #f + :texture-anim-pris2 #f + :texture-anim-sprite #f + :texture-anim-map #f + :texture-anim-sky #f + :draw-priority 10.0 + :fog-height 327680.0 + :bigmap-id (bigmap-id bigmap-id-20) + :ocean-near-translucent? #t + :ocean-far? #f + :mood-range (new 'static 'mood-range :data (new 'static 'array float 4 0.0 1.0 0.0 1.0)) + :max-rain 1.0 + :fog-mult 1.0 + :ocean-alpha 1.0 + :extra-sound-bank #f + ) + ) + ) + + (#when DEMO_HACK (set! (-> ctywide memory-mode) (load-buffer-mode small-center)) (set! (-> demo memory-mode) (load-buffer-mode small-edge)) @@ -14807,3 +15683,16 @@ ctyfence ) ) + +(#when USE_PS3_LEVELS + (cons! *level-load-list* '4aaron) + (cons! *level-load-list* '4pal01) + (cons! *level-load-list* 'bsbs) + (cons! *level-load-list* 'eitest) + (cons! *level-load-list* 'miketest) + (cons! *level-load-list* 'tatetest) + (cons! *level-load-list* 'teststdc) + (cons! *level-load-list* 'teststdd) + (cons! *level-load-list* 'wasall) + (cons! *level-load-list* 'stadocc) + ) \ No newline at end of file diff --git a/goal_src/jak2/game.gp b/goal_src/jak2/game.gp index 005541a433..32fc4b5a1a 100644 --- a/goal_src/jak2/game.gp +++ b/goal_src/jak2/game.gp @@ -248,6 +248,26 @@ (cgo-file "lracebb.gd" common-dep) (cgo-file "ltentob.gd" common-dep) +;; test levels from the ps3 version +(when USE_PS3_LEVELS + (cgo-file "skatepar.gd" common-dep) + (cgo-file "4aaron.gd" common-dep) + (cgo-file "4pal01.gd" common-dep) + (cgo-file "bsbs.gd" common-dep) + (cgo-file "chartest.gd" common-dep) + (cgo-file "ctyfence.gd" common-dep) + (cgo-file "dptest.gd" common-dep) + (cgo-file "eitest.gd" common-dep) + (cgo-file "island1.gd" common-dep) + (cgo-file "miketest.gd" common-dep) + (cgo-file "stadocc.gd" common-dep) + (cgo-file "tatetest.gd" common-dep) + (cgo-file "teststdc.gd" common-dep) + (cgo-file "teststdd.gd" common-dep) + (cgo-file "tobytest.gd" common-dep) + (cgo-file "wasall.gd" common-dep) + ) + ;;;;;;;;;;;;;;;;;;;;; ;; ANIMATIONS ;;;;;;;;;;;;;;;;;;;;; diff --git a/scripts/gen-dgo-txt.py b/scripts/gen-dgo-txt.py new file mode 100644 index 0000000000..7273671fa0 --- /dev/null +++ b/scripts/gen-dgo-txt.py @@ -0,0 +1,107 @@ +import json +import argparse +import os, shutil, sys +from glob import glob +from pathlib import Path + +# generate dgo.txt and gd files out of ps3 test level dgo folders +# usage: python gen-dgo-txt.py + +dgo_json = {} + +def get_dgo_files(path): + return glob(path + "/**/*.go", recursive=True) + +def remove_extensions(file_list): + for file in file_list: + if (file.endswith("-bt.go")): + os.rename(file, file[:-3].replace("-bt", "-vis")) + elif file.endswith(".go"): + os.rename(file, file[:-3]) + +def move_to_root_folder(root_path, cur_path): + for filename in os.listdir(cur_path): + if os.path.isfile(os.path.join(cur_path, filename)): + shutil.move(os.path.join(cur_path, filename), os.path.join(root_path, filename)) + elif os.path.isdir(os.path.join(cur_path, filename)): + move_to_root_folder(root_path, os.path.join(cur_path, filename)) + else: + sys.exit("Should never reach here.") + # remove empty folders + if cur_path != root_path: + os.rmdir(cur_path) + +def gen_json_for_dgo(folder_name, files): + dgo_name = os.path.basename(Path(folder_name)) + ".DGO" + dgo = { + "file_name": dgo_name, + "internal_name": dgo_name, + "objects": [] + } + + for file in files: + internal_name = "" + if "." in file: + internal_name = Path(file).name.split(".")[0] + else: + internal_name = file + unique_name = internal_name + if (internal_name.endswith("-ag")): + internal_name = internal_name.replace("-ag", "") + elif (internal_name.endswith("-bt")): + internal_name = internal_name.replace("-bt", "-vis") + unique_name = unique_name.replace("-bt", "-vis") + dgo["objects"].append({ + "internal_name": internal_name, + "unique_name": unique_name + }) + return dgo + +def gen_gd_file(dgo_name, file_list): + # ("SKATEPARK.DGO" + # ("drill-turret-ext-ag.go" + # "drill-turret-int-ag.go" + # "jak-pole+0-ag.go" + # "lazerfence-ag.go" + # "lazerpit-ag.go" + # "mech-ag.go" + # "tpage-243.go" + # "tpage-354.go" + # "tpage-3279.go" + # "skatepark-bt.go" + # )) + file_names = [] + for file in file_list: + file = file.replace("-bt", "-vis") + file_names.append(os.path.basename(Path(file))) + buffer = "" + buffer += "(" + "\"" + os.path.basename(Path(dgo_name)) + ".DGO" + "\"" + "\n (\n" + for file in file_names: + buffer += " \"" + file + "\"\n" + buffer += " ))\n" + # print("dgo " + os.path.basename(Path(dgo_name)) + " gd:\n" + buffer + "\n") + with open(dgo_name + "/" + os.path.basename(Path(dgo_name)).lower() + ".gd", "a+") as f: + f.write(buffer) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("dgo_folder", type=str) + args = parser.parse_args() + + # generate gd files for all dgo folders in current directory + # folders = [name for name in os.listdir(os.getcwd()) if os.path.isdir(os.path.join(os.getcwd(), name))] + # for folder in folders: + # gen_gd_file(folder, get_dgo_files(folder)) + + files = get_dgo_files(args.dgo_folder) + gen_gd_file(args.dgo_folder, files) + dgo_json = gen_json_for_dgo(args.dgo_folder, files) + # print(dgo_json) + with open (args.dgo_folder + "/" + os.path.basename(Path(args.dgo_folder)) + ".DGO.txt", "a+") as f: + json.dump(dgo_json, f, indent=4) + move_to_root_folder(args.dgo_folder, args.dgo_folder) + file_list_after = glob(args.dgo_folder + "/**/*.go", recursive=True) + remove_extensions(file_list_after) + +if __name__ == "__main__": + main() \ No newline at end of file