Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - L. Spiro

Pages: 1 ... 4 5 6 7 8 [9] 10 11 12 13 14 ... 22
201
Completely Unrelated / Re: How, umm, l33t am I.
« on: 2006-05-09 10:13:05 »
For example, am I l33t enough to have my absolutly incredulous spelling accepted, even when it's in complete opposition to well known forum doctrine. Is this true? or are you guys just too leary to bring it to my attention.

Oh, no, certainly not the case.
Trust me; I think of your typing every time I see someone else here lash out at someone else’s poor typing.
Not to imply those people don’t deserve the lashing, as their typing is often even worse than yours, but just to point out that I love you.


L. Spiro

202
Completely Unrelated / Dance, Monkeys, Dance
« on: 2006-05-01 07:33:32 »
Quote from: RPGillespie

That statement invigorates many questions.

Perhaps mankind was not the original "inventor"?
What if God really does exist and earth is simply a "test" of our faith?
Can you prove that God doesn't exist?
If God does exist, and you die, what would you think?
And your answer exemplifies immaculately the mindset of religious people.
It’s not about concrete facts that can be observed; it’s only about the “what if”.
Ironically, religious people can’t handle it when these games are played on them.
Perhaps mankind was the original inventor?
What if God doesn’t exist and Earth is simply a rock floating around the sun?
Can you prove that God exists?
If God doesn’t exist, and you die, what would you think, after wasting your whole life on him?

Why do your questions hold more weight than mine?  Oh!  Because you have the Bible, right?
But the Bible only has meaning to those who chose to believe it.
So, then, doesn’t that mean you’re only “right” because you chose to believe you are “right”?

But hark!  How many religions are there?  And aren’t they all “right” by similar logic?
So if you’re right, then they are wrong, right?  But why would you be more right than they are?
Why are you special?  Their books say their Gods are the only Gods.
Doesn’t that mean you’re wrong?  Clearly they are the ones who are right, right?
But wait, they can’t all be right, or else you would be right too.
Now all that’s left is for one egotistical religion to proclaim that it is correct and all others are wrong, or for all of them to agree they are all wrong.





Quote from: RPGillespie

Believe what you want, I suppose the only way this debate will end is when we die and we'll all learn the truth: Either we cease to exist and lose consiousness forever or we continue to exist in consience, simply without our bodies.
Some also believe they will be reborn after they die, but the only thing anyone knows is that you do get at least one life, and it’s this one right here.
So living this actual factual proved-to-be life that you have right now for the sake of an imaginary skeptical hope-it’s-there life you think you’re going to have (including “life in Heaven”) kind of defeats the purpose of living at all, don’t you think?



What you have is your imagination.
It is easy for you to buy into the things people told you as a child while your mind was still vulnerable to brainwashing (not that it isn’t now).
And using a rebuttal such as, “If God does exist, and you die, what would you think?”, is one of the most traitorous things you can do to your religion.
I’ll let you figure out why.




Quote from: RPGillespie
Perhaps he simply created dinosaurs so we could later have oil?
Or perhaps the Bible is wrong, the Earth wasn’t created in 6 days, and dinosaurs ruled for many many centuries before “man” was even a sperm in a scrotum.
A religious person can only raise questions whose only compulsion for substantiation is an assumed belief in the Bible.
Why don’t you (all religious people) try to pose questions that actually have substance, or admit that your own questions, when asked back at you, cancel your questions out 100%?



Quote from: RPGillespie
…you can prove that it exists and I can go on faith.

No, he can’t prove it, but you may still go on faith, because you also can’t prove he didn’t see it.
That’s the whole foundation of religion in a nutshell.
And you missed it.

You think religions would last if they could be proved (and I mean blatantly) wrong?
Religions are tricky bastards.
They are specifically designed to be so abstract that they can never actually be proved wrong.
Why don’t you read your own Bible, and Bibles from other religions, with this in mind, and try looking for all the ways they use abstractions to obscure their “facts”?


And don’t even think about going off on how history books aren’t more substantiated than the Bible simply because I didn’t see the historical events myself.
The things I see today align quite well with most of the teachings in history books.
I can see landmarks, buildings, geological structures, etc., that fit historical descriptions quite well, unlike with anything that is said to have occurred in the Bible, particularly the great flood.
Even history books know when to admit to things they simply can’t explain, such as Stonehenge.

