Posts for Deep_Loner

1 2
7 8 9 10 11
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
What would the encoders here recommend?
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Someone please put all of the Japanese text into English! EDIT: AND DON'T TELL ME TO GOOGLE IT!!!
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Publishing the movie is a lot harder than just setting a flag to staus:accepted. The encoders here do a lot of work to get quality videos at decent file sizes for publication. I'd go as far as to say that they're the most underrated contributors to the site. Good question though. : P
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
upthorn wrote:
How about a wip that completes level 1, and then don't do another one until you're through level 3?
Earlier in this thread I wrote:
I'll release my next WIP when I complete level two. Unless I get pestered enough to do so sooner. : )
OK. Sounds like a plan! I will post one more thought while I'm here. I kind of see tool-assisted speedrunning as being kind of in its infancy (I know that's surprising to people who have been here a long time). For example, computer software development arose from just a bunch of guys who knew how to program to having standardized practices and procedures to the point that it can now be correctly called an engineering dicipline. From by brief experience trying (and ultimately failing) to make a level edit for Super Mario Brothers 3, the ROM hacking community hasn't quite reached that point yet; it's mostly a "find out for yourself" kind of thing. Perhaps the warez scene ("The Scene" -- thanks moozoh) has. I'm using my time with Rocket Knight Adventures to try to learn more about the actual process of making a tool-assisted speedrun, and how this can be abstracted into things like strategies, variations, sub- and micro-variations, and so on. Maybe someday I'll write a paper on it. : ) And anomolies. I encountered one sub-variation within a variation of a strategy that was a whole quarter-second (out of only a few seconds of gameplay) faster than all the other sub-variations (which were pretty consistant) for no apparant reason. I don't think this would have been discovered without a meticulous and thorough process for testing the variations. That's why I had mentioned that I would TAS Super Mario Brothers 3 after this. I want to learn more about the process of TASing -- and see how much (if at all) such a unified process could improve on an already tightly-optimized run. But yes, once I solve all the variations for level one, I'll post it here. I can't keep myself from mentioning how flattering it is to have some of the most well-respected and veteran TASVideos members so interested in my movie. It's not like just some guy named ILikeAnime4431. : ) Edit: also, one more thing that would help is if anybody knows any other runs I can compare mine to, for the purpose of developing metrics and stealing useful strategies and that kind of thing. : ) So far, this is what I have:
  • Danny Fowler's unpublished version one run.
  • Dan's published version two run.
  • His abandoned version three WIP.
  • Manga_Maniac59's (earlier) abandoned WIP.
  • Mantaniko's cancelled submission.
Unassisted runs would be just as good.
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
KRocketneo wrote:
scwizard wrote:
I send him a myspace PM. He said the link wasn't available yet. When he gives me the link I'll post it in this topic.
Scwizard: You're trying to post in Small Mario in Super Mario World. Your post was off. Focus on the topic instead of writing off topic about Small Mario in Super Mario World.
Dude!! He was responding to a request for a video of a run of SMALL MARIO IN SUPER MARIO WORLD! Like, duh.
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Umm... suddenly nobody's posting. Is this the online forum equivilant of somebody saying something shocking and the whole room goes quiet.....
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
upthorn wrote:
First, shouldn't that
if($show_subsec)
be an
if(!($show_subsec))
Yes, indeed it should. Funny that our computer software engineer overlooked that. ; )
upthorn wrote:
...;
  if($show_subsec) $length = ($length - 0.5); //prevents rounding if subseconds are shown
  $i = (int)($length + 0.5);
...
That works. If PHP supported the C-style ternary operator (I don't know if it does or it doesn't), then I'd write this:
...
  $i = (int)(($length + ($show_subsec ? 0 : 0.5))); 
...
or:
...
  $i = (($show_subsec) ? ((int)($length)) : ((int)($length + 0.5)))
...
upthron wrote:
...
    $res .= preg_replace('@^[0-9]*(\..+)0*$@U', '\1', sprintf('%.2f', $length));
