Decompile level (#3433)

This commit is contained in:
water111
2024-03-23 13:03:01 -04:00
committed by GitHub
parent 99866cec88
commit ffe01a352d
43 changed files with 9416 additions and 330 deletions
+152 -101
View File
@@ -3003,9 +3003,23 @@
:flag-assert #x90000004c
)
(defenum sound-bank-mode
:type uint32
(none 0)
(unknown 1)
(common 2)
(mode 3)
(full 4)
(half 5)
(halfa 6)
(halfb 7)
(halfc 8)
(virtual 9)
)
(deftype sound-bank-state (structure)
((name symbol :offset-assert 0)
(mode uint32 :offset-assert 4)
(mode sound-bank-mode :offset-assert 4)
)
:pack-me
:method-count-assert 9
@@ -7375,9 +7389,9 @@
)
(deftype level-borrow-info (basic)
((alias symbol :offset-assert 4)
((alias object :offset-assert 4)
(borrow-size uint16 5 :offset-assert 8)
(borrow-info symbol 5 :offset-assert 20)
(borrow-info object 5 :offset-assert 20)
)
:method-count-assert 9
:size-assert #x28
@@ -7546,6 +7560,14 @@
)
;; ---level-h:city-map-bits
(defenum level-callback-slot
:type uint32
(level-birth-1 33)
(level-unload 34)
(level-birth-2 35)
(level-deactivate 36)
)
(deftype level-load-info (basic)
((name-list symbol 6 :offset-assert 4) ;; guessed by decompiler
(name symbol :offset 4) ;; guessed by decompiler
@@ -7591,8 +7613,8 @@
:flag-assert #xb000000a0
;; field extra-sound-bank uses ~A with a signed load.
(:methods
(level-load-info-method-9 (_type_ int) object) ;; 9
(level-load-info-method-10 (_type_) none) ;; 10
(get-callback-symbol-value-by-slot! "Look up value of symbol in callback-list with the given int as the car. Print warning if symbol's value is 0." (_type_ int) object) ;; 9
(get-callback-by-slot! "Look up value in callback-list with the given int as the car and return it. Doesn't derefence the symbol." (_type_ int) object) ;; 10
)
)
@@ -7631,6 +7653,11 @@
(entity entity-links-array :offset-assert 304) ;; guessed by decompiler
(closest-object meters 10 :offset-assert 308)
(tie-min-dist float :offset 352)
(fg-tfrag-min-dist float :offset-assert 356)
(fg-prim-min-dist float :offset-assert 360)
(fg-shrub-min-dist float :offset-assert 364)
(fg-warp-min-dist float :offset 372)
(fg-prim2-min-dist float :offset 380)
;; ???
(upload-size int32 20 :offset 388) ;; guessed by decompiler
(inside-boxes? basic :offset-assert 468)
@@ -7697,27 +7724,31 @@
:size-assert #x152c
:flag-assert #x1e0000152c
(:methods
(level-method-9 () none) ;; 9 ;; (deactivate (_type_) _type_)
(level-method-10 () none) ;; 10 ;; (is-object-visible? (_type_ int) symbol)
(level-method-11 () none) ;; 11 ;; (level-method-11 () none)
(level-method-12 () none) ;; 12 ;; (unload! (_type_) _type_)
(level-method-13 () none) ;; 13 ;; (bsp-name (_type_) symbol)
(deactivate "Keep a level in memory, but kill entities and stop drawing it." (_type_) _type_) ;; 9
(unload! "Remove level from memory." (_type_) _type_) ;; 10
(is-object-visible? "Look up object visibility from bit-string." (_type_ int) symbol) ;; 11
(level-method-12 () none) ;; 12
(bsp-name "Try getting the name from the BSP. If that fails, return the level's name (typically the same)." (_type_) symbol) ;; 13
(compute-memory-usage! (_type_ symbol) memory-usage-block) ;; 14
(level-method-15 () none) ;; 15 ;; (inside-boxes-check (_type_ vector) symbol)
(inside-bsp? "Check if the camera is inside the BSP for this level." (_type_) symbol) ;; 15
(update-vis! "Load/decompress precomputed visibility." (_type_ level-vis-info uint (pointer uint8)) symbol) ;; 16
(level-method-17 () none) ;; 17 ;; (load-continue (_type_) _type_)
(level-method-18 () none) ;; 18 ;; (load-begin (_type_) _type_)
(level-method-19 () none) ;; 19 ;; (login-begin (_type_) _type_)
(level-method-20 () none) ;; 20 ;; (debug-print-region-splitbox (_type_ vector object) none)
(get-art-group-by-name (_type_ string) art-group) ;; 21
(load-continue "Main function to run level loading/linking.
Called by the engine to make progress on loading levels." (_type_) _type_) ;; 17
(load-begin "Start loading data of a level." (_type_) _type_) ;; 18
(login-begin "Start logging in loaded level data." (_type_) _type_) ;; 19
(debug-print-region-splitbox (_type_ vector object) none) ;; 20
(get-art-group-by-name "Look up art-group in this level by name." (_type_ string) art-group) ;; 21
(level-method-22 () none) ;; 22 ;; (level-method-22 (_type_ symbol) int)
(level-method-23 () none) ;; 23 ;; (lookup-text (_type_ text-id symbol) string)
(level-method-24 () none) ;; 24 ;; (level-method-24 () none)
(level-method-25 () none) ;; 25 ;; (birth (_type_) _type_)
(level-method-26 () none) ;; 26 ;; (level-status-update! (_type_ symbol) _type_)
(level-method-27 () none) ;; 27 ;; (load-required-packages (_type_) _type_)
(level-method-28 () none) ;; 28 ;; (init-vis-from-bsp (_type_) none)
(level-method-29 () none) ;; 29 ;; (vis-clear (_type_) none)
(birth "Start running a level." (_type_) _type_) ;; 25
(level-status-update! "Try to update the level to the given status, calling whatever is needed to make it happen.
This can do both loading, linking, login, and activation.
This is somewhat similar to level-get-for-use, but requires that you already have the level object.
This function is the way to transition from loaded to alive/active." (_type_ symbol) _type_) ;; 26
(load-common-package "Somewhat useless leftover from a more compliated package system. Will load common in some cases." (_type_) none) ;; 27
(init-vis-from-bsp "Link vis-infos from the bsp to the level." (_type_) none) ;; 28
(vis-clear "Clear visibility data: both the info and the cached vis bits. Switch all-visible? to loading." (_type_) none) ;; 29
)
)
@@ -7769,28 +7800,36 @@
:flag-assert #x1f0000ea54
;; Failed to read some fields.
(:methods
(level-get (_type_ symbol) level) ;; 9
(level-group-method-10 () none) ;; 10 ;; (level-get-with-status (_type_ symbol) level)
(get-level-by-heap-ptr-and-status (_type_ pointer symbol) level) ;; 11
(level-group-method-12 () none) ;; 12 ;; (level-get-for-use (_type_ symbol symbol) level)
(level-group-method-13 () none) ;; 13 ;; (activate-levels! (_type_) int)
(level-get "Lookup loaded level by name." (_type_ symbol) level) ;; 9
(level-get-with-status "Get the first level with the given status, #f if there are none." (_type_ symbol) level) ;; 10
(get-level-by-heap-ptr-and-status "Look up a loaded level, given pointer inside of level's heap,
and the status of the level (active or loading)." (_type_ pointer symbol) level) ;; 11
(level-get-for-use "Request a level by name in the given state.
Will return quickly (non-blocking) and might not be able to get a level in the desired state,
though it will do some small amount of work to make progress on loading.
This is the most general/powerful function like this: if there is no level with this name
it will kick out levels as needed to make a free slot, and set up a new level, and start
the load. This should only be used when you might want to start a load." (_type_ symbol symbol) level) ;; 12
(activate-levels! "Make all levels 'active!" (_type_) int) ;; 13
(level-group-method-14 () none) ;; 14 ;; (debug-print-entities (_type_ symbol type) none)
(level-group-method-15 () none) ;; 15 ;; (debug-draw-actors (_type_ symbol) none)
(level-group-method-16 () none) ;; 16 ;; (assign-draw-indices (_type_) none)
(assign-draw-indices "Assign the order for levels to be drawn." (_type_) none) ;; 16
(level-group-method-17 () none) ;; 17 ;; (actors-update (_type_) none)
(level-group-method-18 () none) ;; 18 ;; (update-nav-meshes-method (_type_) none)
(level-update (_type_) none) ;; 19
(level-get-target-inside (_type_) level) ;; 20
(level-group-method-21 () none) ;; 21 ;; (alloc-levels-if-needed (_type_ symbol) none)
(art-group-get-by-name (_type_ string (pointer level)) art-group) ;; 22 ;; (load-commands-set! (_type_ pair) none)
(level-update "Per-frame update of the level system." (_type_) none) ;; 19
(level-get-target-inside "Get the level that the player is 'in'." (_type_) level) ;; 20
(init-level-system "If needed, initialize the level system by loading common/art packages and allocating level heaps." (_type_ symbol) none) ;; 21
(art-group-get-by-name "Check all levels for an art group with the given name." (_type_ string (pointer level)) art-group) ;; 22 ;; (load-commands-set! (_type_ pair) none)
(level-group-method-23 () none) ;; 23 ;; (art-group-get-by-name (_type_ string (pointer uint32)) art-group)
(level-group-method-24 () none) ;; 24 ;; (alt-load-command-get-index (_type_ symbol int) pair)
(level-group-method-25 () none) ;; 25 ;; (update-vis-volumes (_type_) none)
(level-group-method-26 (_type_ symbol int) symbol) ;; 26 ;; (update-vis-volumes-from-nav-mesh (_type_) none)
(level-group-method-27 () none) ;; 27 ;; (print-volume-sizes (_type_) none)
(level-group-method-28 (_type_) symbol) ;; 28 ;; (level-status (_type_ symbol) symbol)
(level-group-method-29 () none) ;; 29 ;; (load-in-progress? (_type_) symbol)
(level-group-method-30 () none) ;; 30 ;; (level-get-most-disposable (_type_) level)
(status-of-level-and-borrows "Get the combined status of a level and borrow levels." (_type_ symbol symbol) symbol) ;; 26 ;; (update-vis-volumes-from-nav-mesh (_type_) none)
(do-nothing "Empty method." (_type_) none) ;; 27 ;; (print-volume-sizes (_type_) none)
(load-in-progress? "Is there a load happening now?" (_type_) symbol) ;; 28 ;; (level-status (_type_ symbol) symbol)
(is-load-allowed? "Does the exclusive-load setting allow us to load this level?" (_type_ (pointer symbol)) symbol) ;; 29
(level-get-most-disposable "Get the level inside this level-group that should
be used to load a new level." (_type_) level) ;; 30
)
)
@@ -8355,6 +8394,7 @@
(define-extern *palette-fade-controls* palette-fade-controls)
(define-extern *time-of-day-context* time-of-day-context)
(define-extern *time-of-day* (pointer time-of-day-proc))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; profile ;;
@@ -10833,12 +10873,11 @@
(bsp-misc 60)
(bsp-node 61)
(bsp-leaf-vis-self 62)
(bsp-leav-vis-adj 63)
(draw-node 64)
(pat 65)
(level-code 66)
(entity-links 67)
(joint 68)
(joint-anim-compressed-control 70)
@@ -16373,26 +16412,26 @@
(command-list pair :offset-assert 608) ;; guessed by decompiler
(object-name string 256 :offset-assert 612) ;; guessed by decompiler
(object-status basic 256 :offset-assert 1636) ;; guessed by decompiler
(update-callback basic :offset-assert 2660)
(update-callback (function load-state object) :offset-assert 2660)
)
:method-count-assert 22
:size-assert #xa68
:flag-assert #x1600000a68
(:methods
(new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_)
(load-state-method-9 () none) ;; 9 ;; (reset! (_type_) _type_)
(load-state-method-10 () none) ;; 10 ;; (update! (_type_) int)
(load-state-method-11 () none) ;; 11 ;; (want-levels (_type_ (pointer symbol)) int)
(reset! (_type_) _type_) ;; 9
(update! (_type_) int) ;; 10
(want-levels (_type_ (pointer symbol)) int) ;; 11
(want-sound-banks (_type_ (pointer symbol)) none) ;; 12
(load-state-method-13 () none) ;; 13 ;; (want-display-level (_type_ symbol symbol) int)
(load-state-method-14 () none) ;; 14 ;; (want-vis-level (_type_ symbol) none)
(load-state-method-15 () none) ;; 15 ;; (want-force-vis (_type_ symbol symbol) int)
(load-state-method-16 () none) ;; 16 ;; (want-force-inside (_type_ symbol symbol) none)
(want-display-level (_type_ symbol symbol) int) ;; 13
(want-vis-level (_type_ symbol) none) ;; 14
(want-force-vis (_type_ symbol symbol) int) ;; 15
(want-force-inside (_type_ symbol symbol) none) ;; 16
(execute-commands-up-to (_type_ float) none) ;; 17
(backup-load-state-and-set-cmds (_type_ pair) int) ;; 18
(restore-load-state-and-cleanup (_type_) int) ;; 19
(restore-load-state (_type_) int) ;; 20
(load-state-method-21 (_type_) none) ;; 21 ;; (add-borrow-levels (_type_) none)
(add-borrow-levels (_type_) none) ;; 21
)
)
@@ -23103,6 +23142,8 @@
)
(declare-type entity-camera entity)
(declare-type entity-nav-mesh structure)
(declare-type city-level-info structure)
(deftype bsp-node (structure)
"A node in the 'BSP' tree. This is really a bounding volume tree, where each volume is an axis-aligned box, containing 2 child boxes.
@@ -23124,39 +23165,39 @@
"The bsp-header is really an entire level.
This probably started as a very simple structure, but now it is extremely complicated."
((info file-info :offset 4)
(all-visible-list (pointer uint8) :offset 32) ;; guessed by decompiler
(visible-list-length int16 :offset 36)
(all-visible-list (pointer uint8) :offset-assert 32) ;; guessed by decompiler
(visible-list-length int16 :offset-assert 36)
(extra-vis-list-length int16 :offset-assert 38)
(drawable-trees drawable-tree-array :offset 40) ;; guessed by decompiler
(pat pointer :offset 44) ;; guessed by decompiler
(pat-length int32 :offset 48)
(drawable-trees drawable-tree-array :offset-assert 40) ;; guessed by decompiler
(pat pointer :offset-assert 44) ;; guessed by decompiler
(pat-length int32 :offset-assert 48)
;; jak2: unlikely to match jak 3 exactly!!
(texture-remap-table (pointer uint64) :offset-assert 52)
(texture-remap-table-len int32 :offset-assert 56)
(texture-ids (pointer texture-id) :offset-assert 60)
(texture-page-count int32 :offset-assert 64)
(unknown-basic basic :offset-assert 68) ;; seems to be 0 everywhere.
; (name symbol :offset-assert 72)
; (nickname symbol :offset-assert 76)
; (vis-info level-vis-info 8 :offset-assert 80)
(actors drawable-inline-array-actor :offset 112)
(name symbol :offset-assert 72)
(nickname symbol :offset-assert 76)
(vis-info level-vis-info 8 :offset-assert 80)
(actors drawable-inline-array-actor :offset-assert 112)
(cameras (array entity-camera) :offset-assert 116)
(nodes (inline-array bsp-node) :offset 120)
(nodes (inline-array bsp-node) :offset-assert 120)
;; jak2: unlikely to match jak 3 exactly!!
(level level :offset-assert 124)
(current-leaf-idx uint16 :offset-assert 128)
(texture-flags texture-page-flag 10 :offset 130)
(texture-flags texture-page-flag 10 :offset-assert 130)
(cam-outside-bsp uint8 :offset 152)
(cam-using-back uint8 :offset-assert 153)
(cam-box-idx uint16 :offset-assert 154)
; (ambients symbol :offset-assert 156) ;; now just #t?
; (subdivide-close float :offset-assert 160)
; (subdivide-far float :offset-assert 164)
(subdivide-close float :offset 160)
(subdivide-far float :offset-assert 164)
; (race-meshes (array entity-race-mesh) :offset-assert 168)
(actor-birth-order (pointer uint32) :offset 172)
; (light-hash light-hash :offset-assert 176)
; (nav-meshes (array entity-nav-mesh) :offset-assert 180)
(light-hash light-hash :offset-assert 176)
(nav-meshes (array entity-nav-mesh) :offset-assert 180)
; (actor-groups (array actor-group) :offset-assert 184)
(region-trees (array drawable-tree-region-prim) :offset 188)
; (region-array region-array :offset-assert 192)
@@ -23165,10 +23206,10 @@
(wind-array uint32 :offset 200)
; ;; 204 is maybe that array's length
(wind-array-length int32 :offset 204)
; (city-level-info city-level-info :offset 208)
(city-level-info city-level-info :offset 208)
(vis-spheres vector-array :offset 216)
(vis-spheres-length uint32 :offset 248)
; (region-tree drawable-tree-region-prim :offset 252)
(region-tree drawable-tree-region-prim :offset 252)
(tfrag-masks texture-masks-array :offset 256)
(tfrag-closest (pointer float) :offset-assert 260)
@@ -30197,16 +30238,16 @@
;; texture-anim-tables ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (define-extern *sky-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim)
(define-extern *sky-texture-anim-array* (texture-anim-array texture-anim))
;; (define-extern set-fog-height! function) ;; (function float none)
;; (define-extern set-cloud-minmax! function) ;; (function float float none)
;; (define-extern *darkjak-texture-anim-array* texture-anim-array) ;; (texture-anim-array texture-anim)
(define-extern *darkjak-texture-anim-array* (texture-anim-array texture-anim))
;; (define-extern set-darkjak-texture-morph! function) ;; (function float none)
;; (define-extern *darkjak-highres-texture-anim-array* texture-anim-array)
(define-extern *darkjak-highres-texture-anim-array* (texture-anim-array texture-anim))
;; (define-extern set-darkjak-highres-texture-morph! function) ;; (function float symbol)
(define-extern *skull-gem-texture-anim-array* (texture-anim-array texture-anim))
;; (define-extern *default-water-texture-anim-array* texture-anim-array)
;; (define-extern *default-warp-texture-anim-array* texture-anim-array)
(define-extern *default-water-texture-anim-array* (texture-anim-array texture-anim))
(define-extern *default-warp-texture-anim-array* (texture-anim-array texture-anim))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; blit-displays ;;
@@ -30787,14 +30828,14 @@
;; (define-extern lookup-part-group-by-name function) ;; (function string sparticle-launch-group)
(define-extern lookup-part-group-pointer-by-name (function string (pointer object)))
(define-extern part-group-pointer? (function pointer symbol))
;; (define-extern unlink-part-group-by-heap function) ;; (function kheap int)
(define-extern unlink-part-group-by-heap (function kheap int))
;; (define-extern sp-init-fields! function) ;; (function (pointer float) (inline-array sp-field-init-spec) sp-field-id sp-field-id symbol (inline-array sp-field-init-spec))
;; (define-extern *sp-launcher-lock* object) ;; symbol
;; (define-extern *sp-launch-queue* object) ;; sp-launch-queue
;; (define-extern *sp-launcher-enable* object) ;; symbol
;; (define-extern particle-setup-adgif function) ;; (function adgif-shader int none)
;; (define-extern *particle-adgif-cache* object) ;; particle-adgif-cache
;; (define-extern particle-adgif-cache-flush function) ;; (function none)
(define-extern particle-adgif-cache-flush (function none))
;; (define-extern particle-adgif function) ;; (function adgif-shader texture-id none)
;; (define-extern particle-adgif-callback function) ;; (function adgif-shader texture-id none)
;; (define-extern sp-queue-launch function) ;; (function sparticle-system sparticle-launcher matrix int)
@@ -30890,7 +30931,7 @@
(define-extern kill-all-particles-with-key (function sparticle-launch-control none))
;; (define-extern forall-particles-runner function) ;; (function (function sparticle-system sparticle-cpuinfo pointer none) sparticle-system none)
;; (define-extern forall-particles function) ;; (function function symbol symbol none)
;; (define-extern kill-all-particles-in-level function) ;; (function level int)
(define-extern kill-all-particles-in-level (function level int))
;; (define-extern all-particles-50-to-60 function) ;; (function none)
;; (define-extern all-particles-60-to-50 function) ;; (function none)
;; (define-extern remap-particle function) ;; (function sparticle-system sparticle-cpuinfo pointer none)
@@ -31328,7 +31369,7 @@
;; (define-extern update-mood-exterior function) ;; (function mood-context-core3 mood-table float int object)
;; (define-extern copy-mood-exterior function) ;; (function mood-context symbol)
;; (define-extern copy-mood-exterior-ambi function) ;; (function mood-context symbol none)
;; (define-extern clear-mood-context function) ;; (function mood-context symbol)
(define-extern clear-mood-context (function mood-context symbol))
;; (define-extern update-mood-interior function) ;; (function mood-context float)
;; (define-extern update-mood-interior-ambient function)
;; (define-extern update-mood-flames function) ;; (function mood-context int int int float float float float :behavior time-of-day-proc)
@@ -31752,14 +31793,14 @@
;; load-state ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (define-extern level-base-level-name function)
;; (define-extern *borrow-city-expansion-list* object)
;; (define-extern *borrow-city-status-list* object)
;; (define-extern borrow-city-expansion function)
;; (define-extern add-want-level function)
;; (define-extern *display-load-commands* object) ;; symbol
;; (define-extern *backup-load-state* object) ;; load-state
;; (define-extern *load-state* object) ;; load-state
(define-extern level-base-level-name (function symbol object))
(define-extern *borrow-city-expansion-list* pair)
(define-extern *borrow-city-status-list* pair)
(define-extern borrow-city-expansion (function pair object))
(define-extern add-want-level (function (inline-array level-buffer-state) (pointer int64) symbol symbol symbol symbol object))
(define-extern *display-load-commands* symbol)
(define-extern *backup-load-state* load-state)
(define-extern *load-state* load-state)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; level-info ;;
@@ -32067,21 +32108,30 @@
;; level ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-extern level-memory-mode->string (function level-memory-mode string))
(define-extern lookup-level-info (function symbol level-load-info))
;; (define-extern remap-level-name function) ;; (function level-load-info symbol)
;; (define-extern add-bsp-drawable function) ;; (function bsp-header level symbol display-frame none)
;; (define-extern *login-state* object) ;; login-state
(define-extern *level-type-list* type)
(define-extern level-memory-mode->string "Convert level-memory-mode enum to string." (function level-memory-mode string))
(define-extern lookup-level-info "Get the level load info. Symbol can be the level name, visname, nickname, or a symbol that contains a level-load-info value." (function symbol level-load-info))
(define-extern remap-level-name "Get the load name, depending on if we should load a vis level or not." (function level-load-info symbol))
(define-extern add-bsp-drawable "Callback function used by background-engine to draw a bsp.
Note that most drawing work has been moved into finish-background,
and the draw method called here just adds references to high-level rendering data
to lists. The exception is debug-draw, which does run here (only for draw-strip-lines)." (function bsp-header level symbol display-frame none))
(define-extern *login-state* login-state)
(define-extern *print-login* symbol)
;; (define-extern load-buffer-resize function) ;; (function level dgo-header none)
;; (define-extern level-find-borrow-slot function)
;; (define-extern level-update-after-load function) ;; (function level login-state level)
;; (define-extern bg function) ;; (function symbol none)
;; (define-extern play function) ;; (function symbol symbol int)
;; (define-extern play-boot function) ;; (function none)
;; (define-extern sound-bank-name->mode function)
;; (define-extern update-sound-banks function) ;; (function int)
;; (define-extern show-level function) ;; (function symbol int)
(define-extern load-buffer-resize "Resize and relocate the DGO load buffers, making sure there is enough room to both load objects and heap alloc in the linker." (function level dgo-header none))
(define-extern level-find-borrow-slot "Set up a level to 'borrow' from another.
This function finds the right 'host' level, which should
have prepared a heap for this level. This level will then
be configured to use this heap." (function level level-memory-mode none))
(define-extern level-update-after-load "Run the post-load state machine to login level data." (function level login-state level))
(define-extern bg "Debug function to start playing a given level." (function symbol none))
(define-extern play "Start (or restart) the game!
This will start up the display process, and load the initial level." (function symbol symbol int))
(define-extern play-boot
"Function called by the C Kernel to start the game (wrapper around play)." (function none))
(define-extern sound-bank-name->mode (function symbol sound-bank-mode))
(define-extern update-sound-banks (function load-state (inline-array sound-bank-state) none))
(define-extern show-level (function symbol none))
(define-extern *default-level* level)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -37282,7 +37332,7 @@
;; (define-extern end-display function) ;; (function display none)
;; (define-extern display-loop-main function) ;; (function display none)
;; (define-extern display-loop function) ;; (function int :behavior process)
;; (define-extern on function) ;; (function symbol process)
(define-extern on (function symbol process))
;; (define-extern off function) ;; (function int)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -47576,7 +47626,8 @@
)
|#
;; (define-extern *city-borrow-manager* object)
(declare-type cty-borrow-manager basic)
(define-extern *city-borrow-manager* cty-borrow-manager)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; cty-faction-h ;;
@@ -69095,11 +69146,11 @@
;; (define-extern level->sound-bank-name function)
;; (define-extern insert-into-sound-list function)
;; (define-extern update-sound-info function)
;; (define-extern mark-permanent-holds function)
(define-extern mark-permanent-holds (function pair object))
;; (define-extern city-sound-exists? function)
;; (define-extern sound-bank-mode->use-count function)
;; (define-extern add-city-sound-bank-if-possible function)
;; (define-extern city-sound-expand-want-list function)
(define-extern city-sound-expand-want-list (function none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ctywide-init ;;
@@ -125,5 +125,6 @@
[78, "(function part-tracker vector)"]
],
"trajectory": [[15, "(function trajectory none)"]],
"progress": [[3, "(function int none :behavior process)"]]
"progress": [[3, "(function int none :behavior process)"]],
"level": [[25, "(function level-group int symbol)"], [7, "(function none)"], [4, "(function load-state sound-bank-state symbol)"]]
}
+26 -5
View File
@@ -109,8 +109,6 @@
"(anon-function 4 gun-states)",
"(method 10 manipulator)",
"(method 46 ff-squad-control)",
"borrow-city-expansion",
"(method 26 level-group)",
"(anon-function 65 temple-obs)",
"(method 33 task-manager-nest-cocoons)",
"(method 33 rub-tower)",
@@ -213,7 +211,18 @@
"(method 22 fort-floor-spike-c)",
"(method 11 sew-catwalk)",
"(method 11 mtn-aval-rocks)",
"(method 11 gar-curtain)"
"(method 11 gar-curtain)",
"(method 10 level-load-info)",
"(method 29 level-group)",
"(method 26 level-group)",
"(method 19 level)",
"(method 10 level)",
"update-sound-banks",
"level-base-level-name",
"borrow-city-expansion",
"add-want-level",
"level-find-borrow-slot",
"(method 18 level)"
],
// If format is used with the wrong number of arguments,
@@ -249,7 +258,17 @@
"~33L~S ~35L~S~1L": 2,
"~33L~C": 1,
"~33L~S~44L ~S": 2,
"~44L~S ~33L~S": 2
"~44L~S ~33L~S": 2,
"~10Htfrag: ~8,,0m": 1,
"~140Hshrub: ~8,,0m": 1,
"~272Halpha: ~8,,0m~%": 1,
"~27Htie: ~8,,0m": 1,
"~140Hfg-tf: ~8,,0m": 1,
"~270Hfg-pr: ~8,,0m~%": 1,
"~10Hfg-wa: ~8,,0m": 1,
"~140Hfg-sh: ~8,,0m": 1,
"~267Hfg-p2: ~8,,0m~%": 1,
"~30Hp2: ~8D~131Hhf: ~8D~%~1K": 2
},
"blocks_ending_in_asm_branch": {
@@ -319,7 +338,9 @@
"set-background-regs!": [4, 3],
"draw-drawable-tree-instance-shrub": [5, 7, 9, 11],
"draw-drawable-tree-instance-tie": [21, 23, 31, 33],
"(method 12 flow-control)": [3, 9, 22]
"(method 12 flow-control)": [3, 9, 22],
"(method 26 level-group)": [40, 41, 67],
"borrow-city-expansion": [0, 9, 13, 15, 17]
},
// Sometimes the game might use format strings that are fetched dynamically,
@@ -391,5 +391,10 @@
"hud-classes": [
["L205", "(inline-array hud-sprite)", 24],
["L214", "(inline-array vector)", 4]
],
"level": [
["L1004", "uint64", true],
["L1003", "uint64", true]
]
}
@@ -399,5 +399,17 @@
[128, "vector"]
],
"progress-post": [[176, "hud-box"]],
"(method 15 hud-gun)": [[16, "hud-sprite"]]
"(method 15 hud-gun)": [[16, "hud-sprite"]],
"play": [
[96, ["array", "symbol", 10]]
],
"update-sound-banks": [
[16, ["array", "int8", 36]]
],
"show-level": [[16, ["array", "symbol", 10]]],
"(method 20 load-state)": [
[16, ["inline-array", "level-buffer-state", 10]],
[176, ["inline-array", "level-buffer-state", 10]]
]
}
@@ -2938,5 +2938,58 @@
"(method 16 hud)": [
[127, "v1", "int"],
[147, "v1", "int"]
],
"lookup-level-info": [
[11, "v1", "basic"],
[21, "a1", "symbol"],
[[22, 34], "a1", "level-load-info"]
],
"(method 29 level-group)": [
[[2, 53], "v1", "pair"]
],
"level-find-borrow-slot": [
[[204, 211], "a2", "level"]
],
"(method 19 level)": [
[[40, 118], "a3", "symbol"],
[[52, 56], "a0", "texture-anim-array"]
],
"level-update-after-load": [
[[25, 58], "s1", "drawable-tree-tfrag"],
[142, "v1", "drawable-inline-array-tfrag"],
[147, "v1", "drawable-inline-array-tfrag"],
[152, "a0", "drawable-inline-array-tfrag"],
[175, "v1", "drawable-tree-instance-tie"],
[178, "v1", "drawable-tree-instance-tie"],
[393, "a1", "(pointer int32)"],
[398, "a2", "(pointer int32)"]
],
"(method 25 level)": [
[97, "s1", "(function object object)"],
[171, "s0", "(function object object object)"]
],
"(method 9 level)": [
[51, "s5", "(function object object)"],
[[143, 166], "v1", "task-mask"]
],
"(method 10 level)": [
[[214, 217], "v1", "symbol"],
[[216, 220], "a0", "texture-anim-array"],
[137, "s5", "(function level object)"],
[[349, 358], "a1", "type"]
],
"(method 30 level-group)": [
[87, "v0", "level"]
],
"(method 10 load-state)": [
[461, "v1", "level"],
[468, "v1", "level"]
],
"update-sound-banks": [
[131, "a0", "pair"]
],
"borrow-city-expansion": [
[23, "a0", "basic"],
[52, "s5", "basic"]
]
}
@@ -1864,5 +1864,16 @@
"vars": {
"s4-0": ["act", "game-task-node-flag"]
}
},
"level-find-borrow-slot": {
"args": ["borrower-level", "mode"],
"vars": {
"v1-0": "host-level-borrow-slot",
"a2-0": "host-level-candidate-idx",
"a3-3": "host-level-candidate",
"t0-7": "mode2",
"t0-10": "found-slot",
"t0-8": "host-level-slot-idx"
}
}
}
+1 -1
View File
@@ -1466,7 +1466,7 @@ goos::Object decompile_structure(const TypeSpec& type,
} else if (word.kind() == LinkedWord::EMPTY_PTR) {
field_defs_out.emplace_back(field.name(), pretty_print::to_symbol("'()"));
} else if (word.kind() == LinkedWord::TYPE_PTR) {
if (field.type() != TypeSpec("type")) {
if (!ts.tc(field.type(), TypeSpec("type"))) {
throw std::runtime_error(
fmt::format("Field {} in type {} offset {} had a reference to type {}, but the "
"type of the field is not type.",
+10 -11
View File
@@ -239,32 +239,31 @@
(command-list pair)
(object-name string 256)
(object-status basic 256)
(update-callback basic)
(update-callback (function load-state object))
)
(:methods
(new (symbol type) _type_)
(load-state-method-9 () none)
(load-state-method-10 () none)
(load-state-method-11 () none)
(reset! (_type_) _type_)
(update! (_type_) int)
(want-levels (_type_ (pointer symbol)) int)
(want-sound-banks (_type_ (pointer symbol)) none)
(load-state-method-13 () none)
(load-state-method-14 () none)
(load-state-method-15 () none)
(load-state-method-16 () none)
(want-display-level (_type_ symbol symbol) int)
(want-vis-level (_type_ symbol) none)
(want-force-vis (_type_ symbol symbol) int)
(want-force-inside (_type_ symbol symbol) none)
(execute-commands-up-to (_type_ float) none)
(backup-load-state-and-set-cmds (_type_ pair) int)
(restore-load-state-and-cleanup (_type_) int)
(restore-load-state (_type_) int)
(load-state-method-21 (_type_) none)
(add-borrow-levels (_type_) none)
)
)
;; WARN: Return type mismatch none vs load-state.
(defmethod new load-state ((allocation symbol) (type-to-make type))
(let ((a0-1 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
(set! (-> a0-1 update-callback) #f)
(the-as load-state ((method-of-object a0-1 load-state-method-9)))
(reset! a0-1)
)
)
+2 -2
View File
@@ -202,7 +202,7 @@
(set! (-> continue-rot 8) (the int (* 32767.0 (-> rot fvec z))))
)
)
(load-state-method-21 arg0)
(add-borrow-levels arg0)
this
)
@@ -382,7 +382,7 @@
(when (or (and (-> subtask manager) (handle->process (-> subtask manager manager)))
(and (-> subtask manager)
(-> subtask manager level)
(= (level-group-method-26 *level* (-> subtask manager level) (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* (-> subtask manager level) #f) 'active)
)
(and (not (-> subtask manager)) (= (-> level info taskname) (-> subtask level)))
)
+1
View File
@@ -12,6 +12,7 @@
(define-extern kiosk? (function symbol))
(define-extern set-blackout-frames (function time-frame none))
(define-extern set-master-mode (function symbol none))
(define-extern on (function symbol process))
;; +++main-h:collide-spec
(defenum collide-spec
+2 -2
View File
@@ -1429,7 +1429,7 @@
(set! (-> s5-0 allow-error) (-> s4-0 allow-error))
(set! (-> s5-0 under-water-pitch-mod) (-> s4-0 under-water-pitch-mod))
(set! (-> s5-0 slow-time) (-> s4-0 slow-time))
(if (and (-> s4-0 mirror) (= (level-group-method-26 *level* 'ctywide (the-as int #f)) 'active))
(if (and (-> s4-0 mirror) (= (status-of-level-and-borrows *level* 'ctywide #f) 'active))
(set! (-> s5-0 mirror) #f)
(set! (-> s5-0 mirror) (-> s4-0 mirror))
)
@@ -1653,7 +1653,7 @@
(when (and (!= (-> s4-0 music) (-> s5-0 music))
(and (zero? (rpc-busy? 1))
(or (not (-> s4-0 music))
(and (< 0.0 (-> s5-0 music-volume)) (not (level-group-method-28 *level*)) (not (-> s5-0 movie)))
(and (< 0.0 (-> s5-0 music-volume)) (not (load-in-progress? *level*)) (not (-> s5-0 movie)))
)
(not *master-exit*)
)
@@ -44,6 +44,7 @@
(define-extern *lightning-spec-id-table* (array lightning-spec))
(define-extern process-drawable-art-error (state string process-drawable))
(define-extern unlink-lightning-spec-by-heap (function kheap none))
;; DECOMP BEGINS
+3
View File
@@ -6,9 +6,12 @@
;; dgos: GAME
(declare-type sky-color-day structure)
(declare-type mood-context structure)
(define-extern movie? (function symbol))
(define-extern clear-mood-context (function mood-context symbol))
;; DECOMP BEGINS
(deftype mood-channel (structure)
@@ -28,6 +28,8 @@
(declare-type time-of-day-palette structure)
(define-extern time-of-day-interp-colors (function (pointer rgba) uint mood-context none))
(define-extern time-of-day-interp-colors-scratch (function (pointer rgba) time-of-day-palette mood-context none))
(declare-type time-of-day-proc process)
(define-extern *time-of-day* (pointer time-of-day-proc))
;; DECOMP BEGINS
@@ -45,6 +45,8 @@
)
)
(define-extern kill-all-particles-in-level (function level int))
;; DECOMP BEGINS
(define *sp-60-hz* #t)
@@ -9,6 +9,9 @@
(declare-type sparticle-cpuinfo structure)
(declare-type sparticle-system structure)
(define-extern unlink-part-group-by-heap (function kheap int))
(define-extern particle-adgif-cache-flush (function none))
;; +++sp-field-id
(defenum sp-field-id
:type uint16
@@ -5,5 +5,12 @@
;; name in dgo: texture-anim-tables
;; dgos: GAME
(define-extern *sky-texture-anim-array* (texture-anim-array texture-anim))
(define-extern *darkjak-texture-anim-array* (texture-anim-array texture-anim))
(define-extern *darkjak-highres-texture-anim-array* (texture-anim-array texture-anim))
(define-extern *skull-gem-texture-anim-array* (texture-anim-array texture-anim))
(define-extern *default-water-texture-anim-array* (texture-anim-array texture-anim))
(define-extern *default-warp-texture-anim-array* (texture-anim-array texture-anim))
;; DECOMP BEGINS
+19 -8
View File
@@ -8,6 +8,8 @@
(declare-type bsp-header drawable)
(declare-type bsp-node structure)
(declare-type entity-camera entity)
(declare-type entity-nav-mesh structure)
(declare-type city-level-info structure)
(define-extern inspect-bsp-tree (function bsp-header bsp-node none))
(define-extern map-bsp-tree (function (function bsp-node none) bsp-header bsp-node none))
@@ -40,33 +42,42 @@ This is used for precomputed visibility, based on the camera position. This is n
"The bsp-header is really an entire level.
This probably started as a very simple structure, but now it is extremely complicated."
((info file-info :overlay-at id)
(all-visible-list (pointer uint8) :offset 32)
(visible-list-length int16 :offset 36)
(all-visible-list (pointer uint8))
(visible-list-length int16)
(extra-vis-list-length int16)
(drawable-trees drawable-tree-array :offset 40)
(pat pointer :offset 44)
(pat-length int32 :offset 48)
(drawable-trees drawable-tree-array)
(pat pointer)
(pat-length int32)
(texture-remap-table (pointer uint64))
(texture-remap-table-len int32)
(texture-ids (pointer texture-id))
(texture-page-count int32)
(unknown-basic basic)
(actors drawable-inline-array-actor :offset 112)
(name symbol)
(nickname symbol)
(vis-info level-vis-info 8)
(actors drawable-inline-array-actor)
(cameras (array entity-camera))
(nodes (inline-array bsp-node) :offset 120)
(nodes (inline-array bsp-node))
(level level)
(current-leaf-idx uint16)
(texture-flags texture-page-flag 10 :offset 130)
(texture-flags texture-page-flag 10)
(cam-outside-bsp uint8 :offset 152)
(cam-using-back uint8)
(cam-box-idx uint16)
(subdivide-close float :offset 160)
(subdivide-far float)
(actor-birth-order (pointer uint32) :offset 172)
(light-hash light-hash)
(nav-meshes (array entity-nav-mesh))
(region-trees (array drawable-tree-region-prim) :offset 188)
(collide-hash collide-hash :offset 196)
(wind-array uint32 :offset 200)
(wind-array-length int32 :offset 204)
(city-level-info city-level-info :offset 208)
(vis-spheres vector-array :offset 216)
(vis-spheres-length uint32 :offset 248)
(region-tree drawable-tree-region-prim :offset 252)
(tfrag-masks texture-masks-array :offset 256)
(tfrag-closest (pointer float))
(tfrag-mask-count uint32 :overlay-at tfrag-closest)
+36 -29
View File
@@ -13,12 +13,15 @@
(declare-type game-text-info structure)
(declare-type entity-links structure)
(declare-type level-group basic)
(declare-type level-load-info structure)
(define-extern *level* level-group)
(define-extern *draw-index* int)
(define-extern *level-index* int)
(define-extern *print-login* symbol)
(define-extern level-remap-texture (function texture-id texture-id))
(define-extern lookup-level-info (function symbol level-load-info))
;; +++vis-info-flag
(defenum vis-info-flag
@@ -255,9 +258,9 @@
)
(deftype level-borrow-info (basic)
((alias symbol)
((alias object)
(borrow-size uint16 5)
(borrow-info symbol 5)
(borrow-info object 5)
)
)
@@ -303,12 +306,11 @@
(mood-range mood-range :inline)
)
(:methods
(level-load-info-method-9 (_type_ int) object)
(level-load-info-method-10 (_type_) none)
(get-callback-symbol-value-by-slot! (_type_ int) object)
(get-callback-by-slot! (_type_ int) object)
)
)
(define-extern lookup-level-info (function symbol level-load-info))
(deftype login-state (basic)
((state int32)
@@ -338,6 +340,11 @@
(entity entity-links-array)
(closest-object meters 10)
(tie-min-dist float :offset 352)
(fg-tfrag-min-dist float)
(fg-prim-min-dist float)
(fg-shrub-min-dist float)
(fg-warp-min-dist float :offset 372)
(fg-prim2-min-dist float :offset 380)
(upload-size int32 20 :offset 388)
(inside-boxes? basic)
(display? symbol)
@@ -397,27 +404,27 @@
(unknown-pad uint8 14)
)
(:methods
(level-method-9 () none)
(level-method-10 () none)
(level-method-11 () none)
(deactivate (_type_) _type_)
(unload! (_type_) _type_)
(is-object-visible? (_type_ int) symbol)
(level-method-12 () none)
(level-method-13 () none)
(bsp-name (_type_) symbol)
(compute-memory-usage! (_type_ symbol) memory-usage-block)
(level-method-15 () none)
(inside-bsp? (_type_) symbol)
(update-vis! (_type_ level-vis-info uint (pointer uint8)) symbol)
(level-method-17 () none)
(level-method-18 () none)
(level-method-19 () none)
(level-method-20 () none)
(load-continue (_type_) _type_)
(load-begin (_type_) _type_)
(login-begin (_type_) _type_)
(debug-print-region-splitbox (_type_ vector object) none)
(get-art-group-by-name (_type_ string) art-group)
(level-method-22 () none)
(level-method-23 () none)
(level-method-24 () none)
(level-method-25 () none)
(level-method-26 () none)
(level-method-27 () none)
(level-method-28 () none)
(level-method-29 () none)
(birth (_type_) _type_)
(level-status-update! (_type_ symbol) _type_)
(load-common-package (_type_) none)
(init-vis-from-bsp (_type_) none)
(vis-clear (_type_) none)
)
)
@@ -463,27 +470,27 @@
)
(:methods
(level-get (_type_ symbol) level)
(level-group-method-10 () none)
(level-get-with-status (_type_ symbol) level)
(get-level-by-heap-ptr-and-status (_type_ pointer symbol) level)
(level-group-method-12 () none)
(level-group-method-13 () none)
(level-get-for-use (_type_ symbol symbol) level)
(activate-levels! (_type_) int)
(level-group-method-14 () none)
(level-group-method-15 () none)
(level-group-method-16 () none)
(assign-draw-indices (_type_) none)
(level-group-method-17 () none)
(level-group-method-18 () none)
(level-update (_type_) none)
(level-get-target-inside (_type_) level)
(level-group-method-21 () none)
(init-level-system (_type_ symbol) none)
(art-group-get-by-name (_type_ string (pointer level)) art-group)
(level-group-method-23 () none)
(level-group-method-24 () none)
(level-group-method-25 () none)
(level-group-method-26 (_type_ symbol int) symbol)
(level-group-method-27 () none)
(level-group-method-28 (_type_) symbol)
(level-group-method-29 () none)
(level-group-method-30 () none)
(status-of-level-and-borrows (_type_ symbol symbol) symbol)
(do-nothing (_type_) none)
(load-in-progress? (_type_) symbol)
(is-load-allowed? (_type_ (pointer symbol)) symbol)
(level-get-most-disposable (_type_) level)
)
)
+40 -40
View File
@@ -445,7 +445,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xbb8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -570,7 +570,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x1a4 #x1a4 #x1a4 #x30c #x32a)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -602,7 +602,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -633,7 +633,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -664,7 +664,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -695,7 +695,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -726,7 +726,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -757,7 +757,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -3151,7 +3151,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x71c #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -100)
:fog-height (meters 80)
@@ -3334,7 +3334,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x13a1 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -3478,7 +3478,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xbea #x898 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -4234,7 +4234,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x4ba #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -4355,7 +4355,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x82a #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -4497,7 +4497,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x1b #x2ee #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -4718,7 +4718,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #xe6 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -5102,7 +5102,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xfa #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -5277,7 +5277,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xfa #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -6125,7 +6125,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xa28 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -10000)
:fog-height (meters 80)
@@ -8081,7 +8081,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x79e #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -8350,7 +8350,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x785 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -8383,7 +8383,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x21c #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -8515,7 +8515,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x195 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -10000)
:fog-height (meters 80)
@@ -8548,7 +8548,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x320 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -8839,7 +8839,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x258 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -9320,7 +9320,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -9754,7 +9754,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x4dd #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -9787,7 +9787,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x8ca #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -10238,7 +10238,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x898 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters 10)
:fog-height (meters 80)
@@ -11700,7 +11700,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x52d #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -13765,7 +13765,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -14201,7 +14201,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -14623,7 +14623,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x4c9 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -15756,7 +15756,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -16235,7 +16235,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xa #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -17556,7 +17556,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x285 #x8fc #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -17821,7 +17821,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xc4e #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -18193,7 +18193,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xc4e #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -18277,7 +18277,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xc4e #x9c4 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters 516)
:fog-height (meters 80)
@@ -18462,7 +18462,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x258 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -18578,7 +18578,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x384 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
File diff suppressed because it is too large Load Diff
+613
View File
@@ -5,5 +5,618 @@
;; name in dgo: load-state
;; dgos: GAME
(declare-type cty-borrow-manager basic)
(define-extern *city-borrow-manager* cty-borrow-manager)
(define-extern mark-permanent-holds (function pair object))
(define-extern add-want-level (function (inline-array level-buffer-state) (pointer int64) symbol symbol symbol symbol object))
(define-extern *backup-load-state* load-state)
;; DECOMP BEGINS
(defmethod print ((this level-buffer-state))
(format
#t
"#<level-buffer-state ~A ~A ~A ~A @ #x~X>"
(-> this name)
(-> this display?)
(-> this force-vis?)
(-> this force-inside?)
this
)
this
)
(defmethod print ((this level-buffer-state-small))
(format #t "#<level-buffer-state ~A ~A @ #x~X>" (-> this name) (-> this display?) this)
this
)
(defmethod print ((this sound-bank-state))
(let ((t9-0 format)
(a0-1 #t)
(a1-0 "#<sound-bank-state ~A ~S @ #x~X>")
(a2-0 (-> this name))
(v1-0 (-> this mode))
)
(t9-0
a0-1
a1-0
a2-0
(cond
((= v1-0 (sound-bank-mode halfa))
"halfa"
)
((= v1-0 (sound-bank-mode halfc))
"halfc"
)
((= v1-0 (sound-bank-mode half))
"half"
)
((= v1-0 (sound-bank-mode full))
"full"
)
((= v1-0 (sound-bank-mode mode))
"mode"
)
((= v1-0 (sound-bank-mode unknown))
"unknown"
)
((= v1-0 (sound-bank-mode common))
"common"
)
((= v1-0 (sound-bank-mode halfb))
"halfb"
)
((= v1-0 (sound-bank-mode none))
"none"
)
((= v1-0 (sound-bank-mode virtual))
"virtual"
)
(else
"*unknown*"
)
)
this
)
)
this
)
(defmethod reset! ((this load-state))
(dotimes (v1-0 10)
(set! (-> this want v1-0 name) #f)
(set! (-> this want v1-0 display?) #f)
(set! (-> this want v1-0 force-vis?) #f)
(set! (-> this want v1-0 force-inside?) #f)
)
(dotimes (v1-3 3)
(set! (-> this want-sound v1-3 name) #f)
(set! (-> this want-sound v1-3 mode) (sound-bank-mode none))
)
(set! (-> this command-list) '())
(dotimes (v1-7 256)
(set! (-> this object-name v1-7) #f)
(set! (-> this object-status v1-7) (the-as basic 0))
)
this
)
(defun level-base-level-name ((arg0 symbol))
(when arg0
(let ((v1-0 (lookup-level-info arg0)))
(if (and v1-0 (-> v1-0 borrow) (-> v1-0 borrow alias))
(car (-> v1-0 borrow alias))
)
)
)
)
(defmethod want-levels ((this load-state) (arg0 (pointer symbol)))
(dotimes (v1-0 10)
(dotimes (a0-1 10)
(when (= (-> this want v1-0 name) (-> arg0 a0-1))
(set! (-> arg0 a0-1) #f)
(goto cfg-8)
)
)
(set! (-> this want v1-0 name) #f)
(label cfg-8)
)
(dotimes (s4-0 10)
(when (-> arg0 s4-0)
(dotimes (s3-0 10)
(when (not (-> this want s3-0 name))
(set! (-> this want s3-0 name) (-> arg0 s4-0))
(set! (-> this want s3-0 display?) #f)
(set! (-> this want s3-0 force-vis?) #f)
(set! (-> this want s3-0 force-inside?) #f)
(let ((a0-13 (level-base-level-name (-> this want s3-0 name))))
(dotimes (v1-22 10)
(when (= (-> this want-exp v1-22 name) a0-13)
(set! (-> this want s3-0 display?) (-> this want-exp v1-22 display?))
(set! (-> this want s3-0 force-vis?) (-> this want-exp v1-22 force-vis?))
(set! (-> this want s3-0 force-inside?) (-> this want-exp v1-22 force-inside?))
(goto cfg-21)
)
)
)
(label cfg-21)
(goto cfg-26)
)
)
)
(label cfg-26)
)
(dotimes (v1-35 10)
(when (not (-> this want v1-35 name))
(set! (-> this want v1-35 display?) #f)
(set! (-> this want v1-35 force-vis?) #f)
(set! (-> this want v1-35 force-inside?) #f)
)
)
(add-borrow-levels this)
0
)
(define *borrow-city-expansion-list* '(#f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f))
(define *borrow-city-status-list* '(#f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f))
;; WARN: Return type mismatch pair vs object.
(defun borrow-city-expansion ((arg0 pair))
(local-vars (v1-12 type) (s2-2 int) (sv-16 pair) (sv-20 symbol) (sv-24 object))
(let ((gp-0 *borrow-city-expansion-list*))
0
(let ((s4-0 0))
(b! #t cfg-2 :delay (nop!))
(label cfg-1)
(set! (car (ref& gp-0 s4-0)) #f)
(set! (car (ref& *borrow-city-status-list* s4-0)) #f)
(+! s4-0 1)
(label cfg-2)
(let ((a0-3 (the-as object gp-0)))
(b! (< s4-0 ((method-of-type (rtype-of (the-as pair a0-3)) length) (the-as pair a0-3))) cfg-1)
)
)
(let* ((v1-7 gp-0)
(a0-4 arg0)
(a1-4 (car a0-4))
)
(while (not (null? a0-4))
(set! (car v1-7) a1-4)
(set! v1-7 (cdr v1-7))
(set! a0-4 (cdr a0-4))
(set! a1-4 (car a0-4))
)
)
(let ((v1-11 (shr (shl (the-as int arg0) 61) 61)))
(b! (zero? v1-11) cfg-20 :likely-delay (set! v1-12 binteger))
(b! (= v1-11 4) cfg-20 :likely-delay (set! v1-12 (-> (the-as basic arg0) type)))
(b! (= v1-11 2) cfg-20 :likely-delay (set! v1-12 pair))
)
(set! v1-12 symbol)
(label cfg-20)
(let ((s5-1 ((method-of-type v1-12 length) arg0)))
(if (and (nonzero? *city-borrow-manager*) *city-borrow-manager*)
(mark-permanent-holds gp-0)
)
(dotimes (s4-1 (the-as int (-> *setting-control* user-current borrow-city-count)))
(set! sv-16 (-> *setting-control* user-current borrow-city s4-1))
(let* ((s3-0 sv-16)
(v1-20 (car s3-0))
)
(while (not (null? s3-0))
(set! sv-20 (the-as symbol #f))
(set! sv-24 v1-20)
(when sv-24
(dotimes (s2-0 (/ s5-1 2))
(when (= sv-24 (ref gp-0 (* s2-0 2)))
(set! sv-20 #t)
(if (= (ref gp-0 (+ (* s2-0 2) 1)) 'auto)
(set! (car (ref& gp-0 (+ (* s2-0 2) 1))) 'faction)
)
0
(goto cfg-37)
)
)
(label cfg-37)
(when (not sv-20)
(dotimes (s2-1 (/ s5-1 2))
(when (= (ref gp-0 (+ (* s2-1 2) 1)) 'auto)
(set! s2-2 s2-1)
(goto cfg-45)
)
)
(set! s2-2 -1)
(label cfg-45)
(when (> s2-2 0)
(set! (car (ref& gp-0 (* s2-2 2))) sv-24)
(set! (car (ref& gp-0 (+ (* s2-2 2) 1))) 'faction)
)
)
)
(set! s3-0 (cdr s3-0))
(set! v1-20 (car s3-0))
)
)
)
(let ((s4-2 0))
(dotimes (s3-1 (/ s5-1 2))
(let ((v1-48 (ref gp-0 (+ (* s3-1 2) 1))))
(when (not (or (= v1-48 'auto) (= v1-48 'faction)))
(set! (car (ref& *borrow-city-status-list* (* s4-2 2))) (ref gp-0 (* s3-1 2)))
(set! (car (ref& *borrow-city-status-list* (+ (* s4-2 2) 1))) (ref gp-0 (+ (* s3-1 2) 1)))
(+! s4-2 1)
)
)
)
)
(dotimes (s4-3 (/ s5-1 2))
(case (ref gp-0 (+ (* s4-3 2) 1))
(('auto 'faction)
(set! (car (ref& gp-0 (+ (* s4-3 2) 1))) 'special)
)
)
)
)
gp-0
)
)
;; WARN: Return type mismatch int vs object.
(defun add-want-level ((arg0 (inline-array level-buffer-state))
(arg1 (pointer int64))
(arg2 symbol)
(arg3 symbol)
(arg4 symbol)
(arg5 symbol)
)
(when arg2
(let ((s1-0 (lookup-level-info arg2)))
(cond
((>= (-> arg1 0) 10)
)
((and (-> s1-0 borrow) (-> s1-0 borrow alias))
(let* ((s0-1 (borrow-city-expansion (the-as pair (-> s1-0 borrow alias))))
(a0-3 (-> s1-0 borrow alias))
(s1-1 ((method-of-type (rtype-of a0-3) length) a0-3))
)
(while (and (> s1-1 0) (car s0-1))
(when (!= (car s0-1) 'dummy)
(let ((t9-3 add-want-level)
(a0-5 arg0)
(a1-3 arg1)
(a2-1 (car s0-1))
(a3-1 (car (cdr s0-1)))
)
(set! a3-1 (cond
((or (not arg3) (= a3-1 'copy))
arg3
)
(else
(empty)
a3-1
)
)
)
(t9-3 a0-5 a1-3 (the-as symbol a2-1) (the-as symbol a3-1) arg4 arg5)
)
)
(set! s0-1 (cdr (cdr s0-1)))
(+! s1-1 -2)
)
)
)
(else
(set! (-> arg0 (-> arg1 0) name) arg2)
(set! (-> arg0 (-> arg1 0) display?) arg3)
(set! (-> arg0 (-> arg1 0) force-vis?) arg4)
(set! (-> arg0 (-> arg1 0) force-inside?) arg5)
(+! (-> arg1 0) 1)
(when (-> s1-0 borrow)
(dotimes (s0-2 5)
(let ((v1-38 (-> s1-0 borrow borrow-info s0-2)))
(when v1-38
(let ((t9-4 add-want-level)
(a0-9 arg0)
(a1-4 arg1)
(a2-2 (car v1-38))
(a3-2 (car (cdr v1-38)))
)
(set! a3-2 (cond
((or (not arg3) (= a3-2 'copy))
arg3
)
(else
(empty)
a3-2
)
)
)
(t9-4 a0-9 a1-4 (the-as symbol a2-2) (the-as symbol a3-2) arg4 arg5)
)
)
)
)
)
)
)
)
)
0
)
(defmethod add-borrow-levels ((this load-state))
(local-vars (sv-16 int))
(dotimes (s5-0 10)
(let ((a0-1 (-> this want s5-0 name)))
(when a0-1
(let ((a0-2 (lookup-level-info a0-1)))
(when (= (-> a0-2 memory-mode) (level-memory-mode borrow))
(set! (-> this want s5-0 name) #f)
(set! (-> this want s5-0 display?) #f)
(set! (-> this want s5-0 force-vis?) #f)
(set! (-> this want s5-0 force-inside?) #f)
)
)
)
)
)
(set! sv-16 0)
(dotimes (s5-1 10)
(if (-> this want s5-1 name)
(add-want-level
(-> this want-exp)
(the-as (pointer int64) (& sv-16))
(-> this want s5-1 name)
(-> this want s5-1 display?)
(-> this want s5-1 force-vis?)
(-> this want s5-1 force-inside?)
)
)
)
(while (< sv-16 10)
(set! (-> this want-exp sv-16 name) #f)
(set! (-> this want-exp sv-16 display?) #f)
(set! (-> this want-exp sv-16 force-vis?) #f)
(set! (-> this want-exp sv-16 force-inside?) #f)
(set! sv-16 (+ sv-16 1))
)
(cond
((-> this update-callback)
((-> this update-callback) this)
)
(else
(dotimes (v1-49 10)
(set! (-> this target v1-49 name) (-> this want-exp v1-49 name))
(set! (-> this target v1-49 display?) (-> this want-exp v1-49 display?))
(set! (-> this target v1-49 force-vis?) (-> this want-exp v1-49 force-vis?))
(set! (-> this target v1-49 force-inside?) (-> this want-exp v1-49 force-inside?))
)
)
)
0
(none)
)
(defmethod want-sound-banks ((this load-state) (arg0 (pointer symbol)))
(dotimes (v1-0 3)
(dotimes (a2-0 3)
(when (= (-> this want-sound v1-0 name) (-> arg0 a2-0))
(set! (-> arg0 a2-0) #f)
(goto cfg-8)
)
)
(set! (-> this want-sound v1-0 name) #f)
(set! (-> this want-sound v1-0 mode) (sound-bank-mode none))
0
(label cfg-8)
)
(dotimes (v1-3 3)
(when (-> arg0 v1-3)
(dotimes (a2-15 3)
(when (not (-> this want-sound a2-15 name))
(set! (-> this want-sound a2-15 name) (-> arg0 v1-3))
(set! (-> this want-sound a2-15 mode) (sound-bank-mode unknown))
(goto cfg-19)
)
)
)
(label cfg-19)
)
0
(none)
)
(defmethod want-display-level ((this load-state) (arg0 symbol) (arg1 symbol))
(dotimes (v1-0 10)
(when (= (-> this want v1-0 name) arg0)
(set! (-> this want v1-0 display?) arg1)
(add-borrow-levels this)
(return 0)
)
)
(if arg1
(format 0 "ERROR: can't display ~A because it isn't loaded~%" arg0)
)
0
)
(defmethod want-vis-level ((this load-state) (arg0 symbol))
(let ((v1-0 (lookup-level-info arg0)))
(if v1-0
(set! arg0 (-> v1-0 name))
)
)
(set! (-> this vis-nick) arg0)
0
(none)
)
(defmethod want-force-vis ((this load-state) (arg0 symbol) (arg1 symbol))
(dotimes (v1-0 10)
(when (= (-> this want v1-0 name) arg0)
(set! (-> this want v1-0 force-vis?) arg1)
(add-borrow-levels this)
(return 0)
)
)
(format 0 "ERROR: can't force vis on ~A because it isn't loaded~%" arg0)
0
)
;; WARN: Function (method 16 load-state) has a return type of none, but the expression builder found a return statement.
(defmethod want-force-inside ((this load-state) (arg0 symbol) (arg1 symbol))
(dotimes (v1-0 10)
(when (= (-> this want v1-0 name) arg0)
(set! (-> this want v1-0 force-inside?) arg1)
(add-borrow-levels this)
(return 0)
)
)
(format 0 "ERROR: can't force inside on ~A because it isn't loaded~%" arg0)
0
(none)
)
(define *display-load-commands* #f)
(defmethod backup-load-state-and-set-cmds ((this load-state) (arg0 pair))
(dotimes (s4-0 256)
(when (-> this object-name s4-0)
(format 0 "WARNING: load state somehow aquired object command ~A~%" (-> this object-name s4-0))
(set! (-> this object-name s4-0) #f)
)
)
(mem-copy! (&-> *backup-load-state* type) (&-> this type) 2664)
(set! (-> *backup-load-state* command-list) '())
(set! (-> this command-list) arg0)
0
)
(defmethod restore-load-state-and-cleanup ((this load-state))
(with-pp
(execute-commands-up-to this 100000.0)
(dotimes (gp-0 256)
(when (-> this object-name gp-0)
(let ((a0-3 (entity-by-name (-> this object-name gp-0))))
(when a0-3
(set! (-> a0-3 extra perm status) (the-as entity-perm-status (-> this object-status gp-0)))
(if (-> a0-3 extra process)
(kill! a0-3)
)
)
)
(set! (-> this object-name gp-0) #f)
)
)
(let ((s5-0 (new 'stack 'load-state))
(gp-1 (-> *load-state* update-callback))
)
(mem-copy! (&-> s5-0 type) (&-> *load-state* type) 2664)
(mem-copy! (&-> this type) (&-> *backup-load-state* type) 2664)
(when (!= (-> pp type) scene-player)
(dotimes (s4-1 10)
(mem-copy! (the-as pointer (-> *load-state* want s4-1)) (the-as pointer (-> s5-0 want s4-1)) 16)
)
(dotimes (v1-34 3)
(set! (-> *load-state* want-sound v1-34 name) (-> s5-0 want-sound v1-34 name))
(set! (-> *load-state* want-sound v1-34 mode) (-> s5-0 want-sound v1-34 mode))
)
)
(dotimes (s4-2 10)
(mem-copy! (the-as pointer (-> *load-state* want-exp s4-2)) (the-as pointer (-> s5-0 want-exp s4-2)) 16)
(mem-copy! (the-as pointer (-> *load-state* target s4-2)) (the-as pointer (-> s5-0 target s4-2)) 16)
)
(dotimes (v1-47 6)
(set! (-> *load-state* want-exp-sound v1-47 name) (-> s5-0 want-exp-sound v1-47 name))
(set! (-> *load-state* want-exp-sound v1-47 mode) (-> s5-0 want-exp-sound v1-47 mode))
(set! (-> *load-state* target-sound v1-47 name) (-> s5-0 target-sound v1-47 name))
(set! (-> *load-state* target-sound v1-47 mode) (-> s5-0 target-sound v1-47 mode))
)
(set! (-> *load-state* update-callback) gp-1)
)
(add-borrow-levels *load-state*)
0
)
)
(defmethod restore-load-state ((this load-state))
(dotimes (v1-0 256)
(if (-> this object-name v1-0)
(set! (-> this object-name v1-0) #f)
)
)
(let ((s5-0 (new 'stack-no-clear 'inline-array 'level-buffer-state 10)))
(dotimes (s4-0 10)
((method-of-type level-buffer-state new) (the-as symbol (-> s5-0 s4-0)) level-buffer-state)
)
(let ((s4-1 (new 'stack-no-clear 'inline-array 'level-buffer-state 10)))
(dotimes (s3-0 10)
((method-of-type level-buffer-state new) (the-as symbol (-> s4-1 s3-0)) level-buffer-state)
)
(let ((s3-1 (-> *load-state* update-callback)))
(dotimes (s2-0 10)
(mem-copy! (the-as pointer (-> s5-0 s2-0)) (the-as pointer (-> *load-state* want-exp s2-0)) 16)
(mem-copy! (the-as pointer (-> s4-1 s2-0)) (the-as pointer (-> *load-state* target s2-0)) 16)
)
(mem-copy! (&-> this type) (&-> *backup-load-state* type) 2664)
(dotimes (gp-1 10)
(mem-copy! (the-as pointer (-> *load-state* want-exp gp-1)) (the-as pointer (-> s5-0 gp-1)) 16)
(mem-copy! (the-as pointer (-> *load-state* target gp-1)) (the-as pointer (-> s4-1 gp-1)) 16)
)
(set! (-> *load-state* update-callback) s3-1)
)
)
)
(add-borrow-levels *load-state*)
0
)
;; WARN: Function (method 17 load-state) has a return type of none, but the expression builder found a return statement.
(defmethod execute-commands-up-to ((this load-state) (arg0 float))
(with-pp
(let ((s4-0 (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f))))
(set! (-> s4-0 load-state) this)
(while (not (null? (-> this command-list)))
(let ((f0-0 (command-get-float (car (car (-> this command-list))) 0.0))
(s3-0 (cdr (car (-> this command-list))))
)
(if (< arg0 f0-0)
(return #f)
)
(if *display-load-commands*
(format 0 "NOTICE: ~D: ~f: execute command ~A~%" (current-time) f0-0 s3-0)
)
(cond
((pair? (car s3-0))
(let ((a1-4 (car s3-0)))
(while (not (null? s3-0))
(eval! s4-0 (the-as pair a1-4))
(set! s3-0 (cdr s3-0))
(set! a1-4 (car s3-0))
)
)
)
(else
(eval! s4-0 s3-0)
)
)
)
(set! (-> this command-list) (cdr (-> this command-list)))
)
)
0
(none)
)
)
(kmemopen global "load-state-struct")
(define *backup-load-state* (new 'global 'load-state))
(define-perm *load-state* load-state (new 'global 'load-state))
(kmemclose)
+28 -14
View File
@@ -60,6 +60,20 @@
(set-stereo-mode)
)
(defenum sound-bank-mode
:type uint32
(none 0)
(unknown 1)
(common 2)
(mode 3)
(full 4)
(half 5)
(halfa 6)
(halfb 7)
(halfc 8)
(virtual 9)
)
;; +++sound-group
(defenum sound-group
:bitfield #t
@@ -193,8 +207,8 @@
)
(deftype sound-name (uint128)
((lo uint64 :offset 0) ;; added to help with cases where they access it by u64.
(hi uint64 :offset 64)
((lo uint64 :offset 0 :size 64)
(hi uint64 :offset 64 :size 64)
)
)
@@ -208,17 +222,17 @@
(deftype sound-play-params (structure)
((mask uint16)
(pitch-mod int16)
(bend int16)
(fo-min int16)
(fo-max int16)
(fo-curve int8)
(priority int8)
(volume int32)
(trans int32 3)
(group uint8)
(reg uint8 3)
((mask uint16)
(pitch-mod int16)
(bend int16)
(fo-min int16)
(fo-max int16)
(fo-curve int8)
(priority int8)
(volume int32)
(trans int32 3)
(group uint8)
(reg uint8 3)
(group-and-reg uint32 :overlay-at group)
)
:pack-me
@@ -452,7 +466,7 @@
(deftype sound-bank-state (structure)
((name symbol)
(mode uint32)
(mode sound-bank-mode)
)
:pack-me
)
+1 -1
View File
@@ -1245,7 +1245,7 @@
(sound-bank-load (string->sound-name (symbol->string s5-0)) 4 10)
(set! (-> *level* sound-bank (* gp-0 2) name) s5-0)
)
(set! (-> *level* sound-bank (* gp-0 2) mode) (the-as uint 4))
(set! (-> *level* sound-bank (* gp-0 2) mode) (sound-bank-mode full))
)
(defun loader-test-command ((cmd sound-command) (param uint))
+1 -1
View File
@@ -244,7 +244,7 @@
(with-pp
(logclear! (-> this flags) (speech-channel-flag disable))
(if (or (not (-> *setting-control* user-current speech-control))
(level-group-method-28 *level*)
(load-in-progress? *level*)
(nonzero? (-> this id))
)
(logior! (-> this flags) (speech-channel-flag disable))
+4 -4
View File
@@ -650,15 +650,15 @@
)
(dotimes (v1-107 3)
(set! (-> *load-state* want-sound v1-107 name) (-> arg0 want-sound v1-107))
(set! (-> *load-state* want-sound v1-107 mode) (the-as uint 1))
(set! (-> *load-state* want-sound v1-107 mode) (sound-bank-mode unknown))
)
(load-state-method-21 *load-state*)
(add-borrow-levels *load-state*)
(when (not (string= (-> arg0 name) "default"))
(while (begin
(dotimes (s5-0 (-> arg0 want-count))
(when (not (or (not (-> arg0 want s5-0 name))
(not (-> arg0 want s5-0 display?))
(= (level-group-method-26 *level* (-> arg0 want s5-0 name) (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* (-> arg0 want s5-0 name) #f) 'active)
)
)
(set! v1-126 #t)
@@ -669,7 +669,7 @@
(dotimes (s4-0 10)
(when (not (or (not (-> s5-1 want s4-0 name))
(not (-> s5-1 want s4-0 display?))
(= (level-group-method-26 *level* (-> s5-1 want s4-0 name) (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* (-> s5-1 want s4-0 name) #f) 'active)
)
)
(set! v1-126 #t)
+2 -2
View File
@@ -2861,7 +2861,7 @@
(cond
((and (or (demo?) (kiosk?))
(or (= (-> arg0 current) 'select-kiosk-start) (= (-> arg0 current) 'select-kiosk-start-special))
(= (level-group-method-26 *level* 'title (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* 'title #f) 'active)
)
(send-event (handle->process (-> *game-info* controller 0)) 'control-spec (get-play-list-idx s5-1))
(set-master-mode 'game)
@@ -4094,7 +4094,7 @@
)
)
(while (or (not (handle-command-list *gui-control* (gui-channel alert) (the-as gui-connection #f)))
(= (level-group-method-26 *level* 'title (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* 'title #f) 'active)
)
(suspend)
)
+2 -2
View File
@@ -891,8 +891,8 @@ void Compiler::fill_static_array_inline(const goos::Object& form,
typecheck(form, TypeSpec("integer"), sr.typespec());
} else {
if (sr.is_symbol() && sr.symbol_name() == "#f") {
// allow #f for any structure, or symbol (no longer a structure in jak 2)
if (content_type.base_type() != "symbol") {
// allow #f for any structure, symbol (no longer a structure in jak 2), or object.
if (content_type.base_type() != "symbol" && content_type.base_type() != "object") {
typecheck(form, TypeSpec("structure"), content_type);
}
} else {
+10 -11
View File
@@ -131,23 +131,23 @@
(command-list pair)
(object-name string 256)
(object-status basic 256)
(update-callback basic)
(update-callback (function load-state object))
)
(:methods
(new (symbol type) _type_)
(load-state-method-9 () none)
(load-state-method-10 () none)
(load-state-method-11 () none)
(reset! (_type_) _type_)
(update! (_type_) int)
(want-levels (_type_ (pointer symbol)) int)
(want-sound-banks (_type_ (pointer symbol)) none)
(load-state-method-13 () none)
(load-state-method-14 () none)
(load-state-method-15 () none)
(load-state-method-16 () none)
(want-display-level (_type_ symbol symbol) int)
(want-vis-level (_type_ symbol) none)
(want-force-vis (_type_ symbol symbol) int)
(want-force-inside (_type_ symbol symbol) none)
(execute-commands-up-to (_type_ float) none)
(backup-load-state-and-set-cmds (_type_ pair) int)
(restore-load-state-and-cleanup (_type_) int)
(restore-load-state (_type_) int)
(load-state-method-21 (_type_) none)
(add-borrow-levels (_type_) none)
)
)
@@ -192,11 +192,10 @@
)
;; definition for method 0 of type load-state
;; WARN: Return type mismatch none vs load-state.
(defmethod new load-state ((allocation symbol) (type-to-make type))
(let ((a0-1 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
(set! (-> a0-1 update-callback) #f)
(the-as load-state ((method-of-object a0-1 load-state-method-9)))
(reset! a0-1)
)
)
+2 -2
View File
@@ -193,7 +193,7 @@
(set! (-> continue-rot 8) (the int (* 32767.0 (-> rot fvec z))))
)
)
(load-state-method-21 arg0)
(add-borrow-levels arg0)
this
)
@@ -385,7 +385,7 @@
(when (or (and (-> subtask manager) (handle->process (-> subtask manager manager)))
(and (-> subtask manager)
(-> subtask manager level)
(= (level-group-method-26 *level* (-> subtask manager level) (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* (-> subtask manager level) #f) 'active)
)
(and (not (-> subtask manager)) (= (-> level info taskname) (-> subtask level)))
)
+2 -2
View File
@@ -1429,7 +1429,7 @@
(set! (-> s5-0 allow-error) (-> s4-0 allow-error))
(set! (-> s5-0 under-water-pitch-mod) (-> s4-0 under-water-pitch-mod))
(set! (-> s5-0 slow-time) (-> s4-0 slow-time))
(if (and (-> s4-0 mirror) (= (level-group-method-26 *level* 'ctywide (the-as int #f)) 'active))
(if (and (-> s4-0 mirror) (= (status-of-level-and-borrows *level* 'ctywide #f) 'active))
(set! (-> s5-0 mirror) #f)
(set! (-> s5-0 mirror) (-> s4-0 mirror))
)
@@ -1655,7 +1655,7 @@
(when (and (!= (-> s4-0 music) (-> s5-0 music))
(and (zero? (rpc-busy? 1))
(or (not (-> s4-0 music))
(and (< 0.0 (-> s5-0 music-volume)) (not (level-group-method-28 *level*)) (not (-> s5-0 movie)))
(and (< 0.0 (-> s5-0 music-volume)) (not (load-in-progress? *level*)) (not (-> s5-0 movie)))
)
(not *master-exit*)
)
+17 -8
View File
@@ -37,33 +37,42 @@ This is used for precomputed visibility, based on the camera position. This is n
"The bsp-header is really an entire level.
This probably started as a very simple structure, but now it is extremely complicated."
((info file-info :overlay-at id)
(all-visible-list (pointer uint8) :offset 32)
(visible-list-length int16 :offset 36)
(all-visible-list (pointer uint8))
(visible-list-length int16)
(extra-vis-list-length int16)
(drawable-trees drawable-tree-array :offset 40)
(pat pointer :offset 44)
(pat-length int32 :offset 48)
(drawable-trees drawable-tree-array)
(pat pointer)
(pat-length int32)
(texture-remap-table (pointer uint64))
(texture-remap-table-len int32)
(texture-ids (pointer texture-id))
(texture-page-count int32)
(unknown-basic basic)
(actors drawable-inline-array-actor :offset 112)
(name symbol)
(nickname symbol)
(vis-info level-vis-info 8)
(actors drawable-inline-array-actor)
(cameras (array entity-camera))
(nodes (inline-array bsp-node) :offset 120)
(nodes (inline-array bsp-node))
(level level)
(current-leaf-idx uint16)
(texture-flags texture-page-flag 10 :offset 130)
(texture-flags texture-page-flag 10)
(cam-outside-bsp uint8 :offset 152)
(cam-using-back uint8)
(cam-box-idx uint16)
(subdivide-close float :offset 160)
(subdivide-far float)
(actor-birth-order (pointer uint32) :offset 172)
(light-hash light-hash)
(nav-meshes (array entity-nav-mesh))
(region-trees (array drawable-tree-region-prim) :offset 188)
(collide-hash collide-hash :offset 196)
(wind-array uint32 :offset 200)
(wind-array-length int32 :offset 204)
(city-level-info city-level-info :offset 208)
(vis-spheres vector-array :offset 216)
(vis-spheres-length uint32 :offset 248)
(region-tree drawable-tree-region-prim :offset 252)
(tfrag-masks texture-masks-array :offset 256)
(tfrag-closest (pointer float))
(tfrag-mask-count uint32 :overlay-at tfrag-closest)
+33 -28
View File
@@ -150,9 +150,9 @@
;; definition of type level-borrow-info
(deftype level-borrow-info (basic)
((alias symbol)
((alias object)
(borrow-size uint16 5)
(borrow-info symbol 5)
(borrow-info object 5)
)
)
@@ -218,8 +218,8 @@
(mood-range mood-range :inline)
)
(:methods
(level-load-info-method-9 (_type_ int) object)
(level-load-info-method-10 (_type_) none)
(get-callback-symbol-value-by-slot! (_type_ int) object)
(get-callback-by-slot! (_type_ int) object)
)
)
@@ -376,6 +376,11 @@
(entity entity-links-array)
(closest-object meters 10)
(tie-min-dist float :offset 352)
(fg-tfrag-min-dist float)
(fg-prim-min-dist float)
(fg-shrub-min-dist float)
(fg-warp-min-dist float :offset 372)
(fg-prim2-min-dist float :offset 380)
(upload-size int32 20 :offset 388)
(inside-boxes? basic)
(display? symbol)
@@ -435,27 +440,27 @@
(unknown-pad uint8 14)
)
(:methods
(level-method-9 () none)
(level-method-10 () none)
(level-method-11 () none)
(deactivate (_type_) _type_)
(unload! (_type_) _type_)
(is-object-visible? (_type_ int) symbol)
(level-method-12 () none)
(level-method-13 () none)
(bsp-name (_type_) symbol)
(compute-memory-usage! (_type_ symbol) memory-usage-block)
(level-method-15 () none)
(inside-bsp? (_type_) symbol)
(update-vis! (_type_ level-vis-info uint (pointer uint8)) symbol)
(level-method-17 () none)
(level-method-18 () none)
(level-method-19 () none)
(level-method-20 () none)
(load-continue (_type_) _type_)
(load-begin (_type_) _type_)
(login-begin (_type_) _type_)
(debug-print-region-splitbox (_type_ vector object) none)
(get-art-group-by-name (_type_ string) art-group)
(level-method-22 () none)
(level-method-23 () none)
(level-method-24 () none)
(level-method-25 () none)
(level-method-26 () none)
(level-method-27 () none)
(level-method-28 () none)
(level-method-29 () none)
(birth (_type_) _type_)
(level-status-update! (_type_ symbol) _type_)
(load-common-package (_type_) none)
(init-vis-from-bsp (_type_) none)
(vis-clear (_type_) none)
)
)
@@ -657,27 +662,27 @@
)
(:methods
(level-get (_type_ symbol) level)
(level-group-method-10 () none)
(level-get-with-status (_type_ symbol) level)
(get-level-by-heap-ptr-and-status (_type_ pointer symbol) level)
(level-group-method-12 () none)
(level-group-method-13 () none)
(level-get-for-use (_type_ symbol symbol) level)
(activate-levels! (_type_) int)
(level-group-method-14 () none)
(level-group-method-15 () none)
(level-group-method-16 () none)
(assign-draw-indices (_type_) none)
(level-group-method-17 () none)
(level-group-method-18 () none)
(level-update (_type_) none)
(level-get-target-inside (_type_) level)
(level-group-method-21 () none)
(init-level-system (_type_ symbol) none)
(art-group-get-by-name (_type_ string (pointer level)) art-group)
(level-group-method-23 () none)
(level-group-method-24 () none)
(level-group-method-25 () none)
(level-group-method-26 (_type_ symbol int) symbol)
(level-group-method-27 () none)
(level-group-method-28 (_type_) symbol)
(level-group-method-29 () none)
(level-group-method-30 () none)
(status-of-level-and-borrows (_type_ symbol symbol) symbol)
(do-nothing (_type_) none)
(load-in-progress? (_type_) symbol)
(is-load-allowed? (_type_ (pointer symbol)) symbol)
(level-get-most-disposable (_type_) level)
)
)
+40 -40
View File
@@ -445,7 +445,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xbb8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -574,7 +574,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x1a4 #x1a4 #x1a4 #x30c #x32a)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -607,7 +607,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -639,7 +639,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -671,7 +671,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -703,7 +703,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -735,7 +735,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -767,7 +767,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -3190,7 +3190,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x71c #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -100)
:fog-height (meters 80)
@@ -3377,7 +3377,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x13a1 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -3523,7 +3523,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xbea #x898 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -4299,7 +4299,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x4ba #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -4422,7 +4422,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x82a #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -4566,7 +4566,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x1b #x2ee #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -15)
:fog-height (meters 80)
@@ -4791,7 +4791,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #xe6 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -5179,7 +5179,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xfa #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -5355,7 +5355,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xfa #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -6221,7 +6221,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xa28 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -10000)
:fog-height (meters 80)
@@ -8202,7 +8202,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x79e #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -8476,7 +8476,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x785 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -8510,7 +8510,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x21c #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -8645,7 +8645,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x195 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -10000)
:fog-height (meters 80)
@@ -8679,7 +8679,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x320 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -8971,7 +8971,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x258 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -9456,7 +9456,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -9895,7 +9895,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x4dd #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -9929,7 +9929,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x8ca #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -10385,7 +10385,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x898 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters 10)
:fog-height (meters 80)
@@ -11893,7 +11893,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x52d #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -13969,7 +13969,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -14411,7 +14411,7 @@
:bigmap-id (bigmap-id no-map)
:continues '()
:callback-list '()
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array symbol 5 #f #f #f #f #f))
:borrow (new 'static 'level-borrow-info :alias #f :borrow-info (new 'static 'array object 5 #f #f #f #f #f))
:bottom-height (meters -20)
:fog-height (meters 80)
:max-rain 1.0
@@ -14843,7 +14843,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x4c9 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -16005,7 +16005,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x3e8 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -16489,7 +16489,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xa #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -17819,7 +17819,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x285 #x8fc #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -18091,7 +18091,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xc4e #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -18464,7 +18464,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xc4e #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -150)
:fog-height (meters 80)
@@ -18549,7 +18549,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #xc4e #x9c4 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters 516)
:fog-height (meters 80)
@@ -18737,7 +18737,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x258 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
@@ -18855,7 +18855,7 @@
:borrow (new 'static 'level-borrow-info
:alias #f
:borrow-size (new 'static 'array uint16 5 #x384 #x0 #x0 #x0 #x0)
:borrow-info (new 'static 'array symbol 5 #f #f #f #f #f)
:borrow-info (new 'static 'array object 5 #f #f #f #f #f)
)
:bottom-height (meters -20)
:fog-height (meters 80)
File diff suppressed because it is too large Load Diff
+657
View File
@@ -0,0 +1,657 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for method 2 of type level-buffer-state
(defmethod print ((this level-buffer-state))
(format
#t
"#<level-buffer-state ~A ~A ~A ~A @ #x~X>"
(-> this name)
(-> this display?)
(-> this force-vis?)
(-> this force-inside?)
this
)
this
)
;; definition for method 2 of type level-buffer-state-small
(defmethod print ((this level-buffer-state-small))
(format #t "#<level-buffer-state ~A ~A @ #x~X>" (-> this name) (-> this display?) this)
this
)
;; definition for method 2 of type sound-bank-state
(defmethod print ((this sound-bank-state))
(let ((t9-0 format)
(a0-1 #t)
(a1-0 "#<sound-bank-state ~A ~S @ #x~X>")
(a2-0 (-> this name))
(v1-0 (-> this mode))
)
(t9-0
a0-1
a1-0
a2-0
(cond
((= v1-0 (sound-bank-mode halfa))
"halfa"
)
((= v1-0 (sound-bank-mode halfc))
"halfc"
)
((= v1-0 (sound-bank-mode half))
"half"
)
((= v1-0 (sound-bank-mode full))
"full"
)
((= v1-0 (sound-bank-mode mode))
"mode"
)
((= v1-0 (sound-bank-mode unknown))
"unknown"
)
((= v1-0 (sound-bank-mode common))
"common"
)
((= v1-0 (sound-bank-mode halfb))
"halfb"
)
((= v1-0 (sound-bank-mode none))
"none"
)
((= v1-0 (sound-bank-mode virtual))
"virtual"
)
(else
"*unknown*"
)
)
this
)
)
this
)
;; definition for method 9 of type load-state
(defmethod reset! ((this load-state))
(dotimes (v1-0 10)
(set! (-> this want v1-0 name) #f)
(set! (-> this want v1-0 display?) #f)
(set! (-> this want v1-0 force-vis?) #f)
(set! (-> this want v1-0 force-inside?) #f)
)
(dotimes (v1-3 3)
(set! (-> this want-sound v1-3 name) #f)
(set! (-> this want-sound v1-3 mode) (sound-bank-mode none))
)
(set! (-> this command-list) '())
(dotimes (v1-7 256)
(set! (-> this object-name v1-7) #f)
(set! (-> this object-status v1-7) (the-as basic 0))
)
this
)
;; definition for function level-base-level-name
(defun level-base-level-name ((arg0 symbol))
(when arg0
(let ((v1-0 (lookup-level-info arg0)))
(if (and v1-0 (-> v1-0 borrow) (-> v1-0 borrow alias))
(car (-> v1-0 borrow alias))
)
)
)
)
;; definition for method 11 of type load-state
(defmethod want-levels ((this load-state) (arg0 (pointer symbol)))
(dotimes (v1-0 10)
(dotimes (a0-1 10)
(when (= (-> this want v1-0 name) (-> arg0 a0-1))
(set! (-> arg0 a0-1) #f)
(goto cfg-8)
)
)
(set! (-> this want v1-0 name) #f)
(label cfg-8)
)
(dotimes (s4-0 10)
(when (-> arg0 s4-0)
(dotimes (s3-0 10)
(when (not (-> this want s3-0 name))
(set! (-> this want s3-0 name) (-> arg0 s4-0))
(set! (-> this want s3-0 display?) #f)
(set! (-> this want s3-0 force-vis?) #f)
(set! (-> this want s3-0 force-inside?) #f)
(let ((a0-13 (level-base-level-name (-> this want s3-0 name))))
(dotimes (v1-22 10)
(when (= (-> this want-exp v1-22 name) a0-13)
(set! (-> this want s3-0 display?) (-> this want-exp v1-22 display?))
(set! (-> this want s3-0 force-vis?) (-> this want-exp v1-22 force-vis?))
(set! (-> this want s3-0 force-inside?) (-> this want-exp v1-22 force-inside?))
(goto cfg-21)
)
)
)
(label cfg-21)
(goto cfg-26)
)
)
)
(label cfg-26)
)
(dotimes (v1-35 10)
(when (not (-> this want v1-35 name))
(set! (-> this want v1-35 display?) #f)
(set! (-> this want v1-35 force-vis?) #f)
(set! (-> this want v1-35 force-inside?) #f)
)
)
(add-borrow-levels this)
0
)
;; definition for symbol *borrow-city-expansion-list*, type pair
(define *borrow-city-expansion-list* '(#f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f))
;; definition for symbol *borrow-city-status-list*, type pair
(define *borrow-city-status-list* '(#f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f))
;; definition for function borrow-city-expansion
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Stack slot offset 24 signed mismatch
;; WARN: Return type mismatch pair vs object.
(defun borrow-city-expansion ((arg0 pair))
(local-vars (v1-12 type) (s2-2 int) (sv-16 pair) (sv-20 symbol) (sv-24 object))
(let ((gp-0 *borrow-city-expansion-list*))
0
(let ((s4-0 0))
(b! #t cfg-2 :delay (nop!))
(label cfg-1)
(set! (car (ref& gp-0 s4-0)) #f)
(set! (car (ref& *borrow-city-status-list* s4-0)) #f)
(+! s4-0 1)
(label cfg-2)
(let ((a0-3 (the-as object gp-0)))
(b! (< s4-0 ((method-of-type (rtype-of (the-as pair a0-3)) length) (the-as pair a0-3))) cfg-1)
)
)
(let* ((v1-7 gp-0)
(a0-4 arg0)
(a1-4 (car a0-4))
)
(while (not (null? a0-4))
(set! (car v1-7) a1-4)
(set! v1-7 (cdr v1-7))
(set! a0-4 (cdr a0-4))
(set! a1-4 (car a0-4))
)
)
(let ((v1-11 (shr (shl (the-as int arg0) 61) 61)))
(b! (zero? v1-11) cfg-20 :likely-delay (set! v1-12 binteger))
(b! (= v1-11 4) cfg-20 :likely-delay (set! v1-12 (-> (the-as basic arg0) type)))
(b! (= v1-11 2) cfg-20 :likely-delay (set! v1-12 pair))
)
(set! v1-12 symbol)
(label cfg-20)
(let ((s5-1 ((method-of-type v1-12 length) arg0)))
(if (and (nonzero? *city-borrow-manager*) *city-borrow-manager*)
(mark-permanent-holds gp-0)
)
(dotimes (s4-1 (the-as int (-> *setting-control* user-current borrow-city-count)))
(set! sv-16 (-> *setting-control* user-current borrow-city s4-1))
(let* ((s3-0 sv-16)
(v1-20 (car s3-0))
)
(while (not (null? s3-0))
(set! sv-20 (the-as symbol #f))
(set! sv-24 v1-20)
(when sv-24
(dotimes (s2-0 (/ s5-1 2))
(when (= sv-24 (ref gp-0 (* s2-0 2)))
(set! sv-20 #t)
(if (= (ref gp-0 (+ (* s2-0 2) 1)) 'auto)
(set! (car (ref& gp-0 (+ (* s2-0 2) 1))) 'faction)
)
0
(goto cfg-37)
)
)
(label cfg-37)
(when (not sv-20)
(dotimes (s2-1 (/ s5-1 2))
(when (= (ref gp-0 (+ (* s2-1 2) 1)) 'auto)
(set! s2-2 s2-1)
(goto cfg-45)
)
)
(set! s2-2 -1)
(label cfg-45)
(when (> s2-2 0)
(set! (car (ref& gp-0 (* s2-2 2))) sv-24)
(set! (car (ref& gp-0 (+ (* s2-2 2) 1))) 'faction)
)
)
)
(set! s3-0 (cdr s3-0))
(set! v1-20 (car s3-0))
)
)
)
(let ((s4-2 0))
(dotimes (s3-1 (/ s5-1 2))
(let ((v1-48 (ref gp-0 (+ (* s3-1 2) 1))))
(when (not (or (= v1-48 'auto) (= v1-48 'faction)))
(set! (car (ref& *borrow-city-status-list* (* s4-2 2))) (ref gp-0 (* s3-1 2)))
(set! (car (ref& *borrow-city-status-list* (+ (* s4-2 2) 1))) (ref gp-0 (+ (* s3-1 2) 1)))
(+! s4-2 1)
)
)
)
)
(dotimes (s4-3 (/ s5-1 2))
(case (ref gp-0 (+ (* s4-3 2) 1))
(('auto 'faction)
(set! (car (ref& gp-0 (+ (* s4-3 2) 1))) 'special)
)
)
)
)
gp-0
)
)
;; definition for function add-want-level
;; WARN: Return type mismatch int vs object.
(defun add-want-level ((arg0 (inline-array level-buffer-state))
(arg1 (pointer int64))
(arg2 symbol)
(arg3 symbol)
(arg4 symbol)
(arg5 symbol)
)
(when arg2
(let ((s1-0 (lookup-level-info arg2)))
(cond
((>= (-> arg1 0) 10)
)
((and (-> s1-0 borrow) (-> s1-0 borrow alias))
(let* ((s0-1 (borrow-city-expansion (the-as pair (-> s1-0 borrow alias))))
(a0-3 (-> s1-0 borrow alias))
(s1-1 ((method-of-type (rtype-of a0-3) length) a0-3))
)
(while (and (> s1-1 0) (car s0-1))
(when (!= (car s0-1) 'dummy)
(let ((t9-3 add-want-level)
(a0-5 arg0)
(a1-3 arg1)
(a2-1 (car s0-1))
(a3-1 (car (cdr s0-1)))
)
(set! a3-1 (cond
((or (not arg3) (= a3-1 'copy))
arg3
)
(else
(empty)
a3-1
)
)
)
(t9-3 a0-5 a1-3 (the-as symbol a2-1) (the-as symbol a3-1) arg4 arg5)
)
)
(set! s0-1 (cdr (cdr s0-1)))
(+! s1-1 -2)
)
)
)
(else
(set! (-> arg0 (-> arg1 0) name) arg2)
(set! (-> arg0 (-> arg1 0) display?) arg3)
(set! (-> arg0 (-> arg1 0) force-vis?) arg4)
(set! (-> arg0 (-> arg1 0) force-inside?) arg5)
(+! (-> arg1 0) 1)
(when (-> s1-0 borrow)
(dotimes (s0-2 5)
(let ((v1-38 (-> s1-0 borrow borrow-info s0-2)))
(when v1-38
(let ((t9-4 add-want-level)
(a0-9 arg0)
(a1-4 arg1)
(a2-2 (car v1-38))
(a3-2 (car (cdr v1-38)))
)
(set! a3-2 (cond
((or (not arg3) (= a3-2 'copy))
arg3
)
(else
(empty)
a3-2
)
)
)
(t9-4 a0-9 a1-4 (the-as symbol a2-2) (the-as symbol a3-2) arg4 arg5)
)
)
)
)
)
)
)
)
)
0
)
;; definition for method 21 of type load-state
;; WARN: Return type mismatch int vs none.
(defmethod add-borrow-levels ((this load-state))
(local-vars (sv-16 int))
(dotimes (s5-0 10)
(let ((a0-1 (-> this want s5-0 name)))
(when a0-1
(let ((a0-2 (lookup-level-info a0-1)))
(when (= (-> a0-2 memory-mode) (level-memory-mode borrow))
(set! (-> this want s5-0 name) #f)
(set! (-> this want s5-0 display?) #f)
(set! (-> this want s5-0 force-vis?) #f)
(set! (-> this want s5-0 force-inside?) #f)
)
)
)
)
)
(set! sv-16 0)
(dotimes (s5-1 10)
(if (-> this want s5-1 name)
(add-want-level
(-> this want-exp)
(the-as (pointer int64) (& sv-16))
(-> this want s5-1 name)
(-> this want s5-1 display?)
(-> this want s5-1 force-vis?)
(-> this want s5-1 force-inside?)
)
)
)
(while (< sv-16 10)
(set! (-> this want-exp sv-16 name) #f)
(set! (-> this want-exp sv-16 display?) #f)
(set! (-> this want-exp sv-16 force-vis?) #f)
(set! (-> this want-exp sv-16 force-inside?) #f)
(set! sv-16 (+ sv-16 1))
)
(cond
((-> this update-callback)
((-> this update-callback) this)
)
(else
(dotimes (v1-49 10)
(set! (-> this target v1-49 name) (-> this want-exp v1-49 name))
(set! (-> this target v1-49 display?) (-> this want-exp v1-49 display?))
(set! (-> this target v1-49 force-vis?) (-> this want-exp v1-49 force-vis?))
(set! (-> this target v1-49 force-inside?) (-> this want-exp v1-49 force-inside?))
)
)
)
0
(none)
)
;; definition for method 12 of type load-state
;; WARN: Return type mismatch int vs none.
(defmethod want-sound-banks ((this load-state) (arg0 (pointer symbol)))
(dotimes (v1-0 3)
(dotimes (a2-0 3)
(when (= (-> this want-sound v1-0 name) (-> arg0 a2-0))
(set! (-> arg0 a2-0) #f)
(goto cfg-8)
)
)
(set! (-> this want-sound v1-0 name) #f)
(set! (-> this want-sound v1-0 mode) (sound-bank-mode none))
0
(label cfg-8)
)
(dotimes (v1-3 3)
(when (-> arg0 v1-3)
(dotimes (a2-15 3)
(when (not (-> this want-sound a2-15 name))
(set! (-> this want-sound a2-15 name) (-> arg0 v1-3))
(set! (-> this want-sound a2-15 mode) (sound-bank-mode unknown))
(goto cfg-19)
)
)
)
(label cfg-19)
)
0
(none)
)
;; definition for method 13 of type load-state
(defmethod want-display-level ((this load-state) (arg0 symbol) (arg1 symbol))
(dotimes (v1-0 10)
(when (= (-> this want v1-0 name) arg0)
(set! (-> this want v1-0 display?) arg1)
(add-borrow-levels this)
(return 0)
)
)
(if arg1
(format 0 "ERROR: can't display ~A because it isn't loaded~%" arg0)
)
0
)
;; definition for method 14 of type load-state
;; WARN: Return type mismatch int vs none.
(defmethod want-vis-level ((this load-state) (arg0 symbol))
(let ((v1-0 (lookup-level-info arg0)))
(if v1-0
(set! arg0 (-> v1-0 name))
)
)
(set! (-> this vis-nick) arg0)
0
(none)
)
;; definition for method 15 of type load-state
(defmethod want-force-vis ((this load-state) (arg0 symbol) (arg1 symbol))
(dotimes (v1-0 10)
(when (= (-> this want v1-0 name) arg0)
(set! (-> this want v1-0 force-vis?) arg1)
(add-borrow-levels this)
(return 0)
)
)
(format 0 "ERROR: can't force vis on ~A because it isn't loaded~%" arg0)
0
)
;; definition for method 16 of type load-state
;; WARN: Return type mismatch int vs none.
;; WARN: Function (method 16 load-state) has a return type of none, but the expression builder found a return statement.
(defmethod want-force-inside ((this load-state) (arg0 symbol) (arg1 symbol))
(dotimes (v1-0 10)
(when (= (-> this want v1-0 name) arg0)
(set! (-> this want v1-0 force-inside?) arg1)
(add-borrow-levels this)
(return 0)
)
)
(format 0 "ERROR: can't force inside on ~A because it isn't loaded~%" arg0)
0
(none)
)
;; definition for symbol *display-load-commands*, type symbol
(define *display-load-commands* #f)
;; definition for method 18 of type load-state
(defmethod backup-load-state-and-set-cmds ((this load-state) (arg0 pair))
(dotimes (s4-0 256)
(when (-> this object-name s4-0)
(format 0 "WARNING: load state somehow aquired object command ~A~%" (-> this object-name s4-0))
(set! (-> this object-name s4-0) #f)
)
)
(mem-copy! (&-> *backup-load-state* type) (&-> this type) 2664)
(set! (-> *backup-load-state* command-list) '())
(set! (-> this command-list) arg0)
0
)
;; definition for method 19 of type load-state
(defmethod restore-load-state-and-cleanup ((this load-state))
(with-pp
(execute-commands-up-to this 100000.0)
(dotimes (gp-0 256)
(when (-> this object-name gp-0)
(let ((a0-3 (entity-by-name (-> this object-name gp-0))))
(when a0-3
(set! (-> a0-3 extra perm status) (the-as entity-perm-status (-> this object-status gp-0)))
(if (-> a0-3 extra process)
(kill! a0-3)
)
)
)
(set! (-> this object-name gp-0) #f)
)
)
(let ((s5-0 (new 'stack 'load-state))
(gp-1 (-> *load-state* update-callback))
)
(mem-copy! (&-> s5-0 type) (&-> *load-state* type) 2664)
(mem-copy! (&-> this type) (&-> *backup-load-state* type) 2664)
(when (!= (-> pp type) scene-player)
(dotimes (s4-1 10)
(mem-copy! (the-as pointer (-> *load-state* want s4-1)) (the-as pointer (-> s5-0 want s4-1)) 16)
)
(dotimes (v1-34 3)
(set! (-> *load-state* want-sound v1-34 name) (-> s5-0 want-sound v1-34 name))
(set! (-> *load-state* want-sound v1-34 mode) (-> s5-0 want-sound v1-34 mode))
)
)
(dotimes (s4-2 10)
(mem-copy! (the-as pointer (-> *load-state* want-exp s4-2)) (the-as pointer (-> s5-0 want-exp s4-2)) 16)
(mem-copy! (the-as pointer (-> *load-state* target s4-2)) (the-as pointer (-> s5-0 target s4-2)) 16)
)
(dotimes (v1-47 6)
(set! (-> *load-state* want-exp-sound v1-47 name) (-> s5-0 want-exp-sound v1-47 name))
(set! (-> *load-state* want-exp-sound v1-47 mode) (-> s5-0 want-exp-sound v1-47 mode))
(set! (-> *load-state* target-sound v1-47 name) (-> s5-0 target-sound v1-47 name))
(set! (-> *load-state* target-sound v1-47 mode) (-> s5-0 target-sound v1-47 mode))
)
(set! (-> *load-state* update-callback) gp-1)
)
(add-borrow-levels *load-state*)
0
)
)
;; definition for method 20 of type load-state
(defmethod restore-load-state ((this load-state))
(dotimes (v1-0 256)
(if (-> this object-name v1-0)
(set! (-> this object-name v1-0) #f)
)
)
(let ((s5-0 (new 'stack-no-clear 'inline-array 'level-buffer-state 10)))
(dotimes (s4-0 10)
((method-of-type level-buffer-state new) (the-as symbol (-> s5-0 s4-0)) level-buffer-state)
)
(let ((s4-1 (new 'stack-no-clear 'inline-array 'level-buffer-state 10)))
(dotimes (s3-0 10)
((method-of-type level-buffer-state new) (the-as symbol (-> s4-1 s3-0)) level-buffer-state)
)
(let ((s3-1 (-> *load-state* update-callback)))
(dotimes (s2-0 10)
(mem-copy! (the-as pointer (-> s5-0 s2-0)) (the-as pointer (-> *load-state* want-exp s2-0)) 16)
(mem-copy! (the-as pointer (-> s4-1 s2-0)) (the-as pointer (-> *load-state* target s2-0)) 16)
)
(mem-copy! (&-> this type) (&-> *backup-load-state* type) 2664)
(dotimes (gp-1 10)
(mem-copy! (the-as pointer (-> *load-state* want-exp gp-1)) (the-as pointer (-> s5-0 gp-1)) 16)
(mem-copy! (the-as pointer (-> *load-state* target gp-1)) (the-as pointer (-> s4-1 gp-1)) 16)
)
(set! (-> *load-state* update-callback) s3-1)
)
)
)
(add-borrow-levels *load-state*)
0
)
;; definition for method 17 of type load-state
;; WARN: Return type mismatch int vs none.
;; WARN: Function (method 17 load-state) has a return type of none, but the expression builder found a return statement.
(defmethod execute-commands-up-to ((this load-state) (arg0 float))
(with-pp
(let ((s4-0 (new 'stack 'script-context (process->ppointer pp) pp (the-as vector #f))))
(set! (-> s4-0 load-state) this)
(while (not (null? (-> this command-list)))
(let ((f0-0 (command-get-float (car (car (-> this command-list))) 0.0))
(s3-0 (cdr (car (-> this command-list))))
)
(if (< arg0 f0-0)
(return #f)
)
(if *display-load-commands*
(format 0 "NOTICE: ~D: ~f: execute command ~A~%" (current-time) f0-0 s3-0)
)
(cond
((pair? (car s3-0))
(let ((a1-4 (car s3-0)))
(while (not (null? s3-0))
(eval! s4-0 (the-as pair a1-4))
(set! s3-0 (cdr s3-0))
(set! a1-4 (car s3-0))
)
)
)
(else
(eval! s4-0 s3-0)
)
)
)
(set! (-> this command-list) (cdr (-> this command-list)))
)
)
0
(none)
)
)
;; failed to figure out what this is:
(kmemopen global "load-state-struct")
;; definition for symbol *backup-load-state*, type load-state
(define *backup-load-state* (new 'global 'load-state))
;; definition (perm) for symbol *load-state*, type load-state
(define-perm *load-state* load-state (new 'global 'load-state))
;; failed to figure out what this is:
(kmemclose)
+1 -1
View File
@@ -807,7 +807,7 @@
;; definition of type sound-bank-state
(deftype sound-bank-state (structure)
((name symbol)
(mode uint32)
(mode sound-bank-mode)
)
:pack-me
)
+1 -1
View File
@@ -1409,7 +1409,7 @@
(sound-bank-load (string->sound-name (symbol->string s5-0)) 4 10)
(set! (-> *level* sound-bank (* gp-0 2) name) s5-0)
)
(set! (-> *level* sound-bank (* gp-0 2) mode) (the-as uint 4))
(set! (-> *level* sound-bank (* gp-0 2) mode) (sound-bank-mode full))
)
;; definition for function loader-test-command
+1 -5
View File
@@ -247,7 +247,7 @@
(with-pp
(logclear! (-> this flags) (speech-channel-flag disable))
(if (or (not (-> *setting-control* user-current speech-control))
(level-group-method-28 *level*)
(load-in-progress? *level*)
(nonzero? (-> this id))
)
(logior! (-> this flags) (speech-channel-flag disable))
@@ -626,7 +626,3 @@
0
(none)
)
+4 -4
View File
@@ -654,15 +654,15 @@
)
(dotimes (v1-107 3)
(set! (-> *load-state* want-sound v1-107 name) (-> arg0 want-sound v1-107))
(set! (-> *load-state* want-sound v1-107 mode) (the-as uint 1))
(set! (-> *load-state* want-sound v1-107 mode) (sound-bank-mode unknown))
)
(load-state-method-21 *load-state*)
(add-borrow-levels *load-state*)
(when (not (string= (-> arg0 name) "default"))
(while (begin
(dotimes (s5-0 (-> arg0 want-count))
(when (not (or (not (-> arg0 want s5-0 name))
(not (-> arg0 want s5-0 display?))
(= (level-group-method-26 *level* (-> arg0 want s5-0 name) (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* (-> arg0 want s5-0 name) #f) 'active)
)
)
(set! v1-126 #t)
@@ -673,7 +673,7 @@
(dotimes (s4-0 10)
(when (not (or (not (-> s5-1 want s4-0 name))
(not (-> s5-1 want s4-0 display?))
(= (level-group-method-26 *level* (-> s5-1 want s4-0 name) (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* (-> s5-1 want s4-0 name) #f) 'active)
)
)
(set! v1-126 #t)
+2 -2
View File
@@ -2950,7 +2950,7 @@
(cond
((and (or (demo?) (kiosk?))
(or (= (-> arg0 current) 'select-kiosk-start) (= (-> arg0 current) 'select-kiosk-start-special))
(= (level-group-method-26 *level* 'title (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* 'title #f) 'active)
)
(send-event (handle->process (-> *game-info* controller 0)) 'control-spec (get-play-list-idx s5-1))
(set-master-mode 'game)
@@ -4204,7 +4204,7 @@
)
)
(while (or (not (handle-command-list *gui-control* (gui-channel alert) (the-as gui-connection #f)))
(= (level-group-method-26 *level* 'title (the-as int #f)) 'active)
(= (status-of-level-and-borrows *level* 'title #f) 'active)
)
(suspend)
)
+6 -1
View File
@@ -117,7 +117,12 @@
"tfrag-scissor-vu1-init-buf",
"(method 9 drawable-tree-instance-tie)",
// hud
"(method 10 hud-sprite)"
"(method 10 hud-sprite)",
// level
"(method 29 level)",
"level-update-after-load",
"(method 9 level)",
"(method 11 level)"
],
"skip_compile_states": {}