Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <Straework> Would be nice if we truly understood spacetime
- <Straework> What is it written in, the rom?
- <total> Yeah, that's my goal, I know why it does what it does
- <total> 65c816 assembly I guess
- <total> there's decent debugging snes emulators
- <Straework> So what is it doing in a nutshell?
- <total> So what happens is that when you shoot a beam, there's a routine to jump to a certain address, using and index found at a memory location, this index is different depending on what beam you shoot
- <Straework> Sure
- <total> so when you shoot space-time, this index is well, fucked up
- <total> so the code jumps completely wrong
- <Straework> Jumps to an index it shouldn't basically, or where there's other code?
- <total> and just happens to end up in a routine, that copies data into RAM at a position near where tile-data exists
- <total> and this routine will run for every frame that the beam object is visible on screen
- <Straework> Intriguing
- <total> and the amount of data copied and where it starts copying from, is dependant on the Y register I think
- <Straework> What's in the y register
- <total> which obviously gets changed depending on other code, and is never reset properly since the code jumps straight inside a loop
- <total> so that's why for example shooting a super missile for space time gives different results, since it exists on screen for a shorter amount of time
- <total> so it only jumbles the room data for a bit and then goes back to normal
- <BackForJustice> intradasting
- <Straework> So what would happen if we modified the amount of time we were in that routine by shooting a missile instead, or shooting the wall with the super
- <Straework> Perhaps more consistent results could be achieved that way?
- <BackForJustice> shooting the wall would change the idea of super into explosion ?
- <BackForJustice> hence making it longer
- <Straework> Well not if the explosion is considered a part of the beam object
- <BackForJustice> btw i have no idea what i'm talking about XD
- <Straework> isn't considered*
- <BackForJustice> just speculating
- <total> the room shaking from a super seems to be part of it for example
- <BackForJustice> true but it come from the beam object so it should come with the same correlation
- <total> so a missile could be more stable
- <BackForJustice> but would a missile do the same thing
- <total> also for example shooting a missile upwards into the roof
- <total> will make the crazy go on a for a little shorter while I guess
- <BackForJustice> spacetime is soo weird
- <total> in theory, you also probably want to be in the air while the routine copys data
- <Straework> Sounds like ivan should experiment
- <total> or somewhere with 00 blocks
- <total> becuse I think it can crash if you stand on a block that gets replaces with a garbage block
- <BackForJustice> what does it do with grapple i wonder
- <Straework> That makes sense
- <total> I tried it, grapple doesn't make it modify enough memory to do anything really
- <BackForJustice> i see
- <BackForJustice> and xray?
- <total> it's not a beam
- <BackForJustice> same thing i guess?
- <Straework> But that brings the next question, why is statue skip consistent sometimes?
- <BackForJustice> ahh XD
- <Straework> i.e. the same blocks for the skip get put into a place
- <total> well, it seems like the OOB data is somewhat stable, since it copies data from ROM to RAM
- <total> so it's always the same data
- <total> what I think makes it crash is pretty much if the copying is run too much or something
- <BackForJustice> that explain why it crashes more on console :x
- <total> still need to figure it out
- <Straework> What tool are you using to look at the assembly?
- <total> no$sns and snes9x 1.51ep10r2
- <Straework> Straevaras
- <Straework> k ty
- <total> But at least this is a start to understanding it, and maybe possibly at least knowing enough to make it not crash
- <total> if we can figure out exactly why it crashes
- <Straework> That would be excellent if we got that far
- <total> then we can craft different setups that are safe
- <total> possibly though that we need to find different OOB setups
- <total> since the areas will be a bit different with different setups
- <BackForJustice> can't wait till glitched any% be 10 minutes long
- <total> I found two ways to do MB skip with only 1 space-time yesterday
- <total> worked fine with gamesaver
- <Straework> Eh, it'll never be that short
- <total> sadly not without it
- <Straework> Yeah
- <Straework> ivan was experiencing the same thing the other day
- <total> But now that I understand more what's going on, it might be easier to find something
- <total> when it crashes it just ends up doing an infinite loop for some reason
- <total> a jump instruction that jumps to itself
- <total> if anyone is interested, the relevant jump that starts the chaos is found at this address
- * Tterraj42 ([email protected]) Quit (Ping timeout: 140 seconds)
- <total> 0090:AEDD
- <Straework> I'll have to look at it later this evening
- <total> It does a "jsr (0C68, x)", where x = 0, so it fetches whatever address is at 0C68, and jumps to it
- <total> and in the case of spacetime, what's stored there is "AD16"
- <total> so it jumps to 0090:AD16
- <Straework> Does it compute the index based on beam selection?
- <total> yeah, depending on beam
- <total> there will be different values stored at 0C68
- <total> or rather, depending on beam combo
- * Tterraj42 ([email protected]) has joined #supermetroid
- <total> it'd be great if someone could help out mapping this stuff out
- <total> I'm not exactly an expert either on SNES architecture and 65c816 assembly, I'm decent with 6502 though which is pretty similar, so I can guess what's going on fairly well
- * GariPhone ([email protected]) has joined #supermetroid
- <total> But I feel that the mystery of space/time will be solved soon
- <total> We're getting quite close now at least
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement