What's new

NeoGeo Conversions for fun and (no) profit - Shinobi NeoGeo Port by Hoffman

hatmoose

Enlightened
Joined
Mar 25, 2021
Messages
1,361
Reaction score
2,862
Location
New Zealand
I'm constantly amazed by the brilliance and innovation in this hobby - have been following Hoffman's work in stunned admiration.
Can download and hopefully support here https://h0ffman.itch.io/shinobi-neogeo

This has been done before (and probably better than me) on this thread https://www.arcade-projects.com/threads/golden-axe-and-shinobi-cart-issues.33298/page-2 just posting my notes here to bring it all together in one place

So for this conversion we were using the "universal donor" PROGBK1 + CHAR512Y combo which is reasonably plentiful and well documented. No original code was harmed in the making of this conversion, its a conversion of a conversion of a bootleg - put away those pitchforks!

So from the download we get the following files
1337-c1.c1 = 512KB = 4Mbit
1337-c2.c2 = 512KB = 4Mbit
1337-m1.m1 = 64KB =1/2 Mbit
1337-p1.p1 = 512KB = 4Mbit
1337-s1.s1 = 128KB = 1Mbit
1337-v1.v1 = 4MB = 32Mbit
1337-v2.v2 = 4MB = 32Mbit

Rearranging them to fit on the boards

Prog Board (PROGBK1)
1337-v1.v1 = 4MB = 32Mbit
1337-v2.v2 = 4MB = 32Mbit
1337-p1.p1 = 512B = 4Mbit

Char Board (CHAR512Y)
1337-c1.c1 = 512KB = 4Mbit
1337-c2.c2 = 512KB = 4Mbit
1337-s1.s1 = 128KB = 1Mbit
1337-m1.m1 = 64KB =1/2 Mbit

Going to have to do some work on these to make it work
PROGBK1 only does 8 bit addressing, and the only 32Mbit EPROM we can easily get (27C322) is 16 bit addressing.
CHAR512Y only does 32MBit and 64Mbit C-roms, the Shinobi c-roms are 4Mbit
 
So for the PROG (PROGBK1) board we could proceed as follows

Prog Board (PROGBK1)
1337-v1.v1 = 4MB = 32Mbit, we could split this in half into 2 x 16Mbit chunks, then write them to 27C160 which does do 8 bit addressing

1337-v2.v2 = 4MB = 32Mbit, we could split this in half into 2 x 16Mbit chunks, then write them to 27C160 (which does do 8 bit addressing)

1337-p1.p1 = 512KB = 4Mbit, lots of things we could do here, but because I have plenty of 27C160 we're going to double it from 4Mbit to 8Mbit, then double it again from 8Mbit to 16Mbit then write to a 27C160

So that gives us
1337-v1.1.v1.1 (split first half) - Write this to a 27C160 and put it in position V1
1337-v1.2.v1.2 (split second half) - Write this to a 27C160 and put it in position V2
1337-v2.1.v2.1 (split first half) - Write this to a 27C160 and put it in position V3
1337-v2.2.v2.2 (split second half)- Write this to a 27C160 and put it in position V4
1337-p1.p1 (doubled then doubled again) - Write this to a 27C160 and put it in position P1

So how to split and double the files?
For windows I use HxD - can do all sorts of cool stuff with HxD, but for this we just need to "split" and "concatenate" (join). It's graphical so easy to check that the resulting files are indeed half of the original file (or two copies of the same data stuffed together)

IMG_0059.png

We'll do the jumpers in a bit
 
Last edited:
And for the CHA (CHA512Y) board we could proceed as follows

Quick note on JEDEC vs Non-JEDEC
All of the EPROMS On neogeo cards are non-JEDEC, with the sole exception of S1, which is JEDEC.
A lot of quite capable programmers have problems writing suitable JDEC eproms for S1 (such as the 27C301).
There is an adapter available like this https://www.arcade-projects.com/threads/jedec-to-non-jedec-adapter.11007/
Or you can do the leg swapping trick on something like a 27C
Or ask a friend to write it...

Char Board (CHAR512Y)
1337-c1.c1 = 512KB = 4Mbit, we cant use this as-is because the smallest C-rom that the 512 can address is 32Mbit, so we could double it to 8Mbit, then double it again to 16Mbit, then double it AGAIN to 32mbit, then write it to a 27C322

1337-c2.c2 = 512KB = 4Mbit, we cant use this as-is because the smallest C-rom that the 512 can address is 32Mbit, so we could double it to 8Mbit, then double it again to 16Mbit, then double it AGAIN to 32mbit, then write it to a 27C322

1337-s1.s1 = 128KB = 1Mbit, we can write this directly to a 27C301

1337-m1.m1 = 64KB =1/2 Mbit, we could double this and write to 27C1001

So that gives us
1337-c1.c1 (double double double) - Write this to a 27C332 and put it in position C1
1337-c2.c2 (double double double) - Write this to a 27C332 and put it in position C2
1337-s1.s1 (unchanged) - Write this to a 27C301 and put it in position S1
1337-m1.m1 (double) - Write this to a 27C1001 and put it in position M1

Another way we can join a file onto the end of itself (concatenate) is with the "copy" command
copy /b rom1.rom+rom2.rom romout.rom

IMG_0058.png

We'll do the jumpers in a bit
 
Last edited:
Back
Top