************************
* SYS.PAK FILE DETAILS *
*   SIMCITY 3000 PC    *
************************
Version 1.01

Copyright (c) 2003 by Ronald BG.
* e-mail address : [email protected]
* web site       : http://ronaldbg.cjb.net/

0. TABLE OF CONTENTS
=====================
0.    TABLE OF CONTENTS
I.    TECHNICAL INFORMATION
II.   NOTES AND DEFINITIONS
III.  WHAT IS SYS.PAK?
IV.   STRUCTURE OF A PAK FILE
V.    PAK ARCHIVER
VI.   LEGAL STUFF

I. TECHNICAL INFORMATION
=========================
* FAQ technical information :
 ----------------------------
 FAQ version   : 1.01
 FAQ file size : 15,7 kB

* Revision History :
 -------------------
 - Version 1.01 (May 31, 2003)
   * Updated section about the PAK Archiver. The PAK Archiver is now available.

 - Version 1.0 (May 20, 2003)
   . Initial release.

* The latest version of this FAQ always can be found in the following location
 (if you find that this FAQ is posted in a site that's not listed, please
 contact me) :
 ----------------------------------------
 | Site name | Site URL                 |
 ----------------------------------------
 | GameFAQs  | http://www.gamefaqs.com/ |
 ----------------------------------------

II. NOTES AND DEFINITIONS
==========================
* In this document a "word" is a 32-bit quantity and a "byte" is an eight-bit
 quantity. A sequence of bits can be interpreted in a natural manner as a
 sequence of bytes, where each consecutive group of eight bits is interpreted
 as a byte with the high-order (most significant) bit of each byte listed
 first. Similarly, a sequence of bytes can be interpreted as a sequence of
 32-bit words, where each consecutive group of four bytes is interpreted as
 a word with the low-order (least significant) byte given first.

* In this document, x_i denotes "x sub i". If the subscript has more than one
 value (e.g., "x sub i,j"), then we surround the values with square brackets
 (i.e., x_[i,j] )

* In this document and in the PAK files, all offsets start from zero. This
 means, the first byte of a file will have offset 0, then the second byte
 of a file will have offset 1, and the n-th byte of a file will have offset
 {n-1}.

* In the PAK files, all lines are stored without any line breaks, and the
 length of a line is also counted without counting any line breaks.

III. WHAT IS SYS.PAK?
======================
SYS.PAK is a file which can be found in the Game\Sys\ path of the SimCity
3000 game directory. (This means, open your SimCity 3000 game directory,
open the Game subdirectory, then open the Sys subdirectory. The SYS.PAK file
should be there).

Looking its contents, the SYS.PAK file is an uncompressed and unencrypted
archive, meaning that the SYS.PAK file have many files stored inside (the
"archive"), but the files inside were left intact (without any compression
and encryption at all) ("uncompressed and unencrypted")

The SYS.PAK file (and the files inside it) contains a lot of useful
informations about the game, for example, the file contains information about
how many fountains are needed to be built to be rewarded with Geyser Park,
starting from what year the Casino can be built, when the Financial Advisor
needs to warn you about limited cash reserves, etc.

In this document, the structure of a PAK file will be explained, based on the
structure found inside the SYS.PAK file.

IV. STRUCTURE OF A PAK FILE
============================
A PAK file consists of 2 main parts:
A. The Header Part
  The header part contains information about the files inside a PAK file.
  More specifically, this section contains:
  * The number of files stored inside the PAK file
  * The name of the files stored inside the PAK file
  * The offset which the data of a file inside the PAK file starts

B. The Data Part
  The data part contains the contents of each files stored inside a PAK file.
  More specifically, this section contains:
  * The number of lines for each files stored inside the PAK file
  * The contents of each file stored inside the PAK file

In the following section, the structure of a PAK file will be described in
detail:

Descriptions about each column in the structure tables:
--------------------------------------------------------
length      : the length of the section in bytes
description : the description of the section
type        : the data type required by the section
variable    : variable which the section is assigned to

A. THE HEADER PART
-------------------
The header part of a PAK file contains information about the files inside a PAK
file.

The structure of the header part of a PAK file :
------------------------------------------------------------------------------
| Length | Description                                     | Type | Variable |
------------------------------------------------------------------------------
| *** NUMBER OF FILES STORED IN THE PAK FILE ***                             |
------------------------------------------------------------------------------
|      4 | the number of files stored inside the PAK file  | word | n        |
------------------------------------------------------------------------------
| *** INFORMATION ABOUT 1ST FILE INSIDE THE PAK FILE ***                     |
------------------------------------------------------------------------------
|      4 | the length of the name of the 1st file inside   | word | p_1      |
|        | the PAK file                                    |      |          |
------------------------------------------------------------------------------
|    p_1 | the name of the 1st file inside the PAK file    | str  | <none>   |
------------------------------------------------------------------------------
|      4 | the offset which the data part of the 1st file  | word | s_1      |
|        | inside the PAK file starts from                 |      |          |
------------------------------------------------------------------------------
| *** INFORMATION ABOUT 2ND FILE INSIDE THE PAK FILE ***                     |
------------------------------------------------------------------------------
|      4 | the length of the name of the 2nd file inside   | word | p_2      |
|        | the PAK file                                    |      |          |
------------------------------------------------------------------------------
|    p_2 | the name of the 2nd file inside the PAK file    | str  | <none>   |
------------------------------------------------------------------------------
|      4 | the offset which the data part of the 2nd file  | word | s_2      |
|        | inside the PAK file starts from                 |      |          |
------------------------------------------------------------------------------
|                                      .                                     |
|                                      .                                     |
|                                      .                                     |
------------------------------------------------------------------------------
| *** INFORMATION ABOUT n-TH FILE INSIDE THE PAK FILE ***                    |
------------------------------------------------------------------------------
|      4 | the length of the name of the n-th file inside  | word | p_n      |
|        | the PAK file                                    |      |          |
------------------------------------------------------------------------------
|    p_n | the name of the n-th file inside the PAK file   | str  | <none>   |
------------------------------------------------------------------------------
|      4 | the offset which the data part of the n-th file | word | s_n      |
|        | inside the PAK file starts from                 |      |          |
------------------------------------------------------------------------------

