A True Coding-Free Solution!

Have a thought on how NESmaker can be improved? We are a small team with limited means, but we'd love to hear your ideas!
FerretHallGaming
Posts: 25
Joined: Sat Jan 12, 2019 4:37 am
Location: East Chicago
Contact:

A True Coding-Free Solution!

Post by FerretHallGaming » Tue Jan 15, 2019 10:50 am

So NESMaker isn't my first "Programming Free" game-making software, and I'm sure it's the same for many of you here. I tried Game Maker, Game Salad, Unity, Java, etc. The best and most intuitive program I ever found was a program used to make Android Apps called "Code Blocks". It was a graphical coding interface that used different puzzle-shaped blocks to assemble code. At any time you were a tab-click away from seeing real code you "wrote" by dragging and dropping command-based Lego's. It was made by a college professor to teach about coding, and abandoned for dead on the internet. I see NESMaker and I absolutely love it but I hear the detractors call it a glorified port maker and... in some ways, they're kind of not wrong. With the addition of this system, it would truly be modifiable enough to exceed this insult. So without further ado, I
give you BitBlox! A core component and a true step towards making NESMaker coding free!

Here we see the way Scripts usually look in NESMaker, with one small difference; a tab that allows you to switch from normal view...
Image

to BitBlox view! Here I break down the way creating (what I think is a close approximation of) the same Script.
Image

Here I breakdown beginning a Script in BitBlox
Image

And here I go over all the ideas for Blox I came up with so far, complete with scenarios for usage and how new Blox can be developed.
Image

If this isn't possible, I completely understand, but this idea warrants at the very least a look and a good ponder. I sincerely hope my fellow forumers here can help me get some volume on this post so that maybe it'll be considered. Thank you for taking the time to look, and sorry for the massive pictures :?
User avatar
Mugi
Posts: 807
Joined: Thu Dec 27, 2018 8:30 pm

Re: A True Coding-Free Solution!

Post by Mugi » Tue Jan 15, 2019 10:56 am

truth to be told, i much prefer it without the blocks.

i've never touched 6502 assembly in my life before i got nesmaker (roughly 2 weeks ago) and the way nesmaker makes you look into it if you wish to do something "out of the box" is an extremely efficient way to make people learn how to
actually write the code instead of just playing with the legos.

it's an interesting idea all the same though.
"what are you up to?" "Oh, not much... just... Parallaxing"
- Raftronaut
User avatar
dale_coop
Posts: 4868
Joined: Fri Feb 16, 2018 7:05 am
Location: France

Re: A True Coding-Free Solution!

Post by dale_coop » Tue Jan 15, 2019 12:41 pm

Agree with Mugi (as usual), NESMaker already would give all basic scripts, and demo assets/tiles/... but most important, you can modify all the scripts, make your owns. With bloc you will be too much limited (and/or the "normal" casual users will be more lost in this blox system).
-----
Sorry about my poor english
All I need: A Damn Fine Cup of Coffee
My games: PRESS START GAME / UNDERGROUND ADVENTURE / UNDERGROUND ADVENTURE (Arcade version - Byte-Off-2019)
FerretHallGaming
Posts: 25
Joined: Sat Jan 12, 2019 4:37 am
Location: East Chicago
Contact:

Re: A True Coding-Free Solution!

Post by FerretHallGaming » Tue Jan 15, 2019 5:00 pm

Mugi wrote:
Tue Jan 15, 2019 10:56 am
i've never touched 6502 assembly in my life before i got nesmaker (roughly 2 weeks ago) and the way nesmaker makes you look into it if you wish to do something "out of the box" is an extremely efficient way to make people learn how to
actually write the code instead of just playing with the legos.
You're right, the way things are IS a good way to learn how to write code, and my point is that from its earliest promises, NESMaker was supposed to be about being able to do this with no coding required. This isn't for users like you who can already identify that an NES requires 6502 Assembly. And because there's still the tab that allows you to switch back to code, "playing with the Legos" can actually show you how writing up the code would look if you DID write it by hand. It's literally drag and drop macros and commonly used language. If you see this and immediately think "well coding it up would be easier" then you can stay in the less restrictive Script mode and type away, because this mode is for those of us that just can't wrap our heads around coding language. And it's hard to explain to someone who "gets it" what it's like to just not get coding. It's like a foreign language that others try to teach you by speaking to you in the foreign language.
User avatar
MistSonata
Posts: 318
Joined: Fri Feb 16, 2018 7:10 am

Re: A True Coding-Free Solution!

Post by MistSonata » Tue Jan 15, 2019 5:43 pm

What you're talking about is making a high level programming language to handle the underlying assembly code, which isn't impossible (see cc65 as an example) but it is more inefficient, and on a platform where space and processing power are not in ample supply, efficiency is very important. And that's just talking about writing NES code in C, this idea (while very cool in theory) doesn't really take into account how assembly works. How would you do bitwise operations in this system without making it too complicated for the average user? How does it manage the registers? How does it know when to discard a value in a register and when to store it into a temporary variable to use for something important later?

