Language: lua
memory.usememorydomain("EWRAM")
gui.DrawNew("native")
client.setwindowsize(2)
client.SetGameExtraPadding(0, 0, 0, 20)
local peppermints = 0x3DE9
local bottles = 0x3E11
local brassHeart = 0x3E13
local events = 0x3EA2
local candyBox = 0x4730
local keyItems = 0x4731
local toys = 0x4732
local toys2 = 0x4733
local waterguns = 0x4734
local gear = 0x4735
local characters = {'DJ','Chowder','Jenny'}
local water = {0x37D0,0x37D2,0x37D4}
local water2 = {0x3DF6,0x3DF8,0x3DFA}
function addFlags(mem,pos,value)
if bit.check(mem,pos) then return value
else return 0 end
end
function percent()
local percent = 0
percent = memory.read_s8(peppermints) + percent
percent = addFlags(memory.read_s8(bottles),0,1) + percent
percent = addFlags(memory.read_s8(bottles),1,2) + percent
percent = memory.read_s8(brassHeart) * 2 + percent
percent = addFlags(memory.read_s8(candyBox),1,1) + percent
percent = addFlags(memory.read_s8(keyItems),3,1) + percent
percent = addFlags(memory.read_s8(keyItems),4,1) + percent
percent = addFlags(memory.read_s8(keyItems),5,3) + percent
percent = addFlags(memory.read_s8(keyItems),6,3) + percent
percent = addFlags(memory.read_s8(keyItems),7,3) + percent
percent = addFlags(memory.read_s8(toys),2,2) + percent
percent = addFlags(memory.read_s8(toys),3,2) + percent
percent = addFlags(memory.read_s8(toys),4,2) + percent
percent = addFlags(memory.read_s8(toys),5,2) + percent
percent = addFlags(memory.read_s8(toys),6,2) + percent
percent = addFlags(memory.read_s8(toys),7,2) + percent
percent = addFlags(memory.read_s8(toys2),0,2) + percent
percent = addFlags(memory.read_s8(toys2),1,2) + percent
percent = addFlags(memory.read_s8(toys2),2,2) + percent
percent = addFlags(memory.read_s8(toys2),3,2) + percent
percent = addFlags(memory.read_s8(toys2),4,1) + percent
percent = addFlags(memory.read_s8(toys2),5,0) + percent
percent = addFlags(memory.read_s8(toys2),7,1) + percent
percent = addFlags(memory.read_s8(waterguns),0,2) + percent
percent = addFlags(memory.read_s8(waterguns),1,2) + percent
percent = addFlags(memory.read_s8(waterguns),2,2) + percent
percent = addFlags(memory.read_s8(waterguns),3,2) + percent
percent = addFlags(memory.read_s8(waterguns),4,2) + percent
percent = addFlags(memory.read_s8(waterguns),5,2) + percent
percent = addFlags(memory.read_s8(waterguns),6,2) + percent
percent = addFlags(memory.read_s8(waterguns),7,2) + percent
percent = addFlags(memory.read_s8(gear),0,1) + percent
percent = addFlags(memory.read_s8(gear),1,1) + percent
percent = addFlags(memory.read_s8(gear),2,1) + percent
percent = addFlags(memory.read_s8(gear),3,3) + percent
percent = addFlags(memory.read_s8(gear),4,1) + percent
percent = addFlags(memory.read_s8(gear),5,1) + percent
percent = addFlags(memory.read_s8(gear),6,3) + percent
percent = addFlags(memory.read_s8(gear),7,1) + percent
percent = addFlags(memory.read_s8(gear+1),0,3) + percent
if memory.read_s8(events) > 14 then percent = percent + 1 end
if memory.read_s8(events) > 18 then percent = percent + 1 end
if memory.read_s8(events) > 24 then percent = percent + 1 end
if memory.read_s8(events) > 30 then percent = percent + 2 end
if memory.read_s8(events) > 32 then percent = percent + 1 end
if memory.read_s8(events) > 37 then percent = percent + 2 end
if memory.read_s8(events) > 41 then percent = percent + 1 end
if memory.read_s8(events) > 45 then percent = percent + 1 end
if memory.read_s8(events) > 50 then percent = percent + 2 end
if memory.read_s8(events) > 54 then percent = percent + 3 end
if memory.read_s8(events) > 57 then percent = percent + 1 end
if memory.read_s8(events) > 62 then percent = percent + 1 end
gui.text(0, client.screenheight()-42, 'Percent: '..percent)
end
function miscflags()
local y = client.screenheight()-10
gui.text(0, y-18, 'Flags: ')
if bit.check(memory.read_s8(candyBox),7) then gui.drawRectangle(0, y, 4, 10, 'WHITE', 'WHITE') end
if bit.check(memory.read_s8(candyBox),2) then gui.drawRectangle(5, y, 4, 10, 'RED', 'RED') end
if bit.check(memory.read_s8(candyBox),3) then gui.drawRectangle(10, y, 4, 10, 'GREEN', 'GREEN') end
if bit.check(memory.read_s8(candyBox),6) then gui.drawRectangle(15, y, 4, 10, 'BLUE', 'BLUE') end
if bit.check(memory.read_s8(keyItems),0) then gui.drawRectangle(20, y, 4, 10, 'AQUA', 'AQUA') end
if bit.check(memory.read_s8(gear+1),1) then gui.drawRectangle(25, y, 4, 10, 'DARKCYAN', 'DARKCYAN') end
if bit.check(memory.read_s8(keyItems),2) then gui.drawRectangle(30, y, 4, 10, 'DARKKHAKI', 'DARKKHAKI') end
end
function displaypos()
local x = (memory.read_u32_le(0xF9D8)+30720)/65536.0
local y = (memory.read_u32_le(0xF9DC)+20480)/65536.0
gui.text(0, 60, 'X: '..string.format('%.5f',x) ..' Y: '..string.format('%.5f',y))
local char = memory.read_s8(0x3DE8)
if char < 3 then
local supply = memory.read_s16_le(water[char+1])
local capacity = memory.read_s16_le(water2[char+1])
gui.text(0, 75, characters[char+1]..'('..supply..'/'..capacity..')')
end
end
while true do
percent()
miscflags()
displaypos()
emu.frameadvance()
end
Not complete, but posting just in case.
Changes:
1. Added more known values
2. Add a quick way to check if the dialogue for obtaining certain consumables has been shown
3. Changed the consumables to a rectangle flag to save space.
4. Added checking if a toy/water bottle has been obtained as well along with positions
5. Added water, characters, more comments, and rearranged the location of displays