Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
EDIT: Newer version of luascript I'm using. Runs on VBA v24 svn422.
Language: lua

function fn() if movie.active() then gui.text(2,16,vba.framecount() .."/".. movie.length() .. " " .. emu.lagcount(), "#ffffff", "#000000") else gui.text(2,16,"movie not recording", "#ff2222", "#000000") end end gui.register(fn) local formtable= { [0] = "fish", [1] = "fish/attack", [2] = "fish/damage", [4] = "fish/splash", [8] = "fish", [9] = "fish/attack", [10] = "fish/damage", [16] = "normal", [17] = "normal/attack", [18] = "normal/damage", [19] = "normal/damage", [20] = "normal/splash", [24] = "normal", [25] = "normal/attack", [26] = "normal/damage", [27] = "normal/damage", [32] = "flying", [34] = "flying/damage", [35] = "flying/damage", [36] = "splash", [40] = "flying", [42] = "flying/damage", [43] = "flying/damage", [48] = "transform", [80] = "ball", [84] = "ball/splash", [88] = "ball", [96] = "mouse", [97] = "mouse/attack", [98] = "mouse/damage", [99] = "mouse/damage", [100] = "mouse/splash", [104] = "mouse", [105] = "mouse/attack", [106] = "mouse/damage", [107] = "mouse/damage", [112] = "flower", [113] = "flower/attack", [114] = "flower/damage", [116] = "flower/splash", [120] = "flower", [121] = "flower", [122] = "flower/damage", [128] = "big", [132] = "big/splash", [136] = "big", [144] = "mini", [145] = "mini/attack", [146] = "mini/damage", [148] = "mini/splash", [152] = "mini", [153] = "mini/attack", [154] = "mini/damage", [160] = "goku", [161] = "goku/attack", [162] = "goku/damage", [164] = "goku/splash", [168] = "goku", [169] = "goku/attack", [170] = "goku/damage" } Color = "#ffffff" BorderColor = "#00111111" XOFFSET = 0 YOFFSET = 0 while true do xcam = memory.readbyte(0xff9d)*256 + memory.readbyte(0xff9e) ycam = memory.readbyte(0xff9f)*256 form = memory.readbyte(0xffad) paused = memory.readbytesigned(0xc2db) health = memory.readbytesigned(0xffa0) ingamecounter = memory.readbyte(0xff99) xspeed = memory.readbytesigned(0xffa8) yspeed = memory.readbytesigned(0xffaa) xpos = memory.readbyteunsigned(0xffa1)*256 + memory.readbyteunsigned(0xffa2) ypos = memory.readbyteunsigned(0xffa3)*256 + memory.readbyteunsigned(0xffa4) powerupduration = memory.readbyteunsigned(0xc2c4)*256 + memory.readbyteunsigned(0xc2c5) bosshealth = memory.readbyteunsigned(0xc102) -- ENEMIES for i=0,7,1 do xenemy = memory.readbyte(0xc106+i*32)*256 + memory.readbyte(0xc105+i*32) yenemy = memory.readbyte(0xc108+i*32)*256 + memory.readbyte(0xc107+i*32) xactual = (xenemy-xcam)/16 -8 yactual = (yenemy-ycam)/16 -26 gui.opacity(0.65) gui.drawbox(xactual-1,yactual,xactual+19,yactual+13,"#AA1000") gui.opacity(0.82) gui.text(xactual,yactual, xenemy, Color,BorderColor) gui.text(xactual,yactual+7, yenemy, Color, BorderColor) end -- DRAW BOXES gui.opacity(1) gui.drawbox(0+XOFFSET,120+YOFFSET,160+XOFFSET,150+YOFFSET,"#000000") gui.opacity(0.75) gui.drawbox(0+XOFFSET,-2+YOFFSET,160+XOFFSET,14+YOFFSET,"#001175") gui.opacity(0.2) gui.drawbox(0+XOFFSET,15+YOFFSET,160+XOFFSET,15+YOFFSET,"#001175") gui.drawbox(0+XOFFSET,119+YOFFSET,160+XOFFSET,119+YOFFSET,"#000000") gui.opacity(0.9) -- DRAW HEALTH AND FORM gui.drawbox(0+XOFFSET,0+YOFFSET,7+XOFFSET,6+YOFFSET,"#dd0000",BorderColor) gui.drawbox(7+XOFFSET,0+YOFFSET,14+XOFFSET,6+YOFFSET,"#dd0000",BorderColor) gui.drawbox(14+XOFFSET,0+YOFFSET,21+XOFFSET,6+YOFFSET,"#dd0000",BorderColor) gui.drawbox(21+XOFFSET,0+YOFFSET,28+XOFFSET,6+YOFFSET,"#dd0000",BorderColor) for i=health-1,0,-1 do gui.drawbox(i*7+XOFFSET,0+YOFFSET,7+i*7+XOFFSET,6+YOFFSET,"#00dd00",BorderColor) end if formtable[form] then gui.text(2+XOFFSET,7+YOFFSET,formtable[form], Color, BorderColor) else gui.text (2+XOFFSET,7+YOFFSET, "???", Color, BorderColor) end -- DRAW STATS gui.text(94+XOFFSET,0+YOFFSET, xspeed, Color,BorderColor) gui.text(94+XOFFSET,7+YOFFSET, yspeed,Color,BorderColor) gui.text(112+XOFFSET,0+YOFFSET, xpos,Color,BorderColor) gui.text(112+XOFFSET,7+YOFFSET, ypos,Color,BorderColor) gui.text(138+XOFFSET,0+YOFFSET, powerupduration,Color,BorderColor) gui.text(138+XOFFSET,7+YOFFSET, bosshealth,Color,BorderColor) if emu.lagged() then gui.text(80,16,"************************************************", "#ff2222", "#ff000000") end -- DRAW SPEED PENALTY ON YACOPU xonscreen = (xpos-xcam)/16 yonscreen = (ypos-ycam)/16 penaltytimer = ingamecounter % 16 gui.opacity(0.40) if penaltytimer == 0 and paused==0 then gui.drawbox(xonscreen-10,yonscreen-12,xonscreen+6,yonscreen-2, "#ff0000" ) end if penaltytimer == 0 and paused==1 then gui.drawbox(xonscreen-10,yonscreen-12,xonscreen+6,yonscreen-2, "#00ff00" ) end gui.opacity(0.75) gui.drawbox(xonscreen-7,yonscreen-25,xonscreen+5,yonscreen-16, "#000000" ) gui.opacity(1) gui.text(xonscreen-4,yonscreen-24, 16-penaltytimer, Color, BorderColor) gui.opacity(1) vba.frameadvance() end
- shows the state yacopu is in (his form and if he takes damage or attacks) - enemy xpos/ypos display - indicates lagframes and tells if movie is recording or not - what's been there in the previous version: xspeed, yspeed, xpos, ypos, powerup duration, boss health
Post subject: fixed broken link
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Level 1 WIP VBA v24 svn3?? Trip World (J).gb Saved about 45 frames. Lost about 70 frames to new LCD lag emulation. The WIP is 19 frames behind the previous TAS overall (it was behind ~52 frames before level 1) Room1: 3f saved Room2: 5f saved Room3: 22f saved Room4: 10f saved Room5: 4f saved Room6: 1f saved Room7: 2f lost Boss: ?
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Active player (476)
Joined: 2/1/2014
Posts: 928
The music is probably my favorite part besides the clipping!
Editor, Player (95)
Joined: 5/27/2006
Posts: 240
MUGG wrote:
Fish clip https://www.youtube.com/watch?v=fXJrBN8vTqQ
does that save any time? it doesn't seem like it would...
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
BioSpark wrote:
MUGG wrote:
Fish clip https://www.youtube.com/watch?v=fXJrBN8vTqQ
does that save any time? it doesn't seem like it would...
Yes it's likely to save some seconds. There is a fish clip with the ceiling enemies later that I found that has a chance at saving time also. Which means there are now 3 different clips in lv3 (at best). Lv2 and halfway Lv3 WIP -Lv 2 is almost unchanged. -Lv 3 uses the new fishclip which saves 3.5 secs. Using fishclip on ceiling enemies isn't worthwhile - going to fly through those rooms instead (faster than walking by about 150f).
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Lv3 done 1173 frames ahead, not taking into account the emulation difference (almost 20 seconds).
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Ball clip Link to video Would have been useful in Level 4 if the boss wasn't so super slow to kill without goku blasts. I don't know yet if ball item exists in Level 5 and if it can be done there. @BioSpark, those maps you were talking about would be useful now^^ Edit: I have found maps on vgmaps. Sorry, but I appreciate your offer!
Editor, Player (95)
Joined: 5/27/2006
Posts: 240
@Mugg I looked at the maps on vgmaps, world 4 is missing a screen, but otherwise they're accurate. Edit: Actually, the maps are missing one block borders on some of the screens, but they're probably not too important.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Biospark, if you have better maps, I would like to see them. I know there is a hidden room before Level 4 boss, but it's useless. There is also an awesome clip I found which will save a few frames. http://i.imgur.com/FOINB7T.gif
Editor, Player (95)
Joined: 5/27/2006
Posts: 240
The maps you have should be fine. Mine don't include sprites anyway (I was working on a level editor but I stopped). Great job on these clips you've found. Can't wait to see the new TAS. Edit: I uploaded them anyway: http://imgur.com/a/0iTk7
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Lv4 done Yup, rerecord count has doubled due to extensive clip testing and it was worth it. I like how the goku clip worked out in the end. Prepare for butterfly clip in Level 5 (jk, but who knows). 1206 frames saved, not taking into account the emulation difference. When taking emulation difference into account, I think it's about 1422 frames saved. Run is going to be 5:1x pace now. ^_^ @BioSpark, thanks
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
I have tried quite a few things now to try to get a butterfly clip to work, but nothing seems to work... I'm going to give up on it and TAS the level like in the previous run. I found that a clip works if both butterflies push you from below. This will depend on whether or not I can manipulate their movement (it depends on what you press, your position, and your form from my observations. There is probably some strange algorithm that isn't known yet). --> Here is a pic I made to show the potential of clipping with butterflies:
EZGames69
He/They
Publisher, Reviewer, Expert player (4460)
Joined: 5/29/2017
Posts: 2761
I managed to find a way to end inputs for the final boss about 8 frames earlier, I do not know if this is a big enough improvement to warrent a submission, so I'll just post here for MUGG to see in case he's ok with it. http://tasvideos.org/userfiles/info/67727020392458382 Basically I found that if you do a kick then take damage, the hitbox of the kick will come back and attack the boss.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Looked into butterfly clipping once more. The enemy slots are 0x20 in size each. 0x00 - ID 0x02 - Health 0x03 - X speed 0x04 - Y speed 0x11 - movement state For butterfly, the ID is 0x45. It can have four different movement states. 0x00 makes it fly up (y speed is pushed to 0xFC) 0x01 makes it fly down (y speed is pushed to 0x04) 0x02 makes it fly right (x speed is pushed to about 0x04) 0x03 makes it fly left (x speed is pushed to about 0xFC) The movement state will change every few frames randomly, so the butterfly will usually fly in random directions. Trying to have one butterfly fly me to the top, it will not work. But flying to the top with two butterflies that are positioned at different x locations will clip Yacopu through the wall. Pressing different input, even non-consequential things like pressing up, will change the movement state. It will probably be nearly impossible to manipulate two butterflies at the same time, though. But maybe something will work out from here.
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Link to video I saw this behavior and thought it might be a timesaver in certain situations...? Normally you have to land when turning around in flight mode...
Editor, Expert player (2329)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Butterfly clip is now possible. Link to video Movie file: https://tasvideos.org/UserFiles/Info/638400963926222423 Bizhawk 2.8 Trip World (J)
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3821)
Joined: 11/30/2014
Posts: 2829
Location: US
Woah! Cool clip, nice work MUIGG.