This is why I don't like the "no coding required" tagline, because while it's technically true, it only applies to things that NESmaker is already pre-programmed to do. It gives people the impression that they can do all sorts of custom things that NESmaker wasn't designed for without even touching the code, when that's definitely not the case.
User avatar
Redherring32
Posts: 455
Joined: Sat Aug 11, 2018 2:48 pm
Location: Usa

Re: A True Coding-Free Solution!

Post by Redherring32 » Tue Jan 15, 2019 5:48 pm

FerretHallGaming wrote:
Tue Jan 15, 2019 5:00 pm
Mugi wrote:
Tue Jan 15, 2019 10:56 am
i've never touched 6502 assembly in my life before i got nesmaker (roughly 2 weeks ago) and the way nesmaker makes you look into it if you wish to do something "out of the box" is an extremely efficient way to make people learn how to
actually write the code instead of just playing with the legos.
You're right, the way things are IS a good way to learn how to write code, and my point is that from its earliest promises, NESMaker was supposed to be about being able to do this with no coding required. This isn't for users like you who can already identify that an NES requires 6502 Assembly. And because there's still the tab that allows you to switch back to code, "playing with the Legos" can actually show you how writing up the code would look if you DID write it by hand. It's literally drag and drop macros and commonly used language. If you see this and immediately think "well coding it up would be easier" then you can stay in the less restrictive Script mode and type away, because this mode is for those of us that just can't wrap our heads around coding language. And it's hard to explain to someone who "gets it" what it's like to just not get coding. It's like a foreign language that others try to teach you by speaking to you in the foreign language.
I agree, if you had the option to switch between modes, those of you who rather just plain coding will be entirely unhindered. At the very least this would be a great way to use Nesmaker to learn asm, I know you may be thinking "isn't it already?!?!" But some people have different ways of learning stuff, and it can be be difficult any other way. Also, at the very least if and when Nesmaker has a built in code editor, it could color code things like macros, commands, and variables. (Not very effective for me. :lol:)
My current WIP game: Shadow: An Adventure In Monochrome, you can also find me over at the Community Discord.

Open Source NES Motherboard
FerretHallGaming
Posts: 25
Joined: Sat Jan 12, 2019 4:37 am
Location: East Chicago
Contact:

Re: A True Coding-Free Solution!

Post by FerretHallGaming » Tue Jan 15, 2019 6:24 pm

MistSonata wrote:
Tue Jan 15, 2019 5:43 pm
What you're talking about is making a high level programming language to handle the underlying assembly code, which isn't impossible (see cc65 as an example) but it is more inefficient, and on a platform where space and processing power are not in ample supply, efficiency is very important. And that's just talking about writing NES code in C, this idea (while very cool in theory) doesn't really take into account how assembly works. How would you do bitwise operations in this system without making it too complicated for the average user? How does it manage the registers? How does it know when to discard a value in a register and when to store it into a temporary variable to use for something important later?

This is why I don't like the "no coding required" tagline, because while it's technically true, it only applies to things that NESmaker is already pre-programmed to do. It gives people the impression that they can do all sorts of custom things that NESmaker wasn't designed for without even touching the code, when that's definitely not the case.

Thank you very much. I wanted a better answer than "learning how to code's better" and you definitely provided it. The bloat something like this may produce may be fatal on a system with such limitations. As for your questions about how it would do these specific things, I don't see those as impossible in this architecture. Scripts for how screens are handled can contain the specifics for how these are done even though the Block itself appears simple, and Blocks can be specific per module so as to fit into an already-working game system.
FerretHallGaming
Posts: 25
Joined: Sat Jan 12, 2019 4:37 am
Location: East Chicago
Contact:

Re: A True Coding-Free Solution!

Post by FerretHallGaming » Tue Jan 15, 2019 6:27 pm

Redherring32 wrote:
Tue Jan 15, 2019 5:48 pm
FerretHallGaming wrote:
Tue Jan 15, 2019 5:00 pm
Mugi wrote:
Tue Jan 15, 2019 10:56 am
i've never touched 6502 assembly in my life before i got nesmaker (roughly 2 weeks ago) and the way nesmaker makes you look into it if you wish to do something "out of the box" is an extremely efficient way to make people learn how to
actually write the code instead of just playing with the legos.
You're right, the way things are IS a good way to learn how to write code, and my point is that from its earliest promises, NESMaker was supposed to be about being able to do this with no coding required. This isn't for users like you who can already identify that an NES requires 6502 Assembly. And because there's still the tab that allows you to switch back to code, "playing with the Legos" can actually show you how writing up the code would look if you DID write it by hand. It's literally drag and drop macros and commonly used language. If you see this and immediately think "well coding it up would be easier" then you can stay in the less restrictive Script mode and type away, because this mode is for those of us that just can't wrap our heads around coding language. And it's hard to explain to someone who "gets it" what it's like to just not get coding. It's like a foreign language that others try to teach you by speaking to you in the foreign language.
I agree, if you had the option to switch between modes, those of you who rather just plain coding will be entirely unhindered. At the very least this would be a great way to use Nesmaker to learn asm, I know you may be thinking "isn't it already?!?!" But some people have different ways of learning stuff, and it can be be difficult any other way. Also, at the very least if and when Nesmaker has a built in code editor, it could color code things like macros, commands, and variables. (Not very effective for me. :lol:)
I can't even read the Macros because they're all crammed into a narrow box to the right of the screen -. - I know it may not be for everyone, but visual aides help visual learners. Taking something complicated and presenting it as something recognizable will always help someone along the way.
User avatar
Kasumi
Posts: 261
Joined: Fri Mar 09, 2018 11:13 pm

