The Multi-Patch Mod

Apr 11, 2010 at 2:04 PM
Bonds that separate us
Forum Administrator
"Life begins and ends with Nu."
Join Date: Aug 20, 2006
Location:
Posts: 2850
Age: 33
I guess this is an excellent time to share a modding idea I'd come up with a long while ago (for a vaguely-planned mod of a completely different game in fact). Hopefully I've understood the purpose of this new forum properly after a quick catch-up, if not I can move it myself.

CS mods have always been limited by the scope the game provides, be it in terms of graphics or gameplay. These days assembly hacks allow for some amazing things, but are impractical for some people due to a lack of time/etc. Even then I don't think anyone's been able to craft an entirely new weapon or entity, for example. As such, I came up with an idea that should allow pretty much anyone to produce as much general content as they like.

FOR EGG CORRIDOR SAMPLE

Someone could wish to create a mod where three characters can be controlled. A quick look at MyChar.pbm reveals that only two character sprite sets are available, and the only way to switch between them is to set the Mimiga Mask flag. An assembly hack to allow a third character will probably be an arduous endeavour, even for the guys who know what they're doing (I might be wrong, but then nobody's done it yet). So I thought up a way to avoid this dilemma altogether: by breaking a mod up into multiple parts, each of which can be 'patched' at the appropriate time.

