News:

11 March 2016 - Forum Rules

Main Menu

JRPGs: DoubleXP/DoubleGold

Started by Psyklax, November 29, 2017, 04:45:56 PM

Previous topic - Next topic

Psyklax

NOTE FOR NEWCOMERS: I've renamed my thread due to changing the goals of my project: now I'm doubling XP and Gold received, rather than making level upgrades and buyable items cheaper. Now enjoy my unchanged original post. ;)

I like a lot of things about JRPGs, but you know what I really can't stand?

Grinding.

I wanna go on an adventure, see cool places, fight cool baddies, but do I have to fight fifty of the same low-level baddies before I can enter the next dungeon? JPRGs are notorious for this, and I hate it. It's not difficult, it adds nothing to the experience, it just makes you waste hours of your life. Check out that guy who reached level 99 in Final Fantasy VII without leaving the first room. Sure, it took him a year or two, but it's not difficult!

Anyway, being a ROM hacker, I decided to do something about it, and set to work hacking some better-known JRPGs so that you only need HALF the normal experience points to go to each level. The procedure is usually pretty simple: it's typical to find a table in the ROM with the points values of each level, and once you've found it (GameFAQs does help with this), it's just a matter of copying it into a spreadsheet, halving it, and putting it back again.

A more difficult hack is to change it so that you only need half the gold/money to buy everything in the game: if you reach level 20 in half the time, you may have half the money, and still need to go grinding for it. Generally you don't find a big table with every single buyable thing, so I'll generally only do this if it's a) doable, and b) necessary for balance.

I'll put a zip file with my current work so far at the bottom of this post, but here's what I've successfully done up to this point:

Final Fantasy (NES) - HalfXP. Just to be sure, I completed the whole game with my patch already, using the easiest (and most boring) combo of three Fighters and a Red Mage. I've completed FF1 a good few times, and I didn't notice it becoming too easy - though I certainly didn't feel the need to grind at any point.

Final Fantasy 3 (NES) - HalfXP. Not tested but it works.

Dragon Warrior (NES) - HalfXP & HalfGold. I'm in the middle of testing this. It was easy to halve the gold for buyable items because there's so few, and they're actually in a big table, though the cost of inns remains the same. I needed to make the change, though, because both XP and Gold are seriously stingy in this game, meaning a LOT of grinding is required.

Dragon Warrior 2 (NES) - HalfXP. Not tested but it works (I think). I found the XP table anyway, all three characters' tables are together in the ROM.

Phantasy Star (SMS) - HalfXP. Briefly tested (I've completed the game in the past). This game is brutal to you at the start - you can easily die from your very first battle - so although it lightens up as the game progresses, I think it will benefit from this change.

That's all so far, and in the zip file you'll find IPS files for all of those. Phantasy Star and DW1 have two patches: the former has a patch for the popular Japanese translation by SMS Power - just patch it on top of that. The latter has both HalfXP and HalfXP+HalfGold. I recommend the second option.

I've tried Dragon Warrior 3, but the system it uses is a bit strange: it's not immediately obvious where the game gets its XP lookup from. I've not even attempted Final Fantasy 2 because of its bizarre levelling system (select, cancel, select, cancel...), but I'm open to suggestions of how to fix it (unless someone has already 'fixed' it somehow).

No 16-bit JRPGs as of yet, of course, but you have to start somewhere, so naturally I started where I'm most comfortable, the NES. Anyone who knows me by now is aware I have a habit of getting into projects involving multiple games, then getting distracted by other things and drifting off... :D

Suggestions? Any games you'd really like to play but are put off by the XP system? Specifically this is for games that clearly have too much grinding, rather than just plain cheating. I might have a look at Phantasy Star 2 for my first 16-bit game (I played it quite far through in the past, but wouldn't mind going back to it with less grinding).

Here's the zip! :)
http://s346165667.websitehome.co.uk/psyktrans/halfxp.zip

KingMike

Well to be honest grinding was like 95% of the gameplay in DQ1. :D
I do wonder how fast you could actually finish the game if you took out the grinding.
"My watch says 30 chickens" Google, 2018

ultimaweapon

I can actually name quite a few games that can benefit from less grinding if you're up to the challenge of creating a patch for them.

Legend of Legaia
Final Fantasy 7
Final Fantasy 8
Final Fantasy 10
Xenosaga 1
Xenosaga 2
Xenosaga 3
Tales Of Symphonia
Shining Force 3
Chrono Trigger
Chrono Cross
Dragon Quest 8
Skies Of Arcadia Legends


I'm at work and I'm tired, so that's all I can think about off the top of my head.
Trust in the Heart of the Cards

Psyklax

