Downloads containing Format-levels.txt

Downloads
Name Author Game Mode Rating
JJ1: Jazz Graphics PackFeatured Download Doubble Dutch JJ1 Level 8 Download file

File preview

BOSS Devan uses event 5 when looking l and event 6 when looking r, other
events are from tube
BOSS Ostri uses event 6 when moving, and 12 AND 13
BOSS Lizzy uses event 6 and 7 also

Saving level0.007 changes the behavior of event 2, investigate unknown
areas?
Saving level0.009 changes the finnish shot anim of jetters to same l\r
Saving level0.014, but NOT 1.014 ruins water effects
Rabbit boss looks wrong when saved

---------------------------------------------------------------------------
-----------------------
Level files:
---------------------------------------------------------------------------
-----------------------

#Level consists of RLE blocks and several uncompressed blocks; the first 8
are solid uncompressed

#Most name segments are kept blank in 'finnished' levels. However, these
segments are often 'full' in the Jazz CD extra levels.

****************************
OVERVIEW:
block0:  Level header (Uncompressed)
block1:  Mapping
block2:  Optimization???
block3:  Masking
block4:  Special behaviour
block5:  Events
block6:  Event names
block7:  Animation
block8:  Animation names
block9:  Level parameters (Uncompressed)
block10: Unknown
block11: Unknown
block12: Attack
block13: Attack names
block14: Level properties (Uncompressed)
****************************



****************************
BLOCK 0: LEVEL HEADER
****************************

Header [39 bytes; 'DD ital Dimensions gamepackage v 3.00  ", first 3 bytes
are vital.]



****************************
BLOCK 1: LEVEL MAP
****************************

RLE size [Two bytes, usually a tad under $8000]
RLE block [About 32'000 bytes, poorly compressed.]

#Consists of a 256x64 tile value (0-255) and an event value (0-255) 2-byte
pairs, one for each 'squuare' of level. This compresses poorly, and they
really shouldn't have bothered. These are aranged by column; starting from
the left of 9the level and moving right and down.



****************************
BLOCK 2: UNKNOWN
****************************

Size of RLE block [Two bytes]
RLE block

#16 entries of 16 bytes, usually totally blank. Unknown function



****************************
BLOCK 3: TILE MASK
****************************

Size of RLE block [Two bytes]
RLE block

#Consists of 8x256 entries, 1 for each of 8 rows of a tile for a maximum of
256 tiles. Each row is divided into 8 segments and the value for the row is
1 + 2 + 4 +... + 128 depending on which segments (1,2,3...8) are masked and
which aren't. Blank rows are thus $00 and totally masked rows are $FF (255)



****************************
BLOCK 4: SPECIAL BEHAVIOR
****************************

Size of RLE block [Two bytes]
RLE block

-BEHAVIOR (Max of 16 of these)
Size [Two bytes, sze of behavior divided by two, i.e number of 'steps' in
behavior]
Data [Max 8190 bytes in two-byte pais]

#The special behavior involves an event appearing at specified y,x
coordinates in 'steps'. The data in a behavior is the y and x values, in
pixels, divided by 8 for each 'step' of behavior (Each step is 1/32 of a
second long.) Different events can access the bloc at multiples of 512
bytes, allowing a maximum of 16 different special behaviors in any level



****************************
BLOCK 5: EVENT PROPERTIES
****************************

Size of RLE block [Two bytes]
RLE block

#127 entries of 32 bytes, defines almost everything about what a 'sprite'
does. Please note that event 0 stores information on general events and
this should not be messed with. For example, in order to have shooting
events that can face both ways in your level, the first event must be
totally blank (All values set to 0) JCS94 doesn't note this, and thus
causes problems.

-EVENT:
1  Difficulty (Difficulty level event starts to appear in, 0-3) 
2  Blank
3  Reflect (Value is 0 or 63, often has no effect)
4  Blank
5  Behaviour (How sprite acts, HOW it moves)
6  Animation used when left of Jazz
7  Animation used when right of Jazz
8  Blank
9  Magnitude (Amount of affect [Push, lift direction...] a sprite has. For
most 'normal sprites is 255)
10 Strength (How many shots before event is destroyed)
11 Event type: enemy, item, time, whatever
12 Point worth (Added to score when shot; = actual value / 10)
13 Event shot type (What bullet enemy shoots)
14 Enemy shot frequency This is how often a shooting event shoots
15 Blank
16 Movement speed (How fast a sprite moves)
17 Blank
18 Anmation speed (How fast sprite animates itself)
19 Blank
20 Blank
21 Event number. (Yes, event number)
22 Sound (Refers to sound list at end of level; sound usually played when
event DESTROYED; 0-32)
23 Multi-purpose (Magnitude of many effects, x-axis to warp to, destruct
replace tile, immortality time..)
24 Y-axis (Like above, for y; e.g bridge sink, or y axis warp events warp
to)
25 Bridge length (For bridges, = tile length / 2)
26 Medivo ball length (Length of medivo ball chain)
27 Medivo ball direction (Direction Medivo balls start moving in)
28 TNT has this set as 9, along with the 5 previous bytes
29 Shot animation (Shown when even it blasted, add 128 for splatter effect)
30 Shot animation (Yes, both these bytes are the same)
31 Attack animation (Shown when even shoots a shot)
32 Attack animation (Yep, it's the same as 31)



****************************
BLOCK 6: EVENT NAMES
****************************

RLE size [Two bytes]
RLE Block [Compressed data]

#127 entries of 16 bytes, consisting of a name length byte and a name. This
appears to store the names of the events in the level, though this is often
kept blank.



****************************
BLOCK 7: ANIMATION SEQUENCES
****************************

RLE size [Two bytes]
RLE Block [Compressed data]

#This controls the animations in a level. A level is presented with 231-255
sprites in an 'array' made by adding the SPRITES.00X and MAINCHAR.000 files
together. These are then used in 128 animation sequences for the level.

#Each sequence is 64 bytes long as follows:

1-5:   Obscure, usually blank
6:     Start v position relative to event (Pixels up or down)
7:     Animation steps in animation loop
8-26:  Sprites to use; max of 19 [Can be shifted, somehow]
27-45: Obscure, contains the h position of the event though
46-64: V movement per animation (Up or down, pixels) 1 per animation frame

#Animation sequences are divided into three types, apparently controlled by
the EXE file: 1.) Nonsense sequences; these always contain an MAINCHAR
animation (Usually Jazz walking); these can never be useful as they ignore
some of their own data. 2.) Jazz default; these contain Jazz, or EOL signs
or fastfire... the default animatons in each level, and are usually the
same for all levels. They make up Jazz and are used for 'standard' events.
3.) Enemy sequences; these are used for enemies,odd items, moving
platforms, etc. For some reason the animations they use are not the
animations stored in this block, unlike the previous two types. This makes
them hard to write from scratch. Thety are useful, if you can figure out
how the sprite frames are shifted



