Skip to content

Instantly share code, notes, and snippets.

@Prof9
Created October 18, 2015 01:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Prof9/c27d92ff18eaaeb2703e to your computer and use it in GitHub Desktop.
Save Prof9/c27d92ff18eaaeb2703e to your computer and use it in GitHub Desktop.
MMBN4 Lua tournament matches viewer
local rng = -1;
function rngNext()
rng = rng + 1;
return rng;
end
function getTourneyBoard()
local tourneyNum = memory.readbyte(0x0200ACC5);
local boardPtr = 0x02001460 + tourneyNum * 0x20;
if (memory.readbyte(boardPtr) == 0xFF) then
return 0;
else
return boardPtr;
end
end
function getNavi(navi)
if (navi == 0) then
return "GutsMan";
end
if (navi == 1) then
return "FireMan";
end
if (navi == 2) then
return "NumberMan";
end
if (navi == 3) then
return "AquaMan";
end
if (navi == 4) then
return "Roll";
end
if (navi == 5) then
return "WindMan";
end
if (navi == 6) then
return "MetalMan";
end
if (navi == 7) then
return "WoodMan";
end
if (navi == 8) then
return "ThunderMan";
end
if (navi == 9) then
return "SearchMan";
end
if (navi == 10) then
return "ProtoMan";
end
if (navi == 11) then
return "JunkMan";
end
if (navi == 12) then
return "SparkMan";
end
if (navi == 13) then
return "TopMan";
end
if (navi == 14) then
return "ColdMan";
end
if (navi == 15) then
return "BurnerMan";
end
if (navi == 16) then
return "VideoMan";
end
if (navi == 17) then
return "KendoMan";
end
if (navi == 18) then
return "18";
end
if (navi == 19) then
return "19";
end
if (navi == 20) then
return "Ponta";
end
if (navi == 21) then
return "Tetsu";
end
if (navi == 22) then
return "Ponta";
end
if (navi == 23) then
return "Tetsu";
end
if (navi == 24) then
return "Flave";
end
if (navi == 25) then
return "Riki";
end
if (navi == 26) then
return "Flave";
end
if (navi == 27) then
return "Paulie";
end
if (navi == 28) then
return "Jack Bomber";
end
if (navi == 29) then
return "Paulie";
end
if (navi == 30) then
return "MegaMan";
end
return "Random";
end
function matchResult(left, right)
if left["navi"] == 30 then
return left;
elseif right["navi"] == 30 then
return right;
end
if left["priority"] < right["priority"] then
return left;
elseif right["priority"] < left["priority"] then
return right;
end
if left["navi"] < 20 and left["navi"] >= 20 then
return left;
elseif right["navi"] < 20 and left["navi"] >= 20 then
return right;
end
if rngNext() % 2 == 1 then
return left;
else
return right;
end
end
while true do
local board = getTourneyBoard();
if (board ~= 0) then
local navis = {};
local priorities = {};
for i = 1, 8, 1 do
navis[i] = {};
navis[i]["navi"] = memory.readbyte(board + 4 * (i - 1));
navis[i]["priority"] = memory.readbyte(board + 4 * (i - 1) + 2);
gui.text(0, 8 * (i - 1), getNavi(navis[i]["navi"]));
end
local round2 = {};
for i = 1, 4, 1 do
local left = navis[1 + (i - 1) * 2];
local right = navis[2 + (i - 1) * 2];
round2[i] = matchResult(left, right);
gui.text(48, 4 + 16 * (i - 1), getNavi(round2[i]["navi"]));
end
local round3 = {};
for i = 1, 2, 1 do
local left = round2[1 + (i - 1) * 2];
local right = round2[2 + (i - 1) * 2];
round3[i] = matchResult(left, right);
gui.text(96, 12 + 32 * (i - 1), getNavi(round3[i]["navi"]));
end
end
vba.frameadvance();
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment