øAslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=2219.60e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index579e.htmlslickproductions.org/forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&board=8.80e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index579e.html.zx %h^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ0PdÈwOKtext/htmlISO-8859-1gzip0|ÖÈwÿÿÿÿÿÿÿÿTue, 10 Mar 2020 23:55:16 GMT0ó°° ®0®P®€§²ð® %h^ÿÿÿÿÿÿÿÿ-AÈw WIP Patch: Permanent Morph bugfix

Author Topic: WIP Patch: Permanent Morph bugfix  (Read 8421 times)

Xenovant

  • Tunnel Armor
  • *
  • Posts: 154
  • (ಠ_ಠ)
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #60 on: May 11, 2016, 03:29:47 PM »
give this a whirl:
http://assassin17.brinkster.net/forum-posts/quick-gembox-try-fix1.asm

disclaimer: i really don't know what i'm doing.  very likely to have side effects.  EDIT: maybe the skippage should be confined to the final Quick turn.

I have been "playing" with $3AA0 and $3219, here
Code: [Select]
C2/0168: D0 03        BNE $016D      (Branch if this was not the last Quick turn)
C2/016A: 8D 04 34     STA $3404      (If it was, store an #$FF (empty) in Quick's target byte)

I'll try that location tonight. BTW, I have made a quick test to your code and it resets the atb gauge, but nothing else changes (nobody moves), and yes, it resets the gauge in the first quick turn too, so it should moved.  :happy:

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: WIP Patch: Permanent Morph bugfix
« Reply #61 on: May 11, 2016, 03:38:44 PM »
odd.. my limited tests didn't have the gauge reset until after the 2nd Quick turn.  can you tell me what steps you took?

Xenovant

  • Tunnel Armor
  • *
  • Posts: 154
  • (ಠ_ಠ)
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #62 on: May 11, 2016, 04:24:57 PM »
Ok... I feel retarded. I was using free space... from the C3 bank  :lame:, that's what happens when you want to test something on the last minute, you don't even see what you are doing xDD

Sorry, it only resets on the last turn, as it should. I'll test it more deeply later.

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: WIP Patch: Permanent Morph bugfix
« Reply #63 on: May 11, 2016, 04:40:22 PM »
no prob.. the more testing the better, so definitely put it through the wringer.

re your prior post: yeah, the C2/0168 and C2/01B7 areas are good suspects, too.  you might be onto something with $3219.

Xenovant

  • Tunnel Armor
  • *
  • Posts: 154
  • (ಠ_ಠ)
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #64 on: May 11, 2016, 07:16:26 PM »
At first sight, everything seems fine, no side effects, at least for now. Thanks for the fix! One bug less :P

Imzogelmo

  • Ogopogo Aficianado
  • *
  • Posts: 241
  • Gender: Male
  • Ask me about my other job.
    • View Profile
    • NEPROMR
Re: WIP Patch: Permanent Morph bugfix
« Reply #65 on: May 11, 2016, 07:45:27 PM »
Not to (further) derail the conversation, but I once tried looking at the various Quick-related bugs one time, and it never really came to anything. I'd be interested in seeing a full-blown fix for it too, so I'll be downloading this patch and seeing what I can come up with.

Anyone got some good save states?  :happy:
5/31/16 - I have an assembly of the battle portion of C2, relocated to the F0 bank, which has both vanilla and patch code in my dropbox. I'll be updating it with additional patches as I have time. I will *not* be releasing it publicly, but ask me for the link and I'll share.

Xenovant

  • Tunnel Armor
  • *
  • Posts: 154
  • (ಠ_ಠ)
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #66 on: May 11, 2016, 08:32:46 PM »
If someone is willing to make a megafix I'll gladly help if I can. I have "fixed" some bugs by myself, but they were the easy ones, so...  :happy:

Since Assassin already posted a fix for the gembox/x-magic bug (more exactly one of them), the good ones left are the "infinite turns" bug and this one:

Quote from: Assassin
Quote
#133

Summon Palidor, and have someone cast Quick before everyone could drop down; have that person use a Smoke Bomb on his first of two turns. Those in mid-air won't escape, and Quick won't be broken, which situation results in a game hang.
a test shows this bug isn't dependent on using Palidor; it also happens if I simply have one character use Jump. figured it's worth noting, given that Palidor has its own cans of worms (dicking with the action queue, toggling all sorts of flags) that normal Jump doesn't.

------------

I always use this website when I need a savestate for testing: http://fantasyanime.com/finalfantasy/ff6/ff6saves.htm


 :edit:
 Magitek is gonna kill us for the offtopic xD
« Last Edit: May 11, 2016, 08:40:18 PM by Xenovant »

magitek

  • Antlion
  • *
  • Posts: 67
  • Gender: Male
  • Juggler
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #67 on: May 11, 2016, 08:55:10 PM »
these damned bits doing more than one thing, with only one of the uses being apparent to me, is why i often hesitate to name them at all.  i'm not actually saying my way is better, since there's help in getting *something* down on paper.  but should incomplete descriptions like this get a ", and ???" appended, just to convey they're still in-progress?

That sounds like a good idea, you should add that to the wiki. I noticed some descriptions where your comments add to the understanding of the bit (you have "flag target's ATB gauge to be reset?" and the RAM map has "psyche was just cleared", for example).


Quote
Quote
CPX $3EE2 in C2/0B01

looks like you talked yourself out of it..  but to chime in, i don't favor sacrificing capability just to save a few bytes.

More like I talked myself into it, except I still can't find a way to shrink C2/09D2 enough to fit a jump to C2/0B01.

1. There's that TYA.
2. I don't think the CLC is needed either (assuming the ATB multipliers are all even).
3. ???

Ahh well. If I really wanted to make a kludgy hack, I could usurp that preceding RTS. :P
For release, I'll stick with a wrapper and conserve the LDA $3EE2 in C2/0B01.


Quote
i don't favor dropping the 2048 decrementor capping.  Square has in place an elegant system via C2/083F that can get Morph up and running if any turn * sets the status, not merely one command.  however, to have this flexibility while avoiding nonsensical decrementors, you can't lean solely on the Morph menu code's $1CF6 check; the C2/0B01 capping needs to be there.
---
yes, you can't anticipate and cater to every hypothetical hack out there when coding a patch.  but simply *maintaining* capability present in the original game isn't so much catering to them, as simply playing it safe.

I think my proposal is fairly strictly limited to the few functions already modified to create the functionality of the patch, so it creates no unexpected incompatibility. Neither should it produce any unexpected issues for users who only care about vanilla functionality. Gutting unused parts the code does make it hypothetically less robust, but not to the point of collapse under the constraints of normal gameplay.

With that being said, this is a valid point, especially in a world where it's so easy to mod the game. This is why I'm a bit gung-ho about this as long as I don't break vanilla. My idea was to provide a .ips patch that works fine within the constraints of vanilla, for people who just want to patch and play, and supplement it with an easily modifiable source file (and ample documentation) for people who want to make mods.

Quote
when did free space become THAT scarce?
If not sometime in the past ten years of bug fixes, presumably sometime not too far in the future. There are many bugs left and thrift is a virtue. :P

Quote
is it a point of pride, having a "no free space needed!" tag on one's patch?  keep in mind that optimization =/= omission.  many of the people nerdy enough to care about a patch's consumption in the first place will see willy nilly lopping off of Square code for what it is, rather than be impressed.  now, i'm not actually saying the drops are done to impress people..  rather, i think there's a tendency to see Square's byte count usage as a watermark of sorts, that we should stay below.  but given lots of their code is Swiss cheese, why?!  isn't it natural that making things work right without tossing existing functionality might require more space?  some patches lend themselves to optimizing (not omitting) around this, while others not as much.

I apologize in advance for the short novella I'm about to produce, but I have given this topic quite some thought and I feel ready to share my conclusions. You may have provoked this, Assassin, but it's not directed specifically at you, although I am grateful that your rhetorical aside gave me pause to think about this.

While I can't speak for others, it's not about prestige for me. I appreciate elegance, simplicity and readable code, that make interfacing with it just as simple. While I do find satisfaction in being able to fit things inline, that satisfaction naturally dissipates if I make a kludge of the code so as to make it less readable, more difficult for others to work with, or just downright ugly. However, there are several different, sometimes conflicting, requirements to consider when writing patches, and I am not above sacrificing elegance if needed to achieve a higher prioritized requirement, such as patch compatibility.

Free space requirements make it more difficult to maintain patch compatibility. If something can possibly fit inline, it's pretty important to make it do so, in my opinion, especially for .ips users who can't change where extra code goes. However, the more important consideration for compatibility is avoiding reaching out of scope or modifying unrelated functions, in order to avoid potential (and unexpected) code conflicts. This requirement of modular code naturally trumps free space thrift, but if it can be fulfilled, then the next order is to make the patch fit inline if possible.

Furthermore, one has to consider for which audience one is trying to ensure compatibility, and make allowances for their technical ability. The non-technical users generally only care about two things: functionality and compatibility out-of-the-box with other patches, and so I'll strive to deliver that to them first and foremost, knowing that people with more technical knowledge are able to more easily modify the code to fit their needs.
To that end, I feel if the code is only just robust enough to not fall apart under normal, vanilla, gameplay constraints (edge cases included) this requirement can be considered fulfilled. Unexpected behaviour unearthed by other bugs that have already been patched should not be a consideration.

The other people whom I must consider are other patch authors, whom may wish to interface with my code in the future. They can generally ensure compatibility with their own objectives through their own effort, but naturally I want to strive to make it easier for others by not complicating the code if at all possible. With all these considerations in mind, I believe that, for now, my list of priorities looks something like this:

1) Achieving the objective of the patch
2) Patch compatibility (modular code, free space thrift, expected behaviour etc.)
3) Ease of use for end-users (patch and go)
4) Being thrifty with free space for future patches
5) Ease of use for hackers/patch authors
6) Elegance and simplicity (for personal satisfaction and bragging rights)

