trunk/src/emu/bus/a7800/a78_slot.c
| r32089 | r32090 | |
| 164 | 164 | case 0x05: |
| 165 | 165 | if (log) |
| 166 | 166 | { |
| 167 | | printf("POKEY + RAM at $4000 (Header 0x05)\n"); |
| 168 | | printf("Disabling POKEY\n"); |
| 167 | osd_printf_info("POKEY + RAM at $4000 (Header 0x05)\n"); |
| 168 | osd_printf_info("Disabling POKEY\n"); |
| 169 | 169 | } |
| 170 | 170 | head &= ~0x01; |
| 171 | 171 | break; |
| 172 | 172 | case 0x09: |
| 173 | 173 | if (log) |
| 174 | 174 | { |
| 175 | | printf("POKEY + Bank 0 of 144K ROM at $4000 (Header 0x09)\n"); |
| 176 | | printf("Disabling POKEY\n"); |
| 175 | osd_printf_info("POKEY + Bank 0 of 144K ROM at $4000 (Header 0x09)\n"); |
| 176 | osd_printf_info("Disabling POKEY\n"); |
| 177 | 177 | } |
| 178 | 178 | head &= ~0x01; |
| 179 | 179 | break; |
| 180 | 180 | case 0x11: |
| 181 | 181 | if (log) |
| 182 | 182 | { |
| 183 | | printf("POKEY + Bank 6 ROM at $4000 (Header 0x11)\n"); |
| 184 | | printf("Disabling POKEY\n"); |
| 183 | osd_printf_info("POKEY + Bank 6 ROM at $4000 (Header 0x11)\n"); |
| 184 | osd_printf_info("Disabling POKEY\n"); |
| 185 | 185 | } |
| 186 | 186 | head &= ~0x01; |
| 187 | 187 | break; |
| 188 | 188 | case 0x21: |
| 189 | 189 | if (log) |
| 190 | 190 | { |
| 191 | | printf("POKEY + banked RAM at $4000 (Header 0x21)\n"); |
| 192 | | printf("Disabling POKEY\n"); |
| 191 | osd_printf_info("POKEY + banked RAM at $4000 (Header 0x21)\n"); |
| 192 | osd_printf_info("Disabling POKEY\n"); |
| 193 | 193 | } |
| 194 | 194 | head &= ~0x01; |
| 195 | 195 | break; |
| 196 | 196 | case 0x0c: |
| 197 | 197 | if (log) |
| 198 | 198 | { |
| 199 | | printf("RAM + Bank 0 of 144K ROM at $4000 (Header 0x0c)\n"); |
| 200 | | printf("Disabling RAM\n"); |
| 199 | osd_printf_info("RAM + Bank 0 of 144K ROM at $4000 (Header 0x0c)\n"); |
| 200 | osd_printf_info("Disabling RAM\n"); |
| 201 | 201 | } |
| 202 | 202 | head &= ~0x04; |
| 203 | 203 | break; |
| 204 | 204 | case 0x14: |
| 205 | 205 | if (log) |
| 206 | 206 | { |
| 207 | | printf("RAM + Bank 6 ROM at $4000 (Header 0x14)\n"); |
| 208 | | printf("Disabling RAM\n"); |
| 207 | osd_printf_info("RAM + Bank 6 ROM at $4000 (Header 0x14)\n"); |
| 208 | osd_printf_info("Disabling RAM\n"); |
| 209 | 209 | } |
| 210 | 210 | head &= ~0x04; |
| 211 | 211 | break; |
| 212 | 212 | case 0x24: |
| 213 | 213 | if (log) |
| 214 | 214 | { |
| 215 | | printf("RAM + Banked RAM at $4000 (Header 0x24)\n"); |
| 216 | | printf("Disabling RAM\n"); |
| 215 | osd_printf_info("RAM + Banked RAM at $4000 (Header 0x24)\n"); |
| 216 | osd_printf_info("Disabling RAM\n"); |
| 217 | 217 | } |
| 218 | 218 | head &= ~0x04; |
| 219 | 219 | break; |
| 220 | 220 | case 0x18: |
| 221 | 221 | if (log) |
| 222 | 222 | { |
| 223 | | printf("Bank 0 of 144K ROM + Bank 6 ROM at $4000 (Header 0x18)\n"); |
| 224 | | printf("Disabling Bank 0 ROM\n"); |
| 223 | osd_printf_info("Bank 0 of 144K ROM + Bank 6 ROM at $4000 (Header 0x18)\n"); |
| 224 | osd_printf_info("Disabling Bank 0 ROM\n"); |
| 225 | 225 | } |
| 226 | 226 | head &= ~0x08; |
| 227 | 227 | break; |
| 228 | 228 | case 0x28: |
| 229 | 229 | if (log) |
| 230 | 230 | { |
| 231 | | printf("Bank 0 of 144K ROM + Banked RAM at $4000 (Header 0x28)\n"); |
| 232 | | printf("Disabling Bank 0 ROM\n"); |
| 231 | osd_printf_info("Bank 0 of 144K ROM + Banked RAM at $4000 (Header 0x28)\n"); |
| 232 | osd_printf_info("Disabling Bank 0 ROM\n"); |
| 233 | 233 | } |
| 234 | 234 | head &= ~0x08; |
| 235 | 235 | break; |
| 236 | 236 | case 0x30: |
| 237 | 237 | if (log) |
| 238 | 238 | { |
| 239 | | printf("Bank 6 ROM + banked RAM at $4000 (Header 0x30)\n"); |
| 240 | | printf("Disabling Bank 6 ROM\n"); |
| 239 | osd_printf_info("Bank 6 ROM + banked RAM at $4000 (Header 0x30)\n"); |
| 240 | osd_printf_info("Disabling Bank 6 ROM\n"); |
| 241 | 241 | } |
| 242 | 242 | head &= ~0x10; |
| 243 | 243 | break; |
| r32089 | r32090 | |
| 247 | 247 | { |
| 248 | 248 | if (log) |
| 249 | 249 | { |
| 250 | | printf("SuperCart bankswitch detected at $4000, with no SuperCart bit (Header 0x%X)\n", head); |
| 251 | | printf("Enablig SuperCart bankswitch\n"); |
| 250 | osd_printf_info("SuperCart bankswitch detected at $4000, with no SuperCart bit (Header 0x%X)\n", head); |
| 251 | osd_printf_info("Enablig SuperCart bankswitch\n"); |
| 252 | 252 | } |
| 253 | 253 | head |= 0x02; |
| 254 | 254 | } |
| r32089 | r32090 | |
| 257 | 257 | { |
| 258 | 258 | if (log) |
| 259 | 259 | { |
| 260 | | printf("Bankswitch detected for an Activision cart (Header 0x%X)\n", head); |
| 261 | | printf("Disabling bankswitch\n"); |
| 260 | osd_printf_info("Bankswitch detected for an Activision cart (Header 0x%X)\n", head); |
| 261 | osd_printf_info("Disabling bankswitch\n"); |
| 262 | 262 | } |
| 263 | 263 | head &= 0xff00; |
| 264 | 264 | } |
| r32089 | r32090 | |
| 267 | 267 | { |
| 268 | 268 | if (log) |
| 269 | 269 | { |
| 270 | | printf("Bankswitch detected for an Absolute cart (Header 0x%X)\n", head); |
| 271 | | printf("Disabling bankswitch\n"); |
| 270 | osd_printf_info("Bankswitch detected for an Absolute cart (Header 0x%X)\n", head); |
| 271 | osd_printf_info("Disabling bankswitch\n"); |
| 272 | 272 | } |
| 273 | 273 | head &= 0xff00; |
| 274 | 274 | } |
| r32089 | r32090 | |
| 277 | 277 | { |
| 278 | 278 | if (log) |
| 279 | 279 | { |
| 280 | | printf("Unsupported mapper, please contact MESSdevs (Header 0x%X)\n", head); |
| 281 | | printf("Disabling special bits\n"); |
| 280 | osd_printf_info("Unsupported mapper, please contact MESSdevs (Header 0x%X)\n", head); |
| 281 | osd_printf_info("Disabling special bits\n"); |
| 282 | 282 | } |
| 283 | 283 | head &= 0x00ff; |
| 284 | 284 | } |
| r32089 | r32090 | |
| 424 | 424 | } |
| 425 | 425 | } |
| 426 | 426 | |
| 427 | | logerror("Cart type: %x\n", m_type); |
| 428 | | |
| 427 | logerror("Cart type: 0x%x\n", m_type); |
| 428 | |
| 429 | if (head[58] == 1) |
| 430 | { |
| 431 | osd_printf_info("This cart support external NVRAM savings, using HSC.\n"); |
| 432 | osd_printf_info("Run it with the High Score Cart mounted to exploit this feature.\n"); |
| 433 | } |
| 434 | else if (head[58] == 2) |
| 435 | { |
| 436 | osd_printf_info("This cart support external NVRAM savings, using SaveKey.\n"); |
| 437 | osd_printf_info("This is not supported in MESS currently.\n"); |
| 438 | } |
| 439 | |
| 440 | if (head[63]) |
| 441 | { |
| 442 | osd_printf_info("This cart requires XBoarD / XM expansion\n"); |
| 443 | osd_printf_info("Run it through the expansion to exploit this feature.\n"); |
| 444 | } |
| 445 | |
| 429 | 446 | internal_header_logging((UINT8 *)head, length()); |
| 430 | 447 | |
| 431 | 448 | m_cart->rom_alloc(len); |
| r32089 | r32090 | |
| 782 | 799 | |
| 783 | 800 | logerror( "ROM DETAILS\n" ); |
| 784 | 801 | logerror( "===========\n\n" ); |
| 785 | | logerror( "\tTotal length (with header): 0x%x (%dK + 128b header)\n\nn", len, len/0x400); |
| 802 | logerror( "\tTotal length (with header): 0x%x (%dK + 128b header)\n\n", len, len/0x400); |
| 786 | 803 | logerror( "HEADER DETAILS\n" ); |
| 787 | 804 | logerror( "==============\n\n" ); |
| 788 | 805 | logerror( "\tTitle: %.32s\n", head_title); |
| 789 | 806 | logerror( "\tLength: 0x%X [real 0x%X]\n", head_length, len); |
| 790 | | logerror( "\tMapper: %s\n", cart_mapper.cstr()); |
| 807 | logerror( "\tMapper: %s [0x%X]\n", cart_mapper.cstr(), head_mapper); |
| 791 | 808 | logerror( "\t\tPOKEY: %s\n", BIT(head_mapper, 0) ? "Yes" : "No"); |
| 792 | 809 | logerror( "\t\tSC Bankswitch: %s\n", BIT(head_mapper, 1) ? "Yes" : "No"); |
| 793 | 810 | logerror( "\t\tRAM at $4000: %s\n", BIT(head_mapper, 2) ? "Yes" : "No"); |