Rayman 1
Forum rules
Please keep the forum rules and guidelines in mind when creating or replying to a topic.
Please keep the forum rules and guidelines in mind when creating or replying to a topic.
Re: Rayman 1
Once again I did some level/object edits to test things in Rayman 1; I can tell that the developers fixed quite a few game breaking glitches between Rayman 1 and the Rayman Education games.
The first glitch occurs if Rayman attempts to walk up to Betilla but fails and ends up walking into water. The death sound plays multiple times and stops with Rayman just standing there happily looking into the distance.
The second glitch occurs if you have Mr Darks non stop run curse placed on you. If you hit water with the curse your ears are in for a world of pain.
In both scenarios you have to force close the game as you won't be able to quit through the options menu.
The first glitch occurs if Rayman attempts to walk up to Betilla but fails and ends up walking into water. The death sound plays multiple times and stops with Rayman just standing there happily looking into the distance.
The second glitch occurs if you have Mr Darks non stop run curse placed on you. If you hit water with the curse your ears are in for a world of pain.
In both scenarios you have to force close the game as you won't be able to quit through the options menu.
-
PluMGMK

- Posts: 40508
- Joined: Fri Jul 31, 2009 9:00 pm
- Location: https://www.youtube.com/watch?v=cErgMJSgpv0
- Contact:
- Tings: 136606
Re: Rayman 1
The first one's with Betilla? I guess they didn't fix that in the Educational Games, they just removed the Rayman 1 version of Betilla altogether, right?
Re: Rayman 1
Yeah, it's not clear on the video, but that weird frozen Mr Dark object was the Betilla object, I was actually trying something else with it and that happened.
Come to think of it, you could be right, after all they used an alternative version of Betilla. Which may mean that glitch still exists in Designer too (The object behavior still exists but you'd have to try it with a different set of sprites).PluMGMK wrote: Sun Sep 25, 2022 11:07 pm I guess they didn't fix that in the Educational Games, they just removed the Rayman 1 version of Betilla altogether, right?
The 2nd glitch was most likey fixed, or it certainly was by the time they got to Designer. I know that Educational games increased the object limit which carried over to Designer so some of the things like the curse cleaner got amended to kill bad Rayman, so they may have fixed a lot of bugs at that point.
Re: Rayman 1
I don't know if we should consider ourselves lucky that no one put water on the path of your run in Mr. Dark's Dare Part 3, or unlucky (as they would have probably noticed and fixed the bug in that case).Chacanger wrote: Sun Sep 25, 2022 10:24 pm The second glitch occurs if you have Mr Darks non stop run curse placed on you. If you hit water with the curse your ears are in for a world of pain.
-
PluMGMK

- Posts: 40508
- Joined: Fri Jul 31, 2009 9:00 pm
- Location: https://www.youtube.com/watch?v=cErgMJSgpv0
- Contact:
- Tings: 136606
Re: Rayman 1
I don't think it does… Are you talking about behaviour 153? It looks like the functions DO_FEE and DoFeeRaymanZDD have been removed from Designer. EDIT: Actually, the EDU version of Betilla (behaviour 270) is still present in Designer!Chacanger wrote: Sun Sep 25, 2022 11:36 pm Come to think of it, you could be right, after all they used an alternative version of Betilla. Which may mean that glitch still exists in Designer too (The object behavior still exists but you'd have to try it with a different set of sprites).
Re: Rayman 1
The thing with the "First Steps" track is that it reminds me of the zombie movie BRAINDEAD.
Re: Rayman 1
I can see why they didn't implement the slopey plat "TYPE_SLOPEY_PLAT" in the final game. Makes some weird text glitches occur when you interact with it. My guess would be that it needs to store some data somewhere to redner the rotated object and that memory location is used for something else.
In fact after I went back into a level afterwards it crashed...
-
Hunchman801

