Sign in to follow this  
hurricane55

Coach K 2010 Edit Done.

Recommended Posts

New to this site, i have helped succesfully hack tecmo super bowl 3 for snes into a NCAA ROM. I want to "update" coach K for the gen, have done some simple finding, but when i edit the team name or any attributes the game won't load. Ironically i "balance" the editing out, ie Make Duke Cuke and Florida Glorda...it will load. I can change pointers as long as they are swapped as welll, ie the pointer for Alabama has to be switched, can't have 2 pointers the same. Any help or expertise would be apprecitaed . I came here because NHL 94 is a EA sports title and i was hoping that someone mightknow what's happening. I do know when i debug the faulty ROM, it get a bad opt code at 01fe050.....on the good rom it skibs to 13B4 at the EA logo startup. Any help or direction to the right people would be appreciated.

Share this post


Link to post
Share on other sites
New to this site, i have helped succesfully hack tecmo super bowl 3 for snes into a NCAA ROM. I want to "update" coach K for the gen, have done some simple finding, but when i edit the team name or any attributes the game won't load. Ironically i "balance" the editing out, ie Make Duke Cuke and Florida Glorda...it will load. I can change pointers as long as they are swapped as welll, ie the pointer for Alabama has to be switched, can't have 2 pointers the same. Any help or expertise would be apprecitaed . I came here because NHL 94 is a EA sports title and i was hoping that someone mightknow what's happening. I do know when i debug the faulty ROM, it get a bad opt code at 01fe050.....on the good rom it skibs to 13B4 at the EA logo startup. Any help or direction to the right people would be appreciated.

Did the other thread you posted in solve your problem? (or just give a starting point)

EDIT: oh, Coach K is a genesis game, i thought you were talking about a SNES game so was surprised it would work..

Edited by smozoma

Share this post


Link to post
Share on other sites
Did the other thread you posted in solve your problem? (or just give a starting point)

EDIT: oh, Coach K is a genesis game, i thought you were talking about a SNES game so was surprised it would work..

Hey guys, I'm going to be coding the editor for this project...I know Hurricane mentioned that he had to load it into some strange format for him to be able to edit with Cygnus...is that because it's compressed? Is there anything I have to do to be able to read the data in code? I've written several editors before, but it was mostly straight pulls from pointer tables, straight text, or converting hex to dec...any insight you can provide is appreciated...

Share this post


Link to post
Share on other sites
Hey guys, I'm going to be coding the editor for this project...I know Hurricane mentioned that he had to load it into some strange format for him to be able to edit with Cygnus...is that because it's compressed? Is there anything I have to do to be able to read the data in code? I've written several editors before, but it was mostly straight pulls from pointer tables, straight text, or converting hex to dec...any insight you can provide is appreciated...

The code in NHL94 isn't compressed (but some of the graphics are). I don't know about Coach K. If it's a newer game, it might all be compressed...

Can you supply some details about the 'strange format'?

I am assuming that by 'Cygnus' you mean a hex editor with that name?

Edited by smozoma

Share this post


Link to post
Share on other sites
The code in NHL94 isn't compressed (but some of the graphics are). I don't know about Coach K. If it's a newer game, it might all be compressed...

Can you supply some details about the 'strange format'?

I am assuming that by 'Cygnus' you mean a hex editor with that name?

