Files
YataiDONNijiiro/Scripts/background/bg_data/bg_anim/b_001_f.lua
T
TaikoZhongandClaude Opus 5.5 2f7291d4ec background: pack the cabinet movies' per-frame channels into strings
The collab backdrops (and the default donbg band) replay exported movies
whose per-frame channels were Lua tables of numbers: 38 MB that Lua
compiled on every song start (0.7 s for the TOHO pack; game screen init
1.5-1.6 s -> 0.9-1.0 s in-game), plus ~19 MB of Lua memory per pack.

Each per-frame array is now {base, step, width, "digits"}: value = base +
step * n, n being the frame's width chars in base 92 (printable ASCII
without '"' and '\'). One string constant compiles in a fraction of the
time; bg_objects/packed_channel.lua decodes the frame being drawn.
Quantization: 0.05 px, 0.005 deg, 5e-5 scale, 1/1024 alpha and tint;
every value of all 77 files checked against the original within half a
step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:00:18 +08:00

22 lines
2.5 KiB
Lua

-- GENERATED by scratchpad/lyric/movie_export.py from enso/background/bg_fever_b_001.nulm -- do not hand-edit.
-- 1920x540 stage @60fps (screen y 540). Per leaf: shape, period, channels tx/ty/sx/sy/rot/a
-- (number = constant, table = per frame of the loop; a = 0 means not placed), optional on/on_period mask.
-- shapes[c] = {w, h, ox, oy}: png size and the shape origin inside it.
return {
shapes = {
[1] = {1920, 540, 0, 0},
[3] = {480, 540, 240, 270},
[6] = {848, 536, 424, 268},
},
normal = {
{ shape = 1, period = 1, tx = 0, ty = 0, sx = 1, sy = 1, rot = 0, a = 1 }, -- #1@0
{ shape = 3, period = 80, tx = {726, 0.05, 3, "#-&#+g#*J#).#'o#&R#%6##w#!Z!~>!}!!{c!zF!y*!wk!vN!u2!ss!rV!q:!o{!n_!mB!l&!jg!iJ!h.!fo!eR!d6!bw!aZ!`>!_!!]c![F!Z*!Xk!WN!V2!Ts!SV!R:!P{!O_!NB!M&!Kg!JJ!I.!Go!FR!E6!Cw!BZ!A>!@!!>c!=F!<*!:k!9N!82!6s!5V!4:!2{!1_!0B!/&!-g!,J!+.!)o!(R!'6!%w!$Z!#>!!!"}, ty = 270, sx = 1, sy = 1, rot = 0, a = 1 }, -- #5@1/#3@0
{ shape = 3, period = 80, tx = {1206, 0.05, 3, "#-&#+g#*J#).#'o#&R#%6##w#!Z!~>!}!!{c!zF!y*!wk!vN!u2!ss!rV!q:!o{!n_!mB!l&!jg!iJ!h.!fo!eR!d6!bw!aZ!`>!_!!]c![F!Z*!Xk!WN!V2!Ts!SV!R:!P{!O_!NB!M&!Kg!JJ!I.!Go!FR!E6!Cw!BZ!A>!@!!>c!=F!<*!:k!9N!82!6s!5V!4:!2{!1_!0B!/&!-g!,J!+.!)o!(R!'6!%w!$Z!#>!!!"}, ty = 270, sx = 1, sy = 1, rot = 0, a = 1 }, -- #5@1/#3@1
{ shape = 3, period = 80, tx = {-234, 0.05, 3, "#-&#+g#*J#).#'o#&R#%6##w#!Z!~>!}!!{c!zF!y*!wk!vN!u2!ss!rV!q:!o{!n_!mB!l&!jg!iJ!h.!fo!eR!d6!bw!aZ!`>!_!!]c![F!Z*!Xk!WN!V2!Ts!SV!R:!P{!O_!NB!M&!Kg!JJ!I.!Go!FR!E6!Cw!BZ!A>!@!!>c!=F!<*!:k!9N!82!6s!5V!4:!2{!1_!0B!/&!-g!,J!+.!)o!(R!'6!%w!$Z!#>!!!"}, ty = 270, sx = 1, sy = 1, rot = 0, a = 1 }, -- #5@1/#3@2
{ shape = 3, period = 80, tx = {246, 0.05, 3, "#-&#+g#*J#).#'o#&R#%6##w#!Z!~>!}!!{c!zF!y*!wk!vN!u2!ss!rV!q:!o{!n_!mB!l&!jg!iJ!h.!fo!eR!d6!bw!aZ!`>!_!!]c![F!Z*!Xk!WN!V2!Ts!SV!R:!P{!O_!NB!M&!Kg!JJ!I.!Go!FR!E6!Cw!BZ!A>!@!!>c!=F!<*!:k!9N!82!6s!5V!4:!2{!1_!0B!/&!-g!,J!+.!)o!(R!'6!%w!$Z!#>!!!"}, ty = 270, sx = 1, sy = 1, rot = 0, a = 1 }, -- #5@1/#3@3
{ shape = 3, period = 80, tx = {1686, 0.05, 3, "#-&#+g#*J#).#'o#&R#%6##w#!Z!~>!}!!{c!zF!y*!wk!vN!u2!ss!rV!q:!o{!n_!mB!l&!jg!iJ!h.!fo!eR!d6!bw!aZ!`>!_!!]c![F!Z*!Xk!WN!V2!Ts!SV!R:!P{!O_!NB!M&!Kg!JJ!I.!Go!FR!E6!Cw!BZ!A>!@!!>c!=F!<*!:k!9N!82!6s!5V!4:!2{!1_!0B!/&!-g!,J!+.!)o!(R!'6!%w!$Z!#>!!!"}, ty = 270, sx = 1, sy = 1, rot = 0, a = 1 }, -- #5@1/#3@4
{ shape = 6, period = 1, tx = 536, ty = 237, sx = 1, sy = 1, rot = 0, a = 1 }, -- #6@2
{ shape = 6, period = 1, tx = 1384, ty = 237, sx = 1, sy = 1, rot = 0, a = 1, mir = 1 }, -- #6@3
},
}