decomp drawable, main (#3434)

This commit is contained in:
water111
2024-03-24 12:27:04 -04:00
committed by GitHub
parent ffe01a352d
commit 9b4b54978a
80 changed files with 12118 additions and 200 deletions
+16 -5
View File
@@ -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
View File
@@ -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)"]
]
}
+5 -1
View File
@@ -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)"]
]
}
+20 -7
View File
@@ -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);
+4 -1
View File
@@ -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,
+1
View File
@@ -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,
+6
View File
@@ -412,6 +412,12 @@ enum class BucketId {
};
}
namespace jak3 {
enum class BucketId {
MAX_BUCKETS = 587,
};
}
enum class BucketCategory {
TFRAG,
TIE,
+3
View File
@@ -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);
}
+1 -1
View File
@@ -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
View File
@@ -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
+7
View File
@@ -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)
)
)
+2
View File
@@ -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
)
+2 -2
View File
@@ -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
+1
View File
@@ -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)
+5 -4
View File
@@ -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
)
+1 -1
View File
@@ -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
+5 -5
View File
@@ -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
+114
View File
@@ -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
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -728,7 +728,7 @@
(tie-water)
(etie-water)
(etie-scissor-water)
(rn31)
(sprite)
(rn32)
(rn33)
(rn34)
+3 -3
View File
@@ -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)
+15
View File
@@ -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))
+1
View File
@@ -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)))
+1 -1
View File
@@ -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
+2 -1
View File
@@ -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))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+1 -1
View File
@@ -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)))
)
)
+1 -1
View File
@@ -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)
+92
View File
@@ -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);
}
+1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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))
@@ -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
View File
@@ -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
)
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -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)
)
)
File diff suppressed because it is too large Load Diff
+119
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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))
+10 -1
View File
@@ -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": {}