Files
jak-project/goal_src/jak2/kernel-defs.gc
T
Tyler Wilding b6649d2433 Properly set window size when switching from borderless/fullscreen -> windowed mode (#3923)
Prior to SDL3, borderless windows were kinda a hack, they cleaned all of
that up. The side-effect of that is that the C++ code keeps track of the
current window size (it does this for framebuffer sizing, but also to
set the size of the window).

This is now an issue because SDL is properly firing events when you
change to borderless mode, so our window size gets updated to the size
of the entire monitor. When you switch to windowed mode from borderless,
it now seems like it didn't work (it did, its just still taking up the
entire screen).

This could be better cleaned up if more settings are extracted out of
GOAL and put into C++ so they can be managed and accessed where they
belong. But for now, this is a minimally invasive fix.

Fixes #3917
2025-05-31 18:47:02 -04:00

410 lines
16 KiB
Common Lisp

;; kernel-defs.gc
;; everything defined in the C Kernel / runtime
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; kscheme - InitHeapAndSymbol
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defenum kmalloc-flags
:bitfield #t
(align-16 4)
(align-64 6)
(align-256 8)
(memset 12)
(top 13)
)
(defenum link-flag
:bitfield #t
:type int32
(output-load-msg 0)
(output-load-true-msg 1)
(execute-login 2)
(print-login 3)
(force-debug 4)
(fast-link 5)
)
(defenum language-enum
:type int64
(english 0)
(french 1)
(german 2)
(spanish 3)
(italian 4)
(japanese 5)
(korean 6)
(uk-english 7)
;; custom
(portuguese 8)
(finnish 9)
(swedish 10)
(danish 11)
(norwegian 12)
(dutch 13)
(br-portuguese 14)
(hungarian 15)
(catalan 16)
(icelandic 17)
(polish 18)
(lithuanian 19)
(czech 20)
(croatian 21)
(galician 22)
)
(defenum runtime-exit-status
:type uint32
(running)
(restart-runtime)
(exit)
(restart-in-debug)
)
;; fixed symbols
(define-extern #f symbol)
(define-extern #t symbol)
(define-extern function type)
(define-extern basic type)
(define-extern string type)
(define-extern symbol type)
(define-extern type type)
(define-extern object type)
(define-extern link-block type)
(define-extern integer type)
(define-extern sinteger type)
(define-extern uinteger type)
(define-extern binteger type)
(define-extern int8 type)
(define-extern int16 type)
(define-extern int32 type)
(define-extern int64 type)
(define-extern int128 type)
(define-extern uint8 type)
(define-extern uint16 type)
(define-extern uint32 type)
(define-extern uint64 type)
(define-extern uint128 type)
(define-extern float type)
(define-extern process-tree type)
(define-extern process type)
(define-extern thread type)
(define-extern structure type)
(define-extern pair type)
(define-extern pointer type)
(define-extern number type)
(define-extern array type)
(define-extern vu-function type)
(define-extern connectable type)
(define-extern stack-frame type)
(define-extern file-stream type)
(define-extern kheap type)
(define-extern nothing (function none))
(define-extern delete-basic (function basic none))
(define-extern static symbol)
(define-extern global kheap)
(define-extern debug kheap)
(define-extern loading-level kheap) ;; not a kheap at boot
(define-extern loading-package kheap) ;; not a kheap at boot
(define-extern process-level-heap kheap) ;; not a kheap at boot
(define-extern stack symbol)
(define-extern scratch symbol)
(define-extern *scratch-top* pointer)
(define-extern zero-func (function int))
;; InitHeapAndSymbol
(define-extern _format (function _varargs_ object))
(define-extern method-set! (function type int object none)) ;; may actually return function.
(define-extern kmemopen (function kheap string none))
(define-extern kmemclose (function none))
(define-extern *enable-method-set* int)
(define-extern *listener-function* (function object))
(define-extern *debug-segment* symbol)
(define-extern dgo-load (function string kheap link-flag int none))
(define-extern malloc (function symbol int pointer))
(define-extern loado (function string kheap object))
(define-extern link (function pointer pointer int kheap int pointer))
(declare-type cpad-info basic)
(define-extern cpad-open (function cpad-info int cpad-info))
(define-extern cpad-get-data (function cpad-info cpad-info))
(declare-type mouse-info basic)
(define-extern mouse-get-data (function mouse-info none))
(defconstant GAME_TERRITORY_SCEA 0)
(defconstant GAME_TERRITORY_SCEE 1)
(defconstant GAME_TERRITORY_SCEI 2)
(defconstant GAME_TERRITORY_SCEK 3)
(define-extern scf-get-territory (function int)) ;; not actually a scf function...
(define-extern scf-get-volume "Defined in the kernel" (function int))
(define-extern scf-get-language "Defined in the kernel" (function language-enum))
(define-extern scf-get-aspect "Defined in the kernel" (function uint))
(define-extern scf-get-timeout (function int))
(define-extern scf-get-inactive-timeout (function int))
(define-extern kernel-shutdown (function runtime-exit-status none))
(define-extern *boot-video-mode* "Defined in the kernel" int)
(define-extern *kernel-boot-message* symbol)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; PC Port functions
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defenum pc-renderer-tree-type
(none 0)
(tfrag3 1)
(tie3 2)
(invalid))
(defenum pc-collision-mode
(none 0)
(mode 1)
(event 2)
(material 3)
(skip 4)
(skiphide 5))
(defenum pc-gfx-hack
(no-tex 0))
;; TODO - make a common kernel-defs
(define-extern __read-ee-timer (function uint))
(define-extern __mem-move (function pointer pointer uint none))
(define-extern __send-gfx-dma-chain (function object object none))
(define-extern __pc-texture-upload-now (function object object none))
(define-extern __pc-texture-relocate (function object object object none))
(define-extern __pc-get-mips2c (function string function))
(define-extern __pc-set-levels (function (pointer string) none))
(define-extern __pc-set-active-levels (function (pointer string) none))
(define-extern __pc-get-tex-remap (function int int int))
;; Input Related Functions
;; TODO - add get current controller index
(define-extern pc-get-controller-count (function int))
(define-extern pc-get-controller-name (function int string string))
(deftype bind-assignment-info (structure)
((port int32)
(device-type int32)
(for-buttons? symbol)
(input-idx int32)
(analog-min-range? symbol)))
(define-extern pc-get-current-bind (function bind-assignment-info string symbol))
(define-extern pc-waiting-for-bind? (function symbol))
(define-extern pc-set-waiting-for-bind! (function int symbol symbol int none))
(define-extern pc-stop-waiting-for-bind! (function none))
(define-extern pc-get-controller-index (function int int))
(define-extern pc-set-controller! (function int int none))
(define-extern pc-get-keyboard-enabled? (function symbol))
(define-extern pc-set-keyboard-enabled! (function symbol none))
(define-extern pc-set-mouse-options! (function symbol symbol symbol none))
(define-extern pc-set-mouse-camera-sens! (function float float none))
(define-extern pc-current-controller-has-led? (function symbol))
(define-extern pc-current-controller-has-rumble? (function symbol))
(define-extern pc-set-controller-led! (function int int int int none))
(define-extern pc-ignore-background-controller-events! (function symbol none))
(define-extern pc-reset-bindings-to-defaults! (function int int none))
(define-extern pc-set-auto-hide-cursor! (function symbol none))
(define-extern pc-get-pressure-sensitivity-enabled? (function symbol))
(define-extern pc-set-pressure-sensitivity-enabled! (function symbol none))
(define-extern pc-get-axis-scale (function float))
(define-extern pc-set-axis-scale! (function float none))
(define-extern pc-current-controller-has-pressure-sensitivity? (function symbol))
(define-extern pc-current-controller-has-trigger-effect-support? (function symbol))
(define-extern pc-get-trigger-effects-enabled? (function symbol))
(define-extern pc-set-trigger-effects-enabled! (function symbol none))
(defenum pc-trigger-effect-option
(left 0)
(right 1)
(both 2))
(define-extern pc-clear-trigger-effect! (function pc-trigger-effect-option none))
(define-extern pc-send-trigger-effect-feedback! (function pc-trigger-effect-option int int none))
(define-extern pc-send-trigger-effect-vibrate! (function pc-trigger-effect-option int int int none))
(define-extern pc-send-trigger-effect-weapon! (function pc-trigger-effect-option int int int none))
(define-extern pc-send-trigger-rumble! (function int int int none))
;; Display Related Functions
(define-extern pc-get-display-mode (function symbol))
(define-extern pc-get-active-display-size (function (pointer int64) (pointer int64) none))
(define-extern pc-get-active-display-refresh-rate (function int))
(define-extern pc-get-display-count (function int))
(define-extern pc-get-display-name (function int string symbol))
(define-extern pc-get-os (function symbol))
(define-extern pc-get-window-size (function (pointer int64) (pointer int64) none))
(define-extern pc-get-window-scale (function (pointer float) (pointer float) none))
(define-extern pc-set-window-size! (function int int none))
(define-extern pc-get-display-id (function int))
(define-extern pc-set-display-id! (function int none))
(define-extern pc-set-display-mode! (function symbol int int none))
(define-extern pc-get-num-resolutions (function symbol int))
(define-extern pc-get-resolution (function int symbol (pointer int64) (pointer int64) none))
(define-extern pc-is-supported-resolution? (function int int symbol))
(define-extern pc-set-frame-rate (function int none))
(define-extern pc-set-vsync (function symbol none))
(define-extern pc-renderer-tree-set-lod (function pc-renderer-tree-type int none))
(define-extern pc-set-letterbox (function int int none))
(define-extern pc-set-collision (function symbol none))
(define-extern pc-set-collision-wireframe (function symbol none))
(define-extern pc-get-collision-mask (function pc-collision-mode int symbol))
(define-extern pc-set-collision-mask (function pc-collision-mode int symbol none))
(define-extern pc-set-collision-mode (function pc-collision-mode none))
(declare-type discord-info structure)
(define-extern pc-discord-rpc-update (function discord-info none))
(define-extern pc-discord-rpc-set (function int none))
(define-extern pc-init-autosplitter-struct (function none))
(define-extern pc-filepath-exists? (function string symbol))
(define-extern pc-mkdir-file-path (function string none))
(define-extern pc-sound-set-flava-hack (function int none))
(define-extern pc-sound-set-fade-hack (function int none))
(define-extern pc-set-window-lock (function symbol none))
(define-extern pc-set-game-resolution (function int int none))
(define-extern pc-set-msaa (function int none))
(define-extern pc-set-gfx-hack (function pc-gfx-hack symbol none))
(define-extern pc-get-unix-timestamp (function int))
(define-extern pc-filter-debug-string? (function string float symbol))
(define-extern pc-screen-shot (function none))
(declare-type screen-shot-settings structure)
(define-extern pc-register-screen-shot-settings (function screen-shot-settings none))
(define-extern pc-treat-pad0-as-pad1 (function symbol none))
(define-extern pc-is-imgui-visible? (function symbol))
(define-extern pc-rand (function int))
(define-extern pc-encode-utf8-string (function string string none))
;; Jak 2 Specific Kernel Definitions
(define *pc-waiting-on-rpc?* symbol)
(define *pc-rpc-error?* symbol)
(define-extern pc-get-last-rpc-error (function string none))
(define-extern pc-fetch-external-race-times (function string none))
(define-extern pc-fetch-external-speedrun-times (function string none))
(define-extern pc-fetch-external-highscores (function string none))
(define-extern pc-get-external-race-time (function string int string (pointer float) none)) ;; returns the score and the name in the given string ptr
(define-extern pc-get-external-speedrun-time (function string int string (pointer float) none)) ;; returns the score and the name in the given string ptr
(define-extern pc-get-external-highscore (function string int string (pointer float) none)) ;; returns the score and the name in the given string ptr
(define-extern pc-get-num-external-race-times (function string int))
(define-extern pc-get-num-external-speedrun-times (function string int))
(define-extern pc-get-num-external-highscores (function string int))
;; Speedrunner Mode Stuff
(define-extern pc-sr-mode-get-practice-entries-amount (function int))
(define-extern pc-sr-mode-get-practice-entry-name (function int string none))
(define-extern pc-sr-mode-get-practice-entry-continue-point (function int string none))
(define-extern pc-sr-mode-get-practice-entry-history-success (function int int))
(define-extern pc-sr-mode-get-practice-entry-history-attempts (function int int))
(define-extern pc-sr-mode-get-practice-entry-session-success (function int int))
(define-extern pc-sr-mode-get-practice-entry-session-attempts (function int int))
(define-extern pc-sr-mode-get-practice-entry-avg-time (function int string none))
(define-extern pc-sr-mode-get-practice-entry-fastest-time (function int string none))
(define-extern pc-sr-mode-record-practice-entry-attempt! (function int symbol (pointer float) symbol))
(declare-type speedrun-practice-objective structure)
(define-extern pc-sr-mode-init-practice-info! (function int speedrun-practice-objective none))
;; TODO - a menu to dump out the 3 numbers with a pre-generated name to the file
(define-extern pc-sr-mode-get-custom-category-amount (function int))
(define-extern pc-sr-mode-get-custom-category-name (function int string none))
(define-extern pc-sr-mode-get-custom-category-continue-point (function int string none))
(declare-type speedrun-custom-category structure)
(define-extern pc-sr-mode-init-custom-category-info! (function int speedrun-custom-category none))
(define-extern pc-sr-mode-dump-new-custom-category (function speedrun-custom-category none))
(define-extern file-stream-open (function file-stream string symbol file-stream))
(define-extern file-stream-close (function file-stream file-stream))
(define-extern file-stream-length (function file-stream int))
(define-extern file-stream-seek (function file-stream int int int))
(define-extern file-stream-read (function file-stream pointer int int))
(define-extern file-stream-write (function file-stream pointer uint uint))
(define-extern reset-path (function none))
(define-extern install-handler (function int function int))
(define-extern flush-cache (function int none))
(define-extern gs-store-image (function object object object))
(define-extern sync-path (function int int int))
(define-extern kmalloc (function kheap int kmalloc-flags string pointer))
(define-extern *kernel-boot-message* symbol)
(define-extern *user* symbol)
(define-extern new-dynamic-structure (function symbol type int structure))
(define-extern rpc-busy? (function int uint))
(define-extern rpc-call (function int uint uint uint int uint int uint))
(define-extern string->symbol (function string symbol))
(define-extern pc-get-unix-timestamp (function int))
(define-extern link-begin (function pointer (pointer uint8) int kheap link-flag int))
(define-extern link-reset (function none))
(define-extern kset-language (function language-enum int))
(define-extern syncv (function int int))
(define-extern put-display-env (function object none))
;; +++memcard-h:mc-status-code
(defenum mc-status-code
:type uint32
(busy 0)
(ok 1)
(bad-handle 2)
(format-failed 3)
(internal-error 4)
(write-error 5)
(read-error 6)
(new-game 7)
(no-memory 8)
(no-card 9)
(no-last 10)
(no-format 11)
(no-file 12)
(no-save 13)
(no-space 14)
(bad-version 15)
(no-process 16)
(no-auto-save 17)
)
;; ---memcard-h:mc-status-code
(define-extern mc-run (function none))
(define-extern mc-format (function int mc-status-code))
(define-extern mc-unformat (function int mc-status-code))
(define-extern mc-create-file (function int uint mc-status-code))
(define-extern mc-save (function int int pointer int mc-status-code))
(define-extern mc-load (function int int pointer mc-status-code))
(declare-type mc-slot-info structure)
(define-extern mc-sync (function int))
(define-extern mc-get-slot-info (function int mc-slot-info none))
(define-extern mc-check-result (function mc-status-code))
;; mc-makefile
(define-extern __pc-get-mips2c (function string function))
(define-extern dma-sync (function pointer int int int))
(define-extern __pc-texture-upload-now (function object object none))
(define-extern __pc-texture-relocate (function object object object none))
(define-extern link-resume (function int))
(define-extern unload (function string none))
(define-extern reset-graph (function int int int int none))
;; PC stuff
(defenum pc-prof-event
(begin 0)
(end 1)
(instant 2)
)
(define-extern pc-prof (function string pc-prof-event none))
(define-extern *pc-settings-folder* string)
(define-extern *pc-settings-built-sha* string)
(define-extern alloc-vagdir-names (function symbol (pointer uint64)))