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
===========================