...
Am I correct that the first argument to preg_replace is a GREP expression? I can't possibly imagine that a complex pattern-matching routine is the most efficient solution for the simple operation that we're trying to do here. It's kind of like using a flamethrower to kill a common housefly. It's fun, it's cool, and you can brag about how you did it. But there will always be the person who asks, "Wouldn't it have been quicker and easier just to..." Bisqwit's little practical joke was a good one. I was scratching my head for quite some time. Here's my practical joke on top of that one. <Where> you ask? It's a secret to everybody. ;p
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Wow, people really are interested in this run! I'm not going to release a WIP until level 2 is done, like I said before, just because too many WIPs become frivolous. As for progress... well... be patient. My standards are very high. : ) If there are any suggestions are things you'd like to see in the run, feel free to mention those here.
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Bisqwit wrote:
Can someone fix this code?
Ooh! Ooh! Me! Me! Actually, I've never even touched PHP code (I'm guessing that's what this is) before, but it's enough like C/C++ that I can understand most of it... I'll make comments targeted at non-programmers, since those are the only ones who would need help understanding it anyway. ; ) I notice that the language doesn't seem to enforce data types very much... but anyway...
function FormatMovieLength($length, $show_subsec = false)
{
OK, this defines the that prints the movie length. There are two possible arguments. $length is the memory location of the decimal length in seconds of the movie. Programmers use names for convenience; in this particular programming language, the names must begin with a $ (I guess). The second value indicates whether the programmer wants to show subseconds. The programmer can choose whether to provide a value here or not. If no value is provided, it is assumed that the programmer does not want subseconds displayed.
if(!($length >= 1)) return 'unknown';
If the movie is less than one whole second, the function prints the word "unknown" then exits. This is a logical equivilant of the original code, which I can't post here because Bisqwit has quite a sense of humor! : D
$i = (int)($length + 0.5);
Stores the movie length, rounded up to the nearest whole second, in a new memory location given the very creative name $i. This is a classic and quite clever way for programmers to round numbers. First 0.5 is added to the decimal number. If the number was supposed to be rounded up because the decimal part was greater than 0.5, then this will cause the ones digit to increase. The one's digit will stay the same if the number should not be rounded up. Now here's the clever part: the (int) command (called a "cast") tells the program to convert ($length+0.5) into an integer by simply chopping off anything after the decimal point. This is called "truncation". Thus, the number is rounded.
$res = sprintf('%02d:%02d', (int)($i/60)%60, ($i % 60));
This looks complicated but is actually fairly simple. First the programmer creates a variable, a memory space given a name, named $res (short for $result). $res is going to contain a string of characters, which will be the formatted movie time. sprintf stands for "string print formatted". The first argument '%02d:%02d' tells how the remaining values are to be formatted and breaks down as follows: % tells the program that what follows is formatting information. Otherwise, all other characters would be printed literally. %...d means that the function should insert an integer number into the string. (d stands for decimal, I guess, but the number is actually an integer... numbers with a decimal fraction would be inserted with %f.) The first 0 following % tells the program to format the number with a leading zero. The 2 tells the program that this integer will only have two digits. Thus, %02d tells the program to print a two digit integer with a leading zero if necessary. Because the d ends the formatting information, the next character, :, will be printed literally before the next integer. This should start to look familar as the mm:ss format used for times on the site. The two expressions following '%02d:%02d' tell the program which integers to place before and after the :. We'll see that these expressions indeed calculate the number of minutes and seconds in the movie. (int)($i/60)%60 First the variable $i, which holds the movie length rounded to the nearest second, is divided by 60, then truncated by means of (int). This gives us the whole number of minutes in the movie. The % has a different meaning this time around -- it performs "modulus division", which returns the remainder instead of the usual quotient. Dividing the number of minutes by 60 would usually give us the number of hours in the movie. Modulus dividing the number of minutes by 60 tells us the number of minutes remaining after the hours are subtracted, which is what we wanted here. Edit: I don't know whether the mod division occurs before or after the int cast (order of operations stuff), but it doesn't seem to matter. The same principle of modulus division applies to the second expression, ($i % 60). This time, the number of seconds ($i) is being mod-divided by 60 to give us the number of seconds remaining after the minutes have been accounted for. The character string returned by sprintf, which may look like "07:24", is placed in the memory space used by $res.
if($i >= 3600)
If the number of seconds (%i) is greater than or equal to 3600, i.e. one hour...
$res = sprintf('%d:%s', (int)($i/3600), $res);
... then $res receives a new character string. '%d:%s' tells sprintf to print an integer followed by a : and another character string. The integer is (int)($i/3600), which represents $i (the number of seconds) divided by 3600 (to get the number of hours) truncated to an integer. Thus, so far we might have "2:" as the string. Recall that sprintf was supposed to print another character string after the integer and colon. sprintf simply prints what $res was before receiving the new value, which effectively appends the number of minutes and seconds to the number of hours. The function can do this because $res has not changed. The full string returned by sprintf is then placed as the new value of $res. By this point the string might be "1:07:24". Of course, all of this is ignored if %i was less than 3600.
if($show_subsec)
If the programmer indicated that the function should display the fraction of the number of seconds...
$res .= preg_replace('@^[0-9]*(\..+)0*$@U', '\1', sprintf('%.2f', $length));
Sorry, I can only guess what this one does. I see that preg_replace takes three string values. The first is evidently a GREP expression, which I never bothered to learn. I have no idea what '\1' is for. sprintf('%.2f', $length) returns a string of the original movie length in seconds (neither rounded nor truncated) formatted with two decimal places, but I don't know why $length is not modified here. I think that .= is a concatenation operator but I don't know for sure. However, this is probably where the bug is, although I don't understand the code enough to say any more. Evidently the intent is to append the fractional number of seconds onto the string, but I don't see an if statement that would check whether the number of seconds was rounded up when %i was first calculated. Whether the if statement belongs here or before the $i = (int)($length + 0.5); statement I can't say, because I don't really understand what's going on here. : (
return $res;
}
The value of $res is now returned to the main part of the program. That's it! See, I understood most of it... In C/C++, only integers can be the arguments for the % operator. If PHP allows a floating point value to be the first operand (like in Windows Calculator), the program could look like this...
function FormatMovieLength($length, $show_subsec = false) 
{ 
  if(!($length >= 1)) return 'unknown';
  $to_round = 0;
  if($show_subsec) $to_round = 0.5;
  $i = (int)($length + $to_round); 
  $res = sprintf('%02d:%02d', (int)($i/60)%60, ($i % 60)); 
  if($i >= 3600) $res = sprintf('%d:%s', (int)($i/3600), $res); 
  if($show_subsec) $res = sprintf('%s.%d', $res, (int)(($length%1)*100));
  return $res; 
}
With the idea that $length%1 would return only the fractional part of $length. Otherwise, I would do this...
function FormatMovieLength($length, $show_subsec = false) 
{ 
  if(!($length >= 1)) return 'unknown';
  $to_round = 0;
  if($show_subsec) $to_round = 0.5; 
  $i = (int)($length + $to_round); 
  $res = sprintf('%02d:%02d', (int)($i/60)%60, ($i % 60)); 
  if($i >= 3600) $res = sprintf('%d:%s', (int)($i/3600), $res); 
  if($show_subsec) $res = sprintf('%s.%d', $res, ((int)$length)-(((int)($length))*100));
  return $res; 
}
I may have formatted the sprintf statements wrong with the period. Also, I know that my PHP statements are needlessly redundant because I don't know how the if/else syntax works in that language, or if PHP supports the ternary operator. But you get the idea. I don't see why the code in question needs to be so complicated. But maybe you can enlighten us. ; )
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
DK64_MASTER wrote:
Are you missing the "<" sign on your keyboard?
You're going to find a way to be a wise guy, aren't you? ; ) No, I'm actually trying to post a commentary of the code found here. Try using the < key and see what happens. (edited to remove stupidity)
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Everyone hold your horses until I tell you why I started this thread in the first place, OK?
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Thanks. I'll post back here for what this was for, which has nothing to do with logic.
Post subject: How do I write this in PHP?
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
"If x is not greater than or equal to 943.15." In C/C++ it would look like this...
if ( !(x >= 943.15) )
I want the exact logical equivilant in PHP. I don't want it reworded to "if x is less than 943.15" because that's not what I'm trying to program. If you're curious as to what this is for or why 943.15 is such a special number, I'll tell you later. ; )
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
I don't have the knowledge of others on this forum about this game, so I can't comment about what's possible... I just wanted to add that I think the "small Mario run" (or maybe we can lowercase the 'm' for emphasis) is a very entertaining idea. By the way, can someone provide a link to the video of jimsfriend's unassisted small Mario run?
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
I see that this topic has a lot of interest. I'll just throw in my 2¢ and perhaps shake the pot a little... Maybe it's because I'm not l33t or hardcore or any other synonym of such, but I've never cared about points when playing a video game. Never. My goal always was always either to just beat the game, or beat it as fast as possible, or try to do cool things in the game world (like getting a ton of 1-ups or breaking every brick or something). I would be entertained by a "100%" run of SMB, where the player kills every enemy and breaks every brick possible (except maybe the underground levels, which admittedly would get boring, especially considering use of the jump through walls glitches), gets every coin, or somesuch. But as for a run that kills some enemies and skips others, gets some coins but skips others, etc. etc. just for the "highest possible score"... I would personally find that movie to be inconsistant and not very entertaining. I've always believed that score adds absolutely no entertainment value to a speedrun, tool-assisted or not, with the possible exception of "always gets maximum height bonuses" or something similar. That's my opinion; feel free to hand it to me if you think I'm wrong. And if my post is really The Absolutely Dumbest Thing You've Ever Heard®, then go ahead and flame me... gently... :)
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
I would suggest that this topic be made "sticky" so that the newbies don't post questions like, "How can I make my avatar different like Bisqwit's?" : )
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Chamale wrote:
@ Deep Loner: 1000 people are arrested or sued for downloading music or ROMs in the US, each year. Coconut deaths are surprisingly rare, contrary to popular belief. Only 1-5 a year. If every state has a state lottery once a week, then that's 2600 jackpot winners. 400 people are struck by lightning in the US each year. A quarter die. You are likely to be eaten by a grue, provided A) It is pitch black B) There are no graphics, only text. When these conditions are met, you have a 99.69105% chance of being eaten by a grue.
You really did your research, didn't you? But you forgot something:
Persons with type O+ blood are 25 times more likely to be eaten by a grue than those with other blood types. The factor raises to 36-40 if the blood type is O-. Research into the cause(s) of this strange phenomenon is still ongoing.
Regarding legality... the U.S. Copyright Office link only talks about removing copy protection for noninfringing use.
Persons making noninfringing uses of the following six classes of works will not be subject to the prohibition against circumventing access controls (17 U.S.C. § 1201(a)(1)) during the next three years.
Making ROMs available for download is still illegal. What we need is to answer the question of whether making a tool-assisted speedrun is a "noninfringing use" of intellectual property. Perhaps the "commentary and criticism" argument? :)
Chamale wrote:
But really, we need to get back on topic.
Why would we do something sensible like that? ; )
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
adelikat wrote:
Though someone mentioned using more than 1 character, I don't really know the game well enough to know if that would help.
It would make the movie more entertaining by adding variety at the expense of time. My yes was a "barely" yes, for the reasons cited by adelikat and Truncated.
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
adelikat wrote:
After reading the discussion on this movie, I find chamale's attitude distasteful.
Chamale had a legitimate concern: nobody was watching his movies. I think that what has been posted in response, including discussing game choice and the need for patience, satisfactorily addresses the issue. I don't see anything wrong with his overall attitude.
Post subject: Re: Writing an emulator (need compiler resources)
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Bisqwit wrote:
In the case of the PET emulator linked above, the result would look something like this: http://bisqwit.iki.fi/src/ioccc2005sykespretty.c
You're an awesome guy, Bisqwit!! The details of this program are completely lost on me, but the overall outline seems pretty simple. I'm going to study this. I love the way the author chose, functional, descriptive variable and function names. : )
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
DeHackEd wrote:
If this were GIMP, I would add an alpha channel to the bottom-most layer, and then use the "Clear" command using the selection tool to rip out chunks of the image as transparency. Save.
It is GIMP, just with a modified user interface. You can read the Wikipedia article. What you told me was all I needed to know! Thanks a lot!
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
The GIMP is a popular open-source image editing program that's said to be almost as powerful as many commercial products available. GIMPshop is a modification of The GIMP that makes the program more Windows-friendly and changes the interface to resemble Adobe Photoshop. (Supposedly. I've never used Photoshop.) I suspect that the Transparency menu has something to do with it, but I can't figure it out...
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
L4yer wrote:
Chamale wrote:
See, I really hate to illegally download ROMs. Every game I've made a run of, or that I'm working on, I own or did own. I did once own an NES with Super Mario Bros 1 and 2, and I heard of a couple glitches that can speed up a run, but I can't find any good ROMs. I'm working on the Pokemon Red speedrun, which is an interesting area to be in, but I still don't like to download illegal ROMs. I suppose I will soon, after the Pokemon Speedrun, and if the cops ever come into my house, I'll argue that I only use the ROMs for making TASes. lol.
Actually, this isn't illegal at all if you consider GBA to be obsolete (but not yet I don't think, it's still being produced). Check out section 2 here http://www.copyright.gov/1201/ and being in canada would pretty protect you anyway as there are no concrete laws involving this.
Wow!!! Nice find!!! Although the GameBoy Advance is still "reasonably available in the commercial marketplace"...
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Bisqwit wrote:
Deep Loner wrote:
Stupid question... what's a moogle?
A moogle is a fictional creature that appears frequently in Square's Final Fantasy franchise. More information: http://en.wikipedia.org/wiki/Moogle
Yeah, I found that out, but you posted before I could finish editing my post. I've never owned a Super Nintendo system, you see...
Experienced Forum User
Joined: 12/26/2006
Posts: 256
Location: United States of America
Stupid question... what's a moogle? Edit: Nevermind, I found out already. It's a Final Fantasy creature. That's what happens when one grows up on a Sega Genesis... : )
1 2
7 8 9 10 11