jak-project/goal_src/engine/gfx/time-of-day-h.gc
Tyler Wilding 1c7c2132eb
decomp: weather-part (#798)
* stash

* decomp: finish what is currently possible in `time-of-day`

* need to know how sp-field-init-spec's functions are called

* solved some issues, but going to be blocked by the sparticle-group-item

* decompiler: Add support for `sparticle-launch-group` from static data

* decomp: finish `weather-part`
2021-08-31 21:36:19 -04:00

117 lines
4.2 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: time-of-day-h.gc
;; name in dgo: time-of-day-h
;; dgos: GAME, ENGINE
(deftype palette-fade-control (structure)
((trans vector :inline :offset-assert 0)
(fade float :offset-assert 16)
(actor-dist float :offset-assert 20)
)
:method-count-assert 9
:size-assert #x18
:flag-assert #x900000018
)
(deftype palette-fade-controls (basic)
((control palette-fade-control 8 :inline :offset-assert 16)
)
:method-count-assert 11
:size-assert #x110
:flag-assert #xb00000110
(:methods
(reset! (_type_) symbol 9)
(TODO-RENAME-10 (_type_ int float float vector) object 10) ; returns float or error string
)
)
(define-perm *palette-fade-controls* palette-fade-controls
(new 'global 'palette-fade-controls)
)
(declare-type sparticle-launch-control basic)
(deftype time-of-day-proc (process)
((year int32 :offset-assert 112)
(month int32 :offset-assert 116)
(week int32 :offset-assert 120)
(day int32 :offset-assert 124)
(hour int32 :offset-assert 128)
(minute int32 :offset-assert 132)
(second int32 :offset-assert 136)
(frame int32 :offset-assert 140)
(time-of-day float :offset-assert 144)
(time-ratio float :offset-assert 148)
(star-count int32 :offset-assert 152)
(stars sparticle-launch-control :offset-assert 156)
(sun-count int32 :offset-assert 160)
(sun sparticle-launch-control :offset-assert 164)
(green-sun-count int32 :offset-assert 168)
(green-sun sparticle-launch-control :offset-assert 172)
(moon-count int32 :offset-assert 176)
(moon sparticle-launch-control :offset-assert 180)
)
:heap-base #x50
:method-count-assert 14
:size-assert #xb8
:flag-assert #xe005000b8
)
(deftype time-of-day-palette (basic)
((width int32 :offset-assert 4)
(height int32 :offset-assert 8)
(pad int32 :offset-assert 12)
(data int32 1 :offset-assert 16)
)
:method-count-assert 9
:size-assert #x14
:flag-assert #x900000014
)
(deftype time-of-day-context (basic)
((active-count uint32 :offset-assert 4)
(interp float :offset-assert 8)
(current-interp float :offset-assert 12)
(moods uint64 2 :offset-assert 16)
(current-fog mood-fog :inline :offset-assert 32)
(current-sun mood-sun :inline :offset-assert 80)
(current-prt-color vector :inline :offset-assert 112)
(current-shadow vector :inline :offset-assert 128)
(current-shadow-color vector :inline :offset-assert 144)
(light-group light-group 9 :inline :offset-assert 160)
(title-light-group light-group :inline :offset-assert 1888)
(time float :offset-assert 2080)
(target-interp float :offset-assert 2084)
(erase-color uint32 :offset-assert 2088)
(num-stars float :offset-assert 2092)
(light-masks-0 uint8 2 :offset-assert 2096)
(light-masks-1 uint8 2 :offset-assert 2098)
(light-interp uint32 2 :offset-assert 2100)
(sky symbol :offset-assert 2108)
(sun-fade float :offset-assert 2112)
(title-updated symbol :offset-assert 2116)
)
:method-count-assert 9
:size-assert #x848
:flag-assert #x900000848
)
(deftype time-of-day-dma (structure)
((outa uint32 256 :offset-assert 0)
(outb uint32 256 :offset-assert 1024)
(banka uint32 256 :offset-assert 2048)
(bankb uint32 256 :offset-assert 3072)
)
:method-count-assert 9
:size-assert #x1000
:flag-assert #x900001000
)
(define *time-of-day-mode* 8) ;; flags? enum?
(define *time-of-day-context* (new 'static 'time-of-day-context))
;; TODO for mood
(define-extern *time-of-day-proc* (pointer time-of-day-proc))