d/jak2: finish cylinder | mech-h | font-data most of text and history and chip away at a bunch of other files (#1802)

* d/jak2: finish `cylinder`

* d/jak2: mostly finish `history`

* d/jak2: finish a bit of `ripple` and `sync-info`

* d/jak2: finish `font-data` and chip away at some other files

* d/jak2: most of `text` done, a bit of `script` - symbol arr issue in `level-info`

* d/jak2: finish `mech-h`

* lint: format

* tests: fix typeconsistency

* d/jak2: address feedback
This commit is contained in:
Tyler Wilding
2022-08-28 10:45:07 -04:00
committed by GitHub
parent f8007cc84b
commit 799e10a0ae
34 changed files with 4643 additions and 462 deletions
+203 -149
View File
@@ -5599,14 +5599,14 @@
(other-name-1 symbol :offset 24)
(packages pair :offset-assert 32) ;; guess on type
(memory-mode uint32 :offset-assert 36)
(music-bank basic :offset-assert 40)
(ambient-sounds basic :offset-assert 44)
(music-bank symbol :offset-assert 40)
(ambient-sounds symbol :offset-assert 44)
(sound-reverb float :offset-assert 48)
(mood-func symbol :offset-assert 52)
(mood-init symbol :offset-assert 56)
(ocean basic :offset-assert 60)
(sky basic :offset-assert 64)
(use-camera-other basic :offset-assert 68)
(ocean symbol :offset-assert 60)
(sky symbol :offset-assert 64)
(use-camera-other symbol :offset-assert 68)
(part-engine-max int32 :offset-assert 72)
(city-map-bits uint64 :offset-assert 80)
(continues pair :offset-assert 88)
@@ -5626,8 +5626,8 @@
(deactivate-func symbol :offset-assert 152)
(kill-func symbol :offset-assert 156)
(borrow-size uint16 2 :offset-assert 160)
(borrow-level symbol 2 :offset-assert 164)
(borrow-display? basic 2 :offset-assert 172)
(borrow-level symbol 2 :offset-assert 164)
(borrow-display? symbol 2 :offset-assert 172)
(base-task-mask task-mask :offset-assert 180)
(texture-anim symbol 10 :offset-assert 184 :score -1)
(texture-anim-tfrag symbol :offset 184)
@@ -5652,13 +5652,13 @@
(ocean-alpha float :offset-assert 280)
(extra-sound-bank pair :offset-assert 284)
)
:pack-me
:method-count-assert 9
:size-assert #x120
:flag-assert #x900000120
;; Failed to read fields.
)
(declare-type drawable basic)
(declare-type drawable basic)
(deftype login-state (basic)
((state int32 :offset-assert 4)
(pos uint32 :offset-assert 8)
@@ -5682,6 +5682,7 @@
(ten 10)
)
(declare-type game-text-id uint32)
(deftype level (basic)
((name symbol :offset-assert 4)
(load-name basic :offset-assert 8)
@@ -5778,7 +5779,7 @@
(debug-print-region-splitbox (_type_ vector object) none 20) ;; (vis-load (_type_) uint 20)
(get-art-group-by-name (_type_ string) art-group 21) ;; (unused-21 (_type_) none 21)
(level-method-22 () none 22) ;; (birth (_type_) _type_ 22)
(level-method-23 () none 23) ;; (level-status-set! (_type_ symbol) _type_ 23)
(lookup-text (_type_ game-text-id symbol) string 23) ;; (level-status-set! (_type_ symbol) _type_ 23)
(level-method-24 () none 24)
(birth (_type_) _type_ 25) ;; (init-vis (_type_) int 25)
(level-status-update! (_type_ symbol) _type_ 26)
@@ -6397,7 +6398,7 @@
((length int32 :offset-assert 4)
(language-id int32 :offset-assert 8)
(group-name string :offset-assert 12) ;; guessed by decompiler
(data game-text :dynamic :offset-assert 16) ;; guessed by decompiler
(data game-text :dynamic :inline :offset-assert 16) ;; guessed by decompiler
)
:method-count-assert 10
:size-assert #x10
@@ -11335,14 +11336,14 @@
(:methods
(continue-point-method-9 () none 9) ;; (debug-draw! (_type_) none 9)
(continue-point-method-10 () none 10)
(continue-point-method-11 () none 11)
(continue-point-method-11 (_type_) none 11)
)
)
(defenum mc-status-code
:type uint32
; (busy 0)
; (ok 1)
;; (busy 0)
(ok 1)
; (bad-handle 2)
; (format-failed 3)
; (internal-error 4)
@@ -11367,7 +11368,7 @@
(deftype game-info (basic)
((mode symbol :offset-assert 4) ;; guessed by decompiler
(save-name basic :offset-assert 8)
(save-name string :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
@@ -11403,7 +11404,7 @@
(perm-list entity-perm-array :offset-assert 232) ;; guessed by decompiler
(task-perm-list entity-perm-array :offset-assert 236) ;; guessed by decompiler
(current-continue continue-point :offset-assert 240) ;; guessed by decompiler
(last-continue basic :offset-assert 244)
(last-continue continue-point :offset-assert 244)
(unknown-pad3 uint32 3)
(task-counter uint32 :offset-assert 260)
(unknown-pad4 uint32)
@@ -11449,7 +11450,7 @@
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score basic :offset-assert 560)
(game-score (array highscore-info) :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
@@ -11467,8 +11468,8 @@
(:methods
(initialize! (_type_ symbol game-save string) _type_ 9)
(game-info-method-10 () none 10) ;; (adjust (_type_ symbol float handle) float 10)
(game-info-method-11 () none 11) ;; (task-complete? (_type_ game-task) symbol 11)
(game-info-method-12 () none 12) ;; (lookup-entity-perm-by-aid (_type_ actor-id) entity-perm 12)
(task-complete? (_type_ game-task) symbol 11)
(game-info-method-12 (_type_) none 12) ;; (lookup-entity-perm-by-aid (_type_ actor-id) entity-perm 12)
(game-info-method-13 () none 13) ;; (get-entity-task-perm (_type_ game-task) entity-perm 13)
(game-info-method-14 () none 14) ;; 14)
(game-info-method-15 () none 15)
@@ -13621,7 +13622,7 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deftype script-form (structure)
((name basic :offset-assert 0)
((name string :offset-assert 0)
(spec basic :offset-assert 4)
(func basic :offset-assert 8)
)
@@ -13797,13 +13798,13 @@
:size-assert #x10
:flag-assert #x1000000010
(:methods
(sync-info-method-9 () none 9) ;; (get-current-value (_type_ float) float 9)
(sync-info-method-10 () none 10) ;; (get-current-phase-no-mod (_type_) float 10)
(sync-info-method-11 () none 11) ;; (get-current-phase (_type_) float 11)
(sync-info-method-12 () none 12) ;; (get-current-value-with-mirror (_type_ float) float 12)
(sync-info-method-13 () none 13) ;; (get-current-phase-with-mirror (_type_) float 13)
(sync-info-method-14 () none 14) ;; (setup-params! (_type_ uint float float float) none 14)
(sync-info-method-15 () none 15) ;; (load-params! (_type_ process uint float float float) symbol 15)
(sync-info-method-9 (_type_) none 9) ;; (get-current-value (_type_ float) float 9)
(get-phase-offset "Get the offset, as a fraction of period" (_type_) float 10)
(get-norm! "Abstract method, stubbed" (_type_) float 11)
(multiply-norm! "Multiples result of `get-norm!` by the provided float" (_type_ float object) float 12)
(initialize! "Abstract method, stubbed" () none 13)
(sync-info-method-14 (_type_ time-frame) time-frame 14)
(sync-info-method-15 (_type_ float) none 15) ;; (load-params! (_type_ process uint float float float) symbol 15)
)
)
@@ -15085,12 +15086,11 @@
:method-count-assert 12
:size-assert #x50
:flag-assert #xc00000050
;; Failed to read fields.
(:methods
(new (symbol type process-drawable int float collide-spec) _type_ 0)
(initialize (_type_ process-drawable int float collide-spec) impact-control :behavior process 9)
(update-from-cspace (_type_) none 10)
(impact-control-method-11 () none 11)
(impact-control-method-11 (_type_) none 11)
)
)
@@ -15099,7 +15099,6 @@
:method-count-assert 12
:size-assert #x20
:flag-assert #xc00000020
;; Failed to read fields.
(:methods
(new (symbol type vector vector) _type_ 0)
(initialize (_type_ vector vector) point-tracker 9)
@@ -15115,7 +15114,6 @@
:method-count-assert 14
:size-assert #x30
:flag-assert #xe00000030
;; Failed to read fields.
(:methods
(combo-tracker-method-12 () none 12)
(combo-tracker-method-13 () none 13)
@@ -17509,7 +17507,7 @@
(bit-5 5)
(subtask-complete 6)
(bit-7 7)
(bit-8 8)
(complete 8)
(bit-9 9)
(bit-10 10)
)
@@ -20774,9 +20772,9 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (define-extern raw-ray-sphere-intersect function) ;; (function float float)
;; (define-extern ray-sphere-intersect function) ;; (function vector vector vector float float)
(define-extern ray-sphere-intersect (function vector vector vector float float))
;; (define-extern ray-circle-intersect function) ;; (function vector vector vector float float)
;; (define-extern ray-cylinder-intersect function) ;; (function vector vector vector vector float float vector float)
(define-extern ray-cylinder-intersect (function vector vector vector vector float float vector float))
;; (define-extern ray-plane-intersect function) ;; (function vector vector vector vector vector vector vector float)
;; (define-extern ray-triangle-intersect function) ;; (function vector vector float matrix vector vector float)
;; (define-extern collide-do-primitives function) ;; (function float)
@@ -20862,27 +20860,24 @@
;; cylinder ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype cylinder-verts (structure)
((vert vector 24 :offset-assert 0) ;; guessed by decompiler
((vert vector 24 :inline :offset-assert 0) ;; guessed by decompiler
)
:method-count-assert 9
:size-assert #x180
:flag-assert #x900000180
)
|#
#|
(deftype cylinder-flat-verts (structure)
((vert vector 10 :offset-assert 0) ;; guessed by decompiler
((vert vector 10 :inline :offset-assert 0) ;; guessed by decompiler
)
:method-count-assert 9
:size-assert #xa0
:flag-assert #x9000000a0
)
|#
;; (define-extern ray-arbitrary-circle-intersect function) ;; (function vector vector vector vector float float)
(define-extern ray-arbitrary-circle-intersect (function vector vector vector vector float float))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; wind-work ;;
@@ -21313,10 +21308,10 @@
;; (define-extern debug-reset-buffers function) ;; (function symbol)
(define-extern debug-draw-buffers (function symbol))
(define-extern add-debug-line (function symbol bucket-id vector vector rgba symbol rgba symbol))
;; (define-extern add-debug-line2d function) ;; (function symbol bucket-id vector vector vector symbol)
(define-extern add-debug-line2d (function symbol bucket-id vector vector vector symbol))
;; (define-extern add-debug-box function) ;; (function symbol bucket-id vector vector rgba symbol)
;; (define-extern add-debug-box-with-transform function)
;; (define-extern add-debug-x function) ;; (function symbol bucket-id vector rgba symbol)
(define-extern add-debug-x (function symbol bucket-id vector rgba symbol))
;; (define-extern add-debug-cross function)
(define-extern add-debug-text-3d (function symbol bucket-id string vector font-color vector2h symbol))
;; (define-extern add-debug-sphere-with-transform function) ;; (function symbol bucket-id vector meters matrix rgba symbol)
@@ -21325,7 +21320,7 @@
;; (define-extern add-debug-spheres function) ;; (function symbol bucket-id (inline-array vector) int rgba symbol)
;; (define-extern add-debug-line-sphere function)
;; (define-extern add-debug-circle function) ;; (function symbol bucket-id vector float rgba matrix symbol)
;; (define-extern add-debug-vector function) ;; (function symbol bucket-id vector vector meters rgba symbol)
(define-extern add-debug-vector (function symbol bucket-id vector vector meters rgba symbol))
(define-extern add-debug-matrix (function symbol bucket-id matrix float matrix))
;; (define-extern add-debug-rot-matrix function) ;; (function symbol bucket-id matrix vector matrix)
;; (define-extern add-debug-quaternion function)
@@ -21361,70 +21356,122 @@
;; history ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(defenum collide-status
:bitfield #t
:type uint64
(on-surface 0)
(on-ground 1)
(touch-surface 2)
(touch-wall 3)
(touch-ceiling 4)
(touch-actor 5)
(on-special-surface 6)
(touch-edge 7)
(no-touch 8)
(blocked 9)
(on-water 10)
(impact-surface 11)
(touch-background 12)
(stuck 13)
(touch-ceiling-sticky 14)
(glance 15)
(probe-hit 16)
)
(defenum history-channel
:type uint8
(trans 0)
(transv 1)
(transv-in 2)
(transv-out 3)
(intersect 4)
(local-normal 5)
(surface-normal 6)
(collide-status 7)
(pat 8)
(time 9)
(friction 10))
(deftype history-elt (structure)
((record-tag-bytes UNKNOWN 4 :offset-assert 0)
(record-tag uint32 :offset-assert 0)
(record-id uint16 :offset-assert 0)
(owner uint8 :offset-assert 2)
(channel uint8 :offset-assert 4)
(timestamp uint64 :offset-assert 8)
((record-tag-bytes uint8 4 :offset-assert 0)
(record-tag uint32 :offset 0)
(record-id uint16 :offset 0)
(owner uint8 :offset 2)
(channel history-channel :offset-assert 4)
(timestamp time-frame :offset-assert 8)
(origin vector :inline :offset-assert 16)
(bytes UNKNOWN 16 :offset-assert 32)
(vector vector :inline :offset-assert 32)
(float float :offset-assert 32)
(collide-status uint64 :offset-assert 32)
(collide-reaction-flag uint32 :offset-assert 40)
(pat uint32 :offset-assert 32)
(bytes uint8 16 :offset-assert 32)
(vector vector :inline :offset 32)
(float float :offset 32)
(collide-status collide-status :offset 32)
(collide-reaction-flag uint32 :offset 40)
(pat pat-surface :offset 32)
)
:method-count-assert 9
:size-assert #x30
:flag-assert #x900000030
)
|#
#|
(deftype history-iterator (basic)
((max-age uint32 :offset-assert 4)
(owner uint8 :offset-assert 8)
(proc basic :offset-assert 12)
(proc process :offset-assert 12)
(out basic :offset-assert 16)
(channel-mask uint64 :offset-assert 24)
(index int32 :offset-assert 32)
(done? basic :offset-assert 36)
(done? symbol :offset-assert 36)
)
:method-count-assert 12
:size-assert #x28
:flag-assert #xc00000028
;; field out uses ~A with a signed load
(:methods
(history-iterator-method-9 () none 9)
(history-iterator-method-10 () none 10)
(history-iterator-method-11 () none 11)
(new (symbol type uint32) _type_ 0)
(frame-counter-delta
"Returns the difference between [[*display*]]'s `base-clock.frame-counter` and the elt's `timestamp`"
(_type_ history-elt) time-frame 9)
(update-entries!
"Iterate through each [[history-elt]] in [[*history*]]
- If we hit the end set `done?` to true
- If the `timestamp` on the elt, minus the current framecounter exceeds `max-age`, we are also done, return #f
- However if we find an elt who's `owner` matches the iterator's, break out early returning that `elt`"
(_type_) history-elt 10)
(history-iterator-method-11
"TODO - Unsure of the purpose
`min(1.0, ((history-elt.timestamp - 1) + frame-counter) / (max-age + 1)) - 1.0`"
(_type_ history-elt) float 11)
)
)
|#
#|
(deftype history (basic)
((alloc-index int32 :offset-assert 4)
(allocated-length int32 :offset-assert 8)
(elts UNKNOWN :dynamic :offset-assert 16)
(elts history-elt :dynamic :inline :offset 16)
)
:method-count-assert 11
:size-assert #x10
:flag-assert #xb00000010
(:methods
(history-method-9 () none 9)
(history-method-10 () none 10)
(new (symbol type int) _type_ 0)
(clear-record-tags!
"First grab the latest [[history-elt]] at `alloc-index`
1. update it's `channel`, `record-id` and `owner` from the provided args
2. - if it's `record-tag` is zero -- return it
- otherwise, iterate through all `elts` until one is found that does not match it's `timestamp`
- if not `0` out the `record-tag` for that elt and continue iteration"
(_type_ history-channel uint uint) history-elt 9)
(clear-history-entries!
"Iterates through each [[history-elt]] in the `elt` dynamic array
For each entry:
- clear `timestamp`
- clear `record-tag`"
(_type_) none 10)
)
)
|#
;; (define-extern history-channel->string function)
;; (define-extern *history* object)
;; (define-extern history-print function)
;; (define-extern history-draw function)
(define-extern history-channel->string (function history-channel string))
(define-extern *history* history)
(define-extern history-print (function history-iterator none))
(define-extern history-draw (function history-iterator none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; merc-vu1 ;;
@@ -21580,39 +21627,47 @@
;; ripple ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype ripple-request (structure)
((waveform ripple-wave :offset-assert 0) ;; guessed by decompiler
(effect merc-effect :offset-assert 4)
)
:pack-me
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
|#
#|
(deftype ripple-globals (structure)
((count int32 :offset-assert 0)
(requests ripple-request 16 :offset-assert 4) ;; guessed by decompiler
(requests ripple-request 16 :inline :offset-assert 4) ;; guessed by decompiler
)
:method-count-assert 9
:size-assert #x84
:flag-assert #x900000084
)
|#
;; (define-extern *ripple-globals* object) ;; ripple-globals
;; (define-extern ripple-make-request function) ;; (function ripple-wave merc-effect none)
;; (define-extern ripple-update-waveform-offs function) ;; (function ripple-wave-set none)
;; (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 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)
;; (define-extern ripple-find-height function) ;; (function process-drawable int vector float)
(define-extern *ripple-globals* "A collection of [[ripple-request]] (max of 16)" ripple-globals)
(define-extern ripple-make-request
"Iterate through [[*ripple-globals*]] `requests` looking for the one that matches the provided `effect`
If NOT found, append a new [[ripple-request]] with the providded `effect` and `waveform` to the end of the `requests`.
NOTE: There can only be 16 effects at a given time, NOOP if already at that limit!"
(function ripple-wave merc-effect none))
(define-extern ripple-update-waveform-offs (function ripple-wave-set none))
(define-extern ripple-execute-init "TODO - Handled by MIPS2C" (function none))
(define-extern ripple-create-wave-table "TODO - Handled by MIPS2C" (function ripple-wave-set int))
(define-extern ripple-apply-wave-table "TODO - Handled by MIPS2C" (function merc-effect symbol))
(define-extern ripple-execute
"Iterate through [[*ripple-globals*]] requests, from the end to index `0`
For each request, if it has a `waveform` create the wave-table via `ripple-create-wave-table`
Then for each `waveform` apply the `effect` using `ripple-apply-wave-table`
Once completed, all `requests` have been processed and the `count` is reset to `0`"
(function none))
(define-extern ripple-matrix-scale "TODO - Handled by MIPS2C" function)
(define-extern ripple-add-debug-sphere (function process-drawable vector float float none))
(define-extern ripple-slow-add-sine-waves (function ripple-wave-set float float float))
(define-extern ripple-find-height (function process-drawable int vector float))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; bones ;;
@@ -22009,8 +22064,8 @@
;; font-data ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (define-extern *font12-table* object) ;; (inline-array vector)
;; (define-extern *font24-table* object) ;; (inline-array vector)
(define-extern *font12-table* (inline-array vector))
(define-extern *font24-table* (inline-array vector))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; font ;;
@@ -22018,8 +22073,8 @@
;; (define-extern gen-font-12 function)
;; (define-extern draw-string-asm function)
;; (define-extern draw-string function) ;; (function string dma-buffer font-context float)
;; (define-extern get-string-length function) ;; (function string font-context float)
(define-extern draw-string (function string dma-buffer font-context float))
(define-extern get-string-length (function string font-context float))
(define-extern draw-string-xy (function string dma-buffer int int font-color font-flags float))
;; (define-extern draw-string-adv function) ;; (function string dma-buffer font-context none)
@@ -22691,14 +22746,14 @@
;; game-info ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (define-extern *default-continue* continue-point) ;; continue-point
(define-extern *default-continue* continue-point)
;; (define-extern task-level->string function)
;; (define-extern level-name->task-level function)
;; (define-extern trsq->continue-point function) ;; (function trsq none)
(define-extern position->stream (function string symbol symbol none))
;; (define-extern bug-report-display function)
;; (define-extern print-continues function)
;; (define-extern *highscore-info-array* array)
(define-extern *highscore-info-array* (array highscore-info))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; game-task ;;
@@ -24115,34 +24170,30 @@
;; text ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype game-text-info (basic)
()
:method-count-assert 10
:size-assert #x10
:flag-assert #xa00000010
;; Failed to read fields.
(:methods
(game-text-info-method-9 () none 9) ;; (lookup-text! (_type_ game-text-id symbol) string 9)
)
)
|#
;; (define-extern *expand-buf-number* object)
;; (define-extern *game-text-word* object) ;; string
;; (define-extern *game-text-line* object) ;; string
;; (define-extern *expanded-text-line0* object)
;; (define-extern *expanded-text-line1* object)
;; (define-extern *level-text-file-load-flag* object) ;; symbol
;; (define-extern convert-korean-text function)
;; (define-extern text-is-loading object) ;; symbol
;; (define-extern load-game-text-info function) ;; (function string symbol kheap int)
(define-extern load-level-text-files (function int none))
;; (define-extern draw-debug-text-box function) ;; (function font-context none)
;; (define-extern print-game-text-scaled function) ;; (function string float font-context int none)
;; (define-extern print-game-text function) ;; (function string font-context symbol int int float)
;; (define-extern disable-level-text-file-loading function) ;; (function none)
;; (define-extern enable-level-text-file-loading function) ;; (function none)
(define-extern *expand-buf-number* int)
(define-extern *game-text-word* string)
(define-extern *game-text-line* string)
(define-extern *expanded-text-line0* string)
(define-extern *expanded-text-line1* string)
(define-extern *level-text-file-load-flag* symbol)
(define-extern convert-korean-text
"Converts the provided [[game-text]] into korean. Returns a [[string]]"
(function game-text string))
(define-extern text-is-loading symbol)
(define-extern load-game-text-info
"Load text, if needed. txt-name is the group name, curr-text is the _symbol_ for
the game-text-info, and heap is the heap to load to. The heap will be cleared."
(function string symbol kheap int))
(define-extern load-level-text-files
"Load the text files needed for level idx.
This function made more sense back when text files were split up, but in the end they put everything
in a single text group and file."
(function int none))
(define-extern draw-debug-text-box "Draws some lines" (function font-context none))
(define-extern print-game-text-scaled "Print text, with a given scaling" (function string float font-context int none))
(define-extern print-game-text "Print text." (function string font-context symbol int int float))
(define-extern disable-level-text-file-loading "Disables [[*level-text-file-load-flag*]]" (function none))
(define-extern enable-level-text-file-loading "Disables [[*level-text-file-load-flag*]]" (function none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; collide-hash ;;
@@ -25283,7 +25334,7 @@
;; (define-extern camera-plot-float-func function) ;; (function float float float float (function float float) vector4w none)
;; (define-extern camera-line-setup function) ;; (function vector4w none)
;; (define-extern camera-line-draw function) ;; (function vector vector symbol)
;; (define-extern camera-line function) ;; (function vector vector vector4w none)
(define-extern camera-line (function vector vector vector4w none))
;; (define-extern camera-line-rel function) ;; (function vector vector vector4w none)
;; (define-extern camera-line-rel-len function) ;; (function vector vector float vector4w none)
;; (define-extern camera-sphere function) ;; (function vector float vector none)
@@ -25427,19 +25478,24 @@
;; script ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (define-extern command-get-int function) ;; (function object int int)
;; (define-extern command-get-float function) ;; (function object float float)
;; (define-extern command-get-time function) ;; (function object int int)
;; (define-extern command-get-param function) ;; (function object object object)
;; (define-extern command-get-quoted-param function) ;; (function object object object)
;; (define-extern command-get-process function) ;; (function object process process :behavior camera-tracker)
;; (define-extern command-get-entity function)
;; (define-extern command-get-trans function) ;; (function object vector vector)
;; (define-extern key-assoc function)
;; (define-extern *script-form* object)
(define-extern command-get-int (function object int int))
(define-extern command-get-float (function object float float))
(define-extern command-get-time (function object int int))
(define-extern command-get-param (function object object object))
(define-extern command-get-quoted-param (function object object object))
;; (define-extern command-get-process (function object process process :behavior camera-tracker))
(define-extern command-get-entity
"- If `search` is a [[process]] - return it's `entity`
- If `search` is an [[entity]] - return it
- If `search` is a [[string]] - return the result of [[entity-by-name]]
- If `search` is [[null?]] or [[empty]] or if no other condition passes, return `fallback`"
(function object entity entity))
(define-extern command-get-trans (function object vector vector))
(define-extern key-assoc (function none))
(define-extern *script-form* int)
;; (define-extern level-from-heap function)
;; (define-extern *syntax-context* object)
;; (define-extern *script-context* object)
(define-extern *syntax-context* int)
(define-extern *script-context* int)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; generic-obs ;;
@@ -26906,10 +26962,9 @@
;; mech-h ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#|
(deftype mech-info (basic)
((entity basic :offset-assert 4)
(hud UNKNOWN 1 :offset-assert 8)
(hud uint64 1 :offset-assert 8) ;; handle?
(mech-trans vector :inline :offset-assert 16)
(mech-quat vector :inline :offset-assert 32)
(mech-scale vector :inline :offset-assert 48)
@@ -26936,15 +26991,15 @@
(shield-value float :offset-assert 204)
(shield-max float :offset-assert 208)
(walk-anim-leg int32 :offset-assert 212)
(state-impact? UNKNOWN 1 :offset-assert 216)
(state-impact UNKNOWN 1 :offset-assert 224)
(state-impact? symbol 1 :offset-assert 216)
(state-impact impact-control 1 :inline :offset-assert 224)
(thruster-flame-width meters :offset-assert 304)
(thruster-flame-length meters :offset-assert 308)
(thruster-local-pos UNKNOWN 2 :offset-assert 320)
(exhaust-local-pos UNKNOWN 2 :offset-assert 352)
(exhaust-local-dir UNKNOWN 2 :offset-assert 384)
(smoke-local-pos UNKNOWN 2 :offset-assert 416)
(smoke-local-vel UNKNOWN 2 :offset-assert 448)
(thruster-local-pos vector 2 :inline :offset-assert 320)
(exhaust-local-pos vector 2 :inline :offset-assert 352)
(exhaust-local-dir vector 2 :inline :offset-assert 384)
(smoke-local-pos vector 2 :inline :offset-assert 416)
(smoke-local-vel vector 2 :inline :offset-assert 448)
(particle-system-2d basic :offset-assert 480)
(particle-system-3d basic :offset-assert 484)
(part-thruster basic :offset-assert 488)
@@ -26957,9 +27012,8 @@
:size-assert #x1fc
:flag-assert #x9000001fc
)
|#
;; (define-extern *mech-shadow-control* shadow-control)
(define-extern *mech-shadow-control* shadow-control)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; menu ;;
@@ -7,8 +7,6 @@
[23, "(function process symbol)"],
[17, "(function process symbol)"]
],
"level": [[5, "(function none)"]],
"main": [[3, "(function none :behavior process)"]],
"profile": [[9, "(function profile-segment-array profile-collapse none)"]],
"bigmap-h": [
[1, "(function external-art-buffer none)"],
@@ -24,7 +22,7 @@
[9, "(function none)"],
[8, "(function none)"],
[7, "(function time-frame none)"],
[3, "(function none)"]
[3, "(function none :behavior process)"]
],
"level-info": [
@@ -38,7 +36,5 @@
[24, "(function level-group int symbol)"]
],
"gsound": [
[1, "(function none)"]
]
"gsound": [[1, "(function none)"]]
}
+6 -4
View File
@@ -60,9 +60,6 @@
"(method 224 bot)",
"(method 77 rapid-gunner)",
// until loop without nop:
"(method 9 history)",
"history-print",
"history-draw",
"(method 9 sparticle-launcher)",
"(method 18 tracking-spline)",
"cam-string-find-position-rel!",
@@ -187,7 +184,12 @@
"display-loop-main",
"lookup-level-info",
"(method 24 level-group)",
"(method 19 level-group)"
"(method 19 level-group)",
// script
"command-get-time",
"command-get-param",
"command-get-quoted-param",
"command-get-entity"
],
// If format is used with the wrong number of arguments,
+10
View File
@@ -73,5 +73,15 @@
["L364", "(pointer uint64)", 1],
["L367", "(pointer uint64)", 1],
["L362", "(pointer uint64)", 1]
],
"font-data": [
["L1", "(inline-array vector)", 250],
["L2", "(inline-array vector)", 250]
],
"script": [["L2358", "vector4"]],
"text": [
["L96", "vector4"],
["L95", "matrix"],
["L96", "vector4w"]
]
}
+14 -3
View File
@@ -166,9 +166,7 @@
"string->sound-name": [[16, "qword"]],
"doppler-pitch-shift": [
[16, ["inline-array", "vector", 2]]
],
"doppler-pitch-shift": [[16, ["inline-array", "vector", 2]]],
"(anon-function 1 gsound)": [
[16, ["array", "symbol", 4]],
@@ -176,6 +174,19 @@
],
"matrix<-parented-transformq!": [[16, "vector"]],
"(method 9 cylinder)": [
[48, "cylinder-verts"],
[432, "cylinder-verts"],
[816, "matrix"],
[880, "matrix"]
],
"(method 9 cylinder-flat)": [
[48, "cylinder-flat-verts"],
[208, "cylinder-flat-verts"],
[368, "matrix"],
[432, "vector"]
],
"want-to-board?": [
[16, "vector"],
+24 -42
View File
@@ -510,50 +510,22 @@
"update-mood-village1": [[[21, 66], "gp", "(pointer float)"]],
"update-mood-consite": [[[84, 110], "s4", "(pointer float)"]],
"desaturate-mood-colors": [[[20, 92], "a0", "(inline-array mood-color)"]],
"ramdisk-load": [
[[7, 12], "v1", "ramdisk-rpc-load"]
],
"(method 10 engine-sound-pers)": [
[[2, 19], "v1", "sound-rpc-set-param"]
],
"ramdisk-load": [[[7, 12], "v1", "ramdisk-rpc-load"]],
"(method 10 engine-sound-pers)": [[[2, 19], "v1", "sound-rpc-set-param"]],
"check-irx-version": [
[[3, 51], "gp", "sound-rpc-get-irx-version"]
],
"check-irx-version": [[[3, 51], "gp", "sound-rpc-get-irx-version"]],
"sound-bank-iop-store": [
[[7, 11], "v1", "sound-rpc-bank-cmd"]
],
"sound-bank-iop-free": [
[[7, 12], "v1", "sound-rpc-bank-cmd"]
],
"sound-bank-load": [
[[7, 12], "v1", "sound-rpc-load-bank"]
],
"sound-bank-load-from-iop": [
[[7, 12], "v1", "sound-rpc-load-bank"]
],
"sound-bank-load-from-ee": [
[[8, 14], "v1", "sound-rpc-load-bank"]
],
"sound-bank-unload": [
[[6, 11], "v1", "sound-rpc-unload-bank"]
],
"sound-music-load": [
[[6, 11], "v1", "sound-rpc-load-music"]
],
"sound-music-unload": [
[[3, 8], "v1", "sound-rpc-unload-music"]
],
"set-language": [
[[7, 12], "v1", "sound-rpc-set-language"]
],
"sound-set-stereo-mode": [
[[4, 9], "v1", "sound-rpc-set-stereo-mode"]
],
"list-sounds": [
[[3, 7], "v1", "sound-rpc-list-sounds"]
],
"sound-bank-iop-store": [[[7, 11], "v1", "sound-rpc-bank-cmd"]],
"sound-bank-iop-free": [[[7, 12], "v1", "sound-rpc-bank-cmd"]],
"sound-bank-load": [[[7, 12], "v1", "sound-rpc-load-bank"]],
"sound-bank-load-from-iop": [[[7, 12], "v1", "sound-rpc-load-bank"]],
"sound-bank-load-from-ee": [[[8, 14], "v1", "sound-rpc-load-bank"]],
"sound-bank-unload": [[[6, 11], "v1", "sound-rpc-unload-bank"]],
"sound-music-load": [[[6, 11], "v1", "sound-rpc-load-music"]],
"sound-music-unload": [[[3, 8], "v1", "sound-rpc-unload-music"]],
"set-language": [[[7, 12], "v1", "sound-rpc-set-language"]],
"sound-set-stereo-mode": [[[4, 9], "v1", "sound-rpc-set-stereo-mode"]],
"list-sounds": [[[3, 7], "v1", "sound-rpc-list-sounds"]],
"string->sound-name": [[[2, 18], "a1", "(pointer uint8)"]],
"sound-set-volume": [[[3, 16], "v1", "sound-rpc-set-master-volume"]],
"sound-set-reverb": [[[5, 25], "v1", "sound-rpc-set-reverb"]],
@@ -602,5 +574,15 @@
[3, "v1", "target"],
[14, "a0", "target"]
],
"(method 10 history)": [[[8, 10], "a1", "history-elt"]],
"(method 10 history-iterator)": [[[20, 35], "a2", "history-elt"]],
"command-get-time": [[119, "gp", "(pointer float)"]],
"command-get-param": [[122, "gp", "(pointer float)"]],
"command-get-entity": [[10, "gp", "process"]],
"print-game-text": [
[225, "v1", "float"],
[241, "v1", "float"]
],
"placeholder-do-not-add-below": []
}
+12
View File
@@ -83,5 +83,17 @@
"vars": {
"v1-2": "current-gun"
}
},
"(method 10 cylinder)": {
"args": ["obj", "ray1", "ray2"]
},
"ripple-make-request": {
"args": ["waveform", "effect"]
},
"command-get-entity": {
"args": ["search", "fallback"]
}
}
+1 -1
View File
@@ -7,7 +7,7 @@
// if you want to filter to only some object names.
// it will make the decompiler much faster.
"allowed_objects": ["mood-tables"],
"allowed_objects": [],
"banned_objects": ["effect-control"],
////////////////////////////
@@ -5,6 +5,9 @@
;; name in dgo: cam-debug-h
;; dgos: ENGINE, GAME
;; NOTE - for cylinder
(define-extern camera-line (function vector vector vector4w none))
;; DECOMP BEGINS
(declare-file (debug))
+511
View File
@@ -7,3 +7,514 @@
;; DECOMP BEGINS
(define *font12-table* (new 'static 'inline-array vector 250
(new 'static 'vector :x 0.0039 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.1914 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.2851 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.3789 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.4726 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.6601 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.7539 :y 0.0322 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.8476 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.0634 :z 1.0 :w 22.5)
(new 'static 'vector :x 0.1914 :y 0.0634 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.2851 :y 0.0634 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.3789 :y 0.0634 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.0634 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.6601 :y 0.0634 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.7539 :y 0.0634 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.8476 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.0947 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.0976 :y 0.0947 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.1914 :y 0.0947 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.2851 :y 0.0947 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.3789 :y 0.0947 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.0947 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.5664 :y 0.0947 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.0947 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.7539 :y 0.0947 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.8476 :y 0.0947 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0039 :y 0.1259 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.0976 :y 0.1259 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.1914 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.2851 :y 0.1259 :z 1.0 :w 11.25)
(new 'static 'vector :x 0.3789 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.4726 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.5664 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.6601 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.7539 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.8476 :y 0.1259 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0039 :y 0.1572 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0976 :y 0.1572 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.1914 :y 0.1572 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.2851 :y 0.1572 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.3789 :y 0.1572 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.1572 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.5664 :y 0.1572 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.1572 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.7539 :y 0.1572 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.8476 :y 0.1572 :z 1.0 :w 17.25)
(new 'static 'vector :x 0.0039 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.1884 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.1914 :y 0.1884 :z 1.0 :w 15.75)
(new 'static 'vector :x 0.2851 :y 0.1884 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.3789 :y 0.1884 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.4726 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.1884 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.6601 :y 0.1884 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.7539 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.8476 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.2197 :z 1.0 :w 15.75)
(new 'static 'vector :x 0.0976 :y 0.2197 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.1914 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.2851 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.3789 :y 0.2197 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.2197 :z 1.0 :w 15.75)
(new 'static 'vector :x 0.6601 :y 0.2197 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.7539 :y 0.2197 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.8476 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.2509 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.2509 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.1914 :y 0.2509 :z 1.0 :w 17.25)
(new 'static 'vector :x 0.2851 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.3789 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.2509 :z 1.0 :w 9.0)
(new 'static 'vector :x 0.5664 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.6601 :y 0.2509 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.7539 :y 0.2509 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.8476 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0039 :y 0.2822 :z 1.0 :w 6.0)
(new 'static 'vector :x 0.0976 :y 0.2822 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.1914 :y 0.2822 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.2851 :y 0.2822 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.3789 :y 0.2822 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.2822 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.5664 :y 0.2822 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.6601 :y 0.2822 :z 1.0 :w 17.25)
(new 'static 'vector :x 0.7539 :y 0.2822 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.8476 :y 0.2822 :z 1.0 :w 9.0)
(new 'static 'vector :x 0.0039 :y 0.3134 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0976 :y 0.3134 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.1914 :y 0.3134 :z 1.0 :w 9.75)
(new 'static 'vector :x 0.2851 :y 0.3134 :z 1.0 :w 18.5)
(new 'static 'vector :x 0.3789 :y 0.3134 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.4726 :y 0.3134 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.5664 :y 0.3134 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.6601 :y 0.3134 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.7539 :y 0.3134 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.8476 :y 0.3134 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.0039 :y 0.3447 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0976 :y 0.3447 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.1914 :y 0.3447 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.2851 :y 0.3447 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.3789 :y 0.3447 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.3447 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.5664 :y 0.3447 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.3447 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.7539 :y 0.3447 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.3447 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0039 :y 0.3759 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0976 :y 0.3759 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.1914 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7509 :z 1.0 :w 16.0)
)
)
(define *font24-table* (new 'static 'inline-array vector 250
(new 'static 'vector :x 0.0039 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0976 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.1914 :y 0.0322 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.2851 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.3789 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.5664 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.0322 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.7539 :y 0.0322 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.8476 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0039 :y 0.0634 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.0634 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.1914 :y 0.0634 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.2851 :y 0.0634 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.0634 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.4726 :y 0.0634 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.6601 :y 0.0634 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.7539 :y 0.0634 :z 1.0 :w 17.0)
(new 'static 'vector :x 0.8476 :y 0.0634 :z 1.0 :w 17.5)
(new 'static 'vector :x 0.0039 :y 0.0947 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.0947 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.1914 :y 0.0947 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.0947 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.0947 :z 1.0 :w 14.0)
(new 'static 'vector :x 0.4726 :y 0.0947 :z 1.0 :w 14.0)
(new 'static 'vector :x 0.5664 :y 0.0947 :z 1.0 :w 22.5)
(new 'static 'vector :x 0.6601 :y 0.0947 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.7539 :y 0.0947 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.8476 :y 0.0947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.1259 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.0976 :y 0.1259 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.1914 :y 0.1259 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.1259 :z 1.0 :w 14.0)
(new 'static 'vector :x 0.3789 :y 0.1259 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.4726 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.5664 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.6601 :y 0.1259 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.7539 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.8476 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.0039 :y 0.1572 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.0976 :y 0.1572 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.1914 :y 0.1572 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.2851 :y 0.1572 :z 1.0 :w 20.0)
(new 'static 'vector :x 0.3789 :y 0.1572 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.4726 :y 0.1572 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.5664 :y 0.1572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.1572 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.7539 :y 0.1572 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.8476 :y 0.1572 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.0039 :y 0.1884 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.0976 :y 0.1884 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.1914 :y 0.1884 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.2851 :y 0.1884 :z 1.0 :w 19.0)
(new 'static 'vector :x 0.3789 :y 0.1884 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.4726 :y 0.1884 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.5664 :y 0.1884 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.6601 :y 0.1884 :z 1.0 :w 10.0)
(new 'static 'vector :x 0.7539 :y 0.1884 :z 1.0 :w 19.0)
(new 'static 'vector :x 0.8476 :y 0.1884 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.2197 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0976 :y 0.2197 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.1914 :y 0.2197 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.2851 :y 0.2197 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.3789 :y 0.2197 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.4726 :y 0.2197 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.5664 :y 0.2197 :z 1.0 :w 19.0)
(new 'static 'vector :x 0.6601 :y 0.2197 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.7539 :y 0.2197 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.8476 :y 0.2197 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.0039 :y 0.2509 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.0976 :y 0.2509 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.1914 :y 0.2509 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.2851 :y 0.2509 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.3789 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.2509 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.2509 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.8476 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.2822 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.1914 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.2851 :y 0.2822 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.2822 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.5664 :y 0.2822 :z 1.0 :w 17.0)
(new 'static 'vector :x 0.6601 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.7539 :y 0.2822 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.8476 :y 0.2822 :z 1.0 :w 10.0)
(new 'static 'vector :x 0.0039 :y 0.3134 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0976 :y 0.3134 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.1914 :y 0.3134 :z 1.0 :w 10.0)
(new 'static 'vector :x 0.2851 :y 0.3134 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.3789 :y 0.3134 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.4726 :y 0.3134 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.5664 :y 0.3134 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.3134 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.7539 :y 0.3134 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.3134 :z 1.0 :w 17.0)
(new 'static 'vector :x 0.0039 :y 0.3447 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.3447 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.1914 :y 0.3447 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.2851 :y 0.3447 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.3789 :y 0.3447 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.4726 :y 0.3447 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.5664 :y 0.3447 :z 1.0 :w 20.0)
(new 'static 'vector :x 0.6601 :y 0.3447 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.3447 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.8476 :y 0.3447 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7509 :z 1.0 :w 16.0)
)
)
+2
View File
@@ -5,5 +5,7 @@
;; name in dgo: debug
;; dgos: ENGINE, GAME
(define-extern add-debug-line2d (function symbol bucket-id vector vector vector symbol))
;; DECOMP BEGINS
+428
View File
@@ -5,5 +5,433 @@
;; name in dgo: history
;; dgos: ENGINE, GAME
(defenum collide-status
:bitfield #t
:type uint64
(on-surface 0)
(on-ground 1)
(touch-surface 2)
(touch-wall 3)
(touch-ceiling 4)
(touch-actor 5)
(on-special-surface 6)
(touch-edge 7)
(no-touch 8)
(blocked 9)
(on-water 10)
(impact-surface 11)
(touch-background 12)
(stuck 13)
(touch-ceiling-sticky 14)
(glance 15)
(probe-hit 16)
)
(defenum history-channel
:type uint8
(trans 0)
(transv 1)
(transv-in 2)
(transv-out 3)
(intersect 4)
(local-normal 5)
(surface-normal 6)
(collide-status 7)
(pat 8)
(time 9)
(friction 10))
;; DECOMP BEGINS
;; this file is debug only
(declare-file (debug))
(when *debug-segment*
(defun history-channel->string ((arg0 history-channel))
(case arg0
(((history-channel friction))
"friction"
)
(((history-channel transv-out))
"transv-out"
)
(((history-channel pat))
"pat"
)
(((history-channel transv-in))
"transv-in"
)
(((history-channel trans))
"trans"
)
(((history-channel local-normal))
"local-normal"
)
(((history-channel collide-status))
"collide-status"
)
(((history-channel time))
"time"
)
(((history-channel intersect))
"intersect"
)
(((history-channel surface-normal))
"surface-normal"
)
(((history-channel transv))
"transv"
)
(else
"*unknown*"
)
)
)
(deftype history-elt (structure)
((record-tag-bytes uint8 4 :offset-assert 0)
(record-tag uint32 :offset 0)
(record-id uint16 :offset 0)
(owner uint8 :offset 2)
(channel history-channel :offset-assert 4)
(timestamp time-frame :offset-assert 8)
(origin vector :inline :offset-assert 16)
(bytes uint8 16 :offset-assert 32)
(vector vector :inline :offset 32)
(float float :offset 32)
(collide-status collide-status :offset 32)
(collide-reaction-flag uint32 :offset 40)
(pat pat-surface :offset 32)
)
:method-count-assert 9
:size-assert #x30
:flag-assert #x900000030
)
(deftype history-iterator (basic)
((max-age uint32 :offset-assert 4)
(owner uint8 :offset-assert 8)
(proc process :offset-assert 12)
(out basic :offset-assert 16)
(channel-mask uint64 :offset-assert 24)
(index int32 :offset-assert 32)
(done? symbol :offset-assert 36)
)
:method-count-assert 12
:size-assert #x28
:flag-assert #xc00000028
(:methods
(new (symbol type uint32) _type_ 0)
(frame-counter-delta (_type_ history-elt) time-frame 9)
(update-entries! (_type_) history-elt 10)
(history-iterator-method-11 (_type_ history-elt) float 11)
)
)
(deftype history (basic)
((alloc-index int32 :offset-assert 4)
(allocated-length int32 :offset-assert 8)
(elts history-elt :inline :dynamic :offset 16)
)
:method-count-assert 11
:size-assert #x10
:flag-assert #xb00000010
(:methods
(new (symbol type int) _type_ 0)
(clear-record-tags! (_type_ history-channel uint uint) history-elt 9)
(clear-history-entries! (_type_) none 10)
)
)
(defmethod length history ((obj history))
(-> obj allocated-length)
)
(defmethod asize-of history ((obj history))
(the-as int (+ (-> obj type size) (* 48 (-> obj allocated-length))))
)
(defmethod new history ((allocation symbol) (type-to-make type) (arg0 int))
(let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 arg0))))))
(set! (-> v0-0 allocated-length) arg0)
v0-0
)
)
(defmethod clear-history-entries! history ((obj history))
"Iterates through each [[history-elt]] in the `elt` dynamic array
For each entry:
- clear `timestamp`
- clear `record-tag`"
(set! (-> obj alloc-index) 0)
(countdown (v1-0 (-> obj allocated-length))
(let ((a1-3 (-> obj elts v1-0)))
(set! (-> a1-3 record-tag) (the-as uint 0))
(set! (-> a1-3 timestamp) 0)
)
0
)
0
(none)
)
(define-perm *history* history (new 'debug 'history 4096))
(clear-history-entries! *history*)
;; WARN: new jak 2 until loop case, check carefully
(defmethod clear-record-tags! history ((obj history) (arg0 history-channel) (arg1 uint) (arg2 uint))
"First grab the latest [[history-elt]] at `alloc-index`
1. update it's `channel`, `record-id` and `owner` from the provided args
2. - if it's `record-tag` is zero -- return it
- otherwise, iterate through all `elts` until one is found that does not match it's `timestamp`
- if not `0` out the `record-tag` for that elt and continue iteration"
(let* ((t1-0 (-> obj alloc-index))
(v1-0 (-> obj elts))
(v0-0 (-> v1-0 t1-0))
)
(let ((t2-0 (-> v0-0 record-tag))
(t0-2 (-> v0-0 timestamp))
)
(set! (-> v0-0 channel) arg0)
(set! (-> v0-0 record-id) arg1)
(set! (-> v0-0 owner) arg2)
(set! (-> v0-0 timestamp) (-> *display* base-clock frame-counter))
(let* ((a1-4 (-> obj allocated-length))
(a2-2 (mod (+ t1-0 1) a1-4))
)
(set! (-> obj alloc-index) a2-2)
(when (nonzero? t2-0)
(until #f
(let ((a0-4 (-> v1-0 a2-2)))
(if (!= t0-2 (-> a0-4 timestamp))
(return v0-0)
)
(set! (-> a0-4 record-tag) (the-as uint 0))
)
(set! a2-2 (mod (+ a2-2 1) a1-4))
)
#f
)
)
)
v0-0
)
)
(defmethod new history-iterator ((allocation symbol) (type-to-make type) (arg0 uint32))
(let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
(set! (-> v0-0 max-age) (the-as uint arg0))
(set! (-> v0-0 owner) (the-as uint 1))
(set! (-> v0-0 proc) #f)
(set! (-> v0-0 out) *stdcon*)
(set! (-> v0-0 channel-mask) (the-as uint -1))
(set! (-> v0-0 index) (-> *history* alloc-index))
(set! (-> v0-0 done?) #f)
v0-0
)
)
(defmethod update-entries! history-iterator ((obj history-iterator))
"Iterate through each [[history-elt]] in [[*history*]]
- If we hit the end set `done?` to true
- If the `timestamp` on the elt, minus the current framecounter exceeds `max-age`, we are also done, return #f
- However if we find an elt who's `owner` matches the iterator's, break out early returning that `elt`"
(let ((v1-0 *history*)
(a1-2 (-> *display* base-clock frame-counter))
)
(while (not (-> obj done?))
(let ((a2-1 (+ (-> obj index) -1)))
(if (< a2-1 0)
(set! a2-1 (+ (-> v1-0 allocated-length) -1))
)
(set! (-> obj index) a2-1)
(if (= a2-1 (-> v1-0 alloc-index))
(set! (-> obj done?) #t)
)
(let ((a2-5 (-> v1-0 elts a2-1)))
(when (nonzero? (-> a2-5 record-tag))
(when (< (the-as time-frame (-> obj max-age)) (- a1-2 (-> a2-5 timestamp)))
(set! (-> obj done?) #t)
(return (the-as history-elt #f))
)
(if (= (-> a2-5 owner) (-> obj owner))
(return a2-5)
)
)
)
)
)
)
(the-as history-elt #f)
)
(defmethod history-iterator-method-11 history-iterator ((obj history-iterator) (arg0 history-elt))
"TODO - Unsure of the purpose
`min(1.0, ((history-elt.timestamp - 1) + frame-counter) / (max-age + 1)) - 1.0`"
(- 1.0 (fmin 1.0 (/ (the float (+ (- 1 (-> arg0 timestamp)) (-> *display* base-clock frame-counter)))
(the float (+ (-> obj max-age) 1))
)
)
)
)
(defmethod frame-counter-delta history-iterator ((obj history-iterator) (arg0 history-elt))
"Returns the difference between [[*display*]]'s `base-clock.frame-counter` and the elt's `timestamp`"
(- (-> *display* base-clock frame-counter) (-> arg0 timestamp))
)
(defun history-print ((arg0 history-iterator))
(local-vars
(sv-16 basic)
(sv-24 int)
(sv-32 int)
(sv-40 history-elt)
(sv-48 time-frame)
(sv-56 uint)
(sv-64 collide-status)
(sv-72 float)
(sv-80 string)
(sv-96 string)
)
(set! sv-16 (-> arg0 out))
(set! sv-24 -1)
(set! sv-32 0)
(until #f
(set! sv-40 (update-entries! arg0))
(if (not sv-40)
(goto cfg-71)
)
(when (logtest? (-> arg0 channel-mask) (ash 1 (-> sv-40 channel)))
(set! sv-48 (frame-counter-delta arg0 sv-40))
(set! sv-56 (-> sv-40 record-id))
(cond
((!= sv-24 sv-48)
(set! sv-24 (the-as int sv-48))
(set! sv-32 (the-as int sv-56))
(format sv-16 "~3D ~4X " sv-48 (-> sv-40 record-id))
)
((!= sv-32 sv-56)
(set! sv-32 (the-as int sv-56))
(format sv-16 " ~4X " (-> sv-40 record-id))
)
(else
(format sv-16 " ")
)
)
(let ((v1-22 (-> sv-40 channel)))
(cond
((or (= v1-22 (history-channel trans))
(or (= v1-22 (history-channel transv))
(= v1-22 (history-channel transv-in))
(= v1-22 (history-channel transv-out))
(= v1-22 (history-channel intersect))
)
)
(format
sv-16
"~-15S: ~14Mm ~14Mm ~14Mm~%"
(history-channel->string (-> sv-40 channel))
(-> sv-40 vector x)
(-> sv-40 vector y)
(-> sv-40 vector z)
)
)
((or (= v1-22 (history-channel local-normal)) (= v1-22 (history-channel surface-normal)))
(format
sv-16
"~-15S: ~14f ~14f ~14f~%"
(history-channel->string (-> sv-40 channel))
(-> sv-40 vector x)
(-> sv-40 vector y)
(-> sv-40 vector z)
)
)
((= v1-22 (history-channel pat))
(let* ((s2-0 (-> sv-40 vector x))
(s5-2 format)
(s4-2 sv-16)
(s3-2 "~-15S: #x~6X mode:~-8S material:~-10S event:~S~%")
(s1-0 (history-channel->string (-> sv-40 channel)))
(s0-0 s2-0)
)
(set! sv-80 (pat-mode->string (the-as pat-surface s2-0)))
(set! sv-96 (pat-material->string (the-as pat-surface s2-0)))
(let ((t2-0 (pat-event->string (the-as pat-surface s2-0))))
(s5-2 s4-2 s3-2 s1-0 s0-0 sv-80 sv-96 t2-0)
)
)
)
((= v1-22 (history-channel collide-status))
(set! sv-64 (-> sv-40 collide-status))
(set! sv-72 (-> sv-40 vector z))
(format sv-16 "~-15S: #x~6X " (history-channel->string (-> sv-40 channel)) sv-64)
(let ((s5-4 sv-64))
(if (= (logand s5-4 (collide-status touch-background)) (collide-status touch-background))
(format sv-16 "touch-background ")
)
(if (= (logand s5-4 (collide-status on-special-surface)) (collide-status on-special-surface))
(format sv-16 "on-special-surface ")
)
(if (= (logand s5-4 (collide-status touch-wall)) (collide-status touch-wall))
(format sv-16 "touch-wall ")
)
(if (= (logand s5-4 (collide-status on-surface)) (collide-status on-surface))
(format sv-16 "on-surface ")
)
(if (= (logand s5-4 (collide-status impact-surface)) (collide-status impact-surface))
(format sv-16 "impact-surface ")
)
(if (= (logand s5-4 (collide-status touch-ceiling)) (collide-status touch-ceiling))
(format sv-16 "touch-ceiling ")
)
(if (= (logand s5-4 (collide-status on-ground)) (collide-status on-ground))
(format sv-16 "on-ground ")
)
(if (= (logand s5-4 (collide-status glance)) (collide-status glance))
(format sv-16 "glance ")
)
(if (= (logand s5-4 (collide-status blocked)) (collide-status blocked))
(format sv-16 "blocked ")
)
(if (= (logand s5-4 (collide-status touch-edge)) (collide-status touch-edge))
(format sv-16 "touch-edge ")
)
(if (= (logand s5-4 (collide-status touch-ceiling-sticky)) (collide-status touch-ceiling-sticky))
(format sv-16 "touch-ceiling-sticky ")
)
(if (= (logand s5-4 (collide-status on-water)) (collide-status on-water))
(format sv-16 "on-water ")
)
(if (= (logand s5-4 (collide-status touch-actor)) (collide-status touch-actor))
(format sv-16 "touch-actor ")
)
(if (= (logand (collide-status probe-hit) s5-4) (collide-status probe-hit))
(format sv-16 "probe-hit ")
)
(if (= (logand s5-4 (collide-status stuck)) (collide-status stuck))
(format sv-16 "stuck ")
)
(if (= (logand s5-4 (collide-status no-touch)) (collide-status no-touch))
(format sv-16 "no-touch ")
)
(if (= (logand s5-4 (collide-status touch-surface)) (collide-status touch-surface))
(format sv-16 "touch-surface ")
)
)
(format sv-16 " #x~6X~%" sv-72)
)
((= v1-22 (history-channel friction))
(let ((f30-0 (-> sv-40 vector x)))
(format sv-16 "~-15S: ~f~%" (history-channel->string (-> sv-40 channel)) f30-0)
)
)
)
)
)
)
#f
(label cfg-71)
0
(none)
)
)
+1 -1
View File
@@ -16,7 +16,7 @@
(bit-5 5)
(subtask-complete 6)
(bit-7 7)
(bit-8 8)
(complete 8)
(bit-9 9)
(bit-10 10)
)
+98 -98
View File
@@ -13,7 +13,7 @@
(defenum mc-status-code
:type uint32
; (busy 0)
; (ok 1)
(ok 1)
; (bad-handle 2)
; (format-failed 3)
; (internal-error 4)
@@ -197,7 +197,7 @@
(:methods
(continue-point-method-9 () none 9)
(continue-point-method-10 () none 10)
(continue-point-method-11 () none 11)
(continue-point-method-11 (_type_) none 11)
)
)
@@ -227,100 +227,100 @@
)
(deftype game-info (basic)
((mode symbol :offset-assert 4)
(save-name basic :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features uint64 :offset-assert 128)
(debug-features uint64 :offset-assert 136)
(secrets uint32 :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue basic :offset-assert 244)
(unknown-pad3 uint32 3 :offset-assert 248)
(task-counter uint32 :offset-assert 260)
(unknown-pad4 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score basic :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
((mode symbol :offset-assert 4)
(save-name string :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features uint64 :offset-assert 128)
(debug-features uint64 :offset-assert 136)
(secrets uint32 :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue continue-point :offset-assert 244)
(unknown-pad3 uint32 3 :offset-assert 248)
(task-counter uint32 :offset-assert 260)
(unknown-pad4 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score (array highscore-info) :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
)
:method-count-assert 31
:size-assert #x25c
@@ -328,8 +328,8 @@
(:methods
(initialize! (_type_ symbol game-save string) _type_ 9)
(game-info-method-10 () none 10)
(game-info-method-11 () none 11)
(game-info-method-12 () none 12)
(task-complete? (_type_ game-task) symbol 11)
(game-info-method-12 (_type_) none 12)
(game-info-method-13 () none 13)
(game-info-method-14 () none 14)
(game-info-method-15 () none 15)
+3
View File
@@ -5,5 +5,8 @@
;; name in dgo: settings
;; dgos: ENGINE, GAME
;; NOTE - for text
(define-extern *setting-control* setting-control)
;; DECOMP BEGINS
+376
View File
@@ -7,3 +7,379 @@
;; DECOMP BEGINS
(defmethod ray-capsule-intersect cylinder ((obj cylinder) (ray1 vector) (ray2 vector))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
)
(init-vf0-vector)
(let ((t2-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
)
0.0
0.0
(let ((f30-0 (ray-cylinder-intersect ray1 ray2 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) t2-0))
)
(let ((f0-5 (ray-sphere-intersect ray1 ray2 (-> obj origin) (-> obj radius))))
(if (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0)))
(set! f30-0 f0-5)
)
)
(let ((v1-5 s4-0))
(let ((a0-3 (-> obj origin))
(a1-3 (-> obj axis))
(f0-6 (-> obj length))
)
(.lvf vf2 (&-> a1-3 quad))
(.lvf vf1 (&-> a0-3 quad))
(let ((a0-4 f0-6))
(.mov vf3 a0-4)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-5 quad) vf4)
)
(let ((f0-8 (ray-sphere-intersect ray1 ray2 s4-0 (-> obj radius))))
(if (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0)))
(set! f30-0 f0-8)
)
)
f30-0
)
)
)
)
(deftype cylinder-verts (structure)
((vert vector 24 :inline :offset-assert 0)
)
:method-count-assert 9
:size-assert #x180
:flag-assert #x900000180
)
(defmethod debug-draw cylinder ((obj cylinder) (arg0 vector4w))
(local-vars
(sv-896 matrix)
(sv-912 vector)
(sv-928 vector)
(sv-944 vector)
(sv-960 vector)
(sv-976 vector)
(sv-992 vector)
(sv-1008 vector)
(sv-1024 vector)
(sv-1040 vector)
(sv-1056 vector)
(sv-1072 vector)
(sv-1088 vector)
)
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s1-0 (new 'stack-no-clear 'vector))
(s0-0 (new 'stack-no-clear 'vector))
)
(if (< 0.999 (fabs (-> obj axis y)))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :z 1.0))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :y 1.0))
)
(vector-normalize! s1-0 (-> obj radius))
(vector-float*! s0-0 (-> obj axis) (* 0.125 (-> obj length)))
(let ((s5-0 (new 'stack-no-clear 'cylinder-verts))
(s4-0 (new 'stack-no-clear 'cylinder-verts))
(s3-0 (new 'stack-no-clear 'matrix))
)
(matrix-axis-angle! s3-0 (-> obj axis) 4096.0)
(set! sv-896 (new 'stack-no-clear 'matrix))
(vector-matrix*! (the-as vector sv-896) (-> obj origin) s3-0)
(let ((v1-6 (-> s3-0 trans)))
(.lvf vf4 (&-> (-> obj origin) quad))
(.lvf vf5 (&-> sv-896 vector 0 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-6 quad) vf6)
)
(dotimes (v1-7 8)
(vector+! (-> s5-0 vert (+ v1-7 8)) (-> obj origin) s1-0)
(let ((a0-16 (-> s5-0 vert (+ v1-7 8))))
(let ((a1-13 (-> s5-0 vert (+ v1-7 8)))
(a2-4 s0-0)
(f0-5 (the float v1-7))
)
(.lvf vf2 (&-> a2-4 quad))
(.lvf vf1 (&-> a1-13 quad))
(let ((a1-14 f0-5))
(.mov vf3 a1-14)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> a0-16 quad) vf4)
)
)
(dotimes (s0-1 8)
(set! sv-944 (-> s5-0 vert s0-1))
(set! sv-912 (-> obj origin))
(set! sv-928 s1-0)
(let ((f0-8 (cos (* 2048.0 (the float (- 7 s0-1))))))
(.lvf vf2 (&-> sv-928 quad))
(.lvf vf1 (&-> sv-912 quad))
(let ((v1-19 f0-8))
(.mov vf3 v1-19)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-944 quad) vf4)
(set! sv-992 (-> s5-0 vert s0-1))
(set! sv-960 (-> s5-0 vert s0-1))
(set! sv-976 (-> obj axis))
(let ((f0-13 (* (- (-> obj radius)) (sin (* 2048.0 (the float (- 7 s0-1)))))))
(.lvf vf2 (&-> sv-976 quad))
(.lvf vf1 (&-> sv-960 quad))
(let ((v1-33 f0-13))
(.mov vf3 v1-33)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-992 quad) vf4)
(set! sv-1040 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1008 (-> obj origin))
(set! sv-1024 s1-0)
(let ((f0-16 (cos (* 2048.0 (the float s0-1)))))
(.lvf vf2 (&-> sv-1024 quad))
(.lvf vf1 (&-> sv-1008 quad))
(let ((v1-43 f0-16))
(.mov vf3 v1-43)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-1040 quad) vf4)
(set! sv-1088 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1056 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1072 (-> obj axis))
(let ((f0-21 (+ (-> obj length) (* (-> obj radius) (sin (* 2048.0 (the float s0-1)))))))
(.lvf vf2 (&-> sv-1072 quad))
(.lvf vf1 (&-> sv-1056 quad))
(let ((v1-57 f0-21))
(.mov vf3 v1-57)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-1088 quad) vf4)
)
(dotimes (s2-1 16)
(dotimes (s1-1 24)
(vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0)
(camera-line (-> s5-0 vert s1-1) (-> s4-0 vert s1-1) arg0)
(if (nonzero? s1-1)
(camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0)
)
)
(let ((v1-77 s5-0))
(set! s5-0 s4-0)
(set! s4-0 v1-77)
)
)
)
)
0
(none)
)
)
(defun ray-arbitrary-circle-intersect ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float))
(let* ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg2 arg0))
(f0-2 (/ (vector-dot v1-1 arg3) (vector-dot arg1 arg3)))
)
(cond
((or (< 1.0 f0-2) (< f0-2 0.0))
-100000000.0
)
((let ((a0-8 (new 'stack-no-clear 'vector)))
(vector-float*! a0-8 arg1 f0-2)
(vector-! a0-8 a0-8 v1-1)
(< (vector-dot a0-8 a0-8) (* arg4 arg4))
)
f0-2
)
(else
-100000000.0
)
)
)
)
(defmethod ray-flat-cyl-intersect cylinder-flat ((obj cylinder-flat) (arg0 vector) (arg1 vector))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
)
0.0
0.0
(let ((f30-0 (ray-cylinder-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) gp-0))
)
(let ((f0-5 (ray-arbitrary-circle-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius))))
(when (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0)))
(set! f30-0 f0-5)
(set! (-> gp-0 quad) (-> obj origin quad))
)
)
(let ((v1-5 s5-0))
(let ((a0-5 (-> obj origin))
(a1-3 (-> obj axis))
(f0-6 (-> obj length))
)
(.lvf vf2 (&-> a1-3 quad))
(.lvf vf1 (&-> a0-5 quad))
(let ((a0-6 f0-6))
(.mov vf3 a0-6)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-5 quad) vf4)
)
(let ((f0-8 (ray-arbitrary-circle-intersect arg0 arg1 s5-0 (-> obj axis) (-> obj radius))))
(when (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0)))
(set! f30-0 f0-8)
(set! (-> gp-0 quad) (-> s5-0 quad))
)
)
f30-0
)
)
)
)
(deftype cylinder-flat-verts (structure)
((vert vector 10 :inline :offset-assert 0)
)
:method-count-assert 9
:size-assert #xa0
:flag-assert #x9000000a0
)
(defmethod debug-draw cylinder-flat ((obj cylinder-flat) (arg0 vector4w))
(local-vars (sv-448 vector))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s1-0 (new 'stack-no-clear 'vector))
(s0-0 (new 'stack-no-clear 'vector))
)
(if (< 0.999 (fabs (-> obj axis y)))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :z 1.0))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :y 1.0))
)
(vector-normalize! s1-0 (-> obj radius))
(vector-float*! s0-0 (-> obj axis) (* 0.14285715 (-> obj length)))
(let ((s5-0 (new 'stack-no-clear 'cylinder-flat-verts))
(s4-0 (new 'stack-no-clear 'cylinder-flat-verts))
(s3-0 (new 'stack-no-clear 'matrix))
)
(matrix-axis-angle! s3-0 (-> obj axis) 4096.0)
(set! sv-448 (new 'stack-no-clear 'vector))
(vector-matrix*! sv-448 (-> obj origin) s3-0)
(let ((v1-6 (-> s3-0 trans)))
(.lvf vf4 (&-> (-> obj origin) quad))
(.lvf vf5 (&-> sv-448 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-6 quad) vf6)
)
(dotimes (v1-7 8)
(vector+! (-> s5-0 vert (+ v1-7 1)) (-> obj origin) s1-0)
(let ((a0-16 (-> s5-0 vert (+ v1-7 1))))
(let ((a1-13 (-> s5-0 vert (+ v1-7 1)))
(a2-4 s0-0)
(f0-5 (the float v1-7))
)
(.lvf vf2 (&-> a2-4 quad))
(.lvf vf1 (&-> a1-13 quad))
(let ((a1-14 f0-5))
(.mov vf3 a1-14)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> a0-16 quad) vf4)
)
)
(set! (-> s5-0 vert 0 quad) (-> obj origin quad))
(let ((v1-11 (-> s5-0 vert 9)))
(let ((a0-19 (-> obj origin))
(a1-15 (-> obj axis))
(f0-6 (-> obj length))
)
(.lvf vf2 (&-> a1-15 quad))
(.lvf vf1 (&-> a0-19 quad))
(let ((a0-20 f0-6))
(.mov vf3 a0-20)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-11 quad) vf4)
)
(dotimes (s2-1 16)
(dotimes (s1-1 10)
(vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0)
(camera-line (-> s5-0 vert s1-1) (-> s4-0 vert s1-1) arg0)
(if (nonzero? s1-1)
(camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0)
)
)
(let ((v1-28 s5-0))
(set! s5-0 s4-0)
(set! s4-0 v1-28)
)
)
)
)
0
(none)
)
)
+10 -7
View File
@@ -88,6 +88,8 @@
(movie2 18) ;; 0x40000
)
(declare-type game-text-id uint32)
;; DECOMP BEGINS
(deftype level-vis-info (basic)
@@ -126,14 +128,14 @@
(other-name-1 symbol :offset 24)
(packages pair :offset-assert 32)
(memory-mode uint32 :offset-assert 36)
(music-bank basic :offset-assert 40)
(ambient-sounds basic :offset-assert 44)
(music-bank symbol :offset-assert 40)
(ambient-sounds symbol :offset-assert 44)
(sound-reverb float :offset-assert 48)
(mood-func symbol :offset-assert 52)
(mood-init symbol :offset-assert 56)
(ocean basic :offset-assert 60)
(sky basic :offset-assert 64)
(use-camera-other basic :offset-assert 68)
(ocean symbol :offset-assert 60)
(sky symbol :offset-assert 64)
(use-camera-other symbol :offset-assert 68)
(part-engine-max int32 :offset-assert 72)
(city-map-bits uint64 :offset-assert 80)
(continues pair :offset-assert 88)
@@ -154,7 +156,7 @@
(kill-func symbol :offset-assert 156)
(borrow-size uint16 2 :offset-assert 160)
(borrow-level symbol 2 :offset-assert 164)
(borrow-display? basic 2 :offset-assert 172)
(borrow-display? symbol 2 :offset-assert 172)
(base-task-mask task-mask :offset-assert 180)
(texture-anim symbol 10 :offset-assert 184)
(texture-anim-tfrag symbol :offset 184)
@@ -179,6 +181,7 @@
(ocean-alpha float :offset-assert 280)
(extra-sound-bank pair :offset-assert 284)
)
:pack-me
:method-count-assert 9
:size-assert #x120
:flag-assert #x900000120
@@ -287,7 +290,7 @@
(debug-print-region-splitbox (_type_ vector object) none 20)
(get-art-group-by-name (_type_ string) art-group 21)
(level-method-22 () none 22)
(level-method-23 () none 23)
(lookup-text (_type_ game-text-id symbol) string 23)
(level-method-24 () none 24)
(birth (_type_) _type_ 25)
(level-status-update! (_type_ symbol) _type_ 26)
+1 -1
View File
@@ -45,7 +45,7 @@
(new (symbol type process-drawable int float collide-spec) _type_ 0)
(initialize (_type_ process-drawable int float collide-spec) impact-control :behavior process 9)
(update-from-cspace (_type_) none 10)
(impact-control-method-11 () none 11)
(impact-control-method-11 (_type_) none 11)
)
)
@@ -7,3 +7,101 @@
;; DECOMP BEGINS
(deftype mech-info (basic)
((entity basic :offset-assert 4)
(hud uint64 1 :offset-assert 8)
(mech-trans vector :inline :offset-assert 16)
(mech-quat vector :inline :offset-assert 32)
(mech-scale vector :inline :offset-assert 48)
(engine-sound-id uint32 :offset-assert 64)
(engine-sound-volume float :offset-assert 68)
(engine-sound-pitch float :offset-assert 72)
(thrust-sound-id uint32 :offset-assert 76)
(drag-sound-id uint32 :offset-assert 80)
(whine-sound-id uint32 :offset-assert 84)
(mech-start-time time-frame :offset-assert 88)
(mech-time time-frame :offset-assert 96)
(no-get-off-time time-frame :offset-assert 104)
(stick-lock basic :offset-assert 112)
(stick-off basic :offset-assert 116)
(forward-vel meters :offset-assert 120)
(jump-thrust meters :offset-assert 124)
(jump-thrust-fuel float :offset-assert 128)
(unstuck-time time-frame :offset-assert 136)
(stuck-count int32 :offset-assert 144)
(back-touch-point vector :inline :offset-assert 160)
(back-touch-trans vector :inline :offset-assert 176)
(back-touch-time time-frame :offset-assert 192)
(attack-id uint32 :offset-assert 200)
(shield-value float :offset-assert 204)
(shield-max float :offset-assert 208)
(walk-anim-leg int32 :offset-assert 212)
(state-impact? symbol 1 :offset-assert 216)
(state-impact impact-control 1 :inline :offset-assert 224)
(thruster-flame-width meters :offset-assert 304)
(thruster-flame-length meters :offset-assert 308)
(thruster-local-pos vector 2 :inline :offset-assert 320)
(exhaust-local-pos vector 2 :inline :offset-assert 352)
(exhaust-local-dir vector 2 :inline :offset-assert 384)
(smoke-local-pos vector 2 :inline :offset-assert 416)
(smoke-local-vel vector 2 :inline :offset-assert 448)
(particle-system-2d basic :offset-assert 480)
(particle-system-3d basic :offset-assert 484)
(part-thruster basic :offset-assert 488)
(part-thruster-scale-x sp-field-init-spec :offset-assert 492)
(part-thruster-scale-y sp-field-init-spec :offset-assert 496)
(part-quat quaternion :offset-assert 500)
(part-vel vector :offset-assert 504)
)
:method-count-assert 9
:size-assert #x1fc
:flag-assert #x9000001fc
)
(let ((a0-2 (new 'static 'skeleton-group
:name "skel-mech"
:extra #f
:info #f
:art-group-name "mech"
:bounds (new 'static 'vector :w 18432.0)
:version #x7
:shadow 2
:origin-joint-index 3
:shadow-joint-index 3
)
)
)
(set! (-> a0-2 jgeo) 0)
(set! (-> a0-2 janim) 3)
(set! (-> a0-2 mgeo 0) 1)
(set! (-> a0-2 lod-dist 0) 4095996000.0)
(add-to-loading-level a0-2)
)
(define *mech-shadow-control*
(new 'static 'shadow-control :settings (new 'static 'shadow-settings
:center (new 'static 'vector :w (the-as float #xa))
:shadow-dir (new 'static 'vector :y -1.0 :w 614400.0)
:bot-plane (new 'static 'plane :y 1.0 :w 81920.0)
:top-plane (new 'static 'plane :y 1.0 :w 2048.0)
)
)
)
(let ((a0-3 (new 'static 'skeleton-group
:name "skel-mech-explode"
:extra #f
:info #f
:art-group-name "mech"
:bounds (new 'static 'vector :w 18432.0)
:version #x7
:origin-joint-index 3
)
)
)
(set! (-> a0-3 jgeo) 39)
(set! (-> a0-3 janim) 41)
(set! (-> a0-3 mgeo 0) 40)
(set! (-> a0-3 lod-dist 0) 4095996000.0)
(add-to-loading-level a0-3)
)
+4 -4
View File
@@ -18,10 +18,10 @@
)
(deftype game-text-info (basic)
((length int32 :offset-assert 4)
(language-id int32 :offset-assert 8)
(group-name string :offset-assert 12)
(data game-text :dynamic :offset-assert 16)
((length int32 :offset-assert 4)
(language-id int32 :offset-assert 8)
(group-name string :offset-assert 12)
(data game-text :inline :dynamic :offset-assert 16)
)
:method-count-assert 10
:size-assert #x10
+3 -3
View File
@@ -11,9 +11,9 @@
;; DECOMP BEGINS
(deftype script-form (structure)
((name basic :offset-assert 0)
(spec basic :offset-assert 4)
(func basic :offset-assert 8)
((name string :offset-assert 0)
(spec basic :offset-assert 4)
(func basic :offset-assert 8)
)
:method-count-assert 10
:size-assert #xc
+7 -7
View File
@@ -36,13 +36,13 @@
:size-assert #x10
:flag-assert #x1000000010
(:methods
(sync-info-method-9 () none 9)
(sync-info-method-10 () none 10)
(sync-info-method-11 () none 11)
(sync-info-method-12 () none 12)
(sync-info-method-13 () none 13)
(sync-info-method-14 () none 14)
(sync-info-method-15 () none 15)
(sync-info-method-9 (_type_) none 9)
(get-phase-offset (_type_) float 10)
(get-norm! (_type_) float 11)
(multiply-norm! (_type_ float object) float 12)
(initialize! () none 13)
(sync-info-method-14 (_type_ time-frame) time-frame 14)
(sync-info-method-15 (_type_ float) none 15)
)
)
+516
View File
@@ -0,0 +1,516 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol *font12-table*, type (inline-array vector)
(define *font12-table* (new 'static 'inline-array vector 250
(new 'static 'vector :x 0.0039 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.1914 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.2851 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.3789 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.4726 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.6601 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.7539 :y 0.0322 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.8476 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.0634 :z 1.0 :w 22.5)
(new 'static 'vector :x 0.1914 :y 0.0634 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.2851 :y 0.0634 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.3789 :y 0.0634 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.0634 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.6601 :y 0.0634 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.7539 :y 0.0634 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.8476 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.0947 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.0976 :y 0.0947 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.1914 :y 0.0947 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.2851 :y 0.0947 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.3789 :y 0.0947 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.0947 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.5664 :y 0.0947 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.0947 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.7539 :y 0.0947 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.8476 :y 0.0947 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0039 :y 0.1259 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.0976 :y 0.1259 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.1914 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.2851 :y 0.1259 :z 1.0 :w 11.25)
(new 'static 'vector :x 0.3789 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.4726 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.5664 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.6601 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.7539 :y 0.1259 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.8476 :y 0.1259 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0039 :y 0.1572 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0976 :y 0.1572 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.1914 :y 0.1572 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.2851 :y 0.1572 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.3789 :y 0.1572 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.1572 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.5664 :y 0.1572 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.1572 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.7539 :y 0.1572 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.8476 :y 0.1572 :z 1.0 :w 17.25)
(new 'static 'vector :x 0.0039 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.1884 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.1914 :y 0.1884 :z 1.0 :w 15.75)
(new 'static 'vector :x 0.2851 :y 0.1884 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.3789 :y 0.1884 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.4726 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.1884 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.6601 :y 0.1884 :z 1.0 :w 7.5)
(new 'static 'vector :x 0.7539 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.8476 :y 0.1884 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.2197 :z 1.0 :w 15.75)
(new 'static 'vector :x 0.0976 :y 0.2197 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.1914 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.2851 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.3789 :y 0.2197 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.2197 :z 1.0 :w 15.75)
(new 'static 'vector :x 0.6601 :y 0.2197 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.7539 :y 0.2197 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.8476 :y 0.2197 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0039 :y 0.2509 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.0976 :y 0.2509 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.1914 :y 0.2509 :z 1.0 :w 17.25)
(new 'static 'vector :x 0.2851 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.3789 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.2509 :z 1.0 :w 9.0)
(new 'static 'vector :x 0.5664 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.6601 :y 0.2509 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.7539 :y 0.2509 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.8476 :y 0.2509 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0039 :y 0.2822 :z 1.0 :w 6.0)
(new 'static 'vector :x 0.0976 :y 0.2822 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.1914 :y 0.2822 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.2851 :y 0.2822 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.3789 :y 0.2822 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.2822 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.5664 :y 0.2822 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.6601 :y 0.2822 :z 1.0 :w 17.25)
(new 'static 'vector :x 0.7539 :y 0.2822 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.8476 :y 0.2822 :z 1.0 :w 9.0)
(new 'static 'vector :x 0.0039 :y 0.3134 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0976 :y 0.3134 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.1914 :y 0.3134 :z 1.0 :w 9.75)
(new 'static 'vector :x 0.2851 :y 0.3134 :z 1.0 :w 18.5)
(new 'static 'vector :x 0.3789 :y 0.3134 :z 1.0 :w 14.25)
(new 'static 'vector :x 0.4726 :y 0.3134 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.5664 :y 0.3134 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.6601 :y 0.3134 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.7539 :y 0.3134 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.8476 :y 0.3134 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.0039 :y 0.3447 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0976 :y 0.3447 :z 1.0 :w 12.75)
(new 'static 'vector :x 0.1914 :y 0.3447 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.2851 :y 0.3447 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.3789 :y 0.3447 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.4726 :y 0.3447 :z 1.0 :w 16.5)
(new 'static 'vector :x 0.5664 :y 0.3447 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.3447 :z 1.0 :w 10.5)
(new 'static 'vector :x 0.7539 :y 0.3447 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.3447 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0039 :y 0.3759 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.0976 :y 0.3759 :z 1.0 :w 13.5)
(new 'static 'vector :x 0.1914 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.3759 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.4072 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.4384 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.4697 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7509 :z 1.0 :w 16.0)
)
)
;; definition for symbol *font24-table*, type (inline-array vector)
(define *font24-table* (new 'static 'inline-array vector 250
(new 'static 'vector :x 0.0039 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.0009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0976 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.1914 :y 0.0322 :z 1.0 :w 19.5)
(new 'static 'vector :x 0.2851 :y 0.0322 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.3789 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.4726 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.5664 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.6601 :y 0.0322 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.7539 :y 0.0322 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.8476 :y 0.0322 :z 1.0 :w 12.0)
(new 'static 'vector :x 0.0039 :y 0.0634 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.0634 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.1914 :y 0.0634 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.2851 :y 0.0634 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.0634 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.4726 :y 0.0634 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.0634 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.6601 :y 0.0634 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.7539 :y 0.0634 :z 1.0 :w 17.0)
(new 'static 'vector :x 0.8476 :y 0.0634 :z 1.0 :w 17.5)
(new 'static 'vector :x 0.0039 :y 0.0947 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.0947 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.1914 :y 0.0947 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.0947 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.0947 :z 1.0 :w 14.0)
(new 'static 'vector :x 0.4726 :y 0.0947 :z 1.0 :w 14.0)
(new 'static 'vector :x 0.5664 :y 0.0947 :z 1.0 :w 22.5)
(new 'static 'vector :x 0.6601 :y 0.0947 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.7539 :y 0.0947 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.8476 :y 0.0947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.1259 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.0976 :y 0.1259 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.1914 :y 0.1259 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.1259 :z 1.0 :w 14.0)
(new 'static 'vector :x 0.3789 :y 0.1259 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.4726 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.5664 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.6601 :y 0.1259 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.7539 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.8476 :y 0.1259 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.0039 :y 0.1572 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.0976 :y 0.1572 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.1914 :y 0.1572 :z 1.0 :w 11.0)
(new 'static 'vector :x 0.2851 :y 0.1572 :z 1.0 :w 20.0)
(new 'static 'vector :x 0.3789 :y 0.1572 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.4726 :y 0.1572 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.5664 :y 0.1572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.1572 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.7539 :y 0.1572 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.8476 :y 0.1572 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.0039 :y 0.1884 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.0976 :y 0.1884 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.1914 :y 0.1884 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.2851 :y 0.1884 :z 1.0 :w 19.0)
(new 'static 'vector :x 0.3789 :y 0.1884 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.4726 :y 0.1884 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.5664 :y 0.1884 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.6601 :y 0.1884 :z 1.0 :w 10.0)
(new 'static 'vector :x 0.7539 :y 0.1884 :z 1.0 :w 19.0)
(new 'static 'vector :x 0.8476 :y 0.1884 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.2197 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0976 :y 0.2197 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.1914 :y 0.2197 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.2851 :y 0.2197 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.3789 :y 0.2197 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.4726 :y 0.2197 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.5664 :y 0.2197 :z 1.0 :w 19.0)
(new 'static 'vector :x 0.6601 :y 0.2197 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.7539 :y 0.2197 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.8476 :y 0.2197 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.0039 :y 0.2509 :z 1.0 :w 26.0)
(new 'static 'vector :x 0.0976 :y 0.2509 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.1914 :y 0.2509 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.2851 :y 0.2509 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.3789 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.2509 :z 1.0 :w 15.0)
(new 'static 'vector :x 0.5664 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.2509 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.8476 :y 0.2509 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.2822 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.1914 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.2851 :y 0.2822 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.2822 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.5664 :y 0.2822 :z 1.0 :w 17.0)
(new 'static 'vector :x 0.6601 :y 0.2822 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.7539 :y 0.2822 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.8476 :y 0.2822 :z 1.0 :w 10.0)
(new 'static 'vector :x 0.0039 :y 0.3134 :z 1.0 :w 18.0)
(new 'static 'vector :x 0.0976 :y 0.3134 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.1914 :y 0.3134 :z 1.0 :w 10.0)
(new 'static 'vector :x 0.2851 :y 0.3134 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.3789 :y 0.3134 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.4726 :y 0.3134 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.5664 :y 0.3134 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.3134 :z 1.0 :w 25.0)
(new 'static 'vector :x 0.7539 :y 0.3134 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.3134 :z 1.0 :w 17.0)
(new 'static 'vector :x 0.0039 :y 0.3447 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.3447 :z 1.0 :w 22.0)
(new 'static 'vector :x 0.1914 :y 0.3447 :z 1.0 :w 21.0)
(new 'static 'vector :x 0.2851 :y 0.3447 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.3789 :y 0.3447 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.4726 :y 0.3447 :z 1.0 :w 23.0)
(new 'static 'vector :x 0.5664 :y 0.3447 :z 1.0 :w 20.0)
(new 'static 'vector :x 0.6601 :y 0.3447 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.3447 :z 1.0 :w 27.0)
(new 'static 'vector :x 0.8476 :y 0.3447 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.3759 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.4072 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.4384 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0976 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.1914 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.2851 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.3789 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.4726 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.5664 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.6601 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.7539 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.8476 :y 0.4697 :z 1.0 :w 24.0)
(new 'static 'vector :x 0.0039 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5009 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5322 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5634 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.5947 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6259 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6572 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.6884 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7197 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0039 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.0976 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.1914 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.2851 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.3789 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.4726 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.5664 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.6601 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.7539 :y 0.7509 :z 1.0 :w 16.0)
(new 'static 'vector :x 0.8476 :y 0.7509 :z 1.0 :w 16.0)
)
)
+951
View File
@@ -0,0 +1,951 @@
;;-*-Lisp-*-
(in-package goal)
;; this file is debug only
(declare-file (debug))
(when *debug-segment*
;; definition for function history-channel->string
(defun history-channel->string ((arg0 history-channel))
(case arg0
(((history-channel friction))
"friction"
)
(((history-channel transv-out))
"transv-out"
)
(((history-channel pat))
"pat"
)
(((history-channel transv-in))
"transv-in"
)
(((history-channel trans))
"trans"
)
(((history-channel local-normal))
"local-normal"
)
(((history-channel collide-status))
"collide-status"
)
(((history-channel time))
"time"
)
(((history-channel intersect))
"intersect"
)
(((history-channel surface-normal))
"surface-normal"
)
(((history-channel transv))
"transv"
)
(else
"*unknown*"
)
)
)
;; definition of type history-elt
(deftype history-elt (structure)
((record-tag-bytes uint8 4 :offset-assert 0)
(record-tag uint32 :offset 0)
(record-id uint16 :offset 0)
(owner uint8 :offset 2)
(channel history-channel :offset-assert 4)
(timestamp time-frame :offset-assert 8)
(origin vector :inline :offset-assert 16)
(bytes uint8 16 :offset-assert 32)
(vector vector :inline :offset 32)
(float float :offset 32)
(collide-status collide-status :offset 32)
(collide-reaction-flag uint32 :offset 40)
(pat pat-surface :offset 32)
)
:method-count-assert 9
:size-assert #x30
:flag-assert #x900000030
)
;; definition for method 3 of type history-elt
(defmethod inspect history-elt ((obj history-elt))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'history-elt)
(format #t "~1Trecord-tag-bytes[4] @ #x~X~%" (-> obj record-tag-bytes))
(format #t "~1Trecord-tag: ~D~%" (-> obj record-tag))
(format #t "~1Trecord-id: ~D~%" (-> obj record-id))
(format #t "~1Towner: ~D~%" (-> obj owner))
(format #t "~1Tchannel: ~D~%" (-> obj channel))
(format #t "~1Ttimestamp: ~D~%" (-> obj timestamp))
(format #t "~1Torigin: #<vector @ #x~X>~%" (-> obj origin))
(format #t "~1Tbytes[16] @ #x~X~%" (-> obj bytes))
(format #t "~1Tvector: #<vector @ #x~X>~%" (-> obj bytes))
(format #t "~1Tfloat: ~f~%" (-> obj vector x))
(format #t "~1Tcollide-status: ~D~%" (-> obj collide-status))
(format #t "~1Tcollide-reaction-flag: ~D~%" (-> obj vector z))
(format #t "~1Tpat: ~D~%" (-> obj vector x))
(label cfg-4)
obj
)
;; definition of type history-iterator
(deftype history-iterator (basic)
((max-age uint32 :offset-assert 4)
(owner uint8 :offset-assert 8)
(proc process :offset-assert 12)
(out basic :offset-assert 16)
(channel-mask uint64 :offset-assert 24)
(index int32 :offset-assert 32)
(done? symbol :offset-assert 36)
)
:method-count-assert 12
:size-assert #x28
:flag-assert #xc00000028
(:methods
(new (symbol type uint32) _type_ 0)
(frame-counter-delta (_type_ history-elt) time-frame 9)
(update-entries! (_type_) history-elt 10)
(history-iterator-method-11 (_type_ history-elt) float 11)
)
)
;; definition for method 3 of type history-iterator
(defmethod inspect history-iterator ((obj history-iterator))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~1Tmax-age: ~D~%" (-> obj max-age))
(format #t "~1Towner: ~D~%" (-> obj owner))
(format #t "~1Tproc: ~A~%" (-> obj proc))
(format #t "~1Tout: ~A~%" (-> obj out))
(format #t "~1Tchannel-mask: ~D~%" (-> obj channel-mask))
(format #t "~1Tindex: ~D~%" (-> obj index))
(format #t "~1Tdone?: ~A~%" (-> obj done?))
(label cfg-4)
obj
)
;; definition of type history
(deftype history (basic)
((alloc-index int32 :offset-assert 4)
(allocated-length int32 :offset-assert 8)
(elts history-elt :inline :dynamic :offset 16)
)
:method-count-assert 11
:size-assert #x10
:flag-assert #xb00000010
(:methods
(new (symbol type int) _type_ 0)
(clear-record-tags! (_type_ history-channel uint uint) history-elt 9)
(clear-history-entries! (_type_) none 10)
)
)
;; definition for method 3 of type history
(defmethod inspect history ((obj history))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~1Talloc-index: ~D~%" (-> obj alloc-index))
(format #t "~1Tallocated-length: ~D~%" (-> obj allocated-length))
(format #t "~1Telts[0] @ #x~X~%" (-> obj elts))
(label cfg-4)
obj
)
;; definition for method 4 of type history
(defmethod length history ((obj history))
(-> obj allocated-length)
)
;; definition for method 5 of type history
;; INFO: Return type mismatch uint vs int.
(defmethod asize-of history ((obj history))
(the-as int (+ (-> obj type size) (* 48 (-> obj allocated-length))))
)
;; definition for method 0 of type history
(defmethod new history ((allocation symbol) (type-to-make type) (arg0 int))
(let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 arg0))))))
(set! (-> v0-0 allocated-length) arg0)
v0-0
)
)
;; definition for method 10 of type history
;; INFO: Return type mismatch int vs none.
(defmethod clear-history-entries! history ((obj history))
"Iterates through each [[history-elt]] in the `elt` dynamic array
For each entry:
- clear `timestamp`
- clear `record-tag`"
(set! (-> obj alloc-index) 0)
(countdown (v1-0 (-> obj allocated-length))
(let ((a1-3 (-> obj elts v1-0)))
(set! (-> a1-3 record-tag) (the-as uint 0))
(set! (-> a1-3 timestamp) 0)
)
0
)
0
(none)
)
;; definition (perm) for symbol *history*, type history
(define-perm *history* history (new 'debug 'history 4096))
;; failed to figure out what this is:
(clear-history-entries! *history*)
;; definition for method 9 of type history
;; WARN: new jak 2 until loop case, check carefully
(defmethod clear-record-tags! history ((obj history) (arg0 history-channel) (arg1 uint) (arg2 uint))
"First grab the latest [[history-elt]] at `alloc-index`
1. update it's `channel`, `record-id` and `owner` from the provided args
2. - if it's `record-tag` is zero -- return it
- otherwise, iterate through all `elts` until one is found that does not match it's `timestamp`
- if not `0` out the `record-tag` for that elt and continue iteration"
(let* ((t1-0 (-> obj alloc-index))
(v1-0 (-> obj elts))
(v0-0 (-> v1-0 t1-0))
)
(let ((t2-0 (-> v0-0 record-tag))
(t0-2 (-> v0-0 timestamp))
)
(set! (-> v0-0 channel) arg0)
(set! (-> v0-0 record-id) arg1)
(set! (-> v0-0 owner) arg2)
(set! (-> v0-0 timestamp) (-> *display* base-clock frame-counter))
(let* ((a1-4 (-> obj allocated-length))
(a2-2 (mod (+ t1-0 1) a1-4))
)
(set! (-> obj alloc-index) a2-2)
(when (nonzero? t2-0)
(until #f
(let ((a0-4 (-> v1-0 a2-2)))
(if (!= t0-2 (-> a0-4 timestamp))
(return v0-0)
)
(set! (-> a0-4 record-tag) (the-as uint 0))
)
(set! a2-2 (mod (+ a2-2 1) a1-4))
)
#f
)
)
)
v0-0
)
)
;; definition for method 0 of type history-iterator
(defmethod new history-iterator ((allocation symbol) (type-to-make type) (arg0 uint32))
(let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
(set! (-> v0-0 max-age) (the-as uint arg0))
(set! (-> v0-0 owner) (the-as uint 1))
(set! (-> v0-0 proc) #f)
(set! (-> v0-0 out) *stdcon*)
(set! (-> v0-0 channel-mask) (the-as uint -1))
(set! (-> v0-0 index) (-> *history* alloc-index))
(set! (-> v0-0 done?) #f)
v0-0
)
)
;; definition for method 10 of type history-iterator
(defmethod update-entries! history-iterator ((obj history-iterator))
"Iterate through each [[history-elt]] in [[*history*]]
- If we hit the end set `done?` to true
- If the `timestamp` on the elt, minus the current framecounter exceeds `max-age`, we are also done, return #f
- However if we find an elt who's `owner` matches the iterator's, break out early returning that `elt`"
(let ((v1-0 *history*)
(a1-2 (-> *display* base-clock frame-counter))
)
(while (not (-> obj done?))
(let ((a2-1 (+ (-> obj index) -1)))
(if (< a2-1 0)
(set! a2-1 (+ (-> v1-0 allocated-length) -1))
)
(set! (-> obj index) a2-1)
(if (= a2-1 (-> v1-0 alloc-index))
(set! (-> obj done?) #t)
)
(let ((a2-5 (-> v1-0 elts a2-1)))
(when (nonzero? (-> a2-5 record-tag))
(when (< (the-as time-frame (-> obj max-age)) (- a1-2 (-> a2-5 timestamp)))
(set! (-> obj done?) #t)
(return (the-as history-elt #f))
)
(if (= (-> a2-5 owner) (-> obj owner))
(return a2-5)
)
)
)
)
)
)
(the-as history-elt #f)
)
;; definition for method 11 of type history-iterator
(defmethod history-iterator-method-11 history-iterator ((obj history-iterator) (arg0 history-elt))
"TODO - Unsure of the purpose
`min(1.0, ((history-elt.timestamp - 1) + frame-counter) / (max-age + 1)) - 1.0`"
(- 1.0 (fmin 1.0 (/ (the float (+ (- 1 (-> arg0 timestamp)) (-> *display* base-clock frame-counter)))
(the float (+ (-> obj max-age) 1))
)
)
)
)
;; definition for method 9 of type history-iterator
(defmethod frame-counter-delta history-iterator ((obj history-iterator) (arg0 history-elt))
"Returns the difference between [[*display*]]'s `base-clock.frame-counter` and the elt's `timestamp`"
(- (-> *display* base-clock frame-counter) (-> arg0 timestamp))
)
;; definition for function history-print
;; INFO: Used lq/sq
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; INFO: Return type mismatch int vs none.
;; WARN: new jak 2 until loop case, check carefully
(defun history-print ((arg0 history-iterator))
(local-vars
(sv-16 basic)
(sv-24 int)
(sv-32 int)
(sv-40 history-elt)
(sv-48 time-frame)
(sv-56 uint)
(sv-64 collide-status)
(sv-72 float)
(sv-80 string)
(sv-96 string)
)
(set! sv-16 (-> arg0 out))
(set! sv-24 -1)
(set! sv-32 0)
(until #f
(set! sv-40 (update-entries! arg0))
(if (not sv-40)
(goto cfg-71)
)
(when (logtest? (-> arg0 channel-mask) (ash 1 (-> sv-40 channel)))
(set! sv-48 (frame-counter-delta arg0 sv-40))
(set! sv-56 (-> sv-40 record-id))
(cond
((!= sv-24 sv-48)
(set! sv-24 (the-as int sv-48))
(set! sv-32 (the-as int sv-56))
(format sv-16 "~3D ~4X " sv-48 (-> sv-40 record-id))
)
((!= sv-32 sv-56)
(set! sv-32 (the-as int sv-56))
(format sv-16 " ~4X " (-> sv-40 record-id))
)
(else
(format sv-16 " ")
)
)
(let ((v1-22 (-> sv-40 channel)))
(cond
((or (= v1-22 (history-channel trans))
(or (= v1-22 (history-channel transv))
(= v1-22 (history-channel transv-in))
(= v1-22 (history-channel transv-out))
(= v1-22 (history-channel intersect))
)
)
(format
sv-16
"~-15S: ~14Mm ~14Mm ~14Mm~%"
(history-channel->string (-> sv-40 channel))
(-> sv-40 vector x)
(-> sv-40 vector y)
(-> sv-40 vector z)
)
)
((or (= v1-22 (history-channel local-normal)) (= v1-22 (history-channel surface-normal)))
(format
sv-16
"~-15S: ~14f ~14f ~14f~%"
(history-channel->string (-> sv-40 channel))
(-> sv-40 vector x)
(-> sv-40 vector y)
(-> sv-40 vector z)
)
)
((= v1-22 (history-channel pat))
(let* ((s2-0 (-> sv-40 vector x))
(s5-2 format)
(s4-2 sv-16)
(s3-2 "~-15S: #x~6X mode:~-8S material:~-10S event:~S~%")
(s1-0 (history-channel->string (-> sv-40 channel)))
(s0-0 s2-0)
)
(set! sv-80 (pat-mode->string (the-as pat-surface s2-0)))
(set! sv-96 (pat-material->string (the-as pat-surface s2-0)))
(let ((t2-0 (pat-event->string (the-as pat-surface s2-0))))
(s5-2 s4-2 s3-2 s1-0 s0-0 sv-80 sv-96 t2-0)
)
)
)
((= v1-22 (history-channel collide-status))
(set! sv-64 (-> sv-40 collide-status))
(set! sv-72 (-> sv-40 vector z))
(format sv-16 "~-15S: #x~6X " (history-channel->string (-> sv-40 channel)) sv-64)
(let ((s5-4 sv-64))
(if (= (logand s5-4 (collide-status touch-background)) (collide-status touch-background))
(format sv-16 "touch-background ")
)
(if (= (logand s5-4 (collide-status on-special-surface)) (collide-status on-special-surface))
(format sv-16 "on-special-surface ")
)
(if (= (logand s5-4 (collide-status touch-wall)) (collide-status touch-wall))
(format sv-16 "touch-wall ")
)
(if (= (logand s5-4 (collide-status on-surface)) (collide-status on-surface))
(format sv-16 "on-surface ")
)
(if (= (logand s5-4 (collide-status impact-surface)) (collide-status impact-surface))
(format sv-16 "impact-surface ")
)
(if (= (logand s5-4 (collide-status touch-ceiling)) (collide-status touch-ceiling))
(format sv-16 "touch-ceiling ")
)
(if (= (logand s5-4 (collide-status on-ground)) (collide-status on-ground))
(format sv-16 "on-ground ")
)
(if (= (logand s5-4 (collide-status glance)) (collide-status glance))
(format sv-16 "glance ")
)
(if (= (logand s5-4 (collide-status blocked)) (collide-status blocked))
(format sv-16 "blocked ")
)
(if (= (logand s5-4 (collide-status touch-edge)) (collide-status touch-edge))
(format sv-16 "touch-edge ")
)
(if (= (logand s5-4 (collide-status touch-ceiling-sticky)) (collide-status touch-ceiling-sticky))
(format sv-16 "touch-ceiling-sticky ")
)
(if (= (logand s5-4 (collide-status on-water)) (collide-status on-water))
(format sv-16 "on-water ")
)
(if (= (logand s5-4 (collide-status touch-actor)) (collide-status touch-actor))
(format sv-16 "touch-actor ")
)
(if (= (logand (collide-status probe-hit) s5-4) (collide-status probe-hit))
(format sv-16 "probe-hit ")
)
(if (= (logand s5-4 (collide-status stuck)) (collide-status stuck))
(format sv-16 "stuck ")
)
(if (= (logand s5-4 (collide-status no-touch)) (collide-status no-touch))
(format sv-16 "no-touch ")
)
(if (= (logand s5-4 (collide-status touch-surface)) (collide-status touch-surface))
(format sv-16 "touch-surface ")
)
)
(format sv-16 " #x~6X~%" sv-72)
)
((= v1-22 (history-channel friction))
(let ((f30-0 (-> sv-40 vector x)))
(format sv-16 "~-15S: ~f~%" (history-channel->string (-> sv-40 channel)) f30-0)
)
)
)
)
)
)
#f
(label cfg-71)
0
(none)
)
;; definition for function history-draw
;; INFO: Return type mismatch int vs none.
;; ERROR: Expression building failed: In history-draw: Unmatched field: start bit 24, size 40, signed? true, type rgba
(defun history-draw ((arg0 history-iterator))
(local-vars
(v0-0 history-elt)
(v0-3 symbol)
(v0-4 symbol)
(v0-5 symbol)
(v0-6 symbol)
(v0-7 symbol)
(v0-8 symbol)
(v0-9 symbol)
(v0-10 symbol)
(v0-11 symbol)
(v0-12 int)
(v1-0 type)
(v1-8 int)
(v1-9 int)
(v1-11 int)
(v1-13 int)
(v1-15 int)
(v1-17 int)
(v1-18 int)
(v1-19 int)
(v1-20 int)
(v1-21 int)
(a0-1 history-iterator)
(a0-7 history-channel)
(a0-9 symbol)
(a0-10 symbol)
(a0-11 (pointer uint8))
(a0-12 (pointer uint8))
(a0-13 symbol)
(a0-14 symbol)
(a0-15 (pointer uint8))
(a0-16 symbol)
(a0-18 symbol)
(a0-20 symbol)
(a0-22 number)
(a0-23 int)
(a0-24 int)
(a0-25 int)
(a0-26 pat-mode-info)
(a0-27 rgba)
(a0-28 rgba)
(a0-29 symbol)
(a0-31 float)
(a0-33 vector)
(a0-34 symbol)
(a1-5 int)
(a1-6 int)
(a1-7 int)
(a1-9 int)
(a1-10 int)
(a1-11 int)
(a1-13 int)
(a1-14 int)
(a1-16 int)
(a1-17 int)
(a1-19 int)
(a1-20 history-channel)
(a1-21 symbol)
(a1-23 (inline-array pat-mode-info))
(a1-24 uint)
(a1-25 int)
(a1-26 int)
(a1-28 int)
(a1-29 float)
(a1-30 float)
(a1-31 int)
(a2-1 (pointer uint8))
(a2-2 (pointer uint8))
(a2-3 (pointer uint8))
(a2-4 (pointer uint8))
(a2-5 vector)
(a2-6 vector)
(a2-7 vector)
(a2-8 symbol)
(a2-9 history-channel)
(a2-10 vector)
(a2-11 vector)
(a3-0 (pointer uint8))
(a3-1 int)
(a3-2 int)
(a3-3 (pointer uint8))
(a3-4 int)
(a3-5 int)
(a3-6 (pointer uint8))
(a3-7 (pointer uint8))
(a3-8 (pointer uint8))
(a3-9 (pointer uint8))
(a3-10 vector)
(t0-0 int)
(t0-1 int)
(t0-2 int)
(t0-3 int)
(t0-4 int)
(t0-5 int)
(t0-6 int)
(t0-7 int)
(t0-8 int)
(t1-0 symbol)
(t1-1 symbol)
(t1-2 int)
(t1-3 int)
(t1-4 int)
(t1-5 int)
(t1-6 int)
(t1-7 rgba)
(t1-8 rgba)
(t1-9 int)
(t1-10 int)
(t2-0 int)
(t2-1 int)
(s5-0 history-elt)
(t9-0 (function history-iterator history-elt))
(t9-3 (function symbol bucket-id vector vector rgba symbol rgba symbol))
(t9-4 (function symbol bucket-id vector rgba symbol))
(t9-5 (function symbol bucket-id vector vector rgba symbol rgba symbol))
(t9-6 (function symbol bucket-id vector rgba symbol))
(t9-7 (function symbol bucket-id vector vector meters rgba symbol))
(t9-8 (function symbol bucket-id vector vector meters rgba symbol))
(t9-9 (function symbol bucket-id vector vector meters rgba symbol))
(t9-10 (function symbol bucket-id vector vector meters rgba symbol))
(t9-11 (function symbol bucket-id vector vector meters rgba symbol))
(f0-3 float)
(f0-4 float)
(f0-5 float)
(f0-6 float)
(f1-0 float)
(f1-1 float)
(sv-16 (pointer uint8))
(sv-20 (pointer uint8))
(sv-24 number)
)
(set! sv-16 #f)
(set! sv-20 #f)
(set! sv-24 0)
(until (begin
(when (logtest? (-> arg0 channel-mask) (ash 1 (-> s5-0 channel)))
(cond
((= a0-7 (history-channel trans))
(cond
(sv-16
(set! t9-3 add-debug-line)
(set! a0-9 #t)
(set! a1-5 318)
(set! a2-1 sv-16)
(set! a3-0 (-> s5-0 bytes))
(set! t0-0 #xffff00)
(set! v1-9 (shl v1-8 24))
(set! t0-1 (logior #xffff00 (shl v1-8 24)))
(set! t1-0 #f)
(set! t2-0 -1)
(call! a0-9 a1-5 a2-1 a3-0 t0-1 t1-0 t2-0)
(set! v1-10 v0-3)
)
(else
(set! t9-4 add-debug-x)
(set! a0-10 #t)
(set! a1-6 318)
(set! a2-2 (-> s5-0 bytes))
(set! a3-1 #xffff00)
(set! v1-11 (sll v1-8 24))
(set! a3-2 (logior a3-1 v1-11))
(call! a0-10 a1-6 a2-2 a3-2)
(set! v1-12 v0-4)
)
)
(set! a0-11 (-> s5-0 bytes))
(set! sv-16 a0-11)
)
((begin (set! a1-7 4) (= a0-7 a1-7))
(cond
((begin (set! a0-12 sv-20) a0-12)
(set! t9-5 add-debug-line)
(set! a0-13 #t)
(set! a1-9 318)
(set! a2-3 sv-20)
(set! a3-3 (-> s5-0 bytes))
(set! t0-2 #xffffff)
(set! v1-13 (sll v1-8 24))
(set! t0-3 (logior t0-2 v1-13))
(set! t1-1 #f)
(set! t2-1 -1)
(call! a0-13 a1-9 a2-3 a3-3 t0-3 t1-1 t2-1)
(set! v1-14 v0-5)
)
(else
(set! t9-6 add-debug-x)
(set! a0-14 #t)
(set! a1-10 318)
(set! a2-4 (-> s5-0 bytes))
(set! a3-4 #xffffff)
(set! v1-15 (sll v1-8 24))
(set! a3-5 (logior a3-4 v1-15))
(call! a0-14 a1-10 a2-4 a3-5)
(set! v1-16 v0-6)
)
)
(set! a0-15 (-> s5-0 bytes))
(set! sv-20 a0-15)
)
((begin (set! a1-11 1) (= a0-7 a1-11))
(set! t9-7 add-debug-vector)
(set! a0-16 #t)
(set! a1-13 318)
(set! a2-5 (-> s5-0 origin))
(set! a3-6 (-> s5-0 bytes))
(set! t0-4 #x3dcccccd)
(set! v1-17 (sll v1-8 24))
(set! t1-2 (logior v1-17 #xff00))
(call! a0-16 a1-13 a2-5 a3-6 t0-4 t1-2)
(set! a0-17 v0-7)
)
((begin (set! a1-14 2) (= a0-7 a1-14))
(set! t9-8 add-debug-vector)
(set! a0-18 #t)
(set! a1-16 318)
(set! a2-6 (-> s5-0 origin))
(set! a3-7 (-> s5-0 bytes))
(set! t0-5 #x3dcccccd)
(set! t1-3 #x408040)
(set! v1-18 (sll v1-8 24))
(set! t1-4 (logior t1-3 v1-18))
(call! a0-18 a1-16 a2-6 a3-7 t0-5 t1-4)
(set! a0-19 v0-8)
)
((begin (set! a1-17 3) (= a0-7 a1-17))
(set! t9-9 add-debug-vector)
(set! a0-20 #t)
(set! a1-19 318)
(set! a2-7 (-> s5-0 origin))
(set! a3-8 (-> s5-0 bytes))
(set! t0-6 #x3dcccccd)
(set! t1-5 #x404080)
(set! v1-19 (sll v1-8 24))
(set! t1-6 (logior t1-5 v1-19))
(call! a0-20 a1-19 a2-7 a3-8 t0-6 t1-6)
(set! a0-21 v0-9)
)
((begin
(or (begin (set! a1-20 (+ a0-7 -5)) (set! a2-8 (zero? a1-20)) a2-8)
(begin (set! a2-9 (+ a0-7 -6)) (set! a1-21 (zero? a2-9)))
)
a1-21
)
(set! a0-22 sv-24)
(set! a0-23 (sll a0-22 54))
(set! a0-24 (srl a0-23 61))
(set! a0-25 (sll a0-24 4))
(set! a1-23 *pat-mode-info*)
(set! a0-26 (+ a0-25 a1-23))
(set! a0-27 (-> a0-26 hilite-color))
(set! a1-24 (the-as uint #xffffffff00ffffff))
(set! a0-28 (logand a0-27 a1-24))
(set! t1-7 a0-28)
(set! t9-10 add-debug-vector)
(set! a0-29 #t)
(set! a1-25 318)
(set! a2-10 (-> s5-0 origin))
(set! a3-9 (-> s5-0 bytes))
(set! t0-7 #x45800000)
(set! v1-20 (sll v1-8 24))
(set! t1-8 (logior t1-7 v1-20))
(call! a0-29 a1-25 a2-10 a3-9 t0-7 t1-8)
(set! a0-30 v0-10)
)
((begin (set! a1-26 8) (= a0-7 a1-26))
(set! a0-31 (-> s5-0 vector x))
(set! sv-24 a0-31)
)
((begin (set! a1-28 10) (= a0-7 a1-28))
(set! f0-3 (-> s5-0 vector x))
(set! a3-10 (new 'stack-no-clear 'vector))
(set! a0-33 a3-10)
(set! f1-0 0.0)
(set! (-> a0-33 x) f1-0)
(set! a1-29 -8192.0)
(set! f1-1 (gpr->fpr a1-29))
(set! f0-4 (*.s f1-1 f0-3))
(set! (-> a0-33 y) f0-4)
(set! f0-5 0.0)
(set! (-> a0-33 z) f0-5)
(set! a1-30 1.0)
(set! f0-6 (gpr->fpr a1-30))
(set! (-> a0-33 w) f0-6)
(set! t9-11 add-debug-vector)
(set! a0-34 #t)
(set! a1-31 318)
(set! a2-11 (-> s5-0 origin))
(set! t0-8 #x3f800000)
(set! t1-9 #xffffff)
(set! v1-21 (sll v1-8 24))
(set! t1-10 (logior t1-9 v1-21))
(call! a0-34 a1-31 a2-11 a3-10 t0-8 t1-10)
(set! a0-35 v0-11)
)
)
)
#f
)
(if (begin
(set! a0-1 arg0)
(set! v1-0 (-> a0-1 type))
(set! t9-0 (method-of-type v1-0 update-entries!))
(set! v0-0 (call! a0-1))
(set! s5-0 v0-0)
(not s5-0)
)
(begin (goto cfg-34))
)
)
(label cfg-34)
(set! v0-12 0)
(ret-none)
)
;; failed to figure out what this is:
0
)
+97 -97
View File
@@ -188,7 +188,7 @@
(:methods
(continue-point-method-9 () none 9)
(continue-point-method-10 () none 10)
(continue-point-method-11 () none 11)
(continue-point-method-11 (_type_) none 11)
)
)
@@ -222,100 +222,100 @@
;; definition of type game-info
(deftype game-info (basic)
((mode symbol :offset-assert 4)
(save-name basic :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features uint64 :offset-assert 128)
(debug-features uint64 :offset-assert 136)
(secrets uint32 :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue basic :offset-assert 244)
(unknown-pad3 uint32 3 :offset-assert 248)
(task-counter uint32 :offset-assert 260)
(unknown-pad4 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score basic :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
((mode symbol :offset-assert 4)
(save-name string :offset-assert 8)
(life float :offset-assert 12)
(life-max float :offset-assert 16)
(money float :offset-assert 20)
(money-total float :offset-assert 24)
(money-per-level uint8 32 :offset-assert 28)
(deaths-per-level uint8 32 :offset-assert 60)
(buzzer-total float :offset-assert 92)
(fuel float :offset-assert 96)
(gem float :offset-assert 100)
(gem-total float :offset-assert 104)
(skill float :offset-assert 108)
(skill-total float :offset-assert 112)
(karma float :offset-assert 116)
(eco-pill-dark float :offset-assert 120)
(eco-pill-dark-total float :offset-assert 124)
(features uint64 :offset-assert 128)
(debug-features uint64 :offset-assert 136)
(secrets uint32 :offset-assert 144)
(unknown-pad1 uint32 :offset-assert 148)
(purchase-secrets uint32 :offset-assert 152)
(unknown-pad2 uint32 :offset-assert 156)
(gun-type int32 :offset-assert 160)
(gun-ammo float 4 :offset-assert 164)
(shield float :offset-assert 180)
(score float :offset-assert 184)
(score-owner uint64 :offset-assert 192)
(timer uint64 :offset-assert 200)
(timer-owner uint64 :offset-assert 208)
(timer-flash basic :offset-assert 216)
(counter float :offset-assert 220)
(counter-flash basic :offset-assert 224)
(attack-id uint32 :offset-assert 228)
(perm-list entity-perm-array :offset-assert 232)
(task-perm-list entity-perm-array :offset-assert 236)
(current-continue continue-point :offset-assert 240)
(last-continue continue-point :offset-assert 244)
(unknown-pad3 uint32 3 :offset-assert 248)
(task-counter uint32 :offset-assert 260)
(unknown-pad4 uint32 :offset-assert 264)
(level-opened uint8 32 :offset-assert 268)
(total-deaths int32 :offset-assert 300)
(continue-deaths int32 :offset-assert 304)
(task-deaths int32 :offset-assert 308)
(total-trys int32 :offset-assert 312)
(game-start-time time-frame :offset-assert 320)
(continue-time time-frame :offset-assert 328)
(death-time time-frame :offset-assert 336)
(hit-time time-frame :offset-assert 344)
(task-pickup-time time-frame :offset-assert 352)
(unknown-array1 (array uint64) :offset-assert 360)
(unknown-array2 (array uint64) :offset-assert 364)
(unknown-array3 (array uint64) :offset-assert 368)
(death-pos vector-array :offset 372)
(stop-watch-start uint64 :offset-assert 376)
(stop-watch-stop uint64 :offset-assert 384)
(blackout-time time-frame :offset-assert 392)
(letterbox-time time-frame :offset-assert 400)
(hint-play-time time-frame :offset-assert 408)
(display-text-time time-frame :offset-assert 416)
(display-text-handle uint64 :offset-assert 424)
(death-movie-tick int32 :offset-assert 432)
(want-auto-save symbol :offset-assert 436)
(auto-save-proc handle :offset-assert 440)
(auto-save-status mc-status-code :offset-assert 448)
(auto-save-card int32 :offset-assert 452)
(auto-save-which int32 :offset-assert 456)
(auto-save-count int32 :offset-assert 460)
(pov-camera-handle uint64 :offset-assert 464)
(other-camera-handle uint64 :offset-assert 472)
(controller uint64 2 :offset-assert 480)
(race-timer uint64 :offset-assert 496)
(race-current-lap-count int32 :offset-assert 504)
(race-total-lap-count int32 :offset-assert 508)
(race-position int32 :offset-assert 512)
(race-number-turbos int32 :offset-assert 516)
(bot-health uint32 3 :offset-assert 520)
(demo-state uint32 :offset-assert 532)
(wanted-flash basic :offset-assert 536)
(distance float :offset-assert 540)
(kiosk-timeout uint64 :offset-assert 544)
(pause-start-time time-frame :offset-assert 552)
(game-score (array highscore-info) :offset-assert 560)
(goal float :offset-assert 564)
(miss float :offset-assert 568)
(miss-max float :offset-assert 572)
(unknown-array4 (array uint64) :offset-assert 576)
(live-eco-pill-count int32 :offset-assert 580)
(live-gem-count int32 :offset-assert 584)
(air-supply float :offset-assert 588)
(homing-beacon int32 :offset-assert 592)
(dark-eco-pickup int32 :offset-assert 596)
(green-eco-pickup int32 :offset-assert 600)
)
:method-count-assert 31
:size-assert #x25c
@@ -323,8 +323,8 @@
(:methods
(initialize! (_type_ symbol game-save string) _type_ 9)
(game-info-method-10 () none 10)
(game-info-method-11 () none 11)
(game-info-method-12 () none 12)
(task-complete? (_type_ game-task) symbol 11)
(game-info-method-12 (_type_) none 12)
(game-info-method-13 () none 13)
(game-info-method-14 () none 14)
(game-info-method-15 () none 15)
+415
View File
@@ -0,0 +1,415 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for method 10 of type cylinder
(defmethod ray-capsule-intersect cylinder ((obj cylinder) (ray1 vector) (ray2 vector))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
)
(init-vf0-vector)
(let ((t2-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
)
0.0
0.0
(let ((f30-0 (ray-cylinder-intersect ray1 ray2 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) t2-0))
)
(let ((f0-5 (ray-sphere-intersect ray1 ray2 (-> obj origin) (-> obj radius))))
(if (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0)))
(set! f30-0 f0-5)
)
)
(let ((v1-5 s4-0))
(let ((a0-3 (-> obj origin))
(a1-3 (-> obj axis))
(f0-6 (-> obj length))
)
(.lvf vf2 (&-> a1-3 quad))
(.lvf vf1 (&-> a0-3 quad))
(let ((a0-4 f0-6))
(.mov vf3 a0-4)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-5 quad) vf4)
)
(let ((f0-8 (ray-sphere-intersect ray1 ray2 s4-0 (-> obj radius))))
(if (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0)))
(set! f30-0 f0-8)
)
)
f30-0
)
)
)
)
;; definition of type cylinder-verts
(deftype cylinder-verts (structure)
((vert vector 24 :inline :offset-assert 0)
)
:method-count-assert 9
:size-assert #x180
:flag-assert #x900000180
)
;; definition for method 3 of type cylinder-verts
(defmethod inspect cylinder-verts ((obj cylinder-verts))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'cylinder-verts)
(format #t "~1Tvert[24] @ #x~X~%" (-> obj vert))
(label cfg-4)
obj
)
;; definition for method 9 of type cylinder
;; INFO: Used lq/sq
;; INFO: Return type mismatch int vs none.
(defmethod debug-draw cylinder ((obj cylinder) (arg0 vector4w))
(local-vars
(sv-896 matrix)
(sv-912 vector)
(sv-928 vector)
(sv-944 vector)
(sv-960 vector)
(sv-976 vector)
(sv-992 vector)
(sv-1008 vector)
(sv-1024 vector)
(sv-1040 vector)
(sv-1056 vector)
(sv-1072 vector)
(sv-1088 vector)
)
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s1-0 (new 'stack-no-clear 'vector))
(s0-0 (new 'stack-no-clear 'vector))
)
(if (< 0.999 (fabs (-> obj axis y)))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :z 1.0))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :y 1.0))
)
(vector-normalize! s1-0 (-> obj radius))
(vector-float*! s0-0 (-> obj axis) (* 0.125 (-> obj length)))
(let ((s5-0 (new 'stack-no-clear 'cylinder-verts))
(s4-0 (new 'stack-no-clear 'cylinder-verts))
(s3-0 (new 'stack-no-clear 'matrix))
)
(matrix-axis-angle! s3-0 (-> obj axis) 4096.0)
(set! sv-896 (new 'stack-no-clear 'matrix))
(vector-matrix*! (the-as vector sv-896) (-> obj origin) s3-0)
(let ((v1-6 (-> s3-0 trans)))
(.lvf vf4 (&-> (-> obj origin) quad))
(.lvf vf5 (&-> sv-896 vector 0 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-6 quad) vf6)
)
(dotimes (v1-7 8)
(vector+! (-> s5-0 vert (+ v1-7 8)) (-> obj origin) s1-0)
(let ((a0-16 (-> s5-0 vert (+ v1-7 8))))
(let ((a1-13 (-> s5-0 vert (+ v1-7 8)))
(a2-4 s0-0)
(f0-5 (the float v1-7))
)
(.lvf vf2 (&-> a2-4 quad))
(.lvf vf1 (&-> a1-13 quad))
(let ((a1-14 f0-5))
(.mov vf3 a1-14)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> a0-16 quad) vf4)
)
)
(dotimes (s0-1 8)
(set! sv-944 (-> s5-0 vert s0-1))
(set! sv-912 (-> obj origin))
(set! sv-928 s1-0)
(let ((f0-8 (cos (* 2048.0 (the float (- 7 s0-1))))))
(.lvf vf2 (&-> sv-928 quad))
(.lvf vf1 (&-> sv-912 quad))
(let ((v1-19 f0-8))
(.mov vf3 v1-19)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-944 quad) vf4)
(set! sv-992 (-> s5-0 vert s0-1))
(set! sv-960 (-> s5-0 vert s0-1))
(set! sv-976 (-> obj axis))
(let ((f0-13 (* (- (-> obj radius)) (sin (* 2048.0 (the float (- 7 s0-1)))))))
(.lvf vf2 (&-> sv-976 quad))
(.lvf vf1 (&-> sv-960 quad))
(let ((v1-33 f0-13))
(.mov vf3 v1-33)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-992 quad) vf4)
(set! sv-1040 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1008 (-> obj origin))
(set! sv-1024 s1-0)
(let ((f0-16 (cos (* 2048.0 (the float s0-1)))))
(.lvf vf2 (&-> sv-1024 quad))
(.lvf vf1 (&-> sv-1008 quad))
(let ((v1-43 f0-16))
(.mov vf3 v1-43)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-1040 quad) vf4)
(set! sv-1088 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1056 (-> s5-0 vert (+ s0-1 16)))
(set! sv-1072 (-> obj axis))
(let ((f0-21 (+ (-> obj length) (* (-> obj radius) (sin (* 2048.0 (the float s0-1)))))))
(.lvf vf2 (&-> sv-1072 quad))
(.lvf vf1 (&-> sv-1056 quad))
(let ((v1-57 f0-21))
(.mov vf3 v1-57)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> sv-1088 quad) vf4)
)
(dotimes (s2-1 16)
(dotimes (s1-1 24)
(vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0)
(camera-line (-> s5-0 vert s1-1) (-> s4-0 vert s1-1) arg0)
(if (nonzero? s1-1)
(camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0)
)
)
(let ((v1-77 s5-0))
(set! s5-0 s4-0)
(set! s4-0 v1-77)
)
)
)
)
0
(none)
)
)
;; definition for function ray-arbitrary-circle-intersect
(defun ray-arbitrary-circle-intersect ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float))
(let* ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg2 arg0))
(f0-2 (/ (vector-dot v1-1 arg3) (vector-dot arg1 arg3)))
)
(cond
((or (< 1.0 f0-2) (< f0-2 0.0))
-100000000.0
)
((let ((a0-8 (new 'stack-no-clear 'vector)))
(vector-float*! a0-8 arg1 f0-2)
(vector-! a0-8 a0-8 v1-1)
(< (vector-dot a0-8 a0-8) (* arg4 arg4))
)
f0-2
)
(else
-100000000.0
)
)
)
)
;; definition for method 10 of type cylinder-flat
;; INFO: Used lq/sq
(defmethod ray-flat-cyl-intersect cylinder-flat ((obj cylinder-flat) (arg0 vector) (arg1 vector))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
)
0.0
0.0
(let ((f30-0 (ray-cylinder-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) gp-0))
)
(let ((f0-5 (ray-arbitrary-circle-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius))))
(when (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0)))
(set! f30-0 f0-5)
(set! (-> gp-0 quad) (-> obj origin quad))
)
)
(let ((v1-5 s5-0))
(let ((a0-5 (-> obj origin))
(a1-3 (-> obj axis))
(f0-6 (-> obj length))
)
(.lvf vf2 (&-> a1-3 quad))
(.lvf vf1 (&-> a0-5 quad))
(let ((a0-6 f0-6))
(.mov vf3 a0-6)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-5 quad) vf4)
)
(let ((f0-8 (ray-arbitrary-circle-intersect arg0 arg1 s5-0 (-> obj axis) (-> obj radius))))
(when (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0)))
(set! f30-0 f0-8)
(set! (-> gp-0 quad) (-> s5-0 quad))
)
)
f30-0
)
)
)
)
;; definition of type cylinder-flat-verts
(deftype cylinder-flat-verts (structure)
((vert vector 10 :inline :offset-assert 0)
)
:method-count-assert 9
:size-assert #xa0
:flag-assert #x9000000a0
)
;; definition for method 3 of type cylinder-flat-verts
(defmethod inspect cylinder-flat-verts ((obj cylinder-flat-verts))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'cylinder-flat-verts)
(format #t "~1Tvert[10] @ #x~X~%" (-> obj vert))
(label cfg-4)
obj
)
;; definition for method 9 of type cylinder-flat
;; INFO: Used lq/sq
;; INFO: Return type mismatch int vs none.
(defmethod debug-draw cylinder-flat ((obj cylinder-flat) (arg0 vector4w))
(local-vars (sv-448 vector))
(rlet ((acc :class vf)
(vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
(vf3 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
)
(init-vf0-vector)
(let ((s1-0 (new 'stack-no-clear 'vector))
(s0-0 (new 'stack-no-clear 'vector))
)
(if (< 0.999 (fabs (-> obj axis y)))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :z 1.0))
(vector-cross! s1-0 (-> obj axis) (new 'static 'vector :y 1.0))
)
(vector-normalize! s1-0 (-> obj radius))
(vector-float*! s0-0 (-> obj axis) (* 0.14285715 (-> obj length)))
(let ((s5-0 (new 'stack-no-clear 'cylinder-flat-verts))
(s4-0 (new 'stack-no-clear 'cylinder-flat-verts))
(s3-0 (new 'stack-no-clear 'matrix))
)
(matrix-axis-angle! s3-0 (-> obj axis) 4096.0)
(set! sv-448 (new 'stack-no-clear 'vector))
(vector-matrix*! sv-448 (-> obj origin) s3-0)
(let ((v1-6 (-> s3-0 trans)))
(.lvf vf4 (&-> (-> obj origin) quad))
(.lvf vf5 (&-> sv-448 quad))
(.mov.vf vf6 vf0 :mask #b1000)
(.sub.vf vf6 vf4 vf5 :mask #b111)
(.svf (&-> v1-6 quad) vf6)
)
(dotimes (v1-7 8)
(vector+! (-> s5-0 vert (+ v1-7 1)) (-> obj origin) s1-0)
(let ((a0-16 (-> s5-0 vert (+ v1-7 1))))
(let ((a1-13 (-> s5-0 vert (+ v1-7 1)))
(a2-4 s0-0)
(f0-5 (the float v1-7))
)
(.lvf vf2 (&-> a2-4 quad))
(.lvf vf1 (&-> a1-13 quad))
(let ((a1-14 f0-5))
(.mov vf3 a1-14)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> a0-16 quad) vf4)
)
)
(set! (-> s5-0 vert 0 quad) (-> obj origin quad))
(let ((v1-11 (-> s5-0 vert 9)))
(let ((a0-19 (-> obj origin))
(a1-15 (-> obj axis))
(f0-6 (-> obj length))
)
(.lvf vf2 (&-> a1-15 quad))
(.lvf vf1 (&-> a0-19 quad))
(let ((a0-20 f0-6))
(.mov vf3 a0-20)
)
)
(.add.x.vf vf4 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf2 vf3)
(.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111)
(.svf (&-> v1-11 quad) vf4)
)
(dotimes (s2-1 16)
(dotimes (s1-1 10)
(vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0)
(camera-line (-> s5-0 vert s1-1) (-> s4-0 vert s1-1) arg0)
(if (nonzero? s1-1)
(camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0)
)
)
(let ((v1-28 s5-0))
(set! s5-0 s4-0)
(set! s4-0 v1-28)
)
)
)
)
0
(none)
)
)
+8 -7
View File
@@ -164,14 +164,14 @@
(other-name-1 symbol :offset 24)
(packages pair :offset-assert 32)
(memory-mode uint32 :offset-assert 36)
(music-bank basic :offset-assert 40)
(ambient-sounds basic :offset-assert 44)
(music-bank symbol :offset-assert 40)
(ambient-sounds symbol :offset-assert 44)
(sound-reverb float :offset-assert 48)
(mood-func symbol :offset-assert 52)
(mood-init symbol :offset-assert 56)
(ocean basic :offset-assert 60)
(sky basic :offset-assert 64)
(use-camera-other basic :offset-assert 68)
(ocean symbol :offset-assert 60)
(sky symbol :offset-assert 64)
(use-camera-other symbol :offset-assert 68)
(part-engine-max int32 :offset-assert 72)
(city-map-bits uint64 :offset-assert 80)
(continues pair :offset-assert 88)
@@ -192,7 +192,7 @@
(kill-func symbol :offset-assert 156)
(borrow-size uint16 2 :offset-assert 160)
(borrow-level symbol 2 :offset-assert 164)
(borrow-display? basic 2 :offset-assert 172)
(borrow-display? symbol 2 :offset-assert 172)
(base-task-mask task-mask :offset-assert 180)
(texture-anim symbol 10 :offset-assert 184)
(texture-anim-tfrag symbol :offset 184)
@@ -217,6 +217,7 @@
(ocean-alpha float :offset-assert 280)
(extra-sound-bank pair :offset-assert 284)
)
:pack-me
:method-count-assert 9
:size-assert #x120
:flag-assert #x900000120
@@ -484,7 +485,7 @@
(debug-print-region-splitbox (_type_ vector object) none 20)
(get-art-group-by-name (_type_ string) art-group 21)
(level-method-22 () none 22)
(level-method-23 () none 23)
(lookup-text (_type_ game-text-id symbol) string 23)
(level-method-24 () none 24)
(birth (_type_) _type_ 25)
(level-status-update! (_type_ symbol) _type_ 26)
+1 -5
View File
@@ -56,7 +56,7 @@
(new (symbol type process-drawable int float collide-spec) _type_ 0)
(initialize (_type_ process-drawable int float collide-spec) impact-control :behavior process 9)
(update-from-cspace (_type_) none 10)
(impact-control-method-11 () none 11)
(impact-control-method-11 (_type_) none 11)
)
)
@@ -264,7 +264,3 @@
;; failed to figure out what this is:
0
+163
View File
@@ -0,0 +1,163 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type mech-info
(deftype mech-info (basic)
((entity basic :offset-assert 4)
(hud uint64 1 :offset-assert 8)
(mech-trans vector :inline :offset-assert 16)
(mech-quat vector :inline :offset-assert 32)
(mech-scale vector :inline :offset-assert 48)
(engine-sound-id uint32 :offset-assert 64)
(engine-sound-volume float :offset-assert 68)
(engine-sound-pitch float :offset-assert 72)
(thrust-sound-id uint32 :offset-assert 76)
(drag-sound-id uint32 :offset-assert 80)
(whine-sound-id uint32 :offset-assert 84)
(mech-start-time time-frame :offset-assert 88)
(mech-time time-frame :offset-assert 96)
(no-get-off-time time-frame :offset-assert 104)
(stick-lock basic :offset-assert 112)
(stick-off basic :offset-assert 116)
(forward-vel meters :offset-assert 120)
(jump-thrust meters :offset-assert 124)
(jump-thrust-fuel float :offset-assert 128)
(unstuck-time time-frame :offset-assert 136)
(stuck-count int32 :offset-assert 144)
(back-touch-point vector :inline :offset-assert 160)
(back-touch-trans vector :inline :offset-assert 176)
(back-touch-time time-frame :offset-assert 192)
(attack-id uint32 :offset-assert 200)
(shield-value float :offset-assert 204)
(shield-max float :offset-assert 208)
(walk-anim-leg int32 :offset-assert 212)
(state-impact? symbol 1 :offset-assert 216)
(state-impact impact-control 1 :inline :offset-assert 224)
(thruster-flame-width meters :offset-assert 304)
(thruster-flame-length meters :offset-assert 308)
(thruster-local-pos vector 2 :inline :offset-assert 320)
(exhaust-local-pos vector 2 :inline :offset-assert 352)
(exhaust-local-dir vector 2 :inline :offset-assert 384)
(smoke-local-pos vector 2 :inline :offset-assert 416)
(smoke-local-vel vector 2 :inline :offset-assert 448)
(particle-system-2d basic :offset-assert 480)
(particle-system-3d basic :offset-assert 484)
(part-thruster basic :offset-assert 488)
(part-thruster-scale-x sp-field-init-spec :offset-assert 492)
(part-thruster-scale-y sp-field-init-spec :offset-assert 496)
(part-quat quaternion :offset-assert 500)
(part-vel vector :offset-assert 504)
)
:method-count-assert 9
:size-assert #x1fc
:flag-assert #x9000001fc
)
;; definition for method 3 of type mech-info
(defmethod inspect mech-info ((obj mech-info))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~1Tentity: ~A~%" (-> obj entity))
(format #t "~1Thud[1] @ #x~X~%" (-> obj hud))
(format #t "~1Tmech-trans: ~`vector`P~%" (-> obj mech-trans))
(format #t "~1Tmech-quat: ~`vector`P~%" (-> obj mech-quat))
(format #t "~1Tmech-scale: ~`vector`P~%" (-> obj mech-scale))
(format #t "~1Tengine-sound-id: ~D~%" (-> obj engine-sound-id))
(format #t "~1Tengine-sound-volume: ~f~%" (-> obj engine-sound-volume))
(format #t "~1Tengine-sound-pitch: ~f~%" (-> obj engine-sound-pitch))
(format #t "~1Tthrust-sound-id: ~D~%" (-> obj thrust-sound-id))
(format #t "~1Tdrag-sound-id: ~D~%" (-> obj drag-sound-id))
(format #t "~1Twhine-sound-id: ~D~%" (-> obj whine-sound-id))
(format #t "~1Tmech-start-time: ~D~%" (-> obj mech-start-time))
(format #t "~1Tmech-time: ~D~%" (-> obj mech-time))
(format #t "~1Tno-get-off-time: ~D~%" (-> obj no-get-off-time))
(format #t "~1Tstick-lock: ~A~%" (-> obj stick-lock))
(format #t "~1Tstick-off: ~A~%" (-> obj stick-off))
(format #t "~1Tforward-vel: (meters ~m)~%" (-> obj forward-vel))
(format #t "~1Tjump-thrust: (meters ~m)~%" (-> obj jump-thrust))
(format #t "~1Tjump-thrust-fuel: ~f~%" (-> obj jump-thrust-fuel))
(format #t "~1Tunstuck-time: ~D~%" (-> obj unstuck-time))
(format #t "~1Tstuck-count: ~D~%" (-> obj stuck-count))
(format #t "~1Tback-touch-point: ~`vector`P~%" (-> obj back-touch-point))
(format #t "~1Tback-touch-trans: ~`vector`P~%" (-> obj back-touch-trans))
(format #t "~1Tback-touch-time: ~D~%" (-> obj back-touch-time))
(format #t "~1Tattack-id: ~D~%" (-> obj attack-id))
(format #t "~1Tshield-value: ~f~%" (-> obj shield-value))
(format #t "~1Tshield-max: ~f~%" (-> obj shield-max))
(format #t "~1Twalk-anim-leg: ~D~%" (-> obj walk-anim-leg))
(format #t "~1Tstate-impact?[1] @ #x~X~%" (-> obj state-impact?))
(format #t "~1Tstate-impact[1] @ #x~X~%" (-> obj state-impact))
(format #t "~1Tthruster-flame-width: (meters ~m)~%" (-> obj thruster-flame-width))
(format #t "~1Tthruster-flame-length: (meters ~m)~%" (-> obj thruster-flame-length))
(format #t "~1Tthruster-local-pos[2] @ #x~X~%" (-> obj thruster-local-pos))
(format #t "~1Texhaust-local-pos[2] @ #x~X~%" (-> obj exhaust-local-pos))
(format #t "~1Texhaust-local-dir[2] @ #x~X~%" (-> obj exhaust-local-dir))
(format #t "~1Tsmoke-local-pos[2] @ #x~X~%" (-> obj smoke-local-pos))
(format #t "~1Tsmoke-local-vel[2] @ #x~X~%" (-> obj smoke-local-vel))
(format #t "~1Tparticle-system-2d: ~A~%" (-> obj particle-system-2d))
(format #t "~1Tparticle-system-3d: ~A~%" (-> obj particle-system-3d))
(format #t "~1Tpart-thruster: ~A~%" (-> obj part-thruster))
(format #t "~1Tpart-thruster-scale-x: #<sp-field-init-spec @ #x~X>~%" (-> obj part-thruster-scale-x))
(format #t "~1Tpart-thruster-scale-y: #<sp-field-init-spec @ #x~X>~%" (-> obj part-thruster-scale-y))
(format #t "~1Tpart-quat: #<quaternion @ #x~X>~%" (-> obj part-quat))
(format #t "~1Tpart-vel: #<vector @ #x~X>~%" (-> obj part-vel))
(label cfg-4)
obj
)
;; failed to figure out what this is:
(let ((a0-2 (new 'static 'skeleton-group
:name "skel-mech"
:extra #f
:info #f
:art-group-name "mech"
:bounds (new 'static 'vector :w 18432.0)
:version #x7
:shadow 2
:origin-joint-index 3
:shadow-joint-index 3
)
)
)
(set! (-> a0-2 jgeo) 0)
(set! (-> a0-2 janim) 3)
(set! (-> a0-2 mgeo 0) 1)
(set! (-> a0-2 lod-dist 0) 4095996000.0)
(add-to-loading-level a0-2)
)
;; definition for symbol *mech-shadow-control*, type shadow-control
(define *mech-shadow-control*
(new 'static 'shadow-control :settings (new 'static 'shadow-settings
:center (new 'static 'vector :w (the-as float #xa))
:shadow-dir (new 'static 'vector :y -1.0 :w 614400.0)
:bot-plane (new 'static 'plane :y 1.0 :w 81920.0)
:top-plane (new 'static 'plane :y 1.0 :w 2048.0)
)
)
)
;; failed to figure out what this is:
(let ((a0-3 (new 'static 'skeleton-group
:name "skel-mech-explode"
:extra #f
:info #f
:art-group-name "mech"
:bounds (new 'static 'vector :w 18432.0)
:version #x7
:origin-joint-index 3
)
)
)
(set! (-> a0-3 jgeo) 39)
(set! (-> a0-3 janim) 41)
(set! (-> a0-3 mgeo 0) 40)
(set! (-> a0-3 lod-dist 0) 4095996000.0)
(add-to-loading-level a0-3)
)
;; failed to figure out what this is:
0
+5 -8
View File
@@ -27,10 +27,10 @@
;; definition of type game-text-info
(deftype game-text-info (basic)
((length int32 :offset-assert 4)
(language-id int32 :offset-assert 8)
(group-name string :offset-assert 12)
(data game-text :dynamic :offset-assert 16)
((length int32 :offset-assert 4)
(language-id int32 :offset-assert 8)
(group-name string :offset-assert 12)
(data game-text :inline :dynamic :offset-assert 16)
)
:method-count-assert 10
:size-assert #x10
@@ -41,6 +41,7 @@
)
;; definition for method 3 of type game-text-info
;; INFO: this function exists in multiple non-identical object files
(defmethod inspect game-text-info ((obj game-text-info))
(when (not obj)
(set! obj obj)
@@ -66,7 +67,3 @@
;; failed to figure out what this is:
0
+652
View File
@@ -0,0 +1,652 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(kmemopen global "text")
;; definition for symbol *expand-buf-number*, type int
(define *expand-buf-number* 0)
;; definition for symbol *game-text-word*, type string
(define *game-text-word* (new 'global 'string 256 (the-as string #f)))
;; definition for symbol *game-text-line*, type string
(define *game-text-line* (new 'global 'string 1024 (the-as string #f)))
;; definition for symbol *expanded-text-line0*, type string
(define *expanded-text-line0* (new 'global 'string 1024 (the-as string #f)))
;; definition for symbol *expanded-text-line1*, type string
(define *expanded-text-line1* (new 'global 'string 1024 (the-as string #f)))
;; definition for symbol *level-text-file-load-flag*, type symbol
(define *level-text-file-load-flag* #t)
;; failed to figure out what this is:
(when (zero? (-> *common-text-heap* base))
(let ((gp-0 *common-text-heap*))
(set! (-> gp-0 base) (kmalloc global #x10000 (kmalloc-flags) "heap"))
(set! (-> gp-0 current) (-> gp-0 base))
(set! (-> gp-0 top-base) (&+ (-> gp-0 base) #x10000))
(set! (-> gp-0 top) (-> gp-0 top-base))
)
)
;; failed to figure out what this is:
(kmemclose)
;; definition for method 7 of type game-text-info
(defmethod relocate game-text-info ((obj game-text-info) (arg0 int))
(let ((v1-1 (-> *level* loading-level)))
(when v1-1
(set! (-> v1-1 loaded-text-info (-> v1-1 loaded-text-info-count)) obj)
(+! (-> v1-1 loaded-text-info-count) 1)
)
)
obj
)
;; definition for method 4 of type game-text-info
(defmethod length game-text-info ((obj game-text-info))
(-> obj length)
)
;; definition for method 5 of type game-text-info
;; INFO: Return type mismatch uint vs int.
(defmethod asize-of game-text-info ((obj game-text-info))
(the-as int (+ (-> obj type size) (* (-> obj length) 8)))
)
;; definition for method 3 of type game-text-info
;; INFO: this function exists in multiple non-identical object files
(defmethod inspect game-text-info ((obj game-text-info))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tlength: ~D~%" (-> obj length))
(format #t "~Tlanguage-id: ~D~%" (-> obj language-id))
(format #t "~Tgroup-name: ~A~%" (-> obj group-name))
(format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data))
(dotimes (s5-0 (-> obj length))
(format #t "~T [~D] #x~X ~A~%" s5-0 (-> obj data s5-0 id) (-> obj data s5-0 text))
)
obj
)
;; definition for method 8 of type game-text-info
(defmethod mem-usage game-text-info ((obj game-text-info) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 84 (-> arg0 length)))
(set! (-> arg0 data 83 name) "string")
(+! (-> arg0 data 83 count) 1)
(let ((v1-6 (asize-of obj)))
(+! (-> arg0 data 83 used) v1-6)
(+! (-> arg0 data 83 total) (logand -16 (+ v1-6 15)))
)
(dotimes (s4-0 (-> obj length))
(set! (-> arg0 length) (max 84 (-> arg0 length)))
(set! (-> arg0 data 83 name) "string")
(+! (-> arg0 data 83 count) 1)
(let ((v1-18 (asize-of (-> obj data s4-0 text))))
(+! (-> arg0 data 83 used) v1-18)
(+! (-> arg0 data 83 total) (logand -16 (+ v1-18 15)))
)
)
obj
)
;; definition for function convert-korean-text
(defun convert-korean-text ((arg0 game-text))
(local-vars (v1-21 int))
"Converts the provided [[game-text]] into korean. Returns a [[string]]"
(let ((gp-0 (&-> arg0 text)))
*expanded-text-line0*
(let ((s4-0 0))
0
(let ((s1-0 0)
(s5-0 ((method-of-type string length) (the-as string arg0)))
)
(set! *expand-buf-number* (logxor *expand-buf-number* 1))
(let ((s3-0 (if (zero? *expand-buf-number*)
*expanded-text-line0*
*expanded-text-line1*
)
)
)
(let ((s2-0 (+ (-> s3-0 allocated-length) -1)))
(clear s3-0)
(while (< s4-0 s5-0)
(cond
((= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 3)
(+! s4-0 1)
(while (and (< s4-0 s5-0)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 3)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 4)
)
(set! (-> s3-0 data s1-0) (-> (the-as (pointer uint8) (&+ gp-0 s4-0))))
(+! s4-0 1)
(+! s1-0 1)
)
)
(else
(let ((v1-17 (+ s4-0 1)))
(-> (the-as (pointer uint8) (&+ gp-0 v1-17)))
(set! s4-0 (+ v1-17 1))
)
(set! (-> s3-0 data s1-0) (the-as uint 126))
(let ((v1-19 (+ s1-0 1)))
(set! (-> s3-0 data v1-19) (the-as uint 89))
(let ((v1-20 (+ v1-19 1)))
(while (and (< s4-0 s5-0)
(< v1-20 s2-0)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 3)
(!= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 4)
)
(cond
((= (-> (the-as (pointer uint8) (&+ gp-0 s4-0))) 5)
(set! (-> s3-0 data v1-20) (the-as uint 1))
(+! s4-0 1)
(set! v1-21 (+ v1-20 1))
)
(else
(set! (-> s3-0 data v1-20) (the-as uint 3))
(set! v1-21 (+ v1-20 1))
)
)
(set! (-> s3-0 data v1-21) (-> (the-as (pointer uint8) (&+ gp-0 s4-0))))
(+! s4-0 1)
(let ((v1-22 (+ v1-21 1)))
(set! (-> s3-0 data v1-22) (the-as uint 126))
(let ((v1-23 (+ v1-22 1)))
(set! (-> s3-0 data v1-23) (the-as uint 90))
(set! v1-20 (+ v1-23 1))
)
)
)
(set! (-> s3-0 data v1-20) (the-as uint 126))
(let ((v1-24 (+ v1-20 1)))
(set! (-> s3-0 data v1-24) (the-as uint 43))
(let ((v1-25 (+ v1-24 1)))
(set! (-> s3-0 data v1-25) (the-as uint 50))
(let ((v1-26 (+ v1-25 1)))
(set! (-> s3-0 data v1-26) (the-as uint 54))
(let ((v1-27 (+ v1-26 1)))
(set! (-> s3-0 data v1-27) (the-as uint 72))
(set! s1-0 (+ v1-27 1))
)
)
)
)
)
)
)
)
)
)
(set! (-> s3-0 data s1-0) (the-as uint 0))
s3-0
)
)
)
)
)
;; definition for method 9 of type game-text-info
(defmethod lookup-text! game-text-info ((obj game-text-info) (arg0 game-text-id) (arg1 symbol))
(cond
((= obj #f)
(cond
(arg1
(the-as string #f)
)
(else
(format (clear *temp-string*) "NO GAME TEXT")
*temp-string*
)
)
)
(else
(let* ((a1-2 0)
(a3-0 (+ (-> obj length) 1))
(v1-2 (/ (+ a1-2 a3-0) 2))
)
(let ((t0-0 -1))
(while (and (!= (-> obj data v1-2 id) arg0) (!= v1-2 t0-0))
(if (< (the-as uint arg0) (the-as uint (-> obj data v1-2 id)))
(set! a3-0 v1-2)
(set! a1-2 v1-2)
)
(set! t0-0 v1-2)
(set! v1-2 (/ (+ a1-2 a3-0) 2))
)
)
(cond
((!= (-> obj data v1-2 id) arg0)
(cond
(arg1
(the-as string #f)
)
(else
(format (clear *temp-string*) "UNKNOWN ID ~X" arg0)
*temp-string*
)
)
)
((= (-> obj language-id) 6)
(convert-korean-text (the-as game-text (-> obj data v1-2 text)))
)
(else
(-> obj data v1-2 text)
)
)
)
)
)
)
;; definition for method 23 of type level
(defmethod lookup-text level ((obj level) (arg0 game-text-id) (arg1 symbol))
(let ((v1-0 *common-text*))
(dotimes (a3-0 (-> obj loaded-text-info-count))
(if (= (-> obj loaded-text-info a3-0 language-id) (-> *setting-control* user-current language))
(set! v1-0 (-> obj loaded-text-info a3-0))
)
)
(lookup-text! v1-0 arg0 arg1)
)
)
;; definition for symbol text-is-loading, type symbol
(define text-is-loading #f)
;; definition for function load-game-text-info
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function load-level-text-files
;; INFO: Return type mismatch int vs none.
(defun load-level-text-files ((arg0 int))
"Load the text files needed for level idx.
This function made more sense back when text files were split up, but in the end they put everything
in a single text group and file."
(if (or *level-text-file-load-flag* (>= arg0 0))
(load-game-text-info "common" '*common-text* *common-text-heap*)
)
0
(none)
)
;; definition for function draw-debug-text-box
;; INFO: Return type mismatch int vs none.
(defun draw-debug-text-box ((arg0 font-context))
"Draws some lines"
(when *cheat-mode*
(let ((s5-0 (new 'static 'vector4w))
(gp-0 (new 'static 'matrix))
)
(let ((v1-2 (-> gp-0 data)))
(set! (-> v1-2 0) (the-as float (the int (+ -256.0 (-> arg0 origin x)))))
(set! (-> v1-2 1) (the-as float (the int (+ -208.0 (-> arg0 origin y)))))
(set! (-> v1-2 2) 0.0)
(set! (-> v1-2 3) (the-as float #x1))
)
(let ((v1-3 (&-> gp-0 data 4)))
(set! (-> v1-3 0) (the-as float (the int (+ -256.0 (-> arg0 width) (-> arg0 origin x)))))
(set! (-> v1-3 1) (the-as float (the int (+ -208.0 (-> arg0 origin y)))))
(set! (-> v1-3 2) 0.0)
(set! (-> v1-3 3) (the-as float #x1))
)
(let ((v1-4 (&-> gp-0 data 8)))
(set! (-> v1-4 0) (the-as float (the int (+ -256.0 (-> arg0 width) (-> arg0 origin x)))))
(set! (-> v1-4 1) (the-as float (the int (+ -208.0 (-> arg0 height) (-> arg0 origin y)))))
(set! (-> v1-4 2) 0.0)
(set! (-> v1-4 3) (the-as float #x1))
)
(set-vector!
(-> gp-0 trans)
(the-as float (the int (+ -256.0 (-> arg0 origin x))))
(the-as float (the int (+ -208.0 (-> arg0 height) (-> arg0 origin y))))
0.0
(the-as float #x1)
)
(set-vector! s5-0 128 128 128 128)
(add-debug-line2d
#t
(bucket-id bucket-318)
(the-as vector (-> gp-0 data))
(the-as vector (&-> gp-0 data 4))
(the-as vector s5-0)
)
(add-debug-line2d
#t
(bucket-id bucket-318)
(the-as vector (&-> gp-0 data 4))
(the-as vector (&-> gp-0 data 8))
(the-as vector s5-0)
)
(add-debug-line2d
#t
(bucket-id bucket-318)
(the-as vector (&-> gp-0 data 8))
(-> gp-0 trans)
(the-as vector s5-0)
)
(add-debug-line2d
#t
(bucket-id bucket-318)
(-> gp-0 trans)
(the-as vector (-> gp-0 data))
(the-as vector s5-0)
)
)
)
0
(none)
)
;; definition for function print-game-text-scaled
;; INFO: Return type mismatch int vs none.
(defun print-game-text-scaled ((arg0 string) (arg1 float) (arg2 font-context) (arg3 int))
"Print text, with a given scaling"
(let ((f26-0 (-> arg2 width))
(f30-0 (-> arg2 height))
(f24-0 (-> arg2 origin x))
(f22-0 (-> arg2 origin y))
(f28-0 (-> arg2 scale))
)
(let ((f0-1 (* (-> arg2 width) arg1))
(f1-2 (* (-> arg2 height) arg1))
)
(if (logtest? (-> arg2 flags) (font-flags middle))
(+! (-> arg2 origin x) (* 0.5 (- f26-0 f0-1)))
)
(if (logtest? (-> arg2 flags) (font-flags left))
(+! (-> arg2 origin y) (* 0.5 (- f30-0 f1-2)))
)
(let ((v1-10 arg2))
(set! (-> v1-10 scale) (* f28-0 arg1))
)
(set! (-> arg2 width) f0-1)
(set! (-> arg2 height) f1-2)
)
(print-game-text arg0 arg2 #f 44 320)
(set! (-> arg2 origin x) f24-0)
(set! (-> arg2 origin y) f22-0)
(set! (-> arg2 width) f26-0)
(set! (-> arg2 height) f30-0)
(set! (-> arg2 scale) f28-0)
)
0
(none)
)
;; definition for function print-game-text
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 52 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 40 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 52 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 40 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 52 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 52 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 40 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 52 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 40 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
;; WARN: Stack slot offset 52 signed mismatch
;; WARN: Stack slot offset 44 signed mismatch
;; WARN: Stack slot offset 36 signed mismatch
;; WARN: Stack slot offset 48 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 20 signed mismatch
;; WARN: Stack slot offset 56 signed mismatch
(defun print-game-text ((arg0 string) (arg1 font-context) (arg2 symbol) (arg3 int) (arg4 int))
(local-vars
(sv-16 float)
(sv-20 float)
(sv-24 font-flags)
(sv-28 font-color)
(sv-32 (pointer uint8))
(sv-36 float)
(sv-40 float)
(sv-44 float)
(sv-48 float)
(sv-52 int)
(sv-56 float)
(sv-64 int)
(sv-72 uint)
(sv-80 int)
(sv-88 int)
(sv-96 int)
(sv-104 uint)
(sv-108 symbol)
(sv-112 int)
(sv-120 int)
)
"Print text."
(cond
((< 0.1 (-> arg1 scale))
(set! sv-16 (-> arg1 origin x))
(set! sv-20 (-> arg1 origin y))
(set! sv-24 (-> arg1 flags))
(set! sv-28 (-> arg1 color))
(when (logtest? (-> arg1 flags) (font-flags left))
(logclear! (-> arg1 flags) (font-flags left))
(+! (-> arg1 origin y)
(the float (the int (* 0.5 (- (-> arg1 height) (print-game-text arg0 arg1 #t 44 320)))))
)
)
(set! sv-32 (-> arg0 data))
(set! sv-36 (-> arg1 origin x))
(set! sv-40 (-> arg1 origin x))
(set! sv-44 (+ (-> arg1 origin x) (-> arg1 width)))
(set! sv-48 (+ (-> arg1 origin y) (-> arg1 height)))
(set! sv-52 (gpr->fpr (.asm.sllv.r0 (get-string-length " " arg1))))
(set! sv-56 (* (if (logtest? (-> arg1 flags) (font-flags large))
(the float arg3)
28.0
)
(-> arg1 scale)
)
)
(set! sv-64 0)
(if (logtest? (-> arg1 flags) (font-flags middle))
(+! (-> arg1 origin x) (* 0.5 (-> arg1 width)))
)
(set! sv-72 (-> sv-32 0))
(set! sv-80 0)
(set! sv-88 0)
(set! sv-96 0)
(set! sv-104 (-> sv-32 1))
(set! sv-108 (the-as symbol #f))
(set! sv-112 0)
(set! sv-120 0)
(set! (-> *game-text-line* data 0) (the-as uint 0))
(while (and (not (and (zero? sv-72) (zero? sv-80) (zero? sv-88))) (>= sv-48 (-> arg1 origin y)))
(set! sv-120 0)
(set! sv-32 (&-> sv-32 1))
(set! sv-104 (-> sv-32 0))
(set! sv-32 (&-> sv-32 -1))
(cond
((and (> sv-72 0) (< sv-72 (the-as uint 4)))
(set! (-> *game-text-word* data sv-80) sv-72)
(set! sv-80 (+ sv-80 1))
(set! (-> *game-text-word* data sv-80) sv-104)
(set! sv-80 (+ sv-80 1))
(set! sv-32 (&-> sv-32 1))
)
((= sv-72 32)
(set! (-> *game-text-word* data sv-80) sv-72)
(set! sv-80 (+ sv-80 1))
(set! sv-108 #t)
)
((zero? sv-72)
(if (nonzero? sv-80)
(set! sv-108 #t)
)
(set! sv-112 (+ sv-112 1))
)
((and (= sv-72 92) (= sv-104 92))
(set! sv-32 (&-> sv-32 1))
(if (nonzero? sv-80)
(set! sv-108 #t)
)
(set! sv-112 (+ sv-112 1))
)
((and (= sv-72 95) (= sv-104 95))
(set! sv-32 (&-> sv-32 1))
(set! (-> *game-text-word* data sv-80) (the-as uint 32))
(set! sv-80 (+ sv-80 1))
)
(else
(set! (-> *game-text-word* data sv-80) sv-72)
(set! sv-80 (+ sv-80 1))
)
)
(when sv-108
(set! (-> *game-text-word* data sv-80) (the-as uint 0))
(let ((f30-1 sv-36))
(set! sv-120 (the int (the-as float (.asm.sllv.r0 (get-string-length *game-text-word* arg1)))))
(let ((f0-26 (+ f30-1 (the float sv-120))))
(if (= (-> *game-text-word* data (+ sv-80 -1)) 32)
(set! f0-26 (- f0-26 (the-as float sv-52)))
)
(cond
((< sv-44 f0-26)
(set! sv-112 (+ sv-112 1))
)
(else
(copy-charp<-charp (&-> *game-text-line* data sv-88) (-> *game-text-word* data))
(set! sv-88 (+ sv-88 sv-80))
(set! sv-80 0)
(set! sv-36 (+ sv-36 (the float sv-120)))
(set! sv-108 (the-as symbol #f))
)
)
)
)
)
(while (> sv-112 0)
(let ((f30-2 (+ (-> arg1 origin y) sv-56)))
(when (and (>= sv-96 (the-as int (-> arg1 start-line))) #t)
(when (= (-> *game-text-line* data (+ sv-88 -1)) 32)
(set! (-> *game-text-line* data (+ sv-88 -1)) (the-as uint 0))
0
)
(if (nonzero? (-> *game-text-line* data 0))
(set! sv-64 (+ sv-64 1))
)
(when (not arg2)
(let* ((s2-1 (-> *display* frames (-> *display* on-screen) global-buf))
(s3-1 (-> s2-1 base))
)
(draw-string *game-text-line* s2-1 arg1)
(set! (-> arg1 color) (-> *font-work* last-color))
(let ((a3-2 (-> s2-1 base)))
(let ((v1-121 (-> s2-1 base)))
(set! (-> (the-as (pointer int64) v1-121)) #x20000000)
(s.w! (+ v1-121 8) 0)
(s.w! (+ v1-121 12) 0)
(set! (-> s2-1 base) (&+ v1-121 16))
)
(dma-bucket-insert-tag
(the-as (inline-array dma-bucket) (-> *display* frames (-> *display* on-screen) bucket-group))
(the-as bucket-id arg4)
s3-1
(the-as (pointer dma-tag) a3-2)
)
)
)
)
(set! (-> arg1 origin y) f30-2)
)
)
(set! sv-96 (+ sv-96 1))
(set! (-> *game-text-line* data 0) (the-as uint 0))
(set! sv-88 0)
(set! sv-112 (+ sv-112 -1))
(set! sv-36 sv-40)
(when sv-108
(copy-charp<-charp (&-> *game-text-line* data sv-88) (-> *game-text-word* data))
(set! sv-88 (+ sv-88 sv-80))
(set! sv-80 0)
(set! sv-108 (the-as symbol #f))
(set! sv-36 (+ sv-36 (the float sv-120)))
)
)
(when (nonzero? sv-72)
(set! sv-32 (&-> sv-32 1))
(set! sv-72 (-> sv-32 0))
)
)
(set! (-> arg1 origin x) sv-16)
(set! (-> arg1 origin y) sv-20)
(set! (-> arg1 flags) sv-24)
(set! (-> arg1 color) sv-28)
(if (> sv-64 0)
(* sv-56 (the float sv-64))
0.0
)
)
(else
0.0
)
)
)
;; definition for function disable-level-text-file-loading
;; INFO: Return type mismatch int vs none.
(defun disable-level-text-file-loading ()
"Disables [[*level-text-file-load-flag*]]"
(set! *level-text-file-load-flag* #f)
0
(none)
)
;; definition for function enable-level-text-file-loading
;; INFO: Return type mismatch int vs none.
(defun enable-level-text-file-loading ()
"Disables [[*level-text-file-load-flag*]]"
(set! *level-text-file-load-flag* #t)
0
(none)
)
+3 -7
View File
@@ -3,9 +3,9 @@
;; definition of type script-form
(deftype script-form (structure)
((name basic :offset-assert 0)
(spec basic :offset-assert 4)
(func basic :offset-assert 8)
((name string :offset-assert 0)
(spec basic :offset-assert 4)
(func basic :offset-assert 8)
)
:method-count-assert 10
:size-assert #xc
@@ -101,7 +101,3 @@
;; failed to figure out what this is:
0
+7 -11
View File
@@ -48,13 +48,13 @@
:size-assert #x10
:flag-assert #x1000000010
(:methods
(sync-info-method-9 () none 9)
(sync-info-method-10 () none 10)
(sync-info-method-11 () none 11)
(sync-info-method-12 () none 12)
(sync-info-method-13 () none 13)
(sync-info-method-14 () none 14)
(sync-info-method-15 () none 15)
(sync-info-method-9 (_type_) none 9)
(get-phase-offset (_type_) float 10)
(get-norm! (_type_) float 11)
(multiply-norm! (_type_ float object) float 12)
(initialize! () none 13)
(sync-info-method-14 (_type_ time-frame) time-frame 14)
(sync-info-method-15 (_type_ float) none 15)
)
)
@@ -339,7 +339,3 @@
;; failed to figure out what this is:
0
+8 -1
View File
@@ -36,8 +36,15 @@
// cache asm
"invalidate-cache-line",
// asm, weird vector dot
"(method 17 trsqv)"
"(method 17 trsqv)",
// history - rgba issues
"history-draw",
// text - cfg failure
"load-game-text-info",
// - never fixed this one in jak 1, assumed there was an original bug?
"print-game-text",
"i-hopefully-will-never-exist-dont-add-anything-after-me-please"
],
"skip_compile_states": {}