Possible NXEngine Mods Question

Jan 25, 2018 at 1:01 PM
Junior Member
"Fresh from the Bakery"
Join Date: Jan 4, 2018
Location:
Posts: 15
Pronouns: he/him
There's a way to mod NXEngine or something?
im really excited for a mod porting to NXEngine
for linux & windows
Can this is possible?
:chin:
 
Jan 25, 2018 at 2:45 PM
In my body, in my head
Forum Moderator
"Life begins and ends with Nu."
Join Date: Aug 28, 2009
Location: The Purple Zone
Posts: 5998
Pronouns: he/him
I mean the source is available, right
There's nothing really stopping anyone from porting mods to it as far as i know, but assembly hacks are just 100% not portable full stop. You'd have to recreate them.
 
Jan 25, 2018 at 3:52 PM
Senior Member
CSE Discord Admin
"Fly, Fly, Fly!"
Join Date: Jan 13, 2016
Location:
Posts: 132
If I can make a recommendation, I'd suggest the NXEngine-evo branch. It's got widescreen, a well-needed refactor and cleanup, and some accuracy improvements.
 
Jan 25, 2018 at 4:30 PM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
Yes, it is very possible.
Plus you can port to these platforms with NX: PC, Mac, Linux, FreeBSD, OpenBSD, NetBSD, DragonflyBSD, TI Nspire CX, PSP, Vita, Wii, 3DS, PS2, etc.

But mods are not portable. You WILL have to screw with C++ source if you want it to work right. Also, you will have to change the offset where it loads the ORGs if you want Music to work right.
 
Mar 7, 2018 at 8:03 PM
Junior Member
"Wahoo! Upgrade!"
Join Date: Feb 26, 2018
Location:
Posts: 46
There's an idea that's been floating around my mind for quite some time now:
split npc/weapons into some scriptable language, probably lua, and turn some binary formats, like sprites.sif into something human readable. And maybe even map support/converter for Tiled.
That would definitely make modders life easier.
But here's the thing: all that would just turn nxengine into some generic platformer engine. And there's far more better tools for that: godot, love, gamemaker, unity (ugh).
And while i would definitely love to see some of the mods ported to nxengine, i'm not sure all that worth the work. It probably even easier to just port all game logic to love or whatever and ditch nxengine completely.
As for messing with source code of nxengine - well, you should be brave enough. Caitlin did a great work writing it, but damn, it's still a hackish hybrid of old-school C and C++
 
Mar 7, 2018 at 8:37 PM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
There's an idea that's been floating around my mind for quite some time now:
split npc/weapons into some scriptable language, probably lua, and turn some binary formats, like sprites.sif into something human readable. And maybe even map support/converter for Tiled.
That would definitely make modders life easier.
But here's the thing: all that would just turn nxengine into some generic platformer engine. And there's far more better tools for that: godot, love, gamemaker, unity (ugh).
And while i would definitely love to see some of the mods ported to nxengine, i'm not sure all that worth the work. It probably even easier to just port all game logic to love or whatever and ditch nxengine completely.
As for messing with source code of nxengine - well, you should be brave enough. Caitlin did a great work writing it, but damn, it's still a hackish hybrid of old-school C and C++

I was thinking, just have it read the binary at offsets commonly used by mods (Check Boosters Lab Hacks List) and then load those in to the appropriate variables.
 
Mar 7, 2018 at 9:14 PM
Junior Member
"Wahoo! Upgrade!"
Join Date: Feb 26, 2018
Location:
Posts: 46
Mods are not just variables, you know. They frequently reuse existing logic in other places or even use completely new logic (like new TSC commands). That's impossible to support.
 
Mar 7, 2018 at 9:21 PM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
Mods are not just variables, you know. They frequently reuse existing logic in other places or even use completely new logic (like new TSC commands). That's impossible to support.
Yes, but it would add support for some mods. I was referring to mods that change things like health, weapon damage, entity stats, where the stages are, etc.
 
Mar 8, 2018 at 1:56 AM
Junior Member
"Fresh from the Bakery"
Join Date: Jan 4, 2018
Location:
Posts: 15
Pronouns: he/him
this needs some h4ckz0rs sk1llz
 
Mar 8, 2018 at 2:02 AM
Junior Member
"It's dangerous to go alone!"
Join Date: Mar 3, 2018
Location:
Posts: 40
Age: 20
It could also be simple if you can decompile the files
 
Mar 8, 2018 at 4:39 AM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
It could also be simple if you can decompile the files
No it wouldn't, it would just make it harder because it would have to turn it back into executable form to run it and how would that work anyways? There is no need to decompile anything or is it possible to have mods with logic code in them run on NX without emulating x86 instructions which at that point you might as well just use wine.

Also, Cave Story has been decompiled many times before, how do you think ASM hacks are made. It is not very difficult.

this needs some h4ckz0rs sk1llz
ye
 
Last edited:
Mar 8, 2018 at 3:51 PM
Junior Member
CSE Discord Admin
"It's dangerous to go alone!"
Join Date: Jun 13, 2017
Location:
Posts: 34
Age: 21
Pronouns: he/him
It's disassembling, not decompiling. Decompiling means turning the x86 code back into C/C++. Though the funny thing is, I'm currently using the Hexrays decompiler to decompile the source. (Actually if there was some need to help with adapting CS code to the NX-Engine, I could help idk)
 