Quote from: KingMike on November 29, 2017, 07:47:00 PM
Well to be honest grinding was like 95% of the gameplay in DQ1. :D
I do wonder how fast you could actually finish the game if you took out the grinding.

I noticed. :D I don't mind doing a few random encounters to build yourself up, but there's a limit to my patience.

Speaking of DQ1 (or DW1 technically) I've found something I missed first time: magic keys still cost the same in my HalfGold version, so I've fixed it now. I actually had to go to Rimuldar to discover this. Maybe while I'm at it I can fix the inns so they're half gold too...

Bregalad

Quote from: Psyklax on November 29, 2017, 04:45:56 PM
I like a lot of things about JRPGs, but you know what I really can't stand?

Grinding.

I wanna go on an adventure, see cool places, fight cool baddies, but do I have to fight fifty of the same low-level baddies before I can enter the next dungeon? JPRGs are notorious for this, and I hate it. It's not difficult, it adds nothing to the experience, it just makes you waste hours of your life. Check out that guy who reached level 99 in Final Fantasy VII without leaving the first room. Sure, it took him a year or two, but it's not difficult
Man I'm with you 100%. I loathe grinding. I'll love your patches, however for some of them if it could be less than half it'd be better. Typically Dragon Quest games, especially the first, it should probably be 1/10th or something like that. Even if they're half grinding they'd sill be horrendously grindy.

mziab

This seems like a pretty fun and useful idea. I used to honestly enjoy grinding for EXP back in the day when I first started playing jRPGs. However, with free time being a more elusive commodity due to work, I have far less patience for fighting the same groups of enemies over and over again. I mean, I can tolerate a high encounter rate, so as long as the battles themselves are quick and painless or there is some kind of auto-battle option. When random encounters are frequent AND long, this is when I tend to lose interest.

Off the top of my head I can say that Final Fantasy IV DS was a real slog to play through for this reason, making me drop it halfway through. It seems that the DS port had all enemy HP stats increased to make the game more challenging and therefore longer, so that it's a better bang for your buck. This in itself wouldn't be so bad, but battles are gratingly slow, with long and unskippable attack animations. I have played the GBA port for comparison and similar battles took much quicker to complete, by a factor of two at least. So if DS games are up your alley, a patch for that port of FF4 would be appreciated.

Lastly, here's some food for thought. There is an inverse method of achieving what you set about to do: instead of halving values in experience and price tables, you could double the experience and gold enemies drop, which should amount to pretty much the same in most circumstances, except maybe when you earn money/EXP outside of battles, but that's a pretty rare occurrence. And actually, depending on how the routines are written, this could be done with a trivial asm hack which shifts the value left after look-up, not requiring manual edits to any tables whatsoever.

cospefogo

I share the same feeling!
Fantastic ideas here.

I will be around following the topic.
Specially interested on Phantasy Star I patch...

Regards!
Cospefogo.
"Replicants are like any other machine - they're either a benefit or a hazard.
If they're a benefit, it's not my problem."

ArkthePieKing

To add another to the list, the first BoF could really stand to benefit from this as well. The 2nd one too is EXTREMELY grindy, even on the GBA version where they doubled the XP/money gains, you're looking at about 30-ish random battles to buy the first weapons. Man this makes me wonder what other games could benefit from these changes. I'mma stew on this at work.

Psyklax

Well, I'm pleased to have generated some interest! :)

Quote from: mziab on November 30, 2017, 04:39:01 AM
depending on how the routines are written, this could be done with a trivial asm hack which shifts the value left after look-up, not requiring manual edits to any tables whatsoever.

This was one of my first thoughts on the subject, just do an arithmetic shift in one byte, but I wasn't sure where to find such routines, and the method could differ from game to game quite a bit. XP tables, on the other hand, seem pretty consistent: all the games I've completed had them laid out like that. I could take the method over to 16-bit games too, since it doesn't require me to get familiar with ASM for other systems. Also a shift may take one byte, but on 8-bit games you're going to have to put that routine somewhere, and also check that it doesn't have undesired effects. At least with editing tables, I know that it will only affect that and nothing else. Low tech, but effective.

It's occurring to me that there may be many more candidates for this on later handhelds like the GBA and DS, whereas the NES has precious few aside from FF and DW (which I've mostly covered already). The Famicom probably has a few that are fan translated though. I have no experience with 32-bit hacking, or the GBA, but I can have a go since as I said, ASM is not really essential except to find out where the game gets the numbers from.

Spooniest

The key in all you're doing is, how much damage is the player capable of putting out at any given time?

See, increasing the XP gain to the absolute maximum doesn't make a whole lot of difference in certain parts of Phantasy Star II. When you're fighting robots, it's better to use fixed-damage weapons like Laser Guns or Acid Shots, because their armor is too thick for normal weapons like Swords or Slashers. Increasing your level won't help here.

