Slot check security: Difference between revisions
m (moved Slot check to Slot check security) |
mNo edit summary |
||
Line 1: | Line 1: | ||
[[File:S3warning.png|frame|Warning screen as shown by [[Sengoku 3]] when booting on MVS hardware with BIOS_MVS_FLAG set to 0 (AES mode).]] | [[File:S3warning.png|frame|Warning screen as shown by [[Sengoku 3]] when booting on MVS hardware with BIOS_MVS_FLAG set to 0 (AES mode).]] | ||
Slot checking is a security measure introduced by some games produced after 2000, which displays a warning screen and locks the game up if some checks fail. | Slot checking is a cartridge system security measure introduced by some games produced after 2000 due to the emergence of [[bootleg MVS boards]], which displays a warning screen and locks the game up if some checks fail. | ||
Someone who would want to bypass this check will typically search for the warning text in the [[P ROM]] and references to it in the code. Such | Someone who would want to bypass this check will typically search for the warning text in the [[P ROM]] and references to it in the code. Such text can't be found because the checking routine uses a NOT'ed version of the same text instead, probably to confuse hackers. | ||
The checking code first sets one out of two values in VRAM at the unused address $7FFF depending on two checks: | The checking code first sets one out of two values in VRAM at the unused address $7FFF depending on two checks: |
Revision as of 03:36, 13 March 2012
Slot checking is a cartridge system security measure introduced by some games produced after 2000 due to the emergence of bootleg MVS boards, which displays a warning screen and locks the game up if some checks fail.
Someone who would want to bypass this check will typically search for the warning text in the P ROM and references to it in the code. Such text can't be found because the checking routine uses a NOT'ed version of the same text instead, probably to confuse hackers.
The checking code first sets one out of two values in VRAM at the unused address $7FFF depending on two checks:
- The calendar data location in the BIOS RAM ($10FDD2 and up) is cleared, then BIOSF_READ_CALENDAR is called. If BIOS_MONTH($10FDD3) is greater than 13, the check fails.
- If BIOS_MVS_FLAG($10FD82) is zero (AES mode), and bit 7 of REG_STATUS_B($380000) is set (MVS hardware), the check fails.
That VRAM value is then read back and compared to set $10FCEF or not. The last check is done with the FIX_CLEAR bios call, which sets $10FCEF and makes the game pass the test.
Use by games
As seen in MAME's source ([neogeo.c]), a few games are known to do this check:
- Nightmare in the Dark (nitd)
- King Of Fighters 2000 (kof2000)
- Sengoku 3 (sengoku3): MVS SLOT CHECK Ver2.30 00/04/25
- Matrimelee (matrim)
- Metal Slug 5 (mslug5)