mirror of
https://github.com/open-goal/jak-project
synced 2026-09-01 09:53:12 -04:00
[game] revise build order and add remaining levels + add part-tester to menu (#1069)
* Add remaining levels to build system * add a particles menu * Update default-menu.gc * Update part-tester.gc * make part tester non-destructive * Make the "ps2 particles" toggle work! * Update kmachine.h * fix test * fix test
This commit is contained in:
@@ -10393,7 +10393,7 @@
|
||||
manipy-idle)
|
||||
)
|
||||
|
||||
(declare-type sparticle-launch-group structure)
|
||||
(declare-type sparticle-launch-group basic)
|
||||
(deftype part-spawner (process-drawable)
|
||||
((mode (pointer sparticle-launch-group) :offset-assert 176) ;; takes a part-spawner as it's first arg in method 9
|
||||
(enable symbol :offset-assert 180)
|
||||
@@ -21978,10 +21978,10 @@
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
(define-extern *anim-tester* (pointer anim-tester)) ;; unknown type
|
||||
(define-extern *ANIM_TESTER-bank* anim-tester-bank) ;; unknown type
|
||||
(define-extern *anim-tester* (pointer anim-tester))
|
||||
(define-extern *ANIM_TESTER-bank* anim-tester-bank)
|
||||
(define-extern anim-test-field-highlight-lw (inline-array list-field))
|
||||
(define-extern *DISP_LIST-bank* DISP_LIST-bank) ;; unknown type
|
||||
(define-extern *DISP_LIST-bank* DISP_LIST-bank)
|
||||
(define-extern *debug-menu-context* debug-menu-context)
|
||||
|
||||
|
||||
@@ -22000,8 +22000,6 @@
|
||||
:size-assert #xb4
|
||||
:heap-base #x50
|
||||
:flag-assert #x14005000b4
|
||||
(:states
|
||||
viewer-process)
|
||||
)
|
||||
|
||||
;; - Functions
|
||||
@@ -22014,11 +22012,12 @@
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
(define-extern *viewer* viewer) ;; unknown type
|
||||
(define-extern *viewer* viewer)
|
||||
(define-extern viewer-ja-name string)
|
||||
(define-extern viewer-geo-name string)
|
||||
(define-extern *viewer-sg* skeleton-group)
|
||||
(define-extern viewer-string string)
|
||||
(define-extern viewew-process (state viewer))
|
||||
|
||||
|
||||
;; ----------------------
|
||||
@@ -22037,8 +22036,6 @@
|
||||
:size-assert #x7c
|
||||
:heap-base #x100
|
||||
:flag-assert #xe0100007c
|
||||
(:states
|
||||
part-tester-idle)
|
||||
)
|
||||
|
||||
;; - Functions
|
||||
@@ -22048,9 +22045,10 @@
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
(define-extern *debug-part-dead-pool* dead-pool) ;; unknown type
|
||||
(define-extern *part-tester* part-tester) ;; unknown type
|
||||
(define-extern *part-tester-name* string) ;; unknown type
|
||||
(define-extern *debug-part-dead-pool* dead-pool)
|
||||
(define-extern *part-tester* part-tester)
|
||||
(define-extern *part-tester-name* string)
|
||||
(define-extern part-tester-idle (state part-tester))
|
||||
|
||||
|
||||
;; ----------------------
|
||||
@@ -22082,7 +22080,7 @@
|
||||
(define-extern build-instance-list (function object none)) ;; TODO - drawable types aren't complete
|
||||
(define-extern dm-edit-instance-toggle-pick-func (function int debug-menu-msg symbol))
|
||||
(define-extern dm-boolean-toggle-pick-func (function (pointer symbol) debug-menu-msg symbol))
|
||||
(define-extern build-shader-list (function object))
|
||||
(define-extern build-shader-list (function none))
|
||||
(define-extern all-texture-tweak-adjust (function texture-page-dir float none)) ;; TODO - texture related types
|
||||
(define-extern debug-menu-make-camera-mode-menu (function debug-menu debug-menu none))
|
||||
(define-extern dm-cam-externalize (function symbol debug-menu-msg symbol))
|
||||
|
||||
@@ -34,7 +34,7 @@ SpriteRenderer::SpriteRenderer(const std::string& name, BucketId my_id)
|
||||
: BucketRenderer(name, my_id),
|
||||
m_sprite_renderer(fmt::format("{}.sprites", name),
|
||||
my_id,
|
||||
4000,
|
||||
16384,
|
||||
DirectRenderer::Mode::SPRITE_CPU),
|
||||
m_direct_renderer(fmt::format("{}.direct", name), my_id, 100, DirectRenderer::Mode::NORMAL) {}
|
||||
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
#include "common/common_types.h"
|
||||
#include "Ptr.h"
|
||||
|
||||
//! Toggle to use more memory. To simulate the original game's memory layout, set this to false.
|
||||
// Make sure this matches the const in gcommon.gc.
|
||||
constexpr bool BIG_MEMORY = true;
|
||||
|
||||
//! How much space to leave for the stack when creating the debug heap
|
||||
// In the game, it's 16 kB, but we increase it to 64 kB.
|
||||
// ASAN builds + fmt / spdlog stuff uses a _ton_ of stack when no optimizations are on and we
|
||||
@@ -18,7 +22,7 @@ constexpr u32 DEBUG_HEAP_SPACE_FOR_STACK = 0x10000;
|
||||
constexpr u32 HEAP_START = 0x13fd20;
|
||||
|
||||
//! Where to end the global heap so it doesn't overlap with the stack.
|
||||
constexpr u32 GLOBAL_HEAP_END = 0x1ffc000 + (0x1ffc000 - HEAP_START); // doubled
|
||||
constexpr u32 GLOBAL_HEAP_END = 0x1ffc000 + (BIG_MEMORY ? (0x1ffc000 - HEAP_START) : 0); // doubled
|
||||
|
||||
//! Location of kglobalheap, kdebugheap kheapinfo structures.
|
||||
constexpr u32 GLOBAL_HEAP_INFO_ADDR = 0x13AD00;
|
||||
|
||||
@@ -153,6 +153,7 @@
|
||||
"goal_src/engine/nav/navigate-h.gc"
|
||||
"goal_src/engine/load/load-dgo.gc"
|
||||
"goal_src/engine/load/ramdisk.gc"
|
||||
"goal_src/engine/pc/pckernel.gc" ;; added
|
||||
"goal_src/engine/sound/gsound.gc"
|
||||
"goal_src/engine/math/transformq.gc"
|
||||
"goal_src/engine/collide/collide-func.gc"
|
||||
@@ -261,7 +262,6 @@
|
||||
"goal_src/engine/gfx/tie/prototype.gc"
|
||||
"goal_src/engine/collide/main-collide.gc"
|
||||
"goal_src/engine/game/video.gc"
|
||||
"goal_src/engine/pc/pckernel.gc" ;; added
|
||||
"goal_src/engine/game/main.gc"
|
||||
"goal_src/engine/collide/collide-cache.gc"
|
||||
"goal_src/engine/entity/relocate.gc"
|
||||
@@ -352,7 +352,7 @@
|
||||
"goal_src/levels/l1_only/citb-drop-plat-L1.gc"
|
||||
"goal_src/levels/citadel/assistant-citadel.gc"
|
||||
"goal_src/levels/demo/demo-obs.gc"
|
||||
"goal_src/levels/common/static-screen.gc"
|
||||
"goal_src/levels/demo/static-screen.gc"
|
||||
"goal_src/levels/finalboss/robotboss-h.gc"
|
||||
"goal_src/levels/finalboss/robotboss-part.gc"
|
||||
"goal_src/levels/finalboss/sage-finalboss-part.gc"
|
||||
|
||||
@@ -461,7 +461,7 @@
|
||||
["tpage-1605", "tpage-1605", 4, ["DEM", "L1"], "levels/demo"],
|
||||
["tpage-1606", "tpage-1606", 4, ["DEM", "L1"], "levels/demo"],
|
||||
["tpage-1607", "tpage-1607", 4, ["DEM", "L1"], "levels/demo"],
|
||||
["static-screen", "static-screen", 3, ["DEM", "L1", "TIT"], "levels/common"],
|
||||
["static-screen", "static-screen", 3, ["DEM", "L1", "TIT"], "levels/demo"],
|
||||
["tpage-1480", "tpage-1480", 4, ["DEM"], "levels/demo"],
|
||||
["tpage-1479", "tpage-1479", 4, ["DEM"], "levels/demo"],
|
||||
["demo-vis", "demo-vis", 4, ["DEM"], "levels/demo"],
|
||||
|
||||
@@ -354,6 +354,7 @@
|
||||
("navigate-h.o" "navigate-h")
|
||||
("load-dgo.o" "load-dgo")
|
||||
("ramdisk.o" "ramdisk")
|
||||
("pckernel.o" "pckernel") ;; added
|
||||
("gsound.o" "gsound")
|
||||
("transformq.o" "transformq")
|
||||
("collide-func.o" "collide-func")
|
||||
@@ -462,7 +463,6 @@
|
||||
("prototype.o" "prototype")
|
||||
("main-collide.o" "main-collide")
|
||||
("video.o" "video")
|
||||
("pckernel.o" "pckernel") ;; added
|
||||
("main.o" "main")
|
||||
("collide-cache.o" "collide-cache")
|
||||
("relocate.o" "relocate")
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
("DAR.DGO"
|
||||
("darkcave-obs.o" "darkcave-obs")
|
||||
("tpage-1306.go" "tpage-1306")
|
||||
("tpage-1307.go" "tpage-1307")
|
||||
("tpage-1305.go" "tpage-1305")
|
||||
("tpage-1304.go" "tpage-1304")
|
||||
("tpage-1352.go" "tpage-1352")
|
||||
("baby-spider-ag.go" "baby-spider")
|
||||
("cavecrystal-ag.go" "cavecrystal")
|
||||
("caveelevator-ag.go" "caveelevator")
|
||||
("cavespatula-darkcave-ag.go" "cavespatula-darkcave")
|
||||
("cavetrapdoor-ag.go" "cavetrapdoor")
|
||||
("dark-crystal-ag.go" "dark-crystal")
|
||||
("mother-spider-ag.go" "mother-spider")
|
||||
("spider-egg-ag.go" "spider-egg")
|
||||
("water-anim-darkcave-ag.go" "water-anim-darkcave")
|
||||
("darkcave-vis.go" "darkcave-vis")
|
||||
)
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
("DEM.DGO"
|
||||
("demo-obs.o" "demo-obs")
|
||||
("tpage-1485.go" "tpage-1485")
|
||||
("tpage-1486.go" "tpage-1486")
|
||||
("tpage-1487.go" "tpage-1487")
|
||||
("tpage-1599.go" "tpage-1599")
|
||||
("tpage-1600.go" "tpage-1600")
|
||||
("tpage-1601.go" "tpage-1601")
|
||||
("tpage-1602.go" "tpage-1602")
|
||||
("tpage-1603.go" "tpage-1603")
|
||||
("tpage-1604.go" "tpage-1604")
|
||||
("tpage-1605.go" "tpage-1605")
|
||||
("tpage-1606.go" "tpage-1606")
|
||||
("tpage-1607.go" "tpage-1607")
|
||||
("static-screen.o" "static-screen")
|
||||
("tpage-1480.go" "tpage-1480")
|
||||
("tpage-1479.go" "tpage-1479")
|
||||
("demo-vis.go" "demo-vis")
|
||||
)
|
||||
@@ -145,6 +145,7 @@
|
||||
("navigate-h.o" "navigate-h")
|
||||
("load-dgo.o" "load-dgo")
|
||||
("ramdisk.o" "ramdisk")
|
||||
("pckernel.o" "pckernel") ;; added
|
||||
("gsound.o" "gsound")
|
||||
("transformq.o" "transformq")
|
||||
("collide-func.o" "collide-func")
|
||||
@@ -253,7 +254,6 @@
|
||||
("prototype.o" "prototype")
|
||||
("main-collide.o" "main-collide")
|
||||
("video.o" "video")
|
||||
("pckernel.o" "pckernel") ;; added
|
||||
("main.o" "main")
|
||||
("collide-cache.o" "collide-cache")
|
||||
("relocate.o" "relocate")
|
||||
|
||||
@@ -141,6 +141,7 @@
|
||||
("navigate-h.o" "navigate-h")
|
||||
("load-dgo.o" "load-dgo")
|
||||
("ramdisk.o" "ramdisk")
|
||||
("pckernel.o" "pckernel") ;; added
|
||||
("gsound.o" "gsound")
|
||||
("transformq.o" "transformq")
|
||||
("collide-func.o" "collide-func")
|
||||
@@ -249,7 +250,6 @@
|
||||
("prototype.o" "prototype")
|
||||
("main-collide.o" "main-collide")
|
||||
("video.o" "video")
|
||||
("pckernel.o" "pckernel") ;; added
|
||||
("main.o" "main")
|
||||
("collide-cache.o" "collide-cache")
|
||||
("relocate.o" "relocate")
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
("ROB.DGO"
|
||||
("cave-trap.o" "cave-trap")
|
||||
("spider-egg.o" "spider-egg")
|
||||
("robocave-part.o" "robocave-part")
|
||||
("eichar-pole+0-ag.go" "eichar-pole+0")
|
||||
("tpage-1318.go" "tpage-1318")
|
||||
("tpage-1319.go" "tpage-1319")
|
||||
("tpage-1317.go" "tpage-1317")
|
||||
("tpage-1316.go" "tpage-1316")
|
||||
("babak-ag.go" "babak")
|
||||
("baby-spider-ag.go" "baby-spider")
|
||||
("cavecrusher-ag.go" "cavecrusher")
|
||||
("caveelevator-ag.go" "caveelevator")
|
||||
("cavespatulatwo-ag.go" "cavespatulatwo")
|
||||
("cavetrapdoor-ag.go" "cavetrapdoor")
|
||||
("driller-lurker-ag.go" "driller-lurker")
|
||||
("ecovalve-ag.go" "ecovalve")
|
||||
("plat-ag.go" "plat")
|
||||
("plat-eco-ag.go" "plat-eco")
|
||||
("spider-egg-ag.go" "spider-egg")
|
||||
("spiderwebs-ag.go" "spiderwebs")
|
||||
("water-anim-robocave-ag.go" "water-anim-robocave")
|
||||
("robocave-vis.go" "robocave-vis")
|
||||
)
|
||||
@@ -0,0 +1,17 @@
|
||||
("TIT.DGO"
|
||||
("static-screen.o" "static-screen")
|
||||
("title-obs.o" "title-obs")
|
||||
("tpage-1609.go" "tpage-1609")
|
||||
("tpage-416.go" "tpage-416")
|
||||
("tpage-415.go" "tpage-415")
|
||||
("tpage-397.go" "tpage-397")
|
||||
("tpage-1499.go" "tpage-1499")
|
||||
("logo-ag.go" "logo")
|
||||
("logo-black-ag.go" "logo-black")
|
||||
("logo-cam-ag.go" "logo-cam")
|
||||
("logo-volumes-ag.go" "logo-volumes")
|
||||
("ndi-ag.go" "ndi")
|
||||
("ndi-cam-ag.go" "ndi-cam")
|
||||
("ndi-volumes-ag.go" "ndi-volumes")
|
||||
("title-vis.go" "title-vis")
|
||||
)
|
||||
@@ -14,8 +14,7 @@
|
||||
"Assert that expr is truthy, print assert information otherwise"
|
||||
|
||||
(when (not expr)
|
||||
(format #t "(ASSERT ~S) FAILED in "
|
||||
msg)
|
||||
(format #t "(ASSERT ~S) FAILED in " msg)
|
||||
(print-pos *__private-assert-info*)
|
||||
)
|
||||
0
|
||||
|
||||
@@ -552,10 +552,8 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v0-3 (sort (-> *shader-pick-menu* items) debug-menu-node<?)))
|
||||
(set! (-> *shader-pick-menu* items) (the-as pair v0-3))
|
||||
v0-3
|
||||
)
|
||||
(set! (-> *shader-pick-menu* items) (the-as pair (sort (-> *shader-pick-menu* items) debug-menu-node<?)))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun dm-instance-pick-func ((arg0 string) (arg1 debug-menu-msg))
|
||||
@@ -607,7 +605,7 @@
|
||||
(dotimes (s2-0 (-> s3-0 length))
|
||||
(let ((a1-4
|
||||
(new
|
||||
'global
|
||||
'debug ;; was global
|
||||
'debug-menu-item-flag
|
||||
(the-as string (-> s3-0 data s2-0 name))
|
||||
(-> s3-0 data s2-0 name)
|
||||
@@ -4104,6 +4102,47 @@
|
||||
)
|
||||
)
|
||||
|
||||
(define *part-pick-menu* (the-as debug-menu #f))
|
||||
(define *spawn-part-test* #t)
|
||||
|
||||
(defun dm-part-pick-func ((id int) (msg debug-menu-msg))
|
||||
(if (zero? (-> *part-group-id-table* id))
|
||||
(return 'invalid))
|
||||
(when (= msg (debug-menu-msg press))
|
||||
(set! *part-tester-id* id)
|
||||
(if *spawn-part-test*
|
||||
(start-part)
|
||||
)
|
||||
)
|
||||
(= *part-tester-id* id)
|
||||
)
|
||||
|
||||
(defun build-particles-list ()
|
||||
(debug-menu-remove-all-items *part-pick-menu*)
|
||||
(dotimes (i (-> *part-group-id-table* length))
|
||||
(let ((part (-> *part-group-id-table* i)))
|
||||
(when (and (nonzero? part))
|
||||
(debug-menu-append-item *part-pick-menu* (new-dm-flag (-> part name) i dm-part-pick-func))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> *part-pick-menu* items) (the-as pair (sort (-> *part-pick-menu* items) debug-menu-node<?)))
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun debug-menu-make-part-menu ((ctx debug-menu-context))
|
||||
(let ((part-menu (new 'debug 'debug-menu ctx "Particles menu")))
|
||||
(let ((pick-menu (new 'debug 'debug-menu ctx "Particle group pick menu")))
|
||||
(set! *part-pick-menu* pick-menu)
|
||||
(debug-menu-append-item part-menu (new-dm-submenu "Pick Particle group" pick-menu))
|
||||
)
|
||||
(debug-menu-append-item part-menu (new-dm-func "Refresh" #f build-particles-list))
|
||||
(debug-menu-append-item part-menu (new-dm-bool "Spawn part tester" *spawn-part-test* dm-boolean-toggle-pick-func))
|
||||
|
||||
(new-dm-submenu "Particles" part-menu)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dm-lambda-boolean-flag (val)
|
||||
"helper macro for making boolean buttons that don't just access symbols directly"
|
||||
`(lambda (arg (msg debug-menu-msg))
|
||||
@@ -4163,6 +4202,7 @@
|
||||
|
||||
(when (-> *debug-menu-context* root-menu)
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-load-menu *debug-menu-context*))
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-part-menu *debug-menu-context*))
|
||||
|
||||
(debug-menu-append-item (-> *debug-menu-context* root-menu)
|
||||
(debug-menu-make-from-template *debug-menu-context*
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
;; name in dgo: memory-usage
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
;; this file is debug only
|
||||
(declare-file (debug))
|
||||
(when *debug-segment*
|
||||
|
||||
(defmethod inspect memory-usage-block ((obj memory-usage-block))
|
||||
@@ -39,19 +41,19 @@
|
||||
(defmethod mem-usage object ((obj object) (arg0 memory-usage-block) (arg1 int))
|
||||
"Most general mem-usage message. Just prints a warning, in case you expect this to do something."
|
||||
(if obj
|
||||
(format #t "WARNING: mem-usage called on object, probably not what was wanted for ~A~%" obj)
|
||||
)
|
||||
(format #t "WARNING: mem-usage called on object, probably not what was wanted for ~A~%" obj)
|
||||
)
|
||||
obj
|
||||
)
|
||||
|
||||
(defmethod calculate-total memory-usage-block ((obj memory-usage-block))
|
||||
"Compute the total memory usage of everything in the block."
|
||||
(let ((v0-0 0))
|
||||
(dotimes (v1-0 (-> obj length))
|
||||
(+! v0-0 (-> obj data v1-0 total))
|
||||
(dotimes (v1-0 (-> obj length))
|
||||
(+! v0-0 (-> obj data v1-0 total))
|
||||
)
|
||||
v0-0
|
||||
)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod reset! memory-usage-block ((obj memory-usage-block))
|
||||
@@ -68,24 +70,24 @@
|
||||
(defun mem-size ((arg0 basic) (arg1 symbol) (arg2 int))
|
||||
"Compute the size of arg0. If arg1, then print the result. Arg2 is flags"
|
||||
(let ((gp-0 (new 'stack 'memory-usage-block)))
|
||||
(mem-usage arg0 gp-0 arg2)
|
||||
(if arg1
|
||||
(inspect gp-0)
|
||||
(mem-usage arg0 gp-0 arg2)
|
||||
(if arg1
|
||||
(inspect gp-0)
|
||||
)
|
||||
(calculate-total gp-0)
|
||||
)
|
||||
(calculate-total gp-0)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod compute-memory-usage level ((obj level) (arg0 object))
|
||||
"Compute the memory usage of a level. Arg0 will force a recalculation."
|
||||
(if (zero? (-> obj mem-usage-block))
|
||||
(set! (-> obj mem-usage-block) (new 'debug 'memory-usage-block))
|
||||
)
|
||||
(set! (-> obj mem-usage-block) (new 'debug 'memory-usage-block))
|
||||
)
|
||||
(set! arg0 (or (zero? (-> obj mem-usage-block length)) arg0))
|
||||
(when arg0
|
||||
(mem-usage obj (reset! (-> obj mem-usage-block)) 0)
|
||||
(set! (-> obj mem-usage) (calculate-total (-> obj mem-usage-block)))
|
||||
)
|
||||
(mem-usage obj (reset! (-> obj mem-usage-block)) 0)
|
||||
(set! (-> obj mem-usage) (calculate-total (-> obj mem-usage-block)))
|
||||
)
|
||||
(-> obj mem-usage-block)
|
||||
)
|
||||
|
||||
@@ -114,18 +116,19 @@
|
||||
(while (not (null? s4-0))
|
||||
(let ((a0-5 (-> (the-as symbol v1-4) value)))
|
||||
(set! *global-search-count* s5-0)
|
||||
(iterate-process-tree (the-as process-tree a0-5)
|
||||
(lambda ((arg0 basic))
|
||||
(let ((gp-0 *temp-mem-usage*)
|
||||
(s5-0 *global-search-count*)
|
||||
)
|
||||
(+! (-> gp-0 data s5-0 used) 1)
|
||||
(+! (-> gp-0 data s5-0 total) (logand -16 (+ (asize-of arg0) 15)))
|
||||
)
|
||||
#t
|
||||
)
|
||||
*null-kernel-context*
|
||||
)
|
||||
(iterate-process-tree
|
||||
(the-as process-tree a0-5)
|
||||
(lambda ((arg0 basic))
|
||||
(let ((gp-0 *temp-mem-usage*)
|
||||
(s5-0 *global-search-count*)
|
||||
)
|
||||
(+! (-> gp-0 data s5-0 used) 1)
|
||||
(+! (-> gp-0 data s5-0 total) (logand -16 (+ (asize-of arg0) 15)))
|
||||
)
|
||||
#t
|
||||
)
|
||||
*null-kernel-context*
|
||||
)
|
||||
)
|
||||
(+! s5-0 1)
|
||||
(set! s4-0 (cdr s4-0))
|
||||
@@ -133,8 +136,8 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(iterate-process-tree
|
||||
obj
|
||||
(iterate-process-tree
|
||||
obj
|
||||
(lambda ((arg0 process))
|
||||
(let ((gp-0 *temp-mem-usage*))
|
||||
(let ((s4-0 (cond
|
||||
@@ -252,7 +255,8 @@
|
||||
(+! (-> gp-0 data 101 count) 1)
|
||||
(let ((v1-141 (asize-of (-> (the-as process-drawable arg0) skel))))
|
||||
(+! (-> gp-0 data 101 used) v1-141)
|
||||
(+! (-> gp-0 data 101 total) (logand -16 (+ v1-141 15))))
|
||||
(+! (-> gp-0 data 101 total) (logand -16 (+ v1-141 15)))
|
||||
)
|
||||
)
|
||||
(when (nonzero? (-> (the-as process-drawable arg0) part))
|
||||
(set! (-> gp-0 length) (max 105 (-> gp-0 length)))
|
||||
@@ -317,7 +321,7 @@
|
||||
(s1-0 (* (dma-buffer-length (-> *display* frames (-> *display* last-screen) frame global-buf)) 16))
|
||||
)
|
||||
(set! *max-dma* (max s1-0 *max-dma*))
|
||||
|
||||
|
||||
;; turns memory usage red if you're using too much. This uses the sum of memory-usage blocks, which as far
|
||||
;; as I can tell, is not accurate (textures are negative, for example, but don't seem to be double counted (or even counted) elsewhere).
|
||||
(if (< s2-0 (-> arg0 mem-usage))
|
||||
@@ -333,14 +337,14 @@
|
||||
(sar (memory-used *nk-dead-pool*) 10)
|
||||
(sar (memory-total *nk-dead-pool*) 10)
|
||||
)
|
||||
|
||||
|
||||
(format arg1 "~5,'-DK/~5,'-DK--~%" (shr s1-0 10) (sar *max-dma* 10))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
(when *stats-memory-short*
|
||||
(let ((s2-2 (if (logtest? (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons l3))
|
||||
(let ((s2-2 (if (cpad-hold? 1 l3)
|
||||
#t
|
||||
arg1
|
||||
)
|
||||
@@ -356,8 +360,8 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
(when (not *stats-memory-short*)
|
||||
;; print the table
|
||||
|
||||
@@ -382,10 +386,7 @@
|
||||
)
|
||||
)
|
||||
|
||||
(format arg1 " bsp-leaf-vis-adj ~192H~5DK~%"
|
||||
(sar (+ (-> obj data 59 total) (-> obj data 60 total)) 10)
|
||||
)
|
||||
|
||||
(format arg1 " bsp-leaf-vis-adj ~192H~5DK~%" (sar (+ (-> obj data 59 total) (-> obj data 60 total)) 10))
|
||||
(format arg1 " level-code ~192H~5DK~%" (sar (-> obj data 63 total) 10))
|
||||
|
||||
(format arg1 " tfrag ~192H~5DK ~280Htfragment~456H~5DK~%"
|
||||
@@ -530,7 +531,7 @@
|
||||
)
|
||||
(sar (-> *dma-mem-usage* data 82 total) 10)
|
||||
)
|
||||
|
||||
|
||||
(format arg1 "~1K~0L")
|
||||
)
|
||||
(none)
|
||||
@@ -541,4 +542,3 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
|
||||
;; this file is debug only
|
||||
(declare-file (debug))
|
||||
(when *debug-segment*
|
||||
|
||||
(declare-type debug-menu basic)
|
||||
@@ -528,7 +529,7 @@
|
||||
(debug-menu-context-send-msg context (debug-menu-msg deactivate) (debug-menu-dest activation))
|
||||
)
|
||||
(set! (-> item parent) menu)
|
||||
(set! (-> menu items) (the-as pair (append! (-> menu items) (cons item '()))))
|
||||
(set! (-> menu items) (the-as pair (append! (-> menu items) (dcons item '())))) ;; was normal cons
|
||||
(debug-menu-rebuild menu)
|
||||
(if was-active
|
||||
(debug-menu-context-send-msg context (debug-menu-msg activate) (debug-menu-dest activation))
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
;; name in dgo: part-tester
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
(declare-type part-tester basic)
|
||||
|
||||
(define-extern *part-tester* part-tester)
|
||||
(#when PC_PORT
|
||||
(define *part-tester-id* 105)
|
||||
)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
@@ -35,12 +35,9 @@
|
||||
:method-count-assert 14
|
||||
:size-assert #x7c
|
||||
:flag-assert #xe0100007c
|
||||
(:states
|
||||
part-tester-idle
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define-extern *part-tester* part-tester)
|
||||
(define *part-tester-name* (the-as string #f))
|
||||
|
||||
(defmethod deactivate part-tester ((obj part-tester))
|
||||
@@ -71,7 +68,17 @@
|
||||
(-> self root trans)
|
||||
(the-as rgba (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80))
|
||||
)
|
||||
|
||||
;; change this line to change the particle group to test
|
||||
;; notes:
|
||||
;; - particles that use aux list won't work (warp parts)
|
||||
;; - some particles may have callbacks that won't work yet
|
||||
(let ((gp-1 (-> *part-group-id-table* 105)))
|
||||
(#when PC_PORT
|
||||
(if (nonzero? (-> *part-group-id-table* *part-tester-id*))
|
||||
(set! gp-1 (-> *part-group-id-table* *part-tester-id*))
|
||||
)
|
||||
)
|
||||
(let ((s5-1 (-> self root trans)))
|
||||
(when (!= gp-1 (-> self old-group))
|
||||
(when (nonzero? (-> self part))
|
||||
|
||||
@@ -21,13 +21,9 @@
|
||||
:method-count-assert 20
|
||||
:size-assert #xb4
|
||||
:flag-assert #x14005000b4
|
||||
(:states
|
||||
viewer-process
|
||||
)
|
||||
)
|
||||
|
||||
;; NOTE - manually added
|
||||
(define-perm *viewer* viewer #f)
|
||||
(define-extern *viewer* viewer)
|
||||
|
||||
(defstate viewer-process (viewer)
|
||||
:code
|
||||
@@ -137,20 +133,18 @@
|
||||
(when s2-0
|
||||
(dotimes (s1-0 (-> s2-0 length))
|
||||
(cond
|
||||
((and
|
||||
(not s4-0)
|
||||
(= (-> s2-0 data s1-0 type) merc-ctrl)
|
||||
(or (zero? (length viewer-geo-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-geo-name))
|
||||
)
|
||||
((and (not s4-0)
|
||||
(= (-> s2-0 data s1-0 type) merc-ctrl)
|
||||
(or (zero? (length viewer-geo-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-geo-name))
|
||||
)
|
||||
(set! s4-0 s1-0)
|
||||
)
|
||||
((= (-> s2-0 data s1-0 type) art-joint-geo)
|
||||
(set! s3-0 s1-0)
|
||||
)
|
||||
((and
|
||||
(= (-> s2-0 data s1-0 type) art-joint-anim)
|
||||
(or (zero? (length viewer-ja-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-ja-name))
|
||||
)
|
||||
((and (= (-> s2-0 data s1-0 type) art-joint-anim)
|
||||
(or (zero? (length viewer-ja-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-ja-name))
|
||||
)
|
||||
(set! s5-0 s1-0)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1252,7 +1252,7 @@
|
||||
|
||||
(define-extern collectable type)
|
||||
(define-extern ecovalve type)
|
||||
(define-extern eco type)
|
||||
(define-extern crate type)
|
||||
(defmethod birth! entity-actor ((obj entity-actor))
|
||||
"Create a process for this entity and start it."
|
||||
|
||||
@@ -1261,7 +1261,7 @@
|
||||
(type-type? (-> obj etype) collectable)
|
||||
(type-type? (-> obj etype) vent)
|
||||
(type-type? (-> obj etype) ecovalve)
|
||||
;(type-type? (-> obj etype) eco)
|
||||
;(type-type? (-> obj etype) crate)
|
||||
)
|
||||
;;(birth-log "rejecting ~A birth because yes (was ~A)~%" obj (-> obj etype))
|
||||
(logior! (-> obj extra perm status) (entity-perm-status bit-0))
|
||||
|
||||
@@ -530,10 +530,6 @@
|
||||
(stack-size-set! (-> self main-thread) 512)
|
||||
|
||||
(let ((disp *display*))
|
||||
(#when PC_PORT
|
||||
(read-from-file *pc-settings* PC_SETTINGS_FILE_NAME)
|
||||
)
|
||||
|
||||
;; todo spad terrain context
|
||||
(set! *teleport* #t)
|
||||
(update-per-frame-settings! *setting-control*)
|
||||
@@ -631,6 +627,12 @@
|
||||
(when *debug-segment*
|
||||
(debug-draw-buffers) ;; lines/text
|
||||
|
||||
(#when PC_PORT
|
||||
(if (-> *pc-settings* debug-pad-display)
|
||||
(debug-pad-display (-> *cpad-list* cpads 0))
|
||||
)
|
||||
)
|
||||
|
||||
;; debug dma
|
||||
(with-dma-buffer-add-bucket ((debug-buf (-> disp frames (-> disp on-screen) frame debug-buf))
|
||||
(bucket-id debug-draw1))
|
||||
@@ -680,6 +682,15 @@
|
||||
(* 100.0 (/ (the float remain) (the float total)))
|
||||
)
|
||||
)
|
||||
(let (
|
||||
(remain (&- (-> debug top) (-> debug current)))
|
||||
(total (&- (-> debug top) (-> debug base)))
|
||||
)
|
||||
(format *stdcon* "~3Ldebug heap ~,,2fK/~,,2fK (~,,2f%) remain~0L~%"
|
||||
(* (1/ 1024) remain) (* (1/ 1024) total)
|
||||
(* 100.0 (/ (the float remain) (the float total)))
|
||||
)
|
||||
)
|
||||
(format *stdcon* "~3Lfree DMA global: ~d debug: ~d~0L~%"
|
||||
(dma-buffer-free (-> disp frames (-> disp on-screen) frame global-buf))
|
||||
(dma-buffer-free (-> disp frames (-> disp on-screen) frame debug-buf))
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
(s4-0 (-> arg0 alive-list-end prev0))
|
||||
)
|
||||
(while (!= (the-as connectable conn) (-> arg0 alive-list))
|
||||
(case (-> conn param0)
|
||||
(case (-> conn param0)
|
||||
(('border-mode)
|
||||
(set! (-> obj border-mode) (the-as symbol (-> conn param1)))
|
||||
)
|
||||
@@ -449,6 +449,9 @@
|
||||
(set! (-> gp-0 aspect-ratio) 'aspect4x3)
|
||||
)
|
||||
)
|
||||
(#when PC_PORT
|
||||
(set! (-> gp-0 aspect-ratio) (-> *pc-settings* aspect-setting))
|
||||
)
|
||||
(if (zero? *boot-video-mode*)
|
||||
(set! (-> gp-0 video-mode) 'ntsc)
|
||||
(set! (-> gp-0 video-mode) 'pal)
|
||||
|
||||
@@ -393,6 +393,12 @@
|
||||
|
||||
(defmethod new sprite-array-2d ((allocation symbol) (type-to-make type) (group-0-size int) (group-1-size int))
|
||||
"Allocate a sprite-array for 2d sprites. There are two groups, each can contain the given number."
|
||||
(#when PC_BIG_MEMORY
|
||||
(when (not (-> *pc-settings* ps2-parts?))
|
||||
(*! group-0-size 16) ;; 16x more particles!
|
||||
(*! group-1-size 16) ;; 16x more particles!
|
||||
)
|
||||
)
|
||||
(let* ((sprite-count (+ group-0-size group-1-size))
|
||||
(vec-data-size (* 3 sprite-count)) ;; 3 quadwords of vec-data per sprite
|
||||
(adgif-data-size (* 5 sprite-count)) ;; 5 quadwords of adgif data per sprite
|
||||
@@ -416,6 +422,12 @@
|
||||
(defmethod new sprite-array-3d ((allocation symbol) (type-to-make type) (group-0-size int) (group-1-size int))
|
||||
"Allocate a sprite-array for 3d sprites. There are two groups, each can contain the given number of sprites.
|
||||
Group 1 size is zero in practice for 3d."
|
||||
(#when PC_BIG_MEMORY
|
||||
(when (and *pc-settings* (not (-> *pc-settings* ps2-parts?)))
|
||||
(*! group-0-size 16) ;; 16x more particles!
|
||||
(*! group-1-size 16) ;; 16x more particles!
|
||||
)
|
||||
)
|
||||
(let* ((sprite-count (+ group-0-size group-1-size))
|
||||
(vec-data-size (* 3 sprite-count))
|
||||
(adgif-data-size (* 5 sprite-count))
|
||||
|
||||
@@ -1219,6 +1219,17 @@
|
||||
obj
|
||||
)
|
||||
|
||||
(#cond
|
||||
(PC_PORT
|
||||
(defconstant LEVEL_HEAP_SIZE (* 10416 1024)) ;; 10.416K
|
||||
(defconstant LEVEL_HEAP_SIZE_DEBUG (* 11000 1024))
|
||||
)
|
||||
(#t
|
||||
(defconstant LEVEL_HEAP_SIZE (* 10416 1024)) ;; 10.416K
|
||||
(defconstant LEVEL_HEAP_SIZE_DEBUG (* 25600 1024)) ;; 25.600K
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod alloc-levels! level-group ((obj level-group) (compact-level-heaps symbol))
|
||||
"Allocate the level heaps and load the common packages for levels."
|
||||
|
||||
@@ -1234,8 +1245,8 @@
|
||||
(load-package "common" global) ;; load COMMON unless we're debugging levels
|
||||
)
|
||||
;; allocate level heaps. turn on compact-level-heaps for use in 32MB systems
|
||||
(let ((level-heap-size (if compact-level-heaps (* 10416 1024)
|
||||
(* 25600 1024)))
|
||||
(let ((level-heap-size (if compact-level-heaps LEVEL_HEAP_SIZE
|
||||
LEVEL_HEAP_SIZE_DEBUG))
|
||||
)
|
||||
(dotimes (lev LEVEL_COUNT)
|
||||
(let ((level-heap (-> obj level lev heap)))
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
||||
(defglobalconstant PC_KERNEL_VERSION_BUILD #x0000)
|
||||
(defglobalconstant PC_KERNEL_VERSION_BUILD #x0001)
|
||||
(defglobalconstant PC_KERNEL_VERSION_REVISION #x0001)
|
||||
|
||||
(defglobalconstant PC_KERNEL_VERSION_MINOR #x0000)
|
||||
@@ -180,6 +180,7 @@
|
||||
(win-height int32)
|
||||
(dpi-x float) ;; DPI width scale
|
||||
(dpi-y float) ;; DPI height scale
|
||||
(aspect-setting symbol) ;; aspect ratio setting, for the original game
|
||||
(aspect-ratio-auto? symbol) ;; if on, aspect ratio is calculated automatically.
|
||||
(aspect-ratio float) ;; the desired aspect ratio. set auto to off and then this to 4/3 to force 4x3 aspect.
|
||||
(aspect-ratio-scale float) ;; aspect ratio compared to 4x3
|
||||
|
||||
@@ -155,9 +155,6 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (and *debug-segment* (-> obj debug-pad-display))
|
||||
(debug-pad-display (-> *cpad-list* cpads 0))
|
||||
)
|
||||
|
||||
(none))
|
||||
|
||||
@@ -365,7 +362,7 @@
|
||||
(set! (-> obj aspect-custom-y) (file-stream-read-int file))
|
||||
)
|
||||
(("aspect-auto") (set! (-> obj aspect-ratio-auto?) (file-stream-read-symbol file)))
|
||||
(("aspect-game") (set! (-> *setting-control* default aspect-ratio) (file-stream-read-symbol file)))
|
||||
(("aspect-game") (set! (-> obj aspect-setting) (file-stream-read-symbol file)))
|
||||
(("fullscreen") (set-fullscreen! obj (file-stream-read-symbol file)))
|
||||
(("letterbox") (set! (-> obj letterbox?) (file-stream-read-symbol file)))
|
||||
(("vsync") (set! (-> obj vsync?) (file-stream-read-symbol file)))
|
||||
@@ -592,7 +589,7 @@
|
||||
|
||||
|
||||
(define *pc-settings* (new 'global 'pc-settings))
|
||||
|
||||
(read-from-file *pc-settings* PC_SETTINGS_FILE_NAME)
|
||||
|
||||
|
||||
)
|
||||
|
||||
@@ -62,6 +62,12 @@
|
||||
arg2: is 3d?
|
||||
arg3: pointer to sprite allocations
|
||||
arg4: pointer to adgif allocation"
|
||||
(#when PC_BIG_MEMORY
|
||||
(when (not (-> *pc-settings* ps2-parts?))
|
||||
(*! arg0 16) ;; 16x more particles!
|
||||
(*! arg1 16) ;; 16x more particles!
|
||||
)
|
||||
)
|
||||
(let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(let* ((v1-3 (/ (+ arg0 63) 64)) ;; num blocks
|
||||
(a0-2 (/ (+ arg1 63) 64))
|
||||
|
||||
+547
-456
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,10 @@
|
||||
;; disable PS2 only code and enable PC-specific code
|
||||
(defglobalconstant PC_PORT #t)
|
||||
|
||||
;; whether we're allowed to use more memory than the original game or not
|
||||
(defglobalconstant BIG_MEMORY #t)
|
||||
(defglobalconstant PC_BIG_MEMORY (and PC_PORT BIG_MEMORY))
|
||||
|
||||
;; redirects access to EE memory mapped registers through get-vm-ptr to valid addresses that
|
||||
;; are monitored in the runtime for debugging.
|
||||
(defglobalconstant USE_VM #t)
|
||||
|
||||
Reference in New Issue
Block a user