Joined: 7/30/2006
Posts: 208
Location: Alefgard, USA
Thanks for the positive feedback. I guess my question is then, should I use the level select cheat to play on PRO mode? I think by precedent, autoscrollers are required to play at the hardest level.
Pro mode all the way. It's not like you should be worrying about authenticity or score continuity in a playaround. Oh, and preferrably, don't shoot; instead, try doing as many things as possible with the force pod (I haven't yet watched your attempt, though).
Joined: 7/30/2006
Posts: 208
Location: Alefgard, USA
I'll mess around tonight on the PRO mode selection at the title screen and first stage. If it's doable, I will of course play in PRO mode.
As for your suggestion, Moozooh, the force pod is definitely a nice (and entertaining, hopefully) tool to use. If it's disconnected, it can fire 4 bullets at once. A well-timed shot could take out a lot of enemies.
R-Type 1 looped once after you beat the final boss and had you repeat the game on hard, the level numbers suggest that if you don't skip to pro difficulty the game wouldn't end properly on the first playthrough anyway?
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days
<adelikat> no doubt
<adelikat> klmz, they still do
Joined: 7/30/2006
Posts: 208
Location: Alefgard, USA
WIP Update
http://dehacked.2y.net/microstorage.php/info/1659925110/%21%21R-Type-Dave.smv
As you can tell, the game gets better as I am able to gather more speed upgrades. I'll also try to showcase each weapon at least once in the movie.
I think the second half of level 3 turned out to be pretty awesome -- the first part of the level has unavoidable flying fish lag. (The lag is even worse if I would've fired my weapon).
EDIT:
Also, note that there is a new stage select at the beginning, and that I play in PRO mode. The title screen is not any longer, but I must pause in the first level briefly to select the correct level.
Joined: 4/21/2004
Posts: 3517
Location: Stockholm, Sweden
Bodacious! That was totally awesome. You did better minimizing the lag, flying around enemies is a big + to the entertainment. There is nothing you could have done about those stupid fishes, they always lag, no matter what you do. I cannot wait to see how you will entertain me when you enter that spaceship stage :) Go Dave!
Joined: 3/17/2007
Posts: 97
Location: Berkeley, CA
I like writing scripts, so here's a script. SuperRType.lua.gz
I assume it's unhelpful for making a TAS; if I'm wrong, let me know and I'll refine it.
Otherwise, I'll leave it as-is because snes9x/Lua doesn't let you read CPU registers (yet), the game's internal design is *crazy*, and it's already drawing me some amusing eye-candy. :)
Good luck with this, Dave.
Joined: 7/30/2006
Posts: 208
Location: Alefgard, USA
Hi Everyone,
I am considering an improvement to the Super R-Type TAS. I'm pretty sure I can reduce lag in many places, and perhaps even shorten some boss fights.
However, I had a question. As you may know, I use a password to go straight to PRO mode. The game recognizes this, and therefore gives me the "bad" ending when I win.
Therefore, I was wondering if it would be possible to once again win the game in PRO mode, but somehow start from a save-state where HARD mode was won legitimately first. Then, you would get to see the "real" credits: http://www.youtube.com/watch?v=r9G9_zA1hmA
Anyway, after winning the game in Hard mode, you can keep missile upgrades (I don't pick up missiles in the current TAS anyway), and you can keep speed upgrades. You cannot keep your force pod or bits. Thus, you could start PRO mode and play a bit faster in the first couple of levels, perhaps increasing the entertainment value at the beginning of the movie.
So thus, my questions are as follows: Is it allowed to start from a save-state (similar to the Chrono Trigger New Game + ?? ), and if so, what are the technical "rules" to do this? In addition to the rules, should the player be started with full speed, or should level 1 PRO be started with absolutely nothing?
If you can substantiate the need of speed upgrades for increased entertainmant value, then by all means, go ahead. Personally, I'm fine with using savestates for a game like this, but you may want to consult with judges first.
The general rule for runs that start from a "dirty" state is that you have to submit a movie along with the TAS that gets you set up for the TAS. So for example, the "alternate character" Castlevania runs use pre-existing TASes that beat the game with the normal character, while most (all?) of the Chronotrigger New Game + runs are based off a movie that was made awhile back that grinds everyone up to level 99 and then beats the standard game. That movie doesn't need to be optimized; it just needs to prove that the point you're starting from was achieved legitimately.
As for speed upgrades, personally I'd say do without them at the start. You'll have plenty of time to show off hyperspeed R-Type throughout the game; it'll be nice to have a lead-in where things aren't quite so frantic.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
There is a precedent for this (Specifically, TheAxeMan's NES Metal Storm run; the run starts from a password to skip to the second quest, and also starts with the fireball weapon) but I disagree with it, on the grounds that I think anything you use in a TAS should be gotten in that TAS, not in the setup.
Joined: 7/30/2006
Posts: 208
Location: Alefgard, USA
Solon's suggestion seems pretty good, I think. I may go ahead and try this.
However, what about the technicalities? Here is my understanding:
1. Create movie (unoptimized) of myself winning the game on HARD. Win the game without any upgrades. Maybe die in level 7 to make this easier so upgrades can be used in previous levels.
2. After the game is won, stop this TAS recording, and let the game cycle back again to the main menu.
3. When the game is at the main menu, start a new TAS.
========
I hope that's right. But what about timing issues? How do I know at exactly what point to begin the new recording? (That is, I don't want to "cheat" by starting the movie one frame before the START button can be pressed, and then claim I saved time when this time saver was never possible from the "record from reset" option)
Start the new movie from a savestate created at the end of the old movie (thus, the old movie should run until you get to the title screen, or wherever you start needing to provide input for the new movie). Whatever you end up doing, there's going to be some timing discrepancies because you aren't starting from power-on; as long as you explain what those discrepancies are, I don't think there'll be a big problem.
However, you really should get input from one of the judges before dedicating too much time to this. It's entirely possible that I'm not familiar with all of the rules regarding this kind of thing; it doesn't come up often.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Assuming that resetting doesn't block the ability to play in Pro mode, you'd still end up with a movie file that depends on prior-achieved state. It's not any different philosophically from recording from a savestate.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Resetting does not provide a power-on state. Power-on implies the power had been off prior to turning it on; reset doesn't do anything to power supply.
Joined: 7/30/2006
Posts: 208
Location: Alefgard, USA
A quick update:
Winning the game on HARD does NOT take you back to the title screen. After the short "Bydo empire dies, peace returns" text, the music stops, and the phrase "Begin next level" appears. Here, you can press start and go to PRO mode. I think PRO mode will begin eventually even if you don't press start. This screen is where the new TAS would start if it is allowed to begin from a save-state.
Joined: 7/30/2006
Posts: 208
Location: Alefgard, USA
Here is a .smv file of Super R Type being won on hard mode. This file does start from power on, and ends just before you can access PRO mode legitimately. If you play this movie and then win PRO mode, you will get the real credits.
http://dehacked.2y.net/microstorage.php/info/476334357/Super_R_type_HARD_win_legit.smv
EDIT:
About the movie. I play the first six levels normally, just killing enemies, not worrying about lag, time, or points. I just wanted to get through them. I die on purpose at the beginning of level 7 so I lose my missile and speed upgrades. These upgrades are not picked up again in level 7, since I don't want to start with them for PRO mode.
Joined: 10/29/2014
Posts: 176
Location: Bavaria, Germany
Alright, I've been working on this for a few weeks, and have a very rough Test-TAS now that beats the published TAS by 2752 frames (ending with the last input at 60213 compared to the last input of the published TAS being 62965), which is close to 46 seconds (real-time). Since this is some kind of auto-scroller game (like Gradius), improvements mainly come from lag reduction and boss fight optimization. In this case, my Test-TAS is on lsnes, and the old published TAS on Snes9x 1.43 (which normally lags less).
For the first stage's initial section before the 1st boss, 10 lag frames are still remaining which seem to be correlated to certain events in the stage, and I couldn't get rid of any single of these lag frames when trying for each of them separately to avoid it (even if I caused a bunch of lag beforehand by clearing enemies, projectiles, sprite animations so that at the frame in question no lag would occur anymore, it didn't work in my tests starting a few seconds before a given lag frame). The boss of the 1st stage was somewhat optimized with use of the input editor. All remaining stages (including bosses) were merely optimized with slowdown and savestates (outside of RAM Watch for the hp of the 2nd and 3rd last bosses) to give me an idea on how the stages would go. I chose to do so because I assume that there wouldn't be any major disadvantage by doing so, assuming there is little to no RNG in the game, and because testing small sections with slowdown and savestates seems to be an effective way of quickly improving portions of stages, compared to going through many different maneuvers solely with frame-advance or input editor (which would be more effective when it comes to polishing a given maneuver, rather than writing all or most of them in the editor).
In general, I followed the published TAS regarding the weapon upgrades that it takes and skips, and didn't try variations there. The 3rd and 2nd last bosses are killed in a much faster manner than dave_dfwm's TAS does them, mainly by timing all Spread-Laser shots according to the rather precise rhythm in which the bosses actually can take damage (as opposed to just eating the projectiles without any effect) to make full use of the Spread-Laser (damage-wise).
In this test, I didn't focus on trying to be entertaining at all. This would come as secondary quest after the frame optimization is done, and would then be executed within the limitations given by the resulting frame-count (going by ''last frame with inputs'') which shall not be exceeded.
Here is my Test-TAS: https://cdn.discordapp.com/attachments/218520158963105792/362064757345484820/Super_R-Type_WIP_Test-TAS.lsmv
Edit: A slightly improved version with better boss fights, saving about 1 more second:
https://cdn.discordapp.com/attachments/218520158963105792/368530584613683200/Super_R-Type_WIP_Test-TAS.lsmv
And here a video of it:
Link to video
Some memory addresses of the form 7E...., i.e. starting with 7E, for enemies (1 byte, unsigned):
0199 - 01D8 contains 1st enemy data 0899 - 08D8 contains 29th enemy data 0F99 - 0FD8 contains 57th enemy data
01D9 - 0218 contains 2nd enemy data 08D9 - 0918 contains 30th enemy data 0FD9 - 1018 contains 58th enemy data
0219 - 0258 contains 3rd enemy data 0919 - 0958 contains 31th enemy data 1019 - 1058 contains 59th enemy data
0259 - 0298 contains 4th enemy data 0959 - 0998 contains 32th enemy data 1059 - 1098 contains 60th enemy data
0299 - 02D8 contains 5th enemy data 0999 - 09D8 contains 33th enemy data 1099 - 10D8 contains 61th enemy data
02D9 - 0318 contains 6th enemy data 09D9 - 0A18 contains 34th enemy data 10D9 - 1118 contains 62th enemy data
0319 - 0358 contains 7th enemy data 0A19 - 0A58 contains 35th enemy data 1119 - 1158 contains 63th enemy data
0359 - 0398 contains 8th enemy data 0A59 - 0A98 contains 36th enemy data 1159 - 1198 contains 64th enemy data
0399 - 03D8 contains 9th enemy data 0A99 - 0AD8 contains 37th enemy data 1199 - 11D8 contains 65th enemy data
03D9 - 0418 contains 10th enemy data 0AD9 - 0B18 contains 38th enemy data 11D9 - 1218 contains 66th enemy data
0419 - 0458 contains 11th enemy data 0B19 - 0B58 contains 39th enemy data 1219 - 1258 contains 67th enemy data
0459 - 0498 contains 12th enemy data 0B59 - 0B98 contains 40th enemy data 1259 - 1298 contains 68th enemy data
0499 - 04D8 contains 13th enemy data 0B99 - 0BD8 contains 41th enemy data 1299 - 12D8 contains 69th enemy data
04D9 - 0518 contains 14th enemy data 0BD9 - 0C18 contains 42th enemy data 12D9 - 1318 contains 70th enemy data
0519 - 0558 contains 15th enemy data 0C19 - 0C58 contains 43th enemy data 1319 - 1358 contains 71th enemy data
0559 - 0598 contains 16th enemy data 0C59 - 0C98 contains 44th enemy data 1359 - 1398 contains 72th enemy data
0599 - 05D8 contains 17th enemy data 0C99 - 0CD8 contains 45th enemy data 1399 - 13D8 contains 73th enemy data
05D9 - 0618 contains 18th enemy data 0CD9 - 0D18 contains 46th enemy data 13D9 - 1418 contains 74th enemy data
0619 - 0658 contains 19th enemy data 0D19 - 0D58 contains 47th enemy data 1419 - 1458 contains 75th enemy data
0659 - 0698 contains 20th enemy data 0D59 - 0D98 contains 48th enemy data 1459 - 1498 contains 76th enemy data
0699 - 06D8 contains 21th enemy data 0D99 - 0DD8 contains 49th enemy data 1499 - 14D8 contains 77th enemy data
06D9 - 0718 contains 22th enemy data 0DD9 - 0E18 contains 50th enemy data 14D9 - 1518 contains 78th enemy data
0719 - 0758 contains 23th enemy data 0E19 - 0E58 contains 51th enemy data 1519 - 1558 contains 79th enemy data
0759 - 0798 contains 24th enemy data 0E59 - 0E98 contains 52th enemy data 1559 - 1598 contains 80th enemy data
0799 - 07D8 contains 25th enemy data 0E99 - 0ED8 contains 53th enemy data 1599 - 15D8 contains 81th enemy data
07D9 - 0818 contains 26th enemy data 0ED9 - 0F18 contains 54th enemy data 15D9 - 1618 contains 82th enemy data
0819 - 0858 contains 27th enemy data 0F19 - 0F58 contains 55th enemy data
0859 - 0898 contains 28th enemy data 0F59 - 0F98 contains 56th enemy data
The game can assign different memory addresses to keep track of the parameters of a given enemy, and does so in a somewhat chaotic way that even depends on when and how one charges the ship's beam. This is why I list all the possible (at least these should be all) memory address candidates for tracking certain enemy parameters.
Given a variable ''?'' that stands for any hexadecimal value from 0 to F (but so that the address is in the range from 0199 to 1618), the following addresses keep track of the following enemy properties:
0?19/0?59/0?99/0?D9 checks if the enemy address is active (tracking some enemy) or not (in this case it is usually equal to 255).
0?1A/0?5A/0?9A/0?DA is the x position* of an enemy in pixels (counting from the left rightwards).
0?1C/0?5C/0?9C/0?DC is the y position* of an enemy in pixels (counting from the top downwards).
0?22/0?62/0?A2/0?E2 is the number of healthpoints an enemy has.
1?19/1?59/1?99/1?D9 checks if the enemy address is active (tracking some enemy) or not (in this case it is usually equal to 255).
1?1A/1?5A/1?9A/1?DA is the x position* of an enemy in pixels (counting from the left rightwards).
1?1C/1?5C/1?9C/1?DC is the y position* of an enemy in pixels (counting from the top downwards).
1?22/1?62/1?A2/1?E2 is the number of healthpoints an enemy has.
*: The pixel positions are not absolute, independent of the screen's position or movement, but instead are screen-position dependent, with the top left corner of the screen being the origin of the coordinate system.
Example: In the range 0BD9 - 0C18 for the 42th enemy, 0BD9 checks if the address is actively keeping track of some enemy, 1BDA is its x position, 1BDC is its y position, and 1BE2 is its healthpoints.
And here is some corresponding lsnes RAM Watches:
A watch that covers the addresses for the hp of the first 41 enemies:
https://cdn.discordapp.com/attachments/218520158963105792/368944854111223820/Super_R-Type_ordered_enemy_hp_RAM_Watch_1.lwch
A watch that covers the addresses for the hp of the enemy slots from 42 to 82:
https://cdn.discordapp.com/attachments/218520158963105792/368944864961757198/Super_R-Type_ordered_enemy_hp_RAM_Watch_2.lwch
A watch that covers the x and y positions of the enemy slots from 1 to 20:
https://cdn.discordapp.com/attachments/218520158963105792/368944875887919114/Super_R-Type_ordered_enemy_pos_RAM_Watch_1.lwch
A watch that covers the x and y positions of the enemy slots from 21 to 40:
https://cdn.discordapp.com/attachments/218520158963105792/368944884910129182/Super_R-Type_ordered_enemy_pos_RAM_Watch_2.lwch
A watch that covers the x and y positions of the enemy slots from 41 to 60:
https://cdn.discordapp.com/attachments/218520158963105792/368944894112301067/Super_R-Type_ordered_enemy_pos_RAM_Watch_3.lwch
A watch that covers the x and y positions of the enemy slots from 61 to 82:
https://cdn.discordapp.com/attachments/218520158963105792/368944904640135168/Super_R-Type_ordered_enemy_pos_RAM_Watch_4.lwch
collect, analyse, categorise.
"Mathematics - When tool-assisted skills are just not enough" ;)
Don't want to be taking up so much space adding to posts, but might be worth mentioning and letting others know for what games 1) already some TAS work has been done (ordered in decreasing amount, relative to a game completion) by me and 2) I am (in decreasing order) planning/considering to TAS them. Those would majorly be SNES games (if not, it will be indicated in the list) I'm focusing on.
1) Spanky's Quest; On the Ball/Cameltry; Musya; Super R-Type; Plok; Sutte Hakkun; The Wizard of Oz; Battletoads Doubledragon; Super Ghouls'n Ghosts; Firepower 2000; Brain Lord; Warios Woods; Super Turrican; The Humans.
2) Secret Command (SEGA); Star Force (NES); Hyperzone; Aladdin; R-Type 3; Power Blade 2 (NES); Super Turrican 2; First Samurai.
(last updated: 18.03.2018)