[jak2] improve debugging tools for entity lights and regions (#2327)

also fixes some other random bugs
This commit is contained in:
ManDude 2023-03-18 06:29:40 +00:00 committed by GitHub
parent 2fa4a23ea1
commit 198c8e1946
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 124 additions and 104 deletions

View file

@ -117,6 +117,13 @@
"name": "Game - Jak 2 - Runtime", "name": "Game - Jak 2 - Runtime",
"args": ["-v", "--game", "jak2", "--", "-fakeiso", "-debug"] "args": ["-v", "--game", "jak2", "--", "-fakeiso", "-debug"]
}, },
{
"type": "default",
"project": "CMakeLists.txt",
"projectTarget": "gk.exe (bin\\gk.exe)",
"name": "Game - Jak 2 - Runtime (boot)",
"args": ["-v", "--game", "jak2", "--", "-boot", "-fakeiso", "-debug"]
},
{ {
"type": "default", "type": "default",
"project": "CMakeLists.txt", "project": "CMakeLists.txt",

View file

@ -409,11 +409,16 @@ void ISONameFromAnimationName(char* dst, const char* src) {
// some special case words map to special letters (likely to avoid animation name conflicts) // some special case words map to special letters (likely to avoid animation name conflicts)
if (next_ptr - src_ptr == 10 && !memcmp(src_ptr, "resolution", 10)) { if (next_ptr - src_ptr == 10 && !memcmp(src_ptr, "resolution", 10)) {
// NOTE : jak 2 also allows "res" here but that doesn't work properly.
char_to_add = 'z'; char_to_add = 'z';
} else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "accept", 6)) { } else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "accept", 6)) {
char_to_add = 'y'; char_to_add = 'y';
} else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "reject", 6)) { } else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "reject", 6)) {
char_to_add = 'n'; char_to_add = 'n';
} else if (next_ptr - src_ptr == 5 && !memcmp(src_ptr, "keira", 5)) {
// NOTE : this was added in jak 2. it's safe to use in jak 1 since she was referred to as
// "assistant" there
char_to_add = 'i';
} else { } else {
// not a special case, just take the first letter. // not a special case, just take the first letter.
char_to_add = *src_ptr; char_to_add = *src_ptr;

View file

@ -4440,7 +4440,7 @@
((on-screen int32 :offset-assert 4) ((on-screen int32 :offset-assert 4)
(last-screen int32 :offset-assert 8) (last-screen int32 :offset-assert 8)
(frames display-frame 2 :offset-assert 12) (frames display-frame 2 :offset-assert 12)
(bgcolor uint64 :offset-assert 24) (bgcolor gs-bgcolor :offset-assert 24)
(pmode gs-pmode :offset-assert 32) (pmode gs-pmode :offset-assert 32)
(clock clock 13 :offset-assert 40) (clock clock 13 :offset-assert 40)
(session-clock clock :offset 40) (session-clock clock :offset 40)

View file

@ -98,6 +98,7 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
init_bucket_renderer<DirectRenderer>("sky-draw", BucketCategory::OTHER, BucketId::SKY_DRAW, 1024); init_bucket_renderer<DirectRenderer>("sky-draw", BucketCategory::OTHER, BucketId::SKY_DRAW, 1024);
init_bucket_renderer<OceanMidAndFar>("ocean-mid-far", BucketCategory::OCEAN, init_bucket_renderer<OceanMidAndFar>("ocean-mid-far", BucketCategory::OCEAN,
BucketId::OCEAN_MID_FAR); BucketId::OCEAN_MID_FAR);
// hardcoded level number!!!
for (int i = 0; i < 6; ++i) { for (int i = 0; i < 6; ++i) {
#define GET_BUCKET_ID_FOR_LIST(bkt1, bkt2, idx) ((int)(bkt1) + ((int)(bkt2) - (int)(bkt1)) * (idx)) #define GET_BUCKET_ID_FOR_LIST(bkt1, bkt2, idx) ((int)(bkt1) + ((int)(bkt2) - (int)(bkt1)) * (idx))
init_bucket_renderer<TextureUploadHandler>( init_bucket_renderer<TextureUploadHandler>(
@ -143,6 +144,9 @@ void OpenGLRenderer::init_bucket_renderers_jak2() {
fmt::format("etie-t-l{}-alpha", i), BucketCategory::TIE, fmt::format("etie-t-l{}-alpha", i), BucketCategory::TIE,
GET_BUCKET_ID_FOR_LIST(BucketId::ETIE_T_L0_ALPHA, BucketId::ETIE_T_L1_ALPHA, i), tie, GET_BUCKET_ID_FOR_LIST(BucketId::ETIE_T_L0_ALPHA, BucketId::ETIE_T_L1_ALPHA, i), tie,
tfrag3::TieCategory::TRANS_ENVMAP); tfrag3::TieCategory::TRANS_ENVMAP);
init_bucket_renderer<Merc2>(
fmt::format("merc-l{}-alpha", i), BucketCategory::MERC,
GET_BUCKET_ID_FOR_LIST(BucketId::MERC_L0_ALPHA, BucketId::MERC_L1_ALPHA, i));
init_bucket_renderer<TextureUploadHandler>( init_bucket_renderer<TextureUploadHandler>(
fmt::format("tex-l{}-pris", i), BucketCategory::TEX, fmt::format("tex-l{}-pris", i), BucketCategory::TEX,

View file

@ -580,7 +580,8 @@ void Tie3::draw_matching_draws_for_tree(int idx,
last_texture = draw.tree_tex_id; last_texture = draw.tree_tex_id;
} }
auto double_draw = setup_tfrag_shader(render_state, draw.mode, ShaderId::TFRAG3); auto double_draw = setup_tfrag_shader(render_state, draw.mode,
use_envmap ? ShaderId::ETIE_BASE : ShaderId::TFRAG3);
glUniform1i(use_envmap ? m_etie_base_uniforms.decal : m_uniforms.decal, glUniform1i(use_envmap ? m_etie_base_uniforms.decal : m_uniforms.decal,
draw.mode.get_decal() ? 1 : 0); draw.mode.get_decal() ? 1 : 0);

View file

@ -157,9 +157,13 @@ DoubleDraw setup_opengl_from_draw_mode(DrawMode mode, u32 tex_unit, bool mipmap)
DoubleDraw setup_tfrag_shader(SharedRenderState* render_state, DrawMode mode, ShaderId shader) { DoubleDraw setup_tfrag_shader(SharedRenderState* render_state, DrawMode mode, ShaderId shader) {
auto draw_settings = setup_opengl_from_draw_mode(mode, GL_TEXTURE0, true); auto draw_settings = setup_opengl_from_draw_mode(mode, GL_TEXTURE0, true);
glUniform1f(glGetUniformLocation(render_state->shaders[shader].id(), "alpha_min"), auto sh_id = render_state->shaders[shader].id();
draw_settings.aref_first); if (auto u_id = glGetUniformLocation(sh_id, "alpha_min"); u_id != -1) {
glUniform1f(glGetUniformLocation(render_state->shaders[shader].id(), "alpha_max"), 10.f); glUniform1f(u_id, draw_settings.aref_first);
}
if (auto u_id = glGetUniformLocation(sh_id, "alpha_max"); u_id != -1) {
glUniform1f(u_id, 10.f);
}
return draw_settings; return draw_settings;
} }

View file

@ -154,11 +154,16 @@ void ISONameFromAnimationName(char* dst, const char* src) {
// some special case words map to special letters (likely to avoid animation name conflicts) // some special case words map to special letters (likely to avoid animation name conflicts)
if (next_ptr - src_ptr == 10 && !memcmp(src_ptr, "resolution", 10)) { if (next_ptr - src_ptr == 10 && !memcmp(src_ptr, "resolution", 10)) {
// NOTE : jak 2 also allows "res" here but that doesn't work properly.
char_to_add = 'z'; char_to_add = 'z';
} else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "accept", 6)) { } else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "accept", 6)) {
char_to_add = 'y'; char_to_add = 'y';
} else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "reject", 6)) { } else if (next_ptr - src_ptr == 6 && !memcmp(src_ptr, "reject", 6)) {
char_to_add = 'n'; char_to_add = 'n';
} else if (next_ptr - src_ptr == 5 && !memcmp(src_ptr, "keira", 5)) {
// NOTE : this was added in jak 2. it's safe to use in jak 1 since she was referred to as
// "assistant" there
char_to_add = 'i';
} else { } else {
// not a special case, just take the first letter. // not a special case, just take the first letter.
char_to_add = *src_ptr; char_to_add = *src_ptr;

View file

@ -1417,41 +1417,16 @@ Most functions take a boolean as their first argument. If the boolean is set to
(if (not enable) (if (not enable)
(return #f) (return #f)
) )
(when (!= (-> light extra x) 0.0) (when (!= (-> light level) 0.0)
(add-debug-vector (add-debug-vector enable bucket position (-> light direction) (meters 3) (static-rgba #xff #xff #xff #x80))
enable (let ((light-vec-end (vector+*! (new-stack-vector0) position (-> light direction) (* (meters 3) (-> light level))))
bucket ;; the original code here uses w for alpha but that looks terrible
position (light-rgba (new 'static 'rgba :r (the int (* 128.0 (-> light color x)))
(-> light direction) :g (the int (* 128.0 (-> light color y)))
(meters 3) :b (the int (* 128.0 (-> light color z)))
(new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) :a 128
) )))
(let ((sphere-pos (new-stack-vector0))) (add-debug-text-sphere enable bucket light-vec-end (* (meters 0.5) (-> light level)) (string-format "~S ~,,2f" text (-> light level)) light-rgba)
(let ((v1-3 (-> light direction)))
(let ((a0-3 (* 12288.0 (-> light extra x))))
(.mov vf7 a0-3)
)
(.lvf vf5 (&-> v1-3 quad))
)
(.lvf vf4 (&-> position quad))
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.svf (&-> sphere-pos quad) vf6)
(let ((color-rgba (logior (logior (logior (shr (shl (the int (* 128.0 (-> light color w))) 56) 32)
(shr (shl (the int (* 128.0 (-> light color z))) 56) 40)
)
(shr (shl (the int (* 128.0 (-> light color y))) 56) 48)
)
(shr (shl (the int (* 128.0 (-> light color x))) 56) 56)
)
)
)
(format (clear *temp-string*) "~S ~,,2f" text (-> light extra x))
(let ((t0-2 *temp-string*))
(add-debug-text-sphere enable bucket sphere-pos (* 2048.0 (-> light extra x)) t0-2 (the-as rgba color-rgba))
)
)
) )
) )
#f #f

View file

@ -1062,6 +1062,8 @@
(set! (-> dc shadow-ctrl settings shadow-dir w) shadow-dir-w) (set! (-> dc shadow-ctrl settings shadow-dir w) shadow-dir-w)
) )
) )
(#when PC_PORT (add-debug-lights *display-lights* (bucket-id debug2) (-> lg lights) (-> dc origin)))
) )
) )
) )

