decomp: generic (#611)

* decomp: Fix casting issue with uint64's from static data

* decomp: `generic`

* add forward declaration

Co-authored-by: water111 <48171810+water111@users.noreply.github.com>
This commit is contained in:
Tyler Wilding
2021-06-20 16:02:15 -04:00
committed by GitHub
parent 4f8403d8e6
commit 87961bdb3b
11 changed files with 328 additions and 20 deletions
@@ -264,7 +264,7 @@
(defun clear-vu0-mem ()
(let ((v1-0 (the-as (pointer uint32) #x11004000)))
(dotimes (a0-0 1024)
(set! (-> v1-0 a0-0) #xabadbeef)
(set! (-> v1-0 a0-0) (the-as uint #xabadbeef))
)
)
(let ((v0-0 0))
@@ -277,7 +277,7 @@
(defun clear-vu1-mem ()
(let ((v1-0 (the-as (pointer uint32) #x1100c000)))
(dotimes (a0-0 4096)
(set! (-> v1-0 a0-0) #xabadbeef)
(set! (-> v1-0 a0-0) (the-as uint #xabadbeef))
)
)
(let ((v0-0 0))
@@ -100,7 +100,3 @@
(defun get-aspect-ratio ()
(-> *setting-control* current aspect-ratio)
)
@@ -0,0 +1,151 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol *generic-foreground-sinks*, type (array generic-dma-foreground-sink)
(define
*generic-foreground-sinks*
(the-as (array generic-dma-foreground-sink)
(new
'static
'boxed-array
:type generic-dma-foreground-sink :length 0 :allocated-length 9
)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 0)
(the-as
generic-dma-foreground-sink
(-> *level* level0 foreground-sink-group 0 merc-sink)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 1)
(the-as
generic-dma-foreground-sink
(-> *level* level0 foreground-sink-group 1 merc-sink)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 2)
(the-as
generic-dma-foreground-sink
(-> *level* level1 foreground-sink-group 0 merc-sink)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 3)
(the-as
generic-dma-foreground-sink
(-> *level* level1 foreground-sink-group 1 merc-sink)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 4)
(the-as
generic-dma-foreground-sink
(-> *level* level-default foreground-sink-group 0 merc-sink)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 5)
(the-as
generic-dma-foreground-sink
(-> *level* level-default foreground-sink-group 1 merc-sink)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 6)
(new 'static 'generic-dma-foreground-sink :bucket 30)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 7)
(the-as
generic-dma-foreground-sink
(-> *level* level0 foreground-sink-group 2 merc-sink)
)
)
;; failed to figure out what this is:
(set!
(-> *generic-foreground-sinks* 8)
(the-as
generic-dma-foreground-sink
(-> *level* level1 foreground-sink-group 2 merc-sink)
)
)
;; definition for function generic-dma-foreground-sink-init
;; INFO: Return type mismatch int vs none.
(defun generic-dma-foreground-sink-init ((arg0 generic-dma-foreground-sink))
(set! (-> arg0 state gifbuf-adr) (the-as uint 837))
(set! (-> arg0 state inbuf-adr) (the-as uint 9))
(none)
)
;; definition for function generic-init-buffers
(defun generic-init-buffers ()
(vu-lights-default! *default-lights*)
(let ((gp-0 #x10001c0)
(s5-0 (the-as uint #x1010001c0))
)
(dotimes (s4-0 9)
(let ((s1-0 (-> *generic-foreground-sinks* s4-0)))
(when s1-0
(let* ((s3-0 (-> s1-0 bucket))
(s0-0
(-> *display* frames (-> *display* on-screen) frame global-buf)
)
(s2-0 (-> s0-0 base))
)
(if (>= s4-0 7)
(generic-init-buf s0-0 1 s5-0)
(generic-init-buf s0-0 1 (the-as uint gp-0))
)
(generic-dma-foreground-sink-init s1-0)
(let ((a3-0 (-> s0-0 base)))
(let ((packet (the-as dma-packet (-> s0-0 base))))
(set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> packet vif0) (new 'static 'vif-tag))
(set! (-> packet vif1) (new 'static 'vif-tag))
(set! (-> s0-0 base) (&+ (the-as pointer packet) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
s3-0
s2-0
(the-as (pointer dma-tag) a3-0)
)
)
)
)
)
)
)
#f
)
;; definition for function generic-sink
(defun generic-sink ((arg0 int))
(-> *generic-foreground-sinks* arg0)
)
@@ -410,7 +410,7 @@
;; INFO: Return type mismatch int vs none.
(defun destroy-mem ((arg0 (pointer uint32)) (arg1 (pointer uint32)))
(while (< (the-as int arg0) (the-as int arg1))
(set! (-> arg0 0) #xffffffff)
(set! (-> arg0 0) (the-as uint #xffffffff))
(set! arg0 (&-> arg0 1))
)
(let ((v0-0 0))
@@ -160,7 +160,10 @@
;; definition for method 5 of type type
;; INFO: Return type mismatch uint vs int.
(defmethod asize-of type ((obj type))
(the-as int (logand #xfffffff0 (+ (* (-> obj allocated-length) 4) 43)))
(the-as
int
(logand (the-as uint #xfffffff0) (+ (* (-> obj allocated-length) 4) 43))
)
)
;; definition for function basic-type?