Post subject: Newbie TASing in Dolphin
Joined: 3/4/2012
Posts: 74
Hi everyone. I've been coming here for years to watch TAS videos, but recently I decided it might be fun try it out myself. I decided to start off with Super Monkey Ball in Dolphin. I realize it's probably not the easiest place to start, but I'm up for a challenge and I just love Super Monkey Ball. So far I've TASed through the first stage using frame advance, and started on the second. Doing so I've run into some questions:
  1. Is there a way to press a key each frame? It seems like you have to press a key on frame 1 then release it on frame 2 and then press it again on frame 3.
  2. Is there a way to play in dolphin at slower than 16% speed but faster than frame advance?
  3. It seems that if I plug in a usb controller to play the game, I can't adjust the analogue sticks in the TAS input window unless I reopen Dolphin. Is there any way I can use the usb controller for playing at 16% speed and then use the TAS input for frame advance?
  4. I can tell I'm going to need values on position and speed to help me with my run, but I'm having trouble finding those values using the cheat search. Are those types of values usually 16bit? Should I try to look for a speed value and a direction vector, or should I be looking for a speed in the x direction, the y direction and the z direction separately? Any tips?
  5. Would it be useful to get an Action Replay or a USB Gecko for debugging? What type of additional information would I be able to get by doing so? (And does anyone have a USB Gecko for sale?)
  6. Is there anything I should know about TASing in Dolphin? I've read that it can have desync issues, but it's working fine for me so far.
