Final Burn Neo > FBN Development

Power Instinct Matrimelee driver....

(1/3) > >>

NJ7:
Note.....there's other code you have to add to get these working, but I'm not sure what it is for sure, maybe someone can post that information..... :cool:


--- Code: ---// Power Instinct Matrimelee
static struct BurnRomInfo matrimRomDesc[] = {
        {"266-p1.bin", 0x100000, 0x5d4c2dc7, 0x10}, // 0 68K code
        {"266-p2.bin", 0x400000, 0xa14b1906, 0x10}, // 1 /* scrambled */

        {"266-c1.bin", 0x800000, 0x505f4e30, 1}, // 2 Sprite data
        {"266-c2.bin", 0x800000, 0x3cb57482, 1}, // 3
        {"266-c3.bin", 0x800000, 0xf1cc6ad0, 1}, // 5
        {"266-c4.bin", 0x800000, 0x45b806b7, 1}, // 6
        {"266-c5.bin", 0x800000, 0x9a15dd6b, 1}, // 7
        {"266-c6.bin", 0x800000, 0x281cb939, 1}, // 8
        {"266-c7.bin", 0x800000, 0x4b71f780, 1}, // 9
        {"266-c8.bin", 0x800000, 0x29873d33, 1}, // 10

        {"266-m1d.bin",0x020000, 0xF692D84B, 0x10}, // 11 Z80 code (decrypted)
        {"266-m1.bin", 0x020000, 0x456c3e6c, 0x10}, // 12 Z80 code (encrypted)

        {"266-v1d.bin",0x400000, 0x352b0a07, 2}, // 13 Sound data
        {"266-v2d.bin",0x400000, 0x1e9bd59e, 2}, // 14
        {"266-v3d.bin",0x400000, 0xe8362fcc, 2}, // 15
        {"266-v4d.bin",0x400000, 0xc8c79b19, 2}, // 16

};

STDROMPICKEXT(matrim, matrim, neogeo);
STD_ROM_FN(matrim);

static void matrimDecrypt()
{
        /* matrim AES patch */
        *((unsigned short*)(Neo68KROM01 + 0x01050)) = 0x4E75;

        kof2002Decrypt();
}

static int matrimInit()
{
        nADPCMByteswap = 1;
        nNeoTextROMSize = 0x080000;
        nNeoProtectionXor = 0x6a;
        pNeoInitCallback = matrimDecrypt;
        return NeoInit();
}

struct BurnDriver BurnDrvmatrim = {
        {"matrim", "Power Instinct Matrimelee", "Japanese title is Shin Goketsuji Ichizoku", "Atlus / Noise Factory", "Neo Geo", "2002", NULL, "neogeo"},
        BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ENCRYPTED_B | HARDWARE_SNK_ALTERNATE_TEXT,
        NULL, matrimRomInfo, matrimRomName, neogeoInputInfo, neogeoDIPInfo,
        matrimInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
        nNeoScreenWidth, 224, 4, 3
};

// Power Instinct Matrimelee (bootleg)
/* This game uses the same samples and program code as matrim, the M1-ROM and C-ROMs are bitswaped
   like cthd2003 ones. */
