Skip to content

Releases: NimitzDEV/vcd30player

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 13 Sep 16:14

v0.5.0 更新

新增

  • 支持中英文语言切换,默认跟随系统语言。
  • 标题栏新增设置入口,支持在弹窗中选择界面语言。
  • 支持社区自定义语言包(提供 _template.json 模板与说明文档)。

v0.5.0 Update

Added

  • Multi-language support with Chinese and English, defaulting to system language.
  • Settings dialog to change language via new titlebar button.
  • Community translation support with locale template and guide.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 16:03

v0.4.0 更新

新增 (Added)

  • 荧光绿 CRT 风格屏幕提示(OSD)图层,带四向暗色描边与渐隐动画。
  • 三种 OSD 显示模式:按需自动隐藏、右上角常驻时间码与完全关闭。
  • 屏幕操作反馈涵盖播放暂停、快进快退、切换曲目、声道切换、光盘格式识别与数字键输入。
  • 底部状态栏新增 OSD 模式切换按钮,位于关于按钮前方。
  • 全局快捷键:O 切换 OSD 模式,L 切换左右声道,R 切换循环模式。
  • Windows 可执行文件属性中嵌入 PE 版本信息(产品名称、文件说明、版本号与版权)。
  • Windows 生产版本配置图形界面子系统,启动时不再弹出控制台黑窗口。

变更 (Changed)

  • 热区高亮开关与画面线框仅在 VCD 3.0 互动模式下展示和绘制。

修复 (Fixed)

  • 修复遥控器输入当前正在播放的曲目号(如 38)时,画面与状态栏停留在输入提示态的问题。
  • 修复 VCD 2.0 模式下输入未单独定义 PBC 播放列表的轨道号时无法切歌的问题。

v0.4.0 Update

Added

  • Green CRT-style On-Screen Display (OSD) overlay with four-direction text outlines and fade-out animation.
  • Three OSD display modes: auto-fade on action, persistent timecode in the top right, and disabled.
  • On-screen feedback for playback controls, seeking, track changes, audio channel switching, disc format identification, and remote numeric input.
  • Toolbar button next to the About button to cycle OSD modes.
  • Global keyboard shortcuts: O for OSD display mode, L for audio channels, and R for repeat mode.
  • Embedded Windows PE version resources in release binaries (product name, file description, versions, and copyright).
  • Windows GUI subsystem configuration to launch without a background console window in release builds.

Changed

  • Hotspot highlight toggle and canvas overlays now appear only in VCD 3.0 interactive mode.

Fixed

  • Entering the number of the currently playing track on the remote control (such as 38) now restarts playback instead of sticking on the input prompt.
  • Numeric track selection in VCD 2.0 mode now falls back to direct track playback if the disc lacks an explicit PBC playlist descriptor for that track.

v0.3.1

Choose a tag to compare

@github-actions github-actions released this 11 Sep 20:51

v0.3.1 更新

修复 (Fixed)

  • 更新详情窗口尺寸与布局:
    • 修复下载更新时进度条与取消按钮水平布局反馈导致窗口宽度异常扩大的问题。
    • 为更新详情窗口设置最大/最小宽度限制与不可变尺寸约束。
  • 发布日期格式化:
    • 优化发布日期展示,统一将 ISO 时间戳规范化为「年月日 时分秒」(YYYY-MM-DD HH:MM:SS)。

v0.3.1 Update

Fixed

  • Update Details Window Sizing & Layout:
    • Resolved an issue where horizontal layout feedback between the progress bar and cancel button caused window width expansion during download.
    • Constrained update details window with min/max bounds and fixed sizing.
  • Release Date Formatting:
    • Formatted release timestamps to clean "YYYY-MM-DD HH:MM:SS" format across platforms.

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Sep 20:01

v0.3.0 更新

