Rayman 1 Level Editor/Viewer (Ray1Map)

Discuss tools to aid in the modification and running of Rayman games.

Moderators: English moderators, Modding and utilities team

Forum rules
Please keep the forum rules and guidelines in mind when creating or replying to a topic.
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

RayCarrot wrote: Sun Jul 12, 2020 9:01 pm Edit: I'm hoping the EDU games all have the same DES and ETA :P For example the Japanese and Chinese versions have an extra DES in allfix for the new characters, so all DES are offset by 1. I really wish all games referenced them by filename instead as that's much simpler to work with. That's how we can have just one column in the sheet for Kit which works for Designer and By his Fans even if they have different DES and ETA (both games have file tables).
Oh man, they probably don't… The Languages with Rayman games have extra sprites, don't they? Like the Magician hat with flag colours on it…

Anyway, I've added everything I've found so far to the spreadsheet, but there's plenty more I have yet to do. Everything I have was found manually, but an automated export could probably help a lot! You might notice I filled in the DesEdu but not EtaEdu for Joe's beach sand and Lava. I happened to find the DES indices, but the ETAs seem to have been completely reordered in Cave for some reason, so it'll take a bit more digging to find them – I'm thinking a script to list out the ETAs that are already in the spreadsheet, then applying the process of elimination…

EDIT: Btw, it looks like the letters and numbers use exactly the same hitpoint-to-colour correspondence as the coloured Tings in Designer. So that's where it started…
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

PluMGMK wrote: Sun Jul 19, 2020 11:30 am Oh man, they probably don't… The Languages with Rayman games have extra sprites, don't they? Like the Magician hat with flag colours on it…
Yeah that's the Quiz games. I do however hope all EDU game have the same sprites :P The Quiz ones probably do too since the region specific sprites simply replace existing ones rather than add new ones.
PluMGMK wrote: Sun Jul 19, 2020 11:30 am Anyway, I've added everything I've found so far to the spreadsheet, but there's plenty more I have yet to do. Everything I have was found manually, but an automated export could probably help a lot! You might notice I filled in the DesEdu but not EtaEdu for Joe's beach sand and Lava. I happened to find the DES indices, but the ETAs seem to have been completely reordered in Cave for some reason, so it'll take a bit more digging to find them – I'm thinking a script to list out the ETAs that are already in the spreadsheet, then applying the process of elimination…
Nice! I'll do an export in the next few days :) For the ETA what I did for R1 and Designer was to extract the length of each ETA - that way it's pretty simple to narrow it down. I'll go ahead and do the same for EDU. But the export should probably solve that for us too.
PluMGMK wrote: Sun Jul 19, 2020 11:30 am EDIT: Btw, it looks like the letters and numbers use exactly the same hitpoint-to-colour correspondence as the coloured Tings in Designer. So that's where it started…
Well not exactly. The letters have the hitpoint value be the frame index (the same thing is used in R1 for things like colored certain pencils, the pins in Picture City etc.). The colored tings however do some Designer-specific thing where the hitpoint value tells the game which sub-palette to use. That system really clashes with how R1 works in general, so we had to do a hack to get it to work in Ray1Map. The same thing is done for the colored butterflies in Designer. They sure didn't like being consistent :pfff:
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

RayCarrot wrote: Sun Jul 19, 2020 1:06 pm
PluMGMK wrote: Sun Jul 19, 2020 11:30 am EDIT: Btw, it looks like the letters and numbers use exactly the same hitpoint-to-colour correspondence as the coloured Tings in Designer. So that's where it started…
Well not exactly. The letters have the hitpoint value be the frame index (the same thing is used in R1 for things like colored certain pencils, the pins in Picture City etc.). The colored tings however do some Designer-specific thing where the hitpoint value tells the game which sub-palette to use. That system really clashes with how R1 works in general, so we had to do a hack to get it to work in Ray1Map. The same thing is done for the colored butterflies in Designer. They sure didn't like being consistent :pfff:
Ah, more inconsistencies! Well, I guess the idea of associating hitpoints to colours came from the letters and numbers, and they liked it so much that they wanted to extend it to animated objects, which couldn't use the simple frame hack… It's pretty cool though, as it allowed the creation of coloured clouds and the like by MLT hacking!

EDIT: Actually, I see now they seem to have conflated it with size and letter case, in some kind of world-dependent manner. For example, unless I'm mistaken, a hitpoints value of 5 will produce a green letter, which will be upper-case in Jungle, but lower-case in Image. I guess it's just a matter of realizing that and designing with it in mind…

EDIT2: I guess the situation also isn't as simple as I had thought with those EDU_VoiceLine entities. It looked like the hitpoints value could be used to make them output generic Gendoor sounds, but when I actually place one of those entities it plays Rayman's death sound no matter what. :P I guess that must be related to that block of "alpha" data for each map…

