trunk/src/mame/machine/pgmprot_igs025_igs012.c
| r26056 | r26057 | |
| 149 | 149 | |
| 150 | 150 | drgw2_common_init(); |
| 151 | 151 | |
| 152 | | m_igs025->m_drgw2_protection_region = 0x00000006; |
| 152 | int region = 0x06; |
| 153 | m_igs025->m_drgw2_protection_region = region; |
| 154 | m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24); |
| 153 | 155 | |
| 154 | 156 | mem16[0x131098 / 2] = 0x4e93; |
| 155 | 157 | mem16[0x13113e / 2] = 0x4e93; |
| r26056 | r26057 | |
| 162 | 164 | |
| 163 | 165 | drgw2_common_init(); |
| 164 | 166 | |
| 165 | | m_igs025->m_drgw2_protection_region = 0x00000006; |
| 167 | int region = 0x06; |
| 168 | m_igs025->m_drgw2_protection_region = region; |
| 169 | m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24); |
| 166 | 170 | |
| 167 | 171 | mem16[0x131084 / 2] = 0x4e93; |
| 168 | 172 | mem16[0x13112a / 2] = 0x4e93; |
| r26056 | r26057 | |
| 175 | 179 | |
| 176 | 180 | drgw2_common_init(); |
| 177 | 181 | |
| 178 | | m_igs025->m_drgw2_protection_region = 0x00000005; |
| 182 | int region = 0x05; |
| 183 | m_igs025->m_drgw2_protection_region = region; |
| 184 | m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24); |
| 179 | 185 | |
| 180 | 186 | mem16[0x1303bc / 2] = 0x4e93; |
| 181 | 187 | mem16[0x130462 / 2] = 0x4e93; |
| r26056 | r26057 | |
| 188 | 194 | |
| 189 | 195 | drgw2_common_init(); |
| 190 | 196 | |
| 191 | | m_igs025->m_drgw2_protection_region = 0x00000001; |
| 197 | int region = 0x01; |
| 198 | m_igs025->m_drgw2_protection_region = region; |
| 199 | m_igs025->m_kb_game_id = region | (region << 8) | (region << 16) | (region << 24); |
| 192 | 200 | |
| 193 | 201 | mem16[0x1302c0 / 2] = 0x4e93; |
| 194 | 202 | mem16[0x130366 / 2] = 0x4e93; |
trunk/src/mame/machine/pgmprot_igs025_igs022.c
| r26056 | r26057 | |
| 312 | 312 | |
| 313 | 313 | MACHINE_RESET_MEMBER(pgm_022_025_state,killbld) |
| 314 | 314 | { |
| 315 | int region = (ioport(":Region")->read()) & 0xff; |
| 316 | |
| 317 | m_igs025->m_drgw2_protection_region = region - 0x16; |
| 318 | m_igs025->m_kb_game_id = 0x89911400 | region; |
| 319 | |
| 315 | 320 | MACHINE_RESET_CALL_MEMBER(pgm); |
| 316 | 321 | } |
| 317 | 322 | |
| 323 | MACHINE_RESET_MEMBER(pgm_022_025_state, dw3) |
| 324 | { |
| 325 | int region = (ioport(":Region")->read()) & 0xff; |
| 326 | |
| 327 | m_igs025->m_drgw2_protection_region = region; |
| 328 | m_igs025->m_kb_game_id = 0x00060000 | region; |
| 329 | |
| 330 | MACHINE_RESET_CALL_MEMBER(pgm); |
| 331 | } |
| 332 | |
| 333 | |
| 334 | |
| 335 | |
| 318 | 336 | void pgm_022_025_state::igs025_to_igs022_callback( void ) |
| 319 | 337 | { |
| 320 | 338 | // printf("igs025_to_igs022_callback\n"); |
| r26056 | r26057 | |
| 333 | 351 | m_igs022->m_sharedprotram = m_sharedprotram; |
| 334 | 352 | m_igs025->m_kb_source_data = killbld_source_data; |
| 335 | 353 | m_igs025->m_kb_source_data_offset = 0x16; |
| 336 | | m_igs025->m_kb_game_id = 0x89911400; |
| 337 | 354 | } |
| 338 | 355 | |
| 339 | 356 | DRIVER_INIT_MEMBER(pgm_022_025_state,drgw3) |
| r26056 | r26057 | |
| 346 | 363 | m_igs022->m_sharedprotram = m_sharedprotram; |
| 347 | 364 | m_igs025->m_kb_source_data = dw3_source_data; |
| 348 | 365 | m_igs025->m_kb_source_data_offset = 0; |
| 349 | | m_igs025->m_kb_game_id = 0x00060000; |
| 350 | 366 | } |
| 351 | 367 | |
| 352 | 368 | |
| r26056 | r26057 | |
| 368 | 384 | |
| 369 | 385 | MCFG_DEVICE_ADD("igs022", IGS022, 0) |
| 370 | 386 | |
| 371 | | MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state,killbld) |
| 372 | 387 | MACHINE_CONFIG_END |
| 373 | 388 | |
| 389 | MACHINE_CONFIG_DERIVED(pgm_022_025_dw3, pgm_022_025) |
| 390 | MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state, dw3) |
| 391 | MACHINE_CONFIG_END |
| 374 | 392 | |
| 393 | MACHINE_CONFIG_DERIVED(pgm_022_025_killbld, pgm_022_025) |
| 394 | MCFG_MACHINE_RESET_OVERRIDE(pgm_022_025_state, killbld) |
| 395 | MACHINE_CONFIG_END |
| 396 | |
| 397 | |
| 375 | 398 | INPUT_PORTS_START( killbld ) |
| 376 | 399 | PORT_INCLUDE ( pgm ) |
| 377 | 400 | |
trunk/src/mame/machine/igs025.c
| r26056 | r26057 | |
| 148 | 148 | m_kb_prot_hilo_select = 0; |
| 149 | 149 | } |
| 150 | 150 | |
| 151 | | source = m_kb_source_data[(ioport(":Region")->read() - m_kb_source_data_offset)][m_kb_prot_hilo_select]; |
| 151 | source = m_kb_source_data[m_drgw2_protection_region][m_kb_prot_hilo_select]; |
| 152 | 152 | |
| 153 | 153 | if (m_kb_prot_hilo_select & 1) |
| 154 | 154 | { |
| r26056 | r26057 | |
| 236 | 236 | switch (m_kb_ptr) |
| 237 | 237 | { |
| 238 | 238 | case 1: |
| 239 | | return 0x3f00 | ioport(":Region")->read(); |
| 239 | return 0x3f00 | ((m_kb_game_id >> 0) & 0xff); |
| 240 | 240 | |
| 241 | 241 | case 2: |
| 242 | 242 | return 0x3f00 | ((m_kb_game_id >> 8) & 0xff); |
| r26056 | r26057 | |
| 293 | 293 | m_olds_prot_hilo_select = 0; |
| 294 | 294 | } |
| 295 | 295 | |
| 296 | | source = olds_source_data[(ioport(":Region")->read())][m_olds_prot_hilo_select]; |
| 296 | source = olds_source_data[m_drgw2_protection_region][m_olds_prot_hilo_select]; |
| 297 | 297 | |
| 298 | 298 | if (m_olds_prot_hilo_select & 1) // $8178fa |
| 299 | 299 | { |
| r26056 | r26057 | |
| 372 | 372 | { |
| 373 | 373 | switch (m_olds_ptr) |
| 374 | 374 | { |
| 375 | | case 1: return 0x3f00 | ioport(":Region")->read(); |
| 375 | case 1: |
| 376 | return 0x3f00 | ((m_kb_game_id >> 0) & 0xff); |
| 376 | 377 | |
| 377 | 378 | case 2: |
| 378 | | return 0x3f00 | 0x00; |
| 379 | return 0x3f00 | ((m_kb_game_id >> 8) & 0xff); |
| 379 | 380 | |
| 380 | 381 | case 3: |
| 381 | | return 0x3f00 | 0x90; |
| 382 | return 0x3f00 | ((m_kb_game_id >> 16) & 0xff); |
| 382 | 383 | |
| 383 | 384 | case 4: |
| 384 | | return 0x3f00 | 0x00; |
| 385 | return 0x3f00 | ((m_kb_game_id >> 24) & 0xff); |
| 385 | 386 | |
| 387 | |
| 388 | |
| 389 | |
| 386 | 390 | case 5: |
| 387 | 391 | default: // >= 5 |
| 388 | 392 | return 0x3f00 | BITSWAP8(m_olds_prot_hold, 5,2,9,7,10,13,12,15); // $817906 |
| r26056 | r26057 | |
| 443 | 447 | { |
| 444 | 448 | switch (m_drgw2_ptr) |
| 445 | 449 | { |
| 446 | | case 1: return 0x3f00 | ((m_drgw2_protection_region >> 0) & 0xff); |
| 450 | case 1: |
| 451 | return 0x3f00 | ((m_kb_game_id >> 0) & 0xff); |
| 447 | 452 | |
| 448 | 453 | case 2: |
| 449 | | return 0x3f00 | ((m_drgw2_protection_region >> 8) & 0xff); |
| 454 | return 0x3f00 | ((m_kb_game_id >> 8) & 0xff); |
| 450 | 455 | |
| 451 | 456 | case 3: |
| 452 | | return 0x3f00 | ((m_drgw2_protection_region >> 16) & 0xff); |
| 457 | return 0x3f00 | ((m_kb_game_id >> 16) & 0xff); |
| 453 | 458 | |
| 454 | 459 | case 4: |
| 455 | | return 0x3f00 | ((m_drgw2_protection_region >> 24) & 0xff); |
| 460 | return 0x3f00 | ((m_kb_game_id >> 24) & 0xff); |
| 456 | 461 | |
| 457 | 462 | case 5: |
| 458 | 463 | default: |
trunk/src/mame/drivers/pgm.c
| r26056 | r26057 | |
| 4018 | 4018 | GAME( 1997, drgw2j, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, drgw2j, ROT0, "IGS", "Chuugokuryuu II (ver. 100J, Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 4019 | 4019 | GAME( 1997, drgw2c, drgw2, pgm_012_025_drgw2, pgm, pgm_012_025_state, drgw2c, ROT0, "IGS", "Zhong Guo Long II (ver. 100C, China)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) |
| 4020 | 4020 | |
| 4021 | | GAME( 1998, killbld, pgm, pgm_022_025, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4022 | | GAME( 1998, killbld104, killbld, pgm_022_025, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4021 | GAME( 1998, killbld, pgm, pgm_022_025_killbld, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 109, Chinese Board)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4022 | GAME( 1998, killbld104, killbld, pgm_022_025_killbld, killbld, pgm_022_025_state, killbld, ROT0, "IGS", "The Killing Blade (ver. 104)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4023 | 4023 | |
| 4024 | 4024 | // these seem playable but the DMA mode transfering 68k code to RAM is not emulated so there could still be problems |
| 4025 | | GAME( 1998, drgw3, pgm, pgm_022_025, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 106)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4026 | | GAME( 1998, drgw3105, drgw3, pgm_022_025, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 105)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4027 | | GAME( 1998, drgw3100, drgw3, pgm_022_025, dw3j,pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (Japan, ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // Japan only, has an extra game mode option! |
| 4025 | GAME( 1998, drgw3, pgm, pgm_022_025_dw3, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 106)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4026 | GAME( 1998, drgw3105, drgw3, pgm_022_025_dw3, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (ver. 105)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4027 | GAME( 1998, drgw3100, drgw3, pgm_022_025_dw3, dw3j,pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 (Japan, ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // Japan only, has an extra game mode option! |
| 4028 | 4028 | |
| 4029 | | GAME( 1998, dwex, pgm, pgm_022_025, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 EX (ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4029 | GAME( 1998, dwex, pgm, pgm_022_025_dw3, dw3, pgm_022_025_state, drgw3, ROT0, "IGS", "Dragon World 3 EX (ver. 100)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |
| 4030 | 4030 | |
| 4031 | 4031 | // region provided by internal ARM rom |
| 4032 | 4032 | GAME( 1999, photoy2k, pgm, pgm_arm_type1, photoy2k, pgm_arm_type1_state, photoy2k, ROT0, "IGS", "Photo Y2K (ver. 105)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) /* region provided by protection device */ |