Updating a single sprite while playdate.stop

So this is the scenario, I have a bunch of sprites moving around on screen, and once a certain condition is met I call a pd.stop(). A screen pops up, the player can select one of two options, then the game resumes with a pd.start().

I have all that up and working, but I'm struggling with a specific bit. I have a cursor sprite (called UpgradeSelector) which moves to highlight the selected option on screen. What's the best way of moving it while the game is stopped? I've tried a few things with pd.display.flush() but it wasn't working, so I was definitely doing something wrong.

At the moment I'm calling UpgradeSelector:update() in the input handler on upButtonDown and downButtonDown, but that updates all sprites for one frame, not just UpgradeSelector.

Also at the moment UpgradeSelector is a static image, but I think I'll swap it for an animated gif at a later point. Should I do something like setUpdatesEnabled(false) on all other sprites instead of pd.stop()?

Thanks in advance!

PS: here's the code atm in case it's useful

local pd <const> = playdate
local gfx <const> = playdate.graphics

SelectedUpgrade = nil

local upgradeInputHandlers = {
    AButtonDown = function()
        pd.start()
        pd.inputHandlers.pop(upgradeInputHandlers)
        LevelUpBg:remove()
        UpgradeSelector:remove()
        pushUpgrade(SelectedUpgrade)
    end,
    upButtonDown = function()
        UpgradeSelector:moveTo(128,96)
        UpgradeSelector:update()
        SelectedUpgrade = 1
    end,
    downButtonDown = function()
            UpgradeSelector:moveTo(128,144)
            UpgradeSelector:update()
            SelectedUpgrade = 2
    end
}

LevelUpBg = nil
UpgradeSelector = nil
SelectedOption = 1

function levelUpInit()
    LevelUpBg = gfx.sprite.new(UpgradeScreenPng)
    LevelUpBg:moveTo(200,120)
    LevelUpBg:setZIndex(2048)
    LevelUpBg:add()
    UpgradeSelector = gfx.sprite.new(UpgradeSelectPng)
    UpgradeSelector:moveTo(128,96)
    UpgradeSelector:setZIndex(4096)
    UpgradeSelector:add()

    pd.stop()
    pd.inputHandlers.push(upgradeInputHandlers)
end

I'm struggling with some similar issues myself, but I think I know enough to help you out. You're calling UpgradeSelector:update() in response to button presses, but that only updates your object's internal state. Nothing is doing any drawing on your behalf while Playdate is stopped. I think you need to also call draw on your sprite, followed by flush…something like:

    upButtonDown = function()
        UpgradeSelector:moveTo(128,96)
        UpgradeSelector:update()
        UpgradeSelector:draw()
        playdate.display.flush()
        SelectedUpgrade = 1
    end

Hey, thanks! I was advised elsewhere (discord) of trying a different route, i.e. setting up bespoke scenes and doing a sprite:setUpdatesEnabled(false) on all other sprites, and then re-enable updates on the following scene transition. It's working well for me but I'll keep this in mind for future use cases!