Ray1Editor - Rayman 1 Level Editor

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.
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Ray1Editor - Rayman 1 Level Editor

Post by RayCarrot »

Image Ray1Editor - Rayman 1 Level Editor

Ray1Editor is a 2D level editor for Rayman 1, currently supporting the PC and PS1 versions. This project is derived from the Ray1Map project, using the same libraries to parse the game data.

Getting started
  • Download the latest release.
  • Open the program and add a new game. Set the path to the game installation and specify the mode and name.
  • Select the game in the list and choose a map to load.
  • Modify the map using the 3 available edit modes (tiles, objects and links) and the available options in the panel to the right. For more help with the editor, check the help menu.
  • When finished editing, save your changes and test them in-game. It is always recommended to keep a backup of the game files before saving.
Links
GitHub: https://github.com/RayCarrot/RayCarrot.Ray1Editor
Download: https://raym.app/ray1editor

Note: When editing the PS1 version it is recommended to download the edit kit (in the downloads page) in order to have the files set up correctly.

Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

I started using this whilst I was bored in endless lockdowns etc, I like what you managed to do with the editor, I made an editor years back but it was buggy and didn't handle sprites.

I noticed that your BinarySerializer and BinarySerializer.Ray1 GitHub repositories had things on how to change the world map and string values etc. However I went to download that code to try it and it looks like GitHub removed lots of brackets and messed with formatting so it wouldn't compile, for example this C# statement...

Code: Select all

using Stream s = FileManager.GetFileReadStream(AbsolutePath);
should probably look like...

Code: Select all

using (Stream s = FileManager.GetFileReadStream(AbsolutePath))
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Ray1Editor - Rayman 1 Level Editor

Post by RayCarrot »

Chacanger wrote: Mon Nov 29, 2021 8:57 pm I noticed that your BinarySerializer and BinarySerializer.Ray1 GitHub repositories had things on how to change the world map and string values etc.
Yeah you can use the libraries to modify most of the game data. Feel free to let me know if you have any questions about it.
Chacanger wrote: Mon Nov 29, 2021 8:57 pm However I went to download that code to try it and it looks like GitHub removed lots of brackets and messed with formatting so it wouldn't compile, for example this C# statement...

Code: Select all

using Stream s = FileManager.GetFileReadStream(AbsolutePath);
should probably look like...

Code: Select all

using (Stream s = FileManager.GetFileReadStream(AbsolutePath))
That's C# 8 syntax :) It's rather convenient as it doesn't require indenting the code. I'm surprised it doesn't compile for you though since it's set to use C# 8 in the project. Perhaps you're on an older version of Visual Studio?
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

RayCarrot wrote: Mon Nov 29, 2021 9:08 pm That's C# 8 syntax :) It's rather convenient as it doesn't require indenting the code. I'm surprised it doesn't compile for you though since it's set to use C# 8 in the project. Perhaps you're on an older version of Visual Studio?
Ah that would explain it, yeah never touched C# 8 due to most things being written in older versions, plus I'm still on VS2017, didn't realise they changed it that much.

I don't want to download another VS for the time being so I might have a fudge to get round it by downloading a newer Microsoft.Net.Compilers.Toolset NuGet pacakge.
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

I'm not sure why this is but the DOS version seems to have issues when trying to change a level backround from a static one to a parallax scrolling one. I seem to get a load of memory errors and the parallax layer ends up in the wrong order. I think this is something pointer related but not sure what causes it.

For example if I change Mr Sax's Hullaballoo 1 background to Bongo Hills background or from Eraser Plains 3 to Eraser Plains 1 background it causes issues.

I was going to show a screenshot but I haven't currently got my filesharing login to hand.

Here's an example of the error I get in DosBox...

Code: Select all

