Genesis, MD, Sega CD, 32x Region Bypass/Patching Tool

Started by Tony H, May 31, 2022, 05:08:36 PM

Previous topic - Next topic

Tony H

#20
Quote from: Xhojn on August 10, 2022, 05:32:45 AMThis is an awesome tool Tony! I'm trying to patch some 32x roms and found that Tempo when patched to PAL still gives the NTSC only warning.

I just tried Tempo 32x on the new version (1.1), and it was able to bypass the region lockout so the game runs in any region.

Also tried it on the old version (the version that you have), and it was also able to bypass the region lockout.  I think the problem is that you only tried patching it to Europe/PAL.  If you patch it to USA/NTSC, it should work fine in all regions.

The new version is able to find more region checks in the Tempo 32x ROM than the old version.  Hard to tell for sure what these extra region checks are for without looking closer, but there are 14 of them.  You can try patching all 14 of them with the new version and see if it changes anything.  Just to be clear, there is no need to patch those 14 new region checks with the new version, since the game seems to run fine in all regions without patching them.  You only need to run the program once with that ROM, unless you want to try patching the rest of the 14 region checks.  The program can only patch 3 region checks at a time (of the same type).
The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Felipefpl

Quote from: Tony H on August 10, 2022, 09:27:16 AMIt's not quite ready yet.  Since there were so many changes with the new version, I'll have to test it on a lot of games to make sure everything works. Will update it on RHDN as soon as it's ready.

I understand, thanks for the info.
Core i7 Celeron Sandy Bridge G460 1.8 Ghz - 4 GB RAM - Win7 x64 - Intel HD Graphics 2000


Xhojn

Awesome thank you so much Tony! I didn't think to try setting it to USA/NSTC as I assumed it was already set to that. I will give it a try but also looking forward to version 1.1 :)

Tony H

#23
Version 1.1 is finished:

https://www.romhacking.net/utilities/1687/

Everything seemed to work fine but since there were so may changes, I might have missed something.  Let me know if you find any bugs.

EDIT: The new screenshot isn't showing up.  May have to re-submit it.

This is the new screenshot (have re-submitted it to the site):

EDIT2: Had to clear my browser cache to be able to see the new screenshot in the link above.



The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Xhojn

Hey Tony,

Thanks for the update! I've tried to patch Tempo and even though the tool now says it has patched all region checks (I loaded the rom several times) it still comes up as saying for NTSC only? I also tried patching it for USA and that still brought up the NSTC warning as well.

Tony H

#25
Quote from: Xhojn on August 12, 2022, 07:24:19 AMHey Tony,

Thanks for the update! I've tried to patch Tempo and even though the tool now says it has patched all region checks (I loaded the rom several times) it still comes up as saying for NTSC only? I also tried patching it for USA and that still brought up the NSTC warning as well.

I just tried Tempo 32x again with ver 1.1 and it seems to work fine.  When I patch it using the USA/NTSC option, it plays fine when I have my emulator (Gens) set to Europe/PAL, or on any other region.  There are a lot of matches for the type 4 region check, but I found that I only had to patch the ROM once and it booted fine after that.  The program can only patch 3 region checks of the same type at a time.  The rest of those type 4 region checks that don't get patched on the first try, might cause region problems later on in the game, so you may have to patch the rest of them later if you encounter any problems later on.  Hard to tell what all of them are for without spending some time on it.

Try using a fresh ROM and setting the region to USA/NTSC and only patching it once.  Keep in mind that if you have the "Create new ROM" option checked, it will make a new ROM that will have the word "Patched U" added to it, so it will look like this: Tempo (Japan, USA) Patched U.32x.bin    If you're creating a new ROM, make sure that's the one you use.

If it still doesn't work, let me know what you're playing on (emulator, real hardware/EverDrive, etc).

EDIT: After looking at the name of the patched ROM I posted above for Tempo, I just realized that there is a bug in the program.  The program adds ".bin" to the end of the file name for 32x ROMs.  Will have to fix that.  If you created a new ROM, try removing the ".bin" at the end.  I don't think that's the problem, but won't hurt to try.  The new ROM name should be: Tempo (Japan, USA) Patched U.32x
The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Xhojn

Yep that's done the trick thanks! Or to be more exact I started with original rom, picked USA/NTSC only and then it worked. It just seems weird to me that picking USA/NTSC allows it to work in PAL but if I pick the European/PAL option it gives the NTSC only message when I boot it  :huh:

Also I threw Lunar Eternal Blue at it, my first attempt was the same that I did for Tempo before you replied and no luck. Now I tried setting to USA/NTSC and also no luck. It comes up with the music player screen.

I'm using Kega FYI and your tool has been a life saver, I only got myself a 32X last week and have been wanting to try the games we never got!

Tony H

#27
Xhojn, glad to hear that Tempo is working now.