Quite amazing that ancient humans literally knew everything, from how the planet was created to its flat shape.
I guess humans have really just been getting dumber over the last centuries, huh?


L. Spiro

203
Completely Unrelated / Dance, Monkeys, Dance
« on: 2006-04-30 10:50:23 »
Good people are good people, even if they follow a religion.
Good people do good things because it makes them feel good, even if they follow a religion.

You imply that all people who follow religions should do bad things and go to Hell, or else do good things, be a hypocrite, and go to Hell.


L. Spiro

204
Completely Unrelated / Dance, Monkeys, Dance
« on: 2006-04-30 03:21:58 »
Actually it is pretty accurate.

And as I was just discussing with my boss the night before, religion is by far the worst, stupidest thing man-kind has ever invented.

I find it quite amazing that even today, when mankind is more intelligent than it has ever been, so many people still mindlessly follow some religion or another like a bunch of clueless zombies, blindly following the teachings of their parents.  No need for proof or substantiation; just allow yourself to be brainwashed and you’ll have bliss from then forth.


We also had a deep discussion regarding those imaginary lines in the dirt.
I questioned whether the lines would ever have been drawn if mankind was as advanced then as we are now.
Long ago, mankind needed explanations for things they didn’t understand.
No congregation of humanity was different at that time; they were all seeking answers, and thus multiple religions were born.
To each group of humans, it seems the only answer for the unexplainable was to create some type of “God” in their own images who was responsible for everything they did not understand.
Thus it is very clear that if we were as advanced then as we are now, religion would never have been invented.

But the lines?
The lines mark more than just personal differences.  They mark greed.
Nearly every line people draw in the dirt was originally out of conquest.
Long long ago that was all that was on mankind’s mind.
Nobody stops to consider this.
Nobody stops to consider the idea that mankind had the wrong mindset back when they were drawing all these lines, and that 90% of all these lines need to be redrawn with actual purposes, or just eliminated.
Mankind is suffering today because of the unnatural way lines were drawn long long ago, and now the damage done is too great to reverse.
Because of the way the lines were drawn the first time, people have too much of a hardcoded mindset that that is how it should be and they just take it for granted, assuming the lines are the end-all-be-all definitive measurement of who is who.
Places such as Iraq, Iran, Palestine, Israel, and Niger are now completely lost in this concept.
Many of them are groups of people inside the same borders who drew yet more lines that aren’t on the maps.

It never occurred to them that without the lines and without religion, all those people around them are just…

…people.


L. Spiro

205
Completely Unrelated / Small C++ Test.
« on: 2006-04-29 14:52:31 »
I put up a disclaimer to thwart the evil-doers who want to try to use these tricks.


L. Spiro

206
Completely Unrelated / Whats your level of experience??
« on: 2006-04-29 14:44:35 »
Quote
im sure you have a greater understanding about the languages by doing stuff like save game editors, patches, hi-res and the like.

I can’t speak for others, but in my case I definitely didn’t get it from school.

Yes, absolutely you have to have personal projects in order to understand any language you want to learn.
And not just any personal project, but very specific ones.
Criteria
1: Interesting/Fun.  No matter what your level of dedication is, boring projects burn you out.  If you want to learn the language, create a small project whose results you can see quickly, and of a nature that is highly interesting to you.  This usually means games or utilities related to games you enjoy, as is the case with everyone on this board.
2: Challenging.  You want to learn right?  Then your project should have some feature in it that you don’t yet know how to do, or you want to do better than you did last time.
3: But not too Challenging.  Too much challenge just leads to frustration and burn-out, and after spending so much time on one problem rather than the global project you end up getting less out of the experience anyway.  Pick something above your level, but not too far above your level.
4: Pride.  Put pride into every project.  Every new project is better than the previous.  Take pride in making your next project more organized than your last.  Take pride because your newest project has no memory leaks.  Take pride because your newest project releases perfectly every resource it created.  Take pride because your newest project has not a single bug, and 100% solid, structured, neat, and organized code.
Having pride in your work is the single most important aspect of coding, because when you have pride, you not only take care of all the tiny details and polish/fine-tune your project, you have fun doing it.


When you can decide on a project that meets all of these criteria, get cracking.


My boss won’t hire people unless they have multiple personal projects to show.
School isn’t particularly special; anyone can be taught what a programmer is and does but passion is the only thing that can make an actual programmer.


L. Spiro

