Posts for ais523

Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
Bobmario511 wrote:
I wonder just how many games can be glitched like this, it's crazy. Yes vote.
Seriously? Probably most of them. The vast majority of released programs end up having exploitable security bugs, at least in their earliest versions. Games are no different, and an exploitable security bug in a game = total control. It's just a matter of trying to find it.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
It's quite easy to underestimate the dedication of video game fans. As long as there's anyone on the Internet willing to play through the game on emulator for you to make the verification movie (and send it to you), that'd be enough. I'm not sure if anyone does Let's Plays of Melee any more, but if they do, that'd be a good place to look, for instance.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
I dislike using nonstandard controllers for TASing for the same reason SDA dislikes controllers with turbo buttons. I am, however, perfectly fine with the use-lots-of-multitaps solution. (Especially because connecting 8 controllers to SMW is an amusing mental image.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
The gameplay looks good as far as it goes, but this seems a lot shorter than other Super Monkey Ball games. Are you sure you were playing on the hardest difficulty? (If there are multiple difficulties, then given that they typically contain entirely disjoint levels in Super Monkey Ball, I guess you'd have to complete all of them to complete the game.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
Warepire wrote:
Ilari wrote:
Oh, and regarding using C++... Stay away from Win32 API as much as possible (especially for GUI tasks), as it is just bad.
When coding for Windows only, please explain this, because as far as I know all CRT functions on one level or another maps to the Win32 API. Which means, that you will still end up using it, it just won't be as apparent from the code.
Unlike Linux, Windows' actual kernel-level syscalls are a long way away from the actual APIs the programmer uses; they're very thick wrappers, rather than thin wrappers. You're getting substantially different functionality if you access the Windows kernel via .NET than if you access it via Win32 (USER/GDI/SYSTEM), as a result.
Regarding C/C++ vs languages like C# / Java, I found that many who developed with C# / Java and then look into learning C/C++ have a higher difficulty remembering to use free/delete (correctly, or at all), and sometimes also have difficulties understanding proper indexing of arrays or other data-containers. It of course depends on what kind of programs you are interested in learning how to develop.
This is because almost every language in existence does the free/delete at the appropriate time automatically for you; this is a solved problem on all but very resource-constrained systems. (Of course, the very resource-constrained systems are exactly the sort of systems on which C is designed to do well. Likewise, C++ is mostly used for games development, which is effectively resource-constrained because most games try to push the hardware to its limits, and thus don't have much to spare.)
What I dislike most with languages like C# and Java though is that they compile into byte-code instead of actual CPU instructions requiring an extra interpreter / re-compiler layer to exist between the machine and the program in order for it to work, making it slower than it has to be. This is a little less of a problem with C#, but still a problem as it wastes CPU needlessly. While CPU power today isn't as limited as it was before, it's nonetheless slightly limiting the possibilities of your program. But this also depends on what you want to develop after learning the language, because today you will require some really advanced or computation heavy programs to really notice a difference.
The penalty from going via bytecode is IIRC something like 1.5× to 2×, which is pretty small compared with the other overheads you get from high-level languages. Java tends to be pretty slow and bloated in practice, but that isn't because it uses bytecode (it's just as slow and bloated if you natively compile it with gcj), it's because Java's libraries have a huge number of levels of abstraction. C# and C++ are likewise noticeably slower than C if you use their standard libraries to their full potential, rather than trying to avoid them as much as possible; convenience tends to come with a performance penalty. (You'll find that the commercial games which are typically written in C++ often ignore large swathes of the language in order to try to get as much performance as possible. It'd be pretty rare to use a reference-counted pointer, for instance, even though such pointers are common in C++ programming more generally.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
EEssentia wrote:
ais523 wrote:
If you badly need to be able to control everything your program does, C is a good choice. But if you're working on a mature platform already (e.g. Windows development), you'll be better off with a language that doesn't force you to do everything yourself.
That depends. C++ is a much better choice than C, where it is possible to use since it allows you full control while remaining a high-end language rivalling Java, C#, etc. Well, C++ is a pretty good all-around choice anyway since it doesn't restrict you to either high or low-level, is portable, etc.
Actually, I'd call C++ a pretty bad all-around choice, for much the same reasons ;) The problem is that you still have to take care of everything yourself, although now you're typically subcontracting the details to various libraries rather than doing it directly; and because C++ gives you so many options, it means that you have to learn all the options to have much of a chance of following someone else's code. I learned C++ back before, say, smart pointers were invented (or at least, had found their way to the textbooks and compilers I used), meaning that I have trouble following anyone else's code that uses them, and they'd likely have similar problems following my old code. In general, I prefer languages that are good at one thing, and appropriate for that sort of problem. As such, I feel C is a better language; it's good at something that doesn't come up very often, but it's usually clearly the right language when it does. Languages that try to be good at everything too often end up doing nothing well…
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
I'd say don't bother if that's the sort of programming you want to do. C is really only designed for situations where you're getting next to no help from the platform, either because it's very low-end and doesn't have an OS (e.g. most old consoles), or because you're trying to do something very high-performance beyond what a typical programming language can provide, or because you're actually writing the platform yourself (e.g. operating system development) and don't have another platform below that to help you out. If you badly need to be able to control everything your program does, C is a good choice. But if you're working on a mature platform already (e.g. Windows development), you'll be better off with a language that doesn't force you to do everything yourself. (Incidentally, if you want to get into Windows development in particular, you probably want to learn C#, which doesn't have much in common with C apart from the name. Too often, though, it seems that developing for Windows in particular isn't actually what you wanted, and you just want a program that anyone can run. In such cases, going for a language that isn't tied to a platform is more worthwhile.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
There's no cheating of any kind involved; all the glitches used in TASes can be done on actual consoles if you press the buttons fast enough. It can be instructive to watch console runs of something like Ocarina of Time; the console players get their glitches frame-perfect via spamming the pause button in order to create lag, slowing the game down enough that they can get all the inputs in at exactly the right moments. Common causes of hyper-speed glitches involve doing something on the first possible frame (in many platformers, if you jump the exact instant you hit the ground, you won't lose speed, meaning you can often maintain a faster-than-normal speed), and messing up a game's wall ejection routines (turn round the instant you hit a wall, and many games will believe you to have entered it from the other side and eject you backwards, pulling you deeper into the wall; and wall ejection is often very fast). Many glitches are actually discovered by players just playing on console, and eventually get added to the TAS, in fact. Sometimes they're found specifically for the TAS, but that's rare (except in games which are very heavily studied).
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
The amount of space needed to write a message to the screen can't be that far off the amount of space needed to copy one byte between arbitrary memory locations, or to jump to an arbitrary memory location. You'd then just need somewhere in RAM to store the program while you were bootstrapping it. FWIW, I suspect the majority of old console games have total control glitches, just people tend not to be looking for them. Anything that crashes a game but only sometimes (like the Coin Case in G/S) is a prime candidate for looking at to see if it's exploitable.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
I personally have no issue with plugging/unplugging controllers that the game is designed to support. I think it's more of a problem if you're attaching unexpected controllers to the game, or things it likewise wasn't designed to support (although possibly still acceptable), but if the game has clearly been written with the expectation that a player might use three controllers and detach one, exploiting a bug in the game's routines for doing that is acceptable.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
If I'm playing a game on an emulator, it's because I'm TASing, so a mouse and keyboard are enough (to give the most accurate possible input). For playing games on my PC generally, I use an Xbox 360 controller, because it works perfectly with Linux. (Its D-pad is also terrible, though; I tend to use the left analog stick as a replacement except in menus.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
We're not working on the NetHack TAS right now (dwangoAC is busy), but when we do, we stream it via termcast.org (which you can access using telnet on Linux and Mac OS X, and PuTTY on Windows). The stream's actually continuously up, but it isn't very interesting when we're not TASing, unless you like staring at a blank screen.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
Someone did total control in a non-timing-sensitive way (i.e. possible without TASing: it looks like they used an emulator but not frame advance): http://forums.glitchcity.info/index.php/topic,6638.0.html The method's a lot slower than the one used in the current TAS, but interesting in its own way. I love seeing tricks that I thought were TAS-only done on console, by the way.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
I've now watched this run. I love the amount of precision in this TAS. So many jumps were made that clearly weren't intended to be possible, and often appeared to stretch the boundaries of possibility even for a TAS. My favourite moment was probably "Crossing the Gap". I expected absurdity (given the level's reputation; it's heavily studied due to being one of the levels playable in individual levels mode), and started out a little disappointed because it appeared to be using quite a banal route through the level. Then something utterly absurd happened, and I laughed out loud :) We even get to see one of the stars, although not collected. I'd be interested in seeing (probably not as a submission, just as a demonstration for your fans) TASed routes for the five most interesting stars. (The one that requires the other stars to be collected beforehand obviously wouldn't be significantly different from the current route; then one of them takes far too long to collect, and another one is an issue of knowing where it is, rather than there being any particular interest in the way it's collected.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
@Patashu: Against some enemies, there's the issue of running out of PP. In general, Pikachu's stats and typing are so bad that it's likely to need a bunch of grinding for experience in order to be able to finish the larger/more difficult battles solo. (Especially against rock/ground types.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
Re the ending: if you 100% the game up to that point (not viable for a speedrun because it requires waiting for several hours at one point), it makes two levers green, meaning you don't have to detour to pull them. That's the intended way to get the 100% ending. You can do the same thing using corner boosts, which is very difficult to do in realtime, but possible (a lot of rewinding is normally required to try them over and over again, although the best players can do it with moderate consistency). Of course, a TAS doesn't have much issue with this.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
For what it's worth, people doing save corruption runs of GBA Pokémon games on console (using a GameCube) cut the power to it, because it detects the reset button and doesn't reset for a couple of seconds until after it's pressed, making it basically impossible to time correctly. In my opinion, save corruption via disconnecting during a save should be considered a separate category, but not disallowed outright. Runs can be interesting both ways.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
What items are disallowed in NBMB?
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
Oh, if the seeding happens on a timer every time the battle is started, I'm suddenly very relieved; that seems to be completely unexploitable at VGC (where you'd surely be noticed if you were using a metronome to time when the battle started in order to aim it approximately, and you wouldn't be able to retry). So the problem would only be for wi-fi play. (And because of your understandable desire to prevent the information as to how that person was cheating getting out, I'll mention the curious behaviour of Hypnosis when battling between DP original and Platinum, and leave it at that. Their method was a lot less clever than yours, though. And I'm curious as to what would happen if the cheater's opponent tried to upload the battle video. My guess is desync, at the least.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
JSmith wrote:
In case you ever need to do it again, Xorns can manipulate luck to some extent without using time by kicking at empty space.
Neat idea. Reordering actions seemed to work well enough, but if we have to slip through walls in the future, that might come in useful too. (Also, what we were doing the first time we were xorning was AI manipulation, which is mostly based on your movements, not the RNG.)
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
hegyak wrote:
It's been silent. How goes the breaking of things?
dwangoAC and I have mostly been busy, but there's been a bit of progress (unfortunately, mostly negative results). The good news is that we found another spare action on Water (getting the bubble to move from beneath us at turn boundary, which we need to spend anyway, in order to save an action moving out from it manually); it takes a bit of manipulation but it's not unreasonable. This gives us at least four or five viable ways to do Astral, via giving us a bit of headroom before the frame rule there. (We still don't know which is fastest, but because of the frame rule, it doesn't matter.) The bad news is that we've been trying to work out how to do the egg setup, and it turns out that there's no way to adjust the timer of an egg once it's been set. (We were testing iceboxes; by NetHack logic they should slow the timer, or at least kill the egg almost immediately like they would in real life, but instead they act identically to chests, i.e. not really useful at all.) So this means that we have to manipulate all the timers to be correct, the instant they're created. At the moment the only real idea we have for this is "stand next to a wall and create the timers one at a time, manipulating in between." There are a couple of ways to create the timers. The fastest in gametime is to create them at the same time that we set the egg species, but that requires manipulating two unlikely events with no chance to manipulate in between, so is probably not viable. Alternatively, we could create the egg, then reset the timer on a later turn (we might have to kill the timer in between to stop it hatching, but that isn't difficult); that takes twice as long but is easier to manipulate. If anyone does know a way to manipulate egg timers (other than via rerolling them with undead turning, which we already know about), please let us know in the thread.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
I'm a competitive Pokémon player myself, and for this and other reasons, I'd get very suspicious if someone insisted on hosting all their wi-fi battles with me. It shouldn't matter for official tournaments, because those are played from the title screen (thus being harder to manipulate), and the DS isn't powered off from one game to the next. (I can still see it being theoretically possible to cheat under those circumstances; e.g. you could power it off and on again without the event staff watching; but the event staff would have a reasonable opportunity to catch someone cheating like that, the same way that they'd have a reasonable opportunity to catch someone switching their cart.) I guess I'd rather the knowledge be public simply because someone else might have already determined the information, and been cheating with it, without such a strong sense of honour. (BTW, if this works on Poké Balls too, the information would be very useful in preparing for tournaments; we could RNG the catches as well as the Pokémon's stats.) But yeah, if someone manages to top the GBU ladder with this (preferably singles, because doubles is used for all official tournaments), it'd be a clear sign to TPCi that something is broken. They wouldn't be able to fix it before probably the sequels to X/Y, though.
Post subject: Re: Debate: allowed or not?
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
Warp wrote:
MrGrunz wrote:
Let's say a game runs with 60 input frames per second and 30 visual frames per second. That means you have 2 frames of input for each visual frame. Wouldn't it be possible on a real console to hold right on frame 1 and left on frame 2 with light speed reflexes to make the game register this as pressing left-right at the same time?
That would happen only if the console polls the controller 60 times per second and buffers the pressed buttons until the application wants to read their state. It doesn't sound like anything that any console or game would do (although that's only a guess from my part.)
Console games basically never do that. Some PC games do, though, because PCs work like that by default and some games never bother to change it. (On the other hand, there's rarely a problem in pressing left+right on a physical PC keyboard; they tend to be completely separate keys.) FWIW, with the SMW submission, I'd like it to mention an official controller that's capable of the input possible. I'm happy if it's not the normal joypad, so long as it's something that Nintendo released that's capable of providing that input.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
I think in-game time is a valid goal for this game, and would be different from realtime. The two differences would be: no damage (unless it saves 3 seconds realtime, which is possible if it lets you sequence break but unlikely), and adding an extra strategy (waiting in the start area in order to get a good angle for completing the stage, which is very important for in-game time runs of the game done by humans). So there's room for a separate category here, if well done.
Editor, Experienced Forum User, Published Author, Player (44)
Joined: 7/11/2010
Posts: 1034
I'd like both encodes to exist. I imagine most people will watch the hacked encode, but sometimes with Sonic runs I've preferred to look at the unhacked one with the player offscreen every now and then.