Posts for Highness


Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Looking very good this! :)
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Thats a very nice improvement so far! Looking forward to see the end results!
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Nice improvement. Punching the YES-vote.
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Warp wrote:
If it clearly doesn't achieve its own stated goal ("fastest time"), is it even eligible for publication?
There are several publications that states that a few, possible some, or several improvements are possible. Edit: erokky's SNES Final Fantasy III in 4:05:52.87 is one example from the top of my head.
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Throwing in a vote of no on this. Did not entertain me much at all nor was it as fast as possible. Sorry. Looking forward to improvements so I hope you don't feel demotivated by this.
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Wow! I honestly don't know what else to write right now. I think this opens a new chapter somehow. Great job!
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Voting no because of lack of variety and entertainment.
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
I've been following the wip's you've posted earlier and I can just lean back and enjoy the submission with a big smile. A real treat. Nice improvements over the old one. Great findings about the skips and the walking/sliding speed trick. The boss fights were all packed with action. A lot of movement going on.
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
I like the new findings. The southpole trick was very cool. Boss battles very nicely executed. Looking forward to the final!
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Such a technique would mean to cancel out the invincibility time right? Maybe hit pause, then fire again, or something like that? Did not try it my self but if that works it would mean that the enemy would never be able to move, and the sword would always be stuck in the wall, right?
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Wow! That's a massive improvement. Great skip with the up/down trick on the ladder. Keep us posted! I for sure want to see more. :D
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Nice. Looking forward to see a WIP!
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Nice. Reading through that board now. I always wondered if a 7-3 skip was possible. Looks like Shrimp found a way there. Tested it my self and it works great. Now we just need to find out if it saves time or if there is an alternative route that can save more time. In Diman's last attempt he played level 7-3 in 2512 frames (calculated from hitting the exit in 7-2), so the shortcut must take us sub that. Also we need to test if it's actually faster for a TAS to go out of the way to get the flamethrower in order to beat Bashtar (the boss in 7-4). I think the flamethrower deals one damage per frame. In theory it should be faster to go on a detour to pick up the flamethrower. Crunching the numbers it took me 999 frames to beat Bashtar without the flamethrower. So we have about 915 frames to fetch the flamethrower and reach the first hit of the boss in order to get on par. Edit: Also Sonikkustar's 9-1 skip is very nice: http://www.youtube.com/watch?v=JvFFqMCoAgA&feature=youtu.be Edit 2: Some more stuff about shortcuts: Level 8-1 http://www.twitch.tv/shrimp__/c/1922225 Level 8-3 http://www.twitch.tv/shrimp__/c/1922230
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Not that specific one. The one I had since before is this:
-- Player
local pbase = 0xFF1CD4
local px = pbase + 0x19
local py = pbase + 0x1D

local camx = 0xFF1BC5
local camy = 0xFF1BC9

--Player projectiles

local projbase = 0xFF1D34

--Enemies
local ebase = 0xFF21B4
--ex = ebase + 0x19 (stupid endianess)
--ey = ebase + 0x3D (stupid endianess)
--enemy hp = +0x0D
-- X radius = +0x13

--Enemy structure size 0x60


local function endian(address)
	local result = memory.readbyte(address) + (memory.readbyte(address-1) * 256)
	return result
end

local function Toki()
	local cx = endian(camx)
	local cy = endian(camy)
	local x = endian(px) - cx
	local y = endian(py) - cy
	local xoff = memory.readbytesigned(pbase + 0x11)
	local yoff = memory.readbytesigned(pbase + 0x15)
	local xrad = memory.readbyte(pbase +0x13)
	local yrad = memory.readbyte(pbase +0x17)
	local flip
	flip = memory.readbyte(pbase +1)
	if flip == 1 then
		xoff = xoff * -1
	end
	gui.box(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,"#0000FF30","#0000FFFF")
end

local function enemies()
	local cx = endian(camx)
	local cy = endian(camy)
	local x
	local y
	local xoff
	local xrad
	local yoff
	local yrad
	local oend = 44
	local base = ebase	
	local flip
	local hp
	for i = 0,oend,1 do
		if i > 0 then
			base = ebase + (i * 0x60)
		end
		flip = memory.readbyte(base +1)
		if memory.readbyte(base) > 0 then
			hp = memory.readbyte(base + 0xD)
			x = endian(base + 0x19) - cx
			xrad = memory.readbyte(base + 0x13)
			xoff = memory.readbytesigned(base + 0x11)
			yrad = memory.readbyte(base + 0x17)
			yoff = memory.readbytesigned(base + 0x15)
			
			if flip == 1 then
				xoff = xoff * -1
			end
			y = endian(base + 0x1D) - cy
			if hp > 0 then
				gui.text(x,y-10, "HP: " .. hp)
			end
			gui.box(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,"#FF000035","#FF0000FF")
		end
	end
end