That last one IS a point of pride for me but it must unfortunately fall below all the others if there is a conflict. Luckily, it more often goes hand in hand with most of the other requirements.

Finally, and most importantly, I still consider myself if not a novice, at least fresh off the boat to the world of assembly coding and patch making. Every project is a huge learning experience and so I try to push hard to work within the constraints of fulfilling all the requirements I set up for myself, or at least finding the best compromise. In most cases it would be fine to relax a little bit, if you already know what you're doing, but I'm still learning and would prefer not to afford myself the allowances that come as reward for experience just yet.
« Last Edit: May 12, 2016, 07:01:26 AM by magitek »
Don't feed the trolls. Use proper grammar, spelling, and punctuation. Eat your vegetables.

magitek

  • Antlion
  • *
  • Posts: 67
  • Gender: Male
  • Juggler
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #68 on: May 11, 2016, 09:15:32 PM »
Oh, and you should make a new topic for Quick/X-Magic discussion and testing, people. :) :offtopic:
Don't feed the trolls. Use proper grammar, spelling, and punctuation. Eat your vegetables.

magitek

  • Antlion
  • *
  • Posts: 67
  • Gender: Male
  • Juggler
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #69 on: May 11, 2016, 10:40:46 PM »
The elusive Triple Post! :banonsmash:

