LoginLogin
Nintendo shutting down 3DS + Wii U online services, see our post

Concept: Open-Source SmileBASIC

Root / General / [.]

HTV04Created:
Okay, this is going to sound completely insane, but here goes: I was thinking recently: "How possible would it be to make a completely open-source version of SmileBASIC 4 from the ground up?" If this was successfully done, we could possibly port SmileBASIC to any platform of choice, such as Windows. What really sparked this idea for me though was Wii homebrew. After testing out some homebrew applications, I felt like SmileBASIC could really fit in. It could have a otyasmilebasic-esque file system, with a dedicated folder for projects and files. It could also use SBAPI to download files, if we can get it working with SmileBASIC 4 projects. If anyone would like to help me with this project, we might be able to go through with it. After all SmileBoom is a small team as it is, so how hard could it be? /s It would probably be very hard, but I would still like to have a go at it if anyone was willing to help. Don't know what language it should be coded in though. I was thinking C++, like the real SmileBASIC is. Don't have much experience with that language though, so I guess I would have learn more about it. If you're interested, please let me know.

BASIC has been ported and remade quite a few times over the years. You can get a taste of just how often at this link: https://en.m.wikipedia.org/wiki/List_of_BASIC_dialects. Most of those are old and defunct of course. If all you want is a version of Basic on Windows to make games with you could look at one of the following. I haven't used any of the following besides VB.net and FuzeBasic. VB.net is not really game oriented and Fuze is locked up behind a login wall at the moment. For open source versions you may want to check out: I haven't personally used any of those, but you should be able to make your own variant with them I seem to remember The V360 was making a SmileBasic style graphics library wrapper for Lua/LOVE http://smilebasicsource.com/forum?ftid=1640. That might prove useful or close enough to what you want. The real problem of course is that while you can make a SmileBasic work alike or variant, it shouldn't be exactly the same so you don't get hit with a lawsuit. You also can't bundle any of the graphics, sounds, or built in programs. However on the plus side you wouldn't need otyax, you would already be on windows/linux and have a real window manager and file system. You wouldn't need SBAPI either since you can just upload the files to GitHub or basically anywhere on the internet. No petit Modem needed either. So, would I recommend this, is it a good idea, can it be done? Well it is possible although you shouldn't make an exact clone. I really wouldn't recommend it. This site is largely populated by 12 year olds who will put any language they have written a hello world program in on their resume. So I don't think you talent pool has much to draw on for this sort of work. Any old Codgers like me don't have much spare time to help you out either what with 9 to 5 jobs and all. So, what do I recommend. Well, you could try adapting programs to an existing variant listed above or .......... Just learn to program on a commonly used language. My real recommendations
  • Python
  • JavaScript/TypeScript
  • C#
  • Java
If you go for any Basic variant then go for VB.net as it is a real skill to put on a resume. Lua is good if this is just for fun.

BASIC has been ported and remade quite a few times over the years. You can get a taste of just how often at this link: https://en.m.wikipedia.org/wiki/List_of_BASIC_dialects. Most of those are old and defunct of course. If all you want is a version of Basic on Windows to make games with you could look at one of the following. I haven't used any of the following besides VB.net and FuzeBasic. VB.net is not really game oriented and Fuze is locked up behind a login wall at the moment. For open source versions you may want to check out: I haven't personally used any of those, but you should be able to make your own variant with them I seem to remember The V360 was making a SmileBasic style graphics library wrapper for Lua/LOVE http://smilebasicsource.com/forum?ftid=1640. That might prove useful or close enough to what you want. The real problem of course is that while you can make a SmileBasic work alike or variant, it shouldn't be exactly the same so you don't get hit with a lawsuit. You also can't bundle any of the graphics, sounds, or built in programs. However on the plus side you wouldn't need otyax, you would already be on windows/linux and have a real window manager and file system. You wouldn't need SBAPI either since you can just upload the files to GitHub or basically anywhere on the internet. No petit Modem needed either. So, would I recommend this, is it a good idea, can it be done? Well it is possible although you shouldn't make an exact clone. I really wouldn't recommend it. This site is largely populated by 12 year olds who will put any language they have written a hello world program in on their resume. So I don't think you talent pool has much to draw on for this sort of work. Any old Codgers like me don't have much spare time to help you out either what with 9 to 5 jobs and all. So, what do I recommend. Well, you could try adapting programs to an existing variant listed above or .......... Just learn to program on a commonly used language. My real recommendations
  • Python
  • JavaScript/TypeScript
  • C#
  • Java
