This is the lua script for http://tasvideos.org/4452S.html
-- Hydlide HUD written by Michael "dunnius" Dunn
-- P() is Jim's position.
-- T is the terrain timer, when it goes down through 0 a HP is lost, when it goes up through 256(0), an HP is gained.
-- Fairy 1 is the tree number starting with 1 at the top.
-- Key is the chest number starting with 1 at the top on the top screen.
-- Fairy 2 is the enemy numbered tree.
-- Levels start with 1 based even though it is 0 based in memory.
-- The offscreen counters show, for enemies 1-4 in that order, approximately how many non-lag frames before the enemy spawns. It may stay at 1 if it did not spawn.
-- Screen is the number of the current area that Jim is in.
-- Jim's hit box is blue, the enemies are red.
-- The enemy # is to the left of the hitbox, and the HP is inside on the top. The lower number indicates the number of steps the enemy will take before deciding on a new direction.
-- There is a red indicator outside the text that shows the enemies direction.
-- The red areas are areas in which Jim cannot walk.
local Is_J_Version = false -- J version uses slightly different memory addresses
local do_drawing = true
local DrawEnemyActionTimer = true
-- variables
local EnemyMemBaseValue = 0x06EC
local EnemyTypeOffset = 0
local EnemyXPosOffset = 1
local EnemyYPosOffset = 2
local EnemyUnknown1Offset = 3
local EnemyOffscreenTimerOffset = 4
local EnemyDirectionOffset = 5
local EnemyNextActionTimerOffset = 6
local EnemyAnimationTimerOffset = 7
local EnemyHPOffset = 8
local EnemyUnknown2Offset = 9
-- List of blocked regions for each area
local AreaBlockages = {}
AreaBlockages[0] = { {14,4,2,1}, {4,6,2,1}, {18,10,2,1}, {10,12,2,1}, {14,16,2,1}, {8,18,2,1}, 0}
AreaBlockages[1] = { {6,0,2,1}, {2,4,2,1}, {8,3,2,1}, {12,6,2,1}, {8,8,2,1}, {18,8,2,2}, {4,16,2,1}, {14,4,4,3}, {10,10,12,1}, {10,11,1,11}, {13,13,3,1}, {18,13,4,1}, {13,14,1,8}, 0} -- {16,13,2,1,pot=n},
AreaBlockages[2] = {{14,0,2,1}, {18,10,2,2}, {10,0,1,11}, {13,0,1,13}, {0,10,10,1}, {14,12,8,1}, {0,13,10,1}, {10,13,1,3}, {11,15,11,1}, 0}
AreaBlockages[3] = {{12,16,2,1}, {0,12,7,1}, {7,12,2,3}, {9,14,1,8}, {0,15,4,1}, {4,15,1,3}, {5,17,2,1}, {6,18,1,4}, {8,0,1,8}, {8,10,1,2}, {9,13,13,1}, {11,0,4,2}, {11,2,1,5}, {11,7,4,1}, {14,4,1,3}, {17,0,5,1}, {17,1,5,1}, {11,10,7,1}, {17,4,1,6},{18,4,4,1}, {20,7,2,4}, 0}
AreaBlockages[4] = {{12,16,2,1}, {6,17,2,1}, {15,0,1,14}, {0,13,15,1}, {0,0,4,2}, {3,2,1,5}, {0,4,3,1}, {0,8,1,3}, {0,7,7,1}, {6,4,1,3}, {7,4,3,1}, {9,7,1,3}, {3,10,1,3}, {6,10,7,1}, {12,8,1,2}, {12,7,3,1}, {6,0,4,2}, {12,0,1,4}, {12,4,3,1}, 0} -- {9,5,1,2,pot=n},
AreaBlockages[5] = {{10,3,2,1}, {16,4,2,1}, {11,6,2,1}, {15,7,2,1}, {9,9,2,1}, {5,10,2,1}, {17,12,2,1}, {0,13,2,1}, {7,15,2,1}, {13,18,2,1}, 0}
AreaBlockages[6] = {{10,0,1,6}, {6,6,5,1}, {6,7,1,15}, {13,0,1,9}, {9,9,5,1}, {9,10,1,12}, 0}
AreaBlockages[7] = {0} -- desert none
AreaBlockages[8] = {{10,2,2,2}, {18,3,2,1}, {10,18,2,1}, {20,8,2,1}, {18,10,2,1}, {18,14,2,1}, {20,18,2,1}, {6,0,1,7}, {6,7,8,1}, {14,7,1,15}, {9,0,1,4}, {9,4,8,1}, {17,4,1,18}, 0}
AreaBlockages[9] = {{20,13,2,1}, {2,6,2,1}, {12,6,2,1}, {0,8,2,1}, {6,8,2,1}, {2,10,2,1}, {10,10,2,1}, {6,12,2,1}, {14,12,2,1}, {4,14,2,1}, {12,14,2,1}, {8,16,2,1}, {16,16,2,1}, {0,18,2,1}, {12,18,2,1}, {4,20,2,2}, {10,20,2,2}, {16,20,2,2}, 0}
AreaBlockages[10] = {{14,2,2,1}, {2,4,2,2}, {6,12,2,1}, {0,6,13,1}, {13,6,1,2}, {13,8,9,1}, {0,9,10,1}, {10,9,1,2}, {10,11,22,1}, 0}
AreaBlockages[11] = {{17,9,2,1}, {12,10,4,3}, {6,12,2,1}, {14,20,2,2}, {6,0,1,8}, {0,8,7,1}, {0,11,8,1}, {8,11,1,11}, {9,0,1,6}, {9,6,2,1}, {11,6,1,16}, {20,12,2,2}, {18,14,2,1}, {18,15,1,3}, {16,18,2,1}, {16,19,1,3}, 0}
AreaBlockages[12] = {{0,12,1,2}, {1,12,3,1}, {4,10,1,2}, {5,10,6,1}, {11,10,1,2}, {12,12,6,1}, {14,13,2,1}, {18,10,1,2}, {19,10,3,1}, {21,15,1,2}, {20,17,2,1}, {19,18,1,4}, {3,18,1,4}, {4,17,2,1}, {5,16,1,1}, {6,15,1,1}, {9,15,1,1}, {10,16,1,1}, {10,17,2,1}, {12,18,1,1}, {12,19,2,1}, {14,20,1,2}, 0} -- {7,15,2,1,dragon=n},
AreaBlockages[13] = {{16,14,2,1}, {18,2,2,1}, {20,4,2,1}, {18,8,2,2}, {14,0,1,13}, {14,13,8,1}, {17,0,1,10}, {17,10,5,1}, {0,10,5,1}, {5,10,1,2}, {6,12,3,1}, {9,12,1,2}, {10,14,2,1}, {11,15,1,1}, {12,16,2,1},{13,17,1,5}, {0,17,2,1}, {1,15,1,2}, {4,15,1,2}, {4,17,2,1},{6,18,1,1},{6,19,2,1},{8,20,1,2}, 0} -- {2,15,2,1,pot=n},
AreaBlockages[14] = {{4,0,2,1}, {10,0,2,1}, {16,0,2,1}, {6,2,2,1}, {14,2,2,1}, {0,4,2,1}, {10,4,2,2}, {18,4,2,2}, {4,6,2,1}, {2,8,2,2}, {8,14,2,1}, {16,14,2,1}, {18,15,2,1}, {0,10,10,1}, {10,6,1,5}, {11,6,11,1}, {0,13,10,1}, {10,13,1,9}, {13,9,9,1}, {13,10,1,12}, 0}
AreaBlockages[15] = {{4,4,2,1}, {18,4,2,1}, {14,6,2,1}, {10,8,2,1}, {16,16,2,1}, 0}
AreaBlockages[16] = {{14,0,2,1}, {2,8,2,1}, {11,0,1,4}, {12,4,4,1}, {16,0,1,4}, {8,0,1,7}, {8,7,2,1}, {10,8,1,2}, {11,9,1,1}, {12,10,1,12}, {15,10,1,12}, {16,9,1,1}, {17,8,1,2}, {18,10,1,3}, {18,13,2,1}, {20,14,2,2}, 0}
AreaBlockages[17] = {{4,6,2,2}, {8,2,4,3}, {12,5,2,1}, {10,8,2,1}, {3,0,1,8}, {4,8,2,1}, {5,9,1,1}, {6,10,2,1}, {7,11,1,1}, {8,12,4,1}, {14,0,1,10}, {12,10,2,1}, {12,11,1,1}, {0,14,1,2}, {1,15,3,1}, {4,16,1,2}, {5,17,8,1}, {13,16,1,2}, {14,15,2,1}, {16,16,1,2}, {17,17,2,1}, {19,0,1,5}, {18,5,2,1}, {17,6,1,4}, {18,10,2,1}, {19,11,1,7}, 0} -- {10,6,2,2,burntree=y},
AreaBlockages[18] = {{8,0,1,3}, {8,3,2,1}, {10,4,1,3}, {10,7,2,1}, {8,8,5,1}, {8,9,1,13}, {13,0,1,4}, {14,4,2,1}, {15,5,1,1}, {16,6,2,1}, {17,7,1,1}, {18,8,4,1}, {11,11,11,1}, {11,12,1,10}, 0}
AreaBlockages[19] = {{10,0,1,8}, {0,8,11,1}, {13,0,1,11}, {0,11,14,1}, 0}
AreaBlockages[20] = {{16,6,2,1}, {11,15,2,1}, 0}
AreaBlockages[21] = {{8,18,2,1}, {6,20,2,2}, {12,0,1,13}, {12,13,10,1}, {15,0,1,10}, {15,10,7,1}, 0}
AreaBlockages[22] = {{10,6,2,1}, {14,20,2,2}, {0,10,13,1}, {13,10,1,2}, {13,12,9,1}, {0,13,10,1}, {10,13,1,9}, {13,15,9,1}, {13,16,1,6}, 0}
AreaBlockages[23] = {{8,0,1,4}, {2,4,7,1}, {2,5,1,7}, {0,12,3,1}, {11,0,1,7}, {5,7,7,1}, {5,8,1,7}, {0,15,6,1}, {14,6,8,1}, {14,7,1,5}, {8,12,7,1}, {8,13,1,9}, {20,7,2,3}, {17,9,1,3}, {17,12,5,1}, {11,15,11,1}, {11,16,1,3}, {14,18,4,1}, {14,19,1,3}, {11,21,3,1}, {20,18,2,3}, {17,21,5,1}, 0}
AreaBlockages[24] = {{0,6,15,1}, {15,6,1,16}, {12,7,1,3}, {0,7,1,2}, {0,9,10,1}, {9,10,1,2}, {9,12,4,1}, {0,15,1,1}, {12,15,3,1}, {0,12,7,1}, {3,13,1,5}, {0,18,4,1}, {0,19,1,2}, {0,21,4,1}, {6,13,1,2}, {6,15,3,1}, {9,15,1,6}, {10,18,2,1}, {12,18,1,4}, {6,18,1,3}, {6,21,4,1}, 0}
AreaBlockages[25] = {{0,0,22, 2}, {0,2,1,20}, {21,2,1,3}, {21,7,1,15}, {1,4,3,1}, {1,13,3,1}, {3,14,1,3}, {3,19,1,3}, {4,19,2,1}, {6,16,1,4}, {7,16,2,1}, {9,16,1,4}, {10,19,2,1}, {12,19,1,3}, {12,2,1,2}, {12,4,4,1}, {18,4,1,3}, {15,7,4,1}, {15,10,1,3}, {18,10,1,3}, {12,13,7,1}, {12,14,1,3}, {15,16,6,1}, {15,17,1,3}, {18,19,1,3}, {9,7,4,1}, {9,4,1,3}, {6,4,3,1}, {6,5,1,3}, {3,7,3,1}, {3,8,1,2}, {3,10,3,1}, {6,10,1,3}, {6,13,3,1}, {9,10,1,4}, {10,10,3,1}, 0}
AreaBlockages[26] = {{0,0,1,20}, {0,20,22,2}, {21,0,1,20}, {3,0,1,2}, {3,2,3,1}, {6,2,1,4}, {12,0,1,2}, {9,2,4,1}, {9,3,1,3}, {18,0,1,3}, {15,2,1,7}, {12,5,3,1}, {12,6,1,3}, {3,5,1,3}, {3,8,4,1}, {1,11,6,1}, {9,8,1,3}, {9,11,3,1}, {12,11,1,4}, {18,5,3,1}, {18,6,1,5}, {15,11,4,1}, {3,14,1,4}, {4,14,2,1}, {6,14,1,3}, {6,17,3,1}, {9,14,1,4}, {15,14,1,3}, {12,17,4,1}, {12,18,1,2}, {18,14,1,4}, 0}
AreaBlockages[27] = {{0,0,22,2}, {0,2,1,20}, {21,2,1,20}, {6,2,1,2}, {3,4,4,1}, {15,2,1,3}, {9,4,3,1}, {12,4,1,4}, {18,4,1,3}, {15,7,4,1}, {15,8,1,2}, {15,10,4,1}, {3,7,4,1}, {3,8,1,2}, {1,10,3,1}, {9,7,1,3}, {6,10,7,1}, {6,11,1,2}, {3,13,4,1}, {3,14,1,2}, {3,16,6,1}, {9,13,1,6}, {6,19,4,1}, {3,19,1,3}, {12,13,4,1}, {12,14,1,3}, {18,13,3,1}, {12,19,1,3}, {15,16,4,1}, {15,17,1,5}, {18,17,1,5}, 0}
AreaBlockages[28] = {{0,0,1,22}, {21,0,1,22}, {1,20,20,2}, {3,0,1,3}, {12,0,1,3}, {15,0,1,5}, {15,5,4,1}, {18,0,1,3}, {6,2,1,7}, {3,5,3,1}, {3,6,1,3}, {9,2,1,4}, {10,5,2,1}, {12,5,1,3}, {12,8,4,1}, {18,8,3,1}, {1,11,2,1}, {3,11,1,4}, {9,8,1,3}, {6,11,7,1}, {9,12,1,3}, {15,11,6,1}, {6,14,1,3}, {1,17,6,1}, {12,14,4,1}, {12,15,1,2}, {9,17,7,1}, {9,18,1,2}, {18,14,1,6}, 0}
AreaBlockages[29] = {{0,0,2,22}, {2,0,20,1}, {2,21,20,1}, {2,3,6,1}, {10,1,1,3}, {19,1,1,2}, {13,3,7,1}, {13,4,1,3}, {4,6,1,4}, {7,6,4,1}, {16,6,1,4}, {19,6,3,1}, {7,9,1,4}, {10,9,3,1}, {13,9,1,4}, {19,9,3,1}, {2,12,3,1}, {10,12,1,7}, {11,15,3,1}, {16,12,6,1}, {4,15,4,1}, {4,18,4,1}, {13,18,1,3}, {19,18,3,1}, {16,15,4,1}, {16,16,1,3}, 0}
AreaBlockages[30] = {{0,0,22,1}, {20,1,2,21}, {0,21,20,1}, {2,1,1,2}, {2,3,4,1}, {8,1,1,2}, {8,3,10,1}, {11,4,1,3}, {0,6,8,1}, {8,6,1,3}, {8,9,7,1}, {14,6,1,3}, {11,10,1,3}, {17,6,1,10}, {18,9,2,1}, {14,12,3,1}, {0,9,3,1}, {0,18,3,1}, {11,18,1,3}, {5,9,1,10},
{6,18,3,1}, {0,12,5,1}, {2,13,1,3}, {6,12,2,1}, {8,12,1,3}, {8,15,7,1}, {14,16,1,2}, {14,18,3,1}, {17,18,1,3}, 0}
AreaBlockages[31] = {{0,0,22,1}, {0,1,1,20}, {21,1,1,20}, {0,21,22,1}, {6,1,1,3}, {15,1,1,3}, {18,3,3,1}, {9,3,4,1}, {9,4,1,6}, {3,3,1,4}, {4,6,2,1}, {6,6,1,6}, {3,12,4,1}, {3,13,1,3}, {1,9,3,1}, {9,18,1,3}, {15,18,1,3}, {15,9,1,3}, {15,12,6,1}, {18,13,1,6}, {12,6,7,1}, {18,7,1,3}, {12,7,1,12}, {13,15,3,1}, {9,12,3,1}, {9,13,1,2}, {6,15,4,1}, {6,16,1,2}, {1,18,6,1}, 0}
AreaBlockages[32] = {{0,0,1,22}, {3,0,19,1}, {21,1,1,3}, {21,6,1,16}, {1,21,20,1}, {1,3,3,1}, {1,9,3,1}, {3,12,1,4}, {6,1,1,18}, {3,6,3,1}, {3,18,3,1}, {7,12,2,1}, {9,10,1,3}, {9,9,7,1}, {15,10,1,2}, {15,12,4,1}, {12,1,1,3}, {9,3,1,4}, {12,6,4,1}, {15,3,3,1}, {18,3,1,7}, {19,6,2,1}, {18, 15,3,1}, {12,18,1,3}, {12,12,1,3}, {9,15,7,1}, {9,16,1,3}, {15,16,1,2}, {15,18,4,1}, 0}
AreaBlockages[33] = {{0,0,22,1}, {0,1,1,3}, {21,1,1,19}, {19,20,3,2}, {0,6,1,14}, {0,20,3,2}, {9,6,1,1}, {15,13,1,1}, {5,15,1,1}, 0}
AreaBlockages[34] = {{0,0,3,2}, {19,0,3,2}, {0,2,1,20}, {21,2,1,20}, {1,21,20,1}, {1,2,3,1}, {18,2,3,1}, {10,12,2,1}, {4,7,14,1}, {4,8,1,10}, {17,8,1,10}, {7,10,1,7}, {14,10,1,7}, {8,16,6,1}, 0}
--functions
local function GetRNG()
RNG_1 = memory.readbyte(0x002E)
RNG_2 = memory.readbyte(0x002F)
return RNG_1*256 + RNG_2
end
local function ToScreenXPos(GamePos)
return GamePos * 8 + 8
end
local function ToScreenYPos(GamePos)
return GamePos * 8 + 16
end
local function DrawEnemyDirection(Left, Top, Right, Bottom)
if(EnemyDirection == 0) then -- down
gui.drawbox(Left, Bottom, Right, Bottom+2, {0,0,0,0xFF}, {0xFF,0,0,0xFF}) end
if(EnemyDirection == 1) then -- left
gui.drawbox(Left, Top, Left - 2, Bottom, {0,0,0,0xFF}, {0xFF,0,0,0xFF}) end
if(EnemyDirection == 2) then -- up
gui.drawbox(Left, Top, Right, Top-2, {0,0,0,0xFF}, {0xFF,0,0,0xFF}) end
if(EnemyDirection == 3) then -- right
gui.drawbox(Right, Top, Right+2, Bottom, {0,0,0,0xFF}, {0xFF,0,0,0xFF}) end
end
local function DrawEnemyHitBox(Type, X, Y)
XLength = 2
YLength = 2
if(Type == 0x07) then -- slime
YLength = 1 end
if(Type == 0x08) then -- kobold
XLength = 1 end
if(Type == 0x0A) then -- eel
XLength = 1 end
if(Type == 0x0E) then -- stirge
YLength = 1 end
if(Type == 0x0F) -- wasp
then
XLength = 1
YLength = 1
end
if(Type == 0x11) -- firebal
then
XLength = 1
YLength = 1
end
if(Type == 0x12) then -- dragon
XLength = 3 end
if(Type == 0x13) -- varalys
then
XLength = 3
YLength = 3
end
gui.drawbox(ToScreenXPos(X), ToScreenYPos(Y), ToScreenXPos(X+XLength), ToScreenYPos(Y+YLength), 0, {0xFF,0,0,0xFF})
end
local function DrawArea(CurrentArea)
if(CurrentArea < 0) or (CurrentArea >= 35) then
return end
if(AreaBlockages[CurrentArea] == 0) then
return end
c=1
CurrentBlock = AreaBlockages[CurrentArea][c]
while(CurrentBlock ~= 0)
do
left = AreaBlockages[CurrentArea][c][1]
top = AreaBlockages[CurrentArea][c][2]
right = left + AreaBlockages[CurrentArea][c][3]
bottom = top + AreaBlockages[CurrentArea][c][4]
gui.drawbox(ToScreenXPos(left), ToScreenYPos(top), ToScreenXPos(right), ToScreenYPos(bottom), {0x80,0,0,0x80}, {0x80,0,0,0x80})
c = c + 1
CurrentBlock = AreaBlockages[CurrentArea][c]
end
end
local function main_draw()
if(do_drawing == false) then
return end
if(Is_J_Version)
then
PosX = memory.readbyte(0x0034)
PosY = memory.readbyte(0x0035)
CurrentArea = memory.readbyte(0x0045)
CurrentHP = memory.readbyte(0x0036)
MaxHP = memory.readbyte(0x003F)
CurrentStrength = memory.readbyte(0x0037)
CurrentExperience = memory.readbyte(0x0038)
CurrentMP = memory.readbyte(0x0039)
MaxMP = memory.readbyte(0x0040)
CurrentLevel = memory.readbyte(0x003A)
DamageTimer = memory.readbyte(0x003B)
KeyChestPosition = memory.readbyte(0x006E)
Fairy1TreePosition = memory.readbyte(0x0078)
Fairy2TreePosition = memory.readbyte(0x007A)
RNG1 = memory.readbyte(0x002C)
RNG2 = memory.readbyte(0x002D)
else
PosX = memory.readbyte(0x0036)
PosY = memory.readbyte(0x0037)
CurrentArea = memory.readbyte(0x0047)
CurrentHP = memory.readbyte(0x0038)
MaxHP = memory.readbyte(0x0041)
CurrentStrength = memory.readbyte(0x0039)
CurrentExperience = memory.readbyte(0x003A)
CurrentMP = memory.readbyte(0x003B)
MaxMP = memory.readbyte(0x0042)
CurrentLevel = memory.readbyte(0x003C)
DamageTimer = memory.readbyte(0x003D)
KeyChestPosition = memory.readbyte(0x0070)
Fairy1TreePosition = memory.readbyte(0x007A)
Fairy2TreePosition = memory.readbyte(0x007C)
RNG1 = memory.readbyte(0x002E)
RNG2 = memory.readbyte(0x002F)
end
RNG = RNG1*256 + RNG2
-- Draw Player Info
gui.text(1, 9, string.format("P(%2d,%2d)", PosX, PosY))
gui.drawbox(ToScreenXPos(PosX), ToScreenYPos(PosY), ToScreenXPos(PosX+2), ToScreenYPos(PosY+2), 0, {0,0,0xFF,0xFF})
gui.text(50, 9, string.format("T %3d", DamageTimer))
gui.text(90, 9, string.format("RNG: %5d", RNG))
gui.text(160, 9, string.format("F1: %2d", Fairy1TreePosition))
gui.text(200, 9, string.format("K: %1d", KeyChestPosition))
gui.text(228, 9, string.format("F2: %1d", Fairy2TreePosition))
gui.text(192, 48, string.format("Level %2d", CurrentLevel + 1)) -- make it 1 based
gui.text(192, 64, string.format("%3d/%3d", CurrentHP, MaxHP))
gui.text(192, 87, string.format("%3d", CurrentStrength))
gui.text(192, 111, string.format("%3d", CurrentExperience))
gui.text(192, 135, string.format("%3d/%3d", CurrentMP, MaxMP))
gui.text(200, 192, string.format("Screen %2d", CurrentArea))
DrawArea(CurrentArea)
-- Draw Enemy Info
gui.text(72,192,"Offscreen:")
for i=1,8
do
ThisEnemyBase = EnemyMemBaseValue + 10 * (i-1)
EnemyType = memory.readbyte( ThisEnemyBase + EnemyTypeOffset) -- 0
EnemyX = memory.readbyte(ThisEnemyBase + EnemyXPosOffset) -- 1
EnemyY = memory.readbyte(ThisEnemyBase + EnemyYPosOffset) -- 2
EnemyUnknown1 = memory.readbyte(ThisEnemyBase + EnemyUnknown1Offset) -- 3
EnemyOffscreenTimer = memory.readbyte(ThisEnemyBase + EnemyOffscreenTimerOffset) -- 4
EnemyDirection = memory.readbyte(ThisEnemyBase + EnemyDirectionOffset) -- 5
EnemyNextActionTimer = memory.readbyte(ThisEnemyBase + EnemyNextActionTimerOffset) -- 6
EnemyAnimationTimer = memory.readbyte(ThisEnemyBase + EnemyAnimationTimerOffset) -- 7
EnemyHP = memory.readbyte(ThisEnemyBase + EnemyHPOffset) -- 8
EnemyUnknown2 = memory.readbyte(ThisEnemyBase + EnemyUnknown2Offset) -- 9
ValueSum = EnemyType + EnemyX + EnemyY + EnemyUnknown1 + EnemyOffscreenTimer + EnemyDirection + EnemyNextActionTimer + EnemyAnimationTimer + EnemyHP + EnemyUnknown2
if(ValueSum ~= 0) and (EnemyOffscreenTimer == 0)
then
EnemyScreenX = ToScreenXPos(EnemyX)
EnemyScreenY = ToScreenYPos(EnemyY)
gui.text(EnemyScreenX-8, EnemyScreenY+1, string.format("%1d%3d", i, EnemyHP), {0xFF,0xFF,0xFF,0xFF}, {0,0,0,0x80})
if(DrawEnemyActionTimer == true) then
gui.text(EnemyScreenX, EnemyScreenY+9, string.format("%2d",EnemyNextActionTimer)) end
DrawEnemyDirection(EnemyScreenX, EnemyScreenY, EnemyScreenX + 16, EnemyScreenY + 8)
DrawEnemyHitBox(EnemyType, EnemyX, EnemyY)
end
if(i<=4) then
gui.text(128+16*(i-1),192,string.format("%2d",EnemyOffscreenTimer)) end
end
end
--REMOTE CONTROL--
local controller_input = {}
local function AdvanceFrames(count) -- <= 0 means no advance
for i=1,count do
emu.frameadvance() end
if(count > 0) then
controller_input = {} end
end
local function PushButton(key, is_clearing) -- is_clearing is true or false
if(key == "clear") then
controller_input = {} end
if(key == "up") then
controller_input["up"] = not is_clearing end
if(key == "down") then
controller_input["down"] = not is_clearing end
if(key == "left") then
controller_input["left"] = not is_clearing end
if(key == "right") then
controller_input["right"] = not is_clearing end
if(key == "A") then
controller_input["A"] = not is_clearing end
if(key == "B") then
controller_input["B"] = not is_clearing end
if(key == "start") then
controller_input["start"] = not is_clearing end
if(key == "select") then
controller_input["select"] = not is_clearing end
joypad.set(1, controller_input)
end
local function DoRunStart(DoReset)
if(DoReset == true) then
emu.poweron() end
AdvanceFrames(7)
PushButton("start")
AdvanceFrames(24)
end
local function DoSoftReset()
emu.softreset()
AdvanceFrames(27)
end
local function MenuToGame(delay_count)
for i=1,delay_count do
AdvanceFrames(9) end
PushButton("start")
AdvanceFrames(58)
end
local function MenuHandleDemoOld(delay_count, monster_delay)
AdvanceFrames(840)
for i=1,delay_count do
AdvanceFrames(6) end
AdvanceFrames(2*monster_delay)
PushButton("start")
AdvanceFrames(15)
end
local function MenuHandleDemo(RNG_delay)
AdvanceFrames(783)
if(RNG_delay == true) then
AdvanceFrames(8) end
DoSoftReset()
end
local function MenuToPassword(delay_count)
for i=1,delay_count do
AdvanceFrames(9) end
PushButton("down")
AdvanceFrames(10)
PushButton("start")
AdvanceFrames(14)
end
local function PasswordErrorOld()
PushButton("left")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(122)
PushButton("start")
AdvanceFrames(15)
end
local function PasswordError()
PushButton("left")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(1)
DoSoftReset()
end
local function Password3DGolfSuperVer()
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("down")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("left")
AdvanceFrames(2)
PushButton("down")
AdvanceFrames(2)
PushButton("left")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("left")
AdvanceFrames(2)
PushButton("left")
AdvanceFrames(2)
PushButton("left")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("up")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("down")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("down")
AdvanceFrames(2)
PushButton("left")
AdvanceFrames(2)
PushButton("left")
AdvanceFrames(2)
PushButton("up")
AdvanceFrames(2)
PushButton("left")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("up")
AdvanceFrames(2)
PushButton("left")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("down")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("down")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("up")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("right")
AdvanceFrames(2)
PushButton("down")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("down")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("right")
AdvanceFrames(2)
PushButton("down")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("right")
AdvanceFrames(2)
PushButton("A")
AdvanceFrames(3)
PushButton("A")
AdvanceFrames(50)
end
local function GameMoveSlow(direction, is_monster)
PushButton(direction)
if(is_monster == true) then
PushButton("A") end
AdvanceFrames(6)
if(is_monster == true) then
AdvanceFrames(2) end
end
local function GameMenuGame(direction, is_monster, do_reset)
PushButton(direction)
PushButton("select")
if(is_monster == true) then
PushButton("A") end
AdvanceFrames(26)
if(is_monster == true) then
AdvanceFrames(2) end
PushButton("up")
AdvanceFrames(12)
PushButton("select")
if(do_reset)
then
AdvanceFrames(1)
DoSoftReset()
else
AdvanceFrames(10)
end
end
local function GameMenuChangeSpeed(direction, is_monster)
PushButton(direction)
PushButton("select")
if(is_monster == true) then
PushButton("A") end
AdvanceFrames(26)
if(is_monster == true) then
AdvanceFrames(2) end
PushButton("up")
AdvanceFrames(12)
PushButton("up")
AdvanceFrames(12)
PushButton("select")
AdvanceFrames(13)
PushButton("down")
AdvanceFrames(12)
PushButton("select")
AdvanceFrames(10)
end
local function GameDeath()
AdvanceFrames(129)
PushButton("start")
AdvanceFrames(15)
end
--when attacking, the delay needs to be added manually
local function MoveFast(direction, attacking, delay)
PushButton(direction)
if(attacking == true) then
PushButton("A") end
AdvanceFrames(4+delay)
end
-- delay_list is a list that must have (at least) count items
-- but it can be a 0 which means all elements are 0
local function MultiMove(direction, count, delay_list)
for i=1,count
do
if(delay_list ~= 0) then
MoveFast(direction, false, delay_list[i])
else
MoveFast(direction, false, 0) end
end
end
local function U_MultiMoveAttack(direction, count, skip_position_check)
PosMem = 0
PosSeek = -1
if(direction == "left")
then
PosMem = 0x0036 -- X
PosSeek = memory.readbyte(PosMem) - count
end
if(direction == "right")
then
PosMem = 0x0036 -- X
PosSeek = memory.readbyte(PosMem) + count
end
if(direction == "up")
then
PosMem = 0x0037 -- Y
PosSeek = memory.readbyte(PosMem) - count
end
if(direction == "down")
then
PosMem = 0x0037 -- Y
PosSeek = memory.readbyte(PosMem) + count
end
if(PosSeek < 0) or (PosSeek > 20) then
return false end
mma_state = savestate.create()
savestate.save(mma_state)
savestate.persist(mma_state)
for c=1,50
do
MoveFast(direction, true, 0)
while(emu.lagged() == true)
do
savestate.save(mma_state)
emu.frameadvance()
HP = memory.readbyte(0x0038)
if(HP == 0) then
return false end
end
if(HP == 0) then
return false end
savestate.load(mma_state)
if(skip_position_check == false)
then
if(memory.readbyte(PosMem) == PosSeek) then
return true end
else
if(c == count) then
return true end
end
end
return false
end
local function MultiMoveStutter(direction, count, delay_list)
for i=1,count
do
MoveFast("clear", false, 0) -- stutter
if(delay_list ~= 0)
then
MoveFast(direction, false, delay_list[i])
else
MoveFast(direction, false, 0)
end
end
end
local function MultiMoveStutterAttack(direction, count) -- (U) version
for i=1,count
do
MoveFast("clear", false, 0) -- stutter
if( U_MultiMoveAttack(direction, 1, false) == false) then
return false end
end
return true
end
-- array_list example: (array_count 4, array_stutter_count 12)
-- { {"left", 6, false}, each contain: direction, steps, stutter_flag
-- {"left", 1, true},
-- {"left", 3, false}
-- {"left", 11, true} }
-- array_count is the number of items in the array
-- array_stutter_count is the sum of the steps that have the stutter_flag set
local function MultiMoveDistribute(array_list, array_count, array_stutter_count, stutter_count)
dist_delay = stutter_count / array_stutter_count
extra_delay = stutter_count % array_stutter_count
for c=1,array_count
do
direction = array_list[c][1]
steps = array_list[c][2]
stutter_flag = array_list[c][3]
if(stutter_flag == false)
then
U_MultiMoveAttack(direction, steps, false)
else
step_count = math.max(steps,1)
for n=1,step_count
do
delay_amt = dist_delay
if(extra_delay > 0)
then
delay_amt = delay_amt + 1
extra_delay = extra_delay - 1
end
MultiMove("clear", delay_amt, 0)
if(steps ~= 0) then
U_MultiMoveAttack(direction, 1, false) end
end
end
end
end
local function MultiMoveAttackArray(u_m_array, HP_low_limit) -- u_m_array example: {{"down", 1}, {"right", 3}, {"down", 3}, {"DONE",0}} Must have DONE to mark the end
u_m_index = 1
while(u_m_array[u_m_index][1] ~= "DONE")
do
if( U_MultiMoveAttack(u_m_array[u_m_index][1], u_m_array[u_m_index][2], false) == false) then
return false end
HP = memory.readbyte(0x0038)
if(HP < HP_low_limit) then
return false end
u_m_index = u_m_index + 1
end
return true
end
local function ScreenTransition(TransitionType, AddlDelay)
if(TransitionType == "small") then
AdvanceFrames(10 + AddlDelay) end
if(TransitionType == "medium") then
AdvanceFrames(27 + AddlDelay) end
if(TransitionType == "large") then
AdvanceFrames(49 + AddlDelay) end
end
local function ItemGet(AddlDelay)
AdvanceFrames(122 + AddlDelay)
end
local function SaveReload(direction1, direction2)
PushButton(direction1)
PushButton("select")
AdvanceFrames(24)
PushButton("down")
AdvanceFrames(12)
PushButton("select")
AdvanceFrames(15)
PushButton("select")
AdvanceFrames(10)
PushButton(direction2)
PushButton("select")
AdvanceFrames(24)
PushButton("down")
AdvanceFrames(12)
PushButton("down")
AdvanceFrames(12)
PushButton("select")
AdvanceFrames(15)
PushButton("select")
AdvanceFrames(30)
end
-----------------------------------------------------------------------------------------------
-----(J) Easter Egg-----
local function J_StartYourEngine(DoReset)
DoRunStart(DoReset)
MenuToPassword(0)
PasswordError()
MenuHandleDemo(false)
MenuToGame(0)
GameMenuGame("left", false, false)
GameMenuGame("left", false, false)
GameMenuGame("up", false, false)
GameMenuGame("left", false, true)
MenuHandleDemoOld(1, 0)
MenuToPassword(0)
PasswordError()
MenuToPassword(0)
PasswordError()
MenuToPassword(0)
Password3DGolfSuperVer()
GameMenuChangeSpeed("up", false)
end
local function J_ToTheNotBatCave()
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 5, 0)
MultiMove("right", 5, 0)
ScreenTransition("small", 0)
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MultiMove("up", 2, 0)
MultiMove("right", 5, 0)
MoveFast("clear", false, 0) --RNG manipulation
MultiMove("up", 2, 0)
MultiMove("right", 8, 0)
MoveFast("up", false, 0)
MoveFast("right", true, 0)
ScreenTransition("medium", 1)
end
local function J_TakeAWispOfLuck()
MoveFast("clear", false, 0) -- on top of enemy, can't move
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, {0,2,0}) -- hit by the wisp
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 6, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 5, 0)
ItemGet(2)
MultiMove("down", 5, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 6, 0)
MultiMove("left", 6, 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, {0,0,0,0,2,0}) -- HP Refill
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 2, 0)
MoveFast("left", true, 0)
ScreenTransition("large", 0)
end
local function J_YouGetSomeErAPot()
MoveFast("up", false, 0)
MultiMove("left", 5, 0)
MultiMove("up", 2, 0)
MultiMove("left", 11, 0)
ScreenTransition("small", 0)
MultiMove("left", 8, 0)
MultiMove("up", 2, 0)
MultiMove("left", 12, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MultiMove("left", 4, 0)
MultiMove("up", 4, 0)
MultiMove("left", 17, 0)
ScreenTransition("small", 0)
MultiMove("left", 8, 0)
MultiMove("down", 4, 0)
MultiMove("left", 5, 0)
MultiMove("down", 2, 0)
MoveFast("left", false, 0)
MultiMove("down", 2, 0)
MoveFast("down", true, 1) -- kobold
MultiMove("down", 8, 0)
ScreenTransition("small", 0)
MultiMove("down", 8, 0)
MultiMove("right", 3, 0)
MultiMove("up", 9, 0)
ScreenTransition("small", 0)
MultiMove("up", 7, 0)
MultiMove("right", 6, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
ScreenTransition("small", 0)
MultiMove("right", 7, 0)
MultiMove("down", 3, 0)
MoveFast("clear", false, 0) --RNG manipulation
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
ItemGet(4) -- 2 for revealing the hole animation
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 8, 0)
ScreenTransition("small", 0)
MultiMove("left", 2, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 6, 0)
MultiMove("left", 6, 0)
MultiMove("down", 8, 0)
ScreenTransition("small", 0)
MultiMove("down", 11, 0)
MultiMove("right", 12, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MultiMove("up", 3, 0)
ScreenTransition("small", 0)
MultiMove("up", 4, 0)
MultiMove("right", 3, 0)
MultiMove("down", 2, 0)
MoveFast("down", true, 0)
ScreenTransition("medium", 0)
end
local function J_YouGetAQuickKey()
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 9, 0)
MultiMove("left", 3, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MultiMove("down", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 4, 0)
ItemGet(2)
MultiMove("down", 2, 0)
MultiMove("left", 5, 0)
MoveFast("left", true, 0)
ScreenTransition("large", 0)
end
local function J_LeafTheTreeAlone()
MultiMove("up", 4, 0)
MultiMove("left", 6, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MultiMove("up", 2, {0,2}) -- HP Refill
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MoveFast("up", false, 0)
MultiMove("left", 2, 0)
MultiMove("up", 5, 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MultiMove("left", 3, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MultiMove("up", 2, 0)
ScreenTransition("small", 0)
MoveFast("up", true, 0)
ItemGet(1)
MultiMove("left", 4, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MultiMove("left", 16, 0)
MultiMove("up", 5, 0)
MultiMove("left", 5, 0)
ScreenTransition("small", 0)
MultiMove("left", 9, 0)
MoveFast("left", true, 0)
ScreenTransition("medium", 0)
end
local function J_DoesItRingABell()
MultiMove("right", 3, 0)
MoveFast("clear", false, 0) --this and...
MultiMove("right", 3, 0)
MoveFast("clear", false, 0) --this avoid getting hit, which overall saves 2 frames
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1)
MultiMove("down", 2, 0)
MoveFast("clear", false, 0) --RNG Manipulation
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 6) --got hit
MoveFast("right", true, 1)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MoveFast("down", true, 2)
MultiMove("right", 4, 0)
ScreenTransition("small", 0)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 1)
MultiMove("right", 5, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 6, 0)
ItemGet(2)
MultiMove("down", 6, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 7, 0)
ScreenTransition("small", 0)
MoveFast("left", true, 1) --ladyam, but only 1 hit due to attacking before
MultiMove("left", 2, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 7, 0)
ScreenTransition("small", 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 0)
ScreenTransition("large", 0)
end
local function J_GrabTheFamilyJewels()
MoveFast("right", false, 0)
MultiMove("down", 12, 0)
ScreenTransition("small", 0)
MultiMove("down", 21, 0)
ScreenTransition("small", 0)
MoveFast("down", false, 0)
MoveFast("down", true, 1)
MultiMove("down", 19, 0)
ScreenTransition("small", 0)
MultiMove("down", 13, 0)
MultiMove("left", 2, 0)
MultiMove("down", 7, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MultiMove("left", 4, 0)
MultiMove("down", 7, 0)
ItemGet(3)
MultiMove("up", 7, 0)
MultiMove("right", 4, 0)
MultiMove("up", 2, 0)
ScreenTransition("small", 0)
MultiMove("right", 2, 0)
MultiMove("up", 2, 0)
MultiMove("right", 6, 0)
end
local function J_WizardsCantRideWaves()
MoveFast("right", false, 0)
ScreenTransition("small", 0)
AdvanceFrames(999) -- march of the goldams
PushButton("B")
MultiMove("up", 2, {1,0})
PushButton("B")
MultiMove("up", 2, {1,0})
ItemGet(1)
PushButton("B")
MoveFast("left", false, 1)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
PushButton("B")
MoveFast("left", false, 1)
MultiMove("up", 15, 0)
ScreenTransition("small", 0)
MultiMove("up", 18, 0)
MultiMove("left", 2, 0)
MultiMove("up", 3, 0)
ScreenTransition("small", 0)
MultiMove("up", 16, 0)
MultiMove("left", 11, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
ScreenTransition("small", 0)
MultiMove("left", 3, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
PushButton("B")
MoveFast("left", true, 0)
AdvanceFrames(1264) -- fairy3 get and fairy ride
end
local function J_CommitAGraveCrime()
PushButton("B")
MoveFast("up", false, 1)
MoveFast("left", false, 0)
PushButton("B")
MultiMove("up", 3, {1,0,0})
PushButton("B")
MoveFast("right", true, 0) -- and A pressed
AdvanceFrames(151) -- FIRE!!!
MoveFast("right", false, 0)
MoveFast("right", true, 0)
ScreenTransition("large", 0)
MoveFast("down", false, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 9, {0,0,0,0,0,0,0,2,0}) -- HP Refill
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 2, 0)
MultiMove("right", 4, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 2, 0)
MoveFast("clear", false, 0) -- damage and HP Refill
MultiMove("up", 2, 0)
MoveFast("clear", false, 0) -- damage and HP Refill
MultiMove("up", 2, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 2, 0)
ScreenTransition("large", 0)
MultiMove("right", 2, 0)
MultiMove("down", 17, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MultiMove("left", 2, 0)
MultiMove("down", 15, 0)
MultiMove("right", 3, 0)
MultiMove("up", 10, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
AdvanceFrames(35) -- Infinite MP wore off
MultiMove("down", 2, 0)
MultiMove("right", 2, 0)
MoveFast("up", true, 0)
ItemGet(0)
MultiMove("up", 5, 0)
MultiMove("left", 5, 0)
MultiMove("down", 9, 0)
MultiMove("right", 3, 0)-----------------Manipulate the skeleton to the right
MoveFast("clear", false, 0) -- waiting for skeleton
MoveFast("down", false, 0)
MoveFast("clear", false, 0) -- waiting for skeleton
MultiMove("left", 6, 0)-----------------
MultiMove("up", 13, 0)
MultiMove("right", 2, 0)
MultiMove("up", 6, 0)
ScreenTransition("small", 1)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("clear", false, 0) -- skeleton avoid, could take damage as an alt
MultiMove("left", 2, 0)
MultiMove("up", 14, 0)
MultiMove("left", 2, 0)
ScreenTransition("large", 0)
MoveFast("left", false, 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left",6, 0)
MultiMove("up",3, 0)
MultiMove("left",3, 0)
MultiMove("down",3, 0)
MultiMove("left",3, 0)
MultiMove("down",6, 0)
MultiMove("left",6, 0)
MultiMove("up", 9, 0)
MultiMove("right", 3, 0)
MultiMove("up",3, 0)
MultiMove("left",3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up",3, 0)
MultiMove("left",3, 0)
MultiMove("up",2, 0)
ScreenTransition("large", 0)
end
local function J_FightDoesNotDragOn()
MoveFast("right", false, 0)
MultiMove("left",2, 0)
MoveFast("up", false, 0)
MoveFast("right", true, 6)
MoveFast("right", true, 6)
MoveFast("right", true, 6)
MoveFast("right", true, 6)
MoveFast("right", true, 6)
MoveFast("right", true, 6)
MoveFast("right", true, 6)
MoveFast("right", true, 5)
ItemGet(2)
MultiMove("left",4, 0)
MultiMove("up",5, 0)
end
local function J_LubySlippers()
MoveFast("right", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 1)
MultiMove("up", 7, 0)
MultiMove("right", 5, 0)
MoveFast("down", false, 0)
MultiMove("right", 4, 0)
MoveFast("up", false, 0)
MultiMove("right", 5, 0)
ScreenTransition("small", 1)
MultiMove("right", 7, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 4, 0)
ScreenTransition("small", 1)
MultiMove("down", 4, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
ItemGet(3)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MultiMove("up", 3, 0)
MoveFast("left", false, 0)
MultiMove("up", 3, 0)
ScreenTransition("small", 1)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MultiMove("left", 6, 0)
ScreenTransition("small", 1)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MultiMove("left", 9, 0)
MoveFast("up", false, 0)
MultiMove("left", 3, 0)
MultiMove("down", 8, 0)
ScreenTransition("small", 1)
MoveFast("left", false, 0)
MultiMove("down", 6, 0)
MultiMove("right", 3, 0)
MoveFast("right", true, 0)
ScreenTransition("large", 0)
end
local function J_NoBossMusicForYou()
MoveFast("down", false, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 5, 0)
MoveFast("down", false, 2) -- Blackam attacks
MultiMove("down", 3, 0)
MultiMove("right", 2, 0)
MultiMove("right", 4, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 6, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 2, 0)
ScreenTransition("large", 0)
MultiMove("down", 2, 0)
MoveFast("down", true, 6)
MoveFast("down", true, 6)
MoveFast("down", true, 6)
MoveFast("down", true, 6)
MoveFast("down", true, 6)
MoveFast("down", true, 6)
MoveFast("down", true, 6)
MoveFast("down", true, 6)
end
-----------------------------------------------------------------------------------------------
-----(U) Any%-----
local function U_StartYourEngine(DoReset)
if(DoReset == true) then
emu.poweron() end
AdvanceFrames(7)
PushButton("start")
AdvanceFrames(23)
PushButton("start")
AdvanceFrames(58)
GameMenuChangeSpeed("up", false)
end
local function U_ToTheNotBatCave()
MultiMove("up", 2, 0)
MultiMove("right", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("up", 1, 0)
MultiMove("right", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("up", 1, 0)
MultiMove("right", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("up", 1, 0)
MultiMove("right", 3, 0)
ScreenTransition("small", 0)
MultiMove("up", 4, 0)
ScreenTransition("small", 0)
MultiMove("right", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("right", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("right", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("right", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("up", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("up", 1, 0)
MultiMove("right", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("up", 2, 0)
MultiMove("right", 8, 0)
MultiMove("up", 1, 0)
MoveFast("right", true, 0)
ScreenTransition("medium", 1)
end
local function U_TakeAWispOfLuck()
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 6, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 4, 0)
MoveFast("up", true, 2) -- attack the wisp because it got in the way
ItemGet(2) -- this animation takes 2 frames longer than the least animation time
MoveFast("up", true, 2) -- fighting the wisp costs 13 frames, but gains 7 exp
MoveFast("up", true, 1) -- but because of less grinding later, the time is recovered
MultiMove("down", 5, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 6, 0)
MultiMove("left", 5, 0)
MoveFast("left", true, 2) -- a wisp is again in the way
MoveFast("left", true, 2) -- kill it because of the high exp
MoveFast("left", true, 1) -- and it is better than wasting frames to avoid/bump into them
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 2, 0)
MoveFast("left", true, 0)
ScreenTransition("large", 0)
end
local function U_YouGetSomeErAPot()
MultiMove("up", 1, 0)
MultiMove("left", 5, 0)
MultiMove("up", 7, 0)
MultiMove("left", 1, 0)
MultiMove("left", 4, 0)
MultiMove("up", 1, 0)
MultiMove("left", 6, 0)
ScreenTransition("small", 0)
MultiMoveStutter("left", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("up", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("left", 11, 0)
MoveFast("left", true, 1)
MultiMove("left", 7, 0)
ScreenTransition("small", 0)
MultiMove("left", 6, 0)
MultiMove("clear", 3, 0) -- RNG manipulation / HP recover
MultiMove("left", 4, 0)
for i=1,4 do
MultiMove("clear", 3, 0) -- RNG manipulation / HP recover
MoveFast("left", false, 0)
end
MultiMove("clear", 3, 0) -- RNG manipulation / HP recover
MoveFast("left", true, 1)
for i=1,5 do
MultiMove("clear", 2, 0) -- RNG manipulation / HP recover
MoveFast("left", false, 0)
end
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("left", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("left", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("left", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("left", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMove("down", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MoveFast("down", true, 1)
MultiMove("down", 1, 0)
MultiMove("left", 3, 0)
MultiMove("down", 2, 0)
MultiMove("left", 3, 0)
MultiMove("down", 11, 0)
ScreenTransition("small", 0)
MultiMove("down", 8, 0)
MultiMove("clear", 12, 0)
MultiMove("right", 3, 0)
MultiMove("up", 9, 0)
ScreenTransition("small", 0)
MultiMove("up", 7, 0)
MultiMove("right", 6, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
ScreenTransition("small", 0)
MultiMove("right", 7, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
ItemGet(4) -- 2 of it is for revealing the hole animation
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 8, 0)
ScreenTransition("small", 0)
MultiMove("left", 2, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 6, 0)
MultiMove("left", 6, 0)
MultiMove("down", 8, 0)
ScreenTransition("small", 0)
MultiMove("down", 8, 0)
end
local function U_YouGetAQuickKey()
MultiMove("down", 3, 0)
MultiMove("right", 12, 0)
ScreenTransition("small", 0)
MultiMove("right", 1, 0)
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MultiMove("up", 3, 0)
ScreenTransition("small", 0)
MultiMove("up", 4, 0)
MultiMove("right", 3, 0)
MultiMove("down", 2, 0)
MoveFast("down", true, 0)
ScreenTransition("medium", 0)
MultiMove("down", 3, 0)
MultiMove("left", 6, 0)
MultiMove("up", 2, 0)
SaveReload("up", "right")
MultiMove("right", 3, 0)
ItemGet(2)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 2, 0)
MoveFast("up", true, 0)
ScreenTransition("large", 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 5, 0)
ScreenTransition("small", 0)
MultiMove("down", 2, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 6, 0)
MultiMove("down", 3, 0)
MultiMove("left", 2, 0)
ScreenTransition("small", 0)
MultiMove("left", 11, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
end
local function U_GrabTheFamilyJewels()
MultiMove("clear", 6, 0) -- RNG manipulation / HP recover
MultiMove("up", 9, 0)
ScreenTransition("small", 0)
MultiMove("up", 10, 0)
MultiMove("right", 1, 0)
MultiMoveStutter("right", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("up", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("right", 3, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("up", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MoveFast("up", true, 1)
MultiMoveStutter("up", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("right", 5, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("right", 4, 0)
ScreenTransition("small", 0)
MultiMoveStutter("right", 11, 0)
MultiMove("right", 3, 0)
MultiMove("clear", 2, 0) -- RNG manipulation / HP recover
MultiMove("right", 2, 0)
MultiMove("down", 3, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("down", 2, 0)
MultiMove("down", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("down", 4, 0)
MultiMove("down", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("down", 4, 0)
ScreenTransition("small", 0)
MultiMoveStutter("down", 3, 0)
MultiMove("down", 18, 0)
ScreenTransition("small", 0)
MultiMove("down", 7, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("down", 3, 0)
MultiMove("down", 2, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("down", 1, 0)
MultiMove("clear", 1, 0) -- RNG manipulation / HP recover
MultiMoveStutter("left", 2, 0)
MultiMove("down", 8, 0)
ScreenTransition("small", 0)
MultiMove("left", 2, 0)
MultiMove("down", 1, 0)
MultiMove("left", 4, 0)
MultiMove("down", 7, 0)
ItemGet(3)
MultiMove("up", 7, 0)
MultiMove("right", 4, 0)
MultiMove("up", 2, 0)
ScreenTransition("small", 0)
MultiMove("right", 2, 0)
MultiMove("up", 2, 0)
MultiMove("right", 5, 0)
end
local function U_ItsAFair_y_Tree()
MultiMoveStutter("right", 2, 0)
ScreenTransition("small", 0)
MultiMove("up", 4, 0)
ItemGet(1)
MoveFast("left", false, 0)
ScreenTransition("small", 0)
for i=1,2 do
MultiMove("clear", 3, 0)
MoveFast("left", false, 0)
end
for i=1,2 do
MultiMove("clear", 3, 0)
MoveFast("up", false, 0)
end
for i=1,5 do
MultiMove("clear", 2, 0)
MoveFast("up", false, 0)
end
MultiMove("up", 8, 0)
ScreenTransition("small", 0)
MultiMove("up", 11, 0)
MultiMove("clear", 2, 0)
MultiMove("up", 5, 0)
for i=1,2 do
MultiMove("clear", 3, 0)
MoveFast("up", false, 0)
end
for i=1,2 do
MultiMove("clear", 3, 0)
MoveFast("left", false, 0)
end
for i=1,2 do
MultiMove("clear", 3, 0)
MoveFast("up", false, 0)
end
MoveFast("up", false, 0)
ScreenTransition("small", 0)
for i=1,4 do
MultiMove("clear", 2, 0)
MoveFast("up", false, 0)
end
MultiMove("up", 2, 0)
for i=1,4 do
MultiMove("clear", 2, 0)
MoveFast("up", false, 0)
end
MultiMove("up", 2, 0)
for i=1,2 do
MultiMove("clear", 2, 0)
MoveFast("up", false, 0)
end
MultiMove("up", 7, 0)
ScreenTransition("small", 0)
MultiMove("up", 9, 0)
MultiMove("clear", 12, 0) -- RNG manipulation / HP recover
MultiMove("up", 2, 0)
MoveFast("left", true, 0)
ScreenTransition("medium", 1) -- 1 frame lost here for who knows what reason
end
local function U_TheShieldAlwaysRingsTwice()
MultiMove("left", 3, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("up", true, 1)
MultiMove("up", 2, 0)
MultiMove("left", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("clear", false, 0) -- natural occurrence for goldam running away
MultiMove("down", 2, 0)
MoveFast("left", true, 1)
MultiMove("left", 5, 0)
MultiMove("up", 3, 0)
MultiMove("left", 4, 0)
ScreenTransition("small", 0)
MultiMove("up", 3, 0)
MultiMove("left", 4, 0)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("right", false, 0) -- retreat costs 8 frames (fighting goldam head-on)
MoveFast("left", true, 1) -- non-move from the attack (natural occurrance)
MultiMove("left", 2, 0)
MultiMove("up", 3, 0)
MultiMove("right", 7, 0)
ScreenTransition("small", 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 6, 0)
ItemGet(2)
MultiMove("down", 6, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MultiMove("up", 3, 0)
MoveFast("left", true, 2)
MoveFast("left", true, 1)
MultiMove("left", 2, 0)
MultiMove("up", 3, 0)
MultiMove("left", 7, 0)
ScreenTransition("small", 0)
MultiMove("left", 3, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- moving up to get to the ladyam costs 8 frames
MultiMove("down", 4, 0)
MultiMove("left", 3, 0)
MoveFast("clear", false, 0) -- 4 frames for waiting for Ladyam
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- moving down to get to the ladyam costs 8 frames
ItemGet(2)
MultiMove("up", 4, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 5, 0)
MoveFast("left", true, 0)
ScreenTransition("large", 0)
end
local function U_LeafTheTreeAlone()
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MultiMove("right", 10, 0)
ScreenTransition("small", 0)
MultiMove("right", 20, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
ScreenTransition("small", 0) -- path taken loses 6 terrain counter
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0) -- a better tree (at 4,15-16) would save 8 frames
MoveFast("up", true, 0)
ItemGet(1)
MultiMove("down", 5, 0)
ScreenTransition("small", 0)
MultiMove("left", 4, 0)
MoveFast("down", false, 0)
MoveFast("clear", false, 0)
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MultiMove("down", 3, 0)
MultiMove("clear", 4, 0)
MoveFast("down", false, 0)
MultiMove("clear", 3, 0)
MultiMove("left", 6, 0)
MultiMove("down", 2, 0)
MultiMove("left", 4, 0)
MoveFast("down", false, 0)
MultiMove("left", 11, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MultiMove("down", 2, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MultiMove("clear", 3, 0)
MoveFast("down", false, 0)
MultiMove("clear", 3, 0)
MoveFast("left", false, 0)
MultiMove("clear", 3, 0)
MoveFast("left", false, 0)
MultiMove("clear", 2, 0)
MoveFast("down", false, 0)
MultiMove("clear", 3, 0)
MoveFast("down", false, 0)
MultiMove("clear", 5, 0)
MultiMove("left", 3, 0)
MoveFast("left", true, 0)
ScreenTransition("large", 0)
end
local function U_Eel_aborateOnTheGrind()
MultiMove("down", 2, 0)
MoveFast("down", true, 2)
MoveFast("up", false, 0)
MoveFast("down", true, 2)
MoveFast("up", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("clear", false, 0)
MoveFast("down", true, 2)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- eel 1
MultiMove("down", 4, 0)
ScreenTransition("small", 0)
MultiMove("down", 4, 0)
MoveFast("right", true, 2)
MoveFast("down", false, 0)
MoveFast("right", true, 2)
MoveFast("down", false, 0)
MoveFast("right", true, 2)
MoveFast("clear", false, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- 2
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("up", false, 0)
MoveFast("down", true, 2)
MoveFast("up", false, 0)
MoveFast("down", true, 2)
MoveFast("up", false, 0)
MoveFast("down", true, 1) -- 3
MultiMove("right", 2, 0)
ScreenTransition("small", 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("clear", false, 0)
MoveFast("up", false, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- 4
MultiMove("up", 3, 0)
MultiMove("clear", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 5
MoveFast("up", false, 0)
MultiMove("clear", 4, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 6
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MultiMove("up", 2, 0)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("left", true, 1) -- 7
MoveFast("clear", false, 0)
MultiMove("down", 4, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 8
MultiMove("right", 2, 0)
ScreenTransition("small", 0)
MoveFast("clear", false, 0)
MoveFast("up", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 9
MultiMove("up", 5, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- 10
MultiMove("up", 2, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("left", true, 1) -- 11
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("clear", false, 0)
MultiMove("down", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 12
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MoveFast("clear", false, 0)
MoveFast("up", false, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("left", false, 0)
MoveFast("up", true, 1) -- 13
MultiMove("up", 2, 0)
MultiMove("clear", 4, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 14
MultiMove("up", 2, 0)
ScreenTransition("small", 0)
MoveFast("up", false, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 15
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MultiMove("up", 2, 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- 16
MoveFast("down", false, 0)
MoveFast("right", false, 0)
ScreenTransition("small", 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 17
MultiMove("down", 3, 0)
ScreenTransition("small", 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 18
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("up", false, 0)
MultiMove("clear", 3, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 19
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("down", false, 0)
MoveFast("up", true, 1) -- 20
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MultiMove("clear", 3, 0)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("left", true, 1) -- 21
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("left", true, 1) -- 22
MultiMove("right", 3, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- 23
MoveFast("left", false, 0)
MultiMove("down", 5, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 24
MultiMove("up", 6, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 25
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 26
MultiMove("down", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 27
MultiMove("up", 6, 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 28
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MultiMove("clear", 3, 0)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("left", true, 1) -- 29
MoveFast("left", false, 0)
MultiMove("clear", 3, 0)
MoveFast("down", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 30
MultiMove("up", 3, 0)
MoveFast("left", false, 0)
MultiMove("clear", 3, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- 31
MoveFast("right", false, 0)
MultiMove("clear", 5, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 32
MoveFast("up", false, 0)
MultiMove("clear", 3, 0)
MoveFast("left", true, 2)
MoveFast("left", true, 2)
MoveFast("left", true, 1) -- 33
MoveFast("left", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- 34
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MoveFast("down", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 35
MultiMove("left", 2, 0)
MultiMove("up", 2, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- 36
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("up", false, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 37
MultiMove("down", 2, 0)
MultiMove("clear", 3, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 38
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
ScreenTransition("small", 0)
MoveFast("up", true, 2)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 39
MoveFast("right", false, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MultiMove("down", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 40
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", false, 0)
MoveFast("left", false, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 41
MoveFast("up", false, 0)
MoveFast("clear", false, 0)
MoveFast("left", false, 0)
ScreenTransition("small", 0)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 42
MultiMove("left", 3, 0)
MoveFast("up", false, 0)
MoveFast("down", false, 0)
MoveFast("up", false, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- 43
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 44
end
local function U_WizardsCantRideWaves()
MoveFast("right", false, 0)
ScreenTransition("small", 0)
MultiMove("up", 3, 0)
ScreenTransition("small", 0)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- 45
MultiMove("up", 4, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 46
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MultiMove("right", 6, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 2)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- 47
MultiMove("right", 4, 0)
MoveFast("up", false, 0)
MultiMove("right", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- 48
MultiMove("right", 2, 0)
ScreenTransition("small", 0)
MultiMove("right", 2, 0)
PushButton("B")
MoveFast("down", false, 1)
MoveFast("down", false, 0)
PushButton("B")
MoveFast("down", false, 1)
MoveFast("down", false, 0)
PushButton("B")
MoveFast("down", false, 1)
MoveFast("down", false, 0)
PushButton("B")
MoveFast("down", false, 1)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MultiMove("clear", 3, 0)
MoveFast("right", false, 0)
MoveFast("left", false, 0)
MoveFast("B", true, 0) -- and A
AdvanceFrames(856) -- fairy3 get and fairy ride
end
local function U_GrindingMakesMeHyper()
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("up", 5, 0)
MoveFast("left", true, 1) -- hyper 1
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("up", false, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 1) -- slime to get hypers
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MoveFast("left", true, 1) -- 2
MoveFast("left", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- 3
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- 4
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MultiMove("left", 3, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- 5
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MultiMove("right", 2, 0)
MoveFast("clear", false, 0)
MoveFast("left", true, 1) -- 6
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- 7
MoveFast("right", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- 8
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("clear", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- 9
MoveFast("right", false, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MultiMove("right", 3, 0)
MoveFast("left", true, 1) -- 10
MoveFast("right", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- 11
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MoveFast("right", true, 1) -- 12
MultiMove("up", 3, 0)
MoveFast("left", false, 0)
MultiMove("down", 3, 0)
MoveFast("clear", false, 0)
MoveFast("left", true, 1) -- 13
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MultiMove("right", 2, 0)
MoveFast("left", true, 1) -- 14
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("left", false, 0)
MoveFast("clear", false, 0)
MoveFast("left", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- 15
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- 16
MoveFast("clear", false, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MultiMove("right", 3, 0)
MoveFast("clear", false, 0)
MoveFast("left", false, 0)
MoveFast("left", true, 1) -- 17
MoveFast("up", false, 0)
ScreenTransition("small", 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- 18
MultiMove("right", 2, 0)
MoveFast("left", false, 0)
MoveFast("left", true, 1) -- 19
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MoveFast("down", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- 20
MultiMove("right", 3, 0)
MoveFast("clear", false, 0)
MultiMove("left", 2, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 0)
MultiMove("down", 4, 0)
PushButton("B")
MoveFast("down", false, 1)
MoveFast("down", false, 0)
PushButton("B")
MoveFast("right", false, 1)
PushButton("B")
MoveFast("right", true, 0) -- and A
AdvanceFrames(151) -- FIRE!!!
MoveFast("right", false, 0)
MoveFast("right", true, 0)
ScreenTransition("large", 0)
end
local function U_CommitAGraveCrime()
MoveFast("down", false, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- misc 1
MultiMove("down", 8, 0)
MultiMove("right", 6, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 6, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 2, 0)
ScreenTransition("large", 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("down", true, 2)
MoveFast("down", true, 1) -- misc 2
MultiMove("down", 12, 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
ScreenTransition("small", 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MultiMove("left", 2, 0)
MultiMove("down", 15, 0)
MultiMove("right", 3, 0)
MultiMove("up", 10, 0)
MultiMove("right", 3, 0)
MultiMove("down", 5, 0)
MultiMove("right", 2, 0)
MoveFast("up", true, 0)
ItemGet(0)
MultiMove("up", 2, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- misc 3
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MultiMove("left", 4, 0)
MultiMove("down", 10, 0)
MultiMove("left", 3, 0)
MultiMove("up", 13, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 2)
MoveFast("up", false, 0)
MoveFast("right", true, 1) --misc 4
MultiMove("up", 5, 0)
ScreenTransition("small", 1)
MultiMove("up", 2, 0)
MoveFast("right", true, 2)
MoveFast("right", true, 1) -- misc 5
MultiMove("left", 4, 0)
MultiMove("up", 14, 0)
MultiMove("left", 2, 0)
ScreenTransition("large", 0)
MoveFast("left", false, 0)
MultiMove("up", 3, 0)
MultiMove("left", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 6, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 6, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 6, 0)
MultiMove("left", 6, 0)
MoveFast("up", true, 2)
MoveFast("up", true, 1) -- misc 6
MultiMove("up", 8, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 2, 0)
ScreenTransition("large", 0)
end
local function U_MakeTheHyperGrindDragOn()
MultiMove("right", 7, {0, 4, 4, 4, 4, 4, 4}) -- dragon 1-6
MultiMove("left", 6, 0)
MultiMove("up", 6, 0)
MoveFast("left", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 1)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- slime
MultiMove("up", 3, 0)
MoveFast("left", false, 0)
MultiMove("down", 2, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 1
MoveFast("up", false, 0)
MultiMove("left", 3, 0)
MultiMove("down", 2, 0)
MoveFast("right", true, 1) -- hyper 2
MultiMove("right", 7, 0)
MoveFast("left", false, 0)
MoveFast("clear", false, 0)
MoveFast("left", true, 1) -- hyper 3
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 4
MoveFast("clear", false, 0)
MultiMove("left", 3, 0)
MoveFast("left", true, 1) -- hyper 5
MoveFast("down", false, 0)
ScreenTransition("small", 1)
MultiMove("down", 4, {0, 0, 4, 4}) -- dragon 7-8
MultiMove("up", 3, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 6
MoveFast("left", false, 0)
MultiMove("right", 4, 0)
MoveFast("right", true, 1) -- hyper 7
MultiMove("left", 6, 0)
MoveFast("down", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 8
MoveFast("up", false, 0)
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 9
MultiMove("right", 4, 0)
MultiMove("left", 2, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 10
MoveFast("left", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 1)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 11
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 12
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- hyper 13
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("down", false, 0)
MoveFast("down", true, 1) -- hyper 14
MultiMove("left", 4, 0)
MultiMove("down", 2, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 1) -- hyper 15
MultiMove("right", 4, 0)
MoveFast("left", true, 1) -- hyper 16
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MultiMove("down", 3, 0)
MoveFast("left", true, 1) -- hyper 17
MultiMove("up", 2, 0)
MultiMove("right", 2, 0)
MultiMove("down", 2, 0)
MoveFast("left", false, 0)
MoveFast("right", true, 1) -- hyper 18
MultiMove("up", 3, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MoveFast("right", true, 1) -- hyper 19
MultiMove("right", 3, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("left", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 20
MoveFast("up", false, 0)
MultiMove("left", 2, 0)
MoveFast("down", false, 0)
MoveFast("up", false, 0)
MoveFast("right", true, 1) -- hyper 21
MultiMove("left", 4, 0)
MultiMove("right", 3, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 22
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MultiMove("left", 3, 0)
MoveFast("left", true, 1) -- hyper 23
MultiMove("up", 4, 0)
MoveFast("right", false, 0)
MultiMove("down", 4, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 24
MultiMove("up", 2, 0)
MultiMove("left", 3, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 25
MoveFast("up", false, 0)
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MultiMove("left", 2, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- hyper 26
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 27
MultiMove("left", 6, 0)
MoveFast("down", false, 0)
MultiMove("right", 3, 0)
MultiMove("up", 2, 0)
MoveFast("right", true, 1) -- hyper 28
MultiMove("right", 2, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MultiMove("left", 2, 0)
MoveFast("left", true, 1) -- hyper 29
MultiMove("right", 3, 0)
MoveFast("clear", false, 0)
MultiMove("left", 3, 0)
MoveFast("left", true, 1) -- hyper 30
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("left", true, 1) -- hyper 31
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MultiMove("down", 4, 0)
MultiMove("up", 2, 0)
MoveFast("left", true, 1) -- hyper 32
MultiMove("down", 2, 0)
MultiMove("right", 5, 0)
MoveFast("left", false, 0)
MoveFast("left", true, 1) -- hyper 33
MultiMove("left", 3, 0)
MoveFast("up", false, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 34
MultiMove("up", 3, 0)
MultiMove("down", 4, 0)
MoveFast("left", true, 1) -- hyper 35
MultiMove("right", 4, 0)
MultiMove("left", 2, 0)
MoveFast("left", true, 1) -- hyper 36
MultiMove("left", 4, 0)
MultiMove("up", 2, 0)
MultiMove("right", 2, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- hyper 37
MultiMove("right", 3, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MultiMove("left", 2, 0)
MoveFast("left", true, 1) -- hyper 38
MultiMove("right", 2, 0)
MultiMove("up", 2, 0)
MultiMove("left", 3, 0)
MoveFast("left", true, 1) -- hyper 39
MoveFast("clear", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 40
MultiMove("up", 3, 0)
MultiMove("left", 2, 0)
MoveFast("down", false, 0)
MoveFast("down", true, 1) -- hyper 41
MoveFast("up", false, 0)
MultiMove("right", 2, 0)
MoveFast("down", true, 1) -- hyper 42
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("down", 3, 0)
MultiMove("left", 2, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 1) -- hyper 43
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 44
MultiMove("left", 4, 0)
MoveFast("up", false, 0)
MultiMove("right", 6, 0)
MoveFast("down", true, 1) -- hyper 45
MoveFast("left", false, 0)
MultiMove("down", 2, 0)
MultiMove("right", 2, 0)
MoveFast("clear", false, 0)
MoveFast("left", false, 0)
MoveFast("left", true, 1) -- hyper 46
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MultiMove("right", 3, 0)
MoveFast("down", false, 0)
MoveFast("clear", false, 0)
MoveFast("left", true, 1) -- hyper 47
MultiMove("left", 2, 0)
MultiMove("up", 2, 0)
MultiMove("right", 2, 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- hyper 48
MultiMove("down", 2, 0)
MultiMove("left", 5, 0)
MultiMove("up", 2, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 1) -- hyper 49
MultiMove("right", 2, 0)
MultiMove("down", 2, 0)
MoveFast("left", true, 1) -- hyper 50
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MultiMove("down", 2, 0)
MoveFast("left", true, 1) -- hyper 51
MultiMove("up", 3, 0)
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MoveFast("left", true, 1) -- hyper 52
MultiMove("left", 3, 0)
MultiMove("right", 3, 0)
MoveFast("down", false, 0)
MoveFast("right", true, 1) -- hyper 53
MultiMove("left", 6, 0)
MoveFast("down", false, 0)
MoveFast("clear", false, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 1) -- hyper 54
MoveFast("clear", false, 0)
MoveFast("left", false, 0)
MoveFast("clear", false, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 1)
MultiMove("down", 3, 0)
MoveFast("up", true, 1) -- hyper 55
MultiMove("up", 2, 0)
MultiMove("down", 9, {0, 0, 4, 4, 4, 4, 4, 4, 4}) -- dragon 9-15
ItemGet(1) -- medicine
MoveFast("up", false, 0)
MoveFast("left", true, 1) -- hyper 56
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("up", true, 1) -- hyper 57
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 58
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MoveFast("up", false, 0)
MoveFast("right", true, 1) -- hyper 59
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("up", true, 1) -- hyper 60
MoveFast("right", false, 0)
MultiMove("up", 2, 0)
MultiMove("right", 5, 0)
MultiMove("left", 2, 0)
MoveFast("left", true, 1) -- hyper 61
MultiMove("right", 4, 0)
MoveFast("left", true, 1) -- hyper 62
MultiMove("left", 4, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 63
MoveFast("up", false, 0)
ScreenTransition("small", 1)
MultiMove("up", 2, 0)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MoveFast("up", false, 0)
MoveFast("left", true, 1) -- hyper 64
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MultiMove("left", 5, 0)
MoveFast("right", true, 1) -- hyper 65
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 1) -- hyper 66
MultiMove("left", 3, 0)
MoveFast("up", false, 0)
MultiMove("right", 4, 0)
MoveFast("left", false, 0)
MoveFast("left", true, 1) -- hyper 67
MultiMove("right", 3, 0)
MultiMove("down", 2, 0)
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MoveFast("down", false, 0)
MoveFast("right", true, 1) -- hyper 68
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MultiMove("left", 3, 0)
MoveFast("left", true, 1) -- hyper 69
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("down", true, 1) -- hyper 70
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("left", true, 1) -- hyper 71
MultiMove("left", 3, 0)
MultiMove("right", 2, 0)
MoveFast("right", true, 1) -- hyper 72
MultiMove("up", 3, 0)
MultiMove("down", 4, 0)
MoveFast("right", true, 1) -- hyper 73
MultiMove("right", 2, 0)
MoveFast("left", false, 0)
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MoveFast("left", true, 1) -- hyper 74
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", true, 1) -- hyper 75
MultiMove("right", 2, 0)
MoveFast("up", false, 0)
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- hyper 76
MultiMove("right", 2, 0)
MultiMove("down", 2, 0)
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MoveFast("right", true, 1) -- hyper 77
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MultiMove("left", 2, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("right", true, 1) -- hyper 78
MultiMove("right", 2, 0)
MultiMove("left", 2, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MultiMove("down", 2, 0)
MoveFast("right", true, 1) -- hyper 79
MoveFast("left", false, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("left", true, 1) -- hyper 80
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MoveFast("right", false, 0)
MoveFast("left", true, 1) -- hyper 81
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("right", false, 0)
MoveFast("down", true, 1) -- hyper 82
MultiMove("left", 4, 0)
MultiMove("right", 5, 0)
MoveFast("left", false, 0)
MoveFast("left", true, 1) -- hyper 83
MultiMove("right", 3, 0)
MoveFast("down", false, 0)
MultiMove("left", 3, 0)
MoveFast("clear", false, 0)
MoveFast("right", true, 1) -- hyper 84
MoveFast("down", false, 0)
MultiMove("right", 3, 0)
MoveFast("clear", false, 0)
MultiMove("left", 3, 0)
MoveFast("left", true, 1) -- hyper 85
MultiMove("left", 3, 0)
MultiMove("right", 4, 0)
MoveFast("right", true, 1) -- hyper 86
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("clear", false, 0)
MoveFast("down", true, 1) -- hyper 87
MultiMove("down", 2, 0)
MultiMove("left", 2, 0)
MultiMove("up", 3, 0)
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- hyper 88
MultiMove("left", 4, 0)
MultiMove("right", 2, 0)
MultiMove("down", 2, 0)
MoveFast("left", true, 1) -- hyper 89
MultiMove("left", 2, 0)
MoveFast("up", false, 0)
MultiMove("right", 3, 0)
MoveFast("down", false, 0)
MoveFast("left", true, 1) -- hyper 90
end
local function U_YellowRubyApparently()
MultiMove("left", 2, 0)
MultiMove("up", 2, 0)
MultiMove("right", 6, 0)
MultiMove("down", 2, 0)
MultiMove("right", 2, 0)
MultiMove("left", 6, 0)
MultiMove("up", 4, 0)
MoveFast("right", false, 0)
MultiMove("down", 4, 0)
MoveFast("right", false, 0)
MultiMove("up", 4, 0)
MoveFast("left", false, 0)
MultiMove("down", 3, 0)
MultiMove("up", 6, 0)
MultiMove("right", 5, 0)
MoveFast("down", false, 0)
MultiMove("right", 4, 0)
MoveFast("up", false, 0)
MultiMove("right", 5, 0)
ScreenTransition("small", 1)
MultiMove("right", 5, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
ScreenTransition("small", 1)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
ItemGet(3)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MultiMove("up", 4, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
ScreenTransition("small", 1)
MultiMove("up", 4, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MultiMove("left", 8, 0)
ScreenTransition("small", 1)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MultiMove("left", 9, 0)
MoveFast("up", false, 0)
MultiMove("left", 3, 0)
MultiMove("down", 2, 0)
end
local function U_ToVaralysAndBeyond()
MultiMove("down", 5, 0)
MoveFast("right", false, 0)
MultiMove("up", 4, 0)
MultiMove("left", 2, 0)
MultiMove("down", 4, 0)
MultiMove("right", 5, 0)
MoveFast("down", false, 0)
ScreenTransition("small", 1)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 8, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MultiMove("left", 2, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MultiMove("left", 2, 0)
MultiMove("right", 2, 0)
MultiMove("down", 4, 0)
MultiMove("right", 2, 0)
MultiMove("down", 2, 0)
MultiMove("up", 4, 0)
MoveFast("right", false, 0)
MoveFast("right", true, 0) -- to underground
ScreenTransition("small", 39)
MoveFast("down", false, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("left", 3, 0)
MultiMove("down", 9, 0)
MultiMove("right", 6, 0)
MultiMove("up", 6, 0)
MultiMove("right", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 3, 0)
MultiMove("down", 3, 0)
MultiMove("right", 6, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MultiMove("up", 6, 0)
MultiMove("left", 3, 0)
MultiMove("up", 3, 0)
MultiMove("right", 6, 0)
MultiMove("down", 3, 0)
MultiMove("right", 2, 0)
ScreenTransition("large", 0)
end
local function U_NoSmokeBreakDuringVaralys()
MultiMove("down", 6, {4,4,4,4,4,4}) -- Varalys 1-6
MoveFast("down", true, 4) -- Varalys 7
AdvanceFrames(326) -- HP Refill
MultiMove("down", 6, {4,4,4,4,4,4}) -- Varalys 8-13
MoveFast("up", false, 0)
MultiMove("right", 2, 0)
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MultiMove("right", 2, 0)
MultiMove("up", 2, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MultiMove("right", 2, 0)
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MultiMove("up", 3, 0)
MultiMove("left", 3, 0)
MoveFast("down", false, 0)
MultiMove("right", 3, 0)
MoveFast("up", false, 0)
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 6, 0)
MultiMove("right", 7, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MultiMove("right", 2, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("left", 7, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 3, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MultiMove("up", 3, 0)
MultiMove("right", 4, 0)
MultiMove("down", 5, 0)
MultiMove("left", 2, 0)
MultiMove("down", 2, 0)
MultiMove("left", 6, 0)
MoveFast("clear", false, 0)
MultiMove("up", 7, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MultiMove("right", 2, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MultiMove("right", 3, 0)
MultiMove("down", 6, 0)
MultiMove("right", 5, 0)
MoveFast("down", false, 0)
MoveFast("left", false, 0)
MultiMove("up", 3, 0)
MoveFast("right", false, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("right", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MoveFast("left", false, 0)
MoveFast("up", false, 0)
MultiMove("right", 6, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MoveFast("down", false, 0)
MoveFast("right", false, 0)
MultiMove("down", 2, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MultiMove("left", 2, 0)
MultiMove("up", 2, 0)
MoveFast("right", false, 0)
MultiMove("up", 2, 0)
MultiMove("left", 6, 0)
MultiMove("up", 2, 0)
MoveFast("left", false, 0)
MoveFast("down", false, 0)
MultiMove("left", 4, 0)
end
-----------------------------------------------------------------------------------------------
do_drawing = false
do_remote_control = true
Is_J_Version = false
-----MAIN-----
if(do_drawing) then
gui.register(main_draw) end
if(do_remote_control == true)
then
if(Is_J_Version == false)
then
U_StartYourEngine(true)
U_ToTheNotBatCave()
U_TakeAWispOfLuck()
U_YouGetSomeErAPot()
U_YouGetAQuickKey()
U_GrabTheFamilyJewels()
U_ItsAFair_y_Tree()
U_TheShieldAlwaysRingsTwice()
U_LeafTheTreeAlone()
U_Eel_aborateOnTheGrind()
U_WizardsCantRideWaves()
U_GrindingMakesMeHyper()
U_CommitAGraveCrime()
U_MakeTheHyperGrindDragOn()
U_YellowRubyApparently()
U_ToVaralysAndBeyond()
U_NoSmokeBreakDuringVaralys()
else
J_StartYourEngine(true)
J_ToTheNotBatCave()
J_TakeAWispOfLuck()
J_YouGetSomeErAPot()
J_YouGetAQuickKey()
J_LeafTheTreeAlone()
J_DoesItRingABell()
J_GrabTheFamilyJewels()
J_WizardsCantRideWaves()
J_CommitAGraveCrime()
J_FightDoesNotDragOn()
J_LubySlippers()
J_NoBossMusicForYou()
end
emu.speedmode("normal")
emu.pause()
end
--NORMAL LOOP
while (true) do
FCEU.frameadvance() end