****************************
BLOCK 8: ANIMATION NAMES
****************************

RLE size [Two bytes]
RLE Block [Compressed list]

#128 entries of 16 bytes each [Often kept blank, except for bosses] These
appear to be animation names, used by the EPIC level builder, since the
game ignores this section entirely and there is some rough correspondence
with these and some events. Data can indeed be stored here without wrecking
the level.

-ENTRY:
Name length (1 byte)
Name (15 bytes, only name length read.)



****************************
BLOCK 9: LEVEL PARAMETERS
****************************

#Section starts after RLE block 8; it contains the level properties,
including sounds, Jazz sprites and stuff. It is uncompressed and of vaible
length, it is wise not to mess with it much.

0-156:   Blank, or usually so, unknown use

157-219: Sound pitch: This relates to the 32 sound entries in a level.
nearly ALL full sound entries have
         and entry here. The format is 32-2 byte strings specifying how
much the sound is to be shrtened
         (And raised in pitch.) For example, collectables use the sound
GODLIKE, but plays it shorter and
         higher. The exact amount is between 0-FFFF. Most sounds have a
'default' amount that can be got
         from a level.

220-507: Sounds. Sounds are stored as 9-byte strings; the first byte gives
the name length, the other 8 
         contain the name ('Extra' characters are not read) Each sound name
is thus numbered and this is
         related to byte 22 of events. If the name doesn't match one in a
sound file, the sound will not
         play. Sounds are NOT STORED IN THE LEVEL (The last 4 sound
'entries' seems to be 'extra')

508-555: Music and movie. This is, like the sounds, two entires of 24 bytes
containing the song name in
         the level and the movie to be shown at the level end (If any)

556-585: This is blank, I'm not sure what it's used for

586:     Jazz h start position at level start
588:     Jazz v start position at level start

