From d2259c9bc7c532d316ea42aed97c8d6846d38b38 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 9 Mar 2021 18:28:48 +0100 Subject: [PATCH] alg.cpp: preliminary address lines descrambling for aplatoon --- src/mame/drivers/alg.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/mame/drivers/alg.cpp b/src/mame/drivers/alg.cpp index b47eb0011ba..9e73b056f6b 100644 --- a/src/mame/drivers/alg.cpp +++ b/src/mame/drivers/alg.cpp @@ -461,20 +461,13 @@ void alg_state::init_aplatoon() { init_ntsc(); - // NOT DONE TODO FIGURE OUT THE RIGHT ORDER!!!! uint8_t *rom = memregion("game_program")->base(); - std::unique_ptr decrypted = std::make_unique(0x40000); + std::vector buffer(0x40000); - static const int shuffle[] = - { - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31, - 32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63 - }; + memcpy(&buffer[0], rom, 0x40000); - for (int i = 0; i < 64; i++) - memcpy(decrypted.get() + i * 0x1000, rom + shuffle[i] * 0x1000, 0x1000); - memcpy(rom, decrypted.get(), 0x40000); - logerror("decrypt done\n "); + for (int i = 0; i < 0x40000; i++) // preliminary, believed ok but to be verified when the driver is fleshed out + rom[i] = buffer[bitswap<24>(i, 23, 22, 21, 20, 19, 18, 17, 13, 14, 15, 16, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)]; } @@ -843,7 +836,7 @@ ROM_START( marvice100hz ) DISK_IMAGE_READONLY( "marvice", 0, NO_DUMP ) ROM_END -/* Tierras Salvajes 100Hz +/* Tierras Salvajes 100Hz PCB silkscreened PICMATIC S.A. 27-11-1992 ______________________________________________ | ________ ยทยทยทยท | @@ -868,7 +861,7 @@ ROM_END || | | EPROM EVEN | _________ _________ | ||_| |____________| | | | | | |_____________________| |____| |_| - |_______| |_______| + |_______| |_______| */ ROM_START( tierras100hz ) ALG_BIOS @@ -944,7 +937,7 @@ GAME( 1995, fastdraw_130, fastdraw, alg_r2, alg_2p, alg_state, init_palr6, // Works OK but uses right player (2) controls only for trigger and holster // NOVA games on ALG hardware with own address scramble -GAME( 199?, aplatoon, alg_bios, alg_r2, alg, alg_state, init_aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, aplatoon, alg_bios, alg_r2, alg, alg_state, init_aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // Web Picmatic games PAL TV standard or 100Hz, own ROM board GAME( 1993, zortonbr_100, zortonbr, picmatic, alg, alg_state, init_pal, ROT0, "Web Picmatic", "Zorton Brothers v1.00 (Los Justicieros)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )