Difference between revisions of "Rayman Designer hacking"

From RayWiki, the Rayman wiki
Jump to navigation Jump to search
m
 
(21 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{Stub}}
 
 
 
'''''[[Rayman Designer]]'' hacking''' is the process of modifying the program files of the game in order to change the appearance and the behaviour of in-game events and sceneries.
 
'''''[[Rayman Designer]]'' hacking''' is the process of modifying the program files of the game in order to change the appearance and the behaviour of in-game events and sceneries.
  
Line 6: Line 4:
  
 
===Normal Platforms (Tiles)===
 
===Normal Platforms (Tiles)===
In every World-folder of the game, there is a .PCX graphic file. It contains all the platform tiles which are used by the Mapper. You can change or add stuff, but you cannot edit:
+
In every world-folder (for example "[[The Dream Forest|jungle]]" or "[[Band Land|music]]") of the game, there is a .PCX graphic file. It contains all the graphic tiles which are used by the Mapper. Tiles may be changed and added, but the following should not be changed:
  
*The color palette used in the file; don't add new colors (or the graphics ingame will be messed up).
+
*The color palette used in the file. The addition of new colours causes the in-game graphics to display incorrectly.
*The first square on the top-left corner; it's used to set the transparent color in the file.
+
*The first tile on the top-left corner, which is used to set the transparent color in the file.
*The lowest row of tiles.
+
*The lowest row of tiles, which are reserved for the Mapper's "types mode".
*The image size. If you do, the Mapper may not load.
+
*The image size, otherwise the Mapper will not work.
  
Also note that all maps (exept the ones which ubisoft made) will use the new graphics if you replace the standard tiles.
+
Also note that all custom maps will use the new graphics if the standard tiles are replaced. However, the 24 levels which come with the game have built-in graphics, and are not affected by PCX changes.
 +
 
 +
The PCX files used in the educational games are expansions of the ones from ''Rayman Designer'', meaning that they can easily replace the ones in Designer without removing any existing tiles.
  
 
===Animated objects===
 
===Animated objects===
All animated spites of the game (Rayman himself, enemies etc) are stored in .DES files. These files are packed in the .WLD files of the game. It's totally unclear how to open these files, but when you opem the WLD files of RD (in the "pcmap" folder) with a texteditor, you can see which .DES and .ETA files are packed in it. The .ETA files do order the spitefiles in some way, but what they exctly do is unsure (it seems that they give the events some abilities).
+
All animated sprites of the game (for example, [[Rayman]] himself and enemies) are stored in the .DES files, short for DESign. These files are packed in the .WLD files of the game, which are stored in the "pcmap" folder. It is possible to see what DES files are contained in a WLD file by simply opening it in a text editor. It is possible to extract sprites from these files, but little progress has been made on changing them.
  
To see whats in the .DES files, you must change some things of an eventcode (see below) with a texteditor, save it, go in the game and see what happens (it may crash cause not all coordinates work). The names of the .DES files are also tell you whats in it (most of them are in French, but some are English.) Examples:
+
ETA files, short for "''état''" ("state"), are stored in the WLD files in the same way. They appear to contain information about the animations of the sprites.
  
*RAY.DES = Rayman
+
Before it became possible to extract sprites from the game, the only way to explore the contents of the DES files was experimentation with event codes. The names of the .DES files also give a clue as to their contents. Most of them are in French, but some are English. For example:
*SPI.DES = Spider (Cave)
 
*CLE.DES = Clef (Music)
 
*MUS.DES = Musician (Mountain)
 
  
Some of these files contain only one object (like the CLE.DES) and others conatin very many different objects. Note also that you can't see which .DES files Rayman 1 or the RJ Games have. In these games the .WLD files are packed / encrypted different. But in the .WLD files of the "Fanpack" and in the .WLD files of "Rayman Collector" you can see the filenames.
+
*RAY.DES = [[Rayman]]
 +
*SPI.DES = [[Spider]] ([[The Caves of Skops|Cave]])
 +
*CLE.DES = Clef ([[Band Land|Music]])
 +
*MUS.DES = [[Musician]] ([[The Blue Mountains|Mountain]])
  
===Events===
+
Some of these files, such as CLE.DES, contain only one object, while others contain very many different objects.
In every World-Folder of the game, there is a file called EVE.MLT. It contains all the codes of the events of the current world and can be modified any text editor. One has to scroll down to see the codes in question. It is unsure which programming language the game is written in, but the events are coded in this way:
+
 
 +
