What features do you wish were in smilebasic?
12Me21Created:
What things would you have added to smilebasic/the editor if you were in charge? This might be useful to know if anyone wanted to create their own editor, or just add some functions.
- ^ for exponents.
- OPTION to use 1-indexing
- Syntax highlighting (and autocomplete) for user defined functions and variables
- Syntax highlighting for +-*/
- Open source editor (which could fix all of these problems). (of course, someone could make one, but it would be hard. I have the beginning of a syntax highlighter (keyword detector), though (used in my auto indenter))
- Pressing SELECT in the editor runs the program in the current slot, not always slot 0.
- Change MOD back to %, and change DIV to \
- Add a logical XOR
- More variable types (BIT,BIT*N,BYTE) (with their own type suffixes, of course.)
- Type suffix (%,#) only required in VAR
- Smoother SCROLLing
- Being able to update programs on the server without deleting and reuploading them. (which changes the public key)
- Better error detection
- 3D Graphics (I'm sure there's a reason they didn't add this, though)
- QR code support!
- Reverse INSTR (Finds the LAST occurrence of a string in another string)
- Change KEY 5 to "RUN " (with a space at the end)
- More keyboards (access to ALL defined characters)
- More fast
- Default BREPEAT settings are the ones you set in the options menu
- Camera access
The first one I'd like to add on to. The editor should also add the user defined functions to the suggestions on the bottom screen (maybe in a different color) and it should also scan the first few lines of a function for documentation.
- Syntax highlighting for user defined functions, and for variables and +-*/
- type suffix (%) not required (I never use integers because of this)
DEF PUTTEXT D,X,Y,T 'D=Screen to show text on (0=top, 1=bottom) '... 'PutText puts texts in a specific place on the screen TEMP=DISPLAY():DISPLAY D LOCATE X,Y:PRINT T;:DISPLAY TEMP ENDThe second one you can easily solve with OPTION DEFINT, which makes all variables defined default to integers. The features that I want would be
- Actual 24-bit RGB and 3D GRPs (probably only one or the other)
- A built-in MML editor in SmileTOOL
- Being able to use START/SELECT as a button when
the keyboard is onscreenthere are no XSCREEN 2/3/4 statements
- TRY EXCEPT commands (we need them)
- something that was really creative but when i type it out, i forget it (ill edit this again when it comes back)
The second one you can easily solve with OPTION DEFINT, which makes all variables defined default to integers.But then you would need to put # after real variables. Using integers doesn't seem to have any speed advantage over floating point numbers, so I will only use them if they don't cause inconvenience.
I would love to see labels with symbol suffixes like we do with DEFs now:
DEF func%
@label%+1 to the v360's idea. Also just name suggestions without help would be amazing.
open source editorCheck out Actorbug on the Japanese miiverse! There's a whole lot on proper syntax highlighting and a cloned editor.
amiibo suport and camera abilityI think Nintendo has been very adamant about not having ways for outside data to get in. I can't see NFC happening, but the amiibo phrasing brings up an interesting point: amiibos are signed by Nintendo just like wireless multiplayer sessions are; they could for the most part guarantee the data stored came from a 3DS. And now for the nitpicky part (:p)
OPTION BASE 1 (or something like that) (strings and arrays start with 1 instead of 0)I don't think it should be an option not to learn that these are offsets. You might break all of computer science! (Or have to adjust when you learn your next language...)
Using integers doesn't seem to have any speed advantage over floating point numbers, so I will only use them if they don't cause inconvenience.Integers aren't intended to be faster; they take up less memory and are more accurate. Floats estimate a number by storing several integers.
I would love to see labels with symbol suffixes like we do with DEFs now:Pretty much every programming languages has strings that start at 1 0 is supposed to mean "nothing" not "the first value" For example, INSTR in PTC returned 0 if it didn't find the string, but now it returns -1, which doesn't work well with IF statements: IF INSTR("ABC",S$) THEN... will not work, you need to do: IF INSTR("ABC",S$)+1 THEN And: starting with 0: DIM ENEMIES[MAXENEMIES,3] FOR I = 0 to MAXENEMIES - 1 ... NEXT with 1: DIM ENEMIES[MAXENEMIES,3] FOR I = 1 to MAXENEMIES ... NEXTDEF func%@label%+1 to the v360's idea. Also just name suggestions without help would be amazing.open source editorCheck out Actorbug on the Japanese miiverse! There's a whole lot on proper syntax highlighting and a cloned editor.amiibo suport and camera abilityI think Nintendo has been very adamant about not having ways for outside data to get in. I can't see NFC happening, but the amiibo phrasing brings up an interesting point: amiibos are signed by Nintendo just like wireless multiplayer sessions are; they could for the most part guarantee the data stored came from a 3DS. And now for the nitpicky part (:p)OPTION BASE 1 (or something like that) (strings and arrays start with 1 instead of 0)I don't think it should be an option not to learn that these are offsets. You might break all of computer science! (Or have to adjust when you learn your next language...)Using integers doesn't seem to have any speed advantage over floating point numbers, so I will only use them if they don't cause inconvenience.Integers aren't intended to be faster; they take up less memory and are more accurate. Floats estimate a number by storing several integers.
They have an advantage of taking half the memory, especially when you're working with large arrays. I wish I knew this when I was playing with video playing before.The second one you can easily solve with OPTION DEFINT, which makes all variables defined default to integers.But then you would need to put # after real variables. Using integers doesn't seem to have any speed advantage over floating point numbers, so I will only use them if they don't cause inconvenience.
Pretty much every programming languages has strings that start at 1Show me one... All languages I know start at 0. The only exception is Lua, where I'm actually not sure if strings can even be indexed, but 'arrays' start at 1 and they're not technically arrays, they're dictionaries.
And: starting with 0: DIM ENEMIES[MAXENEMIES,3] FOR I = 0 to MAXENEMIES - 1 ... NEXT with 1: DIM ENEMIES[MAXENEMIES,3] FOR I = 1 to MAXENEMIES ... NEXTThis is your only argument that makes sense, although in other languages it doesn't look like that because for loops traditionally are non-inclusive of the last value. (They use I<MAX rather than I<=MAX in the relevant part) But this doesn't really matter. Most if not all real-world languages use 0-indexing. It would be silly to go against that, especially for a program that is meant to introduce you to the world of programming.
The ability to write code using a proper keyboard and screen.
what. No. And hnakai did get a USB Keyboard to work with SmileBASIC, it just... requires extra hardware. I believe there was a Raspberry Pi or some other hobby board involved.The ability to write code using a proper keyboard and screen.Didn't they make a keyboard for PTC? (only in japan, of course)
Oh, I remember what I was thinking of. There was a DS game that had a wireless keyboard, and people were speculating whether it would work with PTC. Of course, it didn't.what. No. And hnakai did get a USB Keyboard to work with SmileBASIC, it just... requires extra hardware. I believe there was a Raspberry Pi or some other hobby board involved.The ability to write code using a proper keyboard and screen.Didn't they make a keyboard for PTC? (only in japan, of course)
OPTION is for precompiler settings, so OPTION BASE1 wouldn't work because it affects runtime. SLEEP wouldn't work either.
As for strings starting at 1, there's very few languages that can actually index strings in the first place (usually they're standard library objects or something; in the case of C strings are just char arrays.) They're all 0-based indexing from what I remember. One of the few langs I know that 1-indexes anything is TI-BASIC with it's lists.
I don't think any 3DS games are allowed to run while it's in sleep mode. The only argument I've heard for 0-indexing is that other programming languages do it. That's not really a valid reason. Just because someone does something bad, it doesn't mean you have to copy them. But OPTION BASE1 would stop all these arguments. I guess OPTION isn't perfect for this, but OPTION BASE1 is in some other versions of BASIC, and it makes the most sense. Obviously, XON wouldn't make sense in this case.OPTION is for precompiler settings, so OPTION BASE1 wouldn't work because it affects runtime. SLEEP wouldn't work either.Ah, you're right. I've failed to make this distinction myself! In that case, I pretend I said XON SLEEP and just go with it.... :P
I don't think any 3DS games are allowed to run while it's in sleep mode.Animal Crossing, Smash, Ambassador programs; I know a lot of games that continue to run with the system closed. I mean fully run: Animal Crossing continues running if your gate is open. It even warns you about it. Ambassador programs (like the GBA games) simply never allow the system to go into sleep mode. It's doable, I just don't know if it's a thing only Nintendo games can do. Edit: Base 1 has a computational overhead. In memory, variables are stored with an address. For arrays, this address points to the first element. Offsets (like 1, 2, 3) add to the address, so "no offset" from the first address is the first element (0 based index). If it starts at 1, the generated code would have to perform a subtract EVERY time you access an array. Imagine array accesses taking 50% longer... each and every one.
I think only the GBA games never go into sleep mode (GBA emulator is very limited, maybe because the 3DS can barely emulate the game boy advance, but probably because only a few people (including me) have access to it, so they didn't bother adding lots of features). The NES emulator is much better, and supports sleep mode just fine. I'm sure Nintendo is very strict about games running during sleep mode, since this will drain the battery almost as fast as if the 3DS was open. Unfortunately, I don't think smilebasic is going to be updated very often, since it's on the 3DS, and updates are more inconvenient than on a regular computer.I don't think any 3DS games are allowed to run while it's in sleep mode.Animal Crossing, Smash, Ambassador programs; I know a lot of games that continue to run with the system closed. I mean fully run: Animal Crossing continues running if your gate is open. It even warns you about it. Ambassador programs (like the GBA games) simply never allow the system to go into sleep mode. It's doable, I just don't know if it's a thing only Nintendo games can do.