jak-project/goal_src/game.gp
ManDude 62c14631af
[files] merge fake duplicate files (#1048)
* merge `orb-cache-top`

* hopefully fix random TIE extractor crash

* merge `ecovalve-ag`

* expand debug gfx buckets

* merge `barrel-ag`, `sack-ag`, `sharkey-ag`

* merge `warp-gate-switch-ag`

* merge everything else

* Update extract_tie.cpp

* add misty level

* oops

* properly add it this time
2022-01-04 20:32:34 -05:00

1645 lines
32 KiB
Gnuplot

;;-*-Lisp-*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Jak 1 Project File
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; This file sets up the OpenGOAL build system for Jak 1.
;;;;;;;;;;;;;;;;;;;;;;;
;; Build system macros
;;;;;;;;;;;;;;;;;;;;;;;
;; use defmacro to define goos macros.
(define defmacro defsmacro)
(define defun desfun)
(defun gc-file->o-file (filename)
"Get the name of the object file for the given GOAL (*.gc) source file."
(string-append "out/obj/" (stem filename) ".o")
)
(defmacro goal-src (src-file &rest deps)
"Add a GOAL source file with the given dependencies"
`(defstep :in ,(string-append "goal_src/" src-file)
;; use goal compiler
:tool 'goalc
;; will output the obj file
:out '(,(gc-file->o-file src-file))
;; dependencies are the obj files
:dep '(,@(apply gc-file->o-file deps))
)
)
(defun make-src-sequence-elt (current previous prefix)
"Helper for goal-src-sequence"
`(defstep :in ,(string-append "goal_src/" prefix current)
:tool 'goalc
:out '(,(gc-file->o-file current))
:dep '(#|"iso/KERNEL.CGO"|#
,(gc-file->o-file previous))
)
)
(defmacro goal-src-sequence (prefix &key (deps '()) &rest sequence)
"Add a sequence of GOAL files (each depending on the previous) in the given directory,
with all depending on the given deps."
(let* ((first-thing `(goal-src ,(string-append prefix (first sequence)) ,@deps))
(result (cons first-thing '()))
(iter result))
(let ((prev (first sequence))
(in-iter (rest sequence)))
(while (not (null? in-iter))
;; (fmt #t "{} dep on {}\n" (first in-iter) prev)
(let ((next (make-src-sequence-elt (first in-iter) prev prefix)))
(set-cdr! iter (cons next '()))
(set! iter (cdr iter))
)
(set! prev (car in-iter))
(set! in-iter (cdr in-iter))
)
)
`(begin ,@result)
)
)
(defmacro cgo (output-name desc-file-name)
"Add a CGO with the given output name (in out/iso) and input name (in goal_src/dgos)"
`(defstep :in ,(string-append "goal_src/dgos/" desc-file-name)
:tool 'dgo
:out '(,(string-append "out/iso/" output-name))
)
)
(defun tpage-name (id)
"Get the name of the tpage obj file with the given id"
(fmt #f "tpage-{}.go" id)
)
(defmacro copy-texture (tpage-id)
"Copy a texture from the game, using the given tpage ID"
(let* ((folder (get-environment-variable "OPENGOAL_DECOMP_DIR" :default ""))
(path (string-append "decompiler_out/" folder "raw_obj/" (tpage-name tpage-id))))
`(defstep :in ,path
:tool 'copy
:out '(,(string-append "out/obj/" (tpage-name tpage-id))))))
(defmacro copy-textures (&rest ids)
`(begin
,@(apply (lambda (x) `(copy-texture ,x)) ids)
)
)
(defmacro copy-go (name)
(let* ((folder (get-environment-variable "OPENGOAL_DECOMP_DIR" :default ""))
(path (string-append "decompiler_out/" folder "raw_obj/" name ".go")))
`(defstep :in ,path
:tool 'copy
:out '(,(string-append "out/obj/" name ".go")))))
(defmacro copy-gos (&rest gos)
`(begin
,@(apply (lambda (x) `(copy-go ,x)) gos)
)
)
(defmacro copy-strs (&rest strs)
`(begin ,@(apply (lambda (x) `(copy-str ,x)) strs)))
(defmacro copy-str (name)
(let* ((folder (get-environment-variable "OPENGOAL_DECOMP_DIR" :default ""))
(path (string-append "iso_data/" folder "STR/" name ".STR")))
`(defstep :in ,path
:tool 'copy
:out '(,(string-append "out/iso/" name ".STR")))))
(defmacro copy-vis-files (&rest files)
`(begin ,@(apply (lambda (x) `(copy-vis-file ,x)) files)))
(defmacro copy-vis-file (name)
(let* ((folder (get-environment-variable "OPENGOAL_DECOMP_DIR" :default ""))
(path (string-append "iso_data/" folder "VIS/" name ".VIS")))
`(defstep :in ,path
:tool 'copy
:out '(,(string-append "out/iso/" name ".VIS")))))
(defmacro group (name &rest stuff)
`(defstep :in ""
:tool 'group
:out '(,(string-append "GROUP:" name))
:dep '(,@stuff))
)
;;;;;;;;;;;;;;;;;;;;;;
;; CGO's
;;;;;;;;;;;;;;;;;;;;;;
(cgo "KERNEL.CGO" "kernel.gd")
(cgo "ENGINE.CGO" "engine.gd")
(cgo "GAME.CGO" "game.gd")
;;;;;;;;;;;;;;;;;
;; GOAL Kernel
;;;;;;;;;;;;;;;;;
;; These are set up with proper dependencies
(goal-src "kernel/gcommon.gc")
(goal-src "kernel/gstring-h.gc")
(goal-src "kernel/gkernel-h.gc"
"gcommon"
"gstring-h")
(goal-src "kernel/gkernel.gc"
"gkernel-h")
(goal-src "kernel/pskernel.gc"
"gcommon"
"gkernel-h")
(goal-src "kernel/gstring.gc"
"gcommon"
"gstring-h")
(goal-src "kernel/dgo-h.gc")
(goal-src "kernel/gstate.gc"
"gkernel")
;;;;;;;;;;;;;;;;;;;;;;;;
;; Weird special things
;;;;;;;;;;;;;;;;;;;;;;;;
;; The tpage directory
(defstep :in "assets/tpage-dir.txt"
:tool 'tpage-dir
:out '("out/obj/dir-tpages.go")
)
;; the count file.
(defstep :in "assets/game_count.txt"
:tool 'game-cnt
:out '("out/obj/game-cnt.go")
)
;;;;;;;;;;;;;;;;;;;;;
;; Textures (Common)
;;;;;;;;;;;;;;;;;;;;;
(copy-textures 463 2 880 256 1278 1032 62 1532)
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Streaming anim (common)
;;;;;;;;;;;;;;;;;;;;;;;;;;;
(copy-strs
"FUCVICTO"
"FUCV2"
"FUCV3"
"FUCV4"
"FUCV5"
"FUCV6"
"FUCV7"
"FUCV8"
)
;;;;;;;;;;;;;;;;;;;;;
;; Art (Common)
;;;;;;;;;;;;;;;;;;;;;
(copy-gos
"fuel-cell-ag"
"money-ag"
"buzzer-ag"
"ecovalve-ag"
"crate-ag"
"speaker-ag"
"fuelcell-naked-ag"
"eichar-ag"
"sidekick-ag"
"deathcam-ag"
)
;;;;;;;;;;;;;;;;;;;;;
;; Text
;;;;;;;;;;;;;;;;;;;;;
(defstep :in "assets/game_text.txt"
:tool 'text
:out '("out/iso/0COMMON.TXT"
"out/iso/1COMMON.TXT"
"out/iso/2COMMON.TXT"
"out/iso/3COMMON.TXT"
"out/iso/4COMMON.TXT"
"out/iso/5COMMON.TXT"
"out/iso/6COMMON.TXT")
)
;;;;;;;;;;;;;;;;;;;;;
;; ISO Group
;;;;;;;;;;;;;;;;;;;;;
;; the iso group is a group of files required to boot.
(group "iso"
"out/iso/0COMMON.TXT"
"out/iso/KERNEL.CGO"
"out/iso/GAME.CGO"
;; level dgo
"out/iso/VI1.DGO"
"out/iso/VI2.DGO"
"out/iso/VI3.DGO"
"out/iso/TRA.DGO"
"out/iso/INT.DGO"
"out/iso/MIS.DGO"
"out/iso/FIC.DGO"
"out/iso/ROL.DGO"
"out/iso/SUN.DGO"
"out/iso/SUB.DGO"
"out/iso/SWA.DGO"
"out/iso/OGR.DGO"
"out/iso/JUN.DGO"
"out/iso/JUB.DGO"
"out/iso/MAI.DGO"
"out/iso/SNO.DGO"
"out/iso/BEA.DGO"
"out/iso/LAV.DGO"
"out/iso/CIT.DGO"
"out/iso/FIN.DGO"
;; level vis
"out/iso/VI1.VIS"
"out/iso/VI2.VIS"
"out/iso/VI3.VIS"
"out/iso/TRA.VIS"
"out/iso/INT.VIS"
"out/iso/MIS.VIS"
"out/iso/FIC.VIS"
"out/iso/ROL.VIS"
"out/iso/SUN.VIS"
"out/iso/SUB.VIS"
"out/iso/SWA.VIS"
"out/iso/OGR.VIS"
"out/iso/JUN.VIS"
"out/iso/JUB.VIS"
"out/iso/MAI.VIS"
"out/iso/SNO.VIS"
"out/iso/BEA.VIS"
"out/iso/LAV.VIS"
"out/iso/CIT.VIS"
"out/iso/FIN.VIS"
;; streamed anims
"out/iso/FUCVICTO.STR"
"out/iso/FUCV2.STR"
"out/iso/FUCV3.STR"
"out/iso/FUCV4.STR"
"out/iso/FUCV5.STR"
"out/iso/FUCV6.STR"
"out/iso/FUCV7.STR"
"out/iso/FUCV8.STR"
)
;;;;;;;;;;;;;;;;;;;;;
;; engine Group
;;;;;;;;;;;;;;;;;;;;;
;; the engine group is a group of files required to boot the game engine with no levels
(group "engine"
"out/iso/0COMMON.TXT"
"out/iso/KERNEL.CGO"
"out/iso/GAME.CGO"
)
;;;;;;;;;;;;;;;;;;;;;
;; hub1 Group
;;;;;;;;;;;;;;;;;;;;;
;; the hub1 group is a group of files required to play the first hub (village1, jungle, beach, misty, training, firecanyon)
(group "hub1"
"out/iso/0COMMON.TXT"
"out/iso/KERNEL.CGO"
"out/iso/GAME.CGO"
"out/iso/VI1.DGO"
"out/iso/TRA.DGO"
"out/iso/FIC.DGO"
"out/iso/JUN.DGO"
"out/iso/BEA.DGO"
)
;;;;;;;;;;;;;;;;;;;;;;;;
;; Common Level Objects
;;;;;;;;;;;;;;;;;;;;;;;;
;; as we find objects that exist in multiple levels, put them here
(copy-gos
"sharkey-ag"
"orb-cache-top-ag"
"warp-gate-switch-ag"
"warpgate-ag"
"babak-ag"
"oracle-ag"
"village-cam-ag"
"eichar-racer+0-ag"
"ef-plane-ag"
"racer-ag"
"eichar-flut+0-ag"
"flut-saddle-ag"
)
;;;;;;;;;;;;;;;;;;;;;
;; Common Level Code
;;;;;;;;;;;;;;;;;;;;;
(goal-src-sequence
"levels/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o")
"village_common/villagep-obs.gc"
"village_common/oracle.gc"
"common/blocking-plane.gc"
"common/launcherdoor.gc"
"common/snow-bunny.gc"
"common/battlecontroller.gc"
"racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL.gc"
"racer_common/racer-part.gc"
"racer_common/racer.gc"
"racer_common/target-racer-FIC-LAV-MIS-OGR-ROL.gc"
"racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc"
"racer_common/collide-reaction-racer.gc"
"flut_common/flut-part.gc"
"flut_common/flutflut.gc"
"flut_common/target-flut.gc"
)
;;;;;;;;;;;;;;;;;;;;;
;; Village 1
;;;;;;;;;;;;;;;;;;;;;
;; the definition for the DGO file.
(cgo "VI1.DGO"
"vi1.gd"
)
;; the VIS file
(copy-vis-files "VI1")
;; the code
(goal-src-sequence
"levels/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o")
"village1/farmer.gc"
"village1/explorer.gc"
"village1/assistant.gc"
"village1/sage.gc"
"village1/yakow.gc"
"village1/village-obs-VI1.gc"
"village1/fishermans-boat.gc"
"village1/village1-part.gc"
"village1/village1-part2.gc"
"village1/sequence-a-village1.gc"
)
;; the textures
(copy-textures 398 400 399 401 1470)
;; the art
(copy-gos
"assistant-ag"
"evilplant-ag"
"explorer-ag"
"farmer-ag"
"fishermans-boat-ag"
"hutlamp-ag"
"mayorgears-ag"
"medres-beach-ag"
"medres-beach1-ag"
"medres-beach2-ag"
"medres-beach3-ag"
"medres-jungle-ag"
"medres-jungle1-ag"
"medres-jungle2-ag"
"medres-misty-ag"
"medres-training-ag"
"medres-village11-ag"
"medres-village12-ag"
"medres-village13-ag"
"reflector-middle-ag"
"revcycle-ag"
"revcycleprop-ag"
"ropebridge-32-ag"
"sage-ag"
"sagesail-ag"
"villa-starfish-ag"
"village1cam-ag"
"water-anim-village1-ag"
"windmill-sail-ag"
"windspinner-ag"
"yakow-ag"
"village1-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Jungle
;;;;;;;;;;;;;;;;;;;;;
(cgo "JUN.DGO"
"jun.gd")
(copy-vis-files "JUN")
(goal-src-sequence
"levels/jungle/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o")
"jungle-elevator.gc"
"bouncer.gc"
"hopper.gc"
"junglesnake.gc"
"darkvine.gc"
"jungle-obs.gc"
"jungle-mirrors.gc"
"junglefish.gc"
"fisher-JUN.gc"
"jungle-part.gc"
)
(copy-textures 385 531 386 388 765)
(copy-gos
"eichar-fish+0-ag"
"accordian-ag"
"bounceytarp-ag"
"catch-fisha-ag"
"catch-fishb-ag"
"catch-fishc-ag"
"darkvine-ag"
"fish-net-ag"
"fisher-ag"
"hopper-ag"
"junglecam-ag"
"junglefish-ag"
"junglesnake-ag"
"launcherdoor-ag"
"logtrap-ag"
"lurkerm-piston-ag"
"lurkerm-tall-sail-ag"
"maindoor-ag"
"medres-firecanyon-ag"
"periscope-ag"
"plat-button-ag"
"plat-eco-ag"
"precurbridge-ag"
"reflector-mirror-ag"
"ropebridge-52-ag"
"ropebridge-70-ag"
"sidedoor-ag"
"towertop-ag"
"water-anim-jungle-ag"
"jungle-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Jungle temple
;;;;;;;;;;;;;;;;;;;;;
(cgo "JUB.DGO" "jub.gd")
(copy-vis-files "JUB")
(goal-src-sequence
"levels/jungleb/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o")
"jungleb-obs.gc"
"plat-flip.gc"
"aphid.gc"
"plant-boss.gc"
)
(copy-textures 485 510 507 966)
(copy-gos
"plant-boss-main+0-ag"
"aphid-lurker-ag"
"eggtop-ag"
"jng-iris-door-ag"
"plant-boss-ag"
"plat-flip-ag"
"plat-jungleb-ag"
"jungleb-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; intro only
;;;;;;;;;;;;;;;;;;;;;
(cgo "INT.DGO" "int.gd")
(copy-vis-files "INT")
(goal-src-sequence
"levels/intro/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o")
"evilbro.gc"
)
(copy-textures 1455 1457 1456 1454)
(copy-gos
"evilbro-ag"
"evilsis-ag"
"intro-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; misty island
;;;;;;;;;;;;;;;;;;;;;
(cgo "MIS.DGO" "mis.gd")
(copy-vis-files "MIS")
(goal-src-sequence
"levels/misty/"
:deps ("out/obj/default-menu.o")
"mistycannon.gc"
"babak-with-cannon.gc"
"misty-obs.gc"
"misty-warehouse.gc"
"misty-conveyor.gc"
"mud.gc"
"muse.gc"
"bonelurker.gc"
"quicksandlurker.gc"
"misty-teetertotter.gc"
"balloonlurker.gc"
"misty-part.gc"
"sidekick-human.gc"
)
(copy-textures 516 521 518 520)
(copy-gos
"mistycannon-ag"
"sack-ag"
"balloonlurker-ag"
"boatpaddle-ag"
"bonelurker-ag"
"breakaway-left-ag"
"breakaway-mid-ag"
"breakaway-right-ag"
"darkecocan-ag"
"keg-ag"
"keg-conveyor-ag"
"keg-conveyor-paddle-ag"
"mis-bone-bridge-ag"
"mis-bone-platform-ag"
"mistycam-ag"
"muse-ag"
"quicksandlurker-ag"
"ropebridge-36-ag"
"rounddoor-ag"
"sidekick-human-ag"
"silostep-ag"
"teetertotter-ag"
"water-anim-misty-ag"
"wheel-ag"
"windturbine-ag"
"misty-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Beach
;;;;;;;;;;;;;;;;;;;;;
(cgo "BEA.DGO"
"bea.gd"
)
(copy-vis-files "BEA")
(goal-src-sequence
"levels/beach/"
:deps ("out/obj/default-menu.o")
"air-h.gc"
"air.gc"
"wobbler.gc"
"twister.gc"
"beach-obs.gc"
"bird-lady.gc"
"bird-lady-beach.gc"
"mayor.gc"
"sculptor.gc"
"pelican.gc"
"lurkerworm.gc"
"lurkercrab.gc"
"lurkerpuppy.gc"
"beach-rocks.gc"
"seagull.gc"
"beach-part.gc"
)
(copy-textures 212 214 213 215)
(copy-gos
"barrel-ag"
"beachcam-ag"
"bird-lady-ag"
"bird-lady-beach-ag"
"bladeassm-ag"
"ecoventrock-ag"
"flutflut-ag"
"flutflutegg-ag"
"grottopole-ag"
"harvester-ag"
"kickrock-ag"
"lrocklrg-ag"
"lurkercrab-ag"
"lurkerpuppy-ag"
"lurkerworm-ag"
"mayor-ag"
"pelican-ag"
"sculptor-ag"
"sculptor-muse-ag"
"seagull-ag"
"windmill-one-ag"
"beach-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Fire Canyon
;;;;;;;;;;;;;;;;;;;;;
(cgo "FIC.DGO"
"fic.gd"
)
(copy-vis-files "FIC")
(copy-textures 1119) ;; might be common/zoomer hud?? also in misty, lavatube, ogre and racerpkg
(goal-src-sequence
"levels/firecanyon/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o")
"firecanyon-part.gc"
"assistant-firecanyon.gc"
"firecanyon-obs.gc"
)
(copy-textures 815 822 854 1123)
(copy-gos
"assistant-firecanyon-ag"
"balloon-ag"
"crate-darkeco-cluster-ag"
"spike-ag"
"firecanyon-vis")
;;;;;;;;;;;;;;;;;;;;;
;; Training
;;;;;;;;;;;;;;;;;;;;;
;; the definition of the DGO package for the level
(cgo "TRA.DGO"
"tra.gd")
(copy-vis-files "TRA")
;; The code
(goal-src-sequence
"levels/training/"
:deps ("out/obj/default-menu.o") ;; makes us depend on the whole engine
"training-obs.gc"
"training-part.gc"
)
;; the textures
(copy-textures 1309 1311 1310 1308 775)
(copy-gos
"scarecrow-a-ag"
"scarecrow-b-ag"
"trainingcam-ag"
"water-anim-training-ag"
"training-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Village 2
;;;;;;;;;;;;;;;;;;;;;
(cgo "VI2.DGO" "vi2.gd")
(copy-vis-files "VI2")
(goal-src-sequence
"levels/village2/"
:deps ("out/obj/default-menu.o")
"village2-part.gc"
"village2-obs.gc"
"village2-part2.gc"
"gambler.gc"
"warrior.gc"
"geologist.gc"
"swamp-blimp.gc"
"sage-bluehut.gc"
"flutflut-bluehut.gc"
"assistant-village2.gc"
"sunken-elevator.gc"
)
(copy-textures 919 922 920 921 1476)
(copy-gos
"allpontoons-ag"
"assistant-village2-ag"
"ceilingflag-ag"
"exit-chamber-dummy-ag"
"fireboulder-ag"
"flutflut-bluehut-ag"
"gambler-ag"
"geologist-ag"
"jaws-ag"
"medres-rolling-ag"
"medres-rolling1-ag"
"medres-village2-ag"
"ogreboss-village2-ag"
"pontoonfive-ag"
"pontoonten-ag"
"precursor-arm-ag"
"sage-bluehut-ag"
"sunken-elevator-ag"
"swamp-blimp-ag"
"swamp-rope-ag"
"swamp-tetherrock-ag"
"swamp-tetherrock-explode-ag"
"village2cam-ag"
"warrior-ag"
"water-anim-village2-ag"
"village2-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; rolling hills
;;;;;;;;;;;;;;;;;;;;;
(cgo "ROL.DGO" "rol.gd")
(copy-vis-files "ROL")
(goal-src-sequence
"levels/rolling/"
:deps ("out/obj/default-menu.o")
"rolling-obs.gc"
"rolling-lightning-mole.gc"
"rolling-robber.gc"
"rolling-race-ring.gc"
)
(copy-textures 923 926 924 925 1353)
(copy-gos
"dark-plant-ag"
"happy-plant-ag"
"lightning-mole-ag"
"pusher-ag"
"race-ring-ag"
"robber-ag"
"rolling-start-ag"
"rollingcam-ag"
"water-anim-rolling-ag"
"rolling-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; LPC
;;;;;;;;;;;;;;;;;;;;;
(cgo "SUN.DGO" "sun.gd")
(copy-vis-files "SUN")
(goal-src-sequence
"levels/sunken/"
:deps ("out/obj/default-menu.o")
"sunken-part.gc"
"sunken-part2.gc"
"sunken-part3.gc"
"sunken-part4.gc"
"sunken-part5.gc"
"target-tube.gc"
"sunken-obs.gc"
"shover.gc"
"square-platform.gc"
"sun-iris-door.gc"
"orbit-plat.gc"
"wedge-plats.gc"
"wall-plat.gc"
"qbert-plat.gc"
"steam-cap.gc"
"sun-exit-chamber.gc"
"floating-launcher.gc"
"sunken-water.gc"
"whirlpool.gc"
"sunken-pipegame.gc"
"bully.gc"
"double-lurker.gc"
"helix-water.gc"
"puffer.gc"
"sunken-fish.gc"
)
(copy-textures 661 663 714 662 766)
(copy-gos
"eichar-tube+0-ag"
"bully-ag"
"double-lurker-ag"
"double-lurker-top-ag"
"exit-chamber-ag"
"generic-button-ag"
"orbit-plat-ag"
"orbit-plat-bottom-ag"
"plat-sunken-ag"
"puffer-ag"
"qbert-plat-ag"
"qbert-plat-on-ag"
"seaweed-ag"
"shover-ag"
"side-to-side-plat-ag"
"square-platform-ag"
"steam-cap-ag"
"sun-iris-door-ag"
"sunkencam-ag"
"sunkenfisha-ag"
"wall-plat-ag"
"water-anim-sunken-ag"
"water-anim-sunken-dark-eco-ag"
"wedge-plat-ag"
"wedge-plat-outer-ag"
"whirlpool-ag"
"sunken-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; sunken city b
;;;;;;;;;;;;;;;;;;;;;
(cgo "SUB.DGO" "sub.gd")
(copy-vis-files "SUB")
(copy-textures 163 164 166 162 764)
(copy-gos
"blue-eco-charger-ag"
"blue-eco-charger-orb-ag"
"floating-launcher-ag"
"helix-button-ag"
"helix-slide-door-ag"
"sunkenb-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; swamp
;;;;;;;;;;;;;;;;;;;;;
(cgo "SWA.DGO" "swa.gd")
(copy-vis-files "SWA")
(goal-src-sequence
"levels/swamp/"
:deps ("out/obj/default-menu.o")
"swamp-obs.gc"
"swamp-bat.gc"
"swamp-rat.gc"
"swamp-rat-nest.gc"
"kermit.gc"
"swamp-part.gc"
"billy.gc"
)
(copy-textures 358 659 629 630)
(copy-gos
"eichar-pole+0-ag"
"balance-plat-ag"
"billy-ag"
"billy-sidekick-ag"
"farthy-snack-ag"
"kermit-ag"
"swamp-bat-ag"
"swamp-rat-ag"
"swamp-rat-nest-ag"
"swamp-rock-ag"
"swamp-spike-ag"
"swampcam-ag"
"tar-plat-ag"
"swamp-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; ogre boss
;;;;;;;;;;;;;;;;;;;;;
(cgo "OGR.DGO" "ogr.gd")
(copy-vis-files "OGR")
(goal-src-sequence
"levels/ogre/"
:deps ("out/obj/default-menu.o")
"ogre-part.gc"
"ogreboss.gc"
"ogre-obs.gc"
"flying-lurker.gc"
)
(copy-textures 875 967 884 1117)
(copy-gos
"flying-lurker-ag"
"medres-snow-ag"
"ogre-bridge-ag"
"ogre-bridgeend-ag"
"ogre-isle-ag"
"ogre-step-ag"
"ogreboss-ag"
"ogrecam-ag"
"plunger-lurker-ag"
"shortcut-boulder-ag"
"tntbarrel-ag"
"water-anim-ogre-ag"
"ogre-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Village 3
;;;;;;;;;;;;;;;;;;;;;
;; the definition for the DGO file.
(cgo "VI3.DGO" "vi3.gd")
(copy-vis-files "VI3")
;; the code
(goal-src-sequence
"levels/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o")
"village3/village3-part.gc"
"village3/village3-obs.gc"
"village3/minecart.gc"
"village3/miners.gc"
"village3/assistant-village3.gc"
"village3/sage-village3.gc"
)
(copy-textures 1208 1210 1209 1194)
(copy-gos
"assistant-village3-ag"
"cavegem-ag"
"evilbro-village3-ag"
"evilsis-village3-ag"
"gondola-ag"
"gondolacables-ag"
"lavaspoutdrip-ag"
"medres-finalboss-ag"
"medres-ogre-ag"
"medres-ogre2-ag"
"medres-ogre3-ag"
"minecartsteel-ag"
"minershort-ag"
"minertall-ag"
"pistons-ag"
"sage-village3-ag"
"vil3-bridge-36-ag"
"water-anim-village3-ag"
"village3-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Spider Cave
;;;;;;;;;;;;;;;;;;;;;
(cgo "MAI.DGO" "mai.gd")
(copy-vis-files "MAI")
(goal-src-sequence
"levels/"
:deps ;; no idea what these depend on, make it depend on the whole engine
("out/obj/default-menu.o"
)
"maincave/cavecrystal-light.gc"
"darkcave/darkcave-obs.gc"
"maincave/maincave-obs.gc"
"maincave/maincave-part.gc"
"maincave/spiderwebs.gc"
"maincave/dark-crystal.gc"
"maincave/baby-spider.gc"
"maincave/mother-spider-h.gc"
"maincave/mother-spider-egg.gc"
"maincave/mother-spider-proj.gc"
"maincave/mother-spider.gc"
"maincave/gnawer.gc"
"maincave/driller-lurker.gc"
)
(copy-textures 1313 1315 1314 1312 767)
(copy-gos
"baby-spider-ag"
"cavetrapdoor-ag"
"dark-crystal-ag"
"driller-lurker-ag"
"gnawer-ag"
"launcherdoor-maincave-ag"
"maincavecam-ag"
"mother-spider-ag"
"plat-ag"
"spider-egg-ag"
"spiderwebs-ag"
"water-anim-maincave-ag"
"water-anim-maincave-water-ag"
"maincave-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; snow mountain
;;;;;;;;;;;;;;;;;;;;;
(cgo "SNO.DGO" "sno.gd")
(copy-vis-files "SNO")
(goal-src-sequence
"levels/snow/"
:deps ("out/obj/default-menu.o")
"target-snowball.gc"
"target-ice.gc"
"ice-cube.gc"
"snow-ball.gc"
"snow-obs.gc"
"snow-flutflut-obs.gc"
"snow-bumper.gc"
"snow-ram-h.gc"
"snow-ram-boss.gc"
"snow-ram.gc"
"snow-part.gc"
"yeti.gc"
)
(copy-textures 710 842 711 712)
(copy-gos
"eichar-ice+0-ag"
"flutflut-plat-large-ag"
"flutflut-plat-med-ag"
"flutflut-plat-small-ag"
"ice-cube-ag"
"ice-cube-break-ag"
"ram-ag"
"ram-boss-ag"
"snow-ball-ag"
"snow-bridge-36-ag"
"snow-bumper-ag"
"snow-bunny-ag"
"snow-button-ag"
"snow-eggtop-ag"
"snow-fort-gate-ag"
"snow-gears-ag"
"snow-log-ag"
"snow-spatula-ag"
"snow-switch-ag"
"snowcam-ag"
"snowpusher-ag"
"yeti-ag"
"snow-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; lavatube
;;;;;;;;;;;;;;;;;;;;;
(cgo "LAV.DGO" "lav.gd")
(copy-vis-files "LAV")
(goal-src-sequence
"levels/lavatube/"
:deps ("out/obj/default-menu.o")
"lavatube-obs.gc"
"lavatube-energy.gc"
"lavatube-part.gc"
"assistant-lavatube.gc"
)
(copy-textures 1338 1340 1339 1337)
(copy-gos
"assistant-lavatube-start-ag"
"chainmine-ag"
"darkecobarrel-ag"
"energyarm-ag"
"energyball-ag"
"energybase-ag"
"energydoor-ag"
"energyhub-ag"
"lavaballoon-ag"
"lavabase-ag"
"lavafall-ag"
"lavafallsewera-ag"
"lavafallsewerb-ag"
"lavashortcut-ag"
"lavayellowtarp-ag"
"water-anim-lavatube-ag"
"lavatube-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; citadel
;;;;;;;;;;;;;;;;;;;;;
(cgo "CIT.DGO" "cit.gd")
(copy-vis-files "CIT")
(goal-src-sequence
"levels/citadel/"
:deps ("out/obj/default-menu.o")
"citadel-part.gc"
"citadel-obs.gc"
"citb-plat.gc"
"citadel-sages.gc"
"citb-bunny.gc"
"citb-drop-plat-CIT.gc"
"assistant-citadel.gc"
)
(copy-textures 1415 1417 1416 1414)
(copy-gos
"assistant-lavatube-end-ag"
"bluesage-ag"
"citadelcam-ag"
"citb-arm-ag"
"citb-arm-shoulder-ag"
"citb-bunny-ag"
"citb-button-ag"
"citb-chain-plat-ag"
"citb-chains-ag"
"citb-coil-ag"
"citb-disc-ag"
"citb-donut-ag"
"citb-drop-plat-ag"
"citb-exit-plat-ag"
"citb-firehose-ag"
"citb-generator-ag"
"citb-hose-ag"
"citb-iris-door-ag"
"citb-launcher-ag"
"citb-robotboss-ag"
"citb-rotatebox-ag"
"citb-sagecage-ag"
"citb-stopbox-ag"
"evilbro-citadel-ag"
"evilsis-citadel-ag"
"green-sagecage-ag"
"plat-citb-ag"
"plat-eco-citb-ag"
"redsage-ag"
"yellowsage-ag"
"citadel-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Final Boss
;;;;;;;;;;;;;;;;;;;;;
(cgo "FIN.DGO" "fin.gd")
(copy-vis-files "FIN")
(goal-src-sequence
"levels/finalboss/"
:deps ("out/obj/default-menu.o")
"robotboss-h.gc"
"robotboss-part.gc"
"sage-finalboss-part.gc"
"light-eco.gc"
"robotboss-weapon.gc"
"robotboss-misc.gc"
"green-eco-lurker.gc"
"robotboss.gc"
"final-door.gc"
"sage-finalboss-FIN.gc"
)
(copy-textures 1419 1420 634 1418 545)
(copy-gos
"darkecobomb-ag"
"ecoclaw-ag"
"finalbosscam-ag"
"green-eco-lurker-ag"
"greenshot-ag"
"jak-white-ag"
"light-eco-ag"
"plat-eco-finalboss-ag"
"power-left-ag"
"power-right-ag"
"powercellalt-ag"
"redring-ag"
"robotboss-ag"
"robotboss-blueeco-ag"
"robotboss-cinematic-ag"
"robotboss-redeco-ag"
"robotboss-yelloweco-ag"
"silodoor-ag"
"water-anim-finalboss-ag"
"finalboss-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Game Engine Code
;;;;;;;;;;;;;;;;;;;;;
;; We don't know the actual dependencies, but the build
;; order is a possibly ordering, and the goal-src-sequence
;; will force these to always build in this order.
(goal-src-sequence
;; prefix
"engine/"
:deps
("out/obj/gcommon.o"
"out/obj/gstate.o"
"out/obj/gstring.o"
"out/obj/gkernel.o"
)
;; sources
"util/types-h.gc"
"ps2/vu1-macros.gc"
"math/math.gc"
"math/vector-h.gc"
"physics/gravity-h.gc"
"geometry/bounding-box-h.gc"
"math/matrix-h.gc"
"math/quaternion-h.gc"
"math/euler-h.gc"
"math/transform-h.gc"
"geometry/geometry-h.gc"
"math/trigonometry-h.gc"
"math/transformq-h.gc"
"geometry/bounding-box.gc"
"math/matrix.gc"
"math/transform.gc"
"math/quaternion.gc"
"math/euler.gc"
"geometry/geometry.gc"
"math/trigonometry.gc"
"sound/gsound-h.gc"
"ps2/timer-h.gc"
"ps2/timer.gc"
"ps2/vif-h.gc"
"dma/dma-h.gc"
"gfx/hw/video-h.gc"
"gfx/hw/vu1-user-h.gc"
"dma/dma.gc"
"dma/dma-buffer.gc"
"dma/dma-bucket.gc"
"dma/dma-disasm.gc"
"pc/pckernel-h.gc" ;; added
"ps2/pad.gc"
"gfx/hw/gs.gc"
"gfx/hw/display-h.gc"
"math/vector.gc"
"load/file-io.gc"
"load/loader-h.gc"
"gfx/texture-h.gc"
"level/level-h.gc"
"camera/math-camera-h.gc"
"camera/math-camera.gc"
"gfx/font-h.gc"
"gfx/decomp-h.gc"
"gfx/hw/display.gc"
"engine/connect.gc"
"ui/text-h.gc"
"game/settings-h.gc"
"gfx/capture.gc"
"debug/memory-usage-h.gc"
"gfx/texture.gc"
"game/main-h.gc"
"anim/mspace-h.gc"
"draw/drawable-h.gc"
"draw/drawable-group-h.gc"
"draw/drawable-inline-array-h.gc"
"draw/draw-node-h.gc"
"draw/drawable-tree-h.gc"
"draw/drawable-actor-h.gc"
"draw/drawable-ambient-h.gc"
"game/task/game-task-h.gc"
"game/task/hint-control-h.gc"
"gfx/generic/generic-h.gc"
"gfx/lights-h.gc"
"gfx/ocean/ocean-h.gc"
"gfx/ocean/ocean-trans-tables.gc"
"gfx/ocean/ocean-tables.gc"
"gfx/ocean/ocean-frames.gc"
"gfx/sky/sky-h.gc"
"gfx/mood-h.gc"
"gfx/time-of-day-h.gc"
"data/art-h.gc"
"gfx/generic/generic-vu1-h.gc"
"gfx/merc/merc-h.gc"
"gfx/merc/generic-merc-h.gc"
"gfx/tie/generic-tie-h.gc"
"gfx/generic/generic-work-h.gc"
"gfx/shadow/shadow-cpu-h.gc"
"gfx/shadow/shadow-vu1-h.gc"
"ps2/memcard-h.gc"
"game/game-info-h.gc"
"gfx/wind-h.gc"
"gfx/tie/prototype-h.gc"
"anim/joint-h.gc"
"anim/bones-h.gc"
"engine/engines.gc"
"data/res-h.gc"
"data/res.gc"
"gfx/lights.gc"
"physics/dynamics-h.gc"
"target/surface-h.gc"
"target/pat-h.gc"
"game/fact-h.gc"
"anim/aligner-h.gc"
"game/game-h.gc"
"game/generic-obs-h.gc"
"camera/pov-camera-h.gc"
"util/sync-info-h.gc"
"util/smush-control-h.gc"
"physics/trajectory-h.gc"
"debug/debug-h.gc"
"target/joint-mod-h.gc"
"collide/collide-func-h.gc"
"collide/collide-mesh-h.gc"
"collide/collide-shape-h.gc"
"collide/collide-target-h.gc"
"collide/collide-touch-h.gc"
"collide/collide-edge-grab-h.gc"
"draw/process-drawable-h.gc"
"game/effect-control-h.gc"
"collide/collide-frag-h.gc"
"game/projectiles-h.gc"
"target/target-h.gc"
"gfx/depth-cue-h.gc"
"debug/stats-h.gc"
"gfx/vis/bsp-h.gc"
"collide/collide-cache-h.gc"
"collide/collide-h.gc"
"gfx/shrub/shrubbery-h.gc"
"gfx/tie/tie-h.gc"
"gfx/tfrag/tfrag-h.gc"
"gfx/background-h.gc"
"gfx/tfrag/subdivide-h.gc"
"entity/entity-h.gc"
"gfx/sprite/sprite-h.gc"
"gfx/shadow/shadow-h.gc"
"gfx/eye-h.gc"
"sparticle/sparticle-launcher-h.gc"
"sparticle/sparticle-h.gc"
"entity/actor-link-h.gc"
"camera/camera-h.gc"
"camera/cam-debug-h.gc"
"camera/cam-interface-h.gc"
"camera/cam-update-h.gc"
"debug/assert-h.gc"
"ui/hud-h.gc"
"ui/progress-h.gc"
"ps2/rpc-h.gc"
"nav/path-h.gc"
"nav/navigate-h.gc"
"load/load-dgo.gc"
"load/ramdisk.gc"
"sound/gsound.gc"
"math/transformq.gc"
"collide/collide-func.gc"
"anim/joint.gc"
"geometry/cylinder.gc"
"gfx/wind.gc"
"gfx/vis/bsp.gc"
"gfx/tfrag/subdivide.gc"
"gfx/sprite/sprite.gc"
"gfx/sprite/sprite-distort.gc"
"debug/debug-sphere.gc"
"debug/debug.gc"
"gfx/merc/merc-vu1.gc"
"gfx/merc/merc-blend-shape.gc"
"gfx/merc/merc.gc"
"gfx/ripple.gc"
"anim/bones.gc"
"gfx/generic/generic-vu0.gc"
"gfx/generic/generic.gc"
"gfx/generic/generic-vu1.gc"
"gfx/generic/generic-effect.gc"
"gfx/generic/generic-merc.gc"
"gfx/generic/generic-tie.gc"
"gfx/shadow/shadow-cpu.gc"
"gfx/shadow/shadow-vu1.gc"
"gfx/depth-cue.gc"
"gfx/font.gc"
"load/decomp.gc"
"gfx/background.gc"
"draw/draw-node.gc"
"gfx/shrub/shrubbery.gc"
"gfx/shrub/shrub-work.gc"
"gfx/tfrag/tfrag-near.gc"
"gfx/tfrag/tfrag.gc"
"gfx/tfrag/tfrag-methods.gc"
"gfx/tfrag/tfrag-work.gc"
"gfx/tie/tie.gc"
"gfx/tie/tie-near.gc"
"gfx/tie/tie-work.gc"
"gfx/tie/tie-methods.gc"
"util/sync-info.gc"
"physics/trajectory.gc"
"sparticle/sparticle-launcher.gc"
"sparticle/sparticle.gc"
"entity/entity-table.gc"
"load/loader.gc"
"game/task/task-control-h.gc"
"game/game-info.gc"
"game/game-save.gc"
"game/settings.gc"
"ambient/mood-tables.gc"
"ambient/mood.gc"
"ambient/weather-part.gc"
"gfx/time-of-day.gc"
"gfx/sky/sky-utils.gc"
"gfx/sky/sky.gc"
"gfx/sky/sky-tng.gc"
"level/load-boundary-h.gc"
"level/load-boundary.gc"
"level/load-boundary-data.gc"
"level/level-info.gc"
"level/level.gc"
"ui/text.gc"
"collide/collide-probe.gc"
"collide/collide-frag.gc"
"collide/collide-mesh.gc"
"collide/collide-touch.gc"
"collide/collide-edge-grab.gc"
"collide/collide-shape.gc"
"collide/collide-shape-rider.gc"
"collide/collide.gc"
"collide/collide-planes.gc"
"gfx/merc/merc-death.gc"
"gfx/water/water-h.gc"
"camera/camera.gc"
"camera/cam-interface.gc"
"camera/cam-master.gc"
"camera/cam-states.gc"
"camera/cam-states-dbg.gc"
"camera/cam-combiner.gc"
"camera/cam-update.gc"
"geometry/vol-h.gc"
"camera/cam-layout.gc"
"camera/cam-debug.gc"
"camera/cam-start.gc"
"draw/process-drawable.gc"
"game/task/hint-control.gc"
"ambient/ambient.gc"
"debug/assert.gc"
"game/generic-obs.gc"
"target/target-util.gc"
"target/target-part.gc"
"collide/collide-reaction-target.gc"
"target/logic-target.gc"
"target/sidekick.gc"
"game/voicebox.gc"
"target/target-handler.gc"
"target/target.gc"
"target/target2.gc"
"target/target-death.gc"
"debug/menu.gc"
"draw/drawable.gc"
"draw/drawable-group.gc"
"draw/drawable-inline-array.gc"
"draw/drawable-tree.gc"
"gfx/tie/prototype.gc"
"collide/main-collide.gc"
"game/video.gc"
"pc/pckernel.gc" ;; added
"game/main.gc"
"collide/collide-cache.gc"
"entity/relocate.gc"
"debug/memory-usage.gc"
"entity/entity.gc"
"nav/path.gc"
"geometry/vol.gc"
"nav/navigate.gc"
"anim/aligner.gc"
"game/effect-control.gc"
"gfx/water/water.gc"
"game/collectables-part.gc"
"game/collectables.gc"
"game/task/task-control.gc"
"game/task/process-taskable.gc"
"camera/pov-camera.gc"
"game/powerups.gc"
"game/crates.gc"
"ui/hud.gc"
"ui/hud-classes.gc"
"ui/progress/progress-static.gc"
"ui/progress/progress-part.gc"
"ui/progress/progress-draw.gc"
"ui/progress/progress.gc"
"ui/credits.gc"
"game/projectiles.gc"
"gfx/ocean/ocean.gc"
"gfx/ocean/ocean-vu0.gc"
"gfx/ocean/ocean-texture.gc"
"gfx/ocean/ocean-mid.gc"
"gfx/ocean/ocean-transition.gc"
"gfx/ocean/ocean-near.gc"
"gfx/shadow/shadow.gc"
"gfx/eye.gc"
"util/glist-h.gc"
"util/glist.gc"
"debug/anim-tester.gc"
"debug/viewer.gc"
"debug/part-tester.gc"
"debug/default-menu.gc"
)
(goal-src-sequence
"levels/common/"
:deps ("out/obj/default-menu.o")
"texture-upload.gc"
"rigid-body-h.gc"
"water-anim.gc"
"dark-eco-pool.gc"
"rigid-body.gc"
"nav-enemy-h.gc"
"nav-enemy.gc"
"baseplat.gc"
"basebutton.gc"
"tippy.gc"
"joint-exploder.gc"
"babak.gc"
"sharkey.gc"
"orb-cache.gc"
"plat.gc"
"plat-button.gc"
"plat-eco.gc"
"ropebridge.gc"
"ticky.gc"
)