EDIT3: Either way, I've generated spreadsheet entries for every possible letter and number entity, using a Perl script. I can add them to the spreadsheet, but that will double its size, so I should probably ask first. :P

EDIT4: Good news and bad news! The good news is that I've figured out that the EDU_VoiceLine entities use the "Unk_76" variable to decide which sound to play. The following code in the SaveFile function is sufficient to make the events I added to the spreadsheet work when newly placed:

Code: Select all

	    // Voice lines!
	    foreach (var VoiceLine in commonLevelData.EventData.Where(x => (x.Data.Type == EventType.EDU_VoiceLine))) {
		    if (VoiceLine.Data.HitPoints == 4) {
			    VoiceLine.Data.Unk_76 = 4;
		    } else if (VoiceLine.Data.HitPoints == 5) {
			    VoiceLine.Data.Unk_76 = 5;
		    }
	    }
I haven't probed into the details of why the HitPoints are also involved, but it seems that the two values aren't always equal. :?

The bad news is that it looks like there's some additional factor deciding whether letters are upper- or lower-case, that's getting lost when saving – see the images:
Before editing the map
Before editing the map
After editing the map
After editing the map
I'll keep digging, but I'll probably call it a day for the moment…
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

(Edit: I rewrote my entire post as I kept adding new things through 10+ edits so it turned into a mess to read :P)

Oh wow nice! I missed your edits before, sorry!


Regarding the sheet:
I've made a script for exporting all events from EDU and merging them with the sheet. I've also merged the local & compiled commands and added EDU events :) I made a backup of the sheet before in case something went wrong. So what needs to be done is the following:
- Merge duplicate events (some got duplicated, like lines 7 & 8 )
- Add DES and ETA indexes for all worlds they're available in. My export only shows the DES and ETA for the worlds they're used in, but in a lot of cases they're available in more worlds and should thus be added.
- Name all the unnamed events

Please let me know if something went wrong with the export. I'll help out with these things when I got a chance :)

I pushed a commit where Ray1Map now uses the new sheet with EDU support. If you ever want to test your changes, just download the sheet as .csv and replace the file in the repo and it'll work. I haven't checked every level, but so far it seems the Quiz games works with these EDU values too! :)


Regarding Unk_76:
I looked into it and turns out the educational game adds an additional 32-bit HP value used only for the voice-line event. This is because the normal HP value is 8-bit, so a max value of 255 which isn't enough for all voice line indices. The HitPoints is always equal to (32BitHitPoints % 256), which makes sense.

I've updated Ray1Map to use this value. It wasn't included in the export though, but I'm not going to re-export anything since it'd just be a huge list of 600+ voice line events. We should probably just have 1 of them in the sheet anyway tbh. For the letters it's probably good making separate entries though.


Regarding upper/lower case:
I added basic memory loading support for EDU and it seems I was completely wrong with how the upper/lower-case is handled. I thought it was the HitPoints, but apparently the HitPoints value determines the color palette, just like the colored tings etc. :oops2: You can see it by editing the HitPoints value in real-time while loading from memory. Not really sure if we can easily add support for this in Ray1Map though... Currently it's done through a hack based on the DES names, which only works in Designer :/

You mentioned saving causes the letters to be uppercase, right? I checked and the only values which change when saving, without making any edits, are the runtime values... Odd that it would use one of those. It's like if the developers just changed the frame in their editor, set the animation speed to 0 and compiled the level...


Regarding the alpha:
I have no clue what that is. My guess was it was related to the letters (alpha=alphabet?) but I could be completely wrong. It consists of structs of 255 bytes each and appear in every level file (alongside a WLDMAP file, which is fixed data).


Edit: I pushed a commit to Ray1Map where, through slightly hacky code, I made it use the runtime animation frame index leftover from Ubisoft's editor to handle the upper/lower case. So it should work correctly now.

Edit 2 (or way more than 2 if you count all my million edits previously :P): I now changed the way multi-colored events are handled in Ray1Map to be a bit more generic. It should now work with memory loading as well as EDU (so letters appear in the correct color now). Once again the code is a bit hacky, but it's the best we can do since we create all graphics before loading the level, while the game creates them each time they're drawn on screen.

Image
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

RayCarrot wrote: Tue Jul 21, 2020 8:18 am Regarding the sheet:
I've made a script for exporting all events from EDU and merging them with the sheet. I've also merged the local & compiled commands and added EDU events :) I made a backup of the sheet before in case something went wrong. So what needs to be done is the following:
- Merge duplicate events (some got duplicated, like lines 7 & 8 )
- Add DES and ETA indexes for all worlds they're available in. My export only shows the DES and ETA for the worlds they're used in, but in a lot of cases they're available in more worlds and should thus be added.
- Name all the unnamed events
I've made some progress here, in particular going through the "Slick Slopes" level in Music to identify the artworks there. It's ridiculous that they used hitpoints instead of subetats for the artworks, but them's the breaks. :roll: Apparently, the hitpoint values (for the most part) correspond to the order in which the artworks appear in the game. Meanwhile, the "EDU_MOT" ("mot" = "word") entities are used to pop up a subtitle that follows your progress in spelling the word. Here, the hitpoints are again used to select the word, but this time they're in alphabetical order! I didn't get all of them, so I'm guessing some of them came from Volume 2, which I don't have…

