mirror of
https://github.com/open-goal/jak-project
synced 2026-09-02 10:11:44 -04:00
decomp3: font-h, display, profile, settings-h, camera-defs-h, text-h (#3335)
This commit is contained in:
+226
-110
@@ -3984,6 +3984,8 @@
|
||||
(bucket582 582)
|
||||
(bucket583 583)
|
||||
(debug-no-zbuf2 584)
|
||||
(bucket585 585)
|
||||
(bucket586 586)
|
||||
)
|
||||
;; ---vu1-user-h:bucket-id
|
||||
|
||||
@@ -4171,7 +4173,7 @@
|
||||
|
||||
(deftype profile-spec (structure)
|
||||
"Specification for a profile category."
|
||||
((name basic :offset-assert 0)
|
||||
((name symbol :offset-assert 0)
|
||||
(color rgba :offset-assert 4)
|
||||
)
|
||||
:method-count-assert 9
|
||||
@@ -4285,6 +4287,9 @@
|
||||
:method-count-assert 9
|
||||
:size-assert #x28
|
||||
:flag-assert #x900000028
|
||||
(:methods
|
||||
(new (symbol type int) _type_) ;; 0
|
||||
)
|
||||
)
|
||||
|
||||
;; (define-extern dma-buffer-inplace-new function) ;; (function dma-buffer int dma-buffer)
|
||||
@@ -5447,7 +5452,7 @@
|
||||
(vu1-enable-user-menu vu1-renderer-mask :offset-assert 176) ;; vu1-renderer-mask
|
||||
(force-sync uint32 :offset-assert 184)
|
||||
(mem-reserve-size uint32 :offset-assert 188)
|
||||
(dma-buffer-overflow basic :offset-assert 192)
|
||||
(dma-buffer-overflow symbol :offset-assert 192)
|
||||
)
|
||||
:method-count-assert 10
|
||||
:size-assert #xc4
|
||||
@@ -7758,19 +7763,81 @@
|
||||
;; font-h ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
;; +++font-h:font-flags
|
||||
(defenum font-flags
|
||||
:type uint32
|
||||
:bitfield #t
|
||||
(shadow 0)
|
||||
(kerning 1)
|
||||
(middle 2)
|
||||
(middle-vert 3)
|
||||
(right 4)
|
||||
(large 5)
|
||||
(pc-hack 6)
|
||||
)
|
||||
;; ---font-h:font-flags
|
||||
|
||||
;; +++font-h:font-color
|
||||
(defenum font-color
|
||||
:type uint32
|
||||
(default 0)
|
||||
(white 1)
|
||||
(transparent 2)
|
||||
(red 3)
|
||||
(orange 4)
|
||||
(yellow 5)
|
||||
(green 6)
|
||||
(blue 7)
|
||||
(cyan 8)
|
||||
(pink 9)
|
||||
(menu-selected 10)
|
||||
(menu-selected-parent 11)
|
||||
(menu 12)
|
||||
(menu-parent 13)
|
||||
(menu-func-bad 14)
|
||||
(menu-flag-on 15)
|
||||
(menu-flag-on-parent 16)
|
||||
(menu-flag-off 17)
|
||||
(menu-flag-off-parent 18)
|
||||
(menu-invalid 19)
|
||||
(flat-yellow 20)
|
||||
(font-color-21 21)
|
||||
(pad-back 22)
|
||||
(pad-shine 23)
|
||||
(pad-square 24)
|
||||
(pad-circle 25)
|
||||
(pad-triangle 26)
|
||||
(pad-x 27)
|
||||
(progress-old-blue 28)
|
||||
(progress-old-yellow 29)
|
||||
(progress-old-selected 30)
|
||||
(progress-old-percent 31)
|
||||
(font-color-32 32)
|
||||
(font-color-33 33)
|
||||
(font-color-34 34)
|
||||
(font-color-35 35)
|
||||
(font-color-36 36)
|
||||
(font-color-37 37)
|
||||
(font-color-38 38)
|
||||
(font-color-39 39)
|
||||
(font-color-40 40)
|
||||
(font-color-41 41)
|
||||
(font-color-42 42)
|
||||
(font-color-43 43)
|
||||
(font-color-44 44)
|
||||
)
|
||||
;; ---font-h:font-color
|
||||
|
||||
(deftype char-verts (structure)
|
||||
((pos vector 4 :offset-assert 0) ;; guessed by decompiler
|
||||
(color vector 4 :offset-assert 64) ;; guessed by decompiler
|
||||
(tex-st vector 4 :offset-assert 128) ;; guessed by decompiler
|
||||
((pos vector 4 :inline :offset-assert 0) ;; guessed by decompiler
|
||||
(color vector 4 :inline :offset-assert 64) ;; guessed by decompiler
|
||||
(tex-st vector 4 :inline :offset-assert 128) ;; guessed by decompiler
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #xc0
|
||||
:flag-assert #x9000000c0
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype char-color (structure)
|
||||
((color rgba 4 :offset-assert 0) ;; guessed by decompiler
|
||||
)
|
||||
@@ -7778,9 +7845,7 @@
|
||||
:size-assert #x10
|
||||
:flag-assert #x900000010
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype font-context (basic)
|
||||
((origin vector :inline :offset-assert 16)
|
||||
(strip-gif vector :inline :offset-assert 32)
|
||||
@@ -7799,24 +7864,22 @@
|
||||
:size-assert #x58
|
||||
:flag-assert #x1500000058
|
||||
(:methods
|
||||
(new (symbol type) _type_) ;; 0 ;; (new (symbol type matrix int int float font-color font-flags) _type_)
|
||||
(font-context-method-9 () none) ;; 9 ;; (set-mat! (font-context matrix) font-context)
|
||||
(font-context-method-10 () none) ;; 10 ;; (set-origin! (font-context int int) font-context)
|
||||
(font-context-method-11 () none) ;; 11 ;; (set-depth! (font-context int) font-context)
|
||||
(font-context-method-12 () none) ;; 12 ;; (set-w! (font-context float) font-context)
|
||||
(font-context-method-13 () none) ;; 13 ;; (set-width! (font-context int) font-context)
|
||||
(font-context-method-14 () none) ;; 14 ;; (set-height! (font-context int) font-context)
|
||||
(font-context-method-15 () none) ;; 15 ;; (set-projection! (font-context float) font-context)
|
||||
(font-context-method-16 () none) ;; 16 ;; (set-color! (font-context font-color) font-context)
|
||||
(font-context-method-17 () none) ;; 17 ;; (set-flags! (font-context font-flags) font-context)
|
||||
(font-context-method-18 () none) ;; 18 ;; (set-start-line! (font-context uint) font-context)
|
||||
(font-context-method-19 () none) ;; 19 ;; (set-scale! (font-context float) font-context)
|
||||
(font-context-method-20 () none) ;; 20 ;; (set-alpha! (font-context float) font-context)
|
||||
(new (symbol type matrix int int float font-color font-flags) _type_) ;; 0
|
||||
(set-mat! (font-context matrix) font-context) ;; 9
|
||||
(set-origin! (font-context int int) font-context) ;; 10
|
||||
(set-depth! (font-context int) font-context) ;; 11
|
||||
(set-w! (font-context float) font-context) ;; 12
|
||||
(set-width! (font-context int) font-context) ;; 13
|
||||
(set-height! (font-context int) font-context) ;; 14
|
||||
(set-projection! (font-context float) font-context) ;; 15
|
||||
(set-color! (font-context font-color) font-context) ;; 16
|
||||
(set-flags! (font-context font-flags) font-context) ;; 17
|
||||
(set-start-line! (font-context uint) font-context) ;; 18
|
||||
(set-scale! (font-context float) font-context) ;; 19
|
||||
(set-alpha! (font-context float) font-context) ;; 20
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype font-work (structure)
|
||||
((font-tmpl dma-gif-packet :inline :offset-assert 0)
|
||||
(char-tmpl dma-gif-packet :inline :offset-assert 32)
|
||||
@@ -7846,14 +7909,14 @@
|
||||
(size-st2 vector :inline :offset-assert 432)
|
||||
(size-st3 vector :inline :offset-assert 448)
|
||||
(save vector :inline :offset-assert 464)
|
||||
(save-color vector 4 :offset-assert 480) ;; guessed by decompiler
|
||||
(character-save-color UNKNOWN 4 :offset-assert 544)
|
||||
(save-color vector 4 :inline :offset-assert 480) ;; guessed by decompiler
|
||||
(character-save-color vector 4 :inline :offset-assert 544)
|
||||
(current-verts char-verts :inline :offset-assert 608)
|
||||
(src-verts char-verts :inline :offset-assert 800)
|
||||
(dest-verts char-verts :inline :offset-assert 992)
|
||||
(justify vector 64 :offset-assert 1184) ;; guessed by decompiler
|
||||
(justify vector 64 :inline :offset-assert 1184) ;; guessed by decompiler
|
||||
(color-shadow vector4w :inline :offset-assert 2208)
|
||||
(color-table char-color 45 :offset-assert 2224) ;; guessed by decompiler
|
||||
(color-table char-color 45 :inline :offset-assert 2224) ;; guessed by decompiler
|
||||
(current-font-0-tmpl uint64 2 :offset-assert 2944) ;; guessed by decompiler
|
||||
(current-font-1-tmpl uint64 2 :offset-assert 2960) ;; guessed by decompiler
|
||||
(current-font-2-tmpl uint64 2 :offset-assert 2976) ;; guessed by decompiler
|
||||
@@ -7873,12 +7936,11 @@
|
||||
(font-work-method-9 () none) ;; 9
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern *font-default-matrix* object) ;; matrix
|
||||
;; (define-extern *font-work* object) ;; font-work
|
||||
;; (define-extern font-set-tex0 function) ;; (function (pointer gs-tex0) texture int int int none)
|
||||
;; (define-extern set-font-color function) ;; (function font-color int rgba rgba rgba int)
|
||||
(define-extern *font-default-matrix* matrix)
|
||||
(define-extern *font-work* font-work)
|
||||
(define-extern font-set-tex0 (function (pointer gs-tex0) texture int int int none))
|
||||
(define-extern set-font-color (function font-color int rgba rgba rgba int))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; decomp-h ;;
|
||||
@@ -8031,8 +8093,8 @@
|
||||
;; profile ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype profile-work (structure)
|
||||
"DMA templates for profile drawing."
|
||||
((sprite-tmpl dma-gif-packet :inline :offset-assert 0)
|
||||
(line-tmpl dma-gif-packet :inline :offset-assert 32)
|
||||
(last-index int32 :offset-assert 64)
|
||||
@@ -8041,40 +8103,47 @@
|
||||
:size-assert #x44
|
||||
:flag-assert #x900000044
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern *profile-spec-array* object)
|
||||
;; (define-extern *profile-translate-array* object)
|
||||
;; (define-extern *profile-work* object) ;; profile-work
|
||||
;; (define-extern *profile-x* object) ;; int
|
||||
;; (define-extern *profile-y* object) ;; int
|
||||
;; (define-extern *profile-w* object) ;; int
|
||||
;; (define-extern *profile-h* object) ;; int
|
||||
;; (define-extern *profile-ticks* object) ;; symbol
|
||||
(define-extern *profile-spec-array* (inline-array profile-spec))
|
||||
(define-extern *profile-translate-array* (pointer uint64))
|
||||
(define-extern *profile-work* profile-work)
|
||||
(define-extern *profile-x* int)
|
||||
(define-extern *profile-y* int)
|
||||
(define-extern *profile-w* int)
|
||||
(define-extern *profile-h* int)
|
||||
(define-extern *profile-ticks* symbol)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; display ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define-extern get-current-time (function time-frame))
|
||||
(define-extern get-integral-current-time (function time-frame))
|
||||
(define-extern get-current-time "Get the base-clock time." (function time-frame))
|
||||
(define-extern get-integral-current-time "Get the number of frames that have happened." (function time-frame))
|
||||
(define-extern get-real-current-time (function time-frame))
|
||||
(define-extern set-display (function display display))
|
||||
;; (define-extern allocate-dma-buffers function) ;; (function display display)
|
||||
;; (define-extern *font-context* object) ;; font-context
|
||||
;; (define-extern draw-sprite2d-xy function) ;; (function dma-buffer int int int int rgba none)
|
||||
;; (define-extern draw-sprite2d-xy-absolute function) ;; (function dma-buffer int int int int rgba none)
|
||||
;; (define-extern draw-quad2d function) ;; (function dma-buffer draw-context none)
|
||||
;; (define-extern screen-gradient function) ;; (function dma-buffer rgba rgba rgba rgba none)
|
||||
;; (define-extern vif1-handler-debug function) ;; (function int none)
|
||||
;; (define-extern vif1-handler function) ;; (function none)
|
||||
;; (define-extern vblank-handler function) ;; (function int)
|
||||
;; (define-extern set-display-gs-state function) ;; (function dma-buffer int int int int int dma-buffer)
|
||||
;; (define-extern set-display-gs-state-offset function) ;; (function dma-buffer int int int int int int int dma-buffer)
|
||||
;; (define-extern reset-display-gs-state function) ;; (function display dma-buffer display)
|
||||
;; (define-extern *vu0-dma-list* object) ;; dma-buffer
|
||||
(define-extern set-display "Allocate and initialize clocks for the display." (function display display))
|
||||
(define-extern allocate-dma-buffers "Allocate the main, debug, and calc dma buffers." (function display display))
|
||||
(define-extern *font-context* font-context)
|
||||
(define-extern draw-sprite2d-xy "Draw a sprite primitive with the given color and dimensions." (function dma-buffer int int int int rgba int none))
|
||||
(define-extern draw-sprite2d-xy-absolute
|
||||
"Draw a sprite primitive, setting the gs-xzyf register to exactly the values specified (no offset/clamp)."
|
||||
(function dma-buffer int int int int rgba int none))
|
||||
(define-extern draw-quad2d "Draw a quad that fills the entire context." (function dma-buffer draw-context none))
|
||||
(define-extern screen-gradient "Fill the screen with a sprite with the given colors." (function dma-buffer rgba rgba rgba rgba none))
|
||||
(define-extern vif1-handler-debug
|
||||
"Handle the VIF1 interrupt.
|
||||
The mark register of VIF will be set to the bucket that is now starting."
|
||||
(function int none))
|
||||
(define-extern vif1-handler (function none))
|
||||
(define-extern vblank-handler "Record the time of the last two vblanks." (function int))
|
||||
(define-extern set-display-gs-state (function dma-buffer int int int int int dma-buffer))
|
||||
(define-extern set-display-gs-state-offset (function dma-buffer int int int int int int int dma-buffer))
|
||||
(define-extern reset-display-gs-state (function display dma-buffer display))
|
||||
(define-extern *vu0-dma-list* dma-buffer)
|
||||
(define-extern *display* display)
|
||||
|
||||
;; from kernel
|
||||
(define-extern install-handler (function int function int))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; connect ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -9167,7 +9236,6 @@
|
||||
)
|
||||
;; ---text-h:text-id
|
||||
|
||||
#|
|
||||
(deftype game-text (structure)
|
||||
((id text-id :offset-assert 0) ;; guessed by decompiler
|
||||
(text string :offset-assert 4) ;; guessed by decompiler
|
||||
@@ -9176,9 +9244,7 @@
|
||||
:size-assert #x8
|
||||
:flag-assert #x900000008
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype game-text-info (basic)
|
||||
((length int32 :offset-assert 4)
|
||||
(language-id int32 :offset-assert 8)
|
||||
@@ -9189,39 +9255,35 @@
|
||||
:size-assert #x10
|
||||
:flag-assert #xa00000010
|
||||
(:methods
|
||||
(game-text-info-method-9 () none) ;; 9 ;; (lookup-text! (_type_ text-id symbol) string)
|
||||
(lookup-text! (_type_ text-id symbol) string) ;; 9
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern *text-group-names* array) ;; (array string)
|
||||
;; (define-extern *common-text-heap* object) ;; kheap
|
||||
;; (define-extern *common-text* object) ;; game-text-info
|
||||
(define-extern *text-group-names* (array string))
|
||||
(define-extern *common-text-heap* kheap)
|
||||
(define-extern *common-text* game-text-info)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; camera-defs-h ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype camera-bank (basic)
|
||||
((collide-move-rad float :offset-assert 4)
|
||||
(joypad uint32 :offset-assert 8)
|
||||
(min-detectable-velocity float :offset-assert 12)
|
||||
(attack-timeout uint64 :offset-assert 16) ;; time-frame
|
||||
(attack-timeout time-frame :offset-assert 16) ;; time-frame
|
||||
(default-string-max-y meters :offset-assert 24)
|
||||
(default-string-min-y meters :offset-assert 28)
|
||||
(default-string-max-z meters :offset-assert 32)
|
||||
(default-string-min-z meters :offset-assert 36)
|
||||
(default-string-push-z meters :offset-assert 40)
|
||||
(default-tilt-adjust deg :offset-assert 44) ;; degrees
|
||||
(default-tilt-adjust degrees :offset-assert 44) ;; degrees
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x30
|
||||
:flag-assert #x900000030
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype camera-master-bank (basic)
|
||||
((onscreen-head-height meters :offset-assert 4)
|
||||
(onscreen-foot-height meters :offset-assert 8)
|
||||
@@ -9236,10 +9298,9 @@
|
||||
:size-assert #x24
|
||||
:flag-assert #x900000024
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern *CAMERA-bank* camera-bank) ;; camera-bank
|
||||
;; (define-extern *CAMERA_MASTER-bank* camera-master-bank) ;; camera-master-bank
|
||||
(define-extern *CAMERA-bank* camera-bank)
|
||||
(define-extern *CAMERA_MASTER-bank* camera-master-bank)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; trail-h ;;
|
||||
@@ -9718,15 +9779,19 @@
|
||||
;; settings-h ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; +++settings-h:game-feature
|
||||
(defenum game-feature
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
)
|
||||
;; ---settings-h:game-feature
|
||||
|
||||
;; +++settings-h:game-secrets
|
||||
(defenum game-secrets
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
)
|
||||
;; ---settings-h:game-secrets
|
||||
|
||||
(deftype user-setting-data (structure)
|
||||
((border-mode symbol :offset-assert 0) ;; guessed by decompiler
|
||||
@@ -9849,13 +9914,62 @@
|
||||
)
|
||||
)
|
||||
|
||||
#|
|
||||
;; +++settings-h:cam-slave-options
|
||||
(defenum cam-slave-options
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
(BUTT_CAM)
|
||||
(SAME_SIDE)
|
||||
(MOVE_SPHERICAL)
|
||||
(ALLOW_Z_ROT)
|
||||
(JUMP_PITCHES)
|
||||
(COLLIDE)
|
||||
(FIND_HIDDEN_TARGET)
|
||||
(DRAG)
|
||||
(PLAYER_MOVING_CAMERA)
|
||||
(LINE_OF_SIGHT)
|
||||
(MOVEMENT_BLOCKED)
|
||||
(SHRINK_MAX_ANGLE)
|
||||
(GOTO_GOOD_POINT)
|
||||
(BIKE_MODE)
|
||||
(NO_ROTATE)
|
||||
(STICKY_ANGLE)
|
||||
(BLOCK_RIGHT_STICK)
|
||||
(ALLOW_SHIFT_BUTTONS)
|
||||
(GUN_CAM)
|
||||
(WIDE_FOV)
|
||||
(RAPID_TRACKING)
|
||||
(EASE_SPLINE_IDX)
|
||||
(VERTICAL_FOLLOW_MATCHES_CAMERA)
|
||||
(HAVE_BUTT_HANDLE)
|
||||
(BOMBBOT)
|
||||
(JUMP_LAG)
|
||||
)
|
||||
;; ---settings-h:cam-slave-options
|
||||
|
||||
;; +++settings-h:cam-master-options
|
||||
(defenum cam-master-options
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
(HAVE_TARGET) ;; 1
|
||||
(SET_COMBINER_AXIS) ;; 2
|
||||
(FLIP_COMBINER) ;; 4
|
||||
(HAVE_EASE_TO_POS) ;; 8
|
||||
(IN_BASE_REGION) ;; 10
|
||||
(IGNORE_ANALOG) ;; 20
|
||||
(BLOCK_RIGHT_STICK) ;; 40
|
||||
(USE_L1_R1) ;; 80
|
||||
(READ_BUTTONS)
|
||||
(IMMEDIATE_STRING_MIN_MAX)
|
||||
)
|
||||
;; ---settings-h:cam-master-options
|
||||
|
||||
(deftype cam-setting-data (structure)
|
||||
((fov deg :offset-assert 0) ;; degrees
|
||||
(pov-handle uint64 :offset-assert 16) ;; handle
|
||||
((fov degrees :offset-assert 0) ;; degrees
|
||||
(pov-handle handle :offset 16) ;; handle
|
||||
(pov-bone int32 :offset-assert 24)
|
||||
(pov-offset vector :inline :offset-assert 32)
|
||||
(string-default boolean :offset-assert 48) ;; symbol
|
||||
(string-default symbol :offset-assert 48) ;; symbol
|
||||
(string-max-length meters :offset-assert 52)
|
||||
(string-min-length meters :offset-assert 56)
|
||||
(string-max-height meters :offset-assert 60)
|
||||
@@ -9867,23 +9981,23 @@
|
||||
(gun-min-height meters :offset-assert 84)
|
||||
(string-local-down vector :inline :offset-assert 96)
|
||||
(slave-options cam-slave-options :offset-assert 112)
|
||||
(matrix-blend-max-angle deg :offset-assert 120) ;; degrees
|
||||
(matrix-blend-max-angle degrees :offset-assert 120) ;; degrees
|
||||
(matrix-blend-max-partial float :offset-assert 124)
|
||||
(string-spline-max-move meters :offset-assert 128)
|
||||
(string-spline-accel meters :offset-assert 132)
|
||||
(string-spline-max-move-player meters :offset-assert 136)
|
||||
(string-spline-accel-player meters :offset-assert 140)
|
||||
(string-startup-vector vector :inline :offset-assert 144)
|
||||
(use-string-startup-vector basic :offset-assert 160)
|
||||
(use-string-startup-vector symbol :offset-assert 160)
|
||||
(look-at-point vector :inline :offset-assert 176)
|
||||
(use-look-at-point symbol :offset-assert 192) ;; guessed by decompiler
|
||||
(target-height meters :offset-assert 196)
|
||||
(foot-offset meters :offset-assert 200)
|
||||
(head-offset meters :offset-assert 204)
|
||||
(teleport-on-entity-change boolean :offset-assert 208) ;; symbol
|
||||
(teleport-on-entity-change symbol :offset-assert 208) ;; symbol
|
||||
(entity-name string :offset-assert 212)
|
||||
(cam-slope string :offset-assert 216)
|
||||
(entity-or-mode-changed boolean :offset-assert 220) ;; symbol
|
||||
(entity-or-mode-changed symbol :offset-assert 220) ;; symbol
|
||||
(master-options cam-master-options :offset-assert 224)
|
||||
(entity-mask uint32 :offset-assert 232)
|
||||
(mode-name symbol :offset-assert 236) ;; guessed by decompiler
|
||||
@@ -9893,12 +10007,12 @@
|
||||
(no-intro symbol :offset-assert 252) ;; guessed by decompiler
|
||||
(use-point-of-interest symbol :offset-assert 256) ;; guessed by decompiler
|
||||
(point-of-interest vector :inline :offset-assert 272)
|
||||
(handle-of-interest uint64 :offset-assert 288) ;; handle
|
||||
(handle-of-interest handle :offset-assert 288) ;; handle
|
||||
(mouse-tumble-point vector :inline :offset-assert 304)
|
||||
(use-mouse-tumble-point symbol :offset-assert 320) ;; guessed by decompiler
|
||||
(mouse-input symbol :offset-assert 324) ;; guessed by decompiler
|
||||
(cpad1-skip-buttons symbol :offset-assert 328) ;; guessed by decompiler
|
||||
(butt-handle uint64 :offset-assert 336) ;; handle
|
||||
(butt-handle handle :offset-assert 336) ;; handle
|
||||
(butt-angle float :offset-assert 344)
|
||||
(extra-follow-height float :offset-assert 348)
|
||||
(interp-time-priority uint32 :offset-assert 352)
|
||||
@@ -9906,9 +10020,9 @@
|
||||
(string-min-length-default symbol :offset-assert 360) ;; guessed by decompiler
|
||||
(string-max-height-default symbol :offset-assert 364) ;; guessed by decompiler
|
||||
(string-min-height-default symbol :offset-assert 368) ;; guessed by decompiler
|
||||
(flip-vertical basic :offset-assert 372)
|
||||
(flip-horizontal basic :offset-assert 376)
|
||||
(fov-priority float :offset-assert 384)
|
||||
(flip-vertical symbol :offset-assert 372)
|
||||
(flip-horizontal symbol :offset-assert 376)
|
||||
(fov-priority float :offset 384)
|
||||
(dummy object 98 :offset-assert 388) ;; guessed by decompiler
|
||||
)
|
||||
:method-count-assert 11
|
||||
@@ -9916,13 +10030,11 @@
|
||||
:flag-assert #xb0000030c
|
||||
;; field cam-slave-options is likely a value type. field cam-master-options is likely a value type.
|
||||
(:methods
|
||||
(cam-setting-data-method-9 () none) ;; 9 ;; (cam-setting-data-method-9 (_type_ engine engine-pers engine) _type_)
|
||||
(cam-setting-data-method-10 () none) ;; 10 ;; (cam-setting-data-method-10 (_type_ object (pointer process) float int) _type_)
|
||||
(cam-setting-data-method-9 (_type_ engine engine-pers engine) _type_) ;; 9
|
||||
(cam-setting-data-method-10 (_type_ object (pointer process) float int) _type_) ;; 10
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype setting-control (basic)
|
||||
((user-current user-setting-data :inline :offset-assert 16)
|
||||
(user-target user-setting-data :inline :offset-assert 928)
|
||||
@@ -9933,9 +10045,9 @@
|
||||
(engine engine :offset-assert 5100) ;; guessed by decompiler
|
||||
(engine-pers engine-pers :offset-assert 5104) ;; guessed by decompiler
|
||||
(engine-hi engine :offset-assert 5108) ;; guessed by decompiler
|
||||
(sound-stinger-time uint64 :offset-assert 5112) ;; time-frame
|
||||
(sound-stinger-time time-frame :offset-assert 5112) ;; time-frame
|
||||
(sound-stinger-change-time time-frame 4 :offset-assert 5120) ;; guessed by decompiler
|
||||
(sound-excitement-change-time uint64 :offset-assert 5152) ;; time-frame
|
||||
(sound-excitement-change-time time-frame :offset-assert 5152) ;; time-frame
|
||||
(sound-excitement-targ float :offset-assert 5160)
|
||||
(sound-excitement-level uint32 :offset-assert 5164)
|
||||
)
|
||||
@@ -9943,21 +10055,20 @@
|
||||
:size-assert #x1430
|
||||
:flag-assert #x1400001430
|
||||
(:methods
|
||||
(new (symbol type) _type_) ;; 0 ;; (new (symbol type int) _type_)
|
||||
(setting-control-method-9 () none) ;; 9 ;; (add-setting (_type_ process symbol object object object) none)
|
||||
(setting-control-method-10 () none) ;; 10 ;; (persist-with-delay (_type_ symbol time-frame symbol symbol float int) none)
|
||||
(setting-control-method-11 () none) ;; 11 ;; (set-setting (_type_ process symbol object object object) none)
|
||||
(setting-control-method-12 () none) ;; 12 ;; (remove-setting (_type_ process symbol) none)
|
||||
(setting-control-method-13 () none) ;; 13 ;; (kill-persister (_type_ engine-pers object) none)
|
||||
(setting-control-method-14 () none) ;; 14 ;; (setting-control-method-14 (_type_ object) connectable)
|
||||
(setting-control-method-15 () none) ;; 15 ;; (remove-setting-by-arg0 (_type_ object) none)
|
||||
(setting-control-method-16 () none) ;; 16 ;; (set-setting-by-param (_type_ symbol object object object) connection)
|
||||
(new (symbol type int) _type_) ;; 0
|
||||
(add-setting (_type_ process symbol object object object) none) ;; 9
|
||||
(persist-with-delay (_type_ symbol time-frame symbol symbol float int) none) ;; 10
|
||||
(set-setting (_type_ process symbol object object object) none) ;; 11
|
||||
(remove-setting (_type_ process symbol) none) ;; 12
|
||||
(kill-persister (_type_ engine-pers object) none) ;; 13
|
||||
(setting-control-method-14 (_type_ object) connectable) ;; 14
|
||||
(remove-setting-by-arg0 (_type_ object) none) ;; 15
|
||||
(set-setting-by-param (_type_ symbol object object object) connection) ;; 16
|
||||
(setting-control-method-17 () none) ;; 17 ;; (apply-settings (_type_) user-setting-data)
|
||||
(setting-control-method-18 () none) ;; 18 ;; (update (_type_) user-setting-data)
|
||||
(setting-control-method-19 () none) ;; 19
|
||||
)
|
||||
)
|
||||
|#
|
||||
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -11155,7 +11266,7 @@
|
||||
;; (define-extern *subdivide-foreground-draw-mode* object) ;; subdivide-setting
|
||||
;; (define-extern *subdivide-ocean-draw-mode* object) ;; subdivide-setting
|
||||
;; (define-extern *ocean-height-hack* object) ;; ocean-height-hack
|
||||
;; (define-extern *dproc* object) ;; process
|
||||
(define-extern *dproc* process)
|
||||
;; (define-extern *run* object) ;; symbol
|
||||
;; (define-extern *teleport* object) ;; symbol
|
||||
;; (define-extern *teleport-count* object) ;; int
|
||||
@@ -26871,10 +26982,15 @@
|
||||
;; font ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(deftype draw-string-result (uint64)
|
||||
((length float :offset 0)
|
||||
(b float :offset 32))
|
||||
)
|
||||
|
||||
;; (define-extern draw-string-asm function) ;; (function string dma-buffer font-context draw-string-result)
|
||||
;; (define-extern draw-string function) ;; (function string dma-buffer font-context draw-string-result)
|
||||
;; (define-extern get-string-length function) ;; (function string font-context draw-string-result)
|
||||
;; (define-extern draw-string-xy function) ;; (function string dma-buffer int int font-color font-flags draw-string-result)
|
||||
(define-extern draw-string-xy (function string dma-buffer int int font-color font-flags draw-string-result))
|
||||
;; (define-extern draw-string-adv function) ;; (function string dma-buffer font-context none)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -33802,7 +33918,7 @@
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; (define-extern set-video-mode function) ;; (function symbol none)
|
||||
;; (define-extern get-video-mode function) ;; (function symbol)
|
||||
(define-extern get-video-mode (function symbol))
|
||||
;; (define-extern set-aspect-ratio function) ;; (function symbol none)
|
||||
;; (define-extern get-aspect-ratio function) ;; (function symbol)
|
||||
;; (define-extern set-progressive-scan function) ;; (function symbol none)
|
||||
@@ -33818,8 +33934,8 @@
|
||||
;; (define-extern set-blackout-frames function) ;; (function time-frame none)
|
||||
;; (define-extern blackout function) ;; (function none)
|
||||
;; (define-extern add-blackout function)
|
||||
;; (define-extern paused? function) ;; (function symbol)
|
||||
;; (define-extern movie? function) ;; (function symbol)
|
||||
(define-extern paused? (function symbol))
|
||||
(define-extern movie? (function symbol))
|
||||
;; (define-extern scene-select? function)
|
||||
;; (define-extern demo? function) ;; (function symbol)
|
||||
;; (define-extern kiosk? function)
|
||||
|
||||
@@ -7,5 +7,8 @@
|
||||
[32, "(function process symbol)"],
|
||||
[34, "(function process symbol)"],
|
||||
[36, "(function process symbol)"]
|
||||
],
|
||||
"profile": [
|
||||
[3, "(function profile-segment-array profile-collapse none)"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -34,5 +34,9 @@
|
||||
["L1043", "uint64", true],
|
||||
["L1046", "uint64", true],
|
||||
["L1044", "uint64", true]
|
||||
],
|
||||
"profile": [
|
||||
["L3", "(inline-array profile-spec)", 14],
|
||||
["L2", "(pointer uint64)", 584]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -150,5 +150,52 @@
|
||||
],
|
||||
"(method 9 connection)": [[8, "a0", "pointer"]],
|
||||
"(method 10 connection)": [[8, "a0", "pointer"]],
|
||||
"(method 11 connection)": [[5, "a1", "pointer"]]
|
||||
"(method 11 connection)": [[5, "a1", "pointer"]],
|
||||
"(method 10 profile-array)": [
|
||||
[[69, 73], "a0", "(pointer uint128)"],
|
||||
[[73, 82], "a1", "vector4w"],
|
||||
[[82, 89], "a1", "vector4w"],
|
||||
[[90, 96], "a0", "vector4w"],
|
||||
[[113, 117], "a1", "(pointer uint128)"],
|
||||
[[117, 126], "a2", "vector4w"],
|
||||
[[126, 136], "a2", "vector4w"],
|
||||
[[137, 149], "a1", "vector4w"],
|
||||
[[187, 191], "t2", "(pointer int128)"],
|
||||
[[191, 225], "t4", "vector4w"],
|
||||
[[225, 231], "a2", "vector4w"],
|
||||
[[231, 237], "a2", "vector4w"]
|
||||
],
|
||||
"draw-sprite2d-xy": [
|
||||
[[35, 40], "t0", "dma-packet"],
|
||||
[[45, 49], "t0", "gs-gif-tag"],
|
||||
[54, "t0", "(pointer gs-prim)"],
|
||||
[56, "t0", "(pointer gs-rgbaq)"],
|
||||
[67, "t0", "(pointer gs-xyzf)"],
|
||||
[88, "t0", "(pointer gs-xyzf)"],
|
||||
[[97, 109], "v1", "(pointer uint64)"]
|
||||
],
|
||||
"draw-sprite2d-xy-absolute": [
|
||||
[[6, 10], "t4", "dma-packet"],
|
||||
[[16, 19], "t4", "gs-gif-tag"],
|
||||
[24, "t4", "(pointer gs-prim)"],
|
||||
[25, "t4", "(pointer gs-rgbaq)"],
|
||||
[36, "t4", "(pointer gs-xyzf)"],
|
||||
[49, "t4", "(pointer gs-xyzf)"],
|
||||
[[62, 69], "v1", "(pointer uint64)"]
|
||||
],
|
||||
"draw-quad2d": [
|
||||
[[18, 22], "t2", "dma-packet"],
|
||||
[[28, 31], "t2", "gs-gif-tag"],
|
||||
[36, "t2", "(pointer gs-prim)"],
|
||||
[38, "t2", "(pointer gs-rgbaq)"],
|
||||
[46, "t2", "(pointer gs-xyzf)"],
|
||||
[48, "t2", "(pointer gs-rgbaq)"],
|
||||
[61, "t2", "(pointer gs-xyzf)"],
|
||||
[63, "t2", "(pointer gs-rgbaq)"],
|
||||
[76, "t2", "(pointer gs-xyzf)"],
|
||||
[78, "t2", "(pointer gs-rgbaq)"],
|
||||
[96, "t2", "(pointer gs-xyzf)"],
|
||||
[97, "t2", "(pointer uint64)"],
|
||||
[[110, 117], "v1", "(pointer uint64)"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,3 +7,55 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype camera-bank (basic)
|
||||
((collide-move-rad float)
|
||||
(joypad uint32)
|
||||
(min-detectable-velocity float)
|
||||
(attack-timeout time-frame)
|
||||
(default-string-max-y meters)
|
||||
(default-string-min-y meters)
|
||||
(default-string-max-z meters)
|
||||
(default-string-min-z meters)
|
||||
(default-string-push-z meters)
|
||||
(default-tilt-adjust degrees)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *CAMERA-bank* (new 'static 'camera-bank
|
||||
:collide-move-rad 1638.4
|
||||
:min-detectable-velocity 40.96
|
||||
:attack-timeout (seconds 0.25)
|
||||
:default-string-max-y (meters 3)
|
||||
:default-string-min-y (meters 1)
|
||||
:default-string-max-z (meters 12.5)
|
||||
:default-string-min-z (meters 5)
|
||||
:default-string-push-z (meters 10)
|
||||
:default-tilt-adjust (degrees -6.5000005)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype camera-master-bank (basic)
|
||||
((onscreen-head-height meters)
|
||||
(onscreen-foot-height meters)
|
||||
(target-height meters)
|
||||
(up-move-to-pitch-ratio-in-air float)
|
||||
(down-move-to-pitch-ratio-in-air float)
|
||||
(up-move-to-pitch-on-ground float)
|
||||
(down-move-to-pitch-on-ground float)
|
||||
(pitch-off-blend float)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *CAMERA_MASTER-bank* (new 'static 'camera-master-bank
|
||||
:onscreen-head-height (meters 2.65)
|
||||
:onscreen-foot-height (meters -0.5)
|
||||
:target-height (meters 2.15)
|
||||
:up-move-to-pitch-ratio-in-air 1.0
|
||||
:down-move-to-pitch-ratio-in-air 0.5
|
||||
:up-move-to-pitch-on-ground 0.9
|
||||
:down-move-to-pitch-on-ground 0.9
|
||||
:pitch-off-blend 0.5
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,5 +5,298 @@
|
||||
;; name in dgo: dma-buffer
|
||||
;; dgos: GAME
|
||||
|
||||
(defmacro gs-reg-list (&rest reg-ids)
|
||||
"Generate a giftag register descriptor list from reg-ids."
|
||||
|
||||
(let ((reg-count (length reg-ids)))
|
||||
(when (> (length reg-ids) 16)
|
||||
(ferror "too many regs passed to gs-reg-list")
|
||||
)
|
||||
(let ((list-to-splice '())
|
||||
(cur-lst reg-ids)
|
||||
(i -1))
|
||||
|
||||
;; this is questionable.
|
||||
(while (and (not (null? cur-lst)) (< i 15))
|
||||
(push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '())))
|
||||
(push! list-to-splice (string->symbol-format ":regs{}" (inc! i)))
|
||||
(pop! cur-lst)
|
||||
)
|
||||
|
||||
`(new 'static 'gif-tag-regs
|
||||
,@list-to-splice
|
||||
)
|
||||
)
|
||||
#| ;; the opengoal compiler does not have enough constant propagation for this for now
|
||||
(let ((i -1))
|
||||
|
||||
`(the-as gif-tag-regs (logior ,@(apply (lambda (x)
|
||||
`(shl (the-as uint (gif-reg-id ,x)) ,(* 4 (inc! i)))
|
||||
) reg-ids)
|
||||
))
|
||||
|
||||
)|#
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-base-type (buf pkt dma-type &rest body)
|
||||
"Base macro for adding stuff to a dma-buffer. Don't use this directly!"
|
||||
|
||||
(with-gensyms (dma-buf)
|
||||
`(let* ((,dma-buf ,buf)
|
||||
(,pkt (the-as ,dma-type (-> ,dma-buf base))))
|
||||
|
||||
,@body
|
||||
|
||||
(set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type)))
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-base-data (buf data-type forms)
|
||||
"Base macro for adding data words to a dma-buffer.
|
||||
Each form in forms is converted into data-type and added to the buffer. NO TYPE CHECKING is performed, so be careful!"
|
||||
|
||||
(with-gensyms (dma-buf ptr)
|
||||
`(let* ((,dma-buf ,buf)
|
||||
(,ptr (the-as (pointer ,data-type) (-> ,dma-buf base))))
|
||||
|
||||
,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms)
|
||||
|
||||
(set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type))))
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmacro dma-buffer-add-cnt-vif2 (buf qwc vif0 vif1)
|
||||
"Add a dma-packet to a dma-buffer.
|
||||
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data after the tag and continue from after that point)
|
||||
and includes two vif-tags for vifcode, or something else if needed."
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc))
|
||||
|
||||
(set! (-> ,pkt vif0) ,vif0)
|
||||
(set! (-> ,pkt vif1) ,vif1)
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-ref-vif2 (buf qwc addr vif0 vif1)
|
||||
"Add a dma-packet to a dma-buffer.
|
||||
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data at addr and continue from after the tag)
|
||||
and includes two vif-tags for vifcode, or something else if needed."
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr)))
|
||||
|
||||
(set! (-> ,pkt vif0) ,vif0)
|
||||
(set! (-> ,pkt vif1) ,vif1)
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-ret (buf)
|
||||
"Add a dma-packet to a dma-buffer. This packet simply does a DMA 'return' "
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0))
|
||||
|
||||
(set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
(set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-gif-tag (buf giftag gifregs)
|
||||
"Add a giftag to a dma-buffer."
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag
|
||||
|
||||
(set! (-> ,pkt tag) ,giftag)
|
||||
|
||||
(set! (-> ,pkt regs) ,gifregs)
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-uint64 (buf &rest body)
|
||||
"Add 64-bit words to a dma-buffer. See dma-buffer-add-base-data"
|
||||
|
||||
`(dma-buffer-add-base-data ,buf uint64 ,body)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-uint128 (buf &rest body)
|
||||
"Add 128-bit words to a dma-buffer. See dma-buffer-add-base-data"
|
||||
|
||||
`(dma-buffer-add-base-data ,buf uint128 ,body)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list)
|
||||
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
|
||||
The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop.
|
||||
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
|
||||
|
||||
(let ((reg-count (length reg-list))
|
||||
(qwc (+ (length reg-list) 1))
|
||||
(reg-names (apply first reg-list))
|
||||
(reg-datas (apply second reg-list))
|
||||
)
|
||||
`(begin
|
||||
;; dma tag
|
||||
(dma-buffer-add-cnt-vif2 ,buf ,qwc
|
||||
(new 'static 'vif-tag :cmd (vif-cmd flusha))
|
||||
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
|
||||
)
|
||||
|
||||
;; gif tag for editing gs regs
|
||||
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
|
||||
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
|
||||
)
|
||||
|
||||
;; gs regs
|
||||
(dma-buffer-add-uint64 ,buf
|
||||
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-gs-set (buf &rest reg-list)
|
||||
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
|
||||
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
|
||||
|
||||
(let ((reg-count (length reg-list))
|
||||
(qwc (+ (length reg-list) 1))
|
||||
(reg-names (apply first reg-list))
|
||||
(reg-datas (apply second reg-list))
|
||||
)
|
||||
`(begin
|
||||
;; dma tag
|
||||
(dma-buffer-add-cnt-vif2 ,buf ,qwc
|
||||
(new 'static 'vif-tag :cmd (vif-cmd nop))
|
||||
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
|
||||
)
|
||||
|
||||
;; gif tag for editing gs regs
|
||||
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
|
||||
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
|
||||
)
|
||||
|
||||
;; gs regs
|
||||
(dma-buffer-add-uint64 ,buf
|
||||
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro with-dma-bucket (bindings &rest body)
|
||||
"Start a new dma-bucket in body that will be finished at the end.
|
||||
The bindings are the dma-buffer, dma-bucket and bucket-id respectively."
|
||||
|
||||
(let ((buf (first bindings))
|
||||
(bucket (second bindings))
|
||||
(bucket-id (third bindings))
|
||||
)
|
||||
|
||||
(with-gensyms (buf-start bucket-edge pkt)
|
||||
`(let ((,buf-start (-> ,buf base)))
|
||||
|
||||
,@body
|
||||
|
||||
;; we end the chain with a next. The bucket system will patch the next chain to this,
|
||||
;; and then patch all the buckets togehter before sending the DMA.
|
||||
(let ((,bucket-edge (the (pointer dma-tag) (-> ,buf base))))
|
||||
(let ((,pkt (the-as dma-packet (-> ,buf base))))
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id next)))
|
||||
(set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
(set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
|
||||
(set! (-> ,buf base) (&+ (the-as pointer ,pkt) (size-of dma-packet)))
|
||||
|
||||
)
|
||||
(dma-bucket-insert-tag ,bucket ,bucket-id
|
||||
,buf-start ;; the first thing in this chain, bucket will patch previous to this
|
||||
,bucket-edge ;; end of this chain (ptr to next tag)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro with-dma-buffer-add-bucket (bindings &key (bucket-group (-> (current-frame) bucket-group)) &rest body)
|
||||
"Bind a dma-buffer to a variable and use it on a block to allow adding things to a new bucket.
|
||||
usage: (with-dma-buffer-add-bucket ((buffer-name buffer) bucket-id) &rest body)
|
||||
example: (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) ...)"
|
||||
|
||||
`(let ((,(caar bindings) ,(cadar bindings)))
|
||||
(with-dma-bucket (,(caar bindings) ,bucket-group ,(cadr bindings))
|
||||
,@body
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype dma-packet (structure)
|
||||
((dma dma-tag)
|
||||
(vif0 vif-tag)
|
||||
(vif1 vif-tag)
|
||||
(quad uint128 :overlay-at dma)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype dma-packet-array (inline-array-class)
|
||||
((data dma-packet :dynamic)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(set! (-> dma-packet-array heap-base) (the-as uint 16))
|
||||
|
||||
(deftype dma-gif (structure)
|
||||
((gif uint64 2)
|
||||
(quad uint128 :overlay-at (-> gif 0))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype dma-gif-packet (structure)
|
||||
((dma-vif dma-packet :inline)
|
||||
(gif uint64 2)
|
||||
(quad uint128 2 :overlay-at (-> dma-vif dma))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype dma-buffer (basic)
|
||||
((allocated-length int32)
|
||||
(base pointer)
|
||||
(end pointer)
|
||||
(real-buffer-end int32)
|
||||
(data uint64 1 :offset 32)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type int) _type_)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -5,5 +5,303 @@
|
||||
;; name in dgo: settings-h
|
||||
;; dgos: GAME
|
||||
|
||||
;; +++cam-master-options
|
||||
(defenum cam-master-options
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
(HAVE_TARGET) ;; 1
|
||||
(SET_COMBINER_AXIS) ;; 2
|
||||
(FLIP_COMBINER) ;; 4
|
||||
(HAVE_EASE_TO_POS) ;; 8
|
||||
(IN_BASE_REGION) ;; 10
|
||||
(IGNORE_ANALOG) ;; 20
|
||||
(BLOCK_RIGHT_STICK) ;; 40
|
||||
(USE_L1_R1) ;; 80
|
||||
(READ_BUTTONS)
|
||||
(IMMEDIATE_STRING_MIN_MAX)
|
||||
)
|
||||
;; ---cam-master-options
|
||||
|
||||
|
||||
;; +++cam-slave-options
|
||||
(defenum cam-slave-options
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
(BUTT_CAM)
|
||||
(SAME_SIDE)
|
||||
(MOVE_SPHERICAL)
|
||||
(ALLOW_Z_ROT)
|
||||
(JUMP_PITCHES)
|
||||
(COLLIDE)
|
||||
(FIND_HIDDEN_TARGET)
|
||||
(DRAG)
|
||||
(PLAYER_MOVING_CAMERA)
|
||||
(LINE_OF_SIGHT)
|
||||
(MOVEMENT_BLOCKED)
|
||||
(SHRINK_MAX_ANGLE)
|
||||
(GOTO_GOOD_POINT)
|
||||
(BIKE_MODE)
|
||||
(NO_ROTATE)
|
||||
(STICKY_ANGLE)
|
||||
(BLOCK_RIGHT_STICK)
|
||||
(ALLOW_SHIFT_BUTTONS)
|
||||
(GUN_CAM)
|
||||
(WIDE_FOV)
|
||||
(RAPID_TRACKING)
|
||||
(EASE_SPLINE_IDX)
|
||||
(VERTICAL_FOLLOW_MATCHES_CAMERA)
|
||||
(HAVE_BUTT_HANDLE)
|
||||
(BOMBBOT)
|
||||
(JUMP_LAG)
|
||||
)
|
||||
;; ---cam-slave-options
|
||||
|
||||
|
||||
;; +++game-feature
|
||||
(defenum game-feature
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
)
|
||||
;; ---game-feature
|
||||
|
||||
|
||||
;; +++game-secrets
|
||||
(defenum game-secrets
|
||||
:type uint64
|
||||
:bitfield #t
|
||||
)
|
||||
;; ---game-secrets
|
||||
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype user-setting-data (structure)
|
||||
((border-mode symbol)
|
||||
(process-mask process-mask)
|
||||
(unknown-int32 int32)
|
||||
(language language-enum)
|
||||
(movie (pointer process) :offset 32)
|
||||
(talking (pointer process))
|
||||
(spooling (pointer process))
|
||||
(hint (pointer process))
|
||||
(ambient (pointer process))
|
||||
(video-mode symbol)
|
||||
(aspect-ratio symbol)
|
||||
(auto-save symbol :offset 64)
|
||||
(bg-r float)
|
||||
(bg-g float)
|
||||
(bg-b float)
|
||||
(bg-a float)
|
||||
(bg-a-speed float)
|
||||
(bg-a-force float)
|
||||
(blur-a float)
|
||||
(blur-a-speed float)
|
||||
(allow-progress symbol)
|
||||
(allow-pause symbol)
|
||||
(movie-name symbol :offset 120)
|
||||
(weather symbol)
|
||||
(task-mask task-mask :offset 140)
|
||||
(duck symbol :offset 148)
|
||||
(attack symbol)
|
||||
(gun symbol)
|
||||
(board symbol)
|
||||
(jump symbol)
|
||||
(speed-mult float)
|
||||
(features uint64)
|
||||
(vehicles uint64)
|
||||
(sfx-volume float)
|
||||
(sfx-volume-movie float)
|
||||
(music-volume float)
|
||||
(music-volume-movie float)
|
||||
(dialog-volume float)
|
||||
(dialog-volume-talker float)
|
||||
(ambient-volume float)
|
||||
(ambient-volume-movie float)
|
||||
(dynamic-ambient-volume float)
|
||||
(talker-volume float)
|
||||
(sound-flava uint8)
|
||||
(sound-flava-priority float)
|
||||
(mode-sound-bank uint32)
|
||||
(sound-excitement float)
|
||||
(sound-reverb float)
|
||||
(stereo-mode int32)
|
||||
(music symbol)
|
||||
(sound-stinger int32)
|
||||
(spool-anim spool-anim)
|
||||
(sound-mode uint32)
|
||||
(task-manager (pointer process))
|
||||
(task symbol)
|
||||
(airlock symbol)
|
||||
(minimap uint32)
|
||||
(sound-tune uint32)
|
||||
(allow-continue symbol)
|
||||
(subtitle symbol :offset 304)
|
||||
(doorway symbol)
|
||||
(gem symbol)
|
||||
(half-speed symbol)
|
||||
(gun-buoy symbol)
|
||||
(double-jump symbol)
|
||||
(pilot symbol)
|
||||
(pilot-exit symbol)
|
||||
(pilot-death basic)
|
||||
(speech-control symbol)
|
||||
(vehicle-hijacking symbol)
|
||||
(darkjak symbol)
|
||||
(lightjak basic)
|
||||
(endlessfall symbol)
|
||||
(rain float)
|
||||
(snow float)
|
||||
(exclusive-load symbol)
|
||||
(render symbol)
|
||||
(allow-timeout symbol)
|
||||
(mirror symbol)
|
||||
(movie-skip-frame float)
|
||||
(allow-blackout symbol)
|
||||
(race-minimap int32)
|
||||
(beard symbol)
|
||||
(ignore-target symbol)
|
||||
(subtitle-language uint8)
|
||||
(sound-bank-load symbol)
|
||||
(allow-error symbol)
|
||||
(under-water-pitch-mod float)
|
||||
(slow-time float)
|
||||
(restart-info basic :offset 428)
|
||||
(fail-info basic)
|
||||
(death-info basic)
|
||||
(quit-info basic)
|
||||
(extra-bank-count uint32)
|
||||
(extra-bank pair 3)
|
||||
(borrow-count uint32)
|
||||
(borrow pair 3)
|
||||
(exclusive-task-count uint32)
|
||||
(exclusive-task int32 3)
|
||||
(level-trans-time int32)
|
||||
(scarf float)
|
||||
(goggles float)
|
||||
(board-trail basic)
|
||||
(letterbox float :offset 572)
|
||||
(letterbox-speed float)
|
||||
(borrow-city-count uint32 :offset 620)
|
||||
(borrow-city pair 3)
|
||||
(audio-language language-enum :offset 748)
|
||||
(special-volume float :offset 796)
|
||||
(pad uint8 108 :offset 800)
|
||||
)
|
||||
(:methods
|
||||
(user-setting-data-method-9 (_type_ engine engine-pers engine) user-setting-data)
|
||||
(user-setting-data-method-10 (_type_ object symbol float uint) user-setting-data)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype cam-setting-data (structure)
|
||||
((fov degrees)
|
||||
(pov-handle handle :offset 16)
|
||||
(pov-bone int32)
|
||||
(pov-offset vector :inline)
|
||||
(string-default symbol)
|
||||
(string-max-length meters)
|
||||
(string-min-length meters)
|
||||
(string-max-height meters)
|
||||
(string-min-height meters)
|
||||
(string-cliff-height meters)
|
||||
(string-camera-floor meters)
|
||||
(string-camera-ceiling meters)
|
||||
(gun-max-height meters)
|
||||
(gun-min-height meters)
|
||||
(string-local-down vector :inline)
|
||||
(slave-options cam-slave-options)
|
||||
(matrix-blend-max-angle degrees)
|
||||
(matrix-blend-max-partial float)
|
||||
(string-spline-max-move meters)
|
||||
(string-spline-accel meters)
|
||||
(string-spline-max-move-player meters)
|
||||
(string-spline-accel-player meters)
|
||||
(string-startup-vector vector :inline)
|
||||
(use-string-startup-vector symbol)
|
||||
(look-at-point vector :inline)
|
||||
(use-look-at-point symbol)
|
||||
(target-height meters)
|
||||
(foot-offset meters)
|
||||
(head-offset meters)
|
||||
(teleport-on-entity-change symbol)
|
||||
(entity-name string)
|
||||
(cam-slope string)
|
||||
(entity-or-mode-changed symbol)
|
||||
(master-options cam-master-options)
|
||||
(entity-mask uint32)
|
||||
(mode-name symbol)
|
||||
(real-entity-name string)
|
||||
(cam-mode symbol)
|
||||
(interp-time uint32)
|
||||
(no-intro symbol)
|
||||
(use-point-of-interest symbol)
|
||||
(point-of-interest vector :inline)
|
||||
(handle-of-interest handle)
|
||||
(mouse-tumble-point vector :inline)
|
||||
(use-mouse-tumble-point symbol)
|
||||
(mouse-input symbol)
|
||||
(cpad1-skip-buttons symbol)
|
||||
(butt-handle handle)
|
||||
(butt-angle float)
|
||||
(extra-follow-height float)
|
||||
(interp-time-priority uint32)
|
||||
(string-max-length-default symbol)
|
||||
(string-min-length-default symbol)
|
||||
(string-max-height-default symbol)
|
||||
(string-min-height-default symbol)
|
||||
(flip-vertical symbol)
|
||||
(flip-horizontal symbol)
|
||||
(fov-priority float :offset 384)
|
||||
(dummy object 98)
|
||||
)
|
||||
(:methods
|
||||
(cam-setting-data-method-9 (_type_ engine engine-pers engine) _type_)
|
||||
(cam-setting-data-method-10 (_type_ object (pointer process) float int) _type_)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype setting-control (basic)
|
||||
((user-current user-setting-data :inline)
|
||||
(user-target user-setting-data :inline)
|
||||
(user-default user-setting-data :inline)
|
||||
(cam-current cam-setting-data :inline)
|
||||
(cam-target cam-setting-data :inline)
|
||||
(cam-default cam-setting-data :inline)
|
||||
(engine engine)
|
||||
(engine-pers engine-pers)
|
||||
(engine-hi engine)
|
||||
(sound-stinger-time time-frame)
|
||||
(sound-stinger-change-time time-frame 4)
|
||||
(sound-excitement-change-time time-frame)
|
||||
(sound-excitement-targ float)
|
||||
(sound-excitement-level uint32)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type int) _type_)
|
||||
(add-setting (_type_ process symbol object object object) none)
|
||||
(persist-with-delay (_type_ symbol time-frame symbol symbol float int) none)
|
||||
(set-setting (_type_ process symbol object object object) none)
|
||||
(remove-setting (_type_ process symbol) none)
|
||||
(kill-persister (_type_ engine-pers object) none)
|
||||
(setting-control-method-14 (_type_ object) connectable)
|
||||
(remove-setting-by-arg0 (_type_ object) none)
|
||||
(set-setting-by-param (_type_ symbol object object object) connection)
|
||||
(setting-control-method-17 () none)
|
||||
(setting-control-method-18 () none)
|
||||
(setting-control-method-19 () none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmethod new setting-control ((allocation symbol) (type-to-make type) (arg0 int))
|
||||
(let ((s4-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> s4-0 engine) ((method-of-type engine new) allocation engine 'setting-control arg0 connection))
|
||||
(set! (-> s4-0 engine-hi) ((method-of-type engine new) allocation engine 'setting-control arg0 connection))
|
||||
(set! (-> s4-0 engine-pers)
|
||||
((method-of-type engine-pers new) allocation engine-pers 'setting-control arg0 connection-pers)
|
||||
)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,5 +5,726 @@
|
||||
;; name in dgo: font-h
|
||||
;; dgos: GAME
|
||||
|
||||
;; +++font-flags
|
||||
(defenum font-flags
|
||||
:type uint32
|
||||
:bitfield #t
|
||||
(shadow 0)
|
||||
(kerning 1)
|
||||
(middle 2)
|
||||
(middle-vert 3)
|
||||
(right 4)
|
||||
(large 5)
|
||||
(pc-hack 6)
|
||||
)
|
||||
;; ---font-flags
|
||||
|
||||
|
||||
;; +++font-color
|
||||
(defenum font-color
|
||||
:type uint32
|
||||
(default 0)
|
||||
(white 1)
|
||||
(transparent 2)
|
||||
(red 3)
|
||||
(orange 4)
|
||||
(yellow 5)
|
||||
(green 6)
|
||||
(blue 7)
|
||||
(cyan 8)
|
||||
(pink 9)
|
||||
(menu-selected 10)
|
||||
(menu-selected-parent 11)
|
||||
(menu 12)
|
||||
(menu-parent 13)
|
||||
(menu-func-bad 14)
|
||||
(menu-flag-on 15)
|
||||
(menu-flag-on-parent 16)
|
||||
(menu-flag-off 17)
|
||||
(menu-flag-off-parent 18)
|
||||
(menu-invalid 19)
|
||||
(flat-yellow 20)
|
||||
(font-color-21 21)
|
||||
(pad-back 22)
|
||||
(pad-shine 23)
|
||||
(pad-square 24)
|
||||
(pad-circle 25)
|
||||
(pad-triangle 26)
|
||||
(pad-x 27)
|
||||
(progress-old-blue 28)
|
||||
(progress-old-yellow 29)
|
||||
(progress-old-selected 30)
|
||||
(progress-old-percent 31)
|
||||
(font-color-32 32)
|
||||
(font-color-33 33)
|
||||
(font-color-34 34)
|
||||
(font-color-35 35)
|
||||
(font-color-36 36)
|
||||
(font-color-37 37)
|
||||
(font-color-38 38)
|
||||
(font-color-39 39)
|
||||
(font-color-40 40)
|
||||
(font-color-41 41)
|
||||
(font-color-42 42)
|
||||
(font-color-43 43)
|
||||
(font-color-44 44)
|
||||
)
|
||||
;; ---font-color
|
||||
|
||||
|
||||
;; added type
|
||||
(deftype draw-string-result (uint64)
|
||||
((length float :offset 0)
|
||||
(b float :offset 32))
|
||||
)
|
||||
|
||||
(define-extern draw-string-xy (function string dma-buffer int int font-color font-flags draw-string-result))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype char-verts (structure)
|
||||
((pos vector 4 :inline)
|
||||
(color vector 4 :inline)
|
||||
(tex-st vector 4 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype char-color (structure)
|
||||
((color rgba 4)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *font-default-matrix* (new 'static 'matrix
|
||||
:rvec (new 'static 'vector :x 1.0)
|
||||
:uvec (new 'static 'vector :y 1.0)
|
||||
:fvec (new 'static 'vector :z 1.0)
|
||||
:trans (new 'static 'vector :x -256.0 :y -208.0 :w 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
(deftype font-context (basic)
|
||||
((origin vector :inline)
|
||||
(strip-gif vector :inline)
|
||||
(width float)
|
||||
(height float)
|
||||
(projection float)
|
||||
(scale float)
|
||||
(color font-color)
|
||||
(flags font-flags)
|
||||
(mat matrix)
|
||||
(start-line uint32)
|
||||
(alpha float)
|
||||
(max-x float)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type matrix int int float font-color font-flags) _type_)
|
||||
(set-mat! (font-context matrix) font-context)
|
||||
(set-origin! (font-context int int) font-context)
|
||||
(set-depth! (font-context int) font-context)
|
||||
(set-w! (font-context float) font-context)
|
||||
(set-width! (font-context int) font-context)
|
||||
(set-height! (font-context int) font-context)
|
||||
(set-projection! (font-context float) font-context)
|
||||
(set-color! (font-context font-color) font-context)
|
||||
(set-flags! (font-context font-flags) font-context)
|
||||
(set-start-line! (font-context uint) font-context)
|
||||
(set-scale! (font-context float) font-context)
|
||||
(set-alpha! (font-context float) font-context)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmethod set-mat! ((this font-context) (arg0 matrix))
|
||||
(set! (-> this mat) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-origin! ((this font-context) (arg0 int) (arg1 int))
|
||||
(set! (-> this origin x) (the float arg0))
|
||||
(set! (-> this origin y) (the float arg1))
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-depth! ((this font-context) (arg0 int))
|
||||
(set! (-> this origin z) (the float arg0))
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-w! ((this font-context) (arg0 float))
|
||||
(set! (-> this origin w) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-width! ((this font-context) (arg0 int))
|
||||
(set! (-> this width) (the float arg0))
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-height! ((this font-context) (arg0 int))
|
||||
(set! (-> this height) (the float arg0))
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-projection! ((this font-context) (arg0 float))
|
||||
(set! (-> this projection) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-color! ((this font-context) (arg0 font-color))
|
||||
(set! (-> this color) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-flags! ((this font-context) (arg0 font-flags))
|
||||
(set! (-> this flags) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-start-line! ((this font-context) (arg0 uint))
|
||||
(set! (-> this start-line) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-scale! ((this font-context) (arg0 float))
|
||||
(set! (-> this scale) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod set-alpha! ((this font-context) (arg0 float))
|
||||
(set! (-> this alpha) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
(defmethod new font-context ((allocation symbol)
|
||||
(type-to-make type)
|
||||
(arg0 matrix)
|
||||
(arg1 int)
|
||||
(arg2 int)
|
||||
(arg3 float)
|
||||
(arg4 font-color)
|
||||
(arg5 font-flags)
|
||||
)
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> v0-0 mat) arg0)
|
||||
(let ((v1-3 v0-0))
|
||||
(set! (-> v1-3 origin x) (the float arg1))
|
||||
(set! (-> v1-3 origin y) (the float arg2))
|
||||
)
|
||||
(cond
|
||||
((= arg3 0.0)
|
||||
(let ((v1-4 v0-0))
|
||||
(set! (-> v1-4 origin z) (-> *math-camera* isometric trans z))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((v1-5 v0-0))
|
||||
(set! (-> v1-5 origin z) arg3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-6 v0-0))
|
||||
(set! (-> v1-6 origin w) 1.0)
|
||||
)
|
||||
(let ((v1-7 v0-0))
|
||||
(set! (-> v1-7 width) (the float 512))
|
||||
)
|
||||
(let ((v1-8 v0-0))
|
||||
(set! (-> v1-8 height) (the float 416))
|
||||
)
|
||||
(let ((v1-9 v0-0))
|
||||
(set! (-> v1-9 projection) 1.0)
|
||||
)
|
||||
(set! (-> v0-0 color) arg4)
|
||||
(set! (-> v0-0 flags) arg5)
|
||||
(let ((a0-6 v0-0))
|
||||
(set! (-> a0-6 start-line) (the-as uint 0))
|
||||
)
|
||||
(let ((v1-13 v0-0))
|
||||
(set! (-> v1-13 scale) 1.0)
|
||||
)
|
||||
(let ((v1-14 v0-0))
|
||||
(set! (-> v1-14 alpha) 1.0)
|
||||
)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
(deftype font-work (structure)
|
||||
((font-tmpl dma-gif-packet :inline)
|
||||
(char-tmpl dma-gif-packet :inline)
|
||||
(tex1-tmpl uint64 2)
|
||||
(small-font-0-tmpl uint64 2)
|
||||
(small-font-1-tmpl uint64 2)
|
||||
(small-font-2-tmpl uint64 2)
|
||||
(small-font-3-tmpl uint64 2)
|
||||
(large-font-0-tmpl uint64 2)
|
||||
(large-font-1-tmpl uint64 2)
|
||||
(large-font-2-tmpl uint64 2)
|
||||
(large-font-3-tmpl uint64 2)
|
||||
(size1-small vector :inline)
|
||||
(size2-small vector :inline)
|
||||
(size3-small vector :inline)
|
||||
(size1-large vector :inline)
|
||||
(size2-large-0 vector :inline)
|
||||
(size2-large-1 vector :inline)
|
||||
(size2-large-2 vector :inline)
|
||||
(size2-large-3 vector :inline)
|
||||
(size3-large vector :inline)
|
||||
(size2-0 vector :inline)
|
||||
(size2-1 vector :inline)
|
||||
(size2-2 vector :inline)
|
||||
(size2-3 vector :inline)
|
||||
(size-st1 vector :inline)
|
||||
(size-st2 vector :inline)
|
||||
(size-st3 vector :inline)
|
||||
(save vector :inline)
|
||||
(save-color vector 4 :inline)
|
||||
(character-save-color vector 4 :inline)
|
||||
(current-verts char-verts :inline)
|
||||
(src-verts char-verts :inline)
|
||||
(dest-verts char-verts :inline)
|
||||
(justify vector 64 :inline)
|
||||
(color-shadow vector4w :inline)
|
||||
(color-table char-color 45 :inline)
|
||||
(current-font-0-tmpl uint64 2)
|
||||
(current-font-1-tmpl uint64 2)
|
||||
(current-font-2-tmpl uint64 2)
|
||||
(current-font-3-tmpl uint64 2)
|
||||
(last-color font-color)
|
||||
(save-last-color font-color)
|
||||
(character-save-last-color uint32)
|
||||
(buf basic)
|
||||
(str-ptr uint32)
|
||||
(flags font-flags)
|
||||
(reg-save uint32 5)
|
||||
)
|
||||
(:methods
|
||||
(font-work-method-9 () none)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *font-work*
|
||||
(new 'static 'font-work
|
||||
:font-tmpl (new 'static 'dma-gif-packet
|
||||
:dma-vif (new 'static 'dma-packet
|
||||
:dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))
|
||||
:vif1 (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)
|
||||
)
|
||||
:gif (new 'static 'array uint64 2 #x102e400000008001 #xe)
|
||||
)
|
||||
:char-tmpl (new 'static 'dma-gif-packet
|
||||
:dma-vif (new 'static 'dma-packet
|
||||
:dma (new 'static 'dma-tag :qwc #xe :id (dma-tag-id cnt))
|
||||
:vif1 (new 'static 'vif-tag :imm #xe :cmd (vif-cmd direct) :msk #x1)
|
||||
)
|
||||
:gif (new 'static 'array uint64 2 #xd02e400000008001 #x412412412412e)
|
||||
)
|
||||
:tex1-tmpl (new 'static 'array uint64 2 #x60 #x14)
|
||||
:small-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:small-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:small-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:small-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:size1-small (new 'static 'vector :x 12.0 :w 0.5)
|
||||
:size2-small (new 'static 'vector :y 14.857 :w 8.0)
|
||||
:size3-small (new 'static 'vector :x 12.0 :y 14.857 :w 14.857)
|
||||
:size1-large (new 'static 'vector :x 24.0 :w 1.0)
|
||||
:size2-large-0 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size2-large-1 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size2-large-2 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size2-large-3 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size3-large (new 'static 'vector :x 24.0 :y 29.714 :w 29.714)
|
||||
:size-st1 (new 'static 'vector :x 0.08985 :w 0.5)
|
||||
:size-st2 (new 'static 'vector :y 0.031007752 :w 0.5)
|
||||
:size-st3 (new 'static 'vector :x 0.08985 :y 0.031007752 :w 0.5)
|
||||
:current-verts (new 'static 'char-verts
|
||||
:pos (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
)
|
||||
:tex-st (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
)
|
||||
)
|
||||
:src-verts (new 'static 'char-verts
|
||||
:pos (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
)
|
||||
:tex-st (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
)
|
||||
)
|
||||
:dest-verts (new 'static 'char-verts
|
||||
:pos (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
)
|
||||
:tex-st (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
)
|
||||
)
|
||||
:color-shadow (new 'static 'vector4w :w #x80)
|
||||
:color-table (new 'static 'inline-array char-color 45
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defun font-set-tex0 ((arg0 (pointer gs-tex0)) (arg1 texture) (arg2 int) (arg3 int) (arg4 int))
|
||||
(set! (-> arg0 0) (new 'static 'gs-tex0
|
||||
:tcc #x1
|
||||
:cld #x1
|
||||
:cbp arg4
|
||||
:th (+ (log2 (+ (-> arg1 h) -1)) 1)
|
||||
:tw (log2 (-> arg1 w))
|
||||
:tbw (-> arg1 width 0)
|
||||
:tbp0 (/ arg2 64)
|
||||
:psm arg3
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun set-font-color ((arg0 font-color) (arg1 int) (arg2 rgba) (arg3 rgba) (arg4 rgba))
|
||||
(set! (-> *font-work* color-table arg0 color 0) (the-as rgba arg1))
|
||||
(set! (-> *font-work* color-table arg0 color 1) arg2)
|
||||
(set! (-> *font-work* color-table arg0 color 2) arg3)
|
||||
(set! (-> *font-work* color-table arg0 color 3) arg4)
|
||||
0
|
||||
)
|
||||
|
||||
@@ -96,7 +96,7 @@ At any point in time, there are 3 frames in progress:
|
||||
(vu1-enable-user-menu vu1-renderer-mask)
|
||||
(force-sync uint32)
|
||||
(mem-reserve-size uint32)
|
||||
(dma-buffer-overflow basic)
|
||||
(dma-buffer-overflow symbol)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type int int int int int) _type_)
|
||||
|
||||
@@ -5,5 +5,632 @@
|
||||
;; name in dgo: display
|
||||
;; dgos: GAME
|
||||
|
||||
(defconstant DMA_BUFFER_GLOBAL_SIZE (* 1280 1024)) ;; 1280K
|
||||
;; (defconstant DMA_BUFFER_GLOBAL_SIZE (* 1280 1024 PROCESS_HEAP_MULT)) ;; expand based on actor heap expansion
|
||||
(defconstant DMA_BUFFER_DEBUG_SIZE (* 8 1024 1024)) ;; 8M
|
||||
;; (defconstant DMA_BUFFER_DEBUG_SIZE (* 12 1024 1024)) ;; expand to 12M because we can
|
||||
|
||||
(defconstant DISPLAY_FPS_RATIO (/ (-> *display* time-factor) 5.0))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(defun get-current-time ()
|
||||
"Get the base-clock time."
|
||||
(-> *display* base-clock frame-counter)
|
||||
)
|
||||
|
||||
(defun get-integral-current-time ()
|
||||
"Get the number of frames that have happened."
|
||||
(-> *display* base-clock integral-frame-counter)
|
||||
)
|
||||
|
||||
(defun get-real-current-time ()
|
||||
(-> *display* real-clock frame-counter)
|
||||
)
|
||||
|
||||
(defmethod set-time-ratios ((this display) (arg0 float))
|
||||
(set! (-> this dog-ratio) (fmin 4.0 arg0))
|
||||
(case (get-video-mode)
|
||||
(('pal)
|
||||
(set! (-> this time-factor) 6.0)
|
||||
)
|
||||
(else
|
||||
(set! (-> this time-factor) 5.0)
|
||||
)
|
||||
)
|
||||
(-> this dog-ratio)
|
||||
)
|
||||
|
||||
(defun set-display ((arg0 display))
|
||||
"Allocate and initialize clocks for the display."
|
||||
(dotimes (s5-0 22)
|
||||
(set! (-> arg0 clock s5-0) (new 'global 'clock s5-0))
|
||||
)
|
||||
(set! (-> arg0 base-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 game-clock mask) (process-mask freeze pause menu progress movie))
|
||||
(set! (-> arg0 total-game-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 frame-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 target-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 camera-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 entity-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 part-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 bg-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user0-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user1-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user2-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user3-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user4-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user5-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user6-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user7-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user8-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user9-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> *listener-process* clock) (-> arg0 real-clock))
|
||||
(set! (-> *active-pool* clock) (-> arg0 real-clock))
|
||||
(set! (-> *display-pool* clock) (-> arg0 real-clock))
|
||||
(set! (-> *mid-pool* clock) (-> arg0 real-clock))
|
||||
(+! (-> arg0 real-clock ref-count) 4)
|
||||
(set! (-> *camera-pool* clock) (-> arg0 camera-clock))
|
||||
(+! (-> arg0 camera-clock ref-count) 1)
|
||||
(set! (-> *target-pool* clock) (-> arg0 target-clock))
|
||||
(+! (-> arg0 target-clock ref-count) 1)
|
||||
(set! (-> *pusher-pool* clock) (-> arg0 entity-clock))
|
||||
(set! (-> *entity-pool* clock) (-> arg0 entity-clock))
|
||||
(+! (-> arg0 entity-clock ref-count) 2)
|
||||
(set! (-> *bg-pool* clock) (-> arg0 bg-clock))
|
||||
(+! (-> arg0 bg-clock ref-count) 1)
|
||||
(set! (-> *default-pool* clock) (-> arg0 base-clock))
|
||||
(+! (-> arg0 base-clock ref-count) 1)
|
||||
(+! (-> *kernel-clock* ref-count) -10)
|
||||
arg0
|
||||
)
|
||||
|
||||
(defun allocate-dma-buffers ((arg0 display))
|
||||
"Allocate the main, debug, and calc dma buffers."
|
||||
(when (zero? (-> arg0 frames 0 calc-buf))
|
||||
(set! (-> arg0 frames 0 calc-buf) (new 'global 'dma-buffer 10000))
|
||||
(set! (-> arg0 frames 1 calc-buf) (new 'global 'dma-buffer 10000))
|
||||
(set! (-> arg0 frames 0 global-buf) (new 'global 'dma-buffer DMA_BUFFER_GLOBAL_SIZE))
|
||||
(set! (-> arg0 frames 1 global-buf) (new 'global 'dma-buffer DMA_BUFFER_GLOBAL_SIZE))
|
||||
(when *debug-segment*
|
||||
(set! (-> arg0 frames 0 debug-buf) (new 'debug 'dma-buffer DMA_BUFFER_DEBUG_SIZE))
|
||||
(set! (-> arg0 frames 1 debug-buf) (new 'debug 'dma-buffer DMA_BUFFER_DEBUG_SIZE))
|
||||
)
|
||||
(set! (-> arg0 dma-buffer-overflow) #f)
|
||||
(set! (-> arg0 mem-reserve-size) (the-as uint 0))
|
||||
0
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
(define *font-context*
|
||||
(new 'global 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch pointer vs none.
|
||||
(defun draw-sprite2d-xy ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 rgba) (arg6 int))
|
||||
"Draw a sprite primitive with the given color and dimensions."
|
||||
(let* ((t2-2 (new 'stack 'draw-context arg1 arg2 arg3 arg4 arg5))
|
||||
(a0-3 (max 1792 (min 2304 (+ (-> t2-2 orgx) 1792))))
|
||||
(a3-3 (max 1840 (min 2256 (+ (-> t2-2 orgy) 1840))))
|
||||
(a1-6 (-> t2-2 width))
|
||||
(t1-2 (-> t2-2 height))
|
||||
(v1-6 (-> arg0 base))
|
||||
)
|
||||
(let* ((a2-2 arg0)
|
||||
(t0-2 (the-as object (-> a2-2 base)))
|
||||
)
|
||||
(set! (-> (the-as dma-packet t0-2) dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
|
||||
(set! (-> (the-as dma-packet t0-2) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet t0-2) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> a2-2 base) (&+ (the-as pointer t0-2) 16))
|
||||
)
|
||||
(let* ((a2-3 arg0)
|
||||
(t0-4 (the-as object (-> a2-3 base)))
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t0-4) tag)
|
||||
(new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x4)
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t0-4) regs)
|
||||
(new 'static 'gif-tag-regs :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2) :regs3 (gif-reg-id xyzf2))
|
||||
)
|
||||
(set! (-> a2-3 base) (&+ (the-as pointer t0-4) 16))
|
||||
)
|
||||
(let* ((a2-4 arg0)
|
||||
(t0-6 (-> a2-4 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-prim) t0-6) 0) (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe #x1))
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t0-6) 1) (the-as gs-rgbaq (-> t2-2 color 0)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t0-6) 2) (new 'static 'gs-xyzf :x (* a0-3 16) :y (* a3-3 16) :z arg6))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t0-6) 3) (new 'static 'gs-xyzf
|
||||
:x (* (max 1792 (min 2304 (+ a0-3 a1-6))) 16)
|
||||
:y (* (max 1840 (min 2256 (+ a3-3 t1-2))) 16)
|
||||
:z arg6
|
||||
)
|
||||
)
|
||||
(set! (-> a2-4 base) (&+ t0-6 32))
|
||||
)
|
||||
(let ((a0-12 (/ (the-as int (+ (- -16 (the-as int v1-6)) (the-as int (-> arg0 base)))) 16)))
|
||||
(cond
|
||||
((nonzero? a0-12)
|
||||
(logior! (-> (the-as (pointer uint64) v1-6) 0) (shr (shl a0-12 48) 48))
|
||||
(logior! (-> (the-as (pointer uint64) v1-6) 1) (shl (shr (shl a0-12 48) 48) 32))
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 base) v1-6)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch pointer vs none.
|
||||
(defun draw-sprite2d-xy-absolute ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 rgba) (arg6 int))
|
||||
"Draw a sprite primitive, setting the gs-xzyf register to exactly the values specified (no offset/clamp)."
|
||||
(let ((a1-1 (+ arg1 1792))
|
||||
(a2-1 (+ arg2 1840))
|
||||
(v1-0 (-> arg0 base))
|
||||
)
|
||||
(let* ((t3-0 arg0)
|
||||
(t4-0 (the-as object (-> t3-0 base)))
|
||||
)
|
||||
(set! (-> (the-as dma-packet t4-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
|
||||
(set! (-> (the-as dma-packet t4-0) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet t4-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> t3-0 base) (&+ (the-as pointer t4-0) 16))
|
||||
)
|
||||
(let* ((t3-1 arg0)
|
||||
(t4-2 (the-as object (-> t3-1 base)))
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t4-2) tag)
|
||||
(new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x4)
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t4-2) regs)
|
||||
(new 'static 'gif-tag-regs :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2) :regs3 (gif-reg-id xyzf2))
|
||||
)
|
||||
(set! (-> t3-1 base) (&+ (the-as pointer t4-2) 16))
|
||||
)
|
||||
(let* ((t3-2 arg0)
|
||||
(t4-4 (-> t3-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-prim) t4-4) 0) (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe #x1))
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t4-4) 1) (the-as gs-rgbaq arg5))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t4-4) 2) (new 'static 'gs-xyzf :x (* a1-1 16) :y (* a2-1 16) :z arg6))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t4-4) 3)
|
||||
(new 'static 'gs-xyzf :x (* (+ a1-1 arg3) 16) :y (* (+ a2-1 arg4) 16) :z arg6)
|
||||
)
|
||||
(set! (-> t3-2 base) (&+ t4-4 32))
|
||||
)
|
||||
(let ((a1-10 (/ (the-as int (+ (- -16 (the-as int v1-0)) (the-as int (-> arg0 base)))) 16)))
|
||||
(cond
|
||||
((nonzero? a1-10)
|
||||
(set! (-> (the-as (pointer uint64) v1-0) 0)
|
||||
(logior (-> (the-as (pointer uint64) v1-0)) (shr (shl a1-10 48) 48))
|
||||
)
|
||||
(logior! (-> (the-as (pointer uint64) v1-0) 1) (shl (shr (shl a1-10 48) 48) 32))
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 base) v1-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; WARN: Return type mismatch pointer vs none.
|
||||
(defun draw-quad2d ((arg0 dma-buffer) (arg1 draw-context))
|
||||
"Draw a quad that fills the entire context."
|
||||
(let ((a3-1 (max 1792 (min 2304 (+ (-> arg1 orgx) 1792))))
|
||||
(a2-3 (max 1840 (min 2256 (+ (-> arg1 orgy) 1840))))
|
||||
(t3-0 (-> arg1 width))
|
||||
(t0-2 (-> arg1 height))
|
||||
(v1-4 (-> arg0 base))
|
||||
)
|
||||
(let* ((t1-0 arg0)
|
||||
(t2-0 (the-as object (-> t1-0 base)))
|
||||
)
|
||||
(set! (-> (the-as dma-packet t2-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
|
||||
(set! (-> (the-as dma-packet t2-0) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet t2-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> t1-0 base) (&+ (the-as pointer t2-0) 16))
|
||||
)
|
||||
(let* ((t1-1 arg0)
|
||||
(t2-2 (the-as object (-> t1-1 base)))
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t2-2) tag)
|
||||
(new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x9)
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t2-2) regs) (new 'static 'gif-tag-regs
|
||||
:regs1 (gif-reg-id rgbaq)
|
||||
:regs2 (gif-reg-id xyzf2)
|
||||
:regs3 (gif-reg-id rgbaq)
|
||||
:regs4 (gif-reg-id xyzf2)
|
||||
:regs5 (gif-reg-id rgbaq)
|
||||
:regs6 (gif-reg-id xyzf2)
|
||||
:regs7 (gif-reg-id rgbaq)
|
||||
:regs8 (gif-reg-id xyzf2)
|
||||
)
|
||||
)
|
||||
(set! (-> t1-1 base) (&+ (the-as pointer t2-2) 16))
|
||||
)
|
||||
(let* ((t1-2 arg0)
|
||||
(t2-4 (-> t1-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-prim) t2-4) 0)
|
||||
(new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :abe #x1)
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 1) (the-as gs-rgbaq (-> arg1 color 0)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 2) (new 'static 'gs-xyzf :y (* a2-3 16) :x (* a3-1 16)))
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 3) (the-as gs-rgbaq (-> arg1 color 1)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 4)
|
||||
(new 'static 'gs-xyzf :y (* a2-3 16) :x (* (max 1792 (min 2304 (+ a3-1 t3-0))) 16))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 5) (the-as gs-rgbaq (-> arg1 color 2)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 6)
|
||||
(new 'static 'gs-xyzf :y (* (max 1840 (min 2256 (+ a2-3 t0-2))) 16) :x (* a3-1 16))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 7) (the-as gs-rgbaq (-> arg1 color 3)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 8) (new 'static 'gs-xyzf
|
||||
:y (* (max 1840 (min 2256 (+ a2-3 t0-2))) 16)
|
||||
:x (* (max 1792 (min 2304 (+ a3-1 t3-0))) 16)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as (pointer uint64) t2-4) 9) (the-as uint 0))
|
||||
(set! (-> t1-2 base) (&+ t2-4 80))
|
||||
)
|
||||
(let ((a1-11 (/ (the-as int (+ (- -16 (the-as int v1-4)) (the-as int (-> arg0 base)))) 16)))
|
||||
(cond
|
||||
((nonzero? a1-11)
|
||||
(set! (-> (the-as (pointer uint64) v1-4) 0)
|
||||
(logior (-> (the-as (pointer uint64) v1-4)) (shr (shl a1-11 48) 48))
|
||||
)
|
||||
(logior! (-> (the-as (pointer uint64) v1-4) 1) (shl (shr (shl a1-11 48) 48) 32))
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 base) v1-4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun screen-gradient ((arg0 dma-buffer) (arg1 rgba) (arg2 rgba) (arg3 rgba) (arg4 rgba))
|
||||
"Fill the screen with a sprite with the given colors."
|
||||
(let ((a1-2 (new 'stack 'draw-context 0 0 512 416 (new 'static 'rgba))))
|
||||
(set! (-> a1-2 color 0) arg1)
|
||||
(set! (-> a1-2 color 1) arg2)
|
||||
(set! (-> a1-2 color 2) arg3)
|
||||
(set! (-> a1-2 color 3) arg4)
|
||||
(draw-quad2d arg0 a1-2)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defun vif1-handler-debug ((mark-in int))
|
||||
"Handle the VIF1 interrupt.
|
||||
The mark register of VIF will be set to the bucket that is now starting."
|
||||
|
||||
; B0:
|
||||
; L42:
|
||||
; daddiu sp, sp, -32
|
||||
; sd ra, 0(sp)
|
||||
; sd s7, 16(sp)
|
||||
; bgezal r0, L43
|
||||
; sll r0, r0, 0
|
||||
|
||||
; B1:
|
||||
; L43:
|
||||
; daddiu fp, ra, -20
|
||||
; lw s7, L41(fp)
|
||||
; lw s7, 0(s7)
|
||||
; daddiu s7, s7, -8
|
||||
; lw v1, *profile-interrupt-segment*(s7)
|
||||
(let* ((prof *profile-interrupt-segment*) ;; v1
|
||||
; lui a0, 4096
|
||||
; ori a0, a0, 15360
|
||||
; lwu a0, 48(a0)
|
||||
(mark mark-in) ;; (-> VIF1_BANK mark) (TODO actually set mark somehow)
|
||||
; lw a1, *profile-work*(s7)
|
||||
; lw a2, 64(a1)
|
||||
(last-index (-> *profile-work* last-index))
|
||||
|
||||
; lh a3, 4(v1)
|
||||
(base-time (-> prof base-time))
|
||||
; lui a1, 4096
|
||||
; ori a1, a1, 2048
|
||||
; lwu a1, 0(a1)
|
||||
; sync.l
|
||||
(current-time (timer-count TIMER1_BANK))
|
||||
(delta-time (the uint 0))
|
||||
)
|
||||
|
||||
|
||||
(cond
|
||||
; sltu t0, a0, a2 t0 = (mark < last-index)
|
||||
; beq t0, r0, L46
|
||||
; sll r0, r0, 0
|
||||
((< mark last-index)
|
||||
;; the mark jumped backward, we must be starting a new frame
|
||||
;; clear all profile info.
|
||||
|
||||
|
||||
; B2:
|
||||
; addiu a2, r0, 0
|
||||
; beq r0, r0, L45
|
||||
; sll r0, r0, 0
|
||||
(dotimes (i (enum-length bucket-id))
|
||||
; B3:
|
||||
; L44:
|
||||
; dsll a3, a2, 4
|
||||
; daddu a3, v1, a3
|
||||
; sh r0, 48(a3)
|
||||
(set! (-> prof data i start-time) 0)
|
||||
; dsll a3, a2, 4
|
||||
; daddu a3, v1, a3
|
||||
; sh r0, 50(a3)
|
||||
(set! (-> prof data i end-time) 0)
|
||||
; dsll a3, a2, 4
|
||||
; daddu a3, v1, a3
|
||||
; sb r0, 53(a3)
|
||||
(set! (-> prof data i count) 0)
|
||||
; daddiu a2, a2, 1
|
||||
; B4:
|
||||
; L45:
|
||||
; slti a3, a2, 327
|
||||
; bne a3, r0, L44
|
||||
; sll r0, r0, 0
|
||||
)
|
||||
|
||||
; B5:
|
||||
; or a2, s7, r0
|
||||
; or a2, s7, r0
|
||||
; sh a1, 4(v1)
|
||||
(set! (-> prof base-time) (the int current-time))
|
||||
; addiu a1, r0, 0
|
||||
; sh r0, 48(v1)
|
||||
(set! (-> prof data 0 start-time) 0) ;; why do it again...
|
||||
; addiu a2, r0, 327
|
||||
; sh a2, 0(v1)
|
||||
(set! (-> prof count) (enum-length bucket-id))
|
||||
; beq r0, r0, L47
|
||||
; sll r0, r0, 0
|
||||
) ;; end (>= mark last-index)
|
||||
(else
|
||||
|
||||
; B6:
|
||||
; L46:
|
||||
; dsubu a1, a1, a3
|
||||
;(let ((delta-time (- current-time base-time)))
|
||||
(set! delta-time (- current-time base-time))
|
||||
|
||||
; dsll a2, a2, 4
|
||||
; daddu a2, v1, a2
|
||||
; sh a1, 50(a2)
|
||||
(set! (-> prof data last-index end-time) (the int delta-time))
|
||||
; (format 0 "mark: ~D last ~D elapsed ~D~%" mark last-index
|
||||
; (- (-> prof data last-index end-time)
|
||||
; (-> prof data last-index start-time)))
|
||||
|
||||
; sh a1, 50(v1)
|
||||
(set! (-> prof data 0 end-time) (the int delta-time))
|
||||
; or a2, a1, r0
|
||||
;)
|
||||
) ;; end else
|
||||
) ;; end cond
|
||||
; B7:
|
||||
; L47:
|
||||
; dsll a2, a0, 4
|
||||
; daddu a2, v1, a2
|
||||
; sb a0, 53(a2)
|
||||
(set! (-> prof data mark count) mark)
|
||||
; dsll a2, a0, 4
|
||||
; daddu v1, v1, a2
|
||||
; sh a1, 48(v1)
|
||||
(set! (-> prof data mark start-time) (the int delta-time))
|
||||
; lw v1, *profile-work*(s7)
|
||||
; sw a0, 64(v1)
|
||||
(set! (-> *profile-work* last-index) mark)
|
||||
; lui v1, 4096
|
||||
; ori v1, v1, 15360
|
||||
; sw r0, 48(v1)
|
||||
;; CLEAR mark
|
||||
; addiu v1, r0, 8
|
||||
; lui a0, 4096
|
||||
; ori a0, a0, 15360
|
||||
; sw v1, 16(a0)
|
||||
;; write STC to VIF FBRST (reset various things)
|
||||
; addiu v0, r0, 0
|
||||
; ld ra, 0(sp)
|
||||
; ld s7, 16(sp)
|
||||
; sync.l
|
||||
; ei
|
||||
; jr ra
|
||||
; daddiu sp, sp, 32
|
||||
)
|
||||
|
||||
(none)
|
||||
;; .endfunction
|
||||
)
|
||||
|
||||
(defun vif1-handler ()
|
||||
; B0:
|
||||
; L8:
|
||||
; daddiu sp, sp, -32
|
||||
; sd ra, 0(sp)
|
||||
; sd s7, 16(sp)
|
||||
; bgezal r0, L9
|
||||
; sll r0, r0, 0
|
||||
|
||||
; B1:
|
||||
; L9:
|
||||
; daddiu fp, ra, -20
|
||||
; lw s7, L7(fp)
|
||||
; lw s7, 0(s7)
|
||||
; daddiu s7, s7, -8
|
||||
|
||||
; lui v1, 4096
|
||||
; ori v1, v1, 15360
|
||||
; sw r0, 48(v1)
|
||||
;; clear mark
|
||||
|
||||
; addiu v1, r0, 8
|
||||
; lui a0, 4096
|
||||
; ori a0, a0, 15360
|
||||
; sw v1, 16(a0)
|
||||
;; write STC to VIF FBRST (reset various things)
|
||||
|
||||
; addiu v0, r0, 0
|
||||
; ld ra, 0(sp)
|
||||
; ld s7, 16(sp)
|
||||
; sync.l
|
||||
; ei
|
||||
; jr ra
|
||||
; daddiu sp, sp, 32
|
||||
|
||||
; sll r0, r0, 0
|
||||
; sll r0, r0, 0
|
||||
)
|
||||
|
||||
(install-handler 5 (if *debug-segment*
|
||||
vif1-handler-debug
|
||||
vif1-handler
|
||||
)
|
||||
)
|
||||
|
||||
(defun vblank-handler ()
|
||||
"Record the time of the last two vblanks."
|
||||
; L5:
|
||||
; daddiu sp, sp, -32
|
||||
; sd ra, 0(sp)
|
||||
; sd s7, 16(sp)
|
||||
; bgezal r0, L6
|
||||
; sll r0, r0, 0
|
||||
|
||||
; B1:
|
||||
; L6:
|
||||
; daddiu fp, ra, -20
|
||||
; lw s7, L4(fp)
|
||||
; lw s7, 0(s7)
|
||||
; daddiu s7, s7, -8
|
||||
; lw v1, *display*(s7)
|
||||
; ld v1, 108(v1)
|
||||
; lw a0, *display*(s7)
|
||||
; sd v1, 100(a0)
|
||||
(set! (-> *display* vblank-start-time 0) (-> *display* vblank-start-time 1))
|
||||
; lw t9, timer-count(s7)
|
||||
; lui v1, 4096
|
||||
; ori a0, v1, 2048
|
||||
; jalr ra, t9
|
||||
; sll v0, ra, 0
|
||||
|
||||
; lw v1, *display*(s7)
|
||||
; sd v0, 108(v1)
|
||||
(set! (-> *display* vblank-start-time 1) (the-as int (timer-count TIMER1_BANK))) ;; not really a time-frame.
|
||||
; addiu v0, r0, 0
|
||||
0
|
||||
; ld ra, 0(sp)
|
||||
; ld s7, 16(sp)
|
||||
; sync.l
|
||||
; ei
|
||||
; jr ra
|
||||
; daddiu sp, sp, 32
|
||||
|
||||
; sll r0, r0, 0
|
||||
; sll r0, r0, 0
|
||||
)
|
||||
|
||||
(defun set-display-gs-state ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int))
|
||||
(let ((v1-1 (/ (+ arg2 63) 64))
|
||||
(t2-0 *display*)
|
||||
(t3-0 144)
|
||||
)
|
||||
(+! (-> t2-0 mem-reserve-size) t3-0)
|
||||
(when (not (-> t2-0 dma-buffer-overflow))
|
||||
(let ((t5-0 (-> t2-0 frames (-> t2-0 on-screen) global-buf)))
|
||||
(if (< (-> t5-0 real-buffer-end) (the-as int (&+ (-> t5-0 base) t3-0)))
|
||||
(set! (-> t2-0 dma-buffer-overflow) #t)
|
||||
)
|
||||
)
|
||||
(if (not (-> t2-0 dma-buffer-overflow))
|
||||
(dma-buffer-add-gs-set-flusha arg0
|
||||
(scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)))
|
||||
(xyoffset-1 (new 'static 'gs-xy-offset))
|
||||
(frame-1 (new 'static 'gs-frame :fbp arg1 :fbw v1-1 :psm arg5 :fbmsk arg4))
|
||||
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
|
||||
(texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
|
||||
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
|
||||
(texflush 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
(defun set-display-gs-state-offset ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int))
|
||||
(let ((v1-1 (/ (+ arg2 63) 64))
|
||||
(t4-0 *display*)
|
||||
(t5-0 144)
|
||||
)
|
||||
(+! (-> t4-0 mem-reserve-size) t5-0)
|
||||
(when (not (-> t4-0 dma-buffer-overflow))
|
||||
(let ((t7-0 (-> t4-0 frames (-> t4-0 on-screen) global-buf)))
|
||||
(if (< (-> t7-0 real-buffer-end) (the-as int (&+ (-> t7-0 base) t5-0)))
|
||||
(set! (-> t4-0 dma-buffer-overflow) #t)
|
||||
)
|
||||
)
|
||||
(if (not (-> t4-0 dma-buffer-overflow))
|
||||
(dma-buffer-add-gs-set-flusha arg0
|
||||
(scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)))
|
||||
(xyoffset-1 (new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16)))
|
||||
(frame-1 (new 'static 'gs-frame :fbp arg1 :fbw v1-1 :psm arg5 :fbmsk arg4))
|
||||
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
|
||||
(texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
|
||||
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
|
||||
(texflush 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
(defun reset-display-gs-state ((arg0 display) (arg1 dma-buffer))
|
||||
(let ((v1-0 *display*)
|
||||
(a2-0 144)
|
||||
)
|
||||
(+! (-> v1-0 mem-reserve-size) a2-0)
|
||||
(when (not (-> v1-0 dma-buffer-overflow))
|
||||
(let ((t0-0 (-> v1-0 frames (-> v1-0 on-screen) global-buf)))
|
||||
(if (< (-> t0-0 real-buffer-end) (the-as int (&+ (-> t0-0 base) a2-0)))
|
||||
(set! (-> v1-0 dma-buffer-overflow) #t)
|
||||
)
|
||||
)
|
||||
(if (not (-> v1-0 dma-buffer-overflow))
|
||||
(dma-buffer-add-gs-set-flusha arg1
|
||||
(scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f))
|
||||
(xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300))
|
||||
(frame-1 (new 'static 'gs-frame :fbp #x198 :fbw #x8))
|
||||
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
|
||||
(texa (new 'static 'gs-texa :ta1 #x80))
|
||||
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
|
||||
(texflush 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
(kmemopen global "dma-buffers")
|
||||
|
||||
(define *vu0-dma-list* (new 'global 'dma-buffer 4096))
|
||||
|
||||
(define *display* (new 'global 'display 0 512 416 2 49))
|
||||
|
||||
(allocate-dma-buffers *display*)
|
||||
|
||||
(kmemclose)
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
;; name in dgo: video-h
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern get-video-mode (function symbol))
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype video-params (structure)
|
||||
|
||||
@@ -610,6 +610,8 @@
|
||||
(bucket582 582)
|
||||
(bucket583 583)
|
||||
(debug-no-zbuf2 584)
|
||||
(bucket585 585)
|
||||
(bucket586 586)
|
||||
)
|
||||
;; ---bucket-id
|
||||
|
||||
|
||||
@@ -916,3 +916,27 @@
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(deftype game-text (structure)
|
||||
((id text-id)
|
||||
(text string)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(deftype game-text-info (basic)
|
||||
((length int32)
|
||||
(language-id int32)
|
||||
(group-name string)
|
||||
(data game-text :dynamic)
|
||||
)
|
||||
(:methods
|
||||
(lookup-text! (_type_ text-id symbol) string)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *text-group-names* (new 'static 'boxed-array :type string "common"))
|
||||
|
||||
(define *common-text-heap* (new 'global 'kheap))
|
||||
|
||||
(define *common-text* (the-as game-text-info #f))
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
(deftype profile-spec (structure)
|
||||
"Specification for a profile category."
|
||||
((name basic)
|
||||
((name symbol)
|
||||
(color rgba)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -5,5 +5,997 @@
|
||||
;; name in dgo: profile
|
||||
;; dgos: GAME
|
||||
|
||||
(define-extern *dproc* process)
|
||||
|
||||
;; DECOMP BEGINS
|
||||
|
||||
(define *profile-spec-array*
|
||||
(new 'static 'inline-array profile-spec 14
|
||||
(new 'static 'profile-spec :name 'dummy :color (new 'static 'rgba :r #x20 :g #x20 :b #x20 :a #x80))
|
||||
(new 'static 'profile-spec :name 'blit-displays :color (new 'static 'rgba :r #x20 :g #x20 :b #x80 :a #x80))
|
||||
(new 'static 'profile-spec :name 'sky :color (new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80))
|
||||
(new 'static 'profile-spec :name 'ocean :color (new 'static 'rgba :r #x20 :g #x80 :b #x80 :a #x80))
|
||||
(new 'static 'profile-spec :name 'hfrag :color (new 'static 'rgba :r #x80 :g #x20 :b #x20 :a #x80))
|
||||
(new 'static 'profile-spec :name 'tfrag :color (new 'static 'rgba :r #x80 :g #x20 :b #x80 :a #x80))
|
||||
(new 'static 'profile-spec :name 'texture :color (new 'static 'rgba :r #x80 :g #x80 :b #x20 :a #x80))
|
||||
(new 'static 'profile-spec :name 'tie :color (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80))
|
||||
(new 'static 'profile-spec :name 'generic :color (new 'static 'rgba :r #xc0 :g #xc0 :a #x80))
|
||||
(new 'static 'profile-spec :name 'merc :color (new 'static 'rgba :r #xc0 :b #xc0 :a #x80))
|
||||
(new 'static 'profile-spec :name 'shrubbery :color (new 'static 'rgba :r #xc0 :a #x80))
|
||||
(new 'static 'profile-spec :name 'particle :color (new 'static 'rgba :g #xc0 :b #xc0 :a #x80))
|
||||
(new 'static 'profile-spec :name 'debug :color (new 'static 'rgba :g #xc0 :a #x80))
|
||||
(new 'static 'profile-spec :name 'other :color (new 'static 'rgba :r #xc0 :g #xc0 :b #xc0 :a #x80))
|
||||
)
|
||||
)
|
||||
|
||||
(define *profile-translate-array* (new 'static 'array uint64 584
|
||||
#x0
|
||||
#x0
|
||||
#x0
|
||||
#x1
|
||||
#x6
|
||||
#x2
|
||||
#x3
|
||||
#x6
|
||||
#x4
|
||||
#x4
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#xa
|
||||
#x8
|
||||
#xa
|
||||
#xa
|
||||
#x8
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#xd
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x6
|
||||
#x3
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x5
|
||||
#x7
|
||||
#x7
|
||||
#x7
|
||||
#x5
|
||||
#x7
|
||||
#x8
|
||||
#x6
|
||||
#x9
|
||||
#x8
|
||||
#x8
|
||||
#x1
|
||||
#x6
|
||||
#x8
|
||||
#xb
|
||||
#xd
|
||||
#xd
|
||||
#x6
|
||||
#x9
|
||||
#xc
|
||||
#x6
|
||||
#xd
|
||||
#xd
|
||||
#xd
|
||||
#xd
|
||||
#xc
|
||||
#xc
|
||||
#xc
|
||||
)
|
||||
)
|
||||
|
||||
(deftype profile-work (structure)
|
||||
"DMA templates for profile drawing."
|
||||
((sprite-tmpl dma-gif-packet :inline)
|
||||
(line-tmpl dma-gif-packet :inline)
|
||||
(last-index int32)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(define *profile-work* (new 'static 'profile-work
|
||||
:sprite-tmpl (new 'static 'dma-gif-packet
|
||||
:dma-vif (new 'static 'dma-packet
|
||||
:dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))
|
||||
:vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)
|
||||
)
|
||||
:gif (new 'static 'array uint64 2 #x3023400000008001 #x551)
|
||||
)
|
||||
:line-tmpl (new 'static 'dma-gif-packet
|
||||
:dma-vif (new 'static 'dma-packet
|
||||
:dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))
|
||||
:vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)
|
||||
)
|
||||
:gif (new 'static 'array uint64 2 #x3020c00000008001 #x551)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(define *profile-x* 1808)
|
||||
|
||||
(define *profile-y* 1848)
|
||||
|
||||
(define *profile-w* 416)
|
||||
|
||||
(define *profile-h* 8)
|
||||
|
||||
(define *profile-ticks* #f)
|
||||
|
||||
(defmethod start-frame! ((this profile-segment-array))
|
||||
"Restart the profiler for the start of a frame."
|
||||
(set! (-> this count) 0)
|
||||
(set! (-> this depth) 0)
|
||||
(set! (-> this max-depth) 0)
|
||||
(set! (-> this base-time) (the-as int (timer-count (the-as timer-bank #x10000800))))
|
||||
(start-segment! this 'all *profile-all-color*)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod start-segment! ((this profile-segment-array) (arg0 symbol) (arg1 rgba))
|
||||
"Start an event."
|
||||
(when (and *dproc* *debug-segment*)
|
||||
(let ((s4-0 (-> this data (-> this count))))
|
||||
(let ((s3-0 (-> this base-time)))
|
||||
(set! (-> s4-0 name) arg0)
|
||||
(set! (-> s4-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-0))))
|
||||
)
|
||||
(set! (-> s4-0 depth) (the-as uint (-> this depth)))
|
||||
(set! (-> s4-0 color) arg1)
|
||||
(set! (-> this segment (-> this depth)) s4-0)
|
||||
)
|
||||
(set! (-> this count) (min 1023 (+ (-> this count) 1)))
|
||||
(+! (-> this depth) 1)
|
||||
(set! (-> this max-depth) (max (-> this max-depth) (-> this depth)))
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod end-segment! ((this profile-segment-array))
|
||||
"Stop the most recently started event."
|
||||
(when (and *dproc* *debug-segment*)
|
||||
(let* ((v1-4 (+ (-> this depth) -1))
|
||||
(s5-0 (-> this segment v1-4))
|
||||
(s4-0 (-> this base-time))
|
||||
)
|
||||
(when (>= v1-4 0)
|
||||
(set! (-> s5-0 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s4-0))))
|
||||
(+! (-> this depth) -1)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod postprocess-data! ((this profile-array))
|
||||
"Create the collapsed summary of the collected data."
|
||||
(dotimes (s5-0 2)
|
||||
(let ((s3-0 (-> *profile-array* data s5-0))
|
||||
(s4-0 *profile-collapse*)
|
||||
)
|
||||
(mem-copy! (&-> s3-0 type) (&-> (-> this data s5-0) type) #x4030)
|
||||
(cond
|
||||
((zero? s5-0)
|
||||
((lambda ((arg0 profile-segment-array) (arg1 profile-collapse))
|
||||
(let ((v0-0 0))
|
||||
(dotimes (v1-0 48)
|
||||
(set! (-> arg1 data v1-0 name) #f)
|
||||
(set! (-> arg1 data v1-0 count) (the-as uint 0))
|
||||
(set! (-> arg1 data v1-0 vu-count) (the-as uint 0))
|
||||
(set! (-> arg1 data v1-0 depth) (the-as uint 0))
|
||||
(set! (-> arg1 data v1-0 start-time) 0)
|
||||
(set! (-> arg1 data v1-0 end-time) 0)
|
||||
)
|
||||
(dotimes (v1-3 (-> arg0 count))
|
||||
(let ((a2-15 (- (-> arg0 data v1-3 end-time) (-> arg0 data v1-3 start-time))))
|
||||
(let ((t0-0 (-> arg0 data v1-3 name)))
|
||||
(dotimes (a3-5 v0-0)
|
||||
(when (= (-> arg1 data a3-5 name) t0-0)
|
||||
(+! (-> arg1 data a3-5 count) 1)
|
||||
(set! (-> arg1 data a3-5 start-time) (the-as int (+ (-> arg1 data a3-5 code-time) a2-15)))
|
||||
(goto cfg-11)
|
||||
)
|
||||
)
|
||||
(set! (-> arg1 data v0-0 name) t0-0)
|
||||
)
|
||||
(set! (-> arg1 data v0-0 count) (the-as uint 1))
|
||||
(set! (-> arg1 data v0-0 depth) (-> arg0 data v1-3 depth))
|
||||
(set! (-> arg1 data v0-0 start-time) a2-15)
|
||||
)
|
||||
(set! (-> arg1 data v0-0 color) (-> arg0 data v1-3 color))
|
||||
(set! v0-0 (min 47 (+ v0-0 1)))
|
||||
(label cfg-11)
|
||||
)
|
||||
(set! (-> arg1 count) v0-0)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
s3-0
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((v1-6 3)
|
||||
(a0-5 (+ (-> s3-0 count) -1))
|
||||
)
|
||||
(while (>= a0-5 v1-6)
|
||||
(let ((a1-4 (-> s3-0 data v1-6)))
|
||||
(set! (-> a1-4 name) (-> *profile-spec-array* (-> *profile-translate-array* v1-6) name))
|
||||
(set! (-> a1-4 color) (-> *profile-spec-array* (-> *profile-translate-array* v1-6) color))
|
||||
(let ((a2-14 (- (-> a1-4 end-time) (-> a1-4 start-time)))
|
||||
(a3-5 (-> a1-4 name))
|
||||
)
|
||||
(dotimes (a1-5 (-> s4-0 count))
|
||||
(when (= (-> s4-0 data a1-5 name) a3-5)
|
||||
(+! (-> s4-0 data a1-5 vu-count) 1)
|
||||
(set! (-> s4-0 data a1-5 end-time) (the-as int (+ (-> s4-0 data a1-5 vu-time) a2-14)))
|
||||
(goto cfg-11)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-11)
|
||||
(+! v1-6 1)
|
||||
)
|
||||
)
|
||||
(countdown (v1-9 (-> s3-0 count))
|
||||
(when (nonzero? (-> s3-0 data v1-9 end-time))
|
||||
(set! (-> s4-0 data 0 vu-count) (the-as uint 1))
|
||||
(set! (-> s4-0 data 0 end-time) (- (-> s3-0 data v1-9 end-time) (-> s3-0 data 0 start-time)))
|
||||
(goto cfg-19)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(label cfg-19)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod draw-bars! ((this profile-array) (arg0 dma-buffer) (arg1 int))
|
||||
"Generate DMA data for drawing the profile bars."
|
||||
(local-vars (sv-16 (function _varargs_ object)) (sv-32 (function _varargs_ object)))
|
||||
(dma-buffer-add-gs-set arg0
|
||||
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
|
||||
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
|
||||
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
|
||||
(pabe 0)
|
||||
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
|
||||
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
|
||||
(texa (new 'static 'gs-texa :ta1 #x80))
|
||||
(texclut (new 'static 'gs-texclut :cbw #x4))
|
||||
(fogcol *fog-color*)
|
||||
)
|
||||
(let ((v1-5 (* (+ *profile-x* (/ *profile-w* 2)) 16))
|
||||
(a0-9 (-> arg0 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer uint128) a0-9) 0) (-> *profile-work* line-tmpl dma-vif quad))
|
||||
(set! (-> (the-as (pointer uint128) a0-9) 1) (-> *profile-work* line-tmpl quad 1))
|
||||
(set-vector! (the-as vector4w (&+ a0-9 32)) 64 64 64 64)
|
||||
(set-vector! (the-as vector4w (&+ a0-9 48)) v1-5 #x7340 #xffffff 0)
|
||||
(set-vector! (the-as vector4w (&+ a0-9 64)) v1-5 #x7580 #xffffff 0)
|
||||
)
|
||||
(&+! (-> arg0 base) 80)
|
||||
(dotimes (s3-0 2)
|
||||
(let* ((v1-12 (-> this data s3-0))
|
||||
(a0-11 (-> v1-12 max-depth))
|
||||
(s2-1 (max 14 (* a0-11 2)))
|
||||
)
|
||||
(set! *profile-y* (+ arg1 1840))
|
||||
(let ((a1-32 (-> arg0 base)))
|
||||
(set! (-> (the-as (pointer uint128) a1-32) 0) (-> *profile-work* sprite-tmpl dma-vif quad))
|
||||
(set! (-> (the-as (pointer uint128) a1-32) 1) (-> *profile-work* sprite-tmpl quad 1))
|
||||
(set-vector! (the-as vector4w (&+ a1-32 32)) 64 64 64 64)
|
||||
(set-vector! (the-as vector4w (&+ a1-32 48)) (* *profile-x* 16) (* *profile-y* 16) #xffffff 0)
|
||||
(set-vector!
|
||||
(the-as vector4w (&+ a1-32 64))
|
||||
(* (+ *profile-x* *profile-w*) 16)
|
||||
(* (+ *profile-y* s2-1) 16)
|
||||
#xffffff
|
||||
0
|
||||
)
|
||||
)
|
||||
(&+! (-> arg0 base) 80)
|
||||
(let ((a0-12 (/ s2-1 a0-11)))
|
||||
(dotimes (a1-36 (-> v1-12 count))
|
||||
(let ((a2-22 (-> v1-12 data a1-36)))
|
||||
(when (< (-> a2-22 start-time) (-> a2-22 end-time))
|
||||
(let* ((t0-1 (* *ticks-per-frame* 2))
|
||||
(a3-15 (* (+ *profile-x* (/ (* (-> a2-22 start-time) *profile-w*) t0-1)) 16))
|
||||
(t0-4 (* (+ *profile-x* (/ (* (-> a2-22 end-time) *profile-w*) t0-1)) 16))
|
||||
(t3-1 (* (+ arg1 1840 (* (-> a2-22 depth) (the-as uint a0-12))) 16))
|
||||
(t1-7 (+ t3-1 (* a0-12 16)))
|
||||
(t2-5 (-> arg0 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer int128) t2-5) 0) (the-as int128 (-> *profile-work* sprite-tmpl dma-vif quad)))
|
||||
(set! (-> (the-as (pointer int128) t2-5) 1) (the-as int128 (-> *profile-work* sprite-tmpl quad 1)))
|
||||
(set-vector!
|
||||
(the-as vector4w (&+ t2-5 32))
|
||||
(the int (* 1.9921875 (the float (-> a2-22 color r))))
|
||||
(the int (* 1.9921875 (the float (-> a2-22 color g))))
|
||||
(the int (* 1.9921875 (the float (-> a2-22 color b))))
|
||||
(the-as int (-> a2-22 color a))
|
||||
)
|
||||
(set-vector! (the-as vector4w (&+ t2-5 48)) a3-15 t3-1 #xffffff 0)
|
||||
(set-vector! (the-as vector4w (&+ t2-5 64)) t0-4 t1-7 #xffffff 0)
|
||||
)
|
||||
(&+! (-> arg0 base) 80)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(cond
|
||||
((zero? s3-0)
|
||||
(let* ((s1-0 (-> v1-12 data 0 end-time))
|
||||
(f30-0 (* 100.0 (/ (the float s1-0) (the float *ticks-per-frame*))))
|
||||
)
|
||||
(cond
|
||||
(*profile-ticks*
|
||||
(let ((s0-0 draw-string-xy))
|
||||
(set! sv-16 format)
|
||||
(let ((a0-16 (clear *temp-string*))
|
||||
(a1-37 "~5D")
|
||||
)
|
||||
(sv-16 a0-16 a1-37 s1-0)
|
||||
)
|
||||
(s0-0
|
||||
*temp-string*
|
||||
arg0
|
||||
488
|
||||
arg1
|
||||
(if (>= f30-0 100.0)
|
||||
(font-color red)
|
||||
(font-color default)
|
||||
)
|
||||
(font-flags shadow right)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((s1-1 draw-string-xy))
|
||||
(format (clear *temp-string*) "~5,,2f" f30-0)
|
||||
(s1-1
|
||||
*temp-string*
|
||||
arg0
|
||||
488
|
||||
arg1
|
||||
(if (>= f30-0 100.0)
|
||||
(font-color red)
|
||||
(font-color default)
|
||||
)
|
||||
(font-flags shadow right)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((s1-2 0))
|
||||
(countdown (a0-21 (-> v1-12 count))
|
||||
(when (nonzero? (-> v1-12 data a0-21 end-time))
|
||||
(set! s1-2 (- (-> v1-12 data a0-21 end-time) (-> v1-12 data 0 start-time)))
|
||||
(goto cfg-23)
|
||||
)
|
||||
)
|
||||
(label cfg-23)
|
||||
(let ((f30-1 (* 100.0 (/ (the float s1-2) (the float *ticks-per-frame*)))))
|
||||
(cond
|
||||
(*profile-ticks*
|
||||
(let ((s0-2 draw-string-xy))
|
||||
(set! sv-32 format)
|
||||
(let ((a0-26 (clear *temp-string*))
|
||||
(a1-45 "~5D")
|
||||
)
|
||||
(sv-32 a0-26 a1-45 s1-2)
|
||||
)
|
||||
(s0-2
|
||||
*temp-string*
|
||||
arg0
|
||||
488
|
||||
arg1
|
||||
(if (>= f30-1 100.0)
|
||||
(font-color red)
|
||||
(font-color default)
|
||||
)
|
||||
(font-flags shadow right)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((s1-3 draw-string-xy))
|
||||
(format (clear *temp-string*) "~5,,2f" f30-1)
|
||||
(s1-3
|
||||
*temp-string*
|
||||
arg0
|
||||
488
|
||||
arg1
|
||||
(if (>= f30-1 100.0)
|
||||
(font-color red)
|
||||
(font-color default)
|
||||
)
|
||||
(font-flags shadow right)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! arg1 (+ s2-1 2 arg1))
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
(defmethod draw-text! ((this profile-array))
|
||||
"Generate DMA data for drawing the profile information screen."
|
||||
(let ((gp-0 *profile-collapse*))
|
||||
(dotimes (s5-0 (-> gp-0 count))
|
||||
(when (or (nonzero? (-> gp-0 data s5-0 count)) (nonzero? (-> gp-0 data s5-0 vu-count)))
|
||||
(dotimes (s4-0 (the-as int (-> gp-0 data s5-0 depth)))
|
||||
(format *stdcon* " ")
|
||||
)
|
||||
(format *stdcon* "~o~s~0k" (-> gp-0 data s5-0 color) (symbol->string (-> gp-0 data s5-0 name)))
|
||||
(if (nonzero? (-> gp-0 data s5-0 count))
|
||||
(format
|
||||
*stdcon*
|
||||
"~170h~5d~220h~5d~280h~5,,2f"
|
||||
(-> gp-0 data s5-0 count)
|
||||
(-> gp-0 data s5-0 code-time)
|
||||
(* 100.0 (/ (the float (-> gp-0 data s5-0 code-time)) (the float *ticks-per-frame*)))
|
||||
)
|
||||
)
|
||||
(if (nonzero? (-> gp-0 data s5-0 vu-count))
|
||||
(format
|
||||
*stdcon*
|
||||
"~338h~5d~388h~5d~448h~5,,2f"
|
||||
(-> gp-0 data s5-0 vu-count)
|
||||
(-> gp-0 data s5-0 vu-time)
|
||||
(* 100.0 (/ (the float (-> gp-0 data s5-0 vu-time)) (the float *ticks-per-frame*)))
|
||||
)
|
||||
)
|
||||
(format *stdcon* "~1k~%")
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
+249
@@ -420,4 +420,253 @@
|
||||
|
||||
(defmacro mouse-hold? (&rest buttons)
|
||||
`(logtest? (mouse-hold) (mouse-buttons ,@buttons))
|
||||
)
|
||||
|
||||
(defmacro gs-reg-list (&rest reg-ids)
|
||||
"Generate a giftag register descriptor list from reg-ids."
|
||||
|
||||
(let ((reg-count (length reg-ids)))
|
||||
(when (> (length reg-ids) 16)
|
||||
(ferror "too many regs passed to gs-reg-list")
|
||||
)
|
||||
(let ((list-to-splice '())
|
||||
(cur-lst reg-ids)
|
||||
(i -1))
|
||||
|
||||
;; this is questionable.
|
||||
(while (and (not (null? cur-lst)) (< i 15))
|
||||
(push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '())))
|
||||
(push! list-to-splice (string->symbol-format ":regs{}" (inc! i)))
|
||||
(pop! cur-lst)
|
||||
)
|
||||
|
||||
`(new 'static 'gif-tag-regs
|
||||
,@list-to-splice
|
||||
)
|
||||
)
|
||||
#| ;; the opengoal compiler does not have enough constant propagation for this for now
|
||||
(let ((i -1))
|
||||
|
||||
`(the-as gif-tag-regs (logior ,@(apply (lambda (x)
|
||||
`(shl (the-as uint (gif-reg-id ,x)) ,(* 4 (inc! i)))
|
||||
) reg-ids)
|
||||
))
|
||||
|
||||
)|#
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-base-type (buf pkt dma-type &rest body)
|
||||
"Base macro for adding stuff to a dma-buffer. Don't use this directly!"
|
||||
|
||||
(with-gensyms (dma-buf)
|
||||
`(let* ((,dma-buf ,buf)
|
||||
(,pkt (the-as ,dma-type (-> ,dma-buf base))))
|
||||
|
||||
,@body
|
||||
|
||||
(set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type)))
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-base-data (buf data-type forms)
|
||||
"Base macro for adding data words to a dma-buffer.
|
||||
Each form in forms is converted into data-type and added to the buffer. NO TYPE CHECKING is performed, so be careful!"
|
||||
|
||||
(with-gensyms (dma-buf ptr)
|
||||
`(let* ((,dma-buf ,buf)
|
||||
(,ptr (the-as (pointer ,data-type) (-> ,dma-buf base))))
|
||||
|
||||
,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms)
|
||||
|
||||
(set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type))))
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
(defmacro dma-buffer-add-cnt-vif2 (buf qwc vif0 vif1)
|
||||
"Add a dma-packet to a dma-buffer.
|
||||
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data after the tag and continue from after that point)
|
||||
and includes two vif-tags for vifcode, or something else if needed."
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc))
|
||||
|
||||
(set! (-> ,pkt vif0) ,vif0)
|
||||
(set! (-> ,pkt vif1) ,vif1)
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-ref-vif2 (buf qwc addr vif0 vif1)
|
||||
"Add a dma-packet to a dma-buffer.
|
||||
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data at addr and continue from after the tag)
|
||||
and includes two vif-tags for vifcode, or something else if needed."
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr)))
|
||||
|
||||
(set! (-> ,pkt vif0) ,vif0)
|
||||
(set! (-> ,pkt vif1) ,vif1)
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-ret (buf)
|
||||
"Add a dma-packet to a dma-buffer. This packet simply does a DMA 'return' "
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0))
|
||||
|
||||
(set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
(set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-gif-tag (buf giftag gifregs)
|
||||
"Add a giftag to a dma-buffer."
|
||||
|
||||
(with-gensyms (pkt)
|
||||
`(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag
|
||||
|
||||
(set! (-> ,pkt tag) ,giftag)
|
||||
|
||||
(set! (-> ,pkt regs) ,gifregs)
|
||||
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-uint64 (buf &rest body)
|
||||
"Add 64-bit words to a dma-buffer. See dma-buffer-add-base-data"
|
||||
|
||||
`(dma-buffer-add-base-data ,buf uint64 ,body)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-uint128 (buf &rest body)
|
||||
"Add 128-bit words to a dma-buffer. See dma-buffer-add-base-data"
|
||||
|
||||
`(dma-buffer-add-base-data ,buf uint128 ,body)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list)
|
||||
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
|
||||
The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop.
|
||||
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
|
||||
|
||||
(let ((reg-count (length reg-list))
|
||||
(qwc (+ (length reg-list) 1))
|
||||
(reg-names (apply first reg-list))
|
||||
(reg-datas (apply second reg-list))
|
||||
)
|
||||
`(begin
|
||||
;; dma tag
|
||||
(dma-buffer-add-cnt-vif2 ,buf ,qwc
|
||||
(new 'static 'vif-tag :cmd (vif-cmd flusha))
|
||||
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
|
||||
)
|
||||
|
||||
;; gif tag for editing gs regs
|
||||
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
|
||||
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
|
||||
)
|
||||
|
||||
;; gs regs
|
||||
(dma-buffer-add-uint64 ,buf
|
||||
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro dma-buffer-add-gs-set (buf &rest reg-list)
|
||||
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
|
||||
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
|
||||
|
||||
(let ((reg-count (length reg-list))
|
||||
(qwc (+ (length reg-list) 1))
|
||||
(reg-names (apply first reg-list))
|
||||
(reg-datas (apply second reg-list))
|
||||
)
|
||||
`(begin
|
||||
;; dma tag
|
||||
(dma-buffer-add-cnt-vif2 ,buf ,qwc
|
||||
(new 'static 'vif-tag :cmd (vif-cmd nop))
|
||||
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
|
||||
)
|
||||
|
||||
;; gif tag for editing gs regs
|
||||
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
|
||||
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
|
||||
)
|
||||
|
||||
;; gs regs
|
||||
(dma-buffer-add-uint64 ,buf
|
||||
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro with-dma-bucket (bindings &rest body)
|
||||
"Start a new dma-bucket in body that will be finished at the end.
|
||||
The bindings are the dma-buffer, dma-bucket and bucket-id respectively."
|
||||
|
||||
(let ((buf (first bindings))
|
||||
(bucket (second bindings))
|
||||
(bucket-id (third bindings))
|
||||
)
|
||||
|
||||
(with-gensyms (buf-start bucket-edge pkt)
|
||||
`(let ((,buf-start (-> ,buf base)))
|
||||
|
||||
,@body
|
||||
|
||||
;; we end the chain with a next. The bucket system will patch the next chain to this,
|
||||
;; and then patch all the buckets togehter before sending the DMA.
|
||||
(let ((,bucket-edge (the (pointer dma-tag) (-> ,buf base))))
|
||||
(let ((,pkt (the-as dma-packet (-> ,buf base))))
|
||||
|
||||
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id next)))
|
||||
(set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
(set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop)))
|
||||
|
||||
(set! (-> ,buf base) (&+ (the-as pointer ,pkt) (size-of dma-packet)))
|
||||
|
||||
)
|
||||
(dma-bucket-insert-tag ,bucket ,bucket-id
|
||||
,buf-start ;; the first thing in this chain, bucket will patch previous to this
|
||||
,bucket-edge ;; end of this chain (ptr to next tag)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
)
|
||||
)
|
||||
|
||||
(defmacro with-dma-buffer-add-bucket (bindings &key (bucket-group (-> (current-frame) bucket-group)) &rest body)
|
||||
"Bind a dma-buffer to a variable and use it on a block to allow adding things to a new bucket.
|
||||
usage: (with-dma-buffer-add-bucket ((buffer-name buffer) bucket-id) &rest body)
|
||||
example: (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) ...)"
|
||||
|
||||
`(let ((,(caar bindings) ,(cadar bindings)))
|
||||
(with-dma-bucket (,(caar bindings) ,bucket-group ,(cadr bindings))
|
||||
,@body
|
||||
)
|
||||
)
|
||||
)
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type camera-bank
|
||||
(deftype camera-bank (basic)
|
||||
((collide-move-rad float)
|
||||
(joypad uint32)
|
||||
(min-detectable-velocity float)
|
||||
(attack-timeout time-frame)
|
||||
(default-string-max-y meters)
|
||||
(default-string-min-y meters)
|
||||
(default-string-max-z meters)
|
||||
(default-string-min-z meters)
|
||||
(default-string-push-z meters)
|
||||
(default-tilt-adjust degrees)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type camera-bank
|
||||
(defmethod inspect ((this camera-bank))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this (-> this type))
|
||||
(format #t "~1Tcollide-move-rad: ~f~%" (-> this collide-move-rad))
|
||||
(format #t "~1Tjoypad: ~D~%" (-> this joypad))
|
||||
(format #t "~1Tmin-detectable-velocity: ~f~%" (-> this min-detectable-velocity))
|
||||
(format #t "~1Tattack-timeout: ~D~%" (-> this attack-timeout))
|
||||
(format #t "~1Tdefault-string-max-y: (meters ~m)~%" (-> this default-string-max-y))
|
||||
(format #t "~1Tdefault-string-min-y: (meters ~m)~%" (-> this default-string-min-y))
|
||||
(format #t "~1Tdefault-string-max-z: (meters ~m)~%" (-> this default-string-max-z))
|
||||
(format #t "~1Tdefault-string-min-z: (meters ~m)~%" (-> this default-string-min-z))
|
||||
(format #t "~1Tdefault-string-push-z: (meters ~m)~%" (-> this default-string-push-z))
|
||||
(format #t "~1Tdefault-tilt-adjust: (deg ~r)~%" (-> this default-tilt-adjust))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for symbol *CAMERA-bank*, type camera-bank
|
||||
(define *CAMERA-bank* (new 'static 'camera-bank
|
||||
:collide-move-rad 1638.4
|
||||
:min-detectable-velocity 40.96
|
||||
:attack-timeout (seconds 0.25)
|
||||
:default-string-max-y (meters 3)
|
||||
:default-string-min-y (meters 1)
|
||||
:default-string-max-z (meters 12.5)
|
||||
:default-string-min-z (meters 5)
|
||||
:default-string-push-z (meters 10)
|
||||
:default-tilt-adjust (degrees -6.5000005)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition of type camera-master-bank
|
||||
(deftype camera-master-bank (basic)
|
||||
((onscreen-head-height meters)
|
||||
(onscreen-foot-height meters)
|
||||
(target-height meters)
|
||||
(up-move-to-pitch-ratio-in-air float)
|
||||
(down-move-to-pitch-ratio-in-air float)
|
||||
(up-move-to-pitch-on-ground float)
|
||||
(down-move-to-pitch-on-ground float)
|
||||
(pitch-off-blend float)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type camera-master-bank
|
||||
(defmethod inspect ((this camera-master-bank))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this (-> this type))
|
||||
(format #t "~1Tonscreen-head-height: (meters ~m)~%" (-> this onscreen-head-height))
|
||||
(format #t "~1Tonscreen-foot-height: (meters ~m)~%" (-> this onscreen-foot-height))
|
||||
(format #t "~1Ttarget-height: (meters ~m)~%" (-> this target-height))
|
||||
(format #t "~1Tup-move-to-pitch-ratio-in-air: ~f~%" (-> this up-move-to-pitch-ratio-in-air))
|
||||
(format #t "~1Tdown-move-to-pitch-ratio-in-air: ~f~%" (-> this down-move-to-pitch-ratio-in-air))
|
||||
(format #t "~1Tup-move-to-pitch-on-ground: ~f~%" (-> this up-move-to-pitch-on-ground))
|
||||
(format #t "~1Tdown-move-to-pitch-on-ground: ~f~%" (-> this down-move-to-pitch-on-ground))
|
||||
(format #t "~1Tpitch-off-blend: ~f~%" (-> this pitch-off-blend))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for symbol *CAMERA_MASTER-bank*, type camera-master-bank
|
||||
(define *CAMERA_MASTER-bank* (new 'static 'camera-master-bank
|
||||
:onscreen-head-height (meters 2.65)
|
||||
:onscreen-foot-height (meters -0.5)
|
||||
:target-height (meters 2.15)
|
||||
:up-move-to-pitch-ratio-in-air 1.0
|
||||
:down-move-to-pitch-ratio-in-air 0.5
|
||||
:up-move-to-pitch-on-ground 0.9
|
||||
:down-move-to-pitch-on-ground 0.9
|
||||
:pitch-off-blend 0.5
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
0
|
||||
|
||||
|
||||
|
||||
|
||||
+679
@@ -0,0 +1,679 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type user-setting-data
|
||||
(deftype user-setting-data (structure)
|
||||
((border-mode symbol)
|
||||
(process-mask process-mask)
|
||||
(unknown-int32 int32)
|
||||
(language language-enum)
|
||||
(movie (pointer process) :offset 32)
|
||||
(talking (pointer process))
|
||||
(spooling (pointer process))
|
||||
(hint (pointer process))
|
||||
(ambient (pointer process))
|
||||
(video-mode symbol)
|
||||
(aspect-ratio symbol)
|
||||
(auto-save symbol :offset 64)
|
||||
(bg-r float)
|
||||
(bg-g float)
|
||||
(bg-b float)
|
||||
(bg-a float)
|
||||
(bg-a-speed float)
|
||||
(bg-a-force float)
|
||||
(blur-a float)
|
||||
(blur-a-speed float)
|
||||
(allow-progress symbol)
|
||||
(allow-pause symbol)
|
||||
(movie-name symbol :offset 120)
|
||||
(weather symbol)
|
||||
(task-mask task-mask :offset 140)
|
||||
(duck symbol :offset 148)
|
||||
(attack symbol)
|
||||
(gun symbol)
|
||||
(board symbol)
|
||||
(jump symbol)
|
||||
(speed-mult float)
|
||||
(features uint64)
|
||||
(vehicles uint64)
|
||||
(sfx-volume float)
|
||||
(sfx-volume-movie float)
|
||||
(music-volume float)
|
||||
(music-volume-movie float)
|
||||
(dialog-volume float)
|
||||
(dialog-volume-talker float)
|
||||
(ambient-volume float)
|
||||
(ambient-volume-movie float)
|
||||
(dynamic-ambient-volume float)
|
||||
(talker-volume float)
|
||||
(sound-flava uint8)
|
||||
(sound-flava-priority float)
|
||||
(mode-sound-bank uint32)
|
||||
(sound-excitement float)
|
||||
(sound-reverb float)
|
||||
(stereo-mode int32)
|
||||
(music symbol)
|
||||
(sound-stinger int32)
|
||||
(spool-anim spool-anim)
|
||||
(sound-mode uint32)
|
||||
(task-manager (pointer process))
|
||||
(task symbol)
|
||||
(airlock symbol)
|
||||
(minimap uint32)
|
||||
(sound-tune uint32)
|
||||
(allow-continue symbol)
|
||||
(subtitle symbol :offset 304)
|
||||
(doorway symbol)
|
||||
(gem symbol)
|
||||
(half-speed symbol)
|
||||
(gun-buoy symbol)
|
||||
(double-jump symbol)
|
||||
(pilot symbol)
|
||||
(pilot-exit symbol)
|
||||
(pilot-death basic)
|
||||
(speech-control symbol)
|
||||
(vehicle-hijacking symbol)
|
||||
(darkjak symbol)
|
||||
(lightjak basic)
|
||||
(endlessfall symbol)
|
||||
(rain float)
|
||||
(snow float)
|
||||
(exclusive-load symbol)
|
||||
(render symbol)
|
||||
(allow-timeout symbol)
|
||||
(mirror symbol)
|
||||
(movie-skip-frame float)
|
||||
(allow-blackout symbol)
|
||||
(race-minimap int32)
|
||||
(beard symbol)
|
||||
(ignore-target symbol)
|
||||
(subtitle-language uint8)
|
||||
(sound-bank-load symbol)
|
||||
(allow-error symbol)
|
||||
(under-water-pitch-mod float)
|
||||
(slow-time float)
|
||||
(restart-info basic :offset 428)
|
||||
(fail-info basic)
|
||||
(death-info basic)
|
||||
(quit-info basic)
|
||||
(extra-bank-count uint32)
|
||||
(extra-bank pair 3)
|
||||
(borrow-count uint32)
|
||||
(borrow pair 3)
|
||||
(exclusive-task-count uint32)
|
||||
(exclusive-task int32 3)
|
||||
(level-trans-time int32)
|
||||
(scarf float)
|
||||
(goggles float)
|
||||
(board-trail basic)
|
||||
(letterbox float :offset 572)
|
||||
(letterbox-speed float)
|
||||
(borrow-city-count uint32 :offset 620)
|
||||
(borrow-city pair 3)
|
||||
(audio-language language-enum :offset 748)
|
||||
(special-volume float :offset 796)
|
||||
(pad uint8 108 :offset 800)
|
||||
)
|
||||
(:methods
|
||||
(user-setting-data-method-9 (_type_ engine engine-pers engine) user-setting-data)
|
||||
(user-setting-data-method-10 (_type_ object symbol float uint) user-setting-data)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type user-setting-data
|
||||
(defmethod inspect ((this user-setting-data))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-79)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this 'user-setting-data)
|
||||
(format #t "~1Tborder-mode: ~A~%" (-> this border-mode))
|
||||
(format #t "~1Tprocess-mask: #x~X~%" (-> this process-mask))
|
||||
(let ((t9-3 format)
|
||||
(a0-4 #t)
|
||||
(a1-3 "~1Tlanguage: #x~X : ~S~%")
|
||||
(a2-3 (-> this language))
|
||||
(v1-2 (-> this language))
|
||||
)
|
||||
(t9-3 a0-4 a1-3 a2-3 (cond
|
||||
((= v1-2 (language-enum russian))
|
||||
"russian"
|
||||
)
|
||||
((= v1-2 (language-enum english))
|
||||
"english"
|
||||
)
|
||||
((= v1-2 (language-enum uk-english))
|
||||
"uk-english"
|
||||
)
|
||||
((= v1-2 (language-enum french))
|
||||
"french"
|
||||
)
|
||||
((= v1-2 (language-enum korean))
|
||||
"korean"
|
||||
)
|
||||
((= v1-2 (language-enum german))
|
||||
"german"
|
||||
)
|
||||
((= v1-2 (language-enum dutch))
|
||||
"dutch"
|
||||
)
|
||||
((= v1-2 (language-enum portuguese))
|
||||
"portuguese"
|
||||
)
|
||||
((= v1-2 (language-enum spanish))
|
||||
"spanish"
|
||||
)
|
||||
((= v1-2 (language-enum commentary))
|
||||
"commentary"
|
||||
)
|
||||
((= v1-2 (language-enum italian))
|
||||
"italian"
|
||||
)
|
||||
((= v1-2 (language-enum japanese))
|
||||
"japanese"
|
||||
)
|
||||
(else
|
||||
"*unknown*"
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(format #t "~1Tmovie: ~A~%" (ppointer->process (-> this movie)))
|
||||
(format #t "~1Ttalking: ~A~%" (ppointer->process (-> this talking)))
|
||||
(format #t "~1Tspooling: ~A~%" (ppointer->process (-> this spooling)))
|
||||
(format #t "~1Thint: ~A~%" (ppointer->process (-> this hint)))
|
||||
(format #t "~1Tambient: ~A~%" (ppointer->process (-> this ambient)))
|
||||
(format #t "~1Tvideo-mode: ~A~%" (-> this video-mode))
|
||||
(format #t "~1Taspect-ratio: ~A~%" (-> this aspect-ratio))
|
||||
(format #t "~1Tauto-save: ~A~%" (-> this auto-save))
|
||||
(format #t "~1Tbg-r: ~f~%" (-> this bg-r))
|
||||
(format #t "~1Tbg-g: ~f~%" (-> this bg-g))
|
||||
(format #t "~1Tbg-b: ~f~%" (-> this bg-b))
|
||||
(format #t "~1Tbg-a: ~f~%" (-> this bg-a))
|
||||
(format #t "~1Tbg-a-speed: ~f~%" (-> this bg-a-speed))
|
||||
(format #t "~1Tbg-a-force: ~f~%" (-> this bg-a-force))
|
||||
(format #t "~1Tblur-a: ~f~%" (-> this blur-a))
|
||||
(format #t "~1Tblur-a-speed: ~f~%" (-> this blur-a-speed))
|
||||
(format #t "~1Tallow-progress: ~A~%" (-> this allow-progress))
|
||||
(format #t "~1Tallow-pause: ~A~%" (-> this allow-pause))
|
||||
(format #t "~1Tmovie-name: ~A~%" (-> this movie-name))
|
||||
(format #t "~1Tweather: ~A~%" (-> this weather))
|
||||
(format #t "~1Ttask-mask: #x~X : (task-mask " (-> this task-mask))
|
||||
(let ((s5-0 (-> this task-mask)))
|
||||
(if (= (logand s5-0 (task-mask task0)) (task-mask task0))
|
||||
(format #t "task0 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask task2)) (task-mask task2))
|
||||
(format #t "task2 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask task4)) (task-mask task4))
|
||||
(format #t "task4 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask task6)) (task-mask task6))
|
||||
(format #t "task6 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask ctywide)) (task-mask ctywide))
|
||||
(format #t "ctywide ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask never)) (task-mask never))
|
||||
(format #t "never ")
|
||||
)
|
||||
(if (= (logand (task-mask movie1) s5-0) (task-mask movie1))
|
||||
(format #t "movie1 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask vehicle)) (task-mask vehicle))
|
||||
(format #t "vehicle ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask dummy1)) (task-mask dummy1))
|
||||
(format #t "dummy1 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask primary0)) (task-mask primary0))
|
||||
(format #t "primary0 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask task1)) (task-mask task1))
|
||||
(format #t "task1 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask task3)) (task-mask task3))
|
||||
(format #t "task3 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask task5)) (task-mask task5))
|
||||
(format #t "task5 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask task7)) (task-mask task7))
|
||||
(format #t "task7 ")
|
||||
)
|
||||
(if (= (logand (task-mask movie2) s5-0) (task-mask movie2))
|
||||
(format #t "movie2 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask done)) (task-mask done))
|
||||
(format #t "done ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask special)) (task-mask special))
|
||||
(format #t "special ")
|
||||
)
|
||||
(if (= (logand (task-mask movie0) s5-0) (task-mask movie0))
|
||||
(format #t "movie0 ")
|
||||
)
|
||||
(if (= (logand s5-0 (task-mask dummy0)) (task-mask dummy0))
|
||||
(format #t "dummy0 ")
|
||||
)
|
||||
)
|
||||
(format #t ")~%")
|
||||
(format #t "~1Tduck: ~A~%" (-> this duck))
|
||||
(format #t "~1Tattack: ~A~%" (-> this attack))
|
||||
(format #t "~1Tgun: ~A~%" (-> this gun))
|
||||
(format #t "~1Tboard: ~A~%" (-> this board))
|
||||
(format #t "~1Tjump: ~A~%" (-> this jump))
|
||||
(format #t "~1Tspeed-mult: ~f~%" (-> this speed-mult))
|
||||
(format #t "~1Tfeatures: ~D~%" (-> this features))
|
||||
(format #t "~1Tvehicles: ~D~%" (-> this vehicles))
|
||||
(format #t "~1Tsfx-volume: ~f~%" (-> this sfx-volume))
|
||||
(format #t "~1Tsfx-volume-movie: ~f~%" (-> this sfx-volume-movie))
|
||||
(format #t "~1Tmusic-volume: ~f~%" (-> this music-volume))
|
||||
(format #t "~1Tmusic-volume-movie: ~f~%" (-> this music-volume-movie))
|
||||
(format #t "~1Tdialog-volume: ~f~%" (-> this dialog-volume))
|
||||
(format #t "~1Tdialog-volume-talker: ~f~%" (-> this dialog-volume-talker))
|
||||
(format #t "~1Tambient-volume: ~f~%" (-> this ambient-volume))
|
||||
(format #t "~1Tambient-volume-movie: ~f~%" (-> this ambient-volume-movie))
|
||||
(format #t "~1Tdynamic-ambient-volume: ~f~%" (-> this dynamic-ambient-volume))
|
||||
(format #t "~1Ttalker-volume: ~f~%" (-> this talker-volume))
|
||||
(format #t "~1Tsound-flava: ~D~%" (-> this sound-flava))
|
||||
(format #t "~1Tsound-flava-priority: ~f~%" (-> this sound-flava-priority))
|
||||
(format #t "~1Tmode-sound-bank: ~A~%" (-> this mode-sound-bank))
|
||||
(format #t "~1Tsound-excitement: ~f~%" (-> this sound-excitement))
|
||||
(format #t "~1Tsound-reverb: ~f~%" (-> this sound-reverb))
|
||||
(format #t "~1Tstereo-mode: ~D~%" (-> this stereo-mode))
|
||||
(format #t "~1Tmusic: ~A~%" (-> this music))
|
||||
(format #t "~1Tsound-stinger: ~D~%" (-> this sound-stinger))
|
||||
(format #t "~1Tspool-anim: ~A~%" (-> this spool-anim))
|
||||
(format #t "~1Tsound-mode: ~D~%" (-> this sound-mode))
|
||||
(format #t "~1Ttask-manager: ~A~%" (ppointer->process (-> this task-manager)))
|
||||
(format #t "~1Ttask: ~A~%" (-> this task))
|
||||
(format #t "~1Tairlock: ~A~%" (-> this airlock))
|
||||
(format #t "~1Tminimap: ~D~%" (-> this minimap))
|
||||
(format #t "~1Tsound-tune: ~D~%" (-> this sound-tune))
|
||||
(format #t "~1Tallow-continue: ~A~%" (-> this allow-continue))
|
||||
(format #t "~1Tsubtitle: ~A~%" (-> this subtitle))
|
||||
(format #t "~1Tdoorway: ~A~%" (-> this doorway))
|
||||
(format #t "~1Tgem: ~A~%" (-> this gem))
|
||||
(format #t "~1Thalf-speed: ~A~%" (-> this half-speed))
|
||||
(format #t "~1Tgun-buoy: ~A~%" (-> this gun-buoy))
|
||||
(format #t "~1Tdouble-jump: ~A~%" (-> this double-jump))
|
||||
(format #t "~1Tpilot: ~A~%" (-> this pilot))
|
||||
(format #t "~1Tpilot-exit: ~A~%" (-> this pilot-exit))
|
||||
(format #t "~1Tpilot-death: ~A~%" (-> this pilot-death))
|
||||
(format #t "~1Tspeech-control: ~A~%" (-> this speech-control))
|
||||
(format #t "~1Tvehicle-hijacking: ~A~%" (-> this vehicle-hijacking))
|
||||
(format #t "~1Tdarkjak: ~A~%" (-> this darkjak))
|
||||
(format #t "~1Tlightjak: ~A~%" (-> this lightjak))
|
||||
(format #t "~1Tendlessfall: ~A~%" (-> this endlessfall))
|
||||
(format #t "~1Train: ~f~%" (-> this rain))
|
||||
(format #t "~1Tsnow: ~f~%" (-> this snow))
|
||||
(format #t "~1Texclusive-load: ~A~%" (-> this exclusive-load))
|
||||
(format #t "~1Trender: ~A~%" (-> this render))
|
||||
(format #t "~1Tallow-timeout: ~A~%" (-> this allow-timeout))
|
||||
(format #t "~1Tmirror: ~A~%" (-> this mirror))
|
||||
(format #t "~1Tmovie-skip-frame: ~f~%" (-> this movie-skip-frame))
|
||||
(format #t "~1Tallow-blackout: ~A~%" (-> this allow-blackout))
|
||||
(format #t "~1Trace-minimap: ~D~%" (-> this race-minimap))
|
||||
(format #t "~1Tbeard: ~A~%" (-> this beard))
|
||||
(format #t "~1Tignore-target: ~A~%" (-> this ignore-target))
|
||||
(format #t "~1Tsubtitle-language: ~D~%" (-> this subtitle-language))
|
||||
(format #t "~1Tsound-bank-load: ~A~%" (-> this sound-bank-load))
|
||||
(format #t "~1Tallow-error: ~A~%" (-> this allow-error))
|
||||
(format #t "~1Tunder-water-pitch-mod: ~f~%" (-> this under-water-pitch-mod))
|
||||
(format #t "~1Tslow-time: ~f~%" (-> this slow-time))
|
||||
(format #t "~1Trestart-info: ~A~%" (-> this restart-info))
|
||||
(format #t "~1Tfail-info: ~A~%" (-> this fail-info))
|
||||
(format #t "~1Tdeath-info: ~A~%" (-> this death-info))
|
||||
(format #t "~1Tquit-info: ~A~%" (-> this quit-info))
|
||||
(format #t "~1Textra-bank-count: ~D~%" (-> this extra-bank-count))
|
||||
(format #t "~1Textra-bank[3] @ #x~X~%" (-> this extra-bank))
|
||||
(format #t "~1Tborrow-count: ~D~%" (-> this borrow-count))
|
||||
(format #t "~1Tborrow[3] @ #x~X~%" (-> this borrow))
|
||||
(format #t "~1Texclusive-task-count: ~D~%" (-> this exclusive-task-count))
|
||||
(format #t "~1Texclusive-task[3] @ #x~X~%" (-> this exclusive-task))
|
||||
(format #t "~1Tlevel-trans-time: ~D~%" (-> this level-trans-time))
|
||||
(format #t "~1Tscarf: ~f~%" (-> this scarf))
|
||||
(format #t "~1Tgoggles: ~f~%" (-> this goggles))
|
||||
(format #t "~1Tboard-trail: ~A~%" (-> this board-trail))
|
||||
(format #t "~1Tletterbox: ~f~%" (-> this letterbox))
|
||||
(format #t "~1Tletterbox-speed: ~f~%" (-> this letterbox-speed))
|
||||
(format #t "~1Tborrow-city-count: ~D~%" (-> this borrow-city-count))
|
||||
(format #t "~1Tborrow-city[3] @ #x~X~%" (-> this borrow-city))
|
||||
(format #t "~1Taudio-language: ~D~%" (-> this audio-language))
|
||||
(format #t "~1Tspecial-volume: ~f~%" (-> this special-volume))
|
||||
(label cfg-79)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition of type cam-setting-data
|
||||
(deftype cam-setting-data (structure)
|
||||
((fov degrees)
|
||||
(pov-handle handle :offset 16)
|
||||
(pov-bone int32)
|
||||
(pov-offset vector :inline)
|
||||
(string-default symbol)
|
||||
(string-max-length meters)
|
||||
(string-min-length meters)
|
||||
(string-max-height meters)
|
||||
(string-min-height meters)
|
||||
(string-cliff-height meters)
|
||||
(string-camera-floor meters)
|
||||
(string-camera-ceiling meters)
|
||||
(gun-max-height meters)
|
||||
(gun-min-height meters)
|
||||
(string-local-down vector :inline)
|
||||
(slave-options cam-slave-options)
|
||||
(matrix-blend-max-angle degrees)
|
||||
(matrix-blend-max-partial float)
|
||||
(string-spline-max-move meters)
|
||||
(string-spline-accel meters)
|
||||
(string-spline-max-move-player meters)
|
||||
(string-spline-accel-player meters)
|
||||
(string-startup-vector vector :inline)
|
||||
(use-string-startup-vector symbol)
|
||||
(look-at-point vector :inline)
|
||||
(use-look-at-point symbol)
|
||||
(target-height meters)
|
||||
(foot-offset meters)
|
||||
(head-offset meters)
|
||||
(teleport-on-entity-change symbol)
|
||||
(entity-name string)
|
||||
(cam-slope string)
|
||||
(entity-or-mode-changed symbol)
|
||||
(master-options cam-master-options)
|
||||
(entity-mask uint32)
|
||||
(mode-name symbol)
|
||||
(real-entity-name string)
|
||||
(cam-mode symbol)
|
||||
(interp-time uint32)
|
||||
(no-intro symbol)
|
||||
(use-point-of-interest symbol)
|
||||
(point-of-interest vector :inline)
|
||||
(handle-of-interest handle)
|
||||
(mouse-tumble-point vector :inline)
|
||||
(use-mouse-tumble-point symbol)
|
||||
(mouse-input symbol)
|
||||
(cpad1-skip-buttons symbol)
|
||||
(butt-handle handle)
|
||||
(butt-angle float)
|
||||
(extra-follow-height float)
|
||||
(interp-time-priority uint32)
|
||||
(string-max-length-default symbol)
|
||||
(string-min-length-default symbol)
|
||||
(string-max-height-default symbol)
|
||||
(string-min-height-default symbol)
|
||||
(flip-vertical symbol)
|
||||
(flip-horizontal symbol)
|
||||
(fov-priority float :offset 384)
|
||||
(dummy object 98)
|
||||
)
|
||||
(:methods
|
||||
(cam-setting-data-method-9 (_type_ engine engine-pers engine) _type_)
|
||||
(cam-setting-data-method-10 (_type_ object (pointer process) float int) _type_)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type cam-setting-data
|
||||
(defmethod inspect ((this cam-setting-data))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-76)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this 'cam-setting-data)
|
||||
(format #t "~1Tfov: (deg ~r)~%" (-> this fov))
|
||||
(format #t "~1Tpov-handle: ~D~%" (-> this pov-handle))
|
||||
(format #t "~1Tpov-bone: ~D~%" (-> this pov-bone))
|
||||
(format #t "~1Tpov-offset: ~`vector`P~%" (-> this pov-offset))
|
||||
(format #t "~1Tstring-default: ~`boolean`P~%" (-> this string-default))
|
||||
(format #t "~1Tstring-max-length: (meters ~m)~%" (-> this string-max-length))
|
||||
(format #t "~1Tstring-min-length: (meters ~m)~%" (-> this string-min-length))
|
||||
(format #t "~1Tstring-max-height: (meters ~m)~%" (-> this string-max-height))
|
||||
(format #t "~1Tstring-min-height: (meters ~m)~%" (-> this string-min-height))
|
||||
(format #t "~1Tstring-cliff-height: (meters ~m)~%" (-> this string-cliff-height))
|
||||
(format #t "~1Tstring-camera-floor: (meters ~m)~%" (-> this string-camera-floor))
|
||||
(format #t "~1Tstring-camera-ceiling: (meters ~m)~%" (-> this string-camera-ceiling))
|
||||
(format #t "~1Tgun-max-height: (meters ~m)~%" (-> this gun-max-height))
|
||||
(format #t "~1Tgun-min-height: (meters ~m)~%" (-> this gun-min-height))
|
||||
(format #t "~1Tstring-local-down: ~`vector`P~%" (-> this string-local-down))
|
||||
(format #t "~1Tslave-options: #x~X : (cam-slave-options " (-> this slave-options))
|
||||
(let ((s5-0 (-> this slave-options)))
|
||||
(if (= (logand s5-0 (cam-slave-options SAME_SIDE)) (cam-slave-options SAME_SIDE))
|
||||
(format #t "SAME_SIDE ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options GUN_CAM) s5-0) (cam-slave-options GUN_CAM))
|
||||
(format #t "GUN_CAM ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options BOMBBOT) s5-0) (cam-slave-options BOMBBOT))
|
||||
(format #t "BOMBBOT ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options STICKY_ANGLE)) (cam-slave-options STICKY_ANGLE))
|
||||
(format #t "STICKY_ANGLE ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options FIND_HIDDEN_TARGET)) (cam-slave-options FIND_HIDDEN_TARGET))
|
||||
(format #t "FIND_HIDDEN_TARGET ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options RAPID_TRACKING) s5-0) (cam-slave-options RAPID_TRACKING))
|
||||
(format #t "RAPID_TRACKING ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options SHRINK_MAX_ANGLE)) (cam-slave-options SHRINK_MAX_ANGLE))
|
||||
(format #t "SHRINK_MAX_ANGLE ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options JUMP_PITCHES)) (cam-slave-options JUMP_PITCHES))
|
||||
(format #t "JUMP_PITCHES ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options LINE_OF_SIGHT)) (cam-slave-options LINE_OF_SIGHT))
|
||||
(format #t "LINE_OF_SIGHT ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options PLAYER_MOVING_CAMERA)) (cam-slave-options PLAYER_MOVING_CAMERA))
|
||||
(format #t "PLAYER_MOVING_CAMERA ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options ALLOW_SHIFT_BUTTONS) s5-0) (cam-slave-options ALLOW_SHIFT_BUTTONS))
|
||||
(format #t "ALLOW_SHIFT_BUTTONS ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options NO_ROTATE)) (cam-slave-options NO_ROTATE))
|
||||
(format #t "NO_ROTATE ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options WIDE_FOV) s5-0) (cam-slave-options WIDE_FOV))
|
||||
(format #t "WIDE_FOV ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options MOVE_SPHERICAL)) (cam-slave-options MOVE_SPHERICAL))
|
||||
(format #t "MOVE_SPHERICAL ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options DRAG)) (cam-slave-options DRAG))
|
||||
(format #t "DRAG ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options MOVEMENT_BLOCKED)) (cam-slave-options MOVEMENT_BLOCKED))
|
||||
(format #t "MOVEMENT_BLOCKED ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options BLOCK_RIGHT_STICK) s5-0) (cam-slave-options BLOCK_RIGHT_STICK))
|
||||
(format #t "BLOCK_RIGHT_STICK ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options COLLIDE)) (cam-slave-options COLLIDE))
|
||||
(format #t "COLLIDE ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options ALLOW_Z_ROT)) (cam-slave-options ALLOW_Z_ROT))
|
||||
(format #t "ALLOW_Z_ROT ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options JUMP_LAG) s5-0) (cam-slave-options JUMP_LAG))
|
||||
(format #t "JUMP_LAG ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options BIKE_MODE)) (cam-slave-options BIKE_MODE))
|
||||
(format #t "BIKE_MODE ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options EASE_SPLINE_IDX) s5-0) (cam-slave-options EASE_SPLINE_IDX))
|
||||
(format #t "EASE_SPLINE_IDX ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options GOTO_GOOD_POINT)) (cam-slave-options GOTO_GOOD_POINT))
|
||||
(format #t "GOTO_GOOD_POINT ")
|
||||
)
|
||||
(if (= (logand s5-0 (cam-slave-options BUTT_CAM)) (cam-slave-options BUTT_CAM))
|
||||
(format #t "BUTT_CAM ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) s5-0)
|
||||
(cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA)
|
||||
)
|
||||
(format #t "VERTICAL_FOLLOW_MATCHES_CAMERA ")
|
||||
)
|
||||
(if (= (logand (cam-slave-options HAVE_BUTT_HANDLE) s5-0) (cam-slave-options HAVE_BUTT_HANDLE))
|
||||
(format #t "HAVE_BUTT_HANDLE ")
|
||||
)
|
||||
)
|
||||
(format #t ")~%")
|
||||
(format #t "~1Tmatrix-blend-max-angle: (deg ~r)~%" (-> this matrix-blend-max-angle))
|
||||
(format #t "~1Tmatrix-blend-max-partial: ~f~%" (-> this matrix-blend-max-partial))
|
||||
(format #t "~1Tstring-spline-max-move: (meters ~m)~%" (-> this string-spline-max-move))
|
||||
(format #t "~1Tstring-spline-accel: (meters ~m)~%" (-> this string-spline-accel))
|
||||
(format #t "~1Tstring-spline-max-move-player: (meters ~m)~%" (-> this string-spline-max-move-player))
|
||||
(format #t "~1Tstring-spline-accel-player: (meters ~m)~%" (-> this string-spline-accel-player))
|
||||
(format #t "~1Tstring-startup-vector: ~`vector`P~%" (-> this string-startup-vector))
|
||||
(format #t "~1Tuse-string-startup-vector: ~A~%" (-> this use-string-startup-vector))
|
||||
(format #t "~1Tlook-at-point: ~`vector`P~%" (-> this look-at-point))
|
||||
(format #t "~1Tuse-look-at-point: ~A~%" (-> this use-look-at-point))
|
||||
(format #t "~1Ttarget-height: (meters ~m)~%" (-> this target-height))
|
||||
(format #t "~1Tfoot-offset: (meters ~m)~%" (-> this foot-offset))
|
||||
(format #t "~1Thead-offset: (meters ~m)~%" (-> this head-offset))
|
||||
(format #t "~1Tteleport-on-entity-change: ~`boolean`P~%" (-> this teleport-on-entity-change))
|
||||
(format #t "~1Tentity-name: ~`string`P~%" (-> this entity-name))
|
||||
(format #t "~1Tcam-slope: ~`string`P~%" (-> this cam-slope))
|
||||
(format #t "~1Tentity-or-mode-changed: ~`boolean`P~%" (-> this entity-or-mode-changed))
|
||||
(format #t "~1Tmaster-options: #x~X : (cam-master-options " (-> this master-options))
|
||||
(let ((s5-1 (-> this master-options)))
|
||||
(if (= (logand s5-1 (cam-master-options IMMEDIATE_STRING_MIN_MAX)) (cam-master-options IMMEDIATE_STRING_MIN_MAX))
|
||||
(format #t "IMMEDIATE_STRING_MIN_MAX ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options IN_BASE_REGION)) (cam-master-options IN_BASE_REGION))
|
||||
(format #t "IN_BASE_REGION ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options FLIP_COMBINER)) (cam-master-options FLIP_COMBINER))
|
||||
(format #t "FLIP_COMBINER ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options SET_COMBINER_AXIS)) (cam-master-options SET_COMBINER_AXIS))
|
||||
(format #t "SET_COMBINER_AXIS ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options USE_L1_R1)) (cam-master-options USE_L1_R1))
|
||||
(format #t "USE_L1_R1 ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options IGNORE_ANALOG)) (cam-master-options IGNORE_ANALOG))
|
||||
(format #t "IGNORE_ANALOG ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options BLOCK_RIGHT_STICK)) (cam-master-options BLOCK_RIGHT_STICK))
|
||||
(format #t "BLOCK_RIGHT_STICK ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options READ_BUTTONS)) (cam-master-options READ_BUTTONS))
|
||||
(format #t "READ_BUTTONS ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options HAVE_TARGET)) (cam-master-options HAVE_TARGET))
|
||||
(format #t "HAVE_TARGET ")
|
||||
)
|
||||
(if (= (logand s5-1 (cam-master-options HAVE_EASE_TO_POS)) (cam-master-options HAVE_EASE_TO_POS))
|
||||
(format #t "HAVE_EASE_TO_POS ")
|
||||
)
|
||||
)
|
||||
(format #t ")~%")
|
||||
(format #t "~1Tentity-mask: ~D~%" (-> this entity-mask))
|
||||
(format #t "~1Tmode-name: ~A~%" (-> this mode-name))
|
||||
(format #t "~1Treal-entity-name: ~`string`P~%" (-> this real-entity-name))
|
||||
(format #t "~1Tcam-mode: ~A~%" (-> this cam-mode))
|
||||
(format #t "~1Tinterp-time: ~D~%" (-> this interp-time))
|
||||
(format #t "~1Tno-intro: ~A~%" (-> this no-intro))
|
||||
(format #t "~1Tuse-point-of-interest: ~A~%" (-> this use-point-of-interest))
|
||||
(format #t "~1Tpoint-of-interest: ~`vector`P~%" (-> this point-of-interest))
|
||||
(format #t "~1Thandle-of-interest: ~D~%" (-> this handle-of-interest))
|
||||
(format #t "~1Tmouse-tumble-point: ~`vector`P~%" (-> this mouse-tumble-point))
|
||||
(format #t "~1Tuse-mouse-tumble-point: ~A~%" (-> this use-mouse-tumble-point))
|
||||
(format #t "~1Tmouse-input: ~A~%" (-> this mouse-input))
|
||||
(format #t "~1Tcpad1-skip-buttons: ~A~%" (-> this cpad1-skip-buttons))
|
||||
(format #t "~1Tbutt-handle: ~D~%" (-> this butt-handle))
|
||||
(format #t "~1Tbutt-angle: ~f~%" (-> this butt-angle))
|
||||
(format #t "~1Textra-follow-height: ~f~%" (-> this extra-follow-height))
|
||||
(format #t "~1Tinterp-time-priority: ~D~%" (-> this interp-time-priority))
|
||||
(format #t "~1Tstring-max-length-default: ~A~%" (-> this string-max-length-default))
|
||||
(format #t "~1Tstring-min-length-default: ~A~%" (-> this string-min-length-default))
|
||||
(format #t "~1Tstring-max-height-default: ~A~%" (-> this string-max-height-default))
|
||||
(format #t "~1Tstring-min-height-default: ~A~%" (-> this string-min-height-default))
|
||||
(format #t "~1Tflip-vertical: ~A~%" (-> this flip-vertical))
|
||||
(format #t "~1Tflip-horizontal: ~A~%" (-> this flip-horizontal))
|
||||
(format #t "~1Tfov-priority: ~f~%" (-> this fov-priority))
|
||||
(format #t "~1Tdummy[98] @ #x~X~%" (-> this dummy))
|
||||
(label cfg-76)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition of type setting-control
|
||||
(deftype setting-control (basic)
|
||||
((user-current user-setting-data :inline)
|
||||
(user-target user-setting-data :inline)
|
||||
(user-default user-setting-data :inline)
|
||||
(cam-current cam-setting-data :inline)
|
||||
(cam-target cam-setting-data :inline)
|
||||
(cam-default cam-setting-data :inline)
|
||||
(engine engine)
|
||||
(engine-pers engine-pers)
|
||||
(engine-hi engine)
|
||||
(sound-stinger-time time-frame)
|
||||
(sound-stinger-change-time time-frame 4)
|
||||
(sound-excitement-change-time time-frame)
|
||||
(sound-excitement-targ float)
|
||||
(sound-excitement-level uint32)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type int) _type_)
|
||||
(add-setting (_type_ process symbol object object object) none)
|
||||
(persist-with-delay (_type_ symbol time-frame symbol symbol float int) none)
|
||||
(set-setting (_type_ process symbol object object object) none)
|
||||
(remove-setting (_type_ process symbol) none)
|
||||
(kill-persister (_type_ engine-pers object) none)
|
||||
(setting-control-method-14 (_type_ object) connectable)
|
||||
(remove-setting-by-arg0 (_type_ object) none)
|
||||
(set-setting-by-param (_type_ symbol object object object) connection)
|
||||
(setting-control-method-17 () none)
|
||||
(setting-control-method-18 () none)
|
||||
(setting-control-method-19 () none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type setting-control
|
||||
(defmethod inspect ((this setting-control))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this (-> this type))
|
||||
(format #t "~1Tuser-current: #<user-setting-data @ #x~X>~%" (-> this user-current))
|
||||
(format #t "~1Tuser-target: #<user-setting-data @ #x~X>~%" (-> this user-target))
|
||||
(format #t "~1Tuser-default: #<user-setting-data @ #x~X>~%" (-> this user-default))
|
||||
(format #t "~1Tcam-current: #<cam-setting-data @ #x~X>~%" (-> this cam-current))
|
||||
(format #t "~1Tcam-target: #<cam-setting-data @ #x~X>~%" (-> this cam-target))
|
||||
(format #t "~1Tcam-default: #<cam-setting-data @ #x~X>~%" (-> this cam-default))
|
||||
(format #t "~1Tengine: ~A~%" (-> this engine))
|
||||
(format #t "~1Tengine-pers: ~A~%" (-> this engine-pers))
|
||||
(format #t "~1Tengine-hi: ~A~%" (-> this engine-hi))
|
||||
(format #t "~1Tsound-stinger-time: ~D~%" (-> this sound-stinger-time))
|
||||
(format #t "~1Tsound-stinger-change-time[4] @ #x~X~%" (-> this sound-stinger-change-time))
|
||||
(format #t "~1Tsound-excitement-change-time: ~D~%" (-> this sound-excitement-change-time))
|
||||
(format #t "~1Tsound-excitement-targ: ~f~%" (-> this sound-excitement-targ))
|
||||
(format #t "~1Tsound-excitement-level: ~D~%" (-> this sound-excitement-level))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 0 of type setting-control
|
||||
(defmethod new setting-control ((allocation symbol) (type-to-make type) (arg0 int))
|
||||
(let ((s4-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> s4-0 engine) ((method-of-type engine new) allocation engine 'setting-control arg0 connection))
|
||||
(set! (-> s4-0 engine-hi) ((method-of-type engine new) allocation engine 'setting-control arg0 connection))
|
||||
(set! (-> s4-0 engine-pers)
|
||||
((method-of-type engine-pers new) allocation engine-pers 'setting-control arg0 connection-pers)
|
||||
)
|
||||
s4-0
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
0
|
||||
|
||||
|
||||
|
||||
|
||||
+781
@@ -0,0 +1,781 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type char-verts
|
||||
(deftype char-verts (structure)
|
||||
((pos vector 4 :inline)
|
||||
(color vector 4 :inline)
|
||||
(tex-st vector 4 :inline)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type char-verts
|
||||
(defmethod inspect ((this char-verts))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this 'char-verts)
|
||||
(format #t "~1Tpos[4] @ #x~X~%" (-> this pos))
|
||||
(format #t "~1Tcolor[4] @ #x~X~%" (-> this color))
|
||||
(format #t "~1Ttex-st[4] @ #x~X~%" (-> this tex-st))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition of type char-color
|
||||
(deftype char-color (structure)
|
||||
((color rgba 4)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type char-color
|
||||
(defmethod inspect ((this char-color))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this 'char-color)
|
||||
(format #t "~1Tcolor[4] @ #x~X~%" (-> this color))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for symbol *font-default-matrix*, type matrix
|
||||
(define *font-default-matrix* (new 'static 'matrix
|
||||
:rvec (new 'static 'vector :x 1.0)
|
||||
:uvec (new 'static 'vector :y 1.0)
|
||||
:fvec (new 'static 'vector :z 1.0)
|
||||
:trans (new 'static 'vector :x -256.0 :y -208.0 :w 1.0)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition of type font-context
|
||||
(deftype font-context (basic)
|
||||
((origin vector :inline)
|
||||
(strip-gif vector :inline)
|
||||
(width float)
|
||||
(height float)
|
||||
(projection float)
|
||||
(scale float)
|
||||
(color font-color)
|
||||
(flags font-flags)
|
||||
(mat matrix)
|
||||
(start-line uint32)
|
||||
(alpha float)
|
||||
(max-x float)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type matrix int int float font-color font-flags) _type_)
|
||||
(set-mat! (font-context matrix) font-context)
|
||||
(set-origin! (font-context int int) font-context)
|
||||
(set-depth! (font-context int) font-context)
|
||||
(set-w! (font-context float) font-context)
|
||||
(set-width! (font-context int) font-context)
|
||||
(set-height! (font-context int) font-context)
|
||||
(set-projection! (font-context float) font-context)
|
||||
(set-color! (font-context font-color) font-context)
|
||||
(set-flags! (font-context font-flags) font-context)
|
||||
(set-start-line! (font-context uint) font-context)
|
||||
(set-scale! (font-context float) font-context)
|
||||
(set-alpha! (font-context float) font-context)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type font-context
|
||||
(defmethod inspect ((this font-context))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this (-> this type))
|
||||
(format #t "~1Torigin: #<vector @ #x~X>~%" (-> this origin))
|
||||
(format #t "~1Tstrip-gif: #<vector @ #x~X>~%" (-> this strip-gif))
|
||||
(format #t "~1Twidth: ~f~%" (-> this width))
|
||||
(format #t "~1Theight: ~f~%" (-> this height))
|
||||
(format #t "~1Tprojection: ~f~%" (-> this projection))
|
||||
(format #t "~1Tscale: ~f~%" (-> this scale))
|
||||
(format #t "~1Tcolor: ~D~%" (-> this color))
|
||||
(format #t "~1Tflags: ~D~%" (-> this flags))
|
||||
(format #t "~1Tmat: #<matrix @ #x~X>~%" (-> this mat))
|
||||
(format #t "~1Tstart-line: ~D~%" (-> this start-line))
|
||||
(format #t "~1Talpha: ~f~%" (-> this alpha))
|
||||
(format #t "~1Tmax-x: ~f~%" (-> this max-x))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 9 of type font-context
|
||||
(defmethod set-mat! ((this font-context) (arg0 matrix))
|
||||
(set! (-> this mat) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 10 of type font-context
|
||||
(defmethod set-origin! ((this font-context) (arg0 int) (arg1 int))
|
||||
(set! (-> this origin x) (the float arg0))
|
||||
(set! (-> this origin y) (the float arg1))
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 11 of type font-context
|
||||
(defmethod set-depth! ((this font-context) (arg0 int))
|
||||
(set! (-> this origin z) (the float arg0))
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 12 of type font-context
|
||||
(defmethod set-w! ((this font-context) (arg0 float))
|
||||
(set! (-> this origin w) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 13 of type font-context
|
||||
(defmethod set-width! ((this font-context) (arg0 int))
|
||||
(set! (-> this width) (the float arg0))
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 14 of type font-context
|
||||
(defmethod set-height! ((this font-context) (arg0 int))
|
||||
(set! (-> this height) (the float arg0))
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 15 of type font-context
|
||||
(defmethod set-projection! ((this font-context) (arg0 float))
|
||||
(set! (-> this projection) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 16 of type font-context
|
||||
(defmethod set-color! ((this font-context) (arg0 font-color))
|
||||
(set! (-> this color) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 17 of type font-context
|
||||
(defmethod set-flags! ((this font-context) (arg0 font-flags))
|
||||
(set! (-> this flags) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 18 of type font-context
|
||||
(defmethod set-start-line! ((this font-context) (arg0 uint))
|
||||
(set! (-> this start-line) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 19 of type font-context
|
||||
(defmethod set-scale! ((this font-context) (arg0 float))
|
||||
(set! (-> this scale) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 20 of type font-context
|
||||
(defmethod set-alpha! ((this font-context) (arg0 float))
|
||||
(set! (-> this alpha) arg0)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for method 0 of type font-context
|
||||
(defmethod new font-context ((allocation symbol)
|
||||
(type-to-make type)
|
||||
(arg0 matrix)
|
||||
(arg1 int)
|
||||
(arg2 int)
|
||||
(arg3 float)
|
||||
(arg4 font-color)
|
||||
(arg5 font-flags)
|
||||
)
|
||||
(let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
||||
(set! (-> v0-0 mat) arg0)
|
||||
(let ((v1-3 v0-0))
|
||||
(set! (-> v1-3 origin x) (the float arg1))
|
||||
(set! (-> v1-3 origin y) (the float arg2))
|
||||
)
|
||||
(cond
|
||||
((= arg3 0.0)
|
||||
(let ((v1-4 v0-0))
|
||||
(set! (-> v1-4 origin z) (-> *math-camera* isometric trans z))
|
||||
)
|
||||
)
|
||||
(else
|
||||
(let ((v1-5 v0-0))
|
||||
(set! (-> v1-5 origin z) arg3)
|
||||
)
|
||||
)
|
||||
)
|
||||
(let ((v1-6 v0-0))
|
||||
(set! (-> v1-6 origin w) 1.0)
|
||||
)
|
||||
(let ((v1-7 v0-0))
|
||||
(set! (-> v1-7 width) (the float 512))
|
||||
)
|
||||
(let ((v1-8 v0-0))
|
||||
(set! (-> v1-8 height) (the float 416))
|
||||
)
|
||||
(let ((v1-9 v0-0))
|
||||
(set! (-> v1-9 projection) 1.0)
|
||||
)
|
||||
(set! (-> v0-0 color) arg4)
|
||||
(set! (-> v0-0 flags) arg5)
|
||||
(let ((a0-6 v0-0))
|
||||
(set! (-> a0-6 start-line) (the-as uint 0))
|
||||
)
|
||||
(let ((v1-13 v0-0))
|
||||
(set! (-> v1-13 scale) 1.0)
|
||||
)
|
||||
(let ((v1-14 v0-0))
|
||||
(set! (-> v1-14 alpha) 1.0)
|
||||
)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition of type font-work
|
||||
(deftype font-work (structure)
|
||||
((font-tmpl dma-gif-packet :inline)
|
||||
(char-tmpl dma-gif-packet :inline)
|
||||
(tex1-tmpl uint64 2)
|
||||
(small-font-0-tmpl uint64 2)
|
||||
(small-font-1-tmpl uint64 2)
|
||||
(small-font-2-tmpl uint64 2)
|
||||
(small-font-3-tmpl uint64 2)
|
||||
(large-font-0-tmpl uint64 2)
|
||||
(large-font-1-tmpl uint64 2)
|
||||
(large-font-2-tmpl uint64 2)
|
||||
(large-font-3-tmpl uint64 2)
|
||||
(size1-small vector :inline)
|
||||
(size2-small vector :inline)
|
||||
(size3-small vector :inline)
|
||||
(size1-large vector :inline)
|
||||
(size2-large-0 vector :inline)
|
||||
(size2-large-1 vector :inline)
|
||||
(size2-large-2 vector :inline)
|
||||
(size2-large-3 vector :inline)
|
||||
(size3-large vector :inline)
|
||||
(size2-0 vector :inline)
|
||||
(size2-1 vector :inline)
|
||||
(size2-2 vector :inline)
|
||||
(size2-3 vector :inline)
|
||||
(size-st1 vector :inline)
|
||||
(size-st2 vector :inline)
|
||||
(size-st3 vector :inline)
|
||||
(save vector :inline)
|
||||
(save-color vector 4 :inline)
|
||||
(character-save-color vector 4 :inline)
|
||||
(current-verts char-verts :inline)
|
||||
(src-verts char-verts :inline)
|
||||
(dest-verts char-verts :inline)
|
||||
(justify vector 64 :inline)
|
||||
(color-shadow vector4w :inline)
|
||||
(color-table char-color 45 :inline)
|
||||
(current-font-0-tmpl uint64 2)
|
||||
(current-font-1-tmpl uint64 2)
|
||||
(current-font-2-tmpl uint64 2)
|
||||
(current-font-3-tmpl uint64 2)
|
||||
(last-color font-color)
|
||||
(save-last-color font-color)
|
||||
(character-save-last-color uint32)
|
||||
(buf basic)
|
||||
(str-ptr uint32)
|
||||
(flags font-flags)
|
||||
(reg-save uint32 5)
|
||||
)
|
||||
(:methods
|
||||
(font-work-method-9 () none)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type font-work
|
||||
(defmethod inspect ((this font-work))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this 'font-work)
|
||||
(format #t "~1Tfont-tmpl: #<dma-gif-packet @ #x~X>~%" (-> this font-tmpl))
|
||||
(format #t "~1Tchar-tmpl: #<dma-gif-packet @ #x~X>~%" (-> this char-tmpl))
|
||||
(format #t "~1Ttex1-tmpl[2] @ #x~X~%" (-> this tex1-tmpl))
|
||||
(format #t "~1Tsmall-font-0-tmpl[2] @ #x~X~%" (-> this small-font-0-tmpl))
|
||||
(format #t "~1Tsmall-font-1-tmpl[2] @ #x~X~%" (-> this small-font-1-tmpl))
|
||||
(format #t "~1Tsmall-font-2-tmpl[2] @ #x~X~%" (-> this small-font-2-tmpl))
|
||||
(format #t "~1Tsmall-font-3-tmpl[2] @ #x~X~%" (-> this small-font-3-tmpl))
|
||||
(format #t "~1Tlarge-font-0-tmpl[2] @ #x~X~%" (-> this large-font-0-tmpl))
|
||||
(format #t "~1Tlarge-font-1-tmpl[2] @ #x~X~%" (-> this large-font-1-tmpl))
|
||||
(format #t "~1Tlarge-font-2-tmpl[2] @ #x~X~%" (-> this large-font-2-tmpl))
|
||||
(format #t "~1Tlarge-font-3-tmpl[2] @ #x~X~%" (-> this large-font-3-tmpl))
|
||||
(format #t "~1Tsize1-small: #<vector @ #x~X>~%" (-> this size1-small))
|
||||
(format #t "~1Tsize2-small: #<vector @ #x~X>~%" (-> this size2-small))
|
||||
(format #t "~1Tsize3-small: #<vector @ #x~X>~%" (-> this size3-small))
|
||||
(format #t "~1Tsize1-large: #<vector @ #x~X>~%" (-> this size1-large))
|
||||
(format #t "~1Tsize2-large-0: #<vector @ #x~X>~%" (-> this size2-large-0))
|
||||
(format #t "~1Tsize2-large-1: #<vector @ #x~X>~%" (-> this size2-large-1))
|
||||
(format #t "~1Tsize2-large-2: #<vector @ #x~X>~%" (-> this size2-large-2))
|
||||
(format #t "~1Tsize2-large-3: #<vector @ #x~X>~%" (-> this size2-large-3))
|
||||
(format #t "~1Tsize3-large: #<vector @ #x~X>~%" (-> this size3-large))
|
||||
(format #t "~1Tsize2-0: #<vector @ #x~X>~%" (-> this size2-0))
|
||||
(format #t "~1Tsize2-1: #<vector @ #x~X>~%" (-> this size2-1))
|
||||
(format #t "~1Tsize2-2: #<vector @ #x~X>~%" (-> this size2-2))
|
||||
(format #t "~1Tsize2-3: #<vector @ #x~X>~%" (-> this size2-3))
|
||||
(format #t "~1Tsize-st1: #<vector @ #x~X>~%" (-> this size-st1))
|
||||
(format #t "~1Tsize-st2: #<vector @ #x~X>~%" (-> this size-st2))
|
||||
(format #t "~1Tsize-st3: #<vector @ #x~X>~%" (-> this size-st3))
|
||||
(format #t "~1Tsave: #<vector @ #x~X>~%" (-> this save))
|
||||
(format #t "~1Tsave-color[4] @ #x~X~%" (-> this save-color))
|
||||
(format #t "~1Tcharacter-save-color[4] @ #x~X~%" (-> this character-save-color))
|
||||
(format #t "~1Tcurrent-verts: #<char-verts @ #x~X>~%" (-> this current-verts))
|
||||
(format #t "~1Tsrc-verts: #<char-verts @ #x~X>~%" (-> this src-verts))
|
||||
(format #t "~1Tdest-verts: #<char-verts @ #x~X>~%" (-> this dest-verts))
|
||||
(format #t "~1Tjustify[64] @ #x~X~%" (-> this justify))
|
||||
(format #t "~1Tcolor-shadow: #<vector4w @ #x~X>~%" (-> this color-shadow))
|
||||
(format #t "~1Tcolor-table[45] @ #x~X~%" (-> this color-table))
|
||||
(format #t "~1Tcurrent-font-0-tmpl[2] @ #x~X~%" (-> this current-font-0-tmpl))
|
||||
(format #t "~1Tcurrent-font-1-tmpl[2] @ #x~X~%" (-> this current-font-1-tmpl))
|
||||
(format #t "~1Tcurrent-font-2-tmpl[2] @ #x~X~%" (-> this current-font-2-tmpl))
|
||||
(format #t "~1Tcurrent-font-3-tmpl[2] @ #x~X~%" (-> this current-font-3-tmpl))
|
||||
(format #t "~1Tlast-color: ~D~%" (-> this last-color))
|
||||
(format #t "~1Tsave-last-color: ~D~%" (-> this save-last-color))
|
||||
(format #t "~1Tcharacter-save-last-color: ~D~%" (-> this character-save-last-color))
|
||||
(format #t "~1Tbuf: ~A~%" (-> this buf))
|
||||
(format #t "~1Tstr-ptr: ~D~%" (-> this str-ptr))
|
||||
(format #t "~1Tflags: ~D~%" (-> this flags))
|
||||
(format #t "~1Treg-save[5] @ #x~X~%" (-> this reg-save))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for symbol *font-work*, type font-work
|
||||
(define *font-work*
|
||||
(new 'static 'font-work
|
||||
:font-tmpl (new 'static 'dma-gif-packet
|
||||
:dma-vif (new 'static 'dma-packet
|
||||
:dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))
|
||||
:vif1 (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)
|
||||
)
|
||||
:gif (new 'static 'array uint64 2 #x102e400000008001 #xe)
|
||||
)
|
||||
:char-tmpl (new 'static 'dma-gif-packet
|
||||
:dma-vif (new 'static 'dma-packet
|
||||
:dma (new 'static 'dma-tag :qwc #xe :id (dma-tag-id cnt))
|
||||
:vif1 (new 'static 'vif-tag :imm #xe :cmd (vif-cmd direct) :msk #x1)
|
||||
)
|
||||
:gif (new 'static 'array uint64 2 #xd02e400000008001 #x412412412412e)
|
||||
)
|
||||
:tex1-tmpl (new 'static 'array uint64 2 #x60 #x14)
|
||||
:small-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:small-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:small-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:small-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-0-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-1-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-2-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:large-font-3-tmpl (new 'static 'array uint64 2 #x0 #x6)
|
||||
:size1-small (new 'static 'vector :x 12.0 :w 0.5)
|
||||
:size2-small (new 'static 'vector :y 14.857 :w 8.0)
|
||||
:size3-small (new 'static 'vector :x 12.0 :y 14.857 :w 14.857)
|
||||
:size1-large (new 'static 'vector :x 24.0 :w 1.0)
|
||||
:size2-large-0 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size2-large-1 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size2-large-2 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size2-large-3 (new 'static 'vector :y 29.714 :w 24.0)
|
||||
:size3-large (new 'static 'vector :x 24.0 :y 29.714 :w 29.714)
|
||||
:size-st1 (new 'static 'vector :x 0.08985 :w 0.5)
|
||||
:size-st2 (new 'static 'vector :y 0.031007752 :w 0.5)
|
||||
:size-st3 (new 'static 'vector :x 0.08985 :y 0.031007752 :w 0.5)
|
||||
:current-verts (new 'static 'char-verts
|
||||
:pos (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
)
|
||||
:tex-st (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
)
|
||||
)
|
||||
:src-verts (new 'static 'char-verts
|
||||
:pos (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
)
|
||||
:tex-st (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
)
|
||||
)
|
||||
:dest-verts (new 'static 'char-verts
|
||||
:pos (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
(new 'static 'vector :w 1.0)
|
||||
)
|
||||
:tex-st (new 'static 'inline-array vector 4
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
(new 'static 'vector :z 1.0)
|
||||
)
|
||||
)
|
||||
:color-shadow (new 'static 'vector4w :w #x80)
|
||||
:color-table (new 'static 'inline-array char-color 45
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x20 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x64 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x80 :b #x20 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x20 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x40 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x60 :b #x60 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
(new 'static 'rgba :r #x50 :g #x50 :b #x50 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x54 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x80 :b #x30 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x58 :b #x10 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
(new 'static 'rgba :r #x58 :g #x60 :b #x58 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x48 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
(new 'static 'rgba :r #x30 :g #x20 :b #x30 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x79 :b #x48 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x20 :g #x5e :b #x78 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
(new 'static 'rgba :r #x1d :g #x1d :b #x1d :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x4d :b #x65 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
(new 'static 'rgba :r #x7a :g #x34 :b #x34 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
(new 'static 'rgba :r #x10 :g #x65 :b #x4c :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
(new 'static 'rgba :r #x46 :g #x4a :b #x78 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x57 :g #x7e :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
(new 'static 'rgba :r #x7f :g #x7b :b #x33 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
(new 'static 'rgba :r #x79 :g #x79 :b #x2 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
(new 'static 'rgba :r #x47 :g #x68 :b #x7a :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
(new 'static 'rgba :r #xb7 :g #x80 :b #x7 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
(new 'static 'rgba :r #x9a :g #x4d :a #x60)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
(new 'static 'rgba :r #x70 :g #x78 :b #x70 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
(new 'static 'rgba :r #x80 :g #x60 :b #x20 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
(new 'static 'rgba :b #x1 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
(new 'static 'rgba :r #x48 :g #x74 :b #x48 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
(new 'static 'rgba :g #x39 :b #x67 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
(new 'static 'rgba :r #x7c :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
(new 'static 'rgba :r #x60 :g #x60 :b #x60 :a #x80)
|
||||
)
|
||||
)
|
||||
(new 'static 'char-color :color (new 'static 'array rgba 4
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
(new 'static 'rgba :r #x40 :g #x40 :b #x40 :a #x80)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function font-set-tex0
|
||||
;; WARN: Return type mismatch int vs none.
|
||||
(defun font-set-tex0 ((arg0 (pointer gs-tex0)) (arg1 texture) (arg2 int) (arg3 int) (arg4 int))
|
||||
(set! (-> arg0 0) (new 'static 'gs-tex0
|
||||
:tcc #x1
|
||||
:cld #x1
|
||||
:cbp arg4
|
||||
:th (+ (log2 (+ (-> arg1 h) -1)) 1)
|
||||
:tw (log2 (-> arg1 w))
|
||||
:tbw (-> arg1 width 0)
|
||||
:tbp0 (/ arg2 64)
|
||||
:psm arg3
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function set-font-color
|
||||
(defun set-font-color ((arg0 font-color) (arg1 int) (arg2 rgba) (arg3 rgba) (arg4 rgba))
|
||||
(set! (-> *font-work* color-table arg0 color 0) (the-as rgba arg1))
|
||||
(set! (-> *font-work* color-table arg0 color 1) arg2)
|
||||
(set! (-> *font-work* color-table arg0 color 2) arg3)
|
||||
(set! (-> *font-work* color-table arg0 color 3) arg4)
|
||||
0
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
0
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -91,7 +91,7 @@
|
||||
(vu1-enable-user-menu vu1-renderer-mask)
|
||||
(force-sync uint32)
|
||||
(mem-reserve-size uint32)
|
||||
(dma-buffer-overflow basic)
|
||||
(dma-buffer-overflow symbol)
|
||||
)
|
||||
(:methods
|
||||
(new (symbol type int int int int int) _type_)
|
||||
|
||||
+429
@@ -0,0 +1,429 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition for function get-current-time
|
||||
(defun get-current-time ()
|
||||
"Get the base-clock time."
|
||||
(-> *display* base-clock frame-counter)
|
||||
)
|
||||
|
||||
;; definition for function get-integral-current-time
|
||||
(defun get-integral-current-time ()
|
||||
"Get the number of frames that have happened."
|
||||
(-> *display* base-clock integral-frame-counter)
|
||||
)
|
||||
|
||||
;; definition for function get-real-current-time
|
||||
(defun get-real-current-time ()
|
||||
(-> *display* real-clock frame-counter)
|
||||
)
|
||||
|
||||
;; definition for method 9 of type display
|
||||
(defmethod set-time-ratios ((this display) (arg0 float))
|
||||
(set! (-> this dog-ratio) (fmin 4.0 arg0))
|
||||
(case (get-video-mode)
|
||||
(('pal)
|
||||
(set! (-> this time-factor) 6.0)
|
||||
)
|
||||
(else
|
||||
(set! (-> this time-factor) 5.0)
|
||||
)
|
||||
)
|
||||
(-> this dog-ratio)
|
||||
)
|
||||
|
||||
;; definition for function set-display
|
||||
(defun set-display ((arg0 display))
|
||||
"Allocate and initialize clocks for the display."
|
||||
(dotimes (s5-0 22)
|
||||
(set! (-> arg0 clock s5-0) (new 'global 'clock s5-0))
|
||||
)
|
||||
(set! (-> arg0 base-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 game-clock mask) (process-mask freeze pause menu progress movie))
|
||||
(set! (-> arg0 total-game-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 frame-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 target-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 camera-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 entity-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 part-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 bg-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user0-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user1-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user2-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user3-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user4-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user5-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user6-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user7-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user8-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> arg0 user9-clock mask) (process-mask freeze pause menu progress))
|
||||
(set! (-> *listener-process* clock) (-> arg0 real-clock))
|
||||
(set! (-> *active-pool* clock) (-> arg0 real-clock))
|
||||
(set! (-> *display-pool* clock) (-> arg0 real-clock))
|
||||
(set! (-> *mid-pool* clock) (-> arg0 real-clock))
|
||||
(+! (-> arg0 real-clock ref-count) 4)
|
||||
(set! (-> *camera-pool* clock) (-> arg0 camera-clock))
|
||||
(+! (-> arg0 camera-clock ref-count) 1)
|
||||
(set! (-> *target-pool* clock) (-> arg0 target-clock))
|
||||
(+! (-> arg0 target-clock ref-count) 1)
|
||||
(set! (-> *pusher-pool* clock) (-> arg0 entity-clock))
|
||||
(set! (-> *entity-pool* clock) (-> arg0 entity-clock))
|
||||
(+! (-> arg0 entity-clock ref-count) 2)
|
||||
(set! (-> *bg-pool* clock) (-> arg0 bg-clock))
|
||||
(+! (-> arg0 bg-clock ref-count) 1)
|
||||
(set! (-> *default-pool* clock) (-> arg0 base-clock))
|
||||
(+! (-> arg0 base-clock ref-count) 1)
|
||||
(+! (-> *kernel-clock* ref-count) -10)
|
||||
arg0
|
||||
)
|
||||
|
||||
;; definition for function allocate-dma-buffers
|
||||
(defun allocate-dma-buffers ((arg0 display))
|
||||
"Allocate the main, debug, and calc dma buffers."
|
||||
(when (zero? (-> arg0 frames 0 calc-buf))
|
||||
(set! (-> arg0 frames 0 calc-buf) (new 'global 'dma-buffer 10000))
|
||||
(set! (-> arg0 frames 1 calc-buf) (new 'global 'dma-buffer 10000))
|
||||
(set! (-> arg0 frames 0 global-buf) (new 'global 'dma-buffer #x140000))
|
||||
(set! (-> arg0 frames 1 global-buf) (new 'global 'dma-buffer #x140000))
|
||||
(when *debug-segment*
|
||||
(set! (-> arg0 frames 0 debug-buf) (new 'debug 'dma-buffer #x800000))
|
||||
(set! (-> arg0 frames 1 debug-buf) (new 'debug 'dma-buffer #x800000))
|
||||
)
|
||||
(set! (-> arg0 dma-buffer-overflow) #f)
|
||||
(set! (-> arg0 mem-reserve-size) (the-as uint 0))
|
||||
0
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
;; definition for symbol *font-context*, type font-context
|
||||
(define *font-context*
|
||||
(new 'global 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
|
||||
)
|
||||
|
||||
;; definition for function draw-sprite2d-xy
|
||||
;; WARN: Return type mismatch pointer vs none.
|
||||
(defun draw-sprite2d-xy ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 rgba) (arg6 int))
|
||||
"Draw a sprite primitive with the given color and dimensions."
|
||||
(let* ((t2-2 (new 'stack 'draw-context arg1 arg2 arg3 arg4 arg5))
|
||||
(a0-3 (max 1792 (min 2304 (+ (-> t2-2 orgx) 1792))))
|
||||
(a3-3 (max 1840 (min 2256 (+ (-> t2-2 orgy) 1840))))
|
||||
(a1-6 (-> t2-2 width))
|
||||
(t1-2 (-> t2-2 height))
|
||||
(v1-6 (-> arg0 base))
|
||||
)
|
||||
(let* ((a2-2 arg0)
|
||||
(t0-2 (the-as object (-> a2-2 base)))
|
||||
)
|
||||
(set! (-> (the-as dma-packet t0-2) dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
|
||||
(set! (-> (the-as dma-packet t0-2) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet t0-2) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> a2-2 base) (&+ (the-as pointer t0-2) 16))
|
||||
)
|
||||
(let* ((a2-3 arg0)
|
||||
(t0-4 (the-as object (-> a2-3 base)))
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t0-4) tag)
|
||||
(new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x4)
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t0-4) regs)
|
||||
(new 'static 'gif-tag-regs :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2) :regs3 (gif-reg-id xyzf2))
|
||||
)
|
||||
(set! (-> a2-3 base) (&+ (the-as pointer t0-4) 16))
|
||||
)
|
||||
(let* ((a2-4 arg0)
|
||||
(t0-6 (-> a2-4 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-prim) t0-6) 0) (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe #x1))
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t0-6) 1) (the-as gs-rgbaq (-> t2-2 color 0)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t0-6) 2) (new 'static 'gs-xyzf :x (* a0-3 16) :y (* a3-3 16) :z arg6))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t0-6) 3) (new 'static 'gs-xyzf
|
||||
:x (* (max 1792 (min 2304 (+ a0-3 a1-6))) 16)
|
||||
:y (* (max 1840 (min 2256 (+ a3-3 t1-2))) 16)
|
||||
:z arg6
|
||||
)
|
||||
)
|
||||
(set! (-> a2-4 base) (&+ t0-6 32))
|
||||
)
|
||||
(let ((a0-12 (/ (the-as int (+ (- -16 (the-as int v1-6)) (the-as int (-> arg0 base)))) 16)))
|
||||
(cond
|
||||
((nonzero? a0-12)
|
||||
(logior! (-> (the-as (pointer uint64) v1-6) 0) (shr (shl a0-12 48) 48))
|
||||
(logior! (-> (the-as (pointer uint64) v1-6) 1) (shl (shr (shl a0-12 48) 48) 32))
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 base) v1-6)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function draw-sprite2d-xy-absolute
|
||||
;; WARN: Return type mismatch pointer vs none.
|
||||
(defun draw-sprite2d-xy-absolute ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 rgba) (arg6 int))
|
||||
"Draw a sprite primitive, setting the gs-xzyf register to exactly the values specified (no offset/clamp)."
|
||||
(let ((a1-1 (+ arg1 1792))
|
||||
(a2-1 (+ arg2 1840))
|
||||
(v1-0 (-> arg0 base))
|
||||
)
|
||||
(let* ((t3-0 arg0)
|
||||
(t4-0 (the-as object (-> t3-0 base)))
|
||||
)
|
||||
(set! (-> (the-as dma-packet t4-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
|
||||
(set! (-> (the-as dma-packet t4-0) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet t4-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> t3-0 base) (&+ (the-as pointer t4-0) 16))
|
||||
)
|
||||
(let* ((t3-1 arg0)
|
||||
(t4-2 (the-as object (-> t3-1 base)))
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t4-2) tag)
|
||||
(new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x4)
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t4-2) regs)
|
||||
(new 'static 'gif-tag-regs :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2) :regs3 (gif-reg-id xyzf2))
|
||||
)
|
||||
(set! (-> t3-1 base) (&+ (the-as pointer t4-2) 16))
|
||||
)
|
||||
(let* ((t3-2 arg0)
|
||||
(t4-4 (-> t3-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-prim) t4-4) 0) (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe #x1))
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t4-4) 1) (the-as gs-rgbaq arg5))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t4-4) 2) (new 'static 'gs-xyzf :x (* a1-1 16) :y (* a2-1 16) :z arg6))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t4-4) 3)
|
||||
(new 'static 'gs-xyzf :x (* (+ a1-1 arg3) 16) :y (* (+ a2-1 arg4) 16) :z arg6)
|
||||
)
|
||||
(set! (-> t3-2 base) (&+ t4-4 32))
|
||||
)
|
||||
(let ((a1-10 (/ (the-as int (+ (- -16 (the-as int v1-0)) (the-as int (-> arg0 base)))) 16)))
|
||||
(cond
|
||||
((nonzero? a1-10)
|
||||
(set! (-> (the-as (pointer uint64) v1-0) 0)
|
||||
(logior (-> (the-as (pointer uint64) v1-0)) (shr (shl a1-10 48) 48))
|
||||
)
|
||||
(logior! (-> (the-as (pointer uint64) v1-0) 1) (shl (shr (shl a1-10 48) 48) 32))
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 base) v1-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function draw-quad2d
|
||||
;; WARN: Return type mismatch pointer vs none.
|
||||
(defun draw-quad2d ((arg0 dma-buffer) (arg1 draw-context))
|
||||
"Draw a quad that fills the entire context."
|
||||
(let ((a3-1 (max 1792 (min 2304 (+ (-> arg1 orgx) 1792))))
|
||||
(a2-3 (max 1840 (min 2256 (+ (-> arg1 orgy) 1840))))
|
||||
(t3-0 (-> arg1 width))
|
||||
(t0-2 (-> arg1 height))
|
||||
(v1-4 (-> arg0 base))
|
||||
)
|
||||
(let* ((t1-0 arg0)
|
||||
(t2-0 (the-as object (-> t1-0 base)))
|
||||
)
|
||||
(set! (-> (the-as dma-packet t2-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
|
||||
(set! (-> (the-as dma-packet t2-0) vif0) (new 'static 'vif-tag))
|
||||
(set! (-> (the-as dma-packet t2-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
|
||||
(set! (-> t1-0 base) (&+ (the-as pointer t2-0) 16))
|
||||
)
|
||||
(let* ((t1-1 arg0)
|
||||
(t2-2 (the-as object (-> t1-1 base)))
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t2-2) tag)
|
||||
(new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x9)
|
||||
)
|
||||
(set! (-> (the-as gs-gif-tag t2-2) regs) (new 'static 'gif-tag-regs
|
||||
:regs1 (gif-reg-id rgbaq)
|
||||
:regs2 (gif-reg-id xyzf2)
|
||||
:regs3 (gif-reg-id rgbaq)
|
||||
:regs4 (gif-reg-id xyzf2)
|
||||
:regs5 (gif-reg-id rgbaq)
|
||||
:regs6 (gif-reg-id xyzf2)
|
||||
:regs7 (gif-reg-id rgbaq)
|
||||
:regs8 (gif-reg-id xyzf2)
|
||||
)
|
||||
)
|
||||
(set! (-> t1-1 base) (&+ (the-as pointer t2-2) 16))
|
||||
)
|
||||
(let* ((t1-2 arg0)
|
||||
(t2-4 (-> t1-2 base))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-prim) t2-4) 0)
|
||||
(new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :abe #x1)
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 1) (the-as gs-rgbaq (-> arg1 color 0)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 2) (new 'static 'gs-xyzf :y (* a2-3 16) :x (* a3-1 16)))
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 3) (the-as gs-rgbaq (-> arg1 color 1)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 4)
|
||||
(new 'static 'gs-xyzf :y (* a2-3 16) :x (* (max 1792 (min 2304 (+ a3-1 t3-0))) 16))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 5) (the-as gs-rgbaq (-> arg1 color 2)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 6)
|
||||
(new 'static 'gs-xyzf :y (* (max 1840 (min 2256 (+ a2-3 t0-2))) 16) :x (* a3-1 16))
|
||||
)
|
||||
(set! (-> (the-as (pointer gs-rgbaq) t2-4) 7) (the-as gs-rgbaq (-> arg1 color 3)))
|
||||
(set! (-> (the-as (pointer gs-xyzf) t2-4) 8) (new 'static 'gs-xyzf
|
||||
:y (* (max 1840 (min 2256 (+ a2-3 t0-2))) 16)
|
||||
:x (* (max 1792 (min 2304 (+ a3-1 t3-0))) 16)
|
||||
)
|
||||
)
|
||||
(set! (-> (the-as (pointer uint64) t2-4) 9) (the-as uint 0))
|
||||
(set! (-> t1-2 base) (&+ t2-4 80))
|
||||
)
|
||||
(let ((a1-11 (/ (the-as int (+ (- -16 (the-as int v1-4)) (the-as int (-> arg0 base)))) 16)))
|
||||
(cond
|
||||
((nonzero? a1-11)
|
||||
(set! (-> (the-as (pointer uint64) v1-4) 0)
|
||||
(logior (-> (the-as (pointer uint64) v1-4)) (shr (shl a1-11 48) 48))
|
||||
)
|
||||
(logior! (-> (the-as (pointer uint64) v1-4) 1) (shl (shr (shl a1-11 48) 48) 32))
|
||||
)
|
||||
(else
|
||||
(set! (-> arg0 base) v1-4)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function screen-gradient
|
||||
(defun screen-gradient ((arg0 dma-buffer) (arg1 rgba) (arg2 rgba) (arg3 rgba) (arg4 rgba))
|
||||
"Fill the screen with a sprite with the given colors."
|
||||
(let ((a1-2 (new 'stack 'draw-context 0 0 512 416 (new 'static 'rgba))))
|
||||
(set! (-> a1-2 color 0) arg1)
|
||||
(set! (-> a1-2 color 1) arg2)
|
||||
(set! (-> a1-2 color 2) arg3)
|
||||
(set! (-> a1-2 color 3) arg4)
|
||||
(draw-quad2d arg0 a1-2)
|
||||
)
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function vif1-handler-debug
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
|
||||
;; definition for function vif1-handler
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(install-handler 5 (if *debug-segment*
|
||||
vif1-handler-debug
|
||||
vif1-handler
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function vblank-handler
|
||||
;; ERROR: function was not converted to expressions. Cannot decompile.
|
||||
|
||||
;; definition for function set-display-gs-state
|
||||
(defun set-display-gs-state ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int))
|
||||
(let ((v1-1 (/ (+ arg2 63) 64))
|
||||
(t2-0 *display*)
|
||||
(t3-0 144)
|
||||
)
|
||||
(+! (-> t2-0 mem-reserve-size) t3-0)
|
||||
(when (not (-> t2-0 dma-buffer-overflow))
|
||||
(let ((t5-0 (-> t2-0 frames (-> t2-0 on-screen) global-buf)))
|
||||
(if (< (-> t5-0 real-buffer-end) (the-as int (&+ (-> t5-0 base) t3-0)))
|
||||
(set! (-> t2-0 dma-buffer-overflow) #t)
|
||||
)
|
||||
)
|
||||
(if (not (-> t2-0 dma-buffer-overflow))
|
||||
(dma-buffer-add-gs-set-flusha arg0
|
||||
(scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)))
|
||||
(xyoffset-1 (new 'static 'gs-xy-offset))
|
||||
(frame-1 (new 'static 'gs-frame :fbp arg1 :fbw v1-1 :psm arg5 :fbmsk arg4))
|
||||
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
|
||||
(texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
|
||||
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
|
||||
(texflush 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
;; definition for function set-display-gs-state-offset
|
||||
(defun set-display-gs-state-offset ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int))
|
||||
(let ((v1-1 (/ (+ arg2 63) 64))
|
||||
(t4-0 *display*)
|
||||
(t5-0 144)
|
||||
)
|
||||
(+! (-> t4-0 mem-reserve-size) t5-0)
|
||||
(when (not (-> t4-0 dma-buffer-overflow))
|
||||
(let ((t7-0 (-> t4-0 frames (-> t4-0 on-screen) global-buf)))
|
||||
(if (< (-> t7-0 real-buffer-end) (the-as int (&+ (-> t7-0 base) t5-0)))
|
||||
(set! (-> t4-0 dma-buffer-overflow) #t)
|
||||
)
|
||||
)
|
||||
(if (not (-> t4-0 dma-buffer-overflow))
|
||||
(dma-buffer-add-gs-set-flusha arg0
|
||||
(scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)))
|
||||
(xyoffset-1 (new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16)))
|
||||
(frame-1 (new 'static 'gs-frame :fbp arg1 :fbw v1-1 :psm arg5 :fbmsk arg4))
|
||||
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
|
||||
(texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
|
||||
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
|
||||
(texflush 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
;; definition for function reset-display-gs-state
|
||||
(defun reset-display-gs-state ((arg0 display) (arg1 dma-buffer))
|
||||
(let ((v1-0 *display*)
|
||||
(a2-0 144)
|
||||
)
|
||||
(+! (-> v1-0 mem-reserve-size) a2-0)
|
||||
(when (not (-> v1-0 dma-buffer-overflow))
|
||||
(let ((t0-0 (-> v1-0 frames (-> v1-0 on-screen) global-buf)))
|
||||
(if (< (-> t0-0 real-buffer-end) (the-as int (&+ (-> t0-0 base) a2-0)))
|
||||
(set! (-> v1-0 dma-buffer-overflow) #t)
|
||||
)
|
||||
)
|
||||
(if (not (-> v1-0 dma-buffer-overflow))
|
||||
(dma-buffer-add-gs-set-flusha arg1
|
||||
(scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f))
|
||||
(xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300))
|
||||
(frame-1 (new 'static 'gs-frame :fbp #x198 :fbw #x8))
|
||||
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
|
||||
(texa (new 'static 'gs-texa :ta1 #x80))
|
||||
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
|
||||
(texflush 0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
arg0
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(kmemopen global "dma-buffers")
|
||||
|
||||
;; definition for symbol *vu0-dma-list*, type dma-buffer
|
||||
(define *vu0-dma-list* (new 'global 'dma-buffer 4096))
|
||||
|
||||
;; definition for symbol *display*, type display
|
||||
(define *display* (new 'global 'display 0 512 416 2 49))
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(allocate-dma-buffers *display*)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(kmemclose)
|
||||
|
||||
|
||||
|
||||
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; definition of type game-text
|
||||
(deftype game-text (structure)
|
||||
((id text-id)
|
||||
(text string)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type game-text
|
||||
(defmethod inspect ((this game-text))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this 'game-text)
|
||||
(format #t "~1Tid: ~D~%" (-> this id))
|
||||
(format #t "~1Ttext: ~A~%" (-> this text))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition of type game-text-info
|
||||
(deftype game-text-info (basic)
|
||||
((length int32)
|
||||
(language-id int32)
|
||||
(group-name string)
|
||||
(data game-text :dynamic)
|
||||
)
|
||||
(:methods
|
||||
(lookup-text! (_type_ text-id symbol) string)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for method 3 of type game-text-info
|
||||
(defmethod inspect ((this game-text-info))
|
||||
(when (not this)
|
||||
(set! this this)
|
||||
(goto cfg-4)
|
||||
)
|
||||
(format #t "[~8x] ~A~%" this (-> this type))
|
||||
(format #t "~1Tlength: ~D~%" (-> this length))
|
||||
(format #t "~1Tlanguage-id: ~D~%" (-> this language-id))
|
||||
(format #t "~1Tgroup-name: ~A~%" (-> this group-name))
|
||||
(format #t "~1Tdata[0] @ #x~X~%" (-> this data))
|
||||
(label cfg-4)
|
||||
this
|
||||
)
|
||||
|
||||
;; definition for symbol *text-group-names*, type (array string)
|
||||
(define *text-group-names* (new 'static 'boxed-array :type string "common"))
|
||||
|
||||
;; definition for symbol *common-text-heap*, type kheap
|
||||
(define *common-text-heap* (new 'global 'kheap))
|
||||
|
||||
;; definition for symbol *common-text*, type game-text-info
|
||||
(define *common-text* (the-as game-text-info #f))
|
||||
|
||||
;; failed to figure out what this is:
|
||||
0
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -126,7 +126,7 @@
|
||||
;; definition of type profile-spec
|
||||
(deftype profile-spec (structure)
|
||||
"Specification for a profile category."
|
||||
((name basic)
|
||||
((name symbol)
|
||||
(color rgba)
|
||||
)
|
||||
)
|
||||
|
||||
+1032
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user