This repository has been archived on 2022-06-22. You can view files and clone it, but cannot push or open issues or pull requests.
Kosmos/Modules/edizon/EdiZon/editor/scripts/smash.lua
2020-02-26 19:53:54 -05:00

158 lines
No EOL
4.1 KiB
Lua

-- smash --
saveFileBuffer = edizon.getSaveFileBuffer()
function getValueFromSaveFile()
strArgs = edizon.getStrArgs()
intArgs = edizon.getIntArgs()
startingAddress = tonumber(strArgs[1], 16)
endingAddress= tonumber(strArgs[2], 16)
addressSize = intArgs[1]
valueSize = intArgs[2]
value = 0
if startingAddress ~= 0 then
if strArgs[1] == "53FF60" then
value = 1
for i = 0, endingAddress - startingAddress - 1, 16 do
value = value & saveFileBuffer[startingAddress+i+1] & saveFileBuffer[startingAddress+i+1+4] & saveFileBuffer[startingAddress+i+1+8]
end
end
if strArgs[1] == "426C77" then
value = 255
for i = 0, endingAddress - startingAddress - 1,28 do
value = value & saveFileBuffer[startingAddress+i+1]
end
end
if strArgs[1] == "426C76" then
for k=0, endingAddress - startingAddress - 1, 28 do
for i = 0, valueSize - 1 do
value = value | (saveFileBuffer[(startingAddress+k) + i + 1] << i * 8)
end
value = value & 65293
end
end
if strArgs[1] == "555BB8" then
value = 255
for i = 0, endingAddress- startingAddress - 1 do
value = value & saveFileBuffer[startingAddress+i+1]
end
end
if strArgs[1] == "00D0" then
value = 255
for i = 0, endingAddress - startingAddress - 1 do
value = value & saveFileBuffer[startingAddress+i+1]
end
end
if strArgs[1] == "434750" then
for k=0, endingAddress- startingAddress - 1, 52 do
for i = 0, valueSize - 1 do
value = value | (saveFileBuffer[(startingAddress+k) + i + 17] << i * 8)
end
value = value & 65294
end
end
else
for i = 0, valueSize - 1 do
value = value | (saveFileBuffer[endingAddress+ i + 1] << i * 8)
end
end
return value
end
function setValueInSaveFile(value)
strArgs = edizon.getStrArgs()
intArgs = edizon.getIntArgs()
startingAddress = tonumber(strArgs[1], 16)
endingAddress = tonumber(strArgs[2], 16)
addressSize = intArgs[1]
valueSize = intArgs[2]
if startingAddress ~= 0 then
if strArgs[1] == "53FF60" then
for i = 0, endingAddress - startingAddress - 1, 16 do
saveFileBuffer[startingAddress+i+1] = value
saveFileBuffer[startingAddress+i+1+4] = value
saveFileBuffer[startingAddress+i+1+8] = value
end
end
if strArgs[1] == "426C77" then
for i = 0, endingAddress - startingAddress - 1,28 do
saveFileBuffer[startingAddress + i + 1] = value
end
end
if strArgs[1] == "426C76" then
for i = 0, endingAddress - startingAddress - 1,28 do
for m = 0, valueSize - 1 do
saveFileBuffer[startingAddress + i + m + 1] = (value & (0xFF << m * 8)) >> (m * 8)
end
end
end
if strArgs[1] == "555BB8" then
for i = 0, endingAddress - startingAddress - 1 do
saveFileBuffer[startingAddress + i + 1] = value
end
end
if strArgs[1] == "00D0" then
for i = 0, endingAddress - startingAddress - 1 do
saveFileBuffer[startingAddress + i + 1] = value
end
end
if strArgs[1] == "434750" then
if value == 0 then
for i = 0, endingAddress - startingAddress - 1,52 do
for m = 0, valueSize - 1 do
saveFileBuffer[startingAddress + i + m + 1] = (4294967295 & (0xFF << m * 8)) >> (m * 8)
end
for m = 0, valueSize - 1 do
saveFileBuffer[startingAddress + i + m + 11] = (65535 & (0xFF << m * 8)) >> (m * 8)
end
for m = 0, valueSize - 1 do
saveFileBuffer[startingAddress + i + m + 17] = (14 & (0xFF << m * 8)) >> (m * 8)
end
end
else
spirit=1
for i = 0, endingAddress - startingAddress - 1,52 do
for m = 0, valueSize - 1 do
saveFileBuffer[startingAddress + i + m + 1] = (spirit & (0xFF << m * 8)) >> (m * 8)
end
for m = 0, valueSize - 1 do
saveFileBuffer[startingAddress + i + m + 11] = (spirit-1 & (0xFF << m * 8)) >> (m * 8)
end
for m = 0, valueSize - 1 do
saveFileBuffer[startingAddress + i + m + 17] = (value & (0xFF << m * 8)) >> (m * 8)
end
spirit=spirit+1
end
end
end
else
for i = 0, valueSize - 1 do
saveFileBuffer[endingAddress+ i + 1] = (value & (0xFF << i * 8)) >> (i * 8)
end
end
end
function getModifiedSaveFile()
return saveFileBuffer
end