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.
This commit is contained in:
Tyler Wilding 2024-05-12 12:37:59 -04:00 committed by GitHub
parent e0b1d8c21e
commit d1ece445d4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
557 changed files with 3200 additions and 179 deletions

View file

@ -16,10 +16,6 @@
#include "common/log/log.h"
// clang-format on
// TODO - basically REPL to listen and inject commands into a running REPL
// - we will need a C++ side client as well which will let us communicate with the repl via for
// example, ImgUI
//
// TODO - The server also needs to eventually return the result of the evaluation
ReplServer::~ReplServer() {

View file

@ -28,8 +28,12 @@ struct MethodInfo {
std::string name;
TypeSpec type;
std::string defined_in_type;
// TODO - this might be redundant, but preventing an unknown breaking change, clean it up later
std::string type_name;
bool no_virtual = false;
// TODO - this is no longer used anymore...but was not removed from th4e struct?
bool overrides_parent = false;
// TODO - this is no longer used anymore...but was not removed from th4e struct?
bool only_overrides_docstring = false;
std::optional<std::string> docstring;
std::optional<std::string> overlay_name;

View file

@ -124,10 +124,12 @@ class TypeSpec {
ASSERT(m_arguments);
return m_arguments->at(idx);
}
TypeSpec& get_arg(int idx) {
ASSERT(m_arguments);
return m_arguments->at(idx);
}
const TypeSpec& last_arg() const {
ASSERT(m_arguments);
ASSERT(!m_arguments->empty());

View file

@ -548,6 +548,7 @@ MethodInfo TypeSystem::override_method(Type* type,
existing_info.name,
existing_info.type,
type->get_name(),
type->get_name(),
existing_info.no_virtual,
false,
true,
@ -607,6 +608,7 @@ MethodInfo TypeSystem::declare_method(Type* type,
method_name,
ts,
type->get_name(),
type->get_name(),
no_virtual,
true,
false,
@ -645,6 +647,7 @@ MethodInfo TypeSystem::declare_method(Type* type,
method_name,
ts,
type->get_name(),
type->get_name(),
no_virtual,
false,
false,
@ -678,8 +681,8 @@ MethodInfo TypeSystem::overlay_method(Type* type,
}
// use the existing ID.
return type->add_method({existing_info.id, method_name, ts, type->get_name(), false, true, false,
docstring, std::make_optional(method_overlay_name)});
return type->add_method({existing_info.id, method_name, ts, type->get_name(), type->get_name(),
false, true, false, docstring, std::make_optional(method_overlay_name)});
}
MethodInfo TypeSystem::define_method(const std::string& type_name,
@ -709,8 +712,10 @@ MethodInfo TypeSystem::define_method(Type* type,
// look up the method
MethodInfo existing_info;
bool got_existing = try_lookup_method(type, method_name, &existing_info);
if (got_existing) {
// The lookup will return a parents method, but the type should be equal
// to the type in question (it's a child)
existing_info.type_name = type->get_name();
// Update the docstring
existing_info.docstring = docstring;
int bad_arg_idx = -99;
@ -758,7 +763,7 @@ MethodInfo TypeSystem::add_new_method(Type* type,
return existing;
} else {
return type->add_new_method(
{0, "new", ts, type->get_name(), false, false, false, docstring, {}});
{0, "new", ts, type->get_name(), type->get_name(), false, false, false, docstring, {}});
}
}

View file

@ -58,10 +58,11 @@ EnumType* parse_defenum(const goos::Object& defenum,
auto& enum_name_obj = car(iter);
iter = cdr(iter);
// check for docstring
std::optional<std::string> maybe_docstring;
if (iter->is_pair() && car(iter).is_string()) {
// TODO - docstring - store and use docstring if coming from the compiler
if (symbol_metadata) {
symbol_metadata->docstring = str_util::trim_newline_indents(car(iter).as_string()->data);
maybe_docstring = str_util::trim_newline_indents(car(iter).as_string()->data);
symbol_metadata->docstring = maybe_docstring.value();
}
iter = cdr(iter);
}
@ -157,6 +158,7 @@ EnumType* parse_defenum(const goos::Object& defenum,
if (is_type("integer", base_type, ts)) {
auto parent = ts->get_type_of_type<ValueType>(base_type.base_type());
auto new_type = std::make_unique<EnumType>(parent, name, is_bitfield, entries);
new_type->m_metadata.docstring = maybe_docstring;
new_type->set_runtime_type(parent->get_runtime_name());
return dynamic_cast<EnumType*>(ts->add_type(name, std::move(new_type)));
} else {

View file

@ -7,9 +7,6 @@
// A normal Trie does not allow for duplicate keys, however this one does
// It allows for insertion and removal
//
// Note, keys assume only basic ASCII, which is _fine_ as OpenGOAL itself has this
// limitation as well.
template <typename T>
class TrieWithDuplicates {
private:

View file

@ -34,6 +34,7 @@
"dma-buffer.o"
"dma-bucket.o"
"dma-disasm.o"
"pc-cheats.o" ;; added
"pckernel-h.o" ;; added
"pckernel-impl.o" ;; added
"pc-debug-common.o" ;; added

View file

@ -30,6 +30,7 @@
"dma-buffer.o"
"dma-bucket.o"
"dma-disasm.o"
"pc-cheats.o" ;; added
"pckernel-h.o" ;; added
"pckernel-impl.o" ;; added
"pc-debug-common.o" ;; added

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/draw/drawable-h.gc")
(require "kernel/gstate.gc")
;; name: aligner-h.gc
;; name in dgo: aligner-h

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/anim/aligner-h.gc")
(require "engine/common-obs/process-drawable.gc")
;; name: aligner.gc
;; name in dgo: aligner

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/collide/collide-cache.gc")
(require "engine/common-obs/process-drawable.gc")
;; name: joint-exploder.gc
;; name in dgo: joint-exploder

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: joint-h.gc
;; name in dgo: joint-h

View file

@ -1,5 +1,16 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/geometry/geometry.gc")
(require "engine/game/main-h.gc")
(require "engine/debug/debug-h.gc")
(require "engine/math/transformq-h.gc")
(require "engine/math/vector.gc")
(require "engine/game/fact-h.gc")
(require "engine/anim/joint-h.gc")
(require "engine/anim/mspace-h.gc")
(require "engine/game/game-h.gc")
;; name: joint-mod-h.gc
;; name in dgo: joint-mod-h

View file

@ -1,5 +1,14 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/entity/res.gc")
(require "engine/gfx/background/subdivide-h.gc")
(require "engine/math/transformq.gc")
(require "engine/anim/joint-h.gc")
(require "engine/data/art-h.gc")
(require "engine/anim/mspace-h.gc")
(require "engine/game/game-h.gc")
;; name: joint.gc
;; name in dgo: joint

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel/gcommon.gc")
;; name: mspace-h.gc
;; name in dgo: mspace-h

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/gfx/hw/display.gc")
(require "engine/camera/camera.gc")
;; name: cam-combiner.gc
;; name in dgo: cam-combiner

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: cam-debug-h.gc
;; name in dgo: cam-debug-h

View file

@ -1,5 +1,14 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/collide/pat-h.gc")
(require "engine/anim/joint-mod-h.gc")
(require "engine/math/euler.gc")
(require "engine/geometry/bounding-box-h.gc")
(require "engine/debug/debug.gc")
(require "engine/collide/collide-mesh-h.gc")
(require "engine/camera/camera.gc")
;; name: cam-debug.gc
;; name in dgo: cam-debug

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/camera-h.gc")
(require "engine/math/matrix-h.gc")
;; name: cam-interface-h.gc
;; name in dgo: cam-interface-h

View file

@ -1,5 +1,13 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/cam-interface-h.gc")
(require "engine/math/quaternion.gc")
(require "kernel/gstate.gc")
(require "engine/gfx/math-camera-h.gc")
(require "engine/entity/entity-h.gc")
(require "engine/math/transformq-h.gc")
;; name: cam-interface.gc
;; name in dgo: cam-interface

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/ps2/pad.gc")
(require "engine/geometry/vol-h.gc")
(require "engine/camera/camera.gc")
;; name: cam-layout.gc
;; name in dgo: cam-layout

View file

@ -1,5 +1,13 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/game/projectiles-h.gc")
(require "engine/physics/dynamics-h.gc")
(require "engine/gfx/mood/weather-part.gc")
(require "engine/anim/joint-mod-h.gc")
(require "engine/collide/collide-mesh-h.gc")
(require "engine/camera/camera.gc")
;; name: cam-master.gc
;; name in dgo: cam-master

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/cam-combiner.gc")
;; name: cam-start.gc
;; name in dgo: cam-start

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/camera.gc")
(require "pc/pckernel-impl.gc")
;; name: cam-states-dbg.gc
;; name in dgo: cam-states-dbg

View file

@ -1,5 +1,14 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/pov-camera-h.gc")
(require "engine/collide/collide-mesh-h.gc")
(require "engine/camera/camera.gc")
(require "engine/nav/navigate-h.gc")
(require "engine/collide/collide-cache-h.gc")
(require "engine/anim/joint-h.gc")
(require "engine/debug/debug.gc")
;; name: cam-states.gc
;; name in dgo: cam-states

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/matrix.gc")
(require "engine/util/smush-control-h.gc")
;; name: cam-update-h.gc
;; name in dgo: cam-update-h

View file

@ -1,5 +1,16 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/gfx/tie/tie-h.gc")
(require "engine/level/bsp-h.gc")
(require "engine/gfx/math-camera.gc")
(require "engine/load/decomp.gc")
(require "engine/gfx/shrub/shrubbery-h.gc")
(require "engine/physics/dynamics-h.gc")
(require "engine/math/vector.gc")
(require "engine/gfx/background/wind.gc")
(require "engine/math/quaternion.gc")
;; name: cam-update.gc
;; name in dgo: cam-update

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/vector-h.gc")
(require "engine/gfx/hw/display-h.gc")
;; name: camera-h.gc
;; name in dgo: camera-h

View file

@ -1,5 +1,17 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/engine/engines.gc")
(require "engine/entity/res.gc")
(require "engine/camera/cam-debug-h.gc")
(require "engine/geometry/geometry.gc")
(require "engine/game/main-h.gc")
(require "engine/util/smush-control-h.gc")
(require "engine/entity/entity-h.gc")
(require "engine/math/vector.gc")
(require "kernel/gstate.gc")
(require "engine/camera/cam-interface-h.gc")
;; name: camera.gc
;; name in dgo: camera

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/game/game-h.gc")
;; name: pov-camera-h.gc
;; name in dgo: pov-camera-h

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/pov-camera-h.gc")
(require "engine/common-obs/water.gc")
;; name: pov-camera.gc
;; name in dgo: pov-camera

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: collide-cache-h.gc
;; name in dgo: collide-cache-h

View file

@ -1,5 +1,17 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/gfx/background/subdivide.gc")
(require "engine/collide/collide-func.gc")
(require "examples/debug-collide.gc")
(require "engine/collide/collide-probe.gc")
(require "engine/geometry/bounding-box.gc")
(require "engine/collide/collide-mesh-h.gc")
(require "engine/collide/main-collide.gc")
(require "engine/common-obs/water-h.gc")
(require "engine/collide/collide-shape-h.gc")
(require "engine/debug/debug.gc")
;; name: collide-cache.gc
;; name in dgo: collide-cache

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/vector-h.gc")
(require "engine/geometry/bounding-box-h.gc")
;; name: collide-edge-grab-h.gc
;; name in dgo: collide-edge-grab-h

View file

@ -1,5 +1,14 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/collide/surface-h.gc")
(require "engine/collide/collide-edge-grab-h.gc")
(require "kernel/gstate.gc")
(require "engine/collide/collide-cache-h.gc")
(require "engine/target/target-h.gc")
(require "engine/collide/collide-shape-h.gc")
(require "engine/debug/debug.gc")
;; name: collide-edge-grab.gc
;; name in dgo: collide-edge-grab

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/vector-h.gc")
(require "engine/draw/drawable-tree-h.gc")
(require "engine/draw/drawable-inline-array-h.gc")
;; name: collide-frag-h.gc
;; name in dgo: collide-frag-h

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/level/bsp.gc")
(require "engine/collide/collide-frag-h.gc")
;; name: collide-frag.gc
;; name in dgo: collide-frag

View file

@ -1,6 +1,6 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
;; name: collide-func-h.gc
;; name in dgo: collide-func-h
;; dgos: GAME, ENGINE

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/vector.gc")
(require "kernel/gkernel-h.gc")
;; name: collide-func.gc
;; name in dgo: collide-func

View file

@ -1,6 +1,6 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
;; name: collide-h.gc
;; name in dgo: collide-h
;; dgos: GAME, ENGINE

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: collide-mesh-h.gc
;; name in dgo: collide-mesh-h

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/collide/pat-h.gc")
(require "engine/debug/debug.gc")
(require "engine/collide/collide-mesh-h.gc")
;; name: collide-mesh.gc
;; name in dgo: collide-mesh

View file

@ -1,5 +1,13 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/level/level-h.gc")
(require "kernel/gkernel.gc")
(require "engine/collide/collide-cache-h.gc")
(require "engine/gfx/tie/tie-h.gc")
(require "engine/collide/collide-frag-h.gc")
(require "engine/draw/draw-node-h.gc")
;; name: collide-probe.gc
;; name in dgo: collide-probe

View file

@ -1,5 +1,13 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/collide/pat-h.gc")
(require "engine/math/quaternion.gc")
(require "kernel/gkernel-h.gc")
(require "engine/math/transformq-h.gc")
(require "engine/game/game-h.gc")
(require "engine/engine/connect.gc")
;; name: collide-shape-h.gc
;; name in dgo: collide-shape-h

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/collide/collide-shape.gc")
;; name: collide-shape-rider.gc
;; name in dgo: collide-shape-rider

View file

@ -1,5 +1,17 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/camera-h.gc")
(require "engine/geometry/cylinder.gc")
(require "engine/collide/collide-target-h.gc")
(require "engine/math/transformq.gc")
(require "engine/collide/collide-probe.gc")
(require "engine/collide/collide-mesh.gc")
(require "engine/collide/collide-edge-grab.gc")
(require "engine/gfx/sprite/sparticle/sparticle-launcher.gc")
(require "engine/gfx/background/subdivide-h.gc")
(require "engine/collide/collide-touch.gc")
;; name: collide-shape.gc
;; name in dgo: collide-shape

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/collide/collide-shape-h.gc")
;; name: collide-target-h.gc
;; name in dgo: collide-target-h

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: collide-touch-h.gc
;; name in dgo: collide-touch-h

View file

@ -1,5 +1,12 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/collide/collide-touch-h.gc")
(require "kernel/gstate.gc")
(require "engine/target/target-h.gc")
(require "engine/collide/collide-shape-h.gc")
(require "engine/collide/collide-mesh-h.gc")
;; name: collide-touch.gc
;; name in dgo: collide-touch

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: collide.gc
;; name in dgo: collide

View file

@ -1,5 +1,12 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/vector-h.gc")
(require "engine/gfx/tie/tie-h.gc")
(require "engine/ps2/vu1-macros.gc")
(require "engine/geometry/bounding-box-h.gc")
(require "engine/math/math.gc")
;; name: main-collide.gc
;; name in dgo: main-collide

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/math.gc")
;; name: pat-h.gc
;; name in dgo: pat-h

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel/gcommon.gc")
;; name: surface-h.gc
;; name in dgo: surface-h

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/nav-enemy.gc")
;; name: babak.gc
;; name in dgo: babak

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
(require "engine/target/logic-target.gc")
;; name: basebutton.gc
;; name in dgo: basebutton

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
(require "engine/game/projectiles.gc")
;; name: baseplat.gc
;; name in dgo: baseplat

View file

@ -1,5 +1,14 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/common-obs/generic-obs-h.gc")
(require "engine/gfx/sprite/sparticle/sparticle-h.gc")
(require "engine/anim/joint-h.gc")
(require "engine/gfx/texture/texture-h.gc")
(require "engine/math/vector.gc")
(require "engine/collide/collide-shape-h.gc")
(require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc")
;; name: collectables-part.gc
;; name in dgo: collectables-part

View file

@ -1,5 +1,13 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
(require "engine/physics/trajectory.gc")
(require "engine/collide/collide-cache.gc")
(require "pc/pckernel.gc")
(require "engine/common-obs/collectables-part.gc")
(require "engine/entity/entity.gc")
;; name: collectables.gc
;; name in dgo: collectables

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/common-obs/collectables.gc")
;; name: crates.gc
;; name in dgo: crates

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/water-anim.gc")
;; name: dark-eco-pool.gc
;; name in dgo: dark-eco-pool

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/game/game-h.gc")
;; name: generic-obs-h.gc
;; name in dgo: generic-obs-h

View file

@ -1,5 +1,12 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/common-obs/process-drawable.gc")
(require "engine/nav/navigate-h.gc")
(require "pc/util/pc-anim-util.gc")
(require "engine/level/level.gc")
(require "engine/camera/camera.gc")
;; name: generic-obs.gc
;; name in dgo: generic-obs

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/game/game-h.gc")
;; name: nav-enemy-h.gc
;; name in dgo: nav-enemy-h

View file

@ -1,5 +1,12 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/nav/navigate.gc")
(require "engine/common-obs/process-taskable.gc")
(require "engine/anim/aligner.gc")
(require "engine/geometry/path.gc")
(require "engine/common-obs/nav-enemy-h.gc")
;; name: nav-enemy.gc
;; name in dgo: nav-enemy

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/collectables.gc")
(require "engine/common-obs/baseplat.gc")
;; name: orb-cache.gc
;; name in dgo: orb-cache

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
(require "engine/geometry/path.gc")
;; name: plat-button.gc
;; name in dgo: plat-button

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/plat.gc")
(require "engine/common-obs/baseplat.gc")
;; name: plat-eco.gc
;; name in dgo: plat-eco

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
(require "engine/geometry/path.gc")
(require "engine/util/sync-info.gc")
;; name: plat.gc
;; name in dgo: plat

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/gfx/hw/display-h.gc")
(require "engine/anim/joint-h.gc")
(require "engine/game/game-h.gc")
;; name: process-drawable-h.gc
;; name in dgo: process-drawable-h

View file

@ -1,5 +1,14 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/engine/engines.gc")
(require "engine/gfx/merc/merc-blend-shape.gc")
(require "engine/game/game-info.gc")
(require "engine/gfx/foreground/eye-h.gc")
(require "engine/gfx/shadow/shadow-cpu-h.gc")
(require "engine/collide/collide-shape-rider.gc")
(require "engine/load/loader.gc")
;; name: process-drawable.gc
;; name in dgo: process-drawable

View file

@ -1,5 +1,12 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/geometry/path-h.gc")
(require "engine/anim/joint-mod-h.gc")
(require "engine/game/task/task-control.gc")
(require "engine/common-obs/collectables.gc")
(require "engine/game/main.gc")
;; name: process-taskable.gc
;; name in dgo: process-taskable

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "kernel-defs.gc")
;; name: rigid-body-h.gc
;; name in dgo: rigid-body-h

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
(require "engine/common-obs/water-anim.gc")
(require "engine/common-obs/rigid-body-h.gc")
;; name: rigid-body.gc
;; name in dgo: rigid-body

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
;; name: ropebridge.gc
;; name in dgo: ropebridge

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/nav-enemy.gc")
(require "engine/common-obs/water.gc")
;; name: sharkey.gc
;; name in dgo: sharkey

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/sound/gsound.gc")
;; name: ticky.gc
;; name in dgo: ticky

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/math/quaternion.gc")
(require "engine/game/game-h.gc")
;; name: tippy.gc
;; name in dgo: tippy

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/camera.gc")
(require "engine/common-obs/process-drawable.gc")
(require "engine/game/settings.gc")
;; name: voicebox.gc
;; name in dgo: voicebox

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "GAME.CGO")
(require "engine/common-obs/process-drawable.gc")
(require "engine/gfx/foreground/ripple.gc")
(require "engine/common-obs/water-h.gc")
;; name: water-anim.gc
;; name in dgo: water-anim

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/game/main-h.gc")
(require "engine/game/game-h.gc")
(require "kernel/gkernel-h.gc")
;; name: water-h.gc
;; name in dgo: water-h

View file

@ -1,5 +1,12 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/game/effect-control.gc")
(require "engine/common-obs/generic-obs.gc")
(require "engine/gfx/foreground/ripple.gc")
(require "engine/common-obs/water-h.gc")
(require "engine/geometry/vol.gc")
;; name: water.gc
;; name in dgo: water

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel/gcommon.gc")
;; name: art-h.gc
;; name in dgo: art-h

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/util/glist-h.gc")
(require "engine/anim/aligner.gc")
;; name: anim-tester.gc
;; name in dgo: anim-tester

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel/gcommon.gc")
;; name: assert-h.gc
;; name in dgo: assert-h

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/debug/assert-h.gc")
;; name: assert.gc
;; name in dgo: assert

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: debug-h.gc
;; name in dgo: debug-h

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/math/vector-h.gc")
(require "engine/debug/debug-h.gc")
(require "engine/math/math.gc")
;; name: debug-sphere.gc
;; name in dgo: debug-sphere

View file

@ -1,5 +1,15 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/gfx/hw/display.gc")
(require "engine/draw/drawable-group-h.gc")
(require "engine/gfx/math-camera.gc")
(require "engine/debug/debug-sphere.gc")
(require "engine/camera/cam-debug-h.gc")
(require "engine/geometry/geometry.gc")
(require "engine/gfx/lights-h.gc")
(require "engine/math/vector.gc")
;; name: debug.gc
;; name in dgo: debug

View file

@ -1,5 +1,14 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/camera/cam-update.gc")
(require "engine/game/task/task-control.gc")
(require "engine/draw/drawable.gc")
(require "engine/math/euler.gc")
(require "engine/entity/entity.gc")
(require "engine/debug/memory-usage.gc")
(require "engine/debug/menu.gc")
;; name: default-menu.gc
;; name in dgo: default-menu

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel-defs.gc")
;; name: memory-usage-h.gc
;; name in dgo: memory-usage-h

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/level/level.gc")
;; name: memory-usage.gc
;; name in dgo: memory-usage

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/gfx/hw/display.gc")
(require "engine/gfx/font.gc")
;; name: menu.gc
;; name in dgo: menu

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/gfx/sprite/sparticle/sparticle-launcher.gc")
(require "engine/debug/debug.gc")
;; name: part-tester.gc
;; name in dgo: part-tester

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel/gcommon.gc")
;; name: stats-h.gc
;; name in dgo: stats-h

View file

@ -1,5 +1,10 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/common-obs/generic-obs.gc")
(require "engine/anim/aligner.gc")
(require "engine/entity/entity.gc")
;; name: viewer.gc
;; name in dgo: viewer

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/dma/dma-buffer.gc")
;; name: dma-bucket.gc
;; name in dgo: dma-bucket

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/dma/dma.gc")
;; name: dma-buffer.gc
;; name in dgo: dma-buffer
@ -268,65 +271,6 @@
(dma-send-chain chan (the-as uint (-> buf data)))
)
(defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list)
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop.
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
(let ((reg-count (length reg-list))
(qwc (+ (length reg-list) 1))
(reg-names (apply first reg-list))
(reg-datas (apply second reg-list))
)
`(begin
;; dma tag
(dma-buffer-add-cnt-vif2 ,buf ,qwc
(new 'static 'vif-tag :cmd (vif-cmd flusha))
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
)
;; gif tag for editing gs regs
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
)
;; gs regs
(dma-buffer-add-uint64 ,buf
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
)
)
)
)
(defmacro dma-buffer-add-gs-set (buf &rest reg-list)
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
(let ((reg-count (length reg-list))
(qwc (+ (length reg-list) 1))
(reg-names (apply first reg-list))
(reg-datas (apply second reg-list))
)
`(begin
;; dma tag
(dma-buffer-add-cnt-vif2 ,buf ,qwc
(new 'static 'vif-tag :cmd (vif-cmd nop))
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
)
;; gif tag for editing gs regs
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
)
;; gs regs
(dma-buffer-add-uint64 ,buf
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
)
)
)
)
(defmacro with-cnt-vif-block (bindings &rest body)
"Start a cnt w/ vif direct to gif dma packet setup for the dma-buffer in bindings.
With this, you can transfer data through PATH2 without having to setup the tag yourself.

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/dma/dma-buffer.gc")
;; name: dma-disasm.gc
;; name in dgo: dma-disasm

View file

@ -1,5 +1,8 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "kernel/gcommon.gc")
;; name: dma-h.gc
;; name in dgo: dma-h

View file

@ -1,5 +1,9 @@
;;-*-Lisp-*-
(in-package goal)
(bundles "ENGINE.CGO" "GAME.CGO")
(require "engine/dma/dma-h.gc")
(require "engine/ps2/vif-h.gc")
;; name: dma.gc
;; name in dgo: dma

Some files were not shown because too many files have changed in this diff Show more