Skip to content

picovave 52257541 — SMK-37 Pro PICO-8 펌웨어

Choose a tag to compare

@acidsound acidsound released this 21 Oct 16:31
· 9 commits to main since this release

picovave — M-Vave SMK-37 Pro(AC791N/WL82)에서 PICO-8 카트를 실행하는 펌웨어 패키지입니다.

이 릴리스의 빌드 태그는 52257541 입니다(기기가 --ask에 보고하는 값).

설치물

  • picovave-52257541.fwsc — 651,271 B
  • sha256: 41d658aefbfd66a816f72dc667aba01e80588e3918923b097d08ace13b93b43d
  • 패키지가 쓰는 플래시는 앱 슬롯(0x04000..0x9CFFF)뿐입니다 — VM/SLOOP 카트 스토어 · BTIF · USR · key_mac 은 건드리지 않습니다.

설치 / 복구 — docs/RECOVERY.md (jl-uboot-tool 또는 USB-OTA)
브라우저에서 바로 플래싱 — https://acidsound.github.io/picovave/

이번 변경

  • 워치독 안정성 & 32초 타임아웃:
    • 하드웨어 워치독 타임아웃을 ~8초(0x0Du)에서 최댓값인 ~32초(0x0Fu)로 상향.
    • vTaskDelay() 내 20ms 청크별 워치독 피딩 및 p8_post_flip() 프레임 경계 워치독 피딩 추가 (fadeout() 루프 지속 시 리셋 방지).
    • malloc() 할당 주기마다 워치독 피딩을 적용하여 160MHz pi32v2 CPU 환경에서 절차적 맵 생성(mapgen/genfloor) 등 장시간 순수 연산 루프가 실행되어도 워치독 리셋 없이 정상 완료(Bow & Mobs 실기 클리어 검증 완료).
  • 메모리 할당기(alloc.c) 피크 스파이크 억제:
    • realloc 축소 시 잔여 바이트를 즉시 프리 블록으로 분할 반납(Split-on-shrink).
    • realloc 확장 시 선행/후행 블록과의 제자리 양방향 병합(Coalescing)을 지원하여 대형 테이블 재할당 시 더블 얼로케이션 피크 스파이크 방지.
    • 가비지 컬렉터 파라미터(LUAI_GCPAUSE=100, LUAI_GCMUL=300) 튜닝으로 414 KB 기기 아레나에서의 메모리 반환 속도 극대화.
  • 디스플레이 및 30fps 프레임 버짓 달성:
    • ST7789 패널 SPI 클럭을 60 MHz(LCD_BAUD=0u)로 고속화하여 풀프레임 전송 시간을 30.7 ms에서 15.3 ms로 단축.
    • 더티 행(Dirty rows) 기반 부분 갱신 및 SPI 더블 버퍼링 적용으로 다중 스프라이트 및 3D 풀스크린 씬에서의 프레임 드랍 해소.
    • 카트 언로드/리셋 시 프레임버퍼 및 화면 클리어 처리로 카트 전환 시 잔상 제거.
  • 바이트코드(PVB1) 지원 및 웹 시뮬레이터 연동:
    • 웹 페이지에서 Lua 바이트코드를 사전 컴파일하여 업로드함으로써 기기 부팅 시 메모리/CPU 부담 절감.
    • 웹 릴리스(GitHub Pages)에 52257541 펌웨어 및 새 시뮬레이터 WASM 반영.

실기 검증

  • SMK-37 Pro 실기 플래싱 및 bownmobs-0 1층 계단 도달 후 2층 진입 및 최종 클리어 완료.
  • tools/verify_final.py 80여 개 무결성/아레나(415,696 B)/할당기 스트레스 검사 전수 통과 (all checks passed).