mirror of
https://github.com/holub/mame
synced 2025-07-07 02:50:50 +03:00
Merge pull request #1460 from mamedev/machine_flags
Proposal for new system flags for 0.179 dev-cycle:
This commit is contained in:
commit
a860875217
@ -45,12 +45,18 @@ const UINT32 MACHINE_TYPE_OTHER = 0x00200000; // any other emul
|
||||
const UINT32 MACHINE_IMPERFECT_KEYBOARD = 0x00400000; // keyboard is known to be wrong
|
||||
const UINT32 MACHINE_CLICKABLE_ARTWORK = 0x00800000; // marking that artwork is clickable and require mouse cursor
|
||||
const UINT32 MACHINE_IS_INCOMPLETE = 0x01000000; // any official game/system with blantantly incomplete HW or SW should be marked with this
|
||||
const UINT32 MACHINE_NODEVICE_MICROPHONE = 0x02000000; // any game/system that has unemulated recording voice device peripheral
|
||||
const UINT32 MACHINE_NODEVICE_CAMERA = 0x04000000; // any game/system that has unemulated capturing image device peripheral
|
||||
const UINT32 MACHINE_NODEVICE_PRINTER = 0x08000000; // any game/system that has unemulated grabbing of screen content device
|
||||
const UINT32 MACHINE_NODEVICE_LAN = 0x10000000; // any game/system that has unemulated multi-linking capability
|
||||
const UINT32 MACHINE_NODEVICE_WAN = 0x20000000; // any game/system that has unemulated networking capability
|
||||
|
||||
// useful combinations of flags
|
||||
const UINT32 MACHINE_IS_SKELETON = MACHINE_NO_SOUND | MACHINE_NOT_WORKING; // mask for skelly games
|
||||
const UINT32 MACHINE_IS_SKELETON_MECHANICAL = MACHINE_IS_SKELETON | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK; // mask for skelly mechanical games
|
||||
|
||||
|
||||
const UINT32 MACHINE_FATAL_FLAGS = MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL; // red disclaimer
|
||||
const UINT32 MACHINE_WARNING_FLAGS = MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_KEYBOARD | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL | MACHINE_NODEVICE_MICROPHONE | MACHINE_NODEVICE_CAMERA | MACHINE_NODEVICE_PRINTER | MACHINE_NODEVICE_LAN | MACHINE_NODEVICE_WAN; // yellow disclaimer
|
||||
const UINT32 MACHINE_BTANB_FLAGS = MACHINE_IS_INCOMPLETE | MACHINE_NO_SOUND_HW; // default disclaimer
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
|
@ -59,19 +59,7 @@ machine_info::machine_info(running_machine &machine)
|
||||
|
||||
std::string machine_info::warnings_string()
|
||||
{
|
||||
constexpr UINT32 warning_flags = ( MACHINE_NOT_WORKING |
|
||||
MACHINE_UNEMULATED_PROTECTION |
|
||||
MACHINE_MECHANICAL |
|
||||
MACHINE_WRONG_COLORS |
|
||||
MACHINE_IMPERFECT_COLORS |
|
||||
MACHINE_REQUIRES_ARTWORK |
|
||||
MACHINE_NO_SOUND |
|
||||
MACHINE_IMPERFECT_SOUND |
|
||||
MACHINE_IMPERFECT_GRAPHICS |
|
||||
MACHINE_IMPERFECT_KEYBOARD |
|
||||
MACHINE_NO_COCKTAIL |
|
||||
MACHINE_IS_INCOMPLETE |
|
||||
MACHINE_NO_SOUND_HW );
|
||||
constexpr UINT32 warning_flags = ( MACHINE_FATAL_FLAGS | MACHINE_WARNING_FLAGS | MACHINE_BTANB_FLAGS );
|
||||
|
||||
// if no warnings, nothing to return
|
||||
if (m_machine.rom_load().warnings() == 0 && m_machine.rom_load().knownbad() == 0 && !(m_machine.system().flags & warning_flags) && m_machine.rom_load().software_load_warnings_message().length() == 0)
|
||||
@ -120,7 +108,7 @@ std::string machine_info::warnings_string()
|
||||
|
||||
// check if external artwork is present before displaying this warning?
|
||||
if (m_machine.system().flags & MACHINE_REQUIRES_ARTWORK) {
|
||||
buf << _("The machine requires external artwork files\n");
|
||||
buf << _("The machine requires external artwork files.\n");
|
||||
}
|
||||
|
||||
if (m_machine.system().flags & MACHINE_IS_INCOMPLETE )
|
||||
@ -128,13 +116,29 @@ std::string machine_info::warnings_string()
|
||||
buf << _("This machine was never completed. It may exhibit strange behavior or missing elements that are not bugs in the emulation.\n");
|
||||
}
|
||||
|
||||
if (m_machine.system().flags & MACHINE_NODEVICE_MICROPHONE )
|
||||
buf << _("This machine has unemulated microphone device.\n");
|
||||
|
||||
if (m_machine.system().flags & MACHINE_NODEVICE_CAMERA )
|
||||
buf << _("This machine has unemulated camera device.\n");
|
||||
|
||||
if (m_machine.system().flags & MACHINE_NODEVICE_PRINTER )
|
||||
buf << _("This machine has unemulated printer device.\n");
|
||||
|
||||
if (m_machine.system().flags & MACHINE_NODEVICE_LAN )
|
||||
buf << _("This machine has unemulated linking capabilities.\n");
|
||||
|
||||
if (m_machine.system().flags & MACHINE_NODEVICE_WAN )
|
||||
buf << _("This machine has unemulated networking capabilities.\n");
|
||||
|
||||
if (m_machine.system().flags & MACHINE_NO_SOUND_HW )
|
||||
{
|
||||
buf << _("This machine has no sound hardware, MAME will produce no sounds, this is expected behaviour.\n");
|
||||
}
|
||||
|
||||
|
||||
// if there's a NOT WORKING, UNEMULATED PROTECTION or GAME MECHANICAL warning, make it stronger
|
||||
if (m_machine.system().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL))
|
||||
if (m_machine.system().flags & (MACHINE_FATAL_FLAGS))
|
||||
{
|
||||
// add the strings for these warnings
|
||||
if (m_machine.system().flags & MACHINE_UNEMULATED_PROTECTION) {
|
||||
|
@ -313,9 +313,10 @@ void mame_ui_manager::display_startup_screens(bool first_time)
|
||||
if (!messagebox_text.empty())
|
||||
{
|
||||
set_handler(ui_callback_type::MODAL, std::bind(&mame_ui_manager::handler_messagebox_anykey, this, _1));
|
||||
if (machine().system().flags & (MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_KEYBOARD | MACHINE_NO_SOUND))
|
||||
// TODO: don't think BTANB should be marked yellow? Also move this snippet to specific getter
|
||||
if (machine().system().flags & (MACHINE_WARNING_FLAGS|MACHINE_BTANB_FLAGS))
|
||||
messagebox_backcolor = UI_YELLOW_COLOR;
|
||||
if (machine().system().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL))
|
||||
if (machine().system().flags & (MACHINE_FATAL_FLAGS))
|
||||
messagebox_backcolor = UI_RED_COLOR;
|
||||
}
|
||||
break;
|
||||
|
@ -1735,15 +1735,15 @@ GAME( 1988, asukaj, asuka, asuka, asuka, driver_device, 0, ROT270, "
|
||||
|
||||
GAME( 1989, mofflott, 0, mofflott, mofflott, driver_device, 0, ROT270, "Taito Corporation", "Maze of Flott (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1989, cadash, 0, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashj, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashj1, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashjo, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, oldest version)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashu, cadash, cadash, cadashu, driver_device, 0, ROT0, "Taito America Corporation", "Cadash (US, version 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashi, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Italy)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashf, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (France)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashg, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Germany, version 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadashp, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World, prototype)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1989, cadash, 0, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashj, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashj1, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashjo, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, oldest version)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashu, cadash, cadash, cadashu, driver_device, 0, ROT0, "Taito America Corporation", "Cadash (US, version 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashi, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashf, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (France)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashg, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Germany, version 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN )
|
||||
GAME( 1989, cadashp, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World, prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN)
|
||||
|
||||
GAME( 1992, galmedes, 0, galmedes, galmedes, driver_device, 0, ROT270, "Visco", "Galmedes (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
|
@ -2521,7 +2521,7 @@ GAME( 1994, puyopuy2, 0, segac2, puyopuy2, segac2_state, puyopuy2, ROT0,
|
||||
GAME( 1994, zunkyou, 0, segac2, zunkyou, segac2_state, zunkyou, ROT0, "Sega", "Zunzunkyou No Yabou (Japan)", 0 )
|
||||
|
||||
/* Atlus Print Club 'Games' (C-2 Hardware, might not be possible to support them because they use camera + printer, really just put here for reference) */
|
||||
GAME( 1995, pclubj, 0, segac2, pclub, segac2_state, pclub, ROT0, "Atlus", "Print Club (Japan Vol.1)", MACHINE_NOT_WORKING )
|
||||
GAME( 1995, pclubjv2, pclubj, segac2, pclubjv2, segac2_state, pclubjv2, ROT0, "Atlus", "Print Club (Japan Vol.2)", MACHINE_NOT_WORKING )
|
||||
GAME( 1996, pclubjv4, pclubj, segac2, pclubjv2, segac2_state, pclubjv4, ROT0, "Atlus", "Print Club (Japan Vol.4)", MACHINE_NOT_WORKING )
|
||||
GAME( 1996, pclubjv5, pclubj, segac2, pclubjv2, segac2_state, pclubjv5, ROT0, "Atlus", "Print Club (Japan Vol.5)", MACHINE_NOT_WORKING )
|
||||
GAME( 1995, pclubj, 0, segac2, pclub, segac2_state, pclub, ROT0, "Atlus", "Print Club (Japan Vol.1)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_PRINTER | MACHINE_NODEVICE_CAMERA )
|
||||
GAME( 1995, pclubjv2, pclubj, segac2, pclubjv2, segac2_state, pclubjv2, ROT0, "Atlus", "Print Club (Japan Vol.2)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_PRINTER | MACHINE_NODEVICE_CAMERA )
|
||||
GAME( 1996, pclubjv4, pclubj, segac2, pclubjv2, segac2_state, pclubjv4, ROT0, "Atlus", "Print Club (Japan Vol.4)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_PRINTER | MACHINE_NODEVICE_CAMERA )
|
||||
GAME( 1996, pclubjv5, pclubj, segac2, pclubjv2, segac2_state, pclubjv5, ROT0, "Atlus", "Print Club (Japan Vol.5)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_PRINTER | MACHINE_NODEVICE_CAMERA )
|
||||
|
@ -3609,7 +3609,7 @@ GAME( 1996, decathlto, decathlt,stv_5838, stv, stv_state, decathlt, ROT
|
||||
GAME( 1998, twcup98, stvbios, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Cup '98 (JUET 980410 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // some situations with the GK result in the game stalling, maybe CPU core bug??
|
||||
GAME( 1998, twsoc98, twcup98, stv_5881, stv, stv_state, twcup98, ROT0, "Tecmo", "Tecmo World Soccer '98 (JUET 980410 V1.000)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // ^^ (check)
|
||||
/* Gives I/O errors */
|
||||
GAME( 1996, magzun, stvbios, stv, stv, stv_state, magzun, ROT0, "Sega", "Magical Zunou Power (J 961031 V1.000)", MACHINE_NOT_WORKING )
|
||||
GAME( 1996, magzun, stvbios, stv, stv, stv_state, magzun, ROT0, "Sega", "Magical Zunou Power (J 961031 V1.000)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_MICROPHONE )
|
||||
GAME( 1997, techbowl, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Technical Bowling (J 971212 V1.000)", MACHINE_NOT_WORKING )
|
||||
GAME( 1999, micrombc, stvbios, stv, stv, stv_state, stv, ROT0, "Sega", "Microman Battle Charge (J 990326 V1.000)", MACHINE_NOT_WORKING )
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user