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
557 changed files with 3200 additions and 179 deletions
-4
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() {
+4
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;
+2
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());
+9 -4
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, {}});
}
}
+4 -2
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 {
-3
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:
+1
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
+1
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
+4
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
+4
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
@@ -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
+3
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
+11
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
+9
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
+3
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
@@ -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
@@ -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
+9
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
@@ -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
@@ -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
@@ -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
@@ -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
+3
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
@@ -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
@@ -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
@@ -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
+11
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
+4
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
+12
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+1 -1
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+3
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
@@ -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
+3
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
@@ -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
+3
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+5
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+3
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
+4
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
@@ -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
@@ -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
@@ -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
+7
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
+3
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
@@ -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
+3
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
+3
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
+3
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
@@ -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
+10
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
@@ -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
@@ -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
@@ -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
+4
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
@@ -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
+3
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
+5
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
+3
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
+3 -59
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.
+3
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
+3
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
+4
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