mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 00:57:44 -04:00
d/jak2: decompile ambient
| speech
and bigmap-data
(#1954)
fma-sphere not completed due to #1888
This commit is contained in:
parent
d402ad8918
commit
e7bb0fb68d
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -28,6 +28,7 @@ savestate-out/
|
|||
savestate_out/
|
||||
failures/
|
||||
ee-results*.json
|
||||
search-results.json
|
||||
.env
|
||||
/search-results.json
|
||||
|
||||
|
|
9
.vscode/extensions.json
vendored
Normal file
9
.vscode/extensions.json
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
|
||||
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
|
||||
|
||||
// List of extensions which should be recommended for users of this workspace.
|
||||
"recommendations": ["opengoal.opengoal", "naumovs.color-highlight"],
|
||||
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
||||
"unwantedRecommendations": []
|
||||
}
|
|
@ -1646,7 +1646,7 @@
|
|||
(define-extern matrix-rotate-yzx! (function matrix vector matrix))
|
||||
(define-extern matrix-rotate-yxy! (function matrix vector matrix))
|
||||
(define-extern matrix-rotate-yx! (function matrix float float matrix))
|
||||
(define-extern matrix-axis-sin-cos-vu! (function matrix vector float float none))
|
||||
(define-extern matrix-axis-sin-cos-vu! "@unused" (function matrix vector float float none))
|
||||
(define-extern matrix-axis-sin-cos! (function matrix vector float float matrix))
|
||||
(define-extern matrix-axis-angle! (function matrix vector float matrix))
|
||||
(define-extern matrix-lerp! (function matrix matrix matrix float matrix))
|
||||
|
@ -7483,27 +7483,27 @@
|
|||
)
|
||||
|
||||
(deftype bigmap-compressed-layers (structure)
|
||||
((data uint32 20 :offset-assert 0 :score -1)
|
||||
(layer0 uint32 :offset 0)
|
||||
(layer1 uint32 :offset 4)
|
||||
(layer2 uint32 :offset 8)
|
||||
(layer3 uint32 :offset 12)
|
||||
(layer4 uint32 :offset 16)
|
||||
(layer5 uint32 :offset 20)
|
||||
(layer6 uint32 :offset 24)
|
||||
(layer7 uint32 :offset 28)
|
||||
(layer8 uint32 :offset 32)
|
||||
(layer9 uint32 :offset 36)
|
||||
(layer10 uint32 :offset 40)
|
||||
(layer11 uint32 :offset 44)
|
||||
(layer12 uint32 :offset 48)
|
||||
(layer13 uint32 :offset 52)
|
||||
(layer14 uint32 :offset 56)
|
||||
(layer15 uint32 :offset 60)
|
||||
(layer16 uint32 :offset 64)
|
||||
(layer17 uint32 :offset 68)
|
||||
(layer18 uint32 :offset 72)
|
||||
(layer19 uint32 :offset 76)
|
||||
((data (pointer uint32) 20 :offset-assert 0 :score -1)
|
||||
(layer0 (pointer uint32) :offset 0)
|
||||
(layer1 (pointer uint32) :offset 4)
|
||||
(layer2 (pointer uint32) :offset 8)
|
||||
(layer3 (pointer uint32) :offset 12)
|
||||
(layer4 (pointer uint32) :offset 16)
|
||||
(layer5 (pointer uint32) :offset 20)
|
||||
(layer6 (pointer uint32) :offset 24)
|
||||
(layer7 (pointer uint32) :offset 28)
|
||||
(layer8 (pointer uint32) :offset 32)
|
||||
(layer9 (pointer uint32) :offset 36)
|
||||
(layer10 (pointer uint32) :offset 40)
|
||||
(layer11 (pointer uint32) :offset 44)
|
||||
(layer12 (pointer uint32) :offset 48)
|
||||
(layer13 (pointer uint32) :offset 52)
|
||||
(layer14 (pointer uint32) :offset 56)
|
||||
(layer15 (pointer uint32) :offset 60)
|
||||
(layer16 (pointer uint32) :offset 64)
|
||||
(layer17 (pointer uint32) :offset 68)
|
||||
(layer18 (pointer uint32) :offset 72)
|
||||
(layer19 (pointer uint32) :offset 76)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x50
|
||||
|
@ -7585,6 +7585,18 @@
|
|||
;; settings-h ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defenum language-enum
|
||||
:type int64
|
||||
(english)
|
||||
(french)
|
||||
(german)
|
||||
(spanish)
|
||||
(italian)
|
||||
(japanese)
|
||||
(korean)
|
||||
(uk-english)
|
||||
)
|
||||
|
||||
(defenum game-feature
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
|
@ -7616,18 +7628,6 @@
|
|||
(darkjak-giant)
|
||||
(board-training))
|
||||
|
||||
(defenum language-enum
|
||||
:type int64
|
||||
(english)
|
||||
(french)
|
||||
(german)
|
||||
(spanish)
|
||||
(italian)
|
||||
(japanese)
|
||||
(korean)
|
||||
(uk-english)
|
||||
)
|
||||
|
||||
(deftype user-setting-data (structure)
|
||||
((border-mode symbol)
|
||||
(process-mask process-mask)
|
||||
|
@ -8278,7 +8278,9 @@
|
|||
(actor-marks)
|
||||
(special-fma-spheres)
|
||||
(scene-controls-7)
|
||||
(scene-controls-8))
|
||||
(scene-controls-8)
|
||||
(display-controls)
|
||||
)
|
||||
;; ---main-h:scene-controls
|
||||
|
||||
(define-extern *display-scene-control* scene-controls)
|
||||
|
@ -8669,8 +8671,6 @@
|
|||
)
|
||||
)
|
||||
|
||||
(declare-type drawable-inline-array-region-prim drawable)
|
||||
|
||||
(deftype drawable-tree-region-prim (drawable-tree)
|
||||
((name basic :offset 8)
|
||||
(data2 drawable-inline-array :dynamic :offset 32 :score 1))
|
||||
|
@ -11313,7 +11313,7 @@
|
|||
(deftype gcf-control (structure)
|
||||
((matrix matrix :inline :offset-assert 0)
|
||||
(giftag generic-gif-tag :inline :offset-assert 64)
|
||||
(adnops uint32 2 :offset-assert 80) ;; guess
|
||||
(adnops gs-adcmd 2 :inline :offset-assert 80)
|
||||
(num-strips uint32 :offset 76)
|
||||
(num-dps uint32 :offset 92)
|
||||
(kick-offset uint32 :offset 108)
|
||||
|
@ -12619,9 +12619,6 @@
|
|||
)
|
||||
;; ---memcard-h:mc-status-code
|
||||
|
||||
(declare-type entity-perm-array inline-array-class)
|
||||
(declare-type continue-point basic)
|
||||
(declare-type game-save basic)
|
||||
|
||||
;; +++game-info-h:game-secrets
|
||||
(defenum game-secrets
|
||||
|
@ -12670,6 +12667,10 @@
|
|||
(reverse-race-3)
|
||||
)
|
||||
|
||||
(declare-type entity-perm-array inline-array-class)
|
||||
(declare-type continue-point basic)
|
||||
(declare-type game-save basic)
|
||||
(declare-type talker-speech-class structure)
|
||||
(declare-type entity-perm structure)
|
||||
(deftype game-info (basic)
|
||||
((mode symbol :offset-assert 4)
|
||||
|
@ -12714,7 +12715,7 @@
|
|||
(sub-task-list (array game-task-node-info) :offset-assert 252)
|
||||
(mission-list (array game-task-node-info) :offset-assert 256)
|
||||
(task-counter uint32 :offset-assert 260)
|
||||
(unknown-pad6 (array uint16) :offset-assert 264)
|
||||
(unknown-pad6 (array uint16) :offset-assert 264)
|
||||
(level-opened uint8 32 :offset-assert 268)
|
||||
(total-deaths int32 :offset-assert 300)
|
||||
(continue-deaths int32 :offset-assert 304)
|
||||
|
@ -12953,38 +12954,37 @@
|
|||
:method-count-assert 14
|
||||
:size-assert #x18
|
||||
:flag-assert #xe00000018
|
||||
;; field on-close uses ~A with a signed load
|
||||
(:methods
|
||||
(talker-speech-class-method-9 () none 9)
|
||||
(talker-speech-class-method-9 (_type_) symbol 9)
|
||||
(talker-speech-class-method-10 (_type_) none 10)
|
||||
(talker-speech-class-method-11 () none 11)
|
||||
(talker-speech-class-method-11 (_type_) none 11)
|
||||
(talker-speech-class-method-12 (_type_ int) none 12)
|
||||
(talker-speech-class-method-13 (_type_ int) none 13)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype talker (process)
|
||||
((trans vector :inline :offset-assert 128)
|
||||
((trans vector :inline :offset-assert 128 :score 999)
|
||||
(message talker-speech-class :offset-assert 144)
|
||||
(total-time time-frame :offset-assert 152)
|
||||
(total-off-time time-frame :offset-assert 160)
|
||||
(start-time time-frame :offset-assert 168)
|
||||
(state-time time-frame :offset-assert 176)
|
||||
(voicebox uint64 :offset-assert 184)
|
||||
(voice-id uint32 :offset-assert 192)
|
||||
(message-id uint32 :offset-assert 196)
|
||||
(voicebox handle :offset-assert 184)
|
||||
(voice-id sound-id :offset-assert 192)
|
||||
(message-id sound-id :offset-assert 196)
|
||||
(region region :offset-assert 200)
|
||||
(interp float :offset-assert 204)
|
||||
(save? basic :offset-assert 208)
|
||||
(save? symbol :offset-assert 208)
|
||||
)
|
||||
:method-count-assert 18
|
||||
:size-assert #xd4
|
||||
:flag-assert #x12006000d4
|
||||
(:methods
|
||||
(talker-method-14 () _type_ :state 14)
|
||||
(talker-method-15 () none 15)
|
||||
(talker-method-16 () none 16)
|
||||
(talker-method-17 () none 17)
|
||||
(idle () _type_ :state 14)
|
||||
(active () _type_ :state 15)
|
||||
(exit () _type_ :state 16)
|
||||
(talker-method-17 (_type_) none 17)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -12994,34 +12994,46 @@
|
|||
;; speech-h ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; +++speech-h:speech-type-flag
|
||||
(defenum speech-type-flag
|
||||
:type uint8
|
||||
:bitfield #t
|
||||
(random-order 0)
|
||||
)
|
||||
;; ---speech-h:speech-type-flag
|
||||
|
||||
(deftype speech-type-info (structure)
|
||||
((channel uint8)
|
||||
(flags speech-type-flag)
|
||||
(priority int8)
|
||||
(request-timeout uint16)
|
||||
(min-delay uint16)
|
||||
(max-delay uint16)
|
||||
(delay uint16)
|
||||
(play-index int16)
|
||||
(list (array string))
|
||||
((channel uint8 :offset-assert 0)
|
||||
(flags speech-type-flag :offset-assert 1)
|
||||
(priority int8 :offset-assert 2)
|
||||
(request-timeout uint16 :offset-assert 4)
|
||||
(min-delay uint16 :offset-assert 6)
|
||||
(max-delay uint16 :offset-assert 8)
|
||||
(delay uint16 :offset-assert 10)
|
||||
(play-index int16 :offset-assert 12)
|
||||
(list (array string) :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x14
|
||||
:flag-assert #x900000014
|
||||
;; Failed to read fields.
|
||||
)
|
||||
|
||||
;; +++speech-h:speech-type
|
||||
(defenum speech-type
|
||||
:type int8
|
||||
:bitfield #t
|
||||
(speech-type-0 0)
|
||||
(speech-type-1 1)
|
||||
(speech-type-2 2)
|
||||
(speech-type-3 3)
|
||||
)
|
||||
;; ---speech-h:speech-type
|
||||
|
||||
(deftype speech-request (structure)
|
||||
((handle uint64 :offset-assert 0)
|
||||
((handle handle :offset-assert 0)
|
||||
(time time-frame :offset-assert 8)
|
||||
(priority float :offset-assert 16)
|
||||
(speech-type int8 :offset-assert 20)
|
||||
(speech-type speech-type :offset-assert 20)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
|
@ -13029,54 +13041,56 @@
|
|||
:flag-assert #x900000015
|
||||
)
|
||||
|
||||
;; +++speech-h:speech-channel-flag
|
||||
(defenum speech-channel-flag
|
||||
:type uint8
|
||||
:bitfield #t
|
||||
(disable 0)
|
||||
)
|
||||
;; ---speech-h:speech-channel-flag
|
||||
|
||||
(deftype speech-channel (structure)
|
||||
((flags speech-channel-flag)
|
||||
(gui-channel gui-channel)
|
||||
(delay uint16)
|
||||
(id uint32)
|
||||
(update-time time-frame :offset-assert 8)
|
||||
(start-time time-frame)
|
||||
(end-time time-frame)
|
||||
(request speech-request :inline)
|
||||
(last-request speech-request :inline)
|
||||
(target-pos vector :inline)
|
||||
(speech-table uint32)
|
||||
((flags speech-channel-flag :offset-assert 0)
|
||||
(gui-channel gui-channel :offset-assert 1)
|
||||
(delay uint16 :offset-assert 2)
|
||||
(id sound-id :offset-assert 4)
|
||||
(update-time time-frame :offset-assert 8)
|
||||
(start-time time-frame :offset-assert 16)
|
||||
(end-time time-frame :offset-assert 24)
|
||||
(request speech-request :inline :offset-assert 32)
|
||||
(last-request speech-request :inline :offset-assert 56)
|
||||
(target-pos vector :inline :offset-assert 80)
|
||||
(speech-table (pointer speech-type-info) :offset-assert 96)
|
||||
)
|
||||
:method-count-assert 14
|
||||
:size-assert #x64
|
||||
:flag-assert #xe00000064
|
||||
(:methods
|
||||
(speech-channel-method-9 () none 9)
|
||||
(speech-channel-method-10 () none 10)
|
||||
(speech-channel-method-11 () none 11)
|
||||
(speech-channel-method-12 () none 12)
|
||||
(speech-channel-method-13 () none 13)
|
||||
(speech-channel-method-9 (_type_ process-drawable speech-type) none 9)
|
||||
(speech-channel-method-10 (_type_ handle) none 10)
|
||||
(speech-channel-method-11 (_type_) none 11)
|
||||
(speech-channel-method-12 (_type_) none 12)
|
||||
(speech-channel-method-13 (_type_) none 13)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype speech-control (structure)
|
||||
((channel-array speech-channel 2 :inline :offset-assert 0)
|
||||
(speech-table speech-type-info 57 :offset-assert 224) ;; guess
|
||||
(speech-table speech-type-info 57 :offset-assert 224)
|
||||
)
|
||||
:method-count-assert 17
|
||||
:size-assert #x1c4
|
||||
:flag-assert #x11000001c4
|
||||
(:methods
|
||||
(speech-control-method-9 () none 9)
|
||||
(speech-control-method-9 (_type_) none 9)
|
||||
(speech-control-method-10 (_type_ int speech-type-info) none 10)
|
||||
(speech-control-method-11 (_type_) none 11)
|
||||
(speech-control-method-12 () none 12)
|
||||
(speech-control-method-13 () none 13)
|
||||
(speech-control-method-14 () none 14)
|
||||
(speech-control-method-15 () none 15)
|
||||
(speech-control-method-16 () none 16)
|
||||
(speech-control-method-12 (_type_ process-drawable speech-type) none 12)
|
||||
(speech-control-method-13 (_type_ handle) none 13)
|
||||
(speech-control-method-14 (_type_) none 14)
|
||||
(speech-control-method-15 (_type_ process-drawable) none 15)
|
||||
(speech-control-method-16 (_type_) none 16)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -13795,9 +13809,9 @@
|
|||
(flags lightning-spec-flags :offset-assert 8)
|
||||
(rand-func uint8 :offset-assert 10)
|
||||
(adjust-distance uint8 :offset-assert 11)
|
||||
(start-color uint32 :offset-assert 12)
|
||||
(end-color uint32 :offset-assert 16)
|
||||
(fade-to-color uint32 :offset-assert 20)
|
||||
(start-color rgba :offset-assert 12)
|
||||
(end-color rgba :offset-assert 16)
|
||||
(fade-to-color rgba :offset-assert 20)
|
||||
(fade-start-factor float :offset-assert 24)
|
||||
(fade-time float :offset-assert 28)
|
||||
(texture uint32 :offset-assert 32)
|
||||
|
@ -13838,8 +13852,8 @@
|
|||
(line vector-array :offset-assert 128)
|
||||
(meet vector-array :offset-assert 132)
|
||||
(path vector-array :offset-assert 136)
|
||||
(start-color uint32 :offset-assert 140)
|
||||
(end-color uint32 :offset-assert 144)
|
||||
(start-color rgba :offset-assert 140)
|
||||
(end-color rgba :offset-assert 144)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x94
|
||||
|
@ -13848,7 +13862,7 @@
|
|||
|
||||
(deftype lightning-control (basic)
|
||||
((spec lightning-spec :offset-assert 4)
|
||||
(process process :offset-assert 8)
|
||||
(process (pointer process) :offset-assert 8)
|
||||
(state lightning-state :inline :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 14
|
||||
|
@ -27221,7 +27235,7 @@
|
|||
;; ambient ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define-extern can-display-query? (function symbol))
|
||||
(define-extern can-display-query? (function process string float symbol))
|
||||
(define-extern talker-surpress! (function none))
|
||||
(define-extern talker-displayed? (function symbol))
|
||||
(define-extern kill-current-talker (function symbol pair symbol none)) ;; see (exit play-anim scene-player)
|
||||
|
@ -27248,6 +27262,7 @@
|
|||
;; fma-sphere ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; +++fma-sphere:fma-sphere-mode
|
||||
(defenum fma-sphere-mode
|
||||
:type uint32
|
||||
:bitfield #t
|
||||
|
@ -27255,16 +27270,18 @@
|
|||
(kill-once 1)
|
||||
(danger 2)
|
||||
(deadly-overlap 3))
|
||||
;; ---fma-sphere:fma-sphere-mode
|
||||
|
||||
(deftype fma-sphere (process-drawable)
|
||||
((first-time? symbol :offset-assert 200)
|
||||
(mode fma-sphere-mode :offset-assert 204)
|
||||
(track-handle handle :offset-assert 208)
|
||||
(track-joint int32 :offset-assert 216)
|
||||
(attack-id uint32 :offset-assert 220)
|
||||
(duration time-frame :offset-assert 224)
|
||||
(sphere sphere :inline :offset-assert 240)
|
||||
(danger traffic-danger-info :inline :offset-assert 256)
|
||||
((root-override collide-shape :offset 128 :score 999)
|
||||
(first-time? symbol :offset-assert 200)
|
||||
(mode fma-sphere-mode :offset-assert 204)
|
||||
(track-handle handle :offset-assert 208)
|
||||
(track-joint int32 :offset-assert 216)
|
||||
(attack-id uint32 :offset-assert 220)
|
||||
(duration time-frame :offset-assert 224)
|
||||
(sphere sphere :inline :offset-assert 240)
|
||||
(danger traffic-danger-info :inline :offset-assert 256)
|
||||
)
|
||||
:method-count-assert 21
|
||||
:size-assert #x136
|
||||
|
@ -27274,7 +27291,8 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-extern fma-sphere-init-by-other (function fma-sphere-mode process-drawable int time-frame object object fma-sphere))
|
||||
;; TODO - takes vectors, but hits an assertion!
|
||||
(define-extern fma-sphere-init-by-other (function fma-sphere-mode process-drawable int time-frame object object fma-sphere :behavior fma-sphere))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; script ;;
|
||||
|
@ -27395,7 +27413,6 @@
|
|||
;; lightning ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype lightning-globals (structure)
|
||||
((gcf-buf uint16 :offset-assert 0)
|
||||
(vtx-buf uint16 :offset-assert 2)
|
||||
|
@ -27404,22 +27421,21 @@
|
|||
:size-assert #x4
|
||||
:flag-assert #x900000004
|
||||
)
|
||||
|#
|
||||
|
||||
(define-extern *lightning-spec-id-table* (array lightning-spec))
|
||||
;; (define-extern *lightning-gcf* object)
|
||||
;; (define-extern lightning-fractal-gen function)
|
||||
;; (define-extern lightning-uniform-gen function)
|
||||
;; (define-extern lightning-trail-uniform-gen function)
|
||||
;; (define-extern lightning-trail-fractal-gen function)
|
||||
;; (define-extern gs-packed-rgba-lerp! function)
|
||||
;; (define-extern rgba-lerp function)
|
||||
;; (define-extern lightning-fade function)
|
||||
;; (define-extern lightning-update function)
|
||||
;; (define-extern lightning-draw function)
|
||||
;; (define-extern lightning-start function)
|
||||
;; (define-extern *lightning-globals* object)
|
||||
;; (define-extern *lightning* object)
|
||||
(define-extern *lightning-gcf* gcf-control)
|
||||
(define-extern lightning-fractal-gen (function (inline-array vector) int int float lightning-spec none))
|
||||
(define-extern lightning-uniform-gen (function (inline-array vector) int int float lightning-spec none))
|
||||
(define-extern lightning-trail-uniform-gen (function (inline-array vector) (inline-array vector) float int symbol))
|
||||
(define-extern lightning-trail-fractal-gen (function (inline-array vector) (inline-array vector) int int float lightning-spec none))
|
||||
(define-extern gs-packed-rgba-lerp! (function gs-packed-rgba rgba rgba float gs-packed-rgba))
|
||||
(define-extern rgba-lerp (function rgba rgba rgba rgba))
|
||||
(define-extern lightning-fade (function lightning-control int :behavior process))
|
||||
(define-extern lightning-update (function lightning-control symbol))
|
||||
(define-extern lightning-draw (function dma-buffer lightning-control lightning-globals symbol))
|
||||
(define-extern lightning-start (function float float (pointer process)))
|
||||
(define-extern *lightning-globals* lightning-globals)
|
||||
(define-extern *lightning* symbol)
|
||||
(define-extern lightning-draw-all (function none))
|
||||
(define-extern unlink-lightning-spec-by-heap (function kheap none))
|
||||
|
||||
|
@ -28227,7 +28243,7 @@
|
|||
;; (define-extern remote-track function)
|
||||
;; (define-extern cam-remote state)
|
||||
;; (define-extern voicebox-init-by-other function) ;; (function vector handle none :behavior voicebox)
|
||||
;; (define-extern voicebox-spawn function) ;; (function process vector (pointer process))
|
||||
(define-extern voicebox-spawn (function process-drawable vector (pointer process))) ;; (function process vector (pointer process))
|
||||
;; (define-extern judge-init-by-other function)
|
||||
;; (define-extern judge-spawn function)
|
||||
|
||||
|
|
|
@ -437,5 +437,6 @@
|
|||
["L125", "uint64", true],
|
||||
["L124", "uint64", true],
|
||||
["L123", "uint64", true]
|
||||
]
|
||||
],
|
||||
"fma-sphere": [["L43", "attack-info"]]
|
||||
}
|
||||
|
|
|
@ -999,6 +999,19 @@
|
|||
"(method 17 sky-work)": [
|
||||
[16, "vector"]
|
||||
],
|
||||
// placeholder
|
||||
"placeholder-do-not-add-below": []
|
||||
"(method 18 drawable-region-face)": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
// stack casts can't be guessed in a "run in process" (since the arg numbers are shifted?)
|
||||
"lightning-start": [
|
||||
[16, "vector"],
|
||||
[32, "vector"]
|
||||
],
|
||||
"lightning-trail-fractal-gen": [
|
||||
[16, "vector"],
|
||||
[32, "vector"],
|
||||
[48, "vector"],
|
||||
[64, "vector"]
|
||||
]
|
||||
}
|
||||
|
|
|
@ -3638,5 +3638,72 @@
|
|||
"scene-player-init": [
|
||||
[[37, 44], "s5", "(array scene)"],
|
||||
[83, "v0", "(array scene)"]
|
||||
],
|
||||
"(trans idle fma-sphere)": [[39, "a2", "process-drawable"]],
|
||||
"(method 10 talker)": [[29, "t9", "(function process none)"]],
|
||||
"(exit active talker)": [[19, "s5", "process-drawable"]],
|
||||
"(method 11 speech-channel)": [
|
||||
[66, "v1", "process-drawable"],
|
||||
[223, "s4", "process-drawable"],
|
||||
[237, "s4", "process-drawable"],
|
||||
[240, "s4", "process-drawable"],
|
||||
[212, "v0", "sound-rpc-set-param"]
|
||||
],
|
||||
"lightning-fractal-gen": [
|
||||
[37, "v1", "float"],
|
||||
[64, "v1", "float"],
|
||||
[91, "v1", "float"]
|
||||
],
|
||||
"lightning-uniform-gen": [
|
||||
[38, "v1", "float"],
|
||||
[60, "v1", "float"],
|
||||
[82, "v1", "float"]
|
||||
],
|
||||
"lightning-trail-uniform-gen": [
|
||||
[21, "v1", "float"],
|
||||
[43, "v1", "float"],
|
||||
[65, "v1", "float"]
|
||||
],
|
||||
"lightning-trail-fractal-gen": [
|
||||
[52, "v1", "float"],
|
||||
[71, "v1", "float"],
|
||||
[90, "v1", "float"]
|
||||
],
|
||||
"lightning-draw": [
|
||||
[[407, 444], "v1", "(inline-array vector)"],
|
||||
[[66, 76], "v1", "gs-packed-rgba"],
|
||||
[[101, 112], "v1", "gs-packed-rgba"],
|
||||
[[134, 143], "a0", "gs-packed-rgba"],
|
||||
[[149, 159], "a0", "gs-packed-rgba"],
|
||||
[173, "a1", "gcf-vertex"],
|
||||
[181, "a1", "gcf-vertex"],
|
||||
[189, "a1", "gcf-vertex"],
|
||||
[196, "a1", "gcf-vertex"],
|
||||
[213, "a2", "gcf-vertex"],
|
||||
[221, "a2", "gcf-vertex"],
|
||||
[229, "a2", "gcf-vertex"],
|
||||
[236, "a0", "gcf-vertex"],
|
||||
[[255, 264], "a0", "gs-packed-rgba"],
|
||||
[[270, 280], "a0", "gs-packed-rgba"],
|
||||
[295, "a2", "gcf-vertex"],
|
||||
[303, "a2", "gcf-vertex"],
|
||||
[311, "a2", "gcf-vertex"],
|
||||
[318, "a0", "gcf-vertex"],
|
||||
[335, "a2", "gcf-vertex"],
|
||||
[343, "a2", "gcf-vertex"],
|
||||
[351, "a2", "gcf-vertex"],
|
||||
[358, "a0", "gcf-vertex"],
|
||||
[374, "a2", "gcf-vertex"],
|
||||
[382, "a2", "gcf-vertex"],
|
||||
[390, "a2", "gcf-vertex"],
|
||||
[397, "a0", "gcf-vertex"],
|
||||
[[472, 487], "a0", "dma-packet"],
|
||||
[[559, 576], "a0", "dma-packet"],
|
||||
[[597, 602], "a0", "dma-packet"]
|
||||
],
|
||||
"lightning-draw-all": [
|
||||
[39, "v1", "connection"],
|
||||
[40, "s1", "dma-buffer"],
|
||||
[[88, 91], "v1", "dma-packet"]
|
||||
]
|
||||
}
|
||||
|
|
|
@ -729,6 +729,68 @@ const std::unordered_map<
|
|||
{{"data", ArrayFieldDecompMeta(TypeSpec("int8"),
|
||||
1,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
// kinda want to add regex support now...
|
||||
{"bigmap-compressed-layers",
|
||||
{{"layer0", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer1", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer2", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer3", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer4", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer5", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer6", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer7", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer8", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer9", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer10", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer11", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer12", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer13", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer14", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer15", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer16", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer17", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer18", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
|
||||
{"layer19", ArrayFieldDecompMeta(TypeSpec("uint32"),
|
||||
4,
|
||||
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
|
||||
{"lightning-probe-vars", {{"probe-dirs", ArrayFieldDecompMeta(TypeSpec("vector"), 16)}}},
|
||||
{"nav-mesh",
|
||||
{{"poly-array", ArrayFieldDecompMeta(TypeSpec("nav-poly"), 64)},
|
||||
|
|
|
@ -5,6 +5,13 @@
|
|||
;; name in dgo: ambient-h
|
||||
;; dgos: ENGINE, GAME
|
||||
|
||||
(declare-type talker-speech-class structure)
|
||||
(define-extern talker-spawn-func (function talker-speech-class process-tree vector region int))
|
||||
(define-extern talker-surpress! (function none))
|
||||
(declare-type talker process)
|
||||
(define-extern talker-init (function talker-speech-class vector region none :behavior talker))
|
||||
(define-extern voicebox-spawn (function process-drawable vector (pointer process)))
|
||||
|
||||
;; NOTE - for scene
|
||||
(define-extern kill-current-talker (function symbol pair symbol none))
|
||||
|
||||
|
@ -27,9 +34,9 @@
|
|||
:size-assert #x18
|
||||
:flag-assert #xe00000018
|
||||
(:methods
|
||||
(talker-speech-class-method-9 () none 9)
|
||||
(talker-speech-class-method-9 (_type_) symbol 9)
|
||||
(talker-speech-class-method-10 (_type_) none 10)
|
||||
(talker-speech-class-method-11 () none 11)
|
||||
(talker-speech-class-method-11 (_type_) none 11)
|
||||
(talker-speech-class-method-12 (_type_ int) none 12)
|
||||
(talker-speech-class-method-13 (_type_ int) none 13)
|
||||
)
|
||||
|
@ -43,22 +50,22 @@
|
|||
(total-off-time time-frame :offset-assert 160)
|
||||
(start-time time-frame :offset-assert 168)
|
||||
(state-time time-frame :offset-assert 176)
|
||||
(voicebox uint64 :offset-assert 184)
|
||||
(voice-id uint32 :offset-assert 192)
|
||||
(message-id uint32 :offset-assert 196)
|
||||
(voicebox handle :offset-assert 184)
|
||||
(voice-id sound-id :offset-assert 192)
|
||||
(message-id sound-id :offset-assert 196)
|
||||
(region region :offset-assert 200)
|
||||
(interp float :offset-assert 204)
|
||||
(save? basic :offset-assert 208)
|
||||
(save? symbol :offset-assert 208)
|
||||
)
|
||||
:heap-base #x60
|
||||
:method-count-assert 18
|
||||
:size-assert #xd4
|
||||
:flag-assert #x12006000d4
|
||||
(:methods
|
||||
(talker-method-14 () _type_ :state 14)
|
||||
(talker-method-15 () none 15)
|
||||
(talker-method-16 () none 16)
|
||||
(talker-method-17 () none 17)
|
||||
(idle () _type_ :state 14)
|
||||
(active () _type_ :state 15)
|
||||
(exit () _type_ :state 16)
|
||||
(talker-method-17 (_type_) none 17)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -1666,8 +1673,3 @@
|
|||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define-extern talker-surpress! (function none))
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -9,6 +9,36 @@
|
|||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defun can-display-query? ((arg0 process) (arg1 string) (arg2 float))
|
||||
(let ((a1-3 (gui-control-method-12
|
||||
*gui-control*
|
||||
arg0
|
||||
(gui-channel query)
|
||||
(gui-action play)
|
||||
(if arg1
|
||||
arg1
|
||||
(symbol->string (-> arg0 type symbol))
|
||||
)
|
||||
0
|
||||
arg2
|
||||
(new 'static 'sound-id)
|
||||
)
|
||||
)
|
||||
)
|
||||
(= (gui-control-method-17 *gui-control* a1-3) (gui-action playing))
|
||||
)
|
||||
)
|
||||
|
||||
(defun talker-surpress! ()
|
||||
(set! (-> *game-info* hint-play-time) (-> *display* base-clock frame-counter))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun talker-displayed? ()
|
||||
#f
|
||||
)
|
||||
|
||||
(defun kill-current-talker ((arg0 symbol) (arg1 pair) (arg2 symbol))
|
||||
(if (not (member 'daxter arg1))
|
||||
(gui-control-method-16
|
||||
|
@ -71,3 +101,445 @@
|
|||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun string->talker-speech ((arg0 string))
|
||||
(dotimes (s5-0 465)
|
||||
(let ((s4-0 (-> *talker-speech* s5-0)))
|
||||
(if (string= arg0 (-> s4-0 name))
|
||||
(return s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(-> *talker-speech* 0)
|
||||
)
|
||||
|
||||
(defmethod talker-speech-class-method-9 talker-speech-class ((obj talker-speech-class))
|
||||
(and (>= (-> *game-info* unknown-pad6 (* (-> obj speech) 2)) (-> obj pos))
|
||||
(>= (-> obj neg) (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1)))
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod talker-speech-class-method-10 talker-speech-class ((obj talker-speech-class))
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1)) (the-as uint #xffff))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod talker-speech-class-method-11 talker-speech-class ((obj talker-speech-class))
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1)) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod talker-speech-class-method-12 talker-speech-class ((obj talker-speech-class) (arg0 int))
|
||||
(if (>= arg0 0)
|
||||
(set! (-> *game-info* unknown-pad6 (* (-> obj speech) 2))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (* (-> obj speech) 2))) #xfff0 arg0))
|
||||
)
|
||||
(set! (-> *game-info* unknown-pad6 (* (-> obj speech) 2))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (* (-> obj speech) 2))) 0 (- arg0)))
|
||||
)
|
||||
)
|
||||
(if (talker-speech-class-method-9 obj)
|
||||
(talker-spawn-func obj *entity-pool* (target-pos 0) (the-as region #f))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod talker-speech-class-method-13 talker-speech-class ((obj talker-speech-class) (arg0 int))
|
||||
(if (>= arg0 0)
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))) #xfff0 arg0))
|
||||
)
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))) 0 (- arg0)))
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun talker-spawn-func ((arg0 talker-speech-class) (arg1 process-tree) (arg2 vector) (arg3 region))
|
||||
(local-vars (s2-0 int))
|
||||
(when (or (not arg0) (zero? (-> arg0 speech)) (not (talker-speech-class-method-9 arg0)))
|
||||
(set! s2-0 0)
|
||||
(goto cfg-27)
|
||||
)
|
||||
(if (and (or (not (-> *setting-control* user-current play-hints))
|
||||
(= (-> *setting-control* user-current dialog-volume) 0.0)
|
||||
)
|
||||
(logtest? (-> arg0 flags) 1)
|
||||
)
|
||||
(talker-speech-class-method-10 arg0)
|
||||
)
|
||||
(set! s2-0 (gui-control-method-14 *gui-control* (-> arg0 name) (-> arg0 channel) (gui-action none)))
|
||||
(set! s2-0 (cond
|
||||
((zero? s2-0)
|
||||
(let ((v1-17 (process-spawn talker :init talker-init arg0 arg2 arg3 :to arg1)))
|
||||
(cond
|
||||
(v1-17
|
||||
(if (nonzero? (-> (the-as talker (-> v1-17 0)) voice-id))
|
||||
(the-as int (-> (the-as talker (-> v1-17 0)) voice-id))
|
||||
(the-as int (-> (the-as talker (-> v1-17 0)) message-id))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(empty)
|
||||
s2-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(empty)
|
||||
s2-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-27)
|
||||
s2-0
|
||||
)
|
||||
|
||||
(defbehavior talker-init talker ((arg0 talker-speech-class) (arg1 vector) (arg2 region))
|
||||
(set! (-> self trans quad) (-> arg1 quad))
|
||||
(let ((v1-2 (shr (the-as int (-> arg0 channel)) 4)))
|
||||
(if (not (or (or (= v1-2 4) (= v1-2 5))
|
||||
(or (not (-> *setting-control* user-current play-hints))
|
||||
(= (-> *setting-control* user-current dialog-volume) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self voice-id)
|
||||
(gui-control-method-9 *gui-control* self (-> arg0 channel) (gui-action queue) (-> arg0 name) 81920.0 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (nonzero? (-> arg0 text-message))
|
||||
(let* ((a0-6 *gui-control*)
|
||||
(t9-1 (method-of-object a0-6 gui-control-method-9))
|
||||
(a1-3 self)
|
||||
(v1-15 (shr (the-as int (-> arg0 channel)) 4))
|
||||
)
|
||||
(set! (-> self message-id) (t9-1
|
||||
a0-6
|
||||
a1-3
|
||||
(if (or (= v1-15 4) (= v1-15 5))
|
||||
(the-as gui-channel (the-as int (-> arg0 channel)))
|
||||
(gui-channel message)
|
||||
)
|
||||
(gui-action play)
|
||||
(-> arg0 name)
|
||||
81920.0
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self message) arg0)
|
||||
(set! (-> self region) arg2)
|
||||
(set! (-> self total-time) 0)
|
||||
(set! (-> self total-off-time) 0)
|
||||
(set! (-> self start-time) (-> self clock frame-counter))
|
||||
(set! (-> self voicebox) (the-as handle #f))
|
||||
(set! (-> self save?) #f)
|
||||
(if (logtest? (-> self message flags) 96)
|
||||
(set! (-> self interp) 0.0)
|
||||
(set! (-> self interp) 1.0)
|
||||
)
|
||||
(go-virtual idle)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod deactivate talker ((obj talker))
|
||||
(send-event (handle->process (-> obj voicebox)) 'die)
|
||||
((the-as (function process none) (find-parent-method talker 10)) obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod talker-method-17 talker ((obj talker))
|
||||
(let ((gp-0 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
36
|
||||
310
|
||||
0.0
|
||||
(font-color default-#cddbcd)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-0 320.0))
|
||||
(let ((v1-2 gp-0))
|
||||
(set! (-> v1-2 scale) 0.75)
|
||||
)
|
||||
(case (-> obj message channel)
|
||||
(((gui-channel notice))
|
||||
(cond
|
||||
((logtest? (-> obj message flags) 128)
|
||||
(let ((v1-9 gp-0)
|
||||
(a1-1 36)
|
||||
(a0-4 140)
|
||||
)
|
||||
(set! (-> v1-9 origin x) (the float a1-1))
|
||||
(set! (-> v1-9 origin y) (the float a0-4))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((v1-10 gp-0))
|
||||
(set! (-> v1-10 scale) 0.6)
|
||||
)
|
||||
(let ((v1-11 gp-0)
|
||||
(a1-2 36)
|
||||
(a0-6 160)
|
||||
)
|
||||
(set! (-> v1-11 origin x) (the float a1-2))
|
||||
(set! (-> v1-11 origin y) (the float a0-6))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! f0-0 160.0)
|
||||
)
|
||||
)
|
||||
(let ((v1-14 gp-0))
|
||||
(set! (-> v1-14 width) (the float (the-as float #x1b8)))
|
||||
)
|
||||
(let ((v1-15 gp-0))
|
||||
(set! (-> v1-15 height) (the float (the-as float #x8c)))
|
||||
)
|
||||
(set! (-> gp-0 flags) (font-flags shadow kerning middle large))
|
||||
(if (logtest? (-> obj message flags) 32)
|
||||
(set! (-> gp-0 alpha) (-> obj interp))
|
||||
(set! (-> gp-0 alpha) 1.0)
|
||||
)
|
||||
(when (logtest? (-> obj message flags) 64)
|
||||
(let ((s4-0 gp-0)
|
||||
(s3-0 36)
|
||||
(v1-27 (the int (lerp-scale 400.0 f0-0 (-> obj interp) 0.0 1.0)))
|
||||
)
|
||||
(set! (-> s4-0 origin x) (the float s3-0))
|
||||
(set! (-> s4-0 origin y) (the float v1-27))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s4-1 print-game-text)
|
||||
(a0-11 (lookup-text! *common-text* (the-as game-text-id (-> obj message text-message)) #f))
|
||||
(a2-3 #f)
|
||||
(a3-2 44)
|
||||
(v1-31 (-> obj message channel))
|
||||
)
|
||||
(s4-1
|
||||
a0-11
|
||||
gp-0
|
||||
a2-3
|
||||
a3-2
|
||||
(if (or (= v1-31 (gui-channel notice)) (= v1-31 (gui-channel notice-low)) (= v1-31 (gui-channel subtitle)))
|
||||
322
|
||||
320
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defstate idle (talker)
|
||||
:virtual #t
|
||||
:code (behavior ()
|
||||
(let ((gp-0 (-> self clock frame-counter)))
|
||||
(until (>= (- (-> self clock frame-counter) gp-0) (the-as time-frame (-> self message delay)))
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(case (-> self message channel)
|
||||
(((gui-channel voicebox))
|
||||
(if *target*
|
||||
(set! (-> self voicebox) (ppointer->handle (voicebox-spawn *target* (target-pos 0))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(while (< (- (-> self clock frame-counter) (-> self start-time)) (the-as time-frame (+ (-> self message delay) 300)))
|
||||
(if (and (or (zero? (-> self voice-id)) (= (gui-control-method-17 *gui-control* (-> self voice-id)) (gui-action play)))
|
||||
(or (zero? (-> self message-id))
|
||||
(= (gui-control-method-17 *gui-control* (-> self message-id)) (gui-action playing))
|
||||
)
|
||||
)
|
||||
(go-virtual active)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
(go-virtual exit)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate active (talker)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(set! (-> self state-time) (-> self clock frame-counter))
|
||||
(if (logtest? (-> self message flags) 1)
|
||||
(talker-speech-class-method-10 (-> self message))
|
||||
)
|
||||
(set-setting! 'hint (process->ppointer self) 0 0)
|
||||
(set-setting! 'speech-control #f 0 0)
|
||||
(if (nonzero? (-> self voice-id))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action play)
|
||||
(-> self voice-id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(when (and (nonzero? (-> self voice-id)) (logtest? (-> self message flags) 2))
|
||||
(add-setting! 'music-volume 'rel (-> *setting-control* user-current music-volume-movie) 0)
|
||||
(add-setting! 'sfx-volume 'rel (-> *setting-control* user-current sfx-movie-volume) 0)
|
||||
(add-setting! 'dialog-volume 'rel (-> *setting-control* user-current dialog-volume-hint) 0)
|
||||
)
|
||||
(if (logtest? (-> self message flags) 4)
|
||||
(auto-save-user)
|
||||
)
|
||||
(apply-settings *setting-control*)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(let ((gp-0 (-> self message on-close)))
|
||||
(when gp-0
|
||||
(let* ((s5-0 (handle->process (-> self voicebox)))
|
||||
(v1-5 (if (type? s5-0 process-drawable)
|
||||
(the-as process-drawable s5-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(eval!
|
||||
(new 'stack 'script-context (the-as basic (process->ppointer self)) self (if v1-5
|
||||
(-> v1-5 root trans)
|
||||
)
|
||||
)
|
||||
(the-as pair gp-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (logtest? (-> self message flags) 8) (not (-> self save?)))
|
||||
(set! (-> self save?) #t)
|
||||
(auto-save-user)
|
||||
)
|
||||
(if (nonzero? (-> self voice-id))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> self voice-id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(if (nonzero? (-> self message-id))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> self message-id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(remove-setting! 'music-volume)
|
||||
(remove-setting! 'sfx-volume)
|
||||
(remove-setting! 'dialog-volume)
|
||||
(remove-setting! 'hint)
|
||||
(remove-setting! 'speech-control)
|
||||
(apply-settings *setting-control*)
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(local-vars (v1-43 symbol))
|
||||
(let ((gp-1 (zero? (logand (-> self message flags) 2))))
|
||||
(while (or (and (nonzero? (-> self voice-id))
|
||||
(let ((v1-34 (gui-control-method-17 *gui-control* (-> self voice-id))))
|
||||
(or (= v1-34 (gui-action play)) (= v1-34 (gui-action playing)))
|
||||
)
|
||||
(begin
|
||||
(dotimes (s5-2 4)
|
||||
(when (and (string-charp= (-> self message name) (the-as (pointer uint8) (-> *sound-iop-info* stream-name s5-2)))
|
||||
(= (-> self voice-id) (-> *sound-iop-info* stream-id s5-2))
|
||||
(logtest? (-> *sound-iop-info* stream-status s5-2) (stream-status ststatus-six))
|
||||
)
|
||||
(set! v1-43 #f)
|
||||
(goto cfg-39)
|
||||
)
|
||||
)
|
||||
(set! v1-43 #t)
|
||||
(label cfg-39)
|
||||
(and v1-43 (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 120)))
|
||||
)
|
||||
)
|
||||
(and (nonzero? (-> self message-id))
|
||||
(= (gui-control-method-17 *gui-control* (-> self message-id)) (gui-action playing))
|
||||
(or (< (- (-> self clock frame-counter) (-> self state-time)) (the-as time-frame (-> self message text-duration)))
|
||||
(and (logtest? (-> self message flags) 16) (-> self region) (region-method-9 (-> self region) (target-pos 0)))
|
||||
)
|
||||
)
|
||||
(< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05))
|
||||
)
|
||||
(when (and (nonzero? (-> self voice-id))
|
||||
(not gp-1)
|
||||
(zero? (gui-control-method-17 *gui-control* (-> self voice-id)))
|
||||
)
|
||||
(remove-setting! 'music-volume)
|
||||
(remove-setting! 'sfx-volume)
|
||||
(remove-setting! 'dialog-volume)
|
||||
(set! gp-1 #t)
|
||||
)
|
||||
(when (and (nonzero? (-> self message-id))
|
||||
(= (gui-control-method-17 *gui-control* (-> self message-id)) (gui-action playing))
|
||||
(not (paused?))
|
||||
)
|
||||
(if (logtest? (-> self message flags) 32)
|
||||
(seek! (-> self interp) 1.0 (* 0.5 (-> self clock seconds-per-frame)))
|
||||
(seek! (-> self interp) 1.0 (* 4.0 (-> self clock seconds-per-frame)))
|
||||
)
|
||||
(talker-method-17 self)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(when (and (nonzero? (-> self message-id)) (logtest? (-> self message flags) 96))
|
||||
(while (!= (-> self interp) 0.0)
|
||||
(if (logtest? (-> self message flags) 32)
|
||||
(seek! (-> self interp) 0.0 (* 0.5 (-> self clock seconds-per-frame)))
|
||||
(seek! (-> self interp) 0.0 (* 4.0 (-> self clock seconds-per-frame)))
|
||||
)
|
||||
(talker-method-17 self)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(when (and (logtest? (-> self message flags) 8) (not (-> self save?)))
|
||||
(let ((gp-2 (-> self clock frame-counter)))
|
||||
(until (>= (- (-> self clock frame-counter) gp-2) (seconds 1))
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(set! (-> self save?) #t)
|
||||
(auto-save-user)
|
||||
)
|
||||
(go-virtual exit)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate exit (talker)
|
||||
:virtual #t
|
||||
:code (the-as (function none :behavior talker) nothing)
|
||||
)
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
;; name in dgo: fma-sphere
|
||||
;; dgos: ENGINE, GAME
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
;; og:ignore-form:(defbehavior fma-sphere-init-by-other
|
||||
|
||||
;; +++fma-sphere-mode
|
||||
(defenum fma-sphere-mode
|
||||
:type uint32
|
||||
:bitfield #t
|
||||
|
@ -15,17 +15,25 @@
|
|||
(kill-once 1)
|
||||
(danger 2)
|
||||
(deadly-overlap 3))
|
||||
;; ---fma-sphere-mode
|
||||
|
||||
(declare-type fma-sphere process-drawable)
|
||||
(define-extern fma-sphere-init-by-other (function fma-sphere-mode process-drawable int time-frame object object fma-sphere :behavior fma-sphere))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype fma-sphere (process-drawable)
|
||||
((first-time? symbol :offset-assert 200)
|
||||
(mode fma-sphere-mode :offset-assert 204)
|
||||
(track-handle handle :offset-assert 208)
|
||||
(track-joint int32 :offset-assert 216)
|
||||
(attack-id uint32 :offset-assert 220)
|
||||
(duration time-frame :offset-assert 224)
|
||||
(sphere sphere :inline :offset-assert 240)
|
||||
(danger traffic-danger-info :inline :offset-assert 256)
|
||||
((root-override collide-shape :offset 128)
|
||||
(first-time? symbol :offset-assert 200)
|
||||
(mode fma-sphere-mode :offset-assert 204)
|
||||
(track-handle handle :offset-assert 208)
|
||||
(track-joint int32 :offset-assert 216)
|
||||
(attack-id uint32 :offset-assert 220)
|
||||
(duration time-frame :offset-assert 224)
|
||||
(sphere sphere :inline :offset-assert 240)
|
||||
(danger traffic-danger-info :inline :offset-assert 256)
|
||||
)
|
||||
:heap-base #xc0
|
||||
:method-count-assert 21
|
||||
:size-assert #x136
|
||||
:flag-assert #x1500c00136
|
||||
|
@ -34,4 +42,121 @@
|
|||
)
|
||||
)
|
||||
|
||||
(define-extern fma-sphere-init-by-other (function fma-sphere-mode process-drawable int time-frame object object fma-sphere))
|
||||
|
||||
(defmethod run-logic? fma-sphere ((obj fma-sphere))
|
||||
(or (logtest? *display-scene-control* (scene-controls display-controls))
|
||||
(and *display-nav-marks* (logtest? (-> obj mode) (fma-sphere-mode nav)))
|
||||
(logtest? (-> obj mode) (fma-sphere-mode deadly-overlap))
|
||||
(>= (-> obj track-joint) 0)
|
||||
(-> obj first-time?)
|
||||
)
|
||||
)
|
||||
|
||||
(defstate idle (fma-sphere)
|
||||
:virtual #t
|
||||
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
||||
(case event-type
|
||||
(('touched)
|
||||
(let ((v1-1 (-> event param 0)))
|
||||
(when v1-1
|
||||
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-2 from) (process->ppointer self))
|
||||
(set! (-> a1-2 num-params) 2)
|
||||
(set! (-> a1-2 message) 'attack)
|
||||
(set! (-> a1-2 param 0) v1-1)
|
||||
(let ((v1-2 (new 'static 'attack-info :mask (attack-info-mask mode id attacker-velocity damage knock))))
|
||||
(set! (-> v1-2 id) (-> self attack-id))
|
||||
(set! (-> v1-2 mode) 'eco-red)
|
||||
(set! (-> v1-2 attacker-velocity quad) (-> self root-override transv quad))
|
||||
(set! (-> v1-2 damage) 2.0)
|
||||
(set! (-> v1-2 knock) (the-as uint 2))
|
||||
(set! (-> a1-2 param 1) (the-as uint v1-2))
|
||||
)
|
||||
(send-event-function proc a1-2)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:enter (behavior ()
|
||||
(set! (-> self state-time) (-> self clock frame-counter))
|
||||
(set! (-> self first-time?) #f)
|
||||
(if (logtest? (-> self mode) (fma-sphere-mode kill-once))
|
||||
(send-event *traffic-manager* 'kill-traffic-sphere (-> self sphere))
|
||||
)
|
||||
(none)
|
||||
)
|
||||
:trans (behavior ()
|
||||
(local-vars (at-0 int))
|
||||
(rlet ((vf0 :class vf)
|
||||
(vf1 :class vf)
|
||||
(vf2 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let ((v1-0 (-> self duration)))
|
||||
(if (and (nonzero? v1-0) (>= (- (-> self clock frame-counter) (-> self state-time)) v1-0))
|
||||
(go empty-state)
|
||||
)
|
||||
)
|
||||
(let ((v1-5 (-> self track-joint)))
|
||||
(when (>= v1-5 0)
|
||||
(let ((a2-0 (handle->process (-> self track-handle)))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(when a2-0
|
||||
(set! (-> gp-0 quad) (-> self sphere quad))
|
||||
(set! (-> gp-0 w) 1.0)
|
||||
(vector-matrix*! gp-0 gp-0 (-> (the-as process-drawable a2-0) node-list data v1-5 bone transform))
|
||||
(let ((v1-9 (-> self root-override)))
|
||||
(vector-! (-> v1-9 transv) gp-0 (-> v1-9 trans))
|
||||
(let ((a0-12 (-> v1-9 transv)))
|
||||
(.lvf vf1 (&-> (-> v1-9 transv) quad))
|
||||
(let ((f0-1 (-> self clock frames-per-second)))
|
||||
(.mov at-0 f0-1)
|
||||
)
|
||||
(.mov vf2 at-0)
|
||||
(.mov.vf vf1 vf0 :mask #b1000)
|
||||
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
|
||||
(.svf (&-> a0-12 quad) vf1)
|
||||
)
|
||||
)
|
||||
(collide-shape-method-29 (-> self root-override) gp-0)
|
||||
(set! (-> self danger sphere x) (-> gp-0 x))
|
||||
(set! (-> self danger sphere y) (-> gp-0 y))
|
||||
(set! (-> self danger sphere z) (-> gp-0 z))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(if (logtest? (-> self mode) (fma-sphere-mode danger))
|
||||
(send-event *traffic-manager* 'add-danger-sphere (-> self danger))
|
||||
)
|
||||
(when (logtest? (-> self mode) (fma-sphere-mode deadly-overlap))
|
||||
(let ((a1-10 (new 'stack-no-clear 'overlaps-others-params)))
|
||||
(set! (-> a1-10 options) (overlaps-others-options))
|
||||
(set! (-> a1-10 collide-with-filter) (the-as collide-spec -1))
|
||||
(set! (-> a1-10 tlist) *touching-list*)
|
||||
(find-overlapping-shapes (-> self root-override) a1-10)
|
||||
)
|
||||
)
|
||||
(if (or (logtest? *display-scene-control* (scene-controls display-controls))
|
||||
(and *display-nav-marks* (logtest? (-> self mode) (fma-sphere-mode nav)))
|
||||
)
|
||||
(add-debug-sphere
|
||||
#t
|
||||
(bucket-id debug2)
|
||||
(-> self root-override trans)
|
||||
(-> self sphere r)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
:code (the-as (function none :behavior fma-sphere) sleep-code)
|
||||
)
|
||||
|
||||
;; ERROR: failed type prop at 36: Could not figure out load: (set! a0 (l.q a0))
|
||||
;; WARN: Return type mismatch none vs fma-sphere.
|
||||
;; ERROR: Unsupported inline assembly instruction kind - [sllv v1, v1, r0]
|
||||
|
|
|
@ -1377,7 +1377,7 @@
|
|||
(let ((conts (-> (the-as level-load-info (-> (the-as symbol (car levels)) value)) continues)))
|
||||
(while (not (null? conts))
|
||||
(let ((cont (the-as continue-point (car conts))))
|
||||
(if (zero? (logand (-> cont flags) (continue-flags cf2)))
|
||||
(if (not (logtest? (-> cont flags) (continue-flags cf2)))
|
||||
(format #t "~S~%" (-> cont name))
|
||||
)
|
||||
)
|
||||
|
|
|
@ -36,7 +36,9 @@
|
|||
(actor-marks)
|
||||
(special-fma-spheres)
|
||||
(scene-controls-7)
|
||||
(scene-controls-8))
|
||||
(scene-controls-8)
|
||||
(display-controls)
|
||||
)
|
||||
;; ---scene-controls
|
||||
|
||||
;; +++bot-marks-controls
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
:flag-assert #x900000080
|
||||
)
|
||||
|
||||
|
||||
(deftype generic-pris-mtx-save (structure)
|
||||
((loc-mtx pris-mtx :inline :offset-assert 0)
|
||||
(par-mtx pris-mtx :inline :offset-assert 128)
|
||||
|
@ -29,6 +30,7 @@
|
|||
:flag-assert #x900000180
|
||||
)
|
||||
|
||||
|
||||
(deftype generic-constants (structure)
|
||||
((fog vector :inline :offset-assert 0)
|
||||
(adgif gs-gif-tag :inline :offset-assert 16)
|
||||
|
@ -44,6 +46,7 @@
|
|||
:flag-assert #x900000080
|
||||
)
|
||||
|
||||
|
||||
(deftype generic-shrub-constants (structure)
|
||||
((shrub-giftag generic-gif-tag :inline :offset-assert 0)
|
||||
(shrub-adnop qword :inline :offset-assert 16)
|
||||
|
@ -53,6 +56,7 @@
|
|||
:flag-assert #x900000020
|
||||
)
|
||||
|
||||
|
||||
(deftype gcf-shader (structure)
|
||||
((adgif uint128 5 :offset-assert 0)
|
||||
(shader adgif-shader :inline :offset 0)
|
||||
|
@ -64,10 +68,11 @@
|
|||
:flag-assert #x900000050
|
||||
)
|
||||
|
||||
|
||||
(deftype gcf-control (structure)
|
||||
((matrix matrix :inline :offset-assert 0)
|
||||
(giftag generic-gif-tag :inline :offset-assert 64)
|
||||
(adnops uint32 2 :offset-assert 80)
|
||||
(adnops gs-adcmd 2 :inline :offset-assert 80)
|
||||
(num-strips uint32 :offset 76)
|
||||
(num-dps uint32 :offset 92)
|
||||
(kick-offset uint32 :offset 108)
|
||||
|
@ -78,6 +83,7 @@
|
|||
:flag-assert #x900000070
|
||||
)
|
||||
|
||||
|
||||
(deftype gcf-vertex (structure)
|
||||
((tex vector4w :inline :offset-assert 0)
|
||||
(clr gs-packed-rgba :inline :offset-assert 16)
|
||||
|
|
|
@ -41,9 +41,9 @@
|
|||
(flags lightning-spec-flags :offset-assert 8)
|
||||
(rand-func uint8 :offset-assert 10)
|
||||
(adjust-distance uint8 :offset-assert 11)
|
||||
(start-color uint32 :offset-assert 12)
|
||||
(end-color uint32 :offset-assert 16)
|
||||
(fade-to-color uint32 :offset-assert 20)
|
||||
(start-color rgba :offset-assert 12)
|
||||
(end-color rgba :offset-assert 16)
|
||||
(fade-to-color rgba :offset-assert 20)
|
||||
(fade-start-factor float :offset-assert 24)
|
||||
(fade-time float :offset-assert 28)
|
||||
(texture uint32 :offset-assert 32)
|
||||
|
@ -64,6 +64,7 @@
|
|||
:flag-assert #x900000050
|
||||
)
|
||||
|
||||
|
||||
(defun lookup-lightning-spec-by-name ((arg0 string))
|
||||
(let* ((s5-0 *lightning-spec-id-table*)
|
||||
(s4-0 (-> s5-0 length))
|
||||
|
@ -88,8 +89,8 @@
|
|||
(line vector-array :offset-assert 128)
|
||||
(meet vector-array :offset-assert 132)
|
||||
(path vector-array :offset-assert 136)
|
||||
(start-color uint32 :offset-assert 140)
|
||||
(end-color uint32 :offset-assert 144)
|
||||
(start-color rgba :offset-assert 140)
|
||||
(end-color rgba :offset-assert 144)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x94
|
||||
|
@ -98,9 +99,9 @@
|
|||
|
||||
|
||||
(deftype lightning-control (basic)
|
||||
((spec lightning-spec :offset-assert 4)
|
||||
(process process :offset-assert 8)
|
||||
(state lightning-state :inline :offset-assert 16)
|
||||
((spec lightning-spec :offset-assert 4)
|
||||
(process (pointer process) :offset-assert 8)
|
||||
(state lightning-state :inline :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 14
|
||||
:size-assert #xa4
|
||||
|
@ -207,7 +208,7 @@
|
|||
)
|
||||
(set! (-> obj state box-size) f0-0)
|
||||
)
|
||||
(set! (-> obj process) (the-as process (process->ppointer arg1)))
|
||||
(set! (-> obj process) (process->ppointer arg1))
|
||||
(set! (-> obj state mode) (lightning-mode lm1))
|
||||
(set! (-> obj state line) ((method-of-type vector-array new) allocation vector-array s3-0))
|
||||
(set! (-> obj state meet) ((method-of-type vector-array new) allocation vector-array s3-0))
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
(define-extern rider-trans (function none :behavior process-drawable))
|
||||
;; NOTE - for base-plat
|
||||
(define-extern rider-post (function none :behavior process-drawable))
|
||||
;; NOTE - for fma-sphere
|
||||
(define-extern sleep-code (function symbol))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
|
|
@ -5,22 +5,36 @@
|
|||
;; name in dgo: speech-h
|
||||
;; dgos: ENGINE, GAME
|
||||
|
||||
;; NOTE - for settings
|
||||
(declare-type speech-control structure)
|
||||
(define-extern *speech-control* speech-control)
|
||||
|
||||
;; +++speech-type-flag
|
||||
(defenum speech-type-flag
|
||||
:type uint8
|
||||
:bitfield #t
|
||||
(random-order 0)
|
||||
)
|
||||
;; ---speech-type-flag
|
||||
|
||||
;; +++speech-type
|
||||
(defenum speech-type
|
||||
:type int8
|
||||
:bitfield #t
|
||||
(speech-type-0 0)
|
||||
(speech-type-1 1)
|
||||
(speech-type-2 2)
|
||||
(speech-type-3 3)
|
||||
)
|
||||
;; ---speech-type
|
||||
|
||||
;; +++speech-channel-flag
|
||||
(defenum speech-channel-flag
|
||||
:type uint8
|
||||
:bitfield #t
|
||||
(disable 0)
|
||||
)
|
||||
|
||||
;; NOTE - for settings
|
||||
(declare-type speech-control structure)
|
||||
(define-extern *speech-control* speech-control)
|
||||
;; ---speech-channel-flag
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
|
@ -42,10 +56,10 @@
|
|||
|
||||
|
||||
(deftype speech-request (structure)
|
||||
((handle uint64 :offset-assert 0)
|
||||
(time time-frame :offset-assert 8)
|
||||
(priority float :offset-assert 16)
|
||||
(speech-type int8 :offset-assert 20)
|
||||
((handle handle :offset-assert 0)
|
||||
(time time-frame :offset-assert 8)
|
||||
(priority float :offset-assert 16)
|
||||
(speech-type speech-type :offset-assert 20)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
|
@ -55,27 +69,27 @@
|
|||
|
||||
|
||||
(deftype speech-channel (structure)
|
||||
((flags speech-channel-flag :offset-assert 0)
|
||||
(gui-channel gui-channel :offset-assert 1)
|
||||
(delay uint16 :offset-assert 2)
|
||||
(id uint32 :offset-assert 4)
|
||||
(update-time time-frame :offset-assert 8)
|
||||
(start-time time-frame :offset-assert 16)
|
||||
(end-time time-frame :offset-assert 24)
|
||||
(request speech-request :inline :offset-assert 32)
|
||||
(last-request speech-request :inline :offset-assert 56)
|
||||
(target-pos vector :inline :offset-assert 80)
|
||||
(speech-table uint32 :offset-assert 96)
|
||||
((flags speech-channel-flag :offset-assert 0)
|
||||
(gui-channel gui-channel :offset-assert 1)
|
||||
(delay uint16 :offset-assert 2)
|
||||
(id sound-id :offset-assert 4)
|
||||
(update-time time-frame :offset-assert 8)
|
||||
(start-time time-frame :offset-assert 16)
|
||||
(end-time time-frame :offset-assert 24)
|
||||
(request speech-request :inline :offset-assert 32)
|
||||
(last-request speech-request :inline :offset-assert 56)
|
||||
(target-pos vector :inline :offset-assert 80)
|
||||
(speech-table (pointer speech-type-info) :offset-assert 96)
|
||||
)
|
||||
:method-count-assert 14
|
||||
:size-assert #x64
|
||||
:flag-assert #xe00000064
|
||||
(:methods
|
||||
(speech-channel-method-9 () none 9)
|
||||
(speech-channel-method-10 () none 10)
|
||||
(speech-channel-method-11 () none 11)
|
||||
(speech-channel-method-12 () none 12)
|
||||
(speech-channel-method-13 () none 13)
|
||||
(speech-channel-method-9 (_type_ process-drawable speech-type) none 9)
|
||||
(speech-channel-method-10 (_type_ handle) none 10)
|
||||
(speech-channel-method-11 (_type_) none 11)
|
||||
(speech-channel-method-12 (_type_) none 12)
|
||||
(speech-channel-method-13 (_type_) none 13)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -88,13 +102,13 @@
|
|||
:size-assert #x1c4
|
||||
:flag-assert #x11000001c4
|
||||
(:methods
|
||||
(speech-control-method-9 () none 9)
|
||||
(speech-control-method-9 (_type_) none 9)
|
||||
(speech-control-method-10 (_type_ int speech-type-info) none 10)
|
||||
(speech-control-method-11 (_type_) none 11)
|
||||
(speech-control-method-12 () none 12)
|
||||
(speech-control-method-13 () none 13)
|
||||
(speech-control-method-14 () none 14)
|
||||
(speech-control-method-15 () none 15)
|
||||
(speech-control-method-16 () none 16)
|
||||
(speech-control-method-12 (_type_ process-drawable speech-type) none 12)
|
||||
(speech-control-method-13 (_type_ handle) none 13)
|
||||
(speech-control-method-14 (_type_) none 14)
|
||||
(speech-control-method-15 (_type_ process-drawable) none 15)
|
||||
(speech-control-method-16 (_type_) none 16)
|
||||
)
|
||||
)
|
||||
|
|
|
@ -7,3 +7,492 @@
|
|||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defmethod speech-channel-method-12 speech-channel ((obj speech-channel))
|
||||
(set! (-> obj request handle) (the-as handle #f))
|
||||
(set! (-> obj request priority) -10000000000000000000000000000000000000.0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-channel-method-13 speech-channel ((obj speech-channel))
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj last-request handle) (the-as handle #f))
|
||||
(set! (-> obj last-request priority) -10000000000000000000000000000000000000.0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-channel-method-11 speech-channel ((obj speech-channel))
|
||||
(local-vars (v1-44 int))
|
||||
(with-pp
|
||||
(logclear! (-> obj flags) (speech-channel-flag disable))
|
||||
(if (or (not (-> *setting-control* user-current speech-control))
|
||||
(load-in-progress? *level*)
|
||||
(nonzero? (-> obj id))
|
||||
)
|
||||
(logior! (-> obj flags) (speech-channel-flag disable))
|
||||
)
|
||||
(set! (-> obj target-pos quad) (-> (target-pos 0) quad))
|
||||
(when (not (logtest? (-> obj flags) (speech-channel-flag disable)))
|
||||
(let ((s5-1 (-> obj speech-table (-> obj request speech-type))))
|
||||
(cond
|
||||
(s5-1
|
||||
(let ((a0-8 (- (-> obj update-time) (-> obj request time)))
|
||||
(v1-20 (handle->process (-> obj request handle)))
|
||||
)
|
||||
(if (or (< (the-as time-frame (-> s5-1 request-timeout)) a0-8)
|
||||
(or (not v1-20)
|
||||
(let ((f0-0 245760.0))
|
||||
(< (* f0-0 f0-0)
|
||||
(vector-vector-distance-squared (-> obj target-pos) (-> (the-as process-drawable v1-20) root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-channel-method-12 obj)
|
||||
)
|
||||
)
|
||||
(let ((s4-0 (handle->process (-> obj request handle))))
|
||||
(when s4-0
|
||||
(when (or (and (>= (-> obj request priority) 0.0)
|
||||
(>= (- (-> pp clock frame-counter) (-> obj end-time)) (the-as time-frame (-> s5-1 delay)))
|
||||
)
|
||||
(and (>= (- (-> pp clock frame-counter) (-> obj end-time)) (the-as time-frame (-> s5-1 delay)))
|
||||
(>= (- (-> pp clock frame-counter) (-> obj end-time)) (the-as time-frame (-> obj delay)))
|
||||
)
|
||||
)
|
||||
(let ((s3-0 (-> s5-1 list length))
|
||||
(v1-43 (-> s5-1 play-index))
|
||||
)
|
||||
(when (> s3-0 0)
|
||||
(cond
|
||||
((logtest? (-> s5-1 flags) (speech-type-flag random-order))
|
||||
(set! v1-44 (rand-vu-int-count s3-0))
|
||||
(when (= v1-44 (-> s5-1 play-index))
|
||||
(+! v1-44 1)
|
||||
(if (>= v1-44 s3-0)
|
||||
(set! v1-44 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! v1-44 (+ v1-43 1))
|
||||
(if (>= v1-44 s3-0)
|
||||
(set! v1-44 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s5-1 play-index) v1-44)
|
||||
(let ((s3-1 (-> s5-1 list v1-44)))
|
||||
(mem-copy! (the-as pointer (-> obj last-request)) (the-as pointer (-> obj request)) 21)
|
||||
(set! (-> obj start-time) (-> pp clock frame-counter))
|
||||
(set! (-> obj delay)
|
||||
(the-as uint (rand-vu-int-range (the-as int (-> s5-1 min-delay)) (the-as int (-> s5-1 max-delay))))
|
||||
)
|
||||
(set! (-> s5-1 delay) (-> obj delay))
|
||||
(set! (-> obj id)
|
||||
(gui-control-method-9 *gui-control* s4-0 (-> obj gui-channel) (gui-action play) s3-1 -99.0 0)
|
||||
)
|
||||
)
|
||||
(speech-channel-method-12 obj)
|
||||
(logior! (-> obj flags) (speech-channel-flag disable))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(speech-channel-method-12 obj)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj update-time) (-> pp clock frame-counter))
|
||||
(when (nonzero? (-> obj id))
|
||||
(let ((s4-1 (handle->process (-> obj last-request handle))))
|
||||
(cond
|
||||
((and s4-1 (-> *setting-control* user-current speech-control))
|
||||
(when *sound-player-enable*
|
||||
(let ((s5-2 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> s5-2 command) (sound-command set-param))
|
||||
(set! (-> s5-2 id) (-> obj id))
|
||||
(set! (-> s5-2 params fo-min) 15)
|
||||
(set! (-> s5-2 params fo-max) 90)
|
||||
(set! (-> s5-2 params fo-curve) 9)
|
||||
(let ((a1-12 (-> (the-as process-drawable s4-1) root trans)))
|
||||
(let ((s4-2 pp))
|
||||
(when (= a1-12 #t)
|
||||
(if (and s4-2 (type? s4-2 process-drawable) (nonzero? (-> (the-as process-drawable s4-2) root)))
|
||||
(set! a1-12 (-> (the-as process-drawable s4-2) root trans))
|
||||
(set! a1-12 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (the-as vector3w (-> s5-2 params trans)) a1-12)
|
||||
)
|
||||
(set! (-> s5-2 params mask) (the-as uint 480))
|
||||
(-> s5-2 id)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> obj id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (gui-control-method-17 *gui-control* (-> obj id))
|
||||
(((gui-action queue))
|
||||
(when (>= (- (-> pp clock frame-counter) (-> obj start-time)) (seconds 1))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> obj id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj end-time) (-> obj update-time))
|
||||
)
|
||||
)
|
||||
(((gui-action none))
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj last-request handle) (the-as handle #f))
|
||||
(set! (-> obj end-time) (-> obj update-time))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod speech-channel-method-9 speech-channel ((obj speech-channel) (arg0 process-drawable) (arg1 speech-type))
|
||||
(with-pp
|
||||
(let ((f0-0 (vector-vector-distance-squared (-> arg0 root trans) (-> obj target-pos)))
|
||||
(f1-0 245760.0)
|
||||
)
|
||||
(when (< f0-0 (* f1-0 f1-0))
|
||||
(let* ((f1-3 -1.0)
|
||||
(f2-0 409600.0)
|
||||
(f0-2 (+ (* f0-0 (/ f1-3 (* f2-0 f2-0))) (the float (-> obj speech-table arg1 priority))))
|
||||
)
|
||||
(when (< (-> obj request priority) f0-2)
|
||||
(set! (-> obj request priority) f0-2)
|
||||
(set! (-> obj request handle) (process->handle arg0))
|
||||
(set! (-> obj request speech-type) arg1)
|
||||
(set! (-> obj request time) (-> pp clock frame-counter))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
(defmethod speech-channel-method-10 speech-channel ((obj speech-channel) (arg0 handle))
|
||||
(when (= arg0 (handle->process (-> obj last-request handle)))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> obj id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj last-request handle) (the-as handle #f))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-12 speech-control ((obj speech-control) (arg0 process-drawable) (arg1 speech-type))
|
||||
(let ((v1-2 (-> obj speech-table arg1)))
|
||||
(when v1-2
|
||||
(let ((a0-1 (-> obj channel-array (-> v1-2 channel))))
|
||||
(if (not (logtest? (-> a0-1 flags) (speech-channel-flag disable)))
|
||||
(speech-channel-method-9 a0-1 arg0 arg1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-11 speech-control ((obj speech-control))
|
||||
(dotimes (s5-0 2)
|
||||
(speech-channel-method-11 (-> obj channel-array s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-10 speech-control ((obj speech-control) (arg0 int) (arg1 speech-type-info))
|
||||
(set! (-> obj speech-table arg0) arg1)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-13 speech-control ((obj speech-control) (arg0 handle))
|
||||
(dotimes (s4-0 2)
|
||||
(speech-channel-method-10 (-> obj channel-array s4-0) arg0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-14 speech-control ((obj speech-control))
|
||||
(speech-control-method-9 obj)
|
||||
(let ((s5-0 (-> obj channel-array)))
|
||||
((method-of-type speech-channel speech-channel-method-13) (the-as speech-channel s5-0))
|
||||
(set! (-> s5-0 0 speech-table) (-> obj speech-table))
|
||||
(set! (-> s5-0 0 gui-channel) (gui-channel guard))
|
||||
)
|
||||
(let ((s5-1 (-> obj channel-array 1)))
|
||||
(speech-channel-method-13 s5-1)
|
||||
(set! (-> s5-1 speech-table) (-> obj speech-table))
|
||||
(set! (-> s5-1 gui-channel) (gui-channel citizen))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-15 speech-control ((obj speech-control) (arg0 process-drawable))
|
||||
(when (not (logtest? (-> obj channel-array 0 flags) (speech-channel-flag disable)))
|
||||
(let ((v1-3 *target*))
|
||||
(when v1-3
|
||||
(cond
|
||||
((logtest? (focus-status dark) (-> v1-3 focus-status))
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-3))
|
||||
)
|
||||
((logtest? (focus-status pilot) (-> v1-3 focus-status))
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-0 speech-type-1 speech-type-2))
|
||||
)
|
||||
(else
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-1 speech-type-2))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-16 speech-control ((obj speech-control))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel guard)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel citizen)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(dotimes (s5-0 2)
|
||||
(speech-channel-method-12 (-> obj channel-array s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod speech-control-method-9 speech-control ((obj speech-control))
|
||||
(dotimes (v1-0 57)
|
||||
(set! (-> obj speech-table v1-0) #f)
|
||||
)
|
||||
(dotimes (s5-0 2)
|
||||
(speech-channel-method-12 (-> obj channel-array s5-0))
|
||||
)
|
||||
(speech-control-method-10 obj 0 (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay #x12c
|
||||
:max-delay #x12c
|
||||
:list (new 'static 'boxed-array :type string)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 3 (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay #x12c
|
||||
:max-delay #x12c
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg136"
|
||||
"kg139"
|
||||
"kg140"
|
||||
"kg141"
|
||||
"kg142"
|
||||
"kg134"
|
||||
"kg157"
|
||||
"kg143"
|
||||
"kg156"
|
||||
"kg176"
|
||||
"kg177"
|
||||
"kg536"
|
||||
"kg551"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 9 (new 'static 'speech-type-info
|
||||
:priority 1
|
||||
:min-delay #x258
|
||||
:max-delay #x4b0
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg133"
|
||||
"kg135"
|
||||
"kg137"
|
||||
"kg138"
|
||||
"kg144"
|
||||
"kg145"
|
||||
"kg146"
|
||||
"kg147"
|
||||
"kg148"
|
||||
"kg149"
|
||||
"kg150"
|
||||
"kg151"
|
||||
"kg152"
|
||||
"kg153"
|
||||
"kg154"
|
||||
"kg155"
|
||||
"kg158"
|
||||
"kg159"
|
||||
"kg160"
|
||||
"kg163"
|
||||
"kg164"
|
||||
"kg507"
|
||||
"kg508"
|
||||
"kg509"
|
||||
"kg511"
|
||||
"kg513"
|
||||
"kg514"
|
||||
"kg515"
|
||||
"kg516"
|
||||
"kg517"
|
||||
"kg518"
|
||||
"kg520"
|
||||
"kg521"
|
||||
"kg523"
|
||||
"kg526"
|
||||
"kg527"
|
||||
"kg528"
|
||||
"kg529"
|
||||
"kg530"
|
||||
"kg532"
|
||||
"kg534"
|
||||
"kg535"
|
||||
"kg537"
|
||||
"kg538"
|
||||
"kg539"
|
||||
"kg540"
|
||||
"kg541"
|
||||
"kg542"
|
||||
"kg543"
|
||||
"kg544"
|
||||
"kg545"
|
||||
"kg546"
|
||||
"kg549"
|
||||
"kg550"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 10 (new 'static 'speech-type-info
|
||||
:flags (speech-type-flag random-order)
|
||||
:priority #xa
|
||||
:request-timeout #x258
|
||||
:min-delay #x258
|
||||
:max-delay #x4b0
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg165"
|
||||
"kg165a"
|
||||
"kg165b"
|
||||
"kg166"
|
||||
"kg166a"
|
||||
"kg166b"
|
||||
"kg167"
|
||||
"kg167a"
|
||||
"kg167b"
|
||||
"kg168"
|
||||
"kg168a"
|
||||
"kg168b"
|
||||
"kg169"
|
||||
"kg169a"
|
||||
"kg169b"
|
||||
"kg170"
|
||||
"kg170a"
|
||||
"kg170b"
|
||||
"kg171"
|
||||
"kg171a"
|
||||
"kg171b"
|
||||
"kg172"
|
||||
"kg172a"
|
||||
"kg172b"
|
||||
"kg173"
|
||||
"kg173a"
|
||||
"kg173b"
|
||||
"kg174"
|
||||
"kg174a"
|
||||
"kg174b"
|
||||
"kg175"
|
||||
"kg175a"
|
||||
"kg175b"
|
||||
"kg510"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 11 (new 'static 'speech-type-info
|
||||
:priority 2
|
||||
:min-delay #x1e
|
||||
:max-delay #x1e
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg386a"
|
||||
"kg428a"
|
||||
"kg641"
|
||||
"kg650"
|
||||
"kg338a"
|
||||
"kg339a"
|
||||
"kg340a"
|
||||
"kg341a"
|
||||
"kg342a"
|
||||
"kg343a"
|
||||
"kg344a"
|
||||
"kg512"
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(define *speech-control* (new 'static 'speech-control))
|
||||
|
||||
(speech-control-method-14 *speech-control*)
|
||||
|
|
|
@ -69,7 +69,6 @@
|
|||
(define-extern target-double-jump (state float float target))
|
||||
(define-extern target-flop (state float float float target))
|
||||
(define-extern target-jump-event-handler (function process int symbol event-message-block object :behavior target))
|
||||
(define-extern talker-spawn-func (function talker-speech-class process-tree vector region int))
|
||||
(define-extern target-launch (state float symbol vector int target))
|
||||
(define-extern ja-group-size (function int :behavior process-drawable))
|
||||
(define-extern target-falling-anim (function int time-frame symbol :behavior target))
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -63,27 +63,27 @@
|
|||
|
||||
|
||||
(deftype bigmap-compressed-layers (structure)
|
||||
((data uint32 20 :offset-assert 0)
|
||||
(layer0 uint32 :offset 0)
|
||||
(layer1 uint32 :offset 4)
|
||||
(layer2 uint32 :offset 8)
|
||||
(layer3 uint32 :offset 12)
|
||||
(layer4 uint32 :offset 16)
|
||||
(layer5 uint32 :offset 20)
|
||||
(layer6 uint32 :offset 24)
|
||||
(layer7 uint32 :offset 28)
|
||||
(layer8 uint32 :offset 32)
|
||||
(layer9 uint32 :offset 36)
|
||||
(layer10 uint32 :offset 40)
|
||||
(layer11 uint32 :offset 44)
|
||||
(layer12 uint32 :offset 48)
|
||||
(layer13 uint32 :offset 52)
|
||||
(layer14 uint32 :offset 56)
|
||||
(layer15 uint32 :offset 60)
|
||||
(layer16 uint32 :offset 64)
|
||||
(layer17 uint32 :offset 68)
|
||||
(layer18 uint32 :offset 72)
|
||||
(layer19 uint32 :offset 76)
|
||||
((data (pointer uint32) 20 :offset-assert 0)
|
||||
(layer0 (pointer uint32) :offset 0)
|
||||
(layer1 (pointer uint32) :offset 4)
|
||||
(layer2 (pointer uint32) :offset 8)
|
||||
(layer3 (pointer uint32) :offset 12)
|
||||
(layer4 (pointer uint32) :offset 16)
|
||||
(layer5 (pointer uint32) :offset 20)
|
||||
(layer6 (pointer uint32) :offset 24)
|
||||
(layer7 (pointer uint32) :offset 28)
|
||||
(layer8 (pointer uint32) :offset 32)
|
||||
(layer9 (pointer uint32) :offset 36)
|
||||
(layer10 (pointer uint32) :offset 40)
|
||||
(layer11 (pointer uint32) :offset 44)
|
||||
(layer12 (pointer uint32) :offset 48)
|
||||
(layer13 (pointer uint32) :offset 52)
|
||||
(layer14 (pointer uint32) :offset 56)
|
||||
(layer15 (pointer uint32) :offset 60)
|
||||
(layer16 (pointer uint32) :offset 64)
|
||||
(layer17 (pointer uint32) :offset 68)
|
||||
(layer18 (pointer uint32) :offset 72)
|
||||
(layer19 (pointer uint32) :offset 76)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x50
|
||||
|
@ -209,18 +209,57 @@
|
|||
(set! (-> gp-0 sprite-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
|
||||
(set! (-> gp-0 sprite-tmpl dma-vif vif0) (new 'static 'vif-tag))
|
||||
(set! (-> gp-0 sprite-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> gp-0 sprite-tmpl gif0) (the-as uint #x50ab400000008001))
|
||||
(set! (-> gp-0 sprite-tmpl gif1) (the-as uint #x53531))
|
||||
(set! (-> gp-0 sprite-tmpl gif0)
|
||||
(the uint64 (new 'static 'gif-tag64
|
||||
:nloop #x1
|
||||
:eop #x1
|
||||
:pre #x1
|
||||
:prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1)
|
||||
:nreg #x5
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 sprite-tmpl gif1)
|
||||
(the uint64 (new 'static 'gif-tag-regs
|
||||
:regs0 (gif-reg-id rgbaq)
|
||||
:regs1 (gif-reg-id uv)
|
||||
:regs2 (gif-reg-id xyz2)
|
||||
:regs3 (gif-reg-id uv)
|
||||
:regs4 (gif-reg-id xyz2)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 draw-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
|
||||
(set! (-> gp-0 draw-tmpl dma-vif vif0) (new 'static 'vif-tag))
|
||||
(set! (-> gp-0 draw-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> gp-0 draw-tmpl gif0) (the-as uint #x90aa400000008001))
|
||||
(set! (-> gp-0 draw-tmpl gif1) (the-as uint #x535353531))
|
||||
(set! (-> gp-0 draw-tmpl gif0)
|
||||
(the uint64 (new 'static 'gif-tag64
|
||||
:nloop #x1
|
||||
:eop #x1
|
||||
:pre #x1
|
||||
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :tme #x1 :abe #x1 :fst #x1)
|
||||
:nreg #x9
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 draw-tmpl gif1) (the uint64 (new 'static 'gif-tag-regs
|
||||
:regs0 (gif-reg-id rgbaq)
|
||||
:regs1 (gif-reg-id uv)
|
||||
:regs2 (gif-reg-id xyz2)
|
||||
:regs3 (gif-reg-id uv)
|
||||
:regs4 (gif-reg-id xyz2)
|
||||
:regs5 (gif-reg-id uv)
|
||||
:regs6 (gif-reg-id xyz2)
|
||||
:regs7 (gif-reg-id uv)
|
||||
:regs8 (gif-reg-id xyz2)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> gp-0 adgif-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
|
||||
(set! (-> gp-0 adgif-tmpl dma-vif vif0) (new 'static 'vif-tag))
|
||||
(set! (-> gp-0 adgif-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> gp-0 adgif-tmpl gif0) (the-as uint #x1000000000008005))
|
||||
(set! (-> gp-0 adgif-tmpl gif1) (the-as uint 14))
|
||||
(set! (-> gp-0 adgif-tmpl gif0) (the uint64 (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1)))
|
||||
(set! (-> gp-0 adgif-tmpl gif1) (the uint64 (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))))
|
||||
(set-vector! (-> gp-0 offset) 0.0 0.0 0.0 0.0)
|
||||
(set-vector! (-> gp-0 scroll) 0.0 0.0 0.0 0.0)
|
||||
(set-vector! (-> gp-0 pos) 0 0 0 0)
|
||||
|
|
|
@ -83,9 +83,9 @@
|
|||
:bolt-spec (new 'static 'lightning-spec
|
||||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80000000
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
@ -102,9 +102,9 @@
|
|||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:rand-func #x3
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80ffffff
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
@ -971,9 +971,9 @@
|
|||
:bolt-spec (new 'static 'lightning-spec
|
||||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80000000
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
@ -990,9 +990,9 @@
|
|||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:rand-func #x3
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80ffffff
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
|
22
test/decompiler/reference/jak2/engine/ambient/ambient-h_REF.gc
generated
vendored
22
test/decompiler/reference/jak2/engine/ambient/ambient-h_REF.gc
generated
vendored
|
@ -19,9 +19,9 @@
|
|||
:size-assert #x18
|
||||
:flag-assert #xe00000018
|
||||
(:methods
|
||||
(talker-speech-class-method-9 () none 9)
|
||||
(talker-speech-class-method-9 (_type_) symbol 9)
|
||||
(talker-speech-class-method-10 (_type_) none 10)
|
||||
(talker-speech-class-method-11 () none 11)
|
||||
(talker-speech-class-method-11 (_type_) none 11)
|
||||
(talker-speech-class-method-12 (_type_ int) none 12)
|
||||
(talker-speech-class-method-13 (_type_ int) none 13)
|
||||
)
|
||||
|
@ -56,22 +56,22 @@
|
|||
(total-off-time time-frame :offset-assert 160)
|
||||
(start-time time-frame :offset-assert 168)
|
||||
(state-time time-frame :offset-assert 176)
|
||||
(voicebox uint64 :offset-assert 184)
|
||||
(voice-id uint32 :offset-assert 192)
|
||||
(message-id uint32 :offset-assert 196)
|
||||
(voicebox handle :offset-assert 184)
|
||||
(voice-id sound-id :offset-assert 192)
|
||||
(message-id sound-id :offset-assert 196)
|
||||
(region region :offset-assert 200)
|
||||
(interp float :offset-assert 204)
|
||||
(save? basic :offset-assert 208)
|
||||
(save? symbol :offset-assert 208)
|
||||
)
|
||||
:heap-base #x60
|
||||
:method-count-assert 18
|
||||
:size-assert #xd4
|
||||
:flag-assert #x12006000d4
|
||||
(:methods
|
||||
(talker-method-14 () _type_ :state 14)
|
||||
(talker-method-15 () none 15)
|
||||
(talker-method-16 () none 16)
|
||||
(talker-method-17 () none 17)
|
||||
(idle () _type_ :state 14)
|
||||
(active () _type_ :state 15)
|
||||
(exit () _type_ :state 16)
|
||||
(talker-method-17 (_type_) none 17)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -84,7 +84,7 @@
|
|||
(let ((t9-0 (method-of-type process inspect)))
|
||||
(t9-0 obj)
|
||||
)
|
||||
(format #t "~2Ttrans: ~`vector`P~%" (-> obj stack))
|
||||
(format #t "~2Ttrans: ~`vector`P~%" (-> obj trans))
|
||||
(format #t "~2Tmessage: #<talker-speech-class @ #x~X>~%" (-> obj message))
|
||||
(format #t "~2Ttotal-time: ~D~%" (-> obj total-time))
|
||||
(format #t "~2Ttotal-off-time: ~D~%" (-> obj total-off-time))
|
||||
|
|
563
test/decompiler/reference/jak2/engine/ambient/ambient_REF.gc
generated
vendored
Normal file
563
test/decompiler/reference/jak2/engine/ambient/ambient_REF.gc
generated
vendored
Normal file
|
@ -0,0 +1,563 @@
|
|||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for function can-display-query?
|
||||
(defun can-display-query? ((arg0 process) (arg1 string) (arg2 float))
|
||||
(let ((a1-3 (gui-control-method-12
|
||||
*gui-control*
|
||||
arg0
|
||||
(gui-channel query)
|
||||
(gui-action play)
|
||||
(if arg1
|
||||
arg1
|
||||
(symbol->string (-> arg0 type symbol))
|
||||
)
|
||||
0
|
||||
arg2
|
||||
(new 'static 'sound-id)
|
||||
)
|
||||
)
|
||||
)
|
||||
(= (gui-control-method-17 *gui-control* a1-3) (gui-action playing))
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function talker-surpress!
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun talker-surpress! ()
|
||||
(set! (-> *game-info* hint-play-time) (-> *display* base-clock frame-counter))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function talker-displayed?
|
||||
(defun talker-displayed? ()
|
||||
#f
|
||||
)
|
||||
|
||||
;; definition for function kill-current-talker
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun kill-current-talker ((arg0 symbol) (arg1 pair) (arg2 symbol))
|
||||
(if (not (member 'daxter arg1))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel daxter)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(if (not (member 'voicebox arg1))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel voicebox)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(if (not (member 'message arg1))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel message)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(when (not (member 'notice arg1))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel notice)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel notice-low)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function string->talker-speech
|
||||
(defun string->talker-speech ((arg0 string))
|
||||
(dotimes (s5-0 465)
|
||||
(let ((s4-0 (-> *talker-speech* s5-0)))
|
||||
(if (string= arg0 (-> s4-0 name))
|
||||
(return s4-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(-> *talker-speech* 0)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type talker-speech-class
|
||||
(defmethod talker-speech-class-method-9 talker-speech-class ((obj talker-speech-class))
|
||||
(and (>= (-> *game-info* unknown-pad6 (* (-> obj speech) 2)) (-> obj pos))
|
||||
(>= (-> obj neg) (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1)))
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type talker-speech-class
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod talker-speech-class-method-10 talker-speech-class ((obj talker-speech-class))
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1)) (the-as uint #xffff))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type talker-speech-class
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod talker-speech-class-method-11 talker-speech-class ((obj talker-speech-class))
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1)) (the-as uint 0))
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type talker-speech-class
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod talker-speech-class-method-12 talker-speech-class ((obj talker-speech-class) (arg0 int))
|
||||
(if (>= arg0 0)
|
||||
(set! (-> *game-info* unknown-pad6 (* (-> obj speech) 2))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (* (-> obj speech) 2))) #xfff0 arg0))
|
||||
)
|
||||
(set! (-> *game-info* unknown-pad6 (* (-> obj speech) 2))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (* (-> obj speech) 2))) 0 (- arg0)))
|
||||
)
|
||||
)
|
||||
(if (talker-speech-class-method-9 obj)
|
||||
(talker-spawn-func obj *entity-pool* (target-pos 0) (the-as region #f))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type talker-speech-class
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod talker-speech-class-method-13 talker-speech-class ((obj talker-speech-class) (arg0 int))
|
||||
(if (>= arg0 0)
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))) #xfff0 arg0))
|
||||
)
|
||||
(set! (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))
|
||||
(the-as uint (seekl (the-as int (-> *game-info* unknown-pad6 (+ (* (-> obj speech) 2) 1))) 0 (- arg0)))
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function talker-spawn-func
|
||||
(defun talker-spawn-func ((arg0 talker-speech-class) (arg1 process-tree) (arg2 vector) (arg3 region))
|
||||
(local-vars (s2-0 int))
|
||||
(when (or (not arg0) (zero? (-> arg0 speech)) (not (talker-speech-class-method-9 arg0)))
|
||||
(set! s2-0 0)
|
||||
(goto cfg-27)
|
||||
)
|
||||
(if (and (or (not (-> *setting-control* user-current play-hints))
|
||||
(= (-> *setting-control* user-current dialog-volume) 0.0)
|
||||
)
|
||||
(logtest? (-> arg0 flags) 1)
|
||||
)
|
||||
(talker-speech-class-method-10 arg0)
|
||||
)
|
||||
(set! s2-0 (gui-control-method-14 *gui-control* (-> arg0 name) (-> arg0 channel) (gui-action none)))
|
||||
(set! s2-0 (cond
|
||||
((zero? s2-0)
|
||||
(let ((v1-17 (process-spawn talker :init talker-init arg0 arg2 arg3 :to arg1)))
|
||||
(cond
|
||||
(v1-17
|
||||
(if (nonzero? (-> (the-as talker (-> v1-17 0)) voice-id))
|
||||
(the-as int (-> (the-as talker (-> v1-17 0)) voice-id))
|
||||
(the-as int (-> (the-as talker (-> v1-17 0)) message-id))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(empty)
|
||||
s2-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(empty)
|
||||
s2-0
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-27)
|
||||
s2-0
|
||||
)
|
||||
|
||||
;; definition for function talker-init
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defbehavior talker-init talker ((arg0 talker-speech-class) (arg1 vector) (arg2 region))
|
||||
(set! (-> self trans quad) (-> arg1 quad))
|
||||
(let ((v1-2 (shr (the-as int (-> arg0 channel)) 4)))
|
||||
(if (not (or (or (= v1-2 4) (= v1-2 5))
|
||||
(or (not (-> *setting-control* user-current play-hints))
|
||||
(= (-> *setting-control* user-current dialog-volume) 0.0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self voice-id)
|
||||
(gui-control-method-9 *gui-control* self (-> arg0 channel) (gui-action queue) (-> arg0 name) 81920.0 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (nonzero? (-> arg0 text-message))
|
||||
(let* ((a0-6 *gui-control*)
|
||||
(t9-1 (method-of-object a0-6 gui-control-method-9))
|
||||
(a1-3 self)
|
||||
(v1-15 (shr (the-as int (-> arg0 channel)) 4))
|
||||
)
|
||||
(set! (-> self message-id) (t9-1
|
||||
a0-6
|
||||
a1-3
|
||||
(if (or (= v1-15 4) (= v1-15 5))
|
||||
(the-as gui-channel (the-as int (-> arg0 channel)))
|
||||
(gui-channel message)
|
||||
)
|
||||
(gui-action play)
|
||||
(-> arg0 name)
|
||||
81920.0
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> self message) arg0)
|
||||
(set! (-> self region) arg2)
|
||||
(set! (-> self total-time) 0)
|
||||
(set! (-> self total-off-time) 0)
|
||||
(set! (-> self start-time) (-> self clock frame-counter))
|
||||
(set! (-> self voicebox) (the-as handle #f))
|
||||
(set! (-> self save?) #f)
|
||||
(if (logtest? (-> self message flags) 96)
|
||||
(set! (-> self interp) 0.0)
|
||||
(set! (-> self interp) 1.0)
|
||||
)
|
||||
(go-virtual idle)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type talker
|
||||
(defmethod deactivate talker ((obj talker))
|
||||
(send-event (handle->process (-> obj voicebox)) 'die)
|
||||
((the-as (function process none) (find-parent-method talker 10)) obj)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 17 of type talker
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod talker-method-17 talker ((obj talker))
|
||||
(let ((gp-0 (new
|
||||
'stack
|
||||
'font-context
|
||||
*font-default-matrix*
|
||||
36
|
||||
310
|
||||
0.0
|
||||
(font-color default-#cddbcd)
|
||||
(font-flags shadow kerning)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((f0-0 320.0))
|
||||
(let ((v1-2 gp-0))
|
||||
(set! (-> v1-2 scale) 0.75)
|
||||
)
|
||||
(case (-> obj message channel)
|
||||
(((gui-channel notice))
|
||||
(cond
|
||||
((logtest? (-> obj message flags) 128)
|
||||
(let ((v1-9 gp-0)
|
||||
(a1-1 36)
|
||||
(a0-4 140)
|
||||
)
|
||||
(set! (-> v1-9 origin x) (the float a1-1))
|
||||
(set! (-> v1-9 origin y) (the float a0-4))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((v1-10 gp-0))
|
||||
(set! (-> v1-10 scale) 0.6)
|
||||
)
|
||||
(let ((v1-11 gp-0)
|
||||
(a1-2 36)
|
||||
(a0-6 160)
|
||||
)
|
||||
(set! (-> v1-11 origin x) (the float a1-2))
|
||||
(set! (-> v1-11 origin y) (the float a0-6))
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! f0-0 160.0)
|
||||
)
|
||||
)
|
||||
(let ((v1-14 gp-0))
|
||||
(set! (-> v1-14 width) (the float (the-as float #x1b8)))
|
||||
)
|
||||
(let ((v1-15 gp-0))
|
||||
(set! (-> v1-15 height) (the float (the-as float #x8c)))
|
||||
)
|
||||
(set! (-> gp-0 flags) (font-flags shadow kerning middle large))
|
||||
(if (logtest? (-> obj message flags) 32)
|
||||
(set! (-> gp-0 alpha) (-> obj interp))
|
||||
(set! (-> gp-0 alpha) 1.0)
|
||||
)
|
||||
(when (logtest? (-> obj message flags) 64)
|
||||
(let ((s4-0 gp-0)
|
||||
(s3-0 36)
|
||||
(v1-27 (the int (lerp-scale 400.0 f0-0 (-> obj interp) 0.0 1.0)))
|
||||
)
|
||||
(set! (-> s4-0 origin x) (the float s3-0))
|
||||
(set! (-> s4-0 origin y) (the float v1-27))
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((s4-1 print-game-text)
|
||||
(a0-11 (lookup-text! *common-text* (the-as game-text-id (-> obj message text-message)) #f))
|
||||
(a2-3 #f)
|
||||
(a3-2 44)
|
||||
(v1-31 (-> obj message channel))
|
||||
)
|
||||
(s4-1
|
||||
a0-11
|
||||
gp-0
|
||||
a2-3
|
||||
a3-2
|
||||
(if (or (= v1-31 (gui-channel notice)) (= v1-31 (gui-channel notice-low)) (= v1-31 (gui-channel subtitle)))
|
||||
322
|
||||
320
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate idle (talker)
|
||||
:virtual #t
|
||||
:code (behavior ()
|
||||
(let ((gp-0 (-> self clock frame-counter)))
|
||||
(until (>= (- (-> self clock frame-counter) gp-0) (the-as time-frame (-> self message delay)))
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(case (-> self message channel)
|
||||
(((gui-channel voicebox))
|
||||
(if *target*
|
||||
(set! (-> self voicebox) (ppointer->handle (voicebox-spawn *target* (target-pos 0))))
|
||||
)
|
||||
)
|
||||
)
|
||||
(while (< (- (-> self clock frame-counter) (-> self start-time)) (the-as time-frame (+ (-> self message delay) 300)))
|
||||
(if (and (or (zero? (-> self voice-id)) (= (gui-control-method-17 *gui-control* (-> self voice-id)) (gui-action play)))
|
||||
(or (zero? (-> self message-id))
|
||||
(= (gui-control-method-17 *gui-control* (-> self message-id)) (gui-action playing))
|
||||
)
|
||||
)
|
||||
(go-virtual active)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
(go-virtual exit)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate active (talker)
|
||||
:virtual #t
|
||||
:enter (behavior ()
|
||||
(set! (-> self state-time) (-> self clock frame-counter))
|
||||
(if (logtest? (-> self message flags) 1)
|
||||
(talker-speech-class-method-10 (-> self message))
|
||||
)
|
||||
(set-setting! 'hint (process->ppointer self) 0 0)
|
||||
(set-setting! 'speech-control #f 0 0)
|
||||
(if (nonzero? (-> self voice-id))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action play)
|
||||
(-> self voice-id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(when (and (nonzero? (-> self voice-id)) (logtest? (-> self message flags) 2))
|
||||
(add-setting! 'music-volume 'rel (-> *setting-control* user-current music-volume-movie) 0)
|
||||
(add-setting! 'sfx-volume 'rel (-> *setting-control* user-current sfx-movie-volume) 0)
|
||||
(add-setting! 'dialog-volume 'rel (-> *setting-control* user-current dialog-volume-hint) 0)
|
||||
)
|
||||
(if (logtest? (-> self message flags) 4)
|
||||
(auto-save-user)
|
||||
)
|
||||
(apply-settings *setting-control*)
|
||||
(none)
|
||||
)
|
||||
:exit (behavior ()
|
||||
(let ((gp-0 (-> self message on-close)))
|
||||
(when gp-0
|
||||
(let* ((s5-0 (handle->process (-> self voicebox)))
|
||||
(v1-5 (if (type? s5-0 process-drawable)
|
||||
(the-as process-drawable s5-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(eval!
|
||||
(new 'stack 'script-context (the-as basic (process->ppointer self)) self (if v1-5
|
||||
(-> v1-5 root trans)
|
||||
)
|
||||
)
|
||||
(the-as pair gp-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (and (logtest? (-> self message flags) 8) (not (-> self save?)))
|
||||
(set! (-> self save?) #t)
|
||||
(auto-save-user)
|
||||
)
|
||||
(if (nonzero? (-> self voice-id))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> self voice-id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(if (nonzero? (-> self message-id))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> self message-id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
)
|
||||
(remove-setting! 'music-volume)
|
||||
(remove-setting! 'sfx-volume)
|
||||
(remove-setting! 'dialog-volume)
|
||||
(remove-setting! 'hint)
|
||||
(remove-setting! 'speech-control)
|
||||
(apply-settings *setting-control*)
|
||||
(none)
|
||||
)
|
||||
:code (behavior ()
|
||||
(local-vars (v1-43 symbol))
|
||||
(let ((gp-1 (zero? (logand (-> self message flags) 2))))
|
||||
(while (or (and (nonzero? (-> self voice-id))
|
||||
(let ((v1-34 (gui-control-method-17 *gui-control* (-> self voice-id))))
|
||||
(or (= v1-34 (gui-action play)) (= v1-34 (gui-action playing)))
|
||||
)
|
||||
(begin
|
||||
(dotimes (s5-2 4)
|
||||
(when (and (string-charp= (-> self message name) (the-as (pointer uint8) (-> *sound-iop-info* stream-name s5-2)))
|
||||
(= (-> self voice-id) (-> *sound-iop-info* stream-id s5-2))
|
||||
(logtest? (-> *sound-iop-info* stream-status s5-2) (stream-status ststatus-six))
|
||||
)
|
||||
(set! v1-43 #f)
|
||||
(goto cfg-39)
|
||||
)
|
||||
)
|
||||
(set! v1-43 #t)
|
||||
(label cfg-39)
|
||||
(and v1-43 (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 120)))
|
||||
)
|
||||
)
|
||||
(and (nonzero? (-> self message-id))
|
||||
(= (gui-control-method-17 *gui-control* (-> self message-id)) (gui-action playing))
|
||||
(or (< (- (-> self clock frame-counter) (-> self state-time)) (the-as time-frame (-> self message text-duration)))
|
||||
(and (logtest? (-> self message flags) 16) (-> self region) (region-method-9 (-> self region) (target-pos 0)))
|
||||
)
|
||||
)
|
||||
(< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05))
|
||||
)
|
||||
(when (and (nonzero? (-> self voice-id))
|
||||
(not gp-1)
|
||||
(zero? (gui-control-method-17 *gui-control* (-> self voice-id)))
|
||||
)
|
||||
(remove-setting! 'music-volume)
|
||||
(remove-setting! 'sfx-volume)
|
||||
(remove-setting! 'dialog-volume)
|
||||
(set! gp-1 #t)
|
||||
)
|
||||
(when (and (nonzero? (-> self message-id))
|
||||
(= (gui-control-method-17 *gui-control* (-> self message-id)) (gui-action playing))
|
||||
(not (paused?))
|
||||
)
|
||||
(if (logtest? (-> self message flags) 32)
|
||||
(seek! (-> self interp) 1.0 (* 0.5 (-> self clock seconds-per-frame)))
|
||||
(seek! (-> self interp) 1.0 (* 4.0 (-> self clock seconds-per-frame)))
|
||||
)
|
||||
(talker-method-17 self)
|
||||
)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(when (and (nonzero? (-> self message-id)) (logtest? (-> self message flags) 96))
|
||||
(while (!= (-> self interp) 0.0)
|
||||
(if (logtest? (-> self message flags) 32)
|
||||
(seek! (-> self interp) 0.0 (* 0.5 (-> self clock seconds-per-frame)))
|
||||
(seek! (-> self interp) 0.0 (* 4.0 (-> self clock seconds-per-frame)))
|
||||
)
|
||||
(talker-method-17 self)
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(when (and (logtest? (-> self message flags) 8) (not (-> self save?)))
|
||||
(let ((gp-2 (-> self clock frame-counter)))
|
||||
(until (>= (- (-> self clock frame-counter) gp-2) (seconds 1))
|
||||
(suspend)
|
||||
)
|
||||
)
|
||||
(set! (-> self save?) #t)
|
||||
(auto-save-user)
|
||||
)
|
||||
(go-virtual exit)
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(defstate exit (talker)
|
||||
:virtual #t
|
||||
:code (the-as (function none :behavior talker) nothing)
|
||||
)
|
2
test/decompiler/reference/jak2/engine/gfx/generic/generic-vu1-h_REF.gc
generated
vendored
2
test/decompiler/reference/jak2/engine/gfx/generic/generic-vu1-h_REF.gc
generated
vendored
|
@ -144,7 +144,7 @@
|
|||
(deftype gcf-control (structure)
|
||||
((matrix matrix :inline :offset-assert 0)
|
||||
(giftag generic-gif-tag :inline :offset-assert 64)
|
||||
(adnops uint32 2 :offset-assert 80)
|
||||
(adnops gs-adcmd 2 :inline :offset-assert 80)
|
||||
(num-strips uint32 :offset 76)
|
||||
(num-dps uint32 :offset 92)
|
||||
(kick-offset uint32 :offset 108)
|
||||
|
|
18
test/decompiler/reference/jak2/engine/gfx/lightning-h_REF.gc
generated
vendored
18
test/decompiler/reference/jak2/engine/gfx/lightning-h_REF.gc
generated
vendored
|
@ -7,9 +7,9 @@
|
|||
(flags lightning-spec-flags :offset-assert 8)
|
||||
(rand-func uint8 :offset-assert 10)
|
||||
(adjust-distance uint8 :offset-assert 11)
|
||||
(start-color uint32 :offset-assert 12)
|
||||
(end-color uint32 :offset-assert 16)
|
||||
(fade-to-color uint32 :offset-assert 20)
|
||||
(start-color rgba :offset-assert 12)
|
||||
(end-color rgba :offset-assert 16)
|
||||
(fade-to-color rgba :offset-assert 20)
|
||||
(fade-start-factor float :offset-assert 24)
|
||||
(fade-time float :offset-assert 28)
|
||||
(texture uint32 :offset-assert 32)
|
||||
|
@ -88,8 +88,8 @@
|
|||
(line vector-array :offset-assert 128)
|
||||
(meet vector-array :offset-assert 132)
|
||||
(path vector-array :offset-assert 136)
|
||||
(start-color uint32 :offset-assert 140)
|
||||
(end-color uint32 :offset-assert 144)
|
||||
(start-color rgba :offset-assert 140)
|
||||
(end-color rgba :offset-assert 144)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x94
|
||||
|
@ -119,9 +119,9 @@
|
|||
|
||||
;; definition of type lightning-control
|
||||
(deftype lightning-control (basic)
|
||||
((spec lightning-spec :offset-assert 4)
|
||||
(process process :offset-assert 8)
|
||||
(state lightning-state :inline :offset-assert 16)
|
||||
((spec lightning-spec :offset-assert 4)
|
||||
(process (pointer process) :offset-assert 8)
|
||||
(state lightning-state :inline :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 14
|
||||
:size-assert #xa4
|
||||
|
@ -252,7 +252,7 @@
|
|||
)
|
||||
(set! (-> obj state box-size) f0-0)
|
||||
)
|
||||
(set! (-> obj process) (the-as process (process->ppointer arg1)))
|
||||
(set! (-> obj process) (process->ppointer arg1))
|
||||
(set! (-> obj state mode) (lightning-mode lm1))
|
||||
(set! (-> obj state line) ((method-of-type vector-array new) allocation vector-array s3-0))
|
||||
(set! (-> obj state meet) ((method-of-type vector-array new) allocation vector-array s3-0))
|
||||
|
|
1
test/decompiler/reference/jak2/engine/math/matrix_REF.gc
generated
vendored
1
test/decompiler/reference/jak2/engine/math/matrix_REF.gc
generated
vendored
|
@ -776,6 +776,7 @@
|
|||
;; ERROR: Unsupported inline assembly instruction kind - [prot3w a1, v1]
|
||||
;; ERROR: Unsupported inline assembly instruction kind - [prot3w a2, a1]
|
||||
(defun matrix-axis-sin-cos-vu! ((arg0 matrix) (arg1 vector) (arg2 float) (arg3 float))
|
||||
"@unused"
|
||||
(local-vars (a1-2 uint128) (a2-1 uint128) (a3-1 uint128) (a3-2 uint128))
|
||||
(rlet ((vf0 :class vf)
|
||||
(vf1 :class vf)
|
||||
|
|
52
test/decompiler/reference/jak2/engine/sound/speech-h_REF.gc
generated
vendored
52
test/decompiler/reference/jak2/engine/sound/speech-h_REF.gc
generated
vendored
|
@ -46,10 +46,10 @@
|
|||
|
||||
;; definition of type speech-request
|
||||
(deftype speech-request (structure)
|
||||
((handle uint64 :offset-assert 0)
|
||||
(time time-frame :offset-assert 8)
|
||||
(priority float :offset-assert 16)
|
||||
(speech-type int8 :offset-assert 20)
|
||||
((handle handle :offset-assert 0)
|
||||
(time time-frame :offset-assert 8)
|
||||
(priority float :offset-assert 16)
|
||||
(speech-type speech-type :offset-assert 20)
|
||||
)
|
||||
:pack-me
|
||||
:method-count-assert 9
|
||||
|
@ -74,27 +74,27 @@
|
|||
|
||||
;; definition of type speech-channel
|
||||
(deftype speech-channel (structure)
|
||||
((flags speech-channel-flag :offset-assert 0)
|
||||
(gui-channel gui-channel :offset-assert 1)
|
||||
(delay uint16 :offset-assert 2)
|
||||
(id uint32 :offset-assert 4)
|
||||
(update-time time-frame :offset-assert 8)
|
||||
(start-time time-frame :offset-assert 16)
|
||||
(end-time time-frame :offset-assert 24)
|
||||
(request speech-request :inline :offset-assert 32)
|
||||
(last-request speech-request :inline :offset-assert 56)
|
||||
(target-pos vector :inline :offset-assert 80)
|
||||
(speech-table uint32 :offset-assert 96)
|
||||
((flags speech-channel-flag :offset-assert 0)
|
||||
(gui-channel gui-channel :offset-assert 1)
|
||||
(delay uint16 :offset-assert 2)
|
||||
(id sound-id :offset-assert 4)
|
||||
(update-time time-frame :offset-assert 8)
|
||||
(start-time time-frame :offset-assert 16)
|
||||
(end-time time-frame :offset-assert 24)
|
||||
(request speech-request :inline :offset-assert 32)
|
||||
(last-request speech-request :inline :offset-assert 56)
|
||||
(target-pos vector :inline :offset-assert 80)
|
||||
(speech-table (pointer speech-type-info) :offset-assert 96)
|
||||
)
|
||||
:method-count-assert 14
|
||||
:size-assert #x64
|
||||
:flag-assert #xe00000064
|
||||
(:methods
|
||||
(speech-channel-method-9 () none 9)
|
||||
(speech-channel-method-10 () none 10)
|
||||
(speech-channel-method-11 () none 11)
|
||||
(speech-channel-method-12 () none 12)
|
||||
(speech-channel-method-13 () none 13)
|
||||
(speech-channel-method-9 (_type_ process-drawable speech-type) none 9)
|
||||
(speech-channel-method-10 (_type_ handle) none 10)
|
||||
(speech-channel-method-11 (_type_) none 11)
|
||||
(speech-channel-method-12 (_type_) none 12)
|
||||
(speech-channel-method-13 (_type_) none 13)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -135,14 +135,14 @@
|
|||
:size-assert #x1c4
|
||||
:flag-assert #x11000001c4
|
||||
(:methods
|
||||
(speech-control-method-9 () none 9)
|
||||
(speech-control-method-9 (_type_) none 9)
|
||||
(speech-control-method-10 (_type_ int speech-type-info) none 10)
|
||||
(speech-control-method-11 (_type_) none 11)
|
||||
(speech-control-method-12 () none 12)
|
||||
(speech-control-method-13 () none 13)
|
||||
(speech-control-method-14 () none 14)
|
||||
(speech-control-method-15 () none 15)
|
||||
(speech-control-method-16 () none 16)
|
||||
(speech-control-method-12 (_type_ process-drawable speech-type) none 12)
|
||||
(speech-control-method-13 (_type_ handle) none 13)
|
||||
(speech-control-method-14 (_type_) none 14)
|
||||
(speech-control-method-15 (_type_ process-drawable) none 15)
|
||||
(speech-control-method-16 (_type_) none 16)
|
||||
)
|
||||
)
|
||||
|
||||
|
|
521
test/decompiler/reference/jak2/engine/sound/speech_REF.gc
generated
vendored
Normal file
521
test/decompiler/reference/jak2/engine/sound/speech_REF.gc
generated
vendored
Normal file
|
@ -0,0 +1,521 @@
|
|||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for method 12 of type speech-channel
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-channel-method-12 speech-channel ((obj speech-channel))
|
||||
(set! (-> obj request handle) (the-as handle #f))
|
||||
(set! (-> obj request priority) -10000000000000000000000000000000000000.0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type speech-channel
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-channel-method-13 speech-channel ((obj speech-channel))
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj last-request handle) (the-as handle #f))
|
||||
(set! (-> obj last-request priority) -10000000000000000000000000000000000000.0)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type speech-channel
|
||||
;; INFO: Used lq/sq
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-channel-method-11 speech-channel ((obj speech-channel))
|
||||
(local-vars (v1-44 int))
|
||||
(with-pp
|
||||
(logclear! (-> obj flags) (speech-channel-flag disable))
|
||||
(if (or (not (-> *setting-control* user-current speech-control))
|
||||
(load-in-progress? *level*)
|
||||
(nonzero? (-> obj id))
|
||||
)
|
||||
(logior! (-> obj flags) (speech-channel-flag disable))
|
||||
)
|
||||
(set! (-> obj target-pos quad) (-> (target-pos 0) quad))
|
||||
(when (not (logtest? (-> obj flags) (speech-channel-flag disable)))
|
||||
(let ((s5-1 (-> obj speech-table (-> obj request speech-type))))
|
||||
(cond
|
||||
(s5-1
|
||||
(let ((a0-8 (- (-> obj update-time) (-> obj request time)))
|
||||
(v1-20 (handle->process (-> obj request handle)))
|
||||
)
|
||||
(if (or (< (the-as time-frame (-> s5-1 request-timeout)) a0-8)
|
||||
(or (not v1-20)
|
||||
(let ((f0-0 245760.0))
|
||||
(< (* f0-0 f0-0)
|
||||
(vector-vector-distance-squared (-> obj target-pos) (-> (the-as process-drawable v1-20) root trans))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-channel-method-12 obj)
|
||||
)
|
||||
)
|
||||
(let ((s4-0 (handle->process (-> obj request handle))))
|
||||
(when s4-0
|
||||
(when (or (and (>= (-> obj request priority) 0.0)
|
||||
(>= (- (-> pp clock frame-counter) (-> obj end-time)) (the-as time-frame (-> s5-1 delay)))
|
||||
)
|
||||
(and (>= (- (-> pp clock frame-counter) (-> obj end-time)) (the-as time-frame (-> s5-1 delay)))
|
||||
(>= (- (-> pp clock frame-counter) (-> obj end-time)) (the-as time-frame (-> obj delay)))
|
||||
)
|
||||
)
|
||||
(let ((s3-0 (-> s5-1 list length))
|
||||
(v1-43 (-> s5-1 play-index))
|
||||
)
|
||||
(when (> s3-0 0)
|
||||
(cond
|
||||
((logtest? (-> s5-1 flags) (speech-type-flag random-order))
|
||||
(set! v1-44 (rand-vu-int-count s3-0))
|
||||
(when (= v1-44 (-> s5-1 play-index))
|
||||
(+! v1-44 1)
|
||||
(if (>= v1-44 s3-0)
|
||||
(set! v1-44 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(set! v1-44 (+ v1-43 1))
|
||||
(if (>= v1-44 s3-0)
|
||||
(set! v1-44 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> s5-1 play-index) v1-44)
|
||||
(let ((s3-1 (-> s5-1 list v1-44)))
|
||||
(mem-copy! (the-as pointer (-> obj last-request)) (the-as pointer (-> obj request)) 21)
|
||||
(set! (-> obj start-time) (-> pp clock frame-counter))
|
||||
(set! (-> obj delay)
|
||||
(the-as uint (rand-vu-int-range (the-as int (-> s5-1 min-delay)) (the-as int (-> s5-1 max-delay))))
|
||||
)
|
||||
(set! (-> s5-1 delay) (-> obj delay))
|
||||
(set! (-> obj id)
|
||||
(gui-control-method-9 *gui-control* s4-0 (-> obj gui-channel) (gui-action play) s3-1 -99.0 0)
|
||||
)
|
||||
)
|
||||
(speech-channel-method-12 obj)
|
||||
(logior! (-> obj flags) (speech-channel-flag disable))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(speech-channel-method-12 obj)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> obj update-time) (-> pp clock frame-counter))
|
||||
(when (nonzero? (-> obj id))
|
||||
(let ((s4-1 (handle->process (-> obj last-request handle))))
|
||||
(cond
|
||||
((and s4-1 (-> *setting-control* user-current speech-control))
|
||||
(when *sound-player-enable*
|
||||
(let ((s5-2 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
||||
(set! (-> s5-2 command) (sound-command set-param))
|
||||
(set! (-> s5-2 id) (-> obj id))
|
||||
(set! (-> s5-2 params fo-min) 15)
|
||||
(set! (-> s5-2 params fo-max) 90)
|
||||
(set! (-> s5-2 params fo-curve) 9)
|
||||
(let ((a1-12 (-> (the-as process-drawable s4-1) root trans)))
|
||||
(let ((s4-2 pp))
|
||||
(when (= a1-12 #t)
|
||||
(if (and s4-2 (type? s4-2 process-drawable) (nonzero? (-> (the-as process-drawable s4-2) root)))
|
||||
(set! a1-12 (-> (the-as process-drawable s4-2) root trans))
|
||||
(set! a1-12 (the-as vector #f))
|
||||
)
|
||||
)
|
||||
)
|
||||
(sound-trans-convert (the-as vector3w (-> s5-2 params trans)) a1-12)
|
||||
)
|
||||
(set! (-> s5-2 params mask) (the-as uint 480))
|
||||
(-> s5-2 id)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> obj id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
0
|
||||
)
|
||||
)
|
||||
)
|
||||
(case (gui-control-method-17 *gui-control* (-> obj id))
|
||||
(((gui-action queue))
|
||||
(when (>= (- (-> pp clock frame-counter) (-> obj start-time)) (seconds 1))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> obj id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj end-time) (-> obj update-time))
|
||||
)
|
||||
)
|
||||
(((gui-action none))
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj last-request handle) (the-as handle #f))
|
||||
(set! (-> obj end-time) (-> obj update-time))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type speech-channel
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-channel-method-9 speech-channel ((obj speech-channel) (arg0 process-drawable) (arg1 speech-type))
|
||||
(with-pp
|
||||
(let ((f0-0 (vector-vector-distance-squared (-> arg0 root trans) (-> obj target-pos)))
|
||||
(f1-0 245760.0)
|
||||
)
|
||||
(when (< f0-0 (* f1-0 f1-0))
|
||||
(let* ((f1-3 -1.0)
|
||||
(f2-0 409600.0)
|
||||
(f0-2 (+ (* f0-0 (/ f1-3 (* f2-0 f2-0))) (the float (-> obj speech-table arg1 priority))))
|
||||
)
|
||||
(when (< (-> obj request priority) f0-2)
|
||||
(set! (-> obj request priority) f0-2)
|
||||
(set! (-> obj request handle) (process->handle arg0))
|
||||
(set! (-> obj request speech-type) arg1)
|
||||
(set! (-> obj request time) (-> pp clock frame-counter))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type speech-channel
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-channel-method-10 speech-channel ((obj speech-channel) (arg0 handle))
|
||||
(when (= arg0 (handle->process (-> obj last-request handle)))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(-> obj id)
|
||||
(gui-channel none)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(set! (-> obj id) (new 'static 'sound-id))
|
||||
(set! (-> obj last-request handle) (the-as handle #f))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 12 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-12 speech-control ((obj speech-control) (arg0 process-drawable) (arg1 speech-type))
|
||||
(let ((v1-2 (-> obj speech-table arg1)))
|
||||
(when v1-2
|
||||
(let ((a0-1 (-> obj channel-array (-> v1-2 channel))))
|
||||
(if (not (logtest? (-> a0-1 flags) (speech-channel-flag disable)))
|
||||
(speech-channel-method-9 a0-1 arg0 arg1)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 11 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-11 speech-control ((obj speech-control))
|
||||
(dotimes (s5-0 2)
|
||||
(speech-channel-method-11 (-> obj channel-array s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 10 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-10 speech-control ((obj speech-control) (arg0 int) (arg1 speech-type-info))
|
||||
(set! (-> obj speech-table arg0) arg1)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 13 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-13 speech-control ((obj speech-control) (arg0 handle))
|
||||
(dotimes (s4-0 2)
|
||||
(speech-channel-method-10 (-> obj channel-array s4-0) arg0)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 14 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-14 speech-control ((obj speech-control))
|
||||
(speech-control-method-9 obj)
|
||||
(let ((s5-0 (-> obj channel-array)))
|
||||
((method-of-type speech-channel speech-channel-method-13) (the-as speech-channel s5-0))
|
||||
(set! (-> s5-0 0 speech-table) (-> obj speech-table))
|
||||
(set! (-> s5-0 0 gui-channel) (gui-channel guard))
|
||||
)
|
||||
(let ((s5-1 (-> obj channel-array 1)))
|
||||
(speech-channel-method-13 s5-1)
|
||||
(set! (-> s5-1 speech-table) (-> obj speech-table))
|
||||
(set! (-> s5-1 gui-channel) (gui-channel citizen))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 15 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-15 speech-control ((obj speech-control) (arg0 process-drawable))
|
||||
(when (not (logtest? (-> obj channel-array 0 flags) (speech-channel-flag disable)))
|
||||
(let ((v1-3 *target*))
|
||||
(when v1-3
|
||||
(cond
|
||||
((logtest? (focus-status dark) (-> v1-3 focus-status))
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-3))
|
||||
)
|
||||
((logtest? (focus-status pilot) (-> v1-3 focus-status))
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-0 speech-type-1 speech-type-2))
|
||||
)
|
||||
(else
|
||||
(speech-control-method-12 obj arg0 (speech-type speech-type-1 speech-type-2))
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 16 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-16 speech-control ((obj speech-control))
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel guard)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(gui-control-method-16
|
||||
*gui-control*
|
||||
(gui-action stop)
|
||||
(the-as sound-id 1)
|
||||
(gui-channel citizen)
|
||||
(gui-action none)
|
||||
(the-as string #f)
|
||||
(the-as (function gui-connection symbol) #f)
|
||||
(the-as process #f)
|
||||
)
|
||||
(dotimes (s5-0 2)
|
||||
(speech-channel-method-12 (-> obj channel-array s5-0))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type speech-control
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defmethod speech-control-method-9 speech-control ((obj speech-control))
|
||||
(dotimes (v1-0 57)
|
||||
(set! (-> obj speech-table v1-0) #f)
|
||||
)
|
||||
(dotimes (s5-0 2)
|
||||
(speech-channel-method-12 (-> obj channel-array s5-0))
|
||||
)
|
||||
(speech-control-method-10 obj 0 (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay #x12c
|
||||
:max-delay #x12c
|
||||
:list (new 'static 'boxed-array :type string)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 3 (new 'static 'speech-type-info
|
||||
:priority 3
|
||||
:request-timeout #x12c
|
||||
:min-delay #x12c
|
||||
:max-delay #x12c
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg136"
|
||||
"kg139"
|
||||
"kg140"
|
||||
"kg141"
|
||||
"kg142"
|
||||
"kg134"
|
||||
"kg157"
|
||||
"kg143"
|
||||
"kg156"
|
||||
"kg176"
|
||||
"kg177"
|
||||
"kg536"
|
||||
"kg551"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 9 (new 'static 'speech-type-info
|
||||
:priority 1
|
||||
:min-delay #x258
|
||||
:max-delay #x4b0
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg133"
|
||||
"kg135"
|
||||
"kg137"
|
||||
"kg138"
|
||||
"kg144"
|
||||
"kg145"
|
||||
"kg146"
|
||||
"kg147"
|
||||
"kg148"
|
||||
"kg149"
|
||||
"kg150"
|
||||
"kg151"
|
||||
"kg152"
|
||||
"kg153"
|
||||
"kg154"
|
||||
"kg155"
|
||||
"kg158"
|
||||
"kg159"
|
||||
"kg160"
|
||||
"kg163"
|
||||
"kg164"
|
||||
"kg507"
|
||||
"kg508"
|
||||
"kg509"
|
||||
"kg511"
|
||||
"kg513"
|
||||
"kg514"
|
||||
"kg515"
|
||||
"kg516"
|
||||
"kg517"
|
||||
"kg518"
|
||||
"kg520"
|
||||
"kg521"
|
||||
"kg523"
|
||||
"kg526"
|
||||
"kg527"
|
||||
"kg528"
|
||||
"kg529"
|
||||
"kg530"
|
||||
"kg532"
|
||||
"kg534"
|
||||
"kg535"
|
||||
"kg537"
|
||||
"kg538"
|
||||
"kg539"
|
||||
"kg540"
|
||||
"kg541"
|
||||
"kg542"
|
||||
"kg543"
|
||||
"kg544"
|
||||
"kg545"
|
||||
"kg546"
|
||||
"kg549"
|
||||
"kg550"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 10 (new 'static 'speech-type-info
|
||||
:flags (speech-type-flag random-order)
|
||||
:priority #xa
|
||||
:request-timeout #x258
|
||||
:min-delay #x258
|
||||
:max-delay #x4b0
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg165"
|
||||
"kg165a"
|
||||
"kg165b"
|
||||
"kg166"
|
||||
"kg166a"
|
||||
"kg166b"
|
||||
"kg167"
|
||||
"kg167a"
|
||||
"kg167b"
|
||||
"kg168"
|
||||
"kg168a"
|
||||
"kg168b"
|
||||
"kg169"
|
||||
"kg169a"
|
||||
"kg169b"
|
||||
"kg170"
|
||||
"kg170a"
|
||||
"kg170b"
|
||||
"kg171"
|
||||
"kg171a"
|
||||
"kg171b"
|
||||
"kg172"
|
||||
"kg172a"
|
||||
"kg172b"
|
||||
"kg173"
|
||||
"kg173a"
|
||||
"kg173b"
|
||||
"kg174"
|
||||
"kg174a"
|
||||
"kg174b"
|
||||
"kg175"
|
||||
"kg175a"
|
||||
"kg175b"
|
||||
"kg510"
|
||||
)
|
||||
)
|
||||
)
|
||||
(speech-control-method-10 obj 11 (new 'static 'speech-type-info
|
||||
:priority 2
|
||||
:min-delay #x1e
|
||||
:max-delay #x1e
|
||||
:list (new 'static 'boxed-array :type string
|
||||
"kg386a"
|
||||
"kg428a"
|
||||
"kg641"
|
||||
"kg650"
|
||||
"kg338a"
|
||||
"kg339a"
|
||||
"kg340a"
|
||||
"kg341a"
|
||||
"kg342a"
|
||||
"kg343a"
|
||||
"kg344a"
|
||||
"kg512"
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for symbol *speech-control*, type speech-control
|
||||
(define *speech-control* (new 'static 'speech-control))
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(speech-control-method-14 *speech-control*)
|
6
test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc
generated
vendored
6
test/decompiler/reference/jak2/engine/target/target-darkjak_REF.gc
generated
vendored
|
@ -1515,9 +1515,9 @@
|
|||
:name "lightning-darkjak-bomb1"
|
||||
:flags (lightning-spec-flags lsf0 size-from-adjust-dist)
|
||||
:adjust-distance #xa
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80ffffff
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:texture #xc08400
|
||||
:reduction 0.42
|
||||
|
|
15399
test/decompiler/reference/jak2/engine/ui/bigmap-data_REF.gc
generated
vendored
Normal file
15399
test/decompiler/reference/jak2/engine/ui/bigmap-data_REF.gc
generated
vendored
Normal file
File diff suppressed because it is too large
Load diff
42
test/decompiler/reference/jak2/engine/ui/bigmap-h_REF.gc
generated
vendored
42
test/decompiler/reference/jak2/engine/ui/bigmap-h_REF.gc
generated
vendored
|
@ -123,27 +123,27 @@
|
|||
|
||||
;; definition of type bigmap-compressed-layers
|
||||
(deftype bigmap-compressed-layers (structure)
|
||||
((data uint32 20 :offset-assert 0)
|
||||
(layer0 uint32 :offset 0)
|
||||
(layer1 uint32 :offset 4)
|
||||
(layer2 uint32 :offset 8)
|
||||
(layer3 uint32 :offset 12)
|
||||
(layer4 uint32 :offset 16)
|
||||
(layer5 uint32 :offset 20)
|
||||
(layer6 uint32 :offset 24)
|
||||
(layer7 uint32 :offset 28)
|
||||
(layer8 uint32 :offset 32)
|
||||
(layer9 uint32 :offset 36)
|
||||
(layer10 uint32 :offset 40)
|
||||
(layer11 uint32 :offset 44)
|
||||
(layer12 uint32 :offset 48)
|
||||
(layer13 uint32 :offset 52)
|
||||
(layer14 uint32 :offset 56)
|
||||
(layer15 uint32 :offset 60)
|
||||
(layer16 uint32 :offset 64)
|
||||
(layer17 uint32 :offset 68)
|
||||
(layer18 uint32 :offset 72)
|
||||
(layer19 uint32 :offset 76)
|
||||
((data (pointer uint32) 20 :offset-assert 0)
|
||||
(layer0 (pointer uint32) :offset 0)
|
||||
(layer1 (pointer uint32) :offset 4)
|
||||
(layer2 (pointer uint32) :offset 8)
|
||||
(layer3 (pointer uint32) :offset 12)
|
||||
(layer4 (pointer uint32) :offset 16)
|
||||
(layer5 (pointer uint32) :offset 20)
|
||||
(layer6 (pointer uint32) :offset 24)
|
||||
(layer7 (pointer uint32) :offset 28)
|
||||
(layer8 (pointer uint32) :offset 32)
|
||||
(layer9 (pointer uint32) :offset 36)
|
||||
(layer10 (pointer uint32) :offset 40)
|
||||
(layer11 (pointer uint32) :offset 44)
|
||||
(layer12 (pointer uint32) :offset 48)
|
||||
(layer13 (pointer uint32) :offset 52)
|
||||
(layer14 (pointer uint32) :offset 56)
|
||||
(layer15 (pointer uint32) :offset 60)
|
||||
(layer16 (pointer uint32) :offset 64)
|
||||
(layer17 (pointer uint32) :offset 68)
|
||||
(layer18 (pointer uint32) :offset 72)
|
||||
(layer19 (pointer uint32) :offset 76)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x50
|
||||
|
|
24
test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc
generated
vendored
24
test/decompiler/reference/jak2/levels/common/elec-gate_REF.gc
generated
vendored
|
@ -151,9 +151,9 @@
|
|||
:bolt-spec (new 'static 'lightning-spec
|
||||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80000000
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
@ -170,9 +170,9 @@
|
|||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:rand-func #x3
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80ffffff
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
@ -1124,9 +1124,9 @@
|
|||
:bolt-spec (new 'static 'lightning-spec
|
||||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80000000
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
@ -1143,9 +1143,9 @@
|
|||
:name #f
|
||||
:flags (lightning-spec-flags lsf2)
|
||||
:rand-func #x3
|
||||
:start-color #x80ffffff
|
||||
:end-color #x80ffffff
|
||||
:fade-to-color #x58f00bf
|
||||
:start-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:end-color (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)
|
||||
:fade-to-color (new 'static 'rgba :r #xbf :b #x8f :a #x5)
|
||||
:fade-start-factor 0.2
|
||||
:fade-time 120.0
|
||||
:texture #xc08300
|
||||
|
|
Loading…
Reference in a new issue