Quote from: assassin
i thought Freeze was in the same category as Sleep, not Stop/Quick.  it's not a time-freeze; for instance, periodic damage/healing still work under it.  just carving out an exception for Morph -- if that's what you're indeed driving at -- seems a bit inconsistent.

I lean towards thinking it makes more sense to pause periodical damage during Freeze, too. But I'm aware that it is a contested topic and as such, strays from pure bugfix territory and will not be including that change in the patch (maybe in the .asm as an optional addon).


Quote
correct me if i'm wrong..  this risk presents once you do the following:

    1) stop clearing $3EE2
    2) Function C2/0B01 handling Haste/Slow toggling
    3) dropping the 2048 decrementor cap


If I understand the way you described it correctly, zeroing the low byte of $3EE2 $3F30 should eliminate this risk? Meanwhile, waiting to zero the supply until we stopped calling C2/0B01 should, uh, eliminate it again (or more).


Quote from: assassin
a devil's advocate argument to fuck with myself:
if the Morph timer counts down from 65535 to 500, we don't update the Morph supply.  yet when it goes from 500 to 0, updating Morph supply is now vital?  while 0 is indeed a special case, is it special enough to say that a change of 500 outweighs a change of 65035?

Not trying to sound facetious, but that kind of sounds more like a devil's strawman. :P
Can you think of anything concretely screwy that can happen from not zeroing the supply right away, considering Revert will force it's way into the next available action slot? Maybe if autocast got in the way of Revert (Condemned), since those have priority? But, Terra dying doesn't thwart the supply being updated normally, does it?

I kind of agree it would make more sense to decrement the supply at the same time as decrementing the timer, kind of. But luckily, the supply stays intact for me to use as a base for the decrementor in this patch.

 :edit:
