CSE2 - The Cave Story decompilation project

May 16, 2019 at 7:13 PM
Senior Member
CSE Discord Admin
"Fly, Fly, Fly!"
Join Date: Jan 13, 2016
Location:
Posts: 132
For the record, I've heard the 'you're ruining modding' thing before: Dunc said the same thing about my DLL loader.
 
May 17, 2019 at 12:14 AM
Senior Member
"Fly, Fly, Fly!"
Join Date: Nov 3, 2015
Location: Westminster, Colorado, U.S.A
Posts: 128
yeah, i find it very unlikely people are going to strictly use cse2. it took me long enough to learn TSC (which is, you know, not hard in the slightest). i am trying to learn c++ but i havent done anything in a long time, and i generally dont have the patience for most of these things. im sure its the same for a lot of other current modders.
 
May 17, 2019 at 8:59 AM
Deliverer of Sweets
Bobomb says: "I need a hug!"
Join Date: Jul 20, 2015
Location: Under sea level or something
Posts: 785
Age: 25
ruin the complex and engaging challenge of Cave Story modding by undermining it.
The worst that can happen is that people start using this to simplify the more complex things or stuff that isn't really that stable when done in TSC- and I'm very sure this is still an easier option that ASM.
Sure, it gets rid of some of the challenge and fun in rowing with only your TSC paddles but eventually some people may just opt to use CSE to get the deed done- instead of writing overly ambitious tsc scripts that can fit multiple document pages(Hi).
Who are we to decide what people should use anyway, I can't deny that it may get messy in cases like Modcon where people can fear CSE users may have an advantage against people that are only into vanilla modding but otherwise modding, after all, should be done in the comfort of the modder. If the modder doesn't wanna get too deep into the puzzles TSC can offer, then they don't wanna.
And even then I doubt a lot of people (relatively speaking) in the modding scene are really that knowledgeable in whatever CSE's language is (What was it again? C? Too sleepy to look up zzz) as they are in TSC, TSC being an easier language to get into after all.

That being said;
And commercially speaking, you could probably just make your own game if you're really considering using something like CSE.
I agree with this, CSE will still be really good if you just wanna keep it to making a cs mod but at some point you might as well consider making your own thing, and not even just for commercial reasons. (Considering being a key word here, making your own game is still harder than modding after all :p)
For that reason I will probably not make any use of it myself since I've been wanting to make my own game for a while now. Probably the mst likely exception would be if someone was weird enough to want to make a mod with me and really wants to use CSE but I don't expect that happening out of nowhere.

Either way as much as I'll still encourage new modders to engage into the wonderful world of TSC I'm still sure people find good use for CSE and I may just recommend it over getting into heavy ASM hacking.
 
May 18, 2019 at 6:47 AM
Indie game enthusiast
"What is a man!? A miserable pile of secrets! But enough talk, have at you!"
Join Date: Apr 18, 2006
Location: Forever wandering the tower...!
Posts: 1787
I can echo, from someone who has not touched ANY of these commandline utilities until CSE2 came out (MSYS2), it has been a bit tough at times. It's a mostly straightforward stumbling process thanks to the internet, but it can be a challenge...

For example, it was a pain getting libxmp-lite working... I downloaded the latest 4.4 "release" for the enhanced build, not realizing I should have gotten a copy of the current github state, libxmp (4.5), instead... (4.4's lite doesn't compile without errors...) Didn't help that when I ran autoconf the first time, my antivirus, AVG, decided to completely delete random parts of my msys2 install... Perl.exe, mingw64.exe, etc... Ended up reinstalling... Grah! Oh, and I never got cmake building CSE2 properly with my old visual studio 2013 install. Gave up on that quickly for now since GCC is doing fine.

I should poke around more, but I'm anticipating the next enhanced release, hoping to see how you call the sound types. Though the dll mod loader probably could give me ideas...

PS... what's the word on Cucky's online branch? ...I love that it already functions in a manner...
That could lead to some interesting mods...
 
Last edited:
May 18, 2019 at 1:35 PM
Senior Member
CSE Discord Admin
"Fly, Fly, Fly!"
Join Date: Jan 13, 2016
Location:
Posts: 132
How come you're building libxmp-lite separately? The repo has a copy of 4.4's code (patched to build properly), and the CMake setup compiles it straight into the EXE.
 