Illegal read from f000106e, CS:IP      860:   75fe1
Illegal read from f000106f, CS:IP      860:   75fe1
Illegal read from f000107d, CS:IP      860:   75f94
Illegal read from f000107e, CS:IP      860:   75fc0
Illegal read from f000107d, CS:IP      860:   75fce
Illegal read from f0001078, CS:IP      860:   75fe1
Illegal read from f0001079, CS:IP      860:   75fe1
Illegal read from f000107a, CS:IP      860:   75fe1
Illegal read from f000107b, CS:IP      860:   75fe1
Illegal read from f0001089, CS:IP      860:   75f94
Illegal read from f000108a, CS:IP      860:   75fc0
Illegal read from f0001089, CS:IP      860:   75fce
Illegal read from f0001084, CS:IP      860:   75fe1
Illegal read from f0001085, CS:IP      860:   75fe1
Illegal read from f0001086, CS:IP      860:   75fe1
Illegal read from f0001087, CS:IP      860:   75fe1
Illegal read from f0001095, CS:IP      860:   75f94
Illegal read from f00010a1, CS:IP      860:   75f94
Illegal read from f00010a2, CS:IP      860:   75fc0
Illegal read from f00010a1, CS:IP      860:   75fce
Illegal read from f000109c, CS:IP      860:   75fe1
Illegal read from f000109d, CS:IP      860:   75fe1
Illegal read from f000109e, CS:IP      860:   75fe1
Illegal read from f000109f, CS:IP      860:   75fe1
Illegal read from f00010ad, CS:IP      860:   75f94
Illegal read from f00010ae, CS:IP      860:   75fc0
Illegal read from f00010ad, CS:IP      860:   75fce
Illegal read from f00010a8, CS:IP      860:   75fe1
Illegal read from f00010a9, CS:IP      860:   75fe1
Illegal read from f00010aa, CS:IP      860:   75fe1
Illegal read from f00010ab, CS:IP      860:   75fe1
Illegal read from f00010b9, CS:IP      860:   75f94
Illegal read from f00010ba, CS:IP      860:   75fc0
Illegal read from f00010b9, CS:IP      860:   75fce
Illegal read from f00010b4, CS:IP      860:   75fe1
Illegal read from f00010b5, CS:IP      860:   75fe1
Illegal read from f00010b6, CS:IP      860:   75fe1
Illegal read from f00010b7, CS:IP      860:   75fe1
Illegal read from f00010c5, CS:IP      860:   75f94
Illegal read from f00010c6, CS:IP      860:   75fc0
Illegal read from f00010c5, CS:IP      860:   75fce
Illegal read from f00010c0, CS:IP      860:   75fe1
Illegal read from f00010c1, CS:IP      860:   75fe1
Illegal read from f00010c2, CS:IP      860:   75fe1
Illegal read from f00010c3, CS:IP      860:   75fe1
Illegal read from f00010d1, CS:IP      860:   75f94
Illegal read from f00010d2, CS:IP      860:   75fc0
Illegal read from f00010d1, CS:IP      860:   75fce
Illegal read from f00010cc, CS:IP      860:   75fe1
Illegal read from f00010cd, CS:IP      860:   75fe1
Illegal read from f00010ce, CS:IP      860:   75fe1
Illegal read from f00010cf, CS:IP      860:   75fe1
Illegal read from f00010dd, CS:IP      860:   75f94
Illegal read from f00010e9, CS:IP      860:   75f94
Illegal read from f00010ea, CS:IP      860:   75fc0
Illegal read from f00010e9, CS:IP      860:   75fce
Illegal read from f00010e4, CS:IP      860:   75fe1
Illegal read from f00010e5, CS:IP      860:   75fe1
Illegal read from f00010e6, CS:IP      860:   75fe1
Illegal read from f00010e7, CS:IP      860:   75fe1
Illegal read from f00010f5, CS:IP      860:   75f94
Illegal read from f00010f6, CS:IP      860:   75fc0
Illegal read from f00010f5, CS:IP      860:   75fce
Illegal read from f00010f0, CS:IP      860:   75fe1
Illegal read from f00010f1, CS:IP      860:   75fe1
Illegal read from f00010f2, CS:IP      860:   75fe1
Illegal read from f00010f3, CS:IP      860:   75fe1
Illegal read from f0001101, CS:IP      860:   75f94
Illegal read from f0001102, CS:IP      860:   75fc0
Illegal read from f0001101, CS:IP      860:   75fce
Illegal read from f00010fc, CS:IP      860:   75fe1
Illegal read from f00010fd, CS:IP      860:   75fe1
Illegal read from f00010fe, CS:IP      860:   75fe1
Illegal read from f00010ff, CS:IP      860:   75fe1
Illegal read from f000110d, CS:IP      860:   7659a
Illegal read from f0001119, CS:IP      860:   7659a
Illegal read from f000111a, CS:IP      860:   765b1
Illegal read from f0001119, CS:IP      860:   765bd
Illegal read from f0001114, CS:IP      860:   765d0
Illegal read from f0001115, CS:IP      860:   765d0
Illegal read from f0001116, CS:IP      860:   765d0
Illegal read from f0001117, CS:IP      860:   765d0
Illegal read from f0001071, CS:IP      860:   75f94
Illegal read from f0001072, CS:IP      860:   75fc0
Illegal read from f0001071, CS:IP      860:   75fce
Illegal read from f000106c, CS:IP      860:   75fe1
Illegal read from f000106d, CS:IP      860:   75fe1
Illegal read from f000106e, CS:IP      860:   75fe1
Illegal read from f000106f, CS:IP      860:   75fe1
Illegal read from f000107d, CS:IP      860:   75f94
Illegal read from f000107e, CS:IP      860:   75fc0
Illegal read from f000107d, CS:IP      860:   75fce
Illegal read from f0001078, CS:IP      860:   75fe1
Illegal read from f0001079, CS:IP      860:   75fe1
Illegal read from f000107a, CS:IP      860:   75fe1
Illegal read from f000107b, CS:IP      860:   75fe1
Illegal read from f0001089, CS:IP      860:   75f94
Illegal read from f000108a, CS:IP      860:   75fc0
Illegal read from f0001089, CS:IP      860:   75fce
Illegal read from f0001084, CS:IP      860:   75fe1
Illegal read from f0001085, CS:IP      860:   75fe1
Illegal read from f0001086, CS:IP      860:   75fe1
Illegal read from f0001087, CS:IP      860:   75fe1
Illegal read from f0001095, CS:IP      860:   75f94
Illegal read from f00010a1, CS:IP      860:   75f94
Illegal read from f00010a2, CS:IP      860:   75fc0
Illegal read from f00010a1, CS:IP      860:   75fce
Illegal read from f000109c, CS:IP      860:   75fe1
Illegal read from f000109d, CS:IP      860:   75fe1
Illegal read from f000109e, CS:IP      860:   75fe1
Illegal read from f000109f, CS:IP      860:   75fe1
Illegal read from f00010ad, CS:IP      860:   75f94
Illegal read from f00010ae, CS:IP      860:   75fc0
Illegal read from f00010ad, CS:IP      860:   75fce
Illegal read from f00010a8, CS:IP      860:   75fe1
Illegal read from f00010a9, CS:IP      860:   75fe1
Illegal read from f00010aa, CS:IP      860:   75fe1
Illegal read from f00010ab, CS:IP      860:   75fe1
Illegal read from f00010b9, CS:IP      860:   75f94
Illegal read from f00010ba, CS:IP      860:   75fc0
Illegal read from f00010b9, CS:IP      860:   75fce
Illegal read from f00010b4, CS:IP      860:   75fe1
Illegal read from f00010b5, CS:IP      860:   75fe1
Illegal read from f00010b6, CS:IP      860:   75fe1
Illegal read from f00010b7, CS:IP      860:   75fe1
Illegal read from f00010c5, CS:IP      860:   75f94
Illegal read from f00010c6, CS:IP      860:   75fc0
Illegal read from f00010c5, CS:IP      860:   75fce
Illegal read from f00010c0, CS:IP      860:   75fe1
Illegal read from f00010c1, CS:IP      860:   75fe1
Illegal read from f00010c2, CS:IP      860:   75fe1
Illegal read from f00010c3, CS:IP      860:   75fe1
Illegal read from f00010d1, CS:IP      860:   75f94
Illegal read from f00010d2, CS:IP      860:   75fc0
Illegal read from f00010d1, CS:IP      860:   75fce
Illegal read from f00010cc, CS:IP      860:   75fe1
Illegal read from f00010cd, CS:IP      860:   75fe1
Illegal read from f00010ce, CS:IP      860:   75fe1
Illegal read from f00010cf, CS:IP      860:   75fe1
Illegal read from f00010dd, CS:IP      860:   75f94
Illegal read from f00010e9, CS:IP      860:   75f94
Illegal read from f00010ea, CS:IP      860:   75fc0
Illegal read from f00010e9, CS:IP      860:   75fce
Illegal read from f00010e4, CS:IP      860:   75fe1
Illegal read from f00010e5, CS:IP      860:   75fe1
Illegal read from f00010e6, CS:IP      860:   75fe1
Illegal read from f00010e7, CS:IP      860:   75fe1
Illegal read from f00010f5, CS:IP      860:   75f94
Illegal read from f00010f6, CS:IP      860:   75fc0
Illegal read from f00010f5, CS:IP      860:   75fce
Illegal read from f00010f0, CS:IP      860:   75fe1
Illegal read from f00010f1, CS:IP      860:   75fe1
Illegal read from f00010f2, CS:IP      860:   75fe1
Illegal read from f00010f3, CS:IP      860:   75fe1
Illegal read from f0001101, CS:IP      860:   75f94
Illegal read from f0001102, CS:IP      860:   75fc0
Illegal read from f0001101, CS:IP      860:   75fce
Illegal read from f00010fc, CS:IP      860:   75fe1
Illegal read from f00010fd, CS:IP      860:   75fe1
Illegal read from f00010fe, CS:IP      860:   75fe1
Illegal read from f00010ff, CS:IP      860:   75fe1
Illegal read from f000110d, CS:IP      860:   7659a
Illegal read from f0001119, CS:IP      860:   7659a
Illegal read from f000111a, CS:IP      860:   765b1
Illegal read from f0001119, CS:IP      860:   765bd
Illegal read from f0001114, CS:IP      860:   765d0
Illegal read from f0001115, CS:IP      860:   765d0
Illegal read from f0001116, CS:IP      860:   765d0
Illegal read from f0001117, CS:IP      860:   765d0
Illegal read from f0001071, CS:IP      860:   75f94
Illegal read from f0001072, CS:IP      860:   75fc0
Illegal read from f0001071, CS:IP      860:   75fce
Illegal read from f000106c, CS:IP      860:   75fe1
Illegal read from f000106d, CS:IP      860:   75fe1
Illegal read from f000106e, CS:IP      860:   75fe1
Illegal read from f000106f, CS:IP      860:   75fe1
Illegal read from f000107d, CS:IP      860:   75f94
Illegal read from f000107e, CS:IP      860:   75fc0
Illegal read from f000107d, CS:IP      860:   75fce
Illegal read from f0001078, CS:IP      860:   75fe1
Illegal read from f0001079, CS:IP      860:   75fe1
Illegal read from f000107a, CS:IP      860:   75fe1
Illegal read from f000107b, CS:IP      860:   75fe1
Illegal read from f0001089, CS:IP      860:   75f94
Illegal read from f000108a, CS:IP      860:   75fc0
Illegal read from f0001089, CS:IP      860:   75fce
Illegal read from f0001084, CS:IP      860:   75fe1
Illegal read from f0001085, CS:IP      860:   75fe1
Illegal read from f0001086, CS:IP      860:   75fe1
Illegal read from f0001087, CS:IP      860:   75fe1
Illegal read from f0001095, CS:IP      860:   75f94
Illegal read from f00010a1, CS:IP      860:   75f94
Illegal read from f00010a2, CS:IP      860:   75fc0
Illegal read from f00010a1, CS:IP      860:   75fce
Illegal read from f000109c, CS:IP      860:   75fe1
Illegal read from f000109d, CS:IP      860:   75fe1
Illegal read from f000109e, CS:IP      860:   75fe1
Illegal read from f000109f, CS:IP      860:   75fe1
Illegal read from f00010ad, CS:IP      860:   75f94
Illegal read from f00010ae, CS:IP      860:   75fc0
Illegal read from f00010ad, CS:IP      860:   75fce
Illegal read from f00010a8, CS:IP      860:   75fe1
Illegal read from f00010a9, CS:IP      860:   75fe1
Illegal read from f00010aa, CS:IP      860:   75fe1
Illegal read from f00010ab, CS:IP      860:   75fe1
Illegal read from f00010b9, CS:IP      860:   75f94
Illegal read from f00010ba, CS:IP      860:   75fc0
Illegal read from f00010b9, CS:IP      860:   75fce
Illegal read from f00010b4, CS:IP      860:   75fe1
Illegal read from f00010b5, CS:IP      860:   75fe1
Illegal read from f00010b6, CS:IP      860:   75fe1
Illegal read from f00010b7, CS:IP      860:   75fe1
Illegal read from f00010c5, CS:IP      860:   75f94
Illegal read from f00010c6, CS:IP      860:   75fc0
Illegal read from f00010c5, CS:IP      860:   75fce
Illegal read from f00010c0, CS:IP      860:   75fe1
Illegal read from f00010c1, CS:IP      860:   75fe1
Illegal read from f00010c2, CS:IP      860:   75fe1
Illegal read from f00010c3, CS:IP      860:   75fe1
Illegal read from f00010d1, CS:IP      860:   75f94
Illegal read from f00010d2, CS:IP      860:   75fc0
Illegal read from f00010d1, CS:IP      860:   75fce
Illegal read from f00010cc, CS:IP      860:   75fe1
Illegal read from f00010cd, CS:IP      860:   75fe1
Illegal read from f00010ce, CS:IP      860:   75fe1
Illegal read from f00010cf, CS:IP      860:   75fe1
Illegal read from f00010dd, CS:IP      860:   75f94
Illegal read from f00010e9, CS:IP      860:   75f94
Illegal read from f00010ea, CS:IP      860:   75fc0
Illegal read from f00010e9, CS:IP      860:   75fce
Illegal read from f00010e4, CS:IP      860:   75fe1
Illegal read from f00010e5, CS:IP      860:   75fe1
Illegal read from f00010e6, CS:IP      860:   75fe1
Illegal read from f00010e7, CS:IP      860:   75fe1
Illegal read from f00010f5, CS:IP      860:   75f94
Illegal read from f00010f6, CS:IP      860:   75fc0
Illegal read from f00010f5, CS:IP      860:   75fce
Illegal read from f00010f0, CS:IP      860:   75fe1
Illegal read from f00010f1, CS:IP      860:   75fe1
Illegal read from f00010f2, CS:IP      860:   75fe1
Illegal read from f00010f3, CS:IP      860:   75fe1
Illegal read from f0001101, CS:IP      860:   75f94
Illegal read from f0001102, CS:IP      860:   75fc0
Illegal read from f0001101, CS:IP      860:   75fce
Illegal read from f00010fc, CS:IP      860:   75fe1
Illegal read from f00010fd, CS:IP      860:   75fe1
Illegal read from f00010fe, CS:IP      860:   75fe1
Illegal read from f00010ff, CS:IP      860:   75fe1
Illegal read from f000110d, CS:IP      860:   7659a
Illegal read from f0001119, CS:IP      860:   7659a
Illegal read from f000111a, CS:IP      860:   765b1
Illegal read from f0001119, CS:IP      860:   765bd
Illegal read from f0001114, CS:IP      860:   765d0
Illegal read from f0001115, CS:IP      860:   765d0
Illegal read from f0001116, CS:IP      860:   765d0
Illegal read from f0001117, CS:IP      860:   765d0
Illegal read from f0001071, CS:IP      860:   75f94
Illegal read from f0001072, CS:IP      860:   75fc0
Illegal read from f0001071, CS:IP      860:   75fce
Illegal read from f000106c, CS:IP      860:   75fe1
Illegal read from f000106d, CS:IP      860:   75fe1
Illegal read from f000106e, CS:IP      860:   75fe1
Illegal read from f000106f, CS:IP      860:   75fe1
Illegal read from f000107d, CS:IP      860:   75f94
Illegal read from f000107e, CS:IP      860:   75fc0
Illegal read from f000107d, CS:IP      860:   75fce
Illegal read from f0001078, CS:IP      860:   75fe1
Illegal read from f0001079, CS:IP      860:   75fe1
Illegal read from f000107a, CS:IP      860:   75fe1
Illegal read from f000107b, CS:IP      860:   75fe1
Illegal read from f0001089, CS:IP      860:   75f94
Illegal read from f000108a, CS:IP      860:   75fc0
Illegal read from f0001089, CS:IP      860:   75fce
Illegal read from f0001084, CS:IP      860:   75fe1
Illegal read from f0001085, CS:IP      860:   75fe1
Illegal read from f0001086, CS:IP      860:   75fe1
Illegal read from f0001087, CS:IP      860:   75fe1
Illegal read from f0001095, CS:IP      860:   75f94
Illegal read from f00010a1, CS:IP      860:   75f94
Illegal read from f00010a2, CS:IP      860:   75fc0
Illegal read from f00010a1, CS:IP      860:   75fce
Illegal read from f000109c, CS:IP      860:   75fe1
Illegal read from f000109d, CS:IP      860:   75fe1
Illegal read from f000109e, CS:IP      860:   75fe1
Illegal read from f000109f, CS:IP      860:   75fe1
Illegal read from f00010ad, CS:IP      860:   75f94
Illegal read from f00010ae, CS:IP      860:   75fc0
Illegal read from f00010ad, CS:IP      860:   75fce
Illegal read from f00010a8, CS:IP      860:   75fe1
Illegal read from f00010a9, CS:IP      860:   75fe1
Illegal read from f00010aa, CS:IP      860:   75fe1
Illegal read from f00010ab, CS:IP      860:   75fe1
Illegal read from f00010b9, CS:IP      860:   75f94
Illegal read from f00010ba, CS:IP      860:   75fc0
Illegal read from f00010b9, CS:IP      860:   75fce
Illegal read from f00010b4, CS:IP      860:   75fe1
Illegal read from f00010b5, CS:IP      860:   75fe1
Illegal read from f00010b6, CS:IP      860:   75fe1
Illegal read from f00010b7, CS:IP      860:   75fe1
PluMGMK
Aline Louïa
Posts: 37007
Joined: Fri Jul 31, 2009 9:00 pm
Location: https://www.youtube.com/watch?v=cErgMJSgpv0
Contact:
Tings: 102730