新增 (Added)

  • 软件版本检查与就地自更新:
    • 基于 Cloudflare R2 / S3 兼容对象存储与 CDN 边缘分发,实现轻量级版本检查与安装包分发。
    • 「关于」对话框提供版本状态展示与检测入口,启动时保持静默离线,仅在呼出关于时按需请求。
    • 双语更新日志展示弹窗,自适应系统语言(中文/英文)默认切换。
    • 后台流式下载安装包,实时展示百分比与流量进度,支持中途安全取消。
    • SHA-256 完整性哈希校验,防止下载损坏或残缺文件。
    • 基于 self-replace 机制实现跨平台(Windows/Linux)运行中二进制文件原子替换与无缝重启。
  • CI 流水线自动化分发:
    • 自动化构建产物归档、提取双语更新日志并生成 version.jsonchecksums.txt
    • 同步上传至 Cloudflare R2 对象存储与 GitHub Releases 双通道。

v0.3.0 Update

Added

  • Application Version Check & In-Place Self-Update:
    • Lightweight version checking and distribution via Cloudflare R2 / S3-compatible storage and edge CDN.
    • Integrated update status row and trigger button in the "About" dialog, maintaining zero network overhead on startup.
    • Bilingual changelog modal window with auto-detection of system locale (Chinese/English).
    • Background streaming download with real-time percentage/MB progress bar and cancellation support.
    • SHA-256 checksum integrity verification prior to applying updates.
    • Atomic in-place binary self-replacement and seamless restart using self-replace.
  • CI Release Automation:
    • Automated artifact archiving, bilingual changelog extraction, and generation of version.json and checksums.txt.
    • Dual distribution to both Cloudflare R2 storage and GitHub Releases.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 11 Sep 15:51

v0.2.0 更新

新增 (Added)

  • VCD 2.0 PBC (Playback Control) 状态机:
    • 解析 VCD/LOT.VCD(位置查找表)与 VCD/PSD.VCD(播放序列描述表),支持白皮书规范中的 PlayListSelectionListEndList 结构。
    • 支持多级选单、曲目链表播放、延时等待与超时自动跳转。
    • 支持静态高分辨率菜单帧解码与渲染(/SEGMENT/ITEMxxxx.DAT)。
    • 支持 MPEG-1 动态交互式视频菜单回放。
    • 底部控制栏新增 PBC 按钮,可返回主选单。
  • 播放模式识别与切换:
    • 自动识别并切换 VCD 3.0 交互模式、VCD 2.0 PBC 模式与 VCD 1.0 线性视频模式。
    • 切换模式时清理并重建对应状态。
  • 多位数字按键输入缓冲:
    • 数字键输入缓冲(曲目数大于 9 时暂存,等待 Enter、第二位数字或 2.0 秒超时自动确认)。
    • 状态栏实时反馈输入状态(如 输入曲目: 1 (按 Enter 确认或等待))。
    • 支持 VCD 1.0 模式下的数字键切歌。

修复 (Fixed)

  • 曲目播放期间数字键误跳片头视频:
    • 修复 VCD 2.0 模式播放曲目时按数字键误跳转至开场片头(LID 1)的问题;改为检索对应 PSD 描述符定位物理音轨,保留 PBC 返回逻辑。
  • 曲目列表时间码格式:
    • 曲目列表时间码分隔符由冒号 : 改为小数点 .(如 [05:02.70]),避免与时分秒格式混淆。
  • PBC 菜单状态残留:
    • 进入曲目播放时清除标题栏与状态栏残留的 PBC 菜单名称。
  • 主页按钮状态约束:
    • 非 VCD 3.0 模式下禁用主页按钮。
  • 侧面板关闭按钮字符渲染:
    • 替换侧面板关闭按钮的字符,解决部分系统上渲染为方块的问题。

变更 (Changed)

  • 侧面板展开窗口尺寸自适应:
    • 展开侧栏时自动扩展窗口宽度,折叠时还原,保持画面比例。
  • 底部控制栏布局调整:
    • 将播放模式切换控件移至声道切换控件之后。
    • 将声道、播放顺序、关于等按钮精简为图标样式。
    • 重置按钮改为从头重新加载当前播放模式。
  • 文档更新:
    • 精简中英文 README 与 CHANGELOG,去除重复的功能列表与宣传性表述。