EDIT: It's pretty amazing how sloppily they edited those Music levels btw. Some of the volume 1 levels are clearly carved-out subsections of longer levels from different regions or volumes, with what look almost like alternate paths when you're in the editor. Even the demo level is carved out of a longer map from the French version (containing the word "barbe", although the corresponding artwork appears to be a house…). As a result, the demo section itself doesn't contain any wrong-answer punishments (no need, since the person playing the demo gets the answers right), but the off-screen bits from the French map do have punishments in them!
RayCarrot wrote: Tue Jul 21, 2020 8:18 am Regarding Unk_76:
I looked into it and turns out the educational game adds an additional 32-bit HP value used only for the voice-line event. This is because the normal HP value is 8-bit, so a max value of 255 which isn't enough for all voice line indices. The HitPoints is always equal to (32BitHitPoints % 256), which makes sense.

I've updated Ray1Map to use this value. It wasn't included in the export though, but I'm not going to re-export anything since it'd just be a huge list of 600+ voice line events. We should probably just have 1 of them in the sheet anyway tbh. For the letters it's probably good making separate entries though.
Some of the "voice lines" are generic sounds, which I think should be in there, but I agree that most of them are pretty pointless. If you really want to put a particular voice line in the level, it shouldn't be too hard to adjust the HP value manually. I can't really see why you'd want to do that anyway… As for the letters, I replaced the exported ones with the output of my Perl script, since it just covers every possibility.
RayCarrot wrote: Tue Jul 21, 2020 8:18 am Regarding upper/lower case:
I added basic memory loading support for EDU and it seems I was completely wrong with how the upper/lower-case is handled. I thought it was the HitPoints, but apparently the HitPoints value determines the color palette, just like the colored tings etc. :oops2: You can see it by editing the HitPoints value in real-time while loading from memory. Not really sure if we can easily add support for this in Ray1Map though... Currently it's done through a hack based on the DES names, which only works in Designer :/

You mentioned saving causes the letters to be uppercase, right? I checked and the only values which change when saving, without making any edits, are the runtime values... Odd that it would use one of those. It's like if the developers just changed the frame in their editor, set the animation speed to 0 and compiled the level...


Edit: I pushed a commit to Ray1Map where, through slightly hacky code, I made it use the runtime animation frame index leftover from Ubisoft's editor to handle the upper/lower case. So it should work correctly now.

Edit 2 (or way more than 2 if you count all my million edits previously :P): I now changed the way multi-colored events are handled in Ray1Map to be a bit more generic. It should now work with memory loading as well as EDU (so letters appear in the correct color now). Once again the code is a bit hacky, but it's the best we can do since we create all graphics before loading the level, while the game creates them each time they're drawn on screen.

https://cdn.discordapp.com/attachments/ ... nknown.png
Yep, I guess every time you think things couldn't get worse, you find some other weird ad-hoc technique they set up for something! The thing is, without whatever forcing technique they used, the hitpoints also impact the case as well as the colour. I guess they originally planned to use hitpoints for case, then mid-way through development someone had the bright idea of multi-coloured letters. :? Anyway, whatever hack is there, it also applies to numbers I think, since there are different sizes of digits. Do you think it'll be possible to implement a way to change the case/size in Ray1Map?
RayCarrot wrote: Tue Jul 21, 2020 8:18 am Regarding the alpha:
I have no clue what that is. My guess was it was related to the letters (alpha=alphabet?) but I could be completely wrong. It consists of structs of 255 bytes each and appear in every level file (alongside a WLDMAP file, which is fixed data).
Come to think of it, it's probably the data for the help screen, that shows up when you press F1. In "Rising Tides", that screen literally shows you the alphabet, so maybe that was one of the first ones they worked on. So maybe the evil plant was one of the first enemies they worked on…


Btw, they also did some really funky stuff with the UFO indicators, specifically the flashing ones that can be operated by the levers. The OffsetHY value is used to determine whether the lever rotates the direction clockwise (0) or anticlockwise (1). The HitPoints value determines whether the event is visible in-game (0) or only in the editor (1).
In the EDU games, since the indicators are visible in Cave, but not Image, they made all the Cave ones have 0 HP, and all the Image ones have 1 HP, even though this actually affects only a small minority of them. And then, judging by the export, Cave contains both clockwise and anticlockwise ones, even though EDU doesn't have any levers in Cave. :fou2:
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