It should be pretty easy to do I think. A mod could be completed normally up to the point where the overlapping element(s) need to be introduced. Then, (preferably at a screen transition or something,) a textbox could pop up saying something like "please apply the Chapter 2 patch now", and that part of the mod would finish there. (A readme file could be included with clearer instructions, or the whole shebang could be put in the textbox, but I'd prefer to break up the experience as minimally as possible.)

After that there are multiple ways to go about it. The patch could be stored in a separate .zip file, which when extracted would overwrite all the necessary files; in the above example this would be super-easy, because all that would need to be replaced would be MyChar. Just pausing the game would mean that someone could just not-do it though, which is why I thought of ending that part and including a second executable in the patch, designed to run the next part/rest of the mod after reaching that point. Or, Profile.dat could be moved over to a whole other mod folder, the mod in which will only run properly when all the right flags are set. Sort of like an 'insert disc 2' thing.

This could work for other things too, like multiple hacks of the same weapon or enemy, sprite changes on a larger scale etc. It is somewhat limited in the sense that you can only have the contents of one patch working in the game at one time, but I think it still opens up a lot of possibilities, and it's a very simple thing to do for the versatility it provides.

Comments/improvements/ihaetu's?
 
Apr 11, 2010 at 2:26 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
I think it's a pretty spiffy idea, I've had musings of my own that are none-too dissimilar. Another idea for a patch would be an ACTUAL patch, like the AGTP. Of course, that's slightly more advanced but I'd image it can be done somehow. A seperate .exe and/or data folder is probably the simplest way, where one would only have to transfer the save.

depending on how it's used it could mean significant increase in filesize.
It would have to break the fourth wall in a way.

Anyway, when I read the title, I thought this was going to be about all the hackers coming together and putting their coolest weapon hacks into a doukutsu or something...
 
Apr 11, 2010 at 5:47 PM
Not anymore
"Run, rabbit run. Dig that hole, forget the sun."
Join Date: Jan 28, 2010
Location: Internet
Posts: 1369
Age: 34
Pretty good idea for adding lots of content, but you would have to be careful to make the whole patching experience not disturb the flow of the gameplay.

Of course, no one would want to patch like 5 times during the course of a mod. If anyone uses this idea, they should try to minimize the number of patches to 2 or 3.
 
Apr 12, 2010 at 9:52 PM
Junior Member
"Fresh from the Bakery"
Join Date: Aug 13, 2009
Location:
Posts: 18
"Please insert disk 2"

You could just have 2 seperate game folders, couldn't you?

Some games on the Playstation did this.
 
May 11, 2010 at 11:32 AM
Been here way too long...
"Ha! Ha! Ha! Mega Man is no match for my Mimiga Man!"
Join Date: May 25, 2009
Location: Sweden
Posts: 273
Age: 33
I'd say the best thing would be to have an EXE that is the 'main' game, that simply checks what patch was used last (when selecting Load, picks No1 when selecting New), runs the doukutsu.exe in the corresponding folder, and waits for it to finish. If it finishes and somehow returns "go to next chapter", the Main-Exe starts the next chapter, else it just hangs there and allows you to New, Load or Quit.

I think even Game Maker can do an EXE like this, execute_program() and execute_shell() allows you to run a program, and with the option to let the game remain paused (frozen) until the program finishes. The question now is HOW THE HECK DO WE MAKE DOUKUTSU.EXE RETURN VALUES? The best way I can come up with would be to check for 290.rec, which is written upon chapter finish, and removed by the Main-exe every time you close it (or as soon as it realises that it moves on to the next chapter).

To find out what chapter is currently being played, the Main-Exe should check for Profile.dat in all chapter directories, starting with the last chapter. Upon selecting New, all the profile files should be deleted.


Does this sound like it's the ticket?
 
May 11, 2010 at 12:20 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
Yal said:
The question now is HOW THE HECK DO WE MAKE DOUKUTSU.EXE RETURN VALUES?

<SVP and check for a flag in profile.dat?
 
May 20, 2010 at 11:48 AM
Been here way too long...
"Ha! Ha! Ha! Mega Man is no match for my Mimiga Man!"
Join Date: May 25, 2009
Location: Sweden
Posts: 273
Age: 33
Problem: Game Maker (at least according to my knowledge) can only read text strings from non-INI, non-BIN files. So we end up getting something that looks like the when you open profile.dat with Notepad instead of with WinHex.

The solution with this would probably be using a DLL that searches for certain flags, I guess... But then we suddenly need the Pro version of Game Maker (which isn't free), making stuff more complex.


Has anybody except me some experience with Game Maker? I don't really want to end up being the programmer of a project like this, I barely manage to work with the rest of my indie game projects...
 
May 20, 2010 at 3:25 PM
Cold Agony of Resolute Vacuum
"Heavy swords for sale. Suitable for most RPG Protagonists. Apply now!"
Join Date: Jan 1, 2008
Location: Elsewhere
Posts: 1973
DoubleThink said:
I guess this is an excellent time to share a modding idea I'd come up with a long while ago (for a vaguely-planned mod of a completely different game in fact). Hopefully I've understood the purpose of this new forum properly after a quick catch-up, if not I can move it myself.

CS mods have always been limited by the scope the game provides, be it in terms of graphics or gameplay. These days assembly hacks allow for some amazing things, but are impractical for some people due to a lack of time/etc. Even then I don't think anyone's been able to craft an entirely new weapon or entity, for example. As such, I came up with an idea that should allow pretty much anyone to produce as much general content as they like.

FOR EGG CORRIDOR SAMPLE

Someone could wish to create a mod where three characters can be controlled. A quick look at MyChar.pbm reveals that only two character sprite sets are available, and the only way to switch between them is to set the Mimiga Mask flag. An assembly hack to allow a third character will probably be an arduous endeavour, even for the guys who know what they're doing (I might be wrong, but then nobody's done it yet). So I thought up a way to avoid this dilemma altogether: by breaking a mod up into multiple parts, each of which can be 'patched' at the appropriate time.

It should be pretty easy to do I think. A mod could be completed normally up to the point where the overlapping element(s) need to be introduced. Then, (preferably at a screen transition or something,) a textbox could pop up saying something like "please apply the Chapter 2 patch now", and that part of the mod would finish there. (A readme file could be included with clearer instructions, or the whole shebang could be put in the textbox, but I'd prefer to break up the experience as minimally as possible.)

After that there are multiple ways to go about it. The patch could be stored in a separate .zip file, which when extracted would overwrite all the necessary files; in the above example this would be super-easy, because all that would need to be replaced would be MyChar. Just pausing the game would mean that someone could just not-do it though, which is why I thought of ending that part and including a second executable in the patch, designed to run the next part/rest of the mod after reaching that point. Or, Profile.dat could be moved over to a whole other mod folder, the mod in which will only run properly when all the right flags are set. Sort of like an 'insert disc 2' thing.

This could work for other things too, like multiple hacks of the same weapon or enemy, sprite changes on a larger scale etc. It is somewhat limited in the sense that you can only have the contents of one patch working in the game at one time, but I think it still opens up a lot of possibilities, and it's a very simple thing to do for the versatility it provides.

Comments/improvements/ihaetu's?

A few points:
a.) JTE's project Agora's Legends will effectively be this, but better.
b.) Some time in the near future I'm going to release a modders package which will include an EXE with some pretty epic haxx already applied (a good number of them found in WatS). This EXE, among many things, will include an infinite character set for those wishing to have a 'lots-o-main-characters' mod.
c.) If you really wanted to do this, the best way I can come up with is a few parts and very labour-intensive:

It would contain multiple EXE's but only one data folder (which would contain seperate data files for each EXE). Each EXE would have a TSC command hacked in some how that would start an exe (Something like <EXE0001) and close the current one. Lastly, The save file would only need a single flag set to enable the next chapter. In an ideal world someone would make every secondary EXE check the previous EXEs' save, but have it's own seperate file (CH1.dat, CH2.dat, DUCK.dat etc.). Anyways, selecting the first EXE is all you need to do, as it will automagically load the right EXE based on flags.