v0.2.0 Update

Added

  • VCD 2.0 Classic PBC (Playback Control) State Machine:
    • Full binary parser for VCD/LOT.VCD (Location Table) and VCD/PSD.VCD (Play Sequence Descriptor), supporting PlayList, SelectionList, and EndList structures according to the White Book standard.
    • Event-driven PBC state machine supporting multi-level menus, track chains, wait delays, and automatic timeout transitions.
    • High-resolution still picture menu support (/SEGMENT/ITEMxxxx.DAT demuxing, decoding, and canvas rendering).
    • MPEG-1 motion video menu playback.
    • Dedicated "PBC" root menu button in the bottom control bar to return to selection menus.
  • Multi-Mode Adaptive Disc Architecture:
    • Automatic detection and switching between VCD 3.0 Interactive mode, VCD 2.0 Classic PBC mode, and VCD 1.0 Linear video playback.
    • Independent lifecycle management when switching modes.
  • Multi-Digit Numeric Keypad Buffering:
    • Numeric key buffering for remote control and keyboard navigation (buffers single digits if track count exceeds 9, waiting for Enter, a second digit, or a 2.0-second auto-confirm timeout).
    • Real-time status bar feedback during digit entry (e.g. 输入曲目: 1 (按 Enter 确认或等待)).
    • Direct numeric track selection in VCD 1.0 Linear mode.

Fixed

  • Track Playback Numeric Keypad Intro Video Jump:
    • Resolved an issue in VCD 2.0 mode where entering a track number (such as 1) during playback incorrectly jumped to the opening intro video (LID 1) via LOT lookup instead of the physical track. Now resolves matching PSD descriptors and preserves PBC return semantics.
  • Track List Timecode Separator:
    • Formatted track list timecode separator between seconds and frames/milliseconds as a dot . instead of a colon : (e.g. [05:02.70]), avoiding confusion with HH:MM:SS format.
  • PBC Menu State Lingering:
    • Cleared lingering PBC menu titles from the window title bar and status bar upon navigating into track video playback.
  • Home Button Activation Guard:
    • Disabled home button click activation when running outside of VCD 3.0 Interactive mode.
  • Drawer Close Button Glyph:
    • Replaced drawer close glyph with high-compatibility symbols to prevent missing glyph rendering on non-standard font systems.

Changed

  • Side Panel Expansion Window Sizing:
    • Automatically expands window width when opening the side panel drawer and restores width when closing, preventing canvas aspect ratio compression.
  • Bottom Control Bar Layout:
    • Moved playback mode switcher after the audio channel selector.
    • Compacted audio channel, playback order, and about buttons into icon controls.
    • Reset button now restarts the current active mode from the beginning.
  • Documentation:
    • Streamlined Chinese and English README documentation, removing duplicate feature listings and promotional phrasing.

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 09 Sep 18:20

v0.1.6 更新

新增 (Added)

  • 自定义窗口标题栏:
    • 基于 egui 渲染的自绘无边框窗口标题栏,高度与底部工具栏严格统一为 26.0px
    • 居中展示窗口标题与当前页面名称,支持标题栏区域拖拽移动窗口与双击最大化/还原切换。
    • 纯矢量绘制的窗口控制按钮(最小化、最大化/还原、关闭及悬停高亮),保证高 DPI 屏幕下的锐利渲染,无需依赖额外字形图标。
    • 完整的 8 方向边缘与四角无边框拖拽缩放手柄。
    • 窗口四周带有 1 像素微弱边框,提升无边框窗口的辨识度与层次感。
  • 状态提示区域:
    • 动态状态栏统一显示未加载引导、当前页面与视频流元数据、2 秒操作瞬态反馈以及悬停热区目标指示。