Mar 8, 2018 at 4:00 PM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
It's disassembling, not decompiling. Decompiling means turning the x86 code back into C/C++. Though the funny thing is, I'm currently using the Hexrays decompiler to decompile the source. (Actually if there was some need to help with adapting CS code to the NX-Engine, I could help idk)
Well, would you consider decompiling to NASM, FASM or GAS from binary decompiling because those are some very different languages (one makes sense and one makes you want to kys). In most cases decompiling means the exact same thing as dissasembling. If I wanted to, I could decompile to C-- or Pascal, languages which CS was not written in and are very different. The issue is that Pixel removed debugging symbols from Cave Story which makes decompiling produce functions with no names. I believe that it would be useful if someone was to map out the executable completely though and create a version of the executable with debugging symbols. That I believe would make modding and studying the source/assembly much easier. Even just having some ASM macros would help using EQU. :chin:
 
Last edited:
Mar 8, 2018 at 4:11 PM
Junior Member
"Wahoo! Upgrade!"
Join Date: Feb 26, 2018
Location:
Posts: 46
Actually if there was some need to help with adapting CS code to the NX-Engine, I could help idk
Nah, 1) i know how to use IDA, 2) adapting code is illegal (looking how it works and reproducing from scratch isn't) 3) even disassembling/decompiling CS+ is illegal in most countries (luckily not in mine), not sure about original.

The issue is that Pixel removed debugging symbols from Cave Story which makes decompiling produce functions with no names. I believe that it would be useful if someone was to map out the executable completely though and create a version of the executable with debugging symbols. That I believe would make modding and studying the source/assembly much easier. Even just having some ASM macros would help using EQU. :chin:

Some of first linux builds of CS+ contain debug symbols. So if anyone have time to compare functions from original and CS+ - it's totally doable.
 
Mar 8, 2018 at 4:17 PM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
Nah, 1) i know how to use IDA, 2) adapting code is illegal (looking how it works and reproducing from scratch isn't) 3) even disassembling/decompiling CS+ is illegal in most countries (luckily not in mine), not sure about original.
In the United States it is legal as long as the licence agreement says that its okay. Then again, iTunes requires you to sign away your rights to an attorney in court and your first born child, ok maybe not but its darn close.

Some of first linux builds of CS+ contain debug symbols. So if anyone have time to compare functions from original and CS+ - it's totally doable.
Seeing how little NICALiS changes, they probably just copy pasted the variables from CaveStory into CaveStory+ but maybe not.

I do believe that making Cave Story mods for NXEngine is much easier than porting them over when it comes to getting them working with NX. I have semiported #9 and Blargo because if you are going to try to port something why not port a meme.
 
Last edited:
Mar 8, 2018 at 4:29 PM
Junior Member
CSE Discord Admin
"It's dangerous to go alone!"
Join Date: Jun 13, 2017
Location:
Posts: 34
Age: 21
Pronouns: he/him
Mar 8, 2018 at 4:32 PM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
They shouldn't be able to. Because Pixel made CaveStory freeware and never stated that showing the decompiled code is not allowed you should be fine. Think of it this way, disassembly is just a pretty way of displaying machine code and C is just a pretty way of showing assembly (it's much more complicated but I digress).

Also, there are debugging symbols for the functions woooo.
 
Mar 8, 2018 at 4:32 PM
Junior Member
CSE Discord Admin
"It's dangerous to go alone!"
Join Date: Jun 13, 2017
Location:
Posts: 34
Age: 21
Pronouns: he/him
Well, would you consider decompiling to NASM, FASM or GAS from binary decompiling because those are some very different languages (one makes sense and one makes you want to kys). In most cases decompiling means the exact same thing as dissasembling. If I wanted to, I could decompile to C-- or Pascal, languages which CS was not written in and are very different. The issue is that Pixel removed debugging symbols from Cave Story which makes decompiling produce functions with no names. I believe that it would be useful if someone was to map out the executable completely though and create a version of the executable with debugging symbols. That I believe would make modding and studying the source/assembly much easier. Even just having some ASM macros would help using EQU. :chin:
Also, when people say decompiling, it's usually supposed to mean converting to a non-assembly language.
 
Mar 8, 2018 at 4:35 PM
Senior Member
"Fly, Fly, Fly!"
Join Date: Sep 7, 2017
Location: Washington
Posts: 135
Age: 21
Pronouns: he/him
Also, when people say decompiling, it's usually supposed to mean converting to a non-assembly language.
Don't obsess over semantics.

There are a lot of types of assembly and even some asm that don't conform to standards like FASM.
 
Mar 8, 2018 at 4:39 PM
Junior Member
"Wahoo! Upgrade!"
Join Date: Feb 26, 2018
Location:
Posts: 46
Seeing how little NICALiS changes, they probably just copy pasted the variables from CaveStory into CaveStory+ but maybe not.
Nicalis only rewrote renderer/sound engine/main menu. All game logic is straight copy-paste from original, afaik.
They shouldn't be able to. Because Pixel made CaveStory freeware and never stated that showing the decompiled code is not allowed you should be fine.
That depends on how much rights Pixel actually signed off to Nicalis (which we'll never know).

So, all in all, its a walk on a thin ice.
 
Last edited:
Back
Top