- Posts: 87627
- Joined: Thu Aug 07, 2003 6:50 pm
- Location: Paris, France
- Contact:
- Tings: 640247
Re: Rayman 1
A platform that enables Zalgo language support for the game? Now that's something. 
-
PluMGMK

- Posts: 40508
- Joined: Fri Jul 31, 2009 9:00 pm
- Location: https://www.youtube.com/watch?v=cErgMJSgpv0
- Contact:
- Tings: 136606
Re: Rayman 1
Which version does this happen in? This sounds like a case of pointer aliasing, probably similar to what happens with lava in EDU. I'm thinking it could be related to the routine "draw_sprite_deform", which looks like it was hand-coded in assembly. It reads / writes data in a location right there next to it in the code section, instead of having a separate location in the data section. If (for certain versions of the EXE) the linker messed up the relocations for that, then some weird stuff could very easily result. The compiler screwed up at least one thing very badly in one of the versions, so it's easy to imagine that the linker could have screwed stuff up as well.
I'm currently looking at the disassembly of "RAYMAN (GERMAN) v1.20", which apparently was linked correctly, so I'll try putting a slopey platform in there to see what happens…
EDIT: OK, going back to the menu in my German version did indeed cause a crash. Gotta debug it!
I'm currently looking at the disassembly of "RAYMAN (GERMAN) v1.20", which apparently was linked correctly, so I'll try putting a slopey platform in there to see what happens…
EDIT: OK, going back to the menu in my German version did indeed cause a crash. Gotta debug it!
Re: Rayman 1
Isn't that normal then? I thought everyone called that level üüüüΔllllzzzl, it's in the ≡ZZZ≡Ü≡ZZZ world?Hunchman801 wrote: Sat Oct 15, 2022 3:37 pm A platform that enables Zalgo language support for the game? Now that's something.![]()
One thing to note is that it won't always crash, but it will make the game lag and cause level sprites to get messed up. I wonder what happens in the PS1 or Saturn versions, would the consoles just completely freeze up or restart?PluMGMK wrote: Sat Oct 15, 2022 11:57 pm Which version does this happen in? This sounds like a case of pointer aliasing, probably similar to what happens with lava in EDU. I'm thinking it could be related to the routine "draw_sprite_deform", which looks like it was hand-coded in assembly. It reads / writes data in a location right there next to it in the code section, instead of having a separate location in the data section. If (for certain versions of the EXE) the linker messed up the relocations for that, then some weird stuff could very easily result. The compiler screwed up at least one thing very badly in one of the versions, so it's easy to imagine that the linker could have screwed stuff up as well.
I'm currently looking at the disassembly of "RAYMAN (GERMAN) v1.20", which apparently was linked correctly, so I'll try putting a slopey platform in there to see what happens…
EDIT: OK, going back to the menu in my German version did indeed cause a crash. Gotta debug it!![]()
My version is RAYMAN (US) v1.21
-
PluMGMK

- Posts: 40508
- Joined: Fri Jul 31, 2009 9:00 pm
- Location: https://www.youtube.com/watch?v=cErgMJSgpv0
- Contact:
- Tings: 136606
Re: Rayman 1
So it's a buffer overflow. Exactly 1200 bytes are allocated for the buffer "new_sprite_deform", and then immediately after that buffer we have the loaded language text. But the function "draw_sprite_deform" doesn't do any bounds checking and happily writes way more than 1200 bytes into the "new_sprite_deform" buffer, overwriting the language text!
I'm not sure how many bytes exactly, I think it might be one dword per pixel for each sprite of the platform. So if you had a really small / simple sprite (< 300 pixels I guess), it probably wouldn't happen…
#RewriteItInRust
EDIT: They could have easily solved this by allocating more memory for "new_sprite_deform", but I guess they were concerned about the large memory requirements for the game…
#RewriteItInRust
EDIT: They could have easily solved this by allocating more memory for "new_sprite_deform", but I guess they were concerned about the large memory requirements for the game…
-
Hunchman801

