Posts for BioSpark

1 2 3 4
9 10
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
And they tried so hard to prevent it. Link to video
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
kirbymastah wrote:
Does it work similarly to what I found on accident here?
Yes, it's similar. Presumably, the enemy has to be refrozen (without killing it) and hit with another weapon that kills it on the same frame. It needs to be already frozen so you can land on it. Also, the refreezing weapon has to be fired before the killing weapon, since weapons are processed in the order you fire/lay them. Therefore, bombs probably won't work as the killing weapon. In the case of stretchies, they can take two ice missiles without dying. Therefore, the first missile freezes it, the second one refreezes it (without killing it), and the third one kills it. For enemies weaker than stretchies, the only way you can land on it and refreeze it without killing it is by freezing it on the first frame it unfreezes. It's useless for TAS, especially since it takes over 8 seconds for enemies to unfreeze. If the restricted sector powerbomb didn't exist, it might have been useful. No clue why/how the other method works, where you run off of the enemy.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Another useless glitch: Link to video Setup: Freeze an enemy, then use the diffusion flakes to refreeze it immediately after it unfreezes. If you run off at the exact frame it is refrozen, you'll stay in the air. You can also stay in the air by refreezing (with diffusion flakes) and killing it on the exact same frame. ZX, you may want to see if something similar exists in ZM. Edit: it works with normal ice missiles too, but you have to use the second method, since it's impossible to freeze it while running off of it afaik.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Hm, there's some weird bug on this forum that's messing up the text in my lua script. If you want it, I can put it on pastebin. The only condition for a boss spawning is that you don't have the item it gives you. Therefore, you can fight the boss as many times as you want and still beat it normally later.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
I haven't finished disassembling the save data layout for zm, mostly because I'm very busy, but once I do we can determine what other values could be affected. Though for most values it's not very useful to set them to 0.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Whoops, I somehow equated 99 energy with 1 energy tank. I meant no energy tanks. Mostly to make killing yourself after the corruption faster. So here's an outline for a TAS that optimizes in-game time first, real time second: - follow a modified any% route, getting the items mentioned above - clear out the powerbomb blocks a few rooms before the final boss - save in the nearby save room with exactly 1 second and 28 frames on the in-game timer - get oob in the big water room in crateria and lay a powerbomb in a specific location - fall back in bounds and die - reload the save and beat the game as fast as possible Edit: saw your edit, let's just have a no pausing rule then :P Only matters if someone actually made this TAS though.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Well, turns out you can reset the timer just by having a very specific amount of seconds and frames when you save, meaning you could do an all out TAS and waste only a minute in the worst case scenario. Can you help me brainstorm? If we're giving in-game time highest priority, what's the minimum number of items you'd need to optimize the end sequence (from last save until end)? I've got: - 1 energy tank - enough supers for the boss + robot during escape - high jump - long/wave/charge beam for black pirates - speed booster - powerbombs to clear out some blocks And of course any items you'd get in any% normally. Am I missing anything? Edit: I think screw attack would save some frames...
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
-- 11 - / steep slope
-- 12 - \ steep slope
-- 14 - / slight slope
-- 15 - \ slight slope

-- find nearest slope
xPos = math.floor(memory.readword(0x300125A) / 64)
yPos = math.floor(memory.readword(0x300125C) / 64)

width = memory.readbyte(0x3000090)
clipStart = 0x2026000 + (yPos * width + xPos) * 2

slope = 0
offset = 0
while offset < 8 do
	for i=-2,2,2 do
		local clip = memory.readword(clipStart + (i * width) + offset)
		if clip == 0x11 or clip == 0x12 or clip == 0x14 or clip == 0x15 then
			slope = clip
			break
		end
	end
	
	if slope ~= 0 then
		break
	end

	offset = -1 * offset
	if offset >= 0 then
		offset = offset + 2
	end
end

-- exit program if slope not found
if slope == 0 then
	vba.print("No slope detected")
	return
end

-- get direction
dir1 = nil
dir2 = nil

if slope == 0x11 or slope == 0x14 then
	dir1 = 1	-- / slope
else
	dir2 = 1	-- \ slope
end

-- get necessary position
xClip = (xPos + (offset / 2)) * 64 + 31

if dir2 == 1 then
	xClip = xClip + 1
end

-- move to position
xPos = memory.readword(0x300125A)
while xPos ~= xClip do
	if xPos < xClip then
		joypad.set(1, {right=1})
		vba.frameadvance()
	else
		joypad.set(1, {left=1})
		vba.frameadvance()
	end
	xPos = memory.readword(0x300125A)
end

-- set facing direction
vba.frameadvance()
joypad.set(1, {left=dir1, right=dir2})
vba.frameadvance()

-- lay bomb and perform clip
joypad.set(1, {B=1})

for i=0,66 do
	vba.frameadvance()
end

joypad.set(1, {up=1})
vba.frameadvance()
joypad.set(1, {A=1})
vba.frameadvance()
joypad.set(1, {A=1})
vba.frameadvance()
joypad.set(1, {down=1})
vba.frameadvance()
vba.frameadvance()
joypad.set(1, {down=1})
vba.frameadvance()
vba.frameadvance()
vba.frameadvance()
vba.frameadvance()
joypad.set(1, {left=dir1, right=dir2})
vba.frameadvance()
joypad.set(1, {left=dir1, right=dir2})
vba.frameadvance()
for i=0,3 do
	joypad.set(1, {left=dir2, right=dir1})
	vba.frameadvance()
