mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2025-03-06 14:27:44 +00:00
- krom added remaining ROM sets. Spikeout Final Edition disabled because it is a bad dump.
- Added patches for scuda and scudj. - Added a TO-DO reminder in INIFile.cpp.
This commit is contained in:
parent
fce3c7ad7c
commit
6b55cfb765
1433
Src/Games.cpp
1433
Src/Games.cpp
File diff suppressed because it is too large
Load diff
37
Src/Games.h
37
Src/Games.h
|
@ -18,13 +18,13 @@
|
|||
** You should have received a copy of the GNU General Public License along
|
||||
** with Supermodel. If not, see <http://www.gnu.org/licenses/>.
|
||||
**/
|
||||
|
||||
|
||||
/*
|
||||
* Games.h
|
||||
*
|
||||
* Header file containing Model 3 game and ROM file information.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef INCLUDED_GAMES_H
|
||||
#define INCLUDED_GAMES_H
|
||||
|
||||
|
@ -37,20 +37,21 @@
|
|||
******************************************************************************/
|
||||
|
||||
// Input flags
|
||||
#define GAME_INPUT_COMMON 0x0001 // game has common controls
|
||||
#define GAME_INPUT_VEHICLE 0x0002 // game has vehicle controls
|
||||
#define GAME_INPUT_JOYSTICK1 0x0004 // game has joystick 1
|
||||
#define GAME_INPUT_JOYSTICK2 0x0008 // game has joystick 2
|
||||
#define GAME_INPUT_FIGHTING 0x0010 // game has fighting game controls
|
||||
#define GAME_INPUT_VR 0x0020 // game has VR view buttons
|
||||
#define GAME_INPUT_RALLY 0x0040 // game has rally car controls
|
||||
#define GAME_INPUT_GUN1 0x0080 // game has gun 1
|
||||
#define GAME_INPUT_GUN2 0x0100 // game has gun 2
|
||||
#define GAME_INPUT_SHIFT4 0x0200 // game has 4-speed shifter
|
||||
#define GAME_INPUT_COMMON 0x0001 // game has common controls
|
||||
#define GAME_INPUT_VEHICLE 0x0002 // game has vehicle controls
|
||||
#define GAME_INPUT_JOYSTICK1 0x0004 // game has joystick 1
|
||||
#define GAME_INPUT_JOYSTICK2 0x0008 // game has joystick 2
|
||||
#define GAME_INPUT_FIGHTING 0x0010 // game has fighting game controls
|
||||
#define GAME_INPUT_VR 0x0020 // game has VR view buttons
|
||||
#define GAME_INPUT_RALLY 0x0040 // game has rally car controls
|
||||
#define GAME_INPUT_GUN1 0x0080 // game has gun 1
|
||||
#define GAME_INPUT_GUN2 0x0100 // game has gun 2
|
||||
#define GAME_INPUT_SHIFT4 0x0200 // game has 4-speed shifter
|
||||
#define GAME_INPUT_ANALOG_JOYSTICK 0x0400 // game has analog joystick
|
||||
#define GAME_INPUT_TWIN_JOYSTICKS 0x0800 // game has twin joysticks
|
||||
#define GAME_INPUT_SOCCER 0x1000 // game has soccer controls
|
||||
#define GAME_INPUT_ALL 0x1FFF
|
||||
#define GAME_INPUT_SOCCER 0x1000 // game has soccer controls
|
||||
#define GAME_INPUT_ALL 0x1FFF
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Data Structures
|
||||
|
@ -64,7 +65,7 @@
|
|||
struct GameInfo
|
||||
{
|
||||
// Game information
|
||||
const char id[9]; // 8-character game identifier (also serves as zip archive file name)
|
||||
const char id[10]; // 9-character game identifier (also serves as zip archive file name)
|
||||
const char *title; // complete game title
|
||||
const char *mfgName; // name of manufacturer
|
||||
unsigned year; // year released (in decimal)
|
||||
|
@ -75,7 +76,7 @@ struct GameInfo
|
|||
unsigned sampleSize; // size of sample ROMS (8 or 16 MB; if 8 MB, will have to be mirrored)
|
||||
unsigned inputFlags; // game input types
|
||||
int mpegBoard; // MPEG music board type: 0 = none, 1 = DSB1 (Z80), 2 = DSB2 (68K).
|
||||
|
||||
|
||||
// ROM files
|
||||
struct ROMInfo ROM[48];
|
||||
};
|
||||
|
@ -83,7 +84,7 @@ struct GameInfo
|
|||
|
||||
/******************************************************************************
|
||||
Model 3 Game List
|
||||
|
||||
|
||||
All games supported by Supermodel. All ROMs are loaded according to their
|
||||
native endianness. That is, the PowerPC ROMs are loaded just as a real
|
||||
PowerPC would see them. The emulator may reorder the bytes on its own for
|
||||
|
@ -93,4 +94,4 @@ struct GameInfo
|
|||
extern const struct GameInfo Model3GameList[];
|
||||
|
||||
|
||||
#endif // INCLUDED_GAMES_H
|
||||
#endif // INCLUDED_GAMES_H
|
|
@ -26,6 +26,12 @@
|
|||
*
|
||||
* To-Do List
|
||||
* ----------
|
||||
* - Fix file writing. Null sections are not printed but it is currently
|
||||
* possible to create a new INI, create a non-null section as the first one,
|
||||
* and then create a null section. When the file is written, the null section
|
||||
* header will not be output and all of its settings will be interpreted as
|
||||
* a continuation of the previous section, which is incorrect. Can easily be
|
||||
* fixed by always initializing with a null section.
|
||||
* - Add boolean on/off, true/false keywords.
|
||||
* - Allow a "default" section to be specified (other than "").
|
||||
* - Note that linePtr does not necessarily correspond to actual lines in the
|
||||
|
|
|
@ -2101,6 +2101,7 @@ void CModel3::RunMainBoardFrame(void)
|
|||
{
|
||||
// Run the PowerPC for a frame
|
||||
ppc_execute(ppcFrequency/60-10000);
|
||||
//printf("PC=%08X LR=%08X\n", ppc_get_pc(), ppc_get_lr());
|
||||
|
||||
// VBlank
|
||||
TileGen.BeginFrame();
|
||||
|
@ -2108,6 +2109,7 @@ void CModel3::RunMainBoardFrame(void)
|
|||
GPU.RenderFrame();
|
||||
IRQ.Assert(0x02);
|
||||
ppc_execute(10000); // TO-DO: Vblank probably needs to be longer. Maybe that's why some games run too fast/slow
|
||||
//printf("PC=%08X LR=%08X\n", ppc_get_pc(), ppc_get_lr());
|
||||
|
||||
/*
|
||||
* Sound:
|
||||
|
@ -2142,6 +2144,7 @@ void CModel3::RunMainBoardFrame(void)
|
|||
}
|
||||
}
|
||||
//printf("\t-- END --\n");
|
||||
//printf("PC=%08X LR=%08X\n", ppc_get_pc(), ppc_get_lr());
|
||||
|
||||
// End frame
|
||||
GPU.EndFrame();
|
||||
|
@ -2215,6 +2218,7 @@ void CModel3::Patch(void)
|
|||
}
|
||||
else if (!strcmp(Game->id, "scud"))
|
||||
{
|
||||
// Base offset of program in CROM: 0x710000
|
||||
*(UINT32 *) &crom[0x712734] = 0x60000000; // skips some ridiculously slow delay loop during boot-up
|
||||
*(UINT32 *) &crom[0x71AEBC] = 0x60000000; // waiting for some flag in RAM that never gets modified (IRQ problem? try emulating VBL on Real3D)
|
||||
*(UINT32 *) &crom[0x712268] = 0x60000000; // this corrects the boot-up menu (but why?)
|
||||
|
@ -2224,6 +2228,14 @@ void CModel3::Patch(void)
|
|||
|
||||
//*(UINT32 *)&crom[0x799DE8] = 0x00050208; // debug menu
|
||||
}
|
||||
else if (!strcmp(Game->id, "scuda"))
|
||||
{
|
||||
*(UINT32 *) &crom[0x712734] = 0x60000000; // skips some ridiculously slow delay loop during boot-up
|
||||
}
|
||||
else if (!strcmp(Game->id, "scudj"))
|
||||
{
|
||||
*(UINT32 *) &crom[0x7126C8] = 0x60000000; // skips some ridiculously slow delay loop during boot-up
|
||||
}
|
||||
else if (!strcmp(Game->id, "scudp"))
|
||||
{
|
||||
/*
|
||||
|
@ -2343,6 +2355,13 @@ void CModel3::Patch(void)
|
|||
*(UINT32 *) &crom[0x029A0] = 0x60000000;
|
||||
*(UINT32 *) &crom[0x02A0C] = 0x60000000;
|
||||
}
|
||||
else if (!strcmp(Game->id, "swtrilgya"))
|
||||
{
|
||||
*(UINT32 *) &crom[0xF6DD0] = 0x60000000; // from MAME
|
||||
|
||||
//*(UINT32 *) &crom[0xF1128] = 0x60000000;
|
||||
//*(UINT32 *) &crom[0xF10E0] = 0x60000000;
|
||||
}
|
||||
else if (!strcmp(Game->id, "eca"))
|
||||
{
|
||||
*(UINT32 *) &crom[0x535580] = 0x60000000;
|
||||
|
@ -2673,14 +2692,14 @@ CModel3::CModel3(void)
|
|||
CModel3::~CModel3(void)
|
||||
{
|
||||
// Dump some files first
|
||||
#if 0
|
||||
//#if 0
|
||||
Dump("ram", ram, 0x800000, TRUE, FALSE);
|
||||
//Dump("vrom", vrom, 0x4000000, TRUE, FALSE);
|
||||
Dump("crom", crom, 0x800000, TRUE, FALSE);
|
||||
//Dump("bankedCrom", &crom[0x800000], 0x7000000, TRUE, FALSE);
|
||||
//Dump("soundROM", soundROM, 0x80000, FALSE, TRUE);
|
||||
//Dump("sampleROM", sampleROM, 0x800000, FALSE, TRUE);
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
// Stop all threads
|
||||
StopThreads();
|
||||
|
|
Loading…
Reference in a new issue