If you go for any Basic variant then go for VB.net as it is a real skill to put on a resume. Lua is good if this is just for fun.
Thanks for the recommendations, and I know about how there may be legal issues, but I really just want to do this for fun. I guess I'll ask a SmileBoom official (such as notohoho) about this beforehand, so I can make sure it would be okay to go through with something like this. One way I can probably get around including the samples/assets is posting them on SmileBASIC 4's servers, then having the open-source SmileBASIC download them via SBAPI. I would still like to use SBAPI because I want to see if I can make a 1:1 visual and almost functional recreation of SmileBASIC 4 (with help of course, because there's no way I can do this on my own).

I know this is for SmileBASIC 3, but projects like this have already been tackled at. A lot more notable things have already been created for SmileBASIC 3, so it would probably be more worthwhile to contribute to this project or fork it instead of making something new. https://github.com/otya128/otyaSMILEBASIC

I know this is for SmileBASIC 3, but projects like this have already been tackled at. A lot more notable things have already been created for SmileBASIC 3, so it would probably be more worthwhile to contribute to this project or fork it instead of making something new. https://github.com/otya128/otyaSMILEBASIC
The problem with otyasmilebasic though is that it's coded in D. I could try to port over some of its code to a different language, but I don't want the experience to be like otyasmilebasic, I want to aim for a similar experience to SmileBASIC 4 on the Switch (UI and all) so it would be easier to port to other platforms. A more Windows-focused SmileBASIC is a project I could probably tackle at some other point in time, especially if this project turns out well. I'm leaning towards coding it in C++, which is the language SmileBASIC 4 is currently coded in. How hard is it to code with C++? And is it possible to code a Wii homebrew application using it? I want to use a language that would be compatible with most platforms.

The problem with otyasmilebasic though is that it's coded in D. ... A more Windows-focused SmileBASIC is a project I could probably tackle at some other point in time, especially if this project turns out well.
I don't really see the practicality of something like this outside of a desktop environment.

The problem with otyasmilebasic though is that it's coded in D. ... A more Windows-focused SmileBASIC is a project I could probably tackle at some other point in time, especially if this project turns out well.
I don't really see the practicality of something like this outside of a desktop environment.
Just for fun. Not really trying to get a real use out of it, I just wanted to experiment. If I made a Windows-focused version though, I would want to design it with way more features than SmileBASIC currently has.

I know this is for SmileBASIC 3, but projects like this have already been tackled by others. SmileBASIC 3 is a better goal because we understand it better and it isn't going to change
The problem with otyasmilebasic though is that it's coded in <a good language>. ... I'm leaning towards coding it in <a bad language>

I know this is for SmileBASIC 3, but projects like this have already been tackled by others. SmileBASIC 3 is a better goal because we understand it better and it isn't going to change
The problem with otyasmilebasic though is that it's coded in <a good language>. ... I'm leaning towards coding it in <a bad language>
Ouch

*starts coding SmileBASIC port in Rust*

*starts coding SmileBASIC port in Rust*
Starts coding a SmileBASIC port in SmileBASIC

Hi HTV04, I've also been interested in this idea. I built this in the past (plug)http://s1meon.art/project/BASIC-Programming.html which compiles an old iOS version of BASIC known as "MiSoft BASIC!" into JavaScript. For the ~6 months I've been working on a SmileBASIC compiler just like this, I have about half of the SB functions ported, and the full SmileBASIC parser completed, but JavaScript maybe was not the right choice because there is no way to get a in-line WAIT/VSYNC in JavaScript (without busy waits which freeze the browser), so you have to be creative and combine blocks of code into sections, which will get executed one after another on different threads (using SetTimeout). However, if it were made in JavaScript, you get 1) high graphical performance and overall stability, and 2) easy accessibility and device compatibility since it's only a webpage. Python would be fun to make this in, however the graphics capabilities are very limited / slow. C# would work well since it does have in-line WAITs. And Java would be a very good direction as well. I'd be interested in working / helping someone to get a SmileBASIC compiler / interpreter out into the wild, I really love the idea especially because of the SmileBASIC API that was recently released, allowing access to pre-existing codebase.