The names of the DES and ETA files cannot be seen in the WLD files of the original game or the ''[[Rayman Junior]]'' games, but they are present in the files from ''[[Rayman By His Fans]]''.
 +
 
 +
==[[Event (Rayman Designer)|Events]]==
 +
=== Editing events ===
 +
In every world-folder of the game, there is a file called EVE.MLT. It contains all the codes of the events of the current world and can be modified any text editor. One has to scroll down to see the codes in question. It is unclear which programming language the game is written in, but the events are coded in this way:
  
  
 
{| width="auto" align="center" style="border-style:dotted;border-width:1mm;border-color:green;text-align:left"
 
{| width="auto" align="center" style="border-style:dotted;border-width:1mm;border-color:green;text-align:left"
|œdef,eventname,C,some number(?),
+
|œdef,eventname,DES_FILE,some number(?),
ETA.FILE,
+
FILE.ETA,
  
 
specific event code
 
specific event code
Line 53: Line 58:
  
 
*œdef = define; this must come first
 
*œdef = define; this must come first
*eventname = name of the event, could be everything
+
*eventname = name of the event, could be anything; the events which come with the game all use codenames which start with "MS_" (so that they can be localized)
*DES.FILE = name of the graphic file which should be used for the event
+
*DES_FILE = name of the graphic file which should be used for the event (without the extension ".DES")
 
*some number = unsure; it seems to have no effect
 
*some number = unsure; it seems to have no effect
*ETA.FILE = name of the ETA file which should be used; it gives the event some behaviours and orders the sprites in some way (it is unsure what it does exactly stand for)
+
*FILE.ETA = name of the ETA file which should be used; it gives the event some behaviours and orders the sprites in some way
 
*specific event code = not every event has it; it tells the event which way it should "walk" for example
 
*specific event code = not every event has it; it tells the event which way it should "walk" for example
 
*33,255 = unsure; All codes must have this line or the game will crash
 
*33,255 = unsure; All codes must have this line or the game will crash
Line 63: Line 68:
 
*etat = spriteposition A (of a stored sprite in a .DES file)
 
*etat = spriteposition A (of a stored sprite in a .DES file)
 
*sub_etat = spriteposition B (of a stored sprite in a .DES file)
 
*sub_etat = spriteposition B (of a stored sprite in a .DES file)
*Offset_BX = is the x coordinate of the point where rayman could stand on (if the sprite is a "plattform")
+
*Offset_BX = is the x coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
*Offset_BY = is the y1 coordinate of the point where rayman could stand on (if the sprite is a "plattform")  
+
*Offset_BY = is the y1 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
*Offset_HY = is the y2 coordinate of the point where rayman could stand on (if the sprite is a "plattform")
+
*Offset_HY = is the y2 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
*Follow_enabled = if this is =1 than it rayman could stand on the event ("plattform")
+
*Follow_enabled = whether or not (i.e. 1 or 0) Rayman can stand on this event ("follow" its movement)
*follow_sprite = belongs to the "Follow_enabled". Tells the programm how far from the Offset_BX coordinate rayman can stand (well...it makes a exeact Offset_BX coordinate unnecessary, because you can redirect the coordinate with this number).
+
*follow_sprite = related to "Follow_enabled". Tells the program how far from the Offset_BX coordinate rayman can stand (this actually makes "Offset_BX" redundant).
*hitpoints = how much "lifes" the event has (enemies). But for a lot of events this number has a different meaning.
+
*hitpoints = for enemies like [[hunter]]s, how much [[resistance]] the event has. However, for many events this number has a different meaning.
*obj_type = this number tells the programm the MAIN behaviours of the sprite like if it is a ting, an enemy or only a background animation.
+
*obj_type = this number tells the program the main behaviours of the sprite; essentially, what type of event it is. An incomplete list of possible values, and their meanings, can be found [http://z15.invisionfree.com/Tehrunescape455/index.php?showtopic=186 here].
 
*hit_sprite = unsure
 
*hit_sprite = unsure
*group = in which group the event can be found (like group 5 is for enemys etc.)
+
*group = in which group the event can be found in the Events Editor. For example, the "Enemies" group is group 5.
  
  
 
'''The Main Code'''
 
'''The Main Code'''
  
The main code of an event will repeat itself when it comes to the end. Not all codes work for all events (= behaviours).
+
The main code of an event will repeat itself when it comes to the end. Most of these are effective only for certain "obj_type" values, i.e. behaviours.
 
This is all that is known about this part:
 
This is all that is known about this part:
  
*0, x, -> sprite walks right (x= time in milliseconds max. 254)
+
*0, x, -> sprite moves right (x = time in milliseconds, max. 254)
*1, x, -> sprite walks left (x= time in milliseconds max. 254)
+
*1, x, -> sprite moves left (x = time in milliseconds, max. 254)
  
*3, x, -> sprite walks up (x= time in milliseconds max. 254)
+
*3, x, -> sprite moves up (x = time in milliseconds, max. 254)
*4, x, -> sprite walks down (x= time in milliseconds max. 254)
+
*4, x, -> sprite moves down (x = time in milliseconds, max. 254)
*5, x -> change subetat (sprite pos. b ) to x
+
*5, x -> change subetat (sprite coord. b ) to x
 
*6, x, -> skip all code lines until line x
 
*6, x, -> skip all code lines until line x
  
*8, x, -> change etat (sprite pos. a) to x
+
*8, x, -> change etat (sprite coord. a) to x
  
 
*11, x, -> label x
 
*11, x, -> label x
Line 93: Line 98:
  
 
*19, x, -> wait x seconds
 
*19, x, -> wait x seconds
*20, x, y,z, -> moving sprite x time (in milliseconds max. 254) and y, z direction & speed
+
*20, t, x,y, -> sprite moves for t milliseconds (max. 254) with velocity given by x and y.
 +
 
 +
=== Unused events ===
 +
A bunch of unused events have been discovered. They can be added to the game by adding their code to the EVE.MLT file. A lot of these events are taken from [[Rayman 1|the original game]], such as a fully functioning [[Tarayzan]] and an unstable version of [[Rayman]] riding [[Bzzit]]. A lot of other events are however not used in the original game, although many can still be found in its files.
 +
 
 +
<gallery widths="316px" heights="200px" class="sprite">
 +
GiantLavaBall.png|A giant [[lava ball]], acting as scenery.
 +
BetaClouds.png|[[Cloud]]s with a face (known from the Atari Jaguar version). The ones to the right act like disappearing clouds.
 +
SmallLivingstonePlum.png|A [[small Livingstone]] on a bouncing [[plum]].
 +
Big rock.png|A giant [[rock]].
 +
Bouncing Mr. Sax obstacle.png|A [[wrong note]] from [[Mr Sax]]. Here it can be punched to move like a [[plum]].
 +
Clocks.png|The clocks from the [[continue]] screen, acting as scenery.
 +
Insta-kill events.png|Several red insta-kill events, previously seen in ''[[Rayman Junior]]''.
 +
Road signs.png|A bunch of colored road signs, acting as scenery.
 +
Tarayzan Designer.png|[[Tarayzan]] as a functioning event, except for the text not displaying when he gives [[Rayman]] the [[Magic seed|seed]].
 +
Music sign.png|An [[exit sign]] with a note.
 +
</gallery>
 +
 
 +
== Map properties ==
 +
For each created map there's an configuration file, named MAP.INI with the basic map properties. Example:
 +
 
 +
{| width="auto" align="center" style="border-style:dotted;border-width:1mm;border-color:green;text-align:left"
 +
|[Map]<br />
 +
World=<br />
 +
Title=<br />
 +
Author=<br />
 +
Comment=<br />
 +
 
 +
[Game]<br />
 +
Level=<br />
 +
 
 +
[Power]<br />
 +
Hanging=<br />
 +
Fist=<br />
 +
Helico=<br />
 +
SuperHelico=<br />
 +
Run=<br />
 +
Seed=<br />
 +
 
 +
[LevelBackGround]<br />
 +
Filename=<br />
 +
 
 +
[CD]<br />
 +
Track=<br />
 +
|}
 +
Most values here can simply be changed using the Mapper program. However, the Mapper program only gives two options for the background and music, while in fact there are usually several ones which can be used. Setting the track to 3 will play the [[Bonus level (Rayman 1)|bonus level]] music.
  
  
 
==The Extended ''Rayman Designer'' Editor==
 
==The Extended ''Rayman Designer'' Editor==
  
This is an unoffical tool that makes ''[[Rayman Designer]]'' modding much easier. It also comes with a large content package which includes a great deal of content from ''[[Rayman 1|Rayman]]'' and ''[[Rayman Junior]]'' that was not availible in ''Rayman Designer'', and also some new unofficial content.  
+
This is an unofficial tool that makes ''[[Rayman Designer]]'' modding much easier. It also comes with a large content package which includes a great deal of content from ''[[Rayman 1|Rayman]]'' and ''[[Rayman Junior]]'' that was not available in ''Rayman Designer'', and also some new unofficial content.  
  
 
*Download: http://www.rayman-fanpage.de/character/raymans_world_designer/RDeditor.exe
 
*Download: http://www.rayman-fanpage.de/character/raymans_world_designer/RDeditor.exe
Line 106: Line 156:
 
Through some editing of the game, the following things have been discovered:
 
Through some editing of the game, the following things have been discovered:
  
*There are some names of levels in the game that are not availible. It seems that they have been cut from the final game (or never been finnished): The Gates of the Jungle (jungle word), Diabolical Tunes (music world), The Fire Avalanche (mountain world), Miniature Madness (image world), Cloud of Doom (cave world), Dessert Anyone? (cake world)
+
*If events are placed in groups beyond group 9, it is found that these groups have the same names as the game's levels. This reveals the names of six additional levels. It seems that they have been cut from the final game (or never been finished): "The Gates of the Jungle" ([[The Dream Forest]]), "Diabolical Tunes" ([[Band Land]]), "The Fire Avalanche" ([[The Blue Mountains]]), "Miniature Madness" ([[Picture City]]), "Cloud of Doom" ([[The Caves of Skops]]) and "Dessert Anyone?" ([[Candy Château]]).
 
 
*A sprite from [[Rayman 2 (2D prototype)|''Rayman 2'' (2D version)]] could be found in the sprite files (a small platform that looks like a teleporter)
 
  
*The spritefiles also contain a considerable amount of content from the ''[[Rayman Junior]]'' (such as the world map icons) and some never-before-seen sprites.
+
*A sprite from [[Rayman 2 (2D prototype)|the 2D version of ''Rayman 2'']] could be found in the sprite files (a small platform that looks like a teleporter).
  
==Image gallery==
+
*The spritefiles also contain a considerable amount of content from the ''[[Rayman Junior]]'' (such as the world map icons) and some never-before-seen sprites.  
<gallery perrow="5">
 
Image:GiantLavaBall.png|A giant [[lava ball]]
 
Image:BetaClouds.png|[[Cloud]]s with a face (known from the Atari Jaguar Version)
 
Image:SmallLivingstonePlum.png|A [[small livingstone]] on a [[plum]]
 
</gallery>
 
  
 
[[Category:Other]]
 
[[Category:Other]]

Latest revision as of 13:12, 4 July 2019

Rayman Designer hacking is the process of modifying the program files of the game in order to change the appearance and the behaviour of in-game events and sceneries.

Graphics

Normal Platforms (Tiles)

In every world-folder (for example "jungle" or "music") of the game, there is a .PCX graphic file. It contains all the graphic tiles which are used by the Mapper. Tiles may be changed and added, but the following should not be changed:

  • The color palette used in the file. The addition of new colours causes the in-game graphics to display incorrectly.
  • The first tile on the top-left corner, which is used to set the transparent color in the file.
  • The lowest row of tiles, which are reserved for the Mapper's "types mode".
  • The image size, otherwise the Mapper will not work.

Also note that all custom maps will use the new graphics if the standard tiles are replaced. However, the 24 levels which come with the game have built-in graphics, and are not affected by PCX changes.

The PCX files used in the educational games are expansions of the ones from Rayman Designer, meaning that they can easily replace the ones in Designer without removing any existing tiles.

Animated objects

All animated sprites of the game (for example, Rayman himself and enemies) are stored in the .DES files, short for DESign. These files are packed in the .WLD files of the game, which are stored in the "pcmap" folder. It is possible to see what DES files are contained in a WLD file by simply opening it in a text editor. It is possible to extract sprites from these files, but little progress has been made on changing them.

ETA files, short for "état" ("state"), are stored in the WLD files in the same way. They appear to contain information about the animations of the sprites.

Before it became possible to extract sprites from the game, the only way to explore the contents of the DES files was experimentation with event codes. The names of the .DES files also give a clue as to their contents. Most of them are in French, but some are English. For example:

Some of these files, such as CLE.DES, contain only one object, while others contain very many different objects.

The names of the DES and ETA files cannot be seen in the WLD files of the original game or the Rayman Junior games, but they are present in the files from Rayman By His Fans.

Events

Editing events

In every world-folder of the game, there is a file called EVE.MLT. It contains all the codes of the events of the current world and can be modified any text editor. One has to scroll down to see the codes in question. It is unclear which programming language the game is written in, but the events are coded in this way:


œdef,eventname,DES_FILE,some number(?),

FILE.ETA,

specific event code

33,255,

main_X_pos, main_Y_pos,

etat, sub_etat,

Offset_BX, Offset_BY, Offset_HY,

Follow_enabled, follow_sprite, hitpoints,

obj_type , hit_sprite, group,

Caption:

  • œdef = define; this must come first
  • eventname = name of the event, could be anything; the events which come with the game all use codenames which start with "MS_" (so that they can be localized)
  • DES_FILE = name of the graphic file which should be used for the event (without the extension ".DES")
  • some number = unsure; it seems to have no effect
  • FILE.ETA = name of the ETA file which should be used; it gives the event some behaviours and orders the sprites in some way
  • specific event code = not every event has it; it tells the event which way it should "walk" for example
  • 33,255 = unsure; All codes must have this line or the game will crash
  • main_X_pos = main x coordinate of the event
  • main_Y_pos = main y coordinate of the event
  • etat = spriteposition A (of a stored sprite in a .DES file)
  • sub_etat = spriteposition B (of a stored sprite in a .DES file)
  • Offset_BX = is the x coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
  • Offset_BY = is the y1 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
  • Offset_HY = is the y2 coordinate of the point on the sprite on which Rayman can stand (if "Follow_enabled" is 1)
  • Follow_enabled = whether or not (i.e. 1 or 0) Rayman can stand on this event ("follow" its movement)
  • follow_sprite = related to "Follow_enabled". Tells the program how far from the Offset_BX coordinate rayman can stand (this actually makes "Offset_BX" redundant).
  • hitpoints = for enemies like hunters, how much resistance the event has. However, for many events this number has a different meaning.
  • obj_type = this number tells the program the main behaviours of the sprite; essentially, what type of event it is. An incomplete list of possible values, and their meanings, can be found here.
  • hit_sprite = unsure
  • group = in which group the event can be found in the Events Editor. For example, the "Enemies" group is group 5.


The Main Code

The main code of an event will repeat itself when it comes to the end. Most of these are effective only for certain "obj_type" values, i.e. behaviours. This is all that is known about this part:

  • 0, x, -> sprite moves right (x = time in milliseconds, max. 254)
  • 1, x, -> sprite moves left (x = time in milliseconds, max. 254)
  • 3, x, -> sprite moves up (x = time in milliseconds, max. 254)
  • 4, x, -> sprite moves down (x = time in milliseconds, max. 254)
  • 5, x -> change subetat (sprite coord. b ) to x
  • 6, x, -> skip all code lines until line x
  • 8, x, -> change etat (sprite coord. a) to x
  • 11, x, -> label x
  • 12, x, -> goto label x
  • 19, x, -> wait x seconds
  • 20, t, x,y, -> sprite moves for t milliseconds (max. 254) with velocity given by x and y.

Unused events

A bunch of unused events have been discovered. They can be added to the game by adding their code to the EVE.MLT file. A lot of these events are taken from the original game, such as a fully functioning Tarayzan and an unstable version of Rayman riding Bzzit. A lot of other events are however not used in the original game, although many can still be found in its files.

Map properties

For each created map there's an configuration file, named MAP.INI with the basic map properties. Example:

[Map]

World=
Title=
Author=
Comment=

[Game]
Level=

[Power]
Hanging=
Fist=
Helico=
SuperHelico=
Run=
Seed=

[LevelBackGround]
Filename=

[CD]
Track=

Most values here can simply be changed using the Mapper program. However, the Mapper program only gives two options for the background and music, while in fact there are usually several ones which can be used. Setting the track to 3 will play the bonus level music.


The Extended Rayman Designer Editor

This is an unofficial tool that makes Rayman Designer modding much easier. It also comes with a large content package which includes a great deal of content from Rayman and Rayman Junior that was not available in Rayman Designer, and also some new unofficial content.


Trivia

Through some editing of the game, the following things have been discovered:

  • If events are placed in groups beyond group 9, it is found that these groups have the same names as the game's levels. This reveals the names of six additional levels. It seems that they have been cut from the final game (or never been finished): "The Gates of the Jungle" (The Dream Forest), "Diabolical Tunes" (Band Land), "The Fire Avalanche" (The Blue Mountains), "Miniature Madness" (Picture City), "Cloud of Doom" (The Caves of Skops) and "Dessert Anyone?" (Candy Château).
  • The spritefiles also contain a considerable amount of content from the Rayman Junior (such as the world map icons) and some never-before-seen sprites.