src/has the firmware entry (main.cpp) and modules underaudio/,common/,dsp/,mdx/,opm/,opn/,ui/, andvgm/.data/stores LittleFS assets (for example.vgm/.vgztracks) uploaded to the device filesystem.lib/is optional for local libraries; YMFM is pulled vialib_depsinplatformio.ini.platformio.inidefines theenv:m5sticks3PlatformIO config;.pio/and most.vscode/files are generated.
pio run(orpio run -e m5sticks3) builds the firmware.pio run -t uploadflashes firmware;pio run -t uploadfsflashesdata/to LittleFS.pio device monitor -b 115200opens serial logs (matchesmonitor_speed).
- C++17 is required (
-std=gnu++17); keep allocations predictable for embedded targets. - 2-space indentation, compact functions, lower_snake_case filenames; headers
.hpp, sources.cpp. - Prefer
constexpr/staticwhere practical for stability and clarity.
- No automated tests configured; validate by building, flashing, and checking serial output + UI behavior on-device.
- No local git history exists here; if using GitHub, create/update an Issue for non-trivial changes.
- Issue titles:
[Bug][<Area>] <component>: <symptom>/[Feat][<Area>] <component>: <what>/[Chore] <component>: <what>. - Issue body: Background/Goal, Current behavior, Expected behavior, Steps to reproduce (bugs), Acceptance criteria, Notes/logs/links.
- Labels:
type: bug|feature|chorerequired; optionalpriority: P0|P1|P2,area: ui|backend|infra|docs. - Branches:
fix/<issue>-<slug>,feat/<issue>-<slug>,chore/<issue>-<slug>. - PR title:
<type>(<scope>): <summary> (#<issue>), type infix|feat|chore|refactor|docs|test. - PR description: link issue (
Fixes #<issue>only when complete, otherwiseRefs #<issue>), include checklist (manual test, automated tests, impact/risks); delete branches after merge. - Commit messages: short, imperative subjects; add a brief body when behavior changes.
- Keep
data/assets small; LittleFS size is limited bydefault_8MB.csv. - Document board setting changes in
platformio.inicomments.