Your run has caught my interest.
So I made my own start into the game. I am roughly 2586 frames ahead at the start of Ruins Area 3, with about 2100 of it due to a different route through Ruins Area 1.
There is a forced wait at each door. One is stuck waiting about 5 frames every time. During this wait, one can shift the inventory selection to an adjacent item slot, or take a nap for 3 frames, without wasting time. Napping like this restores, by my estimation, 3/4 of an HP and 9 extra units of mana regeneration (
with 5 Knowledge, you need 75 units for 1 MP, and you generally restore 1 unit at a fairly rapid rate). It also freezes the luck counter as well.
With the new route I picked through Ruins Area 1, I pick up a 10-use Sledgehammer. Judging from your run, this alone will last me exactly long enough to reach Foot of Tower, but no further. Luckily, there is a treasure chest in the area containing another 10-use Sledgehammer just a few steps out of the way. Watching the rest of your run, this appears to be enough to last the remainder of the game. This is knowledge I would not have had without your current run. Understandably, you overbought these things without knowing if you got enough, but now we know more.
I recall not doing a whole lot of damage against that trio of bosses in Fortress 4F in a normal run of this game. I take it even a Blade of Muramasa isn't helping you deal more than 2 damage? Seems we're just going to have to deal with the long battle, then.
If you want a TASing partner, I think I can handle working through this game. Although, I do have other TAS projects I probably should be working on anyway, my interests tend to drift everywhere.
This is my fancy memory watch, in lua script form:
Download Brandish.luaLanguage: lua
local R1u= memory.readbyte
local R2u= memory.readword
local R4u= memory.readdword
local R1s= memory.readbytesigned
local R2s= memory.readwordsigned
local R4s= memory.readdwordsigned
--*****************************************************************************
local function GuiTextRight(x,y,str,c1,c2)
--*****************************************************************************
str= tostring(str)
x= x - (#str)*4
gui.text(x,y,str,c1,c2)
end
--*****************************************************************************
local function StatAndExp(x,y,addr,str)
--*****************************************************************************
GuiTextRight( x,y,R1u(addr))
gui.text( x,y,string.format(".%2d",R1u(addr+1)),0xC0C0C0FF)
local Growth= R2u(addr+0x17FA)
if Growth ~= 0 then
GuiTextRight(x+12,y+7, "+" .. Growth, 0x00FFFFFF)
else
gui.text(x,y+7,str,0xFFFF00FF)
end
end
--*****************************************************************************
local function StatAndMax(x,y,addr)
--*****************************************************************************
GuiTextRight( x,y,R1u(addr))
gui.text( x,y,string.format("/%3d",R1u(addr+1)),0xC0C0C0FF)
end
--*****************************************************************************
local function DumpStats()
--*****************************************************************************
StatAndMax( 88,200,0x7E0589) -- HP
StatAndMax(220,200,0x7E058B) -- MP
GuiTextRight(236,192,R2u(0x7E1D97),0xC0FFC0FF)
StatAndMax(120,214,0x7E058D) -- Luck
gui.text(120,207,"Luck",0xFFFF00FF)
GuiTextRight(148,207,R2s(0x7E1D9B),0xC0C0C0FF)
local clr= 0xFFFF00FF
if R2s(0x7E1D9B) > 0 then clr= 0x00FF00FF end
GuiTextRight(148,214,R2u(0x7E1D99),clr)
StatAndExp( 20,210,0x7E058F,"Arm") -- Arm Strength 0x7E1D89
StatAndExp( 50,210,0x7E0591,"Kno") -- Knowledge
StatAndExp( 80,210,0x7E0593,"MgE") -- Magic Endurance
StatAndExp(200,210,0x7E0595,"Lvl") -- Level
GuiTextRight(256, 0,R4u(0x7E43C2)) -- Gold on hand
end
gui.register(DumpStats)
Alas, it's only a fancy memory watch. Doesn't do things like calculate the RNG or predict the enemy actions.