WAIT=f=>new Promise(x=>setTimeout(x,f*1000/60))
PRINT=s=>console.log(s[0])

      PRINT`Hey guys, are you bored of OS'es that do nothing at all?`
await WAIT`398`
      PRINT`Then Jack OS Is for you!!!!!`

Hmm

Okay, this is going to sound completely insane, but here goes: I was thinking recently: "How possible would it be to make a completely open-source version of SmileBASIC 4 from the ground up?" If this was successfully done, we could possibly port SmileBASIC to any platform of choice, such as Windows. What really sparked this idea for me though was Wii homebrew. After testing out some homebrew applications, I felt like SmileBASIC could really fit in. It could have a otyasmilebasic-esque file system, with a dedicated folder for projects and files. It could also use SBAPI to download files, if we can get it working with SmileBASIC 4 projects. If anyone would like to help me with this project, we might be able to go through with it. After all SmileBoom is a small team as it is, so how hard could it be? /s It would probably be very hard, but I would still like to have a go at it if anyone was willing to help. Don't know what language it should be coded in though. I was thinking C++, like the real SmileBASIC is. Don't have much experience with that language though, so I guess I would have learn more about it. If you're interested, please let me know.
AWESOMEEEEEEE!!!!!! I'm really interested on this. Is there any way I can contribute? Here is an idea: We should add new capabilities to the new SmileBASIC Open Source code, like support for Mode 7, Multimedia(?), etc. Example for Mode 7:
init.mode7'Like it's saying: Hey! Initialize Mode 7! Easier to understand, more easier to program.
mode7.rendist,[Render Distance Z],[Sensibility]'This maybe used to the Mode 7's Render Distance.
Or a new way to initialize sprites:
SPSET [Management Number],[Coordinates],[Control Mode],[Button definitions],[ANIM Toggle On/Off],[ANIM Frames],[ANIM Frameskip,Frame 1 skipper,Frame 2 skipper,etc.]'A bit nicer way to put a player sprite without putting lines of code, making SPOFS, SPANIM and the loops for player movement obsolete.

@12Me21 Thank you so much I got it working, I just needed to wrap everything in an async function and use your code!

Okay, this is going to sound completely insane, but here goes: I was thinking recently: "How possible would it be to make a completely open-source version of SmileBASIC 4 from the ground up?" If this was successfully done, we could possibly port SmileBASIC to any platform of choice, such as Windows. What really sparked this idea for me though was Wii homebrew. After testing out some homebrew applications, I felt like SmileBASIC could really fit in. It could have a otyasmilebasic-esque file system, with a dedicated folder for projects and files. It could also use SBAPI to download files, if we can get it working with SmileBASIC 4 projects. If anyone would like to help me with this project, we might be able to go through with it. After all SmileBoom is a small team as it is, so how hard could it be? /s It would probably be very hard, but I would still like to have a go at it if anyone was willing to help. Don't know what language it should be coded in though. I was thinking C++, like the real SmileBASIC is. Don't have much experience with that language though, so I guess I would have learn more about it. If you're interested, please let me know.
AWESOMEEEEEEE!!!!!! I'm really interested on this. Is there any way I can contribute? Here is an idea: We should add new capabilities to the new SmileBASIC Open Source code, like support for Mode 7, Multimedia(?), etc. Example for Mode 7:
init.mode7'Like it's saying: Hey! Initialize Mode 7! Easier to understand, more easier to program.
mode7.rendist,[Render Distance Z],[Sensibility]'This maybe used to the Mode 7's Render Distance.
Or a new way to initialize sprites:
SPSET [Management Number],[Coordinates],[Control Mode],[Button definitions],[ANIM Toggle On/Off],[ANIM Frames],[ANIM Frameskip,Frame 1 skipper,Frame 2 skipper,etc.]'A bit nicer way to put a player sprite without putting lines of code, making SPOFS, SPANIM and the loops for player movement obsolete.
That SPSET idea makes me cry.

