Language…
9 users online: autisticsceptile1993, Batata Douce, DPBOX, Dzing, eltiolavara9, matthwsan, RZRider, Sweetdude, TheBourgyman - Guests: 257 - Bots: 292
Users: 64,795 (2,377 active)
Latest user: mathew

Blockreator - Make blocks without knowing ASM

Originally posted by Rena Kunisaki
Serialization shouldn't be too difficult. Each class needs to be able to write all its important state/config information to a binary stream and read it back again. I doubt these classes have much more than a couple variables?


A bit of digging shows that the .NET framework actually has a built-in method for serialization. I guess we'll see how that goes.

Originally posted by Rena Kunisaki
I wonder how efficient the resulting code is, though... SNES isn't really a place where you can spare cycles, especially when SMW is hogging up most of your CPU time.


It's fairly efficient. The generated code can have a few flaws in certain places, but it's rarely more than a handful of cycles (that, because these are blocks, are usually only run once within a given period of time).

Originally posted by TLMB
Going back to this, is it possibe to have an option to change multiple blocks at once? I tried doing it for 3 other blocks and itself and the code became bulky do the the same routine being pasted into the block.


It's possible, but it would be a bit difficult to find an interface for such an action's dialog. The dialog for the current action is already big and significantly more complicated and imposing than the others, and I'm not sure I want to make it "worse", so to speak. But I'll definitely keep it in mind.

Originally posted by SSBurai
It's pretty good, but it appeared an error.
Every time I created a block with hurt player, it didn't really hurt the player. Help, please.


I'm not having that problem. Are you sure you're using the right events and inserting the block correctly?

Originally posted by Sind
First off, could you tell us a bit about the program itself?
For example, what did you code it in(and with what library(/ies))
Could it be ported to other platforms, or is it Windows-only?


It's coded in C#, and should be compatible with Mono. The code is pretty basic, though, and if someone really dedicated wanted to recode the entire thing in C++ it would be fairly straightforward (if a bit tedious).

Originally posted by Sind
simple - I see that you already have a "do something every x frame " or "every other x frames" code. Think you could incorporate the Framal blocks code(i.e., changing behavior depending on exAnim frame)
link for more info


Yeah, that's a good idea. Next update, definitely.

Originally posted by Sind
possibly less simple - The program right now is a bit to mouse-centric IMO. Think you could add some keyboard shortcuts? For example, if I have marked a line in the commands window, and press enter or insert, it should perform the "add" buttons code. Or if I mark a line in the "actions" window and press del or backspace, it should delete the line. If I press page down or page up it could move the line up or down, respectively. Perhaps also something for the other buttons.


Another good idea. I'll try and see how it goes; capturing keystrokes with .NET forms is ugh though.

Originally posted by Sind
Ideally, one should be able to use the whole thing without using the mouse at all(which right now is actually possible; you just have to endure some very awkward tabbing =P). But of course, having a few shortcuts would be good enough.


Yeah, I never bothered to optimize the tab order. I should get to that.

Originally posted by Sind
Definitely less simple - How possible would it be to allow typing in the "actions" window? I'm going to assume that it's set up in a way that makes this very hard to implement now, but you never know, so I'll ask anyways.


Extremely difficult. The code that generates the action that tests a player's powerup status, for example, looks like this:

Code
return "If the player is " + (branchType.ct == ComparisonType.NotEqual ? "not " : "")
 + enumerations[value].ToLower() + "...";


To match what the user was typing, the program would have to go through every possible action, try every possible value and every possible comparison type and see if the generated string matched what was being typed. Not worth it, in my opinion.


Originally posted by Sind
b) the "Change this block into a Map16 tile" action will insert the routine n times, once for every time you call it. Add a boolean that is set once it has been inserted once, and don't insert it if the boolean is set.


Argh how did I miss that! The whole purpose of having the ability to insert routines that could be JSR'd to like that was so that this didn't happen. It should be fixed now; thank you for reporting that.
I should get a new layout.

Probably won't, though.
What about adding something to spawn all the score and the 1/2/3/5-up extended sprites? That would help me with an experimental block :P
Originally posted by Kipernal
It's coded in C#, and should be compatible with Mono. The code is pretty basic, though, and if someone really dedicated wanted to recode the entire thing in C++ it would be fairly straightforward (if a bit tedious).

Speaking of which, think you could release the source?
I'm mainly interested in looking at it.
I might be able to translate it to C++ with phoenix, but I doubt that's gonna happen =P
Originally posted by Sind
Speaking of which, think you could release the source?
I'm mainly interested in looking at it.
I might be able to translate it to C++ with phoenix, but I doubt that's gonna happen =P


Sure thing; here you go. There are some terrible coding practices exercised within, however. You have been warned.
I should get a new layout.

Probably won't, though.
Originally posted by Kipernal
There are some terrible coding practices exercised within, however. You have been warned.

