11 March 2016 - Forum Rules
Started by redmagejoe, December 10, 2019, 03:09:14 AM
Quote from: redmagejoe on May 06, 2020, 12:09:58 AMI know it's a janky fix I used in the first place, but without trying to rewrite/rearrange that space to have it specifically check number of characters used and do a conditional E8 or not (so only 5-character spell names would result in "Thunder16" while "Cure 16" would still display properly) which I don't have the confidence in myself to do, it's my best bet.
Quote from: redmagejoe on May 06, 2020, 12:09:58 AMIs it safe to assume that this would just require the 3 bytes for the JSR to our stat refresh? I feel like there were multiple JSRs... Sorry, I've been out of the loop on this for so long I'm starting to forget some of the methods we used to achieve some basic fixes...
Quote from: redmagejoe on May 06, 2020, 05:12:06 PM@abw: It seems like Guy, the only 1 of 2 front row characters (the other being Firion) is getting a disproportionate amount of enemy focus. Did something happen with the enemy targetting? I thought we'd fixed that, but I just had Guy exclusively focused by a Soldier, and then a Land Turtle (two different battles) 8 times in a row. Maybe it was just really bad RNG, since I've been locked in a standstill with 2 Ogres and an Ogre Mage, and they're regularly targetting Firion and Guy pretty fairly. I doubt that an entry this early in the series has monster AI that focuses specific targets (like lowest HP or highest HP, etc).
Quote from: redmagejoe on May 06, 2020, 05:12:06 PMAlso still getting spells cast on me by Ogre Mages that I SEEMINGLY successfully landed Minwu's Fog (Amnesia, permanent mute) on. EDIT: It's only happening on the same turn where the spell is cast, but according to online descriptions, a successful Mute/Amnesia should cause the spell to fail if the monster has already issued the order. That doesn't appear to be happening. Is this also a vanilla bug? I should probably add that to the list if it is.
Quote from: redmagejoe on May 06, 2020, 06:46:17 PMI'm noticing that resources online have Poison as the permanent status and Venom as the temporary status, whereas it seems reversed in the Chaos Rush translation. I think I need to update that patch again.
Quote from: abw on May 06, 2020, 09:48:37 PMThis turns out to be both more and less complicated: we were calling $FAFB during battle, but that doesn't work so well outside of battle since it clobbers a bunch of out-of-battle RAM with in-battle data. Fortunately, there's another place that triggers stat refresh outside of battle, the equipment screen, which calls $FA03 instead to stash and restore out-of-battle data, and it looks like calling that inside the orb loop does the trick.
Quote from: abw on May 06, 2020, 09:48:37 PMI haven't noticed anything unusual. Over the course of a full game with all characters in the front row all the time, my evasion levels/experience for the 3 main characters were 4-18, 4-17, 4-02, which works out to about a 2% difference between highest and lowest. My Guy had low evasion % throughout the game, so he was more susceptible to status ailments, which in turn meant he lost out on more experience gains than the rest of the party. The enemy attack selection is purely random, though that would be a fun and mean thing to change .
Quote from: abw on May 06, 2020, 09:48:37 PMThis is probably a vanilla bug. I've also noticed that targets who have had their MP reduced to 0 via Osmose/Swap in the current round are still able to cast their previously selected spell, which is arguably a bug too.
Quote from: abw on May 06, 2020, 09:48:37 PMYeah, I noticed some confusion between sources there too. The official SNES FF2us/FF3us versions went with Poison as the name for the weaker form of poison spells, so I'm going to side with Chaos Rush on this one.
Quote from: redmagejoe on May 06, 2020, 10:23:02 PMIs it safe to assume that you're already testing an application of this by that last comment, or should I try to play around with it again?
Quote from: redmagejoe on May 06, 2020, 10:23:02 PMI've already got a WIP ROM with Devenomed, Cured of poison, Envenomed, Poisoned, Vnm., Psn. flipped. Not going to commit it to a patch yet though, because I'd kind of like to implement that conditional spacing you suggested. I've been out of the loop for a while, though... Do you think you can point me in the right direction where I can free up some bytes in that area?
Quote from: redmagejoe on May 06, 2020, 10:23:02 PMI am certainly noticing that Rank 1, and even Rank 2 monsters run away quite frequently, and I'm wondering if this is a side effect of the current fear logic bug? Or is it just that having 1500 total party HP makes me too scary?
# of Bytes | Name as appears to player - Characters used--------------------------------------------------------4 | Fire - Fire5 | Thunder - T[E6][E7][E8][E9]5 | Blizzard - B[EA][EB][EC][ED]5 | Scrge - Scrg[F6]4 | Drain - Dr[7D]n5 | Osmse - Osms[F6]4 | Flare - F[7E]re4 | Sleep - S[7F]ep4 | Stun - Stun4 | Stop - Stop5 | Cnfse - Cnfs[F6]4 | Blind - B[D3]nd4 | Curs - Curs4 | Toad - Toad4 | Break - B[D7]ak4 | Death - Dea[D8]4 | Warp - Warp4 | Bsrk - Bsrk4 | Haste - Has[D9]4 | Aura - Aura4 | Cure - Cure4 | Life - Life5 | Basuna - B[EE][EF][F0][F1]5 | Esuna - Es[F2][F3][F4]5 | Barrier - Ba[circle][D6][DD]4 | Blink - B[D3]nk4 | Prtec - Pr[D9]c4 | Shell - She[D1]4 | Wall - Wall4 | Dspl - Dspl4 | Mini - Mini5 | Silence - S[D2][E2][F5][F6]3 | Sap - Sap3 | Fog - Fog4 | Slow - Slow4 | Swap - Swap4 | Fear - Fear4 | Holy - Holy5 | Telepr - Te[7F]p[E9]4 | Ultima - U[DA][DB][DC](spells below are used mostly by monsters, and may not exceed Lvl 9, but still worth mentioning; only spells that have 5 byte names and can have a level are listed, so Destr, Drink, Gaze, etc are not listed)5 | PsnCl - PsnCl (goes up to 16)5 | Breth - Breth (goes up to 10)5 | Charm - Charm (goes up to 9)5 | Quake - Quake (goes up to 10)5 | Cycln - Cycln (goes up to 13)5 | Tsunm - Tsunm (goes up to 8)5 | Blder - Blder (goes up to 9)5 | Blstr - Bls[D9]r (goes up to 10)5 | Meteor - Me[D9]or (goes up to 10)Fire assigned to Blaze/Flame (goes up to 16), Blizzard assigned to Icestorm/Snowstorm (goes up to 16), Thunder assigned to Thunderbolt (goes up to 16)
5 | Thunder - T[E6][E7][E8][E9]5 | Blizzard - B[EA][EB][EC][ED]5 | Scrge - Scrg[F6]5 | Osmse - Osms[F6]5 | Cnfse - Cnfs[F6]5 | Basuna - B[EE][EF][F0][F1]5 | Esuna - Es[F2][F3][F4]5 | Barrier - Ba[circle][D6][DD]5 | Silence - S[D2][E2][F5][F6]5 | Telepr - Te[7F]p[E9]5 | PsnCl - PsnCl (goes up to 16)5 | Breth - Breth (goes up to 10)5 | Quake - Quake (goes up to 10)5 | Cycln - Cycln (goes up to 13)5 | Blstr - Bls[D9]r (goes up to 10)5 | Meteor - Me[D9]or (goes up to 10)
Quote from: redmagejoe on May 08, 2020, 11:46:51 AMIf it helps, it's actually not using DTE, but rather custom-sprited tiles... unless I don't fully understand what's going on and there's some DTE-to-sprite shenanigans happening, in which case ignore everything after this line.
Quote from: abw on May 08, 2020, 06:39:57 PMThe squishy tile stuff is fine, it doesn't matter how many characters are on a tile, but you'll need extra code for dealing with cases where one byte results in multiple tiles. As an example, Flare is stored as 8F+7E+4A = F+[la]+re, where "[la]" is 2 characters on one tile but "re" are separate tiles, so it's 3 bytes = 4 tiles, which means you can't use the number of bytes to tell how many tiles are going to be drawn.
Esuna - Es[F2][F3][F4] ==> E[EF][F0][F1] (allows us to take back F2, F3, F4 as well) makes this 4 bytes and 4 tilesBreth - Breth ==> B[D7][EE][D8] (re, squished a, and th used by Death) makes this 4 bytes and 4 tilesThunder - T[E6][E7][E8][E9] (redoing Thunder tiles would give us a new byte to work with for Blaster and Barrier, and a second free tile)Blizzard - B[EA][EB][EC][ED]Scrge - Scrg[F6]Osmse - Osms[F6]Cnfse - Cnfs[F6]Basuna - B[EE][EF][F0][F1] (both Basuna and Barrier could be fixed by making a +1 'Ba' squishy tile)Barrier - Ba[circle][D6][DD]Silence - S[D2][E2][F5][F6]Telepr - Te[7F]p[E9] (changing Thunder to use DD would allow us to turn E9 into 'pr')PsnCl - PsnClQuake - QuakeCycln - CyclnBlstr - Bls[D9]r (could use 'B', 'la', +1 'st', +1 'er')Meteor - Me[D9]or
Quote from: redmagejoe on May 08, 2020, 06:45:46 PMSo the issue isn't actually that he used squishy tiles, but that he maybe assumed that normal DTE bytes would somehow make a single tile?
Quote from: redmagejoe on May 08, 2020, 06:45:46 PMSo then... was my original Plan B the most ideal, to make more squishy tiles, perhaps? I don't know if that would be more or less work than trying to do what I can only assume is some messy extra code to account for these scenarios.
LDY #$00 ; number of tiles LDX $7CBF ; index into string buffer at $7D47; number of bytes@count_tiles: DEX BMI @got_tile_count INY LDA $7D47,X ; string buffer tile #0 CMP #$3C BCC @count_tiles CMP #$6E BCS @count_tiles INY BPL @count_tiles@got_tile_count: LDX $7CBF ; index into string buffer at $7D47 LDA #$FF@add_spaces: CPY #$06 BCS @done_spaces STA $7D47,X ; string buffer tile #0 INX INY BNE @add_spaces@done_spaces:
Quote from: redmagejoe on May 09, 2020, 12:50:56 PM[squishy tiles]
Quote from: redmagejoe on May 09, 2020, 12:50:56 PMI found a minor bug in my translation where I accidentally inserted a "scroll to newline" in a few places, causing NPC text to scroll to a blank box before the "Ask, Learn, Items" interface shows up. I found and fixed in my WIP v2.1a patch the one where the woman who loves Josef says "Poor Nelly... I'll look after her. Josef would want that." But I know there's one, maybe two that came before that which I forgot to document. If you happen upon them in your playthrough, please make note of them.
Quote from: redmagejoe on May 10, 2020, 11:31:25 PMIt's not exactly something I can search for with CastleFynn, and heaven forbid I try to do it via hex. I don't have a full script dump, so CastleFynn's the way I've been managing it.
Quote from: redmagejoe on May 10, 2020, 11:31:25 PMIt's also not that easy, as there's some valid uses of that newline in order to ensure that none of the previous 4 lines are shown, I believe.
QuoteMonsters that are killed by poison/venom have their current HP set to 0 and KO Ailment bit set, but are not actually removed from battle; they remain valid targets (you can even cast Life on them to bring them back!) and need to attacked again in order to remove them from battle.
Quote from: redmagejoe on May 11, 2020, 12:28:27 PMNow that I've more or less got the translation out of the way, I'd like to see if I can't try to help with the remaining bugs. I've been playtesting with Bug Fix version, but I'd be eager to help with implementing some of the proposed features for Restored once the bug list is trimmed down.
Quote from: redmagejoe on May 11, 2020, 12:28:27 PMAlso, does the latest version have the stat refresh on Mysidian Orbs already? I had a rough fix I was working on over a week ago, but I'm pretty sure that yours is probably going to be more elegant.
Quote from: redmagejoe on May 11, 2020, 12:28:27 PMThe thing I'm really curious about is enemy casters. I'm almost certain in the original, they would often target a single character with a spell rather than the whole party.
Quote from: redmagejoe on May 11, 2020, 12:28:27 PMI'm noticing that weapons that apply a status still seem to push the message like "Fell asleep" even if the KO bit is set, and always follows the "enemy fell" message. I don't recall if original did this, but it does seem a bit awkward. Not sure if there's an easy way to ignore these messages if the KO bit is set. Should I add this as a bug?
Quote from: redmagejoe on May 13, 2020, 09:27:34 PMI recall there was a reason stated (somewhere... I think...) for why the dash wasn't set to work on the world map by choice. That said, Final Fantasy Restored enabled world map dashing, so for the sake of sticking to the conventions, I don't think it's really an issue for dashing to work on the world map. That said, upon further review, it does seem like the world map in remakes doesn't allow dashing, so use your discretion on this one, I suppose. Loyalty to remake or established precedent from a previous project. Personally I lean towards "Restored convention" rather than remake convention.
Quote from: redmagejoe on May 13, 2020, 09:27:34 PMEDIT: Took some finagling with the maxed out file, but sure enough, KO'd allies clear their ailments upon death. I think we should try to implement that behavior given that I can't think of any other entries in the series that maintain a status upon revival. If I'm being honest, I think this should probably go into Bug Fix rather than just Restored, as it's hard to tell if this was intended or not, but given the game's track record so far and series convention, it would be easy to assume it was a bug or oversight.
Quote from: redmagejoe on May 13, 2020, 09:27:34 PMOh dear. There appears to be QUITE the message bug when a character is KO'd, in either Bug Fix or Restored. In one case, "Firion lost." appeared, while in another, "Toad" appeared.
Quote from: redmagejoe on May 13, 2020, 09:27:34 PMAlso something minor in both patch versions, really a non-issue beyond "polish", but it seems that during the delay between end-of-battle messages and the transition to "enemy item drops" screen, there's a very brief (maybe a few frames?) graphical glitch not present in unpatched or even ChaosRush patched ROM. Maybe it's just a timing issue like we had with our stat refreshes or something. Just thought I'd mention it for documentation, but it really is the lowest priority out of anything else on the list.
Quote from: abw on May 14, 2020, 08:09:24 PMIf instead we made reviving clear the other ailments, then I think there are only a few places to patch: casting Life during battle, casting Life outside of battle, and being revived by a Goddess statue. Am I missing anything else? Oh, maybe Phoenix Down outside battle (inside battle it just calls the Life routine) and I guess Esuna both in and out of battle. Alright, maybe 5 places then. Altering Life inside battle is fine, and getting enough successes with Esuna already clears out all other persistent ailments (but not temporary ailments, so we'd have to do those too), but I haven't looked at the code for any of the other revival methods yet.
Quote from: abw on May 14, 2020, 08:09:24 PMHmm, I can't say I noticed any graphical glitches around the item drops screen on my last playthrough, and even testing it by stepping through frame by frame didn't make anything jump out at me.
QuoteProbably the best spot to remove other ailments from dead characters would be when a character dies, except death isn't really centralized anywhere, so we'd have to modify every damage-inflicting routine, which does not sound like fun (there is death code that runs at the end of every battle round, but that doesn't help with reviving during the same round a character died). There's no way to die outside of battle, right? Venom and damage tiles won't reduce your HP below 1.
: LDA ch_ailments, Y ; check this character's ailment AND #AIL_DEAD BEQ :+ ; if they're dead STA ch_ailments, Y ;; JIGS - if they're dead, it should be their ONLY ailment! LDA #$00 ; zero their hit points STA ch_curhp, Y STA ch_curhp+1, Y
Quote from: redmagejoe on May 14, 2020, 08:17:56 PMRefresh my memory. Do persistent status ailments other than Stone or KO still prevent stat gains? Apparently that didn't make it into any of the remakes, which leads me to believe it was a programming error. I can't recall over the course of this project if that was considered for fixing.
Quote from: Jiggers on May 14, 2020, 11:45:27 PMDoes FF2 have a routine that adjusts the sprites based on status, that updates fairly regularly? That's where I put mine. FF1 sets their HP to 0 here as well. So the very act of drawing them dead could be used to clear ailments out.
Page created in 0.096 seconds with 19 queries.