praetarius5018

Modder
  • Content count

    1040
  • Joined

  • Last visited

  • Days Won

    30

Posts posted by praetarius5018


  1. how Angela could look next time:

    base:        8/8/8/12/11/10
    spell list:
    Fireball (7 INT), Diamond Missile (9 INT), Airblast (11 INT), Ice Smash (12 INT)

    Sorceress:    14/14/14/17/17/16
    spell list:
    Airblast* (13 INT), Ice Smash* (14 INT), Fireball* (15 INT), Diamond Missile* (16 INT)
    Evil Gate (12 PIE), Holy Ball (14 PIE)

    Delvar:        13/13/14/18/16/15
    spell list:
    Thunderstorm (13 INT, replaces Airblast), Mega Splash (14 INT, replaces Ice Smash)
    Explode (15 INT, replaces Fireball), Earth Quake (16 INT, replaces Diamond Missile)

    Grand Divina:    30/29/28/32/32/30
    spell list:
    Fireball*, Diamond Missile*, Airblast*, Ice Smash*
    Holy Ball* (18 PIE), Tinkle Rain (20 PIE), Heal Light (21 PIE)
    Speed Up (17 LUCK), Evil Gate* (18 LUCK), Sleep Flower (20 LUCK)
    Transshape (18 INT), Double Spell* (20 INT)

    Arch Mage:    29/30/29/31/31/31
    spell list:
    Earth Quake* (18 INT, replaces Diamond Missile), Thunderstorm* (19 INT, replaces Airblast)
    Mega Splash* (20 INT, replaces Ice Smash), Explode* (21 INT, replaces Fireball)
    Saint Beam* (19 PIE, replaces Holy Ball), Dark Force* (20 PIE, replaces Evil Gate), Mind Down (22 PIE)
    Body Change (17 LUCK), Aura Wave (19 LUCK)
    Power Down (15 AGL), Anti-Magic (17 AGL), Rainbow Dust* (20 AGL)

    Rune Master:    28/28/30/32/30/30
    spell list:
    Thunderstorm* (15 AGL), Stun Wind (18 AGL), Thunder Saber* (21 AGL)
    Earth Quake* (16 LUCK), Diamond Saber* (19 LUCK), Stone Cloud (22 LUCK)
    Mega Splash* (17 PIE), Ice Saber* (20 PIE), Cold Blaze (23 PIE)
    Explode* (19 INT), Blaze Wall (22 INT), Flame Saber* (25 INT)

    Magus:        29/29/29/33/29/29
    spell list:
    Earth Quake* (19 INT), Thunderstorm* (20 INT), Mega Splash* (21 INT), Explode* (22 INT), Rainbow Dust* (24 INT)
    Dark Force* (17 PIE), Lunatic (18 PIE), Death Spell (20 PIE)
    Power Up (16 LUCK), Mind Up^ (18 LUCK), Poison Bubble (20 LUCK), Ancient* (22 LUCK)

     

    All classes have potentially 12 spells but can only keep 10.
    If for some reason you have already 10 spells and the next would be an upgrade/replacement - tough luck.
    Once the 10th slot is filled that spell learning is finished.


  2. 8 hours ago, hmsong said:

    Btw, is there a way to reduce the amount Aura Wave is giving to the Tech bar?  It fills 9 bars, but I much prefer it do less (7 if fixed, 6 if not).  I tried to reduce D19C4C, but it's not having any effect (it still fills the bar all the way).  Is there some "quick fix" to do that for vanilla?  Or any other way to reduce the OP-ness of Aura Wave (while still having something to do with the tech bar).

    There is a way.
    The code is at D0/E586, after the homework above you should be able to figure it out.
    The vanilla code just loads the current maxTP and shoves it into both currentTP values.
    Don't ask me why it needs 2 TP values, at some points it checks one, at other points the other.

    24 minutes ago, shiliwei said:

    10DC1D:2C 01          10DC22:2C 01   magic def (elements)

    10DC43:2C 01          10DC48:2C 01 magic def (lihgt and dark?)not sure

    One is the (INT based) m.def for INT based spells, the other is the hidden (PIEbased) m.def for PIE based spells.

    Also all of these are imcomplete. The cap value is there twice, once for the value it checks against and once for the value it then loads as the final value.
    With what you've given you could only create stat spikes, like if def > 150 def = 300; but not the intended if def > 150 def = 150.


  3. 10 minutes ago, shiliwei said:

    "low chance to deny enemy counter attack, +2 TP on evade " armor special. character wear it, can't use tech after player over 9 TP. it happened so many times to me.

    Please be more precise.
    If I have 8 TP, dodge to trigger the effect I can still use L3 tech afterwards.

    10 minutes ago, shiliwei said:

    and can you explain "heal hurts" pls?  

    Exactly what it says, getting healed hurts instead.


  4. 21 minutes ago, smileless said:

    Them too but I specifically think Dark Lord's did the most damage with their level 3 techs or am I wrong?

    That is mostly a matter of mob attack power and therefor level. And the difference at the same level isn't that huge in vanilla.
    I guess Dark Lords usually appear the latest so would automatically have the highest attack.
    Or rather the 10% increase from their usual dark saber puts them over the edge big time.

    L3 in vanilla take the attack power of the user, multiply it by 2.5 and only then subtract your def. Def is capped at 300 even with buff. So even if the mob had a measly 250 attack that would be a guaranteed 325 damage at maxed def, half the cast doesn't clear 600 maxHP at sane endgame levels.
    I think the highest dark lords have around 340 base attack, i.e. "you die" damage (340x1.1x2.5 = 935 before def).


  5. 1 minute ago, rpschamp said:

    This all sounds good to me; great new item. The ring could be set to teach Regeneration AT 6 INT, when you have enough MP to cast it, just like a stat requirement for a normal spell. Then there wouldn't be any weirdness; i.e. knowing a spell you can't cast.

    Nah, you should get the spell immediatly so you can see how much MP you should have and can adjust your stat gains if necessary.


  6. Yeah, it'll be expanded to a nearly vanilla like set, I've basically ideas for all everything except a weapon since I don't want to mark weapons as "cursed".

    • armor: cursed, 2x power up buff effect on standard attacks, increased aggro build up
    • helm: cursed, x1.3 p.def, 0 defense vs Lv2/3 techs
    • ring1: cursed, deny elements
    • ring2: cursed, can't crit or be critted, same for evade
    • set bonus: 1/4 cast time

  7. 4 hours ago, smileless said:

    Ah the old days where the Dark Lord's were able to one/two shot your entire party with their level 3 techs whenever they felt like.

    And nightblades. And bloody wolves.

    3 hours ago, rpschamp said:

    So the same effect as the Byzel remove weakness armor? Or do you plan to change that one?

    Will be the same. The current byzel armor only removes one weakness, that will be changed.

    3 hours ago, rpschamp said:

    A chibikko/moogle/silence resist helm would be useful.

    Half the resistances are on the helm, the other half will be on one armor; snowman will be irresistable.

    3 hours ago, rpschamp said:

    I wonder if there are actually players who would want to go back to this.... Joking aside, I could see this potentially being useful on a Star Lancer team.

    I mean we already have a cursed ring that removes weaknesses and resistances, so one step further to a vanilla-like-set can't hurt :D

    3 hours ago, rpschamp said:

    One option for the Regeneration spell is to have it do either HP/time OR targeted HP recovery, depending on when it is cast

    I went with it granting the same effect as the regeneration ring which gets doubled effect but no longer stacks.


  8. plans for helms:

    • the 2 "remove weakness" helms get merged into one (beryl helm)
    • leather helm (mixed def) becomes pure p.def
    • visored helm (pure p.def) gets status resistance to chibikko/moogle, silence
    • hero's crown (status resist) becomes cursed and prevents stop of MP regen during casting
    • protection helm (2nd remove weakness) becomes cursed with x1.3 p.def but 0 def against Lv2/3 techs for the true vanilla like experience

  9. 40 minutes ago, rpschamp said:

    This looks good. But did you consider a HP recovery over time effect? It might be nice to distinguish it more from Heal Light, and also as an early introduction to the upkeep system.

    I'm not sure I can find a HP/s value at this point that wouldn't royally break the game.
    This would stack with the HP regen ring and Sage's weapon which together already maxes at 20/s (well, "second"). So that can easily recover 100~200 HP between boss attacks, do you take that much after buffs? Is even more easy regen really needed?

    I have to take care that that value doesn't reach "afk mode".

    edit: 25/s, the rings stack


  10. L50, 13 PIE, no heal bonuses:
    regeneration - 115 MT, 143 ST
    heal light - 168 MT, 210 ST

    L50, 13 PIE, wendel armor:
    regeneration - 138 MT, 172 ST
    heal light - 191 MT, 238 ST

    regeneration 8 MP, heal light 10 mp, regeneration casts a bit faster.

    Old Heal Light was 9 MP and healed w/out that armor 140 MT, 175 ST or 166 MT, 207 ST with.

    I guess this could work.


  11. And that exactly is where it gets interesting.
    Is it unused? Is it a black square of a graphic? Placeholder mob data?

    Whether unused space is FF, 00, EA, or something else is different for each game.
    Might even be different within the same game.

    For a quick check I'd look at the last few bytes if they can be return codes for routines.
    The most sane options for routine enders are:
    6B - rtl, return for a routine usually called from a different bank (chuck of xx0000-xx7FFF or xx8000-xxFFFF), basically a public function in programming terms
    60 - rts, return for a function that must live in the same bank, basically a private function
    4C yy xx - jmp, goto xxyy in same bank
    5C zz yy xx - jmp, goto xxyyzz for any location

    Lets ignore the madness that would be function calls that rip out the return value from the stack and replace the return location..

    1. 105720 - the preceding bytes have neither of those options, could actually be legit data.
    2. 10B5E0 - might be usable, the last bytes before ff look like usual SD3 code
    3. 112860 - same as the first

    Personally I'd prefer the end of 13Fxxx.
    D3/xxxx is where a majority of the compressed AI code lives and FFs to that amount is not a useful operation.

    So wanna do this?
    Don't say I didn't warn you, I'm not a teacher.

    First of, this is your bible. It tells you what hexcodes are what real operation.

    Second, you need an emulator with debugging abilities, I use Snes9X v1.51.ep10r1 - Geiger's Snes9x Debugger.
    Srm save files are compatible between emulators so you should at least transfer your savefile so you have some save games to work with. Preferably at least a post godbeast save so you have enough techs/spells and can quickly check every shop and whatever else you may need.

    Third, grab a list with cheats, this helps finding the relevant code areas faster and if the list is good it already has the ids for items or spells you may need at some point.

    Important stuff to know:

    1. if the M flag is on (big M) operations related to the value in A only use 8 bit mode, if it is off (small m) 16 bit. SEP 20 turns it on and REP 20 off. This also affects the lengths of some instructions since the extra 8 bits need to be written as well.
    2. you usually want to end your modification with the same CPU flags as you started (any SEP undone via REP and vice verca)
    3. everything you add to the stack (e.g. PHA) should be removed again before you end your modification (e.g. PLA)
    4. avoid crossing bank borders (never go past a xxFFFF)

    D0/CACA is where the crit rate is loaded. Put an execution breakpoint there in the debugger and then try to hit something. Try step into a few times to see what happens next.

     

    Overwrite the 4 bytes at D0/CACA in the rom with 22 zz yy xx where xxyyzz (watch snes writing and order!) is the location where you place your code.

    And the location with free space you want the byte equvalent of:
    LDY #$00E2 //offset for crit rate, note that the offsets for attacker and target are different because SD3...
    LDA ($2A),y //loads the crit rate in this case; $2A is in the pointer to the attacker
    AND #$00FF (crit rate is 8 bit but the mode is 16 bit so we need to cut off the excessive bits)
    LDY #$00F3 //this was the result of Y in the section we overwrote and it may be used later
    RTL //return to where we came from

    so:

    Spoiler

    A0 E2 00 B1 2A 29 FF 00 A0 F3 00 6B

    You could do this conversion autoamtically with something like xkas but I think it is better to do this a few times manually to better understand what is going on.

    If you now reload the rom and try to hit something again it should give you a non-0 crit rate.

    Run the same breakpoint as before and continue until the game wants to call code from C00620 this is an RNG function in SD3 and the value in A holds the range that the result should be in.
    With that you should've seen where the value for A came from and can modify it to adjust the range as you want.

    Last the crit damage.
    Run the breakpoint again up to the RNG call and step over it.
    It should be followed by a CMP $1A BCS $18, $1A holds our crit rate.
    Now depending on the result the code will either branch forward $18 bytes or not.
    If it doesn't jump forward that many bytes it is a critical hit.
    Note how the result of the RNG call must be equal or smaller than our crit rate.
    The modification to the damage (specifically attack power before defense) is handled like this:
    LDA $1C 
    LSR A (divide A by 2)
    CLC (clear carry/overflow)
    ADC $1C
    STA $1C

    $1C hold the current attack power (you can see that if you follow the code a long while backwards). Now we can replace the CLC with another LSR A.
    This would change the bonus from 50% to 25% but add the chance for an off-by-1 error because we no longer remove the carry flag which means it may add another +1 at the ADC $1C step if that flag was set.
    Since damage has a range anyway and +1 is near nothing I see no need here to create another call to currently unused space and creating a routine there.

     

    Now time for homework:
    change
    D0/C97A 0C to 0A
    D0/D83B 03 to 05
    and
    D/0C983
    85 1A B0 03 A9 00 00 D0 01 1A to
    B0 03 A9 00 00 4A EA 1A 85 1A

    What have I done?
    Hint: breakpoint a few bytes before each and try with and without the most OP buff.


  12. 16 minutes ago, rpschamp said:

    By the way, is there such a thing as negative aggro? As in, gtf away from me?

    Not in the way I've coded it.
    Basically the AI had 2 options:

    1. it checks who is closer, in those cases I simply cut the calculated distance in half
    2. it selects a random target (mostly single target spells), here I simply give prio to a shield bearer

    for 1. I could do double, but 2.?
    Also I always find that form of aggro management stupid, I can believe it if a big guy just rubs himself into a bosses face to gain/keep aggro or basically taking his entire field of vision by shoving a shield into it.
    But why would wearing a little ring make me "invisible" to him when he has already buried his claws into my flesh?


  13. 10 minutes ago, rpschamp said:

    This might also be a good place for your superarmor/strong-attack weapon.

    Superarmor already goes on the Bastard Sword.

    11 minutes ago, rpschamp said:

    Maybe a shield/aggro alternative that all characters could access later in the game?

    I don't see why any of the other 4 would need this, at least thematically.