I haven't really read enough about LUA scripts to ask any questions regarding that.
Post subject: Re: Newbie TASing in Dolphin
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
Welcome to TASVideos! Great to see you're working on a GameCube game (so am I!). I'll answer your questions: 1. If a key is pressed every frame for three frames, it would be the equivalent of holding that key for three frames. There isn't a way to alternate pressing and releasing a key any faster way, and the game will think you're holding the key down instead of pressing it two or three times, meaning on-off-on is the fastest pattern that the game will accept. 2. If you're trying to make an optimal TAS, I strongly advise you to use frame advance. If the run isn't as fast as you can make it, it will probably be rejected. But if you're just slowing down Dolphin to test some strategies, then I would recommend changing graphics settings, such as increasing the resolution the game runs at. 3. I don't know why the TAS input window isn't working in that situation. As soon as the window is opened, it should be the only input being recorded (as other sources of input are disabled). When you close the window, the game should start receiving input from your controller again. Does that function work for you? 4. I don't know the answer to this one, but someone who has worked on finding memory addresses for 3D games could help you (like the Sonic Adventure 2: Battle TASers). 5. Dolphin has a built-in Action Replay that can be accessed by right-clicking the game on the game select list. I tested it a little while ago on 3.0-378 and it didn't work, but I know it worked for r7719, so maybe you could test stuff out on that revision if you have problems getting it to work. 6. Yes. Please see this thread. In short, uncheck Enable Dual Core and Enable Idle Skipping, use LLE audio (you will need two files from a real GameCube/Wii for this) and please use the revision 3.0-378 "more-save-fixes". That revision has been out for a few months and thanks to nitsuja's save fixes, no one has reported any desyncs in the movies it creates. The link to that revision and the "improved TAS input" revision are in the thread I linked to. If you're using any other revision, the movie file you're currently making won't sync. Usually, you will be able to hex edit a few inputs and it will sync fine. Dolphin does not currently have any Lua support. And Wii Remote input recording is still broken, though Wii games can be TASed if played using a GameCube controller (like Muramasa). If you have any other questions about Dolphin or GameCube TASing, ask any of the Dolphin thread regulars (including me) here. We would be more than happy to help you.
Editor, Player (44)
Joined: 7/11/2010
Posts: 1029
I don't use Dolphin, so I can't answer most of your questions, but: 1. The game can't tell the difference between holding down a key for two frames, and pressing it for a frame, releasing and repressing it between frames, and pressing it again, because it only reads input once per frame. So if you're trying to press as fast as possible in realtime, you're limited to pressing it once every other frame. If you're trying to press it as fast as possible in gametime, it might be possible to pause the game, release it and repress it, then unpause the game again, as the game would have time to read the release then. (Either the release or repress might need to be timed on the same frame, or the frame before or after, as the pause or unpause, depending on the game; you can experiment. Also, this trick doesn't work in every game) This is obviously slower in realtime, so it's limited to a few tricks, like increasing the maximum speed of a BLJ in Super Mario 64, where presses on successive frames are really needed. 4. Look for x, y, and z for position, pretty much every game engine I know stores them like that. You might want to try both ints and floats, and 16, 32, and 64 bit, until you find out the values. (I'd say floats are slightly more likely on modern consoles, like the ones Dolphin emulates, but it's far from certain.) Direction is more complicated; most likely, you'll have an x,y,z value for velocity, and some other value for facing, but there are a lot of possibilities. 5. Being able to use cheat codes is useful for testing, but the emulator should be able to emulate an Action Replay for you (I don't know how it's done specifically in Dolphin), so you don't need the actual hardware to do so. The main information you get out of this is whether a memory address is correct; you can lock a memory address to a given value with a cheat code and see how the game reacts to discover what the memory address does in the game. If you're trying to do a testrun of part of the game it's hard to get to (unlikely to be a problem with Super Monkey Ball), it's sometimes also helpful to use cheat codes for actual cheating, although obviously you can't do this for the final run. 6. Dolphin used to have a lot of sync problems, but many have been fixed by now. You might want to ask in the forum about Dolphin here about how much progress they've made with fixing sync problems. Make sure you use a recent version of the emulator (preferably, the most recent one that's known to work; it's probably hosted on this site), and if you want to guard against potential desync issues, keep frequent backups of your TAS (as well as replaying it from the start every now and then to ensure it still syncs).
RachelB
She/Her
Player (129)
Joined: 12/3/2011
Posts: 1579
as well as replaying it from the start every now and then to ensure it still syncs).
At this point, i'd say this is entirely pointless in dolphin. It's been 3 months now, and not a single desync has been reported, except in one specific game where save states are broken and clearly do not work properly. Also, using the latest version of the tas-input branch (which can be found in the thread coolkirby linked above), you can use a controller while the tas-input window is open, it isn't disabled like in previous versions.
Post subject: Re: Newbie TASing in Dolphin
Joined: 3/4/2012
Posts: 74
Thanks for the welcomes and responses!
CoolKirby wrote:
2. If you're trying to make an optimal TAS, I strongly advise you to use frame advance. If the run isn't as fast as you can make it, it will probably be rejected. But if you're just slowing down Dolphin to test some strategies, then I would recommend changing graphics settings, such as increasing the resolution the game runs at.
Yes. I would be doing frame advance for the recording and slow speed for testing. I'm not sure increasing the graphics settings will help much as my desktop is pretty powerful, but I'll give it a shot. 16% speed is probably fine anyway. I was just curious.
CoolKirby wrote:
3. I don't know why the TAS input window isn't working in that situation. As soon as the window is opened, it should be the only input being recorded (as other sources of input are disabled). When you close the window, the game should start receiving input from your controller again. Does that function work for you?
I'll give it another try. The time I tried it I had been using my controller and then opened the TAS input window and had the issue I mentioned.
CoolKirby wrote:
6. Yes. Please see this thread. In short, uncheck Enable Dual Core and Enable Idle Skipping, use LLE audio (you will need two files from a real GameCube/Wii for this) and please use the revision 3.0-378 "more-save-fixes". That revision has been out for a few months and thanks to nitsuja's save fixes, no one has reported any desyncs in the movies it creates. The link to that revision and the "improved TAS input" revision are in the thread I linked to. If you're using any other revision, the movie file you're currently making won't sync. Usually, you will be able to hex edit a few inputs and it will sync fine.
Is revision 3.0-378 the one in that thread? I'm currently using the top 64bit version from that thread.[/quote]
RachelB
She/Her
Player (129)
Joined: 12/3/2011
Posts: 1579
Is revision 3.0-378 the one in that thread? I'm currently using the top 64bit version from that thread.
No. If the titlebar of dolphin says Dolphin [more-save-fixes] 3.0-378, then that would indeed be a find version to use. if it just says 3.0-378, then that is not an acceptable version to use. If you plan to use the tas input, then you'll want to download the versions posted in that thread, which should say [TAS-Input] 3.0-381-dirty in the title bar. Also, if want to run slower than 10 fps, you could set a hotkey for frame advance, then make a script to press that key as often as needed to run at whatever fps you want. It's not the most elegant solution, but it works.
Joined: 3/4/2012
Posts: 74
rog wrote:
Is revision 3.0-378 the one in that thread? I'm currently using the top 64bit version from that thread.
No. If the titlebar of dolphin says Dolphin [more-save-fixes] 3.0-378, then that would indeed be a find version to use. if it just says 3.0-378, then that is not an acceptable version to use. If you plan to use the tas input, then you'll want to download the versions posted in that thread, which should say [TAS-Input] 3.0-381-dirty in the title bar. Also, if want to run slower than 10 fps, you could set a hotkey for frame advance, then make a script to press that key as often as needed to run at whatever fps you want. It's not the most elegant solution, but it works.
I do plan to use TAS-Input and 3.0-381-dirty is the version I have it looks like. So, that sounds like I'm set there. Also, that's a great solution for playing at lower fps! Thanks.
Editor, Expert player (2330)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Without bothering to read what's been posted in this thread so far: Time rankings on elitescores: http://www.elitescores.com/rank_wr.php?gid=8 TAS forum topic: http://tasvideos.org/forum/viewtopic.php?t=2181 There are videos posted in the forum topic, but I haven't checked them out. Ideally, you should aim to improve the times posted on elitescores or the times the players reach in the posted videos. 1. You can use TASinput which will hold whichever key you 'checked' until you 'uncheck' it. I don't know any answers to your other questions, sadly. You should use one of the Dolphin versions posted here (3.0-381-dirty (TASInput branch)) This version is said to be completely desync-proof. Also, you should use these settings in the config menu:
---GENERAL TAB---
Enable Dual Core (OFF)
Enable Idle Skipping (OFF)

-> JIT Recompiler (recommended)

Lock threads to cores (OFF)
DSP LLE on thread (OFF)

---AUDIO TAB---
-> DSP LLE recompiler
Enable DTK Music (ON)
Enable Audio throttle (OFF)
If you use these audio settings, you need two files named "dsp_coef.bin" and "dsp_rom.bin" that don't come with dolphin for copyright reasons. And for the same reason I don't think it's safe to post them here, sorry.