Name | Author | Game Mode | Rating | |||||
---|---|---|---|---|---|---|---|---|
Jazz Graphics Pack | Doubble Dutch | JJ1 Level | 8 |
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
Jazz2Online © 1999-INFINITY (Site Credits). We have a Privacy Policy. Jazz Jackrabbit, Jazz Jackrabbit 2, Jazz Jackrabbit Advance and all related trademarks and media are ™ and © Epic Games. Lori Jackrabbit is © Dean Dodrill. J2O development powered by Loops of Fury and Chemical Beats.
Eat your lima beans, Johnny.