变更 (Changed)

  • 底部控制栏布局与播放器控件:
    • 底部控制面板重构为清晰的双行布局:第 1 行专用于光盘加载管理与常驻视频播放控制,第 2 行用于导航、调试开关与状态信息展示。
    • 视频播放控制按钮更新为精致的图标控件(/, ),支持悬停快捷键提示(Space, ESC)。
    • 进度条自动拉伸填充剩余可用宽度,右侧显示已播放时间与总时长。
    • 统一底部面板上下边距与分割线间距为 6.0px
    • 统一工具栏各元素与垂直分割线之间的水平间距为 8.0px

修复 (Fixed)

  • 交互脚本动画显示延时:
    • 在脚本虚拟执行机中为 DRAWIMAGE 指令加入标准的 300ms 显示延时让出机制,使多帧交互动画(如射击打击序列、五角星计分累加动效)能够平滑呈现,并与音效时长精确同步。
    • 在动画或延时执行期间禁用鼠标热区悬停与点击交互,防止连贯动画被打断。
    • 优化主循环画布纹理刷新逻辑,支持就地增量更新,消除不必要的 GPU 纹理句柄重新分配开销。
  • 热区悬停残留清理:
    • 点击 DAT 视频跳转目标及视频播放期间,立即清除遗留的热区悬停高亮状态。
  • 无头测试环境音频初始化异常:
    • 在无头持续集成环境(CI=true / GITHUB_ACTIONS=true)下自动绕过底层原生音频驱动初始化,防止因缺少硬件音频驱动导致的 0xc0000005 内存访问异常崩溃。

v0.1.6 Update

Added

  • Custom Window Title Bar:
    • Custom borderless window title bar rendered with egui, matching standard single toolbar height (26.0px).
    • Centered window title, responsive middle drag area, and double-click window maximize/restore toggle.
    • Crisp vector-drawn window control buttons (minimize, maximize/restore, close with hover highlight) to guarantee sharp rendering across high-DPI displays without font glyph dependencies.
    • Full 8-direction window edge and corner resizing handles with borderless viewport commands.
    • Subtle 1px outer frame border stroke for borderless window mode.
  • Unified Status Space:
    • Unified status zone dynamically showing idle guide text, active page and video stream metadata, 2-second transient action messages, and interactive cyan hover target indicators.

Changed

  • Bottom Toolbar Layout & Player Controls:
    • Reorganized the bottom panel into two functional rows: Row 1 dedicated to disc management and persistent video playback controls, Row 2 dedicated to navigation, debug toggles, and status information.
    • Playback buttons updated to clean icon-only controls (/, ) with hover tooltips and keyboard shortcuts (Space, ESC).
    • Expanded video seek slider to fill remaining width with elapsed/total duration displayed at the right.
    • Balanced vertical panel margins and separator gaps to a uniform 6.0px.
    • Unified horizontal spacing between toolbar elements and vertical separators to 8.0px.

Fixed

  • Interactive Script Animation Display Delay:
    • Implemented the standard 300ms display delay on DRAWIMAGE statements in the script virtual machine, enabling multi-frame interactive animations (e.g. target hit sequences, star score tallying) to render smoothly and synchronize with audio effects.
    • Suppressed hotspot mouse hover and click interactions while the script virtual machine is actively executing delays or animations to prevent interrupting playback.
    • Optimized GUI canvas texture refresh to update in-place without redundant GPU texture handle reallocations.
  • Hover Target Cleanup:
    • Cleared active hotspot hover indicators immediately upon clicking DAT video targets and during active video playback.
  • Audio Initialization in Headless Environments:
    • Automatically bypass native audio driver initialization when running under headless CI environments (CI=true / GITHUB_ACTIONS=true) to prevent 0xc0000005 access violation crashes.

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 07 Sep 18:30

Added

  • Composite Page Overlay Images:
    • Support parsing and compositing sub-images onto the base canvas for composite CHM pages (e.g. answer key overlay patch images AS011_*.YBM on exercise pages).
    • Preserved underlying background and base page hotspots when overlay documents have no conflicting click targets.
    • Automatic overlay state cleanup upon page navigation.
  • NTSC Video Stream Support:
    • Extended MPEG-1 video decoder and player to support NTSC dimensions (352x240 @ ~29.97/30.0 fps) alongside standard PAL (352x288 @ 25.0 fps).

