;;-*-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 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) (memcard-not-formatted-title #x132) (memcard-space-requirement1 #x133) (memcard-space-requirement2 #x134) (memcard-not-formatted-msg #x135) (saving-data #x136) (loading-data #x137) (memcard-do-not-remove #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) (village1-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) (misty-find-transpad #x216) (misty-balloon-lurkers #x217) (village1-poi-farmer #x218) (village1-poi-mayor #x219) (village1-poi-bird-lady #x21a) (village1-poi-sculptor #x21b) (village1-poi-explorer #x21c) (village1-poi-fisherman #x21d) (village1-poi-sage-hut #x21e) (village1-poi-assistant #x21f) (village1-level-name #x220) (beach-level-name #x221) (jungle-level-name #x222) (misty-level-name #x223) (village1-poi-firecanyon #x224) (jungleb-level-name #x225) (generic-yes #x226) (generic-no #x227) (flutflut #x228) (oracle #x229) (trans-pad #x22a) (green-eco-harvester #x22b) (money #x22c) (fuel-cell #x22d) (beach-seagull-get #x22e) (jungle-lurkerm-unblock #x22f) (jungle-lurkerm-return #x230) (sidekick-reminder-fishermans-boat #x231) (sidekick-hint-fishermans-boat #x232) (sidekick-reminder-money #x233) (sidekick-reminder-oracle #x234) (sidekick-hint-oracle #x235) (sidekick-hint-seagulls #x236) (sidekick-hint-pelican #x237) (sidekick-hint-ecorocks #x239) (sidekick-hint-mistycannon #x23a) (sidekick-hint-dive #x23b) (sidekick-hint-rounddoor #x23c) (sidekick-hint-lurkerm #x23d) (sidekick-hint-tower #x23e) (sidekick-reminder-fish #x240) (firecanyon-need-cells #x24f) (sidekick-hint-orb-cache-top #x251) (sidekick-hint-precurbridge #x25b) (sidekick-hint-launcher #x25c) (jungle-lurkerm-resolution #x25e) (jungle-lurkerm-hint #x25f) (beach-gimmie #x262) (beach-sentinel #x263) (jungle-canyon-end #x264) (jungle-temple-door #x265) (misty-bike-jump #x266) (misty-eco-challenge #x267) (sidekick-seagulls1 #x268) (sidekick-hint-seagulls2 #x269) (sidekick-seagulls2 #x26a) (sidekick-seagulls3 #x26b) (sidekick-seagulls4 #x26c) (sidekick-warehouse #x26e) (sidekick-misty #x26f) (beach-seagulls-avalanche #x273) (beach-pelican-quick-get-cell #x274) (beach-flutflutegg-hint #x275) (sidekick-hint-fish-powerup #x278) (misty-bike-hint #x27e) (misty-bike-mines-hint #x27f) (sidekick-hint-trans-pad #x280) (sidekick-hint-crate-darkeco1 #x281) (sidekick-hint-buzzer #x282) (sidekick-hint-crate-steel-break1 #x283) (sidekick-hint-crate-iron #x284) (sidekick-hint-crate-steel #x285) (sidekick-hint-fuel-cell #x286) (sidekick-hint-money #x287) (beach-ecorocks-resolution #x288) (jungle-eggtop-resolution #x289) (misty-cannon-resolution #x28a) (misty-bike-resolution #x28b) (sidekick-hint-crate-steel-break2 #x28e) (sidekick-hint-crate-darkeco2 #x28f) (sidekick-launcher1 #x290) (sidekick-launcher2 #x291) (sidekick-mistycannon #x292) (sidekick-unknown1 #x293) (sidekick-hint-buzzer2 #x294) (sidekick-hint-buzzer3 #x295) (sidekick-buzzer-resolution #x296) (village1-yakow-resolution #x297) (sidekick-hint-periscope #x29c) (sidekick-hint-reflector-mirror #x29d) (sidekick-hint-aphid #x29e) (sidekick-hint-periscope2 #x29f) (sidekick-hint-periscope3 #x2a0) (sidekick-hint-eco-door #x2a1) (misty-teetertotter #x2a4) (misty-eco-red-hint #x2a5) (misty-eco-red-first-use #x2a6) (misty-eco-plat #x2a7) (fish? #x2a9) (misty-bone-bridge-hint #x2aa) (beach-grottopole-increment #x2af) (village1cam-enough-cells #x2b1) (village1cam-enough-cells2 #x2b2) (firecanyon-need-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-arm #x305) (swamp-poles #x306) (swamp-flutflut #x307) (swamp-tetherrocks #x308) (swamp-billy #x309) (sunken-elevator-raise #x30a) (sunken-elevator-get-to-roof #x30b) (sunken-pipe #x30c) (sunken-climb-tube #x30d) (sunken-pool #x30e) (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) (generic-buzzer #x317) (poi-bluesage-hut #x318) (village2-level-name #x319) (poi-levitator #x31a) (rolling-level-name #x31b) (swamp-level-name #x31c) (sunken-level-name #x31d) (ogre-level-name #x31e) (levitator-yes #x31f) (levitator-no #x320) (swamp-battle #x321) (sunken-slide #x322) (sunken-spinning-room #x323) (rolling-ring-chase-1 #x324) (rolling-ring-chase-2 #x325) (sunken-room-resolution #x326) (rolling-robbers-resolution #x327) (swamp-flutflut-resolution #x328) (rolling-race-beat-record #x335) (sidekick-hint-crate-darkeco-rolling #x336) (rolling-moles-hint #x337) (rolling-moles-resolution #x338) (rolling-plants-hint #x339) (rolling-plants-hint-eco-green #x33a) (rolling-plants-hint-eco-green2 #x33b) (rolling-robbers-hint #x33c) (rolling-moles-hint-hole #x33d) (rolling-plants-hint-eco-green3 #x33e) (rolling-ring-chase-1-hint #x33f) (rolling-ring-chase-2-hint #x340) (rolling-ring-chase-fail #x341) (rolling-ring-grass #x342) (sunken-pipegame-hint #x343) (sunken-helix-hint #x344) (sunken-blue-eco-charger-hint #x345) (sunken-room-hint #x346) (sunken-double-lurker-hint #x347) (sunken-helix-darkeco-hint #x348) (sunken-helix-darkeco-close #x349) (sunken-qbert-plat-hint #x34a) (sunken-bully-dive-hint #x34b) (sunken-tube-hint #x34c) (sunken-blue-eco-charger-all-hint #x34d) (sunken-hotpipes #x34e) (sunken-water1 #x34f) (sunken-water2 #x350) (swamp-tetherrocks-hint #x351) (swamp-tetherrock-eco-yellow-hint #x352) (swamp-billy-reminder #x353) (swamp-flutflut-doublejump #x354) (swamp-tar #x355) (swamp-water #x356) (swamp-kermit-tongue-hint #x357) (swamp-rat-nest-hint #x358) (swamp-eco-yellow-first-use #x359) (swamp-eco-yellow-hint #x35a) (swamp-swingpole #x35b) (swamp-bramble #x35c) (swamp-tether-hint #x35d) (swamp-kermit-charge-hint #x35e) (swamp-kermit-flee #x35f) (swamp-battle-hint #x360) (swamp-arm-hint #x361) (swamp-tar-hint #x362) (swamp-bat-eco-yellow-hint #x363) (swamp-bat-duck-hint #x364) (swamp-tetherrocks-3-left #x365) (swamp-tetherrocks-2-left #x366) (swamp-tetherrocks-1-left #x367) (swamp-flutflut-hint #x368) (swamp-rats-hurt #x369) (rolling-plants-resolution #x36a) (swamp-arm-resolution #x36b) (village2-levitator-need-cells #x36c) (village2-levitator-find-cells #x36d) (village2-button-reminder #x36f) (village2-button-reminder2 #x370) (village2-button-reminder3 #x371) (village2-levitator-need-cells-text #x372) (time #x373) (record #x374) (new-record #x375) (try-again #x376) (race-aborted #x377) (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) (red-eggtop #x407) (snow-ball #x408) (cave-gem #x409) (cave-drilling-lurkers #x40a) (snow-top #x40b) (snow-troops #x40c) (snow-troops2 #x40d) (cave-robot-climb #x40e) (cave-dark-climb #x40f) (cave-gnawers #x410) (cave-dark-crystals #x411) (cave-bats #x412) (village3-buzzer #x413) (village3-poi-redsage-hut #x414) (village3-level-name #x415) (village3-poi-gondola #x416) (snow-level-name #x417) (village3-poi-yosemite #x418) (cave-level-name #x419) (village3-poi-ogre #x41a) (lavatube-level-name #x41b) (gondola-ride? #x41c) (gondola-yes #x41d) (gondola-no #x41e) (snow-ram-boss #x41f) (snow-lake #x420) (snow-eggtop #x421) (snow-birds #x422) (cave-spider-tunnel #x423) (cave-platforms #x424) (cave-swing-poles #x426) (assistant-lavatube-hint #x427) (assistant-lavatube-need-cells #x428) (gondola-need-cells #x429) (gondola-enough-cells #x42a) (snow-cage #x42b) (snow-bumpers #x42c) (cave-dark-crystals-resolution #x432) (cave-gnawers-look-around #x433) (cave-darkeco #x434) (cave-dark-crystals-reminder #x435) (cave-gnawers-reminder #x436) (darkcave-light-end #x437) (darkcave-light-hint #x438) (cave-dark-crystals-flee #x439) (robocave-introduction #x43a) (cave-spider-egg-hint #x43b) (darkcave-introduction #x43c) (cave-spiderweb-hint #x43d) (cave-spider-hurt #x43e) (cave-baby-spider-hint #x43f) (cave-trap-nest-hint #x440) (cave-spider-egg-spawn #x441) (cave-spider-nest-flee #x442) (snow-fort-hint #x443) (snow-ram-boss-red-eco-hint #x444) (snow-platform-hint #x445) (snow-vent-hint #x446) (snow-eggtop-hint #x447) (snow-ice-cube-hint #x448) (snow-button-hint #x449) (snow-plat-hint #x44a) (snow-red-eco-hint #x44b) (snow-eggtop-resolution #x44c) (snow-cage-resolution #x44d) (snow-ball-hint #x44e) (assistant-lavatube-enough-cells #x44f) (assistant-lavatube-enough-cells2 #x450) (assistant-lavatube-reminder #x451) (village3-button-reminder #x452) (village3-button-reminder2 #x453) (village3-button-reminder3 #x454) (assistant-lavatube-need-cells-text #x455) (firecanyon-end #x500) (firecanyon-buzzer #x501) (firecanyon-balloon-hint #x502) (firecanyon-ramp-hint #x503) (firecanyon-heat-warning1 #x504) (firecanyon-steer-hint #x505) (firecanyon-crate-darkeco1 #x506) (firecanyon-crate-darkeco2 #x507) (firecanyon-babak-hint #x508) (firecanyon-heat-warning2 #x509) (firecanyon-heat-warning3 #x50a) (firecanyon-heat-warning4 #x50b) (firecanyon-level-name #x50c) (firecanyon-balloon-reminder #x50d) (firecanyon-balloon-reminder2 #x50e) (firecanyon-heat-warning5 #x50f) (firecanyon-balloon-missed #x510) (firecanyon-heat-warning6 #x511) (firecanyon-heat-warning7 #x512) (firecanyon-heat-warning8 #x513) (firecanyon-heat-warning9 #x514) (firecanyon-end-resolution #x515) (firecanyon-buzzer-hint #x516) (ogre-end #x600) (ogre-buzzer #x601) (ogre-poi-ogre #x602) (ogre-boss #x603) (ogre-boss-resolution #x604) (ogre-race-hint #x605) (ogre-race-introduction #x607) (ogre-tnt-hint #x608) (ogre-race-ahead-hint #x609) (ogre-eco-blue-hint #x60a) (ogre-tree-hint #x60b) (ogre-eco-blue-reminder #x60c) (ogre-tnt-reminder #x60d) (ogre-hole-hint #x60e) (ogre-bonk-hint #x60f) (ogre-flying-lurker-hint #x610) (ogre-flying-lurker-reminder #x611) (ogre-flying-lurker-pass #x612) (ogre-flying-lurker-passed #x613) (ogre-race-losing #x614) (ogre-race-winning #x615) (ogre-race-reminder #x616) (ogre-jump-hint #x617) (ogre-race-end-almost #x618) (ogre-race-end-almost2 #x619) (ogre-race-end-almost3 #x61a) (ogre-race-end-almost-losing #x61b) (ogre-plunger-lurker-resolution #x61c) (ogre-race-resolution #x61d) (lavatube-end #x700) (lavatube-buzzer #x701) (lavatube-hurry #x702) (lavatube-hurry-path #x703) (lavatube-chainmine #x704) (lavatube-darkecobarrel #x705) (lavatube-balloon #x706) (lavatube-heat1 #x707) (lavatube-heat2 #x708) (lavatube-eco-blue #x709) (lavatube-eco-yellow #x70a) (lavatube-tunnel1 #x70b) (lavatube-tunnel2 #x70c) (lavatube-balls #x70d) (lavatube-balls-almost-dead #x70e) (lavatube-balls-resolution #x710) (lavatube-tunnel3 #x711) (lavatube-end-resolution #x712) (citadel-buzzer #x800) (citadel-level-name #x801) (citadel-sage-blue #x802) (citadel-sage-red #x803) (citadel-sage-yellow #x804) (citadel-sage-green #x805) (citadel-generator #x806) (citadel-edge #x807) (citadel-battle #x808) (citadel-generator-no-mushroom #x809) (citadel-button #x80a) (citadel-robotboss #x80b) (citadel-plat #x80c) (citadel-launcher #x80d) (citadel-battle2 #x80e) (citadel-sagecage #x80f) (citadel-hub1 #x810) (citadel-hub2 #x811) (citadel-launcher2 #x812) (citadel-battle-end #x813) (training-voicebox #x900) (training-money #x901) (training-fuel-cell #x902) (training-buzzer-hint #x903) (training-buzzer-resolution #x904) (training-sharkey #x905) (training-fuel-cell-reminder #x906) (training-blue-eco-vent #x907) (training-eco-green #x908) (training-eco-blue #x909) (training-eco-reminder #x90a) (training-precursor-door #x90b) (training-eco-opened-door #x90c) (training-progress #x90d) (training-double-jump #x90e) (training-spin #x90f) (training-spin-bad1 #x910) (training-spin-bad2 #x911) (training-spin-success #x912) (training-punch #x914) (training-punch-bad1 #x914) (training-punch-bad2 #x915) (training-punch-success #x916) (training-ironcrate #x917) (training-combo #x918) (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) (inverted #x1002) (camera-controls-first-horz #x1003) (camera-controls-first-vert #x1004) (camera-controls-third-horz #x1005) (camera-controls-third-vert #x1006) (restore-defaults #x1007) (auto-save-disabled #x100c) (disable-auto-save-query #x100d) (disable-auto-save #x100e) (misc-options #x100f) (accessibility-options #x1010) (money-starburst #x1011) (ps2-options #x1020) (ps2-load-speed #x1021) (ps2-parts #x1022) (music-fadeout #x1023) (music-fadein #x1024) (force-actors #x1025) (force-background #x1026) (force-envmap #x1027) (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) (vsync #x103b) (aspect4x3-ps2 #x103c) (aspect16x9-ps2 #x103d) (aspect-fmt #x103e) (subtitle-hint #x103f) (subtitle-enabled #x1040) (subtitle-disabled #x1041) (text-language #x1042) (display #x1043) (display-fmt #x1044) (msaa #x1050) (x-times-fmt #x1051) (2-times #x1052) (4-times #x1053) (8-times #x1054) (16-times #x1055) (frame-rate #x1060) (60fps #x1061) (100fps #x1062) (150fps #x1063) (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) (secrets #x1081) (select-level #x1082) (select-flava #x1083) (finalboss-level-name #x1084) (credits #x1085) (locked #x1086) (ogreboss #x1087) (fishgame #x1088) (danger-mus #x1089) (flava-player-controls #x108a) (cheat-eco-blue #x1090) (cheat-eco-red #x1091) (cheat-eco-green #x1092) (cheat-eco-yellow #x1093) (cheat-sidekick-alt #x1094) (cheat-invinc #x1095) (cheat-tunes #x1096) (cheat-sky #x1097) (cheat-req-100-percent #x1098) (cheat-req-beat-game #x1099) (cheat-big-head #x109a) (cheat-small-head #x109b) (cheat-big-fist #x109c) (cheat-big-head-npc #x109d) (cheat-no-tex #x109e) (cheat-mirror #x109f) (cheat-huge-head #x10a0) (music-player #x10c0) (scene-player #x10c1) (play-credits #x10c2) (scrapbook #x10c3) (default #x10d0) (flava-vi1-unused0 #x10d1) (flava-sage #x10d2) (flava-sage-hut #x10d3) (flava-birdlady #x10d4) (flava-farmer #x10d5) (flava-assistant #x10d6) (flava-mayor #x10d7) (flava-sculptor #x10d8) (flava-explorer #x10d9) (flava-dock #x10da) (flava-jun-temple-exit #x10db) (flava-jun-lurkerm #x10dc) (flava-jun-temple-top #x10dd) (flava-jub-eggtop #x10de) (flava-jub-plant-boss #x10df) (flava-bea-sentinel #x10e0) (flava-bea-cannon #x10e1) (flava-bea-grotto #x10e2) (flava-mis-battle #x10e3) (flava-mis-boat #x10e4) (flava-mis-unused0 #x10e5) (flava-racer #x10e6) (flava-flutflut #x10e7) (flava-fic-unused0 #x10e8) (flava-warrior #x10e9) (flava-geologist #x10ea) (flava-gambler #x10eb) (flava-levitator #x10ec) (flava-swa-game #x10ed) (flava-swa-launcher #x10ee) (flava-swa-battle #x10ef) (flava-rol-gorge #x10f0) (flava-ogr-middle #x10f1) (flava-ogr-end #x10f2) (flava-vi3-mai #x10f3) (flava-vi3-sno #x10f4) (flava-vi3-miners #x10f5) (flava-mai-rob #x10f6) (flava-mai-rob-top #x10f7) (flava-mai-mai #x10f8) (flava-mai-dar #x10f9) (flava-sno-battle #x10fa) (flava-sno-cave #x10fb) (flava-sno-fort #x10fc) (flava-sno-balls #x10fd) (flava-lav-middle #x10fe) (flava-lav-end #x10ff) (flava-cit-yellowsage #x1100) (flava-cit-redsage #x1101) (flava-cit-bluesage #x1102) (flava-cit-hub #x1103) (flava-fin-middle #x1104) (flava-fin-end #x1105) (flava-credits-middle #x1106) (flava-credits-end #x1107) (uk-english #x1110) (portuguese #x1111) (br-portuguese #x1112) (finnish #x1113) (swedish #x1114) (danish #x1115) (norwegian #x1116) (hungarian #x1117) (dutch #x1118) (catalan #x1119) (icelandic #x111a) (polish #x111b) (lithuanian #x111c) (scene-0 #x1200) (scene-255 #x12ff) (hint-0 #x1300) (hint-511 #x14ff) (speedrunner-mode #x1500) (cutscene-skips #x1501) (checkpoint-select #x1502) (speedrun-options-heading #x1503) (speedrun-options-warning #x1504) (speedrun-reset-current-run #x1505) (speedrun-new-full-game #x1506) ;; (speedrun-full-game-any #x1507) ;; (speedrun-full-game-100 #x1508) ;; (speedrun-full-game-nolts #x1509) ;; (speedrun-full-game-nofcs #x150a) ;; (speedrun-full-game-orbless #x150b) ;; (speedrun-full-game-all-flies #x150c) ;; (speedrun-full-game-all-orbs #x150d) (speedrun-new-individual-level #x150e) (speedrun-il-training #x150f) (speedrun-il-village1 #x1510) (speedrun-il-beach #x1511) (speedrun-il-jungle #x1512) (speedrun-il-misty #x1513) (speedrun-il-firecanyon #x1514) (speedrun-il-village2 #x1515) (speedrun-il-sunken #x1516) (speedrun-il-swamp #x1517) (speedrun-il-rolling #x1518) (speedrun-il-ogre #x1519) (speedrun-il-village3 #x151a) (speedrun-il-snow #x151b) (speedrun-il-cave #x151c) (speedrun-il-lavatube #x151d) (speedrun-il-citadel #x151e) (speedrun-new-cat-ext #x151f) (speedrun-new-game-plus #x1520) (speedrun-hub1-100 #x1521) (speedrun-hub2-100 #x1522) (speedrun-hub3-100 #x1523) (speedrun-all-cutscenes #x1524) ;; input options (input-options #x1600) (input-opts-select-controller #x1601) (input-opts-analog-deadzone #x1602) (input-opts-ignore-controller-win-focus #x1603) (input-opts-controller-led-reflect-hp #x1604) (input-opts-controller-led-reflect-eco #x1605) (input-opts-mouse-enable-camera #x1606) (input-opts-mouse-horizontal-sens #x1607) (input-opts-mouse-vertical-sens #x1608) (input-opts-mouse-enable-movement #x1609) (input-opts-binds-controller #x160a) (input-opts-binds-keyboard #x160b) (input-opts-binds-mouse #x160c) (input-opts-controller-opts #x160d) (input-opts-enable-kb #x160e) (input-opts-enable-mouse #x160f) (input-opts-mouse-opts #x1610) (input-opts-reassign-binds #x1611) (input-opts-generic-controller #x1612) (input-opts-auto-hide-cursor #x1613) (input-opts-binds-unset #x1614) (input-opts-binds-unknown #x1615) (progress-no-other-resolution-options #x1616) (input-opts-controller-led-reflect-heat #x1617) ;; GAME-TEXT-ID ENUM ENDS ) ;; DECOMP BEGINS ;; an individual string. (deftype game-text (structure) ((id text-id) (text string) ) :pack-me ) ;; A table of all strings. (deftype game-text-info (basic) ((length int32) (language-id int32) (group-name string) (data game-text :inline :dynamic) ) (:methods (lookup-text! (_type_ text-id symbol) string) ) ) ;; 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)) ;; og:preserve-this ;; NOTE - PC PORT difference ;; Partial translations are a thing that we should support. Parts of translating the game are intentionally made ;; difficult for normal translators due to not wanting to make all the strings public (or in the case of subtitles, ;; we straight up didn't have them yet) ;; ;; So to remedy this, we always load the english text as a fallback so that if there is only a partial translation ;; the UX won't be horrible with everything displaying as UNKNOWN. ;; ;; One of the reasons we didn't do this is because it makes it obvious which strings are remaining, ;; but there are better ways to keep track or check if strings are missing. (#when PC_PORT (kheap-alloc (define *fallback-text-heap* (new 'global 'kheap)) (* 48 1024)) ;; 48K heap, should be plenty (define *fallback-text* (the-as game-text-info #f))) (defun-extern print-game-text string font-context symbol int int float) ;; added (defun-debug text-id->string ((text text-id)) (enum->string text-id text) )