jak-project/goal_src/jak2/dgos/game.gd
Tyler Wilding d1ece445d4
Dependency graph work - Part 1 - Preliminary work (#3505)
Relates to #1353 

This adds no new functionality or overhead to the compiler, yet. This is
the preliminary work that has:
- added code to the compiler in several spots to flag when something is
used without being properly required/imported/whatever (disabled by
default)
- that was used to generate project wide file dependencies (some
circulars were manually fixed)
- then that graph underwent a transitive reduction and the result was
written to all `jak1` source files.

The next step will be making this actually produce and use a dependency
graph. Some of the reasons why I'm working on this:
- eliminates more `game.gp` boilerplate. This includes the `.gd` files
to some extent (`*-ag` files and `tpage` files will still need to be
handled) this is the point of the new `bundles` form. This should make
it even easier to add a new file into the source tree.
- a build order that is actually informed from something real and
compiler warnings that tell you when you are using something that won't
be available at build time.
- narrows the search space for doing LSP actions -- like searching for
references. Since it would be way too much work to store in the compiler
every location where every symbol/function/etc is used, I have to do
ad-hoc searches. By having a dependency graph i can significantly reduce
that search space.
- opens the doors for common shared code with a legitimate pattern.
Right now jak 2 shares code from the jak 1 folder. This is basically a
hack -- but by having an explicit require syntax, it would be possible
to reference arbitrary file paths, such as a `common` folder.

Some stats:
- Jak 1 has about 2500 edges between files, including transitives
- With transitives reduced at the source code level, each file seems to
have a modest amount of explicit requirements.

Known issues:
- Tracking the location for where `defmacro`s and virtual state
definitions were defined (and therefore the file) is still problematic.
Because those forms are in a macro environment, the reader does not
track them. I'm wondering if a workaround could be to search the
reader's text_db by not just the `goos::Object` but by the text
position. But for the purposes of finishing this work, I just statically
analyzed and searched the code with throwaway python code.
2024-05-12 12:37:59 -04:00

469 lines
8.1 KiB
Common Lisp

("GAME.CGO"
("types-h.o"
"vu1-macros.o"
"math.o"
"vector-h.o"
"gravity-h.o"
"bounding-box-h.o"
"matrix-h.o"
"quaternion-h.o"
"euler-h.o"
"transform-h.o"
"geometry-h.o"
"trigonometry-h.o"
"transformq-h.o"
"bounding-box.o"
"matrix.o"
"transform.o"
"quaternion.o"
"euler.o"
"trigonometry.o"
"gsound-h.o"
"timer-h.o"
"vif-h.o"
"dma-h.o"
"video-h.o"
"vu1-user-h.o"
"profile-h.o"
"dma.o"
"dma-buffer.o"
"dma-bucket.o"
"dma-disasm.o"
"statistics-h.o" ;; added
"pc-cheats.o" ;; added
"pckernel-h.o" ;; added
"pckernel-impl.o" ;; added
"pc-debug-common.o" ;; added
"pad.o"
"gs.o"
"display-h.o"
"geometry.o"
"timer.o"
"vector.o"
"file-io.o"
"loader-h.o"
"texture-h.o"
"texture-anim-h.o"
"lights-h.o"
"mood-h.o"
"level-h.o"
"capture-h.o"
"math-camera-h.o"
"math-camera.o"
"font-h.o"
"decomp-h.o"
"profile.o"
"display.o"
"connect.o"
"text-id-h.o"
"text-h.o"
"camera-defs-h.o"
"trail-h.o"
"minimap-h.o"
"bigmap-h.o"
"settings-h.o"
"capture.o"
"memory-usage-h.o"
"blit-displays-h.o"
"texture.o"
"main-h.o"
"mspace-h.o"
"drawable-h.o"
"drawable-group-h.o"
"drawable-inline-array-h.o"
"draw-node-h.o"
"drawable-tree-h.o"
"drawable-actor-h.o"
"region-h.o"
"traffic-h.o"
"game-task-h.o"
"task-control-h.o"
"generic-h.o"
"sky-h.o"
"ocean-h.o"
"ocean-trans-tables.o"
"ocean-tables.o"
"ocean-frames.o"
"time-of-day-h.o"
"art-h.o"
"generic-vu1-h.o"
"merc-h.o"
"generic-merc-h.o"
"generic-tie-h.o"
"generic-work-h.o"
"shadow-cpu-h.o"
"shadow-vu1-h.o"
"memcard-h.o"
"game-info-h.o"
"gui-h.o"
"ambient-h.o"
"speech-h.o"
"wind-h.o"
"prototype-h.o"
"joint-h.o"
"bones-h.o"
"foreground-h.o"
"engines.o"
"lightning-h.o"
"res-h.o"
"res.o"
"lights.o"
"dynamics-h.o"
"surface-h.o"
"pat-h.o"
"fact-h.o"
"aligner-h.o"
"penetrate-h.o"
"game-h.o"
"script-h.o"
"scene-h.o"
"sync-info-h.o"
"pov-camera-h.o"
"smush-control-h.o"
"debug-h.o"
"joint-mod-h.o"
"collide-func-h.o"
"collide-mesh-h.o"
"collide-shape-h.o"
"generic-obs-h.o"
"trajectory-h.o"
"collide-target-h.o"
"collide-touch-h.o"
"collide-edge-grab-h.o"
"process-drawable-h.o"
"process-focusable.o"
"process-taskable-h.o"
"focus.o"
"effect-control-h.o"
"collide-frag-h.o"
"collide-hash-h.o"
"chain-physics-h.o"
"projectile-h.o"
"find-nearest-h.o"
"target-h.o"
"stats-h.o"
"bsp-h.o"
"collide-cache-h.o"
"collide-h.o"
"shrubbery-h.o"
"tie-h.o"
"tfrag-h.o"
"background-h.o"
"subdivide-h.o"
"entity-h.o"
"sprite-h.o"
"simple-sprite-h.o"
"eye-h.o"
"sparticle-launcher-h.o"
"sparticle-h.o"
"actor-link-h.o"
"camera-h.o"
"cam-debug-h.o"
"cam-interface-h.o"
"cam-update-h.o"
"hud-h.o"
"progress-h.o"
"progress-h-pc.o" ;; added
"progress-generic-h-pc.o" ;; added
"rpc-h.o"
"path-h.o"
"nav-mesh-h.o"
"nav-control-h.o"
"spatial-hash-h.o"
"actor-hash-h.o"
"load-dgo.o"
"ramdisk.o"
"gsound.o"
"transformq.o"
"collide-func.o"
"joint.o"
"joint-mod.o"
"chain-physics.o"
"cylinder.o"
"wind-work.o"
"wind.o"
"bsp.o"
"subdivide.o"
"sprite.o"
"sprite-distort.o"
"sprite-glow.o"
"debug-sphere.o"
"debug.o"
"history.o"
"merc-vu1.o"
"emerc-vu1.o"
"merc-blend-shape.o"
"merc.o"
"emerc.o"
"ripple.o"
"bones.o"
"debug-foreground.o"
"foreground.o"
"generic-vu0.o"
"generic-vu1.o"
"generic-effect.o"
"generic-merc.o"
"generic-tie.o"
"shadow-cpu.o"
"shadow-vu1.o"
"warp.o"
"texture-anim.o"
"texture-anim-funcs.o"
"texture-anim-tables.o"
"blit-displays.o"
"font-data.o"
"font.o"
"decomp.o"
"background.o"
"draw-node.o"
"shrubbery.o"
"shrub-work.o"
"tfrag-near.o"
"tfrag.o"
"tfrag-methods.o"
"tfrag-work.o"
"tie.o"
"etie-vu1.o"
"etie-near-vu1.o"
"tie-near.o"
"tie-work.o"
"tie-methods.o"
"sync-info.o"
"trajectory.o"
"sparticle-launcher.o"
"sparticle.o"
"entity-table.o"
"loader.o"
"game-info.o"
"game-task.o"
"game-save.o"
"settings.o"
"autosplit-h.o" ;; added
"autosplit.o" ;; added
"popup-menu-h.o" ;; added
"speedruns-h.o" ;; added
"mood-tables.o"
"mood-tables2.o"
"mood.o"
"mood-funcs.o"
"mood-funcs2.o"
"weather-part.o"
"time-of-day.o"
"sky-data.o"
"sky-tng.o"
"load-state.o"
"pc-debug-methods.o" ;; added
"level-info.o"
"level.o"
"text.o"
"collide-hash.o"
"collide-probe.o"
"collide-frag.o"
"collide-mesh.o"
"collide-touch.o"
"collide-edge-grab.o"
"collide-shape.o"
"collide-shape-rider.o"
"collide.o"
;; "collide-planes.o"
"spatial-hash.o"
"actor-hash.o"
"merc-death.o"
"water-flow.o"
"water-h.o"
"camera.o"
"cam-interface.o"
"cam-master.o"
"cam-states.o"
"cam-states-dbg.o"
"cam-combiner.o"
"cam-update.o"
"vol-h.o"
"cam-layout.o"
"cam-debug.o"
"cam-start.o"
"process-drawable.o"
"ambient.o"
"speech.o"
"region.o"
"fma-sphere.o"
"script.o"
"generic-obs.o"
"lightning.o"
"carry-h.o"
"pilot-h.o"
"gun-h.o"
"board-h.o"
"darkjak-h.o"
"target-util.o"
"target-part.o"
"gun-part.o"
"collide-reaction-target.o"
"logic-target.o"
"sidekick.o"
"effect-control.o"
"voicebox.o"
"collectables-part.o"
"debug-part.o"
"find-nearest.o"
"task-arrow.o"
"projectile.o"
"target-handler.o"
"target-anim.o"
"target.o"
"target2.o"
"target-swim.o"
"target-carry.o"
"target-darkjak.o"
"target-death.o"
"target-gun.o"
"gun-util.o"
"gun-blue-shot.o"
"gun-yellow-shot.o"
"gun-red-shot.o"
"gun-dark-shot.o"
"gun-states.o"
"board-util.o"
"target-board.o"
"board-part.o"
"board-states.o"
"mech-h.o"
"menu.o"
"popup-menu.o" ;; added
"speedruns.o" ;; added
"drawable.o"
"drawable-group.o"
"drawable-inline-array.o"
"drawable-tree.o"
"prototype.o"
"main-collide.o"
"video.o"
"capture-pc.o" ;; added
"pckernel-common.o" ;; added
"pckernel.o" ;; added
"subtitle2-h.o" ;; added
"subtitle2.o" ;; added
"main.o"
"collide-cache.o"
"collide-debug.o"
"relocate.o"
"memory-usage.o"
"entity.o"
"path.o"
"vol.o"
"nav-mesh.o"
"nav-control.o"
"aligner.o"
"water.o"
"collectables.o"
"task-control.o"
"scene.o"
"pov-camera.o"
"powerups.o"
"crates.o"
"hud.o"
"hud-classes.o"
"progress-static.o"
"progress-static-pc.o" ;; added
"progress.o"
"progress-pc.o" ;; added
"progress-generic-pc.o" ;; added
"progress-draw.o"
"progress-draw-pc.o" ;; added
"progress-generic-draw-pc.o" ;; added
"ocean.o"
"ocean-vu0.o"
"ocean-texture.o"
"ocean-mid.o"
"ocean-transition.o"
"ocean-near.o"
"minimap.o"
"bigmap-data.o"
"bigmap.o"
"eye.o"
"glist-h.o"
"glist.o"
"anim-tester.o"
"viewer.o"
"part-tester.o"
"editable-h.o"
"editable.o"
"editable-player.o"
"mysql-nav-graph.o"
"nav-graph-editor.o"
"sampler.o"
"default-menu.o"
"anim-tester-x.o" ;; added
"vag-player.o" ;; added
"default-menu-pc.o" ;; added
"dir-tpages.go"
"tpage-11.go"
"tpage-31.go"
"tpage-1804.go"
"texture-upload.o"
"tpage-12.go"
"tpage-917.go"
"tpage-918.go"
"tpage-1106.go"
"tpage-1141.go"
"tpage-1658.go"
"tpage-2841.go"
"tpage-2932.go"
"tpage-3076.go"
"texture-finish.o"
"collectables-ag.go"
"ctywide-arrow-ag.go"
"crate-ag.go"
"talk-box-ag.go"
"scenecamera-ag.go"
"eco-canister-ag.go"
"hud-ring-ag.go"
"jakb-ag.go"
"daxter-ag.go"
"board-ag.go"
"gun-ag.go"
"jak-gun+0-ag.go"
"jak-board+0-ag.go"
"jak-dark+0-ag.go"
"jak-swim+0-ag.go"
"blocking-plane-ag.go"
"los-control-h.o"
"airlock.o"
"water-anim.o"
"blocking-plane.o"
"idle-control.o"
"dark-eco-pool.o"
"enemy-h.o"
"nav-enemy-h.o"
"rigid-body-h.o"
"damage-number.o" ;; added
"statistics.o" ;; added
"enemy.o"
"nav-enemy.o"
"base-plat.o"
"plat.o"
"basebutton.o"
"bouncer.o"
"conveyor.o"
"elevator.o"
"rigid-body.o"
"rigid-body-queue.o"
"rigid-body-plat.o"
"joint-exploder.o"
"simple-focus.o"
"simple-nav-sphere.o"
"process-taskable.o"
"scene-actor.o"
"scene-looper.o"
"warp-gate.o"
"guard-projectile.o"
"metalhead-projectile.o"
"los-control.o"
"grunt.o"
"flitter.o"
"battle.o"
"elec-gate.o"
"cty-guard-turret-button.o"
"entity-debug.o" ;; added
))