Posts for FatRatKnight

Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
BadPotato wrote:
Now, about the contest maybe people didn't play the previous DTC, because they felt short in time and if there aren't any serious progress after half the time allowed, they might just drop out. What about expanding the time until the christmas or around it?
Well, I do provide an extra week beyond the usual DTC time. You're asking for more than an extra month. I am a bit hesitant in providing that much extra time. It's a long, long wait to finally get the teams to wrap up their runs. However, this contest is spontaneously created. And the extra time would help to minimize any feelings of stress. I'll wait for further opinions. The general lack of start-up time I've given to this contest shouldn't mean everything is locked in place. If everyone would prefer some adjustments being made, I'll go work something out.
Post subject: Consolation Team Contest (Closed)
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
The contest is closed. My habits, lacking participation, and technical difficulties were the main offenders. I want to see the Sorcerer's Maze TAS continue, regardless of what happened here, however. Since the game selected for Dream Team Contest 4 didn't pan out for many of the teams, I am here to initiate a new contest. I really want to see it work out this year, so here I am bringing up a new contest. I would like to show just how poorly the audience chose our game by taking the least voted game. (The fact it's my favorite choice out of that poll probably biased this decision) Game: Sorcerer's Maze, (U) version, for the Playstation. Emulator: PSXjin v2.0.2 CD-ROM (from movie file): SLUS01495 Other settings: Empty or no memory cards. (Probably doesn't matter, but may as well set it in stone.) In-game options: Hard mode is mandatory. Paddle speed is up to your choice. You will play in 1 Player mode. You are to work on each of the worlds in order: 2 -> 4 -> 1 -> 3 -> 5 -> 6 You will have two free weeks to get yourselves settled in, and to get the game set up properly on your computer, as well as time to get familiar with its mechanics. After that, each world is due for submissions every week, and I will post the "best" submissions of each world here, depending on frame count and MP. These submissions are free to be used by any team for the later weeks. Points are to be assigned for each world TASed, to be later determined how exactly to assign these points. For now, be happy for submitting in each week. Late joiners are always welcome. We'll still put you up into the scoreboard! Goal, primary: Percent of game completed (Players, try to at least beat all the stages. Please?) Goal, secondary: Length of input file, the faster the better. The contest has already started, as I already have revealed the game to TAS. So organize yourselves on the spot and start TASing! Submissions due: Sunday, November 13, 22:00 UTC Submissions due: All times are 22:00 UTC World _2 - Monday November 7th = lapogne36 | DarkKobold (more of a test) World _4 - Monday November 21st lapogne36 World _1 - Monday November 28th World _3 - Monday December 5th World _5 - Monday December 12th World _6 - Monday December 19th World _7 - Monday December 26th World _8 - Monday January 2th World _9 - Monday January 9th World 10 - Monday January 16th (Final submission, unless I'm missing somthing) Submit by Private Message to FatRatKnight (currently under technical issues... Hope to resolve soon) Teams are to be assigned free-for-all. Post you wish to participate, and anyone can say they join you. Maximum team size of 4. You can't refuse any new members into your team, take this into consideration. If there are multiple tiny teams of 1 for a few days, I'll merge you into other teams however I feel like. There are no time restrictions on when a team can be formed, other than the final submission due date. For obvious reason, I suggest earlier rather than later. Use whatever methods are available to produce the perfect TAS! Let's see this breakout-style game broken! Current players: DarkKobold lapogne36 FatRatKnight There's was room for more A bit spontaneous and chaotic, sure. But that's the point. Still subject to further changes, though, preferably for the better.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
AngerFist wrote:
[...] Speaking of which, if I recall correctly, you said you had to restart (for some reason). But the good thing is that you can simply copy all of your current input to your new movie file right? [...]
Short answer: No. New PPU was found to be a bad thing to TAS under, for one reason or another. Sadly, there is no sync in the attempt to use Old PPU for my current movie, calling for a restart from scratch. So, I can only "copy" the run by redoing it from scratch and following to the best of my ability the stuff I've already done. While I am thankful I didn't beat half the game when this was discovered, it was still discouraging at the time. EDIT: Oh, there's another question I missed. Whoops.
AngerFist wrote:
[...] Will you be working on both any% and 100% run? Hope you'll start with 100% because we can't simply get enough of this game :)
I'll probably start with 100%. I will also take time-entertainment trade-offs in this run, such as actually displaying all the neat weapons I get. EDIT2: ...
Sonikkustar wrote:
Its gonna be annoying to get it to work on Old PPU though. EDIT: Err...Nevermind. It seems to sync perfectly.
... ...? Wait. I haven't managed here myself. At least, not yet anyway. I need to double check things...
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
I... AM... READY!! Any teammates willing to join up?
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
Aglar wrote:
[...] If it's not too much to ask, I'd really like to know how the RNG planning process played out.
Not too much went into it, really. First, MESHUGGAH found the RNG subroutine. I analyzed it and came up, effectively, with a set of lua functions that emulate the RNG subroutine:
Language: lua

local RT= {0,0,0, C= 0 , F= 0} -- Holds RNG related stuff --***************************************************************************** local function AddRNG(R,Rn,Val) --***************************************************************************** local r= R[Rn] + Val + R.C R[Rn]= r % 0x100 R.C = bit.rshift(r,8) end --***************************************************************************** local function RNGLoop(R) --***************************************************************************** AddRNG(R, 1 , 0x25) -- $00F3 AddRNG(R, 2 , 0x33) -- $00F4 AddRNG(R, 3 , 0x53) -- $00F5 -- RNG stuff | Carry local r= R[3] + R[1] + R.C r= r % 0x100 + R[2] + bit.rshift(r,8) R.C= bit.rshift(r,8) -- $00F2 r= r % 0x100 R.F= bit.bxor(R.F, r) -- $00F6 end --***************************************************************************** local function RNGCall(Loops) -- For 1 loop, use 0. --***************************************************************************** for i= 0, Loops do -- Loops is addr:00F0 AND with 0x0F RNGLoop(RT) end end
From that, I then used these functions to, for the most part, scan for the best RNG given all 16 possible wait-time RNGs at the title screen. What luck there was a string of 22 out of 25 good RNGs for the end boss in one possibility, with minimal wait. Unfortunately, we crashed into a pretty severe problem at the refight of that same boss. Namely, the lack of any decent RNGs within several hundred RNG-rolls. We couldn't get anything less than 8 sets of light-drops in decent time. So we took an alternate solution: Destroy those side minions. For whatever reason, destroying them prevents further light drops. Fun, no more need to manipulate that. No analysis was done for any other bosses, however. This is likely one area of improvement.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
feos wrote:
How can I calculate screen scrolling speed if there's no one in RAM? There are 3 speeds for it: 1 pixel per frame, 2 ppf and 3 ppf. Need some function to get the comparison to every previous value (simply "n = current - previous").
Language: lua

local LastVal= 0 local function Fn() local Val= memory.readbyte(0x0000) -- Insert the appropriate value gui.text(1,10,Val - LastVal) LastVal= Val end while true do Fn() emu.frameadvance() end
EDIT: Whoops, forgot the LastVal= Val line. Replace memory.readbyte with memory.readword if you know it's a 2-byte value and not 1-byte. If there are two bytes in different locations, not simply next to each other, you'd need memory.readbyte() for the low value and memory.readbyte()*256 for the high value. Add them together, naturally. Obviously, I don't know what address you're thinking of. Just stick in the address you want.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
I've had it happen 4 times during the (currently ongoing) Dream Team Contest 4. I began to get a theory, and I think I've tracked it down. When you get to the end of the movie, save a state at its last frame, then load this state, you will get an erroneous reset recorded. Record a trivially short movie (less than a second if you feel like). Replay it in read-only. Out to the last frame. Once at the last frame of the movie (frame count reads 56/56, for example), save state. Load this state in read+write mode. Record another second or two. Now replay. ... Where did that reset come from?! At other times, I had an incomplete record made. That is, despite having recorded several hundred frames at some point, when I replay the movie, those frames did not appear in the movie file at all. Not sure if it's related.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
For a quick solution, I'm making corrections to partyboy1a's script... Download Corrected_pb1a_Scipt.lua
Language: lua

function press(param) local temp={} for _,s in ipairs(param) do temp[s] = true end joypad.set(1,temp) emu.frameadvance() end function macro(param) for _,t in ipairs(param) do press(t) end end while(true) do keys=input.get() if keys["F11"] then press{"A","B"} press{"A"} press{} press{"B"} elseif keys["numpad0"] then macro{{"A","B"},{"A"},{},{"B"}} else emu.frameadvance() end end
I will leave it as an exercise as to what the corrections are and why I corrected them as such. I have made two basic corrections, by the way. Keep in mind -- The macro will start one frame late.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
In a while true do ... emu.frameadvance() end loop, v23.5 will react to joypad.set() here, however it will do so one frame late.
Language: lua

while true do joypad.set(1,{A=true}) --Usually not directly inserted like this emu.frameadvance() end
In emu.registerbefore(), emu.registerafter(), and gui.register(), joypad.set has no effect in v23.5.
Language: lua

local function HoldA() joypad.set(1,{A=true}) end emu.registerbefore(HoldA) --The joypad.set fails in a register!
An earlier version of VBA (v22) did work using joypad.set in a register. For whatever reason, emu.registerafter() has joypad.set() work immediately instead of one frame late. But this is only in v22, as v23.5 won't even respond to joypad.set() placed here. I can probably construct a simple script for macros in a bit...
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
FODA wrote:
I have a serious question: what stops a spaceship from just accelerating indefinitely? How long would it take to reach the speed of light with normal thrusts (ignore fuel consumption)? Would something drag it down? Would it implode like a black hole (due to near infinite mass) and destroy the thrusters?
From the view of the really cool space ship you're no doubt using, you're always accelerating yourself with a constant force (assuming an ideal thruster that does not use up its supply of fuel to provide thrust; Somehow the matter in your ship isn't being lost). If you place a marker at time t such that it matches your velocity at that time, and continue accelerating until t+1, you are moving away from that marker at exactly the same speed you would be if you've been accelerating from t to t+1000001 and dropped the marker at t+1000000. At all points, with the ideal thruster as above, you would never see any change in mass yourself. But to the observer standing nearby and watching you zip by at near the speed of light (said observer has ideal eyes that can detect any object for any length of time, no matter how short), they will see you in a particularly thin space ship (lengthwise, in the direction you're traveling) with the marker trailing very closely (length contraction), and appears to be moving relative to you by a smaller difference than what you see yourself about that marker. The observer does see you in a particularly heavy ship. On the other side, you see the observer as particularly heavy as well, traveling at such relativistic velocities. Why doesn't this observer collapse into a black hole and why should you? Nether one will ever become a black hole, no matter how fast you go relative to one another, but I ask this question to make you think things through. Relativity is strange like that. There is no absolute frame of reference. It's very easy to think that there's this invisible grid and we happen to be traveling along it at some speed. I will ask: Why haven't we measured this invisible grid yet?
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
I have the Dream Team Contest 4 to complete first, but once that's over, I'll probably have plenty of time to work on things here. I can put Alien Hominid on hold for this. And I'll make sure not to take any shortcuts.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
Item drops are pretty much on a fixed list (from earlier tests). Killing enemies advances this list. So manipulation isn't trivial. If I'm going to continue, I will need a team much like what the DTC has us in. I do not believe this is a single person project. Also, I'm hoping for a new release of FCEUX before working on the first frame again. A few issues were detected that I hope are resolved by then.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
It's technically not a glitch! Just an exploit of the map design. There's no glitch, merely the sidestepping of an encounter trigger by being in a low-encounter zone. Perhaps reveal the encounter rate of the area one is in? Another improvement would be to use input.get() trickery to allow the script to change its display on the fly based on the user's desire. Such as changing the opacity of the display, for one thing.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
Clearly, for that encounter increment anomaly, there's an encounter at step 0xEB shared by both areas. It's just that one part doesn't have it at 0xD9 while another part does, and by walking around the area that won't encounter it, you skip the 0xD9 encounter and continue on to the 0xEB encounter, where both regions will encounter something (and neither region has encounters in 0xDA to 0xEA). Similar concept with the no encounter zones that still increment on steps.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
Not voted - Italics Voted - Bold NES Rockin' Kats - Seeing as we have a (granted, rather suboptimal) published TAS, this gives a pretty strong benchmark that others can base their runs off of. From the impression I got playing this for a short time led me to think the runs from the different teams might end up looking similar. GBA Crouching Tiger, Hidden Dragon - It looks as though our main character may be repeatedly jump-kicking through stages. I like the idea of moving with a ridiculous form of movement, and hopefully there will be varied methods of handling enemies across the teams. Arcade Captain Commando - I haven't even looked at this title. I heard it's kind of like Simpsons from one of these posts here, a beat-'em-up, I believe. Which might end up killing enemies off-screen repeatedly, across all teams. I'm all for the 4-player part, but not the beat-'em-up part. On the other hand, I'm probably pretty heavily uninformed. PSX Sorcerer's Maze - I've seen a YouTube clip, a TAS I believe, that beat one level of it using some sort of bought power-up, was it? It did it blindingly fast. Alas, I have no clue what the link is now. Personally, I would like to see the results of a full TAS done at some point. DS Chronos Twin - Despite my current problems handling later versions of DeSmuME (instant crash, can't even run it at all, even the dev version can't give an error code), the one gameplay clip I saw of it looks pretty interesting. DarkKobold, be sure to give us the ROM checksum or whatever of the selected game. I would hate to submit a full TAS on what we think is the proper version only to find out we used (E) when the version should have been (U).
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
7E1845 - Apparently a timer for battle. Watch this carefully. 7E2A07 - Another timer? I'm guessing it's for one of your own characters. 7E2A70 - Yet another timer? Same here. I spent a little time (less than an hour) looking into this game after reading the discussion here. All I knew was that timers were involved, and likely ticks if the game isn't paused. Mainly running the published TAS while taking a look, and I'm pretty sure the timers won't tick whenever that TAS pauses the game. I hope this is a good point to continue your searches with. EDIT: Some more information... 7E2A07 - Player 1 Timer 7E2A1C - Player 2 Timer 7E2A31 - Player 3 Timer 7E2A46 - Player 4 Timer 7E2A5B - Player 5 Timer 7E2A70 - Enemy 1 Timer 7E2A85 - Enemy 2 Timer 7E2A9A - Enemy 3 Timer 7E2AAF - Enemy 4 Timer 7E2AC4 - Enemy 5 Timer 7E2AD9 - Enemy 6 Timer Basically, these are 0x15 apart. Feel free to investigate these.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
If anyone cares, I prefer the idea of having the whole public vote on which of the chosen games is going to be the contest game. This gives a smaller influence from the competitors on what the game is going to be. Hopefully, it'll more likely reflect what people want to see done. On the other hand, said people who aren't the competitors aren't going to TAS it, so it might end up calling nightmares into the minds of us TASers for having selected such a difficult game. But we're just that insane anyway, I hope.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
Halfway through 2-2 so far. Except I have to redo Scene 3 because I destroyed a building early in that scene that really should have stayed around. Mainly so I can clear Scene 4 several frames earlier than what I posted here. I'm hating it because standing around and doing nothing in particular is certainly unTASlike, and doing interesting nothings in particular takes quite a bit of thought from me. Mainly, I want to take a break (long enough to sleep and wake up without this feeling of discouragement) after figuring out I've got over a thousand frames of interesting nothings to redo. I still have no clue what happened with Scene 1, though.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
FODA wrote:
I could have gotten farther if I knew some LUA to let it play indefinitely. Dealing with 48 mb movie files was very slow.
What's that? A lua request? Download GoBackAndForth.lua
Language: lua

local Cycles= 80 local Left, LeftA= {left=true}, {left=true, A=true} local Right, RightA= {right=true}, {right=true, A=true} while true do for i= 1, Cycles do joypad.set(1,Left) emu.frameadvance() joypad.set(1,LeftA) emu.frameadvance() end for i= 1, Cycles do joypad.set(1,Right) emu.frameadvance() joypad.set(1,RightA) emu.frameadvance() end end
I just casually thought this up. I forget which buttons shoot in Galaga, though. Apply your double ships code, then run this script. Tell me how it goes.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
pirate_sephiroth wrote:
Sign me up. Preferably teaming up with FatRatKnight.
I accept. Saying this just in case anyone had any doubt as to my intentions when I said "Or some team could claim me, I guess."
Post subject: This post has no movie file. Just my thoughts...
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
Hrm... Looking at 2-2 Scene 1 right now. One where this KGB vehicle comes in and there's bombs dropping from the sky. Go right from the start of 2-2, first moment the camera locks in place. You can't miss it. T2, according to my notes, goes from whatever input required to clear the "PRESS START" screen to unlocking this scene in 1108 frames. I have made a simple attempt (destroy vehicle ASAP), and ended up clearing the scene in 1165 frames. Curiously, this matches T5's attempt, which left the vehicle intact the entire time. Wondering what T1 did to have cleared it at such a slow pace as 1198 frames... Regardless, I know the drill -- Figure out what is different, and abuse it to the fullest potential. I have doubts the members of T2 still remember enough about what happened to help me here, but I figure posting my thoughts can't put me in any worse condition in this run.
Post subject: Re: brandish wip: youtube + video file
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
antd wrote:
youtube http://www.youtube.com/watch?v=8axLvffrBv4
Your YouTube description is incorrect! In only three words, no less! It's not Uncle Bob, it's Uncle Mario (Unless there's an alternate name I'm unaware of). But thanks for keeping up on pasting WIPs onto YouTube as usual. I really do enjoy seeing such availability. Your time is appreciated.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
So that's how you got the key on Fortress 3F... Using an Invisibility Potion! I was tripped up by that for a bit. I'm looking at the various bosses right now. Ruins Area 10, Wizard battle: Most likely I'll just punch. 5 Arm Strength isn't going to do much. Foot of Tower, Giant Crab battle: I can either manipulate 1s or 2s. 1s for a longer battle with better Arm Strength gains, or 2s for a faster battle here but slower fights later. Hrm... Tower Top, Two sword-guys battle: Some decent greater-than-2 damage numbers showed up in your run. A built-up Arm Strength will certainly benefit well here. Cave B1, Ninja: That thing looks ANNOYING to fight. He'll hold still and throw shurikens if you keep some distance, and Fire Magic does work against him, and can be used fairly quick. Whether bothering with Knowledge and the benefits of faster magic regeneration for warping around and ease of burning the ninja outweighs the necessary collection of said magic, armor to fully block those shurikens, and lower Arm Strength for later... Besides, collecting M.Potions counters the need for Knowledge... Leaning towards not bothering with the magic. Fortress 4F, 3 lobster bosses: Our current wall. Fire Magic is useless here anyway, as they're immune to the spell. A towering amount of Arm Strength is needed even with the best weapon available, and they don't really give the EXP for it (These 3 value at 67, you say we need over 60 AS. Going from 60 to 61 takes about 14 hits; 64 to 65 takes 33). In short, have fun seeing a 2 pop up for 300 hits, eh? I checked to see how long it takes to get Fire Magic. About 1000 frames. Doesn't look like it'll be easy to make up for that frame loss. http://dehacked.2y.net/microstorage.php/info/1672548342/Brandish_RA3_NoFireMagic.smv http://dehacked.2y.net/microstorage.php/info/557730402/Brandish_RA3_FireMagic.smv I found the RNG, located in 4 bytes starting at 7E021F. I haven't worked out its details. If I feel ready to dedicate some of my time to this run, I will certainly make a run from scratch. There are enough optimizations I can do.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
I will echo arukAdo's question, in a different phrase. When will we get into the next stage of this Dream Team Contest? If there are any hold-ups, let us know. I'd hate to lose track of this thread and find out the whole thing started 2 weeks ago and my team is upset at my absence. Preferably alter the thread title with this extra bit of information, if there's room.
Post subject: Don't mind me, just updating my subtitles script.
Editor, Experienced Forum User, Published Author, Skilled player (1174)
Joined: 9/27/2008
Posts: 1085
Finally, got back into things. 464 frames faster than the leading DTC3 run! Will add entertainment to the wait after the boss when I finish my own victory dance at this progress. I'm a bit slow at the wall, 13 frames slow, but I got the desired spread shots in time for the wall and boss. The boss is slain 6 frames faster than T5. Which halfway makes up for slowness at the wall. Incidentally, every last shot and grenade count. Every last one. When the boss is slain, I was down to 0 spreads and 0 grenades. In fact, when I ran out of ammo, the boss was at 1 HP, to which I destroyed with the basic shot. Thanks to the fact I switch guns, the cooldown is refreshed and I can fire that last shot in 2 frames instead of 8. Maybe this time I can keep momentum long enough to clear the game... EDIT: I'll even throw in a pile of subtitles! Still working my charisma, but 1-1 is now all wordy. Please include this script in the same directory. Let me know if anything breaks horribly. Download AHSubs.lua
Language: lua

dofile("SubtitleDisplayer.lua") local RGf,RGb= 0x7F7F0060, 0x7F7F00C0 local RBf,RBb= 0x7F007F60, 0x7F007FC0 local GBf,GBb= 0x007F7F60, 0x007F7FC0 A( 2, 400, 4, 4 , RGf,RGb, "Any comparisons to the Dream Team Contest 3 runs", "will be in reference to T1, T2, T4, and T5.", "1st: T5 ((nameless))", "2nd: T1 'Totally Awesome Syzygy'", "3rd: T2 'Tortoise'", "4th: T4 'Tastards' (did not finish)") A( 30, 1530, 100, 130 , RGf,RGb, " Using (E) ROM.","Reason: No (U) ROM exists") A( 240, 480, 8, 58 , RBf,RBb, "There were two other teams (T3, T6),", "but they never submitted.") A( 500, 1100, 4, 4 , RBf,RBb, "First, set the difficulty to hard. As a TAS, it's", "usually best to show our mastery over the game.") A( 626, 1530, 80, 150 , RGf,RGb, "Difficulty: HARD") A( 710, 1160, 8, 24 , RGf,RGb, "Difficulty affects whether you have a shield,", "how many lives you have, how many continues,", "and grenades per life.") A( 910, 1160, 8, 52 , RBf,RBb, "Mostly, the grenades is what affects me in a TAS.", "I didn't check if difficulty has other effects.") A( 1220, 1530, 4, 4 , RGf,RGb, "This run aims for fastest time.") -- Stage 1-1. a( 1538,100 , 4,150 , RGf,RGb, "CHECK: at 1538 T5+ 1 T1+ 4 T2 0 T4 0") a( 2674,100 , 4,150 , RGf,RGb, "1-1: 1 at 2674 T5 0 T1 0 T2+ 22 T4+ 27") a( 2884,100 , 4,150 , RGf,RGb, "1-1: 2 at 2884 T5 0 T1+ 4 T2+ 62 T4+107") a( 3039,100 , 4,150 , RGf,RGb, "1-1: 3 at 3039 T5 0 T1+ 27 T2+ 91 T4+ 53") a( 3245,100 , 4,150 , RGf,RGb, "1-1: 4 at 3245 T5+ 2 T1+ 2 T2+ 17 T4+ 62") a( 3653,100 , 4,150 , RGf,RGb, "1-1: 5 at 3653 T5- 2 T1+ 16 T2- 4 T4+207") a( 3814,100 , 4,150 , RGf,RGb, "1-1: 6 at 3814 T5+ 1 T1+ 46 T2+168 T4+ 87") a( 4844,100 , 4,150 , RGf,RGb, "1-1: 7 at 4844 T5 0 T1+ 62 T2+129 T4+128") a( 5302,100 , 4,150 , RGf,RGb, "1-1: 8 at 5302 T5 0 T1+ 15 T2+ 35 T4+ 14") a( 5526,100 , 4,150 , RGf,RGb, "1-1: 9 at 5526 T5 0 T1- 15 T2+151 T4+ 46") a( 5705,100 , 4,150 , RGf,RGb, "1-1:10 at 5705 T5 0 T1+ 70 T2+ 69 T4+ 96") a( 6463,100 , 4,150 , RGf,RGb, "1-1:11 at 6463 T5+ 11 T1+ 19 T2+ 46 T4+339") a( 7180,100 , 4,150 , RGf,RGb, "1-1 at 7180 T5+ 13 T1+250 T2+786 T4+1166") S(3200, 3302, 210, 4 , "HP:150") -- Boss1 R2S(3303, 3560, 210, 4 , "HP:%3d",0x030003F6) S(6100, 6184, 210, 4 , "HP:170") -- Boss2 R2S(6185, 6600, 210, 4 , "HP:%3d",0x030003F6) A( 1600, 1800, 4, 4 , RBf,RBb, "In the DTC3, I made a nice RNG and hitboxes script.","It sees a lot of use.") A( 1930, 2200, 4, 4 , GBf,GBb, "Huh. Bad drivers get their vehicle","taken by the FBI nowadays, eh?") A( 2240, 2480, 4, 4 , GBf,GBb, "Hey! You forgot the bad driver!") A( 2520, 2770, 4, 4 , GBf,GBb, "Now look! You made the bad driver upset!") A( 2920, 3080, 4, 4 , RBf,RBb, "I like how this scene went.","Kills were PERFECTLY timed here.") A( 3120, 3280, 4, 4 , RBf,RBb, "This is the only time I use a vehicle.","But it lets me shoot while moving fast.") A( 3300, 3640, 4, 4 , RBf,RBb, "This boss dies so fast, it didn't attack.","Its 150 HP doesn't live to spread+grenades!") A( 3460, 3700, 8, 24 , RBf,RBb, "An alternate strat was 'CloudStacking'","using ice. Lag killed any improvements.") A( 3900, 4100, 4, 4 , RBf,RBb, "There's a spawn timer. It ticks every 31 frames.","Improvements need to beat that for any gains.") A( 4150, 4350, 4, 4 , RBf,RBb, "Off screen, I collect 20 grenades.","Who cares if I can't see what I'm doing!") A( 4500, 4800, 4, 4 , RBf,RBb, "Note: I maintain charge while still shooting.","The frame you exit a roll or backflip, you can shoot!") A( 4860, 5060, 4, 4 , GBf,GBb, "Actually, that's an aura of pure stylishness.","It just LOOKS like I'm charging!") A( 5070, 5330, 4, 4 , GBf,GBb, "He couldn't take concentrated style.","That's why he's freaked out.") A( 5220, 5330, 8, 24 , GBf,GBb, "... And exploding...") A( 5360, 5560, 4, 4 , RBf,RBb, "Spawn timer was 25. I'm 5 frames short.","Frame rule knocks off 26 frames. Nuts.") A( 5720, 6120, 4, 4 , RGf,RGb, "The charge-up shot deals 5 to 10 damage.","Strongest (10 damage) after 200 frames of charging.") A( 5900, 6120, 8, 24 , RGf,RGb, "However, rolling freezes the charge counter.") A( 6500, 6800, 4, 4 , RBf,RBb, "Normally, the boss flies up, then slams back down.","I win too fast, sorry about that.") A( 6900, 7150, 4, 4 , RGf,RGb, "At the end of each stage, the game tallies up your score...") A( 7200, 7650, 4, 4 , RGf,RGb, "Enemy bonus: Just uses your kill count.", "Boss bonus: Times you hit the boss", "Style points: HOW you killed/attacked enemies", "", "Although, the game also gives a bunch of", "points up front as you kill things.", "My score was 18335 before these bonuses.", "", "Relevant addresses begin roughly at 0x03000484") --Stage 1-2 a( 7664,100 , 4,150 , RGf,RGb, "CHECK: at 7664 T5 0 T1 0 T2 0 T4 0") a( 8013,100 , 4,150 , RGf,RGb, "1-2: 1 at 8013 T5+ 32 T1+ 26 T2+113 T4- 2") a( 8104,100 , 4,140 , RGf,RGb, "1-2: 2 at 8104 T5+ 34 T1+ 10 T2+ 48 T4+ 10") a( 8309,100 , 4,150 , RGf,RGb, "1-2: 3 at 8309 T5+ 13 T1+ 11 T2+ 53 T4+ 17") a( 8460,100 , 4,150 , RGf,RGb, "1-2: 4 at 8460 T5+ 32 T1+ 12 T2+ 27 T4+ 59") a( 8730,100 , 4,150 , RGf,RGb, "1-2: 5 at 8730 T5+ 7 T1+ 15 T2+ 25 T4+ 44") a( 8952,100 , 4,150 , RGf,RGb, "1-2: 6 at 8952 T5+ 27 T1+ 36 T2+104 T4+157") a( 9183,100 , 4,150 , RGf,RGb, "1-2: 7 at 9183 T5+ 13 T1+ 9 T2+ 22 T4+ 34") a( 9600,100 , 4,150 , RGf,RGb, "1-2: 8 at 9600 T5- 3 T1+ 1 T2+ 94 T4+ 24") a( 10048,100 , 4,150 , RGf,RGb, "1-2: 9 at 10048 T5+ 13 T1+ 1 T2+ 7 T4+ 43") a( 10566,100 , 4,150 , RGf,RGb, "1-2:10 at 10566 T5+ 51 T1 0 T2+ 5 T4+ 60") a( 10790,100 , 4,150 , RGf,RGb, "1-2:11 at 10790 T5+ 76 T1 ?? T2 ?? T4+120") a( 11235,100 , 4,150 , RGf,RGb, "1-2:12 at 11235 T5+ 8 T1+ 10 T2+ 10 T4+ 6") a( 11852,100 , 4,150 , RGf,RGb, "1-2:13 at 11852 T5 0 T1+ 1 T2 0 T4 0") a( 13263,100 , 4,150 , RGf,RGb, "1-2:14 at 13313 T5 0 T1+3318 T2+3319 T4+3319") a( 13589,100 , 4,150 , RGf,RGb, "1-2 at 13639 T5+303 T1+3452 T2+3830 T4+3898") S(11800,11899, 210, 4 , "HP:800") R2S(11900,13450, 210, 4 , "HP:%3d",0x030003F6) A( 7750, 8000, 4, 4 , RGf,RGb, "There are 12 stages in this game.","1-1 1-2 1-3 1-4 2-1 2-2 2-3 2-4 3-1 3-2 3-3 3-4") A( 8050, 8300, 4, 4 , RBf,RBb, "The scoring is pretty silly. Especially since","you can find a safe spot and keep killing forever.") A( 8350, 8600, 4, 4 , RBf,RBb, "Anyone suggesting I go for highest score will","be met with an absurdly dull movie.") A( 8650, 8900, 4, 4 , RBf,RBb, "Everything up to this scene went perfect.","Not a frame to spare for that Spawn Timer.") A( 9050, 9300, 4, 4 , GBf,GBb, "Oh, they send another tank.","Clearly, the first two weren't enough.") A( 9350, 9700, 4, 4 , RGf,RGb, "Agents have 1/16 chance to drop an item.","TASes have them drop when it's most important.") A( 9800, 10100, 4, 4 , GBf,GBb, "I'm so cool!") A( 9950, 10100, 8, 14 , GBf,GBb, "Oh, snap. He's even cooler than I am!") A( 10150, 10550, 4, 4 , RGf,RGb, "Current weapon: Wpn1, the green cloud gun.","This leaves a large lingering hitbox.") A( 10350, 10550, 8, 24 , RBf,RBb, "Buildings react poorly to this type of hitbox.","My advantage.") A( 10710, 10880, 4, 4 , GBf,GBb, "I'd say something's fishy about that","building, but that's too obvious.") A( 10890, 11050, 20, 4 , RBf,RBb, "Note, I got my spread shot back.") A( 11100, 11400, 4, 4 , RBf,RBb, "I looked for a way to do this scene without jumping.","Seems I must jump thanks to the tank shell.") A( 11500, 12100, 4, 4 , GBf,GBb, "Oh, instant puddin'!") A( 11600, 12100, 8, 14 , GBf,GBb, "I wonder what I will find in there!") A( 11700, 12100, 8, 24 , GBf,GBb, "I'm sure it's something good!") A( 11800, 12100, 8, 34 , GBf,GBb, "It... Exploded. What caused it?") A( 11900, 12100, 8, 44 , GBf,GBb, "Of course! Giant pudding monster! Who else?") A( 12150, 12350, 4, 4 , GBf,GBb, "Eh, can't be too picky about food.") A( 12400, 12700, 4, 4 , RBf,RBb, "Mugg, you have my thanks in finding out how","to use that hydrant the second time.") A( 12800, 13100, 4, 4 , RBf,RBb, "With optimizations, it was 50 frames improved.","Splicing the inputs maintained sync, too.") A( 13300, 13450, 4, 4 , RBf,RBb, "By the way, the pudding monster could eat you.") A( 13470, 13720, 4, 4 , RGf,RGb, "Boss bonus suffers -- It counted only the grenade.","The bites only count for style.") A( 13750, 14150, 4, 4 , GBf,GBb, "Who cares about the points?", "I'm pretty sure they're pointless.", "Earlier, I made a point about it.", "Endless kills, I had to point out.") --Stage 1-3 a( 14075,100 , 4,150 , RGf,RGb, "CHECK: at 14075 T5 0 T1 0 T2 0 T4 0") a( 14505,100 , 4,150 , RGf,RGb, "1-3: 1 at 14505 T5- 4 T1+ 31 T2+ 42 T4+ 44") a( 14825,100 , 4,150 , RGf,RGb, "1-3: 2 at 14825 T5 0 T1- 1 T2+ 1 T4 0") a( 15187,100 , 4,150 , RGf,RGb, "1-3: 3 at 15187 T5 0 T1+ 2 T2+ 12 T4 0") a( 15336,100 , 4,150 , RGf,RGb, "1-3: 4 at 15336 T5+ 7 T1+ 10 T2+ 67 T4+ 7") a( 15460,100 , 4,150 , RGf,RGb, "1-3: 5 at 15460 T5 0 T1+ 30 T2+ 63 T4 0") a( 15863,100 , 4,150 , RGf,RGb, "1-3: 6 at 15863 T5+ 31 T1+ 32 T2+ 72 T4+ 31") a( 16409,100 , 4,150 , RGf,RGb, "CHECK: at 16409 T5+ 10 T1+ 13 T2+ 13 T4+ 20") a( 17294,100 , 4,150 , RGf,RGb, "1-3: 7 at 17294 T5+ 13 T1+ 1 T2+2242 --T4--") a( 17588,100 , 4,150 , RGf,RGb, "1-3 at 17588 T5+ 57 T1+122 T2+2512") R2S(16735,17275, 210, 4 , "HP:%3d",0x030003F6) A( 14170, 14390, 4, 4 , RGf,RGb, "That tank is a vehicle you can enter.","You can fire its tank shells.") A( 14450, 14700, 4, 4 , RBf,RBb, "Yes, that was a wall in vehicle form.","Some designs get pretty silly.") A( 14750, 15000, 4, 4 , GBf,GBb, "I am not just subtitling for the sake","of fillers! I'm... Okay, I am.") A( 15050, 15350, 4, 4 , RBf,RBb, "As is usual for waiting in TAS,","one should wait with entertainment.") A( 15450, 15770, 4, 4 , RBf,RBb, "I begin charging up my shot...") A( 15650, 15770, 8, 14 , RBf,RBb, "... Only to have it absorbed by the mailbox.") A( 15800, 16150, 4, 4 , RBf,RBb, "This scene required major luck manipulation.","Shooting the mailbox, with a charged shot,","tweaked the RNG just right for me.") A( 16170, 16390, 4, 4 , RGf,RGb, "Shooting downwards pushes you upward.","Shooting a charged shot doesn't, for some reason.") A( 16420, 16550, 4, 4 , GBf,GBb, "Happy Fun Minigame Time! ... I think.") A( 16570, 16750, 4, 4 , RGf,RGb, "Goal: Destroy enemy tank with its own fireball.") A( 16790, 17200, 4, 4 , RGf,RGb, "Glitches abused:","'Burying' the random agents.","Repeated hits using the same fireball.","Staying in control after winning.") A( 17220, 17500, 4, 4 , RBf,RBb, "Those agents have only one gameplay effect:","Tweaking the RNG. They don't even","boost your score! I still use 'em.") A( 17520, 18050, 4, 4 , RGf,RGb, "The RNG uses a 'roll until success' system for a", "variety of effects. This includes weapon drops.", "Flawed system means effective drop rates are:", "19.04% - Wpn1: Green cloud", "16.66% - Wpn2: Fire shot & cloud", "14.58% - Wpn3: Ice shot & cloud", "12.76% - Wpn4: Red slicey", "11.16% - Wpn5: Big shots", " 9.77% - Wpn6: Purple auto", " 8.55% - Wpn7: Spread shot", " 7.48% - Grenade pack") A( 18080, 18310, 4, 4 , RBf,RBb, "If it were intended for 12.50% per","drop, I'd use modulo and only one roll.") --Stage 1-4 a( 18267,100 , 4,150 , RGf,RGb, "CHECK: at 18267 T5+ 1 T1- 4 T2 0") a( 18684,100 , 4,150 , RGf,RGb, "1-4dmg at 18684 T5+ 55 T1+ 37 T2+ 67") a( 18984,100 , 4,150 , RGf,RGb, "1-4 H1 at 18984 T5 0 T1 0 T2 0") a( 19362,100 , 4,150 , RGf,RGb, "1-4 H2 at 19362 T5+ 26 T1+ 16 T2+ 50") a( 19730,100 , 4,150 , RGf,RGb, "1-4 H3 at 19730 T5+ 9 T1+ 3 T2+131") a( 19881,100 , 4,150 , RGf,RGb, "1-4 H4 at 19881 T5- 2 T1 0 T2+ 97") a( 20024,100 , 4,150 , RGf,RGb, "1-4 H5 at 20024 T5+ 2 T1+ 5 T2+ 60") a( 20172,100 , 4,150 , RGf,RGb, "1-4 H6 at 20172 T5- 2 T1+ 25 T2+ 87") a( 20510,100 , 4,150 , RGf,RGb, "1-4Kil at 20510 T5+ 53 T1+127 T2+ 19") a( 20923,100 , 4,150 , RGf,RGb, "1-4Bos at 20923 T5+ 5 T1+ 24 T2+ 10") a( 21338,100 , 4,150 , RGf,RGb, "1-4 at 21338 T5+162 T1+248 T2+536") R2S(20510,20990, 210, 4 , "HP:%3d",0x030003F6) A( 18984, 20450, 138, 4 , RGf,RGb, "#1 Gun","Allows shots","11 damage") A( 19362, 20450, 190, 4 , RGf,RGb, "#2 Armor","New HP: 20","It was 5...") A( 19730, 20450, 138, 34 , RGf,RGb, "#3 Rocket","Faster now!","Uses fuel.") A( 19881, 20450, 190, 34 , RGf,RGb, "#4 NewGun","+2 damage","shot upgrade") A( 20024, 20450, 138, 124 , RGf,RGb, "#5 Back","Two 9 damage","back shots.") A( 20172, 20450, 190, 124 , RGf,RGb, "#6 Missile","Two 2 damage","homing shots") A( 18350, 18550, 4, 4 , RGf,RGb, "This shaking is to keep the target copter","moving slower than normal.") A( 18650, 18900, 4, 4 , RGf,RGb, "Without a gun, one must wait out","the first copter's destruction.") A( 18950, 19200, 4, 4 , RBf,RBb, "With the gun, I can just","shoot the next copters.") A( 19250, 19550, 4, 4 , RBf,RBb, "I had trouble with the RNG in","this stage. Turns out I needed","to look at background clouds.") A( 19580, 19850, 4, 4 , RBf,RBb, "From this point on, I will","never trust another cloud.") A( 19900, 20150, 4, 4 , RGf,RGb, "The RNG determines where the","next copter will spawn.") A( 20200, 20450, 4, 4 , RBf,RBb, "Now I kill stuff. To spawn","the boss quick.") A( 20550, 20950, 4, 4 , RBf,RBb, "The clouds are evil, I tell you! EVIL!", "I couldn't dance with this boss.", "It's the clouds' faults, I tell you!", "That, and I needed the right RNG.") A( 20990, 21249, 4, 4 , GBf,GBb, "Yikes! A cloud!") A( 21070, 21249, 8, 14 , GBf,GBb, "This is for my sanity!") A( 21150, 21249, 8, 24 , GBf,GBb, "(Add FF7 reference here)") A( 21250, 21900, 4, 4 , RBf,RBb, "I had, in fact, adjusted my script specifically", "to track these evil clouds. As they were key to", "getting a good RNG, I had to track when they", "disappear offscreen in order to get the RNG to", "behave. It was a glorious day when the clouds", "were at last defeated and the RNG in my control.") --Stage 2-1 a( 22014,100 , 4,150 , RGf,RGb, "CHECK: at 22014 T5- 1 T1- 1 T2- 1") a( 22276,100 , 4,150 , RGf,RGb, "2-1: 1 at 22276 T5+ 35 T1+ 34 T2+ 77") a( 22379,100 , 4,150 , RGf,RGb, "2-1: 2 at 22379 T5+ 33 T1+ 3 T2 ??") a( 22555,100 , 4,150 , RGf,RGb, "2-1: 3 at 22555 T5+ 25 T1+ 58 T2+178") a( 22962,100 , 4,150 , RGf,RGb, "2-1: 4 at 22962 T5 0 T1 0 T2+ 44") a( 23086,100 , 4,150 , RGf,RGb, "2-1: 5 at 23086 T5+ 89 T1+ 70 T2+154") a( 23250,100 , 4,150 , RGf,RGb, "2-1: 6 at ?? T5 ?? T1 ?? T2 ??") a( 23527,100 , 4,150 , RGf,RGb, "2-1: 7 at 23527 T5+ 25 T1- 5 T2- 13") a( 23733,100 , 4,150 , RGf,RGb, "2-1: 8 at 23733 T5+ 11 T1+ 30 T2+138") a( 23919,100 , 4,150 , RGf,RGb, "2-1: 9 at 23919 T5+ 70 T1+ 64 T2+ 35") a( 24068,100 , 4,150 , RGf,RGb, "2-1:10 at 24068 T5+ 24 T1+ 30 T2+ 25") a( 24386,100 , 4,150 , RGf,RGb, "2-1:11 at 24386 T5+160 T1+ 88 T2+128") a( 24575,100 , 4,150 , RGf,RGb, "2-1:12 at 24575 T5- 13 T1+ 3 T2+ 2") a( 25111,100 , 4,150 , RGf,RGb, "2-1:13 at 25111 T5+ 6 T1+173 T2+226") a( 25538,100 , 4,150 , RGf,RGb, "2-1 at 25538 T5+464 T1+547 T2+993") R2S(24772,25221, 210, 4 , "HP:%3d",0x030003F6) A( 21950, 22190, 4, 4 , RGf,RGb, "As far as damage goes, each bullet","deals 1 damage. Each grendae does 3.") A( 22230, 22470, 4, 4 , RGf,RGb, "It doesn't matter what gun.","All 8 guns have 1 damage bullets.") A( 22510, 22750, 4, 4 , RGf,RGb, "However, Wpn2(fire), Wpn3(ice), and","Wpn7(spread) have 2 or 3 bullet shots.") A( 22790, 23050, 4, 4 , RGf,RGb, "The spread shots graphically show","6 shots, but it's really 3 sprites.") A( 23070, 23350, 4, 4 , RBf,RBb, "Even so, the spread does have three distinct","bullets. That makes it optimal for most bosses.") A( 23410, 23710, 4, 4 , RBf,RBb, "The fire and ice weapons do leave clouds.","These clouds can glitch the hit detection a bit.") A( 23750, 24150, 4, 4 , RBf,RBb, "The 'CloudStacking' glitch lets these clouds","hit more than once. The difficult set-up makes","it impractical for most bosses, however.") A( 24190, 24450, 4, 4 , RBf,RBb, "When fully set-up, however... The damage can be","a thing of sheer beauty.") A( 24490, 24750, 4, 4 , RBf,RBb, "The best set-up requires around 3 weapon drops,","all next to each other. Each of fire or ice.","Not easy...") A( 24770, 25100, 4, 4 , RBf,RBb, "Even without optimal set-up, straight fire/ice","can still push 4 damage/attack. Beyond spread","power, if you got the time and close the distance.") A( 25150, 25350, 4, 4 , RBf,RBb, "By the way, this boss was not fire/ice friendly...") A( 25400, 26100, 4, 4 , RBf,RBb, "For being a potentially devastating glitch,", "CloudStacking only ended up useful twice in this run.", "The set-up is what makes it impractical, as either I", "lag horribly, the strange up/down hitboxes miss, or", "the HP vanishes faster with just spreads.", "", "That said, however...", "The weak version is used in 3-1. One cycle kill!", "The super version is planned for 3-4." ) --Stage 2-2 a( 26023,100 , 4,150 , RGf,RGb, "CHECK: at 26023 T5 0 T1 0 T2 0") a( 27188,100 , 4,150 , RGf,RGb, "2-2: 1 at 27188 T5 0 T1+ 33 T2- 57") a( 27429,100 , 4,150 , RGf,RGb, "2-2: 2 at 27429 T5+ 30 T1 0 T2+ 3") a( 29603,100 , 4,150 , RGf,RGb, "2-2: 3 at 29603 T5+ 2 T1 0 T2 0") a( 29766,100 , 4,150 , RGf,RGb, "2-2: 4 at 29766 T5+ 43 T1+ 40 T2+ 40") a( 30132,100 , 4,150 , RGf,RGb, "2-2: 5 at 30132 T5+ 46 T1+ 4 T2+ 18") a( 30201,100 , 4,140 , RGf,RGb, "2-2: 6 at 30201 T5- 14 T1- 4 T2- 10") a( 30255,100 , 4,150 , RGf,RGb, "2-2: 7 at 30255 T5 0 T1+ 5 T2+ 7") a( 30309,100 , 4,140 , RGf,RGb, "2-2: 8 at 30309 T5+ 11 T1+ 5 T2+ 5") a( 30491,100 , 4,150 , RGf,RGb, "2-2: 9 at 30491 T5- 2 T1 0 T2+ 13") a( 30592,100 , 4,150 , RGf,RGb, "2-2:10 at 30592 T5+ 1 T1+ 6 T2+ 12") a( 30784,100 , 4,150 , RGf,RGb, "2-2:11 at 30784 T5+ 11 T1+ 2 T2+ 2") a( 32639,100 , 4,150 , RGf,RGb, "2-2:12 at 32639 T5+ 21 T1+107 T2+ 56") a( 32865,100 , 4,150 , RGf,RGb, "2-2 at 32865 T5+149 T1+198 T2+150") S(30580, 30785, 210, 4 , "HP:20000") -- The Yeti S(30786, 31000, 210, 4 , "...Oh,","wait...") -- Keh, faked you out! A( 26200, 26500, 4, 4 , RBf,RBb, "Bah, this level. Full of forced waits.","At least I can show off without wasting time.") A( 26520, 26770, 4, 4 , RBf,RBb, "And already we're stuck waiting!","See what I mean? Forced waits.") A( 26800, 27100, 4, 4 , RBf,RBb, "Although, T2 beat me here by 57 frames.","I haven't a clue how that happened.") A( 27120, 27400, 4, 4 , RBf,RBb, "At least I still improve other parts.","I am quite ahead elsewhere, at least.") A( 27420, 27700, 4, 4 , RBf,RBb, "Between the forced waits, I can travel","quickly to the next forced wait.") A( 27800, 28100, 4, 4 , GBf,GBb, "Let it rain items!","Who cares if I can't use it all!","We like impractically many drops!") A( 28120, 28700, 4, 4 , RGf,RGb, "Buildings drop items 100% of the time.","Agents drop items 6.25% of the time.") A( 28400, 28700, 8, 24 , RBf,RBb, "The stuff dropping here would make you think","I'm lying about the agent drop rate...") A( 28800, 29600, 4, 4 , RBf,RBb, "You probably noticed I use three different","colors for these text boxes.") A( 29000, 29600, 8, 24 , RGf,RGb, "This color box is strictly informative.") A( 29150, 29600, 8, 34 , RBf,RBb, "I use this color for a variety of thoughts.") A( 29300, 29600, 8, 44 , GBf,GBb, "Sacrificing relevance for humor. Totally practical!") A( 29700, 30000, 4, 4 , GBf,GBb, "Oh, yeah! Yellow can still be funny","by stating the plainly obvious!") A( 30050, 30610, 4, 4 , RBf,RBb, "No, this is not an invitation to put","'snow is white' in a yellow box.","I'm not THAT silly.") A( 30370, 30610, 8, 34 , GBf,GBb, "Besides, the snow is more like #C8D0F8.","Totally not white, #FFFFFF") A( 30650, 30850, 4, 4 , GBf,GBb, "In fact, the Yeti is whiter than the snow!") A( 30900, 31380, 4, 4 , RGf,RGb, "The Yeti has no HP to track.","Bullets literally do nothing to it.") A( 31080, 31380, 8, 24 , GBf,GBb, "Can't you find a funnier fact?") A( 31450, 31750, 4, 4 , RBf,RBb, "For a moment, you can see two yellow aliens.","It's lovely abusing glitches, eh?") A( 31800, 32100, 4, 4 , RBf,RBb, "This boss has a detrimental glitch I must","avoid, forcing me to delay smashing it in.") A( 32120, 32580, 4, 4 , RGf,RGb, "If one brings Phase 1 of boss to zero HP","before the fourth piece shows up, then","the battle can't be completed.") A( 32700, 33450, 4, 4 , GBf,GBb, "Any and all missed shots can be attributed to:", " * I needed to adjust the RNG some.", " * The weapon made me do it!", " * I didn't miss! It just looked like I missed!", " * It gets me movin', yeah!", " * ... Er, it's 'entertainment'! What else?", " * The bullets went to a better place...", " * That bullet had a mission to do.", " * It's so I have something to talk about here!") --Stage 2-3 a( 33349,100 , 4,150 , RGf,RGb, "CHECK: at 33349 T5 0 T1 0 T2 0") a( 34518,100 , 4,150 , RGf,RGb, "2-3: 1 at 34518 T5+ 16 T1+ 8 T2- 16") a( 34937,100 , 4,150 , RGf,RGb, "2-3: 2 at 34937 T5 0 T1+ 3 T2+ 25") a( 36110,100 , 4,150 , RGf,RGb, "2-3: 3 at 36110 T5+180 T1+ 44 T2+ 88") a( 36170,100 , 4,140 , RGf,RGb, "CHECK: at 36170 T5- 1 T1 0 T2+ 46") a( 36452,100 , 4,150 , RGf,RGb, "2-3 at 36452 T5+195 T1+ 55 T2+143") A( 33500, 34500, 4, 4 , RBf,RBb, "I both like and hate this stage...") A( 33650, 33900, 4, 14 , RBf,RBb, "For one thing, luck manipulation is minimal.","Far less acrobatic stuff to do here!") A( 33950, 34200, 4, 14 , RBf,RBb, "On the other hand, I only have access to","three items in this entire stage.") A( 34250, 34500, 4, 14 , RBf,RBb, "If it weren't for that, I'd kill bosses","in this stage much faster...") A( 34600, 34900, 4, 4 , RBf,RBb, "The stage is relatively easy compared to others.","It just isn't all fun and acrobatic, though.") A( 34920, 35100, 4, 4 , GBf,GBb, "Ah, a use for worn down cars! Barracades!") A( 35150, 35350, 4, 4 , RBf,RBb, "I slow down for a moment for a bullet here.") B( 35150, 35350, 200, 108 , 239,124, 0,0x00FF00FF) A( 35380, 35680, 4, 4 , RBf,RBb, "And there's my third and last item. I looked.","No other destructables for item drops.") A( 35700, 36000, 4, 4 , RBf,RBb, "Running out of ammo here is a guarantee.","There simply aren't enough destructables to abuse.") A( 36050, 36250, 4, 4 , RBf,RBb, "But lack of destructables means easy optimization...") A( 36300, 37000, 4, 4 , RBf,RBb, "It's mostly one person working on this TAS.", "FatRatKnight is this person's online alias.", "Said person was part of T5 during the DTC3.", "I, FatRatKnight, have done these subtitles.", "You can imagine why I appreciate some ease.", "Regardless, the TAS shouldn't look so easy.", "It takes a lot of effort to optimize a TAS.") --Stage 2-4 a( 36937,100 , 4,150 , RGf,RGb, "CHECK: at 36937 T5 0 T1 0 T2 0") a( 38147,100 , 4,150 , RGf,RGb, "2-4: K at 38147 T5+228 T1+108 T2+314") a( 38842,100 , 4,150 , RGf,RGb, "2-4: B at 38842 T5+ 76 T1+144 T2+902") a( 39258,100 , 4,150 , RGf,RGb, "2-4 at 39258 T5+304 T1+252 T2+1216") A( 37050, 37300, 4, 4 , RGf,RGb, "This is the second flying stage,","out of the two found in this game.") A( 37350, 37600, 4, 4 , RGf,RGb, "You begin with all power-ups this time.","There is nothing to collect here.") A( 37650, 37900, 4, 4 , RGf,RGb, "Progress depends on enemy kills.","Asteroids don't count as an enemy.") A( 37950, 38300, 4, 4 , RBf,RBb, "I did my best to ensure I don't stop firing.","And making sure I hit every time.","Though, I still delay a moment at one point.") A( 38400, 38700, 4, 4 , RBf,RBb, "I wanted to do this strategy in the DTC3.","Time constraints meant optimizing it was infeasible.") A( 38750, 39000, 4, 4 , RBf,RBb, "In the end, this is faster and far more","stylish than just sitting in one spot.") A( 39050, 40000, 4, 4 , RBf,RBb, "The Dream Team Contest at TASVideos simply pits", "teams of TASers against one another on a game.", "A team of Tool-Assisted Superplayers works", "together to create the fastest game-winning", "input file. The whole frame advance and save", "state thing does allow multiple people to", "contribute in playing through the same run.", "", "This was the game chosen for DTC3.", "I, FatRatKnight, was a player in DTC3, under T5.") --Stage 3-1 a( 39931,100 , 4,150 , RGf,RGb, "CHECK: at 39931 T5 0 T1 0 T2 0") a( 40412,100 , 4,150 , RGf,RGb, "3-1: 1 at 40412 T5+ 27 T1+158 T2+ 1") a( 40782,100 , 4,150 , RGf,RGb, "3-1: 2 at 40782 T5+ 22 T1+ 98 T2+ 99") a( 41269,100 , 4,150 , RGf,RGb, "3-1: 3 at 41269 T5+ 1 T1+ 1 T2+ 2") a( 41710,100 , 4,150 , RGf,RGb, "3-1: 4 at 41710 T5+ 1 T1+140 T2+ 82") a( 42526,100 , 4,150 , RGf,RGb, "3-1: 5 at 42526 T5+ 25 T1+ 3 T2+ 21") a( 43174,100 , 4,150 , RGf,RGb, "3-1: 6 at 43174 T5+ 20 T1+167 T2+227") a( 44486,100 , 4,150 , RGf,RGb, "3-1: 7 at 44486 T5+245 T1+278 T2+316") a( 44833,100 , 4,150 , RGf,RGb, "3-1 at 44833 T5+321 T1+825 T2+788") A( 40020, 40500, 4, 4 , RGf,RGb, "Unlike the agents in previous levels (1/16),","scorpions have a 1/4 drop rate.") A( 40220, 40500, 8, 24 , RBf,RBb, "Handy advantage, as it means I can have the","good drops like grenades more frequently.") A( 40550, 40850, 4, 4 , RBf,RBb, "The RNGScan functions of my script were","particularly handy to have. Grenades! Yes!") A( 40900, 41300, 4, 4 , RGf,RGb, "Only way to survive the tornado is to dig","underground, or be dead before it hits you.") A( 41100, 41300, 8, 24 , GBf,GBb, "Yes! Humor at last! Be dead to avoid dieing!") A( 41320, 41600, 4, 4 , GBf,GBb, "Though, I fear for the wildlife who promtly","die in the environment they live in.") A( 41650, 41950, 4, 4 , RBf,RBb, "As far as luck goes, I often got my drops","while on the run. Without losing time.") A( 42000, 42300, 4, 4 , RBf,RBb, "I like how this stage went! Every scene,","I beat the DTC3 runs in some way.") A( 42400, 42700, 4, 4 , RBf,RBb, "Those birds each have 60 HP. Makes you wonder","if bullets or grenades really do 1 or 3.") A( 42800, 43000, 4, 4 , RBf,RBb, "Yes, they really do 1 and 3 damage respectively.","Charged shots up to 10.") A( 43100, 43400, 4, 4 , RBf,RBb, "I just pile so many shots in such a short","span of time. Doing things the TAS way!") A( 43500, 43850, 4, 4 , GBf,GBb, "It's a desert. Of course it would be","an empty, endless expanse of sand!","What did you expect?") A( 43900, 44200, 4, 4 , RBf,RBb, "I have 18 grenades to spare. Seems I","manipulated a few more than needed.") A( 44300, 44600, 4, 4 , RBf,RBb, "One cycle kill. The DTC3 runs failed to","do this. Go CloudStacking and grenades!") A( 44620, 45400, 4, 4 , RBf,RBb, "Information my script gives you:", " * Weapon ID, cooldown, ammo, grenade count", " * Length of charge for charged shot (and power)", " * Spawn timer, camera lock, enemies onscreen", " * Hitboxes, including numbers indicating HP", " * Detailed RNG information predicting when things drop", " * Adjustable HUD opacity and hitbox scaling", " (see offscreen stuff)", "", "Sadly, it still doesn't color dinosaurs.") --Stage 3-2 a( 49999,100 , 4,150 , RGf,RGb, "CHECK: at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 1 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 2 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 3 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 4 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 5 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 6 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 7 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 8 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2: 9 at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "CHECK: at 4.... T5+... T1+... T2+...") a( 49999,100 , 4,150 , RGf,RGb, "3-2 at 4.... T5+... T1+... T2+...") --Stage 3-3 a( 54999,100 , 4,150 , RGf,RGb, "CHECK: at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2: 1 at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2: 2 at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2: 3 at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2: 4 at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2: 5 at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2: 6 at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2: 7 at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "CHECK: at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "3-2 at ..... T5+... T1+... T2+...") --Stage 3-4 a( 54999,100 , 4,150 , RGf,RGb, "CHECK: at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "LOCK: at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "Kill: at ..... T5+... T1+... T2+...") a( 54999,100 , 4,150 , RGf,RGb, "Victory ..... T5+... T1+... T2+...") A( 55000, 65000, 4, 4 , RGf,RGb, "### Me |--T5- --T1- --T2- --T4-", "1-1 7800| 7193 7430 7966 8346", "1-2 6409| 6762 9911 10289 10357", "1-3 3999| 4056 4121 6511 DNF", "1-4 3755| 3917 4003 4291", "2-1 4200| 4664 4747 5193", "2-2 7327| 7476 7525 7477", "2-3 3587| 3782 3642 3730", "2-4 2806| 3110 3058 4022", "3-1 5575| 5896 6400 6363", "3-2 ....| 3404 3416 3636", "3-3 ....| 4259 4160 4451", "3-4 ....| 2466 2669 2588", "---------+-----------------------", "END 5....|56985 61082 66517 DNF")
Edit2: Uh, an update. To my subtitles. For those from IRC peeking in, you would be correct in assuming I just finished 2-2, and will be making a new post shortly. Edit3: This time, I'm just updating the subtitles to remain aligned with the 50 frame improvement, and to be real chatty up through 3-1. No progress into 3-2 yet, what with the holidays. Trying to keep my mind on this, at least.