3.5.2 out now for US Smilebasic
DrZogCreated:
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)":ENDHowever, 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:I didn't notice that XOFF COMPAT is valid, but on that subject:Some examples of 3DS/Wii U specific commands, though this isn't exhaustive:
- 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.
- 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.
It seems that XON 3DS and WIIU are redundant: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).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)":ENDHowever, 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.
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.
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) ENDIn 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.
Thanks