Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by BAD_AL

  1. Ok, Here's the beta release for TSBToolSupreme for editing cxrom's 32 team ROM, regular nes TSB ROMs and TSB1 for the SNES. Requires the .NET Framework or Mono (Windows, Macintosh, Linux) in order to run. [Windows Vista, Windows 7, Windows 8 come with the .NET framework pre-installed]. It probably has bugs that I don't know of. Please report Bugs you find in this thread. Features Added (Version; view 'TSBTool_README.txt for more info) 1. Confirmed mono Support 2. 'ReplaceString' function. 3. Get/Set team abbreviation, team city, team name. Features Added (Version 1. Schedule GUI Features Added (Version 1. Hacks Menu added 2. Pro Bowl editing support (text + GUI) [Menu added under 'View'] 3. Should work under mono on Linux & Mac now Features Added (Version 0.9.0): 1. Uniform 'Colors' Editing (for nes ROMs) (select 'Show Colors' from the view menu). 2. Uniform 'Colors' Editing GUI (for nes ROMs) 3. Pasting Text into TSBTool main GUI removes any formatting (pastes as plain text). 4. Added 'GetBytes' feature. TSBToolSupreme Version 0.9.1 beta Defects Fixed: 1. Uniform usage for the cutscenes was not being updated. Known Issues (Version 0.9.1 beta): The Alt Uniform stuff doesn't work well for the NFC west in the 32 team ROM. This is due to issues with the ROM, not the tool. Version -- Fixed bug that didn't allow lower case city name (SNES version default). (2/15/2021) Version 1.3 & Beyond will be located on my GitHub releases here: https://github.com/BAD-AL/tsbtools/releases Version 1.3 + will edit NES: TSB1, CXROM 32 team SNES: TSB1, TSBII, TSBIII ============================================================================================ 'GetBytes' feature explained: Due to the increased popularity of the 'SET' command, I have added a 'GetBytes' feature. The 'GetBytes' feature will extract bytes from a ROM into 'SET' commands. The input of the 'GetBytes' feature will be a text file and will look like the following: Example #1, this will extract the bytes from the ROM from locations 0x23BC6-0x23c51 0x23BC6-0x23c51 Example #2, this will extract the bytes from the ROM from locations 0x23BC6-0x23c51, and the comment '# mini helmet stuff' will be in the results. # mini helmet stuff 0x23BC6-0x23c51 Example #3, this will extract the bytes from the ROM from locations 0x23BC6-0x23c51, with a width of 5 bytes and the comment '# mini helmet stuff' will be in the results. # mini helmet stuff 0x23BC6-0x23c51,0x5 You can have as many lines as you want with as many comments as you like. The result of example #3 is the like the following (rest of the results are cut off): ----------------- # mini helmet stuff SET(0x23bc6,0x9495968b00) SET(0x23bcb,0x88898a8b00) SET(0x23bd0,0xc0c1ab8307) SET(0x23c4d,0x8f898a8b35) ... ----------------- ============================================================================================ TSBToolSupreme_0.9.1_Beta.zip TSBToolSupreme_1.0.0.3.zip TSBToolSupreme_for_mono.zip TSBToolSupreme_1.2.0.1.zip TSBToolSupreme_1.2.0.2.zip
  2. If you're going to use TSBTool to edit the new 32 team rom, delete the schedule before you click 'Apply to ROM'.
  3. check out the upload section http://www.tecmobowl.org/forum/viewforum.php?f=34
  4. Does anyone know the address where the Attributes (RS, RP, MS, HP ...) start for the new team players? The location I have written down is wrong.
  5. If you're using a Mac, you may be out of luck (editing TSB ROMS). TSBTool runs under the .NET framework, which is a Microsoft framework. You may be able to get it to run on your mac using mono http://www.mono-project.com/Mono:OSX#Introduction_to_Mono_on_MacOS_X. But the GUI may not work well. I'm pretty sure you can use TSBTool from the command line under Mono (it's not as straight forward, but it's still much the same). Sample command line: # list contents of a rom, placing the data into a text file $ mono TSBTool.exe TSPRBOWL.nes > data.txt # apply the contents of data.txt to a new rom, using TSPRBOWL.nes as a base $ mono TSBTool.exe TSPRBOWL.nes data.txt -out:newRom.nes
  6. I don't advise those changes because in cxrom's 32 team ROM, stuff is at different locations than the original TSB. I believe he did say that the locations for the attributes for the players hadn't changed (for the original 28 teams). But for the Playbooks, year (the year is set in many places), Juice, offensive formations, Team Simdata and schedule, I'm not sure if those locations have changed . **edit*** Actually, I just checked the year and it should be ok to set the year.
  7. You can download the updated ROMS from the Upload section http://www.tecmobowl.org/forum/viewforum.php?f=34. You can find emulators for the Mac here http://www.emulator-zone.com/doc.php/mac/
  8. That's too much work for me to do. If someone wanted to collect the data from 1940-1959, college football or the USFL and put it into the correct format for TSBSeasonGen, then more power to them. The helmet thing would be a neat idea for another program.
  9. The current TSBTool was not released with the intent that it would be used to edit the 32 team ROM. You can probably get it to modify many of the names, numbers, attributes of most of the players, but with anything else it will probably mess something up. Taking a quick look at how it loads the data, it has a mismatch of the names and attributes. The names look to be 5 off from the attributes. You may be able to edit bills WR1 (shows up as Trent Edwards) - Falcons K (shows up as dan Morgan) names without issue, and may be able to edit the ratings for Bills WR1-Falcons K without issue. But I do not advise changing the Playbooks, year, Juice, offensive formations, Team Simdata or schedule with the current TSBTool. Also, suprmnxxx please link to the download instead of re-posting it.
  10. Hey buck, just for you I updated the TSBTool beta. It should now work correctly when you use the 'auto sim' feature. I don't have the formulas written down, but here's the code (and yes, you can submit change requests): using System; namespace TSBTool { /// /// Summary description for SimStuff. /// public class SimStuff { public const int FRONT_7_SIM_POINT_POOL = 200; public const int FRONT_7_MIN_SIM_PASS_RUSH = 13; public SimStuff() { } /// /// Returns the SimPocket value when passed the QB's /// MS. /// /// /// public int SimPocket(int MS) { int ret = 0; switch( MS ) { case 100: case 94: case 88: case 81: case 75: case 69: case 63: case 56: case 50: ret = 0; break; case 44: case 38: ret = 1; break; case 31: case 25: ret = 2; break; default: ret = 3; break; } return ret; } public int SimPass( int PC, int APB, int PS ) { int ret = 0; if( PC > 75 ) ret = 13; else if( PC > 44 ) ret = ( PS + PC + APB ) / 17; else ret = (PC + APB ) / 14; if( ret > 15) ret = 15; return ret; } public int QbSimRun( int MS ) { int ret = MS / 5; if( ret > 15) ret = 15; return ret; } public int SimKickRet(int MS ) { int ret = MS / 4; if( ret > 15) ret = 15; return ret; } public int SimPuntRet(int MS ) { int ret = MS / 4; if( ret > 15) ret = 15; return ret; } public int RbSimCatch(int REC ) { int ret = 0; if( REC > 44 ) ret = REC / 6; else ret = REC / 10; if( ret > 15) ret = 15; return ret; } public int RbSimRush( int MS, int HP, int BC, int RS) { int ret = 0; if( HP < 50 ) ret = ( ( MS + BC ) / 11) - 2; else ret = (RS + HP) / 15; if( ret > 15) ret = 15; return ret; } public int WrTeSimCatch(int REC ) { int ret = REC /6; if( ret > 15) ret = 15; return ret; } public int WrTeSimRush( ) { return 2; } public int PKSimKick(int KA, int AKB ) { int ret = ( KA +(AKB/2)) / 11; if( ret > 15) ret = 15; return ret; } /// /// Use PI /// /// /// /// /// /// /// /// /// /// public int[] GetSimPassDefense( int rolbInts, int rilbInts, int lilbInts, int lolbInts, int rcbInts, int lcbInts, int fsInts, int ssInts ) { double totalInts = rolbInts + rilbInts + lilbInts + lolbInts + rcbInts + lcbInts + fsInts +ssInts; double totalSimPoints = 254; int rolbPoints, rilbPoints, lilbPoints, lolbPoints, rcbPoints, lcbPoints, fsPoints, ssPoints; rolbPoints = (int)((rolbInts / totalInts )* totalSimPoints); rilbPoints = (int)((rilbInts / totalInts )* totalSimPoints); lolbPoints = (int)((lolbInts / totalInts )* totalSimPoints); rcbPoints = (int)((rcbInts / totalInts )* totalSimPoints); lcbPoints = (int)((lcbInts / totalInts )* totalSimPoints); fsPoints = (int)((fsInts / totalInts )* totalSimPoints); ssPoints = (int)((ssInts / totalInts )* totalSimPoints); lilbPoints = 1 + (int)(totalSimPoints - (rcbPoints + lcbPoints + fsPoints + rolbPoints + ssPoints + rilbPoints + lolbPoints)); int [] ret = new int[8]; ret[0] = rolbPoints; ret[1] = rilbPoints; ret[2] = lilbPoints; ret[3] = lolbPoints; ret[4] = rcbPoints; ret[5] = lcbPoints; ret[6] = fsPoints; ret[7] = ssPoints; return ret; } /// /// use HP instead of sacks /// /// /// /// /// /// /// /// /// /// public int[] GetSimPassRush( double reSacks, double ntSacks, double leSacks, double rolbSacks, double rilbSacks, double lilbSacks, double lolbSacks ) { double totalSacks = reSacks + ntSacks + leSacks + rolbSacks + rilbSacks + lilbSacks + lolbSacks; int totalSimPoints = FRONT_7_SIM_POINT_POOL; int minPr = FRONT_7_MIN_SIM_PASS_RUSH; int rePoints, ntPoints, lePoints, rolbPoints, rilbPoints, lilbPoints, lolbPoints, ssPoints; int dbPoints = 0; int cbPoints = 0; int front7Points = 0; if( totalSacks == 0 ) { rePoints= ntPoints= lePoints= rolbPoints= rilbPoints= lilbPoints= lolbPoints= ssPoints=31; rePoints += 4; } else { rePoints = Math.Max( (int)((reSacks / totalSacks )* totalSimPoints), minPr); lePoints = Math.Max( (int)((leSacks / totalSacks )* totalSimPoints), minPr); ntPoints = Math.Max( (int)((ntSacks / totalSacks )* totalSimPoints), minPr); rolbPoints = Math.Max( (int)((rolbSacks / totalSacks )* totalSimPoints), minPr); rilbPoints = Math.Max( (int)((rilbSacks / totalSacks )* totalSimPoints), minPr); lilbPoints = Math.Max( (int)((lilbSacks / totalSacks )* totalSimPoints), minPr); lolbPoints = Math.Max( (int)((lolbSacks / totalSacks )* totalSimPoints), minPr); front7Points = rePoints + lePoints + ntPoints + rolbPoints + rilbPoints + lilbPoints + lolbPoints; dbPoints = (int)(255 - front7Points); cbPoints = dbPoints / 4 ; ssPoints = (int) (255 - ((3*cbPoints) + front7Points) ); } int[] ret = new int[8]; ret[0] = rePoints; ret[1] = ntPoints; ret[2] = lePoints; ret[3] = rolbPoints; ret[4] = rilbPoints; ret[5] = lilbPoints; ret[6] = lolbPoints; ret[7] = ssPoints; return ret; } public int GetSimOffense(int QB1SimPass, int RB1SimRush, int RB2SimRush, int WR1SimCatch, int WR2SimCatch ) { int f1, f2; if( RB1SimRush > RB2SimRush ) f1 = RB1SimRush; else f1 = RB2SimRush; if( WR1SimCatch > WR2SimCatch ) f2 = WR1SimCatch; else f2 = WR2SimCatch; int ret = (QB1SimPass+ f1 + f2) / 3; return ret; } } }
  11. New beta version released. http://www.tecmobowl.org/forum/viewtopic.php?f=34&t=6941&p=69089#p69089 Fixed the 'Auto Update All Player Sim Attributes' crash.
  12. If you want to copy just the players you need to do the following: 1. Open the rom in TSBTool that you want to copy players from. 2. Click 'View Contents'. 3. Delete any data you do not want applied to your new ROM (Like schedule data). 4. Now, Load the ROM you wish to modify. 5. Click 'Apply to ROM'. Done.
  13. TSBsim does this http://www.emuware.com/files/?tsbsim.zip I think I have that functionality working in TSBTool. I just haven't updated it in a long time. I'll analyze the results to see if it's auto-sim attributes are good enough to release.
  14. For #1, I get the year at location 0x2e16b. I'm not sure where this year is used in the game, but it's the lowest address of the year locations that I have. When I set the year, I set it at the following locations: 0x2e16b, 0x12329e, 0x123348, 0x171069 0x1712fb, 0x171332, 0x172c84, 0x172d02 0x172d3e, 0x172d5b, 0x172d1f. So it may be the case that in your 1978 rom the year at location 0x2e16b was '1980', but everywhere else it was '1978'. For #2, I know that in hex it looks like DB2 for the 9ers is glitched, but his name pointer is updated so in game his name should be fine. Did you notice the 'glitch' in game or in a hex editor? If you noticed the glitch in game, please send me the text so I can reproduce the defect.
  15. SNES_TSBTool updated (version 1.2). Thanks to Mr. NFL we can now update the race for the players in the cut scenes. Thank you Mr. NFL!!!!!!!!!!!!!!!
  16. Run/Pass ratio can be edited with TSBTool http://www.tecmobowl.org/forum/viewtopic.php?f=34&t=6941 and SNES_TSBTool http://www.tecmobowl.org/forum/viewtopic.php?t=7694.
  17. You can use TSBM2000 or TSBTool to copy player data from one rom to another. TSBTool http://www.tecmobowl.org/forum/viewtopic.php?f=34&t=6941 TSBM2000 http://www.emuware.com/tsbm/index.php To change team names, you can use good old TSBM 1.3.
  18. You're doing it in Java huh? That's cool. Do you think you could package it up in an applet and deploy it on a web page? That way you can make bug fixes and add new features and everyone gets them automatically (if accessed through the internet). You could also set it up to run standalone so that if the web page goes away, your users can still run it. I could throw together an (applet+standalone) example for you to follow if you'd like. Also, why are you using Java 1.6? Wouldn't you want to target something earlier so that it would run on more systems?
  19. TSBTool was made with the intent that it would be easy to import data from spreadsheets. Depending on your spreadsheet format, it might take anywhere from 5 minutes to a half hour to get the text in TSBTool's format. You'll first need to save in .csv format. Tips: Format="QB1, qb BILLS, Face=0x52, #0, 25, 69, 13, 13, 56, 81, 81, 81 ,[3, 12, 3 ]" 1. Get the data as close to TSBtool's format as possible in excel. 2. If you separate first and last name in the spreadsheet, insert a column between them and fill down with a special character (like %). Then when you export the data to a csv file you can do a global replace on ',%,' with ' '(space)). 3. The latest version (beta) of TSBTool has a feature called 'Delete trailing commas' under it's view menu. You can use this to delete any of those pesky commas at the end of the lines. You can use tricks like the one above (#2) to massage the data pretty quickly, then go over it with your eyes to make sure it looks good. TSBTool will report errors when it finds them and will not modify any ROM until you hit 'Apply to ROM'.
  20. Values range 0-15 (0-F), 0 = very bad, 15 = very good.
  21. You put it in the folder 'NFL_DATA'. The structure goes like 'NFL_DATA//'.
  22. The 2006 data is on the first page 3rd post.
  23. About #1, what addresses are important to leave alone?
  24. Ok, I've started the work and I have a few questions. 1. Why did you seperate player names for the 4 teams? 2. Where is the end of the name/number section for the Panthers? ---It looks like it might end at 0x3ffbf, but I'm not sure. 3. about the 'sim attributes' (0x199C7 - 0x19A86: sim attributes (all teams) ) --- that's only 191 bytes. [ QB1-TE2, RDE-SS get 2 bytes each, punter and kicker get 1 each. So it's 48 bytes per team, you mean all 4 new teams?]) 4. For Playbooks you gave the address '0x1D390' and this looks like playbook data, but it starts off with '1525 5370' which is not the texan's playbook. It looks like the texans are just using the bills playbook. So is this just the area you have set aside for playbook data?
  25. I assume that he did it with TSBTool. In order to get the contents into a spreadsheet, save the TSBTool text output in a .csv file. Double click on the file to open it with Excel. Now you can work with the data like any other spreadsheet. When you are done working with the data, you need to make sure that it's in the correct format before you import it back into a ROM. If there is a format error, you should get some error messages when you click 'Apply to ROM'.
  • Create New...