May 18, 2019 at 5:11 PM
Indie game enthusiast
"What is a man!? A miserable pile of secrets! But enough talk, have at you!"
Join Date: Apr 18, 2006
Location: Forever wandering the tower...!
Posts: 1787
How come you're building libxmp-lite separately? The repo has a copy of 4.4's code (patched to build properly), and the CMake setup compiles it straight into the EXE.
:o Apparently to torture myself. Did the early releases have all the dependencies included too? I believe the first time I tried building something, it complained, so I formed a habit to just look at the requirements and get them separately.
 
May 23, 2019 at 7:01 PM
Senior Member
CSE Discord Admin
"Fly, Fly, Fly!"
Join Date: Jan 13, 2016
Location:
Posts: 132
Here's v1.2 of the enhanced branch.
  • Added support for Ogg Vorbis, FLAC, .it, .xm, .mod, .s3m, and PxTone music and SFX
  • Switched from stage.tbl to mrmap.bin, fixing compatibility with Booster's Lab v0.5.1.0
  • Added a DoConfig tool (clone, not a decompilation yet)
  • Accuracy improvements from base CSE2
  • Moved resource files to their own subfolder
  • Split PixTone sounds to .pxt files
 
May 23, 2019 at 7:35 PM
War criminal
"Life begins and ends with Nu."
Join Date: Jun 27, 2013
Location: Phoenix
Posts: 2758
Age: 29
Here's v1.2 of the enhanced branch.
  • Added support for Ogg Vorbis, FLAC, .it, .xm, .mod, .s3m, and PxTone music and SFX
  • Switched from stage.tbl to mrmap.bin, fixing compatibility with Booster's Lab v0.5.1.0
  • Added a DoConfig tool (clone, not a decompilation yet)
  • Accuracy improvements from base CSE2
  • Moved resource files to their own subfolder
  • Split PixTone sounds to .pxt files
*slow clapping* Now CSE2 modding is as feasible as vanilla modding! This is definitely a huge step up! :D
 
May 25, 2019 at 10:37 PM
The TideWalker
Modding Community Discord Founder
"That dog!"
Join Date: Apr 5, 2013
Location: In my mind and of my body.
Posts: 1640
Age: 26
Let's have a quick look at the advantages to using Vanilla compared to CSE2.

---====Vanilla===---
lots of documentation on the .exe (also asking questions about how to do X, lots of people know how to do it easily if asking around)
hard to modify the code.
lots of pre-made plug and play aspects.
runnning it in WINE on linux makes the drums bad.
Runs DirectDraw. :(
Very limited on what can actually be pulled off in practice (even with .dll loaders) due to the nature of both DirectDraw and writing code in x86 asm.

---===CSE2===---
learning curve installing MSYS2/other compiler.
semi decent documentation (most of it is in the code itself).
no plug and play premade hacks.
very easy to modify the code.
works on mac/linux.
Runs SDL2. :D
You can actually literally do anything to the game because it's the source code for god's sake.

I think newer modders are going to stick to vanilla because of the obvious appeal of the plug and play aspects of it, and tons of helpful resources developed over the last decade. But those who really want to grow and push their modifications further are given a platform to do so now using better tools

CSE2 is very slowly (but surely) going to be pushed to the front lines of modding as it gains more exposure and people really see what it can do, but seeing people pick it up as a "first choice" might not be something that happens unless the people using it would have had prior experience with writing actual code. And honestly I haven't seen any people drift into this community really who have had prior experience with coding let alone compiling material there are some, but I could probably name them all on one hand.

Don't get me wrong CSE2 is an *amazing* tool but saying it should be shoved down peoples throats is not an idea I agree with. Coding is hard to break into and if people just want to make the next Cave Array or OpenCS let then use vanilla if they want to, it all boils down to what you want to do and how much effort you're willing to pour in to make it happen.

To be honest, I think using a code-copy of the engine rather than just editing the original exe is quite unimpressive. A lot of things in Cave Story mode work or are cool because they're clever manipulations of the original game. That's why assembly-free mods have the potential to be so awesome. At the point where you're editing the engine's code from decompiled source you've sort of lost the magic of making an old engine do new/novel things that it was never meant for.
I believe I've expressed that I strongly disagree with this kind of mentality that says one form of modding is superior/inferior to another. :sue:

You've got tools at your disposal and unless you're actually working with hardware limitations of like older console games what's the point of self imposed limitations? (This also includes throwbacks to these kinds of games released on PC, but even then that's mostly just graphical to have the same feel.)
 
May 29, 2019 at 1:07 AM
Senior Member
"Fly, Fly, Fly!"
Join Date: Nov 3, 2015
Location: Westminster, Colorado, U.S.A
Posts: 128
Let's have a quick look at the advantages to using Vanilla compared to CSE2.