local function projectiles()
	local cx = endian(camx)
	local cy = endian(camy)
	local x
	local y
	local xoff
	local xrad
	local yoff
	local yrad
	local oend = 11
	local base = projbase
	local flip
	
	for i = 0,oend,1 do
		if i > 0 then
			base = projbase + (i * 0x60)
		end
		flip = memory.readbyte(base +1)
		
		if memory.readbyte(base) > 0 then
			x = endian(base + 0x19) - cx
			y = endian(base + 0x1D) - cy
			xoff = memory.readbytesigned(base + 0x11)
			yoff = memory.readbytesigned(base + 0x15)
			xrad = memory.readbyte(base + 0x13)
			yrad = memory.readbyte(base + 0x17)
			
			if flip == 1 then
				xoff = xoff * -1
			end
			gui.box(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,"#FFFFFF40","#FFFFFFFF")
		end
	end

end

while true do
	Toki()
	enemies()
	projectiles()
	emu.frameadvance()
end
From what I can tell by looking at the code there are some changes.
-- Player
    local pbase = 0xFF1CD4
    local px = pbase + 0x19
    local py = pbase + 0x1D
     
    local camx = 0xFF1BC5
    local camy = 0xFF1BC9
     
    --Player projectiles
     
    local projbase = 0xFF1D34
     
    --Enemies
    local ebase = 0xFF21B4
     
    --Bosses
    local bbase = 0xFF35F4
     
     
     
     
    local function endian(address)
            local result = memory.readbyte(address) + (memory.readbyte(address-1) * 256)
            return result
    end
     
    local function Toki()
            local cx = endian(camx)
            local cy = endian(camy)
            local x = endian(px) - cx
            local y = endian(py) - cy
            local xoff = memory.readbytesigned(pbase + 0x11)
            local yoff = memory.readbytesigned(pbase + 0x15)
            local xrad = memory.readbyte(pbase +0x13)
            local yrad = memory.readbyte(pbase +0x17)
            local flip = memory.readbyte(pbase +1)
            if flip == 1 then
                    xoff = xoff * -1
            end
            gui.box(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,"#0000FF30","#0000FFFF")
    end
     
    local function enemies()
            local cx = endian(camx)
            local cy = endian(camy)
            local x
            local y
            local xoff
            local xrad
            local yoff
            local yrad
            local oend = 44
            local base = ebase     
            local flip
            local hp
            for i = 0,oend,1 do
                    if i > 0 then
                            base = ebase + (i * 0x60)
                    end
                    flip = memory.readbyte(base +1)
                    if memory.readbyte(base) > 0 then
                            hp = memory.readbyte(base + 0xD)
                            x = endian(base + 0x19) - cx
                            xrad = memory.readbyte(base + 0x13)
                            xoff = memory.readbytesigned(base + 0x11)
                            yrad = memory.readbyte(base + 0x17)
                            yoff = memory.readbytesigned(base + 0x15)
                           
                            if flip == 1 then
                                    xoff = xoff * -1
                            end
                            y = endian(base + 0x1D) - cy
                            if hp > 0 then
                                    gui.text(x,y-10, "HP: " .. hp)
                            end
                            gui.box(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,"#FF000035","#FF0000FF")
                    end
            end
    end
     
    local function boss()
            local cx = endian(camx)
            local cy = endian(camy)
            local x = endian(bbase + 0x19) - cx
            local y = endian(bbase + 0x1D) - cy
            local xrad = memory.readbyte(bbase + 0x11)
            local yrad = memory.readbyte(bbase + 0x15)
            local flip = memory.readbyte(bbase +1)
            gui.text(x-10,y-10,"HP: " .. memory.readbyte(bbase + 0x0D))
            gui.box(x-xrad,y-yrad,x+xrad,y+yrad,"#FF000035","#FF0000FF")
    end
     
    local function projectiles()
            local cx = endian(camx)
            local cy = endian(camy)
            local x
            local y
            local xoff
            local xrad
            local yoff
            local yrad
            local oend = 11
            local base = projbase
            local flip
           
            for i = 0,oend,1 do
                    if i > 0 then
                            base = projbase + (i * 0x60)
                    end
                    flip = memory.readbyte(base +1)
                   
                    if memory.readbyte(base) > 0 then
                            x = endian(base + 0x19) - cx
                            y = endian(base + 0x1D) - cy
                            xoff = memory.readbytesigned(base + 0x11)
                            yoff = memory.readbytesigned(base + 0x15)
                            xrad = memory.readbyte(base + 0x13)
                            yrad = memory.readbyte(base + 0x17)
                           
                            if flip == 1 then
                                    xoff = xoff * -1
                            end
                            gui.box(x+xoff-xrad,y+yoff-yrad,x+xoff+xrad,y+yoff+yrad,"#FFFFFF40","#FFFFFFFF")
                    end
            end
     
    end
     
     
     
    while true do
            Toki()
            enemies()
            projectiles()
            boss()
            emu.frameadvance()
    end