View file

@ -178,6 +178,7 @@
(define *display-sprite-marks* #f) (define *display-sprite-marks* #f)
(define *display-sprite-spheres* #f) (define *display-sprite-spheres* #f)
(define *display-entity-errors* #t) (define *display-entity-errors* #t)
(#when PC_PORT (define *display-lights* #f))
(define *display-instance-info* #f) (define *display-instance-info* #f)
(define *display-deci-count* #f) (define *display-deci-count* #f)
(define *sync-dma* #f) (define *sync-dma* #f)

View file

@ -1328,34 +1328,43 @@
(define-extern entity-inspect-draw (function entity-debug-inspect object)) (define-extern entity-inspect-draw (function entity-debug-inspect object))
(entity-inspect-draw *entity-debug-inspect*) (entity-inspect-draw *entity-debug-inspect*)
) )
(when *display-region-inside* ;; go through active levels
(format *stdcon* "~1kinside region:~%") (dotimes (lev-i (-> *level* length))
;; go through active levels (let ((lev (-> *level* level lev-i)))
(dotimes (lev-i (-> *level* length)) (when (= (-> lev status) 'active)
(let ((lev (-> *level* level lev-i))) (let ((region-trees (-> lev bsp region-trees)))
(when (= (-> lev status) 'active) (when (nonzero? region-trees)
(let ((region-trees (-> lev bsp region-trees))) (let* ((s3-5 (-> region-trees length))
(when (nonzero? region-trees) (tree-i 0)
(let* ((s3-5 (-> region-trees length)) (region-tree (-> region-trees tree-i))
(tree-i 0) )
(region-tree (-> region-trees tree-i)) (while (< tree-i s3-5)
) (let* ((s0-4 (-> region-tree data2 (+ (-> region-tree length) -1) length))
(while (< tree-i s3-5) (i 0)
(let* ((s0-4 (-> region-tree data2 (+ (-> region-tree length) -1) length)) (region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i))
(i 0) )
(region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i)) (while (< i s0-4)
) (let ((draw? #f))
(while (< i s0-4) (when (and *display-region-inside* (region-method-9 (-> region region) (target-pos 0)))
(when (region-method-9 (-> region region) (target-pos 0)) (true! draw?)
(debug-draw-region region 0) (format *stdcon* "~1kinside region-~D (~A)~%" (-> region region id) (-> lev name)))
(format *stdcon* " region-~D~%" (-> region region id))) (when (and *region-debug-inspect* (or (= *region-debug-inspect* region) (and *merge-region-prims* (= (-> region region id) (-> *region-debug-inspect* region id)))))
(set! i (+ i 1)) (when (= *region-debug-inspect* region)
(set! region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i)) (format *stdcon* "~1kinspecting region-~D (~A)~%" (-> *region-debug-inspect* region id) (-> lev name))
) (format *stdcon* " on-enter: ~A~%" (-> *region-debug-inspect* region on-enter))
(format *stdcon* " on-inside: ~A~%" (-> *region-debug-inspect* region on-inside))
(format *stdcon* " on-exit: ~A~%" (-> *region-debug-inspect* region on-exit))
)
(true! draw?)
)
(when draw?
(debug-draw-region region 0)))
(set! i (+ i 1))
(set! region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i))
) )
(+! tree-i 1)
(set! region-tree (-> region-trees tree-i))
) )
(+! tree-i 1)
(set! region-tree (-> region-trees tree-i))
) )
) )
) )
@ -1363,15 +1372,6 @@
) )
) )
) )
(when *region-debug-inspect*
(format *stdcon* "~1kinspecting region-~D~%" (-> *region-debug-inspect* region id))
(format *stdcon* " on-enter: ~A~%" (-> *region-debug-inspect* region on-enter))
(format *stdcon* " on-inside: ~A~%" (-> *region-debug-inspect* region on-inside))
(format *stdcon* " on-exit: ~A~%" (-> *region-debug-inspect* region on-exit))
(when (or (not *display-region-inside*) (not (region-method-9 (-> *region-debug-inspect* region) (target-pos 0))))
(debug-draw-region *region-debug-inspect* 0)
)
)
) )
) )
(debug-draw-buffers) (debug-draw-buffers)

View file

@ -1232,15 +1232,9 @@
(if (not (-> s5-0 allow-blackout)) (if (not (-> s5-0 allow-blackout))
(set! f0-71 0.0) (set! f0-71 0.0)
) )
(set! (-> v1-133 bgcolor) (set! (-> v1-133 bgcolor r) (the int (* 255.0 (-> s5-0 bg-r))))
(logior (logand (-> v1-133 bgcolor) -256) (shr (shl (the int (* 255.0 (-> s5-0 bg-r))) 56) 56)) (set! (-> v1-133 bgcolor g) (the int (* 255.0 (-> s5-0 bg-g))))
) (set! (-> v1-133 bgcolor b) (the int (* 255.0 (-> s5-0 bg-b))))
(set! (-> v1-133 bgcolor)
(logior (logand (-> v1-133 bgcolor) -65281) (shr (shl (the int (* 255.0 (-> s5-0 bg-g))) 56) 48))
)
(set! (-> v1-133 bgcolor)
(logior (logand (-> v1-133 bgcolor) -16711681) (shr (shl (the int (* 255.0 (-> s5-0 bg-b))) 56) 40))
)
(set! (-> v1-133 pmode alp) (the int (* 255.0 (- 1.0 f0-71)))) (set! (-> v1-133 pmode alp) (the int (* 255.0 (- 1.0 f0-71))))
) )
(set! (-> v1-133 run-half-speed) (the-as basic (-> s5-0 half-speed))) (set! (-> v1-133 run-half-speed) (the-as basic (-> s5-0 half-speed)))