---====Vanilla===---
lots of documentation on the .exe (also asking questions about how to do X, lots of people know how to do it easily if asking around)
hard to modify the code.
lots of pre-made plug and play aspects.
runnning it in WINE on linux makes the drums bad.
Runs DirectDraw. :(
Very limited on what can actually be pulled off in practice (even with .dll loaders) due to the nature of both DirectDraw and writing code in x86 asm.

---===CSE2===---
learning curve installing MSYS2/other compiler.
semi decent documentation (most of it is in the code itself).
no plug and play premade hacks.
very easy to modify the code.
works on mac/linux.
Runs SDL2. :D
You can actually literally do anything to the game because it's the source code for god's sake.

I think newer modders are going to stick to vanilla because of the obvious appeal of the plug and play aspects of it, and tons of helpful resources developed over the last decade. But those who really want to grow and push their modifications further are given a platform to do so now using better tools

CSE2 is very slowly (but surely) going to be pushed to the front lines of modding as it gains more exposure and people really see what it can do, but seeing people pick it up as a "first choice" might not be something that happens unless the people using it would have had prior experience with writing actual code. And honestly I haven't seen any people drift into this community really who have had prior experience with coding let alone compiling material there are some, but I could probably name them all on one hand.

Don't get me wrong CSE2 is an *amazing* tool but saying it should be shoved down peoples throats is not an idea I agree with. Coding is hard to break into and if people just want to make the next Cave Array or OpenCS let then use vanilla if they want to, it all boils down to what you want to do and how much effort you're willing to pour in to make it happen.


I believe I've expressed that I strongly disagree with this kind of mentality that says one form of modding is superior/inferior to another. :sue:

You've got tools at your disposal and unless you're actually working with hardware limitations of like older console games what's the point of self imposed limitations? (This also includes throwbacks to these kinds of games released on PC, but even then that's mostly just graphical to have the same feel.)

what do you mean by plug and play

also did you just imply that cave array can stack up to opencs in any manner??? like, what? not to bash on your mod but its nowhere near the level of quality or reputation of opencs.

I believe I've expressed that I strongly disagree with this kind of mentality that says one form of modding is superior/inferior to another. :sue:

you say this like you are some kind of authority? it doesnt matter if you dislike it, talking in such a holier than thou way is absolutely useless if you dont have any speck of a reason to talk that way
 
May 29, 2019 at 10:47 AM
Junior Member
"Wahoo! Upgrade!"
Join Date: May 12, 2018
Location: United States
Posts: 45
also did you just imply that cave array can stack up to opencs in any manner??? like, what? not to bash on your mod but its nowhere near the level of quality or reputation of opencs.

you say this like you are some kind of authority? it doesnt matter if you dislike it, talking in such a holier than thou way is absolutely useless if you dont have any speck of a reason to talk that way

Come on, let the dude have his opinion, alright? It's fine if you disagree with him, but let's not bash someone for having an opinion on the internet.
 
May 29, 2019 at 1:04 PM
Deliverer of Sweets
Bobomb says: "I need a hug!"
Join Date: Jul 20, 2015
Location: Under sea level or something
Posts: 785
Age: 25
you say this like you are some kind of authority? it doesnt matter if you dislike it, talking in such a holier than thou way is absolutely useless if you dont have any speck of a reason to talk that way
Honestly I actually agree with Blonk, there has been quite some drama about it in the past and it's only good that it is no longer really a thing.
 
May 29, 2019 at 1:57 PM
Senior Member
CSE Discord Admin
"Fly, Fly, Fly!"
Join Date: Jan 13, 2016
Location:
Posts: 132
also did you just imply that cave array can stack up to opencs in any manner??? like, what? not to bash on your mod but its nowhere near the level of quality or reputation of opencs.

you say this like you are some kind of authority? it doesnt matter if you dislike it, talking in such a holier than thou way is absolutely useless if you dont have any speck of a reason to talk that way
Come on, let the dude have his opinion, alright? It's fine if you disagree with him, but let's not bash someone for having an opinion on the internet.
Criticising someone for having a 'holier than thou' attitude is completely different to criticising someone for having an opinion. Heck, if someone needlessly acts like the authority on something, they're the one devaluing other people's opinions as less important than theirs.

Not to point fingers, but I can see how BLink's post can come off like that.
 
Last edited:
May 29, 2019 at 7:50 PM
Junior Member
"Wahoo! Upgrade!"
Join Date: May 12, 2018
Location: United States
Posts: 45
Criticising someone for having a 'holier than thou' attitude is completely different to criticising someone for having an opinion. Heck, if someone needlessly acts like the authority on something, they're the one devaluing other people's opinions as less important than theirs.

