ewrogers/megadev-skills

megadev-raster

Implement bounded HBlank water/reflection and split-screen effects in Megadev Sega CD games, preserving VBlank ownership, interrupt safety and palette/scroll budgets.

查看源码

使用方法

  1. 复制安装命令,在自己的智能体环境安装前先检查源码包。
  2. 从原始文档核对所需工具、凭据和支持的宿主。
  3. 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/ewrogers/megadev-skills --skill megadev-raster

开始前需了解

  • 安装不包含模型订阅、API 额度或访问文件的权限。
  • 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

Megadev raster effects

Use raster effects when the design needs different display state within a frame. Mega CD still uses the Mega Drive VDP: extra CPUs, Word RAM and the ASIC do not add palettes, planes, sprite capacity or a second independent display. The Labs' scenery, audio, controls and split sizes are illustrative.

a handler or changing VDP state during display.

line scroll, palette pairs, camera transforms and seam/sprite budgets.

  • Read Validation for failure tests, regional builds,

emulator checks and physical-hardware limits.

Inspect actual source in ewrogers/megadev:latest. The Lab's rt_* functions and raster_* assembly are application code, not Megadev raster APIs. Do not import SGDK interrupt, DMA-queue or sprite-engine calls.

Essential rules:

  • Reuse the game's VBlank, input, audio and Main/Sub service owners. One owner

schedules VDP access; an H handler must not compete with foreground uploads.

  • Build an immutable frame outside interrupts. Commit its line, scroll, palette

and seam sprites together, then latch a dedicated HBlank plan in VBlank.

  • Restore dry/top state early in VBlank. Program the next counter before bulk

uploads, finish within a measured blank interval, then arm the current epoch. Reject pending blank-edge/early interrupts without consuming that plan.

  • Keep HBlank assembly short and bounded. Save used registers, return with RTE,

and perform no BIOS, C, allocator, CD or decoder calls there. Bound edge polling and interrupt masking; reject late writes rather than coloring another frame.

  • Minimize active-display CRAM writes. Prefer prepared palette banks and line

scroll; if needed, preload a tiny color pair and write on a fresh HBlank. A foam sprite can hide the seam, but cannot excuse an unbounded palette upload.

  • Split-screen shares planes, SAT, palettes and VRAM. Transform and clip sprites

for each view, budget scanlines, and explicitly reserve divider rows.

  • Measure repeated movement and boundary cases, not just a fixed waterline.

Emulator success does not prove CRAM-dot absence or interrupt/bus timing on physical hardware. Offer an effect-off comparison and a simpler fallback.

Raster Labs generate separate water and split discs with scripts/create_project.py --demo water|split. The renderer uploads resident art once and bounds steady-state DMA. Reuse megadev-graphics for general VDP rendering, megadev-system for Main/Sub work, megadev-audio for audio ownership and megadev-performance/megadev-hardware for broader qualification. This skill owns scanline scheduling and the within-frame transforms, not those systems.

按任务相关推荐

来自同一仓库

更多 Skills

全部 Skills