PluMGMK wrote: Tue Jul 21, 2020 10:13 pm
RayCarrot wrote: Tue Jul 21, 2020 8:18 am Regarding the sheet:
I've made a script for exporting all events from EDU and merging them with the sheet. I've also merged the local & compiled commands and added EDU events :) I made a backup of the sheet before in case something went wrong. So what needs to be done is the following:
- Merge duplicate events (some got duplicated, like lines 7 & 8 )
- Add DES and ETA indexes for all worlds they're available in. My export only shows the DES and ETA for the worlds they're used in, but in a lot of cases they're available in more worlds and should thus be added.
- Name all the unnamed events
I've made some progress here, in particular going through the "Slick Slopes" level in Music to identify the artworks there. It's ridiculous that they used hitpoints instead of subetats for the artworks, but them's the breaks. :roll: Apparently, the hitpoint values (for the most part) correspond to the order in which the artworks appear in the game. Meanwhile, the "EDU_MOT" ("mot" = "word") entities are used to pop up a subtitle that follows your progress in spelling the word. Here, the hitpoints are again used to select the word, but this time they're in alphabetical order! I didn't get all of them, so I'm guessing some of them came from Volume 2, which I don't have…
Nice! Regarding the MOT I believe it's different for each language version. Everything which is unique to a language version is stored in the SPECIAL.DAT file. You can see the serialized contents in Ray1Map by pressing "Log Archive Files" under the game tools, with the Serialization Log being enabled. Then search for "mot" in the text file and you'll see the array of them for that version. I believe the order corresponds to the hitpoints value. Because it's always different we probably shouldn't include them in the sheet either, unless we just say something like "MOT 1", "MOT 2" etc.

Speaking of the log, I believe the SampleNames array has the order used for the voice samples and such. You can use the tool "Export Sound" to get the actual sounds as .wav files. I'm not sure if it's indexed from 0 or not though, since I believe the original 256 sound samples from R1 might be included (like Rayman's sound effects, effects when you collect a ting etc.).

I should also note there are currently two archived files not being logged, "SCRIPT" (which I have 0 clue what it's for) and WLDMAP01 (which has the file names for certain vignette files as well as a chunk of ALPHA data). I might look into these some time. Problem is the game doesn't parse these two files really, but rather just reads them into memory as they are, which makes it harder :/
PluMGMK wrote: Tue Jul 21, 2020 10:13 pm
RayCarrot wrote: Tue Jul 21, 2020 8:18 am Regarding upper/lower case:
I added basic memory loading support for EDU and it seems I was completely wrong with how the upper/lower-case is handled. I thought it was the HitPoints, but apparently the HitPoints value determines the color palette, just like the colored tings etc. :oops2: You can see it by editing the HitPoints value in real-time while loading from memory. Not really sure if we can easily add support for this in Ray1Map though... Currently it's done through a hack based on the DES names, which only works in Designer :/

You mentioned saving causes the letters to be uppercase, right? I checked and the only values which change when saving, without making any edits, are the runtime values... Odd that it would use one of those. It's like if the developers just changed the frame in their editor, set the animation speed to 0 and compiled the level...


Edit: I pushed a commit to Ray1Map where, through slightly hacky code, I made it use the runtime animation frame index leftover from Ubisoft's editor to handle the upper/lower case. So it should work correctly now.

Edit 2 (or way more than 2 if you count all my million edits previously :P): I now changed the way multi-colored events are handled in Ray1Map to be a bit more generic. It should now work with memory loading as well as EDU (so letters appear in the correct color now). Once again the code is a bit hacky, but it's the best we can do since we create all graphics before loading the level, while the game creates them each time they're drawn on screen.

https://cdn.discordapp.com/attachments/ ... nknown.png
Yep, I guess every time you think things couldn't get worse, you find some other weird ad-hoc technique they set up for something! The thing is, without whatever forcing technique they used, the hitpoints also impact the case as well as the colour. I guess they originally planned to use hitpoints for case, then mid-way through development someone had the bright idea of multi-coloured letters. :? Anyway, whatever hack is there, it also applies to numbers I think, since there are different sizes of digits. Do you think it'll be possible to implement a way to change the case/size in Ray1Map?
Yeah, since Rayman Designer was used to create the EDU games there's even a leftover help string for how to do these things:

Code: Select all

Special Keys in EVENT editor
'up or down arrow' Change color or scroll samples per 50
'right or left arrow' Change frame (size,icon,number or sample)
In theory these features might still be in there if the .mlt files contains an object of one of these types :P But the DES and ETA files aren't included, so would be worthless (unless we manually transferred them over which should be possible :P).
Anyway, yeah, we should have something for the frame in Ray1Map. Sadly I'm really not familiar with Unity (Ryemanni and Adsolution did all the UI, and they're not working on it anymore), but I could maybe do something like if you hover over an event you can cycle between the frames with the left and right arrows, like it was done in Designer. I can look into that later today :)
PluMGMK wrote: Tue Jul 21, 2020 10:13 pm
RayCarrot wrote: Tue Jul 21, 2020 8:18 am Regarding the alpha:
I have no clue what that is. My guess was it was related to the letters (alpha=alphabet?) but I could be completely wrong. It consists of structs of 255 bytes each and appear in every level file (alongside a WLDMAP file, which is fixed data).
Come to think of it, it's probably the data for the help screen, that shows up when you press F1. In "Rising Tides", that screen literally shows you the alphabet, so maybe that was one of the first ones they worked on. So maybe the evil plant was one of the first enemies they worked on…
I don't think it's related to that, but I can't be sure. If you check the vignette exports all of those F1 images are included there.
PluMGMK wrote: Tue Jul 21, 2020 10:13 pm Btw, they also did some really funky stuff with the UFO indicators, specifically the flashing ones that can be operated by the levers. The OffsetHY value is used to determine whether the lever rotates the direction clockwise (0) or anticlockwise (1). The HitPoints value determines whether the event is visible in-game (0) or only in the editor (1).
In the EDU games, since the indicators are visible in Cave, but not Image, they made all the Cave ones have 0 HP, and all the Image ones have 1 HP, even though this actually affects only a small minority of them. And then, judging by the export, Cave contains both clockwise and anticlockwise ones, even though EDU doesn't have any levers in Cave. :fou2:
Oof :/ I appreciate them trying to make things less hard-coded like in the Jaguar version (where each event type just points to a function which handles it, so no generic values like hp, follow, offsets etc.) but they always ended up hacking their own code to make it work without adding new properties. Such a mess lol HY is normally the height of the collision if follow is enabled...
This is especially annoying since currently Ray1Map has a toggle for showing/hiding editor events which is based off of the type. Each type is either Normal, Editor or Always. But that breaks with this, and several other instances too (such as an event type being both always and normal in R2, the counter computer event being editor in EDU but normal in Kit etc.). I might need to look into handling this differently, but either way it's going to end up in a mess of if statements :pfff: (but too be fair that's exactly how the source code of R1 looks like).

