DramaticShapeVoxelMod archival mirror · read-only
8728783b22428e91f85ac89803754431dd33e706

account for dpi issues on updated 3d battles

DramaticShape · 2026-07-31 · parent 775757b2d6

account for dpi issues on updated 3d battles

Changed files

CHANGELOG.md  | 48 ++++++++++++++++++++++++++----------------------
 main.lua      |  2 +-
 manifest.json |  2 +-
 3 files changed, 28 insertions(+), 24 deletions(-)

Diff

diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb6d286..eed2d45 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,31 @@
 # Changelog
 
+## 1.3.1
+
+### Fixed
+
+- **A staged battle on a phone stood some Pokémon three times the size of the
+  square they were on.** A Pidgey towered over the arena while the mon beside
+  it was the right size, which reads as a bug in one species and is not one.
+
+  Putting the paper back inside a battle pic (BattlePics, 1.3.0) needs the
+  pic's pixels, and a LOVE Image does not hand them back -- so the pic is drawn
+  into a canvas of its own size and the canvas is read. `newCanvas` takes the
+  SURFACE's dpi scale when it is not told otherwise, `conf.lua` turns highdpi
+  on for Android and iOS, and Android's display density is routinely 2.75. So
+  `newCanvas(56, 56)` allocated a 154x154 texture there, the pic was magnified
+  into it, and the readback came back at the magnified size. The rebuilt pic
+  was 2.75x the artwork, the engine's pics layer drew it 1:1 because it trusts
+  `getWidth()`, and the mon stood on its tile nearly three times too big.
+
+  Only a pic with an enclosed hole in it is rebuilt at all -- the rest are
+  handed straight back untouched -- which is why it hit some species and not
+  others, and why it never showed on desktop, where the dpi scale is already 1.
+  The readback now asks for one texel per pic pixel, the way the engine's own
+  `PixelCanvas` does for the same reason. The animated-tile atlas readback took
+  the same fix: on a phone it would have come back magnified too, and every
+  tile coordinate in it counts in eights from the top-left.
+
 ## 1.3.0
 
 ### Added
@@ -32,28 +58,6 @@
 
 ### Fixed
 
-- **A staged battle on a phone stood some Pokémon three times the size of the
-  square they were on.** A Pidgey towered over the arena while the mon beside
-  it was the right size, which reads as a bug in one species and is not one.
-
-  Putting the paper back inside a battle pic (BattlePics, below) needs the
-  pic's pixels, and a LOVE Image does not hand them back -- so the pic is drawn
-  into a canvas of its own size and the canvas is read. `newCanvas` takes the
-  SURFACE's dpi scale when it is not told otherwise, `conf.lua` turns highdpi
-  on for Android and iOS, and Android's display density is routinely 2.75. So
-  `newCanvas(56, 56)` allocated a 154x154 texture there, the pic was magnified
-  into it, and the readback came back at the magnified size. The rebuilt pic
-  was 2.75x the artwork, the engine's pics layer drew it 1:1 because it trusts
-  `getWidth()`, and the mon stood on its tile nearly three times too big.
-
-  Only a pic with an enclosed hole in it is rebuilt at all -- the rest are
-  handed straight back untouched -- which is why it hit some species and not
-  others, and why it never showed on desktop, where the dpi scale is already 1.
-  The readback now asks for one texel per pic pixel, the way the engine's own
-  `PixelCanvas` does for the same reason. The animated-tile atlas readback took
-  the same fix: on a phone it would have come back magnified too, and every
-  tile coordinate in it counts in eights from the top-left.
-
 - **Battle pics were see-through, and it took a back sprite on a tiled floor
   to make it obvious.** Gen 1 pics are two-bit art whose lightest shade is
   white, and the decoded PNGs key that shade to alpha 0 -- which cost nothing
diff --git a/main.lua b/main.lua
index 0ba9fb0..ccef967 100644
--- a/main.lua
+++ b/main.lua
@@ -848,7 +848,7 @@ mod.hooks:wrap("world.tod", function(next, tod, ctx)
   return DayNight.tod()
 end)
 
-mod.exports.version = "1.3.0"
+mod.exports.version = "1.3.1"
 -- exposed so a companion mod can pin its own tiles' shapes or read the
 -- camera without reaching into this mod's file layout
 mod.exports.lib = V
diff --git a/manifest.json b/manifest.json
index be71b75..ef2c15c 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,7 +1,7 @@
 {
   "id": "DRAMATIC_SHAPE",
   "name": "Dramatic Shape Voxel Mod",
-  "version": "1.3.0",
+  "version": "1.3.1",
   "api": 2,
   "entry": "main.lua",
   "profile": "content",