Author Topic: IQ's neogeo Tools  (Read 80175 times)

Offline iq_132

  • Administrator
  • *****
  • Posts: 3753
  • Karma: +408/-0
  • Definitely not Dink!
    • NeoSource
Re: IQ's neogeo Tools
« Reply #75 on: November 04, 2007, 02:11:26 AM »
Encrypting/decrypting SMA roms isn't a big deal at all.  It's a simple bitswap and rom overlay.
Simply a matter of bitswapping + moving memory chunks.


Offline iq_132

  • Administrator
  • *****
  • Posts: 3753
  • Karma: +408/-0
  • Definitely not Dink!
    • NeoSource
Re: IQ's neogeo Tools
« Reply #76 on: December 03, 2009, 01:40:58 PM »
Here's a little tool I made for my friend kanyero.  it fixes the order of the graphics in some neogeo games. It was made in particular for emulators on the dingoo.

I haven't tested it much and it could be cleaned up and simplified, but I really just threw it together.


Offline KaNyErO

  • Member
  • ***
  • Posts: 140
  • Karma: +4/-0
Re: IQ's neogeo Tools
« Reply #77 on: December 07, 2009, 10:04:18 AM »
Here's a little tool I made for my friend kanyero.  it fixes the order of the graphics in some neogeo games. It was made in particular for emulators on the dingoo.

I haven't tested it much and it could be cleaned up and simplified, but I really just threw it together.

Thanks a lot iq.

Btw, i was able to convert kof2k3 to .mvs format used in dingoo, but the problem is that i dont have sound at all. I dont know why some games doesnt have it at all, and for example garou only play sounds and music with the prototype release (well that´s acording to the compatibility list) .... :S

We forgot to add the .txt files for world heroes :S

« Last Edit: December 07, 2009, 10:05:48 AM by KaNyErO »

Offline fosamax

  • Newbies
  • *
  • Posts: 13
  • Karma: +0/-0
Re: IQ's neogeo Tools
« Reply #78 on: February 25, 2010, 03:44:17 PM »
Finally managed to get ironclad working on the dingoo.

I don't know if Kanyero still needs that one.

Can I post the mvs file here or should I make an how to to explain how to make it work ?

By the Kanyero, which games did you manage to fix/add to the classic mvs roset v1.0 ?

Offline KaNyErO

  • Member
  • ***
  • Posts: 140
  • Karma: +4/-0
Re: IQ's neogeo Tools
« Reply #79 on: February 26, 2010, 10:49:02 AM »
Finally managed to get ironclad working on the dingoo.

I don't know if Kanyero still needs that one.

Can I post the mvs file here or should I make an how to to explain how to make it work ?

By the Kanyero, which games did you manage to fix/add to the classic mvs roset v1.0 ?

This games are playable now in native dingoo emulator:

King of fighters 2003 (without sound)
art of fighting
Fatal fury 2
ironclad
king of gladiators
king of the monsters 2
lansquenet 2004
sengoku 2
super side kicks

I should take a look at world heroes, chtd2003  and other homebrew games and hacks (plus versions and other) , but i dont have too much time now.

Since .mvs files are in fact roms, i dont think they are allowed here, but feel free to post how to convert them.


« Last Edit: February 26, 2010, 10:50:09 AM by KaNyErO »

Offline bankbank

  • Newbies
  • *
  • Posts: 24
  • Karma: +1/-0
Re: IQ's neogeo Tools
« Reply #80 on: September 03, 2021, 11:03:07 PM »
hi iq_132

is there any chance you could add kof98 to your p_dec tool? as well as add an option for re-encryption?

I want to do a romhack for kof98 and I need to be able to decrypt and re-encrypt the binary.

here is the decryption code, taken from https://raw.githubusercontent.com/ColumPaget/gngeo-cjp/master/src/neocrypt.c :

Code: [Select]
/* Kof98 uses an early encryption, quite different from the others */
void kof98_decrypt_68k(running_machine *machine)
{
UINT8 *src = memory_region(machine, "maincpu");
UINT8 *dst = alloc_array_or_die(UINT8, 0x200000);
int i, j, k;
static const UINT32 sec[]={0x000000,0x100000,0x000004,0x100004,0x10000a,0x00000a,0x10000e,0x00000e};
static const UINT32 pos[]={0x000,0x004,0x00a,0x00e};

memcpy( dst, src, 0x200000);
for( i=0x800; i<0x100000; i+=0x200 )
{
for( j=0; j<0x100; j+=0x10 )
{
for( k=0; k<16; k+=2)
{
memcpy( &src[i+j+k],       &dst[ i+j+sec[k/2]+0x100 ], 2 );
memcpy( &src[i+j+k+0x100], &dst[ i+j+sec[k/2] ],       2 );
}
if( i >= 0x080000 && i < 0x0c0000)
{
for( k=0; k<4; k++ )
{
memcpy( &src[i+j+pos[k]],       &dst[i+j+pos[k]],       2 );
memcpy( &src[i+j+pos[k]+0x100], &dst[i+j+pos[k]+0x100], 2 );
}
}
else if( i >= 0x0c0000 )
{
for( k=0; k<4; k++ )
{
memcpy( &src[i+j+pos[k]],       &dst[i+j+pos[k]+0x100], 2 );
memcpy( &src[i+j+pos[k]+0x100], &dst[i+j+pos[k]],       2 );
}
}
}
memcpy( &src[i+0x000000], &dst[i+0x000000], 2 );
memcpy( &src[i+0x000002], &dst[i+0x100000], 2 );
memcpy( &src[i+0x000100], &dst[i+0x000100], 2 );
memcpy( &src[i+0x000102], &dst[i+0x100100], 2 );
}
memcpy( &src[0x100000], &src[0x200000], 0x400000 );

free(dst);
}

thank you!