What's new

Derby Owners Club Horse Card (and game code) Data Analysis - Any interest?

AbolishedEnigma

Student
Joined
Jan 5, 2022
Messages
52
Reaction score
21
Location
Las Vegas
My apologies if this has been looked into before, but I attempted to search and didn't find much discussion on DOC Horse Card and game code analysis. Not sure if there is an interest here or not, but I figured I would attempt to parlay the intelligence of the group and see if there was any insight to be shared on Derby Owners Club card info and/or game code.

When I scan the card info I get three tracks of data:

[DATA]
FFFE00AE966F8A00109A000000000000000000000000000000000000DEDEB40000000000000000000000000000000000DEDEB400000040404040E6D8D8C2DAA640CAD2CECED285FE
C1FF00574B37C5000000000000000D000001000BFF0A0401212D2D00000C080101080C0002002F1F1B070E151400000200000000000019000000000000003C0000003C0000003CFF
AEFF00574B37C500000000000000000000000000000000000000000000000000000000000000000000000000000000000000001030000000000000000000FE3046454241474553FF

I have heard that Track One holds the information of the horse, Track Two is unknown, and Track Three is horse markings, silks, hoods, etc.

I can't for the life of me (probably because I am not very good at this stuff) figure out how that data corresponds to the below values of the horse. I have been using an excel spreadsheet to interpret, manipulate, and resave the changes as a new .raw file, which I then can scan to the card directly using a modified mag stripe reader/writer.


1642019058478.png


I tried looking into the macros on the sheet, but I didn't get much out of it. Again, probably due to my lack of understanding as to what I am looking at.

Another question is how this information relates to that actual code of the game rom.

I opened up "epr-22336c.ic22" of the Rev C version of DOC with a Hex Editor (any books or resources you can point me towards that would help me obtain any understanding as to what the code is doing would be greatly appreciated), and I found the cpu horse data and using one for an example:

4D 61 70 6C 65 20 53 79 72 75 70 00 00 00 00 00 00 00 00 00 00 00 00 00 27 00 00 00 13 00 00 00 22 00 00 00 F0 00 00 00 00 00 00 00 00 E0 11 F0 0F 03 06 0A 04 0C 00 00 01 - Horse #1 Maple Syrup

With the editors help, I can see the association of the horse values in the code -
ST = 39
SP = 19
SH = 34
Dirt = 240
? = 0
? = 224
? = 17
? = 240

Start = 15
Corner = 3
Out of Box = 6
Competing = 10
Tenacious = 4
Spurt = 12
Horse # = 1

I am really interested in trying to figure out what those bold values are (could be track preference long, mid, short), and I attempted to correlate the horse comments to the horse data to look for connections, but it was kind of all over the map. Not a lot of rhyme or reason to the horse comments and the horse data that I could see. And then how that jives with how the card data on the horse cards.

I guess last question which is more of a game coding question, how to I track connections between the data. In my mind it would seem to me that there is a connection between the horse data, and then the horse sayings, and maybe characters that designate which races each horse appears in, but in the code how are those associations created? Like are there invisible line traces that link sections to eachother?

Again, sorry for my elementary understanding of all of this here, but I always wanted to fully understand this game inside and out, but I have always been limited in my abilities. Any help, or links as to places I can learn about this stuff would be greatly appreciated!
 

Attachments

ST = 39
SP = 19
SH = 34
Dirt (How well horse runs in bad race conditions or dirt tracks) = 240
(Races Found in Game) = 0
Horse Color = 224
(Markings or Hood ?) = 17
Horse Type = 240

Start = 15
Corner = 3
Out of Box = 6
Competing = 10
Tenacious = 4
Spurt = 12
Horse # = 1

(Races Found in Game) = 0 - Actually it just occurred to me that this may signify which rounds of the races the horse can be found running. I believe the "3" to designate G1 races. Not sure about the "0", "1", or "2"
 
Last edited:
What I am also struggling with is where in the code the other horse data is found? Perfect example is the horse "Best Right", that we used to use to test the internal values of our new horses against before we had the reader.

The horse names are found in the code (Rev C) on "epr-22336c.ic22" beginning at line "1092930" with Best Right located at "1093899". (wxHexEditor). I can't for the life of me find where the horse values lie for each of those horses?