View file

@ -59,7 +59,7 @@ At any point in time, there are 3 frames in progress:
((on-screen int32 :offset-assert 4) ;; frame index (0 or 1) ((on-screen int32 :offset-assert 4) ;; frame index (0 or 1)
(last-screen int32 :offset-assert 8) ;; frame index (0 or 1) (last-screen int32 :offset-assert 8) ;; frame index (0 or 1)
(frames display-frame 2 :offset-assert 12) ;; per-frame dma/timing (frames display-frame 2 :offset-assert 12) ;; per-frame dma/timing
(bgcolor uint64 :offset-assert 24) ;; GS setting (bgcolor gs-bgcolor :offset-assert 24) ;; GS setting
(pmode gs-pmode :offset-assert 32) ;; GS setting (pmode gs-pmode :offset-assert 32) ;; GS setting
(clock clock 13 :offset-assert 40) (clock clock 13 :offset-assert 40)
(session-clock clock :offset 40) (session-clock clock :offset 40)

View file

@ -130,7 +130,7 @@ Will also set a bunch of common settings related to profiling and the camera to
) )
) )
(set! (-> gs-bank pmode) (-> display pmode)) (set! (-> gs-bank pmode) (-> display pmode))
(set! (-> gs-bank bgcolor) (the-as gs-bgcolor (-> display bgcolor))) (set! (-> gs-bank bgcolor) (-> display bgcolor))
) )
(set! (-> gs-bank dspfb1) (new 'static 'gs-display-fb :fbw #xa :fbp (-> video-settings display-fbp))) (set! (-> gs-bank dspfb1) (new 'static 'gs-display-fb :fbw #xa :fbp (-> video-settings display-fbp)))
) )

