src/mess/machine/sms.c
| r783 | r784 | |
| 702 | 702 | return retval; |
| 703 | 703 | } |
| 704 | 704 | |
| 705 | /* Check for Codemasters mapper |
| 706 | 0x7FE3 - 93 - sms Cosmis Spacehead |
| 707 | - sms Dinobasher |
| 708 | - sms The Excellent Dizzy Collection |
| 709 | - sms Fantastic Dizzy |
| 710 | - sms Micro Machines |
| 711 | - gamegear Cosmic Spacehead |
| 712 | - gamegear Micro Machines |
| 713 | - 94 - gamegear Dropzone |
| 714 | - gamegear Ernie Els Golf (also has 64KB additional RAM on the cartridge) |
| 715 | - gamegear Pete Sampras Tennis |
| 716 | - gamegear S.S. Lucifer |
| 717 | - 95 - gamegear Micro Machines 2 - Turbo Tournament |
| 718 | |
| 719 | The Korean game Jang Pung II also seems to use a codemasters style mapper. |
| 720 | */ |
| 721 | static int detect_codemasters_mapper( UINT8 *rom ) { |
| 722 | UINT8 jang_pung2[16] = { 0x00, 0xBA, 0x38, 0x0D, 0x00, 0xB8, 0x38, 0x0C, 0x00, 0xB6, 0x38, 0x0B, 0x00, 0xB4, 0x38, 0x0A }; |
| 723 | |
| 724 | if ( ( ( rom[0x7fe0] & 0x0F ) <= 9 ) && |
| 725 | ( rom[0x7fe3] == 0x93 || rom[0x7fe3] == 0x94 || rom[0x7fe3] == 0x95 ) && |
| 726 | rom[0x7fef] == 0x00 ) { |
| 727 | return 1; |
| 728 | } |
| 729 | |
| 730 | if ( ! memcmp( &rom[0x7ff0], jang_pung2, 16 ) ) { |
| 731 | return 1; |
| 732 | } |
| 733 | |
| 734 | return 0; |
| 735 | } |
| 736 | |
| 737 | static int detect_korean_mapper( UINT8 *rom ) { |
| 738 | UINT8 signatures[2][16] = { |
| 739 | { 0x3E, 0x11, 0x32, 0x00, 0xA0, 0x78, 0xCD, 0x84, 0x85, 0x3E, 0x02, 0x32, 0x00, 0xA0, 0xC9, 0xFF }, /* Dodgeball King */ |
| 740 | { 0x41, 0x48, 0x37, 0x37, 0x44, 0x37, 0x4E, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20 }, /* Sangokushi 3 */ |
| 741 | }; |
| 742 | int i; |
| 743 | |
| 744 | for( i = 0; i < 2; i++ ) { |
| 745 | if ( !memcmp( &rom[0x7ff0], signatures[i], 16 ) ) { |
| 746 | return 1; |
| 747 | } |
| 748 | } |
| 749 | return 0; |
| 750 | } |
| 751 | |
| 705 | 752 | DEVICE_INIT( sms_cart ) { |
| 706 | 753 | int i; |
| 707 | 754 | |
| r783 | r784 | |
| 800 | 847 | /* If no extrainfo information is available try to find special information out on our own */ |
| 801 | 848 | /* Check for special cartridge features */ |
| 802 | 849 | if ( size >= 0x8000 ) { |
| 803 | | /* Check for Codemasters mapper |
| 804 | | 0x7FE3 - 93 - sms Cosmis Spacehead |
| 805 | | - sms Dinobasher |
| 806 | | - sms The Excellent Dizzy Collection |
| 807 | | - sms Fantastic Dizzy |
| 808 | | - sms Micro Machines |
| 809 | | - gamegear Cosmic Spacehead |
| 810 | | - gamegear Micro Machines |
| 811 | | - 94 - gamegear Dropzone |
| 812 | | - gamegear Ernie Els Golf (also has 64KB additional RAM on the cartridge) |
| 813 | | - gamegear Pete Sampras Tennis |
| 814 | | - gamegear S.S. Lucifer |
| 815 | | - 95 - gamegear Micro Machines 2 - Turbo Tournament |
| 816 | | */ |
| 817 | | if ( ( ( sms_cartridge[index].ROM[0x7fe0] & 0x0F ) <= 9 ) && |
| 818 | | ( sms_cartridge[index].ROM[0x7fe3] == 0x93 || sms_cartridge[index].ROM[0x7fe3] == 0x94 || sms_cartridge[index].ROM[0x7fe3] == 0x95 ) && |
| 819 | | sms_cartridge[index].ROM[0x7fef] == 0x00 ) { |
| 850 | /* Check for special mappers */ |
| 851 | if ( detect_codemasters_mapper( sms_cartridge[index].ROM ) ) { |
| 820 | 852 | sms_cartridge[index].features |= CF_CODEMASTERS_MAPPER; |
| 821 | 853 | } |
| 822 | | /* Check for special Korean games mapper used by: |
| 823 | | - Dodgeball King/Dallyeora Pigu-Wang |
| 824 | | - Sangokushi 3 |
| 825 | | */ |
| 826 | | if ( ( sms_cartridge[index].ROM[0x7ff0] == 0x3e && sms_cartridge[index].ROM[0x7ff1] == 0x11 ) || /* Dodgeball King */ |
| 827 | | ( sms_cartridge[index].ROM[0x7ff0] == 0x41 && sms_cartridge[index].ROM[0x7ff1] == 0x48 ) ) { /* Sangokushi 3 */ |
| 854 | if ( detect_korean_mapper( sms_cartridge[index].ROM ) ) { |
| 828 | 855 | sms_cartridge[index].features |= CF_KOREAN_MAPPER; |
| 829 | 856 | } |
| 830 | 857 | } |