I agree that at first, it may seem a bit unusual how the program works as far as picking a region to patch it to.  If you click on the "Region Info" button in the program, I try to explain how it works.  With some of the region types, it actually changes what type of console the ROM thinks it's running on.  Thinking of it like that might help.  Using Tempo 32x as an example, it's a USA/Japan only ROM.  If the ROM thinks it's running on a USA/NTSC console, it will always start, even if it's actually on a European/PAL console.

With some of the other region types, it does kind of change the region of the ROM (unlike the other region types mentioned above).  Because of the different types of region checks, it makes it difficult to know which region to pick.  If there is only one region, the program will automatically pick the correct one for you, but if there's more than one region (like with Tempo) you may have to experiment.  The Patching section mentions that you may have to experiment with the 3 different regions to see what works.

Generally, if the program doesn't automatically pick the region for you, picking one of the regions that the ROM is for will usually work.  So for Tempo, the ROM says it's for USA or Japan.  You can patch it to either USA or Japan, and it will work in any region.  However, depending on the game, selecting different regions might make the game run differently, so you'll need to experiment.  You might get different languages (eg. Japanese or English), different game/music speed, etc.  Just depends on the game.


Have figured out what caused the 32x ROM naming bug I mentioned in the previous post.  When you go to open or save a 32x ROM with the program, you have to click the little arrow and select "All files" in order to see "32x" ROMs.  When the program goes to rename the 32x ROM, it couldn't find the .32x file extension it was looking for, so it just used the first one it found (which was .bin).

I added "32x" to the list of ROM files that the program will look for, and that solved the problem.  You will no longer have to select "All files" to be able to see 32x ROMs when opening or saving a file.  I will wait a few days before submitting the bug fix to RHDN, since it's a minor bug and doesn't really break anything.  Also, I want to wait to see if there are anymore bugs.


EDIT:  I'll look into Lunar Eternal Blue later, but not making any guarantees.  I'm not completely familiar with how Sega CD games use the bios to determine regions, or if the bios is used at all for regions.  Sonic CD was the only Sega CD game I tested the program on, and the program seemed to work.  Sega CD was added more or less as an experiment.  Will read up on Sega CD and see if I can figure anything out.
The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Xhojn

Hey Tony, thanks for the explanation! I think I didn't get my head around how the patching was meant to work. I thought I should pick the region I wanted it to work in and not the region it's designed for and it will do the rest  :)

I can't stress how awesome this tool is as it has opened the 32x library for me and the .bin hasn't stopped the roms from loading so I wasn't too worried.

Like I said before Lunar EB is something I have already patched manually to work in PAL (I can send what I changed if you're curious?) but wondered if it would work with the tool as I know I have already made it work in the past so I'm not needing it to be able to play  :)

Tony H

#29
Xhojn, really glad to hear that the program is useful.

When you said that you have already manually patched Lunar Eternal Blue (Sega CD) so it worked with PAL, I assume you mean you patched the BIOS?  If you mean you manually patched the ROM to get it working with PAL, please let me know how you did that.


I did some reading on how Sega CD handles regions and from what I can tell, it's the BIOS files that determine if a game will run or not in different regions.  Once the game is running, there may be more region checks within the ROM for other things.  If you open a BIOS file with this program, it will find at least one region check, but just patching that region check isn't enough to get it to work in different regions.  Luckily, there are region free BIOS files out there.  There will be specific info on where to find the region free BIOS files in the Readme, but in short, just Google something like "sega cd region free bios download".

If you open a Sega CD ROM with this program, it will often find region checks.  What these region checks do depends on the game.  With Sonic CD, they appear to change the speed of the game play and music (50/60hz) when patched with this program.  If you seem to have region problems after you get your game running with a region free BIOS, you can start patching the region checks (if the program finds any) in your Sega CD ROM to find out if that fixes anything.
The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Xhojn

Hey Tony,

The process is fiddly but I'm using the guide from here - https://www.sega-16.com/forum/showthread.php?27751-Burning-Sega-Mega-CD-Games-for-EU-(-AUS-UK-NZ)-US-Japan-Regions but using Zyrobs comment on 07-05-2014, 03:00 AM specifically with using CDMage (version 1.2.1 specifically as I had issues with the more regularly available older version). As it's been a year and a half since I did this I forgot the actual process but you use CDMage to extract an image from the Sega CD game, convert it using ConvSCD and then extract the changed file and import back into the original image.

It's not a simple job which if your tool could get around this I thought would be great. If any of this has interested you and you want any files let me know.

Tony H

#31
Thanks for the info, Xhojn!  Had never heard of ConvSCD that is mentioned in that link, so gave it a try.  It seemed to work fine on the very first try.  Just learned that a Sega CD ROM can be converted to work in different regions.  Neat stuff.  Since there are two different ways to get a Sega CD to run in different regions (ConvSCD or a region free bios), I probably won't add anything like that to my program right now.  Maybe later when I understand better how regions work with Sega CD.  Keep in mind that my Region Bypass program can still be useful after you get a Sega CD running in a different region, since it can find region checks further in the ROM.