Can you give a quick description to what has been changed? Thank you for sharing!
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Um... Maybe ask in the Dolphin thread? Sounds like something for the developers to sort out. Is it possible to delete the memory card file? Try that before coming to one of those auto save points perhaps? Is it possible to turn off the auto save function within the game it self, or is it needed for any kind of glitches or so?
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Looked very nice. I would also have gone for a YES-vote if that was submitted.
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
I still think we should consider to try the fish bounce shortcut. In this example I'm way off, but I have gotten closer results in earlier attempts. Thats why I think it should be doable. I just can't manipulate the enemies in a good matter. Here's an attempt http://dehacked.2y.net/microstorage.php/info/1761965991/Toki%20-%20Going%20Ape%20Spit%20%28UE%29%20%5Bc%5D%5B%21%5D%20-%20Highness-Diman-RandomPie_IV-Going_Ape_Shit%20TAS%20-%20Level%202-2%20fish%20bounce%20shortcut%20attempt.gmv
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Today I was fooling around a bit using some game genie codes taken from Gamehacking.org. Specifically the invincibility code BWST-AA26, and the high-jump code RGRT-A6YY. Did not find anything useful while having the codes activated, but I did however find some oddities. I knew some places since before where you can enter the empty voids outside of the screen. What I did find today however is that they are actually connected somewhere else. Not that we have any use for it since it runs in the wrong direction. I thought I post about it anyway for the purpose of knowledge, and who knows, maybe we find something useful later? In level 2-1 for example there is a gap right above where you start. Jump up to the right. Also. At the exit sign in level 2-1, jump to the right and you'll fall down the shaft ending up under the trampolines Besides that I thought of a shortcut in level 2-2. Right after you get the flamethrower it should be possible to manipulate the enemies in order to skip upwards and reach the second elevator. I was close to manage it earlier today but the great flying demon would end up spearing me to death. In order to make this I used the flying fish. Avoiding it instead of killing it and try to bounce off of it in order to reach greater heights. Also for that to work I think the first elevator needs to be at its peek height, or close to at least. Here is a poor illustration (also, the fish did not make it for the screenshot):
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Another 6 frames saved. Great! Better manipulation of the flower which leads to one earlier bounce off of the flying beetle, thus reaching the seesaw faster.
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
That was some serious glitching! Thanks for sharing! :)
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Nice! All in all with the vine shortcut and the lizard skip we now saved 118 frames extra in that level. That means 316 frames faster from your old run Diman, and from my vaulted run that's a whoppin' 1443 frames! I also tried to optimize the gap before the lizard a bit further but all I ended up with was reaching the trampoline at 11715 instead of 11703 like you do Diman. So let's leave it at that. I can't see any further improvements of level 2-1 at all right now. The only thing I found out is that you can clear the gap if you crawl from the right platform and jump in time, you will land right infront of the lizard but it is slower for some reason. Toki does not travel fast while airborne. I see no reason right now why we would need to pickup extra lives. We have 4 lives as it is right now, and if we happen to find a shortcut where it is applicable we could measure the time it takes to go out of the way to get one extra life, compared to if not being used. I mean... We would have to find at least four different places where it should save us time. Still nice that we have the option if needed though. :)
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
I like the lizard skip you made there Diman, but getting to the exit was 20 frames slower than the last time. I made a sloppy test to see if I could get a slight improvement, yet this is not final as I didn't have more time right now. http://dehacked.2y.net/microstorage.php/info/1373700000/Highness-Diman-RandomPie_IV-Going_Ape_Shit%20TAS%20-%20Level%202-1%20sloppy.gmv Your video with the lizard skip exits the level at 12209. This sloppy test reaches the exit at 12181. It can be improved further to better take advantage of the time saved at the lizard. We're really getting somewhere. Cheers for the findings! :)
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
I completed level 2-1. 6 frames saved since last attempt. I think the change in movement on the vines did that, and it looks way cooler. Good job on that Diman. Here's the link with the updated WIP for level 2-1 http://dehacked.2y.net/microstorage.php/info/953233931/Highness-Diman-RandomPie_IV-Going_Ape_Shit%20TAS%20-%20Level%202-1.gmv Savestate for Level 2-1 Also to answer mklip2001 - Seems like Diman's strategy against Stark's machine saved about 10 frames. I think that comes from being able to use the cooldown time to move a frame or two while still dealing damage to the heads on the right side. I did not test it, but according to the old numbers we have in that boss fight it is a time saver. The WIP stops at the dying sequence in Diman's movie which is correct. I started my rerecord from the vine. Not sure how the powerup drops work. Edit: Continued forward to complete level 2-2 saving 200 frames compared to my old run (26 frames compared to Diman's): http://dehacked.2y.net/microstorage.php/info/1855197999/Highness-Diman-RandomPie_IV-Going_Ape_Shit%20TAS%20-%20Level%202-2.gmv Savestate for level 2-2
Experienced Forum User, Published Author, Player (71)
Joined: 8/24/2004
Posts: 2562
Location: Sweden
nico30620 wrote:
Give me your opinion :)
Level 1-2 @ ~55 seconds into the video you run into a pipe. Loosing time. If this is meant to be a TAS, that would be correctable. Use frame advance and try again.