B. THE DATA PART
-----------------
The data part contains the informations and contents of each files stored
inside a PAK file.

The structure of the data part of the 1st file inside a PAK file :
(starts from offset s_1)
------------------------------------------------------------------------------
| length | description                                     | type | variable |
------------------------------------------------------------------------------
| *** THE CONTENTS OF THE 1ST FILE INSIDE THE PAK FILE ***                   |
------------------------------------------------------------------------------
|      4 | the number of lines of the 1st file stored      | word | l_1      |
|        | inside ths PAK file                             |      |          |
------------------------------------------------------------------------------
|      4 | the length of the 1st line of the 1st file      | word | b_[1,1]  |
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[1,1] | the 1st line of the 1st file inside the PAK file| str  |          |
------------------------------------------------------------------------------
|      4 | the length of the 2nd line of the 1st file      | word | b_[1,2]  |
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[1,2] | the 2nd line of the 1st file inside the PAK file| str  |          |
------------------------------------------------------------------------------
|                                      .                                     |
|                                      .                                     |
|                                      .                                     |
------------------------------------------------------------------------------
|      4 | the length of the l_1 th line of the 1st file   | word | b_[1,l_1]|
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[1,l_1]|the l_1 th line of the 1st file inside the PAK  | str  |          |
|         |file                                            |      |          |
------------------------------------------------------------------------------

The structure of the data part of the 2nd file inside a PAK file :
(starts from offset s_2)
------------------------------------------------------------------------------
| length | description                                     | type | variable |
------------------------------------------------------------------------------
| *** THE CONTENTS OF THE 2ND FILE INSIDE THE PAK FILE ***                   |
------------------------------------------------------------------------------
|      4 | the number of lines in the 2nd file stored      | word | l_2      |
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|      4 | the length of the 1st line of the 2nd file      | word | b_[2,1]  |
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[2,1] | the 1st line of the 2nd file inside the PAK file| str  |          |
------------------------------------------------------------------------------
|      4 | the length of the 2nd line of the 2nd file      | word | b_[2,2]  |
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[2,2] | the 2nd line of the 2nd file inside the PAK file| str  |          |
------------------------------------------------------------------------------
|                                      .                                     |
|                                      .                                     |
|                                      .                                     |
------------------------------------------------------------------------------
|      4 | the length of the l_2 th line of the 1st file   | word | b_[2,l_2]|
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[2,l_2]|the l_2 th line of the 1st file inside the      | str  |          |
|         |PAK file                                        |      |          |
------------------------------------------------------------------------------

                                      .
                                      .
                                      .

The structure of the data part of the n-th file inside a PAK file :
(starts from offset s_n)
------------------------------------------------------------------------------
| length | description                                     | type | variable |
------------------------------------------------------------------------------
| *** THE CONTENTS OF THE N-TH FILE INSIDE THE PAK FILE ***                  |
------------------------------------------------------------------------------
|      4 | the number of lines in the n-th file inside the | word | l_n      |
|        | PAK file                                        |      |          |
------------------------------------------------------------------------------
|      4 | the length of the 1st line of the n-th file     | word | b_[n,1]  |
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[n,1] | the 1st line of the n-th file inside the PAK file| str |          |
------------------------------------------------------------------------------
|      4 | the length of the 2nd line of the n-th file     | word | b_[n,2]  |
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[n,2] | the 2nd line of the n-th file inside the PAK file| str |          |
------------------------------------------------------------------------------
|                                      .                                     |
|                                      .                                     |
|                                      .                                     |
------------------------------------------------------------------------------
|      4 | the length of the l_n th line of the n-th file  | word | b_[n,l_n]|
|        | inside the PAK file                             |      |          |
------------------------------------------------------------------------------
|b_[n,l_n]|the l_n th line of the n-th file inside the     | str  |          |
|         |PAK file                                        |      |          |
------------------------------------------------------------------------------

V. PAK ARCHIVER
================
If you want to extract the contents of a PAK file or create a new PAK file, you
can use the PAK Archiver. PAK Archiver is an utility that can be used to extract
the contents of the PAK file. You can download the PAK Archiver for free from my
website at the following URL :

 http://ronaldbg.cjb.net/
 -------------------------

VI. LEGAL STUFF
================
This may be not be reproduced under any circumstances except for personal,
private use. It may not be placed on any web site or otherwise distributed
publicly without advance written permission. Use of this guide on any other
web site or as a section of any public display is strictly prohibited, and a
violation of copyright.

All trademarks and copyrights contained in this document are owned by their
respective trademark and copyright holders.