Fixed

  • Underline Hotspot Hit-Testing:
    • Added upward click tolerance for thin underline hotspots (e.g. fill-in-the-blank questions in exercise pages), allowing clicks in the blank space directly above the underline to register properly.
  • Video Playback Concurrency & ESC Handling:
    • Resolved lock contention and deadlock when pressing the Escape key during active video playback, ensuring instant return to the preceding CHM page.

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 06 Sep 18:12

Added

  • Dynamic Variable Text & Score Displays (Chunk 14 TEXT):
    • Support parsing and rendering Chunk 14 dynamic variable text overlays directly onto the canvas.
    • Real-time variable formatting and score counter displays (e.g. tracking i_e scores in interactive game pages GAME051 and SCORE05X).
  • Hotspot Micro-Scripts (Chunk 13 MICRO):
    • Support executing inline micro-scripts embedded directly inside hotspot records (e.g. variable assignments and arithmetic like i_e=i_e+2).

Fixed

  • Conditional Opening Video Playback:
    • Made opening video playback strictly conditional on the presence of PlayMpeg symbols or explicit .DAT paths in AUTORUN.CLS, preventing unwanted playback of warning/audio tracks on discs without opening videos.
  • CHM Buffer & Comment Parsing:
    • Read length-prefixed image filenames at offset 0x60 in CHM Chunk 3 to prevent dirty buffer data corruption.
    • Preserved colons inside REM and ' comment statements during script instruction splitting.
    • Prevented automatic navigation on finished asynchronous background scripts so interactive pages remain open.

Changed

  • Collapsed virtual remote control panel by default on startup for a cleaner viewing experience.
  • Refreshed project documentation with pre-built binary installation instructions and development guides.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 05 Sep 20:40

Added

  • Disc Format Parsing Engine:
    • Support parsing disc root class descriptor files (AUTORUN.CLS / ENREACH.CLS) and resolving the initial startup page.
    • Support parsing compiled <COMPHTML> (.CHM) pages, including background image references, navigation jump tables, and polygon/rectangular button hotspots.
    • Support decoding <YUVBMP> (.YBM) 8-bit YUV palette images with conversion to RGBA.
  • VCDSCRIPT Scripting Engine:
    • Lexer and parser (AST) supporting arithmetic, comparison expressions, conditional branching (IF...THEN...ELSE), subroutine jumps (GOSUB...RETURN), and delay loops.
    • Virtual machine runtime (VM) supporting variable store, remote key waiting (CALL IRKEY), pseudo-random number generation (CALL RAND), and karaoke playlist commands (KARAOKE command set).
    • Built-in typo tolerance and alias support for legacy disc script syntax variations.
  • Multimedia Playback:
    • CD-XA sector demuxer (RIFF CD-XA and RAW PS stream demuxing) for MPEG-1 video stream extraction.
    • C bridge integration with pl_mpeg for MPEG-1 video frame decoding and MPEG-1 Layer II audio decoding.
    • Timestamp-based (PTS) audio/video synchronization, playback control (play/pause), and seek functionality.
    • Background audio loop playback (BGSOUND) and on-demand button sound effects (.WAV).
  • Modern User Interface:
    • Cross-platform graphical user interface built with egui and eframe, supporting DPI scaling and aspect-ratio-preserving rendering.
    • Interactive hotspot visual highlighting and mouse hover/click interaction.
    • Floating video control overlay with play/pause, seek slider, and elapsed/total time display.
    • Collapsible virtual remote control panel supporting physical keyboard shortcuts and simulated remote key codes.
    • Disc folder picker and empty-disc placeholder screen.
  • Testing & Continuous Integration:
    • Self-contained, copyright-clean mock disc fixtures (tests/fixtures/mock_disc) allowing 100% of test suites to run offline without physical disc drives.
    • Comprehensive test suite covering 47 unit and integration tests across format parsing, VM execution, audio mixing, and video playback.
    • GitHub Actions CI workflow supporting automated check, test, and clippy runs on Windows and Ubuntu.