To defeat an enemy, you must reduce its HP to zero. We all learned this the first time we played a Jrpg. So, then, if you want to change the difficulty level of the game, focus not on xp or gold alone, but also HOW MUCH DAMAGE IN HP your player can do at any given moment. :) This PSA was brought to you by the Spoony Bards for Quality Questing Coalition, or SBQQC. When I figure out how to pronounce it, I'll tell you.
Yamero~~!

Psyklax

Quote from: Spooniest on November 30, 2017, 03:39:37 PM
difficulty level of the game

I'm not interested in the difficulty. I'm interested in the excessive time spent grinding for XP and money. If you need certain weapons for certain enemies, fine, that's how it was designed, but can I cut out thirty minutes of tedious grinding to get that weapon? That's what I'm interested in. I don't see it as cheating, the same way using save states to stop playing when you get off the bus isn't cheating. It's just time saving.

By the way, now I remember why I didn't do arithmetic shifts: it's more difficult than it seems. On a 6502, what if the number is larger than 256? FF3 has XP levels in the millions. You'd get a carry, which requires more code, and more testing. So yeah, easier to find the table and manually change it, since HxD plus OpenOffice Calc plus TextPad gets it done in two minutes (once you've found the table).

ThegreatBen

I drastically reduced the exp in my Breath of Fire I hack, it was all done in a hex editor, but the numbers exceeding 255 are just a 2 byte hex number, not really any different at all.

Psyklax

Quote from: ThegreatBen on December 01, 2017, 06:46:28 PM
I drastically reduced the exp in my Breath of Fire I hack, it was all done in a hex editor, but the numbers exceeding 255 are just a 2 byte hex number, not really any different at all.

Sure, but an 8 bit CPU can't deal with 16 bit numbers, hence why they're called 8 bit. They have to be done separately. It's fine to edit a table, but doing ASM hacks will be more involved.

KingMike

Isn't a 2-byte right-shift on 6502 like

LSR $BigByte
ROR $SmallByte

(or for three bytes: an LSR on the high byte and ROR on the middle then lowest ones)
That LSR shifts down the highest byte, dropping the lowest bit into the C flag, which the ROR then rotates into the highest bit while shifting out the lowest bit.

If a game is reading the EXP required to level-up (either the total needed or the total remaining) and storing it to another variable, then that would be easy.
Maybe a little more difficult is a game is comparing after gaining EXP (comparing current needed to the next level requirement).
"My watch says 30 chickens" Google, 2018

Psyklax

#14
Okay, I scratched my head for a long while but just couldn't find any kind of experience table in Dragon Warrior 3 and 4. In both cases, the number to add to check for the next level came from zero page, and finding where something came from in there is a nightmare, plus there seems to be a few mathematical operations going on.

So a took a note from what KingMike said and went the opposite route: double your XP and Gold after a battle. It was much easier: I just found a point where the added XP and Gold was sent to zero page, and made two new routines that do an ASL, one for XP and another for Gold. So now you earn double XP from each fight, and double gold, though of course any gold you find in a chest is going to be worth the same. Still, I don't have to go finding money values throughout the ROM (I'm 75% through DW1 and realised I missed a few prices). Maybe I'll go back to my other hacks and switch to double XP and double Gold instead? :huh:

December 03, 2017, 04:55:47 PM - (Auto Merged - Double Posts are not allowed before 7 days.)

So you guys, I've been busy. :D I know it's a doublepost so people will probably miss this update, but here it is. ;)

I decided to go back to all the games and go the opposite route from now on: giving double XP and (optionally) double Gold during battles, instead of halving level and item costs. I've only done it on the NES so far since I'm very familiar with hacking on that system, and this approach does require a lot more ASM familiarity.

So I've compiled a new pack with ALL FOUR Dragon Warrior games, plus Final Fantasy 1 and 3, all of which come in both DoubleXP and DoubleXP+DoubleGold varieties. I couldn't figure out how else to do the latter two DW games, so I'm glad I got it done this way. Besides, I think overall it makes more sense: now you can follow guides while knowing the level tables and item costs are correct, and the hacks are supposed to reduce grinding, so it makes sense to give a boost to your battles rather than just doing price deflation.

If you want brief details on how I did it, look here:
Spoiler
I had to work backwards as usual: see which instruction adds to your XP/Gold, and follow the path to where that number came from originally. Then I found the point when the final total for each battle is written to RAM, and inserted a subroutine which would do ASL and ROL instructions on the total, and let the game handle it from then on. Simple, really, but it takes quite a bit of debugging and tracing to find the exact point in the code and the exact RAM address that I can use.
[close]

