diff --git a/src/fixed/lang/en.h b/src/fixed/lang/en.h new file mode 100644 index 0000000..fb145de --- /dev/null +++ b/src/fixed/lang/en.h @@ -0,0 +1,393 @@ +#ifndef H_LANG_EN +#define H_LANG_EN + +// Thanks: Nancy Charlton, Vague Rant + +const char* const STR_EN[STR_MAX] = { "" + , "Thanks for playing the" + , "OpenLara alpha demo!" + , "" + , "follow the project news:" + , "discord.gg/EF8JaQB" + , "t.me/openlara" + , "No SRAM or FRAM" + , "Saves will be lost" + , "after GBA reboot!" +// help + , "Loading..." + , "%s@@@" + "KILLS %d@@" + "PICKUPS %d@@" + "SECRETS %d of %d@@" + "TIME TAKEN %s" + , "Saving game..." + , "Saving done!" + , "SAVING ERROR!" + , "YES" + , "NO" + , "Off" + , "On" + , "OK" + , "Side-By-Side" + , "Anaglyph" + , "Split Screen" + , "VR" + , "Low" + , "Medium" + , "High" + , STR_LANGUAGES + , "Apply" + , "Gamepad 1" + , "Gamepad 2" + , "Gamepad 3" + , "Gamepad 4" + , "Not Ready" + , "Player 1" + , "Player 2" + , "Press Any Key" + , "%s - Select" + , "%s - Go Back" +// inventory pages + , "OPTIONS" + , "INVENTORY" + , "ITEMS" +// save game page + , "Save Game?" + , "Current Position" +// inventory option + , "Game" + , "Map" + , "Compass" + , "Statistics" + , "Lara's Home" + , "Graphics" //, "Detail Levels" + , "Sound" + , "Controls" + , "Gamma" +// passport menu + , "Load Game" + , "Save Game" + , "New Game" + , "Restart Level" + , "Exit to Title" + , "Exit Game" + , "Select Level" +// detail options + , "Select Detail" + , "Gamma" + , "Show FPS" + , "Filtering" + , "Lighting" + , "Shadows" + , "Water" + , "VSync" + , "Stereo" + , "Simple Items" + , "Resolution" + , STR_SCALE +// sound options + , "Set Volumes" + , "Reverberation" + , "Subtitles" + , "Language" + , "SFX" + , "Music" +// controls options + , "Set Controls" + , "Keyboard" + , "Gamepad" + , "Rumble" + , "Retargeting" + , "Multi-aiming" + // controls + , "Run" + , "Back" + , "Right" + , "Left" + , "Walk" + , "Jump" + , "Action" + , "Weapon" + , "Look" + , "Roll" + , "Inventory" + , "Pause" + // control keys + , "Up" + , "Down" + , "Right" + , "Left" + , "A" + , "B" + , "L" + , "R" + , "Select" + , "Start" + , "L+R" + , "L+A" + , "L+B" +// inventory items + , "Unknown" + , "Explosive" + , "Pistols" + , "Shotgun" + , "Magnums" + , "Uzis" + , "Pistol Clips" + , "Shotgun Shells" + , "Magnum Clips" + , "Uzi Clips" + , "Small Medi Pack" + , "Large Medi Pack" + , "Lead Bar" + , "Scion" +// keys + , "Key" + , "Silver Key" + , "Rusty Key" + , "Gold Key" + , "Sapphire Key" + , "Neptune Key" + , "Atlas Key" + , "Damocles Key" + , "Thor Key" + , "Ornate Key" +// puzzles + , "Puzzle" + , "Gold Idol" + , "Gold Bar" + , "Machine Cog" + , "Fuse" + , "Ankh" + , "Eye of Horus" + , "Seal of Anubis" + , "Scarab" + , "Pyramid Key" +#ifdef USE_SUBTITLES +// TR1 subtitles + /* CAFE */ , + "[43500]What's a man gotta do to@get that kinda attention from ye?" + "[47500]It's hard to say exactly,@but you seem to be doing fine." + "[50000]Well, great. Though, truth is,@it ain't me that wants ye." + "[54500]No?" + "[55000]No. Miss Jacqueline Natla does,@from Natla Technologies." + "[59000]You know, creator of@all things bright and beautiful?" + "[64500]Seal it, Larson." + "[66000]Ma'am." + "[68000]Feast your eyes on this, Lara." + "[70500]How does that make your wallet rumble?" + "[73500]I'm sorry. I only play for sport." + "[76000]Then you'll like a big park." + "[78000]Peru. Vast mountain ranges to cover.@Sheer walls of ice. Rocky crags. Savage winds." + "[87500]And there's this little trinket:@an age old artefact of mystical powers" + "[92500]buried in the unfound tomb of Qualopec." + "[96000]That's my interest." + "[98000]You could leave tomorrow.@Are you busy tomorrow?" + /* LIFT */ , + "[49000]Relocated now to St. Francis' Folly, new temptations torment me." + "[53500]Rumour amongst my fellow brothers is that entombed@beneath our monastery lies the body of Tihocan," + "[60000]one of the three legendary rulers of@the lost continent, Atlantis," + "[64500]and that within lies his piece@of the Atlantean Scion." + "[68000]The pendant divided and shared between the three rulers@" + "[72500]which curbs tremendous powers.@Powers beyond the creator himself." + "[79000]My toes sweat at such possibilities@lying so close to my mortal self." + "[85500]Each night, I bid myself rid of these@fantasies, but it is indeed a test." + "[92000]" + "[93500]Pierre. Tsk. You litterbug." + /* CANYON */ , + "[13500]You just pulled the tough end of a wishbone." + "[16500]Howdy." + "[17500]Afternoon." + "[20000]Left Larson sucking wind then, eh?" + "[22500]If that is the phrase." + "[24000]Well, your little vacation riot's over now." + "[27000]Time to give back what you've hijacked off me." + "[30000]Let's try the lunch-box." + "[32000]" + "[42500]Well? Kill her!" + "[45000]Hey!" + "[48000]" + "[50500]You morons!" + "[53000]" + "[62500]Let's go." + "[65000]" + "[136000]What the heck was that?" + "[138000]What?" + "[138500]That-a-way." + "[140500]Probably just a fish." + "[142500]That's some fish, kid." + "[145000]Man, you have got to learn to chill.@I'm going back inside. You coming?" + "[152000]" + "[158000]Steady..." + "[160000]Here she goes." + "[161500]You ready yet?" + /* PRISON */ , + "[00001]You can't do this!" + "[01500]We condemn you, Natla of Atlantis, for your crimes." + "[06000]For the flagrant misuse of your powers@and for robbing us of our..." + "[11500]You can't! I..." + "[12500]Breaking the free bond of consent that our@people are ruled and secured under," + "[18500]and invading Tihocan and myself with our army." + "[23500]Our warriors emptied from our pyramid" + "[27000]so that you could use the pyramid - its powers@of creation - for your own mindless destruction." + "[33500]Mindless!? Look at you!" + "[35500]Neither of you have one squirt of@inventive juice in your heads." + "[40500]Wasters!" + "[41500]Let's just do it." + "[44000]Tihocan!" + "[45000]You used the sacramental place as a source@of individual pleasure," + "[49500]as some freak factory." + "[51000]They're survivalists. A new generation." + "[54000]A slaughter heap now." + "[56000]And you. We're going to lock you in limbo." + "[60000]Make your veins, heart, feet," + "[64000]and that diseased brain stick solid with frozen blood." + "[70000]Greet your eternal unrest, Natla." + "[73000]You won't rest either, or your@damned continent of Atlantis!" + /* 22 */ , + "[04000]Back again?" + "[05500]And you - for a grand re-opening, I assume." + "[09500]Evolution's in a rut - natural selection at an all time low..." + "[13500]shipping out fresh meat will incite territorial rages again" + "[17500] - will strengthen and advance us..." + "[20500]Even create new breeds." + "[22500]Kind of evolution on steroids, then." + "[24500]A kick in the pants...@those runts Qualopec and Tihocan had no idea" + "[29500] - the cataclysm of Atlantis struck a race of langouring wimps..." + "[33500]plummeted them to the very basics of survival again..." + "[37000]It shouldn't happen like that." + "[39000]Or like this." + "[40000]Hatching commences in 15 seconds." + "[43000]Too late for abortions now!" + "[45000]Not without the heart of the operation!" + "[47000]Noooo!" + "[50000]TEN" + "[54000]FIVE..." + "[55500]4...3...2..." + "[60000]ONE..." + /* 23 */ , + "[00001]Well, you have my total attention now" + "[02500]- I'm not quite sure if I've got yours, though." + "[05000]Hello?" + "[06000]I'll heel an' hide ye to a barn door yit." + "[09000]Of course." + "[10000]Ye and that drivelin' piece of the Scion." + "[13000]Ye want to keep it so bad, I'll harness it right up y..." + "[17000]Wait... we're talking about the artifact here?" + "[20000]Damn straight we are ... right up y ..." + "[22000]Hold on - I'm sorry" + "[24000]- this piece, you say - where's the rest?" + "[26500]Ms. Natla put Pierre Dupont on that trail." + "[29500]And where is that?" + "[30500]Hah. Ye ain't fast enough fer him." + "[34000]So you think all this talking is just holding me up?" + "[37000]I don't know where his little jackrabbit-frog-legs are runnin' him to." + "[42000]You'll have to ask Ms. Natla." + "[46000]" + "[51000]Thank you. I will." + /* 24 */ , "" + /* 25 */ , + "[03500]Here lies Tihocan" + "[05000]...one of the two just rulers of Atlantis..." + "[10000]Who even after the curse of the continent..." + "[13000]...had tried to keep rule here in these barren other-lands..." + "[19000]He died without child and his knowledge has no heritage..." + "[25500]Look over us kindly, Tihocan." + /* 26 */ , "Welcome to my home!@I'll take you on a guided tour." + /* 27 */ , "Use the directional keys to go into the music room." + /* 28 */ , "OK. Let's do some tumbling.@Press the jump button." + /* 29 */ , "Now press it again and quickly press one of@the directions and I'll jump that way." + /* 30 */ , "Ah, the main hall.@Sorry about the crates, I'm having some things put@ into storage and the delivery people haven't been yet." + /* 31 */ , "Run up to a crate, and while still pressing forward,@press action, and I'll vault up onto it." + /* 32 */ , "This used to be the ballroom, but I've@converted it into my own personal gym.@What do you think?@Well, let's do some exercises." + /* 33 */ , "I don't actually run everywhere.@When I want to be careful, I walk.@Hold down the walk button, and walk to the white line." + /* 34 */ , "With the walk button down, I won't fall off even if you try to make me.@Go on, try it." + /* 35 */ , "If you want look around, press and hold the look button.@Then press in the direction you want to look." + /* 36 */ , "If a jump is too far for me, I can grab the ledge and save myself@from a nasty fall. Walk to the edge with the white line until I@won't go any further. Then press jump, immediately followed by@forward and while I'm in the air, press and hold the action button." + /* 37 */ , "Press forward and I'll climb up." + /* 38 */ , "If I do a running jump, I can make a jump like that, no problem." + /* 39 */ , "Walk to the edge with the white line until I stop.@Then let go of walk and tap backwards to give me a run up.@Press forward, and almost immediately press and hold the jump button.@I won't actually jump until the last minute." + /* 40 */ , "Right. This is a really big one.@So do a running jump exactly as before except while I'm in the air@press and hold the action button to make me grab the ledge." + /* 41 */ , "Nice." + /* 42 */ , "Try to vault up here.@Press forward and hold action." + /* 43 */ , "I can't climb up because the gap is too small.@But press right and I'll shimmy sideways@until there is room, then press forward." + /* 44 */ , "Great!@If there is a long drop and I don't want to@hurt myself jumping off, I can let myself down carefully." + /* 45 */ , "Tap backwards, and I'll jump off backwards.@Immediately press and hold the action button,@and I'll grab the ledge on the way down." + /* 46 */ , "Then let go." + /* 47 */ , "Let's go for a swim." + /* 48 */ , "The jump button and the directions@move me around underwater." + /* 49 */ , "Ah! Air!@Just use forward and left and right@to manoeuvre around on the surface.@Press jump to dive down for another swim about.@Or go to the edge and press action to climb out." + /* 50 */ , "Right. Now I'd better take off these wet clothes." + /* 51 */ , "Say cheese!" + /* 52 */ , "Ain't nothin' personal." + /* 53 */ , "I still git a pain in my brain from ye.@An' it's tellin' me funny ideas now.@Like to shoot you to hell!" + /* 54 */ , "You can't bump off me and my brood so easy, Lara." + /* 55 */ , "A leetle late for ze prize giving - non?@Still, it is ze taking-part wheech counts." + /* 56 */ , "You firin' at me?@You firin' at me, huh?@Ain't nobody else here, you must be firin' at me!" +#endif +// TR1 levels + , "Lara's Home" + , "Caves" + , "City of Vilcabamba" + , "Lost Valley" + , "Tomb of Qualopec" + , "St. Francis' Folly" + , "Colosseum" + , "Palace Midas" + , "The Cistern" + , "Tomb of Tihocan" + , "City of Khamoon" + , "Obelisk of Khamoon" + , "Sanctuary of the Scion" + , "Natla's Mines" + , "Atlantis" + , "The Great Pyramid" + , "Return to Egypt" + , "Temple of the Cat" + , "Atlantean Stronghold" + , "The Hive" +// TR2 levels + , "Lara's Home" + , "The Great Wall" + , "Venice" + , "Bartoli's Hideout" + , "Opera House" + , "Offshore Rig" + , "Diving Area" + , "40 Fathoms" + , "Wreck of the Maria Doria" + , "Living Quarters" + , "The Deck" + , "Tibetan Foothills" + , "Barkhang Monastery" + , "Catacombs of the Talion" + , "Ice Palace" + , "Temple of Xian" + , "Floating Islands" + , "The Dragon's Lair" + , "Home Sweet Home" +// TR3 levels + , "Lara's House" + , "Jungle" + , "Temple Ruins" + , "The River Ganges" + , "Caves Of Kaliya" + , "Coastal Village" + , "Crash Site" + , "Madubu Gorge" + , "Temple Of Puna" + , "Thames Wharf" + , "Aldwych" + , "Lud's Gate" + , "City" + , "Nevada Desert" + , "High Security Compound" + , "Area 51" + , "Antarctica" + , "RX-Tech Mines" + , "Lost City Of Tinnos" + , "Meteorite Cavern" + , "All Hallows" +}; + +#endif \ No newline at end of file diff --git a/src/platform/gba/main.cpp b/src/platform/gba/main.cpp index 416b290..9778879 100644 --- a/src/platform/gba/main.cpp +++ b/src/platform/gba/main.cpp @@ -207,7 +207,7 @@ EWRAM_DATA int32 fpsCounter = 0; #define GPIO_RUMBLE_CONTROL (*(vu16*)0x80000C8) #define GPIO_RUMBLE_MASK (1 << 3) - #define CART_RUMBLE_TICKS 3 + #define CART_RUMBLE_TICKS 6 EWRAM_DATA int32 cartRumbleTick = 0; @@ -228,11 +228,16 @@ EWRAM_DATA int32 fpsCounter = 0; } } - void rumbleUpdate() + void rumbleUpdate(int32 frames) { - if (!cartRumbleTick || --cartRumbleTick) + if (!cartRumbleTick) return; - rumbleSet(false); + + cartRumbleTick -= frames; + + if (cartRumbleTick <= 0) { + rumbleSet(false); + } } void osJoyVibrate(int32 index, int32 L, int32 R) @@ -826,8 +831,6 @@ int main(void) { while (1) { - rumbleUpdate(); - { // input keys = 0; key_poll(); @@ -851,6 +854,8 @@ int main(void) { continue; } + rumbleUpdate(delta); + lastFrameIndex = frame; gameUpdate(delta);