* magitek slaps Imzogelmo around a bit with a large trout
« Last Edit: May 12, 2016, 04:40:38 PM by magitek »
Don't feed the trolls. Use proper grammar, spelling, and punctuation. Eat your vegetables.

Imzogelmo

  • Ogopogo Aficianado
  • *
  • Posts: 241
  • Gender: Male
  • Ask me about my other job.
    • View Profile
    • NEPROMR
Re: WIP Patch: Permanent Morph bugfix
« Reply #70 on: May 12, 2016, 12:17:55 AM »
Sorry magitek, I hit modify instead of reply and totally botched your triple post. Feel free to modify it further and slap me with a wet trout. :isuck:

I was just going to say that you could always do a fix A/fix B solution if there are caveats or multiple interpretations to how it could reasonably be fixed.
5/31/16 - I have an assembly of the battle portion of C2, relocated to the F0 bank, which has both vanilla and patch code in my dropbox. I'll be updating it with additional patches as I have time. I will *not* be releasing it publicly, but ask me for the link and I'll share.

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: WIP Patch: Permanent Morph bugfix
« Reply #71 on: May 12, 2016, 05:25:11 AM »
That sounds like a good idea, you should add that to the wiki. I noticed some descriptions where your comments add to the understanding of the bit (you have "flag target's ATB gauge to be reset?" and the RAM map has "psyche was just cleared", for example).

thanks, will do.  my $3AA0, Bit 4 description will also be an upgrade to it, but for the most part, i've lagged what they've got there.

Quote
Quote
[re CPX $3EE2 in C2/0B01:] looks like you talked yourself out of it..  but to chime in, i don't favor sacrificing capability just to save a few bytes.

More like I talked myself into it, except I still can't find a way to shrink C2/09D2 enough to fit a jump to C2/0B01.

ah, guess i misinterpreted the final conclusion of the edits in that post.

Quote
1. There's that TYA.
2. I don't think the CLC is needed either (assuming the ATB multipliers are all even).
3. ???

whoa, that CLC actually does nothing, even or odd, by being right before the LSR.  think they typoed on order.

i experimented, and couldn't further shrink the function either.  if only there was a way to add A to X or Y. :/  i did come up with a fascinating excerpt to load the ATB Multiplier from a data table, but it was break-even at 18 bytes.

Quote
I think my proposal is fairly strictly limited to the few functions already modified to create the functionality of the patch, so it creates no unexpected incompatibility. Neither should it produce any unexpected issues for users who only care about vanilla functionality. Gutting unused parts the code does make it hypothetically less robust, but not to the point of collapse under the constraints of normal gameplay.

With that being said, this is a valid point, especially in a world where it's so easy to mod the game. This is why I'm a bit gung-ho about this as long as I don't break vanilla. My idea was to provide a .ips patch that works fine within the constraints of vanilla, for people who just want to patch and play, and supplement it with an easily modifiable source file (and ample documentation) for people who want to make mods.

yeah, your source files have been well-documented, including deletions.  you indeed had this:

Code: [Select]
;(Removed code, for reference. Removes 11 bytes)
;LSR
;LSR
;CMP #$0800
[...]

maybe add a "(Will need to be added back for a hypothetical patch that gives Morph status on turns other than the command proper.)" or similar comment.


Quote
Quote
when did free space become THAT scarce?
If not sometime in the past ten years of bug fixes, presumably sometime not too far in the future. There are many bugs left and thrift is a virtue. :P

eventually, we'll probably have to resort to ROM expansion, and patch authors coordinating (or consenting, or being too dormant to refuse ;) ) relocating many of their bugfixes together.  kind of like the PB team did.

but thrift can push this day of reckoning off for a bit.

Quote
I apologize in advance for the short novella I'm about to produce, but I have given this topic quite some thought and I feel ready share my conclusions. You may have provoked this, Assassin, but it's not directed specifically at you, although I am grateful that your rhetorical aside gave me pause to think about this.

[snip]

no prob, it was good reading.  i like seeing other patch makers' philosophies.  and hopefully, i didn't imply you were single-minded.  some of my comments could have been worded better and/or were a bit dramatic, so thanks for taking them in stride instead of getting irritated.

