From 9ba86c8b6a5f51bc7eddb7b119ef8770e76734a2 Mon Sep 17 00:00:00 2001 From: water111 <48171810+water111@users.noreply.github.com> Date: Mon, 17 Apr 2023 13:53:38 -0400 Subject: [PATCH] more generic fixes (#2515) Fixes issue where warp effect looks wrong near the edge of the screen - there was an unhandled `REGION_CLAMP` texture setting. Fixes a potential bug where "warp page" things wouldn't be drawn at all because there is no PC warp bucket. Unclear if anything actually fits this category, but it doesn't hurt. Turn on PC-format texture uploads for the water page so the precursor guy uses the right texture. It has to use generic because it abuses the generic death query thing to spawn particles. Workaround for some issues with rebuilding level files after changing engine files. Not a perfect solution, but probably good enough. --- .../opengl_renderer/DirectRenderer.cpp | 12 +- .../opengl_renderer/DirectRenderer2.cpp | 10 +- .../foreground/Generic2_OpenGL.cpp | 18 +- .../opengl_renderer/sprite/GlowRenderer.cpp | 2 +- .../opengl_renderer/sprite/Sprite3.cpp | 2 +- .../jak2/engine/gfx/foreground/foreground.gc | 18 +- goal_src/jak2/engine/gfx/texture/texture.gc | 2 +- goal_src/jak2/game.gp | 313 +++++++++--------- goal_src/jak2/lib/project-lib.gp | 4 +- 9 files changed, 189 insertions(+), 192 deletions(-) diff --git a/game/graphics/opengl_renderer/DirectRenderer.cpp b/game/graphics/opengl_renderer/DirectRenderer.cpp index 36391dc127..1be75b1893 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.cpp +++ b/game/graphics/opengl_renderer/DirectRenderer.cpp @@ -324,15 +324,9 @@ void DirectRenderer::update_gl_texture(SharedRenderState* render_state, int unit } if (!tex) { - // TODO Add back - if (state.texture_base_ptr >= 8160 && state.texture_base_ptr <= 8600) { - lg::warn("Failed to find texture at {}, using random (eye zone)", state.texture_base_ptr); - tex = render_state->texture_pool->get_placeholder_texture(); - } else { - // lg::warn("Failed to find texture at {}, using random (direct: {})", state.texture_base_ptr, - // name_and_id()); - tex = render_state->texture_pool->get_placeholder_texture(); - } + lg::warn("Failed to find texture at {}, using random (direct: {})", state.texture_base_ptr, + name_and_id()); + tex = render_state->texture_pool->get_placeholder_texture(); } ASSERT(tex); diff --git a/game/graphics/opengl_renderer/DirectRenderer2.cpp b/game/graphics/opengl_renderer/DirectRenderer2.cpp index 03fc046f89..9cb5f755be 100644 --- a/game/graphics/opengl_renderer/DirectRenderer2.cpp +++ b/game/graphics/opengl_renderer/DirectRenderer2.cpp @@ -352,14 +352,8 @@ void DirectRenderer2::setup_opengl_tex(u16 unit, } if (!tex) { - // TODO Add back - if (tbp_to_lookup >= 8160 && tbp_to_lookup <= 8600) { - lg::warn("Failed to find texture at {}, using random (eye zone)", tbp_to_lookup); - tex = render_state->texture_pool->get_placeholder_texture(); - } else { - lg::warn("Failed to find texture at {}, using random (direct2: {})", tbp_to_lookup, m_name); - tex = render_state->texture_pool->get_placeholder_texture(); - } + lg::warn("Failed to find texture at {}, using random (direct2: {})", tbp_to_lookup, m_name); + tex = render_state->texture_pool->get_placeholder_texture(); } glActiveTexture(GL_TEXTURE0 + unit); diff --git a/game/graphics/opengl_renderer/foreground/Generic2_OpenGL.cpp b/game/graphics/opengl_renderer/foreground/Generic2_OpenGL.cpp index 9e89403922..f954dacae2 100644 --- a/game/graphics/opengl_renderer/foreground/Generic2_OpenGL.cpp +++ b/game/graphics/opengl_renderer/foreground/Generic2_OpenGL.cpp @@ -224,15 +224,9 @@ void Generic2::setup_opengl_tex(u16 unit, } if (!tex) { - // TODO Add back - if (tbp_to_lookup >= 8160 && tbp_to_lookup <= 8600) { - lg::warn("Failed to find texture at {}, using random (eye zone)", tbp_to_lookup); - tex = render_state->texture_pool->get_placeholder_texture(); - } else { - lg::warn("Failed to find texture at {}, using random (generic2: {})", tbp_to_lookup, - name_and_id()); - tex = render_state->texture_pool->get_placeholder_texture(); - } + lg::warn("Failed to find texture at {}, using random (generic2: {})", tbp_to_lookup, + name_and_id()); + tex = render_state->texture_pool->get_placeholder_texture(); } glActiveTexture(GL_TEXTURE0 + unit); @@ -260,6 +254,9 @@ void Generic2::setup_opengl_tex(u16 unit, if (render_state->version == GameVersion::Jak2 && tbp_to_lookup == 1216) { glUniform1ui(m_ogl.warp_sample_mode, 1); + // warp shader uses region clamp, which isn't supported by DrawMode. + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); } else { glUniform1ui(m_ogl.warp_sample_mode, 0); } @@ -276,9 +273,6 @@ void Generic2::do_draws_for_alpha(SharedRenderState* render_state, setup_opengl_for_draw_mode(first.mode, first.fix, render_state); setup_opengl_tex(0, first.tbp, first.mode.get_filt_enable(), first.mode.get_clamp_s_enable(), first.mode.get_clamp_t_enable(), render_state); - // if (alpha == DrawMode::AlphaBlend::SRC_0_DST_DST) { - // glBindTexture(GL_TEXTURE_2D, render_state->texture_pool->get_placeholder_texture()); - // } glDrawElements(GL_TRIANGLE_STRIP, bucket.idx_count, GL_UNSIGNED_INT, (void*)(sizeof(u32) * bucket.idx_idx)); prof.add_draw_call(); diff --git a/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp b/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp index 774210b716..5caf1ed2d3 100644 --- a/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp +++ b/game/graphics/opengl_renderer/sprite/GlowRenderer.cpp @@ -704,7 +704,7 @@ void GlowRenderer::draw_sprites(SharedRenderState* render_state, ScopedProfilerN const auto& record = m_sprite_records[i]; auto tex = render_state->texture_pool->lookup(record.tbp); if (!tex) { - fmt::print("Failed to find texture at {}, using random", record.tbp); + fmt::print("Failed to find texture at {}, using random (glow)", record.tbp); tex = render_state->texture_pool->get_placeholder_texture(); } glActiveTexture(GL_TEXTURE0); diff --git a/game/graphics/opengl_renderer/sprite/Sprite3.cpp b/game/graphics/opengl_renderer/sprite/Sprite3.cpp index 59f8f4a366..74a62124c3 100644 --- a/game/graphics/opengl_renderer/sprite/Sprite3.cpp +++ b/game/graphics/opengl_renderer/sprite/Sprite3.cpp @@ -584,7 +584,7 @@ void Sprite3::flush_sprites(SharedRenderState* render_state, tex = render_state->texture_pool->lookup(tbp); if (!tex) { - lg::warn("Failed to find texture at {}, using random", tbp); + lg::warn("Failed to find texture at {}, using random (sprite)", tbp); tex = render_state->texture_pool->get_placeholder_texture(); } ASSERT(tex); diff --git a/goal_src/jak2/engine/gfx/foreground/foreground.gc b/goal_src/jak2/engine/gfx/foreground/foreground.gc index 1237f95ced..e870ace4de 100644 --- a/goal_src/jak2/engine/gfx/foreground/foreground.gc +++ b/goal_src/jak2/engine/gfx/foreground/foreground.gc @@ -1269,8 +1269,10 @@ ;; reassign for PC. For the most part, we reassign everything to merc. The exceptions are: ;; - "warp" effect is on: this special effect isn't supported by PC merc ;; - "death" effect is on: this requires the renderer to return transformed vertices. - ;; - "force-mercneric" is on: this is used rarely, and on stuff that doesn't seem to have - ;; - ripple query? + ;; - using the warp bucket. - there's no merc warp bucket, so we have to use generic here. + ;; NOTE: we don't listen to force-mercneric because I believe we handle this case correctly + ;; in extract_merc.cpp by checking the trans bit. This can be enabled, but texture uploads + ;; for at least water aren't hooked up to the PC texture system. (when (or (nonzero? (-> (scratchpad-object foreground-work) regs mercneric-used)) (nonzero? (-> (scratchpad-object foreground-work) regs emerc-used)) ) @@ -1285,9 +1287,19 @@ (cond ((or (logtest? (-> geo effect effect-idx effect-bits) (effect-bits cross-fade)) (logtest? (-> geo effect effect-idx effect-bits) (effect-bits force-mercneric)) + (= (-> geo effect effect-idx texture-index) (tpage-category warp)) (nonzero? (-> dc death-timer)) ) - ;; (format *stdcon* "[fg] ~S to generic~%" (-> dc process name)) + + ; (if (logtest? (-> geo effect effect-idx effect-bits) (effect-bits cross-fade)) + ; (format *stdcon* "[fg] ~S to generic 1~%" (-> dc process name)) + ; ) + ; (if (= (-> geo effect effect-idx texture-index) (tpage-category warp)) + ; (format *stdcon* "[fg] ~S to generic 2~%" (-> dc process name)) + ; ) + ; (if (nonzero? (-> dc death-timer)) + ; (format *stdcon* "[fg] ~S to generic 3~%" (-> dc process name)) + ; ) (set! (-> bucket-info effect effect-idx merc-path) 2) (set! (-> (scratchpad-object foreground-work) regs mercneric-used) 1) ) diff --git a/goal_src/jak2/engine/gfx/texture/texture.gc b/goal_src/jak2/engine/gfx/texture/texture.gc index 808a777703..7b25190528 100644 --- a/goal_src/jak2/engine/gfx/texture/texture.gc +++ b/goal_src/jak2/engine/gfx/texture/texture.gc @@ -1688,7 +1688,7 @@ additionally, some texture pages have a chunk system that allows more specific c ) ) (set! (-> lev upload-size 4) - (upload-vram-pages-pris pool (-> pool segment-common) tpage bucket (the-as (pointer int32) t0-15)) + (upload-vram-pages-pris-pc pool (-> pool segment-common) tpage bucket (the-as (pointer int32) t0-15)) ) ) ) diff --git a/goal_src/jak2/game.gp b/goal_src/jak2/game.gp index 58011f2f0f..4ac8598bf9 100644 --- a/goal_src/jak2/game.gp +++ b/goal_src/jak2/game.gp @@ -69,7 +69,7 @@ ;; GOAL Kernel ;;;;;;;;;;;;;;;;; -(cgo-file "kernel.gd" ()) +(cgo-file "kernel.gd" '()) ;;;;;;;;;;;;;;;;;;;;; ;; misc files @@ -90,161 +90,164 @@ ) (hash-table-set! *file-entry-map* "dir-tpages.go" #f) -(cgo-file "engine.gd" ("$OUT/obj/gcommon.o" "$OUT/obj/gstate.o" "$OUT/obj/gstring.o" "$OUT/obj/gkernel.o")) -(cgo-file "game.gd" ("$OUT/obj/gcommon.o" "$OUT/obj/gstate.o" "$OUT/obj/gstring.o" "$OUT/obj/gkernel.o")) +(cgo-file "engine.gd" '("$OUT/obj/gcommon.o" "$OUT/obj/gstate.o" "$OUT/obj/gstring.o" "$OUT/obj/gkernel.o")) +(cgo-file "game.gd" '("$OUT/obj/gcommon.o" "$OUT/obj/gstate.o" "$OUT/obj/gstring.o" "$OUT/obj/gkernel.o")) -;; TODO - can't use a variable because :deps downstream doesn't take a proper list (can't pass it in quoted) -;; (define common-dep ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cwi.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lmeetbrt.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cta.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "palout.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "std.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "for.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "hideout.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ctb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "kiosk.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "dg1.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "feb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "dmi.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "oracle.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lbrnermk.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ctc.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "fra.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "mtn.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "introcst.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ate.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cfb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cab.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "str.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ato.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "seb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lpower.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cib.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lshuttle.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "fordumpc.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "thr.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "pri.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lkiddoge.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "nestt.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "neb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cob.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lbombbot.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "demo.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lerlchal.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "outrocst.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "par.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "fda.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lwhack.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cas.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "coa.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "toe.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "palboss.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "frb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "pae.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "title.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "drillmtn.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "pac.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lprotect.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "fea.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "onintent.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "sta.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cgc.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cma.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "fdb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ska.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cia.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "toa.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "pas.gd" ("$OUT/obj/cty-guard-turret-button.o")) -;; (cgo-file "lbbush.gd" ("$OUT/obj/cty-guard-turret-button.o")) - moved -;; (cgo-file "lpackage.gd" ("$OUT/obj/cty-guard-turret-button.o")) - moved -(cgo-file "lportrun.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cgb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lhelldog.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "gga.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "mcn.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "vin.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cga.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cpa.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "unb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cpo.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cap.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lbbush.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lpackage.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ctykora.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "rui.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lsack.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ctyasha.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "hiphog.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "tod.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lerltess.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "tob.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "vi1.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lracecb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lhipout.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "garage.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "casext.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "stadblmp.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "sag.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lintcstb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lcitylow.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lracelit.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "fordumpd.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "swe.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "sew.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lracedb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lsamergd.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ljakdax.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lysamsam.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lwidesta.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lsmysbrt.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lwideb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ldjakbrn.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ltrnysam.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "und.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "swb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "dri.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cascity.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lashthrn.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lcguard.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "tombext.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "mtx.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lracedf.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ljkdxash.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lerrol.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "d3b.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lwidea.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "fob.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lkeirift.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "d3a.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lashgrd.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ltess.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "portwall.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "nes.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lwidec.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cfa.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lprtrace.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "tbo.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "loutcstb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ltrnkrkd.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "toc.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ltrntess.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lguard.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lerbrngd.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lracecf.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lprsncst.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "drb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lyskdcd.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lthrnout.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "stc.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "halfpipe.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "cmb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "stb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lracebf.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ltentout.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lgarcsta.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "lracebb.gd" ("$OUT/obj/cty-guard-turret-button.o")) -(cgo-file "ltentob.gd" ("$OUT/obj/cty-guard-turret-button.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.o")) +(cgo-file "cwi.gd" common-dep) +(cgo-file "lmeetbrt.gd" common-dep) +(cgo-file "cta.gd" common-dep) +(cgo-file "palout.gd" common-dep) +(cgo-file "std.gd" common-dep) +(cgo-file "for.gd" common-dep) +(cgo-file "hideout.gd" common-dep) +(cgo-file "ctb.gd" common-dep) +(cgo-file "kiosk.gd" common-dep) +(cgo-file "dg1.gd" common-dep) +(cgo-file "feb.gd" common-dep) +(cgo-file "dmi.gd" common-dep) +(cgo-file "oracle.gd" common-dep) +(cgo-file "lbrnermk.gd" common-dep) +(cgo-file "ctc.gd" common-dep) +(cgo-file "fra.gd" common-dep) +(cgo-file "mtn.gd" common-dep) +(cgo-file "introcst.gd" common-dep) +(cgo-file "ate.gd" common-dep) +(cgo-file "cfb.gd" common-dep) +(cgo-file "cab.gd" common-dep) +(cgo-file "str.gd" common-dep) +(cgo-file "ato.gd" common-dep) +(cgo-file "seb.gd" common-dep) +(cgo-file "lpower.gd" common-dep) +(cgo-file "cib.gd" common-dep) +(cgo-file "lshuttle.gd" common-dep) +(cgo-file "fordumpc.gd" common-dep) +(cgo-file "thr.gd" common-dep) +(cgo-file "pri.gd" common-dep) +(cgo-file "lkiddoge.gd" common-dep) +(cgo-file "nestt.gd" common-dep) +(cgo-file "neb.gd" common-dep) +(cgo-file "cob.gd" common-dep) +(cgo-file "lbombbot.gd" common-dep) +(cgo-file "demo.gd" common-dep) +(cgo-file "lerlchal.gd" common-dep) +(cgo-file "outrocst.gd" common-dep) +(cgo-file "par.gd" common-dep) +(cgo-file "fda.gd" common-dep) +(cgo-file "lwhack.gd" common-dep) +(cgo-file "cas.gd" common-dep) +(cgo-file "coa.gd" common-dep) +(cgo-file "toe.gd" common-dep) +(cgo-file "palboss.gd" common-dep) +(cgo-file "frb.gd" common-dep) +(cgo-file "pae.gd" common-dep) +(cgo-file "title.gd" common-dep) +(cgo-file "drillmtn.gd" common-dep) +(cgo-file "pac.gd" common-dep) +(cgo-file "lprotect.gd" common-dep) +(cgo-file "fea.gd" common-dep) +(cgo-file "onintent.gd" common-dep) +(cgo-file "sta.gd" common-dep) +(cgo-file "cgc.gd" common-dep) +(cgo-file "cma.gd" common-dep) +(cgo-file "fdb.gd" common-dep) +(cgo-file "ska.gd" common-dep) +(cgo-file "cia.gd" common-dep) +(cgo-file "toa.gd" common-dep) +(cgo-file "pas.gd" common-dep) +;; (cgo-file "lbbush.gd" common-dep) - moved +;; (cgo-file "lpackage.gd" common-dep) - moved +(cgo-file "lportrun.gd" common-dep) +(cgo-file "cgb.gd" common-dep) +(cgo-file "lhelldog.gd" common-dep) +(cgo-file "gga.gd" common-dep) +(cgo-file "mcn.gd" common-dep) +(cgo-file "vin.gd" common-dep) +(cgo-file "cga.gd" common-dep) +(cgo-file "cpa.gd" common-dep) +(cgo-file "unb.gd" common-dep) +(cgo-file "cpo.gd" common-dep) +(cgo-file "cap.gd" common-dep) +(cgo-file "lbbush.gd" common-dep) +(cgo-file "lpackage.gd" common-dep) +(cgo-file "ctykora.gd" common-dep) +(cgo-file "rui.gd" common-dep) +(cgo-file "lsack.gd" common-dep) +(cgo-file "ctyasha.gd" common-dep) +(cgo-file "hiphog.gd" common-dep) +(cgo-file "tod.gd" common-dep) +(cgo-file "lerltess.gd" common-dep) +(cgo-file "tob.gd" common-dep) +(cgo-file "vi1.gd" common-dep) +(cgo-file "lracecb.gd" common-dep) +(cgo-file "lhipout.gd" common-dep) +(cgo-file "garage.gd" common-dep) +(cgo-file "casext.gd" common-dep) +(cgo-file "stadblmp.gd" common-dep) +(cgo-file "sag.gd" common-dep) +(cgo-file "lintcstb.gd" common-dep) +(cgo-file "lcitylow.gd" common-dep) +(cgo-file "lracelit.gd" common-dep) +(cgo-file "fordumpd.gd" common-dep) +(cgo-file "swe.gd" common-dep) +(cgo-file "sew.gd" common-dep) +(cgo-file "lracedb.gd" common-dep) +(cgo-file "lsamergd.gd" common-dep) +(cgo-file "ljakdax.gd" common-dep) +(cgo-file "lysamsam.gd" common-dep) +(cgo-file "lwidesta.gd" common-dep) +(cgo-file "lsmysbrt.gd" common-dep) +(cgo-file "lwideb.gd" common-dep) +(cgo-file "ldjakbrn.gd" common-dep) +(cgo-file "ltrnysam.gd" common-dep) +(cgo-file "und.gd" common-dep) +(cgo-file "swb.gd" common-dep) +(cgo-file "dri.gd" common-dep) +(cgo-file "cascity.gd" common-dep) +(cgo-file "lashthrn.gd" common-dep) +(cgo-file "lcguard.gd" common-dep) +(cgo-file "tombext.gd" common-dep) +(cgo-file "mtx.gd" common-dep) +(cgo-file "lracedf.gd" common-dep) +(cgo-file "ljkdxash.gd" common-dep) +(cgo-file "lerrol.gd" common-dep) +(cgo-file "d3b.gd" common-dep) +(cgo-file "lwidea.gd" common-dep) +(cgo-file "fob.gd" common-dep) +(cgo-file "lkeirift.gd" common-dep) +(cgo-file "d3a.gd" common-dep) +(cgo-file "lashgrd.gd" common-dep) +(cgo-file "ltess.gd" common-dep) +(cgo-file "portwall.gd" common-dep) +(cgo-file "nes.gd" common-dep) +(cgo-file "lwidec.gd" common-dep) +(cgo-file "cfa.gd" common-dep) +(cgo-file "lprtrace.gd" common-dep) +(cgo-file "tbo.gd" common-dep) +(cgo-file "loutcstb.gd" common-dep) +(cgo-file "ltrnkrkd.gd" common-dep) +(cgo-file "toc.gd" common-dep) +(cgo-file "ltrntess.gd" common-dep) +(cgo-file "lguard.gd" common-dep) +(cgo-file "lerbrngd.gd" common-dep) +(cgo-file "lracecf.gd" common-dep) +(cgo-file "lprsncst.gd" common-dep) +(cgo-file "drb.gd" common-dep) +(cgo-file "lyskdcd.gd" common-dep) +(cgo-file "lthrnout.gd" common-dep) +(cgo-file "stc.gd" common-dep) +(cgo-file "halfpipe.gd" common-dep) +(cgo-file "cmb.gd" common-dep) +(cgo-file "stb.gd" common-dep) +(cgo-file "lracebf.gd" common-dep) +(cgo-file "ltentout.gd" common-dep) +(cgo-file "lgarcsta.gd" common-dep) +(cgo-file "lracebb.gd" common-dep) +(cgo-file "ltentob.gd" common-dep) ;;;;;;;;;;;;;;;;;;;;; ;; ANIMATIONS diff --git a/goal_src/jak2/lib/project-lib.gp b/goal_src/jak2/lib/project-lib.gp index 99a5614dd0..7596a61318 100644 --- a/goal_src/jak2/lib/project-lib.gp +++ b/goal_src/jak2/lib/project-lib.gp @@ -50,7 +50,7 @@ ) ) -;; TODO - deps should probably just treated as a proper list to refactor duplication +;; TODO - deps should probably just treated as a proper list to refactor duplication (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." @@ -224,7 +224,7 @@ `(begin ;; macros can't return nothing, so these macros assume they will be given a non-empty list (when (not (null? '(,@gsrc-seq-args))) - (goal-src-sequence "" :deps ,deps ,@gsrc-seq-args)) + (goal-src-sequence "" :deps ,(eval deps) ,@gsrc-seq-args)) (when (not (null? '(,@textures))) (copy-textures ,@textures)) (when (not (null? '(,@gos)))