207
Completely Unrelated / Small C++ Test.
« on: 2006-04-27 12:36:09 »
Our lines of thought aren’t too far apart; there has just been a slight misunderstanding.

The questions I posed have various intentions, from illustrating short-circuit conditionals to demonstrating undefined and unpredictable results.

Quote
(I should probably mention that the reason I feel so strongly about this is I'm currently porting our code base at work from Win32 to .NET and I've been bitten a few times by code where the person who wrote it just checked "does it work on the compiler I'm using", rather than "is this meant to work at all".)

Incidentally, do you think that programmer would have coded the same way after taking this test?
People are seeing now many examples of types of code to avoid.
From the beginning people were seeing how many different results each compiler would produce, which has not only been fun and interesting, but a learning experience.


Quote
in my mind, the most important point to make with these under virtually any circumstances is that once you use two or more on the same variable between sequence points, the results are undefined. Not "well, it actually only does it once", but literally undefined.

I would like to think most people who took this topic seriously now have a very firm impression of this that will last a lifetime.
Now we have seen just exactly how dangerous it can be to disregard this rule, and more awareness towards the types of situations that can break this rule.

Likewise, a lot of programmers aren’t even aware that there are expressions that yield undefined results.

Spread the knowldege, I say.


L. Spiro

208
Completely Unrelated / Small C++ Test.
« on: 2006-04-27 08:03:37 »
Quote
Spoiler: show
Well, if by "logically deduced" you mean, "make a reasonable guess about what a particular version of a particular compiler might do", then yeah, you can do that. But undefined means just that: the compiler can legally do anything and remain spec-compliant. Can even change between compiler versions, which is why it's never any better than a guessing game.

Spoiler: show
Actually I do mean that, or at least roughly similarly.
The specification specifies when and where postfix/prefix incrementations are supposed to be applied, also stating strictly that after which point the side-effects of these applications are to be final and for further processing discarded.
The reason it states that modifying variables twice between sequence points results in undefined behavior is because both implementations and code combinations are too broad to specify exact results for every situation.
Ultimately, it lays the ground rules, but then covers its tracks by specifying that certain cases are undefined, allowing leniency towards implementation methods.
This is why I stated that, with implementation aside, following the actual guidelines set forth by the ANSI C++ specification to a T, logical deductions can be drawn for most of the problems I have given.


However, by all means, you are correct.  These are deductions and no compiler is guaranteed to handle them “logically”.
Even if you were sure of what to expect, you would still have to waste time testing to make sure the compiler itself does what you expect, and ultimately it’s best to just avoid most of these cases altogether.








Quote
Spoiler: show
3) On some systems, pointers actually contain more information than a memory address: for example, the low order bits contain information such as the type, size and format of data being pointed to, while the high order bits contain the actual addressing information. The comparison rule above is a direct consequence of C++ wanting to allow arbitrary schemes like this (since this is how pointers work in hardware on some CPUs!).

Spoiler: show
In the best-case scenario, this is platform-specific, not part of a standard set by the ANSI C specifications.  In fact this applies to #1 also.
No part of C++ dictates that memory addresses have to be aligned; this is system-dependant which means that system may purposely compile the code to keep things aligned, but is required to do so only because of its own limitations rather than limitations inherent in C++.

No system is required by C++ to use registers a certain way, stacks a certain way, or to save/use pointers a certain way; some types of hardware were created to work this way, but by their own choices.

Again, it’s just not worth mentioning for my intentions in this thread.

Subtracting two pointers is the purpose of that question; nothing more.
I could have provided an example where I used malloc() to create two pointers and then subtracted them this way, and you wouldn’t have had anything to say.
But instead you decided to accuse me of playing a “who knows the most about C++” game and pick apart the nuances of my examples to make a point of your own.
And exactly what is your point?
Maybe you should be very clear on your exact intentions when you go about telling me exactly what things a person should be pointing out if he were to be playing that game.
Because accusing me of playing a “proving” game followed by nit-picking irrelevant details to make sure people know he is on top is just what someone should do, if he were just a tad spiteful.





For the record, I have no beef with you and I eagerly awaited your first reply, because I knew if there was one person here who would know about the tricks behind these questions, it would be you.
This test is for fun, and in the early posts it seemed as if people were actually having fun looking at these weirdo situations, so let’s try to keep it fun, shall we?


L. Spiro

