Posts for Zinfidel


1 2
9 10
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
skychase wrote:
Hyped, this game is in serious need of a tas. So many weapons and setups to mess with, risky strats, AI abuse. Just wondering though, would a no-hit run be even possible? Enemies can be so aggresive, i have Project Phantasma arena ptsd.
I'm glad to hear you're still interested in a TAS for this game. My immediate goals have shifted to an any% run for the game, with aborting missions and everything. It's not the interesting, loadout-swapping run you are describing, but there will still necessarily be some exciting fights and maneuvering at the beginning and end of the run. Also lots of exploits. I think that a no-hit run is definitely possible. If you watch JAX's TAS, you will find that he avoids taking any damage in most (all?) missions. Most impressively, he takes no damage when dealing with the cluster****s in the Destroy Floating Mine mission.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
This one isn't that devastating, but it has happened enough times to me now to have become really aggravating. TAStudio open, at the end of my optimized inputs. Turn on recording mode so that I can pick up the controller and do some quick manual testing. Finish my testing, jump to a marker well before the end of the movie to make some changes. Unpause the emulator and watch as my movie seemingly desyncs. Realize later that recording mode was still on and it wiped out a bunch of input.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Thanks to both of you for replying! I can add one more data point to your list of PSX games that use the glibc LCG and stores the value at 0x9010 then! I am familiar with that topic, but was having difficulties locating the address with traditional techniques like watching memory because Armored Core has a tremendous amount of display lag that causes the rand function to "hitch" in unpredictable ways. Most of the time, the rand function is being called dozens of times per frame, so it's always changing, regardless of input, but on *some* lag frames, it stalls completely. This made it very frustrating to try to isolate because I made the assumptions that it would change specifically w/ regard to input, or that it would be different every frame no matter what. Both assumptions proved false! I would like to thank you both again for the entertaining Spyro TAS, and also for the comment about the RNG, as it helped alleviate a lot of frustration for me! Also I'm a sucker for a TAS with voice commentary!
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Hey Nitrofski, I have some questions about how you discovered the RNG for Spyro. You mentioned in the submission that the RNG used was the "usual" glibc LCG for PSX, but with the exception that Spyro used a memory address different from 0x9010. I've been searching high and low for information about the PSX rand function (I've heard it's a BIOS function) but have turned up little, so I'm curious where you learned about this function's favored memory location. My initial idea was to monitor the PSX registers in BizHawk using Lua and watch for common LCG constants to pass through the temp registers, then go to the program counter to see if I found the LCG. Unfortunately it seems that BizHawk doesn't have support for debugging PSX memory, or I straight up don't know how to use the debugger. Once I read your submission post and found that the game I'm working on uses exactly the same RNG parameters, I thought to use callbacks on the memory address to find the LCG, but again, BizHawk doesn't seem to have support for callbacks on PSX right now. So, did you use external tools to disassemble the game and find the rng parameters? Or did you use BizHawk in a manner I'm unfamiliar with? If Armored Core used a different memory address than 0x9010, I don't know that I'd be able to find it currently, so I'm intensely interested in how you did it. Any info helps!
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
I've taken quite a few stabs at the intro mission and I've come up with the following results: Link to video Lots of AI and luck manipulation here. The rifle shots are timed exactly to cause the first Stork's boosters to bug out so it doesn't take off. The rifle shots also stun it so that it can't start a boost. The first laser blade strike is manipulated to be a 6x critical strike. The pathing I took to the first Stork is not arbitrary either. The movements were chosen because (for whatever reason) these exact movements caused the second Stork to come down off of its ledge and join the fight fairly close to the first Stork, which is great, because I can fly directly to it and kill it rather than having to hunt it down. There's an interesting effect where if you use your laser blade as you're descending, while fairly close to the ground, the boost effect of the laser blade homing will cause you to "bounce" off the ground, which is extremely favorable, because it allows you to land and ground boost immediately, rather than waiting for a landing animation. The second laser blade strike is manipulated so that it actually hits twice, owing to strange hitboxes. Each hit is luck manipulated to do about 3x damage, which combined with the single missile hit, kills the second Stork.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
I've written several scripts for Armored Core that provide useful tools, especially for TASing. There is a radar script that draws a large, customizable radar form, a speedometer script that shows you your current speed/acceleration and maximum speed, and a wallhack script that does what it sounds like it does: Link to video Link to video Here are all of the scripts on Github: https://gist.github.com/Zinfidel/d47287cec638f0f915c3d99bccef3a7d UPDATED 5-26-20: adding all of my script work to this post as a sort of "repo" on the forums.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
If what you are trying to do is be clever with arguments so you don't have consider all possible arguments every time, you could do something like this:
Language: lua