- Posts: 87627
- Joined: Thu Aug 07, 2003 6:50 pm
- Location: Paris, France
- Contact:
- Tings: 640247
Re: Rayman 1
Given the community's disappointment over the abandonment of Rayman ReDesigner and the author's decision not to release its source code for fans to build upon and improve, maybe a such a project is in order.
H̴̢͓̳̪͍̙̹̥̻̖̳̳̠̺̆̅̽̚̕͘̕ę̷̧̖̟̦̤͚͇͙̠͓̝͓̏̊̓͊̓͘ͅ ̶̪̔̃̉̌͑́̓̉̓̀̽̏̔̕c̶̡̧̧͙͈̺̜̼̝͖̫͊̈̉̋̒̐̑͊̈̈̑̏͘̕͘ő̸̗͙̫͇̬̲̫̦̓̅̏͑̅̾̇̚͠m̸̢̯͍̯̠̲͚̟̖̟̳̞͌͛́̉̿̓͊̈́͘̚̕͜ͅe̷̖̽͆̃͘s̶̢̢̘̳̭͍̣̫͖̎͂͌͐̀͑́̓̂́̑͜ͅ.̵̢͓͉̭̫̗̦͍͎̻̋͑̃̉́Chacanger wrote: Sun Oct 16, 2022 12:23 am Isn't that normal then? I thought everyone called that level üüüüΔllllzzzl, it's in the ≡ZZZ≡Ü≡ZZZ world?
Re: Rayman 1
It's probably one byte per pixel since it's all paletted 8-bit image data. That's quite interesting though as it means they had a very specific sprite in mind to be used with this type. Makes me curious which one it was. It must have been quite small as even the plum is 40x36 which would be 1440 bytes.PluMGMK wrote: Sun Oct 16, 2022 1:59 pm I'm not sure how many bytes exactly, I think it might be one dword per pixel for each sprite of the platform. So if you had a really small / simple sprite (< 300 pixels I guess), it probably wouldn't happen…
-
PluMGMK

- Posts: 40508
- Joined: Fri Jul 31, 2009 9:00 pm
- Location: https://www.youtube.com/watch?v=cErgMJSgpv0
- Contact:
- Tings: 136606
Re: Rayman 1
Now don't give me ideas!Hunchman801 wrote: Sun Oct 16, 2022 3:42 pmGiven the community's disappointment over the abandonment of Rayman ReDesigner and the author's decision not to release its source code for fans to build upon and improve, maybe a such a project is in order.![]()
Yes, it's one byte indeed! I had missed a "sar ebx, 2" in the code…RayCarrot wrote: Sun Oct 16, 2022 3:48 pm It's probably one byte per pixel since it's all paletted 8-bit image data. That's quite interesting though as it means they had a very specific sprite in mind to be used with this type. Makes me curious which one it was. It must have been quite small as even the plum is 40x36 which would be 1440 bytes.
Re: Rayman 1
I'm a .NET guy myself as I have to use it in my 9-5 job and I've used it for many personal projects, but I hear that Rust has the performance of C++ but better with garbage collection.PluMGMK wrote: Sun Oct 16, 2022 7:04 pmNow don't give me ideas!Hunchman801 wrote: Sun Oct 16, 2022 3:42 pmGiven the community's disappointment over the abandonment of Rayman ReDesigner and the author's decision not to release its source code for fans to build upon and improve, maybe a such a project is in order.![]()
At one point I was thinking of porting relibc to DOS, and trying to rewrite a DOS game in Rust might just push me to do it!
![]()
I was thinking that too, regarding the unused cave platforms, they are quite small.PluMGMK wrote: Sun Oct 16, 2022 7:04 pmYes, it's one byte indeed! I had missed a "sar ebx, 2" in the code…RayCarrot wrote: Sun Oct 16, 2022 3:48 pm It's probably one byte per pixel since it's all paletted 8-bit image data. That's quite interesting though as it means they had a very specific sprite in mind to be used with this type. Makes me curious which one it was. It must have been quite small as even the plum is 40x36 which would be 1440 bytes.And yes, now that you mention it, of course that means they must have had a specific sprite in mind. Maybe those little brown platforms cut from the Cave world?
-
PluMGMK