590:     Next level number
591:     Next world number

592:     Jazz jump height, TWO bytes; = height in tiles divided by two then
turned NEGATAIVE. Thus the
         default value is $F5 $FF (-10, or 5 tiles)
594-596: Unknown, usually all $FF

597:     Water height; Take this number and multiply it by 7 and go down
that many spaces from the top of
         the level and that's where the water starts. 

598:     Jazz animation spped; how fast Jazz animates in place. Odd, bset
not to tinker with it
599:     Unknown, posibly the size of some list, usually $01 $1E

601:     Size of animation lists, this will take you to the end of all the
lists, including the BLOCK 10
603:     Size of default Jazz animation list (Usually $4B)
604-:    This is the end of the constant size header, the list consists of
a series of two byte values.
         Each value corresponds to what animation sequence will be used by
Jazz when he does various
         things. For example, the first entry is what sequence Jazz uses
for walking left. In most levels
         this is sequence (NOT SPRITE!) 70, so the first entry is $46 $00.
The $00 is not needed but acts
         as a spacer. Enemy sprites can be used as well The total list and
what things are used for are as
         follows:

01.) Walk l     02.) Walk r     03.) Jump l     04.) Jump r
05.) Airspin l  06.) Airspin r  07.) Shoot l    08.) Shoot r
09.) Duck l     10.) Duck r     11.) Fall l     12.) Fall r
13.) Hurt l     14.) Hurt r     15.) Lean l     16.) Leanr r
17.) Hover l    18.) Hover r    19.) Face l     20.) Face r
21.) Bored l    22.) Bored r    23.) On edge l  24.) On edge r
25.) Look up    26.) Look down  27.) Swim l     28.) Swim r
29.) Run l      30.) Run r      31.) Hover-die l32.) Hover-die r
33.) Sucked l   34.) Sucked r   35.) Stop l     36.) Stop r
37.) Springing r38.) Springing l

END (Boss level lists end here.) [$85]

#There is a second list, identical in format to the first, it is much
shorter and contains at least four
 entries, two with Jazz shooting, two with Jazz ducking Any extra are kept
'blank' usually as small turtle
 l/r animations



****************************
BLOCK 10: UNKNOWN
****************************

RLE size [Two bytes]
RLE block [About 256 bytes when decompressed]

#This is after the two lists and lasts until the end of the value given at
byte 601. It consists of 128 entries of 2 bytes. I don't know what it is
for, but it doesn't seem to be much more than blank most of the time.



****************************
BLOCK 11: UNKNOWN
****************************

4 bytes: I don't know what these do, though they change slightly between
levels



****************************
BLOCK 12: ATTACK
****************************

RLE size [Two bytes]
RLE block

#This controls Jazz's shooting, whether he doesn't, shoots like a bird or
normally. It seems to be 32
 entries of 20 bytes each. This is also where *ememy* shots are stored,
including sprites like Lizards in Deserto. It is even possible to store
things like health and ammo here, though I am not sure how, it involves
data from another segment

#The unknown weapon is #5, the attack bird uses #31, TNT isn't a 'shot' at
all, but I think some data may be stored here.

#The structure of each attack is as follows:

1-2:   Sprites to use for shot (l/r) (Byte 1 is EVENT if this is an event
based shot)
3-4:   Second sprite for shot (E.g, RF missiles shoot TWO shots)
5-6:   Speed l\r in tiles per second, blaster = 1
7-8    Speed l\r for second sprite (E.g RF missile)
9-12:  Speed up\down for first and second sprites, same as above speeds
(E.g, Launcher, RF)
13-14: Gravity. How much gravity makes the bullet sink (Seperate for l\r)
15-16: Unknown, may allow enemy shots to become ssprites
17:    Bullet collision animation (Animaton sequence taken from block 7,
usually 9: explosion)
18:    Bullet collision sound (When bullet hits walls or floors) [Taken
from sound list]
19:    Bullet type; 0: Normal 1: Shoot l\r at same time, 2-3: Fall under
gravity, 4: launcher
20:    Shot sound (Taken from sound list)



****************************
BLOCK 13: ATTACK NAMES
****************************

RLE size [Two bytes]
RLE block [672 bytes when decompressed?]

#Contains the names of shots, such as Jazz's blaster or the lizards spawned
in Deserto. Consists of 32x21 byte entries, one for each attack. Saldly,
often kept blank. Like in the header, consists of a name length byte and up
to 20 characters of name