Also in the pack is what I call Final Fantasy II - Lazy Version. :) FF2 has a messed up level system that was never used again, so you gain HP, MP and weapon/magic skill by using your weapons/magic, or getting hit (for HP). Alas, there's a bug in the programming meaning when you select an attack, it counts to your total, even if you cancel and do it again. Do it 100 times and you go up a level. Get hurt enough and you get more total HP. Use enough magic and you get more total MP.

All of this is possible to do without hacking, but selecting and cancelling 100 times PER CHARACTER, PER FIGHT, as well as hitting yourself to get more HP, is the kind of chore that my project was tasked with eliminating, so I've basically fixed it so that you always get a weapon/magic skill upgrade, even if you use it once; you always get an HP increase (I should've made it so you actually have to get hit first, but whatever); and you always get an MP increase when you use magic. All things you can do without hacking, so why not just play with the hard work cut out? ;)

Yes, there's a hack in the database that gives you maximum stats from the beginning, but that's something else. I don't see this as 'cheating' necessarily: the bug is in the game, and since my project is to reduce grinding, this seems like a sensible idea, while still keeping the game playable.

More details here:
Spoiler
For weapon/magic skills, I just replace the command to increase your counter with a command to insert '100' every time, so as long as you use your skill, it'll upgrade. For MP and HP upgrades, I just found the point where the game checks if you've lost enough MP/HP, and said "don't bother checking, just do it", though at least with the magic you have to actually use it first).
[close]

So that's all for now, onto Phantasy Star, which will be a challenge given that I'm not so familiar with the Z80... but hey, I like a challenge. ;)

Enjoy the pack!
http://s346165667.websitehome.co.uk/psyktrans/doublexp.zip

EDIT: I've just done Phantasy Star, too! :) Link updated. Gotta hand it to the Z80, those registers do make it quite flexible.

FlamePurge

do you think phantasy star's patch would work with the english retranslation or the non-english versions of the game?
Check out and discuss my projects

Psyklax

Quote from: vivify93 on December 03, 2017, 07:44:22 PM
do you think phantasy star's patch would work with the english retranslation or the non-english versions of the game?

I did it late last night and haven't had a chance to check. It SHOULD work, but I have to make sure the code in all versions if correctly aligned. I'll look later and edit this post with my findings.

cospefogo

Quote from: vivify93 on December 03, 2017, 07:44:22 PM
do you think phantasy star's patch would work with the english retranslation or the non-english versions of the game?

Well, I tried the patch on that WONDERFUL English RE-Translation and it seems to work fine. I haven't played extensively yet... But I will soon, and let you know if some bug occurs.

C.
"Replicants are like any other machine - they're either a benefit or a hazard.
If they're a benefit, it's not my problem."

Psyklax

#18
Quote from: cospefogo on December 04, 2017, 07:52:18 AM
Well, I tried the patch on that WONDERFUL English RE-Translation and it seems to work fine. I haven't played extensively yet... But I will soon, and let you know if some bug occurs.

Uh, I just checked and no, it will not work. :) It only changes a few bytes, you see, so although it may SEEM like it works at first, at some point the three bytes changed in the main code will cause a problem. I need to do a new patch for the translation, since it's based on the Japanese version. On the other hand, my patches for Japanese games like FF2 and FF3 MAY work on translations, unless they've made significant changes. I'll get to them soon.

In the meantime, I started playing DW2 and realised something was wrong. Turns out my two changes for XP and Gold were doing things at the wrong time: with XP it only would double if you had more than one enemy, and Gold was doubled before the final total had been calculated. I've made a new version which works perfectly, and I've included it in the zip file I already shared. In case you missed the link:
http://s346165667.websitehome.co.uk/psyktrans/doublexp.zip

EDIT: oh woe is me, I've made a patch for the Phantasy Star translation for DoubleXP, but I can't get it with DoubleGold too! :( Due to the way the ROMs are used, at the moment the Gold amount is necessary to change, the parts of the ROM loaded into memory have almost no free space at all, unlike the US version which has a large chunk of empty space. Therefore, I have nowhere to put both of my simple doubling routines. One more byte and I might have it... And there are places where I could put the routine, but I can't be sure that that isn't used for something important but just looks empty. This could be tricky.

cospefogo

Quote from: Psyklax on December 04, 2017, 10:06:48 AM
Uh, I just checked and no, it will not work. :) It only changes a few bytes, you see, so although it may SEEM like it works at first, at some point the three bytes changed in the main code will cause a problem. I need to do a new patch for the translation, since it's based on the Japanese version.

Oh... I see.
Thanks for the info.

Yesterday I just tried some battles outside the main town and the game did not break... So I assumed it was working. Well... crossed fingers for a working patch, Psyklax!

Thank you so much for your works on the matter!

C.
"Replicants are like any other machine - they're either a benefit or a hazard.
If they're a benefit, it's not my problem."