Quote
Free space requirements make it more difficult to maintain patch compatibility. If something can possibly fit inline, it's pretty important to make it do so, in my opinion, especially for .ips users who can't change where extra code goes. However, the more important consideration for compatibility is avoiding reaching out of scope or modifying unrelated functions, in order to avoid potential (and unexpected) code conflicts. This requirement of modular code naturally trumps free space thrift, but if it can be fulfilled, then the next order is to make the patch fit inline if possible.

yeah, my "Control attacks ignore MP cost fix" once violated your third sentence pretty badly.  i invaded a ton of nearby functions just to make my changes fit in existing areas.  i eventually optimized it years later to invade far less, but i should have been willing to use free space _until_ i could achieve that, instead of creating a monstrosity.

the thing with free space is it's fungible.  that is, N contiguous free bytes here are effectively the same as N such bytes over there (provided same bank and such).  that cuts both ways:
- on the one hand, consuming those bytes in a patch will present an eventual obstacle to ANY patch that needs free space down the road (no matter how unrelated), as they've been depleted.  that is, everybody's competing for a common resource.  in contrast, invading a neighboring function conflicts with very few of the patches out there.
- on the other hand, until free space in a bank has been exhausted, it's very easy for the later patch maker to avoid a conflict with the earlier one.  just move your code/data.  in contrast, invading a neighboring function will be a big mess in the rare case where the second author needs to change that function.

iow, a high chance of easily-avoided conflict (until exhaustion), versus a low chance of significant conflict.

Quote
With all these considerations in mind, I believe that, for now, my list of priorities looks something like this:

1) Achieving the objective of the patch
2) Patch compatibility (modular code, free space thrift, expected behaviour etc.)
3) Ease of use for end-users (patch and go)
4) Being thrifty with free space for future patches
5) Ease of use for hackers/patch authors
6) Elegance and simplicity (for personal satisfaction and bragging rights)

That last one IS a point of pride for me but it must unfortunately fall below all the others if there is a conflict. Luckily, it more often goes hand in hand with most of the other requirements.

i'd struggle too much to quantify my internal list..  but do believe that "free space thrift" has moved down it over time (though maybe with some bounces back up), as you might've guessed. :)

Quote
Finally, and most importantly, I still consider myself if not a novice, at least fresh off the boat to the world of assembly coding and patch making. Every project is a huge learning experience and so I try to push hard to work within the constraints of fulfilling all the requirements I set up for myself, or at least finding the best compromise. In most cases it would be fine to relax a little bit, if you already know what you're doing, but I'm still learning and would prefer not to afford myself the allowances that come as reward for experience just yet.

you're off to a good start.. here's to many years of it!

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: WIP Patch: Permanent Morph bugfix
« Reply #72 on: May 12, 2016, 06:54:48 AM »
I lean towards thinking it makes more sense to pause periodical damage during Freeze, too. But I'm aware that it is a contested topic and as such, strays from pure bugfix territory and will not be including that change in the patch (maybe in the .asm as an optional addon).

yeah, it gets tricky..  for instance, if the periodic damage/healing is coming from equipment, the gear isn't necessarily frozen, but the user they're giving the status to is.

Quote
Quote
    correct me if i'm wrong..  this risk presents once you do the following:

    1) stop clearing $3EE2
    2) Function C2/0B01 handling Haste/Slow toggling
    3) dropping the 2048 decrementor cap


        If I understand the way you described it correctly, zeroing the low byte of $3EE2 ($3F30, as you posted previously) should eliminate this risk? Meanwhile, waiting to zero the supply until we stopped calling C2/0B01 should, uh, eliminate it again (or more).

my point of that 3-item list was that it's hard to consider the C2/0B36 call as culpable for an issue that happens *after* you do three things to modify the game (none of them mandatory for a bugfix, as there are alternate ways, and one of them super-optional).  so the call is not a problem in the game but rather in a very specific reworking thereof.

but yes, agreed on the full timer zeroing being a fix for the loophole i first mentioned.  however, my follow-up issue regarding the Haste/Slow recalculation requires either:
- adding a "BEQ 0B2C_equivalent" before the "JSR $4792" in C2/0B01, and having a nonzero fallback decrementor.  (initially, i said the 2048 cap, but the $3F30 zeroing means even 1 would suffice here.)
- dropping the C2/0B36 call.

