Add climbing. Fix sprite list regression

This commit is contained in:
Empathic Qubit 2021-05-04 23:29:31 -04:00
parent 123d7508d1
commit 1cd3618b6f
6 changed files with 27 additions and 9 deletions

View file

@ -39,7 +39,7 @@ _M.Filename = _M.PoolDir .. _M.State[4]
_M.StartPowerup = 0 _M.StartPowerup = 0
_M.NeatConfig = { _M.NeatConfig = {
DisableSound = false, DisableSound = true,
Threads = 7, Threads = 7,
--Filename = "DP1.state", --Filename = "DP1.state",
SaveFile = _M.Filename .. ".pool", SaveFile = _M.Filename .. ".pool",

View file

@ -396,6 +396,7 @@ function _M.getSprite(idx)
style = util.regionToWord(spriteData, offsets.style), style = util.regionToWord(spriteData, offsets.style),
velocityX = util.regionToWord(spriteData, offsets.velocityX), velocityX = util.regionToWord(spriteData, offsets.velocityX),
velocityY = util.regionToWord(spriteData, offsets.velocityY), velocityY = util.regionToWord(spriteData, offsets.velocityY),
motion = util.regionToWord(spriteData, offsets.motion),
x = x, x = x,
y = y, y = y,
good = spritelist.Sprites[control] good = spritelist.Sprites[control]
@ -523,10 +524,26 @@ function _M.getInputs()
end end
end end
end end
-- XXX Will this work? Stay tuned
if _M.getClimbing() then
table.insert(inputs, 1)
else
table.insert(inputs, 0)
end
table.insert(inputDeltaDistance, 99)
return inputs, inputDeltaDistance return inputs, inputDeltaDistance
end end
function _M.getClimbing()
local sprite = _M.getSprite(_M.leader)
if sprite == nil then
return false
end
return sprite.motion >= 0x35 and sprite.motion <= 0x39
end
function _M.clearJoypad() function _M.clearJoypad()
for b = 1,#config.ButtonNames do for b = 1,#config.ButtonNames do
input.set(0, b - 1, 0) input.set(0, b - 1, 0)

View file

@ -48,6 +48,7 @@ local _M = {
style = 0x12, style = 0x12,
velocityX = 0x20, velocityX = 0x20,
velocityY = 0x24, velocityY = 0x24,
motion = 0x2e,
} }
} }
} }

View file

@ -9,7 +9,7 @@ local game = nil
local mathFunctions = dofile(base.."/mathFunctions.lua") local mathFunctions = dofile(base.."/mathFunctions.lua")
local util = dofile(base.."/util.lua")() local util = dofile(base.."/util.lua")()
local Inputs = config.InputSize+1 local Inputs = config.InputSize+2
local Outputs = #config.ButtonNames local Outputs = #config.ButtonNames
local guiWidth = 0 local guiWidth = 0
@ -471,7 +471,7 @@ local function initializeRun(_M)
exec('enable-sound '..enableSound) exec('enable-sound '..enableSound)
gui.subframe_update(false) gui.subframe_update(false)
return rewind():next(function(preferredExit) return rewind():next(function()
if config.StartPowerup ~= nil then if config.StartPowerup ~= nil then
game.writePowerup(config.StartPowerup) game.writePowerup(config.StartPowerup)
end end
@ -500,7 +500,7 @@ local function initializeRun(_M)
_M.currentArea = game.getCurrentArea() _M.currentArea = game.getCurrentArea()
_M.lastArea = _M.currentArea _M.lastArea = _M.currentArea
for areaId,areaInfo in pairs(_M.areaInfo) do for _,areaInfo in pairs(_M.areaInfo) do
areaInfo.shortest = areaInfo.startDistance areaInfo.shortest = areaInfo.startDistance
end end
@ -512,7 +512,7 @@ end
local function getDistanceTraversed(areaInfo) local function getDistanceTraversed(areaInfo)
local distanceTraversed = 0 local distanceTraversed = 0
for areaId,areaInfo in pairs(areaInfo) do for _,areaInfo in pairs(areaInfo) do
distanceTraversed = areaInfo.startDistance - areaInfo.shortest distanceTraversed = areaInfo.startDistance - areaInfo.shortest
end end
return distanceTraversed return distanceTraversed

View file

@ -105,13 +105,13 @@ end
function _M.InitSpriteList() function _M.InitSpriteList()
for k,v in pairs(_M.GoodSprites) do for k,v in pairs(_M.GoodSprites) do
_M.extSprites[v] = 1 _M.Sprites[v] = 1
end end
for k,v in pairs(_M.BadSprites) do for k,v in pairs(_M.BadSprites) do
_M.extSprites[v] = -1 _M.Sprites[v] = -1
end end
for k,v in pairs(_M.NeutralSprites) do for k,v in pairs(_M.NeutralSprites) do
_M.extSprites[v] = 0 _M.Sprites[v] = 0
end end
end end

View file

@ -153,7 +153,7 @@ local function get_sprite(base_addr)
velocityY = memory.readsword(base_addr + offsets.velocityY), velocityY = memory.readsword(base_addr + offsets.velocityY),
velomaxx = memory.readsword(base_addr + 0x26), velomaxx = memory.readsword(base_addr + 0x26),
velomaxy = memory.readsword(base_addr + 0x2a), velomaxy = memory.readsword(base_addr + 0x2a),
motion = memory.readword(base_addr + 0x2e), motion = memory.readword(base_addr + offsets.motion),
attr = memory.readword(base_addr + 0x30), attr = memory.readword(base_addr + 0x30),
animnum = memory.readword(base_addr + 0x36), animnum = memory.readword(base_addr + 0x36),
remainingframe = memory.readword(base_addr + 0x38), remainingframe = memory.readword(base_addr + 0x38),