View file

@ -601,16 +601,33 @@
(defun dm-region-pick-func ((r drawable-region-prim) (msg debug-menu-msg)) (defun dm-region-pick-func ((r drawable-region-prim) (msg debug-menu-msg))
(when (= msg (debug-menu-msg press)) (when (= msg (debug-menu-msg press))
(if (= *region-debug-inspect* r) (if (= *region-debug-inspect* r)
(set! *region-debug-inspect* (the drawable-region-prim #f)) (set! *region-debug-inspect* #f)
(set! *region-debug-inspect* r)) (set! *region-debug-inspect* r))
) )
(= *region-debug-inspect* r) (= *region-debug-inspect* r)
) )
(defun build-regions-list () (defun debug-menu-node-region<? ((arg0 debug-menu-item) (arg1 debug-menu-item))
(<= (-> (the-as drawable-region-prim (-> arg0 id)) region id) (-> (the-as drawable-region-prim (-> arg1 id)) region id))
)
(defun array-uint32-value? ((arr (array uint32)) (val uint))
(dotimes (i (-> arr length))
(if (= val (-> arr i)) (return #t)))
#f)
(define *region-debug-id-list* (new 'static 'boxed-array :type uint32 :length 0 :allocated-length 2000))
(defun build-regions-list ((merge-prims? symbol))
"Fill the region pick menu" "Fill the region pick menu"
;; clear old list ;; clear old list
(debug-menu-remove-all-items *region-pick-menu*) (debug-menu-remove-all-items *region-pick-menu*)
(set! *region-debug-inspect* #f)
(set! *merge-region-prims* merge-prims?)
(dotimes (i (-> *region-debug-id-list* allocated-length))
(set! (-> *region-debug-id-list* i) -1))
(set! (-> *region-debug-id-list* length) 0)
;; go through active levels ;; go through active levels
(dotimes (lev-i (-> *level* length)) (dotimes (lev-i (-> *level* length))
(let ((lev (-> *level* level lev-i))) (let ((lev (-> *level* level lev-i)))
@ -627,12 +644,18 @@
(region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i)) (region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i))
) )
(while (< i s0-4) (while (< i s0-4)
(debug-menu-append-item *region-pick-menu* (new-dm-flag (new 'debug 'string 0 (string-format "region-~D" (-> region region id))) region dm-region-pick-func)) (when (or (not merge-prims?) (not (array-uint32-value? *region-debug-id-list* (-> region region id))))
(set! i (+ i 1)) (debug-menu-append-item *region-pick-menu* (new-dm-flag (new 'debug 'string 0 (string-format "region-~D" (-> region region id))) region dm-region-pick-func))
(when merge-prims?
(set! (-> *region-debug-id-list* (-> *region-debug-id-list* length)) (-> region region id))
(1+! (-> *region-debug-id-list* length))
)
)
(1+! i)
(set! region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i)) (set! region (-> (the-as drawable-inline-array-region-prim (-> region-tree data2 (+ (-> region-tree length) -1))) data i))
) )
) )
(+! tree-i 1) (1+! tree-i)
(set! region-tree (-> region-trees tree-i)) (set! region-tree (-> region-trees tree-i))
) )
) )
@ -641,7 +664,8 @@
) )
) )
) )
(set! (-> *region-pick-menu* items) (sort (-> *region-pick-menu* items) debug-menu-node<?))
(set! (-> *region-pick-menu* items) (sort (-> *region-pick-menu* items) debug-menu-node-region<?))
) )
(defun dm-print-region-pick-func ((kind symbol)) (defun dm-print-region-pick-func ((kind symbol))
@ -660,6 +684,7 @@
(debug-menu-append-item regions-menu (new-dm-submenu "Pick Region" pick-menu)) (debug-menu-append-item regions-menu (new-dm-submenu "Pick Region" pick-menu))
) )
(debug-menu-append-item regions-menu (new-dm-func "Refresh" #f build-regions-list)) (debug-menu-append-item regions-menu (new-dm-func "Refresh" #f build-regions-list))
(debug-menu-append-item regions-menu (new-dm-func "Refresh (merge prims)" #t build-regions-list))
(debug-menu-append-item regions-menu (new-dm-func "Go to region" #f (debug-menu-append-item regions-menu (new-dm-func "Go to region" #f
(lambda () (lambda ()
(unless *region-debug-inspect* (return #f)) (unless *region-debug-inspect* (return #f))
@ -673,6 +698,7 @@
(debug-menu-append-item regions-menu (new-dm-func "Print on-inside" 'on-inside dm-print-region-pick-func)) (debug-menu-append-item regions-menu (new-dm-func "Print on-inside" 'on-inside dm-print-region-pick-func))
(debug-menu-append-item regions-menu (new-dm-func "Print on-exit" 'on-exit dm-print-region-pick-func)) (debug-menu-append-item regions-menu (new-dm-func "Print on-exit" 'on-exit dm-print-region-pick-func))
(debug-menu-append-item regions-menu (new-dm-bool "Display region inside" *display-region-inside* dm-boolean-toggle-pick-func)) (debug-menu-append-item regions-menu (new-dm-bool "Display region inside" *display-region-inside* dm-boolean-toggle-pick-func))
(debug-menu-append-item regions-menu (new-dm-bool "Region Marks" *display-region-marks* dm-boolean-toggle-pick-func))
(new-dm-submenu "Regions" regions-menu) (new-dm-submenu "Regions" regions-menu)
) )
@ -863,6 +889,7 @@
;; ) ;; )
(flag "Joint names" *display-joint-names* dm-boolean-toggle-pick-func) (flag "Joint names" *display-joint-names* dm-boolean-toggle-pick-func)
(flag "Bone lines" *display-bones* dm-boolean-toggle-pick-func) (flag "Bone lines" *display-bones* dm-boolean-toggle-pick-func)
(flag "Entity Lights" *display-lights* dm-boolean-toggle-pick-func)
) )
) )
) )

