LoginLogin

3.5.2 out now for US Smilebasic

Root / General / [.]

DrZogCreated:
Compat allows a program to run on both Wii U and 3DS by disabling all exclusive features. WiiU enables Wii U-exclusive features, and 3DS enables 3DS features.

For those confused about XON, here is a handy MsPaint chart for your viewing pleasure:

What "exclusive features" on the 3DS does OPTION COMPAT disable? Also you can do XOFF COMPAT, what does that do? EDIT: apparently XON 3DS/WIIU/COMPAT doesn't persist after a program ends, unlike the other XON modes, so all my tests were wrong. It seems like COMPAT disables multiplayer on the 3DS. So basically: XON 3DS: force 3DS mode XON WIIU: force Wii U mode XON COMPAT: compatibility mode XOFF COMPAT: switch back to Wii U or 3DS mode. (equivalent to XON 3DS or XON WIIU depending on the system) It seems that XON 3DS and WIIU are redundant:
XON 3DS = IF HARDWARE<=1 THEN XOFF COMPAT ELSE PRINT"Incompatible statement(XON)":END
XON WIIU = IF HARDWARE ==2 THEN XOFF COMPAT ELSE PRINT"Incompatible statement(XON)":END
However, COMPAT is disabled whenever a program ends, so really the only thing that XON 3DS/WIIU do is only allow the program to run on that system. Seems like a stupid thing to do, really.

There seems to be a glitch introduced in this patch, or maybe a fix for some unintended behavior, which changes the way that linked sprites behave. If you have a Child Sprite linked to a Parent Sprite such that the Child appears in front, and then the parent is animated to move towards the screen (SPANIM "Z") the child Sprite doesn't seem to follow the parent anymore, and gets covered up. You can fix this issue by setting the Child's Z position to a different value. Possibly not a big issue, but it did break a mini-map I was working on.

What "exclusive features" on the 3DS does OPTION COMPAT disable?
I explained this earlier in this thread, but it seems a few people missed it so I'm just gonna quote the whole thing again:
No, the addition of XON COMPAT/3DS/WIIU aren't a breaking change. From what I can dig up, it seems like the new XON settings work like this:
  • XON COMPAT forbids all commands or command parameters that are 3DS/Wii U specific. This is the default mode on Wii U.
  • XON 3DS enables 3DS only commands. It's the default mode on 3DS for backwards-compatibility reasons, so its main purpose is for making sure that a 3DS is being used, since it causes an error on Wii U.
  • XON WIIU enables Wii U only commands. This is not the default mode on Wii U, so the Wii U must switch into this to use Wii U commands. It causes an error on 3DS.
Some examples of 3DS/Wii U specific commands, though this isn't exhaustive:
  • MPSTART is 3DS only since the Wii U doesn't have wireless multiplayer.
  • XSCREEN 5 and 6 are the Wii U screen modes. It simulates 3DS screens for XSCREEN 0 through 4, so that 3DS programs work unchanged on Wii U.
  • BUTTON(1,1) behaves differently on 3DS versus Wii U, where the second parameter is a wireless multiplayer user on 3DS but a controller number on Wii U. Thus, it can't be used in XON COMPAT, though of course using BUTTON with one parameter is still fine.
  • CONTROLLER(n) has been added in this update, and detects what kind of controllers are connected. On 3DS, only CONTROLLER(0) is allowed, and returns 1. On Wii U, CONTROLLER(0~4) can be used to detect the types of controller 0 (which is the Gamepad, again returning 1), and controllers 1 through 4.
I didn't notice that XOFF COMPAT is valid, but on that subject:
It seems that XON 3DS and WIIU are redundant:
XON 3DS = IF HARDWARE<=1 THEN XOFF COMPAT ELSE PRINT"Incompatible statement(XON)":END
XON WIIU = IF HARDWARE ==2 THEN XOFF COMPAT ELSE PRINT"Incompatible statement(XON)":END
However, COMPAT is disabled whenever a program ends, so really the only thing that XON 3DS/WIIU do is only allow the program to run on that system. Seems like a stupid thing to do, really.
Perhaps right now it's redundant. However, imagine they make a Switch version of SmileBASIC. As a handheld, the Switch can support wireless multiplayer, so it's not unreasonable to think that XON 3DS could work on Switch. The Switch would then allow XON COMPAT, XON 3DS, and XON SWITCH (aka XOFF COMPAT).

But if you just don't use ANY of the new XON settings, everything would work fine on systems that support it, and cause an error on ones that don't. I don't see any advantage to XON 3DS/WIIU here, just the potential to cause unnecessary errors in the future if things change.

Please forgive me, I'm still new to this. But can someone explain to me why the update caused one of the programs that I frequently use to stop working properly? The program is named "MML Editor" and it was created by raimondz.

Some bugs and changes were added. I think it might have to do with GOSUB not working correctly.

The problem is they used GOSUB instead of GOTO for no reason:
COMMON DEF EDITORC(K$)
 K$="@"+K$
 IF !CHKLABEL(K$) THEN RETURN Nil$
 GOSUB K$
 @ALIGN_LEFT:RETURN 0
 @ALIGN_CENTER:RETURN 1
 @ALIGN_RIGHT:RETURN 2
 @I_NL:RETURN CHR$(10)
 @I_NLK:RETURN CHR$(13)
 @I_ER:RETURN CHR$(8)
END
In older versions, there was a bug where RETURN would return from a function even if GOSUB had been used, causing a memory leak. Now RETURN will return from GOSUB inside a function.

In other words, just change GOSUB to GOTO and it should work for you again.

Thanks