mirror of
https://github.com/open-goal/jak-project
synced 2026-09-01 01:52:03 -04:00
decomp drawable, main (#3434)
This commit is contained in:
@@ -974,18 +974,29 @@ Form* cast_to_bitfield_enum(const EnumType* type_info,
|
||||
if (in == -1) {
|
||||
return nullptr;
|
||||
}
|
||||
auto elts = decompile_bitfield_enum_from_int(TypeSpec(type_info->get_name()), env.dts->ts, in);
|
||||
TypeSpec ts(type_info->get_name());
|
||||
auto elts = try_decompile_bitfield_enum_from_int(ts, env.dts->ts, in, no_head);
|
||||
if (no_head) {
|
||||
ASSERT(elts.size() >= 1);
|
||||
ASSERT(elts->size() >= 1);
|
||||
}
|
||||
|
||||
if (!elts) {
|
||||
if (in == 0xffff'ffff || in == INT64_MIN) {
|
||||
return pool.form<CastElement>(
|
||||
ts, pool.form<SimpleAtomElement>(SimpleAtom::make_int_constant(in)));
|
||||
}
|
||||
// backup failed, run again to get the nice error print.
|
||||
try_decompile_bitfield_enum_from_int(ts, env.dts->ts, in, true);
|
||||
}
|
||||
|
||||
auto oper = GenericOperator::make_function(
|
||||
pool.form<ConstantTokenElement>(no_head ? elts.at(0) : type_info->get_name()));
|
||||
pool.form<ConstantTokenElement>(no_head ? elts->at(0) : type_info->get_name()));
|
||||
if (no_head) {
|
||||
elts.erase(elts.begin());
|
||||
elts->erase(elts->begin());
|
||||
}
|
||||
|
||||
std::vector<Form*> form_elts;
|
||||
for (auto& x : elts) {
|
||||
for (auto& x : *elts) {
|
||||
form_elts.push_back(pool.form<ConstantTokenElement>(x));
|
||||
}
|
||||
return pool.form<GenericElement>(oper, form_elts);
|
||||
|
||||
+138
-122
@@ -100,7 +100,7 @@
|
||||
(define-extern file-stream-write (function file-stream pointer uint uint))
|
||||
(define-extern file-stream-close (function file-stream file-stream))
|
||||
(define-extern new-dynamic-structure (function symbol type int structure))
|
||||
(define-extern kernel-shutdown (function none))
|
||||
(define-extern kernel-shutdown (function int none))
|
||||
(define-extern scf-get-timeout (function int))
|
||||
(define-extern scf-get-inactive-timeout (function int))
|
||||
(define-extern syncv (function int int))
|
||||
@@ -4258,7 +4258,7 @@
|
||||
(tie-water)
|
||||
(etie-water)
|
||||
(etie-scissor-water)
|
||||
(rn31)
|
||||
(sprite)
|
||||
(rn32)
|
||||
(rn33)
|
||||
(rn34)
|
||||
@@ -5642,8 +5642,8 @@
|
||||
((on-screen int32 :offset-assert 4)
|
||||
(last-screen int32 :offset-assert 8)
|
||||
(frames display-frame 2 :offset-assert 12) ;; guessed by decompiler
|
||||
(bgcolor uint64 :offset-assert 24) ;; gs-bgcolor
|
||||
(pmode uint64 :offset-assert 32) ;; gs-pmode
|
||||
(bgcolor gs-bgcolor :offset-assert 24)
|
||||
(pmode gs-pmode :offset-assert 32)
|
||||
(clock clock 22 :offset-assert 40) ;; guessed by decompiler
|
||||
(session-clock clock :offset 40) ;; guessed by decompiler
|
||||
(game-clock clock :offset 44) ;; guessed by decompiler
|
||||
@@ -6937,7 +6937,7 @@
|
||||
(bytes uint8 4 :offset 60) ;; guessed by decompiler
|
||||
(mask uint16 :offset 60)
|
||||
(palette-index int8 :offset 63)
|
||||
(shadow uint32 :offset 32)
|
||||
(shadow uint32 :offset 32 :score 1)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x40
|
||||
@@ -6948,6 +6948,7 @@
|
||||
((index uint16 :offset-assert 0)
|
||||
(count uint16 :offset-assert 2)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
:size-assert #x4
|
||||
:flag-assert #x900000004
|
||||
@@ -7813,10 +7814,10 @@
|
||||
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)
|
||||
(debug-draw-actors (_type_ symbol) none) ;; 15
|
||||
(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)
|
||||
(actors-update (_type_) none) ;; 17
|
||||
(update-nav-meshes-method (_type_) none) ;; 18
|
||||
(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
|
||||
@@ -9788,9 +9789,9 @@
|
||||
(trail-graph-method-9 () none) ;; 9 ;; (trail-graph-method-9 (_type_ int) none)
|
||||
(trail-graph-method-10 () none) ;; 10 ;; (trail-graph-method-10 (_type_ int) none)
|
||||
(trail-graph-method-11 () none) ;; 11 ;; (trail-graph-method-11 (_type_ int int) trail-node)
|
||||
(trail-graph-method-12 () none) ;; 12 ;; (debug-draw (_type_) none)
|
||||
(trail-graph-method-12 () none) ;; 12
|
||||
(trail-graph-method-13 () none) ;; 13 ;; (debug-draw-cell (_type_ int) none)
|
||||
(trail-graph-method-14 () none) ;; 14 ;; (debug-draw-path (_type_ int (pointer uint16) vector vector rgba float) symbol)
|
||||
(debug-draw (_type_) none) ;; 14 ;; (debug-draw-path (_type_ int (pointer uint16) vector vector rgba float) symbol)
|
||||
(trail-graph-method-15 () none) ;; 15 ;; (do-path (_type_ vector vector) int)
|
||||
(trail-graph-method-16 () none) ;; 16 ;; (trail-graph-method-16 () none)
|
||||
(trail-graph-method-17 () none) ;; 17 ;; (get-node-location-by-id (_type_ uint vector) vector)
|
||||
@@ -10247,7 +10248,7 @@
|
||||
(:methods
|
||||
(new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_)
|
||||
(bigmap-method-9 () none) ;; 9 ;; (initialize (_type_) none)
|
||||
(bigmap-method-10 () none) ;; 10 ;; (update (_type_) none)
|
||||
(update (_type_) none) ;; 10
|
||||
(draw (_type_ int int int int) int) ;; 11
|
||||
(bigmap-method-12 () none) ;; 12 ;; (handle-cpad-inputs (_type_) int)
|
||||
(bigmap-method-13 () none) ;; 13 ;; (compress-all (_type_) int)
|
||||
@@ -10846,7 +10847,7 @@
|
||||
(tie-draw-points 13)
|
||||
(tie-debug 14)
|
||||
(tie-scissor 15)
|
||||
|
||||
(tie-pal 16)
|
||||
(tie-generic 17)
|
||||
(instance-tie 18)
|
||||
(instance-tie-colors0 19) ;; somehow used by tfrag too..
|
||||
@@ -10854,6 +10855,7 @@
|
||||
(instance-tie-colors2 21)
|
||||
(instance-tie-colors3 22)
|
||||
(instance-tie-colors* 23)
|
||||
(prototype-bucket-shrub 24)
|
||||
|
||||
|
||||
(shrubbery 27)
|
||||
@@ -10891,9 +10893,11 @@
|
||||
(art-joint-anim 78)
|
||||
|
||||
(texture 83)
|
||||
|
||||
(string 84)
|
||||
(array 85)
|
||||
|
||||
(debug 88)
|
||||
|
||||
(eye-anim 112)
|
||||
)
|
||||
|
||||
@@ -10975,7 +10979,7 @@
|
||||
(blit-displays-work-method-16 () none) ;; 16
|
||||
(blit-displays-work-method-17 (_type_ vector int float symbol) none) ;; 17
|
||||
(blit-displays-work-method-18 () none) ;; 18
|
||||
(blit-displays-work-method-19 () none) ;; 19
|
||||
(blit-displays-work-method-19 (_type_) none) ;; 19 (called from main.gc)
|
||||
(blit-displays-work-method-20 () none) ;; 20
|
||||
(get-menu-mode (_type_) symbol) ;; 21
|
||||
(get-screen-copied (_type_) symbol) ;; 22
|
||||
@@ -11208,8 +11212,8 @@
|
||||
(sky-work-method-10 () none) ;; 10 ;; (init-orbit-settings! (_type_ int float float float float float float) none)
|
||||
(sky-work-method-11 () none) ;; 11 ;; (update-colors-for-time (_type_ float) none)
|
||||
(sky-work-method-12 () none) ;; 12 ;; (update-time-and-speed (_type_ float float) none)
|
||||
(sky-work-method-13 () none) ;; 13 ;; (draw (_type_) none)
|
||||
(sky-work-method-14 () none) ;; 14 ;; (update-matrix (_type_ matrix) none)
|
||||
(sky-work-method-13 () none) ;; 13
|
||||
(draw (_type_) none) ;; 14 ;; (update-matrix (_type_ matrix) none)
|
||||
(sky-work-method-15 () none) ;; 15 ;; (update-template-colors (_type_) none)
|
||||
(sky-work-method-16 () none) ;; 16 ;; (init-regs-for-large-polygon-draw (_type_) none)
|
||||
(sky-work-method-17 () none) ;; 17 ;; (init-regs-for-sky-asm (_type_) none)
|
||||
@@ -11714,8 +11718,8 @@
|
||||
:flag-assert #x5c0000206c
|
||||
(:methods
|
||||
(get-height (_type_ vector symbol) float) ;; 11
|
||||
(ocean-method-12 () none) ;; 12 ;; (draw! (_type_) none)
|
||||
(ocean-method-13 () none) ;; 13 ;; (update-map (_type_) none)
|
||||
(draw! (_type_) none) ;; 12
|
||||
(update-map (_type_) none) ;; 13
|
||||
(ocean-method-14 () none) ;; 14 ;; (interp-wave (_type_ ocean-wave-info uint float) none)
|
||||
(ocean-method-15 () none) ;; 15 ;; (ocean-method-15 (_type_ matrix matrix) none)
|
||||
(ocean-method-16 () none) ;; 16 ;; (generate-verts (_type_ ocean-vert-array ocean-height-array) none)
|
||||
@@ -12099,7 +12103,7 @@
|
||||
|
||||
(deftype screen-filter (basic)
|
||||
((draw? symbol :offset-assert 4) ;; guessed by decompiler
|
||||
(bucket int32 :offset-assert 8) ;; bucket-id
|
||||
(bucket bucket-id :offset-assert 8)
|
||||
(depth int32 :offset-assert 12)
|
||||
(ztest uint64 :offset-assert 16)
|
||||
(color vector :inline :offset-assert 32)
|
||||
@@ -12108,14 +12112,14 @@
|
||||
(extra vector :inline :offset-assert 80)
|
||||
(speed float :offset-assert 80 :overlay-at (-> extra x))
|
||||
(current-interp float :offset-assert 84 :overlay-at (-> extra y))
|
||||
(lock-vsync? basic :offset-assert 96)
|
||||
(lock-vsync? symbol :offset-assert 96)
|
||||
)
|
||||
:method-count-assert 12
|
||||
:size-assert #x64
|
||||
:flag-assert #xc00000064
|
||||
(:methods
|
||||
(draw (_type_) none) ;; 9
|
||||
(setup (_type_ vector vector float bucket-id) none) ;; 10
|
||||
(draw "Add DMA data to our bucket to draw the filter." (_type_) none) ;; 9
|
||||
(setup "Initialize the screen-filter with the given settings." (_type_ vector vector float bucket-id int int symbol) none) ;; 10
|
||||
(disable (_type_) none) ;; 11
|
||||
)
|
||||
)
|
||||
@@ -12137,7 +12141,7 @@
|
||||
:size-assert #x44
|
||||
:flag-assert #xa00000044
|
||||
(:methods
|
||||
(col-rend-method-9 () none) ;; 9 ;; (col-rend-method-9 (_type_) none)
|
||||
(draw (_type_) none) ;; 9
|
||||
)
|
||||
)
|
||||
|
||||
@@ -12367,8 +12371,8 @@
|
||||
(login "Initialize the object after it is loaded." (_type_) _type_);; 9
|
||||
(draw "Draw the drawable, and typically its children.
|
||||
This usually means adding stuff to a list to be drawn later, rather than expensive drawing here." (_type_) none) ;; 10
|
||||
(drawable-method-11 () none) ;; 11 ;; (fill-collide-list-from-box (_type_ int collide-list collide-query) int)
|
||||
(drawable-method-12 () none) ;; 12 ;; (fill-collide-list-from-line-sphere (_type_ int collide-list collide-query) int)
|
||||
(drawable-method-11 (_type_) none) ;; 11 ;; (fill-collide-list-from-box (_type_ int collide-list collide-query) int)
|
||||
(drawable-method-12 (_type_) none) ;; 12 ;; (fill-collide-list-from-line-sphere (_type_ int collide-list collide-query) int)
|
||||
(collect-stats "Collect triangle/perf statistics for rendering.
|
||||
This is only called when viewing stats.
|
||||
The vis-bits and culling registers are loaded during this time." (_type_) none) ;; 13
|
||||
@@ -21436,9 +21440,9 @@
|
||||
(:methods
|
||||
(new (symbol type) _type_) ;; 0 ;; (new (symbol type) _type_)
|
||||
(touching-list-method-9 () none) ;; 9 ;; (add-touching-prims (_type_ collide-shape-prim collide-shape-prim float collide-tri-result collide-tri-result) none)
|
||||
(touching-list-method-10 () none) ;; 10 ;; (free-nodes (_type_) none)
|
||||
(free-nodes (_type_) none) ;; 10
|
||||
(touching-list-method-11 () none) ;; 11 ;; (update-from-step-size (_type_ float) none)
|
||||
(touching-list-method-12 () none) ;; 12 ;; (send-events-for-touching-shapes (_type_) none)
|
||||
(send-events-for-touching-shapes (_type_) none) ;; 12
|
||||
(touching-list-method-13 () none) ;; 13 ;; (get-shapes-entry (_type_ collide-shape collide-shape) touching-shapes-entry)
|
||||
)
|
||||
)
|
||||
@@ -23120,7 +23124,7 @@
|
||||
(proto-tie)
|
||||
(bones)
|
||||
(camera)
|
||||
(foreground)
|
||||
(foreground) ;; 50
|
||||
(hover-path)
|
||||
(hover-spheres)
|
||||
(hover-update)
|
||||
@@ -29795,11 +29799,11 @@
|
||||
;; (define-extern *stats-blerc* object) ;; symbol
|
||||
;; (define-extern *blerc-globals* object) ;; blerc-globals
|
||||
;; (define-extern blerc-stats-init function) ;; (function none)
|
||||
;; (define-extern blerc-init function) ;; (function none)
|
||||
(define-extern blerc-init (function none))
|
||||
;; (define-extern blerc-a-fragment function)
|
||||
;; (define-extern dma-from-spr function)
|
||||
;; (define-extern merc-dma-chain-to-spr function)
|
||||
;; (define-extern blerc-execute function) ;; (function none)
|
||||
(define-extern blerc-execute (function none))
|
||||
(define-extern merc-blend-shape (function process-drawable object))
|
||||
;; (define-extern setup-blerc-chains-for-one-fragment function) ;; (function object object object object object object object)
|
||||
;; (define-extern setup-blerc-chains function) ;; (function merc-ctrl (pointer int16) dma-buffer none)
|
||||
@@ -29863,7 +29867,7 @@
|
||||
;; (define-extern ripple-execute-init function) ;; (function none)
|
||||
;; (define-extern ripple-create-wave-table function) ;; (function ripple-wave-set int)
|
||||
;; (define-extern ripple-apply-wave-table function) ;; (function merc-effect symbol)
|
||||
;; (define-extern ripple-execute function) ;; (function none)
|
||||
(define-extern ripple-execute (function none))
|
||||
;; (define-extern ripple-matrix-scale function) ;; function
|
||||
;; (define-extern ripple-add-debug-sphere function) ;; (function process-drawable vector float float none)
|
||||
;; (define-extern ripple-slow-add-sine-waves function) ;; (function ripple-wave-set float float float)
|
||||
@@ -29933,7 +29937,7 @@
|
||||
(define-extern foreground-check-longest-edge-asm (function draw-control float symbol))
|
||||
(define-extern foreground-ripple (function draw-control merc-ctrl pointer int pointer))
|
||||
(define-extern foreground-draw (function draw-control dma-buffer float none))
|
||||
;; (define-extern foreground-draw-hud function) ;; (function draw-control dma-buffer float none)
|
||||
(define-extern foreground-draw-hud (function draw-control dma-buffer float none))
|
||||
(define-extern *foreground* foreground-globals)
|
||||
(define-extern *foreground-draw-engine* engine)
|
||||
|
||||
@@ -30024,7 +30028,7 @@
|
||||
;; (define-extern generic-merc-death function)
|
||||
;; (define-extern generic-merc-execute-asm function)
|
||||
;; (define-extern generic-merc-do-chain function) ;; (function mercneric-chain dma-buffer pointer)
|
||||
;; (define-extern generic-merc-execute-all function) ;; (function dma-buffer none)
|
||||
(define-extern generic-merc-execute-all (function dma-buffer none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; generic-tie ;;
|
||||
@@ -30117,7 +30121,7 @@
|
||||
;; (define-extern debug-draw-settings function) ;; (function shadow-settings symbol)
|
||||
;; (define-extern shadow-execute function) ;; (function shadow-dma-packet pointer pointer)
|
||||
;; (define-extern shadow-vu0-upload function) ;; (function none)
|
||||
;; (define-extern shadow-execute-all function) ;; (function dma-buffer none)
|
||||
(define-extern shadow-execute-all (function dma-buffer none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; shadow-vu1 ;;
|
||||
@@ -30254,7 +30258,7 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define-extern *blit-displays-work* blit-displays-work)
|
||||
;; (define-extern draw-color-bars function) ;; (function none)
|
||||
(define-extern draw-color-bars (function blit-displays-work none))
|
||||
;; (define-extern draw-raw-image function) ;; (function bucket-id art-group int int level int none)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -30849,10 +30853,10 @@
|
||||
;; (define-extern sp-relaunch-setup-fields function) ;; (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none)
|
||||
;; (define-extern sp-relaunch-particle-2d function) ;; (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none)
|
||||
;; (define-extern sp-relaunch-particle-3d function) ;; (function object sparticle-launcher sparticle-cpuinfo sprite-vec-data-3d none)
|
||||
;; (define-extern execute-particle-local-space-engine function)
|
||||
(define-extern execute-particle-local-space-engine (function int none))
|
||||
;; (define-extern local-space-camera function)
|
||||
(define-extern local-space-proc-joint (function particle-local-space-info none))
|
||||
;; (define-extern execute-part-engine function) ;; (function none)
|
||||
(define-extern execute-part-engine (function none))
|
||||
;; (define-extern sparticle-track-root function) ;; (function object sparticle-cpuinfo vector none)
|
||||
;; (define-extern sparticle-track-root-prim function) ;; (function object sparticle-cpuinfo vector none)
|
||||
;; (define-extern sparticle-track-joint function) ;; (function sparticle-system sparticle-cpuinfo vector none)
|
||||
@@ -30935,8 +30939,8 @@
|
||||
;; (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)
|
||||
;; (define-extern remap-all-particles function) ;; (function none)
|
||||
;; (define-extern process-particles function) ;; (function none)
|
||||
(define-extern remap-all-particles (function none))
|
||||
(define-extern process-particles (function none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; entity-table ;;
|
||||
@@ -31754,11 +31758,11 @@
|
||||
;; (define-extern time-of-day-setup function) ;; (function symbol symbol)
|
||||
(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))
|
||||
;; (define-extern init-time-of-day-context function) ;; (function time-of-day-context symbol)
|
||||
(define-extern init-time-of-day-context (function time-of-day-context symbol))
|
||||
;; (define-extern set-filter-color! function) ;; (function float float float none)
|
||||
;; (define-extern tod-madd! function) ;; (function vector vector vector float)
|
||||
;; (define-extern update-environment-colors function) ;; (function time-of-day-context vector)
|
||||
;; (define-extern update-time-of-day function) ;; (function time-of-day-context none)
|
||||
(define-extern update-time-of-day (function time-of-day-context none))
|
||||
;; (define-extern calc-fade-from-fog function) ;; (function vector float)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -32320,7 +32324,7 @@
|
||||
(define-extern cshape-reaction-update-state (function control-info collide-query vector none))
|
||||
(define-extern cshape-reaction-default (function control-info collide-query vector vector collide-status))
|
||||
;; (define-extern cshape-reaction-just-move function) ;; (function control-info collide-query vector collide-status)
|
||||
;; (define-extern collide-shape-draw-debug-marks function) ;; (function none)
|
||||
(define-extern collide-shape-draw-debug-marks (function none))
|
||||
;; (define-extern *col-timer* object) ;; stopwatch
|
||||
;; (define-extern *frame-timer* object) ;; stopwatch
|
||||
;; (define-extern *col-timer-enable* object) ;; symbol
|
||||
@@ -32335,7 +32339,7 @@
|
||||
;; collide ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern *collide-vif0-init* array) ;; (array uint32)
|
||||
(define-extern *collide-vif0-init* (array uint32))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; collide-planes ;;
|
||||
@@ -32423,7 +32427,7 @@
|
||||
|
||||
(define-extern *actor-hash* spatial-hash)
|
||||
;; (define-extern *actor-hash-buckets* object) ;; actor-hash-buckets
|
||||
;; (define-extern update-actor-hash function) ;; (function none)
|
||||
(define-extern update-actor-hash (function none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; merc-death ;;
|
||||
@@ -37215,54 +37219,62 @@
|
||||
;; drawable ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern sphere-cull function) ;; (function vector symbol)
|
||||
;; (define-extern guard-band-cull function) ;; (function vector symbol)
|
||||
(define-extern sphere-in-view-frustum? (function sphere symbol))
|
||||
(define-extern line-in-view-frustum? (function vector vector symbol))
|
||||
(define-extern vis-cull (function int symbol))
|
||||
;; (define-extern vis-cull-debug function) ;; (function work-area int symbol)
|
||||
;; (define-extern error-sphere function) ;; (function drawable-error string none)
|
||||
;; (define-extern *edit-instance* object) ;; string
|
||||
;; (define-extern *instance-mem-usage* object) ;; memory-usage-block
|
||||
;; (define-extern find-instance-by-name-level function) ;; (function string level prototype-bucket)
|
||||
;; (define-extern find-instance-by-name function) ;; (function string prototype-bucket)
|
||||
;; (define-extern prototypes-game-visible-set! function) ;; (function pair symbol int)
|
||||
;; (define-extern find-instance-by-index function) ;; (function type int bsp-header prototype-bucket)
|
||||
;; (define-extern prototype-bucket-type function) ;; (function prototype-bucket type)
|
||||
;; (define-extern prototype-bucket-recalc-fields function) ;; (function prototype-bucket prototype-bucket)
|
||||
;; (define-extern print-prototype-list function) ;; (function none)
|
||||
;; (define-extern draw-instance-info function) ;; (function string none)
|
||||
;; (define-extern set-shadow-by-name function) ;; (function string int int none)
|
||||
;; (define-extern get-shadow-by-name function) ;; (function string none)
|
||||
;; (define-extern teleport-camera-by-name function) ;; (function string none)
|
||||
;; (define-extern teleport-camera-by-pos function)
|
||||
;; (define-extern calc-vu1-shadow function)
|
||||
;; (define-extern calc-shadow-masks function)
|
||||
;; (define-extern calc-realtime-lights function)
|
||||
(define-extern calc-vu1-lights (function vu-lights draw-control uint none))
|
||||
(define-extern dma-add-process-drawable (function process-drawable draw-control symbol dma-buffer none))
|
||||
;; (define-extern *hud-lights* object) ;; vu-lights
|
||||
(define-extern dma-add-process-drawable-hud (function process-drawable draw-control float dma-buffer none))
|
||||
(define-extern add-process-drawable (function process-drawable draw-control symbol dma-buffer none))
|
||||
;; (define-extern foreground-engine-execute function) ;; (function engine display-frame none)
|
||||
;; (define-extern main-debug-hook function) ;; (function none)
|
||||
;; (define-extern *debug-hook* object) ;; pair
|
||||
;; (define-extern *add-sphere* object) ;; symbol
|
||||
;; (define-extern *generic-effect-mode* object) ;; int
|
||||
;; (define-extern foreground-initialize-engines function) ;; (function none)
|
||||
;; (define-extern foreground-execute-cpu-vu0-engines function) ;; (function none)
|
||||
;; (define-extern real-main-draw-hook function) ;; (function none)
|
||||
;; (define-extern main-draw-hook function) ;; (function none)
|
||||
;; (define-extern *draw-hook* object) ;; (function none)
|
||||
;; (define-extern default-init-buffer function) ;; (function bucket-id gs-zbuf gs-test none)
|
||||
;; (define-extern default-end-buffer function) ;; (function bucket-id gs-zbuf gs-test none)
|
||||
;; (define-extern screen-shot-scale function) ;; (function int string none)
|
||||
;; (define-extern screen-shot function) ;; (function none)
|
||||
;; (define-extern display-frame-start function) ;; (function display int float none)
|
||||
;; (define-extern display-frame-finish function) ;; (function display display)
|
||||
;; (define-extern determine-pause-mode function) ;; (function int)
|
||||
;; (define-extern calc-ratio function)
|
||||
;; (define-extern display-sync function) ;; (function display none)
|
||||
(define-extern draw-vortex (function none)) ;; doesn't exist in jak 3!!
|
||||
(define-extern sphere-cull "Is this sphere visible? Uses cached camera matrix registers, so use with care." (function vector symbol))
|
||||
(define-extern guard-band-cull "Is this sphere within the guard band, and maybe needs clipping? Uses cached camera matrix registers, so use with care." (function vector symbol))
|
||||
(define-extern sphere-in-view-frustum? "Check if sphere is in view frustum. Uses math-camera, so doesn't need register setup." (function sphere symbol))
|
||||
(define-extern line-in-view-frustum? "Check if line is in view frustum. Uses math-camera, so doesn't need register setup." (function vector vector symbol))
|
||||
(define-extern vis-cull "Check if object is visible by ID with precomputed visibility. Requres scratchpad to have vis-bits loaded." (function int symbol))
|
||||
(define-extern vis-cull-debug (function work-area int symbol))
|
||||
(define-extern error-sphere "Draw an error sphere and text for a drawable-error." (function drawable-error string none))
|
||||
(define-extern *edit-instance* string)
|
||||
(define-extern *instance-mem-usage* memory-usage-block)
|
||||
(define-extern find-instance-by-name-level "Find shrub or tie prototype by name in a level.
|
||||
Yes it says instance. No it does not return an instance." (function string level prototype-bucket))
|
||||
(define-extern find-instance-by-name "Find shrub or tie prototype by name in any level.
|
||||
Yes it says instance. No it does not return an instance." (function string prototype-bucket))
|
||||
(define-extern prototypes-game-visible-set!
|
||||
"Disable collision/visibilty of tie/shrub based on a list of prototype names.
|
||||
Only looks in the given level."
|
||||
(function pair symbol level int))
|
||||
(define-extern find-instance-by-index (function type int bsp-header prototype-bucket))
|
||||
(define-extern prototype-bucket-type (function prototype-bucket type))
|
||||
(define-extern prototype-bucket-recalc-fields (function prototype-bucket prototype-bucket))
|
||||
(define-extern print-prototype-list (function none))
|
||||
(define-extern draw-instance-info (function string none))
|
||||
(define-extern set-shadow-by-name "Modify the shadow values for a process." (function string int int none))
|
||||
(define-extern get-shadow-by-name "Print to stdout the mask/values for the given process shadows" (function string none))
|
||||
(define-extern teleport-camera-by-name "Move camera to entity by name" (function string none))
|
||||
(define-extern teleport-camera-by-pos "Move camera to position" (function float float float none))
|
||||
(define-extern calc-vu1-shadow "Update shadow-ctrl based on lights" (function light-group draw-control none))
|
||||
(define-extern calc-shadow-masks (function light-group draw-control uint none))
|
||||
(define-extern calc-realtime-lights (function light-group draw-control uint none))
|
||||
(define-extern calc-vu1-lights (function vu-lights draw-control symbol none))
|
||||
(define-extern dma-add-process-drawable "Generate DMA for foreground object, calculate lights/shadows, etc." (function process-drawable draw-control symbol dma-buffer none))
|
||||
(define-extern *hud-lights* vu-lights)
|
||||
(define-extern dma-add-process-drawable-hud "Special version of dma-add-process-drawable for drawing hud foreground objects" (function process-drawable draw-control float dma-buffer none))
|
||||
(define-extern add-process-drawable "Foreground engine function to generate dma for a process-drawable." (function process-drawable draw-control symbol dma-buffer none))
|
||||
(define-extern foreground-engine-execute "Draw all foreground objects!" (function engine none))
|
||||
(define-extern main-debug-hook "Run debug engine, collision renderer." (function none))
|
||||
(define-extern *debug-hook* pair)
|
||||
(define-extern *add-sphere* symbol)
|
||||
(define-extern *generic-effect-mode* int)
|
||||
(define-extern foreground-initialize-engines "Initialize shadow chains prior to foreground drawing." (function none))
|
||||
(define-extern foreground-execute-cpu-vu0-engines "Run foreground drawing code on EE/VU0 (bones, generic merc, part of shadow, lightning, prim)" (function none))
|
||||
(define-extern real-main-draw-hook "Do all drawing! Called by main loop to run drawing for a frame.
|
||||
Note that this also dispatches collide events, updates actors, etc.
|
||||
It's a bit more than just drawing." (function none))
|
||||
(define-extern main-draw-hook "Wrapper of real-main-draw-hook" (function none))
|
||||
(define-extern *draw-hook* (function none))
|
||||
(define-extern default-init-buffer "Initialize DMA chain for a bucket." (function bucket-id gs-zbuf gs-test none))
|
||||
(define-extern default-end-buffer "Add DMA data at the end of a bucket to reset settings." (function bucket-id gs-zbuf gs-test none))
|
||||
(define-extern screen-shot-scale (function int string none))
|
||||
(define-extern screen-shot "Take a screenshot." (function none))
|
||||
(define-extern display-frame-start "Advance clocks, poll pads/mouse, set up buckets." (function display int float none))
|
||||
(define-extern display-frame-finish "Do final texture remaps, sync DMA (wait for previous rendering to finish), and finalize DMA chain." (function display display))
|
||||
(define-extern determine-pause-mode "Update pause modes" (function none))
|
||||
(define-extern calc-ratio (function int int float))
|
||||
(define-extern display-sync (function display none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; drawable-group ;;
|
||||
@@ -37288,52 +37300,56 @@
|
||||
;; main-collide ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern drawable-sphere-box-intersect? function) ;; (function drawable bounding-box4w symbol)
|
||||
;; (define-extern instance-sphere-box-intersect? function) ;; (function drawable instance-tie bounding-box4w symbol)
|
||||
;; (define-extern instance-tfragment-add-debug-sphere function) ;; (function drawable instance-tie symbol)
|
||||
(define-extern drawable-sphere-box-intersect? (function drawable bounding-box4w symbol))
|
||||
(define-extern instance-sphere-box-intersect? (function drawable instance-tie bounding-box4w symbol))
|
||||
(define-extern instance-tfragment-add-debug-sphere (function drawable instance-tie symbol))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; video ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define-extern *video-mode* int)
|
||||
(define-extern set-video-mode (function symbol none))
|
||||
(define-extern get-video-mode (function symbol))
|
||||
(define-extern set-aspect-ratio (function symbol none))
|
||||
(define-extern get-aspect-ratio (function symbol))
|
||||
(define-extern set-progressive-scan (function symbol none))
|
||||
;; (define-extern get-progressive-scan function) ;; (function symbol)
|
||||
;; (define-extern set-graphics-mode function) ;; (function none)
|
||||
(define-extern get-progressive-scan (function symbol))
|
||||
(define-extern set-graphics-mode (function none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; main ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define-extern set-letterbox-frames (function time-frame none))
|
||||
(define-extern letterbox (function none))
|
||||
(define-extern set-blackout-frames (function time-frame none))
|
||||
(define-extern blackout (function none))
|
||||
(define-extern add-blackout (function time-frame int int int int int))
|
||||
(define-extern paused? (function symbol))
|
||||
(define-extern movie? (function symbol))
|
||||
;; (define-extern scene-select? function)
|
||||
(define-extern demo? (function symbol))
|
||||
(define-extern kiosk? (function symbol))
|
||||
(define-extern set-letterbox-frames "Enable letterbox for the given amount of time." (function time-frame none))
|
||||
(define-extern letterbox "Draw letterbox" (function bucket-id float none))
|
||||
(define-extern set-blackout-frames "Enable blackout for the given amount of time." (function time-frame none))
|
||||
(define-extern blackout "Draw blackout as a sprite." (function bucket-id none))
|
||||
(define-extern add-blackout "Update display settings to do blackout with GS pmode alp." (function time-frame int int int int int))
|
||||
(define-extern paused? "Are we paused? Counts any type of pause/menu/freeze." (function symbol))
|
||||
(define-extern movie? "Are we in a movie?" (function symbol))
|
||||
(define-extern scene-select? (function symbol))
|
||||
(define-extern demo? "Is this a demo version?" (function symbol))
|
||||
(define-extern kiosk? "Is this a kiosk version of the game?" (function symbol))
|
||||
(define-extern *last-master-mode* symbol)
|
||||
(define-extern set-master-mode (function symbol none))
|
||||
;; (define-extern pause-allowed? function) ;; (function symbol)
|
||||
;; (define-extern toggle-pause function) ;; (function int)
|
||||
(define-extern set-master-mode "Change the master mode and adjust a few masks" (function symbol none))
|
||||
(define-extern pause-allowed? "Should we allow a pause?" (function symbol))
|
||||
(define-extern toggle-pause "Update the pause state. Call this if the user presses a pause button
|
||||
This function will check the button and state and do a pause if needed."
|
||||
(function int))
|
||||
(define-extern *screen-filter* screen-filter)
|
||||
;; (define-extern *cheat-temp* object) ;; (pointer int32)
|
||||
(define-extern *cheat-temp* (pointer int32))
|
||||
(define-extern *master-exit* symbol)
|
||||
(define-extern *progress-cheat* symbol)
|
||||
;; (define-extern *first-boot* object) ;; symbol
|
||||
;; (define-extern main-timeouts function)
|
||||
;; (define-extern main-cheats function) ;; (function int)
|
||||
;; (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 symbol process))
|
||||
;; (define-extern off function) ;; (function int)
|
||||
(define-extern *first-boot* symbol)
|
||||
(define-extern main-timeouts "Maybe reset/restart the game if no input has been given.
|
||||
Mainly used for kiosk/demo modes." (function none))
|
||||
(define-extern main-cheats (function none))
|
||||
(define-extern end-display (function display none))
|
||||
(define-extern display-loop-main (function display none))
|
||||
(define-extern display-loop "Main loop for running the game." (function int :behavior process))
|
||||
(define-extern on "Start the display process." (function symbol process))
|
||||
(define-extern off "Stop the display process." (function none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; collide-cache ;;
|
||||
@@ -37417,7 +37433,7 @@
|
||||
;; (define-extern *compact-actors* object) ;; symbol
|
||||
;; (define-extern *vis-actors* object) ;; symbol
|
||||
(define-extern entity-by-name (function string entity))
|
||||
;; (define-extern entity-by-type function) ;; (function type entity-actor)
|
||||
(define-extern entity-by-type (function type entity-actor))
|
||||
(define-extern entity-by-aid (function uint entity))
|
||||
;; (define-extern entity-actor-from-level-name function) ;; (function symbol entity-actor)
|
||||
;; (define-extern entity-nav-mesh-by-aid function) ;; (function actor-id entity-nav-mesh)
|
||||
@@ -38793,7 +38809,7 @@
|
||||
;; (define-extern anim-tester-add-newobj function)
|
||||
;; (define-extern anim-tester-stop function)
|
||||
;; (define-extern anim-tester-start function) ;; (function symbol)
|
||||
;; (define-extern anim-tester-add-object function) ;; (function string none)
|
||||
(define-extern anim-tester-add-object (function string none))
|
||||
;; (define-extern anim-tester-set-name function)
|
||||
;; (define-extern anim-tester-add-sequence function)
|
||||
|
||||
@@ -39914,7 +39930,7 @@
|
||||
;; (define-extern debug-menu-context-make-default-menus function) ;; (function debug-menu-context debug-menu-context)
|
||||
;; (define-extern *popup-menu-context* object) ;; debug-menu-context
|
||||
;; (define-extern popup-menu-context-make-default-menus function) ;; (function debug-menu-context debug-menu-context)
|
||||
;; (define-extern menu-respond-to-pause function) ;; (function symbol)
|
||||
(define-extern menu-respond-to-pause (function symbol))
|
||||
;; (define-extern *menu-hook* function) ;; (function debug-menu-context)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
@@ -126,5 +126,12 @@
|
||||
],
|
||||
"trajectory": [[15, "(function trajectory none)"]],
|
||||
"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)"]]
|
||||
"level": [[25, "(function level-group int symbol)"], [7, "(function none)"], [4, "(function load-state sound-bank-state symbol)"]],
|
||||
"main": [
|
||||
[11, "(function int none)"],
|
||||
[9, "(function none)"],
|
||||
[8, "(function none)"],
|
||||
[7, "(function none)"],
|
||||
[3, "(function symbol :behavior process)"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -340,7 +340,11 @@
|
||||
"draw-drawable-tree-instance-tie": [21, 23, 31, 33],
|
||||
"(method 12 flow-control)": [3, 9, 22],
|
||||
"(method 26 level-group)": [40, 41, 67],
|
||||
"borrow-city-expansion": [0, 9, 13, 15, 17]
|
||||
"borrow-city-expansion": [0, 9, 13, 15, 17],
|
||||
"dma-add-process-drawable": [0, 77],
|
||||
"real-main-draw-hook": [120, 122],
|
||||
"display-frame-finish": [61],
|
||||
"display-loop-main": [130]
|
||||
},
|
||||
|
||||
// Sometimes the game might use format strings that are fetched dynamically,
|
||||
|
||||
@@ -410,6 +410,11 @@
|
||||
"(method 20 load-state)": [
|
||||
[16, ["inline-array", "level-buffer-state", 10]],
|
||||
[176, ["inline-array", "level-buffer-state", 10]]
|
||||
|
||||
],
|
||||
"calc-vu1-lights": [
|
||||
[16, "light-group"]
|
||||
],
|
||||
"teleport-camera-by-pos": [
|
||||
[16, "vector"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -2991,5 +2991,74 @@
|
||||
"borrow-city-expansion": [
|
||||
[23, "a0", "basic"],
|
||||
[52, "s5", "basic"]
|
||||
],
|
||||
"find-instance-by-name-level": [
|
||||
[11, "v1", "drawable-tree-instance-shrub"],
|
||||
[38, "v1", "drawable-tree-instance-tie"]
|
||||
],
|
||||
"dma-add-process-drawable": [
|
||||
[42, "a0", "foreground-work"],
|
||||
[45, "a0", "foreground-work"],
|
||||
[78, "a0", "foreground-work"],
|
||||
[198, "t0", "(pointer int128)"]
|
||||
],
|
||||
"calc-shadow-masks": [
|
||||
[10, "v0", "(array float)"]
|
||||
],
|
||||
"dma-add-process-drawable-hud": [
|
||||
[[43, 59], "v1", "level"],
|
||||
[11, "a0", "foreground-work"]
|
||||
],
|
||||
"default-init-buffer": [
|
||||
[[116, 126], "a1", "dma-packet"]
|
||||
],
|
||||
"default-end-buffer": [
|
||||
[[117, 123], "a1", "dma-packet"],
|
||||
[125, "a1", "(pointer uint32)"]
|
||||
],
|
||||
"display-frame-start": [
|
||||
[4, "v1", "vif-bank"],
|
||||
[9, "a0", "vif-bank"]
|
||||
],
|
||||
"display-frame-finish": [
|
||||
[[504, 513], "a0", "dma-packet"],
|
||||
[542, "a0", "(pointer uint64)"]
|
||||
],
|
||||
"(method 15 drawable-tree)": [
|
||||
[[1, 4], "v1", "drawable-inline-array-node"],
|
||||
[[29, 34], "t0", "drawable-inline-array-node"],
|
||||
[[28, 32], "t2", "drawable-inline-array-node"],
|
||||
[[42, 46], "t2", "(pointer int8)"]
|
||||
],
|
||||
"get-shadow-by-name": [
|
||||
[7, "v1", "process-drawable"]
|
||||
],
|
||||
"set-shadow-by-name": [
|
||||
[7, "v1", "process-drawable"]
|
||||
],
|
||||
"find-instance-by-index": [
|
||||
[26, "t1", "drawable-tree-instance-shrub"],
|
||||
[40, "t1", "drawable-tree-instance-tie"]
|
||||
],
|
||||
"print-prototype-list": [
|
||||
[25, "v1", "drawable-tree-instance-shrub"],
|
||||
[104, "v1", "drawable-tree-instance-tie"]
|
||||
],
|
||||
"draw-instance-info": [
|
||||
[[188, 203], "s5", "prototype-bucket-shrub"],
|
||||
[[192, 303], "s1", "prototype-shrubbery"],
|
||||
[[359, 400], "v1", "prototype-tie"],
|
||||
[[44, 64], "s1", "drawable-inline-array-instance-tie"],
|
||||
[[331, 450], "s5", "prototype-bucket-tie"],
|
||||
[[35, 41], "v1", "drawable-tree-instance-tie"]
|
||||
],
|
||||
"set-graphics-mode": [[[0, 100], "gp", "gs-bank"]],
|
||||
"(method 9 screen-filter)": [
|
||||
[[118, 128], "t1", "rgba"]
|
||||
],
|
||||
"display-loop-main": [
|
||||
[231, "t9", "(function none)"]
|
||||
]
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2078,9 +2078,10 @@ std::vector<BitFieldConstantDef> decompile_bitfield_from_int(const TypeSpec& typ
|
||||
return *try_decompile_bitfield_from_int(type, ts, value, true, {});
|
||||
}
|
||||
|
||||
std::vector<std::string> decompile_bitfield_enum_from_int(const TypeSpec& type,
|
||||
const TypeSystem& ts,
|
||||
u64 value) {
|
||||
std::optional<std::vector<std::string>> try_decompile_bitfield_enum_from_int(const TypeSpec& type,
|
||||
const TypeSystem& ts,
|
||||
u64 value,
|
||||
bool require_success) {
|
||||
u64 reconstructed = 0;
|
||||
std::vector<std::string> result;
|
||||
auto type_info = ts.try_enum_lookup(type.base_type());
|
||||
@@ -2116,10 +2117,14 @@ std::vector<std::string> decompile_bitfield_enum_from_int(const TypeSpec& type,
|
||||
}
|
||||
|
||||
if (reconstructed != value) {
|
||||
throw std::runtime_error(fmt::format(
|
||||
"Failed to decompile bitfield enum {}. Original value is 0x{:x} but we could only "
|
||||
"make 0x{:x} using the available fields.",
|
||||
type.print(), value, reconstructed));
|
||||
if (require_success) {
|
||||
throw std::runtime_error(fmt::format(
|
||||
"Failed to decompile bitfield enum {}. Original value is 0x{:x} but we could only "
|
||||
"make 0x{:x} using the available fields.",
|
||||
type.print(), value, reconstructed));
|
||||
} else {
|
||||
return std::nullopt;
|
||||
}
|
||||
}
|
||||
|
||||
if (bit_count == (int)result.size()) {
|
||||
@@ -2137,6 +2142,14 @@ std::vector<std::string> decompile_bitfield_enum_from_int(const TypeSpec& type,
|
||||
return result;
|
||||
}
|
||||
|
||||
std::vector<std::string> decompile_bitfield_enum_from_int(const TypeSpec& type,
|
||||
const TypeSystem& ts,
|
||||
u64 value) {
|
||||
auto ret = try_decompile_bitfield_enum_from_int(type, ts, value, true);
|
||||
ASSERT(ret.has_value());
|
||||
return *ret;
|
||||
}
|
||||
|
||||
std::string decompile_int_enum_from_int(const TypeSpec& type, const TypeSystem& ts, u64 value) {
|
||||
auto type_info = ts.try_enum_lookup(type.base_type());
|
||||
ASSERT(type_info);
|
||||
|
||||
@@ -107,7 +107,10 @@ T extract_bitfield(T input, int start_bit, int size) {
|
||||
std::vector<BitFieldConstantDef> decompile_bitfield_from_int(const TypeSpec& type,
|
||||
const TypeSystem& ts,
|
||||
u64 value);
|
||||
|
||||
std::optional<std::vector<std::string>> try_decompile_bitfield_enum_from_int(const TypeSpec& type,
|
||||
const TypeSystem& ts,
|
||||
u64 value,
|
||||
bool require_success);
|
||||
std::optional<std::vector<BitFieldConstantDef>> try_decompile_bitfield_from_int(
|
||||
const TypeSpec& type,
|
||||
const TypeSystem& ts,
|
||||
|
||||
@@ -83,6 +83,7 @@ set(RUNTIME_SOURCE
|
||||
graphics/sceGraphicsInterface.cpp
|
||||
graphics/texture/jak1_tpage_dir.cpp
|
||||
graphics/texture/jak2_tpage_dir.cpp
|
||||
graphics/texture/jak3_tpage_dir.cpp
|
||||
graphics/texture/TextureConverter.cpp
|
||||
graphics/texture/TexturePool.cpp
|
||||
${OG_ASM_FUNCS_FILE}
|
||||
|
||||
@@ -98,6 +98,9 @@ OpenGLRenderer::OpenGLRenderer(std::shared_ptr<TexturePool> texture_pool,
|
||||
case GameVersion::Jak2:
|
||||
m_texture_animator = std::make_shared<TextureAnimator>(m_render_state.shaders, common_level);
|
||||
break;
|
||||
case GameVersion::Jak3:
|
||||
// for now, no texture animation for jak3...
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
}
|
||||
@@ -114,11 +117,34 @@ OpenGLRenderer::OpenGLRenderer(std::shared_ptr<TexturePool> texture_pool,
|
||||
case GameVersion::Jak2:
|
||||
init_bucket_renderers_jak2();
|
||||
break;
|
||||
case GameVersion::Jak3:
|
||||
init_bucket_renderers_jak3();
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
}
|
||||
}
|
||||
|
||||
void OpenGLRenderer::init_bucket_renderers_jak3() {
|
||||
using namespace jak3;
|
||||
m_bucket_renderers.resize((int)BucketId::MAX_BUCKETS);
|
||||
m_bucket_categories.resize((int)BucketId::MAX_BUCKETS, BucketCategory::OTHER);
|
||||
|
||||
{
|
||||
auto p = scoped_prof("render-inits");
|
||||
// for now, for any unset renderers, just set them to an EmptyBucketRenderer.
|
||||
for (size_t i = 0; i < m_bucket_renderers.size(); i++) {
|
||||
if (!m_bucket_renderers[i]) {
|
||||
init_bucket_renderer<EmptyBucketRenderer>(fmt::format("bucket-{}", i),
|
||||
BucketCategory::OTHER, i);
|
||||
}
|
||||
|
||||
m_bucket_renderers[i]->init_shaders(m_render_state.shaders);
|
||||
m_bucket_renderers[i]->init_textures(*m_render_state.texture_pool, GameVersion::Jak3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OpenGLRenderer::init_bucket_renderers_jak2() {
|
||||
using namespace jak2;
|
||||
m_bucket_renderers.resize((int)BucketId::MAX_BUCKETS);
|
||||
|
||||
@@ -80,6 +80,7 @@ class OpenGLRenderer {
|
||||
void blit_display();
|
||||
void init_bucket_renderers_jak1();
|
||||
void init_bucket_renderers_jak2();
|
||||
void init_bucket_renderers_jak3();
|
||||
void draw_renderer_selection_window();
|
||||
void finish_screenshot(const std::string& output_name,
|
||||
int px,
|
||||
|
||||
@@ -412,6 +412,12 @@ enum class BucketId {
|
||||
};
|
||||
}
|
||||
|
||||
namespace jak3 {
|
||||
enum class BucketId {
|
||||
MAX_BUCKETS = 587,
|
||||
};
|
||||
}
|
||||
|
||||
enum class BucketCategory {
|
||||
TFRAG,
|
||||
TIE,
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "game/graphics/pipelines/opengl.h"
|
||||
#include "game/graphics/texture/jak1_tpage_dir.h"
|
||||
#include "game/graphics/texture/jak2_tpage_dir.h"
|
||||
#include "game/graphics/texture/jak3_tpage_dir.h"
|
||||
|
||||
#include "fmt/core.h"
|
||||
#include "third-party/imgui/imgui.h"
|
||||
@@ -312,6 +313,8 @@ const std::vector<u32>& get_tpage_dir(GameVersion version) {
|
||||
return get_jak1_tpage_dir();
|
||||
case GameVersion::Jak2:
|
||||
return get_jak2_tpage_dir();
|
||||
case GameVersion::Jak3:
|
||||
return get_jak3_tpage_dir();
|
||||
default:
|
||||
ASSERT(false);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "common/common_types.h"
|
||||
|
||||
#include "jak1_tpage_dir.h"
|
||||
#include "game/graphics/texture/jak1_tpage_dir.h"
|
||||
|
||||
// clang-format off
|
||||
namespace {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "common/common_types.h"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "common/common_types.h"
|
||||
|
||||
const std::vector<u32>& get_jak3_tpage_dir();
|
||||
@@ -91,6 +91,7 @@
|
||||
(declare-type rigid-body structure)
|
||||
|
||||
(define-extern cshape-reaction-update-state (function control-info collide-query vector none))
|
||||
(define-extern collide-shape-draw-debug-marks (function none))
|
||||
|
||||
;; +++cshape-reaction-flags
|
||||
(defenum cshape-reaction-flags
|
||||
|
||||
@@ -114,9 +114,9 @@ storing a record of the primitives involved."
|
||||
(:methods
|
||||
(new (symbol type) _type_)
|
||||
(touching-list-method-9 () none)
|
||||
(touching-list-method-10 () none)
|
||||
(free-nodes (_type_) none)
|
||||
(touching-list-method-11 () none)
|
||||
(touching-list-method-12 () none)
|
||||
(send-events-for-touching-shapes (_type_) none)
|
||||
(touching-list-method-13 () none)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,5 +5,7 @@
|
||||
;; name in dgo: collide
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern *collide-vif0-init* (array uint32))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -7,3 +7,191 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defun drawable-sphere-box-intersect? ((arg0 drawable) (arg1 bounding-box4w))
|
||||
(local-vars (v1-1 uint128) (v1-2 uint128) (v1-3 uint128) (a0-1 uint128) (a1-2 uint128) (a2-0 uint128))
|
||||
(rlet ((vf1 :class vf)
|
||||
(vf2 :class vf)
|
||||
(vf3 :class vf)
|
||||
(vf4 :class vf)
|
||||
)
|
||||
(nop!)
|
||||
(nop!)
|
||||
(.lvf vf1 (&-> arg0 bsphere quad))
|
||||
(.add.w.vf vf2 vf1 vf1 :mask #b111)
|
||||
(let ((v1-0 (-> arg1 min quad)))
|
||||
(.sub.w.vf vf1 vf1 vf1 :mask #b111)
|
||||
(let ((a1-1 (-> arg1 max quad)))
|
||||
(.ftoi.vf vf4 vf2)
|
||||
(nop!)
|
||||
(.ftoi.vf vf3 vf1)
|
||||
(nop!)
|
||||
(.mov a0-1 vf4)
|
||||
(nop!)
|
||||
(.mov a2-0 vf3)
|
||||
(nop!)
|
||||
(.pcgtw a1-2 a2-0 a1-1)
|
||||
)
|
||||
(nop!)
|
||||
(.pcgtw v1-1 v1-0 a0-1)
|
||||
)
|
||||
(nop!)
|
||||
(.por v1-2 a1-2 v1-1)
|
||||
(nop!)
|
||||
(.ppach v1-3 (the-as uint128 0) v1-2)
|
||||
(nop!)
|
||||
(let ((v1-4 (shl (the-as int v1-3) 16)))
|
||||
(nop!)
|
||||
(zero? v1-4)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun instance-sphere-box-intersect? ((arg0 drawable) (arg1 instance-tie) (arg2 bounding-box4w))
|
||||
(local-vars
|
||||
(v1-3 uint128)
|
||||
(v1-4 uint128)
|
||||
(v1-5 uint128)
|
||||
(a0-2 uint128)
|
||||
(a1-2 uint128)
|
||||
(a2-1 uint128)
|
||||
(a3-1 uint128)
|
||||
(a3-3 uint128)
|
||||
(a3-4 uint128)
|
||||
(t0-1 uint128)
|
||||
(t0-2 uint128)
|
||||
(t1-0 uint128)
|
||||
(t2-1 uint128)
|
||||
(t2-2 uint128)
|
||||
)
|
||||
(rlet ((acc :class vf)
|
||||
(vf0 :class vf)
|
||||
(vf1 :class vf)
|
||||
(vf10 :class vf)
|
||||
(vf2 :class vf)
|
||||
(vf3 :class vf)
|
||||
(vf4 :class vf)
|
||||
(vf5 :class vf)
|
||||
(vf6 :class vf)
|
||||
(vf7 :class vf)
|
||||
(vf8 :class vf)
|
||||
(vf9 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(nop!)
|
||||
(let ((v1-0 (-> arg1 max-scale)))
|
||||
(nop!)
|
||||
(let ((a3-0 (the-as uint128 (-> arg1 origin long 3))))
|
||||
(nop!)
|
||||
(let ((t2-0 (the-as uint128 (-> arg1 origin long 0))))
|
||||
(.pextlh a3-1 a3-0 0)
|
||||
(let ((t0-0 (the-as uint128 (-> arg1 origin long 1))))
|
||||
(.pw.sra t1-0 a3-1 10)
|
||||
(let ((a3-2 (the-as uint128 (-> arg1 origin long 2))))
|
||||
(.pextlh t2-1 t2-0 0)
|
||||
(nop!)
|
||||
(.pw.sra t2-2 t2-1 16)
|
||||
(nop!)
|
||||
(.pextlh t0-1 t0-0 0)
|
||||
(.mov vf8 t1-0)
|
||||
(.pw.sra t0-2 t0-1 16)
|
||||
(.mov vf5 t2-2)
|
||||
(.pextlh a3-3 a3-2 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(.mov vf6 t0-2)
|
||||
(.pw.sra a3-4 a3-3 16)
|
||||
(.lvf vf9 (&-> arg1 bsphere quad))
|
||||
(nop!)
|
||||
(.mov vf7 a3-4)
|
||||
(nop!)
|
||||
(.mov vf10 v1-0)
|
||||
)
|
||||
(.itof.vf vf8 vf8)
|
||||
(nop!)
|
||||
(vitof12.xyzw vf5 vf5)
|
||||
(nop!)
|
||||
(vitof12.xyzw vf6 vf6)
|
||||
(nop!)
|
||||
(vitof12.xyzw vf7 vf7)
|
||||
(nop!)
|
||||
(.add.vf vf8 vf8 vf9 :mask #b111)
|
||||
(nop!)
|
||||
(nop!)
|
||||
(.lvf vf9 (&-> arg0 bsphere quad))
|
||||
(vitof12.xyzw vf10 vf10)
|
||||
(nop!)
|
||||
(.mul.w.vf vf10 vf10 vf9 :mask #b1)
|
||||
(nop!)
|
||||
(.mul.x.vf acc vf5 vf9)
|
||||
(nop!)
|
||||
(.add.mul.y.vf acc vf6 vf9 acc)
|
||||
(let ((v1-2 (-> arg2 min quad)))
|
||||
(.add.mul.z.vf acc vf7 vf9 acc)
|
||||
(let ((a1-1 (-> arg2 max quad)))
|
||||
(.add.mul.w.vf vf1 vf8 vf0 acc)
|
||||
(nop!)
|
||||
(.add.x.vf vf2 vf1 vf10 :mask #b111)
|
||||
(nop!)
|
||||
(.sub.x.vf vf1 vf1 vf10 :mask #b111)
|
||||
(nop!)
|
||||
(.ftoi.vf vf4 vf2)
|
||||
(nop!)
|
||||
(.ftoi.vf vf3 vf1)
|
||||
(nop!)
|
||||
(.mov a0-2 vf4)
|
||||
(nop!)
|
||||
(.mov a2-1 vf3)
|
||||
(nop!)
|
||||
(.pcgtw a1-2 a2-1 a1-1)
|
||||
)
|
||||
(nop!)
|
||||
(.pcgtw v1-3 v1-2 a0-2)
|
||||
)
|
||||
(nop!)
|
||||
(.por v1-4 a1-2 v1-3)
|
||||
(nop!)
|
||||
(.ppach v1-5 (the-as uint128 0) v1-4)
|
||||
(nop!)
|
||||
(let ((v1-6 (shl (the-as int v1-5) 16)))
|
||||
(nop!)
|
||||
(zero? v1-6)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun instance-tfragment-add-debug-sphere ((arg0 drawable) (arg1 instance-tie))
|
||||
(local-vars (v1-1 uint128) (v1-2 uint128) (a3-0 float))
|
||||
(rlet ((vf0 :class vf)
|
||||
(vf10 :class vf)
|
||||
(vf11 :class vf)
|
||||
(vf12 :class vf)
|
||||
(vf9 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(nop!)
|
||||
(let ((v1-0 (the-as uint128 (-> arg1 origin long 3))))
|
||||
(.pextlh v1-1 v1-0 0)
|
||||
)
|
||||
(.lvf vf9 (&-> arg0 bsphere quad))
|
||||
(.pw.sra v1-2 v1-1 10)
|
||||
(.lvf vf10 (&-> arg1 bsphere quad))
|
||||
(nop!)
|
||||
(.mov vf12 v1-2)
|
||||
(.itof.vf vf12 vf12)
|
||||
(nop!)
|
||||
(.add.vf vf10 vf10 vf12 :mask #b111)
|
||||
(nop!)
|
||||
(.add.vf vf9 vf9 vf10 :mask #b111)
|
||||
(nop!)
|
||||
(.add.w.vf vf11 vf0 vf9 :mask #b1)
|
||||
(nop!)
|
||||
(.mov a3-0 vf11)
|
||||
(nop!)
|
||||
(let ((a2-0 (new-stack-vector0)))
|
||||
(.svf (&-> a2-0 quad) vf9)
|
||||
(add-debug-sphere #t (bucket-id bucket583) a2-0 a3-0 (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -7,3 +7,98 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod new drawable-group ((allocation symbol) (type-to-make type) (arg0 int))
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* arg0 4))))))
|
||||
(set! (-> v0-0 length) arg0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod print ((this drawable-group))
|
||||
(format #t "#<~A @ #x~X [~D]" (-> this type) this (-> this length))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(format #t " ~A" (-> this data s5-0))
|
||||
)
|
||||
(format #t ">")
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod length ((this drawable-group))
|
||||
(-> this length)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch uint vs int.
|
||||
(defmethod asize-of ((this drawable-group))
|
||||
(the-as int (+ (-> drawable-group size) (* (-> this length) 4)))
|
||||
)
|
||||
|
||||
(defmethod mem-usage ((this drawable-group) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 1 (-> usage length)))
|
||||
(set! (-> usage data 0 name) "drawable-group")
|
||||
(+! (-> usage data 0 count) 1)
|
||||
(let ((v1-6 (asize-of this)))
|
||||
(+! (-> usage data 0 used) v1-6)
|
||||
(+! (-> usage data 0 total) (logand -16 (+ v1-6 15)))
|
||||
)
|
||||
(dotimes (s3-0 (-> this length))
|
||||
(mem-usage (-> this data s3-0) usage flags)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod login ((this drawable-group))
|
||||
"Initialize the object after it is loaded."
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(login (-> this data s5-0))
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod draw ((this drawable-group))
|
||||
"Draw the drawable, and typically its children.
|
||||
This usually means adding stuff to a list to be drawn later, rather than expensive drawing here."
|
||||
(when (vis-cull (-> this id))
|
||||
(when (sphere-cull (-> this bsphere))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(draw (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod collect-stats ((this drawable-group))
|
||||
"Collect triangle/perf statistics for rendering.
|
||||
This is only called when viewing stats.
|
||||
The vis-bits and culling registers are loaded during this time."
|
||||
(when (vis-cull (-> this id))
|
||||
(when (sphere-cull (-> this bsphere))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(collect-stats (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod debug-draw ((this drawable-group))
|
||||
"Debug-draw a drawable and its children. Typically uses the debug-draw functions."
|
||||
(when (vis-cull (-> this id))
|
||||
(when (sphere-cull (-> this bsphere))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(debug-draw (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod unpack-vis ((this drawable-group) (arg0 (pointer int8)) (arg1 (pointer int8)))
|
||||
(dotimes (s4-0 (-> this length))
|
||||
(set! arg1 (unpack-vis (-> this data s4-0) arg0 arg1))
|
||||
)
|
||||
arg1
|
||||
)
|
||||
|
||||
@@ -26,8 +26,8 @@ control over memory layout for use with DMA."
|
||||
(:methods
|
||||
(login (_type_) _type_)
|
||||
(draw (_type_) none)
|
||||
(drawable-method-11 () none)
|
||||
(drawable-method-12 () none)
|
||||
(drawable-method-11 (_type_) none)
|
||||
(drawable-method-12 (_type_) none)
|
||||
(collect-stats (_type_) none)
|
||||
(debug-draw (_type_) none)
|
||||
(unpack-vis (_type_ (pointer int8) (pointer int8)) (pointer int8))
|
||||
|
||||
@@ -7,3 +7,32 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod length ((this drawable-inline-array))
|
||||
(-> this length)
|
||||
)
|
||||
|
||||
(defmethod login ((this drawable-inline-array))
|
||||
"Initialize the object after it is loaded."
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod draw ((this drawable-inline-array))
|
||||
"Draw the drawable, and typically its children.
|
||||
This usually means adding stuff to a list to be drawn later, rather than expensive drawing here."
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod collect-stats ((this drawable-inline-array))
|
||||
"Collect triangle/perf statistics for rendering.
|
||||
This is only called when viewing stats.
|
||||
The vis-bits and culling registers are loaded during this time."
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod debug-draw ((this drawable-inline-array))
|
||||
"Debug-draw a drawable and its children. Typically uses the debug-draw functions."
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -7,3 +7,90 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod draw ((this drawable-tree-array))
|
||||
"Draw the drawable, and typically its children.
|
||||
This usually means adding stuff to a list to be drawn later, rather than expensive drawing here."
|
||||
(case (-> *level* draw-level *draw-index* display?)
|
||||
(('special #f)
|
||||
)
|
||||
(else
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(draw (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod collect-stats ((this drawable-tree-array))
|
||||
"Collect triangle/perf statistics for rendering.
|
||||
This is only called when viewing stats.
|
||||
The vis-bits and culling registers are loaded during this time."
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(collect-stats (-> this data s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod debug-draw ((this drawable-tree-array))
|
||||
"Debug-draw a drawable and its children. Typically uses the debug-draw functions."
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(debug-draw (-> this data s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod unpack-vis ((this drawable-tree) (arg0 (pointer int8)) (arg1 (pointer int8)))
|
||||
(local-vars (t5-1 uint))
|
||||
(let* ((v1-0 (the-as drawable-inline-array-node (-> this data 0)))
|
||||
(a3-1 (/ (-> v1-0 data 0 id) 8))
|
||||
(t0-0 (-> v1-0 length))
|
||||
(v1-1 (&+ arg0 a3-1))
|
||||
(a3-3 (/ (+ t0-0 7) 8))
|
||||
)
|
||||
(dotimes (t0-1 a3-3)
|
||||
(let ((t1-0 (-> arg1 0)))
|
||||
(set! arg1 (&-> arg1 1))
|
||||
(set! (-> v1-1 0) t1-0)
|
||||
)
|
||||
(set! v1-1 (&-> v1-1 1))
|
||||
)
|
||||
)
|
||||
(let ((v1-5 (+ (-> this length) -1)))
|
||||
(when (nonzero? v1-5)
|
||||
(dotimes (a3-5 v1-5)
|
||||
(let* ((t0-4 (-> this data a3-5))
|
||||
(t2-0 (the-as drawable-inline-array-node (-> this data (+ a3-5 1))))
|
||||
(t1-5 (/ (-> (the-as drawable-inline-array-node t0-4) data 0 id) 8))
|
||||
(t2-2 (/ (-> t2-0 data 0 id) 8))
|
||||
(t0-5 (-> (the-as drawable-inline-array-node t0-4) length))
|
||||
(t1-6 (&+ arg0 t1-5))
|
||||
(t2-3 (the-as object (&+ arg0 t2-2)))
|
||||
)
|
||||
(loop
|
||||
(let ((t3-0 (-> t1-6 0)))
|
||||
(set! t1-6 (&-> t1-6 1))
|
||||
(let ((t4-0 128))
|
||||
(label cfg-7)
|
||||
(b! (not (logtest? t3-0 t4-0)) cfg-9 :delay (set! t5-1 (the-as uint (-> arg1 0))))
|
||||
(set! arg1 (&-> arg1 1))
|
||||
(set! (-> (the-as (pointer int8) t2-3) 0) (the-as int t5-1))
|
||||
(label cfg-9)
|
||||
(+! t0-5 -1)
|
||||
(b! (zero? t0-5) cfg-12 :delay (shift-arith-right-32 t4-0 t4-0 1))
|
||||
(b! (nonzero? (the-as uint t4-0)) cfg-7 :delay (set! t2-3 (&-> (the-as (pointer int8) t2-3) 1)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-12)
|
||||
(nop!)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
arg1
|
||||
)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -38,6 +38,7 @@
|
||||
(define-extern process-entity-status! (function process entity-perm-status symbol entity-perm-status))
|
||||
(define-extern process-drawable-from-entity! (function process-drawable entity-actor none))
|
||||
(define-extern init-entity (function process entity-actor type none))
|
||||
(define-extern entity-by-type (function type entity-actor))
|
||||
|
||||
(define-extern *spawn-actors* symbol)
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
(define-extern set-blackout-frames (function time-frame none))
|
||||
(define-extern set-master-mode (function symbol none))
|
||||
(define-extern on (function symbol process))
|
||||
(define-extern toggle-pause (function int))
|
||||
|
||||
;; +++main-h:collide-spec
|
||||
(defenum collide-spec
|
||||
@@ -421,7 +422,7 @@
|
||||
|
||||
(deftype screen-filter (basic)
|
||||
((draw? symbol)
|
||||
(bucket int32)
|
||||
(bucket bucket-id)
|
||||
(depth int32)
|
||||
(ztest uint64)
|
||||
(color vector :inline)
|
||||
@@ -430,11 +431,11 @@
|
||||
(extra vector :inline)
|
||||
(speed float :overlay-at (-> extra data 0))
|
||||
(current-interp float :overlay-at (-> extra data 1))
|
||||
(lock-vsync? basic)
|
||||
(lock-vsync? symbol)
|
||||
)
|
||||
(:methods
|
||||
(draw (_type_) none)
|
||||
(setup (_type_ vector vector float bucket-id) none)
|
||||
(setup (_type_ vector vector float bucket-id int int symbol) none)
|
||||
(disable (_type_) none)
|
||||
)
|
||||
)
|
||||
@@ -455,7 +456,7 @@
|
||||
(camera-to-bbox-dist float)
|
||||
)
|
||||
(:methods
|
||||
(col-rend-method-9 () none)
|
||||
(draw (_type_) none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,3 +7,110 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod login ((this prototype-inline-array-shrub))
|
||||
"Initialize the object after it is loaded."
|
||||
(let ((s5-0 (-> *level* level *level-index* bsp)))
|
||||
(dotimes (s4-0 (-> this length))
|
||||
(let ((s3-0 (-> this data s4-0)))
|
||||
(when (and *debug-segment* (-> *screen-shot-work* highres-enable))
|
||||
(dotimes (v1-9 4)
|
||||
(+! (-> s3-0 dists data v1-9) 40960000.0)
|
||||
(set! (-> s3-0 rdists data v1-9) (/ 1.0 (-> s3-0 dists data v1-9)))
|
||||
)
|
||||
)
|
||||
(set! *texture-masks* (-> s5-0 shrub-masks data (-> s3-0 texture-masks-index)))
|
||||
(dotimes (s2-0 4)
|
||||
(let ((a0-15 (-> s3-0 geometry s2-0)))
|
||||
(if (nonzero? a0-15)
|
||||
(login a0-15)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod mem-usage ((this prototype-array-tie) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 1 (-> usage length)))
|
||||
(set! (-> usage data 0 name) "drawable-group")
|
||||
(+! (-> usage data 0 count) 1)
|
||||
(let ((v1-6 (asize-of this)))
|
||||
(+! (-> usage data 0 used) v1-6)
|
||||
(+! (-> usage data 0 total) (logand -16 (+ v1-6 15)))
|
||||
)
|
||||
(dotimes (s3-0 (-> this length))
|
||||
(mem-usage (-> this array-data s3-0) usage flags)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod mem-usage ((this prototype-bucket-tie) (usage memory-usage-block) (flags int))
|
||||
(dotimes (s3-0 4)
|
||||
(let ((a0-1 (-> this tie-geom s3-0)))
|
||||
(if (nonzero? a0-1)
|
||||
(mem-usage a0-1 usage (logior flags 1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> usage length) (max 85 (-> usage length)))
|
||||
(set! (-> usage data 84 name) "string")
|
||||
(+! (-> usage data 84 count) 1)
|
||||
(let ((v1-13 (asize-of (-> this name))))
|
||||
(+! (-> usage data 84 used) v1-13)
|
||||
(+! (-> usage data 84 total) (logand -16 (+ v1-13 15)))
|
||||
)
|
||||
(when (nonzero? (-> this tie-colors))
|
||||
(set! (-> usage length) (max 17 (-> usage length)))
|
||||
(set! (-> usage data 16 name) "tie-pal")
|
||||
(+! (-> usage data 16 count) 1)
|
||||
(let ((v1-25 (asize-of (-> this tie-colors))))
|
||||
(+! (-> usage data 16 used) v1-25)
|
||||
(+! (-> usage data 16 total) (logand -16 (+ v1-25 15)))
|
||||
)
|
||||
)
|
||||
(if (nonzero? (-> this collide-hash-fragment-array))
|
||||
(mem-usage (-> this collide-hash-fragment-array) usage (logior flags 1))
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod mem-usage ((this prototype-inline-array-shrub) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 1 (-> usage length)))
|
||||
(set! (-> usage data 0 name) "drawable-group")
|
||||
(+! (-> usage data 0 count) 1)
|
||||
(let ((v1-6 (asize-of this)))
|
||||
(+! (-> usage data 0 used) v1-6)
|
||||
(+! (-> usage data 0 total) (logand -16 (+ v1-6 15)))
|
||||
)
|
||||
(dotimes (s3-0 (-> this length))
|
||||
(mem-usage (-> this data s3-0) usage flags)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod mem-usage ((this prototype-bucket-shrub) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 25 (-> usage length)))
|
||||
(set! (-> usage data 24 name) "prototype-bucket-shrub")
|
||||
(+! (-> usage data 24 count) 1)
|
||||
(let ((v1-5 112))
|
||||
(+! (-> usage data 24 used) v1-5)
|
||||
(+! (-> usage data 24 total) (logand -16 (+ v1-5 15)))
|
||||
)
|
||||
(dotimes (s3-0 4)
|
||||
(let ((a0-5 (-> this geometry s3-0)))
|
||||
(if (nonzero? a0-5)
|
||||
(mem-usage a0-5 usage (logior flags 1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> usage length) (max 85 (-> usage length)))
|
||||
(set! (-> usage data 84 name) "string")
|
||||
(+! (-> usage data 84 count) 1)
|
||||
(let ((v1-22 (asize-of (-> this name))))
|
||||
(+! (-> usage data 84 used) v1-22)
|
||||
(+! (-> usage data 84 total) (logand -16 (+ v1-22 15)))
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
(blit-displays-work-method-16 () none)
|
||||
(blit-displays-work-method-17 (_type_ vector int float symbol) none)
|
||||
(blit-displays-work-method-18 () none)
|
||||
(blit-displays-work-method-19 () none)
|
||||
(blit-displays-work-method-19 (_type_) none)
|
||||
(blit-displays-work-method-20 () none)
|
||||
(get-menu-mode (_type_) symbol)
|
||||
(get-screen-copied (_type_) symbol)
|
||||
|
||||
@@ -5,5 +5,7 @@
|
||||
;; name in dgo: blit-displays
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern draw-color-bars (function blit-displays-work none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
(define-extern find-free-eye-index (function int string int int))
|
||||
(define-extern free-eye-index (function int int))
|
||||
(define-extern merc-eye-anim (function process-drawable none))
|
||||
(define-extern update-eyes (function none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
(define-extern *foreground-draw-engine* engine)
|
||||
(define-extern *default-shadow-settings* shadow-settings)
|
||||
(define-extern *foreground* foreground-globals)
|
||||
|
||||
(define-extern foreground-draw-hud (function draw-control dma-buffer float none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
((index uint16)
|
||||
(count uint16)
|
||||
)
|
||||
:pack-me
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
;; name in dgo: generic-merc-h
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern generic-merc-execute-all (function dma-buffer none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype merc-matrix (structure)
|
||||
|
||||
@@ -5,5 +5,8 @@
|
||||
;; name in dgo: merc-blend-shape
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern blerc-init (function none))
|
||||
(define-extern blerc-execute (function none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
(define-extern ripple-find-height (function process-drawable int vector float))
|
||||
(define-extern ripple-make-request (function ripple-wave merc-effect none))
|
||||
(define-extern ripple-execute (function none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
|
||||
(declare-type shadow-vu1-constants structure)
|
||||
(define-extern shadow-execute-all (function dma-buffer none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
|
||||
(define-extern process-drawable-art-error (state string process-drawable))
|
||||
(define-extern unlink-lightning-spec-by-heap (function kheap none))
|
||||
(define-extern lightning-draw-all (function none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@ At any point in time, there are 3 frames in progress:
|
||||
((on-screen int32)
|
||||
(last-screen int32)
|
||||
(frames display-frame 2)
|
||||
(bgcolor uint64)
|
||||
(pmode uint64)
|
||||
(bgcolor gs-bgcolor)
|
||||
(pmode gs-pmode)
|
||||
(clock clock 22)
|
||||
(session-clock clock :overlay-at (-> clock 0))
|
||||
(game-clock clock :overlay-at (-> clock 1))
|
||||
@@ -111,7 +111,7 @@ At any point in time, there are 3 frames in progress:
|
||||
(set-display gp-0)
|
||||
(set! (-> gp-0 frames 0) (new 'global 'display-frame))
|
||||
(set! (-> gp-0 frames 1) (new 'global 'display-frame))
|
||||
(set! (-> gp-0 pmode) (the-as uint 165))
|
||||
(set! (-> gp-0 pmode) (new 'static 'gs-pmode :en1 #x1 :crtmd #x1 :mmod #x1 :slbg #x1))
|
||||
(set! (-> gp-0 run-half-speed) #f)
|
||||
(set! (-> gp-0 vu1-enable-user-menu) (vu1-renderer-mask
|
||||
rn3
|
||||
@@ -142,7 +142,7 @@ At any point in time, there are 3 frames in progress:
|
||||
tie-water
|
||||
etie-water
|
||||
etie-scissor-water
|
||||
rn31
|
||||
sprite
|
||||
rn32
|
||||
rn33
|
||||
rn34
|
||||
@@ -178,7 +178,7 @@ At any point in time, there are 3 frames in progress:
|
||||
tie-water
|
||||
etie-water
|
||||
etie-scissor-water
|
||||
rn31
|
||||
sprite
|
||||
rn32
|
||||
rn33
|
||||
rn34
|
||||
|
||||
@@ -5,5 +5,119 @@
|
||||
;; name in dgo: video
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern *video-mode* int)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defun set-video-mode ((arg0 symbol))
|
||||
(case arg0
|
||||
(('ntsc)
|
||||
(set! (-> *setting-control* user-default screenx) 0)
|
||||
(set! (-> *setting-control* user-default screeny) 8)
|
||||
(set! (-> *video-params* display-fbp) 164)
|
||||
(set! (-> *video-params* display-sy) 224)
|
||||
(set! *video-mode* 0)
|
||||
(sound-set-fps 60)
|
||||
)
|
||||
(('pal)
|
||||
(set! (-> *setting-control* user-default screenx) 0)
|
||||
(set! (-> *setting-control* user-default screeny) 24)
|
||||
(set! (-> *video-params* display-fbp) 144)
|
||||
(set! (-> *video-params* display-sy) 256)
|
||||
(set! *video-mode* 1)
|
||||
(sound-set-fps 50)
|
||||
)
|
||||
)
|
||||
(set-time-ratios *display* (-> *display* dog-ratio))
|
||||
(set! (-> *video-params* reset-video-mode) #t)
|
||||
(set! (-> *math-camera* isometric uvec y) 0.5)
|
||||
(set! (-> *math-camera* y-clip) 416.0)
|
||||
(set! (-> *math-camera* y-pix) (* 0.5 (-> *math-camera* y-clip)))
|
||||
(set! *profile-y* 1848)
|
||||
(set! (-> *video-params* set-video-mode) #t)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun get-video-mode ()
|
||||
(-> *setting-control* user-current video-mode)
|
||||
)
|
||||
|
||||
(defun set-aspect-ratio ((arg0 symbol))
|
||||
(case arg0
|
||||
(('aspect4x3)
|
||||
(set! (-> *video-params* relative-x-scale) 1.0)
|
||||
(set! (-> *video-params* relative-x-scale-reciprical) 1.0)
|
||||
)
|
||||
(('aspect16x9)
|
||||
(set! (-> *video-params* relative-x-scale) 0.75)
|
||||
(set! (-> *video-params* relative-x-scale-reciprical) 1.3333334)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun get-aspect-ratio ()
|
||||
(-> *setting-control* user-current aspect-ratio)
|
||||
)
|
||||
|
||||
(defun set-progressive-scan ((arg0 symbol))
|
||||
(set! (-> *setting-control* user-default set-video-mode) arg0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun get-progressive-scan ()
|
||||
(-> *setting-control* user-current set-video-mode)
|
||||
)
|
||||
|
||||
(defun set-graphics-mode ()
|
||||
(let ((v1-0 *setting-control*)
|
||||
(gp-0 (the-as gs-bank #x12000000))
|
||||
(s5-0 *video-params*)
|
||||
)
|
||||
(let ((s4-0 *display*))
|
||||
(cond
|
||||
((-> v1-0 user-current set-video-mode)
|
||||
(when (nonzero? (-> s5-0 smode2))
|
||||
(reset-graph 0 0 80 0)
|
||||
(set! (-> s5-0 smode2) (the-as uint 0))
|
||||
0
|
||||
)
|
||||
(set! (-> gp-0 display1) (new 'static 'gs-display
|
||||
:magh #x1
|
||||
:dw #x4ff
|
||||
:dy (+ (-> s5-0 display-dy) 50)
|
||||
:dx (+ (* (-> s5-0 display-dx) 2) 326)
|
||||
:dh (+ (* (-> s5-0 display-sy) 2) -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (or (!= (-> s5-0 smode2) 1) (-> *video-params* set-video-mode))
|
||||
(if (= (-> *setting-control* user-current video-mode) 'ntsc)
|
||||
(reset-graph 0 1 2 0)
|
||||
(reset-graph 0 1 3 0)
|
||||
)
|
||||
(set! (-> s5-0 smode2) (the-as uint 1))
|
||||
(set! (-> s5-0 set-video-mode) #f)
|
||||
)
|
||||
(set! (-> gp-0 display1) (new 'static 'gs-display
|
||||
:magh #x3
|
||||
:dw #x9ff
|
||||
:dy (+ (-> s5-0 display-dy) 50)
|
||||
:dx (+ (* (-> s5-0 display-dx) 4) 652)
|
||||
:dh (+ (* (-> s5-0 display-sy) 2) -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 pmode) (-> s4-0 pmode))
|
||||
(set! (-> gp-0 bgcolor) (-> s4-0 bgcolor))
|
||||
)
|
||||
(set! (-> gp-0 dspfb1) (new 'static 'gs-display-fb :fbw #xa :fbp (-> s5-0 display-fbp)))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -29,7 +29,10 @@
|
||||
(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)
|
||||
(declare-type time-of-day-context structure)
|
||||
(define-extern *time-of-day* (pointer time-of-day-proc))
|
||||
(define-extern update-time-of-day (function time-of-day-context none))
|
||||
(define-extern init-time-of-day-context (function time-of-day-context symbol))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -411,8 +411,8 @@
|
||||
)
|
||||
(:methods
|
||||
(get-height (_type_ vector symbol) float)
|
||||
(ocean-method-12 () none)
|
||||
(ocean-method-13 () none)
|
||||
(draw! (_type_) none)
|
||||
(update-map (_type_) none)
|
||||
(ocean-method-14 () none)
|
||||
(ocean-method-15 () none)
|
||||
(ocean-method-16 () none)
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
(sky-work-method-11 () none)
|
||||
(sky-work-method-12 () none)
|
||||
(sky-work-method-13 () none)
|
||||
(sky-work-method-14 () none)
|
||||
(draw (_type_) none)
|
||||
(sky-work-method-15 () none)
|
||||
(sky-work-method-16 () none)
|
||||
(sky-work-method-17 () none)
|
||||
|
||||
@@ -46,6 +46,8 @@
|
||||
)
|
||||
|
||||
(define-extern kill-all-particles-in-level (function level int))
|
||||
(define-extern remap-all-particles (function none))
|
||||
(define-extern process-particles (function none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
|
||||
(define-extern unlink-part-group-by-heap (function kheap int))
|
||||
(define-extern particle-adgif-cache-flush (function none))
|
||||
(define-extern execute-part-engine (function none))
|
||||
(define-extern execute-particle-local-space-engine (function int none))
|
||||
|
||||
;; +++sp-field-id
|
||||
(defenum sp-field-id
|
||||
|
||||
@@ -728,7 +728,7 @@
|
||||
(tie-water)
|
||||
(etie-water)
|
||||
(etie-scissor-water)
|
||||
(rn31)
|
||||
(sprite)
|
||||
(rn32)
|
||||
(rn33)
|
||||
(rn34)
|
||||
|
||||
@@ -475,10 +475,10 @@
|
||||
(level-get-for-use (_type_ symbol symbol) level)
|
||||
(activate-levels! (_type_) int)
|
||||
(level-group-method-14 () none)
|
||||
(level-group-method-15 () none)
|
||||
(debug-draw-actors (_type_ symbol) none)
|
||||
(assign-draw-indices (_type_) none)
|
||||
(level-group-method-17 () none)
|
||||
(level-group-method-18 () none)
|
||||
(actors-update (_type_) none)
|
||||
(update-nav-meshes-method (_type_) none)
|
||||
(level-update (_type_) none)
|
||||
(level-get-target-inside (_type_) level)
|
||||
(init-level-system (_type_ symbol) none)
|
||||
|
||||
@@ -9,6 +9,21 @@
|
||||
(define-extern *level-type-list* type)
|
||||
(define-extern city-sound-expand-want-list (function none))
|
||||
|
||||
(defmacro start-debug (str &rest args)
|
||||
`(format 0 ,(string-append "[START] " str) ,@args)
|
||||
0)
|
||||
|
||||
(defmacro test-play ()
|
||||
"Temporary start macro"
|
||||
`(begin
|
||||
(start-debug "test-play~%")
|
||||
(define *kernel-boot-message* 'play)
|
||||
(start-debug "loading GAME.DGO~%")
|
||||
(load-package "game" global)
|
||||
(play-boot)
|
||||
)
|
||||
)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defun level-memory-mode->string ((arg0 level-memory-mode))
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
;; dgos: GAME
|
||||
|
||||
(declare-type region-prim-area structure)
|
||||
(define-extern region-execute (function none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
;; name in dgo: actor-hash-h
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern update-actor-hash (function none))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(define *actor-list* (the-as (pointer collide-shape) (malloc 'global 1024)))
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
(:methods
|
||||
(new (symbol type) _type_)
|
||||
(bigmap-method-9 () none)
|
||||
(bigmap-method-10 () none)
|
||||
(update (_type_) none)
|
||||
(draw (_type_ int int int int) int)
|
||||
(bigmap-method-12 () none)
|
||||
(bigmap-method-13 () none)
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
(define-extern activate-progress (function process symbol none))
|
||||
(define-extern *progress-work* progress-work)
|
||||
(define-extern progress-allowed? (function symbol))
|
||||
(define-extern deactivate-progress (function none))
|
||||
(define-extern hide-progress-screen (function none))
|
||||
|
||||
;; +++progress-icon-flags
|
||||
(defenum progress-icon-flags
|
||||
|
||||
@@ -132,10 +132,11 @@
|
||||
(define-extern scf-get-aspect "Defined in the kernel" (function uint))
|
||||
(define-extern scf-get-timeout (function int))
|
||||
(define-extern scf-get-inactive-timeout (function int))
|
||||
(define-extern kernel-shutdown (function none))
|
||||
(define-extern kernel-shutdown (function int none))
|
||||
(define-extern *boot-video-mode* "Defined in the kernel" int)
|
||||
(define-extern *kernel-boot-message* symbol)
|
||||
(define-extern *kernel-symbol-warnings* symbol)
|
||||
(define-extern *kernel-boot-art-group* string)
|
||||
(define-extern symbol->string (function symbol string))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
@@ -424,7 +424,7 @@
|
||||
;; this uses the self field, which seems to always just get set to the object.
|
||||
;; confirmed in Jak 1 that using self here is useless, not sure...
|
||||
`(let ((the-pp ,ppointer))
|
||||
(if the-pp (-> the-pp 0 self))
|
||||
(the process (if the-pp (-> the-pp 0 self)))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
(trail-graph-method-11 () none)
|
||||
(trail-graph-method-12 () none)
|
||||
(trail-graph-method-13 () none)
|
||||
(trail-graph-method-14 () none)
|
||||
(debug-draw (_type_) none)
|
||||
(trail-graph-method-15 () none)
|
||||
(trail-graph-method-16 () none)
|
||||
(trail-graph-method-17 () none)
|
||||
|
||||
@@ -732,6 +732,95 @@ void Debugger::read_symbol_table_jak2() {
|
||||
m_symbol_name_to_offset_map.size(), timer.getMs());
|
||||
}
|
||||
|
||||
void Debugger::read_symbol_table_jak3() {
|
||||
using namespace jak3_symbols;
|
||||
using namespace jak3;
|
||||
ASSERT(is_valid() && is_attached() && is_halted());
|
||||
u32 bytes_read = 0;
|
||||
u32 reads = 0;
|
||||
Timer timer;
|
||||
|
||||
constexpr int kS7Offset = ((GOAL_MAX_SYMBOLS / 2) * 4 + 1);
|
||||
static_assert(kS7Offset == 0x8001); // this is what we have hardcoded now
|
||||
u32 st_base = m_debug_context.s7 - kS7Offset;
|
||||
u32 empty_pair_offset =
|
||||
(m_debug_context.s7 + S7_OFF_FIX_SYM_EMPTY_PAIR /*- PAIR_OFFSET*/) - st_base;
|
||||
|
||||
constexpr u32 kSymbolMemSize = 2 * (GOAL_MAX_SYMBOLS * 4); // symbol, then strings.
|
||||
std::vector<u8> mem;
|
||||
mem.resize(kSymbolMemSize);
|
||||
|
||||
if (!xdbg::read_goal_memory(mem.data(), kSymbolMemSize, st_base, m_debug_context,
|
||||
m_memory_handle)) {
|
||||
lg::print("Read failed during read_symbol_table\n");
|
||||
return;
|
||||
}
|
||||
reads++;
|
||||
bytes_read += kSymbolMemSize;
|
||||
|
||||
m_symbol_name_to_offset_map.clear();
|
||||
m_symbol_offset_to_name_map.clear();
|
||||
m_symbol_name_to_value_map.clear();
|
||||
|
||||
// now loop through all the symbols
|
||||
for (int i = 0; i < GOAL_MAX_SYMBOLS; i++) {
|
||||
u32 offset = i * 4;
|
||||
if (offset == empty_pair_offset) {
|
||||
continue;
|
||||
}
|
||||
auto sym_val = *(u32*)(mem.data() + offset);
|
||||
auto info = *(u32*)(mem.data() + offset + kSymbolMemSize / 2);
|
||||
if (info) {
|
||||
// now get the string.
|
||||
char str_buff[128];
|
||||
if (!xdbg::read_goal_memory((u8*)str_buff, 128, info + 4, m_debug_context, m_memory_handle)) {
|
||||
lg::print("Read symbol string failed during read_symbol_table\n");
|
||||
return;
|
||||
}
|
||||
reads++;
|
||||
bytes_read += 128;
|
||||
// just in case
|
||||
str_buff[127] = '\0';
|
||||
|
||||
// GOAL sym - s7
|
||||
auto sym_offset = s32(offset + st_base) - s32(m_debug_context.s7);
|
||||
// ASSERT(sym_offset >= -SYM_TABLE_MEM_SIZE / 4);
|
||||
// ASSERT(sym_offset < SYM_TABLE_MEM_SIZE / 4);
|
||||
|
||||
std::string str(str_buff);
|
||||
if (str.length() >= 50) {
|
||||
lg::print("Invalid symbol #x{:x}!\n", sym_offset);
|
||||
continue;
|
||||
}
|
||||
|
||||
printf("got %s\n", str.c_str());
|
||||
|
||||
// update maps
|
||||
if (m_symbol_name_to_offset_map.find(str) != m_symbol_name_to_offset_map.end()) {
|
||||
if (str == "asize-of-basic-func") {
|
||||
// this is an actual bug in kscheme. The bug has no effect, but we replicate it so that
|
||||
// the symbol table layout is closer.
|
||||
|
||||
// to hide this duplicate symbol, we append "-hack-copy" to the end of it.
|
||||
str += "-hack-copy";
|
||||
} else {
|
||||
lg::print("Symbol {} (#x{:x}) appears multiple times!\n", str, sym_offset);
|
||||
continue;
|
||||
// ASSERT(false);
|
||||
}
|
||||
}
|
||||
|
||||
m_symbol_name_to_offset_map[str] = sym_offset;
|
||||
m_symbol_offset_to_name_map[sym_offset] = str;
|
||||
m_symbol_name_to_value_map[str] = sym_val;
|
||||
}
|
||||
}
|
||||
|
||||
ASSERT(m_symbol_offset_to_name_map.size() == m_symbol_name_to_offset_map.size());
|
||||
lg::print("Read symbol table ({} bytes, {} reads, {} symbols, {:.2f} ms)\n", bytes_read, reads,
|
||||
m_symbol_name_to_offset_map.size(), timer.getMs());
|
||||
}
|
||||
|
||||
/*!
|
||||
* Read the GOAL Symbol table from an attached and halted target.
|
||||
*/
|
||||
@@ -743,6 +832,9 @@ void Debugger::read_symbol_table() {
|
||||
case GameVersion::Jak2:
|
||||
read_symbol_table_jak2();
|
||||
break;
|
||||
case GameVersion::Jak3:
|
||||
read_symbol_table_jak3();
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
}
|
||||
|
||||
@@ -91,6 +91,7 @@ class Debugger {
|
||||
void read_symbol_table();
|
||||
void read_symbol_table_jak1();
|
||||
void read_symbol_table_jak2();
|
||||
void read_symbol_table_jak3();
|
||||
u32 get_symbol_address(const std::string& sym_name);
|
||||
bool get_symbol_value(const std::string& sym_name, u32* output);
|
||||
const char* get_symbol_name_from_offset(s32 ofs) const;
|
||||
|
||||
+17
-1
@@ -82,7 +82,7 @@
|
||||
;; this uses the self field, which seems to always just get set to the object.
|
||||
;; confirmed in Jak 1 that using self here is useless, not sure...
|
||||
`(let ((the-pp ,ppointer))
|
||||
(if the-pp (-> the-pp 0 self))
|
||||
(the process (if the-pp (-> the-pp 0 self)))
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1596,5 +1596,21 @@
|
||||
`(lookup-texture-by-id ,(string->symbol-format "{}-{}" name tpage))
|
||||
)
|
||||
|
||||
(defmacro vitof12.xyzw (dst src)
|
||||
"convert from a 20.12 integer. This does the multiply while the number is still
|
||||
a float. This will have issues for very large floats, but it seems like this
|
||||
is how PCSX2 does it as well, so maybe it's right?
|
||||
NOTE: this is the only version of the instruction used in Jak 1, so we
|
||||
don't need to worry about masks."
|
||||
|
||||
`(begin
|
||||
(rlet ((temp :class vf))
|
||||
(.itof.vf ,dst ,src)
|
||||
(set! temp 0.000244140625)
|
||||
(.mul.x.vf ,dst ,dst temp)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(import "goal_src/jak3/engine/data/tpages.gc")
|
||||
(import "goal_src/jak3/engine/data/textures.gc")
|
||||
+2
-2
@@ -173,9 +173,9 @@ storing a record of the primitives involved."
|
||||
(:methods
|
||||
(new (symbol type) _type_)
|
||||
(touching-list-method-9 () none)
|
||||
(touching-list-method-10 () none)
|
||||
(free-nodes (_type_) none)
|
||||
(touching-list-method-11 () none)
|
||||
(touching-list-method-12 () none)
|
||||
(send-events-for-touching-shapes (_type_) none)
|
||||
(touching-list-method-13 () none)
|
||||
)
|
||||
)
|
||||
|
||||
+201
@@ -0,0 +1,201 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for function drawable-sphere-box-intersect?
|
||||
;; INFO: Used lq/sq
|
||||
(defun drawable-sphere-box-intersect? ((arg0 drawable) (arg1 bounding-box4w))
|
||||
(local-vars (v1-1 uint128) (v1-2 uint128) (v1-3 uint128) (a0-1 uint128) (a1-2 uint128) (a2-0 uint128))
|
||||
(rlet ((vf1 :class vf)
|
||||
(vf2 :class vf)
|
||||
(vf3 :class vf)
|
||||
(vf4 :class vf)
|
||||
)
|
||||
(nop!)
|
||||
(nop!)
|
||||
(.lvf vf1 (&-> arg0 bsphere quad))
|
||||
(.add.w.vf vf2 vf1 vf1 :mask #b111)
|
||||
(let ((v1-0 (-> arg1 min quad)))
|
||||
(.sub.w.vf vf1 vf1 vf1 :mask #b111)
|
||||
(let ((a1-1 (-> arg1 max quad)))
|
||||
(.ftoi.vf vf4 vf2)
|
||||
(nop!)
|
||||
(.ftoi.vf vf3 vf1)
|
||||
(nop!)
|
||||
(.mov a0-1 vf4)
|
||||
(nop!)
|
||||
(.mov a2-0 vf3)
|
||||
(nop!)
|
||||
(.pcgtw a1-2 a2-0 a1-1)
|
||||
)
|
||||
(nop!)
|
||||
(.pcgtw v1-1 v1-0 a0-1)
|
||||
)
|
||||
(nop!)
|
||||
(.por v1-2 a1-2 v1-1)
|
||||
(nop!)
|
||||
(.ppach v1-3 (the-as uint128 0) v1-2)
|
||||
(nop!)
|
||||
(let ((v1-4 (shl (the-as int v1-3) 16)))
|
||||
(nop!)
|
||||
(zero? v1-4)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function instance-sphere-box-intersect?
|
||||
;; INFO: Used lq/sq
|
||||
(defun instance-sphere-box-intersect? ((arg0 drawable) (arg1 instance-tie) (arg2 bounding-box4w))
|
||||
(local-vars
|
||||
(v1-3 uint128)
|
||||
(v1-4 uint128)
|
||||
(v1-5 uint128)
|
||||
(a0-2 uint128)
|
||||
(a1-2 uint128)
|
||||
(a2-1 uint128)
|
||||
(a3-1 uint128)
|
||||
(a3-3 uint128)
|
||||
(a3-4 uint128)
|
||||
(t0-1 uint128)
|
||||
(t0-2 uint128)
|
||||
(t1-0 uint128)
|
||||
(t2-1 uint128)
|
||||
(t2-2 uint128)
|
||||
)
|
||||
(rlet ((acc :class vf)
|
||||
(vf0 :class vf)
|
||||
(vf1 :class vf)
|
||||
(vf10 :class vf)
|
||||
(vf2 :class vf)
|
||||
(vf3 :class vf)
|
||||
(vf4 :class vf)
|
||||
(vf5 :class vf)
|
||||
(vf6 :class vf)
|
||||
(vf7 :class vf)
|
||||
(vf8 :class vf)
|
||||
(vf9 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(nop!)
|
||||
(let ((v1-0 (-> arg1 max-scale)))
|
||||
(nop!)
|
||||
(let ((a3-0 (the-as uint128 (-> arg1 origin long 3))))
|
||||
(nop!)
|
||||
(let ((t2-0 (the-as uint128 (-> arg1 origin long 0))))
|
||||
(.pextlh a3-1 a3-0 0)
|
||||
(let ((t0-0 (the-as uint128 (-> arg1 origin long 1))))
|
||||
(.pw.sra t1-0 a3-1 10)
|
||||
(let ((a3-2 (the-as uint128 (-> arg1 origin long 2))))
|
||||
(.pextlh t2-1 t2-0 0)
|
||||
(nop!)
|
||||
(.pw.sra t2-2 t2-1 16)
|
||||
(nop!)
|
||||
(.pextlh t0-1 t0-0 0)
|
||||
(.mov vf8 t1-0)
|
||||
(.pw.sra t0-2 t0-1 16)
|
||||
(.mov vf5 t2-2)
|
||||
(.pextlh a3-3 a3-2 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(.mov vf6 t0-2)
|
||||
(.pw.sra a3-4 a3-3 16)
|
||||
(.lvf vf9 (&-> arg1 bsphere quad))
|
||||
(nop!)
|
||||
(.mov vf7 a3-4)
|
||||
(nop!)
|
||||
(.mov vf10 v1-0)
|
||||
)
|
||||
(.itof.vf vf8 vf8)
|
||||
(nop!)
|
||||
(vitof12.xyzw vf5 vf5)
|
||||
(nop!)
|
||||
(vitof12.xyzw vf6 vf6)
|
||||
(nop!)
|
||||
(vitof12.xyzw vf7 vf7)
|
||||
(nop!)
|
||||
(.add.vf vf8 vf8 vf9 :mask #b111)
|
||||
(nop!)
|
||||
(nop!)
|
||||
(.lvf vf9 (&-> arg0 bsphere quad))
|
||||
(vitof12.xyzw vf10 vf10)
|
||||
(nop!)
|
||||
(.mul.w.vf vf10 vf10 vf9 :mask #b1)
|
||||
(nop!)
|
||||
(.mul.x.vf acc vf5 vf9)
|
||||
(nop!)
|
||||
(.add.mul.y.vf acc vf6 vf9 acc)
|
||||
(let ((v1-2 (-> arg2 min quad)))
|
||||
(.add.mul.z.vf acc vf7 vf9 acc)
|
||||
(let ((a1-1 (-> arg2 max quad)))
|
||||
(.add.mul.w.vf vf1 vf8 vf0 acc)
|
||||
(nop!)
|
||||
(.add.x.vf vf2 vf1 vf10 :mask #b111)
|
||||
(nop!)
|
||||
(.sub.x.vf vf1 vf1 vf10 :mask #b111)
|
||||
(nop!)
|
||||
(.ftoi.vf vf4 vf2)
|
||||
(nop!)
|
||||
(.ftoi.vf vf3 vf1)
|
||||
(nop!)
|
||||
(.mov a0-2 vf4)
|
||||
(nop!)
|
||||
(.mov a2-1 vf3)
|
||||
(nop!)
|
||||
(.pcgtw a1-2 a2-1 a1-1)
|
||||
)
|
||||
(nop!)
|
||||
(.pcgtw v1-3 v1-2 a0-2)
|
||||
)
|
||||
(nop!)
|
||||
(.por v1-4 a1-2 v1-3)
|
||||
(nop!)
|
||||
(.ppach v1-5 (the-as uint128 0) v1-4)
|
||||
(nop!)
|
||||
(let ((v1-6 (shl (the-as int v1-5) 16)))
|
||||
(nop!)
|
||||
(zero? v1-6)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function instance-tfragment-add-debug-sphere
|
||||
;; INFO: Used lq/sq
|
||||
(defun instance-tfragment-add-debug-sphere ((arg0 drawable) (arg1 instance-tie))
|
||||
(local-vars (v1-1 uint128) (v1-2 uint128) (a3-0 float))
|
||||
(rlet ((vf0 :class vf)
|
||||
(vf10 :class vf)
|
||||
(vf11 :class vf)
|
||||
(vf12 :class vf)
|
||||
(vf9 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(nop!)
|
||||
(let ((v1-0 (the-as uint128 (-> arg1 origin long 3))))
|
||||
(.pextlh v1-1 v1-0 0)
|
||||
)
|
||||
(.lvf vf9 (&-> arg0 bsphere quad))
|
||||
(.pw.sra v1-2 v1-1 10)
|
||||
(.lvf vf10 (&-> arg1 bsphere quad))
|
||||
(nop!)
|
||||
(.mov vf12 v1-2)
|
||||
(.itof.vf vf12 vf12)
|
||||
(nop!)
|
||||
(.add.vf vf10 vf10 vf12 :mask #b111)
|
||||
(nop!)
|
||||
(.add.vf vf9 vf9 vf10 :mask #b111)
|
||||
(nop!)
|
||||
(.add.w.vf vf11 vf0 vf9 :mask #b1)
|
||||
(nop!)
|
||||
(.mov a3-0 vf11)
|
||||
(nop!)
|
||||
(let ((a2-0 (new-stack-vector0)))
|
||||
(.svf (&-> a2-0 quad) vf9)
|
||||
(add-debug-sphere #t (bucket-id bucket583) a2-0 a3-0 (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 0 of type drawable-group
|
||||
(defmethod new drawable-group ((allocation symbol) (type-to-make type) (arg0 int))
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* arg0 4))))))
|
||||
(set! (-> v0-0 length) arg0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 2 of type drawable-group
|
||||
(defmethod print ((this drawable-group))
|
||||
(format #t "#<~A @ #x~X [~D]" (-> this type) this (-> this length))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(format #t " ~A" (-> this data s5-0))
|
||||
)
|
||||
(format #t ">")
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 4 of type drawable-group
|
||||
(defmethod length ((this drawable-group))
|
||||
(-> this length)
|
||||
)
|
||||
|
||||
;; definition for method 5 of type drawable-group
|
||||
;; WARN: Return type mismatch uint vs int.
|
||||
(defmethod asize-of ((this drawable-group))
|
||||
(the-as int (+ (-> drawable-group size) (* (-> this length) 4)))
|
||||
)
|
||||
|
||||
;; definition for method 8 of type drawable-group
|
||||
(defmethod mem-usage ((this drawable-group) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 1 (-> usage length)))
|
||||
(set! (-> usage data 0 name) "drawable-group")
|
||||
(+! (-> usage data 0 count) 1)
|
||||
(let ((v1-6 (asize-of this)))
|
||||
(+! (-> usage data 0 used) v1-6)
|
||||
(+! (-> usage data 0 total) (logand -16 (+ v1-6 15)))
|
||||
)
|
||||
(dotimes (s3-0 (-> this length))
|
||||
(mem-usage (-> this data s3-0) usage flags)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 9 of type drawable-group
|
||||
(defmethod login ((this drawable-group))
|
||||
"Initialize the object after it is loaded."
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(login (-> this data s5-0))
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 10 of type drawable-group
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod draw ((this drawable-group))
|
||||
"Draw the drawable, and typically its children.
|
||||
This usually means adding stuff to a list to be drawn later, rather than expensive drawing here."
|
||||
(when (vis-cull (-> this id))
|
||||
(when (sphere-cull (-> this bsphere))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(draw (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type drawable-group
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod collect-stats ((this drawable-group))
|
||||
"Collect triangle/perf statistics for rendering.
|
||||
This is only called when viewing stats.
|
||||
The vis-bits and culling registers are loaded during this time."
|
||||
(when (vis-cull (-> this id))
|
||||
(when (sphere-cull (-> this bsphere))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(collect-stats (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 14 of type drawable-group
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod debug-draw ((this drawable-group))
|
||||
"Debug-draw a drawable and its children. Typically uses the debug-draw functions."
|
||||
(when (vis-cull (-> this id))
|
||||
(when (sphere-cull (-> this bsphere))
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(debug-draw (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 15 of type drawable-group
|
||||
(defmethod unpack-vis ((this drawable-group) (arg0 (pointer int8)) (arg1 (pointer int8)))
|
||||
(dotimes (s4-0 (-> this length))
|
||||
(set! arg1 (unpack-vis (-> this data s4-0) arg0 arg1))
|
||||
)
|
||||
arg1
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+2
-2
@@ -15,8 +15,8 @@ control over memory layout for use with DMA."
|
||||
(:methods
|
||||
(login (_type_) _type_)
|
||||
(draw (_type_) none)
|
||||
(drawable-method-11 () none)
|
||||
(drawable-method-12 () none)
|
||||
(drawable-method-11 (_type_) none)
|
||||
(drawable-method-12 (_type_) none)
|
||||
(collect-stats (_type_) none)
|
||||
(debug-draw (_type_) none)
|
||||
(unpack-vis (_type_ (pointer int8) (pointer int8)) (pointer int8))
|
||||
|
||||
+44
@@ -0,0 +1,44 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 4 of type drawable-inline-array
|
||||
(defmethod length ((this drawable-inline-array))
|
||||
(-> this length)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type drawable-inline-array
|
||||
(defmethod login ((this drawable-inline-array))
|
||||
"Initialize the object after it is loaded."
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 10 of type drawable-inline-array
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod draw ((this drawable-inline-array))
|
||||
"Draw the drawable, and typically its children.
|
||||
This usually means adding stuff to a list to be drawn later, rather than expensive drawing here."
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type drawable-inline-array
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod collect-stats ((this drawable-inline-array))
|
||||
"Collect triangle/perf statistics for rendering.
|
||||
This is only called when viewing stats.
|
||||
The vis-bits and culling registers are loaded during this time."
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 14 of type drawable-inline-array
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod debug-draw ((this drawable-inline-array))
|
||||
"Debug-draw a drawable and its children. Typically uses the debug-draw functions."
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 10 of type drawable-tree-array
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod draw ((this drawable-tree-array))
|
||||
"Draw the drawable, and typically its children.
|
||||
This usually means adding stuff to a list to be drawn later, rather than expensive drawing here."
|
||||
(case (-> *level* draw-level *draw-index* display?)
|
||||
(('special #f)
|
||||
)
|
||||
(else
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(draw (-> this data s5-0))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type drawable-tree-array
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod collect-stats ((this drawable-tree-array))
|
||||
"Collect triangle/perf statistics for rendering.
|
||||
This is only called when viewing stats.
|
||||
The vis-bits and culling registers are loaded during this time."
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(collect-stats (-> this data s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 14 of type drawable-tree-array
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod debug-draw ((this drawable-tree-array))
|
||||
"Debug-draw a drawable and its children. Typically uses the debug-draw functions."
|
||||
(dotimes (s5-0 (-> this length))
|
||||
(debug-draw (-> this data s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 15 of type drawable-tree
|
||||
(defmethod unpack-vis ((this drawable-tree) (arg0 (pointer int8)) (arg1 (pointer int8)))
|
||||
(local-vars (t5-1 uint))
|
||||
(let* ((v1-0 (the-as drawable-inline-array-node (-> this data 0)))
|
||||
(a3-1 (/ (-> v1-0 data 0 id) 8))
|
||||
(t0-0 (-> v1-0 length))
|
||||
(v1-1 (&+ arg0 a3-1))
|
||||
(a3-3 (/ (+ t0-0 7) 8))
|
||||
)
|
||||
(dotimes (t0-1 a3-3)
|
||||
(let ((t1-0 (-> arg1 0)))
|
||||
(set! arg1 (&-> arg1 1))
|
||||
(set! (-> v1-1 0) t1-0)
|
||||
)
|
||||
(set! v1-1 (&-> v1-1 1))
|
||||
)
|
||||
)
|
||||
(let ((v1-5 (+ (-> this length) -1)))
|
||||
(when (nonzero? v1-5)
|
||||
(dotimes (a3-5 v1-5)
|
||||
(let* ((t0-4 (-> this data a3-5))
|
||||
(t2-0 (the-as drawable-inline-array-node (-> this data (+ a3-5 1))))
|
||||
(t1-5 (/ (-> (the-as drawable-inline-array-node t0-4) data 0 id) 8))
|
||||
(t2-2 (/ (-> t2-0 data 0 id) 8))
|
||||
(t0-5 (-> (the-as drawable-inline-array-node t0-4) length))
|
||||
(t1-6 (&+ arg0 t1-5))
|
||||
(t2-3 (the-as object (&+ arg0 t2-2)))
|
||||
)
|
||||
(loop
|
||||
(let ((t3-0 (-> t1-6 0)))
|
||||
(set! t1-6 (&-> t1-6 1))
|
||||
(let ((t4-0 128))
|
||||
(label cfg-7)
|
||||
(b! (not (logtest? t3-0 t4-0)) cfg-9 :delay (set! t5-1 (the-as uint (-> arg1 0))))
|
||||
(set! arg1 (&-> arg1 1))
|
||||
(set! (-> (the-as (pointer int8) t2-3) 0) (the-as int t5-1))
|
||||
(label cfg-9)
|
||||
(+! t0-5 -1)
|
||||
(b! (zero? t0-5) cfg-12 :delay (shift-arith-right-32 t4-0 t4-0 1))
|
||||
(b! (nonzero? (the-as uint t4-0)) cfg-7 :delay (set! t2-3 (&-> (the-as (pointer int8) t2-3) 1)))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-12)
|
||||
(nop!)
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
arg1
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+2609
File diff suppressed because it is too large
Load Diff
+4
-4
@@ -379,7 +379,7 @@
|
||||
;; definition of type screen-filter
|
||||
(deftype screen-filter (basic)
|
||||
((draw? symbol)
|
||||
(bucket int32)
|
||||
(bucket bucket-id)
|
||||
(depth int32)
|
||||
(ztest uint64)
|
||||
(color vector :inline)
|
||||
@@ -388,11 +388,11 @@
|
||||
(extra vector :inline)
|
||||
(speed float :overlay-at (-> extra data 0))
|
||||
(current-interp float :overlay-at (-> extra data 1))
|
||||
(lock-vsync? basic)
|
||||
(lock-vsync? symbol)
|
||||
)
|
||||
(:methods
|
||||
(draw (_type_) none)
|
||||
(setup (_type_ vector vector float bucket-id) none)
|
||||
(setup (_type_ vector vector float bucket-id int int symbol) none)
|
||||
(disable (_type_) none)
|
||||
)
|
||||
)
|
||||
@@ -434,7 +434,7 @@
|
||||
(camera-to-bbox-dist float)
|
||||
)
|
||||
(:methods
|
||||
(col-rend-method-9 () none)
|
||||
(draw (_type_) none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+2021
File diff suppressed because it is too large
Load Diff
+119
@@ -0,0 +1,119 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 9 of type prototype-inline-array-shrub
|
||||
(defmethod login ((this prototype-inline-array-shrub))
|
||||
"Initialize the object after it is loaded."
|
||||
(let ((s5-0 (-> *level* level *level-index* bsp)))
|
||||
(dotimes (s4-0 (-> this length))
|
||||
(let ((s3-0 (-> this data s4-0)))
|
||||
(when (and *debug-segment* (-> *screen-shot-work* highres-enable))
|
||||
(dotimes (v1-9 4)
|
||||
(+! (-> s3-0 dists data v1-9) 40960000.0)
|
||||
(set! (-> s3-0 rdists data v1-9) (/ 1.0 (-> s3-0 dists data v1-9)))
|
||||
)
|
||||
)
|
||||
(set! *texture-masks* (-> s5-0 shrub-masks data (-> s3-0 texture-masks-index)))
|
||||
(dotimes (s2-0 4)
|
||||
(let ((a0-15 (-> s3-0 geometry s2-0)))
|
||||
(if (nonzero? a0-15)
|
||||
(login a0-15)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 8 of type prototype-array-tie
|
||||
(defmethod mem-usage ((this prototype-array-tie) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 1 (-> usage length)))
|
||||
(set! (-> usage data 0 name) "drawable-group")
|
||||
(+! (-> usage data 0 count) 1)
|
||||
(let ((v1-6 (asize-of this)))
|
||||
(+! (-> usage data 0 used) v1-6)
|
||||
(+! (-> usage data 0 total) (logand -16 (+ v1-6 15)))
|
||||
)
|
||||
(dotimes (s3-0 (-> this length))
|
||||
(mem-usage (-> this array-data s3-0) usage flags)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 8 of type prototype-bucket-tie
|
||||
(defmethod mem-usage ((this prototype-bucket-tie) (usage memory-usage-block) (flags int))
|
||||
(dotimes (s3-0 4)
|
||||
(let ((a0-1 (-> this tie-geom s3-0)))
|
||||
(if (nonzero? a0-1)
|
||||
(mem-usage a0-1 usage (logior flags 1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> usage length) (max 85 (-> usage length)))
|
||||
(set! (-> usage data 84 name) "string")
|
||||
(+! (-> usage data 84 count) 1)
|
||||
(let ((v1-13 (asize-of (-> this name))))
|
||||
(+! (-> usage data 84 used) v1-13)
|
||||
(+! (-> usage data 84 total) (logand -16 (+ v1-13 15)))
|
||||
)
|
||||
(when (nonzero? (-> this tie-colors))
|
||||
(set! (-> usage length) (max 17 (-> usage length)))
|
||||
(set! (-> usage data 16 name) "tie-pal")
|
||||
(+! (-> usage data 16 count) 1)
|
||||
(let ((v1-25 (asize-of (-> this tie-colors))))
|
||||
(+! (-> usage data 16 used) v1-25)
|
||||
(+! (-> usage data 16 total) (logand -16 (+ v1-25 15)))
|
||||
)
|
||||
)
|
||||
(if (nonzero? (-> this collide-hash-fragment-array))
|
||||
(mem-usage (-> this collide-hash-fragment-array) usage (logior flags 1))
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 8 of type prototype-inline-array-shrub
|
||||
(defmethod mem-usage ((this prototype-inline-array-shrub) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 1 (-> usage length)))
|
||||
(set! (-> usage data 0 name) "drawable-group")
|
||||
(+! (-> usage data 0 count) 1)
|
||||
(let ((v1-6 (asize-of this)))
|
||||
(+! (-> usage data 0 used) v1-6)
|
||||
(+! (-> usage data 0 total) (logand -16 (+ v1-6 15)))
|
||||
)
|
||||
(dotimes (s3-0 (-> this length))
|
||||
(mem-usage (-> this data s3-0) usage flags)
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 8 of type prototype-bucket-shrub
|
||||
(defmethod mem-usage ((this prototype-bucket-shrub) (usage memory-usage-block) (flags int))
|
||||
(set! (-> usage length) (max 25 (-> usage length)))
|
||||
(set! (-> usage data 24 name) "prototype-bucket-shrub")
|
||||
(+! (-> usage data 24 count) 1)
|
||||
(let ((v1-5 112))
|
||||
(+! (-> usage data 24 used) v1-5)
|
||||
(+! (-> usage data 24 total) (logand -16 (+ v1-5 15)))
|
||||
)
|
||||
(dotimes (s3-0 4)
|
||||
(let ((a0-5 (-> this geometry s3-0)))
|
||||
(if (nonzero? a0-5)
|
||||
(mem-usage a0-5 usage (logior flags 1))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> usage length) (max 85 (-> usage length)))
|
||||
(set! (-> usage data 84 name) "string")
|
||||
(+! (-> usage data 84 count) 1)
|
||||
(let ((v1-22 (asize-of (-> this name))))
|
||||
(+! (-> usage data 84 used) v1-22)
|
||||
(+! (-> usage data 84 total) (logand -16 (+ v1-22 15)))
|
||||
)
|
||||
this
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@
|
||||
(blit-displays-work-method-16 () none)
|
||||
(blit-displays-work-method-17 (_type_ vector int float symbol) none)
|
||||
(blit-displays-work-method-18 () none)
|
||||
(blit-displays-work-method-19 () none)
|
||||
(blit-displays-work-method-19 (_type_) none)
|
||||
(blit-displays-work-method-20 () none)
|
||||
(get-menu-mode (_type_) symbol)
|
||||
(get-screen-copied (_type_) symbol)
|
||||
|
||||
+3
-2
@@ -90,7 +90,7 @@
|
||||
(format #t "[~8x] ~A~%" this 'light-sphere)
|
||||
(format #t "~1Tname: ~A~%" (-> this name))
|
||||
(format #t "~1Tbsphere: ~`vector`P~%" (-> this bsphere))
|
||||
(format #t "~1Tdirection: ~`vector`P~%" (-> this direction))
|
||||
(format #t "~1Tdirection: ~`vector`P~%" (&-> this shadow))
|
||||
(format #t "~1Tcolor: ~`vector`P~%" (-> this color))
|
||||
(format #t "~1Tdecay-start: ~f~%" (-> this decay-start))
|
||||
(format #t "~1Tambient-point-ratio: ~f~%" (-> this ambient-point-ratio))
|
||||
@@ -98,7 +98,7 @@
|
||||
(format #t "~1Tbytes[4] @ #x~X~%" (&-> this color w))
|
||||
(format #t "~1Tmask: ~D~%" (-> this mask))
|
||||
(format #t "~1Tpalette-index: ~D~%" (-> this palette-index))
|
||||
(format #t "~1Tshadow: #x~X~%" (-> this direction x))
|
||||
(format #t "~1Tshadow: #x~X~%" (-> this shadow))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
@@ -108,6 +108,7 @@
|
||||
((index uint16)
|
||||
(count uint16)
|
||||
)
|
||||
:pack-me
|
||||
)
|
||||
|
||||
;; definition for method 3 of type light-hash-bucket
|
||||
|
||||
+5
-5
@@ -57,8 +57,8 @@
|
||||
((on-screen int32)
|
||||
(last-screen int32)
|
||||
(frames display-frame 2)
|
||||
(bgcolor uint64)
|
||||
(pmode uint64)
|
||||
(bgcolor gs-bgcolor)
|
||||
(pmode gs-pmode)
|
||||
(clock clock 22)
|
||||
(session-clock clock :overlay-at (-> clock 0))
|
||||
(game-clock clock :overlay-at (-> clock 1))
|
||||
@@ -154,7 +154,7 @@
|
||||
(set-display gp-0)
|
||||
(set! (-> gp-0 frames 0) (new 'global 'display-frame))
|
||||
(set! (-> gp-0 frames 1) (new 'global 'display-frame))
|
||||
(set! (-> gp-0 pmode) (the-as uint 165))
|
||||
(set! (-> gp-0 pmode) (new 'static 'gs-pmode :en1 #x1 :crtmd #x1 :mmod #x1 :slbg #x1))
|
||||
(set! (-> gp-0 run-half-speed) #f)
|
||||
(set! (-> gp-0 vu1-enable-user-menu) (vu1-renderer-mask
|
||||
rn3
|
||||
@@ -185,7 +185,7 @@
|
||||
tie-water
|
||||
etie-water
|
||||
etie-scissor-water
|
||||
rn31
|
||||
sprite
|
||||
rn32
|
||||
rn33
|
||||
rn34
|
||||
@@ -221,7 +221,7 @@
|
||||
tie-water
|
||||
etie-water
|
||||
etie-scissor-water
|
||||
rn31
|
||||
sprite
|
||||
rn32
|
||||
rn33
|
||||
rn34
|
||||
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for function set-video-mode
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun set-video-mode ((arg0 symbol))
|
||||
(case arg0
|
||||
(('ntsc)
|
||||
(set! (-> *setting-control* user-default screenx) 0)
|
||||
(set! (-> *setting-control* user-default screeny) 8)
|
||||
(set! (-> *video-params* display-fbp) 164)
|
||||
(set! (-> *video-params* display-sy) 224)
|
||||
(set! *video-mode* 0)
|
||||
(sound-set-fps 60)
|
||||
)
|
||||
(('pal)
|
||||
(set! (-> *setting-control* user-default screenx) 0)
|
||||
(set! (-> *setting-control* user-default screeny) 24)
|
||||
(set! (-> *video-params* display-fbp) 144)
|
||||
(set! (-> *video-params* display-sy) 256)
|
||||
(set! *video-mode* 1)
|
||||
(sound-set-fps 50)
|
||||
)
|
||||
)
|
||||
(set-time-ratios *display* (-> *display* dog-ratio))
|
||||
(set! (-> *video-params* reset-video-mode) #t)
|
||||
(set! (-> *math-camera* isometric uvec y) 0.5)
|
||||
(set! (-> *math-camera* y-clip) 416.0)
|
||||
(set! (-> *math-camera* y-pix) (* 0.5 (-> *math-camera* y-clip)))
|
||||
(set! *profile-y* 1848)
|
||||
(set! (-> *video-params* set-video-mode) #t)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function get-video-mode
|
||||
(defun get-video-mode ()
|
||||
(-> *setting-control* user-current video-mode)
|
||||
)
|
||||
|
||||
;; definition for function set-aspect-ratio
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun set-aspect-ratio ((arg0 symbol))
|
||||
(case arg0
|
||||
(('aspect4x3)
|
||||
(set! (-> *video-params* relative-x-scale) 1.0)
|
||||
(set! (-> *video-params* relative-x-scale-reciprical) 1.0)
|
||||
)
|
||||
(('aspect16x9)
|
||||
(set! (-> *video-params* relative-x-scale) 0.75)
|
||||
(set! (-> *video-params* relative-x-scale-reciprical) 1.3333334)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function get-aspect-ratio
|
||||
(defun get-aspect-ratio ()
|
||||
(-> *setting-control* user-current aspect-ratio)
|
||||
)
|
||||
|
||||
;; definition for function set-progressive-scan
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun set-progressive-scan ((arg0 symbol))
|
||||
(set! (-> *setting-control* user-default set-video-mode) arg0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function get-progressive-scan
|
||||
(defun get-progressive-scan ()
|
||||
(-> *setting-control* user-current set-video-mode)
|
||||
)
|
||||
|
||||
;; definition for function set-graphics-mode
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun set-graphics-mode ()
|
||||
(let ((v1-0 *setting-control*)
|
||||
(gp-0 (the-as gs-bank #x12000000))
|
||||
(s5-0 *video-params*)
|
||||
)
|
||||
(let ((s4-0 *display*))
|
||||
(cond
|
||||
((-> v1-0 user-current set-video-mode)
|
||||
(when (nonzero? (-> s5-0 smode2))
|
||||
(reset-graph 0 0 80 0)
|
||||
(set! (-> s5-0 smode2) (the-as uint 0))
|
||||
0
|
||||
)
|
||||
(set! (-> gp-0 display1) (new 'static 'gs-display
|
||||
:magh #x1
|
||||
:dw #x4ff
|
||||
:dy (+ (-> s5-0 display-dy) 50)
|
||||
:dx (+ (* (-> s5-0 display-dx) 2) 326)
|
||||
:dh (+ (* (-> s5-0 display-sy) 2) -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(when (or (!= (-> s5-0 smode2) 1) (-> *video-params* set-video-mode))
|
||||
(if (= (-> *setting-control* user-current video-mode) 'ntsc)
|
||||
(reset-graph 0 1 2 0)
|
||||
(reset-graph 0 1 3 0)
|
||||
)
|
||||
(set! (-> s5-0 smode2) (the-as uint 1))
|
||||
(set! (-> s5-0 set-video-mode) #f)
|
||||
)
|
||||
(set! (-> gp-0 display1) (new 'static 'gs-display
|
||||
:magh #x3
|
||||
:dw #x9ff
|
||||
:dy (+ (-> s5-0 display-dy) 50)
|
||||
:dx (+ (* (-> s5-0 display-dx) 4) 652)
|
||||
:dh (+ (* (-> s5-0 display-sy) 2) -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 pmode) (-> s4-0 pmode))
|
||||
(set! (-> gp-0 bgcolor) (-> s4-0 bgcolor))
|
||||
)
|
||||
(set! (-> gp-0 dspfb1) (new 'static 'gs-display-fb :fbw #xa :fbp (-> s5-0 display-fbp)))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
+2
-2
@@ -896,8 +896,8 @@
|
||||
)
|
||||
(:methods
|
||||
(get-height (_type_ vector symbol) float)
|
||||
(ocean-method-12 () none)
|
||||
(ocean-method-13 () none)
|
||||
(draw! (_type_) none)
|
||||
(update-map (_type_) none)
|
||||
(ocean-method-14 () none)
|
||||
(ocean-method-15 () none)
|
||||
(ocean-method-16 () none)
|
||||
|
||||
+1
-5
@@ -411,7 +411,7 @@
|
||||
(sky-work-method-11 () none)
|
||||
(sky-work-method-12 () none)
|
||||
(sky-work-method-13 () none)
|
||||
(sky-work-method-14 () none)
|
||||
(draw (_type_) none)
|
||||
(sky-work-method-15 () none)
|
||||
(sky-work-method-16 () none)
|
||||
(sky-work-method-17 () none)
|
||||
@@ -501,7 +501,3 @@
|
||||
|
||||
;; failed to figure out what this is:
|
||||
0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+3
-3
@@ -667,10 +667,10 @@
|
||||
(level-get-for-use (_type_ symbol symbol) level)
|
||||
(activate-levels! (_type_) int)
|
||||
(level-group-method-14 () none)
|
||||
(level-group-method-15 () none)
|
||||
(debug-draw-actors (_type_ symbol) none)
|
||||
(assign-draw-indices (_type_) none)
|
||||
(level-group-method-17 () none)
|
||||
(level-group-method-18 () none)
|
||||
(actors-update (_type_) none)
|
||||
(update-nav-meshes-method (_type_) none)
|
||||
(level-update (_type_) none)
|
||||
(level-get-target-inside (_type_) level)
|
||||
(init-level-system (_type_ symbol) none)
|
||||
|
||||
+1
-1
@@ -104,7 +104,7 @@
|
||||
(:methods
|
||||
(new (symbol type) _type_)
|
||||
(bigmap-method-9 () none)
|
||||
(bigmap-method-10 () none)
|
||||
(update (_type_) none)
|
||||
(draw (_type_ int int int int) int)
|
||||
(bigmap-method-12 () none)
|
||||
(bigmap-method-13 () none)
|
||||
|
||||
+1
-5
@@ -289,7 +289,7 @@
|
||||
(trail-graph-method-11 () none)
|
||||
(trail-graph-method-12 () none)
|
||||
(trail-graph-method-13 () none)
|
||||
(trail-graph-method-14 () none)
|
||||
(debug-draw (_type_) none)
|
||||
(trail-graph-method-15 () none)
|
||||
(trail-graph-method-16 () none)
|
||||
(trail-graph-method-17 () none)
|
||||
@@ -356,7 +356,3 @@
|
||||
|
||||
;; definition for symbol *trail-graph*, type trail-graph
|
||||
(define *trail-graph* (the-as trail-graph #f))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -122,7 +122,16 @@
|
||||
"(method 29 level)",
|
||||
"level-update-after-load",
|
||||
"(method 9 level)",
|
||||
"(method 11 level)"
|
||||
"(method 11 level)",
|
||||
// drawable
|
||||
"calc-shadow-masks",
|
||||
"calc-realtime-lights",
|
||||
"real-main-draw-hook",
|
||||
"display-sync",
|
||||
"dma-add-process-drawable",
|
||||
"vis-cull",
|
||||
"vis-cull-debug",
|
||||
"foreground-engine-execute"
|
||||
],
|
||||
|
||||
"skip_compile_states": {}
|
||||
|
||||
Reference in New Issue
Block a user