Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
I'm using the (U) ROM. Since Xaphan said that he would make and use the Double Jump chip, I think I will skip it so we can then compare the two runs to decide which strategy is better. EDIT: I've beaten the first boss faster than ever. However I still want to re-luck-manipulate the fight to get one more Beam Walker chip for the Junk Armor....
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
I've redone the first boss fight and made it even faster. Now I think the first stage is very close to perfection. I just spent 3 frames to get 3 chips in total! The luck-manipulation has almost driven me crazy, though. To keep the surprise as is, I'm not going to post the WIP now.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Joined: 4/11/2006
Posts: 487
Location: North of Russia :[
I hope you at least compared it to wip posted by xaphan and ensured your way to be faster ^^
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
His WIP seems broken! I just saw some crazy reset when he fought the giant robot boss.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Former player
Joined: 5/24/2005
Posts: 405
Location: France
Whoa Klmz, I'm glad you're trying to TAS it ! I'd like to see your WIP (as I'm more than halfway in my TAS and I've gathered all the chips I needed) We could share work if you're interested... (No I did not give up, yet my work and some problems have taken all my time recently...) (If luck manip drove you mad in the first level, just wait for Genblem's one, that one really drove me crazy...) EDIT : I've just re-read the whole thread again, and I did not give up... I just had a lot of problems since the beginning of the year (mostly with my car and had an accident which sent me to the hospital...) Note that I've been working on it a lot, spent more than 3000 rerecords on Genblem's stage to get all the necessary chips. though I did not post any WIPs in a while (I wanted to keep it a surprise as well, as I improved every level so far by many ingame clock seconds, still have to count the exact number of frames saved so far...) Only AngerFist and Mike Uyama (who was lucky to see the very last WIP) did see my work so far. @Zefiris : I you want to see the WIP I'd more than glad to share ! @klmz : If you want to compare which method is better do you want to wait for our respective results ?
Not dead yet... still very busy... damn...
Joined: 12/20/2004
Posts: 226
klmz: After watching Xaphan's wip I am almost positive that collecting the double jump chip saves time (though the luck manipulation involved is a pain in the ass). There are a ton of places where it helps out (a large timesaver in cockapetri's stage being one). Xaphan: Indeed I am lucky :). Your new WIP has ridiculously fast midboss battles, innovative shortcuts, and just looks much better than the old run overall. You actually make MMZ4 look exciting. The only bad thing about the run is that I'm now sad the run isn't complete :(
Joined: 4/11/2006
Posts: 487
Location: North of Russia :[
Xaphan, I am really looking forward for it!
Former player
Joined: 5/24/2005
Posts: 405
Location: France
@Zefiris : Hehe, I'll PM it to you tomorrow evening (I unfortunately forgot my HardDrive at work...) Be sure that I won't forget :) @Mike : Do not worry, I'll finish it as fast as possible... I'm just finishing my desktop setup and I should work on it again by then end of the week... hoping to finish it before my week of holiday in March... :D
Not dead yet... still very busy... damn...
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
mikwuyma wrote:
klmz: After watching Xaphan's wip I am almost positive that collecting the double jump chip saves time (though the luck manipulation involved is a pain in the ass). There are a ton of places where it helps out (a large timesaver in cockapetri's stage being one).
I'm crazy again. Xaphan: I mean to compare them when both are complete, and then one will get bested out...but someday, someone will learn from them and make it even better, I believe. EDIT: But when will we both fininsh them? Maybe I'll complete my run in one or two years. I'm very unsure.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Former player
Joined: 5/24/2005
Posts: 405
Location: France
Yep yep, progressing and almost done......... Only the before last/last level remain... Double jump is such a wonder hehe.... I'll be counting frame saved by level at the end... I still hope that klmz will continue his run so that we can compare both results !
Not dead yet... still very busy... damn...
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
It turns out that you will have to wait for me to complete my run if you want to compare yours with it. Since I have been distracted by many other projects, this one seems to be delayed for long. EDIT: No, don't wait for me once you complete your movie. My movie is unlikely to come out in 3 years.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Bumphmm. Thanks to computerbird, my very dead improved run has been resurrected! Now good news and bad news, just as usual: Good news: * You may safely expect ots of improvements to be taken into this run, including insanely faster boss fights! * Major changes in route: Trucks (or whatever) Area Zero Heat Gemblem Sol Titanian Purpura Cockapetri Fenrir Lunaedge Settlement Jail Nobile Mandrago Tech Kraken Mino Magnax Pegasolta Ekrail Other sequential missions So Galacta Armour will be ready for the Jail boss, while... Bad news: * No Double Jump. No, because using it would be at least 1.5 seconds slower in the end according to hundreds of our tests. * You may want to see some up-to-date wips, but unfortunately, there's not even a single one made yet. EDIT: WIP using the (U) ROM here. It's... just "slower" than the published run using the (J) ROM. Now you can see how awful English dialogues are when it comes to TAS. Although the intro was 139 frames longer, I managed to get 30 frames faster by the first score screen. However by the start of Area Zero, I fell behind by 235 frames instead, not to mention that I didn't auto-fire through the lengthy dialogues! Therefore I've got excuse for switching to the (J) ROM! ;) EDIT 2: OK I'll stick to the (U) ROM: new WIP.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Former player
Joined: 5/24/2005
Posts: 405
Location: France
That's really impressive ! Those first two levels already show a huge improvement over my previous run and this is stunning (I also recognize that my test run with Double jump is still on a lower level then your current run). This is the beginning of an impressive run and I'm looking forward to your newest WIP. Keep up the good work and I wish you the best of luck for this run!!
Not dead yet... still very busy... damn...
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
@Xaphan: Thanks for the comments! And how's your own MMZ4 run going? I hate manipulating luck. It's simply pain (link to WIP). I wonder if Heat Gemblem can be improved further with better luck manipulation. Oops, It seems that I have got much more parts than needed. EDIT: Now it's up to the settlement mission. I've modified the boss order to fight Fenri Lunaedge before Popla Cocapetri, with which I can benefit from optimized weapon/weather strategies. And Time Stopper is overall superior to Burning Shot in later levels, even though the latter works better against Fenri Lunaedge. All the bosses are carefully manipulated to be done in the favourable ways. EDIT 2: Prison done. So far I've done most of the most difficult parts of luck manipulation in the whole run!
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Former player
Joined: 5/24/2005
Posts: 405
Location: France
klmz wrote:
@Xaphan: Thanks for the comments! And how's your own MMZ4 run going? I hate manipulating luck. It's simply pain (link to WIP). I wonder if Heat Gemblem can be improved further with better luck manipulation. Oops, It seems that I have got much more parts than needed. EDIT: Now it's up to the settlement mission. I've modified the boss order to fight Fenri Lunaedge before Popla Cocapetri, with which I can benefit from optimized weapon/weather strategies. And Time Stopper is overall superior to Burning Shot in later levels, even though the latter works better against Fenri Lunaedge. All the bosses are carefully manipulated to be done in the favourable ways. EDIT 2: Prison done. So far I've done most of the most difficult parts of luck manipulation in the whole run!
That's truly impressive. Now I get your point about double-jump. With tha fabulous way of climbing walls, it just cancel most of the time I could've saved with it. Do you have a special method for luck manipulation, cause you get so much parts so effortlessly (it seems) ? Also about that mniboss dragon fight in Genblem stage, how do you defeat it so quickly ? And is there a reason you get hit that much during boss fights ?? Anyway, it's impressive work and I really long for the rest. You're a way better TASer than me and I'm finally glad we get something awesome for that great game !
Not dead yet... still very busy... damn...
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Xaphan wrote:
Now I get your point about double-jump. With tha fabulous way of climbing walls, it just cancel most of the time I could've saved with it.
The main drawback of using the double-jump chip is that it takes slow menu periods to equip/unequip. So in later levels, except for Ragnarok with Craft (I've figured out a fast way to get through the moving-platform part without double-jump!), when the Junk armour being used, it will cost more time than it can save. And in Fenri Lunaedge/Popla Cocapetri's levels, I had to wait for vulnerability/crush-blocks, so double-jump woudn't have helped much.
Xaphan wrote:
Do you have a special method for luck manipulation, cause you get so much parts so effortlessly (it seems) ?
I don't think so. It just seems that I was too lucky in early levels, especially with Glass Cannon. FYI, I had even got more parts from Glass Cannon: Unfortunately it was too many frames slower. So it was out then. However it might come back into the movie when I do the final hex work, if it wouldn't cause heavy sync problems.
Xaphan wrote:
Also about that mniboss dragon fight in Genblem stage, how do you defeat it so quickly ?
Z-Knuckle is the key. Uncharged Z-Knuckle is slightly weaker than slahes while charged it is as powerful as charged slashes and can be used to hit an enemy one more time. Also, it doesn't create "lags" as slashes do. It has longer recovery, though.
Xaphan wrote:
And is there a reason you get hit that much during boss fights ??
Getting hit interrupts Zero's long attack animations as well as makes Zero temporarily invulnerable to attacks ie. it saves time. Consider it as either a good thing or a bad thing.
Xaphan wrote:
Anyway, it's impressive work and I really long for the rest. You're a way better TASer than me and I'm finally glad we get something awesome for that great game !
Thank you for your constructive comments again! There're almost none people except you here concerning about this run. Even Computerbird hasn't got time for it recently. And finally, latest wip! Note: I like to hex-edit wips a lot, so savestates from old wips may fail to work.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
It seems that our test was flawed! We didn't find that the very first half of Ragnarok Control Room could be improved for over 2 seconds even without using double-jump! And definitly would they be lost during later waiting for those moving platforms! Here's the WIP without double-jump. Now I'll say that using double-jump in that level can be faster, and only in that level or it would require one extra trip to and fro the lab, which would cost too many frames. EDIT: Fortunately this game is very hex-friendly. I'll try both strategies with and without using double-jump :D
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Joined: 6/27/2008
Posts: 49
I made a lua script for anyone who are interested. Tested: 2166 - Megaman Zero 4 (U).gba on VBA-RR v23.6
Language: lua

local box = { width = 15, height = 3, }; local enemies = { -- 0x3004F34, -- 0x3004FF8, -- 0x30050BC, -- 0x3005180, 0x03005244, 0x03005308, 0x03005490, 0x030053CC, 0x03005554, 0x03005618, 0x030056DC, 0x030057A0, 0x03005864, 0x03005928, -- 0x30059EC, -- 0x3005AB0, }; local lastDash = 255; print("MMZ4 - Memory viewer script for VBA, created by zhangsongcui"); function drawCharge(pos, val, y, text) if val < 5 then return false; end local headEquip = memory.readbyte(0x020366C4); local maxVal = 120; if headEquip == 4 then -- Q-Charge1 maxVal = 100; elseif headEquip == 5 then -- Q-Charge2 maxVal = 80; elseif headEquip == 6 then -- Q-Charge3 maxVal = 60; end local var = math.min(maxVal, val); gui.box( pos.X - box.width, pos.Y - box.height + y, pos.X + box.width, pos.Y + box.height + y, nil, "black"); gui.box( pos.X - box.width, pos.Y - box.height + y, pos.X - box.width * (1 - var / maxVal * 2), pos.Y + box.height + y, var < maxVal / 3 and "white" or (var < maxVal and "green" or "yellow"), "clear"); gui.text(pos.X - box.width - 17, pos.Y - box.height + y, text); gui.text(pos.X + box.width + 3, pos.Y - box.height + y, val); return true; end function drawRemain(pos, val, y, maxVal, text) if val <= 0 or val > maxVal then return false; end gui.box( pos.X - box.width, pos.Y - box.height + y, pos.X + box.width, pos.Y + box.height + y, nil, "black"); gui.box( pos.X - box.width, pos.Y - box.height + y, pos.X - box.width * (1 - val / maxVal * 2), pos.Y + box.height + y, "white", "clear"); gui.text(pos.X - box.width - 17, pos.Y - box.height + y, text); gui.text(pos.X + box.width + 3, pos.Y - box.height + y, val); return true; end gui.register(function() gui.opacity(.8); local rng = memory.readlong(0x0202DC38); if rng == 0 then return; -- 游戏还没开始 end gui.text(2, 10, string.format(" RNG: 0x%08X (0x%08X)", rng, (rng * 0x000343FD + 0x00269EC3) % 0x80000000)); gui.text(82, 152, "Ingame Time: " .. memory.readlong(0x0202E8E8)); local isPlaying = memory.readword(0x0202F8E0) ~= 0x03C0; -- 主角血条下面的 Z 字 if not isPlaying then lastDash = 255; return; end local camera = { X = memory.readlongsigned(0x0202EA28), Y = memory.readlongsigned(0x0202EA2C), }; local hero = { X = (memory.readlongsigned(0x02036654) - camera.X) / 0x0100 + 120, Y = (memory.readlongsigned(0x02036658) - camera.Y) / 0x0100 + 80, SpeedX = memory.readwordsigned(0x02036720), SpeedY = memory.readwordsigned(0x02036660), HP = memory.readbyte(0x020366A4), Invisible = memory.readbyte(0x02036694), Charge1 = memory.readbyte(0x020366E4), Charge2 = memory.readbyte(0x020366E5), Dash = memory.readbyte(0x0203673A), }; if hero.HP <= 0 then return; end for i, enemy in pairs(enemies) do local hp = memory.readbyte(enemy); if hp > 0 then local x = (memory.readlong(enemy - 0x50) - camera.X) / 0x0100 + 120; local y = (memory.readlong(enemy - 0x4C) - camera.Y) / 0x0100 + 80; gui.text(x, y, hp); end end gui.text(2, 18, string.format("WpnUse: [%d, %d, %d]", memory.readword(0x0202E8FC), memory.readword(0x0202E8FE), memory.readword(0x0202E900))); gui.text(2, 26, string.format(" Speed: (%+.1f, %+.1f)", hero.SpeedX / 0x100, hero.SpeedY / 0x100)); if hero.Dash == _G.lastDash then hero.Dash = 255; else _G.lastDash = hero.Dash; end local dy = 4; local offsety = 7; if drawCharge(hero, hero.Charge1, dy, 'Crg1') then dy = dy + offsety end; if drawCharge(hero, hero.Charge2, dy, 'Crg2') then dy = dy + offsety end; if drawRemain(hero, hero.Invisible, dy, 90, 'Invi') then dy = dy + offsety end; if drawRemain(hero, hero.Dash, dy, 27, 'Dash') then dy = dy + offsety end; gui.text(hero.HP > 9 and 7 or 8, 35, hero.HP, "red"); local boss = { X = (memory.readlongsigned(0x0203A494) - camera.X) / 0x0100 + 120, Y = (memory.readlongsigned(0x0203A498) - camera.Y) / 0x0100 + 80, HP = memory.readword(0x0203A4E4), Invisible = memory.readbyte(0x0203A4D4), InvisibleLevel = memory.readbyte(0x0203A4D6), }; if boss.HP > 0 then if memory.readword(0x0202F8D8) ~= 0x03C0 then -- 指定右侧 Boss 血条下的 W 图标显示 -- Boss 战 gui.text(boss.HP > 9 and 226 or 228, 4, boss.HP, "red", "black"); else -- 中 Boss 战 gui.text(boss.X, boss.Y, boss.HP, "red", "black"); end drawRemain(boss, boss.Invisible, 5, 90, "Invi"); if (boss.Invisible > 0) then gui.text(boss.X - box.width - 17, boss.Y + 9, "Invi Level: " .. boss.InvisibleLevel); end end end)
EDIT: Fix "<0>"