Welcome!
Final Burn Neo => FBN Development => Topic started by: mai on November 30, 2005, 07:58:22 AM
-
Hi! Can you help me. I'm just trying to recompile FBA using NeoRAGEx decrypted-roms (NOT MAME or encrypted-roms, I suppose even some decrypted-roms differ from this one, that for NeoRAGEx only), usually it works well with games, that were released after 1998, but there were some problems with kof2000... it's works well but it seems to me that FBA emu uses some graphic roms in incorrect way (some text, not-animated graphics are corrupt), but NeoRAGEx is OK...
This is my driver:
// The King of Fighters 2000 (decrypted)
static struct BurnRomInfo kof2000dRomDesc[] = {
{ "257-p1.rom", 0x100000, 0xF2ECA98F, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "257-p2.rom", 0x400000, 0x693C2C5E, 1 | BRF_ESS | BRF_PRG }, // 1
{ "257-s1.rom", 0x080000, 0x8D1F51FD, 2 | BRF_GRA }, // 2 Text data
{ "257-c1.rom", 0x800000, 0xABCDD424, 3 | BRF_GRA }, // 3 Sprite data
{ "257-c2.rom", 0x800000, 0xCDA33778, 3 | BRF_GRA }, // 4
{ "257-c3.rom", 0x800000, 0x087FB15B, 3 | BRF_GRA }, // 5
{ "257-c4.rom", 0x800000, 0xFE9DFDE4, 3 | BRF_GRA }, // 6
{ "257-c5.rom", 0x800000, 0x03EE4BF4, 3 | BRF_GRA }, // 7
{ "257-c6.rom", 0x800000, 0x8599CC5B, 3 | BRF_GRA }, // 8
{ "257-c7.rom", 0x800000, 0x561234DC, 3 | BRF_GRA }, // 9
{ "257-c8.rom", 0x800000, 0x0FA30E5F, 3 | BRF_GRA }, // 10
{ "257-m1.rom", 0x040000, 0xA082F086, 4 | BRF_ESS | BRF_PRG }, // 11 Z80 code
{ "257-v1.rom", 0x400000, 0x17CDE847, 5 | BRF_SND }, // 12 Sound data
{ "257-v2.rom", 0x400000, 0x1AFB20FF, 5 | BRF_SND }, // 13
{ "257-v3.rom", 0x400000, 0x64284808, 5 | BRF_SND }, // 14
{ "257-v4.rom", 0x400000, 0x764BBD6B, 5 | BRF_SND }, // 15
};
STDROMPICKEXT(kof2000d, kof2000d, neogeo);
STD_ROM_FN(kof2000d);
struct BurnDriver BurnDrvkof2000d = {
"kof2000d", NULL, "neogeo", "2000",
"The King of Fighters 2000 (decrypted)\0", NULL, "SNK", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_SRAM,
NULL, kof2000dRomInfo, kof2000dRomName, neogeoInputInfo, neogeoDIPInfo,
NeoInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
PS Sorry for my poor English :biggrin:
-
Hi! Can you help me. I'm just trying to recompile FBA using NeoRAGEx decrypted-roms (NOT MAME or encrypted-roms, I suppose even some decrypted-roms differ from this one, that for NeoRAGEx only), usually it works well with games, that were released after 1998, but there were some problems with kof2000... it's works well but it seems to me that FBA emu uses some graphic roms in incorrect way (some text, not-animated graphics are corrupt), but NeoRAGEx is OK...
This is my driver:
PS Sorry for my poor English :biggrin:
Try to use this driver:
// The King of Fighters 2000 (decrypted)
static struct BurnRomInfo kof2000dRomDesc[] = {
{ "257-p1.rom", 0x100000, 0xF2ECA98F, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "257-p2.rom", 0x400000, 0x693C2C5E, 1 | BRF_ESS | BRF_PRG }, // 1
// Text ROM not needed
//{ "257-s1.rom", 0x080000, 0x8D1F51FD, 2 | BRF_GRA }, // 2 Text data
{ "257-c1.rom", 0x800000, 0xABCDD424, 3 | BRF_GRA }, // 3 Sprite data
{ "257-c2.rom", 0x800000, 0xCDA33778, 3 | BRF_GRA }, // 4
{ "257-c3.rom", 0x800000, 0x087FB15B, 3 | BRF_GRA }, // 5
{ "257-c4.rom", 0x800000, 0xFE9DFDE4, 3 | BRF_GRA }, // 6
{ "257-c5.rom", 0x800000, 0x03EE4BF4, 3 | BRF_GRA }, // 7
{ "257-c6.rom", 0x800000, 0x8599CC5B, 3 | BRF_GRA }, // 8
{ "257-c7.rom", 0x800000, 0x561234DC, 3 | BRF_GRA }, // 9
{ "257-c8.rom", 0x800000, 0x0FA30E5F, 3 | BRF_GRA }, // 10
{ "257-m1.rom", 0x040000, 0xA082F086, 4 | BRF_ESS | BRF_PRG }, // 11 Z80 code
{ "257-v1.rom", 0x400000, 0x17CDE847, 5 | BRF_SND }, // 12 Sound data
{ "257-v2.rom", 0x400000, 0x1AFB20FF, 5 | BRF_SND }, // 13
{ "257-v3.rom", 0x400000, 0x64284808, 5 | BRF_SND }, // 14
{ "257-v4.rom", 0x400000, 0x764BBD6B, 5 | BRF_SND }, // 15
};
STDROMPICKEXT(kof2000d, kof2000d, neogeo);
STD_ROM_FN(kof2000d);
static int kof2000dInit()
{
nNeoTextROMSize = 0x080000; // This code tells the size of the Text ROM (s1) that needs to br extracted from the c's
return NeoInit();
}
struct BurnDriver BurnDrvkof2000d = {
"kof2000d", NULL, "neogeo", "2000",
"The King of Fighters 2000 (decrypted)\0", NULL, "SNK", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_SRAM | HARDWARE_SNK_ALTERNATE_TEXT,
NULL, kof2000dRomInfo, kof2000dRomName, neogeoInputInfo, neogeoDIPInfo,
kof2000dInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
PS: Take a look at the comments with "//" and the black parts, and you will figure out what was wrong :wink:
C ya
-
oh thanks, thanks, thanks a lot :biggrin: :biggrin: :biggrin: It works!
PS you've missed something...
static int kof2000dInit()
{
nNeoTextROMSize = 0x080000; // This code tells the size of the Text ROM (s1) that needs to be extracted from the c's
return NeoInit();
}
-
oh thanks, thanks, thanks a lot :biggrin: :biggrin: :biggrin: It works!
No problem :wink:
PS you've missed something...
static int kof2000dInit()
{
nNeoTextROMSize = 0x080000; // This code tells the size of the Text ROM (s1) that needs to be extracted from the c's return NeoInit();
}
LOL thanks for remind me about that, i wrote the code without coping it from the source :biggrin: i think i forgot to put that :rolleyes:
C ya
-
hm... it writes "This ROM cartridge can be used with SNK boards only..." and stops working... furthermore, no graphics even in the beginning (only sound and text)...
// Garou - MotW (decrypted)
static struct BurnRomInfo garoudRomDesc[] = {
{ "253-p1.bin", 0x800000, 0xFA50E446, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "253-s1.bin", 0x080000, 0xBE2BA1A5, 2 | BRF_GRA }, // 1 Text data
{ "253-c1.bin", 0x800000, 0x497BE3F2, 3 | BRF_GRA }, // 2 Sprite data
{ "253-c2.bin", 0x800000, 0x6A9E95CA, 3 | BRF_GRA }, // 3
{ "253-c3.bin", 0x800000, 0x39373D2F, 3 | BRF_GRA }, // 4
{ "253-c4.bin", 0x800000, 0x4DE23F6C, 3 | BRF_GRA }, // 5
{ "253-c5.bin", 0x800000, 0x16634BA5, 3 | BRF_GRA }, // 6
{ "253-c6.bin", 0x800000, 0x95671FFD, 3 | BRF_GRA }, // 7
{ "253-c7.bin", 0x800000, 0xE36CE77F, 3 | BRF_GRA }, // 8
{ "253-c8.bin", 0x800000, 0xDDBD1096, 3 | BRF_GRA }, // 9
{ "253-m1.bin", 0x040000, 0x36A806BE, 4 | BRF_ESS | BRF_PRG }, // 10 Z80 code
{ "253-v1.bin", 0x400000, 0x263E388C, 5 | BRF_SND }, // 11 Sound data
{ "253-v2.bin", 0x400000, 0x2C6BC7BE, 5 | BRF_SND }, // 12
{ "253-v3.bin", 0x400000, 0x0425B27D, 5 | BRF_SND }, // 13
{ "253-v4.bin", 0x400000, 0xA54BE8A9, 5 | BRF_SND }, // 14
};
STDROMPICKEXT(garoud, garoud, neogeo);
STD_ROM_FN(garoud);
struct BurnDriver BurnDrvgaroud = {
"garoud", NULL, "neogeo", "1999",
"Garou - MotW (decrypted)\0", NULL, "SNK", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_SRAM,
NULL, garoudRomInfo, garoudRomName, neogeoInputInfo, neogeoDIPInfo,
NeoInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
-
Try this ;)
// Garou - MotW (decrypted)
static struct BurnRomInfo garoudRomDesc[] = {
{ "253-p1.bin", 0x800000, 0xFA50E446, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "253-c1.bin", 0x800000, 0x497BE3F2, 3 | BRF_GRA }, // 2 Sprite data
{ "253-c2.bin", 0x800000, 0x6A9E95CA, 3 | BRF_GRA }, // 3
{ "253-c3.bin", 0x800000, 0x39373D2F, 3 | BRF_GRA }, // 4
{ "253-c4.bin", 0x800000, 0x4DE23F6C, 3 | BRF_GRA }, // 5
{ "253-c5.bin", 0x800000, 0x16634BA5, 3 | BRF_GRA }, // 6
{ "253-c6.bin", 0x800000, 0x95671FFD, 3 | BRF_GRA }, // 7
{ "253-c7.bin", 0x800000, 0xE36CE77F, 3 | BRF_GRA }, // 8
{ "253-c8.bin", 0x800000, 0xDDBD1096, 3 | BRF_GRA }, // 9
{ "253-m1.bin", 0x040000, 0x36A806BE, 4 | BRF_ESS | BRF_PRG }, // 10 Z80 code
{ "253-v1.bin", 0x400000, 0x263E388C, 5 | BRF_SND }, // 11 Sound data
{ "253-v2.bin", 0x400000, 0x2C6BC7BE, 5 | BRF_SND }, // 12
{ "253-v3.bin", 0x400000, 0x0425B27D, 5 | BRF_SND }, // 13
{ "253-v4.bin", 0x400000, 0xA54BE8A9, 5 | BRF_SND }, // 14
};
STDROMPICKEXT(garoud, garoud, neogeo);
STD_ROM_FN(garoud);
static int garoudInit()
{
nNeoTextROMSize = 0x080000;
return NeoSMAInit(NULL, garouWriteWordBankswitch, 0x2FFFCC, 0x2FFFF0);
}
struct BurnDriver BurnDrvgaroud = {
"garoud", "garou", "neogeo", "1999",
"Garou - MotW (decrypted)\0", NULL, "SNK", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_SRAM,
NULL, garoudRomInfo, garoudRomName, neogeoInputInfo, neogeoDIPInfo,
garoudInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
-
yeah... that was obvious, shame on me :biggrin: thanks again...
-
Hello,
{ "253-p1.bin", 0x800000, 0xFA50E446, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
Is it the fully decrypted P rom of Garou Mark Of The Wolves ?????? As it requires a special init > return NeoSMAInit(NULL, garouWriteWordBankswitch, 0x2FFFCC, 0x2FFFF0);, just want to know......
BTW, if someone can make a patch to get this file, i'm really interested....
-
That rom is fully decrypted, but it just has the scrambling on the P removed and a happyASR watermark at the end.
The Bankswitch part is still there.
-
The Bankswitch part is still there.
:redface:
and I suppose that there isn't any fully decrypted P rom (without anything, no bankswitching, no scrambling or any other protection, no tag....in two words...fully decrypted :biggrin:
-
Nope, unless you count the prototype...
-
I've got a Samurai Shodown 5 Special decrypted romset for NeoRAGEx...
Do I need something more for this romset than this driver?
It seems to me that sound emulation isn't perfect...
tell me please... does it use Neo-PCM2 2002 chip protection???
// Samurai Shodown V Special
static struct BurnRomInfo samsh5spRomDesc[] = {
{ "272-p1.bin", 0x800000, 0x3E3961F5, 1 | BRF_ESS | BRF_PRG }, // 0 68K code
{ "272-s1.bin", 0x020000, 0xC297F973, 2 | BRF_GRA }, // 1 Text data
{ "272-c1.bin", 0x800000, 0x8548097E, 3 | BRF_GRA }, // 2 Sprite data
{ "272-c2.bin", 0x800000, 0x8C1B48D0, 3 | BRF_GRA }, // 3
{ "272-c3.bin", 0x800000, 0x96DDB28C, 3 | BRF_GRA }, // 4
{ "272-c4.bin", 0x800000, 0x99EF7A0A, 3 | BRF_GRA }, // 5
{ "272-c5.bin", 0x800000, 0x772E8B1E, 3 | BRF_GRA }, // 6
{ "272-c6.bin", 0x800000, 0x5FFF21FC, 3 | BRF_GRA }, // 7
{ "272-c7.bin", 0x800000, 0x9AC56A0E, 3 | BRF_GRA }, // 8
{ "272-c8.bin", 0x800000, 0xCFDE7AFF, 3 | BRF_GRA }, // 9
{ "272-m1.bin", 0x020000, 0xB5ABDA07, 4 | BRF_ESS | BRF_PRG }, // 10 Z80 code
{ "272-v1.bin", 0x400000, 0x32156CFE, 5 | BRF_SND }, // 11 Sound data
{ "272-v2.bin", 0x400000, 0x0E46D2F8, 5 | BRF_SND }, // 12
{ "272-v3.bin", 0x400000, 0x0E46D2F8, 5 | BRF_SND }, // 13
{ "272-v4.bin", 0x400000, 0x3F0F7554, 5 | BRF_SND }, // 14
};
STDROMPICKEXT(samsh5sp, samsh5sp, neogeo);
STD_ROM_FN(samsh5sp);
struct BurnDriver BurnDrvsamsh5sp = {
"samsh5sp", NULL, "neogeo", "2004",
"Samurai Shodown V Special\0", NULL, "Yuki Enterprise / SNK Playmore", "Neo Geo",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 2, HARDWARE_SNK_NEOGEO | HARDWARE_SNK_SRAM,
NULL, samsh5spRomInfo, samsh5spRomName, neogeoInputInfo, neogeoDIPInfo,
NeoInit, NeoExit, NeoFrame, NeoRender, NeoScan, &NeoRecalcPalette,
nNeoScreenWidth, 224, 4, 3
};
-
{ "272-v2.bin", 0x400000, 0x0E46D2F8, 5 | BRF_SND }, // 12
{ "272-v3.bin", 0x400000, 0x0E46D2F8, 5 | BRF_SND }, // 13
I think your problem lies here. Look at the CRCs of these...
-
oops... that's really silly, careless mistake... I've mixed up v-roms descriptions in this driver...
{ "272-v1.bin", 0x400000, 0x32156CFE, 5 | BRF_SND }, // 11 Sound data
{ "272-v2.bin", 0x400000, 0x0E46D2F8, 5 | BRF_SND }, // 12
{ "272-v3.bin", 0x400000, 0x3F0F7554, 5 | BRF_SND }, // 13
{ "272-v4.bin", 0x400000, 0xAD8FABB4, 5 | BRF_SND }, // 14
:biggrin: thanks again...
-
No problem :)
-
still having problems with some old dumps, such as aof3 (similar to official MAME-set, except c1-c6 roms):
{ "096-c1.bin", 0x400000, 0xf6c74731, 3 | BRF_GRA }, // 3 Sprite data
{ "096-c2.bin", 0x400000, 0xf587f149, 3 | BRF_GRA }, // 4
{ "096-c3.bin", 0x400000, 0x7749f5e6, 3 | BRF_GRA }, // 5
{ "096-c4.bin", 0x400000, 0xcbd58369, 3 | BRF_GRA }, // 6
{ "096-c5.bin", 0x400000, 0x1718bdcd, 3 | BRF_GRA }, // 7
{ "096-c6.bin", 0x400000, 0x4fca967f, 3 | BRF_GRA }, // 8
background is ok, but sprites look like a mess...
in older MAME source said:
ROM_LOAD16_BYTE( "096-c1.bin", 0x0400000, 0x200000, 0xf6c74731 ) /* Plane 0,1 */
ROM_CONTINUE( 0x0000000, 0x200000 )
ROM_LOAD16_BYTE( "096-c2.bin", 0x0400001, 0x200000, 0xf587f149 ) /* Plane 2,3 */
ROM_CONTINUE( 0x0000001, 0x200000 )
ROM_LOAD16_BYTE( "096-c3.bin", 0x0c00000, 0x200000, 0x7749f5e6 ) /* Plane 0,1 */
ROM_CONTINUE( 0x0800000, 0x200000 )
ROM_LOAD16_BYTE( "096-c4.bin", 0x0c00001, 0x200000, 0xcbd58369 ) /* Plane 2,3 */
ROM_CONTINUE( 0x0800001, 0x200000 )
ROM_LOAD16_BYTE( "096-c5.bin", 0x1400000, 0x200000, 0x1718bdcd ) /* Plane 0,1 */
ROM_CONTINUE( 0x1000000, 0x200000 )
ROM_LOAD16_BYTE( "096-c6.bin", 0x1400001, 0x200000, 0x4fca967f ) /* Plane 2,3 */
ROM_CONTINUE( 0x1000001, 0x200000 )
is there any FBA analog of MAME ROM_CONTINUE()? or some extra code needed?
thanks for your attention and patience ;)
-
Try HARDWARE_SNK_SWAPC It may work.
-
I've already tried, not working... thanks anyway...
but when I've put this code in (just an experiment)...
some progress appears (you may see differences from original code above):
{ "096-c1.bin", 0x200000, 0xf6c74731, 3 | BRF_GRA }, // 3 Sprite data
{ "096-c1.bin", 0x200000, 0x00000000, 3 | BRF_GRA }, // 3 Sprite data
{ "096-c2.bin", 0x200000, 0xf587f149, 3 | BRF_GRA }, // 4
{ "096-c2.bin", 0x200000, 0x00000000, 3 | BRF_GRA }, // 4
{ "096-c3.bin", 0x200000, 0x7749f5e6, 3 | BRF_GRA }, // 5
{ "096-c3.bin", 0x200000, 0x00000000, 3 | BRF_GRA }, // 5
{ "096-c4.bin", 0x200000, 0xcbd58369, 3 | BRF_GRA }, // 6
{ "096-c4.bin", 0x200000, 0x00000000, 3 | BRF_GRA }, // 6
{ "096-c5.bin", 0x200000, 0x1718bdcd, 3 | BRF_GRA }, // 7
{ "096-c5.bin", 0x200000, 0x00000000, 3 | BRF_GRA }, // 7
{ "096-c6.bin", 0x200000, 0x4fca967f, 3 | BRF_GRA }, // 8
{ "096-c6.bin", 0x200000, 0x00000000, 3 | BRF_GRA }, // 8
now sprites looks very strange (suppose something wrong with transparent masks and some gfx glitches still remains), however it don't look like a mess no longer, I can see figures and animation...
but I don't clearly understand, what I've done and what I should do with these c1-c6 roms...
-
Hi,
if you check an old Nebula dat, you see that C1 through C6 need to be byteswapped (not C7/C8)
System: NEO
RomName: aof3
Game: Art of Fighting 3: The Path of the Warrior
[Program]
096-p1.bin,0,100000,9edb420d,0
096-p2.bin,100000,200000,4d5a2602,0
[Text]
096-s1.bin,0,20000,cc7fd344,0
[Z80]
096-m1.bin,0,20000,cb07b659,0
[Samples]
096-v1.bin,0,200000,e2c32074,0
096-v2.bin,200000,200000,a290eee7,0
096-v3.bin,400000,200000,199d12ea,0
[Graphics]
096-c1.bin,400000,400000,f6c74731,1
096-c2.bin,400001,400000,f587f149,1
096-c3.bin,C00000,400000,7749f5e6,1
096-c4.bin,C00001,400000,cbd58369,1
096-c5.bin,1400000,400000,1718bdcd,1
096-c6.bin,1400001,400000,4fca967f,1
096-c7.bin,1800000,200000,51bd8ab2,0
096-c8.bin,1800001,200000,9a34f99c,0
[System]
CartridgeID: 96
GfxCrypt: 0
GfxKey: 0
ButLayout: 9
Fix: 1
Now, how to do that on FBA, that is a good question :p
-
Now, how to do that on FBA, that is a good question :p
Magic :D
void aof3_nrx_cx_fix()
{
for (int i = 0; i < 0x1800000; i+=0x800000) {
for (int j = 0; j < 0x400000; j++) {
int n = NeoSpriteROM[i + j + 0x400000];
NeoSpriteROM[i + j + 0x400000] = NeoSpriteROM[i + j];
NeoSpriteROM[i + j] = n;
}
}
}
int aof3nrxInit()
{
pNeoInitCallback = aof3_nrx_cx_fix;
return NeoInit();
}
-
thanks IQ, you're great! :wink: