I guess I should test it. If I make a local Tsound variable X and then call X.Load("Y") if X hasn't been updated by Load, then surely PlaySound(X) or X.Play will fail? If they don't fail because X is set by Load(), then this means that BlitzMax IS able to redefine what Self points at somehow!
Can you view the source code for the modules anywhere? Then I could look at how TSound.Load works.
Can you view the source code for the modules anywhere? Then I could look at how TSound.Load works.