Re: Ray1Editor - Rayman 1 Level Editor

Post by PluMGMK »

Interesting! The high four bits of the pointers are all set, which definitely looks like an error somewhere in the code. Which version of the game are you running? V1.21?

(Btw you can upload screenshots here by attaching them to your posts ;))
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Ray1Editor - Rayman 1 Level Editor

Post by RayCarrot »

Mr Sax's Hullaballoo 1 normally doesn't have a scrolling background, so the scroll sprites index (ScrollDiffSprites) is set to -1. That's probably what's causing the pointer issues as it's attempting to use it as an index in the sprites array. I didn't really consider this when making the editor so I should probably have a field where you can set this value yourself. In the meantime you can manually edit it like this:
- In the editor settings enable the serializer log
- Load the level, go to the settings and open the log file
- Search for "ScrollDiffSprites" and check its file address. For Mr Sax's Hullaballoo 1 it's 0x000305F7
- Using a hex editor you can now edit the byte at that address to the correct value (load the level where the background is normally used to get the matching index for that background)
A bit of a complicated workaround, but I think it'll work until I update the editor (which might be a while).
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

RayCarrot wrote: Thu Dec 02, 2021 7:34 pm Mr Sax's Hullaballoo 1 normally doesn't have a scrolling background, so the scroll sprites index (ScrollDiffSprites) is set to -1. That's probably what's causing the pointer issues as it's attempting to use it as an index in the sprites array. I didn't really consider this when making the editor so I should probably have a field where you can set this value yourself. In the meantime you can manually edit it like this:
- In the editor settings enable the serializer log
- Load the level, go to the settings and open the log file
- Search for "ScrollDiffSprites" and check its file address. For Mr Sax's Hullaballoo 1 it's 0x000305F7
- Using a hex editor you can now edit the byte at that address to the correct value (load the level where the background is normally used to get the matching index for that background)
A bit of a complicated workaround, but I think it'll work until I update the editor (which might be a while).
Cheers :bigup: , that did the trick, was a slightly different address in my case as I'd changed the dimensions etc.
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