registers = {C=2, V=3}; function set_flags(CSPR, flagPairs) for k, v in pairs(flagPairs) do local mask = bit.lshift(1,registers[k]); CSPR = bit.bor(bit.band(CSPR, bit.bnot(mask)), bit.band(bit.lshift(v, registers[k]), mask)); end return CSPR; end while true do local CSPR = 8; t = {C=1,V=0}; print(set_flags(CSPR, t)); emu.frameadvance(); end
This would output "4". Ignoring the bit hacking fuckery, the main gist here is that you set up a table with the names of your registers and their associated position in your integer. Then when you want to set or clear specific bits, you pass in a table with keys that are the register names and either a 0 or a 1 depending on what you're doing. This way you only pass in pairs of registers and values that you want to modify. I literally only tested this to see that it compiles and the sample output is correct, so make sure to test yourself. EDIT: Code inside the for loop that is actually human-readable would look like:
Language: lua

if v then CSPR = bit.set(CSPR, registers[k]); else CSPR = bit.clear(CSPR, registers[k]); end
and you would pass in bools instead of integer 1s and 0s.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Big yes, with a small caveat. The amount of luck manipulation and planning that went into making those missions play out the way they do is amazing. I love the XCOM series and seeing the game put in its place like that is a treat. Newbies firing across the map and nailing Sectoids on their first try is impressive. The fact that manipulating the camera can screw with projectile paths is crazy to me. The caveat is that watching the research and management part of the game get TASed is a little boring. Not enough to reduce the vote to "meh" but it should be said at least. Not much the TASer can do about this.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Unless there is some definition of "core" being used here that I'm unfamiliar with, you can't emulate Brainfuck because it's a programming language, not a hardware specification. If you really want to interpret Brainfuck in BizHawk then you could use this interpreter written in Lua.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Boy, the C-Sides for chapters 6 and 8 were a hell of a ride! Super entertaining run, so much complex routing at break-neck speeds. I managed to watch the entire run in a single sitting it was so mesmerizing. Watching the bosses get completely crushed was quite fun as well. Yes vote!
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Memory wrote:
You don't necessarily have to follow the exact ruleset of the RTA community if a more entertaining TAS could be created by following a different one that allows OOB.
An any% glitched run is good to consider then, as it's several minutes faster, and the mission objectives that can be circumvented this way are pretty boring to begin with!
ThunderAxe31 wrote:
Now that I think about, what about figuring out a possible full-completion definition for this game? That could be a better way to showcase more that the game has to offer. Something like "maximum score" or "all parts unlocked". Note that full-completion can also be accepted for Vault.
"Full-completion" for AC would be a bit strange. One of the most obvious criterion for this category would be completing all missions, but that isn't possible to do before completing the game. The game allows for specific missions routes, where certain missions are mutually exclusive because they represent picking a side between warring corporations. After you finish the game, the missions list becomes "unlocked" and then you could finish the ones you missed, one-by-one, until you were done. So 100% completion actually requires completing the story, then returning for more. All secret parts found would actually require failing a mission - collecting the secret radar part is actually a "breach of contract" mission failure. You can then go and complete the mission later, but the mission fail does occur. Getting to the top of the ranking could be another criterion, and that would involve defeating each other Raven in the missions that they appear rather than running from them or ignoring them. This would be natural part of completing all missions if you were aiming for full-completion anyway. I can't be sure of course because it hasn't been done, but I am guessing that a full-completion run of this game would be several hours long at least.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
CoolHandMike wrote:
Doing a Playaround Any% Without Abort could be the category. Aborting to the end sounds boring. Watching that TAS do things in different ways made things more entertaining. Liked the sniping with rockets, weaving in and out of enemies barely dodging bullets/rockets, and using the sword, that kind of stuff.
Aborting through the game is definitely boring. Here's a speedrun showcasing that strategy: https://www.youtube.com/watch?v=5VX9AJrlIRs. The run's time is quite good of course, but nothing worth watching happens until 21 minutes into the run. Also, you don't get to fight the giant robot!
ThunderAxe31 wrote:
I think that it would be a good idea to follow what the speedrunning community does: "no fail missions/no OoB". However I'm not completely sure about the "no OoB" part. Why do they forbid OoBs? Are these too much overpowered? Regarding the playaround idea, I think it would be harder to make and less likely to be entertaining, so be careful.
For Armored Core, OoB = Out-of-Bounds, referring to a glitch where you can clip out of the level geometry by running into polygon boundaries in a certain way. You can complete several levels much faster than normal by using the glitch to fall into the last area of the map to finish the objective. You can watch JAX do this at about 5:10 in the third TAS video I linked above. I agree that following the standard template for AC speedruns is a good idea. Gives a baseline for comparison. It is a little unfortunate though because the OoB glitches can be fairly amusing to watch, or quite surprising even. As for a playaround, I definitely would prefer to do a speed-oriented run with entertainment trade-offs for sure. JAX already did a pretty good job with his run showing off various facets of the game, and there are so many ways to complete a mission that I feel like a playaround could spiral out of control very quickly. So I guess I'm thinking of a TAS that lies somewhere between what JAX did and a Vault run where you abort to the end of the game - standard speedrun route through the game, but with more interesting loadouts. I haven't done enough research to see if there are alternate routes that could be used that are faster for a TAS yet. There are some fun secrets in the game that could be employed heavily too. There are codes for switching the camera to first-person and fixed modes that could make for some highly entertaining sequences. Stuff like completing objectives off-screen or even from the perspective of the enemy!
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
Sounds like the audio on the commentary video cuts out from 4:44 to 5:46. I haven't watched through the whole video yet in case there are other instances of this happening. Edit: No more audio problems that I saw. I really enjoyed the run. Watching the prince jump around on razor-thin edges and do bizarre impossible jumps was good. Wasn't a lot of downtime besides the cutscenes. The commentary really helped with the entertainment factor too because a lot was happening that wasn't obvious to me by just watching.
Zinfidel
He/Him
Experienced Forum User, Published Author, Player (200)
Joined: 11/21/2019
Posts: 247
Location: Washington
I revisited Armored Core recently for a bit of nostalgia, and after completing it, I realized I'd very much like to see a TAS of the game. There aren't any publications on this site for the game, but I did find a TAS on nicovideo.jp by JAX, split into 4 parts:
  1. https://www.nicovideo.jp/watch/sm16482924
  2. https://www.nicovideo.jp/watch/sm16590860
  3. https://www.nicovideo.jp/watch/sm17077051
  4. https://www.nicovideo.jp/watch/sm17273631
