On 18 January 2011 05:29, James Paige <[email protected]> wrote: > On Sun, Jan 16, 2011 at 07:31:35PM +1300, Ralph Versteegen wrote: >> On 14 January 2011 08:54, <[email protected]> wrote: >> > james >> > 2011-01-13 11:54:39 -0800 (Thu, 13 Jan 2011) >> > 173 >> > Fix potential bitwise breakage in "hero is walking" >> > when the hero is walking both horizontally and vertically >> > at the same time. ("NPC is walking" did not have this problem) >> > --- >> > U wip/yetmore.bas >> >> Actually, your new implementation is equivalent to the old one. > > > - IF (xgo(retvals(0)) OR ygo(retvals(0))) THEN > + IF xgo(retvals(0)) = 0 AND ygo(retvals(0)) = 0 THEN > + scriptret = 0 > + ELSE > scriptret = 1 > - ELSE > - scriptret = 0 > > Switching AND for OR and inverting the sense of the THEN/ELSE made no > difference, but adding the = 0 to both sides was the real fix.
But "(xgo(retvals(0)) OR ygo(retvals(0))) <> 0" is equivalent to (aside from being faster but less clear) "xgo(retvals(0)) <> 0 OR ygo(retvals(0)) <> 0" > I don't know why I didn't use ANDALSO :P Because ANDALSO compiles to more instructions, of course! Actually, I just checked the assembly for the ANDALSO version and am horrified to find that fbc is not only not performing any of the obvious and easy optimisations which I had thought it would, but it actually adds an unnecessary layer of indirection with a temporary variable on the stack! Instead of emitting just 4 instructions for the test (not counting reading from the arrays: twice test, je) as it could, it emits... 15 instructions!! fbc's optimisation certainly is terrible. I found a bug in the how it does algebraic rearrangement a couple days ago, so if some calculation is returning the wrong answer, be warned that it could actually be fbc's fault. > --- > James > _______________________________________________ > Ohrrpgce mailing list > [email protected] > http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org > _______________________________________________ Ohrrpgce mailing list [email protected] http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