209
Completely Unrelated / Whats your level of experience??
« on: 2006-04-27 03:39:04 »
10 years, starting with TI 81 calculators when I was 14.
I’m only 24 so it’s impossible for me to have too many years of experience, unfortunately, but I will get there eventually.
Patience.


L. Spiro

210
Completely Unrelated / Small C++ Test.
« on: 2006-04-27 03:24:44 »
To RPGillespie:
Spoiler: show
In the left side of the &&, I is compared as 0 (and increased afterwards) so the condition fails immediately and the right side is not evaluated at all.
This is what people mean by “short-circuit” method, and the C/C++ specification dictates that this is the correct behavior for two reasons.
1: Saves time; the right side does not need to be evaluated since the statement can’t be true anyway.
2: Allows you to check a pointer for NULL on the left side, then use indirection on the pointer on the right side.  If the pointer is NULL, the indirection on the left side will not cause an access violation because it isn’t evaluated at all.




To ficedula:
Spoiler: show
Ding ding ding ding!  Congratulations on being the first to note that some of these are undefined.   :D  There are two intentions here:
1: Bring about more awareness towards the types of things you should avoid while coding because the results may not be consistent across compilers.
2: Have a bit of fun by logically deducing what should happen if the ANSI C/C++ specification is not obscured by implementation.  The ANSI C++ specification says explicitly that values modified twice between sequence points yield undefined results, however the actual result can be logically deduced.  Luckily, however, because of the “undefined”/abstract nature of some of these problems, there are multiple correct deductions.



As for your reply to #4:
1: Sound spiteful much?  It’s not a who-understands-the-language-the-most game.
2: For all intents and purposes, there is no need to explain that the int pointers aren’t valid addresses; that much is clear at first glance.  But you are correct to deduce that the specifications don’t specifically define that the validity of constant pointers be verified at all during compilation (in fact doing so may lead to erroneous output across systems), so the result of constants 6 and 2 are just as valid as constants 0x100006 and 0x100002 (and both yield the same result).






And lastly, #7 is not undefined.
Take a second look at the rules for sequence points and order of evaluation.

The result seems undefined because of the two array indices (don’t let the other two I++ expressions mislead you; that’s the trick to this one), however the ANSI C++ specifications do dictate how to handle this situation (that does not mean every compiler will handle it correctly, as we have already seen some compilers as handling other defined expressions incorrectly).
Of course, this should be avoided at all costs, but tinkering with these problems is just for fun.


L. Spiro

211
Completely Unrelated / Small C++ Test.
« on: 2006-04-26 10:47:53 »
Spoiler: show

I get the same result but it may be a Microsoft thing.
They might be choosing their overload based off the same promotion rules I explained before, because neither overload is specifically better than the other except by the precision of the type.

The ANSI C++ definition implies that the 3 should be the immediate return with no code produced, and that its type should be retained, but I would like to see what other compilers return.




L. Spiro

212
Completely Unrelated / Small C++ Test.
« on: 2006-04-26 09:32:26 »
These questions are very clearly not intended to indicate superiority in coding style.
For very clear reasons, you want to avoid coding this way.
But the test is actually to ensure actual understanding of operator precedence and order of evaluation, as such knowledge is valuable in normal code we write.

For example, the key to #2 is
Spoiler: show
to understand the importance of short-circuit code, because it specifically allows the following to be safe:

Code: [Select]
if ( piPointerToInt != NULL && *piPointerToInt  == 3 ) { /* Do something. */ }

This is good coding practice if the people reading/writing the code understand this concept, while new coders may steer away from this, just from lack of understanding.


The key to #7 is
Spoiler: show
understanding completely the order of evaluation.
It is important to know whether the left or right side of assignment expressions is evaluated first, for a start.



#4 is intended
Spoiler: show
to awaken programmers to the fact that pointer subtraction actually exists, and that the result is an int (not a pointer of any kind) that represents the difference in indices between the two addresses, given the specified type.




Quote
I am a 6-year veteran  and I never use these constructs because they are leading only to misunderstandings

And you are absolutely correct in deciding not to use many of these constructions.
But knowledge is always important.




Quote
I have one for you too. What is result of the expression ? Is it int or float ?

( 1 < 2 ) ? 3 : 4.0

Spoiler: show

Coincidentally, I just wrote that part of my own programming language last night, so unfortunately I already covered this on my own too (but did forget to ask it).
It is luck that I have actually written a C compiler, and have been forced to examine the results of all the questions posted here, including this one.