Btw, just let me know if you want me to pm you some of the other edu/quiz games!

Edit: I've pushed a commit where you can now cycle between the frames of an animation by pressing O or P while having an event selected. It only works if you don't have animations enabled. This will make it possible changing the frame of the letters :)
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

RayCarrot wrote: Wed Jul 22, 2020 8:54 am Nice! Regarding the MOT I believe it's different for each language version. Everything which is unique to a language version is stored in the SPECIAL.DAT file. You can see the serialized contents in Ray1Map by pressing "Log Archive Files" under the game tools, with the Serialization Log being enabled. Then search for "mot" in the text file and you'll see the array of them for that version. I believe the order corresponds to the hitpoints value. Because it's always different we probably shouldn't include them in the sheet either, unless we just say something like "MOT 1", "MOT 2" etc.
Gotcha. I see they are indeed in alphabetical order in the GB versions, except for four unused ones at the end. I've changed the spreadsheet to say "Spelling Starter: MOT 0" etc. Those events are pretty cool actually. When they're in action, they give Rayman the ability to collect EDU_LETTRE events like Tings, but only relevant ones, and only in the right order if the HitPoints value is 1. He can only collect lower-case letters, although colour doesn't matter (but they always show up as red in the subtitle).

As for the artworks, I suspected that, since they seem to appear in the exact order they're used in the GB1 game, they might be region-specific too. However, I just checked the "barbe" one, and it's a picture of a bearded Rayman:
snip-1595445500.png
snip-1595445500.png (2.8 KiB) Viewed 4781 times
I needed to use the new frame-switching feature to see that too, which explains why last night I thought it was a house in the GB version. Turns out that, despite the fact that they use HitPoints to determine the frame for artworks, the runtime frame value is also frozen from the editor, like for the letters. :boon: So I guess Ray1Map will need to automatically set the frame value to be equal to the HitPoints value on the Artwork objects.
RayCarrot wrote: Wed Jul 22, 2020 8:54 amSpeaking of the log, I believe the SampleNames array has the order used for the voice samples and such. You can use the tool "Export Sound" to get the actual sounds as .wav files. I'm not sure if it's indexed from 0 or not though, since I believe the original 256 sound samples from R1 might be included (like Rayman's sound effects, effects when you collect a ting etc.).
Haven't checked this yet, but all I know is that when the index is zero, it plays Rayman's death sound…

RayCarrot wrote: Wed Jul 22, 2020 8:54 am Yeah, since Rayman Designer was used to create the EDU games there's even a leftover help string for how to do these things:

Code: Select all

Special Keys in EVENT editor
'up or down arrow' Change color or scroll samples per 50
'right or left arrow' Change frame (size,icon,number or sample)
In theory these features might still be in there if the .mlt files contains an object of one of these types :P But the DES and ETA files aren't included, so would be worthless (unless we manually transferred them over which should be possible :P).
Anyway, yeah, we should have something for the frame in Ray1Map. Sadly I'm really not familiar with Unity (Ryemanni and Adsolution did all the UI, and they're not working on it anymore), but I could maybe do something like if you hover over an event you can cycle between the frames with the left and right arrows, like it was done in Designer. I can look into that later today :)
Obviously this was the reason that they used HitPoints instead of subetats for the Artworks, so they could cycle through them using the arrow keys instead of having a load of different event types. Doesn't make the inconsistency any less annoying though. :P

