• Hey everyone happy Christmas Eve we're aware of what's happened with the source code so to keep this simple absolutely don't post it on the site or use it to make mods with (it's not particularly preferable toward this end anyway) and tread lightly in general until we see how this settles, thanks to all and have a great holiday season -DT

Quick Modding/Hacking Answers Thread

Feb 10, 2012 at 11:14 PM
Hey.
"In Soviet Russia, graves keep YOU!"
Join Date: Oct 20, 2010
Location: Within the hearts of all
Posts: 691
Age: 104
Pronouns: he/him
The basic way of doing it is to assembly hack the framerects of the title so that it covers the entire screen, and then move it to the top-left corner.

How exactly would you do that, and what would the coordinates be?
 
Feb 11, 2012 at 1:10 AM
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 just posted the code right there :B
top-left is 0,0 and the frame needs to be the window size; 0:0:320:240
 
Feb 11, 2012 at 1:26 PM
Junior Member
"It's dangerous to go alone!"
Join Date: Jan 27, 2012
Location:
Posts: 33
Okay, while making a boss fight the health bar doesn't disappear after the boss has been defeated.

The boss's entity ID is 0100 and the starting event for the map is 0201. The code doesn't really do anything right now besides starting the fight and deleting the npc afterwards really.

Code:
#0100
<CNP0100:0000:0000<END

#0201
<BSL0100<END
 
Feb 11, 2012 at 7:28 PM
Veteran Member
"The Ultimate Sword of Extraordinary Magnitude"
Join Date: Jan 26, 2012
Location:
Posts: 292
Pronouns: he/him
After I lower the music volume with <FMU is there any way to raise it again without restarting the track?
 
Feb 11, 2012 at 7:33 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
<RMU ?
>_>

*note this command is kind of flaky
 
Feb 11, 2012 at 7:48 PM
Veteran Member
"The Ultimate Sword of Extraordinary Magnitude"
Join Date: Jan 26, 2012
Location:
Posts: 292
Pronouns: he/him
I tried that (I'm not that much of a noob :o), but the music restarted.
 
Feb 12, 2012 at 10:31 PM
Senior Member
"Ha! Ha! Ha! Mega Man is no match for my Mimiga Man!"
Join Date: Jan 21, 2011
Location:
Posts: 249
Noxid said:
<RMU ?
>_>

*note this command is kind of flaky

Actually I think you have to set the music to CMU0000 after the FMU bit (like, after a WAI so it has time to fade out), which seems to reset the FMU quirk, then RMU works normally.

And I have a question for anyone knowledgeable enough to help. I've gotten my mod's grappling hook working (yes it's coming in the next patch), however I'm having a little bit of trouble utilizing FPATAN. To be more specific, converting coordinates into radians so it knows what to do with them. *shrug*
 
Feb 14, 2012 at 8:17 PM
Based Member
"Life begins and ends with Nu."
Join Date: Dec 31, 2011
Location: United States
Posts: 2326
Age: 28
Pronouns: he/him
So. Apparently, editors are not cross-compatible. I've witnessed firsthand that if you edit Cave Story with Cave Editor, then import it into Sue's Workshop, the maps don't load. HOWEVER, I've never ran into any problems opening a mod in Cave Editor that was developed using Sue's. From others' discussion, it's sounded like you'll get problems trying to import either way, but I've never had any problems. Are there any known issues with importing SW edited mods into CE?
 
Feb 14, 2012 at 9:52 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
Cave Editor accommodates Sue's by fixing executables that have been broken by it. This process is irreversible and nobody remembers if there are other problems but I am pretty sure the issue is only one-way.
 
Feb 14, 2012 at 9:59 PM
Based Member
"Life begins and ends with Nu."
Join Date: Dec 31, 2011
Location: United States
Posts: 2326
Age: 28
Pronouns: he/him
Cave Editor accommodates Sue's by fixing executables that have been broken by it.
Whoa, it can do that? I didn't know that.
This process is irreversible and nobody remembers if there are other problems but I am pretty sure the issue is only one-way.
Ok, thanks.
 
Feb 14, 2012 at 11:23 PM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Jan 12, 2012
Location: West Philadelphia born and raised on the playgroun
Posts: 98
Age: 25
Pronouns: he/him
Um... I've got a question. Ya Know when you Get the Gum Base, Jelly Fish Juice, and the,Choralal and when you talk to Maclo he say something differnt?
1. How do you do that
2. How do you make the event change? like ya know when you enter Mimiga village for the frist time,then look for Toroko then when you reenter King is in a differnt place how do you do that?
3. How do you make a NPC move with out the NPC Just Teleporting to the cords? Like with the walking sprite.
 
Feb 14, 2012 at 11:51 PM
Based Member
"Life begins and ends with Nu."
Join Date: Dec 31, 2011
Location: United States
Posts: 2326
Age: 28
Pronouns: he/him
DualHack said:
Um... I've got a question. Ya Know when you Get the Gum Base, Jelly Fish Juice, and the,Choralal and when you talk to Maclo he say something differnt?
1. How do you do that
Let's just say that we have this guy. If you talk to him, he'll say, "Please get the three items." So you need three items. Item one, item two, and item three. In this example let's give item one the item ID 0001, item two the item ID 0002, and item three the item ID 003. Lets assume that the guy's entity ID is 200 And once you have the three items and talk to this guy, he'll say "Good job on finding the three items!" So then here's how the script for the npc of the guy would work:
Code:
#0200
<KEY<ITJ0001:0201<MSG<FAC0015Please get the three
items.<NOD<CLR<END
#0201
<KEY<ITJ0002:0202<END
#0202
<KEY<ITJ0003:0203<END
#0203
<KEY<MSG<FAC0016Good job on finding the
three items!<NOD<CLR<END

DualHack said:
2. How do you make the event change? like ya know when you enter Mimiga village for the frist time,then look for Toroko then when you reenter King is in a differnt place how do you do that?
When a certain event occurs, you want to set what's called a flag. In this example, put "<FL+0100" into your script. Then, put <FLJ0100:XXXX (X= the event you want the script to jump to) Then put your new event into the corresponding event number. As for making them appear at different positions, the way Pixel, most modders, and myself handle this is by making separate NPCs for the different positions, and using their disappearing and reapearing flags to move them.
DualHack said:
3. How do you make a NPC move with out the NPC Just Teleporting to the cords? Like with the walking sprite.
Most NPCs have a list of available animations that can be used. Use this command: <ANPXXXX:YYYY:ZZZZ
X= entity ID
Y = animation number
Z = direction (0000= left, 0002= right most animations only accept those paramiters)
There is a defined list of animation numbers assigned to each animation's respective NPC type. Here is http://www.mediafire.com/?ianjjmnjgmq]a very handy guide[/url] for each npc and all of its available animations. Not all NPCs have walking animations though.
 
Feb 15, 2012 at 12:00 AM
Been here way too long...
Discord Group Admin
Org Discord Moderator
"Life begins and ends with Nu."
Join Date: Oct 18, 2011
Location:
Posts: 2337
HaydenStudios said:
Let's just say that we have this guy. If you talk to him, he'll say, "Please get the three items." So you need three items. Item one, item two, and item three. In this example let's give item one the item ID 0001, item two the item ID 0002, and item three the item ID 003. Lets assume that the guy's entity ID is 200 And once you have the three items and talk to this guy, he'll say "Good job on finding the three items!" So then here's how the script for the npc of the guy would work:
Code:
#0200
<KEY<ITJ0001:0201<MSG<FAC0015Please get the three
items.<NOD<CLR<END
#0201
<KEY<ITJ0002:0202<END
#0202
<KEY<ITJ0003:0203<END
#0203
<KEY<MSG<FAC0016Good job on finding the
three items!<NOD<CLR<END

When a certain event occurs, you want to set what's called a flag. In this example, put "<FL+0100" into your script. Then, put <FLJ0100:XXXX (X= the event you want the script to jump to) Then put your new event into the corresponding event number. As for making them appear at different positions, the way Pixel, most modders, and myself handle this is by making separate NPCs for the different positions, and using their disappearing and reapearing flags to move them.

Most NPCs have a list of available animations that can be used. Use this command: <ANPXXXX:YYYY:ZZZZ
X= entity ID
Y = animation number
Z = direction (0000= left, 0002= right most animations only accept those paramiters)
There is a defined list of animation numbers assigned to each animation's respective NPC type. Here is a very handy guide for each npc and all of its available animations. Not all NPCs have walking animations though.
Fixed that link for you.

IP Board doesn't play nice with links.
 
Feb 15, 2012 at 12:05 AM
Based Member
"Life begins and ends with Nu."
Join Date: Dec 31, 2011
Location: United States
Posts: 2326
Age: 28
Pronouns: he/him
Feb 15, 2012 at 12:14 AM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Jan 12, 2012
Location: West Philadelphia born and raised on the playgroun
Posts: 98
Age: 25
Pronouns: he/him
When a certain event occurs, you want to set what's called a flag. In this example, put "<FL+0100" into your script. Then, put <FLJ0100:XXXX (X= the event you want the script to jump to) Then put your new event into the corresponding event number. As for making them appear at different positions, the way Pixel, most modders, and myself handle this is by making separate NPCs for the different positions, and using their disappearing and reapearing flags to move them

I meant if you went through a door and went back through that door the map eralier was the same but later on it sends you to a differnt map.
 
Feb 15, 2012 at 12:26 AM
Based Member
"Life begins and ends with Nu."
Join Date: Dec 31, 2011
Location: United States
Posts: 2326
Age: 28
Pronouns: he/him
Then have your event set flag 0101, then let's say that your door's entity ID is 0100.
Code:
#0100
<KEY<DNP0100<SOU0011<FAO0004<FLJ0101:0101<TRA0067:0200:0006:0006
#0101
<TRA0068:0200:0006:0006
 
Feb 15, 2012 at 2:03 PM
Senior Member
"Ha! Ha! Ha! Mega Man is no match for my Mimiga Man!"
Join Date: Jan 21, 2011
Location:
Posts: 249
HaydenStudios said:
Let's just say that we have this guy. If you talk to him, he'll say, "Please get the three items." So you need three items. Item one, item two, and item three. In this example let's give item one the item ID 0001, item two the item ID 0002, and item three the item ID 003. Lets assume that the guy's entity ID is 200 And once you have the three items and talk to this guy, he'll say "Good job on finding the three items!" So then here's how the script for the npc of the guy would work:
Code:
#0200
<KEY<ITJ0001:0201<MSG<FAC0015Please get the three
items.<NOD<CLR<END
#0201
<KEY<ITJ0002:0202<END
#0202
<KEY<ITJ0003:0203<END
#0203
<KEY<MSG<FAC0016Good job on finding the
three items!<NOD<CLR<END

When a certain event occurs, you want to set what's called a flag. In this example, put "<FL+0100" into your script. Then, put <FLJ0100:XXXX (X= the event you want the script to jump to) Then put your new event into the corresponding event number. As for making them appear at different positions, the way Pixel, most modders, and myself handle this is by making separate NPCs for the different positions, and using their disappearing and reapearing flags to move them.

Most NPCs have a list of available animations that can be used. Use this command: <ANPXXXX:YYYY:ZZZZ
X= entity ID
Y = animation number
Z = direction (0000= left, 0002= right most animations only accept those paramiters)
There is a defined list of animation numbers assigned to each animation's respective NPC type. Here is http://www.mediafire.../?ianjjmnjgmq]a very handy guide[/url] for each npc and all of its available animations. Not all NPCs have walking animations though.

You can also open up OllyDbg, and go to the NPC in question. Here's how to tell if you can use <ANP on that npc, and what the frame values are:
(I'll be using Moving Block (horizontal) for this example, it'll be different than yours as I've modified it to have additional behaviors)

Firstly, going to http://tile44.org/~n...tionlistNox.txt we find our npc:
Code:
00445170 - NPC 149: Moving block (horiz)

Now, in olly we press ctrl+g and enter 00445170, the first few lines should look a little something like this:
Code:
CPU Disasm
Address   Hex dump					 Command								  Comments
00445170  /.  55					   PUSH EBP
00445171  |.  89E5					 MOV EBP,ESP
00445173  |.  83EC 1C				  SUB ESP,1C
00445176  |.  8B45 08				  MOV EAX,DWORD PTR SS:[ARG.1]
00445179  |.  8B48 74				  MOV ECX,DWORD PTR DS:[EAX+74]
0044517C  |.  894D E8				  MOV DWORD PTR SS:[LOCAL.6],ECX
0044517F  |.  837D E8 15			   CMP DWORD PTR SS:[LOCAL.6],15

Now that we know we're in the right function, we can scroll down until we see a bunch of 'DD' and 'DB' entries. Again, mine will be different than yours, but they should appear a bit like this:
Code:
CPU Disasm
Address   Hex dump					 Command								  Comments
00445705   .  9A514400				 DD 0044519A
00445709   .  2C524400				 DD 0044522C
0044570D   .  63524400				 DD 00445263
00445711   .  8D524400				 DD 0044528D
00445715   .  BF524400				 DD 004452BF
00445719   .  48534400				 DD 00445348
0044571D   .  94544400				 DD 00445494
00445721   .  1C554400				 DD 0044551C
00445725   .  60564400				 DD 00445660
00445729   .  00					   DB 00
0044572A   .  01					   DB 01
0044572B   .  02					   DB 02
0044572C   .  02					   DB 02
0044572D   .  02					   DB 02
0044572E   .  02					   DB 02
0044572F   .  02					   DB 02
00445730   .  02					   DB 02
00445731   .  03					   DB 03
00445732   .  08					   DB 08
00445733   .  04					   DB 04
00445734   .  05					   DB 05
00445735   .  08					   DB 08
00445736   .  08					   DB 08
00445737   .  08					   DB 08
00445738   .  08					   DB 08
00445739   .  08					   DB 08
0044573A   .  08					   DB 08
0044573B   .  08					   DB 08
0044573C   .  08					   DB 08
0044573D   .  06					   DB 06
0044573E   .  07					   DB 07

And there's the frame list, but here's how to read it.

Firstly, we need to double-click on '00445729' in OllyDbg. This will change '00445729' to look like '$ ==>' That line is frame 0. You'll note that the values indicated by '$+' are in increments of one, though they are in hexadecimal. Take a look:
Code:
CPU Disasm
Address   Hex dump					 Command								  Comments
$ ==>	  .  00					   DB 00
$+1		.  01					   DB 01
$+2		.  02					   DB 02
$+3		.  02					   DB 02
$+4		.  02					   DB 02
$+5		.  02					   DB 02
$+6		.  02					   DB 02
$+7		.  02					   DB 02
$+8		.  03					   DB 03
$+9		.  08					   DB 08
$+A		.  04					   DB 04
$+B		.  05					   DB 05
$+C		.  08					   DB 08
$+D		.  08					   DB 08
$+E		.  08					   DB 08
$+F		.  08					   DB 08
$+10	   .  08					   DB 08
$+11	   .  08					   DB 08
$+12	   .  08					   DB 08
$+13	   .  08					   DB 08
$+14	   .  06					   DB 06
$+15	   .  07					   DB 07

So, where it says '$+A' means that's frame 10, and '$+15' is frame 21. Notice how frame 10's line says 'DB 04', and frame 21's line says 'DB 07'. Those numbers denote which of the elements in the 'DD' list above to go to. What this means, basically, is Frame 0 [DB 00] is different than Frame 1 [DB 01], but for instance, Frame 12 [DB 08] is the same as Frame 15 [DB 08]. So from that, we can deduce that the following frames will actually do something:
Code:
Frame 0 - Initialize (repositions self)
Frame 1 - Sleep, wait for player to touch me
Frame 2 - Waking up, rumble and change frame to eye wide open
Frame 8 - Done waking up, init direction and act per normal
Frame 9 - Idle, do not respond to player
Frame 10 - Play sound/damage if slamming into a left facing wall. Wait for quote to be in sight otherwise
Frame 11 - Move to the left
Frame 12 - Block is moving left (or right)
Frame 20 - Play sound/damage if slamming into a right facing wall. Wait for quote to be in sight otherwise
Frame 21 - Move to the right
(Remember, I actually know what each of the frames do because I wrote them. You likely will not know what they do, and will need to test them with scripts to find out - if you cannot read ASM effectively, that is.)


Hope this helps.
 
Feb 16, 2012 at 4:37 PM
Senior Member
"This is the greatest handgun ever made! You have to ask yourself, do I feel lucky?"
Join Date: Jan 12, 2012
Location: West Philadelphia born and raised on the playgroun
Posts: 98
Age: 25
Pronouns: he/him
-_- Ok I meant how do i change a npcs event.
Ex:
Code:
#0101
<KEY<MSG Hi!<NOD<END
#0102
<KEY<MSG Huh?<NOD You want help?<NOD<END
 
Feb 16, 2012 at 5:42 PM
Senior Member
"Ha! Ha! Ha! Mega Man is no match for my Mimiga Man!"
Join Date: Jan 21, 2011
Location:
Posts: 249
DualHack said:
-_- Ok I meant how do i change a npcs event.
Ex:
Code:
#0101
<KEY<MSG Hi!<NOD<END
#0102
<KEY<MSG Huh?<NOD You want help?<NOD<END

NPC: Kazuma, ID= 200

Code:
#0200
<FLJ5001:0202
<FLJ5000:0201
<FL+5000
<KEY<MSGHey there Quote.<NOD<END
#0201
<FL+5001
<KEY<MSGWhat's that? You want to
show me a magic trick?<NOD<END
#0202
<KEY<MSGAh! H-hey! Give me back
my nose!<NOD<END
 
Back
Top