A challenge for assembly hackers! (Mainly Rune)

Nov 5, 2006 at 12:10 PM
Senior Member
"Master using it, and you can have this!"
Join Date: Oct 18, 2006
Location: Preston England (w00t)
Posts: 73
Age: 32
Ok, I was thinking this over last night and I thought a little bit.

So Rune (And any other Assembly Hackers (AssHackers)) I have a challenge for you!

Ok it all revolves around the EXP system of Cavestory. You know the 'Guns' (Mainly guns, but there is 1 non gun in CS) level up themselves and if you get hit they lose 'EXP' and may drop levels? ok I want that SCRAPPED! You read me, SCRAPPED. S-C-R-A-P-P-E-D. In it's place I want a new Leveling system.

Each 'gun' has it's own EXP system. There is only going to be five 'guns' in my game so each one can go up to level 20. There is EXP set for each level (See table 1-1)

Table 1-1
Level - EXP By this level
1 - 0 (Starts at this level)
2 - 10
3 - 15
4 - 20
5 - 25
6 - 30
7 - 40
8 - 50
9 - 60
10 - 70
11 - 80
12 - 90
13 - 105
14 - 120
15 - 135
16 - 150
17 - 165
18 - 180
19 - 195
MAX - 220

At every level that is a multiple of 5, the damage incrases by 1 (Max of +4 5,10,15 and 20) At every level that is a multiple of 2 (2,4,6,8,10,12,14,16,18,20) the character's life increases by 1.

Ifd this was implemented in CS this would make an intresting twist, as well as making the final boss a little easier (5 guns all leveled to level 20 would mean 50 HP + 51 from normal increases. DOUBLE + the guns would all do 4 more damage)

Bonuses only from current 5 weapons in inventory (So if a level 20 weapon leaves the inventory, the max HP goes down 10)Only one downside to CS's system is the fact they revert to 1 when you get them >.<

So this is the challenge, I don't care how long it takes, just if it cannot be done, looks like I shall have to make do with the old system for exp >.<
 
Nov 7, 2006 at 4:27 PM
The Bartender
"All your forum are belong to us!"
Join Date: Jun 18, 2006
Location: Montreal, Canada
Posts: 581
Age: 39
This involves quite a bit of work. Namely, hammering in an exp table (there's free space in the ROM...) and some pretty hefty code changes (doable.) But isn't this just a carefully-worded "Hey Rune, can you do this for me free of charge? We can make it look like a challenge so you can have your pride for completing it! :)" ?

Either way, I barely have time for my own hack. So another assembly hacker (I'm sure there are others - I've seen a few people taking interest in this so...) would have to take up this "challenge."

But the fact remains that this could be done.
 
Nov 7, 2006 at 5:58 PM
Hoxtilicious
"Life begins and ends with Nu."
Join Date: Dec 30, 2005
Location: Germany
Posts: 3218
Age: 32
LOL Oh well rune everone needs you :D
Lol well I love to help people I don't need any pride and so on, but with this I saddly can't help :D
Heh CociCookie why u dont download runes primer and play a bit with assembly? Its fun :( I also did.
 
Nov 7, 2006 at 6:17 PM
The Bartender
"All your forum are belong to us!"
Join Date: Jun 18, 2006
Location: Montreal, Canada
Posts: 581
Age: 39
ShInInG PhAnToM said:
LOL Oh well rune everone needs you :D
÷
Seems that way. But with people trying out assembly for themselves, sooner or later that won't be the case anymore. :(

It's actually very hard to keep doing this stuff without the intar-web. Getting hacks and/or projects shipped over to people and staying in contact with them is important. Meh. Frankly the only reason I don't have the intar-web0rnet at home is because I'm too lazy to place a call to sign up. Other than dev work, really, I don't need the internet (omglol some1 maed a flaesh animation wieth DANCIENG SQUIDZ!!1!!1one!) I guess I'll do something about that this weekend...

In any event, if you intend to try this for yourself, here are a few pointers to get you started.

- Stick your data at the end of the ROM. There's plenty of free space there. You can read it back via a simple MOV instruction from a static address. A LEA instruction can be used to calculate the offset (something like LEA [x+eax4] where x is the base offset of your data and eax a register containing the ID of the weapon. Or maybe something a bit more complex, seeing as it's essentially a 2D array: Exp[Weapon][Level] or so.)

- You can free up a lot of space by caching stuff in registers. When accessing an array, the game often grabs the base offset, a pointer to the right entry, and stuffs it into a register. You can cache the register containing the entry sometimes when it is used repeatedly and save space. Otherwise, just have a far jump to some other free space. Beware spaghetti code though, try to keep it readable for your sake.

- Take notes. A lot of them. MORE THAN THAT! That's not enough. Why aren't you jotting this down on a piece of paper yet? You won't last past your first tweak if you don't keep heavily detailled notes and traces of your changes and your reasoning. More notes! TAKE MORE NOTES!!! O_O

- Break it down step by step. Try to organize your developement so that if you can't pull off the later steps you'd still have something interesting for the player to experiment with. Sometimes your best ideas won't make it into the game because of unexpected problems.

- Consider using the space reserved for flags if you need extra RAM. You probably will. You're going to have to store this stuff in the save file too, don't forget that, so your previous saved games will become incompatible with your hack.

Start by the basics and see if you can add more to it. Good luck - it's a stiff hack, frankly.
 
Nov 7, 2006 at 9:47 PM
Senior Member
"Master using it, and you can have this!"
Join Date: Oct 18, 2006
Location: Preston England (w00t)
Posts: 73
Age: 32
Hmm... Know any good sites where I can learn assembly?

-by ROM, do you mean where it has all those 000000 bits, if so is that freed up when I delete maps? I delete all of them when I start a game from scratch.

-The EXP table is the same for each weapon (Except for Alucard, he gets a double length EXP table :() so would I just need two tables, give them an ID and use it as [XPTblID][WpnID][Level] for it, so if I used Richard, and he had the Blade level 5 it would be Richard[Blade][5] or something like that?

-Id probably start off with attempting to remove the EXP drop, then adding another 3, then another 3. That would give me 9 levels, 3 levels till the gun bullet changes.

-Where exactly is the existing weapon code, and which Hex editor is best for the job. I use Hexplorer but I think something else might be better.

Thx
 
Top