Compare commits

...
Author SHA1 Message Date
TaikoZhongandClaude Opus 5.5 c14075b8fa dan select: course panel closer to the cabinet
- Course rows show the song title alone (no subtitle). In CJK languages the title is set
  in runs (ASCII / everything else) so kanji and kana keep their width; it needs the
  engine's OutlinedText.text and falls back to the engine's title without it.
- Exam values: in CJK languages the digits are narrowed beside full-width 以上/未満, with
  a little room between them; smaller size and a thicker edge, centred on the row's
  coin and right-aligned with the cabinet's.
- Exam labels (yellow_box/exam_*.png) are smaller and edged in dark ochre, centred in
  their pills.
- The 合格条件 tab, frame and exam boxes sit 5 px higher, the tab joining the frame.
- The back chip's label set across (non-CJK languages) takes a smaller size instead of
  being squeezed to the chip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:59:34 +08:00
TaikoZhongandClaude Opus 5.5 2e00d1a0f5 Keep checksums.sha256 in its previous line order
Same entries as the last commit; only the order is restored, with the new
paths appended.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:15:14 +08:00
TaikoZhongandClaude Opus 5.5 ec5731e3bd Update checksums.sha256 for #63
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:14:23 +08:00
GanYiZhong c78383fdc1 Merge pull request 'dan select: back chip, chip names, cursor and course rows' (#63) from GanYiZhong/YataiDONNijiiro:feat/dan-select-back-chip into main 2026-10-14 09:13:47 +02:00
TaikoZhongandClaude Opus 5.5 a029b25b22 dan select: back chip, chip names, cursor and course rows (#53)
- Back entry: a chip in the top strip (back/folder, a light blue in the parent's back
  colour) with its label from skin_config dan_back_label, so it follows the language
  (ja 戻る, en Back, zh 返回, ko 뒤로).
- Chip names are black with no outline: dan_chip_name_black moves into screen.options,
  where the engine reads it.
- The selected chip drops below the strip and eases back; the cursor glow covers the
  chip and its name but not the clear stamp.
- Course rows: the 1st/2nd/3rd labels are centred on their row, and the level is one
  "star + number" image per level (yellow_box/difficulty_level, 1..10 and 10+) in place of
  the separate star and digits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:12:37 +08:00
TaikoZhongandClaude Opus 5.5 6b5ae8b5b5 Update checksums.sha256 for #62
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:56:25 +08:00
GanYiZhong afe0bab807 Merge pull request 'dan select: cabinet clear stamps, no parent ura badge' (#62) from GanYiZhong/YataiDONNijiiro:fix/dan-select-marks into main 2026-10-14 06:56:00 +02:00
TaikoZhongandClaude Opus 5.5 d10bd49613 dan select: cabinet clear stamps, no parent ura badge (#54, #55)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:55:40 +08:00
Yonokid 20d8e142d5 Update checksums.sha256 2026-10-13 23:59:04 -04:00
TaikoZhongandClaude Opus 5.5 3c9690b3fa Update checksums.sha256 for #60 and #61
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:17:00 +08:00
GanYiZhong 00d8f8e3e1 Merge pull request 'Losslessly recompress the PNGs stored uncompressed (385 MB -> 27 MB)' (#61) from GanYiZhong/YataiDONNijiiro:perf/recompress-pngs into main 2026-10-14 05:16:45 +02:00
TaikoZhongandClaude Opus 5.5 251970c71b Losslessly recompress the PNGs stored uncompressed (385 MB -> 27 MB)
733 PNGs (most of the cabinet movie exports: the ending banners, the
default backdrops, title/camera, diff_mark_anim, ...) were written with no
compression, 385 MB of the skin's 625 MB of PNG. Each was re-saved with
zlib level 9 + optimize in its own mode and kept only if it decodes to
exactly the same pixels. The game screen alone read ~120 MB of ending
banners on every song start.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:12:26 +08:00
GanYiZhong a62fca0fea Merge pull request 'game: add the parent's animations 94-100 (full combo / clear sound and voice)' (#60) from GanYiZhong/YataiDONNijiiro:fix/game-anim-94-100 into main 2026-10-14 05:03:30 +02:00
TaikoZhongandClaude Opus 5.5 a02d6112de game: add the parent's animations 94-100 (full combo / clear sound and voice)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 11:03:10 +08:00
TaikoZhongandClaude Opus 5.5 54b730e524 Update checksums.sha256 for #59
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:11:38 +08:00
GanYiZhong 2689eee7ae Merge pull request 'result: skipping the reveal lands the rank plate instead of dropping it' (#59) from GanYiZhong/YataiDONNijiiro:fix/result-rank-on-skip into main 2026-10-14 04:11:30 +02:00
TaikoZhongandClaude Opus 5.5 750fb87759 result: skipping the reveal lands the rank plate instead of dropping it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:11:12 +08:00
TaikoZhongandClaude Opus 5.5 ff708041d5 Update checksums.sha256 for #58
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:08:14 +08:00
GanYiZhong 3f6124a09c Merge pull request 'gauge: fix the fading cell gap and clear mark on this skin's grid' (#58) from GanYiZhong/YataiDONNijiiro:fix/gauge-render into main 2026-10-14 04:07:55 +02:00
TaikoZhongandClaude Opus 5.5 0fed3df419 gauge: this skin's render() for its 50-cell fade-in grid
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:07:41 +08:00
TaikoZhongandClaude Opus 5.5 99aa932bb8 Update checksums.sha256 for #57
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:55:25 +08:00
GanYiZhong e6afffc67b Merge pull request 'skin_config: cell-aligned gauge clear mark' (#57) from GanYiZhong/YataiDONNijiiro:fix/gauge-clear-mark-offset into main 2026-10-14 03:55:06 +02:00
TaikoZhongandClaude Opus 5.5 4a0fabafd6 skin_config: cell-aligned gauge clear mark (gauge_clear_mark_offset = 1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:54:48 +08:00
TaikoZhongandClaude Opus 5.5 0472b64028 checksums.sha256: drop the stray .omc entries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:02:33 +08:00
TaikoZhongandClaude Opus 5.5 e9aca03c38 Remove a stray tool state file committed in #56
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:02:21 +08:00
TaikoZhongandClaude Opus 5.5 b1adfe0b1a Update checksums.sha256 for #56
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 09:01:14 +08:00
GanYiZhong 59c743ab90 Merge pull request 'background: pack the cabinet movies' per-frame channels into strings' (#56) from GanYiZhong/YataiDONNijiiro:perf/packed-anim-channels into main 2026-10-14 03:00:53 +02:00
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
Yonokid 09d5ae9278 fix modifier bug 2026-10-13 13:23:01 -04:00
TaikoZhongandClaude Opus 5.5 bae23bb687 Update checksums.sha256 for #52
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 21:00:47 +08:00
GanYiZhong 3cc65818fa Merge pull request 'result: play the cover back for a retry' (#52) from GanYiZhong/YataiDONNijiiro:fix/result-retry-reverse into main 2026-10-13 15:00:19 +02:00
TaikoZhongandClaude Opus 5.5 9eb8894979 result: play the cover back for a retry
The engine's retry flow calls ResultFadeIn:start_reverse; this override
of the parent's result_fade_in.lua had no such method, so the result
background never closed back over the screen before the retry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 20:59:53 +08:00
Yonokid bc3c66d9b2 add dan lua 2026-10-13 08:41:52 -04:00
GanYiZhong 78d7982c0e Merge pull request 'Update checksums.sha256' (#51) from GanYiZhong/YataiDONNijiiro:fix/checksums into main 2026-10-13 05:48:32 +02:00
TaikoZhongandClaude Opus 5.5 41dcd4b593 Update checksums.sha256
The manifest predates #47/#48/#50: the skin updater skipped every
backdrop added in #48 (1884 files), kept fetching 17 changed files on
each launch, and still listed the deleted gumi.lua. Hashes are the
blob bytes (LFS: pointer oid), same as the existing entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:47:43 +08:00
GanYiZhong b0309d4fd3 Merge pull request 'entry: land the Don on the parent's new bounce' (#50) from GanYiZhong/YataiDONNijiiro:fix/entry-bounce-end into main 2026-10-13 05:30:14 +02:00
GanYiZhong 3b312e61f4 Merge pull request 'entry: drop the pinned entry animations' (#49) from GanYiZhong/YataiDONNijiiro:revert/entry-animation into main 2026-10-13 05:30:08 +02:00
TaikoZhongandClaude Opus 5.5 40e135098c entry: land the Don on the parent's new bounce
The parent merged its two entry bounce moves into one (animation.json
entry 2, -340). BOUNCE_END still assumed the old -295/+50 pair, so with
the inherited file Don floated ~140px above the nameplate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:29:49 +08:00
TaikoZhongandClaude Opus 5.5 85fb872d9c entry: drop the pinned entry animations
The engine now plays the 3D DON_ENTRY_IN/LOOP animations on the entry
screen, and the parent's animation.json is tuned for them. The pinned
copy puts Don ~190px too low, half behind the nameplate; with the
inherited file he stands on it again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:05:19 +08:00
GanYiZhong 5012df77e1 Merge pull request 'background: cabinet backdrops for the collab presets' (#48) from GanYiZhong/YataiDONNijiiro:feat/arcade-collab-packs into main
Reviewed-on: Yonokid/YataiDONNijiiro#48
2026-10-13 04:52:26 +02:00
GanYiZhong a5441ac310 Merge pull request 'collabs: use the parent's collab scripts with its reworked art' (#47) from GanYiZhong/YataiDONNijiiro:fix/collab-green-art into main
Reviewed-on: Yonokid/YataiDONNijiiro#47
2026-10-13 04:52:17 +02:00
GanYiZhong 4f0fb58891 Merge pull request 'entry: pin the entry animations the Don placement is built on' (#46) from GanYiZhong/YataiDONNijiiro:fix/entry-animation into main
Reviewed-on: Yonokid/YataiDONNijiiro#46
2026-10-13 04:52:08 +02:00
TaikoZhongandClaude Opus 5.5 8d13c3a393 background: fix the collab bands and backdrops found by a frame compare
Every exported part was compared frame by frame with the cabinet renderer,
which showed:

- donbg bands: the state groups were taken as the first three root sprites
  (normal / fever / miss) and root-level shapes were dropped, so mario's
  and lovelive's bands lost their sky plate and layers (black band with
  smeared notes).  Groups now come from the root's own `normal` / `fever`
  label frames: shown on the normal frame -> normal; fever only -> fever;
  shown in both and above every fever layer -> top (drawn over the
  crossfade).  Root shapes are included.
- backdrops whose root timeline moves its children (mario's scrolling
  stage) are dumped through the root, so the scroll is kept.
- a normal backdrop's switched-off layer (alpha 0 on the root, e.g. imas's
  spotlight cones) stays hidden.
- loops longer than the old 2700-frame dump (mario 3840, i7 natsu 1604) are
  dumped twice over and kept exact instead of being cut at 1920 frames.
- colour-multiply placements (tinted spotlights, bands) carry cr/cg/cb and
  are drawn with `color`; the donbg miss-streak darkening now multiplies an
  existing colour instead of replacing it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:05:39 +08:00
TaikoZhongandClaude Opus 5.5 f239bc156c background: cabinet backdrops for the collab presets
Collab songs (#SCENEPRESET) now get their own cabinet backdrop, replayed by
the same objects as the default backdrop instead of the parent's collab art:

  miku, toho, gumi, ia, lovelive, i7 (id7 / tri / rev / natsu), imas
  (765 / cg / ml / sidem), yo-kai (base / matsuri / hatsukoi / tokoroten /
  yougota), mario, a3

Each preset is a pack in bg_data/collab_packs.lua naming its parts: donbg
band (1P and 2P), normal and clear backdrops, troupe, stand under the
troupe, drumroll effect and soul-max crowd.  Shared parts (the i7, imas
and yo-kai families) are shared the way the cabinet shares them.  A pack is
used only when every part it names is present, otherwise the preset falls
back to the collab script as before.  Packs also apply in 2P (donbg bands).

The objects take a part name where they took a random index:
DonBG.create_named, BGNormal.create_named, BGFever.create_named,
ArcadeDancerGroup.new("<name>"), Fever.Anim.new("<name>").  New:
renda_clip.lua (each hit replays one of the effect's parts along its own
path), and a beat-synced BGAnim for the whole-troupe dancer movies (i7,
a3).  Collab troupes stand in fixed positions (lead in the centre) and
grow from 1 to the full troupe with the gauge.

Exported placements may now mirror: bg_anim, donbg and dancer data carry a
mirror flag (drawn with mirror = horizontal and the origin moved to the
other side of the png).  Existing data has no flag and draws as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 15:55:05 +08:00
TaikoZhongandClaude Opus 5.5 a48fcd3498 collabs: use the parent's collab scripts with its reworked art
PyTaikoGreen reworked the art of its collab backdrops (folders renamed,
texture.json positions changed, new layers) together with its collab
scripts. Nijiiro takes the art from the parent but kept its own older
copies of eight collab scripts, so with the new art those collabs lost
their dancers, footer or fever layers, filled the log with draw errors
(funassyi, gumi) or crashed (a3, imas_sidem, oshiri).

a3, animal, buttoburst, funassyi, imas (also imas_cg/imas_ml),
imas_sidem and oshiri now load the parent's script and keep what Nijiiro
did differently (bg_objects/collab_parent.lua): the collab dancer-count
model and no drumroll burst on balloons. The parent's script is loaded
from its own file, so it uses the parent's background objects that its
art is laid out for. gumi only adapted the parent's script to this
skin's donbg/6, so the parent's is used as it is.

The dancer-count model now also drives the parent's troupes: set_count
where the troupe has it (a3), and leave_dancer to shrink.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:18:37 +08:00
TaikoZhongandClaude Opus 5.5 dc4fc59741 entry: pin the entry animations the Don placement is built on
Nijiiro had no Graphics/entry/animation.json of its own and took the
parent's. The parent changed its entry animations (drum bounce -245 ->
-340, cloud puff 0.75-1.0 -> 0.1-1.2, cloud loop, timings, mode-select
fade 160 -> 443 ms), but player.lua lands Don on DON_CY with a fixed
BOUNCE_END = -367.5 (the old -245 x 1.5), so after picking a side Don
now stopped ~140 px too high and the cloud was sized differently.

This adds the parent's previous entry animation.json unchanged, so
Nijiiro's entry looks as it did before the parent's change. Nijiiro's
own entry scripts and the engine's entry ids (9-11) are all in it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 13:48:00 +08:00
TaikoZhongandClaude Opus 5.5 d87aef0177 Update checksums.sha256
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 10:34:18 +08:00
GanYiZhong 605a651a25 Merge pull request 'dan select: add the dan transition animations (19-23)' (#45) from GanYiZhong/YataiDONNijiiro:dan-transition-anims into main 2026-10-12 04:31:32 +02:00
2691 changed files with 40895 additions and 6169 deletions

No files matched your search

Binary file not shown.
@@ -0,0 +1,6 @@
{
"s1": {
"x": 0,
"y": 0
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,14 @@
{
"s1": {
"x": 0,
"y": 0
},
"s3": {
"x": 0,
"y": 0
},
"s6": {
"x": 0,
"y": 0
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,94 @@
{
"s1": {
"x": 0,
"y": 0
},
"s3": {
"x": 0,
"y": 0
},
"s5": {
"x": 0,
"y": 0
},
"s7": {
"x": 0,
"y": 0
},
"s9": {
"x": 0,
"y": 0
},
"s11": {
"x": 0,
"y": 0
},
"s13": {
"x": 0,
"y": 0
},
"s15": {
"x": 0,
"y": 0
},
"s18": {
"x": 0,
"y": 0
},
"s20": {
"x": 0,
"y": 0
},
"s22": {
"x": 0,
"y": 0
},
"s24": {
"x": 0,
"y": 0
},
"s26": {
"x": 0,
"y": 0
},
"s28": {
"x": 0,
"y": 0
},
"s30": {
"x": 0,
"y": 0
},
"s33": {
"x": 0,
"y": 0
},
"s35": {
"x": 0,
"y": 0
},
"s37": {
"x": 0,
"y": 0
},
"s39": {
"x": 0,
"y": 0
},
"s41": {
"x": 0,
"y": 0
},
"s43": {
"x": 0,
"y": 0
},
"s46": {
"x": 0,
"y": 0
},
"s49": {
"x": 0,
"y": 0
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,82 @@
{
"s1": {
"x": 0,
"y": 0
},
"s3": {
"x": 0,
"y": 0
},
"s5": {
"x": 0,
"y": 0
},
"s7": {
"x": 0,
"y": 0
},
"s9": {
"x": 0,
"y": 0
},
"s11": {
"x": 0,
"y": 0
},
"s13": {
"x": 0,
"y": 0
},
"s15": {
"x": 0,
"y": 0
},
"s17": {
"x": 0,
"y": 0
},
"s19": {
"x": 0,
"y": 0
},
"s21": {
"x": 0,
"y": 0
},
"s23": {
"x": 0,
"y": 0
},
"s25": {
"x": 0,
"y": 0
},
"s27": {
"x": 0,
"y": 0
},
"s29": {
"x": 0,
"y": 0
},
"s31": {
"x": 0,
"y": 0
},
"s37": {
"x": 0,
"y": 0
},
"s41": {
"x": 0,
"y": 0
},
"s43": {
"x": 0,
"y": 0
},
"s45": {
"x": 0,
"y": 0
}
}
Binary file not shown.
@@ -0,0 +1,6 @@
{
"s1": {
"x": 0,
"y": 0
}
}
Binary file not shown.
@@ -0,0 +1,6 @@
{
"s1": {
"x": 0,
"y": 0
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,50 @@
{
"s1": {
"x": 0,
"y": 0
},
"s3": {
"x": 0,
"y": 0
},
"s6": {
"x": 0,
"y": 0
},
"s8": {
"x": 0,
"y": 0
},
"s10": {
"x": 0,
"y": 0
},
"s12": {
"x": 0,
"y": 0
},
"s14": {
"x": 0,
"y": 0
},
"s16": {
"x": 0,
"y": 0
},
"s19": {
"x": 0,
"y": 0
},
"s22": {
"x": 0,
"y": 0
},
"s25": {
"x": 0,
"y": 0
},
"s28": {
"x": 0,
"y": 0
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
{
"s1": {
"x": 0,
"y": 0
},
"s3": {
"x": 0,
"y": 0
},
"s5": {
"x": 0,
"y": 0
},
"s7": {
"x": 0,
"y": 0
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,26 @@
{
"s1": {
"x": 0,
"y": 0
},
"s4": {
"x": 0,
"y": 0
},
"s8": {
"x": 0,
"y": 0
},
"s11": {
"x": 0,
"y": 0
},
"s16": {
"x": 0,
"y": 0
},
"s18": {
"x": 0,
"y": 0
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 2691 files, more files were not shown because too many files have changed in this diff. Show more