mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-21 07:37:45 -04:00
f7bd0752f8
* wip * getting stuff set up so we can actually run test cases * better handle block entry stuff * types2 working on gstring * comments * math ref working * up to first stack stuff * stack fixes * bounding box * math stuff is working * float fixes * temp debug for (method 9 profile-array) * stupid stupid bug * debugging * everything is broken * some amount of type stuff works * bitfield * texture bitfields not working * temp * types * more stuff * type check * temp * float related fixes for light and res problems * revisit broken files, fix bugs * more types * vector debug * bug fixes for decompiler crashes in harder functions * update goal_src
469 lines
11 KiB
Common Lisp
469 lines
11 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: vu1-user-h.gc
|
|
;; name in dgo: vu1-user-h
|
|
;; dgos: ENGINE, GAME
|
|
|
|
;; The DMA buckets
|
|
(defenum bucket-id
|
|
:type int32
|
|
:bitfield #f
|
|
(bucket-0 0)
|
|
(bucket-1 1)
|
|
(bucket-2 2)
|
|
(bucket-3 3) ;; blit displays
|
|
(bucket-4 4) ;; tex
|
|
(bucket-5 5) ;; sky
|
|
(bucket-6 6) ;; ocean
|
|
|
|
(bucket-7 7) ;; level 0 tex
|
|
(bucket-8 8) ;; tfrag
|
|
(bucket-9 9) ;; tie
|
|
(bucket-10 10) ;; tie
|
|
(bucket-11 11) ;; tfrag
|
|
(bucket-12 12) ;; tie
|
|
(bucket-13 13) ;; tie
|
|
(bucket-14 14) ;; merc
|
|
(bucket-15 15) ;; emerc
|
|
(bucket-16 16) ;; mercneric
|
|
(bucket-17 17) ;; tie
|
|
|
|
(bucket-18 18) ;; tex
|
|
(bucket-19 19) ;; tfrag
|
|
(bucket-20 20) ;; tie
|
|
(bucket-21 21) ;; tie
|
|
(bucket-22 22) ;; tfrag
|
|
(bucket-23 23) ;; tie
|
|
(bucket-24 24) ;; tie
|
|
(bucket-25 25) ;; merc
|
|
(bucket-26 26) ;; emerc
|
|
(bucket-27 27) ;; mercneric
|
|
(bucket-28 28) ;; tie
|
|
|
|
(bucket-29 29) ;; tex
|
|
(bucket-30 30) ;; tfrag
|
|
(bucket-31 31) ;; tie
|
|
(bucket-32 32) ;; tie
|
|
(bucket-33 33) ;; tfrag
|
|
(bucket-34 34) ;; tie
|
|
(bucket-35 35) ;; tie
|
|
(bucket-36 36) ;; merc
|
|
(bucket-37 37) ;; emerc
|
|
(bucket-38 38) ;; mercneric
|
|
(bucket-39 39) ;; tie
|
|
|
|
(bucket-40 40) ;; tex
|
|
(bucket-41 41) ;; tfrag
|
|
(bucket-42 42) ;; tie
|
|
(bucket-43 43) ;; tie
|
|
(bucket-44 44) ;; tfrag
|
|
(bucket-45 45) ;; tie
|
|
(bucket-46 46) ;; tie
|
|
(bucket-47 47) ;; merc
|
|
(bucket-48 48) ;; emerc
|
|
(bucket-49 49) ;; mercneric
|
|
(bucket-50 50) ;; tie
|
|
|
|
(bucket-51 51) ;; tex
|
|
(bucket-52 52) ;; tfrag
|
|
(bucket-53 53) ;; tie
|
|
(bucket-54 54) ;; tie
|
|
(bucket-55 55) ;; tfrag
|
|
(bucket-56 56) ;; tie
|
|
(bucket-57 57) ;; tie
|
|
(bucket-58 58) ;; merc
|
|
(bucket-59 59) ;; emerc
|
|
(bucket-60 60) ;; mercneric
|
|
(bucket-61 61) ;; tie
|
|
|
|
(bucket-62 62) ;; tex
|
|
(bucket-63 63) ;; tfrag
|
|
(bucket-64 64) ;; tie
|
|
(bucket-65 65) ;; tie
|
|
(bucket-66 66) ;; tfrag
|
|
(bucket-67 67) ;; tie
|
|
(bucket-68 68) ;; tie
|
|
(bucket-69 69) ;; merc
|
|
(bucket-70 70) ;; emerc
|
|
(bucket-71 71) ;; mercneric
|
|
(bucket-72 72) ;; tie
|
|
|
|
(bucket-73 73) ;; tex
|
|
(bucket-74 74) ;; shrub
|
|
(bucket-75 75) ;; shrub
|
|
(bucket-76 76) ;; shrub
|
|
(bucket-77 77) ;; shrub
|
|
(bucket-78 78) ;; shrub
|
|
(bucket-79 79) ;; merc
|
|
(bucket-80 80) ;; emerc
|
|
(bucket-81 81) ;; mercneric
|
|
|
|
(bucket-82 82) ;; tex
|
|
(bucket-83 83) ;; shrub
|
|
(bucket-84 84) ;; shrub
|
|
(bucket-85 85) ;; shrub
|
|
(bucket-86 86) ;; shrub
|
|
(bucket-87 87) ;; shrub
|
|
(bucket-88 88) ;; merc
|
|
(bucket-89 89) ;; emerc
|
|
(bucket-90 90) ;; mercneric
|
|
|
|
(bucket-91 91) ;; tex
|
|
(bucket-92 92) ;; shrub
|
|
(bucket-93 93) ;; shrub
|
|
(bucket-94 94) ;; shrub
|
|
(bucket-95 95) ;; shrub
|
|
(bucket-96 96) ;; shrub
|
|
(bucket-97 97) ;; merc
|
|
(bucket-98 98) ;; emerc
|
|
(bucket-99 99) ;; mercneric
|
|
|
|
(bucket-100 100) ;; tex
|
|
(bucket-101 101) ;; shrub
|
|
(bucket-102 102) ;; shrub
|
|
(bucket-103 103) ;; shrub
|
|
(bucket-104 104) ;; shrub
|
|
(bucket-105 105) ;; shrub
|
|
(bucket-106 106) ;; merc
|
|
(bucket-107 107) ;; emerc
|
|
(bucket-108 108) ;; mercneric
|
|
|
|
(bucket-109 109) ;; tex
|
|
(bucket-110 110) ;; shrub
|
|
(bucket-111 111) ;; shrub
|
|
(bucket-112 112) ;; shrub
|
|
(bucket-113 113) ;; shrub
|
|
(bucket-114 114) ;; shrub
|
|
(bucket-115 115) ;; merc
|
|
(bucket-116 116) ;; emerc
|
|
(bucket-117 117) ;; mercneric
|
|
|
|
(bucket-118 118) ;; tex
|
|
(bucket-119 119) ;; shrub
|
|
(bucket-120 120) ;; shrub
|
|
(bucket-121 121) ;; shrub
|
|
(bucket-122 122) ;; shrub
|
|
(bucket-123 123) ;; shrub
|
|
(bucket-124 124) ;; merc
|
|
(bucket-125 125) ;; emerc
|
|
(bucket-126 126) ;; mercneric
|
|
|
|
(bucket-127 127) ;; tex
|
|
(bucket-128 128) ;; tfrag
|
|
(bucket-129 129) ;; tie
|
|
(bucket-130 130) ;; tie
|
|
(bucket-131 131) ;; merc
|
|
(bucket-132 132) ;; emerc
|
|
(bucket-133 133) ;; mercneric
|
|
(bucket-134 134) ;; tfrag
|
|
(bucket-135 135) ;; tie
|
|
(bucket-136 136) ;; tie
|
|
|
|
(bucket-137 137) ;; tex
|
|
(bucket-138 138) ;; tfrag
|
|
(bucket-139 139) ;; tie
|
|
(bucket-140 140) ;; tie
|
|
(bucket-141 141) ;; merc
|
|
(bucket-142 142) ;; emerc
|
|
(bucket-143 143) ;; mercneric
|
|
(bucket-144 144) ;; tfrag
|
|
(bucket-145 145) ;; tie
|
|
(bucket-146 146) ;; tie
|
|
|
|
(bucket-147 147) ;; tex
|
|
(bucket-148 148) ;; tfrag
|
|
(bucket-149 149) ;; tie
|
|
(bucket-150 150) ;; tie
|
|
(bucket-151 151) ;; merc
|
|
(bucket-152 152) ;; emerc
|
|
(bucket-153 153) ;; mercneric
|
|
(bucket-154 154) ;; tfrag
|
|
(bucket-155 155) ;; tie
|
|
(bucket-156 156) ;; tie
|
|
|
|
(bucket-157 157) ;; tex
|
|
(bucket-158 158) ;; tfrag
|
|
(bucket-159 159) ;; tie
|
|
(bucket-160 160) ;; tie
|
|
(bucket-161 161) ;; merc
|
|
(bucket-162 162) ;; emerc
|
|
(bucket-163 163) ;; mercneric
|
|
(bucket-164 164) ;; tfrag
|
|
(bucket-165 165) ;; tie
|
|
(bucket-166 166) ;; tie
|
|
|
|
(bucket-167 167) ;; tex
|
|
(bucket-168 168) ;; tfrag
|
|
(bucket-169 169) ;; tie
|
|
(bucket-170 170) ;; tie
|
|
(bucket-171 171) ;; merc
|
|
(bucket-172 172) ;; emerc
|
|
(bucket-173 173) ;; mercneric
|
|
(bucket-174 174) ;; tfrag
|
|
(bucket-175 175) ;; tie
|
|
(bucket-176 176) ;; tie
|
|
|
|
(bucket-177 177) ;; tex
|
|
(bucket-178 178) ;; tfrag
|
|
(bucket-179 179) ;; tie
|
|
(bucket-180 180) ;; tie
|
|
(bucket-181 181) ;; merc
|
|
(bucket-182 182) ;; emerc
|
|
(bucket-183 183) ;; mercneric
|
|
(bucket-184 184) ;; tfrag
|
|
(bucket-185 185) ;; tie
|
|
(bucket-186 186) ;; tie
|
|
|
|
(bucket-187 187) ;; tex
|
|
(bucket-188 188) ;; merc
|
|
(bucket-189 189) ;; emerc
|
|
(bucket-190 190) ;; mercneric
|
|
(bucket-191 191)
|
|
(bucket-192 192) ;; merc
|
|
(bucket-193 193) ;; emerc
|
|
(bucket-194 194) ;; mercneric
|
|
|
|
(bucket-195 195) ;; shadow
|
|
|
|
(bucket-196 196) ;; tex
|
|
(bucket-197 197) ;; merc
|
|
(bucket-198 198) ;; emerc
|
|
(bucket-199 199) ;; mercneric
|
|
|
|
(bucket-200 200) ;; tex
|
|
(bucket-201 201) ;; merc
|
|
(bucket-202 202) ;; emerc
|
|
(bucket-203 203) ;; mercneric
|
|
|
|
(bucket-204 204) ;; tex
|
|
(bucket-205 205) ;; merc
|
|
(bucket-206 206) ;; emerc
|
|
(bucket-207 207) ;; mercneric
|
|
|
|
(bucket-208 208) ;; tex
|
|
(bucket-209 209) ;; merc
|
|
(bucket-210 210) ;; emerc
|
|
(bucket-211 211) ;; mercneric
|
|
|
|
(bucket-212 212) ;; tex
|
|
(bucket-213 213) ;; merc
|
|
(bucket-214 214) ;; emerc
|
|
(bucket-215 215) ;; mercneric
|
|
|
|
(bucket-216 216) ;; tex
|
|
(bucket-217 217) ;; merc
|
|
(bucket-218 218) ;; emerc
|
|
(bucket-219 219) ;; mercneric
|
|
|
|
(bucket-220 220) ;; tex
|
|
(bucket-221 221) ;; merc
|
|
(bucket-222 222) ;; emerc
|
|
(bucket-223 223) ;; mercneric
|
|
(bucket-224 224)
|
|
(bucket-225 225) ;; merc
|
|
(bucket-226 226) ;; emerc
|
|
(bucket-227 227) ;; mercneric
|
|
(bucket-228 228)
|
|
(bucket-229 229) ;; merc
|
|
(bucket-230 230) ;; emerc
|
|
(bucket-231 231) ;; mercneric
|
|
(bucket-232 232)
|
|
(bucket-233 233) ;; merc
|
|
(bucket-234 234) ;; emerc
|
|
(bucket-235 235) ;; mercneric
|
|
(bucket-236 236)
|
|
(bucket-237 237) ;; merc
|
|
(bucket-238 238) ;; emerc
|
|
(bucket-239 239) ;; mercneric
|
|
(bucket-240 240)
|
|
(bucket-241 241) ;; merc
|
|
(bucket-242 242) ;; emerc
|
|
(bucket-243 243) ;; mercneric
|
|
(bucket-244 244)
|
|
(bucket-245 245) ;; merc
|
|
(bucket-246 246) ;; emerc
|
|
(bucket-247 247) ;; mercneric
|
|
(bucket-248 248)
|
|
(bucket-249 249) ;; merc
|
|
(bucket-250 250) ;; emerc
|
|
(bucket-251 251) ;; mercneric
|
|
(bucket-252 252) ;; tex
|
|
(bucket-253 253) ;; merc
|
|
(bucket-254 254) ;; mercneric
|
|
(bucket-255 255) ;; tfrag
|
|
(bucket-256 256)
|
|
(bucket-257 257)
|
|
(bucket-258 258)
|
|
(bucket-259 259) ;; tfrag
|
|
(bucket-260 260)
|
|
(bucket-261 261) ;; tex
|
|
(bucket-262 262) ;; merc
|
|
(bucket-263 263) ;; mercneric
|
|
(bucket-264 264) ;; tfrag
|
|
(bucket-265 265)
|
|
(bucket-266 266)
|
|
(bucket-267 267)
|
|
(bucket-268 268) ;; tfrag
|
|
(bucket-269 269)
|
|
(bucket-270 270) ;; tex
|
|
(bucket-271 271) ;; merc
|
|
(bucket-272 272) ;; mercneric
|
|
(bucket-273 273) ;; tfrag
|
|
(bucket-274 274)
|
|
(bucket-275 275)
|
|
(bucket-276 276)
|
|
(bucket-277 277) ;; tfrag
|
|
(bucket-278 278)
|
|
(bucket-279 279) ;; tex
|
|
(bucket-280 280) ;; merc
|
|
(bucket-281 281) ;; mercneric
|
|
(bucket-282 282) ;; tfrag
|
|
(bucket-283 283)
|
|
(bucket-284 284)
|
|
(bucket-285 285)
|
|
(bucket-286 286) ;; tfrag
|
|
(bucket-287 287)
|
|
(bucket-288 288) ;; tex
|
|
(bucket-289 289) ;; merc
|
|
(bucket-290 290) ;; mercneric
|
|
(bucket-291 291) ;; tfrag
|
|
(bucket-292 292)
|
|
(bucket-293 293)
|
|
(bucket-294 294)
|
|
(bucket-295 295) ;; tfrag
|
|
(bucket-296 296)
|
|
(bucket-297 297) ;; tex
|
|
(bucket-298 298) ;; merc
|
|
(bucket-299 299) ;; mercneric
|
|
(bucket-300 300) ;; tfrag
|
|
(bucket-301 301)
|
|
(bucket-302 302)
|
|
(bucket-303 303)
|
|
(bucket-304 304) ;; tfrag
|
|
(bucket-305 305)
|
|
(bucket-306 306) ;; tex
|
|
(bucket-307 307) ;; merc
|
|
(bucket-308 308) ;; mercneric
|
|
(bucket-309 309)
|
|
|
|
(bucket-310 310) ;; ocean
|
|
(bucket-311 311) ;; depth-cue
|
|
(bucket-312 312)
|
|
(bucket-313 313) ;; particles
|
|
(bucket-314 314) ;; shadow
|
|
(bucket-315 315) ;; effects
|
|
(bucket-316 316) ;; tex
|
|
(bucket-317 317) ;; mercneric
|
|
(bucket-318 318) ;; debug
|
|
(bucket-319 319) ;; tex
|
|
(bucket-320 320) ;; hud
|
|
(bucket-321 321) ;; hud letterbox
|
|
(bucket-322 322) ;; hud
|
|
(bucket-323 323) ;; hud
|
|
(bucket-324 324) ;; debug
|
|
(debug-no-zbuf 325) ;; debug
|
|
;; (bucket-326 326) ;; debug
|
|
)
|
|
|
|
(defenum vu1-renderer-mask
|
|
:type uint64
|
|
:bitfield #t
|
|
(rn0)
|
|
(rn1)
|
|
(rn2)
|
|
(rn3)
|
|
(rn4)
|
|
(rn5)
|
|
(rn6)
|
|
(rn7)
|
|
(rn8)
|
|
(rn9)
|
|
(rn10)
|
|
(rn11)
|
|
(rn12)
|
|
(rn13)
|
|
(rn14)
|
|
(rn15)
|
|
(rn16)
|
|
(rn17)
|
|
(rn18)
|
|
(rn19)
|
|
(rn20)
|
|
(rn21)
|
|
(rn22)
|
|
(rn23)
|
|
(rn24)
|
|
(rn25)
|
|
(rn26)
|
|
(rn27)
|
|
(rn28)
|
|
(rn29)
|
|
(rn30)
|
|
(rn31)
|
|
(rn32)
|
|
(rn33)
|
|
(rn34)
|
|
)
|
|
|
|
(defenum tpage-category
|
|
:type int8
|
|
(tfrag 0)
|
|
(pris 1)
|
|
(shrub 2)
|
|
(alpha 3)
|
|
(water 4)
|
|
(warp 5)
|
|
(pris2 6)
|
|
(sprite 7)
|
|
(map 8)
|
|
(sky 9)
|
|
)
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
|
|
;; foreground renderers will output DMA data to one of these "sinks".
|
|
(deftype dma-foreground-sink (basic)
|
|
;; which bucket to output to. determines draw order.
|
|
((bucket bucket-id :offset-assert 4)
|
|
;; what kind of textures will be uploaded at this time?
|
|
(foreground-texture-page tpage-category :offset-assert 8)
|
|
;; which level do we belong to?
|
|
(foreground-texture-level int8 :offset-assert 9)
|
|
;; if there are multiple buckets for the above categories, which bucket
|
|
;; (for example, jak 1 had separate merc/gmerc buckets in some categories)
|
|
(foreground-output-bucket int8 :offset-assert 10)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #xb
|
|
:flag-assert #x90000000b
|
|
)
|
|
|
|
;; the generic renderer is double buffered - while one fragment is uploading, another is rendering.
|
|
;; This double buffering even happens across models. So when preparing DMA for the next model,
|
|
;; the generic renderer must know the output (gifbuf) region of last fragment of the previous model,
|
|
;; and upload to the other buffer.
|
|
;; The generic renderer doesn't track this state internally, so we have some extra information
|
|
;; to add on to generic buckets.
|
|
(deftype generic-bucket-state (structure)
|
|
((gifbuf-adr uint32 :offset-assert 0)
|
|
(inbuf-adr uint32 :offset-assert 4)
|
|
)
|
|
:allow-misaligned
|
|
:method-count-assert 9
|
|
:size-assert #x8
|
|
:flag-assert #x900000008
|
|
)
|
|
|
|
;; as described above, the generic renderer needs a bit of extra state to double
|
|
;; buffer between models.
|
|
(deftype generic-dma-foreground-sink (dma-foreground-sink)
|
|
((state generic-bucket-state :inline :offset-assert 12)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x14
|
|
:flag-assert #x900000014
|
|
)
|
|
|