IF THE CONDITIONAL EXPRESSION WAS NOT CONSTANT:
As per the ANSI C++ standard, both values will be promoted based off the same rules that are used when and int and a double are multiplied, added, subtracted, etc.
If either operand is a double, both are promoted to doubles.
If either are floats, both become floats.
If either is an unsigned long, both become unsigned longs.
If either is an unsigned int, both become unsigned ints.
Finally, if none of the above has yet been matched, both sides become regular ints.

This changes per compiler based on sizes of int, etc., and whether or not int64 is supported, but in all cases double takes the cake.

Thus, the result of the expression would be a double in this case, then cast to whatever type is being assigned by this expression.




BUT SINCE THE CONDITIONAL EXPRESSION IS CONSTANT (1 is always less than 2):
The result will be an int.  The conditional expression and the third operand (4.0) will be completely ignored, and the expression is exactly equivalent to just typing “3” in the code instead.



L. Spiro

213
Completely Unrelated / Small C++ Test.
« on: 2006-04-26 07:59:06 »
Quote
What might confuse the vets?

Well your answer for #2 is incorrect, but its’s because you misread the actual question rather than lack of understanding the inner workings of the problem.



The SaiNt, you explain how the value is obtained, but the second part of the question is why?  What is the significance of the value that is returned from that expression?


7:
Code: [Select]
int I = 0;
g_mMyStructArray[I++].sAnotherStruct[++I].iInt = (I++ == 0) ? I++ : -1;

Specify which iInt (g_mMyStructArray[??].sAnotherStruct[??].iInt) will have its value assigned and why.


L. Spiro

214
Completely Unrelated / Small C++ Test.
« on: 2006-04-26 01:48:15 »
Number 4 is the main one that so far no one, including my boss (7-year Ubisoft employee), has gotten.
It simply never happens in real coding.
But for the sake of simplicity let’s assume a standard 32-bit integer is being used.


According to the actual ANSI C specifications, Aaron, your CodeWarrior compiler is wrong.



5:
Code: [Select]
int I = 2;
I = I++;

What is the value of I?

6:
Code: [Select]
int I = 5;
int J = 0;
if ( I++ == ++I ) { J = 1; }

What is the value of J and why?



L. Spiro

215
Completely Unrelated / Small C++ Test.
« on: 2006-04-25 15:52:50 »
Not too hard, but a good tester of just how intimate you are with the language.

Obviously the solutions to all of these problems can be found by simply compiling the code and viewing the results, but that defeats the purpose entirely.

Try to see how many of these you know right off the top of your head.

These are all my own original questions, by the way.


DISCLAIMER: THESE QUESTIONS ARE NOT INTENDED TO BE EXAMPLES OF QUALITY CODE.  IN FACT, THE ANSWERS TO MOST THESE QUESTIONS DEMONSTRATE EXACTLY WHY YOU SHOULD NOT CODE THIS WAY.



1:
Code: [Select]
int I = 30;
int J = ((I++) + I++);

What is the value of J?

2:
Code: [Select]
int I = 0;
int J = 0;
if ( I++ == 1 && I++ == 2 ) { J = 1; }

What is the value of I after this entire code segment is processed?  Why is this significant?

3:
Code: [Select]
int I = 0;
int J = ( I++ == 1 || ++I == 1 ) ? ++I : I++;

What is the value of J?

4:
Code: [Select]
(int *)6 - (int *)2
What is the result of this expression and why?





L. Spiro

216
Completely Unrelated / Post Your Desktop
« on: 2006-04-22 13:29:35 »
Well I admit the picture on my home computer doesn’t exactly fit the screen dimensions.
To post an actual screenshot would require storing it on my thumb drive and then copying it over to my work computer for uploading on my site.

Of course taking a screenshot of my work computer is simple since I was already using it to write that post.

But the shape of my home computer is odd; it’s a notebook with a wide screen.




Quote
What do you do for a living?? I see CS and FF VII on your work computer lol

I make video games.
Before I got my notebook, my work computer was also my personal computer.
I still use it for some personal things but now I try to keep everything on my own computer.
But I still play all first-person shooter games on my work computer because the keyboard/mouse is easier to use for that.





Quote
Google will not always get you the right answer. I'll stick with my Anatomy books at med school.

