mirror of
https://github.com/punesemu/puNES.git
synced 2024-05-13 18:08:02 -04:00
Update README.md (#392)
List of UNIF boards was arranged alphabetically and numbered.
This commit is contained in:
parent
e1516fcefe
commit
bcb4e47a20
442
README.md
442
README.md
|
@ -29,46 +29,49 @@
|
|||
</a>
|
||||
</p>
|
||||
|
||||
: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)
|
||||
-----------
|
||||
These executables are always updated to the latest commit:
|
||||
* Linux AppImage : :link:[`x86_64`](https://nightly.link/punesemu/puNES/workflows/build/master/puNES-x86_64.AppImage.zip)
|
||||
* 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)
|
||||
* 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)
|
||||
## :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)
|
||||
|
||||
These executables are always updated to the latest commit:
|
||||
|
||||
- Linux AppImage : :link:[`x86_64`](https://nightly.link/punesemu/puNES/workflows/build/master/puNES-x86_64.AppImage.zip)
|
||||
- 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)
|
||||
- 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)
|
||||
|
||||
Notes:
|
||||
|
||||
Notes:
|
||||
- WARNING save states of version 0.110 or earlier are no longer compatible.
|
||||
- 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.
|
||||
- 32 bit versions are Windows XP compatible.
|
||||
|
||||
:beer: Support
|
||||
-----------
|
||||
## :beer: Support
|
||||
|
||||
If you want buy me a beer :
|
||||
|
||||
[![GitHub Sponsors](https://img.shields.io/badge/GitHub-Donate-EA4AAA?style=for-the-badge&logo=githubsponsors)](https://github.com/sponsors/punesemu)
|
||||
[![PayPal](https://img.shields.io/badge/PayPal-Donate-blue?style=for-the-badge&logo=paypal)](https://paypal.me/punesemu)
|
||||
[![kofi](https://img.shields.io/badge/Ko--Fi-Donate-orange?style=for-the-badge&logo=ko-fi)](https://ko-fi.com/punesemu)
|
||||
|
||||
Multilingual Support
|
||||
-----------
|
||||
## Multilingual Support
|
||||
|
||||
A big thank you to everyone who contributed to the translations:
|
||||
* Arabic
|
||||
* Chinese
|
||||
* English
|
||||
* French
|
||||
* German
|
||||
* Hungarian
|
||||
* Italian
|
||||
* Polish
|
||||
* Portuguese
|
||||
* Russian
|
||||
* Spanish
|
||||
* Turkish
|
||||
|
||||
- Arabic
|
||||
- Chinese
|
||||
- English
|
||||
- French
|
||||
- German
|
||||
- Hungarian
|
||||
- Italian
|
||||
- Polish
|
||||
- Portuguese
|
||||
- Russian
|
||||
- Spanish
|
||||
- Turkish
|
||||
|
||||
### Help with Translations [here](https://crowdin.com/project/punes)
|
||||
|
||||
:camera: Screenshots
|
||||
-----------
|
||||
## :camera: Screenshots
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/punesemu/puNES/assets/14859058/435ad06b-ec4d-4601-84d1-bf444281afe2" width="400" alt="puNES main window"/>
|
||||
<img src="https://github.com/punesemu/puNES/assets/14859058/1651ed42-fc22-4d9f-945d-7869c66fb1dd" width="400" alt="puNES NSF2 Player"/>
|
||||
|
@ -82,20 +85,21 @@ A big thank you to everyone who contributed to the translations:
|
|||
<img src="https://github.com/punesemu/puNES/assets/14859058/1347fde5-bcc5-46d2-8e68-1e4875759a6e" width="800" alt="puNES Subor Virtual Keyboard"/>
|
||||
</p>
|
||||
|
||||
:keyboard: Configuration
|
||||
-----------
|
||||
## :keyboard: Configuration
|
||||
|
||||
To run in portable mode there is 3 distinct ways:
|
||||
1) If the executable is in a folder containing the puNES.cfg file.
|
||||
2) Rename the executable by adding the suffix `_p`.
|
||||
|
||||
1. If the executable is in a folder containing the puNES.cfg file.
|
||||
2. Rename the executable by adding the suffix `_p`.
|
||||
- Examples: `punes.exe -> punes_p.exe` or `punes64.exe -> punes64_p.exe`
|
||||
3) Run the emulator with the "--portable" option.
|
||||
3. Run the emulator with the "--portable" option.
|
||||
|
||||
To see a list of available command-line options, start puNES with the `-h` argument.
|
||||
|
||||
:electric_plug: Supported Mappers
|
||||
-----------
|
||||
## :electric_plug: Supported Mappers
|
||||
|
||||
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|
||||
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
|
||||
| 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
|
||||
| 33 | 34 | 35 | 36 | 37 | 38 | | 40 | 41 | 42 | 43 |
|
||||
|
@ -148,25 +152,189 @@ To see a list of available command-line options, start puNES with the `-h` argum
|
|||
| 550 | 551 | 552 | | 554 | 555 | 556 | 557 | 558 | 559 | 560 |
|
||||
| 561 | 562 | | | | | | | | | |
|
||||
|
||||
## :electric_plug: UNIF boards
|
||||
|
||||
:electric_plug: Unif
|
||||
-----------
|
||||
NROM, NROM-128, NROM-256, Transformer, SLROM, UOROM, UNROM, CNROM, TLROM, TBROM, TFROM, TKROM, ANROM, AMROM, AOROM, SL1632, SC-127, CC-21, SuperHIK8in1, STREETFIGTER-GAME4IN1, A60AS, Supervision16in1, MARIO1-MALEE2, T3H53, D1038, NTBROM, SA-016-1M, VRC7, TEK90, BB, H2288, LH32, 22211, SA-72008, T4A54A, Sachen-8259D, Sachen-8259B, Sachen-8259C, Sachen-8259A, KS7032, SA-NROM, SA-72007, TC-U01-1.5M, SA-0037, SA-0036, Sachen-74LS374N, FS304, Super24in1SC03, WAIXING-FS005, FK23C, FK23CA, FC-28-5027, NovelDiamond9999999in1, JC-016-2, 8237, 8237A, N625092, Ghostbusters63in1, WAIXING-FW01, 42in1ResetSwitch, 150in1A, 212-HONG-KONG, 70in1, 70in1B, 603-5052, 43272, OneBus, DANCE, 158B, F-15, HPXX, HP2018-A, 810544-C-A1, SHERO, KOF97, YOKO, T-262, CITYFIGHT, COOLBOY, MINDKIDS, 22026, 80013-B, GS-2004, GS-2013, A65AS, DRIPGAME, BS-5, 411120-C, K-3088, GKCXIN1, 60311C, NTD-03, DRAGONFIGHTER, 13in1JY110, TF1201, 11160, 190in1, 8157, KS7057, KS7017, SMB2J, KS7031, KS7016, KS7037, TH2131-1, LH51, KS7013B, RESET-TXROM, 64in1NoRepeat, 830134C, HP898F, 830425C-4391T, K-3033, FARID_SLROM_8-IN-1, FARID_UNROM_8-IN-1, MALISB, 10-24-C-A1, RT-01, EDU2000, 12-IN-1, WS, 8-IN-1, NEWSTAR-GRM070-8IN1, CTC-09, K-3046, CTC-12IN1, SA005-A, K-3006, K-3036, TJ-03, COOLGIRL, RESETNROM-XIN1, GN-26, L6IN1, KS7012, KS7030, 830118C, G-146, 891227, KS106C, 3D-BLOCK, SB-5013, N49C-300, 820561C, M2C52A, 830752C, BS-400R, BS-4040R, K-3010, K-3071, SA-9602B, DANCE2000, EH8813A, DREAMTECH01, LH10, 900218, KS7021A, BJ-56, AX-40G, 831128C, T-230, AX5705, CHINA_ER_SAN2, 82112C, KONAMI-QTAI, AC08, S-2009
|
||||
1. 3D-BLOCK
|
||||
2. 8-IN-1
|
||||
3. 10-24-C-A1
|
||||
4. 12-IN-1
|
||||
5. 13in1JY110
|
||||
6. 42in1ResetSwitch
|
||||
7. 64in1NoRepeat
|
||||
8. 70in1
|
||||
9. 70in1B
|
||||
10. 150in1A
|
||||
11. 158B
|
||||
12. 190in1
|
||||
13. 212-HONG-KONG
|
||||
14. 603-5052
|
||||
15. 8157
|
||||
16. 8237
|
||||
17. 8237A
|
||||
18. 11160
|
||||
19. 22026
|
||||
20. 22211
|
||||
21. 43272
|
||||
22. 60311C
|
||||
23. 80013-B
|
||||
24. 82112C
|
||||
25. 411120-C
|
||||
26. 810544-C-A1
|
||||
27. 820561C
|
||||
28. 830118C
|
||||
29. 830134C
|
||||
30. 830425C-4391T
|
||||
31. 830752C
|
||||
32. 831128C
|
||||
33. 891227
|
||||
34. 900218
|
||||
35. A60AS
|
||||
36. A65AS
|
||||
37. AC08
|
||||
38. AMROM
|
||||
39. ANROM
|
||||
40. AOROM
|
||||
41. AX5705
|
||||
42. AX-40G
|
||||
43. BB
|
||||
44. BJ-56
|
||||
45. BOY
|
||||
46. BS-5
|
||||
47. BS-400R
|
||||
48. BS-4040R
|
||||
49. CC-21
|
||||
50. CHINA_ER_SAN2
|
||||
51. CITYFIGHT
|
||||
52. CNROM
|
||||
53. COOLBOY
|
||||
54. COOLGIRL
|
||||
55. CTC-09
|
||||
56. CTC-12IN1
|
||||
57. D1038
|
||||
58. DANCE
|
||||
59. DANCE2000
|
||||
60. DRAGONFIGHTER
|
||||
61. DREAMTECH01
|
||||
62. DRIPGAME
|
||||
63. EDU2000
|
||||
64. EH8813A
|
||||
65. F-15
|
||||
66. FARID_SLROM_8-IN-1
|
||||
67. FARID_UNROM_8-IN-1
|
||||
68. FC-28-5027
|
||||
69. FK23C
|
||||
70. FK23CA
|
||||
71. FS304
|
||||
72. G-146
|
||||
73. Ghostbusters63in1
|
||||
74. GKCXIN1
|
||||
75. GN-26
|
||||
76. GS-2004
|
||||
77. GS-2013
|
||||
78. H2288
|
||||
79. HP898F
|
||||
80. HP2018-A
|
||||
81. HPXX
|
||||
82. JC-016-2
|
||||
83. K-3006
|
||||
84. K-3010
|
||||
85. K-3033
|
||||
86. K-3036
|
||||
87. K-3046
|
||||
88. K-3071
|
||||
89. K-3088
|
||||
90. KOF97
|
||||
91. KONAMI-QTAI
|
||||
92. KS106C
|
||||
93. KS7012
|
||||
94. KS7013B
|
||||
95. KS7016
|
||||
96. KS7017
|
||||
97. KS7021A
|
||||
98. KS7030
|
||||
99. KS7031
|
||||
100. KS7032
|
||||
101. KS7037
|
||||
102. KS7057
|
||||
103. L6IN1
|
||||
104. LH09
|
||||
105. LH10
|
||||
106. LH32
|
||||
107. LH51
|
||||
108. M2C52A
|
||||
109. MALISB
|
||||
110. MARIO1-MALEE2
|
||||
111. MINDKIDS
|
||||
112. N49C-300
|
||||
113. N625092
|
||||
114. NEWSTAR-GRM070-8IN1
|
||||
115. NovelDiamond9999999in1
|
||||
116. NROM
|
||||
117. NROM-128
|
||||
118. NROM-256
|
||||
119. NTBROM
|
||||
120. NTD-03
|
||||
121. OneBus
|
||||
122. RESET-TXROM
|
||||
123. RESETNROM-XIN1
|
||||
124. RT-01
|
||||
125. S-2009
|
||||
126. SA005-A
|
||||
127. SA-0036
|
||||
128. SA-0037
|
||||
129. SA-016-1M
|
||||
130. SA-9602B
|
||||
131. SA-72007
|
||||
132. SA-72008
|
||||
133. SA-NROM
|
||||
134. Sachen-74LS374N
|
||||
135. Sachen-8259A
|
||||
136. Sachen-8259B
|
||||
137. Sachen-8259C
|
||||
138. Sachen-8259D
|
||||
139. SB-5013
|
||||
140. SC-127
|
||||
141. SHERO
|
||||
142. SL1632
|
||||
143. SLROM
|
||||
144. SMB2J
|
||||
145. STREETFIGTER-GAME4IN1
|
||||
146. Super24in1SC03
|
||||
147. SuperHIK8in1
|
||||
148. Supervision16in1
|
||||
149. T3H53
|
||||
150. T4A54A
|
||||
151. T-230
|
||||
152. T-262
|
||||
153. TBROM
|
||||
154. TC-U01-1.5M
|
||||
155. TEK90
|
||||
156. TF1201
|
||||
157. TFROM
|
||||
158. TH2131-1
|
||||
159. TJ-03
|
||||
160. TKROM
|
||||
161. TLROM
|
||||
162. Transformer
|
||||
163. UNROM
|
||||
164. UOROM
|
||||
165. VRC7
|
||||
166. WAIXING-FS005
|
||||
167. WAIXING-FW01
|
||||
168. WS
|
||||
169. YOKO
|
||||
|
||||
:information_source: How to Compile
|
||||
-----------
|
||||
## :information_source: How to Compile
|
||||
|
||||
* :penguin: [Linux](#penguin-linux)
|
||||
* :smiling_imp: [FreeBSD](#smiling_imp-freebsd)
|
||||
* :blowfish: [OpenBSD](#blowfish-openbsd)
|
||||
* :computer: [Windows](#computer-windows)
|
||||
- :penguin: [Linux](#penguin-linux)
|
||||
- :smiling_imp: [FreeBSD](#smiling_imp-freebsd)
|
||||
- :blowfish: [OpenBSD](#blowfish-openbsd)
|
||||
- :computer: [Windows](#computer-windows)
|
||||
|
||||
|
||||
CMake Options
|
||||
-----------
|
||||
## CMake Options
|
||||
|
||||
| CMake Option | Description | Default |
|
||||
|---------------------------|------------------------------------------------------------------------------------|---------|
|
||||
| ------------------------- | ---------------------------------------------------------------------------------- | ------- |
|
||||
| ENABLE_RELEASE | Build release version | ON |
|
||||
| ENABLE_FFMPEG | Enable FFMPEG support | ON |
|
||||
| ENABLE_OPENGL | Use OpenGL support instead of Direct3D 9 (only for Windows) | ON |
|
||||
|
@ -176,71 +344,93 @@ CMake Options
|
|||
| DISABLE_PORTABLE_MODE | Disable portable mode handling (useful with sandbox<br/>environments like Flatpak) | OFF |
|
||||
|
||||
## :penguin: Linux
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
|
||||
#### Dependencies
|
||||
* [CMake >= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)
|
||||
* [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)
|
||||
* [nvidia-cg](https://developer.nvidia.com/cg-toolkit)
|
||||
* [alsa](https://www.alsa-project.org)
|
||||
* libudev
|
||||
* [libX11 and libXrandr](https://www.x.org)
|
||||
* [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)
|
||||
* (optional) [ffmpeg libraries >= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg).
|
||||
|
||||
- [CMake >= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)
|
||||
- [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)
|
||||
- [nvidia-cg](https://developer.nvidia.com/cg-toolkit)
|
||||
- [alsa](https://www.alsa-project.org)
|
||||
- libudev
|
||||
- [libX11 and libXrandr](https://www.x.org)
|
||||
- [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)
|
||||
- (optional) [ffmpeg libraries >= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg).
|
||||
|
||||
#### Compilation of puNES
|
||||
|
||||
```bash
|
||||
git clone https://github.com/punesemu/puNES
|
||||
cd puNES
|
||||
cmake -B build -G Ninja -DENABLE_FFMPEG:BOOL=ON -DENABLE_OPENGL_CG:BOOL=ON
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
if you don't want to use the Ninja build system and prefer the classic Makefile:
|
||||
|
||||
```bash
|
||||
cmake -B build -DENABLE_FFMPEG:BOOL=ON -DENABLE_OPENGL_CG:BOOL=ON
|
||||
make -j2
|
||||
```
|
||||
|
||||
the executable `punes` is in the `build/src` directory.
|
||||
|
||||
#### Linux Debug version
|
||||
|
||||
If you need the debug version then you need to replace the `cmake -B build -G Ninja` command of the previous examples with the following:
|
||||
|
||||
```bash
|
||||
cmake -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 [...]
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
or if you prefer the classic Makefile:
|
||||
|
||||
```bash
|
||||
cmake -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 [...]
|
||||
make -j2
|
||||
```
|
||||
|
||||
where `[...]` are the other necessary options.
|
||||
|
||||
#### Example on how to compile on Ubuntu 22.04
|
||||
|
||||
```bash
|
||||
sudo apt-get install git cmake ninja-build libtool build-essential pkg-config libudev-dev libasound2-dev
|
||||
sudo apt-get install qtbase5-dev qttools5-dev qttools5-dev-tools libqt5svg5-dev nvidia-cg-toolkit libx11-dev libxrandr-dev
|
||||
sudo apt-get install qtbase5-dev qttools5-dev qttools5-dev-tools libqt5svg5-dev nvidia-cg-toolkit libx11-dev libxrandr-dev
|
||||
sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswresample-dev libswscale-dev p7zip-full
|
||||
git clone https://github.com/punesemu/puNES
|
||||
cd puNES
|
||||
cmake -B build -G Ninja
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
to start the emulator
|
||||
|
||||
```bash
|
||||
./build/src/punes
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## :smiling_imp: FreeBSD
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
|
||||
#### Dependencies
|
||||
* [CMake >= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)
|
||||
* [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)
|
||||
* [sndio](http://www.sndio.org)
|
||||
* [libX11 and libXrandr](https://www.x.org)
|
||||
* [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)
|
||||
* (optional) [ffmpeg libraries >= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg).
|
||||
|
||||
- [CMake >= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)
|
||||
- [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)
|
||||
- [sndio](http://www.sndio.org)
|
||||
- [libX11 and libXrandr](https://www.x.org)
|
||||
- [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)
|
||||
- (optional) [ffmpeg libraries >= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg).
|
||||
|
||||
#### Compilation of puNES
|
||||
|
||||
```bash
|
||||
sudo pkg install -y devel/cmake devel/ninja devel/pkgconf devel/git multimedia/ffmpeg audio/sndio devel/qt5-qmake
|
||||
sudo pkg install -y devel/qt5-buildtools devel/qt5-core x11-toolkits/qt5-gui x11-toolkits/qt5-widgets graphics/qt5-svg
|
||||
|
@ -250,77 +440,108 @@ cd puNES
|
|||
cmake -B build -G Ninja -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
if you don't want to use the Ninja build system and prefer the classic Makefile:
|
||||
|
||||
```bash
|
||||
cmake -B build -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON
|
||||
make -j2
|
||||
```
|
||||
|
||||
the executable `punes` is in the `build/src` directory.
|
||||
|
||||
#### FreeBSD Debug version
|
||||
|
||||
If you need the debug version then you need to replace the `cmake -B Build -G Ninja` command of the previous examples with the following:
|
||||
|
||||
```bash
|
||||
cmake -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 [...]
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
or if you prefer the classic Makefile:
|
||||
|
||||
```bash
|
||||
cmake -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 [...]
|
||||
make -j2
|
||||
```
|
||||
|
||||
where `[...]` are the other necessary options.
|
||||
|
||||
</details>
|
||||
|
||||
## :blowfish: OpenBSD
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
|
||||
#### Dependencies
|
||||
* [CMake >= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)
|
||||
* [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)
|
||||
* [sndio](http://www.sndio.org)
|
||||
* [libX11 and libXrandr](https://www.x.org)
|
||||
* [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)
|
||||
* (optional) [ffmpeg libraries >= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg)
|
||||
|
||||
- [CMake >= 3.14](https://cmake.org) ([Ninja](https://ninja-build.org) build system is optional)
|
||||
- [Qt5](https://www.qt.io) or [Qt6](https://www.qt.io) with OpenGL support (qtcore, qtgui, qtwidgets, qtnetwork, qtsvg and qttools)
|
||||
- [sndio](http://www.sndio.org)
|
||||
- [libX11 and libXrandr](https://www.x.org)
|
||||
- [p7zip](https://github.com/p7zip-project/p7zip) for compressed file support (lib7zip uses the 7z.so library on unix-like systems)
|
||||
- (optional) [ffmpeg libraries >= 4.0](https://ffmpeg.org) if you want video and audio recording support (libavcodec, libavformat, libavutil, libswresample and libswscale). See [notes](#movie_camera-ffmpeg)
|
||||
|
||||
#### Compilation of puNES
|
||||
|
||||
```bash
|
||||
git clone https://github.com/punesemu/puNES
|
||||
cd puNES
|
||||
cmake -B build -G Ninja -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
if you don't want to use the Ninja build system and prefer the classic Makefile:
|
||||
|
||||
```bash
|
||||
cmake -B build -DQt5_DIR=/usr/local/lib/qt5/cmake/Qt5 -DENABLE_FFMPEG:BOOL=ON
|
||||
make -j2
|
||||
```
|
||||
|
||||
the executable `punes` is in the `buid/src` directory.
|
||||
|
||||
#### OpenBSD Debug version
|
||||
|
||||
If you need the debug version then you need to replace the `cmake -B Build -G Ninja` command of the previous examples with the following:
|
||||
|
||||
```bash
|
||||
cmake -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 [...]
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
or if you prefer the classic Makefile:
|
||||
|
||||
```bash
|
||||
cmake -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 [...]
|
||||
make -j2
|
||||
```
|
||||
|
||||
where `[...]` are the other necessary options.
|
||||
|
||||
</details>
|
||||
|
||||
## :computer: Windows
|
||||
|
||||
<details>
|
||||
<summary>Expand</summary>
|
||||
|
||||
#### Dependencies
|
||||
* [Qt5](https://www.qt.io) with OpenGL support (5.6.3 is the last if you want the support for Windows XP)
|
||||
|
||||
- [Qt5](https://www.qt.io) with OpenGL support (5.6.3 is the last if you want the support for Windows XP)
|
||||
|
||||
#### Development Environment installation
|
||||
|
||||
1. install [MSYS2](https://www.msys2.org/)
|
||||
2. open "MSYS2 MinGW 64-bit" shell (or 32 bit if you want compile the 32 bit version of puNES)
|
||||
|
||||
```bash
|
||||
pacman -Syu
|
||||
```
|
||||
|
||||
3. close the MSYS2 window and run it again from Start menu
|
||||
|
||||
```bash
|
||||
pacman -Su
|
||||
pacman -S base-devel git wget p7zip unzip mingw-w64-i686-cmake mingw-w64-x86_64-cmake
|
||||
|
@ -328,32 +549,44 @@ pacman -S perl ruby python2 mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
|
|||
pacman -S mingw-w64-i686-ffmpeg mingw-w64-x86_64-ffmpeg
|
||||
exit
|
||||
```
|
||||
|
||||
4. open a new MSYS2 shell and build the necessary libraries
|
||||
|
||||
#### Compilation of the Qt5 libraries
|
||||
|
||||
5. download and unzip the sources
|
||||
|
||||
```bash
|
||||
wget http://download.qt.io/archive/qt/5.15/5.15.8/submodules/qtbase-everywhere-opensource-src-5.15.8.zip
|
||||
unzip qtbase-everywhere-opensource-src-5.15.8.zip
|
||||
mv qtbase-everywhere-src-5.15.8 qt5
|
||||
```
|
||||
|
||||
the 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:
|
||||
|
||||
```code
|
||||
"../../../../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"
|
||||
```
|
||||
|
||||
6. compile the libraries
|
||||
|
||||
```bash
|
||||
cd qt5
|
||||
echo -e "QMAKE_LFLAGS += -static -static-libgcc\nDEFINES += QT_STATIC_BUILD\n" >> mkspecs/win32-g++/qmake.conf
|
||||
./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
|
||||
make
|
||||
```
|
||||
|
||||
7. and finally install them
|
||||
|
||||
```bash
|
||||
make install
|
||||
cp -v $MINGW_PREFIX/lib/qt5/pkgconfig/* $MINGW_PREFIX/lib/pkgconfig/.
|
||||
cd ..
|
||||
```
|
||||
|
||||
8. now it's time for the SVG module...
|
||||
|
||||
```bash
|
||||
wget http://download.qt.io/archive/qt/5.15/5.15.8/submodules/qtsvg-everywhere-opensource-src-5.15.8.zip
|
||||
unzip qtsvg-everywhere-opensource-src-5.15.8.zip
|
||||
|
@ -365,7 +598,9 @@ make install
|
|||
cp -v $MINGW_PREFIX/lib/qt5/pkgconfig/* $MINGW_PREFIX/lib/pkgconfig/.
|
||||
cd ..
|
||||
```
|
||||
|
||||
9. ...and for the tools
|
||||
|
||||
```bash
|
||||
wget http://download.qt.io/archive/qt/5.15/5.15.8/submodules/qttools-everywhere-opensource-src-5.15.8.zip
|
||||
unzip qttools-everywhere-opensource-src-5.15.8.zip
|
||||
|
@ -376,66 +611,83 @@ make
|
|||
make install
|
||||
cd ..
|
||||
```
|
||||
|
||||
#### Compilation of puNES
|
||||
|
||||
10. Now you have everything you need to compile correctly puNES
|
||||
|
||||
```bash
|
||||
git clone https://github.com/punesemu/puNES
|
||||
cd puNES
|
||||
```
|
||||
|
||||
if you want D3D9 version :
|
||||
|
||||
```bash
|
||||
cmake -B build -G Ninja -DENABLE_FFMPEG:BOOL=ON -DENABLE_OPENGL:BOOL=OFF
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
otherwise :
|
||||
|
||||
```bash
|
||||
cmake -B build -G Ninja -DENABLE_FFMPEG:BOOL=ON
|
||||
cmake --build build -j2
|
||||
```
|
||||
|
||||
The executable `punes.exe` is in the `build/src` directory but in order to run it you need the following dlls:
|
||||
* 7z.dl
|
||||
* avcodec-58.dll
|
||||
* avformat-58.dll
|
||||
* avutil-56.dll
|
||||
* cg.dll
|
||||
* cgD3D9.dll (only for D3D9 version)
|
||||
* cgGL.dll (only for OpenGL version)
|
||||
* libwinpthread-1.dll
|
||||
* swresample-3.dll
|
||||
* swscale-5.dll
|
||||
|
||||
- 7z.dl
|
||||
- avcodec-58.dll
|
||||
- avformat-58.dll
|
||||
- avutil-56.dll
|
||||
- cg.dll
|
||||
- cgD3D9.dll (only for D3D9 version)
|
||||
- cgGL.dll (only for OpenGL version)
|
||||
- libwinpthread-1.dll
|
||||
- swresample-3.dll
|
||||
- swscale-5.dll
|
||||
|
||||
that 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.
|
||||
|
||||
#### Windows Debug version
|
||||
|
||||
If you need the debug version then you need to replace the `cmake -B build -G Ninja` command of the previous examples with the following:
|
||||
|
||||
```bash
|
||||
cmake -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 [...]
|
||||
```
|
||||
|
||||
where `[...]` are the other necessary options.
|
||||
|
||||
</details>
|
||||
|
||||
-----------
|
||||
---
|
||||
|
||||
#### :movie_camera: FFmpeg
|
||||
|
||||
It is always possible to disable audio/video recording support by specifying the `configure` parameter `--without-ffmpeg`.
|
||||
If the installed version is lower than 4.0 the support will be disabled automatically.
|
||||
|
||||
Supported audio recording formats:
|
||||
* WAV Audio
|
||||
* MP3 Audio ([lame](https://xiph.org/vorbis/)) (*)
|
||||
* AAC Audio
|
||||
* Flac Audio
|
||||
* Ogg Audio ([vorbis](https://xiph.org/vorbis/)) (*)
|
||||
* Opus Audio ([libopus](https://www.opus-codec.org)) (*)
|
||||
|
||||
- WAV Audio
|
||||
- MP3 Audio ([lame](https://xiph.org/vorbis/)) (\*)
|
||||
- AAC Audio
|
||||
- Flac Audio
|
||||
- Ogg Audio ([vorbis](https://xiph.org/vorbis/)) (\*)
|
||||
- Opus Audio ([libopus](https://www.opus-codec.org)) (\*)
|
||||
|
||||
Supported video recording formats:
|
||||
* MPEG 1 Video
|
||||
* MPEG 2 Video
|
||||
* MPEG 4 Video
|
||||
* MPEG H264 Video ([libx264](https://www.videolan.org/developers/x264.html)) (*)
|
||||
* High Efficiency Video Codec ([libx265](https://www.videolan.org/developers/x265.html)) (*)
|
||||
* WebM Video ([libvpx](https://www.webmproject.org/code)) (*)
|
||||
* Windows Media Video
|
||||
* AVI FF Video
|
||||
* AVI Video
|
||||
|
||||
(*) if compiled in FFmpeg.
|
||||
- MPEG 1 Video
|
||||
- MPEG 2 Video
|
||||
- MPEG 4 Video
|
||||
- MPEG H264 Video ([libx264](https://www.videolan.org/developers/x264.html)) (\*)
|
||||
- High Efficiency Video Codec ([libx265](https://www.videolan.org/developers/x265.html)) (\*)
|
||||
- WebM Video ([libvpx](https://www.webmproject.org/code)) (\*)
|
||||
- Windows Media Video
|
||||
- AVI FF Video
|
||||
- AVI Video
|
||||
|
||||
(\*) if compiled in FFmpeg.
|
||||
|
|
Loading…
Reference in a new issue