Posts for total


Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
Cpadolf wrote:
Ok, I reached the point where the ending should be triggered now, although I'm unsure if everything is set up properly because I was unable to get the correct memory address values to check (must have had some setting wrong when putting them in). I reached the same X and Y positions as total did in his test when I release the charged beam (though maybe a frame early or a frame late, I don't know), but I'm facing the other direction (don't know if this makes a difference), and instead of using X-ray I used the cooldown from one of the PB's to start charging the beam which again I'm not sure if it's allowed or not. Someone with more knowledge will have to look to see if something has to be set up differently, otherwise I think I'm done.
I took a quick look at it and it looks good, but it seems like the charge counter isn't high enough for it to count as a charged shot which is needed for the code execution. I think it needs to be 60 or over for it to count as charged. EDIT: Also, regarding facing direction and such, as long as you're falling downwards or standing on top of a block and don't aim down when you hit the required position, it should work fine. Another thing I noticed is when using the powerbomb cooldown it seems that the game will crash when the charge counter hits 120, so you will need to release the shot somewhere between 60 and 119 on the counter. I did a quick test as well with just landing quickly on a platform to charge up a while longer to make sure it'd work properly with the charge method you used as well, and I had no problems getting it to work. It finished nicely with a quite impressive game time :)
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
Ilari wrote:
Cpadolf wrote:
Hmm, I don't get any values when I load that watch, I just get a "#syntax (illchar)" next to the watch name. Anyway there's still some way to go before I reach that point in the run, I'm just entering norfair.
The watch file looks to be in new format that appeared in rr2-β16.
Yeah, I used rr2-β17, but essentially you just want to set hexadecimal watches for the addresses 0x0b04, 0x0b05 and 0x0b06.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
Cpadolf wrote:
Ok, then I'm thinking that it would probably be fastest to use the time it takes to reach that position to use up 3-4 of the PB's so preferably only 1 has to be used each time in GT's room as that would save a lot time on lag and not having to wait to escape GT's room. As long as it's possible to jump through the room with Spring Ball without getting stuck. Do you have a RAM watch saved for lsnes btw?
Yeah that should be a bit faster. It might be a bit tricky to get through there with springball since there's some repeating blocks in the air that you'll have to navigate around somehow, but it's probably doable. Here's the memory watches I used, you want to have the values as following the frame you release the beam: b04 = 82 b05 = 11 b06 = 37 http://tas.speedga.me/pos.lwch EDIT: I also updated the lsnes-port of the OOB Lua script that I posted earlier, it now draws a bit more correct, and uses the larger framebuffer of lsnes to show more OOB area around you.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
Cpadolf wrote:
Nice! That's pretty quick still even though the extra supers have to be collected, and it should be improvable by a decent amount as well. Also, is the only goal in the room after GT to reach a certain position, or does something else have to be done as well?
Yes, the goal is to get to the right position and release a charged space-time beam. One issue though is that you cannot charge the beam normally, because it leaves a space-time projectile behind as soon as you start charging. This is solved by using x-ray and starting the charge while x-ray is active.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
I made a quick test run of this using cpadolfs latest WIP as a base and using the charged spacetime and 0xb00 (oob positioning) method. I had to convert the movie to lsnes since Bizhawk doesn't support entering the extra controller bits needed. It's not at all optimized and just made pretty much as a test to make sure everything works together on a bsnes-based emulator. It uses 5178 frames (about 86 seconds) after entering GT's room until last input to play credits, but I'm quite sure this can be brought down a bit with good optimization. I also made a very quick and barely functional port of PJBoy's OOB viewer to lsnes so I could navigate OOB to get to the right position. LSMV file: http://tas.speedga.me/supermetroid_lsnes_test.lsmv LUA script: http://tas.speedga.me/Super%2520Hitbox2%20lsnes.lua EDIT: I did some further thinking and I managed to optimize the inputs for ending the game down to 3 frames by overwriting a pointer in RAM and making the game call the controller registers every frame for me. This gives me a lot more controllable bytes per frame since we don't have to setup a loop, and can just return normally back into the game every frame. I've updated the lsmv file with the new version.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
Yeah it's too bad that the murder beam method seems like it's not going to work in a practical way here since it would have saved quite a bit of time. I searched through ROM bank 90 as well since that's the bank we're in when we enter 0xdc2, and there's no 421x value we could use there either. I'll try to see if there's any way to optimize the 0b00-method a bit more during the weekend, might be better spots or ways to go OOB that creates less lag and spawns you a bit closer to the right position.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
So I did some testing on 0xdfe-0xe01 and either I'm thinking all wrong or it'll be hard to make a jump to 4218 with this. Since 0xdfe-0xdff is all the pressed buttons last frame, and 0xe00-0xe01 is the newly pressed buttons last frame, to make a jump then you need to make 0xdfe to 4C, 5C or 82 by adding 42 or 34 (in case of BRL (82)) to a value. The issue though as I see it is that if we've already used a bit for the first value, we can't use it again when adding, since that button won't be newly held down. So in the case of wanting to do a JMP (4C 18 42), to get this you'd want to have 0xdfe be A (1010) and add 42 (1000010) to it, but that wouldn't work since bit 2 is already held down from A. The same issue seems to hold true for the other jumps. So for this to work, the destination address high byte bits would have to be a subset of 4C, 5C or 82 already, so for example a jump to 4018 would work fine. I hope I'm missing something major here though and this won't be an issue :)
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
amaurea wrote:
Cpadolf: Total^ has looked into this. He has found a way by glitching out of bounds in the room next to GT, and running for about 20 seconds. One also needs to collect the GT's super missiles repeatedly.
I refined it a bit more and the best I got while still being quite unoptimized was 1334 frames counted from Samus standing at the GT super missile pack, until being at the right position OOB. But hopefully the murder beam stuff will speed it up a bit since you wouldn't have to get the supers 3 times over and spend 9 power bombs as well.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
amaurea: Would it be possible perhaps to jump to something like this, assuming we can setup A and then control a jump?
$82/E767 8D 98 09    STA $0998  [$88:0998]   A:0420 X:0003 Y:0080 P:envmxDIzC
$82/E76A 60          RTS                     A:0420 X:0003 Y:0080 P:envmxDIzC
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
So we did some more digging in what's possible with this, and me and Lioran made this possible on console. https://www.youtube.com/watch?v=Hfa9RHG1iB8 RIP Super Metroid :) Edit: So from testing we did, this will not work on some 1-chip old model SNES:es. I messed around a bit and found another setup that seems to work here: https://www.youtube.com/watch?v=6PXHzkKO8_Y
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
I've done some research on Spacetime recently and just posted my findings on the SM Speedrunning wiki: http://deanyd.net/sm/index.php?title=Spacetime_Beam Regarding arbitraty code execution, what Tub said is correct since what happens is a invalid jump to ROM, so there's no way we can manipulate what code runs. From what I can tell though, the effects are not random as long as roughly the same conditions are met, and the data that gets copied seems to be from ROM in most cases. I can't give any guarantees that it's all correct though, since I'm not that familiar with 65c816 code and the SNES architecture, but it's at least something. Feel free to contribute information to that as well.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
True wrote:
Which bot? My bot, the Arduino NESBot design or a custom bot?
It's a custom one I made for both NES and SNES, but I'd guess it's quite similar to already existing designs. I'm just using an Arduino Uno and CD4021 shift-registers and then sending the controller data over serial in realtime to it.
Experienced Forum User, Published Author, Player (38)
Joined: 1/22/2014
Posts: 38
Location: Sweden
So I made a TASbot this week for fun and learning purposes and managed to get three of the runs mentioned earlier in the thread by Meshuggah to sync with it so far, there's more testing to be done. I should mention that all of these were done using a Powerpak flashcart, even though that shouldn't matter much when it comes to games like these using relatively simple mappers. These are the runs I managed to get going: NES Chip 'n Dale Rescue Rangers 2 (USA) "1 player" in 15:13.79 by feos NES Duck Tales 2 (USA) in 08:41.29 by feos & MESHUGGAH NES Darkwing Duck (USA) in 10:59.5 by AnS & Randil I've uploaded the raw deinterlaced video captured directly from the console, but no video filming the console since I don't really have a decent setup to do that with. The videos can be downloaded here: http://tas.speedga.me/ Edit: I also just managed to get "NES Mega Man (JPN/USA) in 15:29.27 by Deign" (using the JAP version) working and added a video of that as well :)