View file

@ -55,6 +55,7 @@
(define *region-debug-inspect* (the drawable-region-prim #f)) (define *region-debug-inspect* (the drawable-region-prim #f))
(define *display-region-inside* #f) (define *display-region-inside* #f)
(define *merge-region-prims* #f)
(define *display-city-info* #f) (define *display-city-info* #f)
(define *city-info-x* 0) (define *city-info-x* 0)

View file

@ -1246,15 +1246,9 @@
(if (not (-> s5-0 allow-blackout)) (if (not (-> s5-0 allow-blackout))
(set! f0-71 0.0) (set! f0-71 0.0)
) )
(set! (-> v1-133 bgcolor) (set! (-> v1-133 bgcolor r) (the int (* 255.0 (-> s5-0 bg-r))))
(logior (logand (-> v1-133 bgcolor) -256) (shr (shl (the int (* 255.0 (-> s5-0 bg-r))) 56) 56)) (set! (-> v1-133 bgcolor g) (the int (* 255.0 (-> s5-0 bg-g))))
) (set! (-> v1-133 bgcolor b) (the int (* 255.0 (-> s5-0 bg-b))))
(set! (-> v1-133 bgcolor)
(logior (logand (-> v1-133 bgcolor) -65281) (shr (shl (the int (* 255.0 (-> s5-0 bg-g))) 56) 48))
)
(set! (-> v1-133 bgcolor)
(logior (logand (-> v1-133 bgcolor) -16711681) (shr (shl (the int (* 255.0 (-> s5-0 bg-b))) 56) 40))
)
(set! (-> v1-133 pmode alp) (the int (* 255.0 (- 1.0 f0-71)))) (set! (-> v1-133 pmode alp) (the int (* 255.0 (- 1.0 f0-71))))
) )
(set! (-> v1-133 run-half-speed) (the-as basic (-> s5-0 half-speed))) (set! (-> v1-133 run-half-speed) (the-as basic (-> s5-0 half-speed)))

View file

@ -60,7 +60,7 @@
((on-screen int32 :offset-assert 4) ((on-screen int32 :offset-assert 4)
(last-screen int32 :offset-assert 8) (last-screen int32 :offset-assert 8)
(frames display-frame 2 :offset-assert 12) (frames display-frame 2 :offset-assert 12)
(bgcolor uint64 :offset-assert 24) (bgcolor gs-bgcolor :offset-assert 24)
(pmode gs-pmode :offset-assert 32) (pmode gs-pmode :offset-assert 32)
(clock clock 13 :offset-assert 40) (clock clock 13 :offset-assert 40)
(session-clock clock :offset 40) (session-clock clock :offset 40)

View file

@ -134,7 +134,7 @@ Will also set a bunch of common settings related to profiling and the camera to
) )
) )
(set! (-> gs-bank pmode) (-> display pmode)) (set! (-> gs-bank pmode) (-> display pmode))
(set! (-> gs-bank bgcolor) (the-as gs-bgcolor (-> display bgcolor))) (set! (-> gs-bank bgcolor) (-> display bgcolor))
) )
(set! (-> gs-bank dspfb1) (new 'static 'gs-display-fb :fbw #xa :fbp (-> video-settings display-fbp))) (set! (-> gs-bank dspfb1) (new 'static 'gs-display-fb :fbw #xa :fbp (-> video-settings display-fbp)))
) )