Re: A True Coding-Free Solution!

Post by Kasumi » Tue Jan 15, 2019 7:39 pm

MistSonata wrote:
Tue Jan 15, 2019 5:43 pm
How does it manage the registers? How does it know when to discard a value in a register and when to store it into a temporary variable to use for something important later?
C compilers deal with this issue constantly, and they're (typically) very, very good at it. cc65 is not the best, but that's more because enough time hasn't been put into it to make it better than because it's not possible to do. That said, 6502 is not a very good target for (specifically c) compilers because it's traditionally designed around having more free use of the stack. Nothing would stop one from creating a thing with very similar (but more limited) syntax as for as readability.

Compilers can think to use the available values in extremely clever ways that even decently experienced programmers may not think up. If you click that, read, don't skim. The compiler isn't the cause of the bug.

To make bitwise operations easy think about what usual things are actually accomplished by using bitwise operations rather than the concept itself. If it's looking at a specific value that just doesn't have a range of 8 bits, you just give the user control of the range of the value for each variable and you're done. Getting how many bits a given range requires isn't hard for a computer, fitting those arbitrary bits into bytes isn't hard for a computer, and knowing which value to AND with to retrieve them isn't hard, since the computer had to assign which bits the value occupies within the byte itself earlier.

The smallform optimizations programmers make aren't really that magic. There are actually a lot of 6502 programming things that computers would probably be better or at least faster at finding optimizations for. The carry was not changed in the last 100 lines? Neat, we can use bcs/bcc instead of jmp and save a byte. Even in my own games, I tend to have the human readable AND #BUTTONA, bne instead of bmi. (My games store buttons in a different bit order than NES Maker if I recall correctly.) A higher level thing would know BUTTONA was an alias for %10000000 and use BMI. You'd get the human readability AND the byte efficiency.

Something that's worth taking a look at is this: https://godbolt.org/

This shows what the assembly will look like for given C input live. Someone could make something like that for 6502. As you add blocks, it can show what those blocks would look like in 6502 assembly. I've been thinking about this sort of thing a lot. NES Maker doesn't really pass my "easy-to-use" test. And it's for program design reasons, not NES limitation reasons.

Way shorter: Things are bad on NES because there's no real incentive to make things easier for it (compared to other things), rather than because it's not possible. But NES Maker has proven a market for it, so consequently a few developers (myself included) are working on things to make working on it easier. I've given a lot of things a lot of thought, but so far the only thing I've really spent the time improving is asset management. Which has been a long road, but I'll make my time back.

I won't make my time back improving the code side, so if I'm going to spend the time to improving that, I need people to financially support it or it's not worth doing. I'll probably test the waters a bit after the asset management thing finally comes out.
User avatar
MistSonata
Posts: 318
Joined: Fri Feb 16, 2018 7:10 am

Re: A True Coding-Free Solution!

Post by MistSonata » Tue Jan 15, 2019 7:47 pm

FerretHallGaming wrote:
Tue Jan 15, 2019 6:24 pm
MistSonata wrote:
Tue Jan 15, 2019 5:43 pm
What you're talking about is making a high level programming language to handle the underlying assembly code, which isn't impossible (see cc65 as an example) but it is more inefficient, and on a platform where space and processing power are not in ample supply, efficiency is very important. And that's just talking about writing NES code in C, this idea (while very cool in theory) doesn't really take into account how assembly works. How would you do bitwise operations in this system without making it too complicated for the average user? How does it manage the registers? How does it know when to discard a value in a register and when to store it into a temporary variable to use for something important later?

This is why I don't like the "no coding required" tagline, because while it's technically true, it only applies to things that NESmaker is already pre-programmed to do. It gives people the impression that they can do all sorts of custom things that NESmaker wasn't designed for without even touching the code, when that's definitely not the case.

Thank you very much. I wanted a better answer than "learning how to code's better" and you definitely provided it. The bloat something like this may produce may be fatal on a system with such limitations. As for your questions about how it would do these specific things, I don't see those as impossible in this architecture. Scripts for how screens are handled can contain the specifics for how these are done even though the Block itself appears simple, and Blocks can be specific per module so as to fit into an already-working game system.
Well, regardless I don't think Joe would be too interested in something like this, as nice as it would be to have. Feel free to bring up your idea on the FB group if you really want (Joe doesn't frequent the forum much anymore) but I'm sure Joe could list a million more reasons than I could as to why this wouldn't be practical.
Post Reply