I think the TASer was having desync issues based on some terrible Google translations of the subtitles, which is why they had to do four movies, starting from a save file. I was thinking about doing a TAS for this game too since I think there's a lot of potential, but I have some reservations about the game choice. The fastest possible route through the game involves repeatedly aborting missions as soon as they start to cause the game story to advance. Then you just finish 3 missions and you're done. That would be acceptable for a Vault submission, but it's pretty boring. An entertaining speedrun falls into the "No abort/fail" category, which means we're in Moon territory now. What does everyone (anyone?) think about what would constitute an entertaining run of this game? The Japanese player linked above spends a lot of time changing his AC configuration and finishing missions in slow/non-optimal ways in the name of entertainment. He also chose some particularly slow missions to finish that he didn't have to. Before I discovered JAX's speedrun, I was thinking of trying to record a TAS that still aimed for being as fast as possible, but without using traditional speedrun loadouts, like the gatling gun arms, and instead use weapons that are much harder to use normally like rockets, mines, and laser blades. The gatling gun arms are so ludicrously powerful that even with perfect rocket aim, the gatling guns are still faster at killing in general, just not very interesting to watch. After watching JAX's TAS though, I wonder if an AC TAS wouldn't be interesting enough without a lot of playing around like he did. Something else that concerns me about a TAS for the game is that it would be hard to determine what "optimal" actually is in this game since there's so much latitude in the approaches you can take to finish missions. For reference, here's the world record (??) any% no fail speedrun of the game: https://www.twitch.tv/videos/246088235 Just to test the waters, I managed to finish the qualifier mission in under 10 seconds by using a lot of AI and luck manipulation to get the Storks to land right next to each other, and to get large critical multipliers on laser blade swings. It's not too unorthodox but it is certainly much faster than I've ever seen it done.
1 2
9 10