12345678901234567890123456789012345678901234567890123456789012345678901234567890 ------------------80 character margin makes GameFAQs happy :)------------------- VIRTUA TENNIS PC SAVEFILE HACKING GUIDE v0.1a December 31st, 2002 Copyright 2002 by Markus Lindström. All rights reserved. _ |_| _ _ _ _____ _______ _ _ ______ | | | | | | | __ | |__ __| | | | | | __ | | \ / | | | | |__|| | | | | | | | | | | \ \ / / | | | _ | | | | | | | | |__| | \ \/ / | | | | \ \ | | | | | | | __ | \ / | | | | \ \ | | | | | | | | | | \ / | | | | \ \ | | | |___| | | | | | _ \/ |_| |_| \_\ |_| |_______| |_| |_| |_| _______ ________ ___ _ ___ _ _ ________ |__ __| | ______| | \ | | | \ | | | | | ______| | | | | | |\ \ | | | |\ \ | | | | | | | | | |___ | | \ \ | | | | \ \ | | | | | |______ | | | ___| | | \ \ | | | | \ \ | | | | |______ | | | | | | | \ \ | | | | \ \ | | | | | | | | | |______ | | \ \| | | | \ \| | | | ______| | |_| |________| |_| \___| |_| \___| |_| |________| ===== INDEX ===== I. History II. Introduction III. Needed stuff IV. Basic hex editing for dummies V. Important notes VI. The good stuff VII. Legal stuff VIII. Contact me, and other info ---------- I. HISTORY ---------- v0.1a December 31st, 2002 -Minor mistakes fixed. -Adapted formatting to GameFAQs 80 char margin. v0.1 September 2nd, 2002 -Initial release. ---------------- II. INTRODUCTION ---------------- Hi there folks!! Don't mind the ASCII art up there, it's my first ever... I hope you can excuse my urge to express myself artistically ;-) !! So... hum... Welcome to this VIRTUA TENNIS savefile hacking guide!! If you haven't heard about this game, you must've lived under some rock... Anyway, if you haven't played it yet, I warmly recommend it, because it's a true gaming masterpiece!! Some of you might remember that good ol' Super Tennis back in the 90s on the SNES, and how fun that game was... or that's my opinion anyway... Well, this game is slightly more axed towards arcade. This has both advantages and disadvantages, IMHO. Advantages are i.e. that anyone can learn to play this game pretty fast, due to its simple controls. And one glaring disadvantage is well... The fact that the controls are somewhat TOO simple... I don't mean the game's bad or anything, but you're basically limited to two buttons: hit and lob. If you're used to play Super Tennis where four different strokes were available, well, you're in for a surprise... Of course, there are ways of steering your strokes, such as pulling the controller in the opposite way you're hitting to make a weak shot, which is kind of useful on grass courts. So, what is this document made for, you may ask? Well, if you're here, you're either interested in experimenting with hex editing, like me, or you're looking for a way to cheat... Which isn't as honorable, if I may say :P. The game does offer a great challenge, but after timeless retries, anything can be beat. So please, just try to beat it by yourself first!! I haven't finished the game myself as of now, but I don't have all that much time to play right now, so that'll have to wait... Anyhoo, without further ado, let's get down to business... ----------------- III. NEEDED STUFF ----------------- Well well... As you might understand, you need Virtua Tennis installed on your PC... If you don't understand that, well... You might need some serious help. Next up, you'll need a hex editor. I personally use Hex Workshop, by Breakpoint Software, which can be downloaded at their website: http://www.bpsoft.com Now, just because I use it, doesn't mean you HAVE to, any hex editor will do! Oh... And you also need to run Virtua Tennis at least once so it generates its savefile, which is a file called VIRTUATENNIS in the game directory. --------------------------------- IV. BASIC HEX EDITING FOR DUMMIES --------------------------------- I'll be considering you use Hex Workshop for this introduction... Now, if you're used to hex editing, well... Just skip the damn section!! Anyhow, let's get started... I'm sure you all know size on our computers in measured in bytes. Well, load up a file in your hex editor, and you'll see lots of symbols, which range from 0 to 9 and A to F. Those are what we call HEXADECIMAL values, as opposed to DECIMAL, which are the common numbers 0 to 9. So... what does that really mean? Let me show you an example: In base 10, or decimal values, as you wish, we all know 9+1 equals 10. Well, in "hex" (as hexadecimal is abbreviated), 9+1 equals... A!! You might ask yourself what's going on here... But it really does make sense. In hex, the number 10 isn't the same 10 as in decimal, but actually 16!! If you look at the word "hexadecimal", and you know some basic greek, you'll understand it means something about sixteen... Well, in decimal, we have 10 basic integers, which are 0 to 9. In hex, we have 16 basic integers, which are 0 to 9 PLUS A to F. Add it all up, you'll see you have 16 integers. Got all that? If not well... sorry I can't make this any easier ;-) Now, back to our hex editor. Each pair of symbols represent a specific byte of the file. See that column to the left? That's what's called "offsets". What are offsets? They're the specific address of a byte in the file. Soooo... Still with me? Now, if you want to modify a specific byte in the file, you'll just have to look for the offset of the byte you want to change, and well, just put something else in its place... More about this further down, when I'll list the actual useful offsets. Now, let's just discuss one final thing: values a byte can take. I think you can figure this out by yourself: one byte is represented by two hexadecimal integers, the smallest value possible is thus 00, and the highest would be... yup, FF it is! If you've ever used a Pro Action Replay or GameShark on a console, I'm sure you've noticed this is a number that frequently comes into play... I think this is enough knowledge for you to be able to use this document. If you need anymore help, just contact me!! ------------------ V. IMPORTANT NOTES ------------------ IMPORTANT: The savefile is coded in little-endian, which means all values are reversed... What does this mean? Well, take a look at the clothing offset. If you wish to have all clothes, well, you'd likely put 0F FF FF FF from 0x14h to 0x17h right? WRONG! In little-endian, that would give FF FF FF 0F instead!! The actual values shown in this guide are in big-endian, which would be the "normal" way, so you'll have to reverse them yourselves... IMPORTANT: The key to many things in this game's savefile is a specific pattern which seems to be used. Take a look at the clothing offset right underneath this note, for example. If you'd like to have Wear No. 1 and No. 12 available, you'll haveto add their values together, and put that final result at the clothing offset. In this example, Wear No.1 is 00 00 00 01, and No. 12 is 00 00 08 00. Add them together, you'll have 00 00 08 01. Wherever this kind of calculation is needed, I've put a star next to the values, as well as the value where everything is turned on. If you're unsure about hex calculations, just use the Windows Calculator! Put it in scientific mode, then HEX mode, and there you go... JUST DON'T FORGET TO REVERSE THE RESULTS!! I'll show it again, if you want to have No.1 and No.12, you'll have to put 01 08 00 00 starting at byte 0x14h, got that? ------------------ VI. THE GOOD STUFF ------------------ Oh, if you haven't found this out yet, the savefile's called VIRTUATENNIS, and it's placed in the game directory... You should backup your actual savefile before doing any changes though, as one single mistake could cause the game to crash, AND corrupt the savefile! Available clothing (4 bytes): 0x14h to 0x17h *00000000: Original only *00000001: Wear No. 1 *00000002: Wear No. 2 *00000004: Wear No. 3 *00000008: Wear No. 4 *00000010: Wear No. 5 *00000020: Wear No. 6 *00000040: Wear No. 7 *00000080: Wear No. 8 *00000100: Wear No. 9 *00000200: Wear No. 10 *00000400: Wear No. 11 *00000800: Wear No. 12 *00001000: Wear No. 13 *00002000: Wear No. 14 *00004000: Wear No. 15 *00008000: Wear No. 16 *00010000: Wear No. 17 *00020000: Wear No. 18 *00040000: Wear No. 19 *00080000: Wear No. 20 *00100000: Wear No. 21 *00200000: Wear No. 22 *00400000: Wear No. 23 *00800000: Wear No. 24 *01000000: Wear No. 25 *02000000: Wear No. 26 *04000000: Wear No. 27 *08000000: Wear No. 28 0FFFFFFF: All clothes available Available Virtua players in Arcade & Exhibition mode (1 byte): 0x19h *01: Tinbergen (NED) *02: Euler (SUI) *04: Tesla (CRO) *08: Altman (CAN) *10: Singh (IND) *20: Costa (BRA) *40: Ventura (ITA) *80: Inoue (JPN) FF: All Virtua players available Available courts in Exhibition mode (1 byte): 0x1Dh *0001: Australia Challenge (AUS) | *0002: French Cup (FRA) | *0004: US Super Tennis (USA) +-> all needed! *0008: Old England Championships (GBR) | *0010: Sega Grand Match (USA) | *0020: Sweden Grand Prix (SWE) *0040: Germany Men's Indoor (GER) *0080: Russia Tennis Classic (RUS) *0100: Spain International (ESP) *0200: SPT Masters (JPN) 03FF: All courts unlocked Player used in World Circuit (1 byte): 0x10Ch 00: Courier (USA) 01: Pioline (FRA) 02: Henman (GBR) 03: Haas (GER) 04: Philipoussis (AUS) -- dummied picture, but WORKS!! 05: Moya (ESP) 06: Johansson (SWE) 07: Kafelnikov (RUS) _ 08: Tinbergen (NED) | 09: Euler (SUI) | 0A: Tesla (CRO) | 0B: Altman (CAN) |___ Yup, you can play 0C: Singh (IND) | with these guys too! 0D: Costa (BRA) | 0E: Ventura (ITA) | 0F: Inoue (JPN) _| Doubles partner in World Circuit (1 byte): 0x10Dh FF: No partner 00: Courier (USA) 01: Pioline (FRA) 02: Henman (GBR) 03: Haas (GER) 04: Philipoussis (AUS) -- dummied picture, but WORKS!! 05: Moya (ESP) 06: Johansson (SWE) 07: Kafelnikov (RUS) 08: Tinbergen (NED) 09: Euler (SUI) 0A: Tesla (CRO) 0B: Altman (CAN) 0C: Singh (IND) 0D: Costa (BRA) 0E: Ventura (ITA) 0F: Inoue (JPN) World Circuit Rank (1 byte): 0x10F 00: 300th 0C: 74th 01: 279th 0D: 60th 02: 258th 0E: 48th 03: 237th 0F: 37th 04: 216th 10: 32nd 05: 196th 11: 25th 06: 176th 12: 16th 07: 157th 13: 8th 08: 138th 14: 4th 09: 121st 15: 2nd 0A: 104th 16: 1st 0B: 88th -------------------------------- VII. WORLD CIRCUIT LEVEL EDITING -------------------------------- It gets a little more tricky here... The game uses 7 differents sets of 3 bytes to store information about levels in World Circuit mode. -The first byte (Availability) in each set is used to tell the game whether that level is available to the player, as in visible on the map. -The second one (Cleared) is used to tell the game whether the levels concerned have been cleared (duh). -And the last one (New! flag) is used to tell the game whether it should show that NEW! sign on the levels concerned. Confused yet? Another important note: Don't EVER put different levels of a same stage in the Availability bytes, because this will screw up your map navigation quite a bit... You'll see what I mean, should you try :p -------------------- Level editing: Set 1 -------------------- Availability: EC Cleared: F4 New flag: FC *01: Lv.1 French Cup *02: Lv.1 Drum Shooter *04: Lv.2 French Cup *08: Lv.2 Drum Shooter *10: Lv.1 Germany Men's Indoor *20: Lv.1 Russia Tennis Classic -- dummy, don't use!! *40: Lv.2 Germany Men's Indoor *80: Lv.1 Russia Tennis Classic -- dummy, don't use!! -------------------- Level editing: Set 2 -------------------- Availability: ED Cleared: F5 New flag: FD *01: Lv.1 Old England Champiomships *02: Lv.1 Return Ace *04: Lv.2 Old England Championships *08: Lv.2 Return Ace *10: Lv.1 Sweden Grand Prix *20: Lv.1 Smash Box *40: Lv.2 Sweden Grand Prix *80: Lv.2 Smash Box -------------------- Level editing: Set 3 -------------------- Availability: EE Cleared: F6 New flag: FE *01: Lv.1 Russia Tennis Classic *02: Lv.1 Bull's Eye *04: Lv.2 Russia Tennis Classic *08: Lv.2 Bull's Eye *10: Lv.1 Australia Challenge *20: Lv.1 Big Wall *40: Lv.2 Australia Challenge *80: Lv.2 Big Wall -------------------- Level editing: Set 4 -------------------- Availability: EF Cleared: F7 New flag: FF *01: Lv.1 US Super Tennis *02: Lv.1 Giant Ball *04: Lv.2 US Super Tennis *08: Lv.2 Giant Ball *10: Lv.1 Spain International *20: Lv.1 Cannon Ball *40: Lv.2 Spain International *80: Lv.2 Cannon Ball -------------------- Level editing: Set 5 -------------------- Availability: F0 Cleared: F8 New flag: 0100 *01: Lv.3 US Super Tennis *02: Lv.3 French Cup *04: Lv.3 Old England Championships *08: Lv.3 Australia Challenge *10: Lv.4 SPT Masters *20: Lv.4 Sega Grand Match *40: Shop Pacific *80: Shop Asia -------------------- Level editing: Set 6 -------------------- Availability: F1 Cleared: F9 New flag: 0101 *01: Shop Cape *02: Shop South *04: Shop North *08: Lv.3 Drum Shooter *10: Lv.3 Pin Crusher *20: Lv.3 Return Ace *40: Lv.3 Smash Box *80: Lv.3 Bull's Eye -------------------- Level editing: Set 7 -------------------- Availability: F2 Cleared: FA New! flag: 0102 *01: Lv.3 Big Wall *02: N/A *04: Lv.3 Cannon Ball ---------------- VII. LEGAL STUFF ---------------- Quote the Virtua Tennis PC website: >> Virtua Tennis is copyright of SEGA CORPORATION, 1999, 2000 >> (c) SEGA / Hitmaker, 2000. All rights Reserved. >> Published by Empire Interactive. >> PC version developed by Strangelite. >> Empire is a registered trademark, the E logo is a trademark of Empire >> Interactive Europe Ltd. All rights reserved. Hmmm... I don't think people understand HALF of all that... But hey, better safe than sorry!! Oh, by the way, this guide? It's all my work, and well, I wouldn't be too happy to see this guide on unauthorized places... GameFAQs is the only authorized place as of now, and it'll probably stay that way, so PLEASE don't ask. -------------------------------- VIII. CONTACT ME, AND OTHER INFO -------------------------------- If you have any questions concerning this guide, or suggestions, please mail me at rrrrominet at hotmail dot com!! This guide is by no ways complete, and I'll continue to do some research when I'll have the time... Don't expect me to update this guide all that often, though!! But I'll give you my best shot ;-) =========================== END OF FILE ===========================