I often help out other people in my programming class.
After having seen some of the things they do, I can probably survive this =P
Originally posted by Kipernal
Originally posted by Rena Kunisaki
No seriously, providing a simple high-level language to code old 8-bit computers in is exactly what BASIC was designed for. You should study it a bit for some thoughts on how to design this tool. Right now it looks like you can only code by selecting a statement and clicking "add"? (I assume you're not actually trying to parse those English statements in your screenshots o.o) This is a good feature to have, but to have it as the only way, that's inefficient... for anything more than a couple lines people are going to want to be able to type their programs.


This tool isn't meant for massive, game-changing coding, nor is it meant to implement its own programming language. It's meant for blocks that usually, at most, require one or two logic statements to work. Don't get me wrong, I do understand that it's not the most efficient way of going about things, but it's the easiest to understand, and that's my goal. The moment any actual typing is required to code, the entry level goes through the roof, and I've failed.


I know that this isn't quite what we're talking about here, and don't get me wrong, I'm not making a suggestion for your program/what can be done in the future. I know that you're a very busy man.

But, I just wanted to mention how interesting I find the prospects of a high-level language for SMW ASM to be. I know how impossible, or even highly improbable it'd be to make something like that; especially to have it be efficient enough. But say someone were to make something along that line with compatibility for SA-1? It's a no-brainer that high-level programming languages are easier to grasp than ASM, and I'm certain that many interesting feats could be accomplished with something like that.

Once again, I do not mean this to be taken as something of a suggestion, I know that not to be the purpose of the program, but the simple concept is something that grabs my interest.
Random question, but how (or is it eve possible) to detect when mario is tuching a specific corner, like top left?
Your layout has been removed.
I have a suggestion for this tool, which is to do with sprites. How about a few more things for them, like:

If the sprite is/is not being held... (Could be useful for custom blocks that become passable if you have a key)

Make the player drop the sprite.

If the sprite is grabbable/not grabbable... (This could make a block that allows goombas to come in.)

Make the sprite grabbable/not grabbable. (This might be useful if you have a block that only is passable if you have a key, but then immediately be able to use it, say, for a platfrom to get into a door in Kaizo.)
I don't even know what I'm actually doing anymore... will I ever finish a hack?
Originally posted by RainbowShell
If the sprite is grabbable/not grabbable... (This could make a block that allows goombas to come in.)

Make the sprite grabbable/not grabbable. (This might be useful if you have a block that only is passable if you have a key, but then immediately be able to use it, say, for a platfrom to get into a door in Kaizo.)


While these are good ideas, blocks can't read ROM afaik. Especially not the last one, which would require rewriting changing parts of the ROM. But with custom sprites...
Originally posted by Egadd
While these are good ideas, blocks can't read ROM afaik.

Of course they can; how else would they read their own code? Although you are correct that changing whether or not a sprite is grabbable through a block wouldn't be feasible unless the sprite is already set up to allow it.
My YouTube channel
Get the official ASMT resource pack here!

Originally posted by yoshicookiezeus
Originally posted by Egadd
While these are good ideas, blocks can't read ROM afaik.

Of course they can; how else would they read their own code?


Sorry, I meant other ROM.
Any code can read anything in ROM, RAM, or wherever else. It's all just memory. It'd need to know where to look, though.
Renamon is best pony.
I have found a bug. While not selecting anything,And Clicking move up/down it closes the program,due to some error. I beleve this needs to be fixed. #smw{...}
http://youtu.be/TSx7X77Qpa8





I barely have time to myself anymore, so I won't be very active on here anymore. I'm sorry.
I don't know what the state of this project is regarding its beta status, nor what issues have already been reported, but here's something.

Code
db $42

JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP Cape : JMP Fireball
JMP MarioCorner : JMP MarioHead : JMP MarioBody

MarioBelow:
MarioAbove:
RTL

MarioSide:
	LDA $76					; \ If the player is facing left...
	BEQ Label_0000				; /
	JSL $00F606				; > Kill the player.
Label_0000:					; > --------


SpriteV:
SpriteH:
Cape:
Fireball:
MarioCorner:
MarioHead:
MarioBody:
RTL


It seems that one could easily remove the first RTL by moving the MarioAbove and MarioBelow labels, but that's not the biggest issue. Rather, I wanted to make a block that would kill Mario if he was facing left, but the code that was generated appears to be incorrect. $76 is #$00 if Mario faces left according to the RAM Map, but the BEQ would send it straight to RTL.

World Community Grid: Thread | Team
 
Thank you so much for this great tool ! I'v not try it already but surely I will use it in my hack !
Your layout has been removed.
THE CRINGE

also i was a moron and went back and edited my posts with a bunch of cringe-tastic "FUTURE EDIT"s, if you're wondering why they have Last Edited in 2016 on them

original post below btw



Why can't I use If statements with "Shatter the Block"? It's kind of annoying if you want to replicate a Brick Block. (I'm new to this sort of stuff)
EDIT: It appears that this thread is dead. Oh well.
wow
WOW
This is great! Thank you for making this!
Kipernal, this tool had a lot of potential. Too bad it was completely abandoned. Also, it would be nice if I could actually use If statements.

Anyway, this tool is great on the off occasion that I need a simple block...Thanks.
only a question whatr happened whit the tool
ESPACIO EN RENTA