Skeetendo

’Cause all games were better on the GBC

You are not logged in.

  • Index
  • → Generation I
  • → Game Difficulty in Gen 1 and Turning off Stat Experience

#1 2014-10-30 17:46:59

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 43/76

Game Difficulty in Gen 1 and Turning off Stat Experience

Before I realized that it was possible to turn off the Stat Experience with the getstat hex editor, I made a harder hack of Pokemon Blue, that made some enormous level jumps to compensate just for the ever increasing Stat EXP. Of course, due to psychological aspects, people tend to level grind even more to reach the levels, or far surpass them in nuzlockes, which does detract from gameplay, and adds even more stat exp.

Realizing this issue (which kills the difficulty of any pokemon game), for a while I didn't make a 2nd gen kaizo hack, until Fireburn (who ironically enough, was the very first person to successfully nuzlocke Blue Kaizo) asked about a way to turn off Stat Experience, which got my attention.

When that question was answered, i became fully inspired to make Crystal Kaizo as my last hack, as well as maintain a consistent level curve, keeping levels between wilds, trainers, and bosses close together, even within teams (apart from some joke battles). Though it would be nice to do the same with Blue Kaizo, or, by extension, any other first gen hack, by turning off Stat EXP with hex. (of course, to make first gen of all gens, remotely difficult, enormous movepool editing is required, coming from firsthand hacking and playtesting experience)

Now to propose the question: Where would be the GetStat offset be in the hex editor for Red, Blue, and Yellow? Would replacing the two bytes with "16 00" work the same way as it did in the second gen games?


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

#2 2014-10-31 05:18:09

comet
Member
Registered: 2012-04-09
Post 489/679

Re: Game Difficulty in Gen 1 and Turning off Stat Experience

SinisterHoodedFigure wrote:

Would replacing the two bytes with "16 00" work the same way as it did in the second gen games?

????

You can either change CalcStat to never factor in stat exp or change GainExperience so nothing gains stat exp in the first place. The latter is better.

Just remove this part:

ld de, (wPartyMon1HPExp + 1) - (wPartyMon1HP + 1)
    add hl, de
    ld d, h
    ld e, l
    ld hl, wEnemyMonBaseStats
    ld c, $5
.gainStatExpLoop
    ld a, [hli]
    ld b, a ; enemy mon base stat
    ld a, [de] ; stat exp
    add b ; add enemy mon base state to stat exp
    ld [de], a
    jr nc, .nextBaseStat
; if there was a carry, increment the upper byte
    dec de
    ld a, [de]
    inc a
    jr z, .maxStatExp ; jump if the value overflowed
    ld [de], a
    inc de
    jr .nextBaseStat
.maxStatExp ; if the upper byte also overflowed, then we have hit the max stat exp
    ld a, $ff
    ld [de], a
    inc de
    ld [de], a
.nextBaseStat
    dec c
    jr z, .asm_552a1
    inc de
    inc de
    jr .gainStatExpLoop

Offline

#3 2014-12-18 16:20:59

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 44/76

Re: Game Difficulty in Gen 1 and Turning off Stat Experience

comet wrote:
SinisterHoodedFigure wrote:

Would replacing the two bytes with "16 00" work the same way as it did in the second gen games?

????

You can either change CalcStat to never factor in stat exp or change GainExperience so nothing gains stat exp in the first place. The latter is better.

Just remove this part:

ld de, (wPartyMon1HPExp + 1) - (wPartyMon1HP + 1)
    add hl, de
    ld d, h
    ld e, l
    ld hl, wEnemyMonBaseStats
    ld c, $5
.gainStatExpLoop
    ld a, [hli]
    ld b, a ; enemy mon base stat
    ld a, [de] ; stat exp
    add b ; add enemy mon base state to stat exp
    ld [de], a
    jr nc, .nextBaseStat
; if there was a carry, increment the upper byte
    dec de
    ld a, [de]
    inc a
    jr z, .maxStatExp ; jump if the value overflowed
    ld [de], a
    inc de
    jr .nextBaseStat
.maxStatExp ; if the upper byte also overflowed, then we have hit the max stat exp
    ld a, $ff
    ld [de], a
    inc de
    ld [de], a
.nextBaseStat
    dec c
    jr z, .asm_552a1
    inc de
    inc de
    jr .gainStatExpLoop

So using a hex editor (I have goldfinger), how would I be able to remove the equation. Could I simply replace the hex values that start this with 00? Or do I have to do something else?

And the offset to do so is before 552a1 right? I changed 18 E4 to 18 00. (Edit: that didn't work, funny thing it did was it got my jolteon boosted exp, raised it to lv 192, changed its moveset, and turned my snorlax into a mr. mime with high hp).

I really, really got to know how to remove or disable (disabling seems to be the ideal idea) the Stat experience of the game.

(EDIT #2) Okay, I'm using a GB asm editor right now, I found the offset of the part I have to remove. 15:527a, and with the hex editor, I plan to change 11 10 to 11 00.

(Edit #3) Doing this did a bunch of things, very glitchy things, but it did not disable the stat exp, I used hp up on snorlax, and it raised hp. I'm a bit stuck here.

Last edited by SinisterHoodedFigure (2014-12-18 16:59:43)


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

#4 2014-12-18 19:13:01

SinisterHoodedFigure
Member
Registered: 2011-12-09
Post 45/76

Re: Game Difficulty in Gen 1 and Turning off Stat Experience

I think the best course of action is to hijack the Statexp switch and disable it completely, just like how fireburn and me did with our crystal hacks. What happened there was that the stats of the exp boosted pokemon reset to the very lowest and basic, even with box trick, vitamins, and level up.

My goal is to replicate this effect in pokemon blue, where no matter what, it will always have no stat exp, even with vitamins, box trick, and level up, by making sure any stat exp does not affect stats under any circumstances.

I have the gb asm editor and goldfinger hex editor. I did some attempts at outright "no op" everything in the part that needs to be removed, and using one "no op" to replace the instruction that adds enemy base stats to stat exp. unfortunately, neither worked.

Is there an asm instruction that handles stat exp flag during stat calculation?

EDIT: all right, there is one thing that did work out fine. I basically "No op"'d the "add b", which actually adds enemy pokemon base stats to the stat exp, after a few playtests. With "add b", after killing certain pokemon and box tricking, jolteon gained 1 hp point. With "no op", after killing certain pokemon and then some, and box tricking, jolteon did not gain 1 hp point. It doesn't reset like it does in crystal, but its a step forward, since it does actually prevent stat exp growth in that aspect at least, without crashing the game. Going to figure out some ways to prevent vitamins from doing the same if I can, or just removing them from stores and overworlds. As well as the badgeboost that I've noticed.

Last edited by SinisterHoodedFigure (2014-12-19 04:49:33)


Crystal Kaizo...
Not the hardest hack, but probably the most... Sinister
http://www.mediafire.com/download/q3o60 … +Kaizo.ips

Offline

  • Index
  • → Generation I
  • → Game Difficulty in Gen 1 and Turning off Stat Experience

Board footer

Powered by FluxBB