mirror of
https://github.com/emu-russia/pureikyubu.git
synced 2025-04-02 10:42:15 -04:00
Compare commits
603 commits
dolwin-rel
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
c6e2b073a6 | ||
|
70f45f227c | ||
|
d115ff8b03 | ||
|
5b8d984d8d | ||
|
86a80488ec | ||
|
0f9f21cc64 | ||
|
d7ac90a07f | ||
|
1bd24bbd5c | ||
|
43eb66cd9c | ||
|
a817428139 | ||
|
874b0f43d6 | ||
|
608b00a385 | ||
|
086551c0b2 | ||
|
60978d5eaf | ||
|
f4fa7b5dbf | ||
|
c42efabf87 | ||
|
434e362a49 | ||
|
9c23e76565 | ||
|
4297afdd99 | ||
|
ed161e17ae | ||
|
5267764f15 | ||
|
0e4751340d | ||
|
5b88fbf719 | ||
|
e6a3012c99 | ||
|
a147535dc6 | ||
|
a62af0d0df | ||
|
3a31b45b06 | ||
|
ef22c75682 | ||
|
6e1cb4003f | ||
|
d3bae88c88 | ||
|
067791461b | ||
|
2470f98dbc | ||
|
2877afeb3d | ||
|
a3bcad18c4 | ||
|
18bd3a0978 | ||
|
c4898dc1c7 | ||
|
3dd3b265d8 | ||
|
420e0310a9 | ||
|
64e9d315c7 | ||
|
b8ad5d6a0e | ||
|
1c13b6ec65 | ||
|
b9adcfb448 | ||
|
9604619508 | ||
|
ba991a9d8f | ||
|
50b7b14a92 | ||
|
517faf71b1 | ||
|
a69cad20b9 | ||
|
c9b841c4c6 | ||
|
020ca7df5e | ||
|
f1b8b93a8a | ||
|
5b4aa72e10 | ||
|
de83d857ea | ||
|
f037859cc7 | ||
|
fe8a332c8f | ||
|
e56651b869 | ||
|
fe2fd62346 | ||
|
67fbdbcb17 | ||
|
b99f01d06f | ||
|
eb56fee482 | ||
|
d93a52eff9 | ||
|
9ff4f05797 | ||
|
a29c4f4bc9 | ||
|
04b3780dc6 | ||
|
63303f1572 | ||
|
86775aec93 | ||
|
b4c65af8be | ||
|
9838228ec9 | ||
|
56a504391e | ||
|
4685c44ef0 | ||
|
f66447037b | ||
|
bc704858b7 | ||
|
09dda465c4 | ||
|
cca520351d | ||
|
baf1afede3 | ||
|
e412bd969f | ||
|
0d53a9bf92 | ||
|
6595b54e4a | ||
|
f2447713e8 | ||
|
c7671b52e0 | ||
|
633a0b7649 | ||
|
c462fd4dba | ||
|
a4b4504faf | ||
|
e9c99608a8 | ||
|
266500be5f | ||
|
b02aaddf83 | ||
|
5d01868622 | ||
|
e7f9a44cc3 | ||
|
b2692d0917 | ||
|
e72cb70959 | ||
|
94caee299a | ||
|
e927bbda0a | ||
|
c6c9f1a548 | ||
|
23e85c4b3c | ||
|
2588dbea29 | ||
|
a45d2cfb79 | ||
|
00e05af09c | ||
|
5ce4d4d187 | ||
|
a06114993f | ||
|
87775940eb | ||
|
2a3ad124ee | ||
|
e545b56e38 | ||
|
4c2c9b38cc | ||
|
8026d5c891 | ||
|
f7f7a3876c | ||
|
31a74bce94 | ||
|
2569b34fbb | ||
|
7e373cabd6 | ||
|
205f269746 | ||
|
5095dc2343 | ||
|
769791d860 | ||
|
0cc5e477fb | ||
|
1b66d38bd8 | ||
|
2b448487b3 | ||
|
f68a821f48 | ||
|
fee8a5ed04 | ||
|
93c270de4e | ||
|
a698b2d0f5 | ||
|
a82ff49671 | ||
|
8eabe1883b | ||
|
6d3f949006 | ||
|
28f81258df | ||
|
fae06c300b | ||
|
727de6de7e | ||
|
c201ad9800 | ||
|
09da5e9d8c | ||
|
cc68053d1e | ||
|
6ff9d076ab | ||
|
3681e5418b | ||
|
bbf412e1cf | ||
|
c6392363ed | ||
|
89e0460c19 | ||
|
68880641ab | ||
|
bced7042c2 | ||
|
6abe01273e | ||
|
aaa4b85210 | ||
|
f960c6102f | ||
|
0488ccb302 | ||
|
b675dd7d00 | ||
|
564ebd94c7 | ||
|
3e9e9cb073 | ||
|
f01d156a9b | ||
|
8777f85dfc | ||
|
3fa9b9a60c | ||
|
bd1b05b44e | ||
|
1a6577da8a | ||
|
e5a6a63b69 | ||
|
3b34b8a4ec | ||
|
b61588efb9 | ||
|
775564316e | ||
|
4cce080c5a | ||
|
d9276d9fbb | ||
|
2d550a5c9c | ||
|
da3623d7c8 | ||
|
b54f4684aa | ||
|
3b6d70a642 | ||
|
693e3110f9 | ||
|
fc232ab1ea | ||
|
851ab56993 | ||
|
b6a6ada760 | ||
|
770da3e2b4 | ||
|
305292a326 | ||
|
6f4124ba18 | ||
|
5729eee432 | ||
|
e08ab4f1b2 | ||
|
e0980dce89 | ||
|
d6b0fe5bb2 | ||
|
d3ed5782c5 | ||
|
baa71db96b | ||
|
e060ee6139 | ||
|
b08f70564b | ||
|
c5aaa0faee | ||
|
1a487d1755 | ||
|
fde383a61c | ||
|
15043154a7 | ||
|
541f350312 | ||
|
2a2f446d09 | ||
|
543536c565 | ||
|
b999171f38 | ||
|
80fe587fa5 | ||
|
d02a4eef3a | ||
|
b0d54ba172 | ||
|
cc29db5483 | ||
|
6cc5e4b751 | ||
|
535273ff28 | ||
|
882803dced | ||
|
a660bbc2f0 | ||
|
d0dff77062 | ||
|
e8d9a28ff7 | ||
|
22728acac9 | ||
|
6cf12ca3d0 | ||
|
3ff43fe52e | ||
|
8fb72648a7 | ||
|
7d11ff0ba4 | ||
|
826c90bf66 | ||
|
ba85714e70 | ||
|
6eed1582b1 | ||
|
6e1dcab2cf | ||
|
a0bc04c994 | ||
|
1c75be4fd4 | ||
|
fea1a1e86a | ||
|
34d0a5e704 | ||
|
80c75d91cf | ||
|
35576a80e0 | ||
|
f2522e2941 | ||
|
787e9a37a8 | ||
|
664b825240 | ||
|
710aca297a | ||
|
99cddc1cbd | ||
|
c60b39daba | ||
|
9d800a3d44 | ||
|
d779e1e9a2 | ||
|
21245d9b34 | ||
|
a01dae3aa8 | ||
|
0acaded99e | ||
|
9a8a8d35b3 | ||
|
d43ab7e23b | ||
|
937473e5bc | ||
|
583620d97e | ||
|
d5f0eb1ff9 | ||
|
47b7915f10 | ||
|
41c2f6c372 | ||
|
dc4afc4cc1 | ||
|
ad35693de5 | ||
|
4b2a9db015 | ||
|
bc98452e6c | ||
|
17859b2b8f | ||
|
788f858635 | ||
|
37938a4e4d | ||
|
24d1fc1e93 | ||
|
8cc28373fa | ||
|
2d006f33d4 | ||
|
8ca466de82 | ||
|
5705b8f786 | ||
|
a0b61188d8 | ||
|
27258d4b3b | ||
|
473e927812 | ||
|
584eb2f61d | ||
|
d80d51b8c9 | ||
|
208dae53b2 | ||
|
e9f95caf04 | ||
|
88338f5a32 | ||
|
c3af5d6d18 | ||
|
080c914f18 | ||
|
d395454093 | ||
|
f8ea5343b3 | ||
|
c1e763dcc4 | ||
|
09e92b055b | ||
|
c4ffb43fac | ||
|
06a8cd00e2 | ||
|
416d55242a | ||
|
d066c01fe1 | ||
|
9c03b5dbeb | ||
|
bcf9a24fa3 | ||
|
0865159dcc | ||
|
d9dcd53e67 | ||
|
bb56122df1 | ||
|
4304f7dac2 | ||
|
fc1406dea6 | ||
|
9452ce934a | ||
|
dbc2d9956f | ||
|
47bf9207c5 | ||
|
6b7b3c02b7 | ||
|
084da6e5fd | ||
|
ccf335fba0 | ||
|
33a5e708b5 | ||
|
9fff18d1c4 | ||
|
0a8235e3fa | ||
|
fa6fb1994c | ||
|
ceaded68cc | ||
|
f076bcc0e3 | ||
|
7b049dafcd | ||
|
0532fd25e4 | ||
|
334e5f21be | ||
|
3404d6b85c | ||
|
56250830c0 | ||
|
6e8639efa0 | ||
|
c774284327 | ||
|
57d64f52a3 | ||
|
2130db4bc8 | ||
|
15f4a3a3f2 | ||
|
c6f0eccf65 | ||
|
0a717c86b0 | ||
|
4c44d7690c | ||
|
df7d5ea673 | ||
|
a0101d7952 | ||
|
7d99ec52e3 | ||
|
38b3252b92 | ||
|
e8334f71b7 | ||
|
c5c2f75998 | ||
|
7accb5be6c | ||
|
cab82982d4 | ||
|
ffa4ddbeb0 | ||
|
50fbce7a0b | ||
|
c046f70c28 | ||
|
5cab80074e | ||
|
c9d2bca2d1 | ||
|
54682a93bb | ||
|
3535a711af | ||
|
ed5e1b8b9d | ||
|
fc38a9791c | ||
|
e0ece3e609 | ||
|
ada4f91b1f | ||
|
7bef63b9fc | ||
|
8b22c554bd | ||
|
8840183f3c | ||
|
38f9ac5351 | ||
|
7aaa864f90 | ||
|
ed8f4ee94f | ||
|
2da0c95de9 | ||
|
9c5c1200f9 | ||
|
49c68158c1 | ||
|
8b6608c285 | ||
|
8254a98902 | ||
|
502d6c5dc0 | ||
|
47900a94da | ||
|
c552e2d4c7 | ||
|
9f31b32e03 | ||
|
d401f0b2df | ||
|
982fa8e456 | ||
|
6a1b4899cc | ||
|
940692948d | ||
|
a829855612 | ||
|
3d35bee949 | ||
|
01fb84caed | ||
|
9e1ebb1ba4 | ||
|
ec91d58b83 | ||
|
404e2c7e5f | ||
|
395e1b75aa | ||
|
3dd27211c2 | ||
|
a09c29be8f | ||
|
c4d1df7517 | ||
|
508cf694b7 | ||
|
7ffbe8567e | ||
|
8d4530eb11 | ||
|
8e5f5f927c | ||
|
3140602cbd | ||
|
11fe79d74b | ||
|
ffe7b64c20 | ||
|
1e945ad190 | ||
|
818a5b7bda | ||
|
dd8460e331 | ||
|
03b96c5823 | ||
|
d4a4bdadcb | ||
|
01a49dd36a | ||
|
5b01a8501c | ||
|
0db984b4a8 | ||
|
503cb95830 | ||
|
30c34b2dbd | ||
|
021dd5d374 | ||
|
68bbe08d99 | ||
|
7cbfa72d19 | ||
|
7b8bb5d4ef | ||
|
b049ba271e | ||
|
257b368598 | ||
|
63f005fc9e | ||
|
33a02d471e | ||
|
b31bebbe42 | ||
|
3c093e4e8c | ||
|
69cf049a55 | ||
|
d4efd6e31c | ||
|
696dcf7496 | ||
|
83c4da415f | ||
|
6a046c0407 | ||
|
7bb865c0df | ||
|
3cc9eb170d | ||
|
893c2ca069 | ||
|
0d66f84b77 | ||
|
ec0941c891 | ||
|
502641cfc3 | ||
|
22d6d307cf | ||
|
edbbc658e3 | ||
|
f8fac17849 | ||
|
09a80674b5 | ||
|
cb24b62b31 | ||
|
7eabc236bb | ||
|
d32f108453 | ||
|
86db5fdadc | ||
|
78867f4d19 | ||
|
7d7ded9597 | ||
|
80862fb23d | ||
|
ff1154561d | ||
|
3451876e30 | ||
|
5362106309 | ||
|
f58fd3bee7 | ||
|
4d078840dd | ||
|
31ac71bc0c | ||
|
d581f04877 | ||
|
01b887a672 | ||
|
fc0b2dc53f | ||
|
086b9d3d46 | ||
|
0000d65a3a | ||
|
f619dfd5d4 | ||
|
a512ac366b | ||
|
ad5a988b15 | ||
|
77541bc03c | ||
|
cd294e5e41 | ||
|
f63267c741 | ||
|
5d11c1f629 | ||
|
f7b831f701 | ||
|
83e03394e5 | ||
|
0d225e1631 | ||
|
f1bff577bc | ||
|
075cd7181b | ||
|
ed5543655a | ||
|
7c9c71bc8b | ||
|
0468f3d41a | ||
|
da7fb24b9c | ||
|
93f59ec850 | ||
|
cc0d8e94ce | ||
|
30c511adfe | ||
|
19118d3446 | ||
|
d2286cc807 | ||
|
b034aabc95 | ||
|
ac602452d1 | ||
|
38b8bb4591 | ||
|
d8e01f7d19 | ||
|
376a5595a4 | ||
|
6d60977727 | ||
|
1d00a3aa44 | ||
|
98909332b5 | ||
|
3343a893d2 | ||
|
f41ceaa064 | ||
|
6e07c33ff7 | ||
|
b23d548d83 | ||
|
aeb4d35581 | ||
|
e537c6a8cf | ||
|
7700975ba0 | ||
|
2316e4f315 | ||
|
ea9c868df5 | ||
|
a035f4a576 | ||
|
7638285f37 | ||
|
8891df9f18 | ||
|
8f83b4b2ed | ||
|
a5d5a555eb | ||
|
df7d9acc0b | ||
|
44152fc5e1 | ||
|
7e5de9990c | ||
|
f8d455665b | ||
|
a0b0772226 | ||
|
48a036c1bb | ||
|
e6e5839e42 | ||
|
2f4e0d6dd8 | ||
|
5bf4d7799c | ||
|
22193285c4 | ||
|
6a149b61d8 | ||
|
752615ae4e | ||
|
65fcc30677 | ||
|
e9b8067dae | ||
|
62b39c552c | ||
|
894eb4f9b9 | ||
|
907578030c | ||
|
00c28817dc | ||
|
d1a7e27718 | ||
|
5c8cb59b89 | ||
|
dec0a16d59 | ||
|
3a40928a86 | ||
|
ac81be74b9 | ||
|
d9851eb204 | ||
|
2d2df23289 | ||
|
773ffc36b4 | ||
|
771f706044 | ||
|
c78b41bdc1 | ||
|
61c3c0504d | ||
|
650f3fd04d | ||
|
7ed546cc44 | ||
|
b1ba1e5298 | ||
|
ae8ef2272b | ||
|
dd0e8925e9 | ||
|
c9f2078038 | ||
|
f02aae14e7 | ||
|
612a239dff | ||
|
34fa823d93 | ||
|
437e49185f | ||
|
0840914edf | ||
|
b42eb8c1e5 | ||
|
cf659213e5 | ||
|
ea9a39a316 | ||
|
facc01f294 | ||
|
74c14e58d2 | ||
|
4acd5eb9e7 | ||
|
5951efb683 | ||
|
dcc88c2af9 | ||
|
f3655c62e9 | ||
|
1c400fccb4 | ||
|
060a7ceb9d | ||
|
c51d0cf297 | ||
|
208d6c05d9 | ||
|
4fb07f277f | ||
|
f6492d28a8 | ||
|
d6ef62a1ef | ||
|
dcb51d9dd6 | ||
|
2f1fc5cff4 | ||
|
2a4edb0211 | ||
|
40c2d99606 | ||
|
22273d7c43 | ||
|
70e1a86042 | ||
|
c335673edb | ||
|
1f11365d8e | ||
|
0be120e569 | ||
|
230ebc9c37 | ||
|
10bf32bd3a | ||
|
1498cd4776 | ||
|
166aef23d7 | ||
|
3c4b2533a8 | ||
|
6362f40d4e | ||
|
08ee9cea47 | ||
|
4c9cc5ab81 | ||
|
2f269445ce | ||
|
33fb0c54cb | ||
|
9d22899d06 | ||
|
c6b33a52b8 | ||
|
3125388e23 | ||
|
723aa668ae | ||
|
01835532c2 | ||
|
1cf39ca72c | ||
|
60210691ae | ||
|
bb680c808d | ||
|
7acd6acf8d | ||
|
fb260df5ed | ||
|
d7236f1081 | ||
|
a78d2591db | ||
|
9bf1d46f43 | ||
|
f908fb9bed | ||
|
d0fee4aa5f | ||
|
656ca6ab43 | ||
|
142130d64e | ||
|
7c9d5f68e5 | ||
|
fe5a5d8390 | ||
|
b2d95f9d79 | ||
|
bba69956ee | ||
|
df8c847296 | ||
|
c5ff5ca027 | ||
|
979546299d | ||
|
93f6ea1089 | ||
|
32adfb4dd8 | ||
|
d335457b74 | ||
|
23b81a9e0c | ||
|
6c50267e08 | ||
|
1e427d3cca | ||
|
2d6f9735e0 | ||
|
7bfcbdd1bf | ||
|
0a0aa1a75a | ||
|
cd92fa5e74 | ||
|
b724fb4cad | ||
|
df77ba26ed | ||
|
b45c60424e | ||
|
d2b8b464a5 | ||
|
89456d27eb | ||
|
1648f2671c | ||
|
b410346dd8 | ||
|
2540ba5a80 | ||
|
e29b86929e | ||
|
e1c178ceb1 | ||
|
5c7b33dad7 | ||
|
2f52018adb | ||
|
2e333a1ef3 | ||
|
2f497aebb7 | ||
|
cc2fb56ade | ||
|
ba5168f664 | ||
|
c704ddb909 | ||
|
73c080820c | ||
|
9e85643a02 | ||
|
d6091645b6 | ||
|
8ca1df0c6e | ||
|
7898d3fa4e | ||
|
8167d5588e | ||
|
e30cf9f1d3 | ||
|
93884ba548 | ||
|
dcec2e8c93 | ||
|
482f8eb688 | ||
|
034bf67db8 | ||
|
32c55c2309 | ||
|
9b94a1178e | ||
|
32d38831e9 | ||
|
8f3abe8369 | ||
|
77fa8d5fa7 | ||
|
0c0d8ad2c9 | ||
|
65cc8185b1 | ||
|
b010126d1f | ||
|
614931aeaf | ||
|
a21d83577f | ||
|
cb73b351a2 | ||
|
97c1e338b1 | ||
|
2a0f3af02b | ||
|
b6a8c507aa | ||
|
10e8fb7c52 | ||
|
594377d597 | ||
|
b9b99a8ce6 | ||
|
b55d40b408 | ||
|
9b00e15148 | ||
|
6f80016c99 | ||
|
d4083e9faf | ||
|
5b8190d8b1 | ||
|
3839689991 | ||
|
5be7895e9b | ||
|
c71c9d3b19 | ||
|
159414a91d | ||
|
0e7f266ae9 | ||
|
46421b9809 | ||
|
90653cd249 | ||
|
b7aeb5827d | ||
|
57bc553261 | ||
|
7505970fd0 |
892 changed files with 139784 additions and 293213 deletions
16
.gitignore
vendored
16
.gitignore
vendored
|
@ -43,4 +43,18 @@ CMakeCache.txt
|
|||
*.a
|
||||
*.so
|
||||
|
||||
DolwinPlayground
|
||||
build/pureikyubu
|
||||
|
||||
/*.json
|
||||
|
||||
*PVS*
|
||||
|
||||
dolwin-rnd
|
||||
|
||||
build/*.elf
|
||||
build/*.map
|
||||
build/*.cmd
|
||||
temp
|
||||
|
||||
build/imgui.ini
|
||||
build/Data/*.mci
|
||||
|
|
10
.gitmodules
vendored
Normal file
10
.gitmodules
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
[submodule "thirdparty/imgui"]
|
||||
path = thirdparty/imgui
|
||||
url = https://github.com/ocornut/imgui
|
||||
[submodule "thirdparty/SDL2"]
|
||||
path = thirdparty/SDL2
|
||||
url = https://github.com/libsdl-org/SDL.git
|
||||
branch = SDL2
|
||||
[submodule "thirdparty/imgui-filebrowser"]
|
||||
path = thirdparty/imgui-filebrowser
|
||||
url = https://github.com/AirGuanZ/imgui-filebrowser.git
|
105
CMakeLists.txt
105
CMakeLists.txt
|
@ -1,33 +1,92 @@
|
|||
cmake_minimum_required (VERSION 2.8.11)
|
||||
project (DolwinPlayground)
|
||||
cmake_minimum_required (VERSION 3.0)
|
||||
project (pureikyubu)
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Ttext-segment=400000")
|
||||
# Choose an X86/X64 build
|
||||
|
||||
if (CMAKE_C_SIZEOF_DATA_PTR EQUAL 8)
|
||||
set(X86 OFF)
|
||||
set(X64 ON)
|
||||
else ()
|
||||
set(X86 ON)
|
||||
set(X64 OFF)
|
||||
endif ()
|
||||
|
||||
find_package(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2)
|
||||
find_package(SDL2 REQUIRED CONFIG COMPONENTS SDL2main)
|
||||
find_package (Threads)
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(GLEW REQUIRED)
|
||||
|
||||
add_definitions (-D_LINUX)
|
||||
add_definitions (-DCMAKE_BUILD_TYPE=Debug)
|
||||
#add_definitions (-DCMAKE_BUILD_TYPE=Debug)
|
||||
|
||||
# ../GekkoCore/Gekko.h:196:66: warning: `fastcall` attribute ignored [-Wattributes]
|
||||
add_compile_options(-Wno-attributes)
|
||||
add_compile_options(-lstdc++fs)
|
||||
|
||||
# ThirdParty
|
||||
add_subdirectory (ThirdParty/fmt/Scripts)
|
||||
add_executable (pureikyubu
|
||||
src/ai.cpp
|
||||
src/audionull.cpp
|
||||
src/bootrtc.cpp
|
||||
src/config.cpp
|
||||
src/cp.cpp
|
||||
src/cuisdl.cpp
|
||||
src/debug.cpp
|
||||
src/debugui.cpp
|
||||
src/di.cpp
|
||||
src/dsp.cpp
|
||||
src/dspcore.cpp
|
||||
src/dspdebug.cpp
|
||||
src/dspdec.cpp
|
||||
src/dspdisasm.cpp
|
||||
src/dvd.cpp
|
||||
src/dvddebug.cpp
|
||||
src/exi.cpp
|
||||
src/flipper.cpp
|
||||
src/flipperdebug.cpp
|
||||
src/gekko.cpp
|
||||
src/gekkoc.cpp
|
||||
src/gekkodebug.cpp
|
||||
src/gekkodec.cpp
|
||||
src/gekkodisasm.cpp
|
||||
src/gfx.cpp
|
||||
src/jdi.cpp
|
||||
src/jdiserver.cpp
|
||||
src/json.cpp
|
||||
src/main.cpp
|
||||
src/mem.cpp
|
||||
src/memcard.cpp
|
||||
src/os.cpp
|
||||
src/osdebug.cpp
|
||||
src/padnull.cpp
|
||||
src/pe.cpp
|
||||
src/pi.cpp
|
||||
src/ras.cpp
|
||||
src/si.cpp
|
||||
src/su.cpp
|
||||
src/sym.cpp
|
||||
src/tev.cpp
|
||||
src/tx.cpp
|
||||
src/uijdi.cpp
|
||||
# If you don't need UI at all, you can use the simple version instead uisdl
|
||||
#src/uisimple.cpp
|
||||
src/uisdl.cpp
|
||||
src/utils.cpp
|
||||
src/vi.cpp
|
||||
src/xf.cpp
|
||||
src/xfbsdl.cpp
|
||||
|
||||
# Backends
|
||||
add_subdirectory (SRC/Backends/AudioNull/Scripts)
|
||||
add_subdirectory (SRC/Backends/VideoNull/Scripts)
|
||||
add_subdirectory (SRC/Backends/GraphicsNull/Scripts)
|
||||
add_subdirectory (SRC/Backends/PadNull/Scripts)
|
||||
thirdparty/imgui/imgui.cpp
|
||||
thirdparty/imgui/imgui_demo.cpp
|
||||
thirdparty/imgui/imgui_draw.cpp
|
||||
thirdparty/imgui/backends/imgui_impl_sdl2.cpp
|
||||
thirdparty/imgui/backends/imgui_impl_sdlrenderer2.cpp
|
||||
thirdparty/imgui/imgui_tables.cpp
|
||||
thirdparty/imgui/imgui_widgets.cpp
|
||||
)
|
||||
|
||||
# DolwinEmu Core
|
||||
add_subdirectory (SRC/Common/Scripts)
|
||||
add_subdirectory (SRC/Debugger/Scripts)
|
||||
add_subdirectory (SRC/DolwinEmu/Scripts)
|
||||
add_subdirectory (SRC/DSP/Scripts)
|
||||
add_subdirectory (SRC/DVD/Scripts)
|
||||
add_subdirectory (SRC/GekkoCore/Scripts)
|
||||
add_subdirectory (SRC/GX/Scripts)
|
||||
add_subdirectory (SRC/Hardware/Scripts)
|
||||
add_subdirectory (SRC/HighLevel/Scripts)
|
||||
target_compile_features(pureikyubu PRIVATE cxx_std_17)
|
||||
|
||||
# UI
|
||||
add_subdirectory (SRC/UI/Playground/Scripts)
|
||||
include_directories( thirdparty/imgui ${CMAKE_THREAD_LIBS_INIT} ${OPENGL_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS} $(GLEW_INCLUDE_DIRS) )
|
||||
|
||||
target_link_libraries (pureikyubu ${CMAKE_THREAD_LIBS_INIT} ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} fmt SDL2 GLEW)
|
||||
|
|
1290
Data/Games.ini
1290
Data/Games.ini
File diff suppressed because it is too large
Load diff
|
@ -1,232 +0,0 @@
|
|||
{
|
||||
|
||||
"audio":
|
||||
{
|
||||
"tracks":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"dtk_car.adp",
|
||||
"dtk_gs.adp",
|
||||
"dtk_spl.adp"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"axdemo":
|
||||
{
|
||||
"axart":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"axartdemo.spd",
|
||||
"axartdemo.spt"
|
||||
]
|
||||
},
|
||||
"midi":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"2nd_time.mid",
|
||||
"annie.mid",
|
||||
"autumnal.mid",
|
||||
"candy.mid",
|
||||
"j_cycle.mid",
|
||||
"worm.mid"
|
||||
]
|
||||
},
|
||||
"stream":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"left.adpcm",
|
||||
"left.pcm16",
|
||||
"left.pcm8",
|
||||
"right.adpcm",
|
||||
"right.pcm16",
|
||||
"right.pcm8"
|
||||
]
|
||||
},
|
||||
"synth":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"gm16adpcm.pcm",
|
||||
"gm16adpcm.wt",
|
||||
"gm16pcm.pcm",
|
||||
"gm16pcm.wt"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"carddemo":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"banner.tpl",
|
||||
"gamecube.tpl",
|
||||
"heiho.tpl",
|
||||
"heihoC8.tpl",
|
||||
"icon.tpl",
|
||||
"luigi.tpl",
|
||||
"marioCI.tpl",
|
||||
"yoshi.tpl"
|
||||
]
|
||||
},
|
||||
|
||||
"constitu":
|
||||
{
|
||||
"article1":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"section1",
|
||||
"section2",
|
||||
"section3",
|
||||
"section4",
|
||||
"section5",
|
||||
"section6",
|
||||
"section7",
|
||||
"section8",
|
||||
"section9",
|
||||
"sectionA"
|
||||
]
|
||||
},
|
||||
"article2":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"section1",
|
||||
"section2",
|
||||
"section3",
|
||||
"section4"
|
||||
]
|
||||
},
|
||||
"article3":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"section1",
|
||||
"section2",
|
||||
"section3"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"gddemo":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"gdInit.gdl",
|
||||
"gdLight.gdl",
|
||||
"gdMatrix.gdl",
|
||||
"gdTev.gdl",
|
||||
"gdTextr.gdl"
|
||||
]
|
||||
},
|
||||
|
||||
"gxTests":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"dnt-02.tpl",
|
||||
"dnt-03.tpl",
|
||||
"frb-00.tpl",
|
||||
"g2d-00.tpl",
|
||||
"geo-00.tpl",
|
||||
"lit-06.tpl",
|
||||
"lit-10.tpl",
|
||||
"pseudo.tpl",
|
||||
"tev-00.tpl",
|
||||
"tev-01.tpl",
|
||||
"tev-02.tpl",
|
||||
"tev-03.tpl",
|
||||
"tev-04.tpl",
|
||||
"tex-01.tpl",
|
||||
"tex-03.tpl",
|
||||
"tex-05.tpl",
|
||||
"tex-06.tpl",
|
||||
"tex-07.tpl",
|
||||
"tex-08.tpl",
|
||||
"tf-02.tpl",
|
||||
"tg-01.tpl",
|
||||
"tg-02.tpl",
|
||||
"tg-cube.tpl",
|
||||
"tg-cube1.tpl",
|
||||
"tg-dual.tpl",
|
||||
"tg-pc.tpl"
|
||||
],
|
||||
|
||||
"tex-02":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"ci8_1.tpl",
|
||||
"ci8_2.tpl",
|
||||
"cmp_1.tpl",
|
||||
"cmp_1mm.tpl",
|
||||
"cmp_even.tpl",
|
||||
"i4_1.tpl",
|
||||
"i4_1mm.tpl",
|
||||
"i4_odd.tpl",
|
||||
"i8_1.tpl",
|
||||
"i8_1mm.tpl",
|
||||
"i8_odd.tpl",
|
||||
"ia4_1.tpl",
|
||||
"ia4_1mm.tpl",
|
||||
"ia4_odd.tpl",
|
||||
"ia8_1.tpl",
|
||||
"ia8_1mm.tpl",
|
||||
"ia8_odd.tpl",
|
||||
"rgb565mm.tpl",
|
||||
"rgb565od.tpl",
|
||||
"rgb565_1.tpl",
|
||||
"rgb5a3mm.tpl",
|
||||
"rgb5a3od.tpl",
|
||||
"rgb5a3_1.tpl",
|
||||
"rgba8mm.tpl",
|
||||
"rgba8od.tpl",
|
||||
"rgba8_1.tpl"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"pictures":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"clrbars7.BMP",
|
||||
"dump.bmp",
|
||||
"gray256b.BMP",
|
||||
"gray3.BMP",
|
||||
"marina2.BMP",
|
||||
"rainbow.BMP",
|
||||
"venice3.BMP"
|
||||
]
|
||||
},
|
||||
|
||||
"spdemo":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"spdemo.spd",
|
||||
"spdemo.spt"
|
||||
]
|
||||
},
|
||||
|
||||
"texts":
|
||||
{
|
||||
"files":
|
||||
[
|
||||
"test1.txt",
|
||||
"test2.txt"
|
||||
]
|
||||
},
|
||||
|
||||
"files":
|
||||
[
|
||||
"gxTextrs.tpl",
|
||||
"opening.bnr"
|
||||
]
|
||||
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
{
|
||||
"info": {
|
||||
"description": "DolwinVideo Commands",
|
||||
"helpGroup": "DolwinVideo Debug Commands"
|
||||
},
|
||||
|
||||
"can": {
|
||||
|
||||
"DumpVat": {
|
||||
"help": "Dump CommandProcessor VCD/VAT settings"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"info": {
|
||||
"description": "GAMECUBE GPU (GX) Commands",
|
||||
"helpGroup": "GX Debug Commands"
|
||||
},
|
||||
|
||||
"can": {
|
||||
|
||||
"GXDump": {
|
||||
"help": "Show the current state of all GX registers."
|
||||
},
|
||||
|
||||
"DumpFifo": {
|
||||
"help": "Dump PI/CP FIFO configuration"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,196 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{9021D55B-470E-4D5B-967D-F9D262061BA5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
SRC\Backends\Readme.md = SRC\Backends\Readme.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DolwinCore", "DolwinCore", "{DE981B6F-2D7F-49B2-9888-8DA38A984894}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioNull", "SRC\Backends\AudioNull\Scripts\VS2015\AudioNull.vcxproj", "{37D58FB6-E50B-43E1-9A31-873741284F22}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GraphicsNull", "SRC\Backends\GraphicsNull\Scripts\VS2015\GraphicsNull.vcxproj", "{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PadNull", "SRC\Backends\PadNull\Scripts\VS2015\PadNull.vcxproj", "{CFAABE07-9E8E-4343-A226-22D3692A94EC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoNull", "SRC\Backends\VideoNull\Scripts\VS2015\VideoNull.vcxproj", "{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "SRC\Common\Scripts\VS2015\Common.vcxproj", "{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSP", "SRC\DSP\Scripts\VS2015\DSP.vcxproj", "{0336D67C-249D-4C48-BD80-8E05CE711A58}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DVD", "SRC\DVD\Scripts\VS2015\DVD.vcxproj", "{A995D286-033C-4EED-B171-6CE61D28C88F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GekkoCore", "SRC\GekkoCore\Scripts\VS2015\GekkoCore.vcxproj", "{289C41EF-117B-478C-A3F6-84906E88209E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHighLevel", "SRC\HighLevel\Scripts\VS2015\GCNHighLevel.vcxproj", "{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinPlayground", "SRC\UI\Playground\Scripts\VS2015\DolwinPlayground.vcxproj", "{7878E1FC-A17C-4CED-A929-8E947DDC0F77}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "SRC\Debugger\Scripts\VS2015\Debugger.vcxproj", "{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinEmuForPlayground", "SRC\DolwinEmu\Scripts\VS2015\DolwinEmuForPlayground.vcxproj", "{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHardwareForPlayground", "SRC\Hardware\Scripts\VS2015\GCNHardwareForPlayground.vcxproj", "{C43F1C9F-177B-46A8-BE31-08189D25AD43}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ThirdParty", "ThirdParty", "{53F8BE7B-8453-4891-9FF7-12A9C238E175}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "ThirdParty\fmt\Scripts\VS2015\fmt.vcxproj", "{768EB97B-424B-407E-B52C-B66465E9D169}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GX", "SRC\GX\Scripts\VS2015\GX.vcxproj", "{1386FC99-A29C-410C-B3D1-2A7E233F57D4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x64.Build.0 = Debug|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x86.Build.0 = Debug|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x64.ActiveCfg = Release|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x64.Build.0 = Release|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x86.ActiveCfg = Release|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x86.Build.0 = Release|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x64.Build.0 = Debug|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x86.Build.0 = Debug|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x64.ActiveCfg = Release|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x64.Build.0 = Release|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x86.ActiveCfg = Release|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x86.Build.0 = Release|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x64.Build.0 = Debug|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x64.ActiveCfg = Release|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x64.Build.0 = Release|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x86.Build.0 = Release|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x64.Build.0 = Debug|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x86.Build.0 = Debug|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x64.ActiveCfg = Release|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x64.Build.0 = Release|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x86.ActiveCfg = Release|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x86.Build.0 = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.Build.0 = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.ActiveCfg = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.Build.0 = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.Build.0 = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.Build.0 = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.Build.0 = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.ActiveCfg = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.Build.0 = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.ActiveCfg = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.Build.0 = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x86.Build.0 = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.Build.0 = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x86.ActiveCfg = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x86.Build.0 = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.Build.0 = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.ActiveCfg = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.Build.0 = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.Build.0 = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.Build.0 = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x86.Build.0 = Release|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x64.Build.0 = Debug|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x86.Build.0 = Debug|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x64.ActiveCfg = Release|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x64.Build.0 = Release|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x86.ActiveCfg = Release|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x86.Build.0 = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.Build.0 = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x86.Build.0 = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.ActiveCfg = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.Build.0 = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x86.ActiveCfg = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x86.Build.0 = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.Build.0 = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.Build.0 = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x86.Build.0 = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.Build.0 = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x86.Build.0 = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.ActiveCfg = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.Build.0 = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x86.ActiveCfg = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x86.Build.0 = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.Build.0 = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x86.Build.0 = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.ActiveCfg = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.Build.0 = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x86.ActiveCfg = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x86.Build.0 = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.Build.0 = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x86.Build.0 = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.ActiveCfg = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.Build.0 = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x86.ActiveCfg = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169} = {53F8BE7B-8453-4891-9FF7-12A9C238E175}
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {BB02B248-EDBB-4692-A6A8-AA3B81FB5511}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,196 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30225.117
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{9021D55B-470E-4D5B-967D-F9D262061BA5}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
SRC\Backends\Readme.md = SRC\Backends\Readme.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DolwinCore", "DolwinCore", "{DE981B6F-2D7F-49B2-9888-8DA38A984894}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioNull", "SRC\Backends\AudioNull\Scripts\VS2019\AudioNull.vcxproj", "{37D58FB6-E50B-43E1-9A31-873741284F22}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GraphicsNull", "SRC\Backends\GraphicsNull\Scripts\VS2019\GraphicsNull.vcxproj", "{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PadNull", "SRC\Backends\PadNull\Scripts\VS2019\PadNull.vcxproj", "{CFAABE07-9E8E-4343-A226-22D3692A94EC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoNull", "SRC\Backends\VideoNull\Scripts\VS2019\VideoNull.vcxproj", "{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "SRC\Common\Scripts\VS2019\Common.vcxproj", "{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSP", "SRC\DSP\Scripts\VS2019\DSP.vcxproj", "{0336D67C-249D-4C48-BD80-8E05CE711A58}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DVD", "SRC\DVD\Scripts\VS2019\DVD.vcxproj", "{A995D286-033C-4EED-B171-6CE61D28C88F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GekkoCore", "SRC\GekkoCore\Scripts\VS2019\GekkoCore.vcxproj", "{289C41EF-117B-478C-A3F6-84906E88209E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHighLevel", "SRC\HighLevel\Scripts\VS2019\GCNHighLevel.vcxproj", "{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinPlayground", "SRC\UI\Playground\Scripts\VS2019\DolwinPlayground.vcxproj", "{7878E1FC-A17C-4CED-A929-8E947DDC0F77}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "SRC\Debugger\Scripts\VS2019\Debugger.vcxproj", "{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinEmuForPlayground", "SRC\DolwinEmu\Scripts\VS2019\DolwinEmuForPlayground.vcxproj", "{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHardwareForPlayground", "SRC\Hardware\Scripts\VS2019\GCNHardwareForPlayground.vcxproj", "{C43F1C9F-177B-46A8-BE31-08189D25AD43}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ThirdParty", "ThirdParty", "{53F8BE7B-8453-4891-9FF7-12A9C238E175}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "ThirdParty\fmt\Scripts\VS2019\fmt.vcxproj", "{768EB97B-424B-407E-B52C-B66465E9D169}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GX", "SRC\GX\Scripts\VS2019\GX.vcxproj", "{1386FC99-A29C-410C-B3D1-2A7E233F57D4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x64.Build.0 = Debug|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x86.Build.0 = Debug|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x64.ActiveCfg = Release|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x64.Build.0 = Release|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x86.ActiveCfg = Release|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x86.Build.0 = Release|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x64.Build.0 = Debug|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x86.Build.0 = Debug|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x64.ActiveCfg = Release|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x64.Build.0 = Release|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x86.ActiveCfg = Release|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x86.Build.0 = Release|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x64.Build.0 = Debug|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x64.ActiveCfg = Release|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x64.Build.0 = Release|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x86.Build.0 = Release|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x64.Build.0 = Debug|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x86.Build.0 = Debug|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x64.ActiveCfg = Release|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x64.Build.0 = Release|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x86.ActiveCfg = Release|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x86.Build.0 = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.Build.0 = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.ActiveCfg = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.Build.0 = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.Build.0 = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.Build.0 = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.Build.0 = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.ActiveCfg = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.Build.0 = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.ActiveCfg = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.Build.0 = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x86.Build.0 = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.Build.0 = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x86.ActiveCfg = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x86.Build.0 = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.Build.0 = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.ActiveCfg = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.Build.0 = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.Build.0 = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.Build.0 = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x86.Build.0 = Release|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x64.Build.0 = Debug|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Debug|x86.Build.0 = Debug|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x64.ActiveCfg = Release|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x64.Build.0 = Release|x64
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x86.ActiveCfg = Release|Win32
|
||||
{7878E1FC-A17C-4CED-A929-8E947DDC0F77}.Release|x86.Build.0 = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.Build.0 = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x86.Build.0 = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.ActiveCfg = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.Build.0 = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x86.ActiveCfg = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x86.Build.0 = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.Build.0 = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.Build.0 = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x86.Build.0 = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.Build.0 = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x86.Build.0 = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.ActiveCfg = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.Build.0 = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x86.ActiveCfg = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x86.Build.0 = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.Build.0 = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x86.Build.0 = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.ActiveCfg = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.Build.0 = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x86.ActiveCfg = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x86.Build.0 = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.Build.0 = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x86.Build.0 = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.ActiveCfg = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.Build.0 = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x86.ActiveCfg = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C} = {9021D55B-470E-4D5B-967D-F9D262061BA5}
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169} = {53F8BE7B-8453-4891-9FF7-12A9C238E175}
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4} = {DE981B6F-2D7F-49B2-9888-8DA38A984894}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {BB02B248-EDBB-4692-A6A8-AA3B81FB5511}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,47 +0,0 @@
|
|||
# Overview
|
||||
|
||||
After restarting the development, the architecture of the emulator has changed a bit.
|
||||
|
||||
Now all the main components (like processor, debugger, etc.) use multithreading.
|
||||
|
||||
Also, all components are divided into Visual Studio projects, which are a dependency for the main Dolwin.exe project.
|
||||
|
||||
Visual Studio solution upgraded to VS2019. There should not be a problem with the build.
|
||||
|
||||
Both X86 and X64 targets are supported.
|
||||
|
||||
## Dolwin Architecture
|
||||
|
||||
Key components are shown in the diagram:
|
||||
|
||||

|
||||
|
||||
## Trends
|
||||
|
||||
- Emulator development has become more Agile. Basic milestones can be viewed on Github (https://github.com/ogamespec/dolwin/milestones)
|
||||
- The source code began to contain more c++, but without fanaticism (limited to namespaces and simple container classes)
|
||||
|
||||
## Solution structure
|
||||
|
||||
All solution projects are independent components (or try to be like that).
|
||||
|
||||
Currently, work is underway to encapsulate components in their namespaces, but the legacy code from version 0.10 does not make it so simple.
|
||||
|
||||
Currently, the following namespaces are quietly formed:
|
||||
|
||||
- Debug: for debugging functionality
|
||||
- Gekko: for the core of the Gekko CPU
|
||||
- Flipper: for various internal Flipper hardware modules (AI, VI, EXI, etc.)
|
||||
- DSP: for GameCube DSP
|
||||
- DVD: for a DVD unit (now the functionality is limited to reading images of ISO discs)
|
||||
- GX: for the Flipper GPU
|
||||
|
||||
The user interface will most likely be rewritten as a Managed C# application. In the meantime, it's just like a piece of code from version 0.10.
|
||||
|
||||
## Docs
|
||||
|
||||
All documentation is now stored in a separate repository: https://github.com/ogamespec/dolwin-docs
|
||||
|
||||
## RnD
|
||||
|
||||
For experimental and outdated code, an RnD folder was created.
|
|
@ -1,209 +0,0 @@
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DVD", "SRC\DVD\Scripts\VS2015\DVD.vcxproj", "{A995D286-033C-4EED-B171-6CE61D28C88F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSP", "SRC\DSP\Scripts\VS2015\DSP.vcxproj", "{0336D67C-249D-4C48-BD80-8E05CE711A58}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GekkoCore", "SRC\GekkoCore\Scripts\VS2015\GekkoCore.vcxproj", "{289C41EF-117B-478C-A3F6-84906E88209E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHardware", "SRC\Hardware\Scripts\VS2015\GCNHardware.vcxproj", "{C43F1C9F-177B-46A8-BE31-08189D25AD43}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHighLevel", "SRC\HighLevel\Scripts\VS2015\GCNHighLevel.vcxproj", "{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "SRC\Common\Scripts\VS2015\Common.vcxproj", "{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ThridParty", "ThridParty", "{99C5096C-2C2E-46D8-A1D5-6B79AAE32303}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "ThirdParty\fmt\Scripts\VS2015\fmt.vcxproj", "{768EB97B-424B-407E-B52C-B66465E9D169}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
SRC\Backends\Readme.md = SRC\Backends\Readme.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinVideo", "SRC\Backends\DolwinVideo\Scripts\VS2015\DolwinVideo.vcxproj", "{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DolwinCore", "DolwinCore", "{9A1AF1AF-D74F-467B-8BB6-878555324A2E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UI", "UI", "{16D2FF76-8016-41A5-9EDE-5C33BE4BA32D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinEmu", "SRC\DolwinEmu\Scripts\VS2015\DolwinEmu.vcxproj", "{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioDirectSound", "SRC\Backends\AudioDirectSound\Scripts\VS2015\AudioDirectSound.vcxproj", "{90F55EB1-232B-4970-9445-F8668087D0C3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PadSimpleWin32", "SRC\Backends\PadSimpleWin32\Scripts\VS2015\PadSimpleWin32.vcxproj", "{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoGdi", "SRC\Backends\VideoGdi\Scripts\VS2015\VideoGdi.vcxproj", "{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DebugConsole", "SRC\UI\Legacy\DebugConsole\Scripts\VS2015\DebugConsole.vcxproj", "{70896A0F-FA85-4017-8BF6-944B6581CB8F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinLegacy", "SRC\UI\Legacy\DolwinLegacy\Scripts\VS2015\DolwinLegacy.vcxproj", "{EB6E10CA-A008-45A8-A88B-4B4EFC128011}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "SRC\Debugger\Scripts\VS2015\Debugger.vcxproj", "{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GX", "SRC\GX\Scripts\VS2015\GX.vcxproj", "{1386FC99-A29C-410C-B3D1-2A7E233F57D4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|Win32.Build.0 = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.Build.0 = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.Build.0 = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|Win32.Build.0 = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.ActiveCfg = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.Build.0 = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.Build.0 = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|Win32.Build.0 = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.ActiveCfg = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.Build.0 = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.Build.0 = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|Win32.Build.0 = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.ActiveCfg = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.Build.0 = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|Win32.Build.0 = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.Build.0 = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.Build.0 = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|Win32.Build.0 = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.ActiveCfg = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.Build.0 = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.Build.0 = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|Win32.Build.0 = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.ActiveCfg = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.Build.0 = Release|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x64.Build.0 = Debug|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|Win32.Build.0 = Release|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x64.ActiveCfg = Release|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x64.Build.0 = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.Build.0 = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|Win32.Build.0 = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.Build.0 = Release|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|x64.Build.0 = Debug|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|Win32.Build.0 = Release|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|x64.ActiveCfg = Release|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|x64.Build.0 = Release|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|x64.Build.0 = Debug|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|Win32.Build.0 = Release|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|x64.ActiveCfg = Release|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|x64.Build.0 = Release|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|x64.Build.0 = Debug|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|Win32.Build.0 = Release|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|x64.ActiveCfg = Release|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|x64.Build.0 = Release|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|x64.Build.0 = Debug|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|Win32.Build.0 = Release|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|x64.ActiveCfg = Release|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|x64.Build.0 = Release|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|x64.Build.0 = Debug|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|Win32.Build.0 = Release|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|x64.ActiveCfg = Release|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|x64.Build.0 = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.Build.0 = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|Win32.Build.0 = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.ActiveCfg = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.Build.0 = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.Build.0 = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|Win32.Build.0 = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.ActiveCfg = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169} = {99C5096C-2C2E-46D8-A1D5-6B79AAE32303}
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F} = {16D2FF76-8016-41A5-9EDE-5C33BE4BA32D}
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011} = {16D2FF76-8016-41A5-9EDE-5C33BE4BA32D}
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {07DC6F38-FBD1-4C75-B0E6-2249E585A95D}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,253 +0,0 @@
|
|||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29806.167
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DVD", "SRC\DVD\Scripts\VS2019\DVD.vcxproj", "{A995D286-033C-4EED-B171-6CE61D28C88F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSP", "SRC\DSP\Scripts\VS2019\DSP.vcxproj", "{0336D67C-249D-4C48-BD80-8E05CE711A58}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GekkoCore", "SRC\GekkoCore\Scripts\VS2019\GekkoCore.vcxproj", "{289C41EF-117B-478C-A3F6-84906E88209E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHardware", "SRC\Hardware\Scripts\VS2019\GCNHardware.vcxproj", "{C43F1C9F-177B-46A8-BE31-08189D25AD43}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHighLevel", "SRC\HighLevel\Scripts\VS2019\GCNHighLevel.vcxproj", "{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "SRC\Common\Scripts\VS2019\Common.vcxproj", "{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ThridParty", "ThridParty", "{99C5096C-2C2E-46D8-A1D5-6B79AAE32303}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "ThirdParty\fmt\Scripts\VS2019\fmt.vcxproj", "{768EB97B-424B-407E-B52C-B66465E9D169}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
SRC\Backends\Readme.md = SRC\Backends\Readme.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinVideo", "SRC\Backends\DolwinVideo\Scripts\VS2019\DolwinVideo.vcxproj", "{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DolwinCore", "DolwinCore", "{9A1AF1AF-D74F-467B-8BB6-878555324A2E}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "UI", "UI", "{16D2FF76-8016-41A5-9EDE-5C33BE4BA32D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinEmu", "SRC\DolwinEmu\Scripts\VS2019\DolwinEmu.vcxproj", "{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioDirectSound", "SRC\Backends\AudioDirectSound\Scripts\VS2019\AudioDirectSound.vcxproj", "{90F55EB1-232B-4970-9445-F8668087D0C3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PadSimpleWin32", "SRC\Backends\PadSimpleWin32\Scripts\VS2019\PadSimpleWin32.vcxproj", "{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoGdi", "SRC\Backends\VideoGdi\Scripts\VS2019\VideoGdi.vcxproj", "{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DebugConsole", "SRC\UI\Legacy\DebugConsole\Scripts\VS2019\DebugConsole.vcxproj", "{70896A0F-FA85-4017-8BF6-944B6581CB8F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinLegacy", "SRC\UI\Legacy\DolwinLegacy\Scripts\VS2019\DolwinLegacy.vcxproj", "{EB6E10CA-A008-45A8-A88B-4B4EFC128011}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "SRC\Debugger\Scripts\VS2019\Debugger.vcxproj", "{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GX", "SRC\GX\Scripts\VS2019\GX.vcxproj", "{1386FC99-A29C-410C-B3D1-2A7E233F57D4}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GraphicsNull", "SRC\Backends\GraphicsNull\Scripts\VS2019\GraphicsNull.vcxproj", "{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AudioNull", "SRC\Backends\AudioNull\Scripts\VS2019\AudioNull.vcxproj", "{37D58FB6-E50B-43E1-9A31-873741284F22}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoNull", "SRC\Backends\VideoNull\Scripts\VS2019\VideoNull.vcxproj", "{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PadNull", "SRC\Backends\PadNull\Scripts\VS2019\PadNull.vcxproj", "{CFAABE07-9E8E-4343-A226-22D3692A94EC}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|Win32 = Release|Win32
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|Win32.Build.0 = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.Build.0 = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.Build.0 = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|Win32.Build.0 = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.ActiveCfg = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.Build.0 = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.Build.0 = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|Win32.Build.0 = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.ActiveCfg = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.Build.0 = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.Build.0 = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|Win32.Build.0 = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.ActiveCfg = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.Build.0 = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|Win32.Build.0 = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.Build.0 = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.Build.0 = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|Win32.Build.0 = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.ActiveCfg = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.Build.0 = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Debug|x64.Build.0 = Debug|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|Win32.Build.0 = Release|Win32
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.ActiveCfg = Release|x64
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169}.Release|x64.Build.0 = Release|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x64.Build.0 = Debug|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|Win32.Build.0 = Release|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x64.ActiveCfg = Release|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x64.Build.0 = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.Build.0 = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|Win32.Build.0 = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.Build.0 = Release|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Debug|x64.Build.0 = Debug|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|Win32.Build.0 = Release|Win32
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|x64.ActiveCfg = Release|x64
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3}.Release|x64.Build.0 = Release|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Debug|x64.Build.0 = Debug|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|Win32.Build.0 = Release|Win32
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|x64.ActiveCfg = Release|x64
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9}.Release|x64.Build.0 = Release|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Debug|x64.Build.0 = Debug|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|Win32.Build.0 = Release|Win32
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|x64.ActiveCfg = Release|x64
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A}.Release|x64.Build.0 = Release|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Debug|x64.Build.0 = Debug|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|Win32.Build.0 = Release|Win32
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|x64.ActiveCfg = Release|x64
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F}.Release|x64.Build.0 = Release|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Debug|x64.Build.0 = Debug|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|Win32.Build.0 = Release|Win32
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|x64.ActiveCfg = Release|x64
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011}.Release|x64.Build.0 = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.Build.0 = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|Win32.Build.0 = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.ActiveCfg = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.Build.0 = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Debug|x64.Build.0 = Debug|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|Win32.Build.0 = Release|Win32
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.ActiveCfg = Release|x64
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4}.Release|x64.Build.0 = Release|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Debug|x64.Build.0 = Debug|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|Win32.Build.0 = Release|Win32
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x64.ActiveCfg = Release|x64
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF}.Release|x64.Build.0 = Release|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Debug|x64.Build.0 = Debug|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|Win32.Build.0 = Release|Win32
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x64.ActiveCfg = Release|x64
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22}.Release|x64.Build.0 = Release|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Debug|x64.Build.0 = Debug|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|Win32.Build.0 = Release|Win32
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x64.ActiveCfg = Release|x64
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C}.Release|x64.Build.0 = Release|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Debug|x64.Build.0 = Debug|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|Win32.Build.0 = Release|Win32
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x64.ActiveCfg = Release|x64
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{768EB97B-424B-407E-B52C-B66465E9D169} = {99C5096C-2C2E-46D8-A1D5-6B79AAE32303}
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{90F55EB1-232B-4970-9445-F8668087D0C3} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{536BA2D9-BB94-48EE-99C0-30EBFAFF14C9} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{B8DCD267-1FE5-4F99-BB8E-1A7FC0FEB35A} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{70896A0F-FA85-4017-8BF6-944B6581CB8F} = {16D2FF76-8016-41A5-9EDE-5C33BE4BA32D}
|
||||
{EB6E10CA-A008-45A8-A88B-4B4EFC128011} = {16D2FF76-8016-41A5-9EDE-5C33BE4BA32D}
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{1386FC99-A29C-410C-B3D1-2A7E233F57D4} = {9A1AF1AF-D74F-467B-8BB6-878555324A2E}
|
||||
{263F3C73-83E6-4AA5-8810-9D8E6C1A45EF} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{37D58FB6-E50B-43E1-9A31-873741284F22} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{17BA92CC-00AE-4488-96A6-4D73A8F1C38C} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
{CFAABE07-9E8E-4343-A226-22D3692A94EC} = {E9B80BA6-7AC3-496B-AF9C-0BAB2A99C0C9}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {07DC6F38-FBD1-4C75-B0E6-2249E585A95D}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
70
README.md
70
README.md
|
@ -1,62 +1,44 @@
|
|||
# Nintendo GameCube Emulator
|
||||
# プレイキューブ
|
||||
|
||||

|
||||

|
||||
|
||||
Dolwin is work-in-progress emulator of Nintendo GameCube console.
|
||||
pureikyubu is work-in-progress emulator of Nintendo GameCube console.
|
||||
|
||||
The goal of the emulator is to research the hardware features of GameCube and reverse engineer technologies used to develop games for this platform.
|
||||
GameCube is the hardware masterpiece of Nintendo/ArtX engineers and it's a pleasure to explore this device and discover something new for yourself.
|
||||
|
||||
This project is revived from 2004 in 2020.
|
||||
|
||||
## Build
|
||||
|
||||
### Windows version
|
||||
|
||||
Build using Visual Studio 2015/2019. To build, open Dolwin_VS2015.sln/Dolwin_VS2019.sln and click Build.
|
||||
|
||||
### Windows Playground version
|
||||
|
||||
Build using Visual Studio 2015/2019. To build, open DolwinPlayground_VS2015.sln/DolwinPlayground_VS2019.sln and click Build.
|
||||
Build using Visual Studio 2022. To build, open `scripts/pureikyubu.sln` and click Build.
|
||||
|
||||
### Generic Linux (Ubuntu) version
|
||||
|
||||
The Linux build does not yet have support for graphics and sound. All emulation output can be seen only through debug messages.
|
||||
|
||||
```
|
||||
cd ~
|
||||
git clone https://github.com/ogamespec/dolwin.git
|
||||
cd dolwin
|
||||
cmake ./
|
||||
cmake --build ./
|
||||
# Choose a suitable folder to store a clone of the repository, cd there and then
|
||||
git clone https://github.com/emu-russia/pureikyubu.git
|
||||
cd pureikyubu
|
||||
git submodule init
|
||||
git submodule update
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
./pureikyubu pong.dol
|
||||
```
|
||||
|
||||
Requirements: CMake, pthread.
|
||||
Requirements: CMake, pthread, OpenGL, GLEW, imgui, SDL2. If cmake says that some components cannot be built, you should look for solutions on the Internet (`apt get install xxx`) as usual.
|
||||
|
||||
Currently only Playground build supported (no UI, Null backends).
|
||||
## Progress
|
||||
|
||||
## Third-party code
|
||||
||||
|
||||
|---|---|---|
|
||||
|
||||
Try not to use third-party libraries without special need.
|
||||
## Credits
|
||||
|
||||
(This does not apply to UI and backends.)
|
||||
|
||||
## Why "Dolwin"?
|
||||
|
||||
Dolwin was originally stands for "Nintendo *Dol*phin Emulator for *Win*dows" (Dolphin is GameCube codename).
|
||||
Later `Dolphin` was changed to `GameCube`, so that there is no confusion with another emulator - Dolphin-emu.
|
||||
|
||||
Later public is interested in the possibility of launching and porting Dolwin in other OSes.
|
||||
|
||||
Therefore, a small rebranding was made, now Dolwin stands for "Nintendo GameCube Emulator not only for Windows". Lol.
|
||||
|
||||
Now it's easier to count Dolwin as a common noun that doesn't mean anything.
|
||||
|
||||
## Docs
|
||||
|
||||
All documentation is now stored in a separate repository: https://github.com/ogamespec/dolwin-docs
|
||||
|
||||
## Greets
|
||||
|
||||
We would like to say Thanks to people, who helped us to make Dolwin:
|
||||
We would like to say Thanks to people, who helped us to make Dolwin/pureikyubu:
|
||||
- Costis: gcdev.com and some valuable information
|
||||
- Titanik: made GC development possible
|
||||
- tmbinc: details of GC bootrom and first working GX demos
|
||||
|
@ -76,10 +58,10 @@ Dolwin Beta-team: Chrono, darkreign, Jeil, Knuckles, MasterPhW and Posty.
|
|||
|
||||
Thanks to Martin for web-hosting on Emulation64.com
|
||||
|
||||
## Contacts
|
||||
|
||||
- Official Discord channel: https://discord.gg/Ehz8PYA
|
||||
|
||||
Dolwin 0.10 Team:
|
||||
- hotquik (http://www.hotsoft.com.ve/about/), responsible for memory cards emulation, Bootrom fonts and UI.
|
||||
- org (ogamespec), responsible for the rest;
|
||||
- org (ogamespec), responsible for the rest
|
||||
|
||||
## Contacts
|
||||
|
||||
Official Discord channel: https://discord.gg/Ehz8PYA
|
||||
|
|
4
RnD/.gitignore
vendored
4
RnD/.gitignore
vendored
|
@ -1,4 +0,0 @@
|
|||
|
||||
# https://github.com/ogamespec/dolwin/issues/129
|
||||
|
||||
volatility
|
5
RnD/DspAdpcmDecoder/.gitignore
vendored
5
RnD/DspAdpcmDecoder/.gitignore
vendored
|
@ -1,5 +0,0 @@
|
|||
Debug
|
||||
Release
|
||||
x64
|
||||
.vs
|
||||
*.bin
|
|
@ -1,100 +0,0 @@
|
|||
#include "pch.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
// Deploy Dsp Core
|
||||
|
||||
DSP::DspCore* core = new DSP::DspCore(nullptr);
|
||||
assert(core);
|
||||
|
||||
// Init adpcm decoder
|
||||
|
||||
//core->Accel.AdpcmCoef[0] = 0x0136;
|
||||
//core->Accel.AdpcmCoef[1] = 0xfe78;
|
||||
//core->Accel.AdpcmCoef[2] = 0x06b2;
|
||||
//core->Accel.AdpcmCoef[3] = 0xff09;
|
||||
//core->Accel.AdpcmCoef[4] = 0x029f;
|
||||
//core->Accel.AdpcmCoef[5] = 0x038d;
|
||||
//core->Accel.AdpcmCoef[6] = 0x0a05;
|
||||
//core->Accel.AdpcmCoef[7] = 0xfd47;
|
||||
//core->Accel.AdpcmCoef[8] = 0x047d;
|
||||
//core->Accel.AdpcmCoef[9] = 0xff11;
|
||||
//core->Accel.AdpcmCoef[10] = 0x0742;
|
||||
//core->Accel.AdpcmCoef[11] = 0x0005;
|
||||
//core->Accel.AdpcmCoef[12] = 0x04ce;
|
||||
//core->Accel.AdpcmCoef[13] = 0x02b7;
|
||||
//core->Accel.AdpcmCoef[14] = 0x0c87;
|
||||
//core->Accel.AdpcmCoef[15] = 0xfb49;
|
||||
|
||||
core->Accel.AdpcmCoef[0] = 0x00bf;
|
||||
core->Accel.AdpcmCoef[1] = 0xffc8;
|
||||
core->Accel.AdpcmCoef[2] = 0x0661;
|
||||
core->Accel.AdpcmCoef[3] = 0xff43;
|
||||
core->Accel.AdpcmCoef[4] = 0x02b9;
|
||||
core->Accel.AdpcmCoef[5] = 0x037d;
|
||||
core->Accel.AdpcmCoef[6] = 0x0a35;
|
||||
core->Accel.AdpcmCoef[7] = 0xfd14;
|
||||
|
||||
core->Accel.AdpcmCoef[8] = 0x03ca;
|
||||
core->Accel.AdpcmCoef[9] = 0x000e;
|
||||
core->Accel.AdpcmCoef[10] = 0x0732;
|
||||
core->Accel.AdpcmCoef[11] = 0x0018;
|
||||
core->Accel.AdpcmCoef[12] = 0x0499;
|
||||
core->Accel.AdpcmCoef[13] = 0x02ee;
|
||||
core->Accel.AdpcmCoef[14] = 0x0cf9;
|
||||
core->Accel.AdpcmCoef[15] = 0xfad5;
|
||||
|
||||
core->Accel.AdpcmGan = 0;
|
||||
core->Accel.AdpcmYn1 = 0;
|
||||
core->Accel.AdpcmYn2 = 0;
|
||||
|
||||
// Load Adpcm buffer
|
||||
|
||||
size_t adpcmDataSize = 0;
|
||||
|
||||
uint8_t* adpcmData = (uint8_t *)UI::FileLoad(argv[1], &adpcmDataSize);
|
||||
assert(adpcmData);
|
||||
|
||||
// Create output file
|
||||
|
||||
FILE* out;
|
||||
|
||||
fopen_s(&out, "out.bin", "wb");
|
||||
assert(out);
|
||||
|
||||
// Decode
|
||||
|
||||
uint8_t* ptr = adpcmData;
|
||||
size_t byteCounter = 0;
|
||||
|
||||
while (adpcmDataSize != 0)
|
||||
{
|
||||
uint16_t pcmSample = 0;
|
||||
|
||||
uint8_t nextByte = *ptr++;
|
||||
|
||||
if (byteCounter == 0)
|
||||
{
|
||||
core->Accel.AdpcmPds = nextByte;
|
||||
}
|
||||
else
|
||||
{
|
||||
pcmSample = _byteswap_ushort(core->DecodeAdpcm(nextByte >> 4));
|
||||
fwrite(&pcmSample, 1, sizeof(uint16_t), out);
|
||||
|
||||
pcmSample = _byteswap_ushort(core->DecodeAdpcm(nextByte & 0xf));
|
||||
fwrite(&pcmSample, 1, sizeof(uint16_t), out);
|
||||
}
|
||||
|
||||
adpcmDataSize--;
|
||||
byteCounter++;
|
||||
if (byteCounter >= 8)
|
||||
{
|
||||
byteCounter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
fclose(out);
|
||||
free(adpcmData);
|
||||
delete core;
|
||||
}
|
|
@ -1,141 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30011.22
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DspAdpcmDecoder", "DspAdpcmDecoder.vcxproj", "{383A0482-3B65-4D2E-9A33-49DE12744E7F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "..\..\SRC\Common\Scripts\Common.vcxproj", "{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Debugger", "..\..\SRC\Debugger\Scripts\Debugger.vcxproj", "{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GekkoCore", "..\..\SRC\Core\Scripts\GekkoCore.vcxproj", "{289C41EF-117B-478C-A3F6-84906E88209E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSP", "..\..\SRC\DSP\Scripts\DSP.vcxproj", "{0336D67C-249D-4C48-BD80-8E05CE711A58}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHardware", "..\..\SRC\Hardware\Scripts\GCNHardware.vcxproj", "{C43F1C9F-177B-46A8-BE31-08189D25AD43}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UI", "..\..\SRC\UI\Scripts\UI.vcxproj", "{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PAD", "..\..\SRC\PAD\Scripts\PAD.vcxproj", "{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DVD", "..\..\SRC\DVD\Scripts\DVD.vcxproj", "{A995D286-033C-4EED-B171-6CE61D28C88F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinEmu", "..\..\SRC\Dolwin\Scripts\DolwinEmu.vcxproj", "{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GCNHighLevel", "..\..\SRC\HighLevel\Scripts\GCNHighLevel.vcxproj", "{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DolwinVideo", "..\..\SRC\DolwinVideo\Scripts\DolwinVideo.vcxproj", "{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Debug|x64.Build.0 = Debug|x64
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Debug|x86.Build.0 = Debug|Win32
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Release|x64.ActiveCfg = Release|x64
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Release|x64.Build.0 = Release|x64
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Release|x86.ActiveCfg = Release|Win32
|
||||
{383A0482-3B65-4D2E-9A33-49DE12744E7F}.Release|x86.Build.0 = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.Build.0 = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.ActiveCfg = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.Build.0 = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.Build.0 = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x64.Build.0 = Debug|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Debug|x86.Build.0 = Debug|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.ActiveCfg = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x64.Build.0 = Release|x64
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x86.ActiveCfg = Release|Win32
|
||||
{7FC22F72-A07B-404A-BCE4-7A950EA3C44B}.Release|x86.Build.0 = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.Build.0 = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.ActiveCfg = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.Build.0 = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.Build.0 = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.Build.0 = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.Build.0 = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.ActiveCfg = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.Build.0 = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.ActiveCfg = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.Build.0 = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x64.Build.0 = Debug|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Debug|x86.Build.0 = Debug|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.ActiveCfg = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x64.Build.0 = Release|x64
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x86.ActiveCfg = Release|Win32
|
||||
{C43F1C9F-177B-46A8-BE31-08189D25AD43}.Release|x86.Build.0 = Release|Win32
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Debug|x64.Build.0 = Debug|x64
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Debug|x86.Build.0 = Debug|Win32
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Release|x64.ActiveCfg = Release|x64
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Release|x64.Build.0 = Release|x64
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Release|x86.ActiveCfg = Release|Win32
|
||||
{31B0B5F5-2A81-4E71-8D3A-50AA859AE991}.Release|x86.Build.0 = Release|Win32
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Debug|x64.Build.0 = Debug|x64
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Debug|x86.Build.0 = Debug|Win32
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Release|x64.ActiveCfg = Release|x64
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Release|x64.Build.0 = Release|x64
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Release|x86.ActiveCfg = Release|Win32
|
||||
{5EE55A55-7211-48AC-AC5F-C36FB97C85A2}.Release|x86.Build.0 = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x64.Build.0 = Debug|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Debug|x86.Build.0 = Debug|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.ActiveCfg = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x64.Build.0 = Release|x64
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x86.ActiveCfg = Release|Win32
|
||||
{A995D286-033C-4EED-B171-6CE61D28C88F}.Release|x86.Build.0 = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x64.Build.0 = Debug|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.ActiveCfg = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x64.Build.0 = Release|x64
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{6BE86DCE-EC88-4113-9E7B-22B6EF50FDFC}.Release|x86.Build.0 = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x64.Build.0 = Debug|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.ActiveCfg = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x64.Build.0 = Release|x64
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8B3F4ADC-DC10-442C-BBBA-8C5BA201FDBC}.Release|x86.Build.0 = Release|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x64.Build.0 = Debug|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Debug|x86.Build.0 = Debug|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x64.ActiveCfg = Release|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x64.Build.0 = Release|x64
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x86.ActiveCfg = Release|Win32
|
||||
{11D1FEFC-6EC3-461D-9DDA-BFBD0AA80B69}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {23152515-F79F-4F8C-9D36-EE82BE52B9DF}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,206 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{383A0482-3B65-4D2E-9A33-49DE12744E7F}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>DspAdpcmDecoder</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>dsound.lib;opengl32.lib;comctl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>dsound.lib;opengl32.lib;comctl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>dsound.lib;opengl32.lib;comctl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>dsound.lib;opengl32.lib;comctl32.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DspAdpcmDecoder.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\SRC\Common\Scripts\Common.vcxproj">
|
||||
<Project>{8f4f6ae1-b308-4c7f-81fc-4cddd2302c95}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\Core\Scripts\GekkoCore.vcxproj">
|
||||
<Project>{289c41ef-117b-478c-a3f6-84906e88209e}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\Debugger\Scripts\Debugger.vcxproj">
|
||||
<Project>{7fc22f72-a07b-404a-bce4-7a950ea3c44b}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\DolwinVideo\Scripts\DolwinVideo.vcxproj">
|
||||
<Project>{11d1fefc-6ec3-461d-9dda-bfbd0aa80b69}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\Dolwin\Scripts\DolwinEmu.vcxproj">
|
||||
<Project>{6be86dce-ec88-4113-9e7b-22b6ef50fdfc}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\DSP\Scripts\DSP.vcxproj">
|
||||
<Project>{0336d67c-249d-4c48-bd80-8e05ce711a58}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\DVD\Scripts\DVD.vcxproj">
|
||||
<Project>{a995d286-033c-4eed-b171-6ce61d28c88f}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\Hardware\Scripts\GCNHardware.vcxproj">
|
||||
<Project>{c43f1c9f-177b-46a8-be31-08189d25ad43}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\HighLevel\Scripts\GCNHighLevel.vcxproj">
|
||||
<Project>{8b3f4adc-dc10-442c-bbba-8c5ba201fdbc}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\PAD\Scripts\PAD.vcxproj">
|
||||
<Project>{5ee55a55-7211-48ac-ac5f-c36fb97c85a2}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\UI\Scripts\UI.vcxproj">
|
||||
<Project>{31b0b5f5-2a81-4e71-8d3a-50aa859ae991}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,33 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DspAdpcmDecoder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,12 +0,0 @@
|
|||
# DspAdpcmDecoder
|
||||
|
||||
This demo uses DspCore pieces from the emulator to test the DSP ADPCM decoder.
|
||||
|
||||
The input is encoded data (e.g. \\dvddata\\axdemo\\stream\\left.adpcm). The format of this file is:
|
||||
- First byte: Predictor/Scale
|
||||
- Next 7 bytes: encoded data
|
||||
- Repeat
|
||||
|
||||
Coefficients A0-A15 are taken from the code (not stored with the data).
|
||||
|
||||
The output is RAW Big-Endian Signed PCM16 (out.bin), which can then be checked in Audacity or another similar program for playing RAW samples.
|
|
@ -1,12 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <cassert>
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
#include "../../SRC/Hardware/Hardware.h"
|
||||
|
||||
#include "../../SRC/DSP/DspCore.h"
|
||||
|
||||
#include "../../SRC/UI/UserFile.h"
|
|
@ -1,169 +0,0 @@
|
|||
// Code for checking AX Ucode Volume Envelope mixer.
|
||||
|
||||
/*
|
||||
|
||||
|
||||
// Apply volume to sample-rate-converted samples (#0x0E48 - volume envelope per 32 samples, $0x0E43 - pointer to sample rate converted samples)
|
||||
|
||||
0355 8F 00 set40
|
||||
0356 00 80 0E 48 lri ar0, #0x0E48 // Volume envelope buffer for 32 samples
|
||||
0358 00 C1 0E 43 lr ar1, $0x0E43 // 0xCE0 ...
|
||||
035A 1C 61 mrr ar3, ar1 // ar3 = ar1 (New values replaces old)
|
||||
035B 19 3A lrri ax0.h, @ar1
|
||||
035C 19 18 lrri ax0.l, @ar0
|
||||
035D 90 59 mul ax0.l, ax0.h l ax1.h, @ar1
|
||||
035E 19 19 lrri ax1.l, @ar0
|
||||
035F 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0360 80 80 nx ls ax0.l, ac0.m
|
||||
0361 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0362 80 91 nx ls ax1.l, ac1.m
|
||||
0363 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0364 80 80 nx ls ax0.l, ac0.m
|
||||
0365 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0366 80 91 nx ls ax1.l, ac1.m
|
||||
0367 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0368 80 80 nx ls ax0.l, ac0.m
|
||||
0369 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
036A 80 91 nx ls ax1.l, ac1.m
|
||||
036B 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
036C 80 80 nx ls ax0.l, ac0.m
|
||||
036D 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
036E 80 91 nx ls ax1.l, ac1.m
|
||||
036F 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0370 80 80 nx ls ax0.l, ac0.m
|
||||
0371 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0372 80 91 nx ls ax1.l, ac1.m
|
||||
0373 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0374 80 80 nx ls ax0.l, ac0.m
|
||||
0375 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0376 80 91 nx ls ax1.l, ac1.m
|
||||
0377 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0378 80 80 nx ls ax0.l, ac0.m
|
||||
0379 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
037A 80 91 nx ls ax1.l, ac1.m
|
||||
037B 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
037C 80 80 nx ls ax0.l, ac0.m
|
||||
037D 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
037E 80 91 nx ls ax1.l, ac1.m
|
||||
037F 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0380 80 80 nx ls ax0.l, ac0.m
|
||||
0381 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0382 80 91 nx ls ax1.l, ac1.m
|
||||
0383 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0384 80 80 nx ls ax0.l, ac0.m
|
||||
0385 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0386 80 91 nx ls ax1.l, ac1.m
|
||||
0387 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0388 80 80 nx ls ax0.l, ac0.m
|
||||
0389 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
038A 80 91 nx ls ax1.l, ac1.m
|
||||
038B 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
038C 80 80 nx ls ax0.l, ac0.m
|
||||
038D 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
038E 80 91 nx ls ax1.l, ac1.m
|
||||
038F 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0390 80 80 nx ls ax0.l, ac0.m
|
||||
0391 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0392 80 91 nx ls ax1.l, ac1.m
|
||||
0393 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0394 80 80 nx ls ax0.l, ac0.m
|
||||
0395 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
0396 80 91 nx ls ax1.l, ac1.m
|
||||
0397 9E 51 mulmv ax1.l, ax1.h, ac0 l ax0.h, @ar1
|
||||
0398 80 80 nx ls ax0.l, ac0.m
|
||||
0399 97 59 mulmv ax0.l, ax0.h, ac1 l ax1.h, @ar1
|
||||
039A 80 91 nx ls ax1.l, ac1.m
|
||||
039B 9E 00 mulmv ax1.l, ax1.h, ac0
|
||||
039C 6F 33 movp ac1 s @ar3, ac0.m
|
||||
039D 1B 7F srri @ar3, ac1.m
|
||||
039E 02 9F 04 02 j $0x0402
|
||||
|
||||
{
|
||||
MulMode(false); // Multiply result by 2
|
||||
Mode40(true); // Special processing for acX.m registers enabled
|
||||
ar0 = Temp; // #0xE48 - Volume envelope buffer
|
||||
ar1 = *(uint16_t)(0xE43); // Next 32 samples after SRC (Usually initialized by #0xCE0, incremented by 32 after each SRC step)
|
||||
ar3 = ar1;
|
||||
|
||||
for (int i=0; i<32; i++)
|
||||
{
|
||||
ax0l = *ar0++;
|
||||
ax0h = *ar1++;
|
||||
Prod = ax0l * ax0h * 2; // *2 comes from SR.AM bit
|
||||
ac0 = Prod;
|
||||
*ar3++ = Saturate(ac0m); // Controlled by SR.XM bit
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace DspUnitTest
|
||||
{
|
||||
TEST_CLASS(DspUnitTest)
|
||||
{
|
||||
public:
|
||||
|
||||
TEST_METHOD(TestAxUcodeVolumeEnvelope)
|
||||
{
|
||||
uint16_t volumeEnvelope[32];
|
||||
uint16_t samples[32];
|
||||
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
volumeEnvelope[i] = 0x7fff;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
|
||||
if (i == 0)
|
||||
samples[i] = 0xffff;
|
||||
else if (i == 1)
|
||||
samples[i] = 2;
|
||||
else
|
||||
samples[i] = ((int64_t)rand() * __rdtsc()) & 0xffff;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
char text[0x100];
|
||||
int64_t prod = Muls (samples[i], volumeEnvelope[i], true);
|
||||
|
||||
uint16_t saturated = Saturate(prod);
|
||||
|
||||
sprintf_s(text, sizeof(text), "sample[%i] = 0x%04X, prod: 0x%llX, saturated: 0x%04X\n", i, samples[i], prod, saturated);
|
||||
Logger::WriteMessage(text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int64_t Muls(int16_t a, int16_t b, bool scale)
|
||||
{
|
||||
int64_t bitsPacked = (int64_t)((int64_t)(int32_t)a * (int64_t)(int32_t)b);
|
||||
if (scale)
|
||||
bitsPacked <<= 1;
|
||||
return bitsPacked;
|
||||
}
|
||||
|
||||
uint16_t Saturate(int64_t a)
|
||||
{
|
||||
uint16_t val = 0;
|
||||
if (a != (int32_t)a)
|
||||
{
|
||||
val = a > 0 ? 0x7fff : 0x8000;
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (a >> 16) & 0xffff;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
// Testing the Circular Addressing Logic
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace DSP
|
||||
{
|
||||
namespace DspCore
|
||||
{
|
||||
uint16_t CircularAddress(uint16_t r, uint16_t l, int16_t m)
|
||||
{
|
||||
if (m == 0 || l == 0)
|
||||
{
|
||||
return r;
|
||||
}
|
||||
|
||||
if (l == 0xffff)
|
||||
{
|
||||
return (uint16_t)((int16_t)r + m);
|
||||
}
|
||||
else
|
||||
{
|
||||
int16_t abs_m = m > 0 ? m : -m;
|
||||
int16_t mm = abs_m % (l + 1);
|
||||
uint16_t base = (r / (l + 1)) * (l + 1);
|
||||
uint16_t next = 0;
|
||||
uint32_t sum = 0;
|
||||
|
||||
if (m > 0)
|
||||
{
|
||||
sum = (uint32_t)((uint32_t)r + mm);
|
||||
}
|
||||
else
|
||||
{
|
||||
sum = (uint32_t)((uint32_t)r + l + 1 - mm);
|
||||
}
|
||||
|
||||
next = base + (uint16_t)(sum % (l + 1));
|
||||
|
||||
return next;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace DspUnitTest
|
||||
{
|
||||
TEST_CLASS(DspUnitTest)
|
||||
{
|
||||
public:
|
||||
|
||||
TEST_METHOD(TestCircularAddressing)
|
||||
{
|
||||
// Linear address
|
||||
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(0, 0xffff, 1) == 1);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(1, 0xffff, -1) == 0);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(0, 0xffff, -1) == 0xffff);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(0x8000, 0xffff, -1) == 0x7fff);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(0x8000, 0xffff, 1) == 0x8001);
|
||||
|
||||
// Buffer size 7 (l=6)
|
||||
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(5, 6, +1) == 6);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(6, 6, +1) == 0);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(0, 6, -1) == 6);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(0xffff, 6, -2) == 4);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(0xffff, 6, +6) == 0xfffe);
|
||||
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(11, 6, +3) == 7);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(11, 6, -5) == 13);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(11, 6, +14) == 11);
|
||||
Assert::IsTrue(DSP::DspCore::CircularAddress(11, 6, -11) == 7);
|
||||
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30011.22
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DspUnitTest", "DspUnitTest.vcxproj", "{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DSP", "..\..\SRC\DSP\Scripts\VS2019\DSP.vcxproj", "{0336D67C-249D-4C48-BD80-8E05CE711A58}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Debug|x64.Build.0 = Debug|x64
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Release|x64.ActiveCfg = Release|x64
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Release|x64.Build.0 = Release|x64
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}.Release|x86.Build.0 = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x64.Build.0 = Debug|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Debug|x86.Build.0 = Debug|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.ActiveCfg = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x64.Build.0 = Release|x64
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.ActiveCfg = Release|Win32
|
||||
{0336D67C-249D-4C48-BD80-8E05CE711A58}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {7E745209-73B2-4136-BDB3-0C6FE5768962}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,183 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{8E2565C8-9E6F-4336-B887-3B1AC8CD51DA}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>DspUnitTest</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectSubType>NativeUnitTestProject</ProjectSubType>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_WINDOWS;WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_WINDOWS;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_WINDOWS;WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_WINDOWS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="AxUcodeVolumeEnvelope.cpp" />
|
||||
<ClCompile Include="CircularAddressing.cpp" />
|
||||
<ClCompile Include="IromMixer80E7.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\SRC\DSP\Scripts\VS2019\DSP.vcxproj">
|
||||
<Project>{0336d67c-249d-4c48-bd80-8e05ce711a58}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,39 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="AxUcodeVolumeEnvelope.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="IromMixer80E7.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="CircularAddressing.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,108 +0,0 @@
|
|||
// Testing the work area of the IROM mixer code (0x80E7).
|
||||
// This mixer imposes volume for the sample from the current VPB and adds the result to the final buffer in double-precision.
|
||||
|
||||
/*
|
||||
|
||||
// Reconstructed pseudo-code (single-channel)
|
||||
sub_80E7(uint16_t volume,
|
||||
uint16_t *samples, // Input PCM 16-bit samples
|
||||
uint16_t* final_samples // Output 32-bit double-precision samples. [0] - signed high part, [1] - unsigned low
|
||||
)
|
||||
{
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
int64_t a = (int32_t)(final_samples[i][0] << 16) | final_samples[i][1];
|
||||
a <<= 16;
|
||||
a += (int16_t)samples[i] * volume * 2;
|
||||
a >>= 16;
|
||||
final_samples[i][0] = Saturated(a);
|
||||
final_samples[i][1] = (uint16_t)a;
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace DspUnitTest
|
||||
{
|
||||
TEST_CLASS(DspUnitTest)
|
||||
{
|
||||
public:
|
||||
|
||||
TEST_METHOD(TestIromMixer_80E7)
|
||||
{
|
||||
char text[0x100];
|
||||
uint16_t prevFinalOutput[2];
|
||||
uint16_t finalOutput[2];
|
||||
uint16_t sample;
|
||||
uint16_t volume;
|
||||
|
||||
volume = 0x7fff;
|
||||
|
||||
finalOutput[0] = 0;
|
||||
finalOutput[1] = 0;
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
prevFinalOutput[0] = finalOutput[0];
|
||||
prevFinalOutput[1] = finalOutput[1];
|
||||
|
||||
sample = ((int64_t)rand() * __rdtsc()) & 0xffff;
|
||||
MixOne(sample, finalOutput, volume);
|
||||
|
||||
sprintf_s(text, sizeof(text), "sample: 0x%04X, final before: 0x%04X_%04X, final after: 0x%04X_%04X, volume: 0x%04X\n",
|
||||
sample, prevFinalOutput[0], prevFinalOutput[1], finalOutput[0], finalOutput[1], volume);
|
||||
Logger::WriteMessage(text);
|
||||
}
|
||||
}
|
||||
|
||||
void MixOne(uint16_t sample, uint16_t* finalOutput, uint16_t volume)
|
||||
{
|
||||
int64_t a = (int32_t)(finalOutput[0] << 16) | finalOutput[1];
|
||||
a <<= 16;
|
||||
a += Mulsu(sample, volume, true);
|
||||
a >>= 16;
|
||||
finalOutput[0] = Saturate(a);
|
||||
finalOutput[1] = (uint16_t)a;
|
||||
}
|
||||
|
||||
// Signed x Unsigned
|
||||
int64_t Mulsu(int16_t a, int16_t b, bool scale)
|
||||
{
|
||||
int64_t bitsPacked = (int64_t)((int64_t)(int32_t)a * (int64_t)(int32_t)(uint16_t)b);
|
||||
if (scale)
|
||||
bitsPacked <<= 1;
|
||||
return bitsPacked;
|
||||
}
|
||||
|
||||
uint16_t Saturate(int64_t a)
|
||||
{
|
||||
uint16_t val = 0;
|
||||
if (a != (int32_t)a)
|
||||
{
|
||||
val = a > 0 ? 0x7fff : 0x8000;
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (a >> 16) & 0xffff;
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Example:
|
||||
// sample: 0x6429, final before: 0x0000_0000, final after: 0x0000_6428, volume: 0x7FFF
|
||||
// sample: 0xB496, final before: 0x0000_6428, final after: 0x0000_18BE, volume: 0x7FFF
|
||||
// sample: 0x68D3, final before: 0x0000_18BE, final after: 0x0000_8190, volume: 0x7FFF
|
||||
// sample: 0x4EE2, final before: 0x0000_8190, final after: 0x0000_D071, volume: 0x7FFF
|
||||
// sample: 0x4F67, final before: 0x0000_D071, final after: 0x0001_1FD7, volume: 0x7FFF
|
||||
// sample: 0xC5E8, final before: 0x0001_1FD7, final after: 0x0000_E5BF, volume: 0x7FFF
|
||||
// sample: 0x93AB, final before: 0x0000_E5BF, final after: 0x0000_796A, volume: 0x7FFF
|
||||
// sample: 0x2419, final before: 0x0000_796A, final after: 0x0000_9D82, volume: 0x7FFF
|
|
@ -1,7 +0,0 @@
|
|||
# DspUnitTest
|
||||
|
||||
Various tests and experiments with DSP.
|
||||
|
||||
The solution to this UnitTest only depends on the DSP.vcxproj component from the emulator core (which itself should be self-sufficient).
|
||||
|
||||
Over time, the solution may stop building (changes to the emulator core are constantly being made), so if this happens - slap someone on the Dolwin channel.
|
|
@ -1 +0,0 @@
|
|||
#include "pch.h"
|
|
@ -1,5 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#include "CppUnitTest.h"
|
||||
#include <intrin.h>
|
||||
#include <algorithm>
|
8
RnD/DtkDecode/.gitignore
vendored
8
RnD/DtkDecode/.gitignore
vendored
|
@ -1,8 +0,0 @@
|
|||
Debug
|
||||
Release
|
||||
x64
|
||||
.vs
|
||||
|
||||
|
||||
*.adp
|
||||
*.pcm
|
|
@ -1,42 +0,0 @@
|
|||
// Demonstration and verification of the GC DVD Audio decoder
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "../../SRC/DVD/DvdAdpcmDecode.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FILE* adpcmFile;
|
||||
FILE* pcmFile;
|
||||
|
||||
fopen_s(&adpcmFile, argv[1], "rb");
|
||||
if (!adpcmFile)
|
||||
{
|
||||
std::cout << "Specify input ADPCM file (*.adp)" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
fopen_s(&pcmFile, "output.pcm", "wb");
|
||||
if (!adpcmFile)
|
||||
{
|
||||
std::cout << "Cannot create output.pcm" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
DvdAudioInitDecoder();
|
||||
|
||||
while (!feof(adpcmFile))
|
||||
{
|
||||
uint8_t adpcmData[32];
|
||||
uint16_t decodedPcmData[2 * 28];
|
||||
|
||||
fread(adpcmData, 1, 32, adpcmFile);
|
||||
|
||||
DvdAudioDecode(adpcmData, decodedPcmData);
|
||||
|
||||
fwrite(decodedPcmData, 1, sizeof(decodedPcmData), pcmFile);
|
||||
}
|
||||
|
||||
fclose(adpcmFile);
|
||||
fclose(pcmFile);
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29926.136
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DtkDecode", "DtkDecode.vcxproj", "{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Debug|x64.Build.0 = Debug|x64
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Debug|x86.Build.0 = Debug|Win32
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Release|x64.ActiveCfg = Release|x64
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Release|x64.Build.0 = Release|x64
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Release|x86.ActiveCfg = Release|Win32
|
||||
{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {F4A59B39-5736-4720-AEF5-57290D47F9B3}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,162 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{E33C7131-0EFD-4F1E-9628-5B7CE118E7F4}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>DtkDecode</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\SRC\DVD\DvdAdpcmDecode.cpp" />
|
||||
<ClCompile Include="DtkDecode.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\SRC\DVD\DvdAdpcmDecode.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,33 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DtkDecode.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\SRC\DVD\DvdAdpcmDecode.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\SRC\DVD\DvdAdpcmDecode.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,3 +0,0 @@
|
|||
# DtkDecode
|
||||
|
||||
Demonstration and verification of the GC DVD Audio decoder.
|
5
RnD/DvdOpenFile/.gitignore
vendored
5
RnD/DvdOpenFile/.gitignore
vendored
|
@ -1,5 +0,0 @@
|
|||
Debug
|
||||
Release
|
||||
x64
|
||||
.vs
|
||||
*.bin
|
|
@ -1,218 +0,0 @@
|
|||
// DvdOpenFile.cpp
|
||||
|
||||
#include <iostream>
|
||||
#include <intrin.h>
|
||||
|
||||
#include "../../SRC/DVD/DvdStructs.h"
|
||||
|
||||
#define NameOffset(hi, lo) (((uint32_t)(hi) << 16) | (lo))
|
||||
|
||||
static DVDFileEntry* FstStart;
|
||||
static int currentDirectory;
|
||||
static char* FstStringStart;
|
||||
|
||||
// swap bytes in FST (little-endian)
|
||||
// return beginning of strings table (or NULL, if bad FST)
|
||||
static char* fst_prepare(DVDFileEntry* root)
|
||||
{
|
||||
char* nameTablePtr = nullptr;
|
||||
|
||||
root->nameOffsetLo = _byteswap_ushort(root->nameOffsetLo);
|
||||
root->fileOffset = _byteswap_ulong(root->fileOffset);
|
||||
root->fileLength = _byteswap_ulong(root->fileLength);
|
||||
|
||||
// Check root: must have no parent, has zero nameOfset and non-zero nextOffset.
|
||||
if (!(root->isDir &&
|
||||
root->parentOffset == 0 &&
|
||||
NameOffset(root->nameOffsetHi, root->nameOffsetLo) == 0 &&
|
||||
root->nextOffset != 0))
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nameTablePtr = (char*)&root[root->nextOffset];
|
||||
|
||||
// Starting from next after root
|
||||
for (uint32_t i = 1; i < root->nextOffset; i++)
|
||||
{
|
||||
DVDFileEntry* entry = &root[i];
|
||||
|
||||
entry->nameOffsetLo = _byteswap_ushort(entry->nameOffsetLo);
|
||||
entry->fileOffset = _byteswap_ulong(entry->fileOffset);
|
||||
entry->fileLength = _byteswap_ulong(entry->fileLength);
|
||||
}
|
||||
|
||||
return nameTablePtr;
|
||||
}
|
||||
|
||||
|
||||
// <0: Bad path
|
||||
static int DVDConvertPathToEntrynum(char* path)
|
||||
{
|
||||
// currentDirectory assigned by DVDChangeDir
|
||||
int entry = currentDirectory; // running entry
|
||||
|
||||
// Loop1
|
||||
while (true)
|
||||
{
|
||||
if (path[0] == 0)
|
||||
return entry;
|
||||
|
||||
// Current/parent directory walk
|
||||
|
||||
if (path[0] == '/')
|
||||
{
|
||||
entry = 0; // root
|
||||
path++;
|
||||
continue; // Loop1
|
||||
}
|
||||
|
||||
if (path[0] == '.')
|
||||
{
|
||||
if (path[1] == '.')
|
||||
{
|
||||
if (path[2] == '/')
|
||||
{
|
||||
entry = FstStart[entry].parentOffset;
|
||||
path += 3;
|
||||
continue; // Loop1
|
||||
}
|
||||
if (path[2] == 0)
|
||||
{
|
||||
return FstStart[entry].parentOffset;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (path[1] == '/')
|
||||
{
|
||||
path += 2;
|
||||
continue; // Loop1
|
||||
}
|
||||
if (path[1] == 0)
|
||||
{
|
||||
return entry;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get a pointer to the end of a file or directory name (the end is 0 or /)
|
||||
char* endPathPtr;
|
||||
|
||||
if (true)
|
||||
{
|
||||
endPathPtr = path;
|
||||
while (!(endPathPtr[0] == 0 || endPathPtr[0] == '/'))
|
||||
{
|
||||
endPathPtr++;
|
||||
}
|
||||
}
|
||||
|
||||
// if-else Block 2
|
||||
|
||||
bool afterNameCharNZ = endPathPtr[0] != 0; // after-name character != 0
|
||||
int prevEntry = entry; // Save previous entry
|
||||
size_t nameSize = endPathPtr - path; // path element nameSize
|
||||
entry++; // Increment entry
|
||||
|
||||
// Loop2
|
||||
while (true)
|
||||
{
|
||||
if ((int)FstStart[prevEntry].nextOffset <= entry) // Walk forward only
|
||||
return -1; // Bad FST
|
||||
|
||||
// Loop2 - Group 1 -- Compare names
|
||||
if (FstStart[entry].isDir || afterNameCharNZ == false /* after-name is 0 */)
|
||||
{
|
||||
char *r21 = path; // r21 -- current pathPtr to inner loop
|
||||
int nameOffset = (FstStart[entry].nameOffsetHi << 16) | FstStart[entry].nameOffsetLo;
|
||||
char* r20 = &FstStringStart[nameOffset & 0xFFFFFF]; // r20 -- ptr to current entry name
|
||||
|
||||
bool same;
|
||||
while (true)
|
||||
{
|
||||
if (*r20 == 0)
|
||||
{
|
||||
same = (*r21 == '/' || *r21 == 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (_tolower(*r20++) != _tolower(*r21++))
|
||||
{
|
||||
same = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (same)
|
||||
{
|
||||
if (afterNameCharNZ == false)
|
||||
return entry;
|
||||
path += nameSize + 1;
|
||||
break; // break Loop2
|
||||
}
|
||||
}
|
||||
|
||||
// Walk next directory/file at same level
|
||||
entry = FstStart[entry].isDir ? FstStart[entry].nextOffset : (entry + 1);
|
||||
|
||||
} // Loop2
|
||||
|
||||
} // Loop1
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
std::cout << "Hello DvdOpenFile!\n";
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
printf("Use: DvdOpenFile \"/path/to/dir/or/file\" FST.bin\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
char* dvdPath = argv[1];
|
||||
char* fstFile = argv[2];
|
||||
|
||||
// Load FST
|
||||
|
||||
FILE* f;
|
||||
fopen_s(&f, fstFile, "rb");
|
||||
if (!f)
|
||||
{
|
||||
printf("Cannot open FST: %s\n", fstFile);
|
||||
return -1;
|
||||
}
|
||||
|
||||
fseek(f, 0, SEEK_END);
|
||||
long fstSize = ftell(f);
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
uint8_t* ptr = new uint8_t[fstSize];
|
||||
|
||||
fread(ptr, 1, fstSize, f);
|
||||
fclose(f);
|
||||
|
||||
// Swap endianess
|
||||
|
||||
FstStart = (DVDFileEntry *)ptr;
|
||||
|
||||
FstStringStart = fst_prepare(FstStart);
|
||||
if (!FstStringStart)
|
||||
{
|
||||
printf("fst_prepare failed!\n");
|
||||
delete[] ptr;
|
||||
return -2;
|
||||
}
|
||||
|
||||
// Get entrynum
|
||||
|
||||
currentDirectory = 0;
|
||||
|
||||
int entryNum = DVDConvertPathToEntrynum(dvdPath);
|
||||
|
||||
printf("Entrynum to \"%s\": %i\n", dvdPath, entryNum);
|
||||
|
||||
delete[] ptr;
|
||||
return 0;
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29920.165
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DvdOpenFile", "DvdOpenFile.vcxproj", "{098D32E3-0714-4AD5-A609-D119660E756B}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Debug|x64.Build.0 = Debug|x64
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Debug|x86.Build.0 = Debug|Win32
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Release|x64.ActiveCfg = Release|x64
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Release|x64.Build.0 = Release|x64
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Release|x86.ActiveCfg = Release|Win32
|
||||
{098D32E3-0714-4AD5-A609-D119660E756B}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {EB5D1F8E-889B-4765-9A03-5F02B891D56B}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,159 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{098D32E3-0714-4AD5-A609-D119660E756B}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>DvdOpenFile</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DvdOpenFile.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\Docs\RE\DVDConvertPathToEntrynum.md" />
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,26 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DvdOpenFile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
<None Include="..\..\Docs\RE\DVDConvertPathToEntrynum.md" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,19 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LocalDebuggerCommandArguments>"/Iwamoto/CVS/Entries" fst.bin</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LocalDebuggerCommandArguments>"/Iwamoto/CVS/Entries" fst.bin</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LocalDebuggerCommandArguments>"/Iwamoto/CVS/Entries" fst.bin</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LocalDebuggerCommandArguments>"/Iwamoto/CVS/Entries" fst.bin</LocalDebuggerCommandArguments>
|
||||
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
</Project>
|
|
@ -1,15 +0,0 @@
|
|||
# DvdOpenFile
|
||||
|
||||
This demo is designed to test the operation of the DVDConvertPathToEntrynum method.
|
||||
|
||||
The DVDConvertPathToEntrynum method is used to convert the file path to the index of the FST table record, which contains service information about the DVD file system.
|
||||
|
||||
## Usage
|
||||
|
||||
DvdOpenFile "/path/to/dir/or/file" FST.bin
|
||||
|
||||
You will need a copy of FST from disk, the easiest way is to make it with the command from debugger:
|
||||
|
||||
```
|
||||
FileSave FST.bin DumpFst"
|
||||
```
|
2
RnD/EventLogMonitor/.gitattributes
vendored
2
RnD/EventLogMonitor/.gitattributes
vendored
|
@ -1,2 +0,0 @@
|
|||
*.Designer.cs binary
|
||||
*.resx binary
|
13
RnD/EventLogMonitor/.gitignore
vendored
13
RnD/EventLogMonitor/.gitignore
vendored
|
@ -1,13 +0,0 @@
|
|||
.vs
|
||||
bin
|
||||
obj
|
||||
Data
|
||||
temp
|
||||
*.opendb
|
||||
*.db
|
||||
Build
|
||||
Output
|
||||
x64
|
||||
Win32
|
||||
Data
|
||||
packages
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||
</startup>
|
||||
</configuration>
|
|
@ -1,126 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace EventLogMonitor
|
||||
{
|
||||
public enum EventLogSubsystem
|
||||
{
|
||||
Unknown = 0,
|
||||
CP,
|
||||
PE,
|
||||
VI,
|
||||
GP,
|
||||
PI,
|
||||
CPU,
|
||||
MI,
|
||||
DSP,
|
||||
DI,
|
||||
AR,
|
||||
AI,
|
||||
AIS,
|
||||
SI,
|
||||
EXI,
|
||||
MC,
|
||||
DVD,
|
||||
AX,
|
||||
}
|
||||
|
||||
public enum EventLogType
|
||||
{
|
||||
Unknown = 0,
|
||||
DebugReport, // From DBReport2
|
||||
}
|
||||
|
||||
internal class RawEventLogEntry
|
||||
{
|
||||
public EventLogType type = EventLogType.Unknown;
|
||||
public byte[] data = null;
|
||||
}
|
||||
|
||||
public class EventLogEntry
|
||||
{
|
||||
public UInt64 timestamp = 0;
|
||||
public EventLogSubsystem subsystem = EventLogSubsystem.Unknown;
|
||||
public EventLogType type = EventLogType.Unknown;
|
||||
public byte[] data = null;
|
||||
}
|
||||
|
||||
class EventLog
|
||||
{
|
||||
public static List<EventLogEntry> ParseLog (string text)
|
||||
{
|
||||
List<EventLogEntry> log = new List<EventLogEntry>();
|
||||
|
||||
JObject eventLogJson = JObject.Parse(text);
|
||||
|
||||
foreach (var obj in eventLogJson)
|
||||
{
|
||||
if (obj.Key == "subsystems")
|
||||
{
|
||||
foreach (var sub in obj.Value)
|
||||
{
|
||||
ParseSubsystem(sub, log);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return log;
|
||||
}
|
||||
|
||||
private static void ParseSubsystem (JToken sub, List<EventLogEntry> log)
|
||||
{
|
||||
EventLogSubsystem subsystem = SubFromString(sub.ToObject<JProperty>().Name);
|
||||
|
||||
foreach (var stamp in sub.Children())
|
||||
{
|
||||
EventLogEntry entry = new EventLogEntry();
|
||||
|
||||
JProperty prop = stamp.First.ToObject<JProperty>();
|
||||
|
||||
entry.timestamp = Convert.ToUInt64(prop.Name);
|
||||
entry.subsystem = subsystem;
|
||||
|
||||
foreach (var inner in stamp.First.Children())
|
||||
{
|
||||
entry.type = (EventLogType)Convert.ToInt64(inner.First.ToObject<JProperty>().Value);
|
||||
entry.data = inner.Last.First.ToObject<JArray>().ToObject<byte[]>();
|
||||
}
|
||||
|
||||
log.Add(entry);
|
||||
}
|
||||
}
|
||||
|
||||
private static EventLogSubsystem SubFromString (string subName)
|
||||
{
|
||||
EventLogSubsystem subsystem = EventLogSubsystem.Unknown;
|
||||
|
||||
switch (subName)
|
||||
{
|
||||
case "CP": return EventLogSubsystem.CP;
|
||||
case "PE": return EventLogSubsystem.PE;
|
||||
case "VI": return EventLogSubsystem.VI;
|
||||
case "GP": return EventLogSubsystem.GP;
|
||||
case "PI": return EventLogSubsystem.PI;
|
||||
case "CPU": return EventLogSubsystem.CPU;
|
||||
case "MI": return EventLogSubsystem.MI;
|
||||
case "DSP": return EventLogSubsystem.DSP;
|
||||
case "DI": return EventLogSubsystem.DI;
|
||||
case "AR": return EventLogSubsystem.AR;
|
||||
case "AI": return EventLogSubsystem.AI;
|
||||
case "AIStream": return EventLogSubsystem.AIS;
|
||||
case "SI": return EventLogSubsystem.SI;
|
||||
case "EXI": return EventLogSubsystem.EXI;
|
||||
case "MemCards": return EventLogSubsystem.MC;
|
||||
case "DVD": return EventLogSubsystem.DVD;
|
||||
case "AudioDAC": return EventLogSubsystem.AX;
|
||||
}
|
||||
|
||||
return subsystem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,93 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{0370EEC5-41B9-414C-B61D-47C7FB50D678}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>EventLogMonitor</RootNamespace>
|
||||
<AssemblyName>EventLogMonitor</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="EventLogDataModel.cs" />
|
||||
<Compile Include="FormMain.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormMain.Designer.cs">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="TimeLapseControl.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="FormMain.resx">
|
||||
<DependentUpon>FormMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -1,25 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30011.22
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EventLogMonitor", "EventLogMonitor.csproj", "{0370EEC5-41B9-414C-B61D-47C7FB50D678}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{0370EEC5-41B9-414C-B61D-47C7FB50D678}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0370EEC5-41B9-414C-B61D-47C7FB50D678}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0370EEC5-41B9-414C-B61D-47C7FB50D678}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0370EEC5-41B9-414C-B61D-47C7FB50D678}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {D4F0E55D-3D5C-4751-AB1C-C361003C363B}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
319
RnD/EventLogMonitor/FormMain.Designer.cs
generated
319
RnD/EventLogMonitor/FormMain.Designer.cs
generated
|
@ -1,319 +0,0 @@
|
|||
namespace EventLogMonitor
|
||||
{
|
||||
partial class FormMain
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
|
||||
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openEventLogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.debugToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.addRandomEventsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openFileDialogJson = new System.Windows.Forms.OpenFileDialog();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.timeLapseControl1 = new EventLogMonitor.TimeLapseControl();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.treeView1 = new System.Windows.Forms.TreeView();
|
||||
this.listView1 = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.menuStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileToolStripMenuItem,
|
||||
this.debugToolStripMenuItem,
|
||||
this.helpToolStripMenuItem});
|
||||
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.menuStrip1.Name = "menuStrip1";
|
||||
this.menuStrip1.Size = new System.Drawing.Size(850, 24);
|
||||
this.menuStrip1.TabIndex = 0;
|
||||
this.menuStrip1.Text = "menuStrip1";
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.openEventLogToolStripMenuItem,
|
||||
this.toolStripSeparator1,
|
||||
this.exitToolStripMenuItem});
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
this.fileToolStripMenuItem.Text = "File";
|
||||
//
|
||||
// openEventLogToolStripMenuItem
|
||||
//
|
||||
this.openEventLogToolStripMenuItem.Name = "openEventLogToolStripMenuItem";
|
||||
this.openEventLogToolStripMenuItem.Size = new System.Drawing.Size(167, 22);
|
||||
this.openEventLogToolStripMenuItem.Text = "Open Event Log...";
|
||||
this.openEventLogToolStripMenuItem.Click += new System.EventHandler(this.openEventLogToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(164, 6);
|
||||
//
|
||||
// exitToolStripMenuItem
|
||||
//
|
||||
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||
this.exitToolStripMenuItem.Size = new System.Drawing.Size(167, 22);
|
||||
this.exitToolStripMenuItem.Text = "Exit";
|
||||
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
|
||||
//
|
||||
// debugToolStripMenuItem
|
||||
//
|
||||
this.debugToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.addRandomEventsToolStripMenuItem});
|
||||
this.debugToolStripMenuItem.Name = "debugToolStripMenuItem";
|
||||
this.debugToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
|
||||
this.debugToolStripMenuItem.Text = "Debug";
|
||||
//
|
||||
// addRandomEventsToolStripMenuItem
|
||||
//
|
||||
this.addRandomEventsToolStripMenuItem.Name = "addRandomEventsToolStripMenuItem";
|
||||
this.addRandomEventsToolStripMenuItem.Size = new System.Drawing.Size(178, 22);
|
||||
this.addRandomEventsToolStripMenuItem.Text = "Add random events";
|
||||
this.addRandomEventsToolStripMenuItem.Click += new System.EventHandler(this.addRandomEventsToolStripMenuItem_Click);
|
||||
//
|
||||
// helpToolStripMenuItem
|
||||
//
|
||||
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.aboutToolStripMenuItem});
|
||||
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
|
||||
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
|
||||
this.helpToolStripMenuItem.Text = "Help";
|
||||
//
|
||||
// aboutToolStripMenuItem
|
||||
//
|
||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
|
||||
this.aboutToolStripMenuItem.Text = "About";
|
||||
//
|
||||
// openFileDialogJson
|
||||
//
|
||||
this.openFileDialogJson.DefaultExt = "json";
|
||||
this.openFileDialogJson.Filter = "Json files|*.json|All files|*.*";
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabel1});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 540);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(850, 22);
|
||||
this.statusStrip1.TabIndex = 1;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// toolStripStatusLabel1
|
||||
//
|
||||
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
||||
this.toolStripStatusLabel1.Size = new System.Drawing.Size(118, 17);
|
||||
this.toolStripStatusLabel1.Text = "toolStripStatusLabel1";
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 24);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.timeLapseControl1);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(850, 516);
|
||||
this.splitContainer1.SplitterDistance = 218;
|
||||
this.splitContainer1.TabIndex = 2;
|
||||
//
|
||||
// timeLapseControl1
|
||||
//
|
||||
this.timeLapseControl1.BackColor = System.Drawing.Color.DimGray;
|
||||
this.timeLapseControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.timeLapseControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.timeLapseControl1.Name = "timeLapseControl1";
|
||||
this.timeLapseControl1.ScrollBarBackColor = System.Drawing.Color.Gray;
|
||||
this.timeLapseControl1.ScrollBarCaretBorderColor = System.Drawing.Color.DarkCyan;
|
||||
this.timeLapseControl1.ScrollBarCaretBorderWidth = 2;
|
||||
this.timeLapseControl1.ScrollBarCaretColor = System.Drawing.Color.Tomato;
|
||||
this.timeLapseControl1.ScrollBarCaretShape = EventLogMonitor.TimeLapseControl.ScrollBarShape.Rect;
|
||||
this.timeLapseControl1.ScrollBarCaretWidthPrc = 10;
|
||||
this.timeLapseControl1.ScrollBarDeltaCaretPrc = 10;
|
||||
this.timeLapseControl1.ScrollBarDeltaXPrc = 1;
|
||||
this.timeLapseControl1.ScrollBarDeltaYPrc = 16;
|
||||
this.timeLapseControl1.ScrollBarHeightPrcs = 5;
|
||||
this.timeLapseControl1.SegmentBorderColor = System.Drawing.Color.RoyalBlue;
|
||||
this.timeLapseControl1.SegmentBorderWidth = 2;
|
||||
this.timeLapseControl1.SegmentColor = System.Drawing.Color.DodgerBlue;
|
||||
this.timeLapseControl1.SegmentDeltaSidePrc = 4;
|
||||
this.timeLapseControl1.SegmentLineColor = System.Drawing.Color.AliceBlue;
|
||||
this.timeLapseControl1.SegmentsPerView = 10;
|
||||
this.timeLapseControl1.SelectedSegmentBackgroundColor = System.Drawing.Color.Gray;
|
||||
this.timeLapseControl1.Size = new System.Drawing.Size(850, 218);
|
||||
this.timeLapseControl1.TabIndex = 0;
|
||||
this.timeLapseControl1.Text = "timeLapseControl1";
|
||||
this.timeLapseControl1.TimelineHeightPrcs = 5;
|
||||
this.timeLapseControl1.TimelineTextColor = System.Drawing.Color.AliceBlue;
|
||||
this.timeLapseControl1.OnTimeLapseChanged += new EventLogMonitor.TimeLapseControl.TimeLapseChanged(this.timeLapseControl1_OnTimeLapseChanged);
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer2.Name = "splitContainer2";
|
||||
//
|
||||
// splitContainer2.Panel1
|
||||
//
|
||||
this.splitContainer2.Panel1.Controls.Add(this.treeView1);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.listView1);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(850, 294);
|
||||
this.splitContainer2.SplitterDistance = 242;
|
||||
this.splitContainer2.TabIndex = 0;
|
||||
//
|
||||
// treeView1
|
||||
//
|
||||
this.treeView1.Location = new System.Drawing.Point(12, 20);
|
||||
this.treeView1.Name = "treeView1";
|
||||
this.treeView1.Size = new System.Drawing.Size(199, 328);
|
||||
this.treeView1.TabIndex = 0;
|
||||
//
|
||||
// listView1
|
||||
//
|
||||
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2,
|
||||
this.columnHeader3,
|
||||
this.columnHeader4});
|
||||
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.listView1.FullRowSelect = true;
|
||||
this.listView1.HideSelection = false;
|
||||
this.listView1.Location = new System.Drawing.Point(0, 0);
|
||||
this.listView1.Name = "listView1";
|
||||
this.listView1.Size = new System.Drawing.Size(604, 294);
|
||||
this.listView1.TabIndex = 0;
|
||||
this.listView1.UseCompatibleStateImageBehavior = false;
|
||||
this.listView1.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
this.columnHeader1.Text = "Timestamp";
|
||||
this.columnHeader1.Width = 94;
|
||||
//
|
||||
// columnHeader2
|
||||
//
|
||||
this.columnHeader2.Text = "Subsystem";
|
||||
this.columnHeader2.Width = 76;
|
||||
//
|
||||
// columnHeader3
|
||||
//
|
||||
this.columnHeader3.Text = "EventType";
|
||||
this.columnHeader3.Width = 71;
|
||||
//
|
||||
// columnHeader4
|
||||
//
|
||||
this.columnHeader4.Text = "Contents";
|
||||
this.columnHeader4.Width = 254;
|
||||
//
|
||||
// FormMain
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(850, 562);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.menuStrip1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MainMenuStrip = this.menuStrip1;
|
||||
this.Name = "FormMain";
|
||||
this.Text = "Event Log Monitor";
|
||||
this.menuStrip1.ResumeLayout(false);
|
||||
this.menuStrip1.PerformLayout();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.MenuStrip menuStrip1;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem openEventLogToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
|
||||
private System.Windows.Forms.OpenFileDialog openFileDialogJson;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private System.Windows.Forms.TreeView treeView1;
|
||||
private System.Windows.Forms.ListView listView1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader3;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader4;
|
||||
private TimeLapseControl timeLapseControl1;
|
||||
private System.Windows.Forms.ToolStripMenuItem debugToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem addRandomEventsToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using System.IO;
|
||||
|
||||
namespace EventLogMonitor
|
||||
{
|
||||
public partial class FormMain : Form
|
||||
{
|
||||
List<EventLogEntry> loadedLog;
|
||||
|
||||
public FormMain()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void openEventLogToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if ( openFileDialogJson.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string text = File.ReadAllText(openFileDialogJson.FileName, Encoding.UTF8);
|
||||
LoadEventLog(text);
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadEventLog(string text)
|
||||
{
|
||||
loadedLog = EventLog.ParseLog(text);
|
||||
|
||||
// ResetTimeLapse();
|
||||
PopulateTree();
|
||||
UpdateListView();
|
||||
}
|
||||
|
||||
private void PopulateTree ()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void UpdateListView ()
|
||||
{
|
||||
listView1.Items.Clear();
|
||||
|
||||
listView1.BeginUpdate();
|
||||
|
||||
foreach (var entry in loadedLog)
|
||||
{
|
||||
ListViewItem item = new ListViewItem(entry.timestamp.ToString());
|
||||
|
||||
item.SubItems.Add(entry.subsystem.ToString());
|
||||
item.SubItems.Add(entry.type.ToString());
|
||||
item.SubItems.Add(Encoding.Default.GetString(entry.data));
|
||||
|
||||
listView1.Items.Add(item);
|
||||
}
|
||||
|
||||
listView1.EndUpdate();
|
||||
}
|
||||
|
||||
private void addRandomEventsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
List<EventLogEntry> debugModel = new List<EventLogEntry>();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void timeLapseControl1_OnTimeLapseChanged(object sender, List<EventLogEntry> timeLineEntries)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void timeLapseControl1_OnTimeLapseChanged(object sender, EventArgs args)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,150 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="openFileDialogJson.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>132, 17</value>
|
||||
</metadata>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>289, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>25</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
|
||||
AAD///8AAACIiIiIiIiIiIiIiIcAAACIiIiIiIiIiIiIiIiIiAAIiAAAAAAAAAAAAAAAAIiACIAAAAAA
|
||||
AAAAAAAAAAAIgIgAAAAAAAAAAAAAAAAAAIiIAAAAAAAAAAdwAAAAAACIiAAAAAAAAAAHdwAAAAAAiIgA
|
||||
AAAAAAAAB3dwAAAAAIiIAAAAAAAAAAd3dwAAAACIiAAAAAAAAAAHd3dwAAAAiIgAAAAAAAAAB3d3dwAA
|
||||
AIiIAAAAAAAAAAd3d3cAAACIiAAAAAAAAAAHd3d3AAAAiIgAAAAAAAAAAHd3dwAAAIiIAAAAAAAACIAH
|
||||
d3cAAACIiAAAAAAAAIiIAHd3AAAAiIgAAAAAAAiIiIAHdwAAAIiIAAAAAACIiIiIAHcAAACIiAAAAAAI
|
||||
iIiIiIAHAAAAiIgAAAAAiIiIiIiIAAAAAIiIAAAACIiIiIiIiIAAAACIiAAAAAiIiIiIiIiAAAAAiIgA
|
||||
AAAAiIiIiIiIAAAAAIiIAAAAAAiIiIiIgAAAAACIiAAAAAAAiIiIiAAAAAAAiIgAAAAAAAiIiIAAAAAA
|
||||
AIiIAAAAAAAAiIgAAAAAAACIiAAAAAAAAAiAAAAAAAAAiAiAAAAAAAAAAAAAAAAACIAIiAAAAAAAAAAA
|
||||
AAAAAIiAAIiIiIiIiIiIiIiIiIiIAAAAiIiIiIiIiIiIiIiIAADwAAAPwAAAA4////Gf///5P////D/5
|
||||
n/w/8Y/8P+GH/D/Bg/w/gYH8PwGA/D8BgPw/AYD8PwPA/D8GYPw/DDD8PxgY/D8wDPw/YAb8P8AD/D+A
|
||||
Afw/gAH8P8AD/D/gB/w/8A/8P/gf/D/8P/w//n/8n///+Y////HAAAAD8AAADw==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1,22 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace EventLogMonitor
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new FormMain());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("EventLogMonitor")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("EventLogMonitor")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("0370eec5-41b9-414c-b61d-47c7fb50d678")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
71
RnD/EventLogMonitor/Properties/Resources.Designer.cs
generated
71
RnD/EventLogMonitor/Properties/Resources.Designer.cs
generated
|
@ -1,71 +0,0 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace EventLogMonitor.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("EventLogMonitor.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,117 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
30
RnD/EventLogMonitor/Properties/Settings.Designer.cs
generated
30
RnD/EventLogMonitor/Properties/Settings.Designer.cs
generated
|
@ -1,30 +0,0 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace EventLogMonitor.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
|
@ -1,3 +0,0 @@
|
|||
# EventLogMonitor
|
||||
|
||||
Utility for viewing Dolwin event logs.
|
|
@ -1,272 +0,0 @@
|
|||
// Control for selecting a time interval and displaying event statistics in the specified interval.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace EventLogMonitor
|
||||
{
|
||||
public partial class TimeLapseControl: Control
|
||||
{
|
||||
private BufferedGraphics gfx = null;
|
||||
private BufferedGraphicsContext context;
|
||||
private List<EventLogEntry> dataModel = new List<EventLogEntry>();
|
||||
|
||||
/// <summary>
|
||||
/// Timeline change event, in which events from the data model that are included in this timeline only will be sent
|
||||
/// </summary>
|
||||
/// <param name="sender">this control</param>
|
||||
/// <param name="timeLineEntries">events from the data model that are included in this timeline only</param>
|
||||
public delegate void TimeLapseChanged(object sender, EventArgs args);
|
||||
public event TimeLapseChanged OnTimeLapseChanged = null;
|
||||
|
||||
/// <summary>
|
||||
/// Custom control properties
|
||||
/// </summary>
|
||||
|
||||
public int SegmentsPerView { get; set; } = 10;
|
||||
public int ScrollBarHeightPrcs { get; set; } = 5;
|
||||
public int TimelineHeightPrcs { get; set; } = 5;
|
||||
public Color SegmentLineColor { get; set; } = Color.AliceBlue;
|
||||
public Color TimelineTextColor { get; set; } = Color.AliceBlue;
|
||||
public Color SelectedSegmentBackgroundColor { get; set; } = Color.Orange;
|
||||
public int SegmentDeltaSidePrc { get; set; } = 4;
|
||||
public int SegmentBorderWidth { get; set; } = 2;
|
||||
public Color SegmentBorderColor { get; set; } = Color.Firebrick;
|
||||
public Color SegmentColor { get; set; } = Color.DarkOrchid;
|
||||
public int ScrollBarDeltaXPrc { get; set; } = 1;
|
||||
public int ScrollBarDeltaYPrc { get; set; } = 4;
|
||||
public int ScrollBarDeltaCaretPrc { get; set; } = 10;
|
||||
public Color ScrollBarCaretColor { get; set; } = Color.DarkBlue;
|
||||
public int ScrollBarCaretBorderWidth { get; set; } = 2;
|
||||
public Color ScrollBarCaretBorderColor { get; set; } = Color.DarkCyan;
|
||||
public Color ScrollBarBackColor { get; set; } = Color.CadetBlue;
|
||||
|
||||
public enum ScrollBarShape
|
||||
{
|
||||
Rect,
|
||||
Rounded,
|
||||
}
|
||||
|
||||
public ScrollBarShape ScrollBarCaretShape { get; set; } = ScrollBarShape.Rect;
|
||||
|
||||
public int ScrollBarCaretWidthPrc { get; set; } = 10;
|
||||
|
||||
public TimeLapseControl()
|
||||
{
|
||||
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
||||
}
|
||||
|
||||
private void ReallocateGraphics()
|
||||
{
|
||||
context = BufferedGraphicsManager.Current;
|
||||
context.MaximumBuffer = new Size(Width + 1, Height + 1);
|
||||
|
||||
gfx = context.Allocate(CreateGraphics(),
|
||||
new Rectangle(0, 0, Width, Height));
|
||||
}
|
||||
|
||||
private void DrawGrid (Graphics gr)
|
||||
{
|
||||
Pen dashed_pen = new Pen(SegmentLineColor, 1.5f);
|
||||
dashed_pen.DashStyle = DashStyle.Dot;
|
||||
|
||||
int segments = SegmentsPerView;
|
||||
int segementWidth = this.Width / segments;
|
||||
int start_x = segementWidth;
|
||||
int start_y = TimelineHeightPrcs * this.Height / 100;
|
||||
int end_y = this.Height - ScrollBarHeightPrcs * this.Height / 100;
|
||||
|
||||
while (segments > 1)
|
||||
{
|
||||
gr.DrawLine(dashed_pen, new Point(start_x, start_y), new Point(start_x, end_y));
|
||||
segments--;
|
||||
start_x += segementWidth;
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawTimeLine (Graphics gr)
|
||||
{
|
||||
int cutoffs = SegmentsPerView;
|
||||
int cutoffWidth = this.Width / cutoffs;
|
||||
int start_x = 0;
|
||||
|
||||
while(cutoffs-- > 0)
|
||||
{
|
||||
string text = "00:11:22";
|
||||
|
||||
gr.DrawString(text, this.Font, new SolidBrush(TimelineTextColor),
|
||||
new Rectangle(start_x, 0, cutoffWidth, this.Height / 3));
|
||||
|
||||
start_x += cutoffWidth;
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawSegments(Graphics gr)
|
||||
{
|
||||
int segments = SegmentsPerView;
|
||||
int segmentWidth = this.Width / SegmentsPerView;
|
||||
int segmentHeight = this.Height - (TimelineHeightPrcs + ScrollBarHeightPrcs) * this.Height / 100;
|
||||
int deltaSidePx = SegmentDeltaSidePrc * segmentWidth / 100;
|
||||
int start_x = 0;
|
||||
int start_y = TimelineHeightPrcs * this.Height / 100;
|
||||
|
||||
// DEBUG
|
||||
Random rnd = new Random();
|
||||
|
||||
while (segments-- > 0)
|
||||
{
|
||||
int y = rnd.Next(20, segmentHeight - 20);
|
||||
|
||||
// DEBUG: Imitate selected segments
|
||||
|
||||
bool selected = rnd.Next(0, 2) == 1;
|
||||
|
||||
if (selected)
|
||||
{
|
||||
gr.FillRectangle(new SolidBrush(SelectedSegmentBackgroundColor),
|
||||
new Rectangle(start_x, start_y,
|
||||
segmentWidth, segmentHeight));
|
||||
}
|
||||
|
||||
// Body
|
||||
|
||||
Rectangle rect = new Rectangle(start_x + deltaSidePx, start_y + y,
|
||||
segmentWidth - 2 * deltaSidePx, segmentHeight - y);
|
||||
|
||||
gr.FillRectangle(new SolidBrush(SegmentColor), rect);
|
||||
|
||||
// Border
|
||||
|
||||
Pen linePen = new Pen(SegmentBorderColor, SegmentBorderWidth);
|
||||
|
||||
gr.DrawLine(linePen,
|
||||
new Point(rect.X, rect.Y + rect.Height),
|
||||
new Point(rect.X, rect.Y + 1));
|
||||
|
||||
start_x += segmentWidth;
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawScrollBar(Graphics gr)
|
||||
{
|
||||
int sbHeight = ScrollBarHeightPrcs * this.Height / 100;
|
||||
int marginX = ScrollBarDeltaXPrc * this.Width / 100;
|
||||
int marginY = ScrollBarDeltaYPrc * sbHeight / 100;
|
||||
int stripeHeight = sbHeight - 2 * marginY;
|
||||
int stripeWidth = this.Width - 2 * marginX;
|
||||
int caretMargin = ScrollBarDeltaCaretPrc * stripeHeight / 100;
|
||||
int caretWidth = ScrollBarCaretWidthPrc * stripeWidth / 100;
|
||||
|
||||
// Stripe
|
||||
|
||||
Rectangle stripeRect = new Rectangle(marginX, this.Height - marginY - stripeHeight, stripeWidth, stripeHeight);
|
||||
gr.FillRectangle(new SolidBrush(ScrollBarBackColor), stripeRect);
|
||||
|
||||
// Caret
|
||||
|
||||
Random rnd = new Random();
|
||||
|
||||
int caret_x = rnd.Next(10, this.Width - 2 * caretWidth);
|
||||
Rectangle caretRect = new Rectangle(caret_x, stripeRect.Y + caretMargin, caretWidth, stripeHeight - 2 * caretMargin);
|
||||
Brush caretBrush = new SolidBrush(ScrollBarCaretColor);
|
||||
|
||||
switch (ScrollBarCaretShape)
|
||||
{
|
||||
case ScrollBarShape.Rect:
|
||||
gr.FillRectangle(caretBrush, caretRect);
|
||||
break;
|
||||
|
||||
case ScrollBarShape.Rounded:
|
||||
GraphicsPath path = RoundedRect(caretRect, 2);
|
||||
gr.FillPath(caretBrush, path);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// https://stackoverflow.com/questions/33853434/how-to-draw-a-rounded-rectangle-in-c-sharp
|
||||
|
||||
private static GraphicsPath RoundedRect(Rectangle bounds, int radius)
|
||||
{
|
||||
int diameter = radius * 2;
|
||||
Size size = new Size(diameter, diameter);
|
||||
Rectangle arc = new Rectangle(bounds.Location, size);
|
||||
GraphicsPath path = new GraphicsPath();
|
||||
|
||||
if (radius == 0)
|
||||
{
|
||||
path.AddRectangle(bounds);
|
||||
return path;
|
||||
}
|
||||
|
||||
// top left arc
|
||||
path.AddArc(arc, 180, 90);
|
||||
|
||||
// top right arc
|
||||
arc.X = bounds.Right - diameter;
|
||||
path.AddArc(arc, 270, 90);
|
||||
|
||||
// bottom right arc
|
||||
arc.Y = bounds.Bottom - diameter;
|
||||
path.AddArc(arc, 0, 90);
|
||||
|
||||
// bottom left arc
|
||||
arc.X = bounds.Left;
|
||||
path.AddArc(arc, 90, 90);
|
||||
|
||||
path.CloseFigure();
|
||||
return path;
|
||||
}
|
||||
|
||||
private void DrawSelf (Graphics gr)
|
||||
{
|
||||
gr.Clear(this.BackColor);
|
||||
DrawSegments(gr);
|
||||
DrawTimeLine(gr);
|
||||
DrawGrid(gr);
|
||||
DrawScrollBar(gr);
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
if (gfx == null)
|
||||
ReallocateGraphics();
|
||||
|
||||
DrawSelf(gfx.Graphics);
|
||||
|
||||
gfx.Render(e.Graphics);
|
||||
}
|
||||
|
||||
protected override void OnSizeChanged(EventArgs e)
|
||||
{
|
||||
if (gfx != null)
|
||||
{
|
||||
gfx.Dispose();
|
||||
ReallocateGraphics();
|
||||
}
|
||||
|
||||
Invalidate();
|
||||
base.OnSizeChanged(e);
|
||||
}
|
||||
|
||||
public Keys GetModifierKeys()
|
||||
{
|
||||
return ModifierKeys;
|
||||
}
|
||||
|
||||
public void AssignModel (List<EventLogEntry> model)
|
||||
{
|
||||
dataModel = model;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net472" />
|
||||
</packages>
|
|
@ -1,98 +0,0 @@
|
|||
# Microsoft Developer Studio Project File - Name="GCMCMPR" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=GCMCMPR - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "GCMCMPR.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "GCMCMPR.mak" CFG="GCMCMPR - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "GCMCMPR - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "GCMCMPR - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "GCMCMPR - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /O2 /I ".\SRC" /I "..\SRC" /I "..\RES" /I "..\SRC\UserMenu" /I "..\SRC\HighLevel" /I "..\SRC\Hardware" /I "..\SRC\Emulator" /I "..\DVD\SRC" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x419 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../GCMCMPR.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "GCMCMPR - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I ".\SRC" /I "..\SRC" /I "..\RES" /I "..\SRC\UserMenu" /I "..\SRC\HighLevel" /I "..\SRC\Hardware" /I "..\SRC\Emulator" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x419 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../GCMCMPR.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "GCMCMPR - Win32 Release"
|
||||
# Name "GCMCMPR - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Src\gcmcmpr.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
|
@ -1,217 +0,0 @@
|
|||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="GCMCMPR"
|
||||
ProjectGUID="{BDDE7AAA-BC75-4846-ABC0-E8DA96E23897}"
|
||||
TargetFrameworkVersion="131072"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory=".\Debug"
|
||||
IntermediateDirectory=".\Debug"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\Debug/GCMCMPR.tlb"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories=".\SRC,..\SRC,..\RES,..\SRC\UserMenu,..\SRC\HighLevel,..\SRC\Hardware,..\SRC\Emulator"
|
||||
PreprocessorDefinitions="WIN32,_DEBUG,_CONSOLE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
PrecompiledHeaderFile=".\Debug/GCMCMPR.pch"
|
||||
AssemblerListingLocation=".\Debug/"
|
||||
ObjectFile=".\Debug/"
|
||||
ProgramDataBaseFileName=".\Debug/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib"
|
||||
OutputFile="../GCMCMPR.exe"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="libc.lib"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile=".\Debug/GCMCMPR.pdb"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory=".\Release"
|
||||
IntermediateDirectory=".\Release"
|
||||
ConfigurationType="1"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC70.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TypeLibraryName=".\Release/GCMCMPR.tlb"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories=".\SRC,..\SRC,..\RES,..\SRC\UserMenu,..\SRC\HighLevel,..\SRC\Hardware,..\SRC\Emulator,..\DVD\SRC"
|
||||
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="0"
|
||||
PrecompiledHeaderFile=".\Release/GCMCMPR.pch"
|
||||
AssemblerListingLocation=".\Release/"
|
||||
ObjectFile=".\Release/"
|
||||
ProgramDataBaseFileName=".\Release/"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
CompileAs="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386"
|
||||
AdditionalDependencies="odbc32.lib odbccp32.lib"
|
||||
OutputFile="../GCMCMPR.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="libc.lib"
|
||||
ProgramDatabaseFile=".\Release/GCMCMPR.pdb"
|
||||
SubSystem="1"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\Src\gcmcmpr.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
|
@ -1,136 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{BDDE7AAA-BC75-4846-ABC0-E8DA96E23897}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC70.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>.\Debug\</OutDir>
|
||||
<IntDir>.\Debug\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
<TypeLibraryName>.\Debug/GCMCMPR.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>.\SRC;..\SRC;..\RES;..\SRC\UserMenu;..\SRC\HighLevel;..\SRC\Hardware;..\SRC\Emulator;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<PrecompiledHeaderOutputFile>.\Debug/GCMCMPR.pch</PrecompiledHeaderOutputFile>
|
||||
<AssemblerListingLocation>.\Debug/</AssemblerListingLocation>
|
||||
<ObjectFileName>.\Debug/</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug/</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../GCMCMPR.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>libc.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<ProgramDatabaseFile>.\Debug/GCMCMPR.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Midl>
|
||||
<TypeLibraryName>.\Release/GCMCMPR.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
<AdditionalIncludeDirectories>.\SRC;..\SRC;..\RES;..\SRC\UserMenu;..\SRC\HighLevel;..\SRC\Hardware;..\SRC\Emulator;..\DVD\SRC;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<PrecompiledHeader />
|
||||
<PrecompiledHeaderOutputFile>.\Release/GCMCMPR.pch</PrecompiledHeaderOutputFile>
|
||||
<AssemblerListingLocation>.\Release/</AssemblerListingLocation>
|
||||
<ObjectFileName>.\Release/</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release/</ProgramDataBaseFileName>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<CompileAs>Default</CompileAs>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<Culture>0x0409</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalOptions>/MACHINE:I386 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<OutputFile>../GCMCMPR.exe</OutputFile>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>libc.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<ProgramDatabaseFile>.\Release/GCMCMPR.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention />
|
||||
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\gcmcmpr.cpp" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{71fd1aaf-39cb-4ec0-b284-10bdbed7e094}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{c16b6485-457f-4cc8-b925-c0c1f39f17a0}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Src\gcmcmpr.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
</Project>
|
|
@ -1,307 +0,0 @@
|
|||
// Dolwin GCM compression tool.
|
||||
|
||||
/*/ ---------------------------------------------------------------------------
|
||||
|
||||
Where 'GMP' comes from?
|
||||
-----------------------
|
||||
|
||||
'GMP' is short for 'Gamecube Master data Packed', or simply 'GCM comPressed'.
|
||||
|
||||
GMP compression details:
|
||||
------------------------
|
||||
|
||||
Whole DVD image is subdivided on blocks. Every block equals 16 DVD sectors.
|
||||
So maximum number of blocks is 44555 (DVD size / 16 * 2048), but there are
|
||||
exist smaller DVDs - we assume zeroes on upper area.
|
||||
|
||||
Algorithm is using lookup table, to quickly find compressed block, by its
|
||||
disk offset. This table also referred as "mark table". This table is
|
||||
placed at the beginning of GMP file.
|
||||
|
||||
Every block is compressed individualy. Here is short description of
|
||||
compression :
|
||||
|
||||
Step 1: get next 16 sectors (block) from DVD image
|
||||
Step 2: compress block by ZLIB
|
||||
Step 3: put DVD offset record in mark table (save block offset)
|
||||
Step 4: put compressed data in GMP file
|
||||
Step 5: adjust offset on next 16 compressed sectors
|
||||
|
||||
If compressed block is greater, than raw data, put it unchanged in GMP;
|
||||
Special bit in mark table is used to show that data is uncompressed.
|
||||
|
||||
Decompression is quite simple. We are getting block offset from mark
|
||||
table, then decompressing that block and returning data to DVD hardware.
|
||||
|
||||
Quick file format :
|
||||
|
||||
[GMP ID] - 16 bytes, containing ID string ("GCM_CMPR" and zeroes);
|
||||
[MARK TABLE] - 44555 DWORDs in little-endian Intel format (offsets);
|
||||
last block for small DVDs is marked as 0x00000000.
|
||||
[COMPRESSED DVD DATA] - depends on compression and size of DVD.
|
||||
|
||||
--------------------------------------------------------------------------- /*/
|
||||
|
||||
#include <conio.h>
|
||||
#include "dolphin.h"
|
||||
|
||||
#include "../zlib/zlib.h"
|
||||
#pragma comment(lib, "../zlib/zlibstat.lib")
|
||||
|
||||
// ID for Dolwin compressed GCM file
|
||||
#define GMP_ID "GCM_CMPR"
|
||||
|
||||
// tool version
|
||||
#define VERSION "1.0"
|
||||
|
||||
// forward refs
|
||||
void GCMCompress(char *infile, char *outfile);
|
||||
void GCMDecompress(char *infile, char *outfile);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// command line stuff
|
||||
|
||||
// show tool banner
|
||||
static void banner()
|
||||
{
|
||||
printf("GCMCMPR ver. " VERSION ", " __DATE__ ", ZLIB ver. %s\n", zlibVersion());
|
||||
printf("GCM compression tool for " APPNAME " " APPVER " Emulator.\n");
|
||||
printf("(C) Copyright 2003-2005, " APPNAME " Team.\n");
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
// show help, if no command line parameters.
|
||||
static void help()
|
||||
{
|
||||
printf("To compress : GCMCMPR \"gcm_file\" \"gmp_file\"\n");
|
||||
printf("To decompress : GCMCMPR \"gmp_file\" \"gcm_file\"\n");
|
||||
printf("(quotes are optionally for long file names with spaces)\n");
|
||||
printf("\n");
|
||||
printf("Operation may take from 5 to 15 minutes.\n");
|
||||
printf("Compressed GCM files have .GMP extension.\n");
|
||||
//printf("Recommended to wipe GCM before compression, by GCTool 1.20.\n");
|
||||
}
|
||||
|
||||
// return 1, if file is GMP
|
||||
static BOOL is_compressed(char *filename)
|
||||
{
|
||||
char buf[16];
|
||||
FILE *f = fopen(filename, "rb");
|
||||
fread(buf, 16, 1, f);
|
||||
fclose(f);
|
||||
return (strcmp(buf, GMP_ID) == 0) ? (TRUE) : (FALSE);
|
||||
}
|
||||
|
||||
// tool entrypoint
|
||||
void main(int argc, char **argv)
|
||||
{
|
||||
banner();
|
||||
if(argc <= 2)
|
||||
{
|
||||
help();
|
||||
return;
|
||||
}
|
||||
|
||||
char * infile = argv[1];
|
||||
char * outfile = argv[2];
|
||||
|
||||
if(is_compressed(infile))
|
||||
{
|
||||
GCMDecompress(infile, outfile);
|
||||
}
|
||||
else
|
||||
{
|
||||
GCMCompress(infile, outfile);
|
||||
}
|
||||
|
||||
getch();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// compression / decompression
|
||||
|
||||
#define BLK_SZ (16 * 2048)
|
||||
|
||||
void GCMCompress(char *infile, char *outfile)
|
||||
{
|
||||
u32 marktbl[44555], i = 0, mark, mask;
|
||||
u8 dvd_sectors[BLK_SZ], workbuf[BLK_SZ*2 + 12];
|
||||
uLong result;
|
||||
FILE *in, *out;
|
||||
s64 inSize, outSize = sizeof(marktbl) + 16;
|
||||
|
||||
// files are the same ? (for stupid user)
|
||||
if(!stricmp(infile, outfile))
|
||||
{
|
||||
printf("Cannot compress file into itself!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// try to open both files
|
||||
in = fopen(infile, "rb");
|
||||
if(in == NULL)
|
||||
{
|
||||
printf("Cannot open input file : %s\n", infile);
|
||||
return;
|
||||
}
|
||||
out = fopen(outfile, "wb");
|
||||
if(out == NULL)
|
||||
{
|
||||
printf("Cannot open output file : %s\n", outfile);
|
||||
return;
|
||||
}
|
||||
|
||||
// check infile - must be de-compressed
|
||||
if(is_compressed(infile) == TRUE)
|
||||
{
|
||||
printf("Input file must be decompressed : %s\n", infile);
|
||||
return;
|
||||
}
|
||||
|
||||
// get size of input file
|
||||
fseek(in, 0, SEEK_END);
|
||||
inSize = ftell(in);
|
||||
fseek(in, 0, SEEK_SET);
|
||||
|
||||
// show info
|
||||
printf("Compressing \'%s\' -> \'%s\'\n", infile, outfile);
|
||||
|
||||
// compress
|
||||
char id[16];
|
||||
memset(id, 0, 16);
|
||||
strcpy(id, GMP_ID);
|
||||
fwrite(id, 16, 1, out);
|
||||
memset(marktbl, 0, sizeof(marktbl));
|
||||
fwrite(marktbl, sizeof(marktbl), 1, out);
|
||||
mark = 16 + sizeof(marktbl);
|
||||
while(i < 44555) // 44555 = dvd size / 16 sectors
|
||||
{
|
||||
// Step 1: read 16 dvd sectors
|
||||
if(feof(in))
|
||||
{
|
||||
marktbl[i] = 0;
|
||||
break;
|
||||
}
|
||||
fread(dvd_sectors, BLK_SZ, 1, in);
|
||||
|
||||
// Step 2: compress by ZLIB
|
||||
// dvd_sectors = in data, BLK_SZ = in data size, result = out data size
|
||||
result = sizeof(workbuf);
|
||||
compress(workbuf, &result, dvd_sectors, BLK_SZ);
|
||||
|
||||
// if mask bit31 = 1, keep block uncompressed
|
||||
if(result >= BLK_SZ) mask = 0x80000000;
|
||||
else mask = 0;
|
||||
|
||||
// Step 3: put dvd offset record in mark table
|
||||
marktbl[i++] = mark | mask;
|
||||
|
||||
// Step 4: put compressed data in file
|
||||
if(mask)
|
||||
{
|
||||
fwrite(dvd_sectors, BLK_SZ, 1, out);
|
||||
outSize += BLK_SZ;
|
||||
}
|
||||
else
|
||||
{
|
||||
fwrite(&result, 4, 1, out);
|
||||
fwrite(workbuf, result, 1, out);
|
||||
result += 4;
|
||||
outSize += result;
|
||||
}
|
||||
|
||||
// Step 5: adjust mark on next 16 compressed sectors
|
||||
if(mask) mark += BLK_SZ;
|
||||
else mark += result;
|
||||
if((i % 100) == 0)
|
||||
{
|
||||
printf("\r");
|
||||
printf("block: %i / 44555", i);
|
||||
fflush(out);
|
||||
}
|
||||
}
|
||||
fclose(out);
|
||||
out = fopen(outfile, "rb+");
|
||||
fwrite(id, 16, 1, out);
|
||||
fwrite(marktbl, sizeof(marktbl), 1, out);
|
||||
|
||||
// clean-up
|
||||
printf("\n%i block(s) compressed. ratio : %i%%\n", i, 100 - (s32)((outSize * 100) / inSize));
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
}
|
||||
|
||||
void GCMDecompress(char *infile, char *outfile)
|
||||
{
|
||||
u32 marktbl[44555], i = 0, mark, mask;
|
||||
u8 dvd_sectors[BLK_SZ], id[16];
|
||||
FILE *in, *out;
|
||||
|
||||
// files are the same ? (for stupid user)
|
||||
if(!stricmp(infile, outfile))
|
||||
{
|
||||
printf("Cannot decompress file into itself!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// check infile - must be compressed
|
||||
if(is_compressed(infile) == FALSE)
|
||||
{
|
||||
printf("Input file must be compressed : %s\n", infile);
|
||||
return;
|
||||
}
|
||||
|
||||
// try to open both files
|
||||
in = fopen(infile, "rb");
|
||||
if(in == NULL)
|
||||
{
|
||||
printf("Cannot open input file : %s\n", infile);
|
||||
return;
|
||||
}
|
||||
out = fopen(outfile, "wb");
|
||||
if(out == NULL)
|
||||
{
|
||||
printf("Cannot open output file : %s\n", outfile);
|
||||
return;
|
||||
}
|
||||
|
||||
// show info
|
||||
printf("Decompressing \'%s\' -> \'%s\'\n", infile, outfile);
|
||||
|
||||
// decompress
|
||||
fread(id, 16, 1, in);
|
||||
fread(marktbl, sizeof(marktbl), 1, in);
|
||||
while(i < 44555) // 44555 = dvd size / 16 sectors
|
||||
{
|
||||
// Step 1: read next mark
|
||||
mark = marktbl[i++];
|
||||
mask = mark >> 31;
|
||||
if(mark == 0) break; // end-of-file
|
||||
|
||||
// Step 2: uncompress (if needed)
|
||||
fseek(in, mark & ~0x80000000, SEEK_SET);
|
||||
if(!mask)
|
||||
{
|
||||
uLong sourceLen, destLen = BLK_SZ;
|
||||
u8 workbuf[BLK_SZ];
|
||||
fread(&sourceLen, sizeof(sourceLen), 1, in);
|
||||
fread(workbuf, sourceLen, 1, in);
|
||||
uncompress(dvd_sectors, &destLen, workbuf, sourceLen);
|
||||
}
|
||||
else fread(dvd_sectors, BLK_SZ, 1, in);
|
||||
|
||||
// Step 3: put 16 dvd sectors
|
||||
fwrite(dvd_sectors, BLK_SZ, 1, out);
|
||||
if((i % 100) == 0)
|
||||
{
|
||||
printf("\r");
|
||||
printf("block: %i / 44555", i);
|
||||
fflush(out);
|
||||
}
|
||||
}
|
||||
|
||||
// clean-up
|
||||
printf("\n%i block(s) decompressed.\n", i);
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
// The module is needed for minimal support for Flipper.
|
||||
// In fact, only a rudimentary MI is needed and possibly interrupts.
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
namespace Flipper
|
||||
{
|
||||
class BogusFlipper
|
||||
{
|
||||
public:
|
||||
BogusFlipper();
|
||||
~BogusFlipper();
|
||||
};
|
||||
|
||||
BogusFlipper::BogusFlipper()
|
||||
{
|
||||
HWConfig* config = new HWConfig;
|
||||
|
||||
config->ramsize = RAMSIZE;
|
||||
|
||||
MIOpen(config);
|
||||
|
||||
delete config;
|
||||
}
|
||||
|
||||
BogusFlipper::~BogusFlipper()
|
||||
{
|
||||
MIClose();
|
||||
}
|
||||
|
||||
BogusFlipper BogusHW;
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"info": {
|
||||
"description": "Processor debug commands. Available only after emulation has been started.",
|
||||
"helpGroup": "Gekko Debug Commands"
|
||||
},
|
||||
|
||||
"can": {
|
||||
|
||||
"run": {
|
||||
"help": "Run processor until break or stop"
|
||||
},
|
||||
|
||||
"stop": {
|
||||
"help": "Stop processor execution"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -1,8 +0,0 @@
|
|||
#include "pch.h"
|
||||
#include "../../SRC/Debugger/Debugger.h"
|
||||
|
||||
static void dummy(const char* text, ...) {}
|
||||
static void dummy2(DbgChannel chan, const char* text, ...) {}
|
||||
void (*DBHalt)(const char* text, ...) = dummy;
|
||||
void (*DBReport)(const char* text, ...) = dummy;
|
||||
void (*DBReport2)(DbgChannel chan, const char* text, ...) = dummy2;
|
|
@ -1,124 +0,0 @@
|
|||
// This module contains only basic tests.
|
||||
#include "pch.h"
|
||||
#include "CppUnitTest.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace GekkoCoreUnitTest
|
||||
{
|
||||
TEST_CLASS(GekkoCoreUnitTest)
|
||||
{
|
||||
public:
|
||||
|
||||
TEST_METHOD(TestMethod1)
|
||||
{
|
||||
Gekko::GekkoCore* core = new Gekko::GekkoCore();
|
||||
|
||||
delete core;
|
||||
}
|
||||
|
||||
void DumpGekkoAnalyzeInfo(Gekko::AnalyzeInfo* info)
|
||||
{
|
||||
char text[0x100] = { 0, };
|
||||
|
||||
sprintf_s(text, sizeof(text) - 1, "instr: %i, numParam: %zi, p0: %i, p1: %i, p2: %i",
|
||||
(int)info->instr,
|
||||
info->numParam,
|
||||
info->paramBits[0],
|
||||
info->paramBits[1],
|
||||
info->paramBits[2]);
|
||||
|
||||
Logger::WriteMessage(text);
|
||||
}
|
||||
|
||||
TEST_METHOD(SimpleAnalyzeInfo)
|
||||
{
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
|
||||
uint32_t instr = (31 << 26) | (266 << 1);
|
||||
|
||||
Gekko::Analyzer::Analyze(0, instr, &info);
|
||||
|
||||
DumpGekkoAnalyzeInfo(&info);
|
||||
}
|
||||
|
||||
TEST_METHOD(TestOldDisasm)
|
||||
{
|
||||
FILE* f = nullptr;
|
||||
|
||||
fopen_s(&f, "Data\\test.bin", "rb");
|
||||
assert(f);
|
||||
|
||||
fseek(f, 0, SEEK_END);
|
||||
size_t size = ftell(f);
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
uint8_t* testCode = new uint8_t[size];
|
||||
|
||||
fread(testCode, 1, size, f);
|
||||
fclose(f);
|
||||
|
||||
fopen_s(&f, "test.txt", "wt");
|
||||
assert(f);
|
||||
|
||||
uint32_t pc = 0x80000000;
|
||||
size_t instrCount = size / 4;
|
||||
uint32_t* instrPtr = (uint32_t*)testCode;
|
||||
|
||||
while (instrCount--)
|
||||
{
|
||||
uint32_t instr = *instrPtr++;
|
||||
|
||||
char * disasmText = PPCDisasmSimple((uint64_t)pc, instr);
|
||||
fprintf(f, "%s\n", disasmText);
|
||||
|
||||
pc += 4;
|
||||
}
|
||||
|
||||
delete[] testCode;
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
TEST_METHOD(TestNewDisasm)
|
||||
{
|
||||
FILE* f = nullptr;
|
||||
|
||||
fopen_s(&f, "Data\\test.bin", "rb");
|
||||
assert(f);
|
||||
|
||||
fseek(f, 0, SEEK_END);
|
||||
size_t size = ftell(f);
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
uint8_t* testCode = new uint8_t[size];
|
||||
|
||||
fread(testCode, 1, size, f);
|
||||
fclose(f);
|
||||
|
||||
fopen_s(&f, "testNew.txt", "wt");
|
||||
assert(f);
|
||||
|
||||
uint32_t pc = 0x80000000;
|
||||
size_t instrCount = size / 4;
|
||||
uint32_t* instrPtr = (uint32_t*)testCode;
|
||||
|
||||
while (instrCount--)
|
||||
{
|
||||
uint32_t instr = *instrPtr++;
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
|
||||
Gekko::Analyzer::Analyze(pc, instr, &info);
|
||||
std::string disasmText = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
fprintf(f, "%s\n", disasmText.c_str());
|
||||
|
||||
pc += 4;
|
||||
}
|
||||
|
||||
delete[] testCode;
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29926.136
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GekkoCoreUnitTest", "GekkoCoreUnitTest.vcxproj", "{7CD1150C-301E-41D7-91C3-2D38347C84AA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "..\..\SRC\Common\Scripts\Common.vcxproj", "{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GekkoCore", "..\..\SRC\Core\Scripts\GekkoCore.vcxproj", "{289C41EF-117B-478C-A3F6-84906E88209E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Debug|x64.Build.0 = Debug|x64
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Debug|x86.Build.0 = Debug|Win32
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Release|x64.ActiveCfg = Release|x64
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Release|x64.Build.0 = Release|x64
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Release|x86.ActiveCfg = Release|Win32
|
||||
{7CD1150C-301E-41D7-91C3-2D38347C84AA}.Release|x86.Build.0 = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x64.Build.0 = Debug|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Debug|x86.Build.0 = Debug|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.ActiveCfg = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x64.Build.0 = Release|x64
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.ActiveCfg = Release|Win32
|
||||
{8F4F6AE1-B308-4C7F-81FC-4CDDD2302C95}.Release|x86.Build.0 = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x64.Build.0 = Debug|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.ActiveCfg = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x64.Build.0 = Release|x64
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{289C41EF-117B-478C-A3F6-84906E88209E}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {9E426962-6A53-4A2D-9744-347DC50DE206}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,207 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{7CD1150C-301E-41D7-91C3-2D38347C84AA}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>GekkoCoreUnitTest</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectSubType>NativeUnitTestProject</ProjectSubType>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<UseFullPaths>true</UseFullPaths>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="BogusFlipper.cpp" />
|
||||
<ClCompile Include="DebugStubs.cpp" />
|
||||
<ClCompile Include="GekkoCoreUnitTest.cpp" />
|
||||
<ClCompile Include="GekkoIsaTests\Addcx.cpp">
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GekkoIsaTests\Addx.cpp">
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GekkoIsaTests\BitFactoryTest.cpp">
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../pch.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../pch.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MiStubs.cpp" />
|
||||
<ClCompile Include="pch.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="GekkoIsaTests\BitFactory.h" />
|
||||
<ClInclude Include="MiStubs.h" />
|
||||
<ClInclude Include="pch.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\SRC\Common\Scripts\Common.vcxproj">
|
||||
<Project>{8f4f6ae1-b308-4c7f-81fc-4cddd2302c95}</Project>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\..\SRC\Core\Scripts\GekkoCore.vcxproj">
|
||||
<Project>{289c41ef-117b-478c-a3f6-84906e88209e}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,60 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="GekkoIsaTests">
|
||||
<UniqueIdentifier>{0fec5d82-895c-4316-874e-4e9322c9d7f0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="GekkoCoreUnitTest.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pch.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DebugStubs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="MiStubs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="BogusFlipper.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GekkoIsaTests\Addx.cpp">
|
||||
<Filter>GekkoIsaTests</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GekkoIsaTests\BitFactoryTest.cpp">
|
||||
<Filter>GekkoIsaTests</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GekkoIsaTests\Addcx.cpp">
|
||||
<Filter>GekkoIsaTests</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="pch.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="MiStubs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="GekkoIsaTests\BitFactory.h">
|
||||
<Filter>GekkoIsaTests</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,372 +0,0 @@
|
|||
// addcx
|
||||
|
||||
// Carry goes to XER[CA]
|
||||
|
||||
//A human need only remember that, when doing signed math, adding
|
||||
//two numbers of the same sign must produce a result of the same sign,
|
||||
//otherwise overflow happened.
|
||||
|
||||
#include "../pch.h"
|
||||
#include "CppUnitTest.h"
|
||||
#include "BitFactory.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace GekkoCoreUnitTest
|
||||
{
|
||||
TEST_CLASS(GekkoIsaUnitTest)
|
||||
{
|
||||
public:
|
||||
|
||||
TEST_METHOD(Addc)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(0, 1); // OE
|
||||
bf << Bits(10, 9); // Secondary opcode
|
||||
bf << Bits(0, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 1;
|
||||
Gekko::Gekko->regs.gpr[3] = 2;
|
||||
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 3);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
// Carry
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0xffff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 2;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 1);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) != 0);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
TEST_METHOD(Addcd)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(0, 1); // OE
|
||||
bf << Bits(10, 9); // Secondary opcode
|
||||
bf << Bits(1, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
// Result < 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = -5;
|
||||
Gekko::Gekko->regs.gpr[3] = -6; // Carry!
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == -11);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_LT) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) != 0);
|
||||
|
||||
// Result > 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 1;
|
||||
Gekko::Gekko->regs.gpr[3] = 2; // No Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 3);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_GT) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
// Result == 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0;
|
||||
Gekko::Gekko->regs.gpr[3] = 0; // No Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_EQ) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
// Result Overflow
|
||||
// Overflow is copied from XER[SO].
|
||||
// + Carry
|
||||
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0x7fff'ffff; // No Carry!
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xFFFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
// XER[SO] = 1
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] |= GEKKO_XER_SO; // Just copied
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0xffff'ffff; // Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0x7FFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) != 0);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
TEST_METHOD(Addco)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(1, 1); // OE
|
||||
bf << Bits(10, 9); // Secondary opcode
|
||||
bf << Bits(0, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 1;
|
||||
Gekko::Gekko->regs.gpr[3] = 2;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 3);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0x7fff'ffff;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xFFFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
TEST_METHOD(Addcod)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(1, 1); // OE
|
||||
bf << Bits(10, 9); // Secondary opcode
|
||||
bf << Bits(1, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
// Result < 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = -5;
|
||||
Gekko::Gekko->regs.gpr[3] = -6; // No Overflow, Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == -11);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_LT) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) != 0);
|
||||
|
||||
// Result > 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 1;
|
||||
Gekko::Gekko->regs.gpr[3] = 2; // No Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 3);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_GT) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
// Result == 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0;
|
||||
Gekko::Gekko->regs.gpr[3] = 0; // No Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_EQ) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
// Result Overflow
|
||||
// + Carry
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0x7fff'ffff; // Overflow, No Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xFFFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) == 0);
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_CA;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0xffff'ffff; // No Overflow, Carry
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0x7FFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_CA) != 0);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,268 +0,0 @@
|
|||
// addx
|
||||
|
||||
//A human need only remember that, when doing signed math, adding
|
||||
//two numbers of the same sign must produce a result of the same sign,
|
||||
//otherwise overflow happened.
|
||||
|
||||
#include "../pch.h"
|
||||
#include "CppUnitTest.h"
|
||||
#include "BitFactory.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace GekkoCoreUnitTest
|
||||
{
|
||||
TEST_CLASS(GekkoIsaUnitTest)
|
||||
{
|
||||
public:
|
||||
|
||||
TEST_METHOD(Add)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(0, 1); // OE
|
||||
bf << Bits(266, 9); // Secondary opcode
|
||||
bf << Bits(0, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x12345678;
|
||||
Gekko::Gekko->regs.gpr[3] = 0xABCDEF12;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xBE02458A);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
TEST_METHOD(Addd)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(0, 1); // OE
|
||||
bf << Bits(266, 9); // Secondary opcode
|
||||
bf << Bits(1, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
// Result < 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = -5;
|
||||
Gekko::Gekko->regs.gpr[3] = -6;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == -11);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_LT) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
|
||||
// Result > 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 1;
|
||||
Gekko::Gekko->regs.gpr[3] = 2;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 3);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_GT) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
|
||||
// Result == 0, no overflow
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0;
|
||||
Gekko::Gekko->regs.gpr[3] = 0;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_EQ) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
|
||||
// Result Overflow
|
||||
// Overflow is copied from XER[SO].
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0x7fff'ffff;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xFFFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
|
||||
// XER[SO] = 1
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] |= GEKKO_XER_SO;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0x7fff'ffff;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xFFFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
TEST_METHOD(Addo)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(1, 1); // OE
|
||||
bf << Bits(266, 9); // Secondary opcode
|
||||
bf << Bits(0, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 1;
|
||||
Gekko::Gekko->regs.gpr[3] = 2;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 3);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0x7fff'ffff;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xFFFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) != 0);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
TEST_METHOD(Addod)
|
||||
{
|
||||
Gekko::Gekko = new Gekko::GekkoCore();
|
||||
uint32_t pc = 0x8000'0000;
|
||||
|
||||
// Disasm
|
||||
|
||||
BitFactory bf;
|
||||
|
||||
bf << Bits(31, 6); // Primary opcode
|
||||
bf << Bits(1, 5);
|
||||
bf << Bits(2, 5);
|
||||
bf << Bits(3, 5);
|
||||
bf << Bits(1, 1); // OE
|
||||
bf << Bits(266, 9); // Secondary opcode
|
||||
bf << Bits(1, 1); // Rc
|
||||
|
||||
Gekko::AnalyzeInfo info = { 0 };
|
||||
Gekko::Analyzer::Analyze(pc, bf.GetBits32(), &info);
|
||||
std::string text = Gekko::GekkoDisasm::Disasm(pc, &info);
|
||||
|
||||
Logger::WriteMessage(text.c_str());
|
||||
|
||||
// Interpreter
|
||||
|
||||
Gekko::Gekko->regs.cr &= ~0x0fff'ffff; // Clear CR0
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_SO;
|
||||
Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] &= ~GEKKO_XER_OV;
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 1;
|
||||
Gekko::Gekko->regs.gpr[3] = 2;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 3);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) == 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) == 0);
|
||||
|
||||
Gekko::Gekko->regs.gpr[1] = 0xff;
|
||||
Gekko::Gekko->regs.gpr[2] = 0x7fff'ffff;
|
||||
Gekko::Gekko->regs.gpr[3] = 0x7fff'ffff;
|
||||
|
||||
Gekko::Gekko->ExecuteOpcodeDebug(pc, bf.GetBits32());
|
||||
|
||||
Assert::IsTrue(Gekko::Gekko->regs.gpr[1] == 0xFFFFFFFE);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.cr & GEKKO_CR0_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_SO) != 0);
|
||||
Assert::IsTrue((Gekko::Gekko->regs.spr[(int)Gekko::SPR::XER] & GEKKO_XER_OV) != 0);
|
||||
|
||||
delete Gekko::Gekko;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,40 +0,0 @@
|
|||
// BitFactory is a small class for generating bitstream. Used to generate the Gekko instruction code.
|
||||
|
||||
// The operator << submits Bits. The first number is the value, the second number is the size of the value in bits.
|
||||
// The number is clipped to the mask so that there is no overflow.
|
||||
|
||||
// The added bitstream drives from one end of the BitFactory and shifts the current value to the left.
|
||||
// That is, in essence, this is the Shift Register.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include <utility>
|
||||
|
||||
typedef std::pair<int, int> Bits; // First - value, Second - Value size in bits
|
||||
|
||||
class BitFactory
|
||||
{
|
||||
|
||||
uint64_t dataBits = 0;
|
||||
|
||||
public:
|
||||
|
||||
BitFactory& operator << (Bits data)
|
||||
{
|
||||
uint64_t mask = ((uint64_t)1 << data.second) - 1;
|
||||
|
||||
dataBits <<= data.second;
|
||||
dataBits |= (uint64_t)(data.first & mask);
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
uint8_t GetBits8() { return (uint8_t)dataBits; }
|
||||
uint16_t GetBits16() { return (uint16_t)dataBits; }
|
||||
uint32_t GetBits32() { return (uint32_t)dataBits; }
|
||||
uint64_t GetBits64() { return dataBits; }
|
||||
|
||||
void Clear() { dataBits = 0; }
|
||||
|
||||
};
|
|
@ -1,58 +0,0 @@
|
|||
// Test BitFactory
|
||||
|
||||
#include "../pch.h"
|
||||
#include "CppUnitTest.h"
|
||||
#include "BitFactory.h"
|
||||
|
||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
|
||||
|
||||
namespace GekkoCoreUnitTest
|
||||
{
|
||||
TEST_CLASS(GekkoIsaUnitTest)
|
||||
{
|
||||
|
||||
void PrintBitFactory(BitFactory& bf)
|
||||
{
|
||||
char text[0x20];
|
||||
sprintf_s(text, sizeof(text) - 1, "0x%llx", bf.GetBits64());
|
||||
Logger::WriteMessage(text);
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
TEST_METHOD(BitFactoryTest)
|
||||
{
|
||||
BitFactory bf;
|
||||
|
||||
Assert::IsTrue(bf.GetBits64() == 0);
|
||||
|
||||
// Test 0x12345678
|
||||
|
||||
bf << Bits(1, 4);
|
||||
bf << Bits(2, 4);
|
||||
bf << Bits(3, 4);
|
||||
bf << Bits(4, 4);
|
||||
bf << Bits(5, 4);
|
||||
bf << Bits(6, 4);
|
||||
bf << Bits(7, 4);
|
||||
bf << Bits(8, 4);
|
||||
|
||||
Assert::IsTrue(bf.GetBits32() == 0x12345678);
|
||||
bf.Clear();
|
||||
|
||||
// Test 0b10100101
|
||||
|
||||
bf << Bits(1, 1);
|
||||
bf << Bits(0, 1);
|
||||
bf << Bits(1, 1);
|
||||
bf << Bits(0, 1);
|
||||
bf << Bits(0, 1);
|
||||
bf << Bits(1, 1);
|
||||
bf << Bits(0, 1);
|
||||
bf << Bits(1, 1);
|
||||
|
||||
Assert::IsTrue(bf.GetBits8() == 0xa5);
|
||||
|
||||
}
|
||||
};
|
||||
}
|
|
@ -1,323 +0,0 @@
|
|||
// Flipper MI Stubs
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
MIControl mi;
|
||||
|
||||
void __fastcall MIReadByte(uint32_t pa, uint32_t* reg)
|
||||
{
|
||||
uint8_t* ptr;
|
||||
|
||||
if (mi.ram == nullptr)
|
||||
{
|
||||
*reg = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
if (mi.BootromPresent)
|
||||
{
|
||||
ptr = &mi.bootrom[pa - BOOTROM_START_ADDRESS];
|
||||
*reg = (uint32_t)*ptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
*reg = 0xFF;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// hardware trap
|
||||
if (pa >= HW_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// embedded frame buffer
|
||||
if (pa >= EFB_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// bus load byte
|
||||
if (pa < mi.ramSize)
|
||||
{
|
||||
ptr = &mi.ram[pa];
|
||||
*reg = (uint32_t)*ptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
*reg = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void __fastcall MIWriteByte(uint32_t pa, uint32_t data)
|
||||
{
|
||||
uint8_t* ptr;
|
||||
|
||||
if (mi.ram == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// hardware trap
|
||||
if (pa >= HW_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// embedded frame buffer
|
||||
if (pa >= EFB_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// bus store byte
|
||||
if (pa < mi.ramSize)
|
||||
{
|
||||
ptr = &mi.ram[pa];
|
||||
*ptr = (uint8_t)data;
|
||||
}
|
||||
}
|
||||
|
||||
void __fastcall MIReadHalf(uint32_t pa, uint32_t* reg)
|
||||
{
|
||||
uint8_t* ptr;
|
||||
|
||||
if (mi.ram == nullptr)
|
||||
{
|
||||
*reg = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
if (mi.BootromPresent)
|
||||
{
|
||||
ptr = &mi.bootrom[pa - BOOTROM_START_ADDRESS];
|
||||
*reg = (uint32_t)_byteswap_ushort(*(uint16_t*)ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
*reg = 0xFFFF;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// hardware trap
|
||||
if (pa >= HW_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// embedded frame buffer
|
||||
if (pa >= EFB_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// bus load halfword
|
||||
if (pa < mi.ramSize)
|
||||
{
|
||||
ptr = &mi.ram[pa];
|
||||
*reg = (uint32_t)_byteswap_ushort(*(uint16_t*)ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
*reg = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void __fastcall MIWriteHalf(uint32_t pa, uint32_t data)
|
||||
{
|
||||
uint8_t* ptr;
|
||||
|
||||
if (mi.ram == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// hardware trap
|
||||
if (pa >= HW_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// embedded frame buffer
|
||||
if (pa >= EFB_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// bus store halfword
|
||||
if (pa < mi.ramSize)
|
||||
{
|
||||
ptr = &mi.ram[pa];
|
||||
*(uint16_t*)ptr = _byteswap_ushort((uint16_t)data);
|
||||
}
|
||||
}
|
||||
|
||||
void __fastcall MIReadWord(uint32_t pa, uint32_t* reg)
|
||||
{
|
||||
uint8_t* ptr;
|
||||
|
||||
if (mi.ram == nullptr)
|
||||
{
|
||||
*reg = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// bus load word
|
||||
if (pa < mi.ramSize)
|
||||
{
|
||||
ptr = &mi.ram[pa];
|
||||
*reg = _byteswap_ulong(*(uint32_t*)ptr);
|
||||
return;
|
||||
}
|
||||
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
if (mi.BootromPresent)
|
||||
{
|
||||
ptr = &mi.bootrom[pa - BOOTROM_START_ADDRESS];
|
||||
*reg = _byteswap_ulong(*(uint32_t*)ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
*reg = 0xFFFFFFFF;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// hardware trap
|
||||
if (pa >= HW_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// embedded frame buffer
|
||||
if (pa >= EFB_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
*reg = 0;
|
||||
}
|
||||
|
||||
void __fastcall MIWriteWord(uint32_t pa, uint32_t data)
|
||||
{
|
||||
uint8_t* ptr;
|
||||
|
||||
if (mi.ram == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// hardware trap
|
||||
if (pa >= HW_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// embedded frame buffer
|
||||
if (pa >= EFB_BASE)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// bus store word
|
||||
if (pa < mi.ramSize)
|
||||
{
|
||||
ptr = &mi.ram[pa];
|
||||
*(uint32_t*)ptr = _byteswap_ulong(data);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// fortunately longlongs are never used in GC hardware access
|
||||
// (because all regs are generally integers)
|
||||
//
|
||||
|
||||
void __fastcall MIReadDouble(uint32_t pa, uint64_t* reg)
|
||||
{
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
assert(true);
|
||||
}
|
||||
|
||||
if (pa >= RAMSIZE || mi.ram == nullptr)
|
||||
{
|
||||
*reg = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t* buf = &mi.ram[pa];
|
||||
|
||||
// bus load doubleword
|
||||
*reg = _byteswap_uint64(*(uint64_t*)buf);
|
||||
}
|
||||
|
||||
void __fastcall MIWriteDouble(uint32_t pa, uint64_t* data)
|
||||
{
|
||||
if (pa >= BOOTROM_START_ADDRESS)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (pa >= RAMSIZE || mi.ram == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
uint8_t* buf = &mi.ram[pa];
|
||||
|
||||
// bus store doubleword
|
||||
*(uint64_t*)buf = _byteswap_uint64(*data);
|
||||
}
|
||||
|
||||
void __fastcall MIWriteBurst(uint32_t phys_addr, uint8_t burstData[32])
|
||||
{
|
||||
// Hack for now
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
MIWriteWord(phys_addr + 4 * i, _byteswap_ulong(*(uint32_t*)(&burstData[4 * i])));
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
void MIOpen(HWConfig* config)
|
||||
{
|
||||
mi.ramSize = config->ramsize;
|
||||
mi.ram = (uint8_t*)malloc(mi.ramSize);
|
||||
assert(mi.ram);
|
||||
|
||||
mi.BootromPresent = false;
|
||||
|
||||
memset(mi.ram, 0, mi.ramSize);
|
||||
}
|
||||
|
||||
void MIClose()
|
||||
{
|
||||
if (mi.ram)
|
||||
{
|
||||
free(mi.ram);
|
||||
mi.ram = nullptr;
|
||||
}
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
// Flipper MI Stubs
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "../../SRC/Hardware/Hardware.h"
|
|
@ -1,14 +0,0 @@
|
|||
# GekkoCoreUnitTest
|
||||
|
||||
Project for testing GekkoCore.
|
||||
|
||||
For testing, you need to put Data\\GekkoCoreJdi.json in the folder with the DLL.
|
||||
|
||||
## test.bin
|
||||
|
||||
Contains code for testing the disassembler.
|
||||
|
||||
## GekkoIsaTests
|
||||
|
||||
These tests cover the Gekko analyzer and interpreter for individual instructions.
|
||||
We need to deal with this once and forever :p
|
|
@ -1 +0,0 @@
|
|||
#include "pch.h"
|
|
@ -1,8 +0,0 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include "../../SRC/Core/Gekko.h"
|
||||
#include "../../SRC/Core/GekkoDisasmOld.h"
|
||||
#include "../../SRC/Core/GekkoDisasm.h"
|
||||
|
||||
#include "MiStubs.h"
|
Binary file not shown.
4
RnD/JsonDemo/.gitignore
vendored
4
RnD/JsonDemo/.gitignore
vendored
|
@ -1,4 +0,0 @@
|
|||
Debug
|
||||
Release
|
||||
x64
|
||||
.vs
|
|
@ -1,153 +0,0 @@
|
|||
// JsonDemo.cpp : This file contains the 'main' function. Program execution begins and ends there.
|
||||
//
|
||||
|
||||
#include <iostream>
|
||||
#include <cassert>
|
||||
|
||||
#include "../../SRC/Common/Json.h"
|
||||
|
||||
void DeserializeDemo()
|
||||
{
|
||||
// Load JSON file
|
||||
|
||||
FILE* f = nullptr;
|
||||
fopen_s(&f, "../../Data/DefaultSettings.json", "rb");
|
||||
assert(f);
|
||||
|
||||
uint8_t* jsonText = nullptr; // utf-8
|
||||
size_t jsonTextSize = 0;
|
||||
|
||||
fseek(f, 0, SEEK_END);
|
||||
jsonTextSize = ftell(f);
|
||||
fseek(f, 0, SEEK_SET);
|
||||
|
||||
jsonText = new uint8_t[jsonTextSize];
|
||||
assert(jsonText);
|
||||
|
||||
fread(jsonText, 1, jsonTextSize, f);
|
||||
fclose(f);
|
||||
|
||||
// Parse
|
||||
|
||||
Json json;
|
||||
|
||||
json.Deserialize(jsonText, jsonTextSize);
|
||||
delete[] jsonText;
|
||||
|
||||
// Serialize what happens
|
||||
|
||||
char text[0x1000] = { 0, };
|
||||
size_t actualSize = 0;
|
||||
|
||||
json.Serialize(text, sizeof(text) - 1, actualSize);
|
||||
std::string str(text, actualSize);
|
||||
|
||||
std::cout << str;
|
||||
}
|
||||
|
||||
void SerializeDemo()
|
||||
{
|
||||
Json json;
|
||||
char text[0x1000] = { 0, };
|
||||
|
||||
// Add some values
|
||||
|
||||
Json::Value* outer = json.root.AddObject(nullptr);
|
||||
|
||||
outer->AddInt("Int", 12);
|
||||
outer->AddBool("Bool", false);
|
||||
|
||||
Json::Value * inner = outer->AddObject("Inner");
|
||||
|
||||
inner->AddString("Str", _T("Hello!\nThis is lineeed\nTab\t\t\tXXX\n Энд немного русского языка"));
|
||||
inner->AddNull("Void");
|
||||
|
||||
// Serialize and print
|
||||
|
||||
size_t actualSize = 0;
|
||||
|
||||
json.Serialize(text, sizeof(text) - 1, actualSize);
|
||||
std::string str(text, actualSize);
|
||||
|
||||
std::cout << str;
|
||||
}
|
||||
|
||||
void CloneDemo()
|
||||
{
|
||||
Json one, two;
|
||||
char text[0x1000] = { 0, };
|
||||
|
||||
// Make one
|
||||
|
||||
Json::Value* outer = one.root.AddObject(nullptr);
|
||||
|
||||
outer->AddInt("a", 1);
|
||||
Json::Value* inner = outer->AddObject("inner");
|
||||
inner->AddInt("b", 2);
|
||||
|
||||
// Clone
|
||||
|
||||
two.Clone(&one);
|
||||
|
||||
// Show clone
|
||||
|
||||
size_t actualSize = 0;
|
||||
|
||||
two.Serialize(text, sizeof(text) - 1, actualSize);
|
||||
std::string str(text, actualSize);
|
||||
|
||||
std::cout << str;
|
||||
}
|
||||
|
||||
void MergeDemo()
|
||||
{
|
||||
Json one, two;
|
||||
char text[0x1000] = { 0, };
|
||||
|
||||
// Make one
|
||||
|
||||
Json::Value* outer = one.root.AddObject(nullptr);
|
||||
|
||||
outer->AddInt("a", 1);
|
||||
outer->AddInt("b", 2);
|
||||
|
||||
// Make two
|
||||
|
||||
outer = two.root.AddObject(nullptr);
|
||||
|
||||
outer->AddInt("b", 777);
|
||||
|
||||
// Merge
|
||||
|
||||
one.Merge(&two);
|
||||
|
||||
// Show clone
|
||||
|
||||
size_t actualSize = 0;
|
||||
|
||||
one.Serialize(text, sizeof(text) - 1, actualSize);
|
||||
std::string str(text, actualSize);
|
||||
|
||||
std::cout << str;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
std::cout << "Hello JsonDemo!\n";
|
||||
|
||||
std::cout << "DeserializeDemo\n";
|
||||
DeserializeDemo();
|
||||
std::cout << "\n";
|
||||
|
||||
std::cout << "SerializeDemo\n";
|
||||
SerializeDemo();
|
||||
std::cout << "\n";
|
||||
|
||||
std::cout << "CloneDemo\n";
|
||||
CloneDemo();
|
||||
std::cout << "\n";
|
||||
|
||||
std::cout << "MergeDemo\n";
|
||||
MergeDemo();
|
||||
std::cout << "\n";
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.29920.165
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JsonDemo", "JsonDemo.vcxproj", "{682D5988-53FC-4F3E-9E84-4CE840FE2F41}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Debug|x64.Build.0 = Debug|x64
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Debug|x86.Build.0 = Debug|Win32
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Release|x64.ActiveCfg = Release|x64
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Release|x64.Build.0 = Release|x64
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Release|x86.ActiveCfg = Release|Win32
|
||||
{682D5988-53FC-4F3E-9E84-4CE840FE2F41}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C31E8312-5F26-4C17-BBF3-1841F04B994D}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,161 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>16.0</VCProjectVersion>
|
||||
<ProjectGuid>{682D5988-53FC-4F3E-9E84-4CE840FE2F41}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>JsonDemo</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="JsonDemo.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\SRC\Common\Json.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,30 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="JsonDemo.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\SRC\Common\Json.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
</Project>
|
|
@ -1,2 +0,0 @@
|
|||
# JsonDemo
|
||||
|
12
RnD/ManagedConsole/.gitignore
vendored
12
RnD/ManagedConsole/.gitignore
vendored
|
@ -1,12 +0,0 @@
|
|||
.vs
|
||||
bin
|
||||
obj
|
||||
Data
|
||||
temp
|
||||
*.opendb
|
||||
*.db
|
||||
Build
|
||||
Output
|
||||
x64
|
||||
Win32
|
||||
Data
|
|
@ -1,530 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Threading;
|
||||
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace ManagedConsole
|
||||
{
|
||||
/// <summary>
|
||||
/// Color codes for console
|
||||
/// </summary>
|
||||
public enum ColorCode
|
||||
{
|
||||
BLACK = 0,
|
||||
DBLUE,
|
||||
GREEN,
|
||||
CYAN,
|
||||
RED,
|
||||
PUR,
|
||||
BROWN,
|
||||
NORM,
|
||||
GRAY,
|
||||
BLUE,
|
||||
BGREEN,
|
||||
BCYAN,
|
||||
BRED,
|
||||
BPUR,
|
||||
YEL,
|
||||
YELLOW = YEL,
|
||||
WHITE,
|
||||
}
|
||||
|
||||
public partial class Console
|
||||
{
|
||||
bool allocated = false;
|
||||
IntPtr input;
|
||||
IntPtr output;
|
||||
CONSOLE_CURSOR_INFO curinfo = new CONSOLE_CURSOR_INFO();
|
||||
CHAR_INFO [] buf;
|
||||
Size consize;
|
||||
Point pos;
|
||||
Point cursor;
|
||||
List<Window> windows = new List<Window>();
|
||||
Thread thread;
|
||||
bool stopPolling = false;
|
||||
|
||||
public void Allocate(string title, Size size)
|
||||
{
|
||||
if (allocated)
|
||||
return;
|
||||
|
||||
buf = new CHAR_INFO[size.Width * size.Height];
|
||||
consize = new Size(size.Width, size.Height);
|
||||
pos = new Point(0, 0);
|
||||
cursor = new Point(0, 0);
|
||||
stopPolling = false;
|
||||
|
||||
for (int i=0; i<buf.Length; i++)
|
||||
{
|
||||
buf[i].Attributes = 0;
|
||||
buf[i].UnicodeChar = ' ';
|
||||
}
|
||||
|
||||
bool res = AllocConsole();
|
||||
if (!res && Marshal.GetLastWin32Error() == 5)
|
||||
{
|
||||
// Close if already opened by some instance
|
||||
FreeConsole();
|
||||
|
||||
res = AllocConsole();
|
||||
if (!res)
|
||||
throw new Exception("AllocConsole failed! LastError: " + Marshal.GetLastWin32Error().ToString());
|
||||
}
|
||||
|
||||
input = GetStdHandle(STD_INPUT_HANDLE);
|
||||
if (input == (IntPtr)INVALID_HANDLE_VALUE)
|
||||
throw new Exception("Cannot obtain input handler");
|
||||
|
||||
output = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
if (output == (IntPtr)INVALID_HANDLE_VALUE)
|
||||
throw new Exception("Cannot obtain output handler");
|
||||
|
||||
GetConsoleCursorInfo(output, out curinfo);
|
||||
uint Mode;
|
||||
GetConsoleMode(input, out Mode);
|
||||
Mode &= ~ENABLE_MOUSE_INPUT;
|
||||
SetConsoleMode(input, Mode);
|
||||
|
||||
SMALL_RECT rect = new SMALL_RECT();
|
||||
|
||||
rect.Top = rect.Left = 0;
|
||||
rect.Right = (short)(size.Width - 1);
|
||||
rect.Bottom = (short)(size.Height - 1);
|
||||
|
||||
COORD coord = new COORD();
|
||||
|
||||
coord.X = (short)size.Width;
|
||||
coord.Y = (short)size.Height;
|
||||
|
||||
SetConsoleWindowInfo(output, true, ref rect);
|
||||
SetConsoleScreenBufferSize(output, coord);
|
||||
|
||||
SetConsoleTitle(title);
|
||||
|
||||
SetCursor(cursor);
|
||||
|
||||
thread = new Thread(PollingThreadProc);
|
||||
thread.Start();
|
||||
|
||||
allocated = true;
|
||||
}
|
||||
|
||||
public void Free()
|
||||
{
|
||||
if (!allocated)
|
||||
return;
|
||||
|
||||
stopPolling = true;
|
||||
thread.Join();
|
||||
|
||||
windows.Clear();
|
||||
|
||||
CloseHandle(input);
|
||||
CloseHandle(output);
|
||||
|
||||
FreeConsole();
|
||||
allocated = false;
|
||||
}
|
||||
|
||||
public bool IsAllocated()
|
||||
{
|
||||
return allocated;
|
||||
}
|
||||
|
||||
#region "Console Output"
|
||||
|
||||
public void PrintAt(ColorCode color, int x, int y, string text)
|
||||
{
|
||||
if (!allocated)
|
||||
throw new Exception("Allocate console first!");
|
||||
|
||||
pos.X = x;
|
||||
pos.Y = y;
|
||||
|
||||
for (int i=0; i<text.Length; i++)
|
||||
{
|
||||
if (pos.Y >= consize.Height)
|
||||
break;
|
||||
|
||||
if (text[i] == '\n')
|
||||
{
|
||||
pos.X = x;
|
||||
pos.Y++;
|
||||
}
|
||||
else if (text[i] == '\t')
|
||||
{
|
||||
int numToRound = pos.X + 1;
|
||||
int multiple = 4;
|
||||
int untilX = ((((numToRound) + (multiple) - 1) / (multiple)) * (multiple));
|
||||
|
||||
int numspaces = untilX - pos.X;
|
||||
while (numspaces-- != 0)
|
||||
{
|
||||
PrintChar(' ', color);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintChar(text[i], color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void PrintChar(char ch, ColorCode color)
|
||||
{
|
||||
ushort oldAttr = buf[pos.Y * consize.Width + pos.X].Attributes;
|
||||
oldAttr = (ushort)((oldAttr & 0xf0) | ((int)color));
|
||||
buf[pos.Y * consize.Width + pos.X].Attributes = oldAttr;
|
||||
buf[pos.Y * consize.Width + pos.X].AsciiChar = ch;
|
||||
pos.X++;
|
||||
if (pos.X >= consize.Width)
|
||||
{
|
||||
pos.X = 0;
|
||||
pos.Y++;
|
||||
if (pos.Y >= consize.Height)
|
||||
{
|
||||
pos.Y = consize.Height - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fill the console region with the specified color
|
||||
public void Fill(Rectangle rect, ColorCode backColor)
|
||||
{
|
||||
for (int y=rect.Y; y<rect.Height; y++)
|
||||
{
|
||||
if (y >= consize.Height)
|
||||
break;
|
||||
|
||||
for (int x =rect.X; x<rect.Width; x++)
|
||||
{
|
||||
if (x >= consize.Width)
|
||||
break;
|
||||
|
||||
ushort oldAttr = buf[y * consize.Width + x].Attributes;
|
||||
oldAttr = (ushort)((oldAttr & 0xf) | ((int)backColor << 4));
|
||||
buf[y * consize.Width + x].Attributes = oldAttr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Invalidate()
|
||||
{
|
||||
Blit(new Rectangle(0, 0, consize.Width, consize.Height));
|
||||
}
|
||||
|
||||
public void Blit (Rectangle rect)
|
||||
{
|
||||
COORD sz = new COORD();
|
||||
sz.X = (short)consize.Width;
|
||||
sz.Y = (short)consize.Height;
|
||||
|
||||
COORD pos = new COORD();
|
||||
pos.X = (short)rect.X;
|
||||
pos.Y = (short)rect.Y;
|
||||
|
||||
SMALL_RECT rgn = new SMALL_RECT();
|
||||
|
||||
rgn.Left = (short)rect.X;
|
||||
rgn.Top = (short)rect.Y;
|
||||
rgn.Right = (short)(rect.X + rect.Width - 1);
|
||||
rgn.Bottom = (short)(rect.Y + rect.Height - 1);
|
||||
|
||||
bool success = WriteConsoleOutput(output, buf, sz, pos, ref rgn);
|
||||
}
|
||||
|
||||
public void SetCursor (Point pos)
|
||||
{
|
||||
COORD cr = new COORD();
|
||||
cr.X = (short)pos.X;
|
||||
cr.Y = (short)pos.Y;
|
||||
cursor.X = pos.X;
|
||||
cursor.Y = pos.Y;
|
||||
SetConsoleCursorPosition(output, cr);
|
||||
}
|
||||
|
||||
public Point GetCursor ()
|
||||
{
|
||||
return new Point(cursor.X, cursor.Y);
|
||||
}
|
||||
|
||||
#endregion "Console Output"
|
||||
|
||||
|
||||
#region "Console Input"
|
||||
|
||||
public enum Key
|
||||
{
|
||||
None = 0,
|
||||
Esc, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
|
||||
Tilda, Key1, Key2, Key3, Key4, Key5, Key6, Key7, Key8, Key9, Key0, KeyMinus, KeyPlus,
|
||||
Backspace, Enter, Space,
|
||||
Up, Down, Left, Right,
|
||||
NumSlash, NumAsterisk, NumMinus, NumPlus,
|
||||
Num1, Num2, Num3, Num4, Num5, Num6, Num7, Num8, Num9, Num0,
|
||||
Q, W, E, R, T, Y, U, I, O, P,
|
||||
A, S, D, F, G, H, J, K, L,
|
||||
Z, X, C, V, B, N, M,
|
||||
LSquare, RSquare, Colon, Quotes, BackSlash, LAngle, RAngle, Slash,
|
||||
Ins, Del, Home, End, PageUp, PageDown,
|
||||
}
|
||||
|
||||
public class KeyInfo
|
||||
{
|
||||
public Key KeyCode = Key.None;
|
||||
public bool Shift = false;
|
||||
public bool Ctrl = false;
|
||||
public bool Alt = false;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
switch (KeyCode)
|
||||
{
|
||||
case Key.Tilda: return Shift ? "~" : "`";
|
||||
|
||||
case Key.Key1: return Shift ? "!" : "1";
|
||||
case Key.Key2: return Shift ? "@" : "2";
|
||||
case Key.Key3: return Shift ? "#" : "3";
|
||||
case Key.Key4: return Shift ? "$" : "4";
|
||||
case Key.Key5: return Shift ? "%" : "5";
|
||||
case Key.Key6: return Shift ? "^" : "6";
|
||||
case Key.Key7: return Shift ? "&" : "7";
|
||||
case Key.Key8: return Shift ? "*" : "8";
|
||||
case Key.Key9: return Shift ? "(" : "9";
|
||||
case Key.Key0: return Shift ? ")" : "0";
|
||||
case Key.KeyMinus: return Shift ? "_" : "-";
|
||||
case Key.KeyPlus: return Shift ? "+" : "=";
|
||||
|
||||
case Key.Q: return Shift ? "Q" : "q";
|
||||
case Key.W: return Shift ? "W" : "w";
|
||||
case Key.E: return Shift ? "E" : "e";
|
||||
case Key.R: return Shift ? "R" : "r";
|
||||
case Key.T: return Shift ? "T" : "t";
|
||||
case Key.Y: return Shift ? "Y" : "y";
|
||||
case Key.U: return Shift ? "U" : "u";
|
||||
case Key.I: return Shift ? "I" : "i";
|
||||
case Key.O: return Shift ? "O" : "o";
|
||||
case Key.P: return Shift ? "P" : "p";
|
||||
|
||||
case Key.A: return Shift ? "A" : "a";
|
||||
case Key.S: return Shift ? "S" : "s";
|
||||
case Key.D: return Shift ? "D" : "d";
|
||||
case Key.F: return Shift ? "F" : "f";
|
||||
case Key.G: return Shift ? "G" : "g";
|
||||
case Key.H: return Shift ? "H" : "h";
|
||||
case Key.J: return Shift ? "J" : "j";
|
||||
case Key.K: return Shift ? "K" : "k";
|
||||
case Key.L: return Shift ? "L" : "l";
|
||||
|
||||
case Key.Z: return Shift ? "Z" : "z";
|
||||
case Key.X: return Shift ? "X" : "x";
|
||||
case Key.C: return Shift ? "C" : "c";
|
||||
case Key.V: return Shift ? "V" : "v";
|
||||
case Key.B: return Shift ? "B" : "b";
|
||||
case Key.N: return Shift ? "N" : "n";
|
||||
case Key.M: return Shift ? "M" : "m";
|
||||
|
||||
case Key.Space: return " ";
|
||||
|
||||
case Key.NumSlash: return "/";
|
||||
case Key.NumAsterisk: return "*";
|
||||
case Key.NumMinus: return "-";
|
||||
case Key.NumPlus: return "+";
|
||||
case Key.Num0: return "0";
|
||||
case Key.Num1: return "1";
|
||||
case Key.Num2: return "2";
|
||||
case Key.Num3: return "3";
|
||||
case Key.Num4: return "4";
|
||||
case Key.Num5: return "5";
|
||||
case Key.Num6: return "6";
|
||||
case Key.Num7: return "7";
|
||||
case Key.Num8: return "8";
|
||||
case Key.Num9: return "9";
|
||||
|
||||
case Key.LSquare: return Shift ? "{" : "[";
|
||||
case Key.RSquare: return Shift ? "}" : "]";
|
||||
case Key.Colon: return Shift ? ":" : ";";
|
||||
case Key.Quotes: return Shift ? "\"" : "'";
|
||||
case Key.BackSlash: return Shift ? "|" : "\\";
|
||||
case Key.LAngle: return Shift ? "<" : ",";
|
||||
case Key.RAngle: return Shift ? ">" : ".";
|
||||
case Key.Slash: return Shift ? "?" : "/";
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
// Key Press Event
|
||||
public virtual void OnKeyInput(KeyInfo key)
|
||||
{ }
|
||||
|
||||
private KeyInfo PollKeyboard ()
|
||||
{
|
||||
INPUT_RECORD [] record = new INPUT_RECORD[1];
|
||||
|
||||
uint count;
|
||||
|
||||
PeekConsoleInput(input, record, 1, out count);
|
||||
if (count == 0)
|
||||
return null;
|
||||
|
||||
ReadConsoleInput(input, record, 1, out count);
|
||||
if (count == 0)
|
||||
return null;
|
||||
|
||||
if (record[0].EventType == KEY_EVENT && record[0].KeyEvent.bKeyDown)
|
||||
{
|
||||
return Translate(record[0]);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private KeyInfo Translate(INPUT_RECORD record)
|
||||
{
|
||||
KeyInfo key = new KeyInfo();
|
||||
|
||||
key.Shift = (record.KeyEvent.dwControlKeyState & SHIFT_PRESSED) != 0;
|
||||
key.Alt = ((record.KeyEvent.dwControlKeyState & LEFT_ALT_PRESSED) != 0) ||
|
||||
((record.KeyEvent.dwControlKeyState & RIGHT_ALT_PRESSED) != 0);
|
||||
key.Ctrl = ((record.KeyEvent.dwControlKeyState & LEFT_CTRL_PRESSED) != 0) ||
|
||||
((record.KeyEvent.dwControlKeyState & RIGHT_CTRL_PRESSED) != 0);
|
||||
|
||||
switch (record.KeyEvent.wVirtualKeyCode)
|
||||
{
|
||||
case 0x1B: key.KeyCode = Key.Esc; break;
|
||||
case 0x08: key.KeyCode = Key.Backspace; break;
|
||||
case 0x20: key.KeyCode = Key.Space; break;
|
||||
case 0x0D: key.KeyCode = Key.Enter; break;
|
||||
|
||||
case 0x70: key.KeyCode = Key.F1; break;
|
||||
case 0x71: key.KeyCode = Key.F2; break;
|
||||
case 0x72: key.KeyCode = Key.F3; break;
|
||||
case 0x73: key.KeyCode = Key.F4; break;
|
||||
case 0x74: key.KeyCode = Key.F5; break;
|
||||
case 0x75: key.KeyCode = Key.F6; break;
|
||||
case 0x76: key.KeyCode = Key.F7; break;
|
||||
case 0x77: key.KeyCode = Key.F8; break;
|
||||
case 0x78: key.KeyCode = Key.F9; break;
|
||||
case 0x79: key.KeyCode = Key.F10; break;
|
||||
case 0x7A: key.KeyCode = Key.F11; break;
|
||||
case 0x7B: key.KeyCode = Key.F12; break;
|
||||
|
||||
case 0x31: key.KeyCode = Key.Key1; break;
|
||||
case 0x32: key.KeyCode = Key.Key2; break;
|
||||
case 0x33: key.KeyCode = Key.Key3; break;
|
||||
case 0x34: key.KeyCode = Key.Key4; break;
|
||||
case 0x35: key.KeyCode = Key.Key5; break;
|
||||
case 0x36: key.KeyCode = Key.Key6; break;
|
||||
case 0x37: key.KeyCode = Key.Key7; break;
|
||||
case 0x38: key.KeyCode = Key.Key8; break;
|
||||
case 0x39: key.KeyCode = Key.Key9; break;
|
||||
case 0x30: key.KeyCode = Key.Key0; break;
|
||||
|
||||
case 0xC0: key.KeyCode = Key.Tilda; break;
|
||||
case 0xBD: key.KeyCode = Key.KeyMinus; break;
|
||||
case 0xBB: key.KeyCode = Key.KeyPlus; break;
|
||||
|
||||
case 0x51: key.KeyCode = Key.Q; break;
|
||||
case 0x57: key.KeyCode = Key.W; break;
|
||||
case 0x45: key.KeyCode = Key.E; break;
|
||||
case 0x52: key.KeyCode = Key.R; break;
|
||||
case 0x54: key.KeyCode = Key.T; break;
|
||||
case 0x59: key.KeyCode = Key.Y; break;
|
||||
case 0x55: key.KeyCode = Key.U; break;
|
||||
case 0x49: key.KeyCode = Key.I; break;
|
||||
case 0x4F: key.KeyCode = Key.O; break;
|
||||
case 0x50: key.KeyCode = Key.P; break;
|
||||
|
||||
case 0x41: key.KeyCode = Key.A; break;
|
||||
case 0x53: key.KeyCode = Key.S; break;
|
||||
case 0x44: key.KeyCode = Key.D; break;
|
||||
case 0x46: key.KeyCode = Key.F; break;
|
||||
case 0x47: key.KeyCode = Key.G; break;
|
||||
case 0x48: key.KeyCode = Key.H; break;
|
||||
case 0x4A: key.KeyCode = Key.J; break;
|
||||
case 0x4B: key.KeyCode = Key.K; break;
|
||||
case 0x4C: key.KeyCode = Key.L; break;
|
||||
|
||||
case 0x5A: key.KeyCode = Key.Z; break;
|
||||
case 0x58: key.KeyCode = Key.X; break;
|
||||
case 0x43: key.KeyCode = Key.C; break;
|
||||
case 0x56: key.KeyCode = Key.V; break;
|
||||
case 0x42: key.KeyCode = Key.B; break;
|
||||
case 0x4E: key.KeyCode = Key.N; break;
|
||||
case 0x4D: key.KeyCode = Key.M; break;
|
||||
|
||||
case 0x60: key.KeyCode = Key.Num0; break;
|
||||
case 0x61: key.KeyCode = Key.Num1; break;
|
||||
case 0x62: key.KeyCode = Key.Num2; break;
|
||||
case 0x63: key.KeyCode = Key.Num3; break;
|
||||
case 0x64: key.KeyCode = Key.Num4; break;
|
||||
case 0x65: key.KeyCode = Key.Num5; break;
|
||||
case 0x66: key.KeyCode = Key.Num6; break;
|
||||
case 0x67: key.KeyCode = Key.Num7; break;
|
||||
case 0x68: key.KeyCode = Key.Num8; break;
|
||||
case 0x69: key.KeyCode = Key.Num9; break;
|
||||
|
||||
case 0x6F: key.KeyCode = Key.NumSlash; break;
|
||||
case 0x6A: key.KeyCode = Key.NumAsterisk; break;
|
||||
case 0x6D: key.KeyCode = Key.NumMinus; break;
|
||||
case 0x6B: key.KeyCode = Key.NumPlus; break;
|
||||
|
||||
case 0x26: key.KeyCode = Key.Up; break;
|
||||
case 0x28: key.KeyCode = Key.Down; break;
|
||||
case 0x25: key.KeyCode = Key.Left; break;
|
||||
case 0x27: key.KeyCode = Key.Right; break;
|
||||
|
||||
case 0xDB: key.KeyCode = Key.LSquare; break;
|
||||
case 0xDD: key.KeyCode = Key.RSquare; break;
|
||||
case 0xBA: key.KeyCode = Key.Colon; break;
|
||||
case 0xDE: key.KeyCode = Key.Quotes; break;
|
||||
case 0xDC: key.KeyCode = Key.BackSlash; break;
|
||||
case 0xBC: key.KeyCode = Key.LAngle; break;
|
||||
case 0xBE: key.KeyCode = Key.RAngle; break;
|
||||
case 0xBF: key.KeyCode = Key.Slash; break;
|
||||
|
||||
case 0x2D: key.KeyCode = Key.Ins; break;
|
||||
case 0x2E: key.KeyCode = Key.Del; break;
|
||||
case 0x24: key.KeyCode = Key.Home; break;
|
||||
case 0x23: key.KeyCode = Key.End; break;
|
||||
case 0x21: key.KeyCode = Key.PageUp; break;
|
||||
case 0x22: key.KeyCode = Key.PageDown; break;
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
private void PollingThreadProc()
|
||||
{
|
||||
while (!stopPolling)
|
||||
{
|
||||
KeyInfo key = PollKeyboard();
|
||||
|
||||
if (key != null)
|
||||
{
|
||||
if (key.KeyCode != Key.None)
|
||||
{
|
||||
OnKeyInput(key);
|
||||
|
||||
foreach (var w in windows)
|
||||
{
|
||||
if (w.IsActive())
|
||||
w.OnKeyInput(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Thread.Sleep(10);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion "Console Input"
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,222 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Console API: https://www.pinvoke.net/default.aspx/kernel32/ConsoleFunctions.html
|
||||
|
||||
namespace ManagedConsole
|
||||
{
|
||||
public partial class Console
|
||||
{
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool AllocConsole();
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
|
||||
static extern bool FreeConsole();
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool SetConsoleTitle(string lpConsoleTitle);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern IntPtr GetStdHandle(
|
||||
int nStdHandle);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool SetConsoleWindowInfo(
|
||||
IntPtr hConsoleOutput,
|
||||
bool bAbsolute,
|
||||
[In] ref SMALL_RECT lpConsoleWindow);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool SetConsoleScreenBufferSize(
|
||||
IntPtr hConsoleOutput,
|
||||
COORD dwSize);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool GetConsoleCursorInfo(
|
||||
IntPtr hConsoleOutput,
|
||||
out CONSOLE_CURSOR_INFO lpConsoleCursorInfo);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool GetConsoleMode(
|
||||
IntPtr hConsoleHandle,
|
||||
out uint lpMode);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool SetConsoleMode(
|
||||
IntPtr hConsoleHandle,
|
||||
uint dwMode);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool WriteConsoleOutput(
|
||||
IntPtr hConsoleOutput,
|
||||
CHAR_INFO[] lpBuffer,
|
||||
COORD dwBufferSize,
|
||||
COORD dwBufferCoord,
|
||||
ref SMALL_RECT lpWriteRegion);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool SetConsoleCursorPosition(
|
||||
IntPtr hConsoleOutput,
|
||||
COORD dwCursorPosition);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool PeekConsoleInput(
|
||||
IntPtr hConsoleInput,
|
||||
[Out] INPUT_RECORD[] lpBuffer,
|
||||
uint nLength,
|
||||
out uint lpNumberOfEventsRead);
|
||||
|
||||
[DllImport("kernel32.dll", EntryPoint = "ReadConsoleInputW", CharSet = CharSet.Unicode)]
|
||||
static extern bool ReadConsoleInput(
|
||||
IntPtr hConsoleInput,
|
||||
[Out] INPUT_RECORD[] lpBuffer,
|
||||
uint nLength,
|
||||
out uint lpNumberOfEventsRead);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
static extern bool CloseHandle(IntPtr hObject);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct COORD
|
||||
{
|
||||
|
||||
public short X;
|
||||
public short Y;
|
||||
|
||||
}
|
||||
|
||||
struct SMALL_RECT
|
||||
{
|
||||
|
||||
public short Left;
|
||||
public short Top;
|
||||
public short Right;
|
||||
public short Bottom;
|
||||
|
||||
}
|
||||
|
||||
struct CONSOLE_SCREEN_BUFFER_INFO
|
||||
{
|
||||
|
||||
public COORD dwSize;
|
||||
public COORD dwCursorPosition;
|
||||
public short wAttributes;
|
||||
public SMALL_RECT srWindow;
|
||||
public COORD dwMaximumWindowSize;
|
||||
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
struct INPUT_RECORD
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public ushort EventType;
|
||||
[FieldOffset(4)]
|
||||
public KEY_EVENT_RECORD KeyEvent;
|
||||
[FieldOffset(4)]
|
||||
public MOUSE_EVENT_RECORD MouseEvent;
|
||||
[FieldOffset(4)]
|
||||
public WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
||||
[FieldOffset(4)]
|
||||
public MENU_EVENT_RECORD MenuEvent;
|
||||
[FieldOffset(4)]
|
||||
public FOCUS_EVENT_RECORD FocusEvent;
|
||||
};
|
||||
|
||||
[StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]
|
||||
struct KEY_EVENT_RECORD
|
||||
{
|
||||
[FieldOffset(0), MarshalAs(UnmanagedType.Bool)]
|
||||
public bool bKeyDown;
|
||||
[FieldOffset(4), MarshalAs(UnmanagedType.U2)]
|
||||
public ushort wRepeatCount;
|
||||
[FieldOffset(6), MarshalAs(UnmanagedType.U2)]
|
||||
//public VirtualKeys wVirtualKeyCode;
|
||||
public ushort wVirtualKeyCode;
|
||||
[FieldOffset(8), MarshalAs(UnmanagedType.U2)]
|
||||
public ushort wVirtualScanCode;
|
||||
[FieldOffset(10)]
|
||||
public char UnicodeChar;
|
||||
[FieldOffset(12), MarshalAs(UnmanagedType.U4)]
|
||||
//public ControlKeyState dwControlKeyState;
|
||||
public uint dwControlKeyState;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct MOUSE_EVENT_RECORD
|
||||
{
|
||||
public COORD dwMousePosition;
|
||||
public uint dwButtonState;
|
||||
public uint dwControlKeyState;
|
||||
public uint dwEventFlags;
|
||||
}
|
||||
|
||||
struct WINDOW_BUFFER_SIZE_RECORD
|
||||
{
|
||||
public COORD dwSize;
|
||||
|
||||
public WINDOW_BUFFER_SIZE_RECORD(short x, short y)
|
||||
{
|
||||
dwSize = new COORD();
|
||||
dwSize.X = x;
|
||||
dwSize.Y = y;
|
||||
}
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct MENU_EVENT_RECORD
|
||||
{
|
||||
public uint dwCommandId;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct FOCUS_EVENT_RECORD
|
||||
{
|
||||
public uint bSetFocus;
|
||||
}
|
||||
|
||||
//CHAR_INFO struct, which was a union in the old days
|
||||
// so we want to use LayoutKind.Explicit to mimic it as closely
|
||||
// as we can
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
struct CHAR_INFO
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public char UnicodeChar;
|
||||
[FieldOffset(0)]
|
||||
public char AsciiChar;
|
||||
[FieldOffset(2)] //2 bytes seems to work properly
|
||||
public UInt16 Attributes;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct CONSOLE_CURSOR_INFO
|
||||
{
|
||||
uint Size;
|
||||
bool Visible;
|
||||
}
|
||||
|
||||
const int FOCUS_EVENT = 0x0010;
|
||||
const int KEY_EVENT = 0x0001;
|
||||
const int MENU_EVENT = 0x0008;
|
||||
const int MOUSE_EVENT = 0x0002;
|
||||
const int WINDOW_BUFFER_SIZE_EVENT = 0x0004;
|
||||
|
||||
const int LEFT_ALT_PRESSED = 0x0002;
|
||||
const int LEFT_CTRL_PRESSED = 0x0008;
|
||||
const int RIGHT_ALT_PRESSED = 0x0001;
|
||||
const int RIGHT_CTRL_PRESSED = 0x0004;
|
||||
const int SHIFT_PRESSED = 0x0010;
|
||||
|
||||
const int STD_INPUT_HANDLE = -10;
|
||||
const int STD_OUTPUT_HANDLE = -11;
|
||||
const int STD_ERROR_HANDLE = -12;
|
||||
|
||||
const int INVALID_HANDLE_VALUE = -1;
|
||||
|
||||
const uint ENABLE_MOUSE_INPUT = 0x0010;
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
|
@ -1,5 +0,0 @@
|
|||
# ManagedConsole
|
||||
|
||||
Managed code for working with the Win32 console.
|
||||
|
||||
Almost completely ported from Dolwin 0.10 sources.
|
|
@ -1,81 +0,0 @@
|
|||
// Console windows interface
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
|
||||
namespace ManagedConsole
|
||||
{
|
||||
partial class Console
|
||||
{
|
||||
public class Window
|
||||
{
|
||||
Console parent;
|
||||
Rectangle winrect;
|
||||
bool active = false;
|
||||
|
||||
// Create a window at the specified coordinates and specified size
|
||||
public Window(Console parent, Rectangle rect)
|
||||
{
|
||||
this.parent = parent;
|
||||
winrect = new Rectangle(rect.X, rect.Y, rect.Width, rect.Height);
|
||||
parent.windows.Add(this);
|
||||
}
|
||||
|
||||
// Destroy window
|
||||
public void Destroy()
|
||||
{
|
||||
parent.windows.Remove(this);
|
||||
}
|
||||
|
||||
// Refresh whole window contents immediately
|
||||
public void Invalidate()
|
||||
{
|
||||
parent.Blit(winrect);
|
||||
}
|
||||
|
||||
// Activate or deactivate the window. Only the active window receives input events
|
||||
public void Activate(bool active)
|
||||
{
|
||||
this.active = active;
|
||||
}
|
||||
|
||||
// Check if the window is currently active.
|
||||
public bool IsActive()
|
||||
{
|
||||
return active;
|
||||
}
|
||||
|
||||
// Key Press Event
|
||||
public virtual void OnKeyInput(KeyInfo key)
|
||||
{ }
|
||||
|
||||
// Display a string of the specified color at the specified coordinates of the window.
|
||||
// Window contents is not updated immediately (Invalidate required).
|
||||
public void PrintAt(ColorCode color, int x, int y, string text)
|
||||
{
|
||||
parent.PrintAt(color, winrect.X + x, winrect.Y + y, text);
|
||||
}
|
||||
|
||||
// Fill window background
|
||||
// Window contents is not updated immediately (Invalidate required).
|
||||
public void Fill(Rectangle rect, ColorCode backColor)
|
||||
{
|
||||
if (rect.X >= winrect.Width || rect.Y >= winrect.Height)
|
||||
return;
|
||||
|
||||
Rectangle worldRect = new Rectangle();
|
||||
|
||||
worldRect.X = winrect.X + rect.X;
|
||||
worldRect.Y = winrect.Y + rect.Y;
|
||||
worldRect.Width = Math.Min(winrect.Width - rect.X, rect.Width);
|
||||
worldRect.Height = Math.Min(winrect.Height - rect.Y, rect.Height);
|
||||
|
||||
parent.Fill(worldRect, backColor);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
2
RnD/ManagedConsoleDemo/.gitattributes
vendored
2
RnD/ManagedConsoleDemo/.gitattributes
vendored
|
@ -1,2 +0,0 @@
|
|||
*.Designer.cs binary
|
||||
*.resx binary
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue