Help needed with changing text in Streets of Rage/SoR1

Started by power7714, May 16, 2018, 11:50:17 PM

Previous topic - Next topic

power7714

I've tried to locate a table file for SoR1 that used to exist years ago but can't find it anywhere. I tried creating my own using Kenssharp combined with Hexposure but with no success. Seems that the numbers changed but not the letters. No matter how I try to search for the string "Axel", I get a "string not found" error. I've been at this for months trying to figure this out and could really use the help.

I'm just trying to change Axel's name to Kalax and add "Kalax Edition" to the title screen. If anyone knows how to do this or can assist me in doing this, I would GREATLY appreciate it.

shadow501

You cannot change Alex name and other, Because the name players in the game compressed.

power7714

Ok. So I'm sure it would be extremely difficult/challenging to do or impossible but I'd like to at least try. Do you know by chance what the compression method was that was used back then? Was it Enigma? Or, would it be possible to convert a gamegear rom to a genesis rom?

Psyklax

You know, this really doesn't sound that difficult. You're only changing a single name. You'll just need to look at the VRAM when his name comes up and use the debugger to figure out where it comes from. Granted, if you're not familiar with 68k assembly it'll be a challenge. If I get time today, I'll look at it myself.

The only question mark is how easy it'll be to replace a four-letter name with a five-letter one. Then editing the title screen is an unknown at this point. I'll have a look.

Jazz

To help you quickstart on the tablefile here is how the text is stored.

The introduction associates whole words to bytes and not full sentences. I'm not sure how this part is stored...
If you want to see these whole words I've put a table below but you don't need one as it's standard Ascii values. Use a hex editor and goto the below address.

Hex Address: 0x3516C (No table file required but here are the values below incase you wanted to make one)
20=
21=!
22="
23=#
24=$
25=%
26=&
27='
28=(
29=)
2A=*
2B=+
2C=,
2D=-
2E=.
2F=/
30=0
31=1
32=2
33=3
34=4
35=5
36=6
37=7
38=8
39=9
3A=:
3B=;
3C=<
3D==
3E=>
3F=?
40=@
41=A
42=B
43=C
44=D
45=E
46=F
47=G
48=H
49=I
4A=J
4B=K
4C=L
4D=M
4E=N
4F=O
50=P
51=Q
52=R
53=S
54=T
55=U
56=V
57=W
58=X
59=Y
5A=Z
5B=[
5C=・
5D=]
5E=^


Then after this words use two bytes uch as GAME OVER, OPTIONS etc
i.e. so the table file will be something like the below...
2011=
4111=A
4211=B
4311=C
4411=D
4511=E
4611=F
4711=G
4811=H
4911=I
4A11=J
4B11=K
4C11=L
4D11=M
4E11=N
4F11=O
5011=P
5111=Q
5211=R
5311=S
5411=T
5511=U
5611=V
5711=W
5811=X
5911=Y
5A11=Z


Regarding Axel's name, for character selection it's stored as a graphic
0x26C88 (Format: SMS in Tilelayer Pro)

I made a really quick change and it seems this is the graphic for the name. It's not compressed.



The name in the profiles is also stored as a graphic and is stored
Hex Address: 0x34E90

Hope this helps.
Discord: Jazz#9202

Psyklax

Quote from: Jazz on May 22, 2018, 02:45:51 AM


That's the Master System. I know the OP didn't mention which system, but I would assume he meant the Genesis, no?

Jazz

Heh, probably considering the aesthetics are far better. Well... maybe that info will help someone.
Discord: Jazz#9202

Psyklax

Okay, I've made a start, but there's work to be done if you want to do it how you want. :)

After reading documentation about how the Genesis's VDP works, I found that BG A and B start at $C000 and $E000 respectively in VRAM. I then looked in VRAM in Bizhawk and found Axel's name, and searched the ROM for the same bytes I saw (they were 16-bit values - two bytes - so I cut off the high byte as I assumed they wouldn't be in the ROM). This led me to find Axel's name on the selection screen at $72032 in the ROM. Beware that if you want to use a five-letter name (like Blaze) we'll have to find the instruction that tells the game to look there and change it to look elsewhere, then put the new name in that new place.

I used the same method, and discovered the name in the opening crawl at $3FCED - the table file is easy as 00 is a space and 01 upwards is the alphabet.

The name in the bio wasn't so easy to locate, but I just assumed the ROM would use the same table mentioned above for it, and it certainly did. :) You can find it at $3FA03.

I assume that's the only three locations of Axel's name in the game (unless he's mentioned in the ending, but that'll be easy enough to find). If you want to replace his name with one of the same length, now you can! :D (just remember to use Fix CheckSum if you're going to go hacking Genesis ROMs) But if you want his name to be longer, we'll need a bit more work.

Fix CheckSum: http://www.romhacking.net/utilities/342/

power7714

Thanks for the help on this everyone!!!

So this is for the Genesis ROM. I'm using the JUE version. I've already converted into bin format for editing.

Tools I'm using.
Hexposure via a dos emulator
Kenssharp for the decompression which just gave what looks like a font table as the result. Only the enigma compression worked.
Hex Workshop.

Palettes of Rage jar file won't execute on my system. I have a Windows 10 laptop with JRE 8.0

Fusion as the emulator. Was going to use Emulicious but just like PoR it fails to run. I get a Java runtime exception error.

As for the addresses that everyone has referenced, I'm not too familiar with Assembly although I've tried. Where in the hex editor would I find those addresses that are mentioned with the "$" prefix?

Psyklax

Quote from: power7714 on May 23, 2018, 06:24:03 PM
Hexposure via a dos emulator

:huh:

Just get HxD, unless you want extra hipster points for doing hex editing in DOS.

And although I'm sure Kega Fusion will do, I used Bizhawk as it has pretty good debug options, but I've yet to find the perfect debugging Genesis emulator (Mednafen and one of the mods of Gens are good too).

Regarding the addresses, those are ROM addresses. If you open the ROM in a hex editor, you can go to those addresses and find what I mentioned. I use $ to show it's hexadecimal, not decimal (some people use 0x instead).

Also, what does "converted into bin format for editing" mean? A ROM is a ROM. I just used the standard GoodGEN rip.

So I've given you the three locations I know of with Axel's name, you can mess around with that and see the results. With a bit more work, I could do it for you. :)

power7714

I was using hexposure because it was the only one I found recommended that would allow for font tables.

I meant "bin" format because the rom was originally in smd format.

I've tried searching the addresses mentioned above in multiple hex editors and they weren't present :/

Any help I can get on this would be very much appreciated. I'm not familiar with TileLayer Pro.