[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:
ManDude
2022-01-09 22:43:13 +00:00
committed by GitHub
parent ac37d82a44
commit 76a819b98f
29 changed files with 825 additions and 565 deletions
+11 -13
View File
@@ -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) {}
+5 -1
View File
@@ -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;
+2 -2
View File
@@ -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"
+1 -1
View File
@@ -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"],
+1 -1
View File
@@ -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")
+19
View File
@@ -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")
)
+20
View File
@@ -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")
)
+1 -1
View File
@@ -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")
+1 -1
View File
@@ -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")
+25
View File
@@ -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")
)
+17
View File
@@ -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")
)
+1 -2
View File
@@ -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
+45 -5
View File
@@ -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*
+44 -44
View File
@@ -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 @@
+2 -1
View File
@@ -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))
+14 -7
View File
@@ -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))
+8 -14
View File
@@ -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)
)
)
+2 -2
View File
@@ -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))
+15 -4
View File
@@ -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))
+4 -1
View File
@@ -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)
+12
View File
@@ -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))
+13 -2
View File
@@ -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)))
+2 -1
View File
@@ -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
+2 -5
View File
@@ -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)
)
+6
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+4
View File
@@ -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)