While I was fixing the 32x patching/naming bug mentioned above, I realized that there were a couple Sega CD ROM file extensions that had the same problem (.img and .iso).  Have fixed all three, and all 3 are now included in the file search when you open or save a file (you no longer have to click the litte down arrow and select "All files"). 

Will submit the updated version shortly to RHDN that has the bug fix.  It will also include some Sega CD info mentioned above, as well as a little info on how to patch Streets of Rage 2 (US) to get the Bare Knuckle logo and Japanese text.
The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Tony H

The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Xhojn

Hey Tony, always happy to help and thank you for the update!

Gilded_Falcon

Great tool.  I can now play Street Fighter 2 remaster.  It plays fine after converting to region locked us to PAL.  However, some of the levels colours are wrong, has anyone else seen anything similar on other games?  Is there a way to fix this?

Tony H

Quote from: Gilded_Falcon on October 06, 2022, 04:01:03 PMGreat tool.  I can now play Street Fighter 2 remaster.  It plays fine after converting to region locked us to PAL.  However, some of the levels colours are wrong, has anyone else seen anything similar on other games?  Is there a way to fix this?

Do you think it's the region bypass tool that's causing the the color problem, or does the color problem occur even before using the region tool?
The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides

Timfollery

Quote from: Tony H on August 11, 2022, 02:34:01 PMVersion 1.1 is finished:

https://www.romhacking.net/utilities/1687/

Hey, great tool! Thanks!
I'm taking my first steps in romhacking, focusing on the Mega Drive. This is a great debugging study tool, especially given the unsatisfying amount of proper programs and documentation for hacking purposes on the MD/GEN, when in comparison to the well-fed SNES, NES and GBA. I have a new favourite toy!

But...
After reading this topic, the program readme file and searching around the net, I'm still stuck with a question: you talked about "region check types"; the program even refers to them by number. But I couldn't find any list or description about how these types of region check actually work. Even if they are common/generic routines, I'm very interested on the kinds of checks each rom does, and which registers and values they read - especially after reading about the region detection features (not necessarily lockouts) on games like Bare Knuckle 2, Mystic Defender, Mickey Mania, OutRun and The Revenge of Shinobi.

Is there such a list?
Unfortunately, as you probably already know, people

Tony H

#37
Quote from: Timfollery on October 29, 2022, 10:24:16 PMIs there such a list?

Hi, there isn't a list for the 7 different types of region checks that are used in the program, but I can put a quick one together.  Keep in mind that the numbers assigned to them were mostly arbitrary.  I started with the most popular region checks that I had run into.

The program uses pattern searches to find the different types of region checks.  I will list the 7 different patterns below so you can see what it is actually searching for in the ROM.  You can duplicate the same thing with a hex editor if you want to see how it works.  I'll also include my comments at the time for each one.  Glad I added those comments back then, because I had forgotten some of this. lol.

1) { 0x10, 0x39, 0x00, 0xA1, 0x00, 0x01 }; //loads console info/region into register D0 (very common method)

2) { 0x11, 0xF9, 0x00, 0xA1, 0x00, 0x01 }; //loads region into a RAM address (Alien Storm, Mystic Defender (Korean), etc)

3) { 0x41, 0xF9, 0x00, 0xA1, 0x00, 0x01, 0x10, 0x10 }; //puts 00A10001 into reg A0, then loads value from A0 into reg D0 (Mickey Mania)

4) { 0x30, 0x39, 0x00, 0xC0, 0x00, 0x04 }; //uses 00C00004 (bit zero) to check console region (changed with ver 1.1)... 
                                                           //bit zero: 0 = NTSC, 1 = PAL  (Robocop vs Terminator)(added Smurf1, Smurf2 w/ver 1.1)

5) { 0x08, 0x39, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x05 }; //00C00005, bit zero: 0 = NTSC, 1 = PAL  (TinTin au Tibet)

6) { 0x08, 0x39, 0x00, 0x06, 0x00, 0xA1, 0x00, 0x01 }; //BTST#6 00A10001 (Streets of Rage 2) check 66xx versus 67xx??
                                                                            //Bit #6 is for Europe?  Bit #7 is for USA?  Japan doesn't use either?

7) { 0x08, 0x39, 0x00, 0x07, 0x00, 0xA1, 0x00, 0x01 }; //BTST#7 00A10001 (Streets of Rage 2)
                                              //Bunch of BIT#7 matches are probably for English or Japanese text? (first match SoR2 is for region check)


As you can see, 6 out of the 7 use either 00A10001 or 00C00004/5 to do region checks.  If you Google those, there is some info out there.  00C00004/5 is pretty straight forward and uses bit 0 (mentioned above) to determine if it's NTSC or PAL.  00A10001 is a little more involved, but Google should help with that. 

The notes also list some of the games that the specific region checks work on.  These were just commented notes to myself, so let me know if you need more info on any of them.

EDIT: There is a little more info for region check number 2 here: https://www.romhacking.net/forum/index.php?msg=430624
The Code Hut: http://codehut.gshi.org/

Game Genie codes and ROM hacking guides