I came off a bit harshly without intending to do so.
And I didn’t mean to imply you were flat-out wrong or that you would purposely provide misinformation.
I wasn’t sure where you were getting your information, but science in general has had a death-grip on my curiosity since I was a child, and the mechanics of eyesight was one thing that peeked my curiosity from an early age.
More recently, I got a refresher on the relationship between the eye and carotene on The Discovery Channel (the only network I watched until they decided to replace it with some damn Thai news show).

So, yes, there is a load of misinformation floating about online, but I flagged your original post as erroneous because it conflicted with the things I had known from my own offline studies.
In this case, I used online research to get the exact terms for the reflective layers in each type of eye, and found out a few things along the way.



But I didn’t mean to step on your toes.
Sorry.
On one hand I felt it was like your time to shine, and I didn’t want to ruin it.
But on the other hand the information was a bit flawed and I didn’t want to allow that either.
I chose one evil over the other.


L. Spiro

217
Completely Unrelated / Post Your Desktop
« on: 2006-04-21 15:17:28 »
Yes, that is one reason rabbits see well in the dark, but carotene is found in green-leaved plants also.
Humans benefits from eating leaves/carrots too, but without the reflective layer we just can’t keep up.

Then there are eagles, which have yet another nifty-spiff eye layer to sharpen images and block out bright light, but I would have to do more Google work to remember the name of it.  :wink:



My desktop isn’t too surprising.

I draw my own avatars/desktops.


Though that is actually my work computer.

My home computer has this on it.


L. Spiro

218
Completely Unrelated / Post Your Desktop
« on: 2006-04-21 12:22:02 »
There was one other copy/paste quote from another site, but unfortunately I don’t have it right now.
Try a search for “Pet Eye Photograph”.

This is the actual quoted text:
Quote
“Tapetal color can vary to some extent with coat color. Some animals, and a few dog and cat breeds (for instance, blue point siamese cats), have no tapetal pigmentation. These animals show a red reflex as humans.”


Information is all around for those caring to seek.


I also learned two things during the writing of that essay; while I was already aware of how carotene was used in the eye (my search for “Cone Rod Eye Carotene” led me to that page in the first place), I was not aware of its relationship to vitamin A.   :D
I was also not aware that the color of the tapetum was based on the coat color (as quoted above), but in fact I had believed it was based entirely on camera angle and light intensity.


That’s why I go full-force when I research something; it takes time but nothing is more valuable than knowledge.


L. Spiro

219
Completely Unrelated / Post Your Desktop
« on: 2006-04-21 07:38:07 »
You make it seems as if only dogs have this fluid.

Nearly every animal has this fluid, including humans, and it is not the reason for night vision.

This deals with cones, rods, carotene, and the tapetum.

Vitamin A starts as beta-carotene, one of the families of plant chemicals known as carote noids.  These exist in green-leaf plants, carrots, and some other types.
When we eat these types of plants, we convert it into other types of vitamin A called retinols.
In the eye, beta-carotene is converted to the aldehyde form of vitamin A called retinaldehyde and bounds to a protein called opsin, which resides in rods and cones.
These line the back of the eye and are what trigger the transient excitation of electrical energy that our brains use to interpret visually the world we see.

As long as there is enough beta-carotene in the retina, rods and cones can do their respective jobs (offering both color vision and night vision).

Rods are more sensitive to light than cones, and in the time of need they will absorb more carotene to help a person/animal see better at night.
This process involves the dilation of the retina to allow more light in and the gradual absorption of beta-carotene, which is why night vision is gradual; when the lights go out, you are immediately blinded until your rods can adjust.
Likewise, when the lights are turned on your rods must disperse of more beta-carotene, until which time your eyes will burn from over stimulation.

Although functionally the same, animals still have the edge over humans at seeing in the dark.  This has to do with an extra reflective layer animals have called a tapetum.
And this is also related to the devil eyes you see in animal pictures, and red eyes you see in pictures of humans.


In humans, after the eye has been dilated, and a photo is taken, more light will enter the eye and reflect off a human’s choroid.  The effect is always red because the anatomy of our eyes is different from those of animals.  The red comes from blood vessels.
Some cameras uses two flashes to reduce the effect.  The first flash forces the pupil to constrict so that the second flash will not catch so much reflectivity.
Pupil restriction is faster than rods absorbing beta-carotene, so you will still be blinded by both flashes.