Quote
Quote from: assassin
  but a devil's advocate argument to fuck with myself:
            if the Morph timer counts down from 65535 to 500, we don't update the Morph supply.  yet when it goes from 500 to 0, updating Morph supply is now vital?  while 0 is indeed a special case, is it special enough to say that a change of 500 outweighs a change of 65035?

        Not trying to sound facetious, but that kind of sounds more like a devil's strawman. :P

huh?  i was actually challenging my own viewpoint there, by saying: if depleting a whopping 65035 points off the Morph timer isn't meaningful enough (by Square's standards) to update the supply, why should depleting the last mere 500 points -- admittedly a special case -- be enough?

Quote
Can you think of anything concretely screwy that can happen from not zeroing the supply right away, considering Revert will force it's way into the next available action slot? Maybe if autocast got in the way of Revert (Condemned), since those have priority? But, Terra dying doesn't thwart the supply being updated normally, does it?

        I kind of agree it would make more sense to decrement the supply at the same time as decrementing the timer, kind of. But luckily, the supply stays intact for me to use as a base for the decrementor in this patch.

nothing offhand.  C2/4678 oughta catch the Morph removal.  but i don't always want to wait to see the concrete, instead assuming some might be lurking around the corner, or ready to fall from the sky. ;)

yeah, there is a bit of an artificial separation between the two values (but understandable for coding purposes).

if RAM usage weren't a concern, you could always keep the original decrementor, and have an active copy that's potentially status-modified.

assassin

  • Bane of Retards
  • *
  • Posts: 1,033
  • space bears are not gentle!
    • View Profile
    • My Barren Webpage
Re: WIP Patch: Permanent Morph bugfix
« Reply #73 on: May 12, 2016, 07:17:12 AM »
Sorry magitek, I hit modify instead of reply and totally botched your triple post. Feel free to modify it further and slap me with a wet trout. :isuck:

haha; i did that to you once on Mnrogar's a few years back.  i had to recall your post as best possible (fortunately, it wasn't that long).  there should really be a "Toddler Proof" checkbox that super-users can (un)click before login, given most visits don't require moderating or administrative work (particularly on this forum, in a reality where most spambots haven't played Dynasty Warriors  :happy:)

also, you should have retaliated against ME; what the hell's the matter with you?!?!

.
.

(please don't!  :eek:)

Quote
I was just going to say that you could always do a fix A/fix B solution if there are caveats or multiple interpretations to how it could reasonably be fixed.

magitek: are you still considering the C2/4BB2 relaxation version?  iirc, we agreed it was:
- stronger in terms of minimizing the chance of a Morph user with no "fuel" left continuing to receive the status' benefits (e.g. higher Defense).
- weaker in terms of a certain-timed Stop/whatever spell.  (i'm foggy, so see a few of our prior posts for specifics.)

it's understandable if you've put it off, as juggling both at once would be a bitch to code, and make for confusing discussions.  if you've nixed it, also understandable, though i'm curious as to the reason, given i tended to see the approaches as on roughly equal footing.

magitek

  • Antlion
  • *
  • Posts: 67
  • Gender: Male
  • Juggler
    • View Profile
Re: WIP Patch: Permanent Morph bugfix
« Reply #74 on: May 12, 2016, 09:28:46 AM »
i experimented, and couldn't further shrink the function either.  if only there was a way to add A to X or Y. :/  i did come up with a fascinating excerpt to load the ATB Multiplier from a data table, but it was break-even at 18 bytes.

I briefly considered fixing another bug, "Condemned status isn't removed when Doom misses due to Death protection" (by hooking C2/09CE to both reset the Condemned timer and remove the status), just to liberate that RTS at C2/09D1. Doing so is certainly out of scope, however, even though it's pretty harmless.

Furthermore, Leet Sketcher already fixed that bug with his Off Death Row, using a different (but compatible) method. Having unrelated dependencies is bad, and having dependencies that compete with other patches is even worse. :P
It's a consideration for a potential larger-scope patch that rewrites many things, though.


Quote
eventually, we'll probably have to resort to ROM expansion, and patch authors coordinating

I kind of hope to push this into reality sooner rather than later. I'm not yet sure if I have the time to take on the responsibility for maintaining an open source large-scale rewrite project, but I do want such a thing to exist.


Quote
iow, a high chance of easily-avoided conflict (until exhaustion), versus a low chance of significant conflict.

Good summary.


Quote
you're off to a good start.. here's to many years of it!

Thank you for your kind words!
Don't feed the trolls. Use proper grammar, spelling, and punctuation. Eat your vegetables.