;;-*-Lisp-*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Jak 3 Project File ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; see goal_src/jak1/game.gp for more detailed explanation ;;;;;;;;;;;;;;;;;;;;;;; ;; Inputs from ISO ;;;;;;;;;;;;;;;;;;;;;;; (cond ;; extractor can override everything by providing *use-iso-data-path* (*use-iso-data-path* (map-path! "$ISO" (string-append *iso-data* "/"))) ;; if the user's repl-config has a game version folder, use that ((> (string-length (get-game-version-folder)) 0) (map-path! "$ISO" (string-append "iso_data/" (get-game-version-folder) "/"))) ;; otherwise, default to jak3 (#t (map-path! "$ISO" "iso_data/jak3/"))) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Inputs from decompiler ;;;;;;;;;;;;;;;;;;;;;;;;;; (cond ;; if the user's repl-config has a game version folder, use that ((> (string-length (get-game-version-folder)) 0) (map-path! "$DECOMP" (string-append "decompiler_out/" (get-game-version-folder) "/"))) ;; otherwise, default to jak3 (#t (map-path! "$DECOMP" "decompiler_out/jak3/"))) ;;;;;;;;;;;;;;;;;;;;;;; ;; Output ;;;;;;;;;;;;;;;;;;;;;;; ;; NOTE: the game itself will load from out/jak3/iso and out/jak3/fr3. (map-path! "$OUT" "out/jak3/") ;; tell the compiler to put its outputs in out/jak3/ (set-output-prefix "jak3/") ;; use defmacro to define goos macros. (define defmacro defsmacro) (define defun desfun) ;;;;;;;;;;;;;;;;;;;;;;; ;; Build Groups ;;;;;;;;;;;;;;;;;;;;;;; (define *all-cgos* '()) (define *all-str* '()) (define *all-vis* '()) (define *all-mus* '()) (define *all-sbk* '()) (define *all-vag* '()) (define *all-gc* '()) (define *file-entry-map* (make-string-hash-table)) ;; Load required macros (load-file "goal_src/jak3/lib/project-lib.gp") (set-gsrc-folder! "goal_src/jak3") ;;;;;;;;;;;;;;;;; ;; GOAL Kernel ;;;;;;;;;;;;;;;;; (cgo-file "kernel.gd" '()) ;;;;;;;;;;;;;;;;;;;;; ;; misc files ;;;;;;;;;;;;;;;;;;;;; ;; the VAGDIR file (defstep :in "$ISO/VAG/VAGDIR.AYB" :tool 'copy :out '("$OUT/iso/VAGDIR.AYB")) ;;;;;;;;;;;;;;;;;;;;; ;; DGOs ;;;;;;;;;;;;;;;;;;;;; (defstep :in "$DECOMP/textures/tpage-dir.txt" :tool 'tpage-dir :out '("$OUT/obj/dir-tpages.go") ) (hash-table-set! *file-entry-map* "dir-tpages.go" #f) (cgo-file "game.gd" '("$OUT/obj/gcommon.o" "$OUT/obj/gstate.o" "$OUT/obj/gstring.o" "$OUT/obj/gkernel.o")) ;; note: some of these dependencies are slightly wrong because cgo-file doesn't really handle ;; the case of a .o appearing in multiple dgos. But, if we depend on the last item in both lists, it ;; works out. #| (define common-dep '("$OUT/obj/cty-guard-turret-button.o" "$OUT/obj/default-menu-pc.o")) (cgo-file "preca.gd" common-dep) (cgo-file "outrocst.gd" common-dep) (cgo-file "ltornsam.gd" common-dep) (cgo-file "lnstcst.gd" common-dep) (cgo-file "combx.gd" common-dep) (cgo-file "lfreeout.gd" common-dep) (cgo-file "lgunrnc.gd" common-dep) (cgo-file "ctc.gd" common-dep) (cgo-file "ltowcity.gd" common-dep) (cgo-file "temc.gd" common-dep) (cgo-file "loutro.gd" common-dep) (cgo-file "railcst.gd" common-dep) (cgo-file "sem.gd" common-dep) (cgo-file "dese.gd" common-dep) (cgo-file "ljkdxvin.gd" common-dep) (cgo-file "waspgame.gd" common-dep) (cgo-file "wascast.gd" common-dep) (cgo-file "lbbsdrp1.gd" common-dep) (cgo-file "raild.gd" common-dep) (cgo-file "lwlandm.gd" common-dep) (cgo-file "gungame2.gd" common-dep) (cgo-file "railc.gd" common-dep) (cgo-file "precd.gd" common-dep) (cgo-file "combe.gd" common-dep) (cgo-file "lctyhijk.gd" common-dep) (cgo-file "desoasis.gd" common-dep) (cgo-file "ctypesc.gd" common-dep) (cgo-file "wasseem.gd" common-dep) (cgo-file "towb.gd" common-dep) (cgo-file "wasstadc.gd" common-dep) (cgo-file "gungame1.gd" common-dep) (cgo-file "ljak.gd" common-dep) (cgo-file "lwassig.gd" common-dep) (cgo-file "deshover.gd" common-dep) (cgo-file "wsd.gd" common-dep) (cgo-file "lsamos.gd" common-dep) (cgo-file "lfaccity.gd" common-dep) (cgo-file "lblowtmh.gd" common-dep) (cgo-file "ljaksig.gd" common-dep) (cgo-file "ldmpckgn.gd" common-dep) (cgo-file "lbbtcha1.gd" common-dep) (cgo-file "railx.gd" common-dep) (cgo-file "staa.gd" common-dep) (cgo-file "wcaseem.gd" common-dep) (cgo-file "dst.gd" common-dep) (cgo-file "rubc.gd" common-dep) (cgo-file "ipf.gd" common-dep) (cgo-file "lnstoa.gd" common-dep) (cgo-file "railf.gd" common-dep) (cgo-file "deshunt.gd" common-dep) (cgo-file "oasiscst.gd" common-dep) (cgo-file "desinter.gd" common-dep) (cgo-file "ctypesa.gd" common-dep) (cgo-file "seo.gd" common-dep) (cgo-file "railb.gd" common-dep) (cgo-file "lerrol.gd" common-dep) (cgo-file "lbbsprt3.gd" common-dep) (cgo-file "ltowa.gd" common-dep) (cgo-file "comba.gd" common-dep) (cgo-file "stb.gd" common-dep) (cgo-file "desc.gd" common-dep) (cgo-file "lctyprot.gd" common-dep) (cgo-file "lctyblow.gd" common-dep) (cgo-file "voca.gd" common-dep) (cgo-file "lbbring3.gd" common-dep) (cgo-file "ctb.gd" common-dep) (cgo-file "lbbring4.gd" common-dep) (cgo-file "mic.gd" common-dep) (cgo-file "lnstobc.gd" common-dep) (cgo-file "ctypesb.gd" common-dep) (cgo-file "cia.gd" common-dep) (cgo-file "ldampksm.gd" common-dep) (cgo-file "ljndklev.gd" common-dep) (cgo-file "desrace2.gd" common-dep) (cgo-file "hhg.gd" common-dep) (cgo-file "ljakc.gd" common-dep) (cgo-file "lbombbot.gd" common-dep) (cgo-file "loutro2.gd" common-dep) (cgo-file "citycast.gd" common-dep) (cgo-file "seb.gd" common-dep) (cgo-file "combn.gd" common-dep) (cgo-file "lprenme.gd" common-dep) (cgo-file "rbct.gd" common-dep) (cgo-file "lbbsdrp2.gd" common-dep) (cgo-file "lbbring5.gd" common-dep) (cgo-file "rubb.gd" common-dep) (cgo-file "ltrtwhls.gd" common-dep) (cgo-file "ctycarc.gd" common-dep) (cgo-file "towera.gd" common-dep) (cgo-file "desw.gd" common-dep) (cgo-file "lpatk.gd" common-dep) (cgo-file "ljkdmpk.gd" common-dep) (cgo-file "ltowb.gd" common-dep) (cgo-file "destrack.gd" common-dep) (cgo-file "slumbset.gd" common-dep) (cgo-file "desboss2.gd" common-dep) (cgo-file "combb.gd" common-dep) (cgo-file "precc.gd" common-dep) (cgo-file "desbcst.gd" common-dep) (cgo-file "lctypalt.gd" common-dep) (cgo-file "ltornjnx.gd" common-dep) (cgo-file "factorya.gd" common-dep) (cgo-file "ljakklev.gd" common-dep) (cgo-file "sef.gd" common-dep) (cgo-file "museum4.gd" common-dep) (cgo-file "tema.gd" common-dep) (cgo-file "lbbring1.gd" common-dep) (cgo-file "ljakndax.gd" common-dep) (cgo-file "vin.gd" common-dep) (cgo-file "lfacb.gd" common-dep) (cgo-file "lashelin.gd" common-dep) (cgo-file "ljkcdmkl.gd" common-dep) (cgo-file "lfacrm2.gd" common-dep) (cgo-file "ljinx.gd" common-dep) (cgo-file "lfactory.gd" common-dep) (cgo-file "arenacst.gd" common-dep) (cgo-file "lbbtcha3.gd" common-dep) (cgo-file "wasdefen.gd" common-dep) (cgo-file "templee.gd" common-dep) (cgo-file "lmhcb.gd" common-dep) (cgo-file "freecast.gd" common-dep) (cgo-file "frstx.gd" common-dep) (cgo-file "sek.gd" common-dep) (cgo-file "lmhca.gd" common-dep) (cgo-file "cwi.gd" common-dep) (cgo-file "lprecc.gd" common-dep) (cgo-file "hgb.gd" common-dep) (cgo-file "desrace1.gd" common-dep) (cgo-file "sea.gd" common-dep) (cgo-file "nsa.gd" common-dep) (cgo-file "lbiped.gd" common-dep) (cgo-file "wasall.gd" common-dep) (cgo-file "waschase.gd" common-dep) (cgo-file "desrescc.gd" common-dep) (cgo-file "desf.gd" common-dep) (cgo-file "deserrol.gd" common-dep) (cgo-file "cfb.gd" common-dep) (cgo-file "lgunnorm.gd" common-dep) (cgo-file "outcast3.gd" common-dep) (cgo-file "mhca.gd" common-dep) (cgo-file "ltnfxhip.gd" common-dep) (cgo-file "introcst.gd" common-dep) (cgo-file "cta.gd" common-dep) (cgo-file "combc.gd" common-dep) (cgo-file "seh.gd" common-dep) (cgo-file "lfaccar.gd" common-dep) (cgo-file "warpcast.gd" common-dep) (cgo-file "lfacrm1.gd" common-dep) (cgo-file "wca.gd" common-dep) (cgo-file "lblowtkg.gd" common-dep) (cgo-file "onintent.gd" common-dep) (cgo-file "freehq.gd" common-dep) (cgo-file "lform.gd" common-dep) (cgo-file "towercst.gd" common-dep) (cgo-file "lbbring2.gd" common-dep) (cgo-file "ctypepc.gd" common-dep) (cgo-file "lblowcst.gd" common-dep) (cgo-file "see.gd" common-dep) (cgo-file "lctysnpr.gd" common-dep) (cgo-file "desrescg.gd" common-dep) (cgo-file "mhctycst.gd" common-dep) (cgo-file "ltorn.gd" common-dep) (cgo-file "desg.gd" common-dep) (cgo-file "facd.gd" common-dep) (cgo-file "desboss1.gd" common-dep) (cgo-file "lforp.gd" common-dep) (cgo-file "ljakcklv.gd" common-dep) (cgo-file "ctycarkg.gd" common-dep) (cgo-file "temp.gd" common-dep) (cgo-file "lkeira.gd" common-dep) (cgo-file "ctypepb.gd" common-dep) (cgo-file "sej.gd" common-dep) (cgo-file "desh.gd" common-dep) (cgo-file "wasstadb.gd" common-dep) (cgo-file "lbbsprt2.gd" common-dep) (cgo-file "lbbsdrp3.gd" common-dep) (cgo-file "museum.gd" common-dep) (cgo-file "ldesgcst.gd" common-dep) (cgo-file "ltnjxhip.gd" common-dep) (cgo-file "ldax.gd" common-dep) (cgo-file "intpalrf.gd" common-dep) (cgo-file "lcitysml.gd" common-dep) (cgo-file "title.gd" common-dep) (cgo-file "desb.gd" common-dep) (cgo-file "facb.gd" common-dep) (cgo-file "mia.gd" common-dep) (cgo-file "temx.gd" common-dep) (cgo-file "ctycarb.gd" common-dep) (cgo-file "hga.gd" common-dep) (cgo-file "ctycara.gd" common-dep) (cgo-file "lnstobb.gd" common-dep) (cgo-file "lmech.gd" common-dep) (cgo-file "gridcst.gd" common-dep) (cgo-file "lbbtcha2.gd" common-dep) (cgo-file "ljkfeet.gd" common-dep) (cgo-file "mib.gd" common-dep) (cgo-file "facc.gd" common-dep) (cgo-file "raile.gd" common-dep) (cgo-file "combd.gd" common-dep) (cgo-file "lsigklv.gd" common-dep) (cgo-file "ldampeck.gd" common-dep) (cgo-file "deschase.gd" common-dep) (cgo-file "museum3.gd" common-dep) (cgo-file "minee.gd" common-dep) (cgo-file "lctyass.gd" common-dep) (cgo-file "wcb.gd" common-dep) (cgo-file "lpatkcs.gd" common-dep) (cgo-file "cfa.gd" common-dep) (cgo-file "ruba2.gd" common-dep) (cgo-file "ldamsig.gd" common-dep) (cgo-file "precb.gd" common-dep) (cgo-file "railb2.gd" common-dep) (cgo-file "lbbspirt.gd" common-dep) (cgo-file "temd.gd" common-dep) (cgo-file "mined.gd" common-dep) (cgo-file "wwd.gd" common-dep) (cgo-file "loutro3.gd" common-dep) (cgo-file "sec.gd" common-dep) (cgo-file "lsnkwhls.gd" common-dep) (cgo-file "loninsim.gd" common-dep) (cgo-file "halfpipe.gd" common-dep) (cgo-file "cib.gd" common-dep) (cgo-file "inttitle.gd" common-dep) (cgo-file "desresc.gd" common-dep) (cgo-file "lwasbbv.gd" common-dep) (cgo-file "lforring.gd" common-dep) (cgo-file "museum3b.gd" common-dep) (cgo-file "gga.gd" common-dep) (cgo-file "desliz.gd" common-dep) (cgo-file "desjump.gd" common-dep) (cgo-file "raila.gd" common-dep) (cgo-file "lseemwca.gd" common-dep) (cgo-file "lkleever.gd" common-dep) (cgo-file "desd.gd" common-dep) (cgo-file "lfaco.gd" common-dep) (cgo-file "ldamklev.gd" common-dep) (cgo-file "powergd.gd" common-dep) (cgo-file "lptrl.gd" common-dep) (cgo-file "lsig.gd" common-dep) (cgo-file "ruba.gd" common-dep) (cgo-file "win.gd" common-dep) (cgo-file "wasstada.gd" common-dep) (cgo-file "sei.gd" common-dep) (cgo-file "cpo.gd" common-dep) (cgo-file "waspala.gd" common-dep) (cgo-file "museum4b.gd" common-dep) (cgo-file "seg.gd" common-dep) (cgo-file "frstb.gd" common-dep) (cgo-file "nsb.gd" common-dep) (cgo-file "cgb.gd" common-dep) (cgo-file "lvincst.gd" common-dep) (cgo-file "sel.gd" common-dep) (cgo-file "lctydest.gd" common-dep) (cgo-file "sta.gd" common-dep) (cgo-file "wasleapr.gd" common-dep) (cgo-file "desrally.gd" common-dep) (cgo-file "temb.gd" common-dep) (cgo-file "ctypepa.gd" common-dep) (cgo-file "lwstdpck.gd" common-dep) (cgo-file "museum2.gd" common-dep) (cgo-file "sed.gd" common-dep) (cgo-file "desa.gd" common-dep) (cgo-file "towerc.gd" common-dep) (cgo-file "desbattl.gd" common-dep) (cgo-file "frsta.gd" common-dep) (cgo-file "lsigjakc.gd" common-dep) (cgo-file "vocx.gd" common-dep) (cgo-file "lbbspid.gd" common-dep) (cgo-file "sen.gd" common-dep) (cgo-file "mhcb.gd" common-dep) (cgo-file "lctypatk.gd" common-dep) (cgo-file "lbbring6.gd" common-dep) |# ;;;;;;;;;;;;;;;;;;;;; ;; ANIMATIONS ;;;;;;;;;;;;;;;;;;;;; ;; (copy-strs "") ;;;;;;;;;;;;;;;;;;;;; ;; MUSIC ;;;;;;;;;;;;;;;;;;;;; (copy-vag-files "COM" "ENG" "FRE" "GER" "INT" "ITA" "SPA") (copy-sbk-files "BBUSH1" "BBUSH2" "BLOW1" "BLOW2" "BLOW3H" "BLOWBAR1" "BLOWBAR2" "BLOWBAR3" "BOMBBOT1" "CITYALTH" "CITYBB1" "CITYBBF" "CITYBBH" "CITYCARH" "CITYFFH" "CITYGRID" "CITYHQ1" "CITYHQ2" "CITYHQ3" "CITYKGF" "CITYMHF" "CITYPEDH" "CITYPROT" "CMBTASK1" "CMBTASK2" "CMBTASK3" "COMMON" "COMMONJ" "CTYGNBH" "CTYINDH" "CTYPORTH" "CTYPRTDH" "CTYSLMAH" "CTYSLMBH" "CTYSLMCH" "CTYSNIP1" "DARKECO1" "DESBATL1" "DESBATL2" "DESBOS1" "DESBOS2" "DESBST1" "DESERT1" "DESERT2" "DESERT3" "DESERT4" "DESERT5" "DESERT6" "DESJUMP1" "DESRESC1" "EMPTY0" "EMPTY1" "EMPTY2" "FACTOR10" "FACTORY1" "FACTORY2" "FACTORY3" "FACTORY4" "FACTORY5" "FACTORY6" "FACTORY7" "FACTORY8" "FACTORY9" "FACVEH" "FNLBOSS1" "FNLBOSS2" "FNLBOSS3" "FOREST1" "FOREST2" "FOREST3" "FOREST4" "FOREST5" "FOREST6" "FOREST7" "FOREST8" "FOREST9" "GENBAMB" "GENBTSK1" "GUNGAME1" "GUNGAME2" "HANG1" "HANG2" "HANG3" "HIJACK1" "INTRO1" "INTRO2" "MECH" "MENU1" "MHCITY1H" "MHCITY2H" "MINE1" "MINE10" "MINE2" "MINE3" "MINE4" "MINE5" "MINE6" "MINE7" "MINE8" "MINE9" "MODEBORD" "MODEDARK" "MODEFLUT" "MODEGUB1" "MODEGUB2" "MODEGUB3" "MODEGUD1" "MODEGUD2" "MODEGUD3" "MODEGUR1" "MODEGUR2" "MODEGUR3" "MODEGUY1" "MODEGUY2" "MODEGUY3" "MODEIDAX" "MODELIT" "MODEMECH" "NEST1" "NEST2" "NEST3" "NEST4" "ONIN1" "PORTATK1" "PORTFITE" "POWERGD1" "PRECUR1" "PRECUR2" "PRECUR3" "PRECUR4" "PRECUR5" "RUINTSK1" "RUINTSK2" "RUINTSK3" "RUINTSK4" "RUINTSK5" "SEWER1" "SEWER2" "SEWER3" "SEWER4" "SEWER5" "SEWER6" "SEWER7" "SEWER8" "SEWER9" "STRONG1" "STRONG2" "TEMPLE1" "TEMPLE3" "TEMPLE4" "TEMPLE5" "TEMPLE6" "TOWER1" "TOWER2" "TOWER3" "VINROOMH" "VOLCANO1" "VOLCANO2" "VOLCANO3" "VOLCANO4" "WASALL1" "WASCITY1" "WASCITY2" "WASCITY3" "WASCITY4" "WASDEF1" "WASDEF2" "WASDEF3" "WASGAME1" "WASGUN1" "WASGUN2" "WASKANG1" "WASMIR" "WASPALA1" "WASRHINO" "WASSCORP" "WASSNAKE" "WASSTAD1" "WASSTAD2" "WASSTAD3" "WASSTAD4" "WASSTAD5" "WASSTAD6" "WASTOAD" "WASTURT") ;; Jak 3 has no MUS files ;; (copy-mus-files "" "TWEAKVAL") ;;;;;;;;;;;;;;;;;;;;; ;; Text ;;;;;;;;;;;;;;;;;;;;; (defstep :in "game/assets/jak3/game_text.gp" :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" "$OUT/iso/7COMMON.TXT") ) (defstep :in "game/assets/jak3/game_subtitle.gp" :tool 'subtitle-v2 :out '("$OUT/iso/0SUBTI2.TXT") ) ;;;;;;;;;;;;;;;;;;;;; ;; ISO Group ;;;;;;;;;;;;;;;;;;;;; ;; the iso group is a group of files built by the "(mi)" command. (group-list "iso" `("$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" "$OUT/iso/7COMMON.TXT" "$OUT/iso/0SUBTI2.TXT" "$OUT/iso/VAGDIR.AYB" ,@(reverse *all-vis*) ,@(reverse *all-str*) ,@(reverse *all-sbk*) ,@(reverse *all-vag*) ,@(reverse *all-cgos*)) ) (group-list "text" `("$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" "$OUT/iso/7COMMON.TXT" "$OUT/iso/0SUBTI2.TXT" ) ) ;; used for the type consistency test. (group-list "all-code" `(,@(reverse *all-gc*)) ) (group "engine" "$OUT/iso/0COMMON.TXT" "$OUT/iso/0SUBTI2.TXT" "$OUT/iso/KERNEL.CGO" "$OUT/iso/GAME.CGO" "$OUT/iso/VAGDIR.AYB" "$OUT/iso/VAGWAD.ENG" )