trunk/src/mame/machine/315-5881_crypt.c
| r243070 | r243071 | |
| 234 | 234 | |
| 235 | 235 | { |
| 236 | 236 | { |
| 237 | | 2,2,2,3,1,1,0,1,0,1,2,2,3,3,0,2,0,3,2,3,3,0,2,1,0,3,1,0,0,2,3,2, |
| 238 | | 3,2,0,3,2,0,1,0,3,3,1,1,2,2,2,0,2,1,3,1,1,1,1,2,2,2,3,0,1,3,0,0, |
| 237 | 2,2,2,3,1,1,0,1,3,3,1,1,2,2,2,0,0,3,2,3,3,0,2,1,2,2,3,0,1,3,0,0, |
| 238 | 3,2,0,3,2,0,1,0,0,1,2,2,3,3,0,2,2,1,3,1,1,1,1,2,0,3,1,0,0,2,3,2, |
| 239 | 239 | }, |
| 240 | | {1,2,5,6,7,-1}, |
| 240 | {1,2,5,6,7,6}, |
| 241 | 241 | {2,7} |
| 242 | 242 | }, |
| 243 | 243 | |
| r243070 | r243071 | |
| 341 | 341 | |
| 342 | 342 | { |
| 343 | 343 | { |
| 344 | | 0,2,3,2,1,1,0,0,2,1,0,3,3,0,0,0,3,2,0,2,1,1,2,1,0,0,3,1,2,2,3,1, |
| 345 | | 3,1,3,0,0,0,1,3,1,0,0,3,2,2,3,1,1,3,0,0,2,1,3,3,1,3,1,2,3,1,2,1, |
| 344 | 0,1,3,0,1,1,2,3,2,0,0,3,2,1,3,1,3,3,0,0,1,0,0,3,0,3,3,2,3,2,0,1, |
| 345 | 3,2,3,2,2,1,3,1,1,1,0,3,3,2,2,1,1,2,0,2,0,1,1,0,1,0,1,1,2,0,3,0, |
| 346 | 346 | }, |
| 347 | | {0,3,5,6,-1,-1}, |
| 347 | {0,3,5,6,5,0}, |
| 348 | 348 | {1,2} |
| 349 | 349 | }, |
| 350 | 350 | |
| r243070 | r243071 | |
| 387 | 387 | |
| 388 | 388 | { |
| 389 | 389 | { |
| 390 | | 1,2,3,2,0,3,2,3,0,1,1,0,0,2,2,3,2,0,0,3,0,2,3,3,2,2,1,0,2,1,0,3, |
| 391 | | 1,0,2,0,1,1,0,1,0,0,1,0,3,0,3,3,2,2,0,2,1,1,1,0,3,0,1,3,2,3,2,1, |
| 390 | 1,0,3,0,0,1,2,1,0,0,1,0,0,0,2,3,2,2,0,2,0,1,3,0,2,0,1,3,2,3,0,1, |
| 391 | 1,2,2,2,1,3,0,3,0,1,1,0,3,2,3,3,2,0,0,3,1,2,1,3,3,2,1,0,2,1,2,3, |
| 392 | 392 | }, |
| 393 | | {2,3,4,6,7,-1}, |
| 393 | {2,3,4,6,7,2}, |
| 394 | 394 | {2,3} |
| 395 | 395 | }, |
| 396 | 396 | |
| r243070 | r243071 | |
| 406 | 406 | { // 3rd round |
| 407 | 407 | { |
| 408 | 408 | { |
| 409 | | 0,3,0,1,0,2,3,3,1,0,1,3,2,2,1,1,3,3,3,0,2,0,2,0,0,0,2,3,1,1,0,0, |
| 410 | | 3,3,0,3,3,0,0,2,1,1,1,0,2,2,2,0,3,0,3,1,2,2,0,3,0,0,3,2,0,3,2,1, |
| 409 | 0,3,0,1,3,0,0,2,1,0,1,3,2,2,2,0,3,3,3,0,2,2,0,3,0,0,2,3,0,3,2,1, |
| 410 | 3,3,0,3,0,2,3,3,1,1,1,0,2,2,1,1,3,0,3,1,2,0,2,0,0,0,3,2,1,1,0,0, |
| 411 | 411 | }, |
| 412 | | {1,4,5,6,7,-1}, |
| 412 | {1,4,5,6,7,5}, |
| 413 | 413 | {0,5} |
| 414 | 414 | }, |
| 415 | 415 | |
| r243070 | r243071 | |
| 424 | 424 | |
| 425 | 425 | { |
| 426 | 426 | { |
| 427 | | 2,2,3,2,0,3,2,3,1,1,2,0,2,3,1,3,0,0,0,3,2,0,1,0,1,3,2,3,3,3,1,0, |
| 427 | 2,2,0,3,0,3,1,0,1,1,2,3,2,3,1,0,0,0,3,2,2,0,2,3,1,3,2,0,3,3,1,3, |
| 428 | 428 | // unused? |
| 429 | 429 | 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, |
| 430 | 430 | }, |
| 431 | | {1,2,4,7,-1,-1}, |
| 431 | {1,2,4,7,2,-1}, |
| 432 | 432 | {2,4} |
| 433 | 433 | }, |
| 434 | 434 | |
| r243070 | r243071 | |
| 481 | 481 | }; |
| 482 | 482 | |
| 483 | 483 | const int sega_315_5881_crypt_device::fn1_game_key_scheduling[FN1GK][2] = { |
| 484 | | {1,29}, {1,71}, {2,4}, {2,54}, {3,8}, {4,56}, {4,73}, {5,11}, |
| 485 | | {6,51}, {7,92}, {8,89}, {9,9}, {9,39}, {9,41}, {9,58}, {9,86}, |
| 486 | | {10,90}, {11,6}, {12,64}, {13,49}, {14,44}, {15,40}, {16,69}, {17,15}, |
| 487 | | {18,23}, {18,43}, {19,82}, {20,81}, {21,32}, {22,5}, {23,66}, {24,13}, |
| 488 | | {24,45}, {25,12}, {25,35}, {26,61}, {27,10}, {27,59}, {28,25} |
| 484 | {1,29}, {1,71}, {2,4}, {2,54}, {3,8}, {4,56}, {4,73}, {5,11}, |
| 485 | {6,51}, {7,92}, {8,89}, {9,9}, {9,39}, {9,58}, {9,86}, {10,90}, |
| 486 | {11,6}, {12,64}, {13,49}, {14,44}, {15,40}, {16,69}, {17,15}, {18,23}, |
| 487 | {18,43}, {19,82}, {20,81}, {21,32}, {22,5}, {23,66}, {24,13}, {24,45}, |
| 488 | {25,12}, {25,35}, {26,61}, {27,10}, {27,59}, {28,25} |
| 489 | 489 | }; |
| 490 | 490 | |
| 491 | 491 | const int sega_315_5881_crypt_device::fn2_game_key_scheduling[FN2GK][2] = { |
| 492 | | {0,0}, {1,3}, {2,11}, {3,20}, {4,22}, {5,23}, {6,29}, {7,38}, |
| 493 | | {8,39}, {9,55}, {9,86}, {9,87}, {9,90}, {10,50}, {10,53}, {11,57}, |
| 494 | | {12,59}, {13,61}, {13,64}, {14,63}, {15,67}, {16,72}, {17,83}, {18,88}, |
| 495 | | {19,94}, {20,35}, {21,17}, {22,6}, {22,11}, {23,85}, {24,16}, {25,25}, |
| 496 | | {26,92}, {27,47}, {28,28} |
| 492 | {0,0}, {1,3}, {2,11}, {3,20}, {4,22}, {5,23}, {6,29}, {7,38}, |
| 493 | {8,39}, {9,55}, {9,86}, {9,87}, {9,90}, {10,50}, {11,57}, {12,59}, |
| 494 | {13,61}, {14,63}, {15,67}, {16,72}, {17,83}, {18,88}, {19,94}, {20,35}, |
| 495 | {21,17}, {22,6}, {23,85}, {24,16}, {25,25}, {26,92}, {27,47}, {28,28} |
| 497 | 496 | }; |
| 498 | 497 | |
| 499 | 498 | const int sega_315_5881_crypt_device::fn1_sequence_key_scheduling[20][2] = { |
| r243070 | r243071 | |
| 583 | 582 | } |
| 584 | 583 | } |
| 585 | 584 | |
| 586 | | // subkeys bits 10 & 41 |
| 587 | | fn2_subkeys[0] ^= (BIT(sequence_key, 2) << 10); |
| 588 | | fn2_subkeys[1] ^= (BIT(sequence_key, 4) << 17); |
| 589 | 585 | /**************************************************************/ |
| 590 | 586 | |
| 591 | 587 | // First Feistel Network |