Ooh, I know. The revolution is a finalized version of ZC.
:unhappy:
Ooh, I know. The revolution is a finalized version of ZC.
:unhappy:
If you want to bug him, go to irc.esper.net and he's usually in #rom-hacking or #jzd
Haha Jman, we have your cornered now!
Now that this is open again, I was going to ask: Does this have anything to do with the FF1 rom hack Dragoon X Omega II? I saw that you betatested it.....
The revolution is revealed.
The revolution is... confusing.
lol yes, yes it is. It reminds me slightly of ZZTOOP, for some bizarre reason.
I think that with enough scrutinizing, the instructions can be analyzed intensely enough to grasp some sort of ... ... I dunno what to call it. Analyzing a test script can be helpful, so here are two examples from jman.
[font=courier] SETV d0,100
SETV xd,1
SETV yd,1
WAITFRAME
SUBV d0,1
COMPAREV d0,0
GOTOTRUE 9
GOTO 4
SETV d0,100
SETV xd,-1
SETV yd,-1
WAITFRAME
SUBV d0,1
COMPAREV d0,0
GOTOTRUE 1
GOTO 12
QUIT[/font]
This particular script, apparently, causes a single FF Combo to go diagonally up and down. Not much more, I guess. Let's analyze it piece by piece. Remember though, I'm probably just as confused as you are. 😛
[center]<==================================>[/center]
SETV d0,100 \
SETV xd,1 .... } It's setting data to be whatever it needs to be.
SETV yd,1 ... /
d0-d7 - The data registers, this one being 0, set to 100.
xd,1 = X Data Movement of 1
yd,1 = Y Data Movement of 1
SETV, SETR - Set's the contents of the first argument to the contents of the second argument.
[right]Note: V instructions use a designate
argument and a value,
while R instructions use
two designate arguments.[/right]
[center]--> SETV d0,100 (To be used with the following paragraph.) <-- [/center]
The "SETV" is a command to set whatever is to the right of it to be the attribute it's setting. So, considering that it's setting the attributes for an individual FF Combo, (It's a script assigned to whatever FF Combos use this script.) so it's setting this value of data register "0" to be 100.
[center]<==================================>[/center]
WAITFRAME
WAITFRAME - One of the most important commands. It takes no arguments, and tells the script to STOP executing at that point. Execution will resume from the next instruction in the list in the next frame. MAKE SURE YOU HAVE A WAITFRAME WHEREVER NEEDED. USE OF GOTO (described below) CAN POTENTIALLY CAUSE AN INFINITE LOOP WHICH WILL CRASH ZC.
...
I'm honestly not sure what this means. o.o' I can only assume that "Frame" refers to the next animation, but that seems so trivial, concerning that FF combos are just .. combos. Combos Animate. It's just what they DO!
[center]<==================================>[/center]
SUBV [color=green]d0,1[/color]
ADDR, ADDV - Add's the contents of the second argument to the contents of the first argument, storing the result in the first argument.
SUBR, SUBV - Same, only it subtracts the secon argument from the first
So, apparently, it's subtracting a value from another. I think that it's subtracting 1 from d0 Now, d0 has been defined in previous examples as starting at 100. So, I think that each time this runs, it's subtracting 1 from that. So, this is a counter initially set to 100 that is continually decreasing by 1.
[center]<==================================>[/center]
COMPAREV [color=green]d0,0[/color]
It's comparing d0,0 to 0. C'mon. 😛 Obvious. If d0 = 0, it'll execute the lines seen after it.
[center]<==================================>[/center]
GOTOTRUE 9
GOTO - Goto instruction number #. Uses one argument. The instruction number is simply the number of instructions counted down from the top of the list, starting from instruction 1.
Okay, this is actually pretty simple. Suppose it said GOTO 1. That would be: SETV d0,100. It's line 1.
Thus, "GOTOTRUE 9" implies that if the previous statement is true, it'd go to line 9. If it's not, it'll go to line 4. So, it's checking to see that it's been decreasing correctly, .. I .. guess. We should inquire about this. Seems a bit odd.
Huh!? I dont really get it...This looks like some 2.12 or new command lines...
Did I miss somethin'?
Oh. You're back. Hello Rulehy. Yes, I'm just trying to run through this code on my own, and see what makes it tick. Try to follow along if you want. I'm still writing my thoughts in various mystical, dizzying colors.
BTW, Rulehy, look around before asking questions. The answer is usually found in some pinned thread. Why exhibit ignorance when the answer is only a few clicks away?
Err...I just saw it in another thread...O_o;
Sorry,I thought it would be in this thread...
... ... You have the strangest spacebar I've ever seen in a forum user. It doesn't work after commas or periods. Sell it on Ebay. I bet someone would buy it with a vivid enough description. 😛
Yeah, I think I'm going to post that little bit somewhere where more people could see it. I'm working on an extension over at ZCU's review forum.
ShadowTiger wrote:... ... You have the strangest spacebar I've ever seen in a forum user. It doesn't work after commas or periods. Sell it on Ebay. I bet someone would buy it with a vivid enough description. 😛Yeah, I think I'm going to post that little bit somewhere where more people could see it. I'm working on an extension over at ZCU's review forum.
All that just to make a combo move diagonally. In original FF combo form, you just had to set one value to 1 and another to -1. :eyebrow: (Well, if it makes a zigzag line rather than a solid diagonal, then that looks to be the easier way.)
ShadowTiger wrote:... ... You have the strangest spacebar I've ever seen in a forum user. It doesn't work after commas or periods. Sell it on Ebay. I bet someone would buy it with a vivid enough description. 😛
Lol. :lol:
Yea, that's one of those new time saving spacebar features, those are high dollar. 😉
I noticed that the revolution isn't visible in the preview mode.
Cool feature, but it will be a while before I can really set down and try to figure it out.
I have to wait for some brain cells to grow back.
Maybe I can get some of those rotating fireballs figured out one of these days. 😉
Well, I'm gonna be offline for a while. I need to take a cram course of C++. 😉
Note: Frames refer to frames of game logic. To put things in perspective, the game logic is designed to run 60 times per second. Think of them as 'tics'
SETV d0,100
This sets the d0 register to 100. Tis is a counter used to determine how long the ff combo should move for in frames (as I'll explain below)
SETV xd,1
SETV yd,1
Sets the X speed and the Y speed to 1 pixel and1 pixel respectively. This makes the platform move diagnoally lright-down.
WAITFRAME
Lemme explain this a bit further (ignore the (1) for now. When a script executes, it continues executing instructions indefinitely until 1 of three things are found 1) a QUIT statement. 2) The end of a script, and 3) a WAITFRAME statement. What this basically means is that the script stops executing for that particular frame. In the next frame of game logic, the script will resume execution from the satement AFTER the WAITFRAME statement.
SUBV d0,1
Subtracts 1 from the d0 register and puts the result into d0. So, it starts at 100, so thisdecrements it by 1.
COMPAREV d0,0
Checks to see if d0 is equal to 0. Since it's not equal, the TRUEFLAG (an internal flag used by the scripts) is not set. BTW, since d0 is 99 right now, and 99 >= 0, the MOREFLAG will be set, but that's not important right now.
GOTOTRUE 9
GOTO 4
GOTOTRUE will go to the instruction number listed if the TRUEFLAG (described above) is set. Since it isn't set, it will simply skip over this instruction. GOTO goes to the instruction number regardless of anything else. So basically, the logic of this function decrements d0 by 1 every frame (instruction 4 is WAITFRAME, so it jumps to this) until d0 is 0. During this time, the platform moves 1 pixel down and 1 pixel right every frame. When d0 is 0, the TRUEFLAG is set, and GOTOTRUE executes, going to instruction 9 (see below).
SETV d0,100 ; Instruction 9
SETV xd,-1
SETV yd,-1
WAITFRAME ; Instruction 12
SUBV d0,1
COMPAREV d0,0
GOTOTRUE 1
GOTO 12
Now we can figure out the logic of this statement. d0 is set to 100 initially again, and the x accel and y accel values are reversed to -1 and -1 repectvely. Then, a WAITFRAME is read, and on the next frame, it decrements d0 by 1, checks if d0 is equal to 0, then jumps to instruction 1 if it is zero, thus restarting the script. Otherwise, it jumps to instruction 12, where it WAITFRAMES, decrements d0 again, and checks for 0 again. When 0 is reached, z accel and y accel are set to 1,1 again. Thus, the ff combo moves diagnoally right-down for 100 frames, then up-left for 100 frames, repeat ad infinium.
Hope that isnt too hard to understand.
Holy crap. That is hard to grasp.
But I'm sure I'll learn it just like I learned any other things, like the entire ZQuest program in the first place. 😛
Let's see:
SETV d0,100 SETV xd,1
SETV yd,1 WAITFRAME SUBV d0,1 COMPAREV d0,0if(d0 == 0)
GOTOTRUE 9
else
GOTO 4 SETV d0,100 SETV xd,-1
SETV yd,-1 WAITFRAME
SUBV d0,1
COMPAREV d0,0
GOTOTRUE 1
GOTO 12 QUIT:unhappy:
I'll take your word for it. 😉 Okay, I think it's time to actually start learning this scripting thing.
This is definitely one awesome feature. Good job, jman2050.