I was wondering, how do you get the 360° swinging plum to work? What are the parameters (eg. what behaviour, sprite state etc).

Image
Also here's a very small preview of a level I created which utilises the pirate themed assets from the "Viking (Pirate) Mama Boss" in an actual level.
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Ray1Editor - Rayman 1 Level Editor

Post by RayCarrot »

Thanks for sharing the video, it's really cool to see a custom level like that being made with the editor! :D

Reg. the plums, that animation is sadly unused (i.e. not referenced from any state). In order to get it to work you'll either need to change the ETA to get a different one (thus changing the available collection of states), hoping that one of the new states will reference that specific animation index, or directly modify the plum's states in the WLD file.
For changing the ETA you will need to find a state where it references animation index 6 (which is the 360 plum). The problem here is that the state also has the animation speed and some hitbox flags, so it might not fully work.
The latter is probably a cleaner approach, but then you will need to have a modified WLD file along with your level file. If you go with the latter approach you can find the plum's states by checking the serializer log like I showed previously and search for "(Object: BinarySerializer.Ray1.PC_ETA) Eta[9]". There you will see the list of states the plum uses. The simplest would be to modify the animation index to 6 for one of them, or you could add an additional one (all you'd need to do then is change the count value before the array and then add the additional bytes for the new entry - there are no pointers or checksums here to worry about if I remember correctly).
You'll probably also need to change the Follow-Sprite index (for the object in the editor) since the plum itself will have a different sprite index in this animation. I remember I had to do this when I tested the 360 plum last year, but I can't remember the exact index sadly. In Ray1Map there's a visualization for the Follow-Sprite collision in form of a line, but I didn't add that to the editor.

