On Tue, Jan 18, 2011 at 08:33:28PM +1300, Ralph Versteegen wrote: > 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 did it the way I did it because that was how "NPC is walking" was implemented-- and it looked clearest to my eyes that way. > > I don't know why I didn't use ANDALSO :P > > Because ANDALSO compiles to more instructions, of course! Ooh! I did not tknow that. Good to know I had a good reason ;) > 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. Ouch. What was the algebraic rearrangement bug? --- James _______________________________________________ Ohrrpgce mailing list [email protected] http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org