As for the DES/ETAs not being in Designer, did you ever figure out what LET.DES and LET2.DES are for? They sound like "letter" but they don't have associated ETAs, and I don't remember ever seeing what was in them.
RayCarrot wrote: Wed Jul 22, 2020 8:54 am I don't think it's related to that, but I can't be sure. If you check the vignette exports all of those F1 images are included there.
Fair enough. It remains pretty mysterious then…
RayCarrot wrote: Wed Jul 22, 2020 8:54 am Edit: I've pushed a commit where you can now cycle between the frames of an animation by pressing O or P while having an event selected. It only works if you don't have animations enabled. This will make it possible changing the frame of the letters :)
Cool! I think now might be a good time for me to post a video of my new and improved version of Moskito in Betilla's Garden, where the whole level is intact because I was able to add new events instead of reappropriating existing ones. :P Is it OK if I say in the description that you're looking for help with the UI? Maybe someone will pick up on it!
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

I couldn't find a level with the artwork objects, but I set it to use the HP value as the frame there. I did also notice while searching for a level with it that I missed that type TYPE_EDU_CHIFFRE also uses the editor frame value, so I updated that. I also cleaned it up a bit by adding these things in EventTypeExtensions.
PluMGMK wrote: Wed Jul 22, 2020 8:30 pm As for the DES/ETAs not being in Designer, did you ever figure out what LET.DES and LET2.DES are for? They sound like "letter" but they don't have associated ETAs, and I don't remember ever seeing what was in them.
I'm fairly sure it's just the font from the EDU games. If you check the sprites in the EDU games you'll see the exact same DES is in allfix, while each world has the letters which appear in levels.
PluMGMK wrote: Wed Jul 22, 2020 8:30 pm Cool! I think now might be a good time for me to post a video of my new and improved version of Moskito in Betilla's Garden, where the whole level is intact because I was able to add new events instead of reappropriating existing ones. Is it OK if I say in the description that you're looking for help with the UI? Maybe someone will pick up on it!
I'm looking forward to it! :) Regarding the description, sure, I'd appreciate that! It'd be great if we could eventually compile Ray1Map into a program people could use.
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

RayCarrot wrote: Wed Jul 22, 2020 9:16 pm I couldn't find a level with the artwork objects, but I set it to use the HP value as the frame there. I did also notice while searching for a level with it that I missed that type TYPE_EDU_CHIFFRE also uses the editor frame value, so I updated that. I also cleaned it up a bit by adding these things in EventTypeExtensions.
Great! :D
RayCarrot wrote: Wed Jul 22, 2020 9:16 pm
PluMGMK wrote: Wed Jul 22, 2020 8:30 pm As for the DES/ETAs not being in Designer, did you ever figure out what LET.DES and LET2.DES are for? They sound like "letter" but they don't have associated ETAs, and I don't remember ever seeing what was in them.
I'm fairly sure it's just the font from the EDU games. If you check the sprites in the EDU games you'll see the exact same DES is in allfix, while each world has the letters which appear in levels.
Makes sense. If it were really the in-level letters, it'd surely be usable in some way.
RayCarrot wrote: Wed Jul 22, 2020 9:16 pm
PluMGMK wrote: Wed Jul 22, 2020 8:30 pm Cool! I think now might be a good time for me to post a video of my new and improved version of Moskito in Betilla's Garden, where the whole level is intact because I was able to add new events instead of reappropriating existing ones. Is it OK if I say in the description that you're looking for help with the UI? Maybe someone will pick up on it!
I'm looking forward to it! :) Regarding the description, sure, I'd appreciate that! It'd be great if we could eventually compile Ray1Map into a program people could use.
Here's the new video: The letter colour still correlates with the case, because I recorded this before you pushed out the updates for dealing with the hitpoints and frames separately. I've since made a version of the map where they're in rainbow text instead. :P
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

