Help with modifying ProYakyuu and ProYakyuu 87 games.

Started by ProfessorW, 09/12/25, 11:08:11 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ProfessorW

Hi.
I have been working in translations for Pro Yakyuu (therefor PY) and Pro Yakyuu 87 (therefor PY87) ROMs (we can think of RBI Baseball as a sort of Pro Yakyuu 86.5), I have included them here if you want to give them a try. The idea is to change all the text in japanese to western
characters.

One of the main differences between these two games and RBI Baseball is the length of the player name. In RBI Baseball is 6 char long, in these two japanese games is 4 char long.
Further Pro Yakyuu games use player names of 5 char long.
Apparently patches existed according to this page (https://web.archive.org/web/20070603224952/http://wakaranai.hp.infoseek.co.jp/famista/namae5moji.shtml), but it does not exists anymore and only archive.org snapshots prevail (translated image provided). However it gives enough tech info on how to achieve it.

I've played with Mesen emulator and it's PPU debugger, and found that modifying the following PPU address gives the desired effect

Batter-Pitcher instance
$2328 - 5th character 1P player
$233E - 5th character CM/2P player

SELECT PITCHER 5th character locations
$2988 - 1st pitcher 1P
$29C8 - 2nd pitcher
$2A08 - 3rd pitcher
$2A48 - 4th pitcher
$299B - 1st pitcher CM/2P
$29DB - 2nd pitcher
$291B - 3rd pitcher
$295B - 4th pitcher

Unfortunately I lack the assembly skills to properly modify the rom. So, I'm asking for help here. The idea is to copy from the offset F of the player data to the accordingly PPU address.

I hope someone can help me with this one. It'll make more readable the rom when using players with western names.

If you're wondering, yes, I want to change teams and players in all ProYakyuu games like we can do in RBI Baseball. It'll take years, but I've working in my spare time.

Thanks in advance.


Beastmode

Ok I can probably help here as an RBI editor myself. Here are a couple questions:

1. Do you just want to apply the 5-letter patch or the patch and be able to change the player and team names?
2. Do you have the rom(s) you want to edit?
3. Do you know the hex location for where the names are on the rom?

Please let me know about the above stuff and then I will see what I can do. Thanks!
Why is there crying in RBI?? There's no crying in baseball!

NoroNoro

Hello. I am Japanese and I am interested in developing tools and making modifications for Famista (RBI Baseball), and that's why I joined this forum.
However, my English is not very strong, and my understanding of assembly is still limited.

Even so, I would like to learn here and hopefully contribute little by little. Thank you for having me.

-----
I think the paga document you referenced is from the time when the purpose of offsets 0E and 0F was still unknown.
As far as I know, offset 0F is now understood to store the pitcher's pitch distribution data.
So it may not be suitable to use it directly as the 5th character of the player's name.

I'm still learning assembly, so my knowledge is limited, but I hope this helps.


===============================================================

こんにちは。私は日本人で、ファミスタ(RBI Baseball)のツール開発や改造に興味があり、ここに参加しました。
ただし、私は英語があまり得意ではありません。また、アセンブラについてもまだ理解が浅い状態です。

それでも、このフォーラムで学び、少しずつでも貢献できればと思っています。どうぞよろしくお願いします。

-----
参考にされた paga の資料は、オフセット 0E と 0F の用途がまだ不明とされていた頃のものだと思います。
私の理解では、オフセット 0F には投手の投げ分けデータが格納されていることが分かっています。
そのため、選手名の 5 文字目としてそのまま使うのは適切ではないかもしれません。

私はまだアセンブリを勉強中で知識も限られていますが、少しでも参考になれば幸いです。
I'm Japanese, so please excuse any mistakes in my English!
(日本語を話す日本人です。英語に間違いがあってもご容赦ください!)

Gantry

Welcome ProfessorW and NoroNoro, who (I think) is our first Japanese member! Do not worry about your English, we understood you 100% and if there are any mistakes we will help you.

Any sort of work on FamSta is certainly welcome, though I have to admit I didn't do much if any work on it back when I studied the code and the the "two player pause" and "pick the same team" ROM hacks.

BeefMaster

Yeah... I always found this stuff EXTREMELY cool, but I also didn't know assembly well enough to actually contribute to the discussions, just enough that I could (usually) understand some of what nightwulf was talking about.
"Nobody in football should be called a genius. A genius is a guy like Norman Einstein." - Joe Theismann

BeefMaster

And I will second Gantry's comment to NoroNoro - your English is great, and it's definitely 100000000% better than I would be in any non-English language.
"Nobody in football should be called a genius. A genius is a guy like Norman Einstein." - Joe Theismann

ProfessorW

Quote from: Gantry on 09/16/25, 05:22:52 AMWelcome ProfessorW and NoroNoro, who (I think) is our first Japanese member! Do not worry about your English, we understood you 100% and if there are any mistakes we will help you.

Any sort of work on FamSta is certainly welcome, though I have to admit I didn't do much if any work on it back when I studied the code and the the "two player pause" and "pick the same team" ROM hacks.

Thanks for the welcome.

Quote from: NoroNoro on 09/16/25, 04:15:42 AMHello. I am Japanese and I am interested in developing tools and making modifications for Famista (RBI Baseball), and that's why I joined this forum.
However, my English is not very strong, and my understanding of assembly is still limited.

Even so, I would like to learn here and hopefully contribute little by little. Thank you for having me.

-----
I think the paga document you referenced is from the time when the purpose of offsets 0E and 0F was still unknown.
As far as I know, offset 0F is now understood to store the pitcher's pitch distribution data.
So it may not be suitable to use it directly as the 5th character of the player's name.

I'm still learning assembly, so my knowledge is limited, but I hope this helps.


===============================================================

こんにちは。私は日本人で、ファミスタ(RBI Baseball)のツール開発や改造に興味があり、ここに参加しました。
ただし、私は英語があまり得意ではありません。また、アセンブラについてもまだ理解が浅い状態です。

それでも、このフォーラムで学び、少しずつでも貢献できればと思っています。どうぞよろしくお願いします。

-----
参考にされた paga の資料は、オフセット 0E と 0F の用途がまだ不明とされていた頃のものだと思います。
私の理解では、オフセット 0F には投手の投げ分けデータが格納されていることが分かっています。
そのため、選手名の 5 文字目としてそのまま使うのは適切ではないかもしれません。

私はまだアセンブリを勉強中で知識も限られていますが、少しでも参考になれば幸いです。

Well, since my main language is not english (I'm spaniard, living in Mexico), and I understood you quite fine, you can be sure your english is quite fine also.

Thanks for the info about the last byte of pitcher data, I did not know that.

Quote from: Beastmode on 09/15/25, 06:40:22 PMOk I can probably help here as an RBI editor myself. Here are a couple questions:

1. Do you just want to apply the 5-letter patch or the patch and be able to change the player and team names?
2. Do you have the rom(s) you want to edit?
3. Do you know the hex location for where the names are on the rom?

Please let me know about the above stuff and then I will see what I can do. Thanks!

Thanks for the help. Answering your questions:

1. Yes, I'm currently working on the data, and I want to standarize this rom (and ProYakyuu 87) with the rest of FamSta NES games which uses 5 characters. It would make things a bit easier.
2. Yes, I have them, are from the NoIntro packages. I can post them here if needed.
3.
It's a headered rom:

teamNumber starts at $10.
16 bytes per player, 16 players. So next team starts at $110 and so on, until $A0F.

BOTH HITTERS AND PITCHERS
Byte 00 - playerNumber.
Bytes 01 to 04 - Name.

The structure is quite similar to RBI Baseball, if you need the full structure it I can post it.

Since last byte of pitcher data is already used (as NoroNoro said), the next proposal would be storing the extra data in an empty or unused section in the rom (unfortunately I don't know how to properly identify it) of 160 continuous bytes, one per player, and calculated:

Offset + ((teamNumber * 16) + playerNumber)

Both teamNumber and playerNumber starts counting at 0.

If more info is needed, let me know.

ProfessorW

Forgot to tell.

The values in the table used for names in FamSta roms range from 00 to 57, so don't be surprised when these values appear at the hex location of names.

NoroNoro

I feel relieved that my English was understood, and I'm really glad that a Spaniard like you has such interest in Japanese baseball — thank you for that!

About the offset values $0E and $0F: these are the data used for the COM's pitching variation, and they are referenced randomly.
If the value is $80, the pitcher aims straight down the middle.
If it's $75, he aims at the left corner of home plate, and if it's $8B, he aims at the right corner.

It seems the two values define the "range" of where the COM will randomly aim, and that's how the game expresses each pitcher's characteristics.
However, in many Japanese ROM hacks of "Pro Yakyuu - Family Stadium" and "Pro Yakyuu - Family Stadium '87", these bytes were not well understood, so they were often reused for names or other unrelated purposes.

=======================================================

私の英語が通じて安心しましたし、スペインの方が日本の野球に興味を持ってくれていることにとても感謝しています。ありがとうございます!

オフセット 0E と 0F についてですが、これはCOMが投げ分けを決めるためのデータで、ゲーム中にランダムで参照されます。
仮に、値が $80 のときはど真ん中を狙います。
仮に、$75 の場合はホームベースの左隅を狙い、$8B の場合は右隅を狙います。

この2つの値によってCOMがランダムに投げる範囲が決まり、投手の個性が表現されているようです。
しかし、多くの日本人による 『プロ野球 ファミリースタジアム』 や 『プロ野球 ファミリースタジアム 87年度版』 のハックROMでは、この仕組みが十分に理解されておらず、名前など別の用途に流用されているケースが多いようです。
I'm Japanese, so please excuse any mistakes in my English!
(日本語を話す日本人です。英語に間違いがあってもご容赦ください!)

ProfessorW

I have been living for a few years in a mexican city with the oldest baseball team (Sultanes de Monterrey) still around, since I got sick of local sports media talking only of soccer (football) I got hooked with baseball.

Thanks for the info about offsets $0E and $0F in PY and PY87 pitcher data. For what I understand these values cannot be calculated from real stats like struckouts or ERA, so it's better to not touch them. And also explains some weird behaviour in my earlier experiments, when I modified those offsets thinking it was harmless.

Can I also request your help with some IPs patches I found on another FamSta japanese site? I have trouble understanding what effect some of them have on the game.

Gantry

Pasé dos meses en MTY hace 8 años (creo), cerca de barrio antiguo. Buen pedos los regios... I didn't see the Sultanes though, buddy took me to the Rayados - like you said everyone is soccer crazy there. 

ProfessorW

Things have changed a bit, around 6 or 7 years, Grupo Multimedios, an important media network here acquired shares of the club (at the same time they lost the economical favor of one of the local soccer teams), and since then, the marketing of the team has improved considerably. You can find caps in supermarkets and flea markets, unconceivable 7 years ago. Those guys literally sell shit in their produced shows, but they're incredibly good at selling them.

Also, they are more worried making money of using the (right now called) Walmart Park for musical shows than the team winning championships.  :D

NoroNoro

My understanding of assembly is still limited, so I'm not sure how much I can do. But if there's anything I can help with, I'll be glad to try.

===================================================

アセンブラについてもまだ理解が浅いので、どこまでできるか判りませんが、私にできることであればお手伝いさせてください。
I'm Japanese, so please excuse any mistakes in my English!
(日本語を話す日本人です。英語に間違いがあってもご容赦ください!)

Beastmode

Quote from: ProfessorW on 09/17/25, 10:17:52 AM
Quote from: Gantry on 09/16/25, 05:22:52 AMWelcome ProfessorW and NoroNoro, who (I think) is our first Japanese member! Do not worry about your English, we understood you 100% and if there are any mistakes we will help you.

Any sort of work on FamSta is certainly welcome, though I have to admit I didn't do much if any work on it back when I studied the code and the the "two player pause" and "pick the same team" ROM hacks.

Thanks for the welcome.

Quote from: NoroNoro on 09/16/25, 04:15:42 AMHello. I am Japanese and I am interested in developing tools and making modifications for Famista (RBI Baseball), and that's why I joined this forum.
However, my English is not very strong, and my understanding of assembly is still limited.

Even so, I would like to learn here and hopefully contribute little by little. Thank you for having me.

-----
I think the paga document you referenced is from the time when the purpose of offsets 0E and 0F was still unknown.
As far as I know, offset 0F is now understood to store the pitcher's pitch distribution data.
So it may not be suitable to use it directly as the 5th character of the player's name.

I'm still learning assembly, so my knowledge is limited, but I hope this helps.


===============================================================

こんにちは。私は日本人で、ファミスタ(RBI Baseball)のツール開発や改造に興味があり、ここに参加しました。
ただし、私は英語があまり得意ではありません。また、アセンブラについてもまだ理解が浅い状態です。

それでも、このフォーラムで学び、少しずつでも貢献できればと思っています。どうぞよろしくお願いします。

-----
参考にされた paga の資料は、オフセット 0E と 0F の用途がまだ不明とされていた頃のものだと思います。
私の理解では、オフセット 0F には投手の投げ分けデータが格納されていることが分かっています。
そのため、選手名の 5 文字目としてそのまま使うのは適切ではないかもしれません。

私はまだアセンブリを勉強中で知識も限られていますが、少しでも参考になれば幸いです。

Well, since my main language is not english (I'm spaniard, living in Mexico), and I understood you quite fine, you can be sure your english is quite fine also.

Thanks for the info about the last byte of pitcher data, I did not know that.

Quote from: Beastmode on 09/15/25, 06:40:22 PMOk I can probably help here as an RBI editor myself. Here are a couple questions:

1. Do you just want to apply the 5-letter patch or the patch and be able to change the player and team names?
2. Do you have the rom(s) you want to edit?
3. Do you know the hex location for where the names are on the rom?

Please let me know about the above stuff and then I will see what I can do. Thanks!

Thanks for the help. Answering your questions:

1. Yes, I'm currently working on the data, and I want to standarize this rom (and ProYakyuu 87) with the rest of FamSta NES games which uses 5 characters. It would make things a bit easier.
2. Yes, I have them, are from the NoIntro packages. I can post them here if needed.
3.
It's a headered rom:

teamNumber starts at $10.
16 bytes per player, 16 players. So next team starts at $110 and so on, until $A0F.

BOTH HITTERS AND PITCHERS
Byte 00 - playerNumber.
Bytes 01 to 04 - Name.

The structure is quite similar to RBI Baseball, if you need the full structure it I can post it.

Since last byte of pitcher data is already used (as NoroNoro said), the next proposal would be storing the extra data in an empty or unused section in the rom (unfortunately I don't know how to properly identify it) of 160 continuous bytes, one per player, and calculated:

Offset + ((teamNumber * 16) + playerNumber)

Both teamNumber and playerNumber starts counting at 0.

If more info is needed, let me know.


If you have the full rom hex layout that would be amazing please send
Also, please send the roms, just so I know I have the right ones
One question: what does the patch u mentioned earlier do and is the one you posted on your original message the name patch or something else?
Why is there crying in RBI?? There's no crying in baseball!

Ninja Baseball Batman

It would be awesome to modify some of the famista games with RBI rosters. I can't recall which game it is but it has a box showing the batters statistics for game

ProfessorW

#15
This is the layout of the ROM (included in the zip, alongside patch for the WIP translation) according to my notes:

Player Data
Starts at $10
16 bytes per player
BOTH BATTER AND PITCHER
 Byte 0 - numPlayer
 Byte 1 to 4 - Name

BATTER
 Byte 5 - Bats (0 R, 1 L)
 Byte 6 - Batting Average - 150
 Byte 7 - Homeruns
 Byte 8 - Contact
 Byte 9 - 2nd byte of power
 Byte A - 1st byte of power (ie, if $19 = B8, and $1A = 02, it should be read as x2B8)
 Byte B - Speed 

PITCHER
 Byte 5 - Throws (values 0 to 3)
   00 - Right Over
   01 - Left Over
   02 - Right SideArm
   03 - Left SideArm
 Byte 6 - ERA * 10
 Byte 7 - Sink Speed
 Byte 8 - Curve Speed
 Byte 9 - Fastball
 Byte A - Curve Right
 Byte B - Curve Left
 Byte C - Sink Skill
 Byte D - Stamina

TEXT AT INTRO SCREEN
 Copyright: $2F51 (17 bytes)
 License: $2F65 (19 bytes)
 Teams: $30EA (24 bytes)

TEAM INFO
NAME: 1 byte, starts at $B058, 10 continuous bytes.

COLORS
Two Sections:
SECTION 1: Starts at $3239, 3 bytes per team
 Byte 1 - Cap
 Byte 2 - Skin
 Byte 3 - Uniform

SECTION 2: Starts at $9E76, 4 bytes per team
 Bytes 1-3: same as above
 Byte 4: Color of public when team is playing, look at screenshot in the post

*** TILES, not direct data.
LOGOS (Used in Scoreboard)
Even when there is one letter, it uses two sprites
Team G (1): $11818 (Letter 1), $11838 (Letter 2)
Team L (2): $11858 (Letter 1), $11878 (Letter 2)
Team R (3): $11898 (Letter 1), $118B8 (Letter 2)
Team C (4): $118D8 (Letter 1), $118F8 (Letter 2)
Team T (5): $11918 (Letter 1), $11938 (Letter 2)
Team F (6): $11958 (Letter 1), $11978 (Letter 2)
Team W (7): $11998 (Letter 1), $119B8 (Letter 2)
Team D (8): $119D8 (Letter 1), $119F8 (Letter 2)
Team S (9): $11828 (Letter 1), $11848 (Letter 2)
Team N (10): $11868 (Letter 1), $11888 (Letter 2)

Also in these places
Team G (1): $150B8
Team L (2): $150C8
Team R (3): $150F8
Team C (4): $15108
Team T (5): $15138
Team F (6): $15148
Team W (7): $15178
Team D (8): $15188
Team S (9): $151B8
Team N (10): $151C8

LOGOS in NEWSPAPER at end of match
Even when there is one letter, it uses two sprites
Team G (1): $10C10 (Letter 1), $10C30 (Letter 2)
Team L (2): $10C50 (Letter 1), $10C70 (Letter 2)
Team R (3): $10C90 (Letter 1), $10CB0 (Letter 2)
Team C (4): $10CD0 (Letter 1), $10CF0 (Letter 2)
Team T (5): $10D10 (Letter 1), $10D30 (Letter 2)
Team F (6): $10D50 (Letter 1), $10D70 (Letter 2)
Team W (7): $10D90 (Letter 1), $10DB0 (Letter 2)
Team D (8): $10DD0 (Letter 1), $10DF0 (Letter 2)
Team S (9): $10E10 (Letter 1), $10E30 (Letter 2)
Team N (10): $10E50 (Letter 1), $10E70 (Letter 2)

Hope it helps.



ProfessorW

I forgot. The IP Patches I mentioned were downloaded from this site (use Google Translate)

http://www.ttttom.website/Mayuemp/Famista/Patch/Patch.html

Basically are zips with a lot of IPS patches, including a README in japanese. The description of some patches in the README did not make too much sense to me, but probably the same README file was used in all the packs for all the different FamSta games.

@NoroNoro, I was more interested in what the README says for some of the patches, that was I tried to wrote in the previous post.

Many of them break the game, but a couple of them are interesting: DH, Uniform_94 (including screenshot of this one when applied to the game). I want to test the 2P one, which if I understood the file, allows second player to pause the game.

ProfessorW

Quote from: Ninja Baseball Batman on 09/18/25, 11:39:36 AMIt would be awesome to modify some of the famista games with RBI rosters. I can't recall which game it is but it has a box showing the batters statistics for game

It's my goal, but not only with RBI rosters.
But patience, probably will take me years.

BeefMaster

Quote from: ProfessorW on 09/18/25, 03:37:58 PMI want to test the 2P one, which if I understood the file, allows second player to pause the game.

This is something that nightwulf had built into standard RBI at one point, so it's definitely possible, and the code might be in a forum thread here as well.
"Nobody in football should be called a genius. A genius is a guy like Norman Einstein." - Joe Theismann

Gantry

I'm pretty sure I wrote/modified the code for the second player pause in US RBI, but I don't remember any details. I doubt I have any files on it, unless I made a forum post with the specifics.