However, in animals, the red-eye effect is not always red, and is much more intense.
The green/blue/yellow eye in animals was correctly related to night vision previously in this topic, but incorrectly related to vitreous fluid.
Both night vision and the “pet eye” effect are caused by light bouncing off the animal’s tapetum, which is a reflective layer in the back of the animal’s eye intended to improve vision at night.

Tapetal color can vary to some extent with coat color. Some animals, and a few dog and cat breeds (for instance, blue point siamese cats), have no tapetal pigmentation. These animals show a red reflex as humans.
The color of the eyes in photographs also depends on the angle of the eye relative to the camera.
It is common to take a picture “across” a dog’s face and see one colored eye and one normal eye.


L. Spiro



[Edit]
I forgot to mention that rods are dispersed in higher numbers just outside the center of the eye, decreasing towards the outside of the eye, while cones are entirely focused towards the center of the eye.
This is why, at night, you can’t see anything by looking directly at it.
You must look a bit to the side where the focus on the item will encounter the highest number of rods.
[/Edit]

220
Completely Unrelated / Help-File Editor
« on: 2006-04-18 19:39:26 »
I am getting pretty close to finishing my custom programming language, which will be integrated into my Memory Hacking Software software.

However, I need to really document this language in its fullest, and while I am at it I need to actually document my software too.


I’m doing my own searching as we speak, but I am also asking around if anyone knows any specific free-but-good CHM editor.

Does anyone know any specific free-but-good CHM editors?


L. Spiro

221
Scripting and Reverse Engineering / Introducing Q-Gears
« on: 2006-04-18 15:15:25 »
This project is a load riskier than mine just for the fact that it exposes the file formats, by force.
Then the custom data part, which again pushes towards making it “a game separate from Final Fantasy® VII”.
Lastly, the publicity.

Getting a team together (teams talk, but then again in your case you have no choice if you actually want to see your dream come true), and worse, getting a SourceForge account for it.

For all intents and purposes, legality doesn’t stop people from making illegal things; getting caught does.


I wish you luck with what you’re doing but you need to step back and re-evaluate how you approach it.


L. Spiro

222
Scripting and Reverse Engineering / Introducing Q-Gears
« on: 2006-04-17 13:44:05 »
This post has been magically whisped away.

223
Scripting and Reverse Engineering / Introducing Q-Gears
« on: 2006-04-17 02:31:09 »
So is my project illegal or not?

Last time it was deemed illegal.  It seems to have changed over time.


Not that it changes anything…



L. Spiro

224
Scripting and Reverse Engineering / Introducing Q-Gears
« on: 2006-04-16 09:53:35 »
Online is an extension of the copied engine.
But here the line between technicalities is getting blurred.

This is why I specified that on a technical level the only difference is the open-sourcedness.

After all, Square Enix wouldn’t be able to tell a judge they “feel” I have written a new game; it’s ephemeral.  To prove a case you need solid guidelines and clear definitions, and exact terms for when those boundaries are overstepped.

Incidentally, I can just as easily write my base engine with plug-in support and add online play as a plug-in feature.
Now see how blurry the line gets?
After all, the addition of online play would be inconsequentual to anything related to Final Fantasy.
The base engine is a copy that does nothing but load data and accept commands.
The online layer only interfaces with the base layer so much as sending commands; it has no idea what data is loaded and thus has no relationship with Final Fantasy or Square Enix in any way.



In the end, both would result in the same game, so if implementation is enough to shatter their arguments then they never had an argument in the first place.

It just so happens I am writing my online play as a plug-in feature, seperate from the base engine.
With that being said, I once again would like to know why my game is illegal and this isn’t.


L. Spiro

225
Scripting and Reverse Engineering / Introducing Q-Gears
« on: 2006-04-16 09:23:57 »
But this is exactly what I said years ago.

From the very start, my game was a clone that used the original game’s data or else it wouldn’t run.
And that was understood by all, yet back then my project was “illegal”.
I even explained that my project was not illegal because I don’t distribute any files of theirs, yet I was shot down with someone saying that “copying” their data to RAM violates copyright.

So far the only real difference between our projects on a technical level is that yours is open-sourced, which in fact would make Square Enix a bit more unhappy, since the secrets to decoding their file formats is open for all to see.



So again, why is this legal but mine isn’t?


L. Spiro

Pages: 1 ... 4 5 6 7 8 [9] 10 11 12 13 14 ... 22