It seems as though he converted it from SMD to BIN and was able to edit it (I'll have to confirm). Yeah, he uses Cygnus hex editor, I prefer XVI32. The game is 94 I believe, so I figure it might be similar to the way NHL works...anyways, thanks much for the quick response...I'll stop back if I have questions...

Share this post


Link to post
Share on other sites
It seems as though he converted it from SMD to BIN and was able to edit it (I'll have to confirm). Yeah, he uses Cygnus hex editor, I prefer XVI32. The game is 94 I believe, so I figure it might be similar to the way NHL works...anyways, thanks much for the quick response...I'll stop back if I have questions...

xvi32.. i hate that one with a passion (after using it for a couple years) :( I use HxD now. Hex Workshop is popular in 94 land, but it's not free like HxD.

SMD is weird. You definitely need to convert to BIN (which emulators can run, so once it's BIN you don't need the SMD anymore).

Edited by smozoma

Share this post


Link to post
Share on other sites

keep us posted on if you can get that checksum/loading problem fixed.. i might be able to figure it out if you get stuck.

Share this post


Link to post
Share on other sites

Did you add a byte in somewhere accidentally? The data from 01FE050 forward is just blank.

Share this post


Link to post
Share on other sites

Coach K Hex Player Information Editing Chart

STARTING FROM THE EIGHTEEN-BYTE "Block" underneath the team information (number signifies number of bytes from the start of the player block, should be obvious from the fact most attributes are greater than the first ASCII char so it shows up in "block" form but be careful):

1 - some attribute in hex

2 - some attribute in hex

3 - some attribute in hex

4 - some attribute in hex

5 - some attribute in hex

6 - some attribute in hex

7 - some attribute in hex

8 - some attribute in hex

9 - some attribute in hex

10 - some attribute in hex

1 - some attribute in hex

2 - some attribute in hex

3 - some attribute in hex

4 - some attribute in hex

5 - some attribute in hex

6 - some attribute in hex

7 - some attribute in hex

8 - some attribute in hex

9

20

1

2

3

4

5

6

7 - always FF?

8 - PLAYER NUMBER in hex

9

30 - HEIGHT IN INCHES in hex

1 - PLAYER WEIGHT MINUS 100 in hex

2

3

4

5 - GAMES PLAYED 93-94 in hex

6 - GAMES STARTED 93-94 in hex

7 - MINUTES 93-94

8 - MINUTES 93-94 (signed 16 bit)

9

40

1

2

3

4

5

6

7

8

9

50

1

2

3

4

5

6

7

8

9

60

1

2

3

4 - points 93-94 hex 1

5 - points 93-94 hex 2

6

7

8

Edited by statto

Share this post


Link to post
Share on other sites

There has to be a checksum in the somewhere, as I was able to successfully replicate your problem.

Share this post


Link to post
Share on other sites

I found out how to get rid of the checksum error:

OFFSET: 0690
OLD VALUE: 4EB9 001F E000		   (instruction: "JSR $001FE000" ie: "go do the checksum function")
NEW VALUE: 4E71 4E71 4E71		   (instruction: "NOP NOP NOP" ie: "do nothing, continue running the game")

This also gets rid of that annoying 3 second delay :)

I used GROM to convert from SMD format to BIN.

Put grom.exe in with the ROM, open a dos prompt in that directory, and run the command >grom "Coach K College Basketball" -bin (or "Coach K College Basketball.smd" if it's named that)

There was another SMD to BIN converter I tried called "ROM Converter" that actually didn't work, it messed up the decoding and made a non-functional BIN ROM.

Edited by smozoma

Share this post


Link to post
Share on other sites

Awesome! I was able to convert it to a bin myself, and I think hurricane found a way to disable the checksum reading another post on here, but I haven't tried it myself yet. If by 3 second delay, you mean between switching menus, then that's freakin' great. I'll hopefully get a chance to look at this stuff tonight. Thanks for all the help...

I found out how to get rid of the checksum error:

OFFSET: 0690
OLD VALUE: 4EB9 001F E000		   (instruction: "JSR $001FE000" ie: "go do the checksum function")
NEW VALUE: 4E71 4E71 4E71		   (instruction: "NOP NOP NOP" ie: "do nothing, continue running the game")

This also gets rid of that annoying 3 second delay :)

I used GROM to convert from SMD format to BIN.

Put grom.exe in with the ROM, open a dos prompt in that directory, and run the command >grom "Coach K College Basketball" -bin (or "Coach K College Basketball.smd" if it's named that)

There was another SMD to BIN converter I tried called "ROM Converter" that actually didn't work, it messed up the decoding and made a non-functional BIN ROM.

Edited by tjans

Share this post


Link to post
Share on other sites
Awesome! I was able to convert it to a bin myself, and I think hurricane found a way to disable the checksum reading another post on here, but I haven't tried it myself yet. If by 3 second delay, you mean between switching menus, then that's freakin' great. I'll hopefully get a chance to look at this stuff tonight. Thanks for all the help...

Also, thanks Statto as well for the layout...Hurricane gave me the filled in information and it jives with you posted...although he didn't give me the starting offset...do you said it starts from the 18th byte block? I'm not seeing it...

Share this post


Link to post
Share on other sites
If by 3 second delay, you mean between switching menus, then that's freakin' great.

I meant the delay before it shows the EA logo when you first start the game.

Those flashy graphics delays in the menus are pretty frustrating, too, though! this doesn't fix that.

Share this post


Link to post
Share on other sites

lol kgman plays this gm now, I should try it.

Share this post


Link to post
Share on other sites
Also, thanks Statto as well for the layout...Hurricane gave me the filled in information and it jives with you posted...although he didn't give me the starting offset...do you said it starts from the 18th byte block? I'm not seeing it...

I erred. It actually starts at the player number, which is immediately after an FF byte, and the players are 68 bytes long... from where I figured it began was with the "QZQMTWQZQMTWAZ" block which was wrong.

Edited by statto

Share this post


Link to post
Share on other sites
I erred. It actually starts at the player number, which is immediately after an FF byte, and the players are 68 bytes long... from where I figured it began was with the "QZQMTWQZQMTWAZ" block which was wrong.

Yep, I figured that part out...do you know anything about the team names? I assume I have to stay within the bounds of the current lengths unless there's a pointer table somewhere...so replacing Duke I'd only have 4 letters to work with?

Share this post


Link to post
Share on other sites
Yep, I figured that part out...do you know anything about the team names? I assume I have to stay within the bounds of the current lengths unless there's a pointer table somewhere...so replacing Duke I'd only have 4 letters to work with?

At hex locations 000CF56C to 000CF5D8, there are pointers to the data for the teams.

The first value, at 000CF56C, is "0000183C". The second value is "00001C04"

If you go to the address 00001C04, you'll see that the Wildcats info is a bit below that.. And there are some more pointers in between this location and the Red.Wildcats.Arizona text.

If you want to change the length of a team name, you'll need to bump all the data after the name you change back or forth. There is a bit of 'free space' after the last team, starting at 00007E20, where there is a bunch of "FFFFF..." bytes. Make sure nothing after address 00008000 gets moved, use that FFFFFF area as a buffer zone...

If you make any changes to lengths, you have to update all those pointers inside the team data. It's pretty ugly in that respect.

My suggestion would be to test changing the team name length using the last team, UCLA, expanding it into the buffer area and fixing the pointers within the team's data. once that works, try changing the size of the 2nd-last team, and you'll need to fix the pointers within the last 2 teams, and also in the list of team pointers.

Edited by smozoma

Share this post


Link to post
Share on other sites

"00FF" is being used as and end marker for each team's data.

Share this post


Link to post
Share on other sites
"00FF" is being used as and end marker for each team's data.

I turned Cal into Stanford pretty easily by just zeroing out the string data and then replacing the pointers. However you have to be careful to make sure the correct pointer goes to the correct place.

Also, I don't know where the uniform palettes are, and the color only displays when it says "Arizona: Red Georgia Tech: White" during the game, for instance.

Share this post


Link to post
Share on other sites

Thanks guys...I wrote some SNES editors using string pointers before, this is just my first attempt at doing it on a Genesis ROM, and it's a layout I'm not familiar with yet. Truth be told I'm better on the programming side than I am on the assembly side...

Hurricane found the color palettes, I believe. He's gonna explain the string data to me tonight I hope. I'll check back again in soon to give an update and probably ask more questions...

I turned Cal into Stanford pretty easily by just zeroing out the string data and then replacing the pointers. However you have to be careful to make sure the correct pointer goes to the correct place.

Also, I don't know where the uniform palettes are, and the color only displays when it says "Arizona: Red Georgia Tech: White" during the game, for instance.

Share this post


Link to post
Share on other sites
Thanks guys...I wrote some SNES editors using string pointers before, this is just my first attempt at doing it on a Genesis ROM, and it's a layout I'm not familiar with yet. Truth be told I'm better on the programming side than I am on the assembly side...

Hurricane found the color palettes, I believe. He's gonna explain the string data to me tonight I hope. I'll check back again in soon to give an update and probably ask more questions...

Assembly is easier on the Genesis because the bytes are laid out in order, whereas in SNES games, i think each 'word' (word=2 bytes) has its bytes reversed.

Genesis pointers are twice as big as SNES pointers, too.

For example, on a Genesis, a pointer with the value '00001234', if you need to add 2 to it, it becomes 00001236.

On a SNES, a pointer to the same location would be stored as '3412' and become 3612 (EDIT: sort of.. it's even more complicated than that!).

Edited by smozoma

Share this post


Link to post
Share on other sites
Assembly is easier on the Genesis because the bytes are laid out in order, whereas in SNES games, i think each 'word' (word=2 bytes) has its bytes reversed.

Genesis pointers are twice as big as SNES pointers, too.

For example, on a Genesis, a pointer with the value '00001234', if you need to add 2 to it, it becomes 00001236.

On a SNES, a pointer to the same location would be stored as '3412' and become 3612.

Do you have any idea how would you go about expanding a SNES game as opposed to a GENS game?

Share this post


Link to post
Share on other sites
Do you have any idea how would you go about expanding a SNES game as opposed to a GENS game?

i'm not sure what you mean by 'expanding'? oh right, expanding player names, me=daft

i'll take a look at it... should be the same principle

Edited by smozoma

Share this post


Link to post
Share on other sites

I have never had to do the "add 2" thing before. Usually you just flip the bytes and add the length to that for the next pointer...little endian or something, right?

i'm not sure what you mean by 'expanding'? oh right, expanding player names, me=daft

i'll take a look at it... should be the same principle

Share this post


Link to post
Share on other sites
I have never had to do the "add 2" thing before. Usually you just flip the bytes and add the length to that for the next pointer...little endian or something, right?

i was adding 2 as an example, to show the difference between big/little endian.

if you add two characters to a team name (Duke => Duuuke), you're going to have add 2 to all the pointers that correspond to a location after where you added the letters in.

anyway, i think you know SNES pointers already; I wasn't sure, so that's why I added the example before.

Share this post


Link to post
Share on other sites

Coach K .

Hey guys. Yeah i found the pointers. I found the Checksum desable from the EA tread on here. It worked perfectly. I am not that versed in programmer, i'm a trial and error type. I do know that the pointers at 000CF56C are to the team starting point, but if you switch tehm, only data changes, the color is hard coded to that pteam position...ie if i swap duke with arkansas, they get arkansass logo, and red unies. The DATA is just placed in that spot. I am working on getting my info straight before passing on to an editor creator. Also, i have broken down the bytes on players. Thefirst 5 are info....number,Postion,height(player sprite grows with the value...no special assigning needed if you make a guy grow 1 foot(:P,weight,class...the next 2bytes dictate skin color, then head. bytes 9-44 are previous season data (i have formula), followed by an unknown byte, then 15bytes of ratings, then 8 bytes idon't know. I know the FF ends the line. PS you can add DATA to the open space on the ROM, and send the pointer there to get it. Did it to fit Marquette in Missouri's spot. City Milwaukee wouldn't fit. Worked perfectly. And the teams don't always end with 00 FF. I have seen them end with just the 00 then the first player. Think the FF are just fillers, have over wrote them with no problems. I used HivePal by HiveBrain to find palletes, the Genesis uses less colrs than the SNES.....16 palletes, but only 512. onSNES 7fff is white, on genesis 0EEE is white. Actually a pretty handy tool as it can browse for good pallett codes. That's how i found the pallets, that and a debug with the GENS emulator. I do want to try and see if i move the team Pointers together, then the team info, then all the players. Like TSB is set up. Don't know if that'll work, but if it does, then that should help make each teams info area on ROM equal, making editing easier.

Share this post


Link to post
Share on other sites

Anyone got any good tips on displaying and converting RGB colors to Genesis colors? I know nothing about Genesis palettes...I know in the SNES you have to flip the bytes...and convert the RGB to binary and then to hex (I think...I have the SNES info in my notes somewhere). If I code an editor, it'll be nice to be able to have people set their color for a uniform automatically without having to know hex...

Coach K .

Hey guys. Yeah i found the pointers. I found the Checksum desable from the EA tread on here. It worked perfectly. I am not that versed in programmer, i'm a trial and error type. I do know that the pointers at 000CF56C are to the team starting point, but if you switch tehm, only data changes, the color is hard coded to that pteam position...ie if i swap duke with arkansas, they get arkansass logo, and red unies. The DATA is just placed in that spot. I am working on getting my info straight before passing on to an editor creator. Also, i have broken down the bytes on players. Thefirst 5 are info....number,Postion,height(player sprite grows with the value...no special assigning needed if you make a guy grow 1 foot(:),weight,class...the next 2bytes dictate skin color, then head. bytes 9-44 are previous season data (i have formula), followed by an unknown byte, then 15bytes of ratings, then 8 bytes idon't know. I know the FF ends the line. PS you can add DATA to the open space on the ROM, and send the pointer there to get it. Did it to fit Marquette in Missouri's spot. City Milwaukee wouldn't fit. Worked perfectly. And the teams don't always end with 00 FF. I have seen them end with just the 00 then the first player. Think the FF are just fillers, have over wrote them with no problems. I used HivePal by HiveBrain to find palletes, the Genesis uses less colrs than the SNES.....16 palletes, but only 512. onSNES 7fff is white, on genesis 0EEE is white. Actually a pretty handy tool as it can browse for good pallett codes. That's how i found the pallets, that and a debug with the GENS emulator. I do want to try and see if i move the team Pointers together, then the team info, then all the players. Like TSB is set up. Don't know if that'll work, but if it does, then that should help make each teams info area on ROM equal, making editing easier.

Share this post


Link to post
Share on other sites
Anyone got any good tips on displaying and converting RGB colors to Genesis colors? I know nothing about Genesis palettes...I know in the SNES you have to flip the bytes...and convert the RGB to binary and then to hex (I think...I have the SNES info in my notes somewhere). If I code an editor, it'll be nice to be able to have people set their color for a uniform automatically without having to know hex...

there's no byte flipping with the genesis, due to it using a motorola CPU

i think colours are coded using the hex values 0/2/4/6/8/a/c/e. 000 is black. eee is white.

this is a bit strange since you'd expect fff to be white, but that value isn't used (in nhl 94 anyway?). consequently you need to take the scaling into account somehow..

I'm not sure what order they are in RGB, BGR, or another order..

Share this post


Link to post
Share on other sites
there's no byte flipping with the genesis, due to it using a motorola CPU

i think colours are coded using the hex values 0/2/4/6/8/a/c/e. 000 is black. eee is white.

this is a bit strange since you'd expect fff to be white, but that value isn't used (in nhl 94 anyway?). consequently you need to take the scaling into account somehow..

I'm not sure what order they are in RGB, BGR, or another order..

Hey guys, i have everything figured out. There were a couple of cool editors out there. The colors are 0000-0EEE based. IU am using hive pallete finder. Awesome tool. Problem is how the colrs are assigned to each team. I can't find pointers to the palletes. Not that big of deal , though, i have found a nice work around, and was able to get like 30 of the 32 second round teams from this year on there. Added a couple of teams as well, UNC and UCONN. Anyways apprecieate the help, am running through checks now before i hand this off to TECMOTURD(forgot what he uses on here)....he is doing the editor. I have relocated everything into groups and gave each team the exact same amount of space for everything, took like three days to rewirte every pointer for team info...didn't mess with other areas, just used available space. ould love to figure out 2 things though, on some of the Lgos are offset weird when i open them in tile pro, and how teams get there colrs assigned, because i could use the extra space to give all 40 teams there own color palletes. Thanks again for letting me post on this site , figured the EA boards would help.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this