Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

workaround for spyder warp hack and fix battle bugs #2707

Merged
merged 4 commits into from Jun 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
80 changes: 48 additions & 32 deletions decompiler/config/jak2/all-types.gc
Expand Up @@ -34846,7 +34846,7 @@
(pick-spawner-max-dist float :offset-assert 56)
(max-count uint32 :offset-assert 60)
(desired-alive-count uint8 :offset-assert 64)
(spawner-collide-with uint32 :offset-assert 68)
(spawner-collide-with collide-spec :offset-assert 68)
)
:method-count-assert 9
:size-assert #x48
Expand Down Expand Up @@ -34884,15 +34884,21 @@
:flag-assert #x900000010
)

(defenum battle-spawner-flags
:bitfield #t
:type int64
(hit)
)

(deftype battle-spawner (structure)
((flags uint64 :offset-assert 0)
((flags battle-spawner-flags :offset-assert 0)
(entity entity-actor :offset-assert 8)
(breeds battle-breed-array :offset-assert 12)
(creature-index int8 :offset-assert 16)
(ready-index int8 :offset-assert 17)
(attack-index int8 :offset-assert 18)
(mode uint8 :offset-assert 19)
(intro-path path-control :offset-assert 20) ;; a guess
(intro-path path-control :offset-assert 20)
(notice-attack-delay uint32 :offset-assert 24)
(creature handle :offset-assert 32)
(last-spawn-time time-frame :offset-assert 40)
Expand All @@ -34911,9 +34917,19 @@
:flag-assert #x900000010
)

(defenum battle-flags
:bitfield #t
:type uint8
(noticed)
(active)
(beaten)
(no-spawner-block)
(battle-music-set)
)

(deftype battle (process-drawable)
((info battle-info :offset-assert 200)
(flags uint8 :offset-assert 204)
(flags battle-flags :offset-assert 204)
(spawn-initial-creatures? symbol :offset-assert 208)
(next-spawn-delay uint32 :offset-assert 212)
(on-notice basic :offset-assert 216)
Expand All @@ -34938,34 +34954,34 @@
(notice () _type_ :state 22)
(hostile () _type_ :state 23)
(beaten () _type_ :state 24)
(battle-method-25 (_type_ battle-spawner) symbol 25)
(battle-method-26 (_type_ battle-spawner) symbol 26)
(battle-method-27 (_type_) none 27)
(battle-method-28 (_type_) none 28)
(battle-method-29 (_type_ battle-spawner entity-actor) none 29)
(battle-method-30 (_type_ process) battle-spawner 30)
(battle-method-31 (_type_ battle-ally entity-actor) none 31)
(battle-method-32 (_type_ battle-spawner entity-actor) object 32) ;; TODO - gross return value...
(battle-method-33 (_type_) none 33)
(battle-method-34 (_type_) none 34)
(battle-method-35 (_type_) none 35)
(battle-method-36 (_type_) battle-spawner 36)
(battle-method-37 (_type_ battle-spawner) symbol 37)
(battle-method-38 (_type_ battle-breed transformq) handle 38)
(battle-method-39 (_type_ battle-spawner symbol) handle 39)
(battle-method-40 (_type_) none 40)
(battle-method-41 (_type_ battle-spawner) battle-breed 41)
(battle-method-42 (_type_ battle-spawner touch-tracker) symbol 42) ;; fma-sphere or touch-tracker?
(battle-method-43 (_type_ battle-spawner touch-tracker) symbol 43) ;; fma-sphere or touch-tracker?
(battle-method-44 (_type_ battle-spawner) none 44)
(battle-method-45 (_type_ battle-spawner touch-tracker) symbol 45) ;; fma-sphere or touch-tracker?
(battle-method-46 (_type_ battle-spawner) symbol 46)
(battle-method-47 (_type_) none 47)
(battle-method-48 (_type_) none 48)
(battle-method-49 (_type_) int :behavior battle 49)
(battle-method-50 (_type_) symbol 50)
(battle-method-51 (_type_ battle-spawner symbol) symbol :behavior battle 51)
(battle-method-52 (_type_) int 52)
(spawner-blocked? (_type_ battle-spawner) symbol 25)
(spawner-blocked-by-collide? (_type_ battle-spawner) symbol 26)
(draw-battle-marks (_type_) none 27)
(initialize-enemy-lists (_type_) none 28)
(initialize-spawner-breeds (_type_ battle-spawner entity-actor) none 29)
(get-spawner-for-enemy (_type_ process) battle-spawner 30)
(initialize-ally (_type_ battle-ally entity-actor) none 31)
(initialize-spawner (_type_ battle-spawner entity-actor) none 32)
(initialize-battle (_type_) none 33)
(init-go (_type_) int 34)
(get-spawn-delay (_type_) int 35)
(get-best-spawner (_type_) battle-spawner 36)
(spawner-free? (_type_ battle-spawner) symbol 37)
(spawn-from-breed (_type_ battle-breed transformq) handle 38)
(spawn-from-spawner (_type_ battle-spawner symbol) none 39)
(spawn-initial-creatures (_type_) none 40)
(get-random-breed (_type_ battle-spawner) battle-breed 41)
(spawner-hit (_type_ battle-spawner process) symbol 42)
(spawner-try-jump (_type_ battle-spawner enemy) symbol 43)
(spawner-do-jump (_type_ battle-spawner) int 44)
(spawner-hittable? (_type_ battle-spawner) symbol 45)
(spawner-in-intro? (_type_ battle-spawner) symbol 46)
(set-battle-music (_type_) none 47)
(unset-battle-music (_type_) none 48)
(update-allies-list (_type_) int :behavior battle 49)
(beaten? (_type_) symbol 50)
(spawner-active? (_type_ battle-spawner symbol) symbol :behavior battle 51)
(spawner-active-count (_type_) int 52)
)
)

Expand Down
12 changes: 8 additions & 4 deletions decompiler/config/jak2/ntsc_v1/type_casts.jsonc
Expand Up @@ -3683,7 +3683,7 @@
"(method 7 battle)": [
[15, "t9", "(function process-drawable int process-drawable)"]
],
"(method 51 battle)": [[[38, 95], "s4", "touch-tracker"]],
"(method 51 battle)": [[[38, 95], "s4", "enemy"]],
"(method 26 battle)": [
[35, "a0", "connection"],
[36, "a0", "collide-shape"],
Expand All @@ -3692,11 +3692,14 @@
],
"(method 28 battle)": [
["_stack_", 16, "res-tag"],
[[21, 31], "s5", "(pointer entity-actor)"]
[[13, 22], "v0", "(pointer actor-group)"],
[46, "v0", "enemy-option"]
],
"(method 29 battle)": [
["_stack_", 16, "res-tag"],
["_stack_", 32, "res-tag"]
["_stack_", 32, "res-tag"],
[90, "v0", "(pointer float)"],
[16, "v0", "(pointer type)"]
],
"(method 12 collide-cache)": [[76, "v1", "process-drawable"]],
"collide-list-fill-bg-using-box": [
Expand Down Expand Up @@ -10370,5 +10373,6 @@
[116, "a0", "uint32"],
[[188, 246], "gp", "shadow-dcache"],
[93, "v1", "shadow-dcache"]
]
],
"(method 40 battle)": [[26, "v0", "enemy-option"]]
}
10 changes: 10 additions & 0 deletions decompiler/config/jak2/ntsc_v1/var_names.jsonc
Expand Up @@ -4238,5 +4238,15 @@
},
"set-font-color": {
"args": ["color", "vert", "rgba-red", "rgba-green", "rgba-blue"]
},
"(method 28 battle)": {
"vars": {
"v0-1": ["enm-option", "enemy-option"]
}
},
"(method 40 battle)": {
"vars": {
"v1-7": ["enm-options", "enemy-option"]
}
}
}
5 changes: 3 additions & 2 deletions goal_src/jak2/engine/draw/drawable.gc
Expand Up @@ -1210,8 +1210,9 @@
(protect ((-> *pc-settings* force-envmap?))
(when (not (movie?))
(dotimes (eff-i (-> dc mgeo header effect-count))
(if (logtest? (effect-bits cross-fade) (-> dc mgeo effect eff-i effect-bits))
(false! (-> *pc-settings* force-envmap?)))))
(if (and (zero? (logand (ash 1 eff-i) (-> dc effect-mask)))
(logtest? (effect-bits cross-fade) (-> dc mgeo effect eff-i effect-bits)))
(false! (-> *pc-settings* force-envmap?)))))
(foreground-draw dc dma-buf dist-w)
)
)
Expand Down
2 changes: 1 addition & 1 deletion goal_src/jak2/engine/game/task/task-control.gc
Expand Up @@ -1820,7 +1820,7 @@
)

(defbehavior task-manager-init-by-other task-manager ((arg0 game-task-node-info) (arg1 symbol))
(stack-size-set! (-> self main-thread) 2048) ;; increased from 1024
(stack-size-set! (-> self main-thread) 3072) ;; increased from 1024
(add-connection *task-manager-engine* self nothing self arg0 #f)
(set! (-> self node-info) arg0)
(set! (-> self lev-name) arg1)
Expand Down