static struct BurnRomInfo matrimblRomDesc[] = {
{"mat-p1.bin", 0x100000, 0x5d4c2dc7,  0x10}, // 0 68K code
{"mat-p2.bin", 0x400000, 0xa14b1906,  0x10}, // 1 /* scrambled */

{"mat-c1.bin", 0x800000, 0xa5595656, 1}, // 2 sprite data /* has 64 bit-swap like cthd2003 */
{"mat-c2.bin", 0x800000, 0xc5f7c300, 1}, // 3
{"mat-c3.bin", 0x800000, 0x574efd7d, 1}, // 4
{"mat-c4.bin", 0x800000, 0x109d54d9, 1}, // 5
{"mat-c5.bin", 0x800000, 0x15c9e882, 1}, // 6
{"mat-c6.bin", 0x800000, 0x77497b97, 1}, // 7
{"mat-c7.bin", 0x800000, 0xab481bb6, 1}, // 8
{"mat-c8.bin", 0x800000, 0x906cf267, 1}, // 9

{"mat-m1.bin", 0x020000, 0x3ea96ab1,  0x10}, // 10 Z80 code /* bit-swaped */

{"mat-v1.bin", 0x400000, 0x352b0a07, 2}, // 11 Sound data
{"mat-v2.bin", 0x400000, 0x1e9bd59e, 2}, // 12 /* byteswapped */
{"mat-v3.bin", 0x400000, 0xe8362fcc, 2}, // 13
{"mat-v4.bin", 0x400000, 0xc8c79b19, 2}, // 14 /* byteswapped */
};

STDROMPICKEXT(matrimbl, matrimbl, neogeo);
STD_ROM_FN(matrimbl);

#define MATRIMBLFIX(i) (i^(BITSWAP08(i&0x3,4,3,1,2,0,7,6,5)<<8)) /* bit-swap for M1-ROM */
static void matrimblDecrypt()
{
matrimDecrypt(); // Uses the same decryption method as matrim
int i,j;
UINT8 *src = (UINT8 *)(NeoZ80ROM);
UINT8 *dst = (UINT8 *)malloc(0x20000);
memcpy(dst,src,0x20000);
for(i=0x00000;i<0x20000;i++)
{
if (i&0x10000)
{
if (i&0x800)
{
j=MATRIMBLFIX(i);
j=j^0x10000;
}
else
{
j=MATRIMBLFIX((i^0x01));
}
}
else
{
if (i&0x800)
{
j=MATRIMBLFIX((i^0x01));
j=j^0x10000;
}
else
{
j=MATRIMBLFIX(i);
}
}
src[j]=dst[i];
}
free(dst);
memcpy(src-0x10000,src,0x10000);
}

static int matrimblInit()
{
nADPCMByteswap = 1;
pNeoInitCallback = matrimblDecrypt;
nNeoTextROMSize = 0x080000;
return NeoInit();
}

