mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
84b2ba43be
* Split cam inversion settings into first/third person settings. Connect settings to controls for main first/third person cameras * inverted -> flipped everywhere * cam-billy first-person camera impl * respect camera inversion in cam-stick (debug option only), launcher cams * refactor into common functions * couple more cams * tweak menu text and size, fix function ordering * convert to macros, more descriptive names * pc port comments * one missed comment * menu text/size/display tweaks * respect flipped in main debug cam
567 lines
15 KiB
Common Lisp
567 lines
15 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: text-h.gc
|
|
;; name in dgo: text-h
|
|
;; dgos: GAME, ENGINE
|
|
|
|
;; This file contains types related to game text.
|
|
;; Each game string is assigned an ID number.
|
|
;; This ID is used to lookup the string for the currently selected language.
|
|
;; These ID's are shared with short spoken audio clips (daxter hints)
|
|
;; most (all?) of the daxter clips don't have text strings.
|
|
|
|
(defenum game-text-id
|
|
:type uint32
|
|
:bitfield #f
|
|
;; GAME-TEXT-ID ENUM BEGINS
|
|
(zero 0)
|
|
(one 1)
|
|
(confirm #x103)
|
|
(press-to-talk #x104)
|
|
(press-to-use #x105)
|
|
(confirm-play #x106)
|
|
(play-again? #x107)
|
|
(quit #x108)
|
|
(pause #x109)
|
|
(sfx-volume #x10a)
|
|
(music-volume #x10b)
|
|
(speech-volume #x10c)
|
|
(language #x10d)
|
|
(vibrations #x10e)
|
|
(play-hints #x10f)
|
|
(center-screen #x110)
|
|
(on #x111)
|
|
(off #x112)
|
|
(move-dpad #x113)
|
|
(english #x114)
|
|
(french #x115)
|
|
(german #x116)
|
|
(spanish #x117)
|
|
(italian #x118)
|
|
(japanese #x119)
|
|
(press-to-trade-money #x11a)
|
|
(press-to-trade-money-oracle #x11b)
|
|
(press-to-warp #x11c)
|
|
(press-to-exit #x11d)
|
|
(press-to-talk-to-sage #x123)
|
|
(press-to-talk-to-assistant #x124)
|
|
(aspect-ratio #x125)
|
|
(video-mode #x126)
|
|
(game-options #x127)
|
|
(graphic-options #x128)
|
|
(sound-options #x129)
|
|
(4x3 #x12a)
|
|
(16x9 #x12b)
|
|
(60hz #x12c)
|
|
(50hz #x12d)
|
|
(game-title #x12e)
|
|
(hidden-power-cell #x12f) ;; why is this here??
|
|
(memcard-no-space #x130)
|
|
(memcard-not-inserted #x131)
|
|
(card-not-formatted-title #x132)
|
|
(memcard-space-requirement1 #x133)
|
|
(memcard-space-requirement2 #x134)
|
|
(card-not-formatted-msg #x135)
|
|
(saving-data #x136)
|
|
(loading-data #x137)
|
|
(do-not-remove-mem-card #x138)
|
|
(overwrite? #x139)
|
|
(format? #x13a)
|
|
|
|
(yes #x13c)
|
|
(no #x13d)
|
|
(back #x13e)
|
|
(continue-without-saving #x13f)
|
|
(select-file-to-save #x140)
|
|
(select-file-to-load #x141)
|
|
(save-data-already-exists #x142)
|
|
(insert-memcard #x143)
|
|
(continue? #x144)
|
|
(load-game #x14b)
|
|
(save-game #x14c)
|
|
(formatting #x14d)
|
|
(creating-save-data #x14e)
|
|
(empty #x14f)
|
|
(options #x150)
|
|
(error-loading #x151)
|
|
(error-saving #x152)
|
|
(error-formatting #x153)
|
|
(error-creating-data #x154)
|
|
(memcard-removed #x156)
|
|
(autosave-disabled-title #x157)
|
|
(autosave-disabled-msg #x158)
|
|
(no-save-data #x159)
|
|
(create-save-data? #x15a)
|
|
(check-memcard #x15b)
|
|
(new-game #x15c)
|
|
(back? #x15d)
|
|
(ok #x15e)
|
|
(exit-demo #x15f)
|
|
(autosave-warn-title #x160)
|
|
(autosave-warn-msg #x161)
|
|
(task-completed #x162)
|
|
(check-memcard-and-retry #x163)
|
|
(screen-change-to-60hz #x164)
|
|
(screen-60hz-warn-support #x165)
|
|
(screen-60hz-warn-timer #x166)
|
|
(screen-now-60hz #x167)
|
|
(screen-60hz-keep? #x168)
|
|
(warp-gate-use-dpad #x169)
|
|
(no-disc-title #x16a)
|
|
(no-disc-msg #x16b)
|
|
(bad-disc-title #x16c)
|
|
(bad-disc-msg #x16d)
|
|
(press-start #x16e)
|
|
(quit-game #x16f)
|
|
(quit? #x170)
|
|
(total-collected #x171)
|
|
|
|
(village1-mayor-money #x200)
|
|
(vollage1-uncle-money #x201)
|
|
(village1-yakow-herd #x202)
|
|
(village1-yakow-return #x203)
|
|
(village1-oracle #x204)
|
|
(beach-ecorocks #x205)
|
|
(beach-flutflut-push #x206)
|
|
(beach-flutflut-meet #x207)
|
|
(beach-pelican #x208)
|
|
(beach-seagull #x209)
|
|
(beach-cannon #x20a)
|
|
(beach-buzzer #x20b)
|
|
(jungle-lurkerm-connect #x20c)
|
|
(jungle-tower #x20d)
|
|
(jungle-eggtop #x20e)
|
|
(jungle-plant #x20f)
|
|
(jungle-fishgame #x210)
|
|
(misty-muse-catch #x211)
|
|
(misty-muse-return #x212)
|
|
(misty-boat #x213)
|
|
(misty-cannon #x214)
|
|
(misty-return-to-pool #x215) ;; task name??
|
|
(misty-find-transpad #x216) ;; task name?
|
|
(misty-balloon-lurkers #x217)
|
|
|
|
(village1-level-name #x220)
|
|
(beach-level-name #x221)
|
|
(jungle-level-name #x222)
|
|
(misty-level-name #x223)
|
|
|
|
(beach-seagull-get #x22e)
|
|
|
|
(jungle-lurkerm-unblock #x22f)
|
|
(jungle-lurkerm-return #x230)
|
|
|
|
(MISSING-orb-hint #x233)
|
|
|
|
(beach-eco-rock-increment #x239)
|
|
|
|
(jungle-maindoor-hint #x23c)
|
|
|
|
(firecanyon-not-enough-cells #x24f)
|
|
|
|
(sidekick-hint-orb-cache-top #x251)
|
|
|
|
(jungle-precursorbridge-hint #x25b)
|
|
(daxter-launcher-no-eco #x25c)
|
|
|
|
(jungle-mirrors-completion-talk-to-mayor #x25e)
|
|
|
|
(beach-gimmie #x262)
|
|
(beach-sentinel #x263)
|
|
(jungle-canyon-end #x264)
|
|
(jungle-temple-door #x265)
|
|
(misty-bike-jump #x266)
|
|
(misty-eco-challenge #x267)
|
|
(beach-seagull-chased-one #x268)
|
|
(beach-seagull-chased-two #x26a)
|
|
(beach-seagull-chased-three #x26b)
|
|
(beach-seagull-chased-four #x26c)
|
|
|
|
(misty-daxter-scared #x26f)
|
|
|
|
(beach-seagulls-avalanche #x273)
|
|
|
|
(beach-pelican-quick-get-cell #x274)
|
|
|
|
(beach-flutflutegg-hint #x275)
|
|
|
|
(sidekick-hint-fish-powerup #x278)
|
|
(misty-racer-hit-the-ballon-lurkers #x27e)
|
|
(misty-daxter-hit-lurkers-not-mines #x27f)
|
|
|
|
(sidekick-speech-hint-crate-darkeco1 #x281)
|
|
|
|
(sidekick-speech-crate-steel-break1 #x283)
|
|
(sidekick-speech-hint-crate-iron #x284)
|
|
(sidekick-speech-hint-crate-steel #x285)
|
|
|
|
(beach-collectors-unblocked #x288)
|
|
(jungleb-eco-vents-opened #x289)
|
|
(misty-stopped-lurkers-at-silo #x28a)
|
|
(misty-stopped-balloon-lurkers #x28b)
|
|
|
|
(sidekick-speech-crate-steel-break2 #x28e)
|
|
(sidekick-speech-hint-crate-darkeco2 #x28f)
|
|
|
|
(daxter-screaming-jump #x290)
|
|
(daxter-wahoo-jump #x291)
|
|
(daxter-get-some #x292)
|
|
|
|
(collectables-scout-flies-red-boxes #x295)
|
|
(found-all-scout-flies #x296)
|
|
(yakow-owed-powercell #x297)
|
|
|
|
(jungle-mirrors-tutorial #x29c)
|
|
(jungle-mirrors-break-the-mirror-jak #x29d)
|
|
(jungle-mirrors-go-to-the-next-tower #x29f)
|
|
(jungle-mirrors-follow-the-beam #x2a0)
|
|
|
|
(misty-teetertotter-bonk-dax-tutorial #x2a4)
|
|
(sidekick-hint-misty-get-red-eco #x2a5)
|
|
(red-eco-tutorial #x2a6)
|
|
(daxter-blue-eco-plat-tutorial #x2a7)
|
|
|
|
(fish? #x2a9)
|
|
(misty-bone-bridge-hint #x2aa)
|
|
|
|
(beach-grottopole-increment #x2af)
|
|
|
|
(firecanyon-collect-cells-collected #x2b1)
|
|
(firecanyon-collect-cells-collected-reminder #x2b2)
|
|
(firecanyon-collect-cells-text #x2b3)
|
|
(caught #x2b4)
|
|
(missed #x2b5)
|
|
(lose! #x2b6)
|
|
|
|
(village2-gambler-money #x300)
|
|
(village2-geologist-money #x301)
|
|
(village2-warrior-money #x302)
|
|
(village2-oracle-money #x303)
|
|
(swamp-tether #x304)
|
|
|
|
(swamp-flutflut #x307)
|
|
|
|
(swamp-billy #x309)
|
|
|
|
(sunken-elevator-raise #x30a)
|
|
(sunken-elevator-get-to-roof #x30b)
|
|
(sunken-pipe #x30c)
|
|
(sunken-climb-tube #x30d) ;; task name?
|
|
(sunken-pool #x30e) ;; task name?
|
|
(sunken-platforms #x30f)
|
|
|
|
(rolling-moles #x310)
|
|
(rolling-moles-return #x311)
|
|
(rolling-robbers #x312)
|
|
(rolling-race #x313)
|
|
(rolling-race-return #x314)
|
|
(rolling-lake #x315)
|
|
(rolling-plants #x316)
|
|
|
|
(unknown-buzzers #x317)
|
|
|
|
(village2-level-name #x319)
|
|
|
|
(rolling-level-name #x31b)
|
|
(swamp-level-name #x31c)
|
|
(sunken-level-name #x31d)
|
|
(ogre-level-name #x31e)
|
|
|
|
(swamp-battle #x321)
|
|
(sunken-bottom #x322) ;; task name?
|
|
(reach-center #x323) ;; task name?
|
|
(rolling-ring-chase-1 #x324)
|
|
(rolling-ring-chase-2 #x325)
|
|
(sunken-kiera-you-raised-a-piece-of-lpc #x326)
|
|
(rolling-beat-lurkers #x327)
|
|
(swamp-finished-with-flutflut #x328)
|
|
(rolling-race-beat-record #x335)
|
|
(sidekick-speech-hint-rolling-crate-darkeco #x336)
|
|
(rolling-lightning-moles-completion #x338)
|
|
(rolling-dark-plants-location-hint #x339)
|
|
(rolling-dark-plants-hint #x33a)
|
|
(rolling-flying-lurker-intro #x33c)
|
|
(rolling-ring-hint-one-ring-down #x33f)
|
|
(rolling-ring-hint-be-quick-to-next #x340)
|
|
(rolling-ring-hint-be-quick-all #x341)
|
|
|
|
(sunken-pipegame-follow-it #x343)
|
|
(sunken-helix-daxter-bad-feeling #x344)
|
|
(sunken-blue-eco-charger-hint #x345)
|
|
(sunken-double-lurker-hint #x347)
|
|
(sunken-helix-daxter-eco-rising #x348)
|
|
(sunken-qbert-plat-hint #x34a)
|
|
(sunken-bully-dive-hint #x34b)
|
|
(sunken-take-it-easy-hot-pipes #x34e)
|
|
|
|
(sunken-blue-eco-charger-all-hint #x34d)
|
|
|
|
(swamp-tethers-advice-hint #x352)
|
|
|
|
(kermit-break-tongue #x357)
|
|
(swamp-rats-nest-hint #x358)
|
|
(daxter-you-can-shoot-with-yellow-eco #x359)
|
|
|
|
(kermit-run-away-jak #x35f)
|
|
|
|
(swamp-bats-hint #x364) ;; maybe we can duck the bats
|
|
(swamp-tethers-three-to-go #x365)
|
|
(swamp-tethers-two-to-go #x366)
|
|
(swamp-tethers-lefts-find-the-last #x367)
|
|
(flutflut-reminder #x368)
|
|
|
|
(sage-golfclap-i-have-low-expectations #x36a) ;; where was this said?
|
|
|
|
(swamp-tethers-completion-sage-precursor-arm #x36b)
|
|
|
|
(village2-warp-gate-reminder #x36f)
|
|
(village2-warp-gate-reminder-annoyed #x370)
|
|
(village2-warp-gate-reminder-very-annoyed #x371)
|
|
|
|
(village2-not-enough-cells-levitator #x36c)
|
|
(villlage2-levitator-cell-req-text #x372)
|
|
|
|
(rolling-race-time-string-prefix #x373)
|
|
(rolling-race-record-string-prefix #x374)
|
|
(rolling-race-new-record-string-prefix #x375)
|
|
(rolling-race-try-again-string #x376)
|
|
(rolling-race-start-race-aborted #x377) ;; double check this
|
|
|
|
(village3-miner-money #x400)
|
|
(village3-oracle-money #x401)
|
|
(snow-ram-3-left #x402)
|
|
(snow-ram-2-left #x403)
|
|
(snow-ram-1-left #x404)
|
|
(snow-fort #x405)
|
|
(snow-bunnies #x406)
|
|
(snow-open-door #x408) ;; task name?
|
|
|
|
(cave-robot-climb #x40e)
|
|
(cave-dark-climb #x40f) ;; destroy crystals
|
|
|
|
(cave-gnawers #x410)
|
|
(cave-dark-crystals #x411)
|
|
|
|
(village3-buzzer #x413)
|
|
|
|
(village3-level-name #x415)
|
|
|
|
(snowy-level-name #x417)
|
|
|
|
(cave-level-name #x419)
|
|
|
|
(lavatube-level-name #x41b)
|
|
|
|
(snow-eggtop #x421)
|
|
|
|
(cave-spider-tunnel #x423)
|
|
(cave-platforms #x424)
|
|
|
|
(cave-swing-poles #x426)
|
|
|
|
(assistant-lavatube-powercell-hint #x428)
|
|
(village3-gondola-malfunctioning #x429)
|
|
(village3-gondola-reactivated #x42a)
|
|
|
|
(snow-frozen-crate #x42b) ;; task name?
|
|
(snow-bumpers #x42c)
|
|
|
|
(dark-crystal-last-one #x432)
|
|
(daxter-maybe-you-can-shoot-better-goggles #x433)
|
|
|
|
(darkcave-light-crystal-low-light-hint #x437)
|
|
(darkcave-light-crystal-hint #x438)
|
|
(dark-crystal-run-away #x439)
|
|
(cave-trap-nest-hint #x440)
|
|
(snow-fort-reminder #x443)
|
|
(ram-boss-red-eco-hint #x444)
|
|
|
|
(ice-cube-hint #x448)
|
|
|
|
(snowy-turned-on-yellow-vents #x44c)
|
|
|
|
(village3-warp-gate-reminder #x452)
|
|
(village3-warp-gate-reminder=annoyed #x453)
|
|
(village3-warp-gate-reminder-very-annoyed #x454)
|
|
(lavatube-powercell-req-text #x455)
|
|
|
|
(fire-canyon-end #x500)
|
|
(fire-canyon-buzzer #x501)
|
|
|
|
(daxter-maybe-i-should-drive #x506)
|
|
(daxter-you-are-trying-to-avoid-dark-eco #x507)
|
|
|
|
(fire-canyon-level-name #x50c)
|
|
|
|
(fire-canyon-we-made-it #x515)
|
|
|
|
(collectables-theres-scout-flys-here-too #x516)
|
|
|
|
(ogre-end #x600)
|
|
(ogre-buzzer #x601)
|
|
(ogre-boss #x603)
|
|
(ogre-boss-killed #x604)
|
|
|
|
(assistant-voicebox-intro-ogre-race #x605)
|
|
|
|
(sidekick-speech-hint-ogre-race #x61c)
|
|
(assistant-finished-mountain-pass-race #x61d)
|
|
|
|
(lavatube-end #x700)
|
|
(lavatube-buzzer #x701)
|
|
|
|
(lavatube-shoot-the-spheres #x70d)
|
|
|
|
(lavatube-spheres-door-open #x710)
|
|
|
|
(citadel-buzzer #x800)
|
|
(citadel-level-name #x801)
|
|
(citadel-sage-blue #x802)
|
|
(citadel-sage-red #x803)
|
|
(citadel-sage-yellow #x804)
|
|
(citadel-sage-green #x805)
|
|
(citadel-break-generator-hint #x806)
|
|
(citadel-lurker-bunny-alert #x808)
|
|
(citadel-break-generators-reminder #x809)
|
|
(citadel-climb-plat-hint #x80c)
|
|
|
|
(daxter-dont-miss-the-next-launcher #x80d)
|
|
|
|
(daxter-land-on-the-next-launcher #x812)
|
|
(misty-battle-finished #x813)
|
|
|
|
(training-precursor-orbs #x901)
|
|
(training-power-cells #x902)
|
|
(training-assistant-found-scout-fly #x903)
|
|
(training-assistant-found-scout-fly-cell #x904)
|
|
(training-blue-eco-vent #x907)
|
|
(training-eco-green #x908)
|
|
(training-eco-blue #x909)
|
|
(training-more-eco-more-time #x90a)
|
|
(training-precursor-door #x90b)
|
|
(training-eco-opened-door #x90c)
|
|
(training-double-jump #x90e)
|
|
|
|
(sage-voicebox-hint-crate-iron #x917)
|
|
(training-warp-gate-blocked #x919)
|
|
(training-warp-gate-reminder #x91a)
|
|
|
|
(training-gimmie-task-name #x91b)
|
|
(training-buzzer-task-name #x91c)
|
|
(training-door-task-name #x91d)
|
|
(training-climb-task-name #x91e)
|
|
(training-level-name #x91f)
|
|
|
|
(inc #xf10)
|
|
(europe #xf11)
|
|
|
|
;; extra IDs for pc port
|
|
(camera-options #x1000)
|
|
(normal #x1001)
|
|
(flipped #x1002)
|
|
(camera-controls-first-horz #x1003)
|
|
(camera-controls-first-vert #x1004)
|
|
(camera-controls-third-horz #x1005)
|
|
(camera-controls-third-vert #x1006)
|
|
(misc-options #x100f)
|
|
(accessibility-options #x1010)
|
|
(money-starburst #x1011)
|
|
(ps2-options #x1020)
|
|
(ps2-load-speed #x1021)
|
|
(ps2-parts #x1022)
|
|
(discord-rpc #x1030)
|
|
(display-mode #x1031)
|
|
(windowed #x1032)
|
|
(borderless #x1033)
|
|
(fullscreen #x1034)
|
|
(game-resolution #x1035)
|
|
(resolution-fmt #x1036)
|
|
(ps2-aspect-ratio #x1037)
|
|
(ps2-aspect-ratio-msg #x1038)
|
|
(aspect-ratio-ps2 #x1039)
|
|
(fit-to-screen #x103a)
|
|
(msaa #x1050)
|
|
(x-times-fmt #x1051)
|
|
(2-times #x1052)
|
|
(4-times #x1053)
|
|
(8-times #x1054)
|
|
(16-times #x1055)
|
|
(frame-rate #x1060)
|
|
(lod-bg #x1070)
|
|
(lod-fg #x1071)
|
|
(lod-highest #x1072)
|
|
(lod-high #x1073)
|
|
(lod-mid #x1074)
|
|
(lod-low #x1075)
|
|
(lod-lowest #x1076)
|
|
(lod-ps2 #x1077)
|
|
(subtitles #x1078)
|
|
(hinttitles #x1079)
|
|
(subtitles-language #x107a)
|
|
(subtitles-speaker #x107b)
|
|
(speaker-always #x107c)
|
|
(speaker-never #x107d)
|
|
(speaker-auto #x107e)
|
|
(hint-log #x107f)
|
|
(cheats #x1080)
|
|
(cheat-eco-blue #x1090)
|
|
(cheat-eco-red #x1091)
|
|
(cheat-eco-green #x1092)
|
|
(cheat-eco-yellow #x1093)
|
|
(cheat-sidekick-alt #x1094)
|
|
(cheat-invinc #x1095)
|
|
(music-player #x10c0)
|
|
(scene-player #x10c1)
|
|
(play-credits #x10c2)
|
|
(scrapbook #x10c3)
|
|
(scene-0 #x1100)
|
|
(scene-255 #x11ff)
|
|
(hint-0 #x1200)
|
|
(hint-511 #x13ff)
|
|
;; GAME-TEXT-ID ENUM ENDS
|
|
)
|
|
|
|
|
|
;; an individual string.
|
|
(deftype game-text (structure)
|
|
((id game-text-id :offset-assert 0)
|
|
(text string :offset-assert 4)
|
|
)
|
|
:pack-me
|
|
:method-count-assert 9
|
|
:size-assert #x8
|
|
:flag-assert #x900000008
|
|
)
|
|
|
|
;; A table of all strings.
|
|
(deftype game-text-info (basic)
|
|
((length int32 :offset-assert 4)
|
|
(language-id int32 :offset-assert 8)
|
|
(group-name string :offset-assert 12)
|
|
(data game-text :inline :dynamic :offset-assert 16)
|
|
)
|
|
:method-count-assert 10
|
|
:size-assert #x10
|
|
:flag-assert #xa00000010
|
|
(:methods
|
|
(lookup-text! (_type_ game-text-id symbol) string 9)
|
|
)
|
|
)
|
|
|
|
;; all text is stored in the COMMON text files (one file per language).
|
|
;; in theory, you could have multiple text files that are only loaded when needed, but they didn't do this.
|
|
(define *text-group-names* (new 'static 'boxed-array :type string :length 1 "common"))
|
|
|
|
;; The heap for storing text
|
|
(define *common-text-heap* (new 'global 'kheap))
|
|
|
|
;; will store the COMMON text when it is loaded.
|
|
(define *common-text* (the-as game-text-info #f))
|
|
|
|
|
|
(defun-extern print-game-text string font-context symbol int int float)
|
|
|
|
|
|
|