{"id":13514219,"url":"https://github.com/punesemu/puNES","last_synced_at":"2025-03-31T03:30:24.848Z","repository":{"id":37396623,"uuid":"43243508","full_name":"punesemu/puNES","owner":"punesemu","description":"Qt-based Nintendo Entertaiment System emulator and NSF/NSF2/NSFe Music Player (Linux, FreeBSD, OpenBSD and Windows)","archived":false,"fork":false,"pushed_at":"2024-12-14T19:48:17.000Z","size":101513,"stargazers_count":688,"open_issues_count":46,"forks_count":43,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-03-31T01:06:17.003Z","etag":null,"topics":["6502","c","c-plus-plus","clang","d3d9","emulation","emulator","famicom-disk-system","famicom-emulator","freebsd","linux","nes","nes-emu","nes-emulator","nintendo-nes","nsf","nsfe","openbsd","opengl","windows"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/punesemu.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"punesemu","patreon":null,"open_collective":null,"ko_fi":"punesemu","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.me/punesemu"]}},"created_at":"2015-09-27T11:06:19.000Z","updated_at":"2025-03-30T21:15:02.000Z","dependencies_parsed_at":"2023-10-23T20:29:14.351Z","dependency_job_id":"46a328b0-6bfa-4ae4-8c97-faa34af8fa9b","html_url":"https://github.com/punesemu/puNES","commit_stats":{"total_commits":2291,"total_committers":22,"mean_commits":"104.13636363636364","dds":0.0336097773897861,"last_synced_commit":"315c6d3fc4137a111ac54f9f8bab33d70f1a9f34"},"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/punesemu%2FpuNES","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/punesemu%2FpuNES/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/punesemu%2FpuNES/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/punesemu%2FpuNES/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/punesemu","download_url":"https://codeload.github.com/punesemu/puNES/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246413377,"owners_count":20773053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["6502","c","c-plus-plus","clang","d3d9","emulation","emulator","famicom-disk-system","famicom-emulator","freebsd","linux","nes","nes-emu","nes-emulator","nintendo-nes","nsf","nsfe","openbsd","opengl","windows"],"created_at":"2024-08-01T05:00:50.006Z","updated_at":"2025-03-31T03:30:24.837Z","avatar_url":"https://github.com/punesemu.png","language":"C","funding_links":["https://github.com/sponsors/punesemu","https://ko-fi.com/punesemu","https://www.paypal.me/punesemu","https://paypal.me/punesemu"],"categories":["Home Game Console Emulators","Nintendo Entertainment System/Famicom"],"sub_categories":["Nintendo"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/14859058/132302943-a466d3d5-75c2-4bac-b0b2-7f0aeb8c058d.png\" alt=\"puNES\"/\u003e\u003cbr\u003e\n\u003c/p\u003e\n\u003ch3 align=\"center\"\u003eQt-based Nintendo Entertainment System emulator and NSF/NSF2/NSFe Music Player\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/punesemu/puNES/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/release/punesemu/puNES.svg?label=latest%20release\" alt=\"GitHub release\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/punesemu/puNES/blob/master/COPYING\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/punesemu/puNES.svg\" alt=\"License\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://crowdin.com/project/punes\"\u003e\n    \u003cimg src=\"https://badges.crowdin.net/punes/localized.svg\" alt=\"Crowdin\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/punesemu/puNES\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/languages/code-size/punesemu/puNES?style=flat\" alt=\"GitHub code size in bytes\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.codefactor.io/repository/github/punesemu/punes/overview/master\"\u003e\n    \u003cimg src=\"https://www.codefactor.io/repository/github/punesemu/punes/badge/master\" alt=\"CodeFactor\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://repology.org/project/punes/versions\"\u003e\n    \u003cimg src=\"https://repology.org/badge/tiny-repos/punes.svg\" alt=\"Packaging status\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href='https://flathub.org/apps/details/io.github.punesemu.puNES'\u003e\n    \u003cimg width='180' height='60' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.svg'/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## :floppy_disk: Work in Progress (WIP) Builds [![Build status](https://github.com/punesemu/puNES/actions/workflows/build.yml/badge.svg)](https://github.com/punesemu/puNES/actions)\n\nThese executables are always updated to the latest commit:\n\n- Linux AppImage : :link:[`x86_64`](https://nightly.link/punesemu/puNES/workflows/build/master/puNES-x86_64.AppImage.zip)\n- Windows 32 bit : :link:[`OpenGL`](https://nightly.link/punesemu/puNES/workflows/build/master/punes32.wip.opengl.zip) - :link:[`D3D9`](https://nightly.link/punesemu/puNES/workflows/build/master/punes32.wip.d3d9.zip)\n- Windows 64 bit : :link:[`OpenGL`](https://nightly.link/punesemu/puNES/workflows/build/master/punes64.wip.opengl.zip) - :link:[`D3D9`](https://nightly.link/punesemu/puNES/workflows/build/master/punes64.wip.d3d9.zip)\n\nNotes:\n\n- WARNING save states of version 0.110 or earlier are no longer compatible.\n- Due to the many changes I'm making to the core of the emulator, new bugs may have been introduced, if you find that the roms no longer work properly compared to version 0.110, please let me know.\n- 32 bit versions are Windows XP compatible.\n\n## :beer: Support\n\nIf you want buy me a beer :\n\n[![GitHub Sponsors](https://img.shields.io/badge/GitHub-Donate-EA4AAA?style=for-the-badge\u0026logo=githubsponsors)](https://github.com/sponsors/punesemu)\n[![PayPal](https://img.shields.io/badge/PayPal-Donate-blue?style=for-the-badge\u0026logo=paypal)](https://paypal.me/punesemu)\n[![kofi](https://img.shields.io/badge/Ko--Fi-Donate-orange?style=for-the-badge\u0026logo=ko-fi)](https://ko-fi.com/punesemu)\n\n## Multilingual Support\n\nA big thank you to everyone who contributed to the translations:\n\n- Arabic\n- Chinese\n- English\n- French\n- German\n- Hungarian\n- Italian\n- Polish\n- Portuguese\n- Russian\n- Spanish\n- Turkish\n\n### Help with Translations [here](https://crowdin.com/project/punes)\n\n## :camera: Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/435ad06b-ec4d-4601-84d1-bf444281afe2\" width=\"400\" alt=\"puNES main window\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/1651ed42-fc22-4d9f-945d-7869c66fb1dd\" width=\"400\" alt=\"puNES NSF2 Player\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/da5db672-86e4-4345-a944-687587d04391\" width=\"400\" alt=\"puNES Slot Preview\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/ac74652d-d71d-4378-9dd0-cd894b133ae7\" width=\"400\" alt=\"puNES General Settings\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/1db1eacd-7e67-45c2-9512-ea24553987f5\" width=\"400\" alt=\"puNES Video Filters Settings\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/b309a584-e3ba-487e-9cd7-ca78d1997ac8\" width=\"400\" alt=\"puNES Cheat Editor\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/d115817b-b802-4d75-bdce-3df9efda929c\" width=\"400\" alt=\"puNES Xbox360 Standard Controller Settings\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/ffc4ba31-6899-4385-b0c1-59f7bf5764a2\" width=\"400\" alt=\"puNES PS4 Standard Controller Settings\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/315dbca5-ea3b-4390-b91b-9b7b0028af88\" width=\"800\" alt=\"puNES Family BASIC Virtual Keyboard\"/\u003e\n  \u003cimg src=\"https://github.com/punesemu/puNES/assets/14859058/1347fde5-bcc5-46d2-8e68-1e4875759a6e\" width=\"800\" alt=\"puNES Subor Virtual Keyboard\"/\u003e\n\u003c/p\u003e\n\n## :keyboard: Configuration\n\nTo run in portable mode there is 3 distinct ways:\n\n1. If the executable is in a folder containing the puNES.cfg file.\n2. Rename the executable by adding the suffix `_p`.\n   - Examples: `punes.exe -\u003e punes_p.exe` or `punes64.exe -\u003e punes64_p.exe`\n3. Run the emulator with the \"--portable\" option.\n\nTo see a list of available command-line options, start puNES with the `-h` argument.\n\n## :electric_plug: Supported Mappers\n\n| 0   | 1   | 2   | 3   | 4   | 5   | 6   | 7   | 8   | 9   | 10  |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| 11  | 12  | 13  | 14  | 15  | 16  | 17  | 18  | 19  | 20  | 21  |\n| 22  | 23  | 24  | 25  | 26  | 27  | 28  | 29  | 30  | 31  | 32  |\n| 33  | 34  | 35  | 36  | 37  | 38  |     | 40  | 41  | 42  | 43  |\n| 44  | 45  | 46  | 47  | 48  | 49  | 50  | 51  | 52  | 53  |     |\n| 55  | 56  | 57  | 58  | 59  | 60  | 61  | 62  | 63  | 64  | 65  |\n| 66  | 67  | 68  | 69  | 70  | 71  | 72  | 73  | 74  | 75  | 76  |\n| 77  | 78  | 79  | 80  | 81  | 82  | 83  |     | 85  | 86  | 87  |\n| 88  | 89  | 90  | 91  | 92  | 93  | 94  | 95  | 96  | 97  |     |\n| 99  | 100 | 101 |     | 103 | 104 | 105 | 106 | 107 | 108 |     |\n|     | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 |\n| 121 | 122 | 123 |     | 125 | 126 |     |     |     |     |     |\n| 132 | 133 | 134 |     | 136 | 137 | 138 | 139 | 140 | 141 | 142 |\n| 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 |\n| 154 | 155 | 156 | 157 | 158 | 159 |     |     | 162 | 163 | 164 |\n| 165 | 166 | 167 | 168 |     | 170 | 171 | 172 | 173 |     | 175 |\n| 176 | 177 | 178 | 179 | 180 |     | 182 | 183 | 184 | 185 | 186 |\n| 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 |\n| 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 |\n| 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 |\n|     | 221 | 222 |     | 224 | 225 | 226 | 227 | 228 | 229 | 230 |\n| 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 |     | 240 | 241 |\n| 242 | 243 | 244 | 245 | 246 |     | 248 | 249 | 250 |     | 252 |\n| 253 | 254 | 255 | 256 |     | 258 | 259 | 260 | 261 | 262 | 263 |\n| 264 | 265 | 266 | 267 | 268 | 269 |     | 271 | 272 |     | 274 |\n|     |     |     |     |     |     | 281 | 282 | 283 | 284 | 285 |\n| 286 | 287 | 288 | 289 | 290 | 291 | 292 |     |     | 295 |     |\n| 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 |\n| 308 | 309 |     | 311 | 312 | 313 | 314 | 315 |     |     |     |\n| 319 | 320 |     | 322 | 323 | 324 | 325 |     | 327 | 328 | 329 |\n|     | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 |\n| 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 |\n| 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 |\n|     |     |     | 366 |     | 368 | 369 | 370 |     | 372 |     |\n| 374 | 375 |     | 377 |     |     | 380 | 381 | 382 |     | 384 |\n|     | 386 | 387 | 388 | 389 | 390 |     |     | 393 | 394 | 395 |\n| 396 | 397 | 398 | 399 | 400 | 401 |     | 403 | 404 |     | 406 |\n|     |     | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 |\n|     |     | 420 | 421 | 422 |     |     |     |     |     | 428 |\n| 429 |     | 431 | 432 | 433 | 434 |     | 436 | 437 | 438 |     |\n|     |     | 442 |     |     |     | 446 | 447 |     |     |     |\n| 451 | 452 |     |     | 455 | 456 | 457 |     |     |     |     |\n|     |     |     |     |     |     |     |     |     | 471 |     |\n|     |     |     |     |     |     |     |     |     |     |     |\n|     |     |     |     |     |     |     |     |     |     |     |\n|     |     |     |     |     |     |     |     |     |     |     |\n|     |     |     |     |     |     | 512 | 513 |     |     | 516 |\n| 517 | 518 | 519 |     | 521 | 522 |     | 524 | 525 | 526 | 527 |\n| 528 | 529 | 530 |     | 532 |     | 534 |     | 536 | 537 | 538 |\n| 539 | 540 | 541 |     | 543 |     |     |     | 547 |     |     |\n| 550 | 551 | 552 |     | 554 | 555 | 556 | 557 | 558 | 559 | 560 |\n| 561 | 562 |     |     |     |     |     |     |     |     |     |\n\n## :electric_plug: UNIF boards\n\n1. 3D-BLOCK\n2. 8-IN-1\n3. 10-24-C-A1\n4. 12-IN-1\n5. 13in1JY110\n6. 42in1ResetSwitch\n7. 64in1NoRepeat\n8. 70in1\n9. 70in1B\n10. 150in1A\n11. 158B\n12. 190in1\n13. 212-HONG-KONG\n14. 603-5052\n15. 8157\n16. 8237\n17. 8237A\n18. 11160\n19. 22026\n20. 22211\n21. 43272\n22. 60311C\n23. 80013-B\n24. 82112C\n25. 411120-C\n26. 810544-C-A1\n27. 820561C\n28. 830118C\n29. 830134C\n30. 830425C-4391T\n31. 830752C\n32. 831128C\n33. 891227\n34. 900218\n35. A60AS\n36. A65AS\n37. AC08\n38. AMROM\n39. ANROM\n40. AOROM\n41. AX5705\n42. AX-40G\n43. BB\n44. BJ-56\n45. BOY\n46. BS-5\n47. BS-400R\n48. BS-4040R\n49. CC-21\n50. CHINA_ER_SAN2\n51. CITYFIGHT\n52. CNROM\n53. COOLBOY\n54. COOLGIRL\n55. CTC-09\n56. CTC-12IN1\n57. D1038\n58. DANCE\n59. DANCE2000\n60. DRAGONFIGHTER\n61. DREAMTECH01\n62. DRIPGAME\n63. EDU2000\n64. EH8813A\n65. F-15\n66. FARID_SLROM_8-IN-1\n67. FARID_UNROM_8-IN-1\n68. FC-28-5027\n69. FK23C\n70. FK23CA\n71. FS304\n72. G-146\n73. Ghostbusters63in1\n74. GKCXIN1\n75. GN-26\n76. GS-2004\n77. GS-2013\n78. H2288\n79. HP898F\n80. HP2018-A\n81. HPXX\n82. JC-016-2\n83. K-3006\n84. K-3010\n85. K-3033\n86. K-3036\n87. K-3046\n88. K-3071\n89. K-3088\n90. KOF97\n91. KONAMI-QTAI\n92. KS106C\n93. KS7012\n94. KS7013B\n95. KS7016\n96. KS7017\n97. KS7021A\n98. KS7030\n99. KS7031\n100. KS7032\n101. KS7037\n102. KS7057\n103. L6IN1\n104. LH09\n105. LH10\n106. LH32\n107. LH51\n108. M2C52A\n109. MALISB\n110. MARIO1-MALEE2\n111. MINDKIDS\n112. N49C-300\n113. N625092\n114. NEWSTAR-GRM070-8IN1\n115. NovelDiamond9999999in1\n116. NROM\n117. NROM-128\n118. NROM-256\n119. NTBROM\n120. NTD-03\n121. OneBus\n122. RESET-TXROM\n123. RESETNROM-XIN1\n124. RT-01\n125. S-2009\n126. SA005-A\n127. SA-0036\n128. SA-0037\n129. SA-016-1M\n130. SA-9602B\n131. SA-72007\n132. SA-72008\n133. SA-NROM\n134. Sachen-74LS374N\n135. Sachen-8259A\n136. Sachen-8259B\n137. Sachen-8259C\n138. Sachen-8259D\n139. SB-5013\n140. SC-127\n141. SHERO\n142. SL1632\n143. SLROM\n144. SMB2J\n145. STREETFIGTER-GAME4IN1\n146. Super24in1SC03\n147. SuperHIK8in1\n148. Supervision16in1\n149. T3H53\n150. T4A54A\n151. T-230\n152. T-262\n153. TBROM\n154. TC-U01-1.5M\n155. TEK90\n156. TF1201\n157. TFROM\n158. TH2131-1\n159. TJ-03\n160. TKROM\n161. TLROM\n162. Transformer\n163. UNROM\n164. UOROM\n165. VRC7\n166. WAIXING-FS005\n167. WAIXING-FW01\n168. WS\n169. YOKO\n\n## :information_source: How to Compile\n\n- :penguin: [Linux](#penguin-linux)\n- :smiling_imp: [FreeBSD](#smiling_imp-freebsd)\n- :blowfish: [OpenBSD](#blowfish-openbsd)\n- :computer: [Windows](#computer-windows)\n\n## CMake Options\n\n| CMake Option              | Description                                                                        | Default |\n| ------------------------- | ---------------------------------------------------------------------------------- | ------- |\n| ENABLE_RELEASE            | Build release version                                                              | ON      |\n| ENABLE_FFMPEG             | Enable FFMPEG support                                                              | ON      |\n| ENABLE_OPENGL             | Use OpenGL support instead of Direct3D 9 (only for Windows)                        | ON      |\n| ENABLE_OPENGL_CG          | Enable OpenGL nVidia Cg Toolkit support                                            | OFF     |\n| ENABLE_FULLSCREEN_RESFREQ | Enable Fullscreen resolution and auto frequency                                    | ON      |\n| ENABLE_QT6_LIBS           | Enable support for QT6 libraries                                                   | OFF     |\n| DISABLE_PORTABLE_MODE     | Disable portable mode handling (useful with sandbox\u003cbr/\u003eenvironments like Flatpak) | OFF     |\n\n## :penguin: Linux\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand\u003c/summary\u003e\n\n#### Dependencies\n\n- [CMake \u003e= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)\n- [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)\n- [nvidia-cg](https://developer.nvidia.com/cg-toolkit)\n- [alsa](https://www.alsa-project.org)\n- libudev\n- [libX11 and libXrandr](https://www.x.org)\n- [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)\n- (optional) [ffmpeg libraries \u003e= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg).\n\n#### Compilation of puNES\n\n```bash\ngit clone https://github.com/punesemu/puNES\ncd puNES\ncmake -B build -G Ninja -DENABLE_FFMPEG:BOOL=ON -DENABLE_OPENGL_CG:BOOL=ON\ncmake --build build -j2\n```\n\nif you don't want to use the Ninja build system and prefer the classic Makefile:\n\n```bash\ncmake -B build -DENABLE_FFMPEG:BOOL=ON -DENABLE_OPENGL_CG:BOOL=ON\nmake -j2\n```\n\nthe executable `punes` is in the `build/src` directory.\n\n#### Linux Debug version\n\nIf you need the debug version then you need to replace the `cmake -B build -G Ninja` command of the previous examples with the following:\n\n```bash\ncmake -B build -G Ninja -DCMAKE_C_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_CXX_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_RELEASE:BOL=OFF [...]\ncmake --build build -j2\n```\n\nor if you prefer the classic Makefile:\n\n```bash\ncmake -B build -DCMAKE_C_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_CXX_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_RELEASE:BOL=OFF [...]\nmake -j2\n```\n\nwhere `[...]` are the other necessary options.\n\n#### Example on how to compile on Ubuntu 22.04\n\n```bash\nsudo apt-get install git cmake ninja-build libtool build-essential pkg-config libudev-dev libasound2-dev\nsudo apt-get install qtbase5-dev qttools5-dev qttools5-dev-tools libqt5svg5-dev nvidia-cg-toolkit libx11-dev libxrandr-dev\nsudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev p7zip-full\ngit clone https://github.com/punesemu/puNES\ncd puNES\ncmake -B build -G Ninja\ncmake --build build -j2\n```\n\nto start the emulator\n\n```bash\n./build/src/punes\n```\n\n\u003c/details\u003e\n\n## :smiling_imp: FreeBSD\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand\u003c/summary\u003e\n\n#### Dependencies\n\n- [CMake \u003e= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)\n- [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)\n- [sndio](http://www.sndio.org)\n- [libX11 and libXrandr](https://www.x.org)\n- [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)\n- (optional) [ffmpeg libraries \u003e= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg).\n\n#### Compilation of puNES\n\n```bash\nsudo pkg install -y devel/cmake devel/ninja devel/pkgconf devel/git multimedia/ffmpeg audio/sndio devel/qt5-qmake\nsudo pkg install -y devel/qt5-buildtools devel/qt5-core x11-toolkits/qt5-gui x11-toolkits/qt5-widgets graphics/qt5-svg\nsudo pkg install -y devel/qt5-linguisttools\ngit clone https://github.com/punesemu/puNES\ncd puNES\ncmake -B build -G Ninja -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON\ncmake --build build -j2\n```\n\nif you don't want to use the Ninja build system and prefer the classic Makefile:\n\n```bash\ncmake -B build -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON\nmake -j2\n```\n\nthe executable `punes` is in the `build/src` directory.\n\n#### FreeBSD Debug version\n\nIf you need the debug version then you need to replace the `cmake -B Build -G Ninja` command of the previous examples with the following:\n\n```bash\ncmake -B build -G Ninja -DCMAKE_C_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_CXX_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_RELEASE:BOOL=OFF [...]\ncmake --build build -j2\n```\n\nor if you prefer the classic Makefile:\n\n```bash\ncmake -B build -DCMAKE_C_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_CXX_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_RELEASE:BOOL=OFF [...]\nmake -j2\n```\n\nwhere `[...]` are the other necessary options.\n\n\u003c/details\u003e\n\n## :blowfish: OpenBSD\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand\u003c/summary\u003e\n\n#### Dependencies\n\n- [CMake \u003e= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)\n- [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)\n- [sndio](http://www.sndio.org)\n- [libX11 and libXrandr](https://www.x.org)\n- [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)\n- (optional) [ffmpeg libraries \u003e= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg)\n\n#### Compilation of puNES\n\n```bash\ngit clone https://github.com/punesemu/puNES\ncd puNES\ncmake -B build -G Ninja -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON\ncmake --build build -j2\n```\n\nif you don't want to use the Ninja build system and prefer the classic Makefile:\n\n```bash\ncmake -B build -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON\nmake -j2\n```\n\nthe executable `punes` is in the `buid/src` directory.\n\n#### OpenBSD Debug version\n\nIf you need the debug version then you need to replace the `cmake -B Build -G Ninja` command of the previous examples with the following:\n\n```bash\ncmake -B build -G Ninja -DCMAKE_C_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_CXX_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_RELEASE:BOOL=OFF [...]\ncmake --build build -j2\n```\n\nor if you prefer the classic Makefile:\n\n```bash\ncmake -B build -DCMAKE_C_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_CXX_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_RELEASE:BOOL=OFF [...]\nmake -j2\n```\n\nwhere `[...]` are the other necessary options.\n\n\u003c/details\u003e\n\n## :computer: Windows\n\n\u003cdetails\u003e\n\u003csummary\u003eExpand\u003c/summary\u003e\n\n#### Dependencies\n\n- [Qt5](https://www.qt.io) with OpenGL support (5.6.3 is the last if you want the support for Windows XP)\n\n#### Development Environment installation\n\n1. install [MSYS2](https://www.msys2.org/)\n2. open \"MSYS2 MinGW 64-bit\" shell (or 32 bit if you want compile the 32 bit version of puNES)\n\n```bash\npacman -Syu\n```\n\n3. close the MSYS2 window and run it again from Start menu\n\n```bash\npacman -Su\npacman -S base-devel git wget p7zip unzip mingw-w64-i686-cmake mingw-w64-x86_64-cmake\npacman -S perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain\npacman -S mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg\nexit\n```\n\n4. open a new MSYS2 shell and build the necessary libraries\n\n#### Compilation of the Qt5 libraries\n\n5. download and unzip the sources\n\n```bash\nwget http://download.qt.io/archive/qt/5.15/5.15.8/submodules/qtbase-everywhere-opensource-src-5.15.8.zip\nunzip qtbase-everywhere-opensource-src-5.15.8.zip\nmv qtbase-everywhere-src-5.15.8 qt5\n```\n\nthe renaming of the directory is necessary to not generate a compile-time error caused by the 255 characters maximum path length limitation on Windows, This is the typical error message you might encounter:\n\n```code\n\"../../../../include/QtEventDispatcherSupport/5.15.8/QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h:1:10: fatal error: ../../../../../src/platformsupport/eventdispatchers/qwindowsguieventdispatcher_p.h: No such file or directory\"\n```\n\n6. compile the libraries\n\n```bash\ncd qt5\necho -e \"QMAKE_LFLAGS += -static -static-libgcc\\nDEFINES += QT_STATIC_BUILD\\n\" \u003e\u003e mkspecs/win32-g++/qmake.conf\n./configure.bat -prefix $MINGW_PREFIX -extprefix $MINGW_PREFIX -bindir $MINGW_PREFIX/lib/qt5/bin -headerdir $MINGW_PREFIX/include/qt5 -libdir $MINGW_PREFIX/lib/qt5 -archdatadir $MINGW_PREFIX/lib/qt5 -plugindir $MINGW_PREFIX/lib/qt5/plugins -libexecdir $MINGW_PREFIX/lib/qt5/bin -datadir $MINGW_PREFIX/share/qt5 -docdir $MINGW_PREFIX/share/doc/qt5 -translationdir $MINGW_PREFIX/share/qt5/translations -sysconfdir $MINGW_PREFIX/etc/xdg -examplesdir $MINGW_PREFIX/share/qt5/examples -testsdir $MINGW_PREFIX/share/qt5/tests -platform win32-g++ -nomake examples -nomake tests -nomake tools -no-compile-examples -release -opensource -confirm-license -static -c++std c++17 -sse2 -static-runtime -make libs -no-ltcg -no-dbus -no-accessibility -no-inotify -no-iconv -no-icu -no-openssl -no-system-proxies -no-cups -no-fontconfig -no-zstd -opengl desktop -no-angle -gif -ico -qt-libpng -qt-libjpeg -qt-pcre -qt-zlib -qt-freetype\nmake\n```\n\n7. and finally install them\n\n```bash\nmake install\ncp -v $MINGW_PREFIX/lib/qt5/pkgconfig/* $MINGW_PREFIX/lib/pkgconfig/.\ncd ..\n```\n\n8. now it's time for the SVG module...\n\n```bash\nwget http://download.qt.io/archive/qt/5.15/5.15.8/submodules/qtsvg-everywhere-opensource-src-5.15.8.zip\nunzip qtsvg-everywhere-opensource-src-5.15.8.zip\nmv qtsvg-everywhere-src-5.15.8 qt5svg\ncd qt5svg\n$MINGW_PREFIX/lib/qt5/bin/qmake\nmake\nmake install\ncp -v $MINGW_PREFIX/lib/qt5/pkgconfig/* $MINGW_PREFIX/lib/pkgconfig/.\ncd ..\n```\n\n9. ...and for the tools\n\n```bash\nwget http://download.qt.io/archive/qt/5.15/5.15.8/submodules/qttools-everywhere-opensource-src-5.15.8.zip\nunzip qttools-everywhere-opensource-src-5.15.8.zip\nmv qttools-everywhere-src-5.15.8 qt5tools\ncd qt5tools\n$MINGW_PREFIX/lib/qt5/bin/qmake\nmake\nmake install\ncd ..\n```\n\n#### Compilation of puNES\n\n10. Now you have everything you need to compile correctly puNES\n\n```bash\ngit clone https://github.com/punesemu/puNES\ncd puNES\n```\n\nif you want D3D9 version :\n\n```bash\ncmake -B build -G Ninja -DENABLE_FFMPEG:BOOL=ON -DENABLE_OPENGL:BOOL=OFF\ncmake --build build -j2\n```\n\notherwise :\n\n```bash\ncmake -B build -G Ninja -DENABLE_FFMPEG:BOOL=ON\ncmake --build build -j2\n```\n\nThe executable `punes.exe` is in the `build/src` directory but in order to run it you need the following dlls:\n\n- 7z.dl\n- avcodec-58.dll\n- avformat-58.dll\n- avutil-56.dll\n- cg.dll\n- cgD3D9.dll (only for D3D9 version)\n- cgGL.dll (only for OpenGL version)\n- libwinpthread-1.dll\n- swresample-3.dll\n- swscale-5.dll\n\nthat you can download here : :link:[`64bit`](https://www.dropbox.com/s/d632cjezybz6a74/puNES_x86_64_dlls.zip?dl=1) version or :link:[`32bit`](https://www.dropbox.com/s/ye00129nyacdl05/puNES_i686_dlls.zip?dl=1) version.\n\n#### Windows Debug version\n\nIf you need the debug version then you need to replace the `cmake -B build -G Ninja` command of the previous examples with the following:\n\n```bash\ncmake -B build -G Ninja -DCMAKE_C_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_CXX_FLAGS_DEBUG:STRING='-O0 -g -DDEBUG' -DCMAKE_BUILD_TYPE:STRING=Debug -DENABLE_RELEASE:BOOL=OFF [...]\n```\n\nwhere `[...]` are the other necessary options.\n\n\u003c/details\u003e\n\n---\n\n#### :movie_camera: FFmpeg\n\nIt is always possible to disable audio/video recording support by specifying the `configure` parameter `--without-ffmpeg`.\nIf the installed version is lower than 4.0 the support will be disabled automatically.\n\nSupported audio recording formats:\n\n- WAV Audio\n- MP3 Audio ([lame](https://xiph.org/vorbis/)) (\\*)\n- AAC Audio\n- Flac Audio\n- Ogg Audio ([vorbis](https://xiph.org/vorbis/)) (\\*)\n- Opus Audio ([libopus](https://www.opus-codec.org)) (\\*)\n\nSupported video recording formats:\n\n- MPEG 1 Video\n- MPEG 2 Video\n- MPEG 4 Video\n- MPEG H264 Video ([libx264](https://www.videolan.org/developers/x264.html)) (\\*)\n- High Efficiency Video Codec ([libx265](https://www.videolan.org/developers/x265.html)) (\\*)\n- WebM Video ([libvpx](https://www.webmproject.org/code)) (\\*)\n- Windows Media Video\n- AVI FF Video\n- AVI Video\n\n(\\*) if compiled in FFmpeg.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpunesemu%2FpuNES","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpunesemu%2FpuNES","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpunesemu%2FpuNES/lists"}