jak3: fix error with subtitle speaker names (#3832)

This commit is contained in:
Hat Kid
2025-01-07 11:33:05 +01:00
committed by GitHub
parent f883b075fd
commit e836f09212
15 changed files with 455 additions and 421 deletions
+11 -11
View File
@@ -131,17 +131,17 @@ const std::unordered_map<std::string, u16> jak3_speaker_name_to_enum_val = {
{"ottsel-veger", 33},
{"ottsel-tess", 34},
{"computer", 35},
{"krew", 36},
{"baron", 37},
{"scherr", 38},
{"arey", 39},
{"baldwin", 40},
{"schimpf", 41},
{"martinsen", 42},
{"phillips", 43},
{"yates", 44},
{"ottsel-voice-before-outro", 45},
{"ottsel-voice", 46},
{"ottsel-voice-before-outro", 36},
{"ottsel-voice", 37},
{"krew", 38},
{"baron", 39},
{"scherr", 40},
{"arey", 41},
{"baldwin", 42},
{"schimpf", 43},
{"martinsen", 44},
{"phillips", 45},
{"yates", 46},
};
GameSubtitlePackage read_json_files_v2(const GameSubtitleDefinitionFile& file_info) {
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -2,49 +2,51 @@
"cutscenes": {},
"other": {},
"speakers": {
"jak": "Jak",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"pecker": "Pecker",
"veger": "Count Veger",
"arey": "Daniel Arey",
"ashelin": "Ashelin",
"wastelander-male": "Wastelander",
"wastelander-female": "Wastelander",
"baldwin": "Eric Baldwin",
"baron": "Baron Praxis",
"citizen-female": "Citizen",
"citizen-male": "Citizen",
"marauder": "Marauder",
"computer": "Computer",
"damas": "Damas",
"darkjak": "Dark Jak",
"daxter": "Daxter",
"errol": "Errol",
"errol-hologram": "???",
"guard": "Freedom League Guard",
"guard": "Freedom Guard",
"guard-a": "Guard A",
"guard-b": "Guard B",
"jak": "Jak",
"jinx": "Jinx",
"keira": "Keira",
"kleiver": "Kleiver",
"krew": "Krew",
"marauder": "Marauder",
"martinsen": "Jason Martinsen",
"onin": "Onin",
"oracle": "Oracle",
"precursor": "Precursor",
"ottsel-dummy": "Ottsel Dummy",
"ottsel-leader": "Ottsel Leader",
"ottsel-surfer": "Ottsel Surfer",
"ottsel-veger": "Ottsel Veger",
"ottsel-tess": "Ottsel Tess",
"computer": "Computer",
"ottsel-veger": "Ottsel Veger",
"ottsel-voice": "Precursors",
"ottsel-voice-before-outro": "???",
"pecker": "Pecker",
"phillips": "Kion Phillips",
"precursor": "Precursor",
"samos": "Samos",
"scherr": "Josh Scherr",
"schimpf": "Adam Schimpf",
"seem": "Seem",
"sig": "Sig",
"tess": "Tess",
"torn": "Torn",
"veger": "Count Veger",
"vin": "Vin",
"krew": "Krew",
"baron": "Baron Praxis",
"scherr": "Josh Scherr",
"arey": "Daniel Arey",
"baldwin": "Eric Baldwin",
"schimpf": "Adam Schimpf",
"martinsen": "Jason Martinsen",
"phillips": "Kion Phillips",
"wastelander-female": "Wastelander",
"wastelander-male": "Wastelander",
"yates": "Jeremy Yates"
}
}
@@ -372,7 +372,7 @@ void OpenGLRenderer::init_bucket_renderers_jak3() {
init_bucket_renderer<ProgressRenderer>("hud-draw-hud-alpha", BucketCategory::OTHER,
BucketId::HUD_DRAW_HUD_ALPHA, 0x8000);
init_bucket_renderer<TextureUploadHandler>("tex-hud-pris2", BucketCategory::TEX,
BucketId::TEX_HUD_PRIS2, m_texture_animator);
BucketId::TEX_HUD_PRIS2, m_texture_animator, true);
init_bucket_renderer<ProgressRenderer>("hud-draw-pris2", BucketCategory::OTHER,
BucketId::HUD_DRAW_PRIS2, 0x8000);
init_bucket_renderer<ProgressRenderer>("progress", BucketCategory::OTHER, BucketId::BUCKET582,
+189 -189
View File
@@ -553,12 +553,12 @@
(set! (-> this slow-time) (- 1.0 (-> *setting-control* user-current slow-time)))
(let ((v1-3 (-> *setting-control* user-current)))
(when (or (!= (-> v1-3 contrast) 0.5) (!= (-> v1-3 brightness) 0.5))
; (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id debug-menu)
; )
; (setup-brightness-and-contrast this s4-0 (-> v1-3 brightness) (-> v1-3 contrast))
; (reset-display-gs-state *display* s4-0)
; )
(with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id debug-menu)
)
(setup-brightness-and-contrast this s4-0 (-> v1-3 brightness) (-> v1-3 contrast))
(reset-display-gs-state *display* s4-0)
)
)
)
(when (zero? (-> this count-down))
@@ -597,193 +597,193 @@
)
)
)
(when (and (-> *setting-control* user-current render) (>= (the-as uint 1) (-> this count-down)))
(when (and (get-horizontal-flip-flag this) (not (get-menu-mode this)))
; (with-dma-buffer-add-bucket ((s4-2 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id debug-no-zbuf1)
; )
; (fx-copy-buf s4-2)
; (blit-displays-work-method-15 this s4-2)
; (reset-display-gs-state *display* s4-2)
; )
)
; (when (logtest? (vu1-renderer-mask rn36) (-> *display* vu1-enable-user))
; (when (not *display-color-bars*)
; (with-dma-buffer-add-bucket ((s4-3 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id bucket567)
; )
; (dma-buffer-add-gs-set s4-3
; (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
; (alpha-1 (new 'static 'gs-alpha))
; (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1))
; (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
; (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
; (texflush 0)
; )
; (if (or (zero? *screen-shot-work*) (= (-> *screen-shot-work* count) -1))
; (blit-displays-work-method-13 this s4-3 0 6656 8)
; )
; (reset-display-gs-state *display* s4-3)
; )
; )
; )
)
(let ((f0-9 (-> this slow-time))
(a2-6 (-> *time-of-day-context* filter))
(s5-4 (new 'stack-no-clear 'vector))
)
(set-vector! s5-4 1.0 1.0 1.5 1.0)
(vector4-lerp! s5-4 s5-4 a2-6 f0-9)
(when (and (or (!= (-> s5-4 x) 1.0) (!= (-> s5-4 y) 1.0) (!= (-> s5-4 z) 1.0)) (not (get-menu-mode this)))
; (with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id tex-hud-hud-alpha)
; )
; (blit-displays-work-method-14 this s3-0 s5-4)
; (reset-display-gs-state *display* s3-0)
; )
)
)
; (when (and (-> *setting-control* user-current render) (>= (the-as uint 1) (-> this count-down)))
; (when (and (get-horizontal-flip-flag this) (not (get-menu-mode this)))
; (with-dma-buffer-add-bucket ((s4-2 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id debug-no-zbuf1)
; )
; (fx-copy-buf s4-2)
; (blit-displays-work-method-15 this s4-2)
; (reset-display-gs-state *display* s4-2)
; )
; )
; (when (logtest? (vu1-renderer-mask rn36) (-> *display* vu1-enable-user))
; (when (not *display-color-bars*)
; (with-dma-buffer-add-bucket ((s4-3 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id bucket567)
; )
; (dma-buffer-add-gs-set s4-3
; (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
; (alpha-1 (new 'static 'gs-alpha))
; (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1))
; (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
; (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
; (texflush 0)
; )
; (if (or (zero? *screen-shot-work*) (= (-> *screen-shot-work* count) -1))
; (blit-displays-work-method-13 this s4-3 0 6656 8)
; )
; (reset-display-gs-state *display* s4-3)
; )
; )
; )
; )
; (let ((f0-9 (-> this slow-time))
; (a2-6 (-> *time-of-day-context* filter))
; (s5-4 (new 'stack-no-clear 'vector))
; )
; (set-vector! s5-4 1.0 1.0 1.5 1.0)
; (vector4-lerp! s5-4 s5-4 a2-6 f0-9)
; (when (and (or (!= (-> s5-4 x) 1.0) (!= (-> s5-4 y) 1.0) (!= (-> s5-4 z) 1.0)) (not (get-menu-mode this)))
; (with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id tex-hud-hud-alpha)
; )
; (blit-displays-work-method-14 this s3-0 s5-4)
; (reset-display-gs-state *display* s3-0)
; )
; )
; )
(cond
((and (-> *setting-control* user-current render) (zero? (-> this count-down)))
; (with-dma-buffer-add-bucket ((s4-5 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id bucket3)
; )
; (dma-buffer-add-gs-set s4-5
; (dthe (new 'static 'gs-dthe))
; (prmodecont (new 'static 'gs-prmode-cont :ac #x1))
; (colclamp (new 'static 'gs-color-clamp :clamp #x1))
; (pabe 0)
; (texa (new 'static 'gs-texa :ta1 #x80))
; (texclut (new 'static 'gs-texclut :cbw #x4))
; (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
; (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
; (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
; (fogcol *fog-color*)
; (texflush 0)
; )
; (let* ((s0-0 *video-params*)
; (s1-0 (-> s0-0 display-fbp))
; (s3-1 (-> s0-0 display-sy))
; )
; (let ((s2-0 (* s3-1 2)))
; (dma-buffer-add-gs-set s4-5
; (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
; (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9))
; )
; (cond
; ((or (zero? (-> this zoom-blur-texels)) (or (= (-> this zoom-blur-alpha-target) 1.0) (paused?)))
; (let ((f0-14 (-> this slow-time))
; (f30-0 1.0)
; )
; (if (!= f0-14 1.0)
; (set! f30-0 (lerp 0.05 1.0 f0-14))
; )
; (set-display-gs-state s4-5 (-> s0-0 display-fbp) 640 s2-0 (shl #xff00 16) 0)
; (if (= f30-0 1.0)
; (blit-displays-work-method-9 this s4-5 416 s2-0 128)
; (blit-displays-work-method-10 this s4-5 416 s2-0 (the int (* 128.0 f30-0)))
; )
; )
; )
; (else
; (set-display-gs-state s4-5 38 512 416 (shl #xff00 16) 0)
; (dma-buffer-add-gs-set s4-5
; (tex0-1 (new 'static 'gs-tex0 :tbw #xa :tw #xa :th #x9 :tbp0 (* (-> s0-0 display-fbp) 32)))
; )
; (blit-displays-work-method-11 this s4-5 s2-0)
; (set-display-gs-state s4-5 s1-0 640 s2-0 (shl #xff00 16) 0)
; (dma-buffer-add-gs-set s4-5 (tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9)))
; (draw-zoom-blur this s4-5 s2-0)
; (dma-buffer-add-gs-set s4-5 (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9)))
; (blit-displays-work-method-9 this s4-5 416 s2-0 (the int (* 128.0 (-> this zoom-blur-alpha-current))))
; (when (or (!= (-> *setting-control* user-current letterbox) 0.0)
; (< (-> *display* base-clock frame-counter) (-> *game-info* letterbox-time))
; )
; (when (and (= (-> *setting-control* user-current aspect-ratio) 'aspect4x3)
; (or (zero? *screen-shot-work*) (= (-> *screen-shot-work* count) -1))
; )
; (let ((f0-24 (the-as float (if (< (-> *display* base-clock frame-counter) (-> *game-info* letterbox-time))
; 1.0
; (-> *setting-control* user-current letterbox)
; )
; )
; )
; (f1-15 (* 0.0024038462 (the float s2-0)))
; )
; (draw-letterbox this s4-5 f0-24 s2-0 f1-15)
; )
; )
; )
; )
; )
; )
; (when (!= (-> *setting-control* user-current scanlines) 0.0)
; (let ((v1-213 (the int (* 128.0 (-> *setting-control* user-current scanlines)))))
; (set! (-> this line-color)
; (logior (logand (-> this line-color) (the-as uint #xffffffff00ffffff)) (shr (shl v1-213 56) 32))
; )
; (dotimes (a0-120 15)
; (set! (-> this scan-colors a0-120 w) v1-213)
; )
; )
; (dma-buffer-add-gs-set s4-5
; (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
; (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
; (rgbaq (-> this line-color))
; )
; (dotimes (v1-219 (/ s3-1 32))
; (let ((a0-127 (the-as object (-> s4-5 base))))
; (set! (-> (the-as dma-gif-packet a0-127) dma-vif quad) (-> this line-tmpl dma-vif quad))
; (set! (-> (the-as dma-gif-packet a0-127) quad 1) (-> this line-tmpl quad 1))
; )
; (&+! (-> s4-5 base) 32)
; (dotimes (a0-130 16)
; (let ((a1-115 (the-as object (-> s4-5 base)))
; (a2-25 (* (+ (* v1-219 64) (* a0-130 4)) 16))
; )
; (set-vector! (-> (the-as (inline-array vector4w) a1-115) 0) 0 a2-25 0 0)
; (set-vector! (-> (the-as (inline-array vector4w) a1-115) 1) #x2800 a2-25 0 0)
; (set-vector! (-> (the-as (inline-array vector4w) a1-115) 2) 0 (+ a2-25 16) 0 0)
; (set-vector! (-> (the-as (inline-array vector4w) a1-115) 3) #x2800 (+ a2-25 16) 0 0)
; )
; (&+! (-> s4-5 base) 64)
; )
; )
; (dma-buffer-add-gs-set s4-5 (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1)))
; (let ((v1-225 (the-as object (-> s4-5 base))))
; (set! (-> (the-as dma-gif-packet v1-225) dma-vif quad) (-> this scan-tmpl dma-vif quad))
; (set! (-> (the-as dma-gif-packet v1-225) quad 1) (-> this scan-tmpl quad 1))
; )
; (&+! (-> s4-5 base) 32)
; (let ((a0-142 (* (-> this scanline) 32)))
; (dotimes (v1-229 15)
; (let ((a1-126 (the-as object (-> s4-5 base))))
; (set! (-> (the-as (inline-array vector4w) a1-126) 0 quad) (-> this scan-colors v1-229 quad))
; (set-vector! (-> (the-as (inline-array vector4w) a1-126) 1) 0 (the-as int a0-142) 0 0)
; (set-vector! (-> (the-as (inline-array vector4w) a1-126) 2) #x2800 (the-as int a0-142) 0 0)
; (let ((a0-143 (+ a0-142 16)))
; (set-vector! (-> (the-as (inline-array vector4w) a1-126) 3) 0 (the-as int a0-143) 0 0)
; (set-vector! (-> (the-as (inline-array vector4w) a1-126) 4) #x2800 (the-as int a0-143) 0 0)
; (set! a0-142 (+ a0-143 16))
; )
; )
; (&+! (-> s4-5 base) 80)
; )
; )
; (if (not (paused?))
; (set! (-> this scanline) (the-as uint (mod (the-as int (+ (-> this scanline) 4)) s3-1)))
; )
; )
; )
; (reset-display-gs-state *display* s4-5)
; )
(with-dma-buffer-add-bucket ((s4-5 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id bucket3)
)
(dma-buffer-add-gs-set s4-5
(dthe (new 'static 'gs-dthe))
(prmodecont (new 'static 'gs-prmode-cont :ac #x1))
(colclamp (new 'static 'gs-color-clamp :clamp #x1))
(pabe 0)
(texa (new 'static 'gs-texa :ta1 #x80))
(texclut (new 'static 'gs-texclut :cbw #x4))
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(fogcol *fog-color*)
(texflush 0)
)
(let* ((s0-0 *video-params*)
(s1-0 (-> s0-0 display-fbp))
(s3-1 (-> s0-0 display-sy))
)
(let ((s2-0 (* s3-1 2)))
(dma-buffer-add-gs-set s4-5
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9))
)
(cond
((or (zero? (-> this zoom-blur-texels)) (or (= (-> this zoom-blur-alpha-target) 1.0) (paused?)))
(let ((f0-14 (-> this slow-time))
(f30-0 1.0)
)
(if (!= f0-14 1.0)
(set! f30-0 (lerp 0.05 1.0 f0-14))
)
(set-display-gs-state s4-5 (-> s0-0 display-fbp) 640 s2-0 (shl #xff00 16) 0)
(if (= f30-0 1.0)
(blit-displays-work-method-9 this s4-5 416 s2-0 128)
(blit-displays-work-method-10 this s4-5 416 s2-0 (the int (* 128.0 f30-0)))
)
)
)
(else
(set-display-gs-state s4-5 38 512 416 (shl #xff00 16) 0)
(dma-buffer-add-gs-set s4-5
(tex0-1 (new 'static 'gs-tex0 :tbw #xa :tw #xa :th #x9 :tbp0 (* (-> s0-0 display-fbp) 32)))
)
(blit-displays-work-method-11 this s4-5 s2-0)
(set-display-gs-state s4-5 s1-0 640 s2-0 (shl #xff00 16) 0)
(dma-buffer-add-gs-set s4-5 (tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9)))
(draw-zoom-blur this s4-5 s2-0)
(dma-buffer-add-gs-set s4-5 (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9)))
(blit-displays-work-method-9 this s4-5 416 s2-0 (the int (* 128.0 (-> this zoom-blur-alpha-current))))
(when (or (!= (-> *setting-control* user-current letterbox) 0.0)
(< (-> *display* base-clock frame-counter) (-> *game-info* letterbox-time))
)
(when (and (= (-> *setting-control* user-current aspect-ratio) 'aspect4x3)
(or (zero? *screen-shot-work*) (= (-> *screen-shot-work* count) -1))
)
(let ((f0-24 (the-as float (if (< (-> *display* base-clock frame-counter) (-> *game-info* letterbox-time))
1.0
(-> *setting-control* user-current letterbox)
)
)
)
(f1-15 (* 0.0024038462 (the float s2-0)))
)
(draw-letterbox this s4-5 f0-24 s2-0 f1-15)
)
)
)
)
)
)
(when (!= (-> *setting-control* user-current scanlines) 0.0)
(let ((v1-213 (the int (* 128.0 (-> *setting-control* user-current scanlines)))))
(set! (-> this line-color)
(logior (logand (-> this line-color) (the-as uint #xffffffff00ffffff)) (shr (shl v1-213 56) 32))
)
(dotimes (a0-120 15)
(set! (-> this scan-colors a0-120 w) v1-213)
)
)
(dma-buffer-add-gs-set s4-5
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
(rgbaq (-> this line-color))
)
(dotimes (v1-219 (/ s3-1 32))
(let ((a0-127 (the-as object (-> s4-5 base))))
(set! (-> (the-as dma-gif-packet a0-127) dma-vif quad) (-> this line-tmpl dma-vif quad))
(set! (-> (the-as dma-gif-packet a0-127) quad 1) (-> this line-tmpl quad 1))
)
(&+! (-> s4-5 base) 32)
(dotimes (a0-130 16)
(let ((a1-115 (the-as object (-> s4-5 base)))
(a2-25 (* (+ (* v1-219 64) (* a0-130 4)) 16))
)
(set-vector! (-> (the-as (inline-array vector4w) a1-115) 0) 0 a2-25 0 0)
(set-vector! (-> (the-as (inline-array vector4w) a1-115) 1) #x2800 a2-25 0 0)
(set-vector! (-> (the-as (inline-array vector4w) a1-115) 2) 0 (+ a2-25 16) 0 0)
(set-vector! (-> (the-as (inline-array vector4w) a1-115) 3) #x2800 (+ a2-25 16) 0 0)
)
(&+! (-> s4-5 base) 64)
)
)
(dma-buffer-add-gs-set s4-5 (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1)))
(let ((v1-225 (the-as object (-> s4-5 base))))
(set! (-> (the-as dma-gif-packet v1-225) dma-vif quad) (-> this scan-tmpl dma-vif quad))
(set! (-> (the-as dma-gif-packet v1-225) quad 1) (-> this scan-tmpl quad 1))
)
(&+! (-> s4-5 base) 32)
(let ((a0-142 (* (-> this scanline) 32)))
(dotimes (v1-229 15)
(let ((a1-126 (the-as object (-> s4-5 base))))
(set! (-> (the-as (inline-array vector4w) a1-126) 0 quad) (-> this scan-colors v1-229 quad))
(set-vector! (-> (the-as (inline-array vector4w) a1-126) 1) 0 (the-as int a0-142) 0 0)
(set-vector! (-> (the-as (inline-array vector4w) a1-126) 2) #x2800 (the-as int a0-142) 0 0)
(let ((a0-143 (+ a0-142 16)))
(set-vector! (-> (the-as (inline-array vector4w) a1-126) 3) 0 (the-as int a0-143) 0 0)
(set-vector! (-> (the-as (inline-array vector4w) a1-126) 4) #x2800 (the-as int a0-143) 0 0)
(set! a0-142 (+ a0-143 16))
)
)
(&+! (-> s4-5 base) 80)
)
)
(if (not (paused?))
(set! (-> this scanline) (the-as uint (mod (the-as int (+ (-> this scanline) 4)) s3-1)))
)
)
)
(reset-display-gs-state *display* s4-5)
)
)
(else
; (with-dma-buffer-add-bucket ((s4-6 (-> *display* frames (-> *display* on-screen) global-buf))
; (bucket-id bucket3)
; )
; (reset-display-gs-state *display* s4-6)
; )
(with-dma-buffer-add-bucket ((s4-6 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id bucket3)
)
(reset-display-gs-state *display* s4-6)
)
)
)
(when (nonzero? (-> this count-down))
+12
View File
@@ -52,6 +52,18 @@
gun-red-1 gun-yellow-1 gun-blue-1 gun-dark-1
gun-red-2 gun-yellow-2 gun-blue-2 gun-dark-2
gun-red-3 gun-yellow-3 gun-blue-3 gun-dark-3))
(logior! (-> *game-info* debug-features)
(game-feature
jakc
board board-launch board-zap
darkeco
darkjak darkjak darkjak-smack darkjak-bomb0 darkjak-bomb1
lighteco
lightjak lightjak-regen lightjak-swoop lightjak-freeze lightjak-shield
gun
gun-red-1 gun-yellow-1 gun-blue-1 gun-dark-1
gun-red-2 gun-yellow-2 gun-blue-2 gun-dark-2
gun-red-3 gun-yellow-3 gun-blue-3 gun-dark-3))
(logior! (-> *game-info* vehicles)
(game-vehicles
v-turtle