[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1960":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":37,"discoverSource":38},1960,"cydintosh","likeablob\u002Fcydintosh","likeablob","Cydintosh: Little 68k Brother is watching your Smart Home 👀","",null,"C",162,15,2,0,4,7,17,12,3.61,"MIT License",false,"main",true,[26,27,28,29,30,31,32,33],"cheap-yellow-display","cyd","emulator","esp32","home-assistant","macintosh","mqtt","platformio","2026-06-12 02:00:35","\u003Cdiv>\n\u003Cimg src=\".\u002Fassets\u002Fcydintosh_front.jpg\" height=\"300px\">\n\u003Cimg src=\".\u002Fassets\u002Fcydintosh_front_3.jpg\" height=\"300px\">\n\u003C\u002Fdiv>\n\n# Cydintosh\n\nA Macintosh Plus emulator port for Cheap-Yellow-Display board (ESP32), with some little 68k Mac applications.\n\n- Macintosh Plus emulation using umac and Musashi 68k emulator\n- 240x320 LCD with touchpad emulation for mouse control\n- *Homebrew* Mac applications built with Retro68 (Weather, WiFi status, etc.)\n- IPC between Mac and ESP32 (WiFi scan, MQTT weather data)\n\n## Hardware BOM\n\n| Component                | Quantity | Notes                                         |\n| ------------------------ | :------- | :-------------------------------------------- |\n| CYD2USB (ESP32-2432S028) | 1        | ESP32 with ILI9341 240x320 LCD, XPT2046 touch |\n| M2x3 Self-Tapping screw  | 4        | For enclosure assembly                        |\n\n> Note: The enclosure is only compatible with the [CYD2USB](https:\u002F\u002Fgithub.com\u002Fwitnessmenow\u002FESP32-Cheap-Yellow-Display\u002Fblob\u002Fmain\u002Fcyd.md) (Type-C + micro USB) variant.\n\n## Getting Started\n\n1. **Flash**: See [Building](#building) to build and flash the firmware\u002FROM\u002Fdisk image\n2. **Print**: 3D print the enclosure from [`.\u002Fenclosure`](.\u002Fenclosure)\n3. **Assemble**: Mount the CYD into the enclosure and secure with four M2x3 self-tapping screws\n\n## Prerequisites for Emulator\n\n- Mac Plus ROM v3 (4D1F8172, 128KB) `rom.bin`\n- System 3.2 bootable disk image (400KB)\n- HFS disk image (800KB `cyd_800k.dsk` provided, includes pre-built Mac apps for Cydintosh)\n\nSee also the [pico-mac](https:\u002F\u002Fgithub.com\u002Fevansm7\u002Fpico-mac) repo for ROM and disk image requirements.\n\n## Building\n\n```bash\n# Clone and initialize submodules\ngit clone --recursive https:\u002F\u002Fgithub.com\u002Flikeablob\u002Fcydintosh\ncd cydintosh\n\n# If you cloned without --recursive, initialize submodules:\ngit submodule update --init --recursive\n\n# Setup m68k configuration\n(cd external\u002Fumac\u002Fexternal\u002FMusashi && ln -sf ..\u002F..\u002F..\u002F..\u002Finclude\u002Fm68kconf.h m68kconf.h)\n\n# Generate m68kops.c\n(cd external\u002Fumac && make prepare)\n\n# Create user configuration\ncp include\u002Fuser_config.h.tmpl include\u002Fuser_config.h\n# Edit include\u002Fuser_config.h with your WiFi\u002FMQTT settings\n\n# Generate and flash patched ROM\n# NOTE: Specify the correct serial port depending on your setup\u002FOS\npython3 tools\u002Fgenerate_patched_rom.py path\u002Fto\u002From.bin -o rom_patched.bin\nesptool --port \u002Fdev\u002FttyUSB0 write_flash 0x210000 rom_patched.bin\n\n# Prepare disk image\n# The cyd_800k.dsk includes pre-built Mac applications (CydCtl, Weather, WiFi).\n# To create a fresh disk with System 3.2 using Mini vMac emulator:\n#   .\u002FMini\\ vMac system3.dsk cyd_800k.dsk\n#   Then copy System folder from system3.dsk to cyd_800k.dsk in the emulator\n\n# Finally, copy the prepared disk to data\u002Fdisk.img\ncp cyd_800k.dsk data\u002Fdisk.img\n\n# Build and upload firmware\n# For the CYD (micro USB) variant, use `-e cyd`\n# Add a new [env:xxx] section to platformio.ini for other minor variants.\npio run -e cyd2usb -t upload\n\n\n# Upload disk image\npio run -e cyd2usb -t uploadfs\n```\n\nTo use the Weather app, continue with [Home Assistant Setup](#home-assistant-setup).\n\n## Development\n\n```bash\n# Format tracked C\u002FC++ files\nmise run format\n\n# Check formatting without changes\nmise run format:check\n\n# Watch serial logs\npio device monitor\n```\n\n## Mac Applications\n\n*Homebrew* Mac applications for Cydintosh.\n\n| App     | Description                           |\n| ------- | ------------------------------------- |\n| Weather | Weather display via MQTT              |\n| CydCtl  | Hardware control (backlight, RGB LED) |\n| WiFi    | WiFi status and scan                  |\n\n\u003Cdiv>\n\u003Cimg src=\".\u002Fassets\u002Fcydintosh_app_weather.jpg\" height=\"300px\">\n\u003Cimg src=\".\u002Fassets\u002Fcydintosh_app_cydctl.jpg\" height=\"300px\">\n\u003Cimg src=\".\u002Fassets\u002Fcydintosh_app_wifi.jpg\" height=\"300px\">\n\u003C\u002Fdiv>\n\n### ESP32-Mac IPC Interface\n\nThe ESP32 exposes a command interface via memory-mapped region at `0xF00000`. Mac applications read\u002Fwrite this shared memory to communicate with ESP32:\n\n| App     | Commands                                           |\n| ------- | -------------------------------------------------- |\n| Weather | `GET_WEATHER_DATA` ...                             |\n| CydCtl  | `GET_HW_STATE`, `SET_BACKLIGHT`, `SET_LED_RGB` ... |\n| WiFi    | `GET_WIFI_LIST`, `GET_WIFI_STATUS` ...             |\n\nSee `include\u002Fumac_ipc.h` and `mac-app\u002Fcommon\u002Fesp_ipc.h` for full command definitions.\n\n### Weather App\n\n```mermaid\nflowchart LR\n    HA[\"Home Assistant\u003Cbr\u002F>(Automation)\"] -->|\"Publish\u003Cbr>(1h)\"| MB[(\"MQTT Broker\")]\n    MB -->|\"Data\"| ESP[\"ESP32\"]\n    ESP -->|\"Data\"| MAC[\"Weather App\"]\n    ESP -.->|\"Subscribe\"| MB\n    MAC -.->|\"Polling\u003Cbr>(30s)\"| ESP\n    \n    linkStyle 0,1,2 stroke:#4CAF50,color:#4CAF50\n    linkStyle 3,4 stroke:#999\n```\n\n1. Home Assistant automation publishes weather data to MQTT every hour\n2. ESP32 subscribes to MQTT topics and stores received data\n3. Weather App polls ESP32 via IPC every 30s and renders the data\n\n#### Home Assistant Setup\n\nYou need to set up MQTT and a weather integration in Home Assistant to use the Weather app.\n\n- [MQTT Integration](https:\u002F\u002Fwww.home-assistant.io\u002Fintegrations\u002Fmqtt\u002F)\n- [Weather Integrations](https:\u002F\u002Fwww.home-assistant.io\u002Fintegrations\u002F#weather)\n- [Definitive guide to Weather integrations (Community)](https:\u002F\u002Fcommunity.home-assistant.io\u002Ft\u002Fdefinitive-guide-to-weather-integrations\u002F736419)\n\n\n1. In Home Assistant, go to **Settings > Automations > Create Automation > Edit YAML**\n2. Paste the content of [`homeassistant\u002Fweather_to_mqtt.yaml`](homeassistant\u002Fweather_to_mqtt.yaml)\n3. Edit the variables:\n   ```yaml\n   variables:\n     weather_entity: \"weather.home\"\n     topic_prefix: \"home\u002Fweather\"\n     location: \"Chicago\"\n   ```\n\nOptionally, add the [`homeassistant\u002Fbrightness_schedule.yaml`](homeassistant\u002Fbrightness_schedule.yaml) automation for time-based display dimming.\n\n#### ESP32 Configuration\n\n- WiFi, MQTT broker credentials, and weather display units etc. are configured in [`include\u002Fuser_config.h`](include\u002Fuser_config.h.tmpl).\n- The device expose entities (e.g. display brightness) via [HA MQTT Discovery](https:\u002F\u002Fwww.home-assistant.io\u002Fintegrations\u002Fmqtt\u002F#mqtt-discovery).\n\n```c\n...\n#define WIFI_SSID       \"YOUR_WIFI_SSID\"\n#define WIFI_PASSWORD   \"YOUR_WIFI_PASSWORD\"\n\n#define MQTT_BROKER_URL \"mqtt:\u002F\u002F192.168.1.100:1883\"\n#define MQTT_USERNAME   \"YOUR_MQTT_USERNAME\"\n#define MQTT_PASSWORD   \"YOUR_MQTT_PASSWORD\"\n...\n\n#define HA_DISCOVERY_PREFIX  \"homeassistant\"\n...\n\n#define WEATHER_TEMP_UNIT \\\n    \"\\xA1\"                \\\n    \"C\"\n```\n\n### Updating the Disk Image Manually\n\n```bash\n# Rebuild applications and update disk image\n.\u002Ftools\u002Fupdate-disk.sh data\u002Fdisk.img\n\n# Re-upload disk image\npio run -e cyd2usb -t uploadfs\n```\n\n## Gallery\n\n\u003Cdiv>\n\u003Cimg src=\".\u002Fassets\u002Fcydintosh_front_3.jpg\" height=\"300px\">\n\u003Cimg src=\".\u002Fassets\u002Fcydintosh_back.jpg\" height=\"300px\">\n\u003C\u002Fdiv>\n\n## Acknowledgements\n\n- [Musashi](https:\u002F\u002Fgithub.com\u002Fkstenerud\u002FMusashi) - m68k emulator\n- [umac](https:\u002F\u002Fgithub.com\u002Fevansm7\u002Fumac) - Mac Plus emulator core\n- [pico-mac](https:\u002F\u002Fgithub.com\u002Fevansm7\u002Fpico-mac) - Reference implementation for RP2040\n- [ESP32-Cheap-Yellow-Display](https:\u002F\u002Fgithub.com\u002Fwitnessmenow\u002FESP32-Cheap-Yellow-Display) - CYD community\n- For dependencies, see also src\u002Fidf_component.yml\n\n## License\n\n- **Software**: MIT\n- **External libraries**: See respective licenses in `external\u002F`\n\n## TODO\n\n- [ ] Better icons for mac-apps\n\n## Related Projects\n\n- [likeablob\u002Fdenki-kurage](https:\u002F\u002Fgithub.com\u002Flikeablob\u002Fdenki-kurage): Another CYD-based gadget\n- Macbar (WIP):  ESP32-S3 port utilizing PSRAM\n- Macbento (WIP)\n","Cydintosh 是一个基于 Cheap-Yellow-Display 板（ESP32）的 Macintosh Plus 模拟器项目，旨在为智能家居环境提供复古风格的显示和控制体验。它利用 umac 和 Musashi 68k 模拟器实现 Macintosh Plus 的仿真，并通过 240x320 LCD 屏幕与触控板模拟鼠标操作。此外，该项目还支持自定义的 Mac 应用程序开发，如天气预报、WiFi 状态等，并能通过 IPC 机制在 Mac 和 ESP32 之间交换信息，例如 WiFi 扫描结果和 MQTT 天气数据。Cydintosh 适合于对复古计算设备感兴趣或希望以独特方式展示智能家居状态的用户。","2026-06-11 02:47:03","CREATED_QUERY"]