diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 11354a331c..7698022e46 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -2107,10 +2107,7 @@ (deftype profile-frame (structure) ((name basic :offset-assert 0) (time-stamp uint32 :offset-assert 4) - (color uint32 :offset-assert 8) - (r uint8 :offset 8) ;; TODO : verify colors - (g uint8 :offset 9) ;; TODO (again) : these are actually bitfields - (b uint8 :offset 10) + (color rgba :offset-assert 8) ) :method-count-assert 9 :size-assert #xc @@ -2126,7 +2123,7 @@ :size-assert #x4010 :flag-assert #xe00004010 (:methods - (get-last-frame-time-stamp (profile-bar) uint 9) + (get-last-frame-time-stamp (_type_) uint 9) (dummy-10 () none 10) (dummy-11 () none 11) (dummy-12 () none 12) @@ -3260,63 +3257,28 @@ ) -;;(define-extern gs-trxreg object) ;; unknown type ;;(define-extern gif-packet object) ;; unknown type -;;(define-extern gs-fogcol object) ;; unknown type -;;(define-extern gs-zbuf object) ;; unknown type ;;(define-extern gif-bank object) ;; unknown type -;; ;; unknown type -;;(define-extern gs-trxpos object) ;; unknown type -;;(define-extern gs-xy-offset object) ;; unknown type -;;(define-extern gs-tex1 object) ;; unknown type -;;(define-extern gs-prim object) ;; unknown type ;;(define-extern gif-tag object) ;; unknown type -;;(define-extern gs-display object) ;; unknown type -;;(define-extern gs-prmode-cont object) ;; unknown type -;;(define-extern gs-scissor object) ;; unknown type -;;(define-extern gs-st object) ;; unknown type -;;(define-extern gs-smode2 object) ;; unknown type (define-extern add-reg-gif-packet (function gif-packet int int none)) ;;(define-extern draw-context object) ;; unknown type -;;(define-extern gs-texclut object) ;; unknown type -;;(define-extern gs-bgcolor object) ;; unknown type (define-extern open-gif-packet (function gif-packet gif-packet)) ;;(define-extern gif-tag-count object) ;; unknown type -;;(define-extern gs-test object) ;; unknown type -;;(define-extern gs-tex0 object) ;; unknown type ;;(define-extern gif-tag64 object) ;; unknown type -;;(define-extern gs-alpha object) ;; unknown type -;;(define-extern gs-miptbp object) ;; unknown type -;;(define-extern gs-color-clamp object) ;; unknown type ;;(define-extern gif-p3cnt object) ;; unknown type -;;(define-extern gs-clamp object) ;; unknown type -;;(define-extern gs-uv object) ;; unknown type ;;(define-extern gif-stat object) ;; unknown type ;;(define-extern gif-mode object) ;; unknown type -;;(define-extern gs-trxdir object) ;; unknown type -;;(define-extern gs-xyzf object) ;; unknown type -;;(define-extern gs-csr object) ;; unknown type (define-extern draw-context-set-xy (function draw-context int int none)) -;;(define-extern gs-frame object) ;; unknown type -;;(define-extern gs-texa object) ;; unknown type -;;(define-extern gs-bank object) ;; unknown type ;;(define-extern gif-cnt object) ;; unknown type ;;(define-extern gif-ctrl object) ;; unknown type ;;(define-extern gs-gif-tag object) ;; unknown type -;;(define-extern gs-pmode object) ;; unknown type -;;(define-extern gs-dthe object) ;; unknown type -;;(define-extern gs-fog object) ;; unknown type -;;(define-extern gs-xyz object) ;; unknown type ;;(define-extern gif-tag-prim object) ;; unknown type ;;(define-extern gif-p3tag object) ;; unknown type (define-extern close-gif-packet (function gif-packet int gif-packet)) -;;(define-extern gs-display-fb object) ;; unknown type -;;(define-extern gs-bitbltbuf object) ;; unknown type -;;(define-extern gs-rgbaq object) ;; unknown type ;;;;;;;;;;;;;;; @@ -3324,11 +3286,11 @@ ;;;;;;;;;;;;;;; (deftype display-env (structure) - ((pmode uint64 :offset-assert 0) - (smode2 uint64 :offset-assert 8) - (dspfb uint64 :offset-assert 16) - (display uint64 :offset-assert 24) - (bgcolor uint64 :offset-assert 32) + ((pmode gs-pmode :offset-assert 0) + (smode2 gs-smode2 :offset-assert 8) + (dspfb gs-display-fb :offset-assert 16) + (display gs-display :offset-assert 24) + (bgcolor gs-bgcolor :offset-assert 32) ) :pack-me :method-count-assert 9 @@ -3409,7 +3371,7 @@ (on-screen int32 :offset-assert 560) (last-screen int32 :offset-assert 564) (frames virtual-frame 6 :inline :offset-assert 568) - (bg-clear-color uint32 4 :offset-assert 760) + (bg-clear-color rgba 4 :offset-assert 760) (real-frame-counter uint64 :offset-assert 776) (base-frame-counter uint64 :offset-assert 784) (game-frame-counter uint64 :offset-assert 792) @@ -3671,13 +3633,16 @@ ;; texture-h ;;;;;;;;;;;;;; -;; texture-h +(define-extern *texture-enable-user-menu* int) +(define-extern *texture-enable-user* int) + (deftype texture-id (uint32) - () + ((index uint16 :offset 8 :size 12) + (page uint16 :offset 20 :size 12) + ) :method-count-assert 9 :size-assert #x4 :flag-assert #x900000004 - ;; likely a bitfield type ) (deftype texture-pool-segment (structure) @@ -3785,6 +3750,13 @@ ) ) +(deftype shader-ptr (uint32) + () + :method-count-assert 9 + :size-assert #x4 + :flag-assert #x900000004 + ) + ;; texture-h (deftype texture-link (structure) ((next uint32 :offset-assert 0) @@ -3806,6 +3778,15 @@ :flag-assert #x90000000c ) +;; texture-h +(deftype texture-page-dir (basic) + ((pad uint8 #x10)) + (:methods + (dummy-9 () none 9) + ) + :flag-assert #xa00000014 + ) + ;; texture-h (deftype texture-relocate-later (basic) ((memcpy basic :offset-assert 4) @@ -3820,12 +3801,13 @@ :flag-assert #x90000001c ) +(define-extern *texture-page-dir* texture-page-dir) + ;; texture-h (deftype adgif-shader (structure) - ( - ;;(quad UNKNOWN 5 :offset-assert 0) - ;;(prims UNKNOWN 10 :offset-assert 0) - (tex0 uint64 :offset-assert 0) + ((quad uint128 5 :offset 0) + (prims uint64 10 :offset 0) + (tex0 uint64 :offset 0) (tex1 uint64 :offset 16) (miptbp1 uint64 :offset 32) (clamp uint64 :offset 48) @@ -3834,7 +3816,6 @@ (link-test uint32 :offset 8) (texture-id uint32 :offset 24) (next uint32 :offset 40) - (_pad uint64) ) :method-count-assert 9 :size-assert #x50 @@ -3851,6 +3832,19 @@ (define-extern *texture-relocate-later* texture-relocate-later) +(define-extern *sky-base-vram-word* int) +(define-extern *sky-base-block* int) +(define-extern *sky-base-page* int) +(define-extern *depth-cue-base-vram-word* int) +(define-extern *depth-cue-base-block* int) +(define-extern *depth-cue-base-page* int) +(define-extern *eyes-base-vram-word* int) +(define-extern *eyes-base-block* int) +(define-extern *eyes-base-page* int) +(define-extern *ocean-base-vram-word* int) +(define-extern *ocean-base-block* int) +(define-extern *ocean-base-page* int) + ;;;;;;;;;;;;;; ;; level-h ;;;;;;;;;;;;;; diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index eb284df904..e723b5958e 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -199,18 +199,6 @@ ["L17", "font-work", true] ], - "display": [ - ["L47", "float", true], - ["L42", "float", true], - ["L43", "float", true], - ["L44", "float", true], - ["L45", "float", true], - ["L48", "float", true], - ["L46", "float", true], - ["L50", "float", true], - ["L49", "float", true] - ], - "text-h": [["L2", "_auto_", true]], "font-h": [ diff --git a/goal_src/engine/gfx/hw/display-h.gc b/goal_src/engine/gfx/hw/display-h.gc index b1da53dd30..d8ccb92dcf 100644 --- a/goal_src/engine/gfx/hw/display-h.gc +++ b/goal_src/engine/gfx/hw/display-h.gc @@ -6,11 +6,11 @@ ;; dgos: GAME, ENGINE (deftype display-env (structure) - ((pmode uint64 :offset-assert 0) - (smode2 uint64 :offset-assert 8) - (dspfb uint64 :offset-assert 16) - (display uint64 :offset-assert 24) - (bgcolor uint64 :offset-assert 32) + ((pmode gs-pmode :offset-assert 0) + (smode2 gs-smode2 :offset-assert 8) + (dspfb gs-display-fb :offset-assert 16) + (display gs-display :offset-assert 24) + (bgcolor gs-bgcolor :offset-assert 32) ) :pack-me :method-count-assert 9 @@ -107,7 +107,7 @@ (on-screen int32 :offset-assert 560) (last-screen int32 :offset-assert 564) (frames virtual-frame 6 :inline :offset-assert 568) - (bg-clear-color uint32 4 :offset-assert 760) + (bg-clear-color rgba 4 :offset-assert 760) (real-frame-counter uint64 :offset-assert 776) (base-frame-counter uint64 :offset-assert 784) (game-frame-counter uint64 :offset-assert 792) @@ -179,10 +179,10 @@ (set! (-> obj frames 4 frame) (-> obj frames 0 frame)) (set! (-> obj frames 5 frame) (-> obj frames 1 frame)) (default-buffer-init *default-regs-buffer*) - (set! (-> obj bg-clear-color 0) #x80808080) - (set! (-> obj bg-clear-color 1) #x80808080) - (set! (-> obj bg-clear-color 2) #x80808080) - (set! (-> obj bg-clear-color 3) #x80808080) + (set! (-> obj bg-clear-color 0) (new-rgba #x80 #x80 #x80 #x80)) + (set! (-> obj bg-clear-color 1) (new-rgba #x80 #x80 #x80 #x80)) + (set! (-> obj bg-clear-color 2) (new-rgba #x80 #x80 #x80 #x80)) + (set! (-> obj bg-clear-color 3) (new-rgba #x80 #x80 #x80 #x80)) obj ) diff --git a/goal_src/engine/gfx/texture-h.gc b/goal_src/engine/gfx/texture-h.gc index fcc8bd9287..5e1e70e4a9 100644 --- a/goal_src/engine/gfx/texture-h.gc +++ b/goal_src/engine/gfx/texture-h.gc @@ -7,32 +7,20 @@ ;; mask for different texture things. ;; these are the ones that will be displayed in the menu -(define *texture-enable-user-menu* 31) +(define *texture-enable-user-menu* #x1f) ;; enabled textures. (define *texture-enable-user* 0) (deftype texture-id (uint32) - () + ((index uint16 :offset 8 :size 12) + (page uint16 :offset 20 :size 12) + ) :method-count-assert 9 :size-assert #x4 :flag-assert #x900000004 ) -(defmethod inspect texture-id ((obj texture-id)) - (format #t "[~8x] ~A~%" obj 'texture-id) - (format #t "~Tindex: ~D~%" (shr (shl (the-as int obj) 44) 52)) - - ;; you aren't supposed to do this. - (format #t "~Tpage: ~D~%" (shr (logand #xffffffff obj) 20)) - ;; (set! t9-2 format) - ;; (set! a0-3 '#t) - ;; (set! a1-2 "~Tpage: ~D~%") - ;; (.srl a2-2 obj 20) - ;; (t9-2 a0-3 a1-2 a2-2) - obj - ) - (deftype texture-pool-segment (structure) ((dest uint32 :offset-assert 0) (size uint32 :offset-assert 4) @@ -185,13 +173,12 @@ (define *texture-relocate-later* (new 'global 'texture-relocate-later)) (set! (-> *texture-relocate-later* memcpy) #f) -(define *texture-page-dir* #f) +(define *texture-page-dir* (the texture-page-dir #f)) (deftype adgif-shader (structure) - ( - ;;(quad UNKNOWN 5 :offset-assert 0) - ;;(prims UNKNOWN 10 :offset-assert 0) - (tex0 uint64 :offset-assert 0) + ((quad uint128 5 :offset 0) + (prims uint64 10 :offset 0) + (tex0 uint64 :offset 0) (tex1 uint64 :offset 16) (miptbp1 uint64 :offset 32) (clamp uint64 :offset 48) @@ -200,7 +187,6 @@ (link-test uint32 :offset 8) (texture-id uint32 :offset 24) (next uint32 :offset 40) - (_pad uint64) ) :method-count-assert 9 :size-assert #x50 diff --git a/goal_src/engine/math/math.gc b/goal_src/engine/math/math.gc index e10710c803..77dada6210 100644 --- a/goal_src/engine/math/math.gc +++ b/goal_src/engine/math/math.gc @@ -47,8 +47,6 @@ ;;;; bitfield types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; TODO: verify these are in the right order. -;; maybe used in timer-h for the color field of profile-frame? (deftype rgba (uint32) ((r uint8 :offset 0) (g uint8 :offset 8) @@ -58,6 +56,12 @@ :flag-assert #x900000004 ) +(defmacro new-rgba (r g b a) + "Macro for making a new rgba in static space" + + `(new 'static 'rgba :r ,r :g ,g :b ,b :a ,a) + ) + ;; TODO: fields (deftype xyzw (uint128) () diff --git a/goal_src/engine/ps2/timer-h.gc b/goal_src/engine/ps2/timer-h.gc index 0aecd8206d..a98e9be119 100644 --- a/goal_src/engine/ps2/timer-h.gc +++ b/goal_src/engine/ps2/timer-h.gc @@ -92,10 +92,7 @@ (deftype profile-frame (structure) ((name basic :offset-assert 0) (time-stamp uint32 :offset-assert 4) - (color uint32 :offset-assert 8) - (r uint8 :offset 8) ;; TODO : verify colors - (g uint8 :offset 9) ;; TODO (again) : these are actually bitfields - (b uint8 :offset 10) + (color rgba :offset-assert 8) ) :method-count-assert 9 :size-assert #xc @@ -107,7 +104,7 @@ (format #t "[~8x] profile-frame~%" this-frame) (format #t "~Tname: ~A~%" (-> this-frame name)) (format #t "~Ttime-stamp: ~D~%" (-> this-frame time-stamp)) - (format #t "~Tcolor: ~D ~D ~D~%" (-> this-frame r) (-> this-frame g) (-> this-frame b)) + (format #t "~Tcolor: ~D ~D ~D~%" (-> this-frame color r) (-> this-frame color g) (-> this-frame color b)) ) obj ) @@ -122,7 +119,7 @@ :size-assert #x4010 :flag-assert #xe00004010 (:methods - (get-last-frame-time-stamp (profile-bar) uint 9) + (get-last-frame-time-stamp (_type_) uint 9) (dummy-10 () none 10) (dummy-11 () none 11) (dummy-12 () none 12)