mirror of
https://github.com/open-goal/jak-project
synced 2026-07-07 22:22:21 -04:00
decomp: hint-control | menu | default-menu (as much as possible) (#632)
* decomp: mostly done `hint-control` * decomp: Started and decent chunk of `menu` done * temp stash * decomp: escape from `menu` hell * decomp: starting on `default-menu` * decomp: As much as i can do in `default-menu` at this time * decomp: clean up `hint-control` * decomp: fix reference tests * temp stash * decomp: finalize `menu` * decomp: add `menu` to goal_src * decomp: finalize `hint-control` * decomp: Resolve TypeConsistency issues * and fix reference tests * address feedback * format and lint * fix tests
This commit is contained in:
@@ -21,6 +21,13 @@
|
||||
"name" : "Tests - Draft Tests - Verbose",
|
||||
"args" : ["--gtest_brief=0", "--gtest_filter=\"*Draft*\""]
|
||||
},
|
||||
{
|
||||
"type" : "default",
|
||||
"project" : "CMakeLists.txt",
|
||||
"projectTarget" : "goalc-test.exe (bin\\goalc-test.exe)",
|
||||
"name" : "Tests - TypeConsistency - Verbose",
|
||||
"args" : ["--gtest_brief=0", "--gtest_filter=\"*TypeConsistency*\""]
|
||||
},
|
||||
{
|
||||
"type" : "default",
|
||||
"project" : "CMakeLists.txt",
|
||||
|
||||
+2
-1
@@ -35,7 +35,7 @@ tasks:
|
||||
- python ./scripts/cleanup-all-types.py
|
||||
analyze-ee-memory:
|
||||
cmds:
|
||||
- ./out/build/Debug/bin/memory_dump_tool.exe "{{.FILE}}" ./ > ee-analysis.log
|
||||
- ./out/build/Release/bin/memory_dump_tool.exe "{{.FILE}}" ./ > ee-analysis.log
|
||||
watch-pcsx2:
|
||||
cmds:
|
||||
- watchmedo shell-command --drop --patterns="*.p2s" --recursive --command='task analyze-ee-memory FILE="${watch_src_path}"' "{{.SAVESTATE_DIR}}"
|
||||
@@ -51,6 +51,7 @@ tasks:
|
||||
- task: offline-tests
|
||||
update-reference-tests:
|
||||
cmds:
|
||||
- cmd: python ./scripts/default-file-or-folder.py --path failures
|
||||
- cmd: ./out/build/Release/bin/offline-test.exe "./iso_data/jak1" --dump-mode
|
||||
ignore_error: true
|
||||
- python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/
|
||||
|
||||
+259
-263
@@ -4607,7 +4607,7 @@
|
||||
)
|
||||
|
||||
(deftype shader-ptr (uint32)
|
||||
((shader uint32 :offset 8 :size 24))
|
||||
((shader uint32 :offset 8 :size 24)) ;; TODO this seems wrong - default-menu::all-texture-tweak-adjust
|
||||
:method-count-assert 9
|
||||
:size-assert #x4
|
||||
:flag-assert #x900000004
|
||||
@@ -4828,7 +4828,7 @@
|
||||
(mem-usage-block basic :offset-assert 2496)
|
||||
(mem-usage int32 :offset-assert 2500)
|
||||
(code-memory-start pointer :offset-assert 2504)
|
||||
(code-memory-end pointer :offset-assert 2508)
|
||||
(code-memory-end pointer :offset-assert 2508) ;; NOTE - usually a texture-page
|
||||
(texture-mask uint32 9 :offset-assert 2512)
|
||||
(force-inside? symbol :offset-assert 2548)
|
||||
(pad uint8 56)
|
||||
@@ -4872,7 +4872,7 @@
|
||||
(receiving-level basic :offset-assert 32)
|
||||
(load-commands pair :offset-assert 36)
|
||||
(play? symbol :offset-assert 40)
|
||||
;; there's something? from 40 -> 96.
|
||||
;; there's something? from 40 -> 96. ;; - Look at default-menu::debug-create-cam-restore
|
||||
(_hack-pad uint8 :offset 90)
|
||||
(level0 level :inline :offset-assert 96)
|
||||
(level1 level :inline :offset-assert 2704)
|
||||
@@ -5556,7 +5556,7 @@
|
||||
(define-extern texture-page-common-boot-allocate (function texture-pool texture-page kheap int texture-page))
|
||||
(define-extern texture-page-level-allocate (function texture-pool texture-page kheap int texture-page))
|
||||
(define-extern relocate-later (function symbol))
|
||||
(define-extern adgif-shader-update! function)
|
||||
(define-extern adgif-shader-update! (function int texture none)) ;; todo - unconfirmed
|
||||
(define-extern adgif-shader-login (function adgif-shader none))
|
||||
(define-extern adgif-shader-login-no-remap (function adgif-shader none))
|
||||
(define-extern adgif-shader-login-fast function)
|
||||
@@ -5616,7 +5616,8 @@
|
||||
|
||||
(define-extern *draw-hook* (function none))
|
||||
(define-extern *debug-hook* (function none))
|
||||
(define-extern *menu-hook* (function none))
|
||||
(declare-type debug-menu-context basic)
|
||||
(define-extern *menu-hook* (function debug-menu-context))
|
||||
(define-extern *progress-hook* (function none))
|
||||
(define-extern *dma-timeout-hook* (function none))
|
||||
|
||||
@@ -5802,6 +5803,7 @@
|
||||
|
||||
(deftype drawable (basic)
|
||||
((id int16 :offset-assert 4)
|
||||
; (unknown basic :offset-assert 8) ;; - from default-menu::build-instance-list
|
||||
(bsphere vector :inline :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 18
|
||||
@@ -6012,7 +6014,7 @@
|
||||
;; inherited inspect of process
|
||||
(:methods
|
||||
(dummy-14 () none 14)
|
||||
(dummy-15 () none 15)
|
||||
(dummy-15 (_type_) symbol 15)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -6068,7 +6070,7 @@
|
||||
)
|
||||
|
||||
(deftype task-hint-control-group (structure)
|
||||
((tasks basic :offset-assert 0)
|
||||
((tasks (array task-hint-control) :offset-assert 0)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x4
|
||||
@@ -8805,7 +8807,7 @@
|
||||
(text-ids-seen bit-array :offset-assert 112)
|
||||
(level-opened uint8 32 :offset-assert 116)
|
||||
(hint-control (array level-hint-control) :offset-assert 148)
|
||||
(task-hint-control array :offset-assert 152)
|
||||
(task-hint-control (array task-hint-control-group) :offset-assert 152)
|
||||
(total-deaths int32 :offset-assert 156)
|
||||
(continue-deaths int32 :offset-assert 160)
|
||||
(fuel-cell-deaths int32 :offset-assert 164)
|
||||
@@ -9013,7 +9015,8 @@
|
||||
|
||||
(deftype instance (drawable)
|
||||
((bucket-index uint16 :offset 6)
|
||||
(origin matrix4h :inline :offset-assert 32)
|
||||
(unknown uint32 :offset 8) ; TODO - from default-menu
|
||||
(origin matrix4h :inline :offset-assert 32) ; TODO - this can also be a float, default-menu::lambda_62
|
||||
(wind-index uint16 :offset 62)
|
||||
)
|
||||
:method-count-assert 18
|
||||
@@ -10917,6 +10920,7 @@
|
||||
|
||||
(deftype control-info (collide-shape-moving)
|
||||
(
|
||||
(some-quaternion quaternion :offset 496)
|
||||
(unknown-vector00 vector :inline :offset 576)
|
||||
(unknown-surface surface :offset 660)
|
||||
(unknown-symbol symbol :offset 664)
|
||||
@@ -15053,7 +15057,7 @@
|
||||
(define-extern internal-draw-debug-text-3d (function bucket-id string vector rgba vector2h pointer))
|
||||
(define-extern get-debug-line (function debug-line))
|
||||
(define-extern internal-draw-debug-line (function bucket-id vector vector rgba symbol rgba object))
|
||||
(define-extern draw-string (function string dma-buffer int))
|
||||
(define-extern draw-string (function string dma-buffer font-context int))
|
||||
(define-extern transform-float-point (function vector vector vector))
|
||||
(define-extern add-debug-point (function symbol bucket-id vector symbol)) ;; unused
|
||||
(define-extern add-debug-outline-triangle (function symbol bucket-id vector vector vector rgba symbol))
|
||||
@@ -15656,8 +15660,8 @@
|
||||
|
||||
;; - Functions
|
||||
|
||||
(define-extern get-string-length function)
|
||||
(define-extern draw-string-adv function)
|
||||
(define-extern get-string-length (function string font-context float))
|
||||
(define-extern draw-string-adv (function string dma-buffer font-context none)) ;; TODO - ret value unconfirmed!
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
@@ -16340,9 +16344,6 @@
|
||||
|
||||
(define-extern *kernel-boot-message* symbol)
|
||||
(define-extern *level-load-list* pair)
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
(define-extern *spawn-actors* symbol)
|
||||
(define-extern *default-continue* continue-point)
|
||||
|
||||
@@ -16488,7 +16489,7 @@
|
||||
|
||||
;; - Functions
|
||||
|
||||
(define-extern auto-save-command function)
|
||||
(define-extern auto-save-command (function symbol int int process-tree none)) ;; TODO - not confirmed
|
||||
(define-extern auto-save-init-by-other function)
|
||||
(define-extern progress-allowed? (function symbol))
|
||||
(define-extern print-game-text (function string font-context symbol int int float)) ; TODO decomp error, this seems correct though
|
||||
@@ -16955,7 +16956,7 @@
|
||||
(define-extern update-sky-tng-data function)
|
||||
(define-extern time-of-day-update function)
|
||||
(define-extern start-time-of-day (function int))
|
||||
(define-extern time-of-day-setup function)
|
||||
(define-extern time-of-day-setup (function symbol int none)) ;; not confirmed
|
||||
(define-extern set-time-of-day function)
|
||||
(define-extern init-time-of-day-context function)
|
||||
(define-extern update-time-of-day function)
|
||||
@@ -17757,9 +17758,12 @@
|
||||
(define-extern target-cam-pos function)
|
||||
(define-extern cam-master-init function)
|
||||
|
||||
;; - Symbols
|
||||
|
||||
(define-extern cam-free-floating state)
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
;;(define-extern cam-free-floating object) ;; unknown type
|
||||
;;(define-extern cam-master-active object) ;; unknown type
|
||||
;;(define-extern list-keeper-active object) ;; unknown type
|
||||
;;(define-extern cam-fixed object) ;; unknown type
|
||||
@@ -18349,7 +18353,7 @@
|
||||
(define-extern cam-debug-add-coll-tri function)
|
||||
(define-extern debug-euler function)
|
||||
(define-extern bike-cam-limit function)
|
||||
(define-extern external-cam-reset! function)
|
||||
(define-extern external-cam-reset! (function none)) ;; TODO - unconfirmed
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
@@ -18440,15 +18444,15 @@
|
||||
|
||||
;; - Functions
|
||||
|
||||
(define-extern find-hint-control-index function)
|
||||
(define-extern start-hint-timer function)
|
||||
(define-extern increment-success-for-hint function)
|
||||
(define-extern can-hint-be-played? function)
|
||||
(define-extern update-task-hints function)
|
||||
(define-extern find-hint-control-index (function level-hint-control int))
|
||||
(define-extern start-hint-timer (function level-hint-control none))
|
||||
(define-extern increment-success-for-hint (function level-hint-control none))
|
||||
(define-extern can-hint-be-played? (function int symbol))
|
||||
(define-extern update-task-hints (function none))
|
||||
|
||||
;; - Unknowns
|
||||
;; - Symbols
|
||||
|
||||
;;(define-extern *hint-semaphore* object) ;; unknown type
|
||||
(define-extern *hint-semaphore* (pointer process-tree)) ;; likely a level-hint process
|
||||
|
||||
|
||||
;; ----------------------
|
||||
@@ -18475,7 +18479,7 @@
|
||||
(define-extern level-hint-init-by-other function)
|
||||
(define-extern voicebox-spawn function)
|
||||
(define-extern hide-bottom-hud function)
|
||||
(define-extern ambient-hint-init-by-other function)
|
||||
(define-extern ambient-hint-init-by-other (function none))
|
||||
(define-extern level-hint-process-cmd function)
|
||||
(define-extern task-known? (function game-task symbol))
|
||||
(define-extern can-grab-display? function)
|
||||
@@ -19158,178 +19162,167 @@
|
||||
|
||||
;; - Types
|
||||
|
||||
; (deftype debug-menu-context (basic)
|
||||
; ((is-active basic :offset-assert 4)
|
||||
; (sel-length int32 :offset-assert 8)
|
||||
; (sel-menu UNKNOWN 8 :offset-assert 12)
|
||||
; (root-menu basic :offset-assert 44)
|
||||
; (joypad-func basic :offset-assert 48)
|
||||
; (joypad-item basic :offset-assert 52)
|
||||
; (font basic :offset-assert 56)
|
||||
; (is-hidden basic :offset-assert 60)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x40
|
||||
; :flag-assert #x900000040
|
||||
; )
|
||||
(declare-type debug-menu basic)
|
||||
(deftype debug-menu-context (basic)
|
||||
((is-active symbol :offset-assert 4)
|
||||
(sel-length int32 :offset-assert 8)
|
||||
(sel-menu debug-menu 8 :offset-assert 12)
|
||||
(root-menu debug-menu :offset-assert 44)
|
||||
(joypad-func (function basic none) :offset-assert 48)
|
||||
(joypad-item basic :offset-assert 52) ;; is this more specific?
|
||||
(font font-context :offset-assert 56)
|
||||
(is-hidden symbol :offset-assert 60)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x40
|
||||
:flag-assert #x900000040
|
||||
(:methods
|
||||
(new (symbol type) _type_ 0))
|
||||
)
|
||||
|
||||
; (deftype debug-menu-node (basic)
|
||||
; ((name basic :offset-assert 4)
|
||||
; (parent basic :offset-assert 8)
|
||||
; (refresh-delay int32 :offset-assert 12)
|
||||
; (refresh-ctr int32 :offset-assert 16)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x14
|
||||
; :flag-assert #x900000014
|
||||
; )
|
||||
(declare-type debug-menu basic)
|
||||
(deftype debug-menu-node (basic)
|
||||
((name string :offset-assert 4)
|
||||
(parent debug-menu :offset-assert 8)
|
||||
(refresh-delay int32 :offset-assert 12)
|
||||
(refresh-ctr int32 :offset-assert 16)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x14
|
||||
:flag-assert #x900000014
|
||||
)
|
||||
|
||||
; (deftype debug-menu (debug-menu-node)
|
||||
; ((name basic :offset-assert 4)
|
||||
; (parent basic :offset-assert 8)
|
||||
; (refresh-delay int32 :offset-assert 12)
|
||||
; (refresh-ctr int32 :offset-assert 16)
|
||||
; (context basic :offset-assert 20)
|
||||
; (selected-item basic :offset-assert 24)
|
||||
; (pix-width int32 :offset-assert 28)
|
||||
; (pix-height int32 :offset-assert 32)
|
||||
; (items basic :offset-assert 36)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x28
|
||||
; :flag-assert #x900000028
|
||||
; )
|
||||
(declare-type debug-menu-item basic)
|
||||
(deftype debug-menu (debug-menu-node)
|
||||
((context debug-menu-context :offset-assert 20)
|
||||
(selected-item debug-menu-item :offset-assert 24)
|
||||
(pix-width int32 :offset-assert 28)
|
||||
(pix-height int32 :offset-assert 32)
|
||||
(items pair :offset-assert 36) ; list of debug-menu-item
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x28
|
||||
:flag-assert #x900000028
|
||||
(:methods
|
||||
(new (symbol type debug-menu-context string) _type_ 0))
|
||||
)
|
||||
|
||||
; (deftype debug-menu-item (debug-menu-node)
|
||||
; ((name basic :offset-assert 4)
|
||||
; (parent basic :offset-assert 8)
|
||||
; (refresh-delay int32 :offset-assert 12)
|
||||
; (refresh-ctr int32 :offset-assert 16)
|
||||
; (id int32 :offset-assert 20)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x18
|
||||
; :flag-assert #x900000018
|
||||
; )
|
||||
(deftype debug-menu-item (debug-menu-node)
|
||||
((id int32 :offset-assert 20)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x18
|
||||
:flag-assert #x900000018
|
||||
)
|
||||
|
||||
; (deftype debug-menu-item-submenu (debug-menu-item)
|
||||
; ((name basic :offset-assert 4)
|
||||
; (parent basic :offset-assert 8)
|
||||
; (refresh-delay int32 :offset-assert 12)
|
||||
; (refresh-ctr int32 :offset-assert 16)
|
||||
; (id int32 :offset-assert 20)
|
||||
; (submenu basic :offset-assert 24)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x1c
|
||||
; :flag-assert #x90000001c
|
||||
; )
|
||||
(deftype debug-menu-item-submenu (debug-menu-item)
|
||||
((submenu debug-menu :offset-assert 24)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x1c
|
||||
:flag-assert #x90000001c
|
||||
(:methods
|
||||
(new (symbol type string debug-menu) _type_ 0))
|
||||
)
|
||||
|
||||
; (deftype debug-menu-item-function (debug-menu-item)
|
||||
; ((name basic :offset-assert 4)
|
||||
; (parent basic :offset-assert 8)
|
||||
; (refresh-delay int32 :offset-assert 12)
|
||||
; (refresh-ctr int32 :offset-assert 16)
|
||||
; (id int32 :offset-assert 20)
|
||||
; (activate-func basic :offset-assert 24)
|
||||
; (hilite-timer int8 :offset-assert 28)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x1d
|
||||
; :flag-assert #x90000001d
|
||||
; )
|
||||
(deftype debug-menu-item-function (debug-menu-item)
|
||||
((activate-func (function int int) :offset-assert 24) ;; func is kinda a guess, might be 2 ints
|
||||
(hilite-timer int8 :offset-assert 28)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x1d
|
||||
:flag-assert #x90000001d
|
||||
(:methods
|
||||
(new (symbol type string int function) _type_ 0))
|
||||
)
|
||||
|
||||
; (deftype debug-menu-item-flag (debug-menu-item)
|
||||
; ((name basic :offset-assert 4)
|
||||
; (parent basic :offset-assert 8)
|
||||
; (refresh-delay int32 :offset-assert 12)
|
||||
; (refresh-ctr int32 :offset-assert 16)
|
||||
; (id int32 :offset-assert 20)
|
||||
; (activate-func basic :offset-assert 24)
|
||||
; (is-on basic :offset-assert 28)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x20
|
||||
; :flag-assert #x900000020
|
||||
; )
|
||||
(deftype debug-menu-item-flag (debug-menu-item)
|
||||
((activate-func (function int int symbol) :offset-assert 24) ;; func is kinda a guess
|
||||
(is-on symbol :offset-assert 28)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x20
|
||||
:flag-assert #x900000020
|
||||
(:methods
|
||||
(new (symbol type string symbol function) _type_ 0))
|
||||
)
|
||||
|
||||
; (deftype debug-menu-item-var (debug-menu-item)
|
||||
; ((name basic :offset-assert 4)
|
||||
; (parent basic :offset-assert 8)
|
||||
; (refresh-delay int32 :offset-assert 12)
|
||||
; (refresh-ctr int32 :offset-assert 16)
|
||||
; (id int32 :offset-assert 20)
|
||||
; (display-str basic :offset-assert 24)
|
||||
; (grabbed-joypad-p basic :offset-assert 28)
|
||||
; (float-p basic :offset-assert 32)
|
||||
; (range-p basic :offset-assert 36)
|
||||
; (show-len int32 :offset-assert 40)
|
||||
; (inc-delay int32 :offset-assert 44)
|
||||
; (inc-delay-ctr int32 :offset-assert 48)
|
||||
; (step-delay-ctr int32 :offset-assert 52)
|
||||
; (inc-dir int32 :offset-assert 56)
|
||||
; (fval float :offset-assert 60)
|
||||
; (fundo-val float :offset-assert 64)
|
||||
; (frange-min float :offset-assert 68)
|
||||
; (frange-max float :offset-assert 72)
|
||||
; (fstart-inc float :offset-assert 76)
|
||||
; (fstep float :offset-assert 80)
|
||||
; (fprecision int32 :offset-assert 84)
|
||||
; (factivate-func basic :offset-assert 88)
|
||||
; (ival int32 :offset-assert 60)
|
||||
; (iundo-val int32 :offset-assert 64)
|
||||
; (irange-min int32 :offset-assert 68)
|
||||
; (irange-max int32 :offset-assert 72)
|
||||
; (istart-inc int32 :offset-assert 76)
|
||||
; (istep int32 :offset-assert 80)
|
||||
; (ihex-p basic :offset-assert 92)
|
||||
; (iactivate-func basic :offset-assert 88)
|
||||
; (ifloat-p basic :offset-assert 96)
|
||||
; )
|
||||
; :method-count-assert 9
|
||||
; :size-assert #x64
|
||||
; :flag-assert #x900000064
|
||||
; )
|
||||
(deftype debug-menu-item-var (debug-menu-item)
|
||||
((display-str string :offset-assert 24)
|
||||
(grabbed-joypad-p symbol :offset-assert 28)
|
||||
(float-p symbol :offset-assert 32)
|
||||
(range-p symbol :offset-assert 36)
|
||||
(show-len int32 :offset-assert 40)
|
||||
(inc-delay int32 :offset-assert 44)
|
||||
(inc-delay-ctr int32 :offset-assert 48)
|
||||
(step-delay-ctr int32 :offset-assert 52)
|
||||
(inc-dir int32 :offset-assert 56)
|
||||
(fval float :offset-assert 60)
|
||||
(fundo-val float :offset-assert 64)
|
||||
(frange-min float :offset-assert 68)
|
||||
(frange-max float :offset-assert 72)
|
||||
(fstart-inc float :offset-assert 76)
|
||||
(fstep float :offset-assert 80)
|
||||
(fprecision int32 :offset-assert 84)
|
||||
; (function int (the id) int (some constant) <int/float> <int/float> (fval or ival)x2 <int/float>)
|
||||
(factivate-func function :offset-assert 88)
|
||||
(ival int32 :offset 60)
|
||||
(iundo-val int32 :offset 64)
|
||||
(irange-min int32 :offset 68)
|
||||
(irange-max int32 :offset 72)
|
||||
(istart-inc int32 :offset 76)
|
||||
(istep int32 :offset 80)
|
||||
(ihex-p symbol :offset-assert 92)
|
||||
; (function int (the id) int (some constant) <int/float> <int/float> (fval or ival)x2 <int/float>)
|
||||
(iactivate-func function :offset 88)
|
||||
(ifloat-p symbol :offset-assert 96)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x64
|
||||
:flag-assert #x900000064
|
||||
(:methods
|
||||
(new (symbol type string int int) _type_ 0))
|
||||
)
|
||||
|
||||
;; - Functions
|
||||
|
||||
(define-extern debug-menus-active function)
|
||||
(define-extern debug-menus-default-joypad-func function)
|
||||
(define-extern debug-menu-context-render function)
|
||||
(define-extern debug-menu-context-close-submenu function)
|
||||
(define-extern debug-menu-context-activate-selection function)
|
||||
(define-extern debug-menu-context-select-new-item function)
|
||||
(define-extern debug-menu-item-send-msg function)
|
||||
(define-extern debug-menu-send-msg function)
|
||||
(define-extern debug-menu-context-send-msg function)
|
||||
(define-extern debug-menu-item-submenu-msg function)
|
||||
(define-extern debug-menu-item-function-msg function)
|
||||
(define-extern debug-menu-item-flag-msg function)
|
||||
(define-extern debug-menu-item-var-msg function)
|
||||
(define-extern debug-menu-context-release-joypad function)
|
||||
(define-extern debug-menu-context-grab-joypad function)
|
||||
(define-extern debug-menu-item-var-joypad-handler function)
|
||||
(define-extern debug-menu-item-var-update-display-str function)
|
||||
(define-extern debug-menu-context-open-submenu function)
|
||||
(define-extern debug-menu-context-select-next-or-prev-item function)
|
||||
(define-extern debug-menu-render function)
|
||||
(define-extern debug-menu-item-render function)
|
||||
(define-extern debug-menu-item-submenu-render function)
|
||||
(define-extern debug-menu-item-function-render function)
|
||||
(define-extern debug-menu-item-flag-render function)
|
||||
(define-extern debug-menu-item-var-render function)
|
||||
(define-extern debug-menu-make-from-template function)
|
||||
(define-extern debug-menu-append-item function)
|
||||
(define-extern debug-menu-context-set-root-menu function)
|
||||
(define-extern debug-menu-func-decode function)
|
||||
(define-extern debug-menu-item-var-make-int function)
|
||||
(define-extern debug-menu-item-var-make-float function)
|
||||
(define-extern debug-menu-rebuild function)
|
||||
(define-extern debug-menu-context-default-selection function)
|
||||
(define-extern debug-menu-item-get-max-width function)
|
||||
(define-extern debug-menu-remove-all-items function)
|
||||
(define-extern debug-menu-find-from-template function)
|
||||
(define-extern debug-menus-handler function)
|
||||
(define-extern debug-menus-active (function debug-menu-context debug-menu-context))
|
||||
(define-extern debug-menus-default-joypad-func (function debug-menu-context debug-menu-context))
|
||||
(define-extern debug-menu-context-render (function debug-menu-context debug-menu-context))
|
||||
(define-extern debug-menu-context-close-submenu (function debug-menu-context debug-menu-context))
|
||||
(define-extern debug-menu-context-activate-selection (function debug-menu-context debug-menu-context))
|
||||
(define-extern debug-menu-context-select-new-item (function debug-menu-context int debug-menu-context))
|
||||
(define-extern debug-menu-item-send-msg (function debug-menu-item int debug-menu-item))
|
||||
(define-extern debug-menu-send-msg (function debug-menu int symbol debug-menu))
|
||||
(define-extern debug-menu-context-send-msg (function debug-menu-context int int debug-menu-context))
|
||||
(define-extern debug-menu-item-submenu-msg (function debug-menu-item-submenu int debug-menu-item-submenu))
|
||||
(define-extern debug-menu-item-function-msg (function debug-menu-item-function symbol debug-menu-item-function))
|
||||
(define-extern debug-menu-item-flag-msg (function debug-menu-item-flag int debug-menu-item-flag))
|
||||
(define-extern debug-menu-item-var-msg (function debug-menu-item-var int debug-menu-item-var))
|
||||
(define-extern debug-menu-context-release-joypad (function debug-menu-context symbol)) ;; this is called with a second arg in places, but definitely not used!
|
||||
(define-extern debug-menu-context-grab-joypad (function debug-menu-context basic function symbol))
|
||||
(define-extern debug-menu-item-var-joypad-handler (function debug-menu-item-var debug-menu-item-var))
|
||||
(define-extern debug-menu-item-var-update-display-str (function debug-menu-item-var debug-menu-item-var))
|
||||
(define-extern debug-menu-context-open-submenu (function debug-menu-context debug-menu basic)) ;; can also return string error messages
|
||||
(define-extern debug-menu-context-select-next-or-prev-item (function debug-menu-context int debug-menu-context))
|
||||
(define-extern debug-menu-render (function debug-menu int int int int debug-menu))
|
||||
(define-extern debug-menu-item-render (function debug-menu-item int int int symbol debug-menu-item))
|
||||
(define-extern debug-menu-item-submenu-render (function debug-menu-item-submenu int int int symbol debug-menu-item-submenu))
|
||||
(define-extern debug-menu-item-function-render (function debug-menu-item-function int int int symbol debug-menu-item-function))
|
||||
(define-extern debug-menu-item-flag-render (function debug-menu-item-flag int int int symbol debug-menu-item-flag))
|
||||
(define-extern debug-menu-item-var-render (function debug-menu-item-var int int int symbol debug-menu-item-var))
|
||||
(define-extern debug-menu-make-from-template (function debug-menu-context pair debug-menu-node))
|
||||
(define-extern debug-menu-append-item (function debug-menu debug-menu-item debug-menu-item))
|
||||
(define-extern debug-menu-context-set-root-menu (function debug-menu-context debug-menu debug-menu-context))
|
||||
(define-extern debug-menu-func-decode (function object function))
|
||||
(define-extern debug-menu-item-var-make-int (function debug-menu-item-var (function int int int int int) int symbol int int symbol debug-menu-item-var))
|
||||
(define-extern debug-menu-item-var-make-float (function debug-menu-item-var (function int int float float int) float symbol float float symbol debug-menu-item-var))
|
||||
(define-extern debug-menu-rebuild (function debug-menu debug-menu))
|
||||
(define-extern debug-menu-context-default-selection (function debug-menu-context symbol debug-menu-context))
|
||||
(define-extern debug-menu-item-get-max-width (function debug-menu-item debug-menu int))
|
||||
(define-extern debug-menu-remove-all-items (function debug-menu debug-menu))
|
||||
(define-extern debug-menu-find-from-template (function debug-menu-context pair debug-menu))
|
||||
(define-extern debug-menus-handler (function debug-menu-context debug-menu-context))
|
||||
|
||||
|
||||
;; ----------------------
|
||||
@@ -19350,11 +19343,11 @@
|
||||
(define-extern real-main-draw-hook function)
|
||||
(define-extern error-sphere function)
|
||||
(define-extern draw-instance-info function)
|
||||
(define-extern find-instance-by-name function)
|
||||
(define-extern find-instance-by-name (function string instance)) ;; TODO - ret not verified
|
||||
(define-extern prototype-bucket-type function)
|
||||
(define-extern guard-band-cull function)
|
||||
(define-extern find-instance-by-index function)
|
||||
(define-extern prototype-bucket-recalc-fields function)
|
||||
(define-extern prototype-bucket-recalc-fields (function instance none)) ;; TODO - ret not confirmed
|
||||
(define-extern dma-add-process-drawable-hud function)
|
||||
(define-extern foreground-engine-execute function)
|
||||
(define-extern main-debug-hook function)
|
||||
@@ -19369,6 +19362,10 @@
|
||||
(define-extern cave-cam-restore function)
|
||||
(define-extern paals-cam-restore function)
|
||||
|
||||
;; - Symbols
|
||||
|
||||
(define-extern *edit-instance* string)
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
;;(define-extern syncv object) ;; unknown type
|
||||
@@ -19376,7 +19373,6 @@
|
||||
;;(define-extern *surrogate-dma-buffer* object) ;; unknown type
|
||||
;;(define-extern *screen-shot* object) ;; unknown type
|
||||
;;(define-extern *hud-lights* object) ;; unknown type
|
||||
;;(define-extern *edit-instance* object) ;; unknown type
|
||||
;;(define-extern *instance-mem-usage* object) ;; unknown type
|
||||
;;(define-extern *add-sphere* object) ;; unknown type
|
||||
;;(define-extern *generic-effect-mode* object) ;; unknown type
|
||||
@@ -19454,7 +19450,7 @@
|
||||
(define-extern entity-by-type (function type entity-actor))
|
||||
(define-extern scf-get-territory (function int))
|
||||
(define-extern pause-allowed? (function symbol))
|
||||
(define-extern menu-respond-to-pause (function int))
|
||||
(define-extern menu-respond-to-pause (function symbol))
|
||||
(define-extern hide-progress-screen (function int))
|
||||
(define-extern set-letterbox-frames (function uint uint))
|
||||
(define-extern letterbox (function none))
|
||||
@@ -21119,7 +21115,7 @@
|
||||
;;(define-extern anim-tester-process object) ;; unknown type
|
||||
;;(define-extern anim-test-field-highlight-lw object) ;; unknown type
|
||||
;;(define-extern *DISP_LIST-bank* object) ;; unknown type
|
||||
;;(define-extern *debug-menu-context* object) ;; unknown type
|
||||
(define-extern *debug-menu-context* debug-menu-context)
|
||||
|
||||
|
||||
;; ----------------------
|
||||
@@ -21207,79 +21203,79 @@
|
||||
|
||||
;; - Functions
|
||||
|
||||
(define-extern build-continue-menu function)
|
||||
(define-extern debug-menu-make-camera-menu function)
|
||||
(define-extern debug-menu-make-shader-menu function)
|
||||
(define-extern debug-menu-make-instance-menu function)
|
||||
(define-extern debug-menu-make-task-menu function)
|
||||
(define-extern dm-current-continue function)
|
||||
(define-extern dm-task-get-money function)
|
||||
(define-extern dm-levitator-ready function)
|
||||
(define-extern dm-lavabike-ready function)
|
||||
(define-extern dm-give-all-cells function)
|
||||
(define-extern debug-menu-make-task-unknown-menu function)
|
||||
(define-extern debug-menu-make-task-need-hint-menu function)
|
||||
(define-extern debug-menu-make-task-need-introduction-menu function)
|
||||
(define-extern debug-menu-make-task-need-reminder-a-menu function)
|
||||
(define-extern debug-menu-make-task-need-reminder-menu function)
|
||||
(define-extern debug-menu-make-task-need-reward-speech-menu function)
|
||||
(define-extern debug-menu-make-task-need-resolution-menu function)
|
||||
(define-extern dm-give-cell function)
|
||||
(define-extern build-instance-list function)
|
||||
(define-extern dm-edit-instance-toggle-pick-func function)
|
||||
(define-extern dm-boolean-toggle-pick-func function)
|
||||
(define-extern build-shader-list function)
|
||||
(define-extern all-texture-tweak-adjust function)
|
||||
(define-extern debug-menu-make-camera-mode-menu function)
|
||||
(define-extern dm-cam-externalize function)
|
||||
(define-extern dm-cam-render-float function)
|
||||
(define-extern dm-cam-settings-func function)
|
||||
(define-extern dm-cam-settings-func-int function)
|
||||
(define-extern debug-create-cam-restore function)
|
||||
(define-extern dm-cam-mode-func function)
|
||||
(define-extern dm-instance-pick-func function)
|
||||
(define-extern dm-enable-instance-func function)
|
||||
(define-extern dm-shader-pick-func function)
|
||||
(define-extern debug-menu-node<? function)
|
||||
(define-extern dm-subdiv-float function)
|
||||
(define-extern dm-subdiv-int function)
|
||||
(define-extern dm-setting-language function)
|
||||
(define-extern dm-subdiv-draw-func function)
|
||||
(define-extern dm-ocean-subdiv-draw-func function)
|
||||
(define-extern dm-time-of-day-func function)
|
||||
(define-extern dm-time-of-day-func2 function)
|
||||
(define-extern dm-time-of-day-pick-func function)
|
||||
(define-extern dm-actor-marks-pick-func function)
|
||||
(define-extern dm-compact-actor-pick-func function)
|
||||
(define-extern dm-actor-vis-pick-func function)
|
||||
(define-extern dm-game-mode-pick-func function)
|
||||
(define-extern dm-vu1-user-toggle-pick-func function)
|
||||
(define-extern dm-vu1-user-set-pick-func function)
|
||||
(define-extern dm-texture-user-toggle-pick-func function)
|
||||
(define-extern dm-texture-user-set-pick-func function)
|
||||
(define-extern dm-strip-lines-toggle-pick-func function)
|
||||
(define-extern dm-strip-lines-set-pick-func function)
|
||||
(define-extern dm-task-unknown function)
|
||||
(define-extern dm-task-hint function)
|
||||
(define-extern dm-task-introduction function)
|
||||
(define-extern dm-task-reminder-a function)
|
||||
(define-extern dm-task-reminder function)
|
||||
(define-extern dm-task-reward-speech function)
|
||||
(define-extern dm-task-resolution function)
|
||||
(define-extern dm-anim-tester-flag-func function)
|
||||
(define-extern dm-anim-tester-func function)
|
||||
(define-extern debug-menu-context-make-default-menus function)
|
||||
(define-extern popup-menu-context-make-default-menus function)
|
||||
(define-extern build-continue-menu (function debug-menu-context debug-menu-context)) ;; TODO - this is so simple...just iterating through a list of symbols...still confused though...
|
||||
(define-extern debug-menu-make-camera-menu (function debug-menu-context debug-menu-item-submenu))
|
||||
(define-extern debug-menu-make-shader-menu (function debug-menu-context debug-menu-item-submenu))
|
||||
(define-extern debug-menu-make-instance-menu (function debug-menu-context debug-menu-item-submenu))
|
||||
(define-extern debug-menu-make-task-menu (function debug-menu-context debug-menu-item-submenu))
|
||||
(define-extern dm-current-continue (function function int object)) ;; TODO - game-info::17
|
||||
(define-extern dm-task-get-money (function int int symbol))
|
||||
(define-extern dm-levitator-ready (function int int symbol))
|
||||
(define-extern dm-lavabike-ready (function int int symbol))
|
||||
(define-extern dm-give-all-cells (function int int symbol))
|
||||
(define-extern debug-menu-make-task-unknown-menu (function debug-menu-context debug-menu-context debug-menu-item))
|
||||
(define-extern debug-menu-make-task-need-hint-menu (function debug-menu-context debug-menu-context debug-menu-item))
|
||||
(define-extern debug-menu-make-task-need-introduction-menu (function debug-menu-context debug-menu-context debug-menu-item))
|
||||
(define-extern debug-menu-make-task-need-reminder-a-menu (function debug-menu-context debug-menu-context debug-menu-item))
|
||||
(define-extern debug-menu-make-task-need-reminder-menu (function debug-menu-context debug-menu-context debug-menu-item))
|
||||
(define-extern debug-menu-make-task-need-reward-speech-menu (function debug-menu-context debug-menu-context debug-menu-item))
|
||||
(define-extern debug-menu-make-task-need-resolution-menu (function debug-menu-context debug-menu-context debug-menu-item))
|
||||
(define-extern dm-give-cell (function int none))
|
||||
(define-extern build-instance-list (function none)) ;; TODO - drawable types aren't complete
|
||||
(define-extern dm-edit-instance-toggle-pick-func (function int int symbol))
|
||||
(define-extern dm-boolean-toggle-pick-func (function function int object)) ;; TODO
|
||||
(define-extern build-shader-list (function object))
|
||||
(define-extern all-texture-tweak-adjust (function texture-page-dir float object)) ;; TODO - texture related types
|
||||
(define-extern debug-menu-make-camera-mode-menu (function int int object)) ;; TODO - depends on camera stuff yet merged
|
||||
(define-extern dm-cam-externalize (function symbol int symbol))
|
||||
(define-extern dm-cam-render-float (function int int float float float))
|
||||
(define-extern dm-cam-settings-func (function int int symbol))
|
||||
(define-extern dm-cam-settings-func-int (function int int debug-menu debug-menu debug-menu))
|
||||
(define-extern debug-create-cam-restore (function none)) ;; TODO - level-group type isn't complete
|
||||
(define-extern dm-cam-mode-func (function uint int object))
|
||||
(define-extern dm-instance-pick-func (function string int basic))
|
||||
(define-extern dm-enable-instance-func (function string int symbol))
|
||||
(define-extern dm-shader-pick-func (function int int object)) ;; TODO - more texture stuff...
|
||||
(define-extern debug-menu-node<? (function debug-menu debug-menu symbol))
|
||||
(define-extern dm-subdiv-float (function symbol int float float float))
|
||||
(define-extern dm-subdiv-int (function function int object)) ;; TODO - dependant on anim-tester
|
||||
(define-extern dm-setting-language (function function int symbol))
|
||||
(define-extern dm-subdiv-draw-func (function int int symbol))
|
||||
(define-extern dm-ocean-subdiv-draw-func (function int int symbol))
|
||||
(define-extern dm-time-of-day-func (function int int symbol))
|
||||
(define-extern dm-time-of-day-func2 (function function int symbol)) ;; TODO
|
||||
(define-extern dm-time-of-day-pick-func (function symbol int none)) ;; TODO - confirm time-of-day::time-of-day-setup
|
||||
(define-extern dm-actor-marks-pick-func (function symbol int symbol))
|
||||
(define-extern dm-compact-actor-pick-func (function int int object)) ;; TODO - what is *compact-actors*
|
||||
(define-extern dm-actor-vis-pick-func (function symbol int symbol))
|
||||
(define-extern dm-game-mode-pick-func (function symbol int symbol))
|
||||
(define-extern dm-vu1-user-toggle-pick-func (function int int symbol))
|
||||
(define-extern dm-vu1-user-set-pick-func (function int int symbol))
|
||||
(define-extern dm-texture-user-toggle-pick-func (function int int symbol))
|
||||
(define-extern dm-texture-user-set-pick-func (function int int symbol))
|
||||
(define-extern dm-strip-lines-toggle-pick-func (function int int symbol))
|
||||
(define-extern dm-strip-lines-set-pick-func (function int int symbol))
|
||||
(define-extern dm-task-unknown (function int int symbol))
|
||||
(define-extern dm-task-hint (function int int symbol))
|
||||
(define-extern dm-task-introduction (function int int symbol))
|
||||
(define-extern dm-task-reminder-a (function int int symbol))
|
||||
(define-extern dm-task-reminder (function int int symbol))
|
||||
(define-extern dm-task-reward-speech (function int int symbol))
|
||||
(define-extern dm-task-resolution (function int int symbol))
|
||||
(define-extern dm-anim-tester-flag-func (function int int none)) ;; TODO - *anim-tester*
|
||||
(define-extern dm-anim-tester-func (function int none)) ;; TODO - *anim-tester*
|
||||
(define-extern debug-menu-context-make-default-menus (function debug-menu-context debug-menu-context))
|
||||
(define-extern popup-menu-context-make-default-menus (function debug-menu-context debug-menu-context))
|
||||
|
||||
;; - Unknowns
|
||||
|
||||
;;(define-extern *popup-menu-context* object) ;; unknown type
|
||||
;;(define-extern *instance-shrub-menu* object) ;; unknown type
|
||||
;;(define-extern *instance-tie-menu* object) ;; unknown type
|
||||
;;(define-extern *enable-instance-tie-menu* object) ;; unknown type
|
||||
;;(define-extern *shader-pick-menu* object) ;; unknown type
|
||||
(define-extern *popup-menu-context* debug-menu-context) ;; unknown type
|
||||
(define-extern *instance-shrub-menu* debug-menu) ;; unknown type
|
||||
(define-extern *instance-tie-menu* debug-menu) ;; unknown type
|
||||
(define-extern *enable-instance-tie-menu* debug-menu) ;; unknown type
|
||||
(define-extern *shader-pick-menu* debug-menu) ;; unknown type
|
||||
;;(define-extern cam-robotboss object) ;; unknown type
|
||||
;;(define-extern *dm-cam-mode-interpolation* object) ;; unknown type
|
||||
(define-extern *dm-cam-mode-interpolation* debug-menu) ;; unknown type
|
||||
|
||||
|
||||
;; ----------------------
|
||||
|
||||
@@ -505,8 +505,67 @@
|
||||
[496, "(function task-control symbol)"]
|
||||
],
|
||||
|
||||
"game-info": [
|
||||
[17, "(function symbol symbol continue-point symbol none)"]
|
||||
"game-info": [[17, "(function symbol symbol continue-point symbol none)"]],
|
||||
|
||||
"default-menu": [
|
||||
[3, "(function none)"],
|
||||
[4, "(function int int symbol)"], // TODO - first arg is ignored - i think there's a decomp bug here
|
||||
[5, "(function int int symbol)"], // TODO - first arg is ignored
|
||||
[6, "(function int int target)"], // TODO - first arg is ignored
|
||||
[8, "(function int)"],
|
||||
[9, "(function continue-point)"],
|
||||
[10, "(function none)"],
|
||||
[11, "(function object)"],
|
||||
[12, "(function object)"],
|
||||
[13, "(function object)"],
|
||||
[14, "(function quaternion)"],
|
||||
[15, "(function quaternion)"],
|
||||
[16, "(function int int basic)"], // TODO - first arg is ignored
|
||||
[17, "(function int)"],
|
||||
[18, "(function int)"],
|
||||
[19, "(function int)"],
|
||||
[20, "(function none)"],
|
||||
[21, "(function int int basic)"], // TODO - first arg is ignored
|
||||
[22, "(function int int basic)"], // TODO - first arg is ignored
|
||||
[23, "(function int int basic)"], // TODO - first arg is ignored
|
||||
[24, "(function int int float float)"], // TODO - first arg is ignored
|
||||
[25, "(function int int float float)"], // TODO - first arg is ignored
|
||||
[26, "(function int int float float)"], // TODO - first arg is ignored
|
||||
[27, "(function int int target)"], // TODO - first arg is ignored
|
||||
[28, "(function none)"],
|
||||
[29, "(function none)"],
|
||||
[30, "(function none)"],
|
||||
[31, "(function none)"],
|
||||
[32, "(function none)"],
|
||||
[33, "(function none)"],
|
||||
[34, "(function int)"],
|
||||
[35, "(function int)"],
|
||||
[60, "(function debug-menu int float float object)"], // TODO - instance type blocking this one, not 100% sure about the debug-menu, but it has a string at offset 0
|
||||
[61, "(function debug-menu int float float object)"], // TODO - instance type blocking this one, not 100% sure about the debug-menu, but it has a string at offset 0
|
||||
[63, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[64, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[65, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[66, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[67, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[68, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[69, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[70, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[71, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[72, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[73, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[74, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[75, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[76, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[77, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[78, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[79, "(function int int int basic object)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0) and a3 is a default return value it seems
|
||||
[80, "(function object)"],
|
||||
[81, "(function object)"],
|
||||
[82, "(function int int float float none)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0)
|
||||
[84, "(function int int none)"], // TODO - i don't know the first (is a basic/struct with an int32 at offset 0)
|
||||
[88, "(function debug-menu debug-menu symbol)"], // not 100% sure about the debug-menu, but it has a string at offset 0
|
||||
[89, "(function debug-menu debug-menu symbol)"], // not 100% sure about the debug-menu, but it has a string at offset 0
|
||||
[90, "(function debug-menu debug-menu symbol)"] // not 100% sure about the debug-menu, but it has a string at offset 0
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
// this limits the number of cases in a cond. The first argument is the name of the function.
|
||||
// the second argument is the name of the first condition in the cond. Use print_cfg to find it out.
|
||||
// The third argument is the number of cases. If you set it too small it may fail to build the CFG.
|
||||
"cond_with_else_max_lengths":[
|
||||
"cond_with_else_max_lengths": [
|
||||
["(method 20 res-lump)", "b0", 2],
|
||||
["(method 11 res-lump)", "b0", 1],
|
||||
["(method 12 res-lump)", "b0", 1]
|
||||
@@ -472,7 +472,17 @@
|
||||
"update-sound-banks",
|
||||
"(method 16 level-group)",
|
||||
"bg",
|
||||
"(method 18 game-info)"
|
||||
"(method 18 game-info)",
|
||||
"debug-menu-context-default-selection",
|
||||
"debug-menu-rebuild",
|
||||
"debug-menu-func-decode",
|
||||
"debug-menu-make-from-template",
|
||||
"debug-menu-render",
|
||||
"debug-menu-context-select-next-or-prev-item",
|
||||
"debug-menu-context-select-new-item",
|
||||
"debug-menu-send-msg",
|
||||
"debug-menu-find-from-template",
|
||||
"build-continue-menu"
|
||||
],
|
||||
|
||||
// If format is used with the wrong number of arguments,
|
||||
@@ -480,8 +490,8 @@
|
||||
// that they used the correct number. This will override the decompiler's
|
||||
// automatic detection.
|
||||
"bad_format_strings": {
|
||||
"ERROR: dma tag has data in reserved bits ~X~%":0,
|
||||
"#<surface f0:~m f1:~f tf+:~f tf-:~f sf:~f tvv:~m":5,
|
||||
"ERROR<GMJ>: value of symbol ~A in task-controls is not a task-control~%":0
|
||||
"ERROR: dma tag has data in reserved bits ~X~%": 0,
|
||||
"#<surface f0:~m f1:~f tf+:~f tf-:~f sf:~f tvv:~m": 5,
|
||||
"ERROR<GMJ>: value of symbol ~A in task-controls is not a task-control~%": 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1130,8 +1130,25 @@
|
||||
["L195", "(array game-option)", true]
|
||||
],
|
||||
|
||||
"tfrag-work": [
|
||||
["L1", "tfrag-work", true]
|
||||
"tfrag-work": [["L1", "tfrag-work", true]],
|
||||
|
||||
"menu": [["L334", "float", true]],
|
||||
|
||||
"default-menu": [
|
||||
["L6251", "float", true],
|
||||
["L6252", "float", true],
|
||||
["L6253", "float", true],
|
||||
["L6254", "float", true],
|
||||
["L6256", "float", true],
|
||||
["L6257", "float", true],
|
||||
["L6264", "float", true],
|
||||
["L6267", "float", true],
|
||||
["L6268", "(array int)", true, 1] // printed as a float
|
||||
],
|
||||
|
||||
"hint-control": [
|
||||
["L45", "(array task-hint-control-group)", true],
|
||||
["L100", "(array level-hint-control)", true]
|
||||
],
|
||||
|
||||
// please do not add things after this entry! git is dumb.
|
||||
|
||||
@@ -396,6 +396,28 @@
|
||||
|
||||
"draw-ocean-transition": [[16, "sphere"]],
|
||||
|
||||
"dm-cam-mode-func": [[16, "event-message-block"]],
|
||||
|
||||
"dm-cam-settings-func": [[16, "event-message-block"]],
|
||||
|
||||
"dm-cam-render-float": [[16, "event-message-block"]],
|
||||
|
||||
"debug-create-cam-restore": [[16, "euler-angles"]],
|
||||
|
||||
"dm-task-resolution": [[16, "event-message-block"]],
|
||||
|
||||
"dm-task-get-money": [[16, "event-message-block"]],
|
||||
|
||||
"dm-give-all-cells": [[16, "event-message-block"]],
|
||||
|
||||
"dm-give-cell": [[16, "event-message-block"]],
|
||||
|
||||
"(anon-function 13 default-menu)": [[16, "event-message-block"]],
|
||||
|
||||
"(anon-function 12 default-menu)": [[16, "event-message-block"]],
|
||||
|
||||
"(anon-function 11 default-menu)": [[16, "event-message-block"]],
|
||||
|
||||
"(method 22 level)": [[16, "event-message-block"]],
|
||||
"(method 9 level)": [[16, "event-message-block"]],
|
||||
"(method 10 load-state)": [[16, "event-message-block"]],
|
||||
@@ -408,8 +430,6 @@
|
||||
[160, "vector"]
|
||||
],
|
||||
|
||||
"draw-ocean-transition": [[16, "sphere"]],
|
||||
|
||||
"(anon-function 494 task-control)": [[16, "event-message-block"]],
|
||||
"(anon-function 493 task-control)": [[16, "event-message-block"]],
|
||||
"(anon-function 480 task-control)": [[16, "event-message-block"]],
|
||||
|
||||
@@ -770,7 +770,7 @@
|
||||
[[0, 99999], "s6", "process-drawable"]
|
||||
],
|
||||
//"bg": [[[25, 52], "a0", "string"]],
|
||||
|
||||
|
||||
"(anon-function 29 process-drawable)": [[[0, 999], "s6", "process-drawable"]],
|
||||
"ja-done?": [[[0, 999], "s6", "process-drawable"]],
|
||||
"ja-min?": [[[0, 999], "s6", "process-drawable"]],
|
||||
@@ -785,7 +785,10 @@
|
||||
"ja-group-size": [[[0, 999], "s6", "process-drawable"]],
|
||||
"ja-eval": [[[0, 999], "s6", "process-drawable"]],
|
||||
"ja-blend-eval": [[[0, 999], "s6", "process-drawable"]],
|
||||
"ja-post": [[[0, 999], "s6", "process-drawable"], [54, "a1", "process"]],
|
||||
"ja-post": [
|
||||
[[0, 999], "s6", "process-drawable"],
|
||||
[54, "a1", "process"]
|
||||
],
|
||||
"transform-post": [[[0, 999], "s6", "process-drawable"]],
|
||||
"rider-trans": [[[0, 999], "s6", "process-drawable"]],
|
||||
"rider-post": [[[0, 999], "s6", "process-drawable"]],
|
||||
@@ -804,9 +807,7 @@
|
||||
[[157, 162], "a1", "dma-packet"]
|
||||
],
|
||||
|
||||
"(top-level-login task-control)" :[
|
||||
[165, "v1", "symbol"]
|
||||
],
|
||||
"(top-level-login task-control)": [[165, "v1", "symbol"]],
|
||||
|
||||
"task-control-reset": [
|
||||
[[7, 13], "a0", "task-control"],
|
||||
@@ -890,11 +891,15 @@
|
||||
[10, "s3", "continue-point"]
|
||||
],
|
||||
|
||||
"(method 9 game-info)": [
|
||||
[[270, 286], "s2", "(function cpu-thread function object object object object pointer)"]
|
||||
],
|
||||
"(method 9 game-info)": [
|
||||
[
|
||||
[270, 286],
|
||||
"s2",
|
||||
"(function cpu-thread function object object object object pointer)"
|
||||
]
|
||||
],
|
||||
|
||||
"(method 25 game-info)" :[
|
||||
"(method 25 game-info)": [
|
||||
[4, "v1", "game-save-tag"],
|
||||
[53, "v1", "pointer"],
|
||||
[[7, 53], "v1", "game-save-tag"],
|
||||
@@ -946,6 +951,72 @@
|
||||
[[203, 210], "s4", "game-save-tag"]
|
||||
],
|
||||
|
||||
"debug-menu-item-var-update-display-str": [
|
||||
[[44, 49], "v1", "int"],
|
||||
[[61, 69], "v1", "int"]
|
||||
],
|
||||
|
||||
"debug-menu-item-get-max-width": [[[18, 27], "a0", "debug-menu-item-var"]],
|
||||
|
||||
"debug-menu-send-msg": [
|
||||
[[3, 14], "s2", "debug-menu-item"],
|
||||
[[14, 21], "s2", "debug-menu-item-submenu"]
|
||||
],
|
||||
|
||||
"debug-menu-item-var-joypad-handler": [
|
||||
[29, "t9", "(function int int float float float)"],
|
||||
[[39, 42], "a2", "int"],
|
||||
[[40, 42], "a3", "int"],
|
||||
[41, "t9", "(function int int int int int)"],
|
||||
[175, "t9", "(function int int float float float)"],
|
||||
[200, "t9", "(function int int int int int)"],
|
||||
[138, "v1", "int"],
|
||||
[143, "v1", "int"],
|
||||
[[182, 187], "v1", "int"],
|
||||
[[182, 187], "a1", "int"],
|
||||
[[190, 194], "a0", "int"],
|
||||
[[193, 195], "v1", "int"]
|
||||
],
|
||||
|
||||
"debug-menu-find-from-template": [
|
||||
[3, "s4", "debug-menu"],
|
||||
[[4, 8], "s4", "debug-menu-item"],
|
||||
[[41, 44], "s4", "debug-menu-node"],
|
||||
[[7, 12], "s5", "debug-menu-item"],
|
||||
[23, "s5", "debug-menu-item-submenu"]
|
||||
],
|
||||
|
||||
"debug-menu-func-decode": [[[12, 14], "a0", "symbol"]],
|
||||
|
||||
"dm-cam-render-float": [[[71, 72], "v0", "float"]],
|
||||
|
||||
"build-continue-menu": [[4, "v1", "symbol"]],
|
||||
|
||||
"can-hint-be-played?": [
|
||||
[[25, 28], "a0", "level-hint"] // kinda a guess, but its the only process that makes sense
|
||||
],
|
||||
|
||||
"debug-menu-rebuild": [[[4, 13], "a0", "debug-menu-item"]],
|
||||
|
||||
"debug-menu-item-submenu-render": [[[39, 44], "v1", "dma-packet"]],
|
||||
|
||||
"debug-menu-item-function-render": [[[46, 51], "v1", "dma-packet"]],
|
||||
|
||||
"debug-menu-item-flag-render": [[[44, 49], "v1", "dma-packet"]],
|
||||
|
||||
"debug-menu-render": [
|
||||
[[45, 48], "v1", "dma-packet"],
|
||||
[[106, 110], "v1", "dma-packet"]
|
||||
],
|
||||
|
||||
"debug-menu-item-var-msg": [
|
||||
[52, "t9", "(function int int float float float)"],
|
||||
[64, "t9", "(function int int int int int)"]
|
||||
],
|
||||
|
||||
"debug-menu-item-var-make-int": [
|
||||
[21, "t9", "(function int int int int int)"]
|
||||
],
|
||||
|
||||
"placeholder-do-not-add-below": []
|
||||
}
|
||||
|
||||
@@ -2209,5 +2209,11 @@
|
||||
"s2-1":"prog-lev-idx",
|
||||
"a2-13":"lev-name"
|
||||
}
|
||||
},
|
||||
|
||||
"debug-menu-func-decode": {
|
||||
"vars": {
|
||||
"v0-0": ["ret-val", "symbol"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
(deftype control-info (collide-shape-moving)
|
||||
(
|
||||
(some-quaternion quaternion :offset 496)
|
||||
(unknown-vector00 vector :inline :offset 576)
|
||||
(unknown-surface surface :offset 660)
|
||||
(unknown-symbol symbol :offset 664)
|
||||
|
||||
@@ -394,7 +394,7 @@
|
||||
(s5-0 (-> s3-0 base))
|
||||
)
|
||||
(let
|
||||
((v1-9
|
||||
((a2-2
|
||||
(new
|
||||
'stack
|
||||
'font-context
|
||||
@@ -410,9 +410,11 @@
|
||||
)
|
||||
)
|
||||
)
|
||||
(set! (-> v1-9 origin z) (the float (/ (-> s2-0 z) 16)))
|
||||
(let ((v1-9 a2-2))
|
||||
(set! (-> v1-9 origin z) (the float (/ (-> s2-0 z) 16)))
|
||||
)
|
||||
(draw-string arg1 s3-0 a2-2)
|
||||
)
|
||||
(draw-string arg1 s3-0)
|
||||
(let ((a3-4 (-> s3-0 base)))
|
||||
(let ((v1-11 (the-as dma-packet (-> s3-0 base))))
|
||||
(set! (-> v1-11 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -64,7 +64,7 @@
|
||||
:flag-assert #x10004000a8
|
||||
(:methods
|
||||
(dummy-14 () none 14)
|
||||
(dummy-15 () none 15)
|
||||
(dummy-15 (_type_) symbol 15)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
(text-ids-seen bit-array :offset-assert 112)
|
||||
(level-opened uint8 32 :offset-assert 116)
|
||||
(hint-control (array level-hint-control) :offset-assert 148)
|
||||
(task-hint-control array :offset-assert 152)
|
||||
(task-hint-control (array task-hint-control-group) :offset-assert 152)
|
||||
(total-deaths int32 :offset-assert 156)
|
||||
(continue-deaths int32 :offset-assert 160)
|
||||
(fuel-cell-deaths int32 :offset-assert 164)
|
||||
|
||||
@@ -99,7 +99,8 @@
|
||||
(define *teleport-count* 0)
|
||||
(define *draw-hook* nothing)
|
||||
(define *debug-hook* nothing)
|
||||
(define *menu-hook* nothing)
|
||||
(declare-type debug-menu-context basic)
|
||||
(define-extern *menu-hook* (function debug-menu-context))
|
||||
(define *progress-hook* nothing)
|
||||
(define *dma-timeout-hook* nothing)
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
)
|
||||
|
||||
(deftype task-hint-control-group (structure)
|
||||
((tasks basic :offset-assert 0)
|
||||
((tasks (array task-hint-control) :offset-assert 0)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x4
|
||||
|
||||
@@ -5,3 +5,530 @@
|
||||
;; name in dgo: hint-control
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
(define-extern *hint-semaphore* (pointer process-tree)) ;; likely a level-hint process
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set!
|
||||
(-> *game-info* hint-control)
|
||||
(the-as
|
||||
(array level-hint-control)
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type level-hint-control :length 25 :allocated-length 25
|
||||
(new 'static 'level-hint-control
|
||||
:id #x917
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 3
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x90a
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x284
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 3
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x285
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x251
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x2af
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x239
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x29d
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x25b
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x2a4
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x2aa
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x33a
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x1194
|
||||
:id #x34b
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 2
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x4650
|
||||
:id #x34a
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x34d
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x345
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 2
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x352
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x2328
|
||||
:id #x347
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x34e
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x444
|
||||
:num-attempts-before-playing 5
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x438
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x433
|
||||
:num-attempts-before-playing 4
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x70d
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 2
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x806
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x809
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set!
|
||||
(-> *game-info* task-hint-control)
|
||||
(the-as
|
||||
(array task-hint-control-group)
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control-group :length 16 :allocated-length 16
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 3 :allocated-length 3
|
||||
(new 'static 'task-hint-control :task #x5c :delay #x2bf20)
|
||||
(new 'static 'task-hint-control :task #x5d :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x5e :delay #x83d60)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 3 :allocated-length 3
|
||||
(new 'static 'task-hint-control :task #x15 :delay #x41eb0)
|
||||
(new 'static 'task-hint-control :task #x16 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x13 :delay #xc5c10)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 2 :allocated-length 2
|
||||
(new 'static 'task-hint-control :task #x6 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x8 :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 4 :allocated-length 4
|
||||
(new 'static 'task-hint-control :task #x18 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x19 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x1d :delay #xafc80)
|
||||
(new 'static 'task-hint-control :task #x1e :delay #xdbba0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 3 :allocated-length 3
|
||||
(new 'static 'task-hint-control :task #x33 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x30 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x2e :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x26 :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x38 :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x6e :delay #x107ac0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x4a :delay #x107ac0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 4 :allocated-length 4
|
||||
(new 'static 'task-hint-control :task #x42 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x43 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x3f :delay #xafc80)
|
||||
(new 'static 'task-hint-control :task #x40 :delay #xdbba0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 4 :allocated-length 4
|
||||
(new 'static 'task-hint-control :task #x50 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x51 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x52 :delay #xafc80)
|
||||
(new 'static 'task-hint-control :task #x54 :delay #xdbba0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function find-hint-control-index
|
||||
(defun find-hint-control-index ((arg0 level-hint-control))
|
||||
(let ((gp-0 -1))
|
||||
(let ((v1-2 (length (-> *game-info* hint-control))))
|
||||
(dotimes (a0-2 v1-2)
|
||||
(when (= (-> *game-info* hint-control a0-2 id) arg0)
|
||||
(set! gp-0 a0-2)
|
||||
(set! a0-2 v1-2)
|
||||
)
|
||||
)
|
||||
)
|
||||
gp-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function start-hint-timer
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun start-hint-timer ((arg0 level-hint-control))
|
||||
(let ((v1-0 (find-hint-control-index arg0)))
|
||||
(when
|
||||
(and
|
||||
(>= v1-0 0)
|
||||
(zero? (-> *game-info* hint-control v1-0 start-time))
|
||||
(!= (-> *game-info* hint-control v1-0 num-attempts-before-playing) 1)
|
||||
)
|
||||
(set!
|
||||
(-> *game-info* hint-control v1-0 start-time)
|
||||
(-> *display* base-frame-counter)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function increment-success-for-hint
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun increment-success-for-hint ((arg0 level-hint-control))
|
||||
(let ((gp-0 (find-hint-control-index arg0)))
|
||||
(when (>= gp-0 0)
|
||||
(set!
|
||||
(-> *game-info* hint-control gp-0 num-success)
|
||||
(seekl (-> *game-info* hint-control gp-0 num-success) 127 1)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function can-hint-be-played?
|
||||
;; WARN: disable def twice: 139. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare.
|
||||
(defun can-hint-be-played? ((arg0 int))
|
||||
(let ((v1-0 (not (str-is-playing?))))
|
||||
(if (and v1-0 (nonzero? arg0))
|
||||
(set! v1-0 (not (seen-text? *game-info* (the-as game-text-id arg0))))
|
||||
)
|
||||
(when v1-0
|
||||
(when *hint-semaphore*
|
||||
(let ((v1-3 *hint-semaphore*))
|
||||
(set! v1-0 (dummy-15 (the-as level-hint (if v1-3
|
||||
(-> v1-3 0 self)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
(when
|
||||
(and
|
||||
v1-0
|
||||
(<
|
||||
(the-as
|
||||
int
|
||||
(- (-> *display* base-frame-counter) (-> *game-info* hint-play-time))
|
||||
)
|
||||
30
|
||||
)
|
||||
)
|
||||
(set! v1-0 #f)
|
||||
0
|
||||
)
|
||||
(set!
|
||||
v1-0
|
||||
(and
|
||||
v1-0
|
||||
(not (-> *setting-control* current talking))
|
||||
(not (-> *setting-control* current spooling))
|
||||
(not (-> *setting-control* current hint))
|
||||
(not (-> *setting-control* current ambient))
|
||||
(>=
|
||||
(the-as int (-> *display* base-frame-counter))
|
||||
(the-as int (-> *game-info* blackout-time))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
(cond
|
||||
(v1-0
|
||||
(let ((v1-16 (find-hint-control-index (the-as level-hint-control arg0))))
|
||||
(cond
|
||||
((< v1-16 0)
|
||||
#t
|
||||
)
|
||||
(else
|
||||
(let ((gp-1 (-> *game-info* hint-control v1-16))
|
||||
(a0-24
|
||||
(-
|
||||
(-> *display* base-frame-counter)
|
||||
(-> *game-info* hint-control v1-16 last-time-called)
|
||||
)
|
||||
)
|
||||
(v1-21 #t)
|
||||
)
|
||||
(if
|
||||
(and
|
||||
(= (-> gp-1 num-attempts-before-playing) 1)
|
||||
(< (the-as int a0-24) 30)
|
||||
)
|
||||
(set! (-> gp-1 start-time) (+ (-> gp-1 start-time) a0-24))
|
||||
)
|
||||
(cond
|
||||
((and
|
||||
(!= (-> gp-1 num-attempts-before-playing) 1)
|
||||
(nonzero? (-> gp-1 last-time-called))
|
||||
(<
|
||||
(the-as
|
||||
int
|
||||
(- (-> *display* base-frame-counter) (-> gp-1 last-time-called))
|
||||
)
|
||||
150
|
||||
)
|
||||
)
|
||||
(set! (-> gp-1 last-time-called) (-> *display* base-frame-counter))
|
||||
#f
|
||||
)
|
||||
(else
|
||||
(set! (-> gp-1 last-time-called) (-> *display* base-frame-counter))
|
||||
(when (nonzero? (-> gp-1 delay-before-playing))
|
||||
(if
|
||||
(<
|
||||
(the-as int (-> gp-1 start-time))
|
||||
(the-as int (-> gp-1 delay-before-playing))
|
||||
)
|
||||
(set! v1-21 #f)
|
||||
)
|
||||
0
|
||||
)
|
||||
(cond
|
||||
(v1-21
|
||||
(set! (-> gp-1 num-attempts) (seekl (-> gp-1 num-attempts) 127 1))
|
||||
(and
|
||||
(>= (-> gp-1 num-attempts) (-> gp-1 num-attempts-before-playing))
|
||||
(or
|
||||
(= (-> gp-1 num-success-before-killing) -1)
|
||||
(< (-> gp-1 num-success) (-> gp-1 num-success-before-killing))
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function reset-all-hint-controls
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun reset-all-hint-controls ()
|
||||
(let ((v1-2 (length (-> *game-info* hint-control))))
|
||||
(dotimes (a0-1 v1-2)
|
||||
(let ((a1-2 (-> *game-info* hint-control a0-1)))
|
||||
(set! (-> a1-2 start-time) (the-as uint 0))
|
||||
(set! (-> a1-2 last-time-called) (the-as uint 0))
|
||||
(set! (-> a1-2 num-attempts) 0)
|
||||
(set! (-> a1-2 num-success) 0)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; TODO - defined in progress-static
|
||||
(define-extern *level-task-data-remap* (array int32))
|
||||
|
||||
;; definition for function update-task-hints
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun update-task-hints ()
|
||||
(when *target*
|
||||
(let ((a0-0 (+ (-> *target* current-level info index) -1))
|
||||
(v1-7 (-> *game-info* task-hint-control))
|
||||
)
|
||||
(when (and (>= a0-0 0) (< a0-0 (-> *level-task-data-remap* length)))
|
||||
(let ((a0-3 (-> *level-task-data-remap* a0-0)))
|
||||
(when (< a0-3 (-> v1-7 length))
|
||||
(let ((gp-0 (-> v1-7 a0-3 tasks)))
|
||||
(when (and (!= gp-0 0) (nonzero? (-> gp-0 length)))
|
||||
(let ((s5-0 (-> *game-info* in-level-time a0-3)))
|
||||
(dotimes (s4-0 (-> gp-0 length))
|
||||
(let
|
||||
((v1-17 (get-task-status (the-as game-task (-> gp-0 s4-0 task)))))
|
||||
(when
|
||||
(or
|
||||
(= v1-17 (task-status need-hint))
|
||||
(= v1-17 (task-status unknown))
|
||||
)
|
||||
(if (< (-> gp-0 s4-0 delay) s5-0)
|
||||
(close-specific-task!
|
||||
(the-as game-task (-> gp-0 s4-0 task))
|
||||
(task-status need-hint)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
;; name in dgo: font-h
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
|
||||
(deftype char-verts (structure)
|
||||
((pos vector 4 :inline :offset-assert 0)
|
||||
(color vector 4 :inline :offset-assert 64)
|
||||
@@ -663,5 +662,5 @@
|
||||
)
|
||||
|
||||
|
||||
(defun-extern draw-string string dma-buffer int)
|
||||
(define-extern draw-string (function string dma-buffer font-context int))
|
||||
|
||||
|
||||
@@ -5,3 +5,6 @@
|
||||
;; name in dgo: font
|
||||
;; dgos: GAME, ENGINE
|
||||
|
||||
;; TODO - for menu
|
||||
(define-extern get-string-length (function string font-context float))
|
||||
(define-extern draw-string-adv (function string dma-buffer font-context none)) ;; TODO - ret value unconfirmed!
|
||||
|
||||
@@ -114,9 +114,10 @@
|
||||
)
|
||||
|
||||
(deftype instance (drawable)
|
||||
((bucket-index uint16 :offset 6)
|
||||
(origin matrix4h :inline :offset-assert 32)
|
||||
(wind-index uint16 :offset 62)
|
||||
((bucket-index uint16 :offset 6)
|
||||
(unknown uint32 :offset 8) ; TODO - from default-menu
|
||||
(origin matrix4h :inline :offset-assert 32) ; TODO - this can also be a float, default-menu::lambda_62
|
||||
(wind-index uint16 :offset 62)
|
||||
)
|
||||
:method-count-assert 18
|
||||
:size-assert #x40
|
||||
|
||||
@@ -171,6 +171,7 @@
|
||||
;; There are actually three levels. level0 and level1 correspond to the actual buffered levels
|
||||
;; The level-default seems to be a fake level that can possibly be used by renderers that
|
||||
;; don't belong to any level, for example to render Jak.
|
||||
(declare-type entity-links structure)
|
||||
(deftype level-group (basic)
|
||||
((length int32 :offset-assert 4)
|
||||
(unknown-level-1 level :offset-assert 8)
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
# Windows doesn't have the GNU toolchain by default, making it hard to write Taskfiles that are cross-platform
|
||||
# This "solves" that
|
||||
|
||||
# Ensures it only will delete from the current directory
|
||||
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--path")
|
||||
args = parser.parse_args()
|
||||
|
||||
from os import path
|
||||
import shutil
|
||||
|
||||
if path.exists("./{}".format(args.path)):
|
||||
shutil.rmtree("./{}".format(args.path))
|
||||
@@ -40,7 +40,8 @@
|
||||
|
||||
;; definition of type control-info
|
||||
(deftype control-info (collide-shape-moving)
|
||||
((unknown-vector00 vector :inline :offset 576)
|
||||
((some-quaternion quaternion :offset 496)
|
||||
(unknown-vector00 vector :inline :offset 576)
|
||||
(unknown-surface surface :offset 660)
|
||||
(unknown-symbol symbol :offset 664)
|
||||
(unknown-qword uint128 :offset 1136)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -74,7 +74,7 @@
|
||||
:flag-assert #x10004000a8
|
||||
(:methods
|
||||
(dummy-14 () none 14)
|
||||
(dummy-15 () none 15)
|
||||
(dummy-15 (_type_) symbol 15)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -161,50 +161,50 @@
|
||||
|
||||
;; definition of type game-info
|
||||
(deftype game-info (basic)
|
||||
((mode symbol :offset-assert 4)
|
||||
(save-name basic :offset-assert 8)
|
||||
(life float :offset-assert 12)
|
||||
(life-max float :offset-assert 16)
|
||||
(money float :offset-assert 20)
|
||||
(money-total float :offset-assert 24)
|
||||
(money-per-level uint8 32 :offset-assert 28)
|
||||
(deaths-per-level uint8 32 :offset-assert 60)
|
||||
(buzzer-total float :offset-assert 92)
|
||||
(fuel float :offset-assert 96)
|
||||
(perm-list entity-perm-array :offset-assert 100)
|
||||
(task-perm-list entity-perm-array :offset-assert 104)
|
||||
(current-continue continue-point :offset-assert 108)
|
||||
(text-ids-seen bit-array :offset-assert 112)
|
||||
(level-opened uint8 32 :offset-assert 116)
|
||||
(hint-control (array level-hint-control) :offset-assert 148)
|
||||
(task-hint-control array :offset-assert 152)
|
||||
(total-deaths int32 :offset-assert 156)
|
||||
(continue-deaths int32 :offset-assert 160)
|
||||
(fuel-cell-deaths int32 :offset-assert 164)
|
||||
(game-start-time uint64 :offset-assert 168)
|
||||
(continue-time uint64 :offset-assert 176)
|
||||
(death-time uint64 :offset-assert 184)
|
||||
(hit-time uint64 :offset-assert 192)
|
||||
(fuel-cell-pickup-time uint64 :offset-assert 200)
|
||||
(fuel-cell-time (array uint64) :offset-assert 208)
|
||||
(enter-level-time (array uint64) :offset-assert 212)
|
||||
(in-level-time (array uint64) :offset-assert 216)
|
||||
(blackout-time uint64 :offset-assert 224)
|
||||
(letterbox-time uint64 :offset-assert 232)
|
||||
(hint-play-time uint64 :offset-assert 240)
|
||||
(display-text-time uint64 :offset-assert 248)
|
||||
(display-text-handle uint64 :offset-assert 256)
|
||||
(death-movie-tick int32 :offset-assert 264)
|
||||
(want-auto-save symbol :offset-assert 268)
|
||||
(auto-save-proc handle :offset-assert 272)
|
||||
(auto-save-status uint32 :offset-assert 280)
|
||||
(auto-save-card int32 :offset-assert 284)
|
||||
(auto-save-which int32 :offset-assert 288)
|
||||
(pov-camera-handle uint64 :offset-assert 296)
|
||||
(other-camera-handle uint64 :offset-assert 304)
|
||||
(death-pos vector-array :offset-assert 312)
|
||||
(dummy basic :offset-assert 316)
|
||||
(auto-save-count int32 :offset-assert 320)
|
||||
((mode symbol :offset-assert 4)
|
||||
(save-name basic :offset-assert 8)
|
||||
(life float :offset-assert 12)
|
||||
(life-max float :offset-assert 16)
|
||||
(money float :offset-assert 20)
|
||||
(money-total float :offset-assert 24)
|
||||
(money-per-level uint8 32 :offset-assert 28)
|
||||
(deaths-per-level uint8 32 :offset-assert 60)
|
||||
(buzzer-total float :offset-assert 92)
|
||||
(fuel float :offset-assert 96)
|
||||
(perm-list entity-perm-array :offset-assert 100)
|
||||
(task-perm-list entity-perm-array :offset-assert 104)
|
||||
(current-continue continue-point :offset-assert 108)
|
||||
(text-ids-seen bit-array :offset-assert 112)
|
||||
(level-opened uint8 32 :offset-assert 116)
|
||||
(hint-control (array level-hint-control) :offset-assert 148)
|
||||
(task-hint-control (array task-hint-control-group) :offset-assert 152)
|
||||
(total-deaths int32 :offset-assert 156)
|
||||
(continue-deaths int32 :offset-assert 160)
|
||||
(fuel-cell-deaths int32 :offset-assert 164)
|
||||
(game-start-time uint64 :offset-assert 168)
|
||||
(continue-time uint64 :offset-assert 176)
|
||||
(death-time uint64 :offset-assert 184)
|
||||
(hit-time uint64 :offset-assert 192)
|
||||
(fuel-cell-pickup-time uint64 :offset-assert 200)
|
||||
(fuel-cell-time (array uint64) :offset-assert 208)
|
||||
(enter-level-time (array uint64) :offset-assert 212)
|
||||
(in-level-time (array uint64) :offset-assert 216)
|
||||
(blackout-time uint64 :offset-assert 224)
|
||||
(letterbox-time uint64 :offset-assert 232)
|
||||
(hint-play-time uint64 :offset-assert 240)
|
||||
(display-text-time uint64 :offset-assert 248)
|
||||
(display-text-handle uint64 :offset-assert 256)
|
||||
(death-movie-tick int32 :offset-assert 264)
|
||||
(want-auto-save symbol :offset-assert 268)
|
||||
(auto-save-proc handle :offset-assert 272)
|
||||
(auto-save-status uint32 :offset-assert 280)
|
||||
(auto-save-card int32 :offset-assert 284)
|
||||
(auto-save-which int32 :offset-assert 288)
|
||||
(pov-camera-handle uint64 :offset-assert 296)
|
||||
(other-camera-handle uint64 :offset-assert 304)
|
||||
(death-pos vector-array :offset-assert 312)
|
||||
(dummy basic :offset-assert 316)
|
||||
(auto-save-count int32 :offset-assert 320)
|
||||
)
|
||||
:method-count-assert 29
|
||||
:size-assert #x144
|
||||
|
||||
@@ -274,8 +274,8 @@
|
||||
;; definition for symbol *debug-hook*, type (function none)
|
||||
(define *debug-hook* nothing)
|
||||
|
||||
;; definition for symbol *menu-hook*, type (function none)
|
||||
(define *menu-hook* nothing)
|
||||
;; definition for symbol *menu-hook*, type (function debug-menu-context)
|
||||
(define *menu-hook* (the-as (function debug-menu-context) nothing))
|
||||
|
||||
;; definition for symbol *progress-hook*, type (function none)
|
||||
(define *progress-hook* nothing)
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
;; definition of type task-hint-control-group
|
||||
(deftype task-hint-control-group (structure)
|
||||
((tasks basic :offset-assert 0)
|
||||
((tasks (array task-hint-control) :offset-assert 0)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x4
|
||||
|
||||
@@ -0,0 +1,525 @@
|
||||
;;-*-Lisp-*-
|
||||
(in-package goal)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set!
|
||||
(-> *game-info* hint-control)
|
||||
(the-as
|
||||
(array level-hint-control)
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type level-hint-control :length 25 :allocated-length 25
|
||||
(new 'static 'level-hint-control
|
||||
:id #x917
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 3
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x90a
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x284
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 3
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x285
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x251
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x2af
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x239
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x29d
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x25b
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x2a4
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x2aa
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x33a
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x1194
|
||||
:id #x34b
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 2
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x4650
|
||||
:id #x34a
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x34d
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x345
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 2
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x352
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x2328
|
||||
:id #x347
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x34e
|
||||
:num-attempts-before-playing 3
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x444
|
||||
:num-attempts-before-playing 5
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x384
|
||||
:id #x438
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x433
|
||||
:num-attempts-before-playing 4
|
||||
:num-success-before-killing -1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:id #x70d
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 2
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x806
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
(new 'static 'level-hint-control
|
||||
:delay-before-playing #x5dc
|
||||
:id #x809
|
||||
:num-attempts-before-playing 1
|
||||
:num-success-before-killing 1
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; failed to figure out what this is:
|
||||
(set!
|
||||
(-> *game-info* task-hint-control)
|
||||
(the-as
|
||||
(array task-hint-control-group)
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control-group :length 16 :allocated-length 16
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 3 :allocated-length 3
|
||||
(new 'static 'task-hint-control :task #x5c :delay #x2bf20)
|
||||
(new 'static 'task-hint-control :task #x5d :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x5e :delay #x83d60)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 3 :allocated-length 3
|
||||
(new 'static 'task-hint-control :task #x15 :delay #x41eb0)
|
||||
(new 'static 'task-hint-control :task #x16 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x13 :delay #xc5c10)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 2 :allocated-length 2
|
||||
(new 'static 'task-hint-control :task #x6 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x8 :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 4 :allocated-length 4
|
||||
(new 'static 'task-hint-control :task #x18 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x19 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x1d :delay #xafc80)
|
||||
(new 'static 'task-hint-control :task #x1e :delay #xdbba0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 3 :allocated-length 3
|
||||
(new 'static 'task-hint-control :task #x33 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x30 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x2e :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x26 :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x38 :delay #xafc80)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x6e :delay #x107ac0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 1 :allocated-length 1
|
||||
(new 'static 'task-hint-control :task #x4a :delay #x107ac0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 4 :allocated-length 4
|
||||
(new 'static 'task-hint-control :task #x42 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x43 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x3f :delay #xafc80)
|
||||
(new 'static 'task-hint-control :task #x40 :delay #xdbba0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group
|
||||
:tasks
|
||||
(new
|
||||
'static
|
||||
'boxed-array
|
||||
:type task-hint-control :length 4 :allocated-length 4
|
||||
(new 'static 'task-hint-control :task #x50 :delay #x57e40)
|
||||
(new 'static 'task-hint-control :task #x51 :delay #x83d60)
|
||||
(new 'static 'task-hint-control :task #x52 :delay #xafc80)
|
||||
(new 'static 'task-hint-control :task #x54 :delay #xdbba0)
|
||||
)
|
||||
)
|
||||
(new 'static 'task-hint-control-group)
|
||||
(new 'static 'task-hint-control-group)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function find-hint-control-index
|
||||
(defun find-hint-control-index ((arg0 level-hint-control))
|
||||
(let ((gp-0 -1))
|
||||
(let ((v1-2 (length (-> *game-info* hint-control))))
|
||||
(dotimes (a0-2 v1-2)
|
||||
(when (= (-> *game-info* hint-control a0-2 id) arg0)
|
||||
(set! gp-0 a0-2)
|
||||
(set! a0-2 v1-2)
|
||||
)
|
||||
)
|
||||
)
|
||||
gp-0
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function start-hint-timer
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun start-hint-timer ((arg0 level-hint-control))
|
||||
(let ((v1-0 (find-hint-control-index arg0)))
|
||||
(when
|
||||
(and
|
||||
(>= v1-0 0)
|
||||
(zero? (-> *game-info* hint-control v1-0 start-time))
|
||||
(!= (-> *game-info* hint-control v1-0 num-attempts-before-playing) 1)
|
||||
)
|
||||
(set!
|
||||
(-> *game-info* hint-control v1-0 start-time)
|
||||
(-> *display* base-frame-counter)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function increment-success-for-hint
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun increment-success-for-hint ((arg0 level-hint-control))
|
||||
(let ((gp-0 (find-hint-control-index arg0)))
|
||||
(when (>= gp-0 0)
|
||||
(set!
|
||||
(-> *game-info* hint-control gp-0 num-success)
|
||||
(seekl (-> *game-info* hint-control gp-0 num-success) 127 1)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function can-hint-be-played?
|
||||
;; WARN: disable def twice: 139. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare.
|
||||
(defun can-hint-be-played? ((arg0 int))
|
||||
(let ((v1-0 (not (str-is-playing?))))
|
||||
(if (and v1-0 (nonzero? arg0))
|
||||
(set! v1-0 (not (seen-text? *game-info* (the-as game-text-id arg0))))
|
||||
)
|
||||
(when v1-0
|
||||
(when *hint-semaphore*
|
||||
(let ((v1-3 *hint-semaphore*))
|
||||
(set! v1-0 (dummy-15 (the-as level-hint (if v1-3
|
||||
(-> v1-3 0 self)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
(when
|
||||
(and
|
||||
v1-0
|
||||
(<
|
||||
(the-as
|
||||
int
|
||||
(- (-> *display* base-frame-counter) (-> *game-info* hint-play-time))
|
||||
)
|
||||
30
|
||||
)
|
||||
)
|
||||
(set! v1-0 #f)
|
||||
0
|
||||
)
|
||||
(set!
|
||||
v1-0
|
||||
(and
|
||||
v1-0
|
||||
(not (-> *setting-control* current talking))
|
||||
(not (-> *setting-control* current spooling))
|
||||
(not (-> *setting-control* current hint))
|
||||
(not (-> *setting-control* current ambient))
|
||||
(>=
|
||||
(the-as int (-> *display* base-frame-counter))
|
||||
(the-as int (-> *game-info* blackout-time))
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
)
|
||||
(cond
|
||||
(v1-0
|
||||
(let ((v1-16 (find-hint-control-index (the-as level-hint-control arg0))))
|
||||
(cond
|
||||
((< v1-16 0)
|
||||
#t
|
||||
)
|
||||
(else
|
||||
(let ((gp-1 (-> *game-info* hint-control v1-16))
|
||||
(a0-24
|
||||
(-
|
||||
(-> *display* base-frame-counter)
|
||||
(-> *game-info* hint-control v1-16 last-time-called)
|
||||
)
|
||||
)
|
||||
(v1-21 #t)
|
||||
)
|
||||
(if
|
||||
(and
|
||||
(= (-> gp-1 num-attempts-before-playing) 1)
|
||||
(< (the-as int a0-24) 30)
|
||||
)
|
||||
(set! (-> gp-1 start-time) (+ (-> gp-1 start-time) a0-24))
|
||||
)
|
||||
(cond
|
||||
((and
|
||||
(!= (-> gp-1 num-attempts-before-playing) 1)
|
||||
(nonzero? (-> gp-1 last-time-called))
|
||||
(<
|
||||
(the-as
|
||||
int
|
||||
(- (-> *display* base-frame-counter) (-> gp-1 last-time-called))
|
||||
)
|
||||
150
|
||||
)
|
||||
)
|
||||
(set! (-> gp-1 last-time-called) (-> *display* base-frame-counter))
|
||||
#f
|
||||
)
|
||||
(else
|
||||
(set! (-> gp-1 last-time-called) (-> *display* base-frame-counter))
|
||||
(when (nonzero? (-> gp-1 delay-before-playing))
|
||||
(if
|
||||
(<
|
||||
(the-as int (-> gp-1 start-time))
|
||||
(the-as int (-> gp-1 delay-before-playing))
|
||||
)
|
||||
(set! v1-21 #f)
|
||||
)
|
||||
0
|
||||
)
|
||||
(cond
|
||||
(v1-21
|
||||
(set! (-> gp-1 num-attempts) (seekl (-> gp-1 num-attempts) 127 1))
|
||||
(and
|
||||
(>= (-> gp-1 num-attempts) (-> gp-1 num-attempts-before-playing))
|
||||
(or
|
||||
(= (-> gp-1 num-success-before-killing) -1)
|
||||
(< (-> gp-1 num-success) (-> gp-1 num-success-before-killing))
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(else
|
||||
#f
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
;; definition for function reset-all-hint-controls
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun reset-all-hint-controls ()
|
||||
(let ((v1-2 (length (-> *game-info* hint-control))))
|
||||
(dotimes (a0-1 v1-2)
|
||||
(let ((a1-2 (-> *game-info* hint-control a0-1)))
|
||||
(set! (-> a1-2 start-time) (the-as uint 0))
|
||||
(set! (-> a1-2 last-time-called) (the-as uint 0))
|
||||
(set! (-> a1-2 num-attempts) 0)
|
||||
(set! (-> a1-2 num-success) 0)
|
||||
)
|
||||
0
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
|
||||
;; definition for function update-task-hints
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defun update-task-hints ()
|
||||
(when *target*
|
||||
(let ((a0-0 (+ (-> *target* current-level info index) -1))
|
||||
(v1-7 (-> *game-info* task-hint-control))
|
||||
)
|
||||
(when (and (>= a0-0 0) (< a0-0 (-> *level-task-data-remap* length)))
|
||||
(let ((a0-3 (-> *level-task-data-remap* a0-0)))
|
||||
(when (< a0-3 (-> v1-7 length))
|
||||
(let ((gp-0 (-> v1-7 a0-3 tasks)))
|
||||
(when (and (!= gp-0 0) (nonzero? (-> gp-0 length)))
|
||||
(let ((s5-0 (-> *game-info* in-level-time a0-3)))
|
||||
(dotimes (s4-0 (-> gp-0 length))
|
||||
(let
|
||||
((v1-17 (get-task-status (the-as game-task (-> gp-0 s4-0 task)))))
|
||||
(when
|
||||
(or
|
||||
(= v1-17 (task-status need-hint))
|
||||
(= v1-17 (task-status unknown))
|
||||
)
|
||||
(if (< (-> gp-0 s4-0 delay) s5-0)
|
||||
(close-specific-task!
|
||||
(the-as game-task (-> gp-0 s4-0 task))
|
||||
(task-status need-hint)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
0
|
||||
(none)
|
||||
)
|
||||
@@ -114,7 +114,7 @@
|
||||
(format #t "~Twind-index: ~D~%" (-> obj wind-index))
|
||||
(format #t "~Tflat-normal: #<vector @ #x~X>~%" (-> obj flat-normal))
|
||||
(format #t "~Tflat-hwidth: ~f~%" (-> obj flat-normal w))
|
||||
(format #t "~Tcolor: ~D~%" (-> obj color))
|
||||
(format #t "~Tcolor: ~D~%" (-> obj unknown))
|
||||
obj
|
||||
)
|
||||
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
;; definition of type instance
|
||||
(deftype instance (drawable)
|
||||
((bucket-index uint16 :offset 6)
|
||||
(unknown uint32 :offset 8)
|
||||
(origin matrix4h :inline :offset-assert 32)
|
||||
(wind-index uint16 :offset 62)
|
||||
)
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
(format #t "~Tbucket-index: ~D~%" (-> obj bucket-index))
|
||||
(format #t "~Torigin: #<matrix4h @ #x~X>~%" (-> obj origin))
|
||||
(format #t "~Twind-index: ~D~%" (-> obj wind-index))
|
||||
(format #t "~Tcolor-indices: #x~X~%" (-> obj color-indices))
|
||||
(format #t "~Tcolor-indices: #x~X~%" (-> obj unknown))
|
||||
(format #t "~Tbucket-ptr: ~A~%" (-> obj bucket-ptr))
|
||||
(format #t "~Tmax-scale: ~D~%" (-> obj max-scale))
|
||||
(format #t "~Tflags: ~D~%" (-> obj flags))
|
||||
|
||||
@@ -46,35 +46,24 @@ const std::unordered_set<std::string> g_functions_expected_to_reject = {
|
||||
"(method 9 bounding-box)", // handwritten asm loop
|
||||
"(method 14 bounding-box)", // handwritten asm loop
|
||||
// trig
|
||||
"exp",
|
||||
"atan0",
|
||||
"sincos!",
|
||||
"sincos-rad!",
|
||||
"exp", "atan0", "sincos!", "sincos-rad!",
|
||||
// matrix
|
||||
"(method 9 matrix)", // handwritten asm loop
|
||||
"matrix-axis-sin-cos!",
|
||||
"matrix-axis-sin-cos-vu!",
|
||||
"matrix-axis-sin-cos!", "matrix-axis-sin-cos-vu!",
|
||||
// dma-h
|
||||
"dma-count-until-done", // dma asm loop
|
||||
"dma-sync-with-count",
|
||||
"dma-send-no-scratch",
|
||||
"dma-sync-fast",
|
||||
"dma-sync-with-count", "dma-send-no-scratch", "dma-sync-fast",
|
||||
// dma
|
||||
"symlink2",
|
||||
"symlink3",
|
||||
"symlink2", "symlink3",
|
||||
"dma-sync-hang", // handwritten asm
|
||||
"vector=", // asm branching
|
||||
// display
|
||||
"vblank-handler", // asm
|
||||
"vif1-handler",
|
||||
"vif1-handler-debug",
|
||||
"vif1-handler", "vif1-handler-debug",
|
||||
// stats-h
|
||||
"(method 11 perf-stat)",
|
||||
"(method 12 perf-stat)",
|
||||
"(method 11 perf-stat)", "(method 12 perf-stat)",
|
||||
// ripple - asm
|
||||
"ripple-execute-init",
|
||||
"ripple-create-wave-table",
|
||||
"ripple-apply-wave-table",
|
||||
"ripple-execute-init", "ripple-create-wave-table", "ripple-apply-wave-table",
|
||||
"ripple-matrix-scale",
|
||||
// ripple - calls an asm function
|
||||
"ripple-execute",
|
||||
@@ -90,6 +79,8 @@ const std::unordered_set<std::string> g_functions_expected_to_reject = {
|
||||
// actor-link-h
|
||||
"(method 21 actor-link-info)", // BUG: sc cfg / cfg-ir bug
|
||||
"(method 20 actor-link-info)",
|
||||
|
||||
"debug-menu-item-var-render" // asm
|
||||
};
|
||||
|
||||
const std::unordered_set<std::string> g_functions_to_skip_compiling = {
|
||||
|
||||
Vendored
+1
-1
Submodule third-party/googletest updated: 7153098229...adeef19294
Reference in New Issue
Block a user