PDA

View Full Version : Zelda Classic 2.50.2



Saffith
10-23-2015, 12:49 AM
This is it. No betas, no release candidates. See shardstorm.com (http://shardstorm.com/) (since build 1703) for changes since 2.50.1.

Downloads (http://www.zeldaclassic.com/downloads/)

Anarchy_Balsac
10-23-2015, 07:46 AM
I just want to know if there's script or quest compatibility issues or if the old statue behavior can be re-enabled via a quest rule.

Tamamo
10-23-2015, 09:17 AM
https://www.youtube.com/watch?v=_J6-3l3hCm0

Now if we can all just agree on what to do on encryption or those who disagree with the majority take a vow of silence we can finally open source this. "Provided we don't have a consensus yet."

Note that the text above is a joke, and I've received a PM confirming a general consensus yesterday.

Tamamo
10-23-2015, 11:51 AM
That's nes behavior, so it will probably be found in NES Fixes

Saffith
10-23-2015, 12:06 PM
I just want to know if there's script or quest compatibility issues or if the old statue behavior can be re-enabled via a quest rule.
I can't say it occurred to me that it would be a compatibility issue. But I suppose the peahat thing was, too, somehow...
I guess I can add that. We can't put many more rules in 2.50.x, though. There's only one byte left for them.

Tamamo
10-23-2015, 03:52 PM
Actually I'm currently brain storming on doing something rather interesting about this, 2.50.x can use the quest rules that no longer exist however, there's a slight problem and it's a pain in the ass.

Problem: Backwards Compatibility
Solution: We use the deprecated constants from the enum when we run out of room however these have a purpose as they configure how the quest works until you load it ZQuest 2.50.x. That being said they pretty much become worthless at that point and we have access to them as they serve no purpose in builds after they are removed.

Anarchy_Balsac
10-23-2015, 06:25 PM
The problem is that things like that can seriously screw with the quest makers ability to challenge players.

Tamamo
10-23-2015, 09:12 PM
Anarchy_Balsac
Provided this is directed at me and not saffith, actually you cannot activate the deprecated quest rules in 2.50.x. They only exist for backwards compatibilty. THe ones that gave us sparkles and disabled sword beams for example still exist in quest rules.

1. Check the quest's version number to enable old feature or new feature when loading it quest in player.
2. In the editor when a older quest is loaded it must be manually saved now, as it always should be. And it re-configures the quest rules and data for the quest. "Whether sparkles are set up not for example. that was a quest rule back in the day. Actually it was four"
3. We now have access to more bits for quest rules.

Note that will be a long a tiresome process, and I sure in hell ain't started on this until we get this stuff open-sourced. Shouldn't be too much longer though.

Anarchy_Balsac
10-23-2015, 09:37 PM
It was directed at Saffith, LOL. But from what I gather, there is not currently a way to re-enable the old statue behavior.

Gleeok
10-23-2015, 11:13 PM
That rule should be called "Benevolent Statues". :P

Actually, it might be better as an enemy misc value.

Anarchy_Balsac
10-23-2015, 11:33 PM
That rule should be called "Benevolent Statues". :P

Actually, it might be better as an enemy misc value.

Either way, a fix is a fix.

ZoriaRPG
10-24-2015, 03:26 AM
That rule should be called "Benevolent Statues". :P

Actually, it might be better as an enemy misc value.

Agreed. An enemy editor value would be best, to allow selective settings, and set by default to the old behaviour. There are puzzles in several quests that require reflecting at close proximity, that this would break. I wish I noticed that sooner...on Shardstorm, as it is indeed a problem.

Random double-shot should also be an enemy setting.

Things like that are a good argument for never skipping Gamma phase.

Anarchy_Balsac
10-24-2015, 04:23 AM
Sounds like a fast fix is needed then.

And really, ANY enemy buff or nerf should come as an option. I don't know why it didn't occur to anyone this would unbalance quests.

Saffith
10-24-2015, 11:07 AM
These were bug fixes. They were always supposed to do those things. The distance check has been there all along; it just didn't work right. They actually have been firing double fireballs, but it's been almost unnoticeable because the fireballs have been in the same place instead of slightly offset.
Fine, I can make these rules. In the meantime, you could always script them. They're pretty simple.

ZoriaRPG
10-24-2015, 01:01 PM
These were bug fixes. They were always supposed to do those things. The distance check has been there all along; it just didn't work right. They actually have been firing double fireballs, but it's been almost unnoticeable because the fireballs have been in the same place instead of slightly offset.
Fine, I can make these rules. In the meantime, you could always script them. They're pretty simple.

If the fireballs weren't offset, and would impact simultaneously, how did the engine determine damage and priority for them?

Did both induce damage, or was there some 50/50% on which one was in charge of the collision? Seems a bit OT, I know, but it's a question that has arisen before, regarding simultaneous collision, and I don't have a satisfactory answer to give people (e.g. scripters, notably Moosh asked me out of the blue a while back).


Even doing that creates another problem. Shooter type enemies are the only type that doesn't collide with the player. So you can make a stationary "other" type enemy that shoots, but it would either turn the statues into damage combos, or mercy invincibility exploits (if the collision damage is set to 0).

You can override invincibility frames via scripts. I've done it, and I even made a header for it.

Tamamo
10-24-2015, 01:43 PM
Nope, first collision takes priority every other weapon will just die as usual on collision except for ones that persist such as explosions.

CJC
10-24-2015, 03:46 PM
ZoriaRPG, I believe the first collision triggers Link's "invulnerability" phase, so the second fireball strikes and does nothing because Link is temporarily invincible.
EDIT: Since the projectiles on screen are indexed just like enemies, that would mean the first fireball created gets to do damage, then invulnerability is triggered and the second fireball does nothing. This is the same as hitting a bubble to evade an enemy attack--the 0 damage hit triggers invulnerability provided it has a lower index than the enemy attack (on a one frame double collision).


Rather than make it a quest rule, could this be made one of the miscellaneous features of a shooter enemy? Maybe make it a distance variable, with 0 overlapping the two projectiles into a single shot. This would let quest makers define how much the fireballs are offset, to create some unusual 'bullet hell' situations with the build-in engine. It would also save a quest rule, which Saffith said was a nearly exhausted list.



Also, sweetness on the new version, good work ZC Development team!

Anarchy_Balsac
10-24-2015, 09:41 PM
These were bug fixes. They were always supposed to do those things. The distance check has been there all along; it just didn't work right. They actually have been firing double fireballs, but it's been almost unnoticeable because the fireballs have been in the same place instead of slightly offset.
Fine, I can make these rules. In the meantime, you could always script them. They're pretty simple.

It would require creating a script that times the shooting precisely to that of a shooter enemy, and must be done for every screen and every statue.

Wouldn't work for Zelda 4 anyway, because there's a weapon that can disable them. This means, if it's not done based on an NPC locations, the weapon will no longer disable shooting statues. And if IS done based on NPC locations, I'd have to first figure out what NPCs are what, and upon statue nuetralization, can actually make shots happen from a non-statue enemy.

I'm sure there's a way and all, but it would be TONS of work, what with all the testing and stuff I'd have to do. I get that this is how Z1 used to work, the problem is that ZC HASN'T done it for so long that it's now a "fix" that will break many quests.

Tamamo
10-24-2015, 10:01 PM
no just ask a developer to script shooters from scracth for you.

it's 1 in 128 btw right saffith?

Anarchy_Balsac
10-24-2015, 10:44 PM
Even doing that creates another problem. Shooter type enemies are the only type that doesn't collide with the player. So you can make a stationary "other" type enemy that shoots, but it would either turn the statues into damage combos, or mercy invincibility exploits (if the collision damage is set to 0).

Tamamo
10-25-2015, 12:19 AM
Here's another hint...
Use a shooter type but change the weapon to none.

ZoriaRPG
10-25-2015, 04:52 AM
Nope, first collision takes priority every other weapon will just die as usual on collision except for ones that persist such as explosions.

That is what I would expect, and probably what is supposed to happen, but apparently not what Moosh experienced with simultaneous hits. I suspect that damage is calculated before the invincibility frames occur; and in some circumstances it can be applied from more than one source. In fact, I told him that the second collision shouldn't count, for just those reasons...but seemingly it can.



ZoriaRPG, I believe the first collision triggers Link's "invulnerability" phase, so the second fireball strikes and does nothing because Link is temporarily invincible.
EDIT: Since the projectiles on screen are indexed just like enemies, that would mean the first fireball created gets to do damage, then invulnerability is triggered and the second fireball does nothing. This is the same as hitting a bubble to evade an enemy attack--the 0 damage hit triggers invulnerability provided it has a lower index than the enemy attack (on a one frame double collision).



CJC: That's always going to be true, because the hits do not occur in the same frame.

It's not that important, but at least I remembered to ask.
Moosh Get your arse over here, and detail that problem you had with simultaneous collisions with your 'Death' enemy.

Anarchy_Balsac
10-25-2015, 08:26 AM
Here's another hint...
Use a shooter type but change the weapon to none.

Ah you know what, I don't know why I didn't think of that. Even so, there shouldn't be a need for me to go through all the trouble.

Moosh
10-25-2015, 03:16 PM
Moosh Get your arse over here, and detail that problem you had with simultaneous collisions with your 'Death' enemy.
Okay, so it was a dark and stormy night...I was scripting a scythe swinging attack for a boss in Freedom in Chains. The attack had a slash animation made up of about 20 gradually shrinking circle draw commands. I wanted the whole thing to have collision, so I put weapons of approximately the same size under each circle and used ghost.zh to make them only last for one frame. I assumed it would only hit Link once per frame, but in testing it was an instant kill, way more than I'd set the weapons to deal. I figured ZC combines the damage of every weapon colliding with Link in the frame he gets hurt and so I switched to scripted collision instead. With only one weapon being created under Link when he collided with the attack, it worked fine.

ZoriaRPG
10-26-2015, 04:27 AM
Okay, so it was a dark and stormy night...I was scripting a scythe swinging attack for a boss in Freedom in Chains. The attack had a slash animation made up of about 20 gradually shrinking circle draw commands. I wanted the whole thing to have collision, so I put weapons of approximately the same size under each circle and used ghost.zh to make them only last for one frame. I assumed it would only hit Link once per frame, but in testing it was an instant kill, way more than I'd set the weapons to deal. I figured ZC combines the damage of every weapon colliding with Link in the frame he gets hurt and so I switched to scripted collision instead. With only one weapon being created under Link when he collided with the attack, it worked fine.

Clarify one thing please...

Did you set up the dummy weapons to use a ->Power setting to apply damage, or did you use the custom circular collision, and directly modify Link's HP (e.g. Link->HP -= amount) ?

The latter will always stack, per frame.

Moosh
10-26-2015, 05:15 AM
Clarify one thing please...

Did you set up the dummy weapons to use a ->Power setting to apply damage, or did you use the custom circular collision, and directly modify Link's HP (e.g. Link->HP -= amount) ?

The latter will always stack, per frame.
I used weapons. If I hadn't, it'd probably kill me from lack of invincibility frames. :P

ZoriaRPG
10-26-2015, 05:18 AM
I used weapons. If I hadn't, it'd probably kill me from lack of invincibility frames. :P


I'm checking, as I remember something about circular collision, and I never saw your code. Often, circular collision looks like this:



if ( CircularCollision(ew->x, ew->Y, radius1, Link->X, Link->Y, radius2) Link->HP -= val;


...but as you say you used ew->Power, my original point stands, as this may be something that needs examination.

Moosh
10-27-2015, 03:56 AM
I'm checking, as I remember something about circular collision, and I never saw your code. Often, circular collision looks like this:



if ( CircularCollision(ew->x, ew->Y, radius1, Link->X, Link->Y, radius2) Link->HP -= val;


...but as you say you used ew->Power, my original point stands, as this may be something that needs examination.
It's ew->Damage, isn't it? Itemclasses are the ones that use Power I thought. But anyways, yes, I did use a weapon with ew->Damage.

Also, crossposting from the PureZC thread:

const int NPCM_SHOTCOOLDOWN = 0; //NPC->Misc used for fireball shooter cooldown

const int FIREBALL_SHOOTER_COOLDOWN = 80; //Duration of fireball shooter cooldown in frames
const int FIREBALL_SHOOTER_CHANCE = 64; //Chance of firing every frame

void UnforgivingShooters(){
for(int i=1; i<=Screen->NumNPCs(); i++){ //Loops through every enemy, every frame. If you have an enemy loop in your global already, you'll want to combine them
npc n = Screen->LoadNPC(i);
if(n->ID==NPC_SHOOTFBALL){ //Detect the fireball shooter
if(n->Misc[NPCM_SHOTCOOLDOWN]<=FIREBALL_SHOOTER_COOLDOWN){ //Increase the shot timer until the cooldown is over
n->Misc[NPCM_SHOTCOOLDOWN]++;
}
else if(Rand(FIREBALL_SHOOTER_CHANCE)==0){ //Once the cooldown has ended, has a random chance of firing a weapon every frame
Game->PlaySound(SFX_FIREBALL);
eweapon fball = CreateEWeaponAt(EW_FIREBALL, n->X, n->Y);
fball->Angular = true;
fball->Angle = DegtoRad(Angle(n->X, n->Y, Link->X, Link->Y));
fball->Dir = AngleDir4(Angle(n->X, n->Y, Link->X, Link->Y));
fball->Step = 150;
fball->UseSprite(17);
fball->Damage = n->WeaponDamage;
n->Misc[NPCM_SHOTCOOLDOWN] = 0;
}
}
}
}
I wrote a global script for the old shooter behavior in case anybody else is rustled by the change like Anarchy_Balsac was. Just set the Shooter (Fireball) enemy's weapon to none, put the function in your global script, and your shooters will once again have no mercy.

Tamamo
10-27-2015, 09:29 AM
That is correct, power is from itemclasses and it's writable too but isn't saved.
And good job Moosh, I'll cross check it with the source for yeah.

http://2.bp.blogspot.com/-DGGcdZ4KYbA/T5FeDLPuJJI/AAAAAAAACKo/2ofTef2oC0w/s640/good-good-let-the-jimmies-rustle-through-you.png

Tamamo
01-18-2016, 05:24 PM
Actually I'm currently brain storming on doing something rather interesting about this, 2.50.x can use the quest rules that no longer exist however, there's a slight problem and it's a pain in the ass.

Problem: Backwards Compatibility
Solution: We use the deprecated constants from the enum when we run out of room however these have a purpose as they configure how the quest works until you load it ZQuest 2.50.x. That being said they pretty much become worthless at that point and we have access to them as they serve no purpose in builds after they are removed.

Gleeok
Let's put my theory to the test shall we.


//Only new quest rules that make use of deprecated quest rule space should use this. -T
int get_questrule(byte *bitstr,int bit,zquestheader *Header)
{
if(Header.zelda_version < 0x253) //didn't exist yet, and these probably did. so we can't chance it.
return 0;
else
{
bitstr += bit>>3;
return ((*bitstr) >> (bit&7))&1;
}
}

Saffith
01-19-2016, 01:18 AM
Let's not complicate things prematurely. We don't have a lot of bits, but we're probably not going to run out.

Tamamo
01-19-2016, 10:02 AM
Yeah once we run out then we can do this. This is to make sure this solution I mentioned earlier would work.
Also I guaratee you'll run out once I finish implementing the unimplemented stuff. Since some of that requires quest rules. Such as making the wand chargeable which for once does not require adding a lweapon. (don't ask)
Thank god the canes,wands, and candles are different types internally although zscript treats them as the same ID for simplicity sake.

Saffith
01-19-2016, 06:20 PM
... But all that would be a whole new version, so we could just add more rule bytes.
In any case, I'm really hesitant to add major new features right now, because it's so hard to do it without breaking things.

Tamamo
01-19-2016, 08:34 PM
Yeah, me too omae, me too. Some of my plans are for when the source are released, others not so much. "most of which is bug fixing, I keep an eye on that part of the forum for a reason."
Tell me about it. It still makes me sad how much you can break something by changing just one line of code. :(

BurgerKingCenturion
04-06-2016, 07:04 PM
what name do I enter for the 5th quest?

Gleeok
04-06-2016, 08:11 PM
what name do i enter for the 5th quest?

Enter JEAN.

BurgerKingCenturion
04-09-2016, 04:50 PM
where can I find the power bracelet in the 5th quest?

BurgerKingCenturion
04-09-2016, 10:19 PM
where in the 5th quest can I find the recorder?

BurgerKingCenturion
04-11-2016, 05:06 PM
i am tring to find the secret in level 4 "Zol" it says it is in the eye of zol, which one?

Joe_Cracker
08-03-2016, 03:51 PM
Full screen options not working for Mac version.

Zquest editor won't go into full screen while Zelda Classic crashes everytime I try to go into full screen. Will this be fixed before it goes on the website?

Saffith
08-03-2016, 04:56 PM
No, that's something that needs to be fixed in the rewrite. It's not going to work as long as ZC runs in 8-bit color, and it's a very big deal to change that.

Joe_Cracker
08-03-2016, 05:38 PM
My TV is 1080p, and I run my mac at 720p just so I can see what I'm doing. The problem is in the resolution it runs at not whether it's 8-bit or 16-bit 32-bit 64-bit or a million-bit. It's operating resolution. Now Zquest runs at 800x600 and ZC runs at 640x480 and don't tell me you can't change that because I've done that myself in the past. I can tell you you that you haven't done enough for mac users. Download this and set your screens to 1280x720 and see what can be done.

Keep in mind I had to transfer these files to my old Windows 7 PC so I could edit them.

http://www.speedyshare.com/aba5j/zc-2-50-1-mac-721.zip

Gleeok
08-03-2016, 05:49 PM
You can change the window size in the config file by setting "resx, resy" options.

Joe_Cracker
08-03-2016, 06:41 PM
You can change the window size in the config file by setting "resx, resy" options.

Where is this config file? I don't see it in the mac version.

Saffith
08-03-2016, 07:00 PM
In finder, right-click the ZC application and click "Show Package Contents," then go to Contents/Resources. It's ag.cfg.

Joe_Cracker
08-03-2016, 07:40 PM
In finder, right-click the ZC application and click "Show Package Contents," then go to Contents/Resources. It's ag.cfg.

Thanks now how do I do that with the zquest editor? Also give me some resolution levels to experiment with on both zc and editor that would look good at 720p and 1080p

Saffith
08-03-2016, 09:05 PM
Scaling is in integer multiples of 320x240, so the larger sizes are 640x480, 960x720, 1280x960, 1600x1200...

ZQuest works differently. You set the multiple rather than the resolution, and there are different settings for the old and new interfaces. The new ZQuest interface goes by multiples of 800x600, so the next size up is 1600x1200. If you want that, set scale_large=2 in ZQuest's ag.cfg. If you'd rather try the old interface, set small to 1 and set scale to resize it. That one goes by 320x240, so scale=3 is 960x720, and scale=4 is 1280x960.

ZoriaRPG
08-05-2016, 12:50 PM
No, that's something that needs to be fixed in the rewrite. It's not going to work as long as ZC runs in 8-bit color, and it's a very big deal to change that.

Didn't Takuya have a version that did run fullscreen, at one point? I remember this being a huge issue all along, but I've never sen any comprehensive explanation of the cause.

Would using SwitchResX to set the output bit depth to '8' prior to launching ZC as fullscreen accomplish anything?

Saffith
08-05-2016, 03:17 PM
If I understand correctly, the requirement is that the application's color depth matches the desktop's, so that ought to work. I don't see that it's able to do that, though; the only color depth option I'm getting is "Millions of colors."

ZoriaRPG
08-06-2016, 03:47 AM
If I understand correctly, the requirement is that the application's color depth matches the desktop's, so that ought to work. I don't see that it's able to do that, though; the only color depth option I'm getting is "Millions of colors."


Clarify please: Are you using the stock control panel, or one of the custom extensions?

SwitchResX would give 8-bit on real Macs. I'm not sure about in a VM. Also,, the option to use 8-bit existed through 10.4 or 10.5. IDR when it was removed, but it was only removed from the control panel.

SwitchResX and Display Maestro should both restore this option.

If you tried SwitchResX in a VM, and it lacked an 8-bit depth, try Display Maestro. If neither work... What VM are you using, and what OSX version? It's entirely possible that your VM options don't include a virtual display that can use 8-bit depth.

From the command line, you should be able to do:

cscreen -d 8 -x 1024 -y 768

...or whatever x,y size you want to use.

http://www.pyehouse.com/cscreen/

If all of this fails, and you want to upload your VM image somewhere, I'll run it and see if I can find a viable way to drop to 8-bit depth. I can always try running ZC fullscreen on 10.5, but I don't recall if fullscreen is force disabled in the OSX builds. I seem to recall that it is, so I'd need a binary that supports it; unless it's just set by ag.cfg.

SwitchResX:
http://www.madrau.com/

Display Maestro
http://www.macupdate.com/app/mac/30607/display-maestro

If these work, then forcing the desktop depth to 8-bit prior to doing anything else, should work.

Edit/Update:

Here is another binary that can change the bit depth manually:

https://github.com/ponychicken/screenutil/blob/master/README.md

I'd like to find the source to some of these things, so that we can add instructions in zc to store the screen settings, force a bit depth change, and revert the change on exit.

Edit/Update 2: I found one that's open source, and not a binary:

https://github.com/jhford/screenresolution

Supports get/set/list resolution and colour depth:

https://github.com/jhford/screenresolution/blob/master/README

luckilla
12-08-2016, 09:18 PM
I just downloaded version 2.50.2 on my Mac it is corrupt and does not work with any of the installed quests. I tried Link, Zelda, Alpha, Ganon, and Jean none of them worked for me. I have never had problems like this before. I was excited for a new build, but it does not work.

War Lord
12-08-2016, 09:36 PM
I just downloaded version 2.50.2 on my Mac it is corrupt and does not work with any of the installed quests. I tried Link, Zelda, Alpha, Ganon, and Jean none worked for me. I have never had problems like this before. I was excited for a new build, but it does not work.

Can you elaborate a bit? You got it downloaded and it runs, but it won't load at all? Not even the first quest?
I appreciate more detail, and I'll give the download a shot on my mac here shortly either way.

luckilla
12-08-2016, 11:05 PM
Well when it starts up everything is fine watching it start up then watching the beginning none of the item icons show up then I enter to the screen to start new files. When I try to start any of the files it gives me an error message(also everything shows up blank too), and not run any of the files. The first and second quest do not load up or work. It seems like 2.50.2 for mac is corrupt.

War Lord
12-08-2016, 11:57 PM
I just downloaded the installer from the site fresh, and it ran just fine.
What version of MacOS are you on?
I've not upgraded to Sierra and am still on El Capitan at home.
If you're on Sierra I wonder if we have an issue there?
I wouldn't be able to test on a Sierra machine until I get back to work on Monday.

ZoriaRPG
12-09-2016, 02:32 AM
I just downloaded version 2.50.2 on my Mac it is corrupt and does not work with any of the installed quests. I tried Link, Zelda, Alpha, Ganon, and Jean none of them worked for me. I have never had problems like this before. I was excited for a new build, but it does not work.


What version of OSX?

luckilla
12-09-2016, 09:04 AM
My mac has 10.12.1 (1682555) installed. It is Sierra. Looks like it could be an issue with Sierra.

War Lord
12-09-2016, 03:26 PM
I won't be able to test that personally until Monday, but if no one else chimes in by then I'll check back and let you know how it goes.

luckilla
12-09-2016, 05:29 PM
Ok sounds good, I also downloaded and tested build 2.50.3 RC it also does not work properly in Sierra.

luckilla
12-09-2016, 08:51 PM
I have 2.50.1 saved on my mac from the day it was publicly released that works fine for me. I just went to download 2.5.0, and after I did that I had the same problem I did downloading 2.5.2 and 2.5.3 RC1. It seems to me anything I download with the new Sierra mac os 10.12.1 (1682555) version corrupts the the Zelda classic install. It is good to know the issue is not with the builds, but with the install into the new mac OS X version. At least we know more than we did.

luckilla
12-11-2016, 03:29 PM
It looks like it (all the Mac builds) does not need the files it saved to run, the only thing that makes it run is being gaming folder. For some reason it seems any game folder is like a happy spot for the build to run correctly. it did not work correctly in the applications folder. This is weird, but at least I figured out how to fix the problem now.