← 목록
기타 2026-06-10 4KB 읽기 4분

하늘나라 동적화면 구현 + 맥/윈도우 앱 구동 검증

개요

크라우니OS 하늘나라 GUI를 동적 화면(event loop + 시간대 애니메이션)으로 구현하고, 크라우니VM(crownyc)이 맥(Cocoa)과 윈도우(Win32)에서 앱처럼 구동됨을 실증했다. W9(한선씨-정의 명령버퍼)에 이어 W10. "기존 개발 도구 활용 + 최적화·실용화" 원칙.

무엇을 했는가

1. 동적 화면 (한선씨, 입력+애니메이션)

  • apps/동적하늘나라앱.한선 — 인터랙티브: 이벤트대기()(블로킹) 루프로
클릭(타입1)→아이콘 히트 검사→선택 하이라이트, 키(타입2)→시간대 모드 전환, 종료(7)→탈출.
  • apps/동적데모.한선 — 자가구동: 6프레임 시간대 순환(새벽→낮→노을→밤), 해/달 원 이동,
대기(1)초/프레임, 이벤트확인()(논블로킹)으로 종료 감지.

2. 맥 실증 (라이브 네이티브 윈도우)

  • crownyc_win --window run → Cocoa 윈도우(CrownyOS v4) 열림.
  • 실행 모델: VM=별도 pthread, 메인스레드 [NSApp run], 윈도우 tick(33ms)이
setNeedsDisplay로 fb 상시 refresh → VM이 fb_rgb 갱신 시 자동 반영.
  • 검증: screencapture -R40,479,640,512 윈도우 영역 전후 캡처 → 하늘색 프레임마다
212~232 변동 = 동적 렌더 확인. 눈으로 HANEULNARA + 3×3 TOAU 런처 + 이동하는 해 확인.

3. 윈도우 실증 (Win32 .exe 크로스컴파일)

  • crownyc_window_win32.c(기존, GDI): WM_PAINT→SetDIBitsToDevice present,
WM_TIMER 30fps InvalidateRect, VM=_beginthreadex 스레드 — 맥과 동일 아키텍처.
  • mingw-w64로 crownyc.c + win32.c + compositor/ui/theme.cPE32+ x86-64 1.28MB .exe.
  • 재현 스크립트: crownyc/build-win.sh.

관련 파일

  • /Users/ef/CrownyOS/crownyc/apps/동적하늘나라앱.한선, 동적데모.한선
  • /Users/ef/CrownyOS/crownyc/crownyc_window_win32.c (clipboard/ct_draw_text GDI 추가)
  • /Users/ef/CrownyOS/crownyc/win32_compat.h (신규: d_type dirent + mkdir shim)
  • /Users/ef/CrownyOS/crownyc/crownyc.c (_WIN32 블록 POSIX shim 확장)
  • /Users/ef/CrownyOS/crownyc/build-win.sh (신규)
  • 배포: /Users/ef/crowny-downloads/public/platforms/windows-x86/ (exe + 동적앱 toau)
  • SHA256(crownyos.exe): 3bc95b2e3cef2ff45ab2933c79941e62edb94fa3af9f871e1ccdd466b12e4b52
  • 윈도우 포팅 함정 (재사용)

    1. struct pollfd — winsock2가 정의하므로 자체 재정의 제거(poll은 매크로 stub).
    2. POSIX shim: mkdir(p,m)→_mkdir(p), realpath→_fullpath, fsync→_commit,
    ftruncate→_chsize, getpid→_getpid, sleep(s)→Sleep(s*1000), RTLD_LOCAL=0.
    1. fcntl 비차단 → crowny_fcntlioctlsocket(FIONBIO). inet_aton→inet_addr shim.
    2. regmatch_t는 int 아닌 {rm_so, rm_eo} 구조체.
    3. setsockopt optval 포인터 → -Wno-incompatible-pointer-types.
    4. 보조 .c는 win32_compat.h(FindFirstFile 기반 d_type dirent)로 dirent/mkdir 해결.
    5. clipboard_get/set, ct_draw_text는 Mac ObjC 전용 → win32.c에 GDI 구현 추가.
    6. 모든 수정은 #ifdef _WIN32 가드 → Mac 빌드 무회귀(재빌드 확인).

    잔여 이슈

    • wine 미설치로 .exe 실기 실행 스크린샷은 미수행(빌드+동일 아키텍처로 검증 대체). 실 윈도우/VM 권장.
    • fb_rgb 색 순서(맥 RGBA vs 윈도우 DIB BGR) 실기 교차 확인 필요.
    • 컴포지터 텍스트(ct_draw_text) GDI 렌더 실기 품질 확인.
    • 동적데모 새벽/낮 하늘 보간식이 녹색 편향 — 색 곡선 튜닝 여지.