d/jak2: progress updated

This commit is contained in:
Tyler Wilding
2022-09-27 22:42:35 -04:00
parent 593b35c6ab
commit 930d56deb0
25 changed files with 2823 additions and 4730 deletions
+32 -14
View File
@@ -1359,23 +1359,41 @@ void SimpleExpressionElement::update_from_stack_mult_si(const Env& env,
FormStack& stack,
std::vector<FormElement*>* result,
bool allow_side_effects) {
auto arg0_i = is_int_type(env, m_my_idx, m_expr.get_arg(0).var());
auto arg1_i = is_int_type(env, m_my_idx, m_expr.get_arg(1).var());
if (m_expr.get_arg(0).is_int()) {
// annoyingly there's a mult3 v1, r0, v1 in jak 2.
auto arg1_i = is_int_type(env, m_my_idx, m_expr.get_arg(1).var());
auto args = pop_to_forms({m_expr.get_arg(0).var(), m_expr.get_arg(1).var()}, env, pool, stack,
allow_side_effects);
auto args = pop_to_forms({m_expr.get_arg(1).var()}, env, pool, stack, allow_side_effects);
if (!arg0_i) {
args.at(0) = pool.form<CastElement>(TypeSpec("int"), args.at(0));
if (!arg1_i) {
args.at(0) = pool.form<CastElement>(TypeSpec("int"), args.at(1));
}
auto new_form = pool.alloc_element<GenericElement>(
GenericOperator::make_fixed(FixedOperatorKind::MULTIPLICATION),
pool.form<SimpleAtomElement>(SimpleAtom::make_int_constant(m_expr.get_arg(0).get_int())),
args.at(0));
result->push_back(new_form);
} else {
auto arg0_i = is_int_type(env, m_my_idx, m_expr.get_arg(0).var());
auto arg1_i = is_int_type(env, m_my_idx, m_expr.get_arg(1).var());
auto args = pop_to_forms({m_expr.get_arg(0).var(), m_expr.get_arg(1).var()}, env, pool, stack,
allow_side_effects);
if (!arg0_i) {
args.at(0) = pool.form<CastElement>(TypeSpec("int"), args.at(0));
}
if (!arg1_i) {
args.at(1) = pool.form<CastElement>(TypeSpec("int"), args.at(1));
}
auto new_form = pool.alloc_element<GenericElement>(
GenericOperator::make_fixed(FixedOperatorKind::MULTIPLICATION), args.at(0), args.at(1));
result->push_back(new_form);
}
if (!arg1_i) {
args.at(1) = pool.form<CastElement>(TypeSpec("int"), args.at(1));
}
auto new_form = pool.alloc_element<GenericElement>(
GenericOperator::make_fixed(FixedOperatorKind::MULTIPLICATION), args.at(0), args.at(1));
result->push_back(new_form);
}
void SimpleExpressionElement::update_from_stack_force_si_2(const Env& env,
+179 -151
View File
@@ -5050,7 +5050,7 @@
(deftype texture-page-translate-item (structure)
((bucket bucket-id :offset-assert 0)
(level-index uint32 :offset-assert 4)
(level-index uint32 :offset-assert 4) ;; TODO - this is an enum
(level-texture-page tpage-category-u32 :offset-assert 8)
(texture-user texture-enable-mask-u32 :offset-assert 12)
)
@@ -6580,99 +6580,121 @@
:type uint32
:bitfield #f
(pause 257)
(progress-on-off-1TODO 270)
(progress-on-off-2TODO 271)
(progress-1k2jn1kj2n3 272)
(progress-kj1231nj23 286)
(progress-12434g343v 287)
(progress-video-asda 288)
(progress-video-j1n2 289)
(progress-draw-yes-or-no-1-TODO 292)
(progress-draw-yes-or-no-2-TODO 293)
(progress-1kj2n3kj1n23 296)
(progress-n2jk3n45234 298)
(progress-1ikjhb231hjik2b31ihb231 303)
(progress-kj1n23123 308)
(progress-k1jnb231kjhnb23 311)
(progress-loj1n23 312)
(progress-2k3jn4234 313)
(progress-2kj3n24kn 314)
(progress-2kjn34 315)
(progress-2klj342n43 316)
(progress-l2jm342m34 317)
(progress-2m342kmj34 318)
(progress-kj1bn23kj1n23 339)
(progress-1l2jnm31lk2m3 340)
(progress-unlocked-oj1n23jn1 345)
(progress-unlocked-k1231kkj 346)
(progress-unlocked-jn12j 347)
(progress-unlocked-m12312 348)
(progress-unlocked-1231h2bn 349)
(progress-unlocked-akjisndaj 350)
(progress-unlocked-iwudnq 351)
(progress-unlocked-n51i51n 352)
(progress-1k2ijn1jkn3 360)
(progress-1kjn2jn31kj3 361)
(progress-1kj2n31j23 367)
(progress-iko1jn231kjhn23 368)
(progress-1klj2n31j2n3 369)
(progress-i1un23i12b341 370)
(progress-2kj3n2kji3n42 377)
(progress-draw-continue-retry-1-TODO 382)
(progress-1klj2n31j23 383)
(progress-j1n23j1kn23kjn12 395)
(progress-2j021j394j 396)
(progress-kj6n324i63n 397)
(progress-3iou4n3i45n3 398)
(progress-39u4n359n45 399)
(progress-iun34593n45 400)
(progress-on2394234n 401)
(progress-l1jkn231jkn23 402)
(progress-kj1n231kjn2 403)
(progress-1lkjn231jnk2 404)
(progress-n12n211n1n 405)
(progress-2iu3bn4289u34n 406)
(progress-oj1n23kj1n23123 409)
(progress-1kjn231kjn23 410)
(progress-1kj2b31k2b3 411)
(progress-j1nb23kj1hbn2 412)
(progress-1kj2bkoij1231 413)
(progress-1nmn1221n21n12n 414)
(progress-busy-loading-TODO 416)
(progress-1jib12o3nj12j3 419)
(progress-1m23n1n23n21 420)
(progress-1jk2n31jkn23n1j 421)
(progress-1n23kjn12nk3j12 422)
(progress-draw-continue-retry-2-TODO 423)
(progress-kj12k3j1n23n 424)
(progress-1kj2bn31kjhnb2 426)
(progress-jk1n23kj1n2 429)
(progress-k1jn23k1h23b 430)
(progress-k1jn23kj1n23 431)
(progress-1kjn231j2 432)
(progress-1kj2n31kjn231 433)
(progress-1kj2n31jkn23 434)
(progress-1kjn2123919 435)
(progress-jn12n3j1n2 436)
(progress-n12jin313 437)
(progress-main-23jn42 531)
(progress-main-63j46j3n4 532)
(progress-main-m123j1m 533)
(progress-main-634jn6 534)
(progress-main-52o352nm 535)
(progress-main-63jk46n3 536)
(progress-main-j324nm3 537)
(progress-main-k1j2n3n1 538)
(progress-main-6mn346mn 539)
(progress-main-63jn463jn 540)
(progress-main-63j46n3j 541)
(progress-main-52kj3n52 542)
(progress-main-52jn35j2 543)
(progress-main-3643m6m 544)
(progress-main-36j46jn 545)
(progress-main-63mn46nm 546)
(progress-main-364jn6n 547)
(progress-ikj123i1khb231 784)
(progress-sound-music-volume 264)
(progress-sound-speech-volume 265)
(progress-on 270)
(progress-off 271)
(progress-move-dpad 272)
(progress-aspect-ratio 280)
(progress-progressive-scan 281)
(progress-video-mode 282)
(progress-root-game-options 283)
(progress-root-graphic-options 284)
(progress-root-sound-options 285)
(progress-aspect-4x3 286)
(progress-aspect-16x9 287)
(progress-refresh-60hz 288)
(progress-refresh-50hz 289)
(progress-demo-exit 291)
(progress-yes 292)
(progress-no 293)
(progress-back 294)
(progress-ok 295)
(progress-next 296)
(progress-previous 297)
(progress-continue-without-saving 298)
(progress-select-file-to-save 299)
(progress-select-file-to-load 300)
(progress-load-game 301)
(progress-save-game 302)
(progress-slot-empty 303)
(progress-title-options 304)
(progress-title-new-game 305)
(progress-title-prompt 306)
(progress-quit 307)
(progress-root-show-map 308)
(progress-root-highscores 310)
(progress-highscores-1st 311)
(progress-highscores-2nd 312)
(progress-highscores-3rd 313)
(progress-highscores-4th 314)
(progress-highscores-5th 315)
(progress-highscores-6th 316)
(progress-highscores-7th 317)
(progress-highscores-8th 318)
(progress-root-secrets 339)
(progress-secrets-unlocked 340)
(progress-main-secrets-hero-mode 345)
(progress-main-secrets-sceneplayer-1 346)
(progress-main-secrets-sceneplayer-2 347)
(progress-main-secrets-sceneplayer-3 348)
(progress-main-secrets-scrapbook 349)
(progress-main-secrets-mega-scrapbook 350)
(progress-main-secrets-scrapbook-3 351)
(progress-main-secrets-levelselect 352)
(progress-secrets-orb-label 360)
(progress-root-missions 361)
(progress-root-restart-mission 366)
(progress-missions-icon-todo 367)
(progress-missions-icon-completed 368)
(progress-missions-none 369)
(progress-unknown-game 370)
(progress-unknown-square-to-reset 377)
(progress-unknown-retry? 382)
(progress-secrets-go-to-title-screen 383)
(progress-graphics-60hz-change-notice 395)
(progress-graphics-progressivescan-change-notice 396)
(progress-graphics-progressivescan-warning-1 397)
(progress-graphics-progressivescan-warning-2 398)
(progress-graphics-60hz-change-complete 399)
(progress-graphics-progressivescan-change-complete 400)
(progress-graphics-mode-revert? 401)
(progress-disc-removed-notice 402)
(progress-disc-removed-prompt 403)
(progress-disc-read-error 404)
(progress-disc-read-error-prompt 405)
(progress-quit-game-confirm 406)
(progress-memcard-not-found 409)
(progress-memcard-unformatted 410)
(progress-memcard-space-requirement 411)
(progress-memcard-insert-card-with-jak2 412)
(progress-memcard-insert-card-with-space-to-save 413)
(progress-memcard-formatting-required-notice 414)
(progress-memcard-loading-data 416)
(progress-memcard-dont-remove 419)
(progress-memcard-overwrite-warning 420)
(progress-memcard-overwrite-confirm 421)
(progress-memcard-format-prompt 422)
(progress-memcard-continue? 423)
(progress-memcard-go-back? 424)
(progress-memcard-error-while-saving 426)
(progress-memcard-check 429)
(progress-memcard-check-and-try-again 430)
(progress-memcard-was-removed 431)
(progress-autosave-disabled 432)
(progress-autosave-reenabling-info 433)
(progress-memcard-no-jak2-found 434)
(progress-memcard-create-jak2-file? 435)
(progress-autosave-explanation 436)
(progress-autosave-dont-remove 437)
(progress-locations-haven-city 531)
(progress-locations-fortress 532)
(progress-locations-landing-pad 533)
(progress-locations-palace-roof 534)
(progress-locations-palace 535)
(progress-locations-weapons-factory 536)
(progress-locations-dead-town 537)
(progress-locations-pumping-station 538)
(progress-locations-sewer 539)
(progress-locations-strip-mine 540)
(progress-locations-mountain-temple 541)
(progress-locations-haven-forest 542)
(progress-locations-drill-platform 543)
(progress-locations-mars-tomb 544)
(progress-locations-dig 545)
(progress-locations-underport 546)
(progress-locations-nest 547)
(progress-unknown-continue 784)
)
;; ---text-id-h:game-text-id
@@ -7281,7 +7303,7 @@
(new (symbol type) _type_ 0)
(initialize (_type_) none 9) ;; some sort of init?
(update (_type_) none 10)
(bigmap-method-11 () none 11)
(bigmap-method-11 (_type_ int int int int) none 11)
(bigmap-method-12 () none 12)
(bigmap-method-13 () none 13)
(bigmap-method-14 (_type_) none 14)
@@ -11771,7 +11793,7 @@
:size-assert #x10
:flag-assert #xa00000010
(:methods
(highscore-info-method-9 () none 9)
(highscore-info-method-9 (_type_ float) int 9)
)
)
@@ -11879,27 +11901,29 @@
)
)
;; +++memcard-h:mc-status-code
(defenum mc-status-code
:type uint32
;; (busy 0)
(busy 0)
(ok 1)
; (bad-handle 2)
; (format-failed 3)
; (internal-error 4)
; (write-error 5)
; (read-error 6)
; (new-game 7)
; (no-memory 8)
; (no-card 9)
; (no-last 10)
; (no-format 11)
; (no-file 12)
; (no-save 13)
; (no-space 14)
; (bad-version 15)
; (no-process 16)
; (no-auto-save 17)
(bad-handle 2)
(format-failed 3)
(internal-error 4)
(write-error 5)
(read-error 6)
(new-game 7)
(no-memory 8)
(no-card 9)
(no-last 10)
(no-format 11)
(no-file 12)
(no-save 13)
(no-space 14)
(bad-version 15)
(no-process 16)
(no-auto-save 17)
)
;; ---memcard-h:mc-status-code
(declare-type entity-perm-array inline-array-class)
(declare-type continue-point basic)
@@ -19702,8 +19726,8 @@
(hud-box-method-11 () none 11)
(hud-box-method-12 () none 12)
(hud-box-method-13 (_type_ dma-buffer float) int 13)
(hud-box-method-14 () none 14)
(hud-box-method-15 () none 15)
(hud-box-method-14 (_type_) none 14)
(hud-box-method-15 (_type_) none 15)
)
)
@@ -20241,7 +20265,7 @@
(go-away () _type_ :state 22) ;; (adjust-icons (_type_) none 22)
(gone () _type_ :state 23) ;; (adjust-ratios (_type_ symbol symbol) none 23)
(init-defaults "Initialize default menu settings." (_type_) connection 24) ;; (draw-fuel-cell-screen (_type_ int) none 24)
(progress-method-25 (_type_ object object symbol) none 25) ;; (draw-money-screen (_type_ int) none 25)
(progress-method-25 (_type_) none 25) ;; (draw-money-screen (_type_ int) none 25)
(progress-method-26 (_type_) object 26) ;; (draw-buzzer-screen (_type_ int) none 26)
(can-go-back? (_type_) symbol 27) ;; (draw-notice-screen (_type_) none 27)
(progress-method-28 (_type_ symbol) symbol 28) ;; (draw-options (_type_ int int float) none 28)
@@ -20256,11 +20280,12 @@
((name game-text-id :offset-assert 4)
(scale float :offset-assert 8)
(unknown function :offset-assert 12)
;; No idea what is going on here....
;; but i believe they are all `menu-options` -- look at `(method 24 progress)`
;; i think it might just be that each menu "page" can have 8 menu-options on it, and maybe printing "box" was just to make inspects nicer?
(box menu-option 1 :offset-assert 16)
(unknown-options menu-option 7 :offset-assert 20)
;; This is gross if im correct
;; this HAS to have a bunch of `menu-option`s -- look at `(method 24 progress)` and `(method 25 progress)`
;; - i think it might just be that each menu "page" can have 8 menu-options on it?
;; but the drawing code also heavily implies it can also be a `hud-box` (finally the `box` name makes sense)
(box hud-box 1 :inline :offset-assert 16)
(options menu-option 8 :offset 16)
)
:method-count-assert 12
:size-assert #x30
@@ -29338,7 +29363,7 @@
(define-extern hide-progress-screen (function none))
(define-extern progress-allowed? (function symbol))
(define-extern menu-update-purchase-secrets (function menu-secret-option none))
(define-extern progress-trans (function none :behavior progress)) ;; TODO - assertion hit when defining behavior
(define-extern progress-trans (function none :behavior progress))
(define-extern begin-scan (function hud-box progress int))
(define-extern end-scan (function hud-box float int))
(define-extern progress-post (function none :behavior progress))
@@ -29373,40 +29398,43 @@
(define-extern draw-up-down (function font-context none))
(define-extern draw-missions-up-down (function font-context none))
(define-extern draw-scene-up-down (function font-context none))
(define-extern begin-scissor (function vector progress none))
(define-extern end-scissor (function none))
(define-extern begin-scissor-secret (function vector none))
(define-extern end-scissor-secret (function none))
(define-extern begin-scissor-missions (function vector float none))
(define-extern end-scissor-missions (function vector none))
(define-extern begin-scissor-scene (function vector none))
(define-extern end-scissor-scene (function none))
(define-extern begin-scissor-level (function vector none))
(define-extern end-scissor-level (function none))
(define-extern begin-scissor (function hud-box progress none))
(define-extern end-scissor (function hud-box float none))
(define-extern begin-scissor-secret (function hud-box none))
(define-extern end-scissor-secret (function hud-box float none))
(define-extern begin-scissor-missions (function hud-box float none))
(define-extern end-scissor-missions (function hud-box none))
(define-extern begin-scissor-scene (function hud-box none))
(define-extern end-scissor-scene (function hud-box float none))
(define-extern begin-scissor-level (function hud-box none))
(define-extern end-scissor-level (function hud-box none))
(define-extern print-language-name (function game-text-id font-context int symbol none))
(define-extern unlocked-secret-menu? (function symbol)) ;; a bit field of some kind! probably task related - HANG!
(define-extern memcard-unlocked-secrets? "TODO - cleanup bitfields / arg passing" (function symbol symbol))
(define-extern num-unlocked-secret? "@returns The number of secrets currently unlocked" (function int int)) ;; a bit field of some kind! probably task related
(define-extern print-menu-text (function game-text-id float font-context progress none))
(define-extern draw-yes-no (function progress float none))
(define-extern draw-continue-retry (function progress float none))
(define-extern draw-savegame-box (function menu-memcard-slot-option float float float float none))
(define-extern get-level-icon-id-01 "TODO - Icon id enum perhaps?" (function int uint))
(define-extern get-level-icon-id-02 "TODO - Icon id enum perhaps?" (function int uint))
(define-extern get-level-icon-id-03 "TODO - Icon id enum perhaps?" (function int uint))
(define-extern get-level-icon-id-04 "TODO - Icon id enum perhaps?" (function int uint))
(define-extern draw-decoration (function menu-quit-qr-option font-context float int symbol float none))
(define-extern draw-missions-decoration (function menu-missions-option font-context float game-text-id none))
(define-extern draw-sound-options-decoration (function menu-slider-option font-context float symbol game-text-id none))
(define-extern draw-decoration-secrets (function menu-secret-option font-context float game-text-id pointer))
(define-extern draw-decoration-load-save (function menu-memcard-slot-option font-context float int none))
(define-extern unlocked-secret-menu? (function int))
(define-extern memcard-unlocked-secrets? "TODO - returns a bitfield" (function symbol int))
(define-extern num-unlocked-secret?
"TODO - bitfield
@returns The number of secrets currently unlocked"
(function int int))
(define-extern print-menu-text (function string float font-context progress none))
(define-extern draw-yes-no (function progress font-context pointer))
(define-extern draw-continue-retry (function progress font-context pointer))
(define-extern draw-savegame-box (function menu-option float float float float pointer))
(define-extern get-level-icon-id-01 "TODO - Icon id enum perhaps?" (function int texture-id))
(define-extern get-level-icon-id-02 "TODO - Icon id enum perhaps?" (function int texture-id))
(define-extern get-level-icon-id-03 "TODO - Icon id enum perhaps?" (function int texture-id))
(define-extern get-level-icon-id-04 "TODO - Icon id enum perhaps?" (function int texture-id))
(define-extern draw-decoration (function menu-option font-context float int symbol float pointer))
(define-extern draw-missions-decoration (function menu-missions-option font-context float game-text-id pointer))
(define-extern draw-sound-options-decoration (function menu-slider-option font-context float symbol game-text-id pointer))
(define-extern draw-decoration-secrets (function menu-option font-context float game-text-id pointer))
(define-extern draw-decoration-load-save (function menu-option font-context float int pointer))
(define-extern sort-task-node-result (function int none))
(define-extern find-mission-text-at-index (function int game-task-node-info))
(define-extern draw-secret-list (function secret-item-option progress font-context int symbol float none))
(define-extern draw-secret-list (function secret-item-option progress font-context int symbol float pointer))
(define-extern draw-highscore-icon (function menu-highscores-option uint int int float pointer))
(define-extern draw-highscore-cup (function texture-page object int int float float pointer))
(define-extern draw-highscore-cup "First int is an enum" (function texture-page int int int float float pointer))
(define-extern get-highscore-score "TODO - takes and returns an enum?" (function int int))
(define-extern eval-highscore (function print-highscore-obj none))
(define-extern eval-highscore (function print-highscore-obj int))
(define-extern str-print-time (function float string))
(define-extern print-highscore (function print-highscore-obj float))
(define-extern get-highscore-text "TODO - takes an enum?" (function int game-text-id))
@@ -3127,19 +3127,19 @@
"(method 10 menu-missions-option)": [
[
224,
"vector"
"hud-box"
]
],
"(method 10 menu-secret-option)": [
[
64,
"vector"
"hud-box"
]
],
"(method 10 menu-highscores-option)": [
[
16,
"vector"
"hud-box"
]
]
}
}
+149 -82
View File
@@ -13352,173 +13352,215 @@
],
"(method 25 progress)": [
[
19,
"v1",
[
19,
31
],
"a0",
"menu-option"
]
],
"(method 24 progress)": [
[
[
70,
72
],
70,
"a0",
"(array menu-option)"
],
[
71,
"a0",
"menu-on-off-game-vibrations-option"
],
[
[
76,
78
],
76,
"a0",
"(array menu-option)"
],
[
77,
"a0",
"menu-on-off-game-subtitles-option"
],
[
[
82,
84
],
82,
"a0",
"(array menu-option)"
],
[
83,
"a0",
"menu-language-option"
],
[
[
87,
89
],
87,
"a0",
"(array menu-option)"
],
[
88,
"a0",
"menu-language-option"
],
[
[
91,
93
],
91,
"v1",
"(array menu-option)"
],
[
92,
"v1",
"menu-language-option"
],
[
[
95,
97
],
95,
"v1",
"(array menu-option)"
],
[
96,
"v1",
"menu-language-option"
],
[
[
101,
103
],
101,
"a0",
"(array menu-option)"
],
[
102,
"a0",
"menu-on-off-option"
],
[
[
107,
109
],
107,
"a0",
"(array menu-option)"
],
[
108,
"a0",
"menu-on-off-option"
],
[
[
113,
115
],
113,
"a0",
"(array menu-option)"
],
[
114,
"a0",
"menu-on-off-option"
],
[
[
119,
121
],
119,
"a0",
"(array menu-option)"
],
[
120,
"a0",
"menu-on-off-option"
],
[
[
125,
127
],
125,
"a0",
"(array menu-option)"
],
[
126,
"a0",
"menu-slider-option"
],
[
[
131,
133
],
131,
"a0",
"(array menu-option)"
],
[
132,
"a0",
"menu-slider-option"
],
[
[
137,
139
],
137,
"a0",
"(array menu-option)"
],
[
138,
"a0",
"menu-slider-option"
],
[
[
141,
143
],
141,
"v1",
"(array menu-option)"
],
[
142,
"v1",
"menu-missions-option"
]
],
"(method 31 progress)": [
[
[
61,
63
],
61, "v1", "(array menu-option)"
],
[
62,
"v1",
"menu-missions-option"
]
],
"(method 32 progress)": [
[
[
296,
298
],
296,
"v1",
"(array menu-option)"
],
[
297,
"v1",
"menu-select-start-option"
],
[
[
306,
308
],
306,
"v1",
"(array menu-option)"
],
[
307,
"v1",
"menu-select-scene-option"
],
[
[
371,
373
],
371,
"v1",
"(array menu-option)"
],
[
372,
"v1",
"menu-missions-option"
],
[
[
380,
382
],
380,
"v1",
"(array menu-option)"
],
[
381,
"v1",
"menu-highscores-option"
],
[
[
384,
386
],
384,
"v1",
"(array menu-option)"
],
[
385,
"v1",
"menu-highscores-option"
]
@@ -13887,5 +13929,30 @@
"v1",
"dma-packet"
]
],
"(event idle progress)": [
[
[
10,
80
],
"v1",
"mc-status-code"
],
[
[
147,
217
],
"v1",
"mc-status-code"
]
],
"memcard-unlocked-secrets?": [
[
50,
"s5",
"int"
]
]
}
+1 -1
View File
@@ -7,7 +7,7 @@
// if you want to filter to only some object names.
// it will make the decompiler much faster.
"allowed_objects": ["progress"],
"allowed_objects": [],
"banned_objects": ["effect-control", "time-of-day"],
////////////////////////////