Sorry if this is a bit complicated. I originally had a lot of plans for the editor, but didn't seem a lot of people used it so I didn't get around to adding all the features I wanted to. My idea was to allow all the allfix/wld data to be modified as well which would have made this easier. I might get back to work some more on it when I get some time though, it's really cool seeing the level you're creating with it!

Oh btw, if you want to use another cool unused mechanic there is "TYPE_SLOPEY_PLAT" (towards the end of the object type list) you can use for platforms objects. It will cause them to rotate to either side as you stand on them, thus making them slippery. The graphics rotation is kind of bad though due to it being rather low resolution pixel-art (which if probably why it's unused), but it's still kind of cool that it's left intact in the game.
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

Ah ok, might see if I can play with that then.

Regarding the slope platform (TYPE_SLOPEY_PLAT), I remember using that in the past when someone discovered it. If you use it in a level and go back to the world map you get some rather interesting results...
RayMapWeirdness.png
RayMapWeirdness.png (86.65 KiB) Viewed 5160 times
Flat Earth Society
Ray Noir & Blanc
Posts: 324
Joined: Fri Jun 11, 2021 4:10 pm
Location: On the flat earth …
Tings: 925030

Re: Ray1Editor - Rayman 1 Level Editor

Post by Flat Earth Society »

Incredible, and unexpected! :o

I wonder if the fans will use your tool in a similar fashion than the Rayman Designer editor, and share their custom levels.
Image
Retrofuge
Reflux
Posts: 99
Joined: Sun Nov 29, 2020 12:18 am
Location: Land of the Livid Dead
Tings: 8045

Re: Ray1Editor - Rayman 1 Level Editor

Post by Retrofuge »

Wow, this Rayman 1 Editor seems really exciting, I will probably take a look at this soon. I wasn't expecting this at all.
Image

I exist, just finding stuff of interest.
Steo
Globox
Posts: 33018
Joined: Sun Feb 25, 2018 3:57 pm
Location: Globox Village
Tings: 91547

Re: Ray1Editor - Rayman 1 Level Editor

Post by Steo »

Ah, I remember seeing this when it was pretty early in development and it was being tested by means of changing all the tiles to be slippery. Amazing work on this! :up:
Image
FC: 40210 | CF: 103059 | BOM: 94388 | LOTLD: 120486 | DOTK: 110450 | LS: 40810 | SBTC: 99693 | HH: 100028 | TOTL: 100563

TOTAL: 809687
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

Not sure why but the resize map dimensions functionality dosen't seem to work, for most maps they get corrupted and you end up with the antitoon showing an error (see 2nd screenshot)...
MapSizeEditor.png
MapSizeEditor.png (14.83 KiB) Viewed 5026 times
If you edit a map where the tileset is larger than usual (aka Eraser Plains 3, Moskito's Nest 4, Bongo Hills 1 or Eat At Joes 6), the map opens fine in the editor but still gets corrupted when you go to try it out in game (see 1st screenshot)
MapSizeDosBox.png
MapSizeDosBox.png (60.05 KiB) Viewed 5026 times
This seems to happen if you make a map smaller or bigger. Any ideas on how to get around this?
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Ray1Editor - Rayman 1 Level Editor

Post by RayCarrot »

Ah sorry for that! It appears to have been a bug in the version of the serializer library I used to compile the release you're using. I've now compiled a new release which is available as an update which should have the issue fixed. I also updated the target framework to NET 6 (which hopefully shouldn't effect much besides a small increase in performance).
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

Updated it, but now it won't open...
The program can't start because api-ms-win-core-winrt-l1-1-0.dll is missing from your computer. Try reinstalling the program to fix this problem.
Which is odd because it says it's to do with C++ REDISTRIBUTABLE FOR VISUAL STUDIO 2015-2019 which I have. I tried a repair but no luck so far.
RayCarrot
Tily
Posts: 2278
Joined: Sat Jan 11, 2014 5:46 pm
Tings: 36217

Re: Ray1Editor - Rayman 1 Level Editor

Post by RayCarrot »

Oh damn, it seems NET 6 single exe publishing isn't supported on Windows 7 :( I've re-released the update now without changing the target framework, so it should work just as before. You can get it here.
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

Cheers, that works for me now and the resizing does too.
Chacanger
Ptizêtre en or
Posts: 159
Joined: Tue Aug 10, 2010 9:55 pm
Tings: 895

Re: Ray1Editor - Rayman 1 Level Editor

Post by Chacanger »

I managed to change the WLD file for the Blue Mountains to make the giant boulder animations act like a lava ball and created this chase scene...



It all works with the Ray1Editor too, although I did manage to crash it a few times due to some wrong indexes etc.

Interestingly if you assign the updated DES to a plum object it contains an unused sound when you hit it that sounds like metal clanging.
Post Reply