Not to point fingers, but I can see how BLink's post can come off like that.

That is a fair point. Thank you for clearing that up.
 
May 30, 2019 at 2:51 AM
The TideWalker
Modding Community Discord Founder
"That dog!"
Join Date: Apr 5, 2013
Location: In my mind and of my body.
Posts: 1640
Age: 26
what do you mean by plug and play

Mostly referring to how you don't have to compile anything/set anything up, you just plop in premade hex patches and click on the .exe to go, unlike how you need SDL2 and M2SYS, and gcc to get CSE2 to run.


also did you just imply that cave array can stack up to opencs in any manner??? like, what? not to bash on your mod but its nowhere near the level of quality or reputation of opencs.

I was picking two examples of mods with little/no story elements that have super justifiably reasons to be created solely in Vanilla. They are literally taking the game, not changing any core mechanics and adding new levels.

I don't know where you got any sort of reference that I was comparing any of the mods next to each other in terms of quality.

you say this like you are some kind of authority? it doesnt matter if you dislike it, talking in such a holier than thou way is absolutely useless if you dont have any speck of a reason to talk that way

I really don't understand how saying "forcing people/saying they are less for doing things one way or another is mega dumb" comes off as me being forceful and a prick when I'm trying to promote the opposite.
 
May 31, 2019 at 1:13 PM
Senior Member
Org Discord Admin
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Jun 18, 2017
Location:
Posts: 91
Age: 22
I honestly don't know if you're being serious or not, but...

The word "modding" comes from "modification". You're modifying something. Granted, CSE2 isn't exactly Cave Story, but knowing that it's based off the original code (and it's coming closer to being ASM-accurate, or in layman's terms, identical to Pixel's original code), it's safe to say that it still counts as "modding".

Then why has (BLink) been making Cave Story mods for so long?
BLink has been modding vanilla CS for so long because he's good in ASM, not C. Even ignoring that, BLink has begun learning C shortly after CSE2's code has been revealed, so you can't just imply that he wasted his time or whatever else.

The only point of Cave Story modding is the limitations, and pushing those limitations.
CSE2's code is open right for everyone to study and take notes on how to make a platformer engine. That's way faster than reading ASM. Experimenting with a ready engine is more convenient for learning than attempting to create one from scratch. (Go ahead, try it.) Limitations make for beautiful things, but, above that, you work smarter, not harder. Or, mod smarter, in this case.
Also, what do you mean by "pushing limitations"? CSE2 has already got rid of the limitations modders had with ASM.
 
May 31, 2019 at 2:35 PM
Senior Member
CSE Discord Admin
"Fly, Fly, Fly!"
Join Date: Jan 13, 2016
Location:
Posts: 132
I've been hacking the old Mega Drive Sonic the Hedgehog games since 2012, and it sure wasn't because I liked limitations. If that were the case, I wouldn't be making Sonic hacks: I'd be writing homebrew.

The reason I chose Sonic hacks over using a PC fanengine (or Mania... which I guess is also a fanengine [slapped]) is authenticity and accuracy. I like making edits of Sonic 1 and 2. Stuff like 'Sonic 2 but the music goes as fast as you' or 'Hyper Sonic in Sonic 1'. If a real PC port of those games existed, I'd probably edit those instead. That's why I'm making my own PC port of Sonic 2. Once that's done, I won't have much of a reason to go back. Likewise, since CSE2, I've completely ditched my DLL loader. I hated manually patching an EXE, much like how Sonic hackers from the 90s and early 2000s hated making ROM hacks with nothing more than a hex-editor. It's not surprising that all these years later disassemblies have become the go-to way to hack Sonic.

Authenticity and accuracy are the same reasons I started helping with CSE in the first place. Believe it or not, I used to contribute to NXEngine-evo, but the inaccuracy turned me away from it: Quote wouldn't retain momentum properly after slamming into a wall, Power Critters didn't make the screen shake when they landed, the wall Beetles in Egg Corridor only moved when you got near them instead of doing it on a timer, the list goes on. If CSE2 'isn't exactly Cave Story', then what the hell does that make NXEngine? Exactly. Sure, it already had widescreen, but I didn't want 'Cave Story except it's nothing like Cave Story but hey it has widescreen so that's cool', I wanted 'Cave Story with widescreen'. That's why I made the widescreen hack, not because I enjoy limitations.
 
Top