I am wondering if this data exists elsewhere in one of the other ROM chips and not the EEPROM itself? Derby Owners Club from what I can tell shares game data across no less than six game boards (4 player set up). That is the reason the actual game will not start unless the correct number of stations is selected. If I were to start a game and then mess around on the test mode with one of the settings on a satellite (one single game board), the game will pop a "Network Error", but will still continue. Only a fraction of the horses will continue to run and finish, though at the horse results screen they will all be the same horse name for all of the slots.

I am wondering where the actual computer horse data is stored on each game board, and where the game itself looks to in order to find that information? Because the handicap screen at the beginning of each race is contrasting all of the horse values which seem constant aside from the changing player horses (data from the horse card), the game has to be getting that information from somewhere.

I think (and I am usually wrong, but to me at least now it makes sense) that if we can locate where the game pulls that other horse data from for each horse satellite game board as the game goes along, we could trick a session of Demul into showing the game as if all of the satellites were connected? I know the game horse (non-player selected) values have to exist somewhere because the values for the CPU Horse were constant and not variable.

From what I can tell, Best Right's Internal values are around 52 (ST) 60 (SP) 54 (SH) <- which seems close, as it was impossible to steal the SP value from him at handicapping screen without a modified horse card of 60 for SP. The tie goes to the player.

Something to think about?
 
What I am also struggling with is where in the code the other horse data is found? Perfect example is the horse "Best Right", that we used to use to test the internal values of our new horses against before we had the reader.

The horse names are found in the code (Rev C) on "epr-22336c.ic22" beginning at line "1092930" with Best Right located at "1093899". (wxHexEditor). I can't for the life of me find where the horse values lie for each of those horses?

I am wondering if this data exists elsewhere in one of the other ROM chips and not the EEPROM itself? Derby Owners Club from what I can tell shares game data across no less than six game boards (4 player set up). That is the reason the actual game will not start unless the correct number of stations is selected. If I were to start a game and then mess around on the test mode with one of the settings on a satellite (one single game board), the game will pop a "Network Error", but will still continue. Only a fraction of the horses will continue to run and finish, though at the horse results screen they will all be the same horse name for all of the slots.

I am wondering where the actual computer horse data is stored on each game board, and where the game itself looks to in order to find that information? Because the handicap screen at the beginning of each race is contrasting all of the horse values which seem constant aside from the changing player horses (data from the horse card), the game has to be getting that information from somewhere.

I think (and I am usually wrong, but to me at least now it makes sense) that if we can locate where the game pulls that other horse data from for each horse satellite game board as the game goes along, we could trick a session of Demul into showing the game as if all of the satellites were connected? I know the game horse (non-player selected) values have to exist somewhere because the values for the CPU Horse were constant and not variable.

From what I can tell, Best Right's Internal values are around 52 (ST) 60 (SP) 54 (SH) <- which seems close, as it was impossible to steal the SP value from him at handicapping screen without a modified horse card of 60 for SP. The tie goes to the player.

Something to think about?
Well, I stand corrected...

Best right's internals (Rev C) are not as high as I (and the DOC community) had initially thought. Confirmed he is at 31 (ST) 53 (SP) 51 (SH).

I found the data for the CPU horses. Just formatted a bit differently than the Sires and Dams. Located in the blocks of code directly above the horse names starting at 1084920. Also of note, the game mentions "Sunday Silence" as "by far the best horse", not true. Helissio edges him by one on the Externals (290 v 289). Internal wise Texas Speedster is the strongest (159 total @ 42-56-58).

Highest Internal (Stamina) = White Star @ 60
Highest Internal (Speed) = Battle Axe (60); Penang the King (63); Romantic Moon (63); Indian Highway (63); Seven Figures (61); Blockout (61); Northern Fighter (60); Josephine (63); Sir Lancelot (60); Hector Protector (60)
Highest Internal (Sharp) = Southern Man (60)

Really interesting that the game only allows the player horse to "keep" a value of 60 max for each of the three internals while allowing CPU horses to go beyond 60. Notice I said "keep", we can write them well beyond that, but the game will re-write after each race back to 60 (in non G1 mode).

I probably won't get much response on here, I am simply documenting in the event someone else heads down this rabbit hole in the future.

Haven't looked at Rev D yet, but similar at a quick glance.
 
Thanks for this! I'm hoping to get a Derby OC World Edition setup soon, so will be joining in with you then!
Do you have your own Derby OC setup at home?
 
Three years after the fact, and I finally sat down and finished mapped everything out. Enclosed in the .zip is my spreadsheet which includes info broken down by track (1,2,3), hex position, and the notes on character limits, calculations, etc.
 

Attachments

Back
Top