|
2 | 2 |
|
3 | 3 | ## v0.1.0 — 2026-05-11 |
4 | 4 |
|
5 | | -Initial release. Faithful port of dshadoff's `PCE_Mouse_Test` baseline |
6 | | -as a joypad-tester subdir. |
7 | | - |
8 | | -- Detects 2-button / 6-button PC Engine pads via `joy(0..4)` and |
9 | | - reports raw bit patterns for all five potential controller slots |
10 | | - (single pad on port 0, or up to five pads through a multitap). |
11 | | -- Detects the PC Engine mouse, reports `mouse_x() / mouse_y()` per-frame |
12 | | - deltas, and accumulates them into absolute X / Y coordinates. |
13 | | -- **I** button (or right mouse button) toggles between mouse-enabled |
14 | | - mode (decoded mouse state) and raw controller mode (raw joybus |
15 | | - reads). |
| 5 | +Initial release. Builds on dshadoff's `PCE_Mouse_Test` baseline, |
| 6 | +extended with a labelled main screen and an idle screensaver matching |
| 7 | +the GameCube and GBA testers in this repo. |
| 8 | + |
| 9 | +### Main screen |
| 10 | + |
| 11 | +- Yellow title bar ("Joypad Tester - PC Engine") rendered on its own |
| 12 | + BG palette so it stays distinct from the live data. |
| 13 | +- White P1..P5 + Mouse readouts in a two-column layout. P1..P5 cover |
| 14 | + the five potential PCE controller slots (single pad on port 0, or |
| 15 | + up to five pads through a multitap). |
| 16 | +- Mouse section reports `mouse_exists()`, per-frame `mouse_x()` / |
| 17 | + `mouse_y()` deltas, and an accumulated absolute X / Y. |
| 18 | +- Cyan footer: "Press I button or right-click to toggle mouse mode." |
| 19 | + Same toggle behaviour as upstream PCE_Mouse_Test. |
| 20 | + |
| 21 | +### Idle screensaver |
| 22 | + |
| 23 | +- After 30 seconds of inactivity, the screen clears and the 64×64 |
| 24 | + joypad logo bitmap bounces across the display, color-cycling |
| 25 | + through red → green → yellow → blue → magenta → cyan → white on |
| 26 | + each wall bounce. Same artwork, palette, and motion cadence as |
| 27 | + the GameCube and GBA testers. |
| 28 | +- Logo is rendered via four 32×32 hardware sprites in a 2×2 grid |
| 29 | + (PCE 4bpp planar format). Sprite data is generated by |
| 30 | + `buildtools/make_logo.py` from `pce/branding/logo_64.png` (a |
| 31 | + hand-editable 64×64 1-bit PNG), or — when no hand-edit exists — |
| 32 | + rasterised at 64×64 from `joypad/branding/logo_solid.svg` via |
| 33 | + `rsvg-convert`. |
| 34 | +- Any input wakes the screensaver and restores the main display. |
| 35 | + |
| 36 | +### Build / toolchain |
| 37 | + |
16 | 38 | - Builds to `joypad-tester.pce` via a Docker image we maintain |
17 | 39 | (`pce/buildtools/Dockerfile`, HuC pinned to `uli/huc@52a556a`). |
18 | | -- Source file: `pce/src/joypad_tester.c`. Includes upstream MIT |
19 | | - copyright header. |
| 40 | +- Source: `pce/src/joypad_tester.c`. Upstream MIT copyright header |
| 41 | + preserved. |
| 42 | +- HuC tokenizer gotchas documented in the source header: |
| 43 | + comments must be pure ASCII (no em-dashes / curly quotes), and |
| 44 | + initialiser trailing commas are not accepted. |
20 | 45 |
|
21 | 46 | ### Known limitations |
22 | 47 |
|
23 | | -- No on-screen button labels yet — bits are shown as raw hex. The |
24 | | - GameCube tester's per-port live readout style will land in a follow- |
25 | | - up. |
26 | | -- No accessory detection / rumble (PCE has no equivalent on the joybus). |
| 48 | +- No per-port button labels yet — joy state is still a raw 16-bit |
| 49 | + hex bit pattern (matching upstream). A labelled per-port readout |
| 50 | + in the style of the GameCube tester is planned for v0.2.0. |
| 51 | +- No accessory detection or rumble (PCE has no equivalent on the |
| 52 | + joypad protocol). |
0 commit comments