Okay, this is going to sound completely insane, but here goes: I was thinking recently: "How possible would it be to make a completely open-source version of SmileBASIC 4 from the ground up?" If this was successfully done, we could possibly port SmileBASIC to any platform of choice, such as Windows. What really sparked this idea for me though was Wii homebrew. After testing out some homebrew applications, I felt like SmileBASIC could really fit in. It could have a otyasmilebasic-esque file system, with a dedicated folder for projects and files. It could also use SBAPI to download files, if we can get it working with SmileBASIC 4 projects. If anyone would like to help me with this project, we might be able to go through with it. After all SmileBoom is a small team as it is, so how hard could it be? /s It would probably be very hard, but I would still like to have a go at it if anyone was willing to help. Don't know what language it should be coded in though. I was thinking C++, like the real SmileBASIC is. Don't have much experience with that language though, so I guess I would have learn more about it. If you're interested, please let me know.
AWESOMEEEEEEE!!!!!! I'm really interested on this. Is there any way I can contribute? Here is an idea: We should add new capabilities to the new SmileBASIC Open Source code, like support for Mode 7, Multimedia(?), etc. Example for Mode 7:
init.mode7'Like it's saying: Hey! Initialize Mode 7! Easier to understand, more easier to program.
mode7.rendist,[Render Distance Z],[Sensibility]'This maybe used to the Mode 7's Render Distance.
Or a new way to initialize sprites:
SPSET [Management Number],[Coordinates],[Control Mode],[Button definitions],[ANIM Toggle On/Off],[ANIM Frames],[ANIM Frameskip,Frame 1 skipper,Frame 2 skipper,etc.]'A bit nicer way to put a player sprite without putting lines of code, making SPOFS, SPANIM and the loops for player movement obsolete.
That SPSET idea makes me cry.
Honestly, I'm more fine with using sprite funtions than I am with that.

If we could add new functions to SmileBASIC, I'd try to do it in a way that's as close to SmileBASIC as possible. For example: A 3D library which can alter the display of existing layers and also draw automatically z-sorted polygons. It would have a system like sprites, only using 3D models as the graphics data, rather than a large spritesheet. For example:
PINIT 1,1,16 'Set up screen, sets 1 unit = 16px, sets perspective(1)/orthographic(0) flag, sets a flag that determines if z-coordinates of sprites and backgrounds should take on the properties of this setup. (0 = no effect on BG/SP, 1 = affect BG, 2 = affect SP, 3 = affect both, 4 = I have no idea this is all just an idea)
VAR points%[32, 3] 'Make the array that we store our model in.
COPY points%, @MODEL_1 'Copy the data in from a model conveniently outside this code preview
PSET 0,points% 'Make a model with the ID of 0, and using the model data we copied in
POFS 0,-26,0,1 'Just off to the left of the screen, and just into the screen enough to be properly seen by the camera.
PANIM 0,"XYZ",-60,26,0,1,0 'Zoom to the right of the screen over 60 frames. Loop this.
'And there you go, a teapot moving at the speed of light!
With that prefix for "Polygon", just like "BackGround", "SPrite", "Graphics", and "Text screen"

Creating an open-source SmileBasic compiler for a desktop computer. With functional sprites, midi, and animation software the same on the 3ds would be a good idea. But, programmed in a more powerful language. Such as C/C++. I guess other languages can also work, such as java or Python. Though the compilation time will be much slower than made in C/C++ which will be much faster.