Nice! :)
I also realized that I accidentally removed a method used for updating the selected collision type in a previous commit :oops2: I've added it back, so collision editing should work again. You need to hold CTRL while dragging for it to work though.

Edit: Btw, regarding the HP value determining if the UFO indicators should show, are you sure about this? I just tested changing the value while loading from memory as well as saving the map and it didn't make a difference. I think it might be hard-coded based on the world.
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

Changing the HP in Image definitely worked for me, both in EDU and Designer. I wasn't using memory editing for this (I don't think that's possible on Linux). I haven't tried in Cave…

Anyway, the new type placement works perfectly for me! I guess now I'll have to make one last version of the video, showing the rainbow text, and including me planting a seed and pwning Moskito with the height advantage! :P Then I should probably move on from the Moskito boss as such – maybe the next thing I should try is an EDU level where Rayman's riding a mosquito…

EDIT: I just tried exporting the sounds, and I noticed that the Gendoor sound I had called "Generic" is indeed called "GENDOOR", while the one I called "Double-Back" is called "CHERCHE", i.e. "SEARCH". I wasn't too far off. :P
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

I tried it again and it seems it works for only some of them. The ones which change the speed don't ever seem to display.

A new Bzzit stage would be cool! :)

Do you think I should include the sheet as it is in a new commit now? I haven't had time yet to look through it as I've been fixing up some final things for Ray1Map. I did delete a bunch of the voice event lines though.
Btw, thank you once again for helping out with it :)
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

Yes, only the ones that can be affected by levers can appear in-game (subetats 0-3). That's why I said it was pointless for them to change the HP on all the other ones in their Image MLT, and it just ended up leading to duplication on our spreadsheet. :fou2:

I should probably go through and name the remaining artworks before you release it, which I'll hopefully do tomorrow night. I just named the few remaining voice events, and I changed it so all the names start with "Sound Sample:" so they'll be grouped alphabetically. It's strange that your export included "Death" and "PERFECT!" ones though, since I don't recall hearing those in-game. Maybe I should double-check that they actually make those sounds… I should also probably do something about the naming of symbols and punctuation marks, since they're also currently all over the place alphabetically.

And you're more than welcome. :D As far as I can remember, the EDU games were the first platformers I ever played, and I'm delighted to be able to dig into them to such an extent all these years later!

EDIT: I see now how they made it so some samples can replay when Rayman walks over them again, while others are once-off. The repetition interval is specified in the SMPNAMES block of SPECIAL.DAT and it's either 5 or 32000. So the "once-off" ones will in fact repeat, just not for 32000 seconds. In other words, if you triggered a gendoor and then messed around in the map for nine hours (enough messing not to make it auto-pause) and then went back to the gendoor, you'd hear the sound again. :fou:
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

PluMGMK wrote: Thu Jul 23, 2020 10:35 pm Yes, only the ones that can be affected by levers can appear in-game (subetats 0-3). That's why I said it was pointless for them to change the HP on all the other ones in their Image MLT, and it just ended up leading to duplication on our spreadsheet.
Oh I see. I probably won't bother handling it differently in Ray1Map then from a normal editor event.
PluMGMK wrote: Thu Jul 23, 2020 10:35 pm EDIT: I see now how they made it so some samples can replay when Rayman walks over them again, while others are once-off. The repetition interval is specified in the SMPNAMES block of SPECIAL.DAT and it's either 5 or 32000. So the "once-off" ones will in fact repeat, just not for 32000 seconds. In other words, if you triggered a gendoor and then messed around in the map for nine hours (enough messing not to make it auto-pause) and then went back to the gendoor, you'd hear the sound again.
Oh nice, that's what those values are for! :) It's pretty neat how they started making the EDU/Kit games more modular by storing this data outside of the exe and making it easy to modify. Probably so it'd be easier making all the different EDU versions :P
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