- Posts: 40508
- Joined: Fri Jul 31, 2009 9:00 pm
- Location: https://www.youtube.com/watch?v=cErgMJSgpv0
- Contact:
- Tings: 136606
Re: Rayman 1
The beauty of Rust is that it doesn't actually have garbage collection as such. The lifetime of every object is known at compile time, so destruction is statically compiled in instead of having to be carried out by a garbage collector. And attempting to use anything that goes out of scope results in a compile error, so there are no use-after-frees or anything like that…
-
Hunchman801

- Posts: 87627
- Joined: Thu Aug 07, 2003 6:50 pm
- Location: Paris, France
- Contact:
- Tings: 640247
Re: Rayman 1
I love .NET too, I think it's great for so many use cases. As for Rust, the idea sound great too, and I'd love to learn, but I'd need a project to work on, reading lessons ain't gonna cut it. 
Re: Rayman 1
Had anyone at least tried(to play)played pirated copy of Rayman 1/Gold/Designer all 3-in-1 on Microsoft/UniSoft Windowss 11?


-
PluMGMK

- Posts: 40508
- Joined: Fri Jul 31, 2009 9:00 pm
- Location: https://www.youtube.com/watch?v=cErgMJSgpv0
- Contact:
- Tings: 136606
Re: Rayman 1
Where did you get that copy? The RAYMAN.EXE you have is a Windows application, that doesn't look legit…
But anyway, within hours of this conversation, the first ever Linux kernel RC with support for Rust modules was released! 
Also, I meant to mention it before:
I know what you mean!Hunchman801 wrote: Mon Oct 17, 2022 7:28 pm I love .NET too, I think it's great for so many use cases. As for Rust, the idea sound great too, and I'd love to learn, but I'd need a project to work on, reading lessons ain't gonna cut it.![]()
Also, I meant to mention it before:
Better than NOMUS_GUI?Hunchman801 wrote: Sun Oct 16, 2022 3:42 pmH̴̢͓̳̪͍̙̹̥̻̖̳̳̠̺̆̅̽̚̕͘̕ę̷̧̖̟̦̤͚͇͙̠͓̝͓̏̊̓͊̓͘ͅ ̶̪̔̃̉̌͑́̓̉̓̀̽̏̔̕c̶̡̧̧͙͈̺̜̼̝͖̫͊̈̉̋̒̐̑͊̈̈̑̏͘̕͘ő̸̗͙̫͇̬̲̫̦̓̅̏͑̅̾̇̚͠m̸̢̯͍̯̠̲͚̟̖̟̳̞͌͛́̉̿̓͊̈́͘̚̕͜ͅe̷̖̽͆̃͘s̶̢̢̘̳̭͍̣̫͖̎͂͌͐̀͑́̓̂́̑͜ͅ.̵̢͓͉̭̫̗̦͍͎̻̋͑̃̉́Chacanger wrote: Sun Oct 16, 2022 12:23 am Isn't that normal then? I thought everyone called that level üüüüΔllllzzzl, it's in the ≡ZZZ≡Ü≡ZZZ world?
Re: Rayman 1
I've seen that windowed version, it was a bug fix version that I think Ubi-Soft released for XP compatibility back in the day. It dosen't work very well on new OS's though.PluMGMK wrote: Mon Oct 17, 2022 11:13 pm Where did you get that copy? The RAYMAN.EXE you have is a Windows application, that doesn't look legit…
Not sure if this helps but to get my DosBox version running I used the folowing script in the DosBox options file (replace the {path to RAYMAN folder on drive} part)...
Code: Select all
cls
MOUNT E E:\ -t cdrom -usecd 0 -ioctl
MOUNT C "{path to RAYMAN folder on drive}"
C:
RAYMAN.EXE