</twocents>
 
May 20, 2010 at 3:37 PM
graters gonna grate
"Heavy swords for sale. Suitable for most RPG Protagonists. Apply now!"
Join Date: Jul 2, 2008
Location: &
Posts: 1886
Age: 31
Game Maker, really?

Real programmers use Java :)
 
May 20, 2010 at 4:22 PM
Lvl 1
Forum Moderator
"Life begins and ends with Nu."
Join Date: May 28, 2008
Location: PMMM MMO
Posts: 3713
Age: 31
Wedge of Cheese said:
Game Maker, really?

Real programmers use Java :)

REAL programmers use C++.

Java is sllooww.

(and real programmers optimize their programs with assembly, since compilers can never make that fast of code if done right).
 
May 20, 2010 at 6:16 PM
graters gonna grate
"Heavy swords for sale. Suitable for most RPG Protagonists. Apply now!"
Join Date: Jul 2, 2008
Location: &
Posts: 1886
Age: 31
But C++ is not platform independent, unlike Java.
Nor is it well designed, unlike Java.

But it is very fast; I'll give you that.
 
May 20, 2010 at 6:17 PM
Vanished.
Bobomb says: "I need a hug!"
Join Date: Apr 5, 2008
Location:
Posts: 776
But C++ is not platform independent, unlike Java.
Lies.
Stop telling people such lies.

Java is slow. and sucks baaaaaaalls.
 
May 20, 2010 at 6:20 PM
graters gonna grate
"Heavy swords for sale. Suitable for most RPG Protagonists. Apply now!"
Join Date: Jul 2, 2008
Location: &
Posts: 1886
Age: 31
What I mean is that once you compile a C++ program, it is no longer platform independent. Though the source code still may be.
 
May 20, 2010 at 6:21 PM
Vanished.
Bobomb says: "I need a hug!"
Join Date: Apr 5, 2008
Location:
Posts: 776
so?
then you compile it for another system?
Whats the problem?

I just did that... with the PSP Mod Thingy.
 
May 20, 2010 at 6:21 PM
Lvl 1
Forum Moderator
"Life begins and ends with Nu."
Join Date: May 28, 2008
Location: PMMM MMO
Posts: 3713
Age: 31
Wedge of Cheese said:
Nor is it well designed, unlike Java.

But it is very fast; I'll give you that.

Explain the difference to me between "well designed" and "fast". And what's the point of a well designed language if it's slow?

Also you can always recompile C++ on different platforms, so long as you're using the correct libraries.
 
May 20, 2010 at 6:24 PM
Vanished.
Bobomb says: "I need a hug!"
Join Date: Apr 5, 2008
Location:
Posts: 776
Or you use a cross-compiler like GCC or mingw.
 
May 20, 2010 at 6:24 PM
graters gonna grate
"Heavy swords for sale. Suitable for most RPG Protagonists. Apply now!"
Join Date: Jul 2, 2008
Location: &
Posts: 1886
Age: 31
Well designed doesn't mean fast, it means it makes sense/is logical. Much more so than C++, which has all these random inconsistencies.
 
May 20, 2010 at 6:29 PM
Lvl 1
Forum Moderator
"Life begins and ends with Nu."
Join Date: May 28, 2008
Location: PMMM MMO
Posts: 3713
Age: 31
Wedge of Cheese said:
Well designed doesn't mean fast, it means it makes sense/is logical. Much more so than C++, which has all these random inconsistencies.

That doesn't really help the end product though, does it?
 
May 20, 2010 at 6:46 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
Real programmers??
p99004-0-realprogrammers.png

I'm not sure it's entirely relevant but I like it.

Now, offtopic is done.
 
May 20, 2010 at 7:02 PM
graters gonna grate
"Heavy swords for sale. Suitable for most RPG Protagonists. Apply now!"
Join Date: Jul 2, 2008
Location: &
Posts: 1886
Age: 31
GIRakaCHEEZER said:
That doesn't really help the end product though, does it?

It does because it means you're less likely to make a mistake that you don't catch.

This is mainly why I still use C++ for small programs where it's pretty easy not to make mistakes and to catch them if you do.

But anyway, to get slightly less off topic, I think we can agree that C++ and Java are both far superior to Game Maker in terms of the criterion brought up so far, which was the main reason I made that comment which sparked all this. The point was that I really strongly dislike the idea of doing this "Multi-Patch Mod" in Game Maker, but I wouldn't complain if whoever is doing it did it in C++. After all, the original Cave Story was made in C++, so it's certainly capable of achieving wonderful things.
 
Top