struct BurnDriver BurnDrvmatrimbl = {
{"matrimbl", "Power Instinct Matrimelee (bootleg)", "Japanese title is Shin Goketsuji Ichizoku", "Atlus / Noise Factory", "Neo Geo", "2002", "matrim", "neogeo"},
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ALTERNATE_TEXT,
NULL, matrimblRomInfo, matrimblRomName, neogeoInputInfo, neogeoDIPInfo,
matrimblInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
--- End code ---

KingHanco:
What part of that go into the FBA?

What file?

iq_132:
All of it.

src/burn/neogeo/d_neogeo.cpp

FerchogtX:
Outdated drivers, here the new and correct ones:
in neogeo.h: and neo_run.cpp:
add this (look at the thread, thanks to IQ_132 and fataku):

in d_neogeo.cpp:
add this drivers (if you like XD)

--- Code: ---// Power Instinct Matrimelee
/* This set has a little disorder in P2 rom identical to kof2002 */
static struct BurnRomInfo matrimRomDesc[] = {
{"266-p1.bin", 0x100000, 0x5d4c2dc7, 0x10}, //  0 68K code
{"266-p2.bin", 0x400000, 0xa14b1906, 0x10}, //  1 /* scrambled */

{"266-c1.bin", 0x800000, 0x505f4e30,    1}, //  2 Sprite data
{"266-c2.bin", 0x800000, 0x3cb57482,    1}, //  3
{"266-c3.bin", 0x800000, 0xf1cc6ad0,    1}, //  5
{"266-c4.bin", 0x800000, 0x45b806b7,    1}, //  6
{"266-c5.bin", 0x800000, 0x9a15dd6b,    1}, //  7
{"266-c6.bin", 0x800000, 0x281cb939,    1}, //  8
{"266-c7.bin", 0x800000, 0x4b71f780,    1}, //  9
{"266-c8.bin", 0x800000, 0x29873d33,    1}, // 10

{"266-m1d.bin",0x020000, 0x6cdfbb6d, 0x10}, // 11 Z80 code (decrypted)
{"266-m1.bin", 0x020000, 0x456c3e6c, 0x10}, // 12 Z80 code (encrypted)

/* This uses Neo-PCM2 PLAYMORE(c) 2002 Chip */
{"266-v1.bin", 0x800000, 0xa4f83690,    2}, // 13 Sound data
{"266-v2.bin", 0x800000, 0xd0f69eda,    2}, // 14
};

STDROMPICKEXT(matrim, matrim, neogeo);
STD_ROM_FN(matrim);

static void matrimDecrypt()
{
/* matrim AES patch */
*((unsigned short*)(Neo68KROM01 + 0x01050)) = 0x4E75;

/* We don't need to write all code again since this uses same bankswitching as kof2002
  so we call the function in this one */
kof2002Decrypt();//code by iq_132 from RomShare == http://neosource.1emu.net/
}

static int matrimInit()
{
nNeoTextROMSize = 0x080000; /* is suposed that the real text data should be 128 KB instead of 512 KB (?) */
nNeoProtectionXor = 0x6a;
pNeoInitCallback = matrimDecrypt;
nNeoPCM2PLAYMOREByteswap = 2;
return NeoInit();
}

struct BurnDriver BurnDrvmatrim = {
{"matrim", "Power Instinct Matrimelee", "Japanese title is: Shin Gouketsuji-Ichizoku", "Atlus", "Neo Geo", "2002", NULL, "neogeo"},
BDF_GAME_WORKING | BDF_LOCKED, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ENCRYPTED_B | HARDWARE_SNK_ALTERNATE_TEXT,
NULL, matrimRomInfo, matrimRomName, neogeoInputInfo, neogeoDIPInfo,
matrimInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};

// Power Instinct Matrimelee (Decrypted C-ROMs)

static struct BurnRomInfo matrimndRomDesc[] = {
{"266-p1.bin",  0x100000, 0x5d4c2dc7, 0x10}, // 0 68K code
{"266-p2.bin",  0x400000, 0xa14b1906, 0x10}, // 1

{"matr_c1.rom", 0x800000, 0x0ab54c54, 1}, // 2 sprite data
{"matr_c2.rom", 0x800000, 0xb834dd89, 1}, // 3
{"matr_c3.rom", 0x800000, 0xf31d68d4, 1}, // 4
{"matr_c4.rom", 0x800000, 0x58cfb6e9, 1}, // 5
{"matr_c5.rom", 0x800000, 0xf3c0e3fd, 1}, // 6
{"matr_c6.rom", 0x800000, 0xb53c8dcf, 1}, // 7
{"matr_c7.rom", 0x800000, 0x3c1fb02a, 1}, // 8
{"matr_c8.rom", 0x800000, 0x5ee31f80, 1}, // 9

{"266-m1d.bin", 0x020000, 0x6cdfbb6d, 0x10}, // 10 Z80 code

{"266-v1.bin",  0x800000, 0xa4f83690,    2}, // 11 Sound data
{"266-v2.bin",  0x800000, 0xd0f69eda,    2}, // 12
};

STDROMPICKEXT(matrimnd, matrimnd, neogeo);
STD_ROM_FN(matrimnd);

struct BurnDriver BurnDrvmatrimnd = {
{"matrimnd", "Power Instinct Matrimelee (decrypted C)", "Decrypted C-ROMs", "Atlus", "Neo Geo", "2002", "matrim", "neogeo"},
BDF_GAME_WORKING | BDF_CLONE | BDF_LOCKED, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ALTERNATE_TEXT,
NULL, matrimndRomInfo, matrimndRomName, neogeoInputInfo, neogeoDIPInfo,
matrimInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};

// Power Instinct Matrimelee (bootleg)
/* This game uses the same program code as matrim, the M1-ROM and C-ROMs are bitswaped
   like cthd2003 ones. */
static struct BurnRomInfo matrimblRomDesc[] = {
{"mat-p1.bin", 0x100000, 0x5d4c2dc7,  0x10}, // 0 68K code
{"mat-p2.bin", 0x400000, 0xa14b1906,  0x10}, // 1 /* scrambled */

{"mat-c1.bin", 0x800000, 0xa5595656, 1}, // 2 sprite data /* has 64 bit-swap like cthd2003 */
{"mat-c2.bin", 0x800000, 0xc5f7c300, 1}, // 3
{"mat-c3.bin", 0x800000, 0x574efd7d, 1}, // 4
{"mat-c4.bin", 0x800000, 0x109d54d9, 1}, // 5
{"mat-c5.bin", 0x800000, 0x15c9e882, 1}, // 6
{"mat-c6.bin", 0x800000, 0x77497b97, 1}, // 7
{"mat-c7.bin", 0x800000, 0xab481bb6, 1}, // 8
{"mat-c8.bin", 0x800000, 0x906cf267, 1}, // 9

{"mat-m1.bin", 0x020000, 0x3ea96ab1,  0x10}, // 10 Z80 code /* bit-swaped */

{"mat-v1.bin", 0x400000, 0x352b0a07, 2}, // 11 Sound data
{"mat-v2.bin", 0x400000, 0x1e9bd59e, 2}, // 12 /* byteswapped */
{"mat-v3.bin", 0x400000, 0xe8362fcc, 2}, // 13
{"mat-v4.bin", 0x400000, 0xc8c79b19, 2}, // 14 /* byteswapped */
};

STDROMPICKEXT(matrimbl, matrimbl, neogeo);
STD_ROM_FN(matrimbl);

#define MATRIMBLFIX(i) (i^(BITSWAP08(i&0x3,4,3,1,2,0,7,6,5)<<8)) /* bit-swap for M1-ROM */
static void matrimblDecrypt()
{
matrimDecrypt(); // Uses the same decryption method as matrim
int i,j;
UINT8 *src = (UINT8 *)(NeoZ80ROM);
UINT8 *dst = (UINT8 *)malloc(0x20000);
memcpy(dst,src,0x20000);
for(i=0x00000;i<0x20000;i++)
{
if (i&0x10000)
{
if (i&0x800)
{
j=MATRIMBLFIX(i);
j=j^0x10000;
}
else
{
j=MATRIMBLFIX((i^0x01));
}
}
else
{
if (i&0x800)
{
j=MATRIMBLFIX((i^0x01));
j=j^0x10000;
}
else
{
j=MATRIMBLFIX(i);
}
}
src[j]=dst[i];
}
free(dst);
memcpy(src-0x10000,src,0x10000);
}

static int matrimblInit()
{
nADPCMByteswap = 1;
pNeoInitCallback = matrimblDecrypt;
nNeoTextROMSize = 0x080000;
return NeoInit();
}

struct BurnDriver BurnDrvmatrimbl = {
{"matrimbl", "Power Instinct Matrimelee (bootleg)", "Bootleg of matrimelee", "Atlus", "Neo Geo", "2002", "matrim", "neogeo"},
BDF_GAME_WORKING | BDF_CLONE | BDF_LOCKED | BDF_BOOTLEG, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_ALTERNATE_TEXT,
NULL, matrimblRomInfo, matrimblRomName, neogeoInputInfo, neogeoDIPInfo,
matrimblInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
--- End code ---
delete decrypted set if you don't like decrypted sets in your build.
See ya!!!!!! :D

Accosta_m:
the C5 and M1 from set encripted is different of the set of kawaks dev

what is the difference :confused:

Navigation

[0] Message Index

[#] Next page

Go to full version