****************************
BLOCK 14: LEVEL PROPERTIES
****************************

#The last of the level properties, a complex lot:

1:     Background modifier; this affects what is shown behind tiles
(Background) Value is 0-16
       This is important as it affects 4 different things, the sky (Whether
it can be seen or is grey),
       black backgrounds (Events 128+ have a black square behind them),
water color (What color the water
       is, and if it gets darker as Jazz sinks) and the movement sensitive
colors (The colors in Jazz's
       tileset that animate when Jazz moves up or down, with these fixed
you have 112 EXTRA COLORS to use
       in your blocks! Huzzah!)

0:  Grey sky, no black bacgrounds, invisible water and move-animation looks
odd
1:  Grey sky, black backgrounds, invisible water and no move-anmation (But
colors look normal)
2:  Sky, black backgrounds, invisible water, move-animation, but can look
odd (Normal bckgd)
3:  Sky (At start looks odd), bl bckgd, dark green water, move-anim
green-yellow and looks odd
4:  Sky (At start looks odd), bl bckgd, green water, move-anim green and
looks odd
5:  Sky (At start looks odd), bl bckgd, dark purple water, move-anim purple
and looks odd
6:  Sky (At start looks odd), bl bckgd, purple water, move-anim pink and
looks odd
7:  Sky (At start looks odd), bl bckgd, yellow water, move-anim yellow and
looks odd
8:  Grey sky, no bl bckgd, invisible water, move-anim works perfectly (Anim
bckgd)
9:  Grey sky  bl bckgd, invisible water, move-anim works and is a bit
different (Anim bckgd 2)
10: Sky (At start looks odd), bl bckgd, invisible water, move-anim works
and is different (Anim bckgd 3)
11: Sky (At start looks odd), bl bckgd, LAGUNICUS water, move-anim
green-yellow and looks odd
etc


2:     Sun tile? If $01, a sun tile is used
3:     Sun tile. This is the tile used for the sun (And the next 3!)
4-13:  Used for *something*, but no appreciable affect
14-25: Second animation list; this time it's Jazz accesories and each entry
only takes up ONE byte, (No
       $00 spacers):

01.) Nothing      02.) Nothing      03.) Nothing      04.) 4 shield gem
05.) Hoverboard l 06.) Hoverboard r 07.) Bird l       08.) Bird r
09.) ???          10.) Nothing      11.) 1 shield gem 12.) End of data
($04)


26:    Unknown, but is always set at 159
27-32: Blank
28:    Vital, must be set at 210
29:    Part of the LEVEL checksum, equals the LEVEL.XXX + 4 (LEVEL.000 is
4...)
30-35: Enemies needed to get 100% in easy, hard and turbo, is roughly the
number of 'hurt' events in a
       level minus the number of event 123 present
36-37: The number of items needed to get 100%
38:    Set at $03, vital
39+    Terminator; Either three or five characters long, complex. Specifies
the block file to be used;
       '999' means use the same block file extension as the level, the
levels with five 9s don't read
       the last two, but need them to be there. Thus ending a level with
'XXX99' will work in any
       circumstances.

- In Diamondus, specifies the block extension .999 = .000, this can be
altered
- Diam 2 doesn't read last 2 9s, but needs them...
- 


0.0: 3,5,5
0.1: 5,

0.00 999000
0.01 9999900000
0.02 999990
0.03 99999
0.04 999990
0.05 99999
0.06 9999900
0.07 99999
0.08 99999
0.09 99999
0.10 99999
0.11 9999900000000
0.12 999000
0.13 9999900
0.14 99999000
0.15 99900000
0.16 999990
0.17 9990000
0.18 oo2oo00
0.19 oo5oo
0.20 999990 (Uses same blocks?)
0.21 o1100
0.22 01499
0.23 o1700
0.30 99900000


0.52 999o000

1.00 99999
1.01 99999000
1.0x 99999
1.04 9999900
1.05 99999
1.06 999990
1.07 99999
1.08 99999
1.09 99999
1.10 99999
1.11 999990000000
1.12 999000
1.13 999990000
1.14 9999900
1.16 99999
1.30 9990000
1.34 99900
1.37 99900
1.50 99900

2.00 99900
2.02 99999
2.04 99999
2.07 99999
2.10 99999
2.12 999000
2.34 99900 
2.37 999