end
joypad.set(1, {up=1})
vba.frameadvance()
joypad.set(1, {A=1})
vba.frameadvance()

vba.pause()
This script will automatically do the slope clip for you. Use it when you're morphed and storing a shinespark while on the slope. Try to position samus in the middle of the block, otherwise it might not work. The script needs a more reliable way of finding the clip location. Edit: Fixed the script. It will now reliably find the nearest slope within a few blocks.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
ZX497 wrote:
- The long Kraid zipline room, where most categories do a long shinespark across a lava lake. - For Hard-mode only, the very first room of the game (where you get morph ball from).
The in-game timer can be reset at around 5 hours, it turns out. Might be even lower by using other rooms with different widths (if the PB explosion routine finds what it thinks is a 4x4 block, it will clear three other values and their location in memory depends on the room's width).
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Finding slopes was never really an issue anyway. There's a lua script that outlines them. Anyway, I think I'll make a lua script that automatically finds the right x position, lays the bomb and does the clip. Off the top of my head I can't think of any place this will be useful, but I'll look at all the rooms.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
ZX497 wrote:
Any two will work, the slope can retain its angle and still have a clip in there.
Actually, it looks like it works on any single 45 degree right-facing slope.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
ZX, are there any other rooms where you can get OoB and then back in? This trick might be useful if power bombs were obtained earlier in the game.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
ZX497 wrote:
Basically, if two slope pieces are connected, and the slope is facing right, there is a clip there.
Any two slopes, or does it have to be a steep slope and a gradual slope? I'll have to play around with this.
scrimpeh wrote:
Really looking forward to what an updated TAS of either game might bring.
Not sure any of the most recent stuff will help, but I'm working on a fusion 0% tas and dragonfangs is working on a zm any% tas.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
ZX497 wrote:
I dropped a movie file to the ZM topic. Also, yea, in ZM you can only move around in the open area, not the wall (since you can only move straight down while inside a solid object), so that might be an issue. The longest room, for ZM, you can get OoB from is 10 blocks wide, and that was the area where I found it to be possible to corrupt the ceiling blocks into a pathway back in-bounds (using debug, so result may not apply).
Your x position isn't as important for corrupting memory, so it's not a problem. Anything over 4 or 5 map squares wide isn't any more helpful as far as I can tell. There's nothing after SRAM.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
It's probably possible, assuming that the RAM for the tile data and save data are laid out in the same way. If you gave me a vbm file of getting out of bounds and back in bounds of a room that's at least three map squares wide, I could look into it. Basically you would save right before the final boss at exactly 80 hours and 0 minutes, go to the necessary room and corrupt the save data out of bounds, then get back in bounds and die (resetting the game would reload the save data). Then your in-game time would just be a few minutes to beat the final boss and escape.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Very nice. I was actually messing around with those blocks earlier but concluded nothing could be done, and then I wondered if frozen enemies could be used to facilitate getting oob (in that location and others). I'm feeling more confident now that we'll find other places to get oob.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Wow, can't believe I missed this spot. It should have been obvious. You're the best. This room should be wide enough to allow for some SRAM corruption, though I'll double check. I'll have to investigate it some more to check if other things are possible (resetting in-game time to 0 after 80 hours isn't very interesting). Also technically you don't have to do the short hop, but it makes it easier. Edit: Turns out the room isn't wide enough (has to be at least 3 map tiles wide). Oh well.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
That Metroid stuff it cool. Looks like it should save time. You should apply your creativity to fusion. I'm sure you could find some tricks if you tried.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Heidman wrote:
Some of that made no sense, like how you just magically have ice beam and teleport ot of the watter. Another 15 min and the game would have been finished at the rate of broken stuff happening
It's multiple recordings. He doesn't teleport.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
That is quite useful information. I don't have time to work on the damage prediction script, but it seems now you have all the pieces necessary for such a script. Also, I assume a lot of the other values for battle data are graphics related or are pointers to enemy AI, name, etc. It seems you've found the most important stuff already.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
I'm not so sure I would trust that damage formula. If you give me some time, I can find the full and accurate damage formula and put it in a lua script. The mush calculation seems to be part of a larger routine, but the mush part specifically starts at 0x810E104
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Turns out there's this forum that has a lot of info: http://s3.zetaboards.com/Lighthouse_of_Yoshi/forum/56810/ Unfortunately it's not organized and a lot of it is incomplete, but I know they had stache discounts disassembled already.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Finally decided to try the script. The UI is pretty nice. The warp to room feature will be useful if I decide to hack this game more in the future. Also, Display > Basic Info crashes the script:
LuaInterface.LuaScriptException: [string "main"]:310: attempt to call field 'SetClientExtraPadding' (a nil value)
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
Yeah I was fairly certain Japanese had those values, but I checked just in case. Good thing I was able to use my US save file. (Normal * 0x14 + Super * 0x19 + Ultra * 0x1E + Max * 0x33) / 0x100 Normal: 20/256 Super: 25/256 Ultra: 30/256 Max: 51/256 So that is correct.
Editor, Experienced Forum User, Published Author, Player (94)
Joined: 5/27/2006
Posts: 239
I found the code that calculates mush badge damage. Here's the exact calculation: (Normal * 0x33 + Super * 0x33 + Ultra * 0x40 + Max * 0x4C) / 0x100 So if you want to make your calculations more precise, here are the exact values: Normal: 51/256 Super: 51/256 Ultra: 64/256 Max: 76/256
1 2 3 4
9 10