OK, now I've got a name for every single object in the spreadsheet, including prefixing the words "Symbol", "Punctuation" or "Letter" to any "TYPE_EDU_LETTRE" ones that didn't already have them, so they'll be sensibly grouped in the alphabetical listing. I'd like to add all the other artworks (that weren't in the export), but I don't really know what to call most of them. :oops2: A job for another day, and I think we can probably go live with the version that's there now.

I've also fleshed out the MOT entities, so now all words are available in both fixed and arbitrary order, and are available in every world except Cave. The DES and ETA are present in Cave, but the sprite comes up blank in the editor, and the event doesn't function in-game. :?

I have no idea why there seemed to be random Correct Answer Position events somewhere in Music with different OffsetHY values. I couldn't find the originals, so I just created some new ones to test, and it doesn't seem to make any difference. I also realized that those entities don't actually make the "Ric!" sound themselves, it's handled by an EDU_VoiceLine linked to the EDU_LogicOperator tying together the final scene. I wonder how the operator knows which VoiceLine to activate and when. :fou2:

EDIT: I also found the ETA for the levers in Cave. Wasn't too difficult after all! Still need to find it for Lava and Joe's Beach Sand, but I think that can also wait for another day!
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

PluMGMK wrote: Fri Jul 24, 2020 11:31 pm OK, now I've got a name for every single object in the spreadsheet, including prefixing the words "Symbol", "Punctuation" or "Letter" to any "TYPE_EDU_LETTRE" ones that didn't already have them, so they'll be sensibly grouped in the alphabetical listing. I'd like to add all the other artworks (that weren't in the export), but I don't really know what to call most of them. :oops2: A job for another day, and I think we can probably go live with the version that's there now.
Nice! :D I'll go ahead and include the current sheet in a new commit. Would you want me to credit you in the readme for your help with the project?
PluMGMK wrote: Fri Jul 24, 2020 11:31 pm I've also fleshed out the MOT entities, so now all words are available in both fixed and arbitrary order, and are available in every world except Cave. The DES and ETA are present in Cave, but the sprite comes up blank in the editor, and the event doesn't function in-game. :?
I added the DES and ETA indexes to the sheet and tried it in the editor and it seems to work. Maybe you used the wrong ETA? It seems 40 is the correct one (see below).
PluMGMK wrote: Fri Jul 24, 2020 11:31 pm EDIT: I also found the ETA for the levers in Cave. Wasn't too difficult after all! Still need to find it for Lava and Joe's Beach Sand, but I think that can also wait for another day!
I've gone ahead and added a tool in the latest commit for exporting ETA info for the currently selected game to a .json file. It makes it a lot easier matching them between games :) The "extended" export option includes all the state info, while the normal one only shows you the lengths of each SubEtat array.
I found Joe's Beach Sand, the Lava and the cave MOT with it and filled them in. Interestingly enough the export also seems to show several unused ETA's in each world for games like R1 where all events have been filled out in the sheet. Not sure what that's about :P
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

Ah, I see. I used the right ETA, but the wrong DES. :oops2: In every other world, the MOT ETA and DES are both 3 after the SMP ones. But in cave apparently the MOT DES is 5 after the SMP one. I wonder what the two extra ones are.

I'll have to check out the new export tool, it sounds cool! Sure, you can credit me in the readme. :)

Btw, I figured out why the PERFECT and Death samples were in the export – of course they were actually samples 256 and 257, before you implemented extended hitpoints in Ray1Map. :oops2:
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

PluMGMK wrote: Sat Jul 25, 2020 11:19 am Ah, I see. I used the right ETA, but the wrong DES. :oops2: In every other world, the MOT ETA and DES are both 3 after the SMP ones. But in cave apparently the MOT DES is 5 after the SMP one. I wonder what the two extra ones are.
Ah I see! Regarding the DES, you can use the "Export sprites" tool for that :) The file names will however use the world indexes, so to get the global indexes you need to do allfixDesCount + 1 + worldIndex (the +1 is there because DES 0 is not in any file - I have no clue what it is tbh, using it in-game shows nothing and makes the game drop frames like crazy).
PluMGMK wrote: Sat Jul 25, 2020 11:19 am Btw, I figured out why the PERFECT and Death samples were in the export – of course they were actually samples 256 and 257, before you implemented extended hitpoints in Ray1Map. :oops2:
Ah right! That makes sense :P
PluMGMK
Aline Louïa
Posts: 37010
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102745

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by PluMGMK »

Ah shoot, I just realized I screwed up the Beach Ball. I actually gave it the ETA number for the Lever, which explains why I couldn't find the Lever before (I assumed that number was for the Beach Ball itself). I just tested it any my Beach Balls don't actually work. :oops2: Strangely, the extended export doesn't seem to be showing up any other suitable ETAs. Maybe they bundled it in with something else. :?

EDIT: The Lava also behaves very strangely. I lined the bottom of a level with it, and it works, but somehow it causes my controls to reverse (like Mister Dark's curse) and the game seems to softlock when I die. I wonder if it's related to not having Skops in the same level.
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Rayman 1 Level Editor/Viewer (Ray1Map)

Post by RayCarrot »

I had a look at the Beach Ball too and couldn't find the ETA either :/ Maybe they didn't include it.

Regarding the lava, that is very odd indeed... The control reversing should only happen from the Mr Dark event type.
I had a look in the Rayman Classic exe, since that has function names and such, and it seems it does do some special things with the lava for the Skops boss fight. There's a big method which handles randomizing the falling platforms there, Skops movements and something with the lava (it enumerates all lava objects and does something with them). Thing is this code only runs if "num_level == 10" and if Skops is in the level. So you probably can't get it to work for EDU sadly. They hard-coded quite a lot when it comes to the boss fights.
Post Reply