1
0
mirror of synced 2025-02-24 06:03:21 +01:00

Added more info about the game and config on startup.

Game database now includes release date, system colour and native resolution.
This commit is contained in:
Rolel 2024-12-31 16:19:20 +01:00
parent 0612e4eeae
commit 81a47dd9ea
3 changed files with 237 additions and 28 deletions

View File

@ -15,6 +15,30 @@ FILE *configFile = NULL;
#define CONFIG_PATH "lindbergh.conf" #define CONFIG_PATH "lindbergh.conf"
#define MAX_LINE_LENGTH 1024 #define MAX_LINE_LENGTH 1024
const char* LindbergColourStrings [] = {
"Lindbergh Yellow",
"Lindbergh Red",
"Lindbergh Blue",
"Lindbergh Silver",
"Lindbergh RedEX"
};
const char* GameRegionStrings [] = {
"Japan",
"US",
"Export"
};
const char* GpuTypeStrings [] = {
"Auto Detection",
"NVIDIA",
"AMD",
"ATI",
"INTEL",
"Unknown",
"ERROR_GPU"
};
static char *getNextToken(char *buffer, char *seperator, char **saveptr) static char *getNextToken(char *buffer, char *seperator, char **saveptr)
{ {
char *token = strtok_r(buffer, seperator, saveptr); char *token = strtok_r(buffer, seperator, saveptr);
@ -59,6 +83,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "The House of the Dead 4 Rev A"; config.gameTitle = "The House of the Dead 4 Rev A";
config.gameID = "SBLC"; config.gameID = "SBLC";
config.gameDVP = "DVP-0003A"; config.gameDVP = "DVP-0003A";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -71,6 +97,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "The House of the Dead 4 Rev B"; config.gameTitle = "The House of the Dead 4 Rev B";
config.gameID = "SBLC"; config.gameID = "SBLC";
config.gameDVP = "DVP-0003B"; config.gameDVP = "DVP-0003B";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -83,6 +111,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "The House of the Dead 4 Rev C"; config.gameTitle = "The House of the Dead 4 Rev C";
config.gameID = "SBLC"; config.gameID = "SBLC";
config.gameDVP = "DVP-0003C"; config.gameDVP = "DVP-0003C";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -96,6 +126,8 @@ static int detectGame(uint32_t elf_crc)
config.emulateRideboard = 1; config.emulateRideboard = 1;
config.gameID = "SBLS"; config.gameID = "SBLS";
config.gameDVP = "DVP-0010"; config.gameDVP = "DVP-0010";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.width = 1024; config.width = 1024;
@ -109,7 +141,10 @@ static int detectGame(uint32_t elf_crc)
{ {
config.gameTitle = "The House of the Dead 4 Special Rev B"; config.gameTitle = "The House of the Dead 4 Special Rev B";
config.emulateRideboard = 1; config.emulateRideboard = 1;
config.gameID = "SBLS";
config.gameDVP = "DVP-0010B"; config.gameDVP = "DVP-0010B";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.width = 1024; config.width = 1024;
@ -122,11 +157,13 @@ static int detectGame(uint32_t elf_crc)
case THE_HOUSE_OF_THE_DEAD_EX_TEST: case THE_HOUSE_OF_THE_DEAD_EX_TEST:
{ {
config.gameTitle = "The House of the Dead EX"; config.gameTitle = "Ai Sareruyori Ai Shitai: The House of the Dead EX";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameDVP = "DVP-0063";
config.gameID = "SBRC"; config.gameID = "SBRC";
config.gameDVP = "DVP-0063";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
return 0; return 0;
} }
break; break;
@ -138,6 +175,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Outrun 2 SP SDX Rev A"; config.gameTitle = "Outrun 2 SP SDX Rev A";
config.gameDVP = "DVP-0015A"; config.gameDVP = "DVP-0015A";
config.gameID = "SBMB"; config.gameID = "SBMB";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.emulateDriveboard = 1; config.emulateDriveboard = 1;
config.emulateMotionboard = 1; config.emulateMotionboard = 1;
config.gameStatus = WORKING; config.gameStatus = WORKING;
@ -152,6 +191,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Outrun 2 SP SDX"; config.gameTitle = "Outrun 2 SP SDX";
config.gameDVP = "DVP-0015"; config.gameDVP = "DVP-0015";
config.gameID = "SBMB"; config.gameID = "SBMB";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.emulateDriveboard = 1; config.emulateDriveboard = 1;
config.emulateMotionboard = 1; config.emulateMotionboard = 1;
config.gameStatus = WORKING; config.gameStatus = WORKING;
@ -165,6 +206,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5"; config.gameTitle = "Virtua Fighter 5";
config.gameDVP = "DVP-0008"; config.gameDVP = "DVP-0008";
config.gameID = "SBLM"; config.gameID = "SBLM";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -176,6 +219,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Rev A"; config.gameTitle = "Virtua Fighter 5 Rev A";
config.gameDVP = "DVP-0008A"; config.gameDVP = "DVP-0008A";
config.gameID = "SBLM"; config.gameID = "SBLM";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -187,6 +232,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Rev B"; config.gameTitle = "Virtua Fighter 5 Rev B";
config.gameDVP = "DVP-0008B"; config.gameDVP = "DVP-0008B";
config.gameID = "SBLM"; config.gameID = "SBLM";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -198,6 +245,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Rev E (Public Version C)"; config.gameTitle = "Virtua Fighter 5 Rev E (Public Version C)";
config.gameDVP = "DVP-0008E"; config.gameDVP = "DVP-0008E";
config.gameID = "SBLM"; config.gameID = "SBLM";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -209,6 +258,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Export"; config.gameTitle = "Virtua Fighter 5 Export";
config.gameDVP = "DVP-0043"; config.gameDVP = "DVP-0043";
config.gameID = "SBLM"; config.gameID = "SBLM";
config.gameReleaseYear = "2005";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -220,6 +271,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 R"; config.gameTitle = "Virtua Fighter 5 R";
config.gameDVP = "DVP-XXXX"; config.gameDVP = "DVP-XXXX";
config.gameID = "SBQU"; config.gameID = "SBQU";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -231,6 +284,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 R Rev D"; config.gameTitle = "Virtua Fighter 5 R Rev D";
config.gameDVP = "DVP-XXXX"; config.gameDVP = "DVP-XXXX";
config.gameID = "SBQU"; config.gameID = "SBQU";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -242,6 +297,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 R Rev G"; config.gameTitle = "Virtua Fighter 5 R Rev G";
config.gameDVP = "DVP-XXXX"; config.gameDVP = "DVP-XXXX";
config.gameID = "SBQU"; config.gameID = "SBQU";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = FIGHTING; config.gameType = FIGHTING;
return 0; return 0;
@ -253,6 +310,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Final Showdown"; config.gameTitle = "Virtua Fighter 5 Final Showdown";
config.gameDVP = "DVP-SBUV"; config.gameDVP = "DVP-SBUV";
config.gameID = "SBUV"; config.gameID = "SBUV";
config.gameReleaseYear = "2010";
config.gameNativeResolutions = "";
config.gameType = FIGHTING; config.gameType = FIGHTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -264,6 +323,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Final Showdown REV A"; config.gameTitle = "Virtua Fighter 5 Final Showdown REV A";
config.gameDVP = "DVP-5019A"; config.gameDVP = "DVP-5019A";
config.gameID = "SBUV"; config.gameID = "SBUV";
config.gameReleaseYear = "2010";
config.gameNativeResolutions = "";
config.gameType = FIGHTING; config.gameType = FIGHTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -275,6 +336,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Final Showdown REV B"; config.gameTitle = "Virtua Fighter 5 Final Showdown REV B";
config.gameDVP = "DVP-5019B"; config.gameDVP = "DVP-5019B";
config.gameID = "SBUV"; config.gameID = "SBUV";
config.gameReleaseYear = "2010";
config.gameNativeResolutions = "";
config.gameType = FIGHTING; config.gameType = FIGHTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -286,6 +349,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Fighter 5 Final Showdown REV B ver 6.0000"; config.gameTitle = "Virtua Fighter 5 Final Showdown REV B ver 6.0000";
config.gameDVP = "DVP-5020"; config.gameDVP = "DVP-5020";
config.gameID = "SBUV"; config.gameID = "SBUV";
config.gameReleaseYear = "2010";
config.gameNativeResolutions = "";
config.gameType = FIGHTING; config.gameType = FIGHTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -297,6 +362,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Let's Go Jungle! Lost on the Island of Spice!"; config.gameTitle = "Let's Go Jungle! Lost on the Island of Spice!";
config.gameDVP = "DVP-0011"; config.gameDVP = "DVP-0011";
config.gameID = "SBLU"; config.gameID = "SBLU";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -309,6 +376,8 @@ static int detectGame(uint32_t elf_crc)
config.emulateRideboard = 1; config.emulateRideboard = 1;
config.gameID = "SBNR"; config.gameID = "SBNR";
config.gameDVP = "DVP-0036"; config.gameDVP = "DVP-0036";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -320,6 +389,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "After Burner Climax"; config.gameTitle = "After Burner Climax";
config.gameDVP = "DVP-0009"; config.gameDVP = "DVP-0009";
config.gameID = "SBLR"; config.gameID = "SBLR";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
config.gameType = ABC; config.gameType = ABC;
@ -332,6 +403,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "After Burner Climax Rev A"; config.gameTitle = "After Burner Climax Rev A";
config.gameDVP = "DVP-0009A"; config.gameDVP = "DVP-0009A";
config.gameID = "SBLR"; config.gameID = "SBLR";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
config.gameType = ABC; config.gameType = ABC;
@ -344,6 +417,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "After Burner Climax Rev B"; config.gameTitle = "After Burner Climax Rev B";
config.gameDVP = "DVP-0009B"; config.gameDVP = "DVP-0009B";
config.gameID = "SBLR"; config.gameID = "SBLR";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
config.gameType = ABC; config.gameType = ABC;
@ -356,6 +431,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "After Burner Climax SDX"; config.gameTitle = "After Burner Climax SDX";
config.gameDVP = "DVP-0018-SDX"; config.gameDVP = "DVP-0018-SDX";
config.gameID = "SBMN"; config.gameID = "SBMN";
config.gameReleaseYear = "2006 ?";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
config.gameType = ABC; config.gameType = ABC;
@ -367,6 +444,9 @@ static int detectGame(uint32_t elf_crc)
{ {
config.gameTitle = "After Burner Climax SDX Rev A"; config.gameTitle = "After Burner Climax SDX Rev A";
config.gameDVP = "DVP-0018A-SDX"; config.gameDVP = "DVP-0018A-SDX";
config.gameID = "SBMN";
config.gameReleaseYear = "2006 ?";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
config.gameType = ABC; config.gameType = ABC;
@ -379,6 +459,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "After Burner Climax SE"; config.gameTitle = "After Burner Climax SE";
config.gameDVP = "DVP-0031"; config.gameDVP = "DVP-0031";
config.gameID = "SBLR"; config.gameID = "SBLR";
config.gameReleaseYear = "2006 ?";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
config.gameType = ABC; config.gameType = ABC;
@ -391,6 +473,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "After Burner Climax SE Rev A"; config.gameTitle = "After Burner Climax SE Rev A";
config.gameDVP = "DVP-0031A"; config.gameDVP = "DVP-0031A";
config.gameID = "SBLR"; config.gameID = "SBLR";
config.gameReleaseYear = "2006 ?";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
config.gameType = ABC; config.gameType = ABC;
@ -401,9 +485,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_REVA: case INITIALD_4_REVA:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Rev A"; config.gameTitle = "Initial D Arcade Stage 4 Rev A";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0019A";
config.gameID = "SBML"; config.gameID = "SBML";
config.gameDVP = "DVP-0019A";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -412,9 +498,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_REVB: case INITIALD_4_REVB:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Rev B"; config.gameTitle = "Initial D Arcade Stage 4 Rev B";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0019B";
config.gameID = "SBML"; config.gameID = "SBML";
config.gameDVP = "DVP-0019B";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -423,9 +511,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_REVC: case INITIALD_4_REVC:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Rev C"; config.gameTitle = "Initial D Arcade Stage 4 Rev C";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0019C";
config.gameID = "SBML"; config.gameID = "SBML";
config.gameDVP = "DVP-0019C";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -434,9 +524,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_REVD: case INITIALD_4_REVD:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Rev D"; config.gameTitle = "Initial D Arcade Stage 4 Rev D";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0019D";
config.gameID = "SBML"; config.gameID = "SBML";
config.gameDVP = "DVP-0019D";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -445,9 +537,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_REVG: case INITIALD_4_REVG:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Rev G"; config.gameTitle = "Initial D Arcade Stage 4 Rev G";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0019G";
config.gameID = "SBML"; config.gameID = "SBML";
config.gameDVP = "DVP-0019G";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -456,9 +550,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_EXP_REVB: case INITIALD_4_EXP_REVB:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Export Rev B"; config.gameTitle = "Initial D Arcade Stage 4 Export Rev B";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0030B";
config.gameID = "SBNK"; config.gameID = "SBNK";
config.gameDVP = "DVP-0030B";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -467,9 +563,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_EXP_REVC: case INITIALD_4_EXP_REVC:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Export Rev C"; config.gameTitle = "Initial D Arcade Stage 4 Export Rev C";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0030C";
config.gameID = "SBNK"; config.gameID = "SBNK";
config.gameDVP = "DVP-0030C";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -478,9 +576,11 @@ static int detectGame(uint32_t elf_crc)
case INITIALD_4_EXP_REVD: case INITIALD_4_EXP_REVD:
{ {
config.gameTitle = "Initial D Arcade Stage 4 Export Rev D"; config.gameTitle = "Initial D Arcade Stage 4 Export Rev D";
config.gameStatus = WORKING;
config.gameDVP = "DVP-0030D";
config.gameID = "SBNK"; config.gameID = "SBNK";
config.gameDVP = "DVP-0030D";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -492,6 +592,8 @@ static int detectGame(uint32_t elf_crc)
config.emulateDriveboard = 1; config.emulateDriveboard = 1;
config.gameDVP = "DVP-0044"; config.gameDVP = "DVP-0044";
config.gameID = "SBPF"; config.gameID = "SBPF";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "1280x768";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
config.width = 1280; config.width = 1280;
@ -505,6 +607,9 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Rambo"; config.gameTitle = "Rambo";
config.gameDVP = "DVP-0069"; config.gameDVP = "DVP-0069";
config.gameID = "SBQL"; config.gameID = "SBQL";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameLindberghColour = REDEX;
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -513,9 +618,11 @@ static int detectGame(uint32_t elf_crc)
case R_TUNED: case R_TUNED:
{ {
config.gameTitle = "R Tuned"; config.gameTitle = "R-Tuned: Ultimate Street Racing";
config.gameDVP = "DVP-0060"; config.gameDVP = "DVP-0060";
config.gameID = "SBQW"; config.gameID = "SBQW";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.emulateDriveboard = 1; config.emulateDriveboard = 1;
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
@ -529,6 +636,9 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Too Spicy"; config.gameTitle = "Too Spicy";
config.gameDVP = "DVP-0027A"; config.gameDVP = "DVP-0027A";
config.gameID = "SBMV"; config.gameID = "SBMV";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameLindberghColour = RED;
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = SHOOTING; config.gameType = SHOOTING;
return 0; return 0;
@ -541,6 +651,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Tennis 3"; config.gameTitle = "Virtua Tennis 3";
config.gameDVP = "DVP-0005"; config.gameDVP = "DVP-0005";
config.gameID = "SBKX"; config.gameID = "SBKX";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
} }
@ -552,6 +664,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Tennis 3 Rev A"; config.gameTitle = "Virtua Tennis 3 Rev A";
config.gameDVP = "DVP-0005A"; config.gameDVP = "DVP-0005A";
config.gameID = "SBKX"; config.gameID = "SBKX";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameType = FIGHTING; config.gameType = FIGHTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -564,6 +678,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Tennis 3 Rev B"; config.gameTitle = "Virtua Tennis 3 Rev B";
config.gameDVP = "DVP-0005B"; config.gameDVP = "DVP-0005B";
config.gameID = "SBKX"; config.gameID = "SBKX";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameType = FIGHTING; config.gameType = FIGHTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -576,6 +692,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Virtua Tennis 3 Rev C"; config.gameTitle = "Virtua Tennis 3 Rev C";
config.gameDVP = "DVP-0005C"; config.gameDVP = "DVP-0005C";
config.gameID = "SBKX"; config.gameID = "SBKX";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameType = FIGHTING; config.gameType = FIGHTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -587,6 +705,9 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Primeval Hunt"; config.gameTitle = "Primeval Hunt";
config.gameDVP = "DVP-0048A"; config.gameDVP = "DVP-0048A";
config.gameID = "SBPP"; config.gameID = "SBPP";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameLindberghColour = RED;
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = SHOOTING; config.gameType = SHOOTING;
return 0; return 0;
@ -599,6 +720,9 @@ static int detectGame(uint32_t elf_crc)
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameDVP = "DVP-0029A"; config.gameDVP = "DVP-0029A";
config.gameID = "SBNJ"; config.gameID = "SBNJ";
config.gameReleaseYear = "2007";
config.gameNativeResolutions = "";
config.gameLindberghColour = RED;
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.jvsIOType = SEGA_TYPE_1; config.jvsIOType = SEGA_TYPE_1;
return 0; return 0;
@ -610,6 +734,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Initial D Arcade Stage 5 Rev A"; config.gameTitle = "Initial D Arcade Stage 5 Rev A";
config.gameDVP = "DVP-0070A"; config.gameDVP = "DVP-0070A";
config.gameID = "SBQZ"; config.gameID = "SBQZ";
config.gameReleaseYear = "2009";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
@ -621,6 +747,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Initial D Arcade Stage 5 Rev F"; config.gameTitle = "Initial D Arcade Stage 5 Rev F";
config.gameDVP = "DVP-0070F"; config.gameDVP = "DVP-0070F";
config.gameID = "SBQZ"; config.gameID = "SBQZ";
config.gameReleaseYear = "2009";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
@ -633,6 +761,8 @@ static int detectGame(uint32_t elf_crc)
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameDVP = "DVP-0075"; config.gameDVP = "DVP-0075";
config.gameID = "SBTS"; config.gameID = "SBTS";
config.gameReleaseYear = "2009";
config.gameNativeResolutions = "";
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
} }
@ -643,6 +773,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Initial D5 5 Ver 4.0"; config.gameTitle = "Initial D5 5 Ver 4.0";
config.gameDVP = "DVP-0084A"; config.gameDVP = "DVP-0084A";
config.gameID = "SBQN"; config.gameID = "SBQN";
config.gameReleaseYear = "2009";
config.gameNativeResolutions = "";
config.gameStatus = WORKING; config.gameStatus = WORKING;
config.gameType = DRIVING; config.gameType = DRIVING;
return 0; return 0;
@ -654,6 +786,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Hummer"; config.gameTitle = "Hummer";
config.gameID = "SBQN"; config.gameID = "SBQN";
config.gameDVP = "DVP-0057B"; config.gameDVP = "DVP-0057B";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameType = DRIVING; config.gameType = DRIVING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -665,6 +799,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Hummer SDLX"; config.gameTitle = "Hummer SDLX";
config.gameID = "SBST"; config.gameID = "SBST";
config.gameDVP = "DVP-0057"; config.gameDVP = "DVP-0057";
config.gameReleaseYear = "2008";
config.gameNativeResolutions = "";
config.gameType = DRIVING; config.gameType = DRIVING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -676,6 +812,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Hummer Extreme"; config.gameTitle = "Hummer Extreme";
config.gameID = "SBST"; config.gameID = "SBST";
config.gameDVP = "DVP-0079"; config.gameDVP = "DVP-0079";
config.gameReleaseYear = "2009";
config.gameNativeResolutions = "";
config.gameType = DRIVING; config.gameType = DRIVING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -687,6 +825,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Hummer Extreme MDX"; config.gameTitle = "Hummer Extreme MDX";
config.gameID = "SBST"; config.gameID = "SBST";
config.gameDVP = "DVP-0083"; config.gameDVP = "DVP-0083";
config.gameReleaseYear = "2009";
config.gameNativeResolutions = "";
config.gameType = DRIVING; config.gameType = DRIVING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -698,6 +838,8 @@ static int detectGame(uint32_t elf_crc)
config.gameTitle = "Let's Go Jungle! Lost on the Island of Spice! Rev A"; config.gameTitle = "Let's Go Jungle! Lost on the Island of Spice! Rev A";
config.gameDVP = "DVP-0011A"; config.gameDVP = "DVP-0011A";
config.gameID = "SBLU"; config.gameID = "SBLU";
config.gameReleaseYear = "2006";
config.gameNativeResolutions = "";
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
@ -706,10 +848,13 @@ static int detectGame(uint32_t elf_crc)
case HARLEY_DAVIDSON: case HARLEY_DAVIDSON:
{ {
config.gameTitle = "Harley Davidson"; config.gameTitle = "Harley-Davidson: King of the Road";
config.gameType = HARLEY;
config.gameDVP = "DVP-5007"; config.gameDVP = "DVP-5007";
config.gameID = "SBRG"; config.gameID = "SBRG";
config.gameReleaseYear = "2009";
config.gameNativeResolutions = "";
config.gameLindberghColour = RED;
config.gameType = HARLEY;
config.gameStatus = WORKING; config.gameStatus = WORKING;
return 0; return 0;
} }
@ -740,6 +885,37 @@ char *getGameID()
return config.gameID; return config.gameID;
} }
int getGameLindberghColour()
{
return config.gameLindberghColour;
}
char *getGameReleaseYear()
{
return config.gameReleaseYear;
}
char *getGameNativeResolutions()
{
return config.gameNativeResolutions;
}
const char *getLindberghColourString(Colour lindberghColour)
{
return LindbergColourStrings[lindberghColour];
}
const char *getGameRegionString(GameRegion region)
{
return GameRegionStrings[region];
}
const char *getGpuTypeString(GpuType gpuType)
{
return GpuTypeStrings[gpuType];
}
int readConfig(FILE *configFile, EmulatorConfig *config) int readConfig(FILE *configFile, EmulatorConfig *config)
{ {
char buffer[MAX_LINE_LENGTH]; char buffer[MAX_LINE_LENGTH];
@ -842,8 +1018,9 @@ int readConfig(FILE *configFile, EmulatorConfig *config)
else if (strcmp(command, "KEEP_ASPECT_RATIO") == 0) else if (strcmp(command, "KEEP_ASPECT_RATIO") == 0)
config->keepAspectRatio = atoi(getNextToken(NULL, " ", &saveptr)); config->keepAspectRatio = atoi(getNextToken(NULL, " ", &saveptr));
else if (strcmp(command, "GPU_VENDOR") == 0) else if (strcmp(command, "GPU_VENDOR") == 0) {
config->GPUVendor = atoi(getNextToken(NULL, " ", &saveptr)); config->configGPUVendor = config->GPUVendor = atoi(getNextToken(NULL, " ", &saveptr));
}
else if (strcmp(command, "OUTRUN_LENS_GLARE_ENABLED") == 0) else if (strcmp(command, "OUTRUN_LENS_GLARE_ENABLED") == 0)
config->outrunLensGlareEnabled = atoi(getNextToken(NULL, " ", &saveptr)); config->outrunLensGlareEnabled = atoi(getNextToken(NULL, " ", &saveptr));
@ -1111,6 +1288,9 @@ int initConfig()
config.gameID = "XXXX"; config.gameID = "XXXX";
config.gameDVP = "DVP-XXXX"; config.gameDVP = "DVP-XXXX";
config.gameType = SHOOTING; config.gameType = SHOOTING;
config.gameLindberghColour = YELLOW;
config.gameReleaseYear = "";
config.gameNativeResolutions = "";
config.keymap = getDefaultKeymap(); config.keymap = getDefaultKeymap();
config.jvsIOType = SEGA_TYPE_3; config.jvsIOType = SEGA_TYPE_3;
config.outrunLensGlareEnabled = 1; config.outrunLensGlareEnabled = 1;

View File

@ -239,7 +239,11 @@ typedef struct
char *gameID; char *gameID;
char *gameTitle; char *gameTitle;
char *gameDVP; char *gameDVP;
Colour gameLindberghColour;
char *gameReleaseYear;
char *gameNativeResolutions;
GpuType GPUVendor; GpuType GPUVendor;
GpuType configGPUVendor;
char *GPUVendorString; char *GPUVendorString;
JVSIOType jvsIOType; JVSIOType jvsIOType;
int outrunLensGlareEnabled; int outrunLensGlareEnabled;
@ -260,5 +264,11 @@ EmulatorConfig *getConfig();
char *getGameName(); char *getGameName();
char *getDVPName(); char *getDVPName();
char *getGameID(); char *getGameID();
int getGameLindberghColour();
char *getGameReleaseYear();
char *getGameNativeResolutions();
const char *getLindberghColourString(Colour lindberghColour);
const char *getGameRegionString(GameRegion region);
const char *getGpuTypeString(GpuType gpuType);
#endif #endif

View File

@ -220,11 +220,27 @@ void __attribute__((constructor)) hook_init()
securityBoardSetDipResolution(getConfig()->width, getConfig()->height); securityBoardSetDipResolution(getConfig()->width, getConfig()->height);
printf("\nSEGA Lindbergh Emulator\nBy the Lindbergh Development Team 2024\n\n"); printf("\nSEGA Lindbergh Emulator\nBy the Lindbergh Development Team 2024\n\n");
printf(" GAME: %s\n", getGameName());
printf(" GAME ID: %s\n", getGameID()); printf(" # GAME INFOS ##################### \n");
printf(" DVP: %s\n", getDVPName());
printf(" STATUS: %s\n", getConfig()->gameStatus == WORKING ? "WORKING" : "NOT WORKING"); printf(" GAME: %s\n", getGameName());
printf(" GPU VENDOR: %s\n\n", getConfig()->GPUVendorString); printf(" GAME ID: %s\n", getGameID());
printf(" DVP: %s\n", getDVPName());
printf(" HARDWARE: %s\n", getLindberghColourString(getGameLindberghColour()));
printf(" RELEASE: %s\n", getGameReleaseYear());
printf(" NATIVE RES.: %s\n", getGameNativeResolutions());
printf(" STATUS: %s\n", getConfig()->gameStatus == WORKING ? "WORKING" : "NOT WORKING");
printf("\n # HARDWARE INFOS ################# \n");
printf(" GPU VENDOR: %s\n", getConfig()->GPUVendorString);
printf("\n # CONFIGURATION INFOS ############ \n");
printf(" HARDWARE: %s\n", getLindberghColourString(getConfig()->lindberghColour));
printf(" REGION: %s\n", getGameRegionString(getConfig()->region));
printf(" GPU: %s\n", getGpuTypeString(getConfig()->configGPUVendor));
printf(" RESOLUTION: %ix%i\n", getConfig()->width, getConfig()->height);
for (int i = 0; i < controllers.count; i++) for (int i = 0; i < controllers.count; i++)
{ {
@ -234,6 +250,7 @@ void __attribute__((constructor)) hook_init()
} }
} }
printf("\n"); printf("\n");
if (getConfig()->GPUVendor == ATI_GPU if (getConfig()->GPUVendor == ATI_GPU
&& ((getConfig()->crc32 == LETS_GO_JUNGLE) || (getConfig()->crc32 == LETS_GO_JUNGLE_REVA) || && ((getConfig()->crc32 == LETS_GO_JUNGLE) || (getConfig()->crc32 == LETS_GO_JUNGLE_REVA) ||
(getConfig()->crc32 == LETS_GO_JUNGLE_SPECIAL) || (getConfig()->crc32 == AFTER_BURNER_CLIMAX) || (getConfig()->crc32 == LETS_GO_JUNGLE_SPECIAL) || (getConfig()->crc32 == AFTER_BURNER_CLIMAX) ||
@ -250,6 +267,8 @@ void __attribute__((constructor)) hook_init()
{ {
getConfig()->GPUVendor = AMD_GPU; getConfig()->GPUVendor = AMD_GPU;
} }
printf(" ################################## \n\n");
} }
DIR *opendir(const char *dirname) DIR *opendir(const char *dirname)