Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- 2024.10.24 发布到pastebin.
- -- Mesen模拟器的显示血量lua脚本.
- -- 内存地址
- local playerHPAddress = 0x37C32
- local scroll1XAddress = 0x32C32
- local scroll1YAddress = 0x32BFA
- local enemyHPAddresses = {0x37E12, 0x37D52, 0x37DB2, 0x37CF2, 0x37C92}
- local function getCoordinates(baseAddress)
- local xAddress = baseAddress - 0x34
- local yAddress = baseAddress - 0x30
- local x = emu.readWord(xAddress, emu.memType.gbaExtWorkRam, false)
- local y = emu.readWord(yAddress, emu.memType.gbaExtWorkRam, false)
- return x, y
- end
- local function getScrollOffsets()
- local scrollX = emu.readWord(scroll1XAddress, emu.memType.gbaExtWorkRam, false)
- local scrollY = emu.readWord(scroll1YAddress, emu.memType.gbaExtWorkRam, false)
- return scrollX, scrollY
- end
- local function getHP(address)
- return emu.read(address, emu.memType.gbaExtWorkRam, false)
- end
- local function drawPlayerHP()
- local playerX, playerY = getCoordinates(playerHPAddress)
- local scrollX, scrollY = getScrollOffsets()
- local drawX = playerX - scrollX
- local drawY = playerY - scrollY - 0
- local playerHP = getHP(playerHPAddress)
- local hpText = tostring(playerHP)
- local charWidth = #hpText * 8
- local boxWidth = charWidth + 2
- local boxHeight = 12
- emu.drawRectangle(drawX, drawY, boxWidth, boxHeight, 0x0F000000, true)
- emu.drawString(drawX + 1, drawY + 1, hpText, 0x0FFFFFFF, 0xFF000000)
- end
- local function drawEnemyHP()
- local scrollX, scrollY = getScrollOffsets()
- for _, enemyHPAddress in ipairs(enemyHPAddresses) do
- local enemyX, enemyY = getCoordinates(enemyHPAddress)
- local drawX = enemyX - scrollX
- local drawY = enemyY - scrollY - 0
- local enemyHP = getHP(enemyHPAddress)
- local hpText = tostring(enemyHP)
- local charWidth = #hpText * 8
- local boxWidth = charWidth + 2
- local boxHeight = 12
- emu.drawRectangle(drawX, drawY, boxWidth, boxHeight, 0x0F000000, true)
- emu.drawString(drawX + 1, drawY + 1, hpText, 0x0FFFFFFF, 0xFF000000)
- end
- end
- -- 每帧更新玩家和敌人的HP
- local function update()
- drawPlayerHP()
- drawEnemyHP()
- end
- emu.addEventCallback(update, emu.eventType.endFrame)
Advertisement