Compare commits

...

603 commits

Author SHA1 Message Date
ogamespec
c6e2b073a6
Merge pull request #314 from ogamespec/master
Use GFX_USE_SDL_WINDOW macro in SDL build
2024-04-19 12:30:58 +03:00
org
70f45f227c Use GFX_USE_SDL_WINDOW macro in SDL build 2024-04-19 12:30:08 +03:00
org
d115ff8b03 warning: disable 4273 2024-04-19 12:24:09 +03:00
ogamespec
5b8d984d8d
Merge pull request #313 from ogamespec/master
Removed fmt
2024-04-19 11:31:06 +03:00
ogamespec
86a80488ec Update uisdl.cpp 2024-04-19 11:28:56 +03:00
ogamespec
0f9f21cc64 Debug SDL / Release SDL configurations 2024-04-19 11:20:29 +03:00
ogamespec
d7ac90a07f build 2024-04-19 11:10:28 +03:00
ogamespec
1bd24bbd5c warnings 2024-04-19 10:03:36 +03:00
ogamespec
43eb66cd9c removed conflicting fmt 2024-04-19 09:47:25 +03:00
ogamespec
a817428139
Merge pull request #312 from ogamespec/master
Fixed PI FIFO wrap bit
2023-09-15 09:50:17 +03:00
org
874b0f43d6 win32 gfx 2023-09-15 09:47:40 +03:00
org
608b00a385 Update pureikyubu.vcxproj 2023-09-15 09:43:55 +03:00
org
086551c0b2 Fixed PI FIFO wrap bit 2023-09-15 09:35:49 +03:00
org
60978d5eaf pad.cpp crooked again 2023-08-25 11:48:41 +03:00
ogamespec
f4fa7b5dbf
Merge pull request #311 from ogamespec/master
Fixed pad stick
2023-08-24 16:31:13 +03:00
org
c42efabf87 Fixed pad stick 2023-08-24 16:30:51 +03:00
ogamespec
434e362a49
Merge pull request #310 from ogamespec/master
cp.cpp debug
2023-08-22 10:35:09 +03:00
ogamespec
9c23e76565 cp.cpp debug 2023-08-22 03:13:25 +03:00
ogamespec
4297afdd99
Merge pull request #309 from ogamespec/master
Fixed default cui.cpp
2023-08-21 23:25:45 +03:00
ogamespec
ed161e17ae Fixed default cui.cpp 2023-08-21 23:25:31 +03:00
ogamespec
5267764f15
Merge pull request #308 from ogamespec/master
Update cuisdl.cpp
2023-08-21 22:11:24 +03:00
ogamespec
0e4751340d Update cuisdl.cpp 2023-08-21 22:11:11 +03:00
ogamespec
5b88fbf719
Merge pull request #307 from ogamespec/master
Update cui.h
2023-08-21 21:58:08 +03:00
ogamespec
e6a3012c99 Update cui.h 2023-08-21 21:57:55 +03:00
ogamespec
a147535dc6
Merge pull request #306 from ogamespec/master
Cui DrawInternal for imgui (Linux) + gfx cleanup
2023-08-21 21:49:15 +03:00
ogamespec
a62af0d0df Cui DrawInternal for imgui + Linux 2023-08-21 21:48:36 +03:00
ogamespec
3a31b45b06 gfx cleanup 2023-08-21 18:19:17 +03:00
ogamespec
ef22c75682 CP_CMD_DRAW_QUAD_STRIP 2023-08-21 17:19:31 +03:00
ogamespec
6e1cb4003f
Merge pull request #305 from ogamespec/master
DVDLoadBanner linux fix
2023-08-21 16:28:24 +03:00
ogamespec
d3bae88c88 DVDLoadBanner linux fix 2023-08-21 16:28:02 +03:00
ogamespec
067791461b
Merge pull request #304 from ogamespec/master
gfx support for Linux
2023-08-21 12:46:06 +03:00
ogamespec
2470f98dbc xfbsdl + linux build fixes 2023-08-21 12:42:03 +03:00
ogamespec
2877afeb3d GFX_USE_SDL_WINDOW macro 2023-08-21 11:20:19 +03:00
ogamespec
a3bcad18c4 message boxes 2023-08-20 20:35:25 +03:00
ogamespec
18bd3a0978 CreateRenderTarget 2023-08-20 17:17:32 +03:00
ogamespec
c4898dc1c7 ui cleanup 2023-08-20 14:25:56 +03:00
ogamespec
3dd3b265d8 uisdl.cpp wip 2023-08-20 12:51:11 +03:00
ogamespec
420e0310a9 imgui-filebrowser 2023-08-20 02:03:31 +03:00
ogamespec
64e9d315c7 uisdl.cpp wip 2023-08-20 01:50:00 +03:00
ogamespec
b8ad5d6a0e cui_imgui -> cuisdl 2023-08-19 23:22:00 +03:00
ogamespec
1c13b6ec65 uisdl wip 2023-08-19 23:20:50 +03:00
ogamespec
b9adcfb448
Merge pull request #303 from ogamespec/master
Fixed linux build
2023-08-19 08:53:37 +03:00
ogamespec
9604619508 Fixed linux build 2023-08-19 08:53:04 +03:00
ogamespec
ba991a9d8f
Merge pull request #302 from ogamespec/master
gfx refactoring and cleanup
2023-08-18 20:12:46 +03:00
ogamespec
50b7b14a92 Update pad.cpp 2023-08-18 20:11:44 +03:00
ogamespec
517faf71b1 gfx refactoring 2023-08-18 10:16:55 +03:00
ogamespec
a69cad20b9 xf.cpp cleanup 2023-08-18 09:58:23 +03:00
ogamespec
c9b841c4c6 delay_mailbox_reasons counter 2023-08-17 21:17:44 +03:00
ogamespec
020ca7df5e 1.7 2023-08-17 20:13:01 +03:00
ogamespec
f1b8b93a8a
Merge pull request #301 from ogamespec/master
PE Regs
2023-08-17 18:06:46 +03:00
ogamespec
5b4aa72e10 Experimental window resize 2023-08-17 17:21:41 +03:00
ogamespec
de83d857ea PE Regs 2023-08-17 16:16:12 +03:00
ogamespec
f037859cc7 SU cleanup 2023-08-17 15:30:54 +03:00
ogamespec
fe8a332c8f Update sym.cpp 2023-08-17 15:15:16 +03:00
ogamespec
e56651b869 Update sym.cpp 2023-08-16 22:14:59 +03:00
ogamespec
fe2fd62346
Merge pull request #299 from ogamespec/master
Fixed mtsr instruction decoding
2023-08-16 19:13:12 +03:00
ogamespec
67fbdbcb17 Update gekko.h 2023-08-16 19:12:43 +03:00
ogamespec
b99f01d06f Fixed mtsr decoding 2023-08-16 19:06:24 +03:00
ogamespec
eb56fee482 Fixed nop command (takes into account the instruction cache) 2023-08-16 18:46:04 +03:00
ogamespec
d93a52eff9
Merge pull request #298 from ogamespec/master
Disabled mailbox DSP delay
2023-08-16 15:18:57 +03:00
ogamespec
9ff4f05797 Removed Sleep in dspcore (mailboxes) 2023-08-16 14:48:35 +03:00
ogamespec
a29c4f4bc9 complain_unaligned = false 2023-08-16 14:32:13 +03:00
ogamespec
04b3780dc6
Merge pull request #297 from ogamespec/master
Fixed DSI/ISI crashes
2023-08-16 12:50:10 +03:00
ogamespec
63303f1572 Fixed DSI/ISI crashes
#296
2023-08-16 12:49:32 +03:00
ogamespec
86775aec93 Update main.h 2023-08-16 08:49:30 +03:00
ogamespec
b4c65af8be
Merge pull request #294 from ogamespec/master
Fixed CPU->DSP interrupt
2023-08-15 12:35:28 +03:00
ogamespec
9838228ec9 Fixed CPU->DSP interrupt 2023-08-15 12:34:28 +03:00
ogamespec
56a504391e
Merge pull request #293 from ogamespec/master
DI log commands
2023-08-15 11:22:17 +03:00
ogamespec
4685c44ef0 DI log commands 2023-08-15 11:20:41 +03:00
ogamespec
f66447037b
Merge pull request #292 from ogamespec/master
fixed hack
2023-08-15 10:22:17 +03:00
ogamespec
bc704858b7 fixed hack 2023-08-15 10:22:01 +03:00
ogamespec
09dda465c4
Merge pull request #291 from ogamespec/master
gfx refactoring
2023-08-15 10:13:57 +03:00
ogamespec
cca520351d GFX_BLACKJACK_AND_SHADERS macro 2023-08-15 10:13:31 +03:00
ogamespec
baf1afede3 cleanup 2023-08-15 08:40:45 +03:00
ogamespec
e412bd969f gfx.vert uniforms 2023-08-15 07:43:55 +03:00
ogamespec
0d53a9bf92 gfx wip 2023-08-14 23:03:32 +03:00
ogamespec
6595b54e4a gfx wip 2023-08-14 21:28:40 +03:00
ogamespec
f2447713e8 VBO wip 2023-08-14 20:22:02 +03:00
ogamespec
c7671b52e0 VBO stride / offset 2023-08-14 19:11:09 +03:00
ogamespec
633a0b7649 VBO refactoring 2023-08-14 18:46:31 +03:00
ogamespec
c462fd4dba glDrawArrays 2023-08-14 18:39:02 +03:00
ogamespec
a4b4504faf gfx refactoring (VBO) 2023-08-14 18:21:53 +03:00
ogamespec
e9c99608a8 gfx refactoring 2023-08-14 12:42:04 +03:00
ogamespec
266500be5f Prepare shaders 2023-08-14 12:25:14 +03:00
ogamespec
b02aaddf83 wireframe mode tweaking 2023-08-14 10:24:00 +03:00
ogamespec
5d01868622 GLEW for Linux 2023-08-14 00:13:44 +03:00
ogamespec
e7f9a44cc3 Try shaders 2023-08-13 23:39:19 +03:00
ogamespec
b2692d0917
Merge pull request #290 from ogamespec/master
xf.cpp cleanup
2023-08-13 20:26:11 +03:00
ogamespec
e72cb70959 xf.cpp cleanup 2023-08-13 20:23:39 +03:00
ogamespec
94caee299a
Merge pull request #289 from ogamespec/master
DMEM/IMEM moved to DspCore as it should
2023-08-13 19:38:59 +03:00
ogamespec
e927bbda0a DMEM/IMEM moved to DspCore as it should 2023-08-13 19:38:36 +03:00
ogamespec
c6c9f1a548
Merge pull request #288 from ogamespec/master
Wiki main.md
2023-08-13 18:44:56 +03:00
ogamespec
23e85c4b3c Update main.md 2023-08-13 18:29:34 +03:00
ogamespec
2588dbea29 wiki\main.md 2023-08-13 18:23:16 +03:00
ogamespec
a45d2cfb79
Merge pull request #287 from ogamespec/master
Fixed debugger `script` command
2023-08-13 18:12:40 +03:00
ogamespec
00e05af09c script command fixed 2023-08-13 18:04:44 +03:00
ogamespec
5ce4d4d187 1.5 2023-08-13 17:38:07 +03:00
ogamespec
a06114993f Run autoexec.cmd after loading file 2023-08-13 17:37:43 +03:00
ogamespec
87775940eb
Merge pull request #286 from ogamespec/master
Simplified uisimple.cpp
2023-08-13 10:33:32 +03:00
ogamespec
2a3ad124ee Simplified uisimple.cpp 2023-08-13 10:31:32 +03:00
ogamespec
e545b56e38 Minimize/maximize boxes for the main window 2023-08-13 10:03:03 +03:00
ogamespec
4c2c9b38cc fixed .cpp modules mentioned in comments 2023-08-13 09:53:25 +03:00
ogamespec
8026d5c891
Merge pull request #285 from ogamespec/master
Linux build fixes
2023-08-13 02:27:48 +03:00
ogamespec
f7f7a3876c Update debug.cpp 2023-08-13 02:26:45 +03:00
ogamespec
31a74bce94 vsprintf_s 2023-08-13 02:17:32 +03:00
ogamespec
2569b34fbb linux build 2023-08-13 02:15:04 +03:00
ogamespec
7e373cabd6
Merge pull request #284 from ogamespec/master
Cui + imgui
2023-08-13 01:39:47 +03:00
ogamespec
205f269746 cui_imgui.cpp 2023-08-13 01:39:12 +03:00
ogamespec
5095dc2343 cui_imgui wip 2023-08-12 23:39:44 +03:00
ogamespec
769791d860 cui_imgui wip 2023-08-12 21:34:16 +03:00
ogamespec
0cc5e477fb Linkage with imgui 2023-08-12 20:47:39 +03:00
ogamespec
1b66d38bd8 LoadMapRAW fix 2023-08-12 20:10:29 +03:00
ogamespec
2b448487b3
Merge pull request #283 from ogamespec/master
Added imgui+SDL2 as submodules
2023-08-12 19:11:36 +03:00
ogamespec
f68a821f48 Added imgui+SDL2 as submodules 2023-08-12 19:11:05 +03:00
ogamespec
fee8a5ed04
Merge pull request #282 from ogamespec/master
Reverted old LoadMapRAW code
2023-08-12 12:01:17 +03:00
ogamespec
93c270de4e Reverted old LoadMapRAW code 2023-08-12 11:30:06 +03:00
ogamespec
a698b2d0f5
Merge pull request #281 from ogamespec/master
Added more missing regs
2023-08-11 23:10:04 +03:00
ogamespec
a82ff49671 MI Regs 2023-08-11 23:01:36 +03:00
ogamespec
8eabe1883b MEM Regs 2023-08-11 22:34:18 +03:00
ogamespec
6d3f949006 PE PI regs defs 2023-08-11 21:01:57 +03:00
ogamespec
28f81258df
Merge pull request #280 from ogamespec/master
RTC notes
2023-08-11 19:29:16 +03:00
ogamespec
fae06c300b RTC notes 2023-08-11 19:28:27 +03:00
ogamespec
727de6de7e
Merge pull request #279 from ogamespec/master
DSP debugger is intergrated into common system-wide debugger
2023-08-11 17:54:50 +03:00
ogamespec
c201ad9800 DSP debugger is intergrated into common system-wide debugger 2023-08-11 17:53:59 +03:00
ogamespec
09da5e9d8c Update flipper.h 2023-08-11 12:39:09 +03:00
ogamespec
cc68053d1e
Merge pull request #278 from ogamespec/master
User-friendly Debug::Halt
2023-08-10 16:45:34 +03:00
ogamespec
6ff9d076ab Update pureikyubu.vcxproj 2023-08-10 16:45:03 +03:00
ogamespec
3681e5418b 1.4 2023-08-10 16:40:44 +03:00
ogamespec
bbf412e1cf
Merge pull request #277 from ogamespec/master
Fixed locked cache
2023-08-10 15:14:50 +03:00
ogamespec
c6392363ed Fixed cache touch 2023-08-10 14:41:14 +03:00
ogamespec
89e0460c19 DebugUI MemoryViewMode 2023-08-10 14:27:34 +03:00
ogamespec
68880641ab Fixing locked cache 2023-08-10 13:58:05 +03:00
ogamespec
bced7042c2
Merge pull request #276 from ogamespec/master
Fixed step-over in Gekko debug (F10)
2023-08-10 10:11:30 +03:00
ogamespec
6abe01273e Fixed step-over in Gekko debug (F10) 2023-08-10 10:11:11 +03:00
ogamespec
aaa4b85210 tabs 2023-08-10 09:41:20 +03:00
ogamespec
f960c6102f
Merge pull request #275 from ogamespec/master
progress_luigi
2023-08-09 21:20:04 +03:00
ogamespec
0488ccb302 Update README.md 2023-08-09 21:19:32 +03:00
ogamespec
b675dd7d00 progress_luigi 2023-08-09 21:19:09 +03:00
ogamespec
564ebd94c7
Merge pull request #274 from ogamespec/master
Fixed Gekko reset + GEKKOCORE_CACHE_DISABLE_HACK macro
2023-08-09 21:04:48 +03:00
ogamespec
3e9e9cb073 Fixed Gekko reset + GEKKOCORE_CACHE_DISABLE_HACK macro 2023-08-09 21:04:29 +03:00
ogamespec
f01d156a9b
Merge pull request #273 from ogamespec/master
PI unmapped access debug messages + DecrementerStep
2023-08-09 20:53:10 +03:00
ogamespec
8777f85dfc DecrementerStep 2023-08-09 20:52:31 +03:00
ogamespec
3fa9b9a60c PI unmapped access debug messages 2023-08-09 20:22:28 +03:00
ogamespec
bd1b05b44e
Merge pull request #272 from ogamespec/master
Fixed errordemo
2023-08-09 19:27:33 +03:00
ogamespec
1a6577da8a Fixed errordemo
- Direct store segment support
- Fixed TLB
- TLB debug commands
2023-08-09 19:26:12 +03:00
ogamespec
e5a6a63b69
Merge pull request #271 from ogamespec/master
Cache hack
2023-08-09 18:03:13 +03:00
ogamespec
3b34b8a4ec Cache hack 2023-08-09 18:02:56 +03:00
ogamespec
b61588efb9
Merge pull request #270 from ogamespec/master
Fixed Luigi's model spikes
2023-08-09 17:17:14 +03:00
ogamespec
775564316e Fixed Luigi's model spikes 2023-08-09 17:16:54 +03:00
ogamespec
4cce080c5a
Merge pull request #269 from ogamespec/master
Simplified ras.cpp
2023-08-09 15:56:26 +03:00
ogamespec
d9276d9fbb Simplified ras.cpp 2023-08-09 15:56:03 +03:00
ogamespec
2d550a5c9c
Merge pull request #268 from ogamespec/master
TEV regs
2023-08-09 13:29:03 +03:00
ogamespec
da3623d7c8 tabs 2023-08-09 13:23:02 +03:00
ogamespec
b54f4684aa TEV regs definitions 2023-08-09 13:22:34 +03:00
ogamespec
3b6d70a642
Merge pull request #267 from ogamespec/master
Flipper_ASIC_Block_Diagram update
2023-08-09 09:31:26 +03:00
ogamespec
693e3110f9 Flipper_ASIC_Block_Diagram update 2023-08-09 09:31:08 +03:00
ogamespec
fc232ab1ea
Merge pull request #266 from ogamespec/master
Update DefaultSettings.json (NTSC 1.1 Revision bootrom default)
2023-08-09 09:08:24 +03:00
ogamespec
851ab56993 Update DefaultSettings.json 2023-08-09 09:07:53 +03:00
ogamespec
b6a6ada760
Merge pull request #265 from ogamespec/master
Requirements
2023-08-09 08:58:33 +03:00
ogamespec
770da3e2b4 Requirements 2023-08-09 08:58:16 +03:00
ogamespec
305292a326
Merge pull request #264 from ogamespec/master
Fixed Linux build
2023-08-09 08:53:22 +03:00
ogamespec
6f4124ba18 linux 2023-08-09 08:52:52 +03:00
ogamespec
5729eee432 linux port 2023-08-09 08:48:53 +03:00
ogamespec
e08ab4f1b2 UI cleanup 2023-08-09 08:25:26 +03:00
ogamespec
e0980dce89
Merge pull request #263 from ogamespec/master
Gekko cache support
2023-08-08 22:44:40 +03:00
ogamespec
d6b0fe5bb2 Fixed IPL boot + cache enabled 2023-08-08 21:49:43 +03:00
ogamespec
d3ed5782c5 Fixed icbi instruction 2023-08-08 20:59:45 +03:00
ogamespec
baa71db96b Trying to emulate Gekko cache properly 2023-08-08 20:39:19 +03:00
ogamespec
e060ee6139 removed CacheDebugDisable 2023-08-08 19:08:42 +03:00
ogamespec
b08f70564b GekkoCore cleanup 2023-08-08 18:55:49 +03:00
ogamespec
c5aaa0faee GekkoCore::Fetch 2023-08-08 17:46:31 +03:00
ogamespec
1a487d1755 DebugRegs window renames (from GekkoRegs, ambiguous) 2023-08-08 17:07:49 +03:00
ogamespec
fde383a61c CPAbortFifo 2023-08-08 16:34:32 +03:00
ogamespec
15043154a7 PI interrupt passed stats 2023-08-08 15:26:47 +03:00
ogamespec
541f350312
Merge pull request #262 from ogamespec/master
Next VI / Next PE debug commands
2023-08-08 13:23:34 +03:00
ogamespec
2a2f446d09 Next VI / Next PE debug commands 2023-08-08 13:23:06 +03:00
ogamespec
543536c565 gekkocore_icon 2023-08-08 12:35:03 +03:00
ogamespec
b999171f38 Wiki 2023-08-08 12:33:10 +03:00
ogamespec
80fe587fa5
Merge pull request #261 from ogamespec/master
UI cleanup
2023-08-08 11:59:13 +03:00
ogamespec
d02a4eef3a ui cleanup 2023-08-08 11:13:52 +03:00
ogamespec
b0d54ba172 AD16 note 2023-08-08 09:20:56 +03:00
ogamespec
cc29db5483
Merge pull request #260 from ogamespec/master
wiki stub
2023-08-08 08:54:36 +03:00
ogamespec
6cc5e4b751 Update README.md 2023-08-08 08:53:43 +03:00
ogamespec
535273ff28 wiki 2023-08-08 08:52:05 +03:00
ogamespec
882803dced
Merge pull request #259 from ogamespec/master
BS2 PAL Revision boot
2023-08-07 22:52:03 +03:00
ogamespec
a660bbc2f0 progress_bs2 2023-08-07 22:51:33 +03:00
ogamespec
d0dff77062 Update DebuggerJdi.json 2023-08-07 22:33:30 +03:00
ogamespec
e8d9a28ff7
Merge pull request #258 from ogamespec/master
Fixed short ARAM DMA issue
2023-08-07 20:44:33 +03:00
ogamespec
22728acac9 write_intsr clear only RW bits 2023-08-07 20:17:31 +03:00
ogamespec
6cf12ca3d0 Update dsp.h 2023-08-07 19:16:32 +03:00
ogamespec
3ff43fe52e Fixed short ARAM DMA issue 2023-08-07 19:15:52 +03:00
ogamespec
8fb72648a7 Update dsp.h 2023-08-07 18:26:37 +03:00
ogamespec
7d11ff0ba4 Fixed numerous debug messages 2023-08-07 18:22:04 +03:00
ogamespec
826c90bf66 PI cleanup 2023-08-07 16:48:32 +03:00
ogamespec
ba85714e70 Removed .bin files support, removed RSW hack 2023-08-07 15:34:44 +03:00
ogamespec
6eed1582b1
Merge pull request #257 from ogamespec/master
warnings
2023-08-07 14:36:58 +03:00
ogamespec
6e1dcab2cf warnings 2023-08-07 14:36:33 +03:00
ogamespec
a0bc04c994
Merge pull request #256 from ogamespec/master
gfx fixes
2023-08-07 14:23:00 +03:00
ogamespec
1c75be4fd4 progress_ikaruga 2023-08-07 14:22:22 +03:00
ogamespec
fea1a1e86a fix texgen 2023-08-07 14:09:09 +03:00
ogamespec
34d0a5e704 gfx fixes 2023-08-07 13:51:53 +03:00
ogamespec
80c75d91cf
Merge pull request #255 from ogamespec/master
Fifo fixes after refactoring
2023-08-07 13:02:29 +03:00
ogamespec
35576a80e0 fifo fix 2023-08-07 12:58:55 +03:00
ogamespec
f2522e2941 fifo fix 2023-08-07 12:45:55 +03:00
ogamespec
787e9a37a8
Merge pull request #254 from ogamespec/master
GFX refactoring
2023-08-07 02:28:19 +03:00
ogamespec
664b825240 Removed DolwinVideo 2023-08-07 02:27:22 +03:00
ogamespec
710aca297a Update cp.cpp 2023-08-07 02:25:27 +03:00
ogamespec
99cddc1cbd pe.cpp 2023-08-07 02:09:28 +03:00
ogamespec
c60b39daba xf.cpp 2023-08-07 02:05:58 +03:00
ogamespec
9d800a3d44 su.cpp 2023-08-07 01:26:32 +03:00
ogamespec
d779e1e9a2 cp.cpp 2023-08-07 01:04:48 +03:00
ogamespec
21245d9b34 ras.cpp 2023-08-07 00:30:51 +03:00
ogamespec
a01dae3aa8 GFX refactoring wave 2023-08-06 23:58:03 +03:00
ogamespec
0acaded99e GFX refactoring wave 2023-08-06 23:27:29 +03:00
ogamespec
9a8a8d35b3 Removed static_assert from cp.h 2023-08-06 22:39:07 +03:00
ogamespec
d43ab7e23b CP DrawDone/DrawToken refactoring 2023-08-06 22:35:39 +03:00
ogamespec
937473e5bc GFX refactoring wave 2023-08-06 22:25:24 +03:00
ogamespec
583620d97e GFXEngine/CP notes 2023-08-06 21:20:07 +03:00
ogamespec
d5f0eb1ff9 GFX refactoring wave 2023-08-06 21:00:09 +03:00
ogamespec
47b7915f10 DolwinVideo cleanup 2023-08-06 18:45:07 +03:00
ogamespec
41c2f6c372
Merge pull request #253 from ogamespec/master
Portable debugui.cpp
2023-08-06 15:08:02 +03:00
ogamespec
dc4afc4cc1 Portable debugui.cpp 2023-08-06 15:06:06 +03:00
ogamespec
ad35693de5 Debugger F-keys in help 2023-08-06 13:07:37 +03:00
ogamespec
4b2a9db015
Merge pull request #252 from ogamespec/master
DSP small refactoring and notes
2023-08-05 10:17:05 +03:00
ogamespec
bc98452e6c DSP small refactoring and notes 2023-08-05 10:16:32 +03:00
ogamespec
17859b2b8f
Merge pull request #251 from ogamespec/master
threads command
2023-08-05 09:32:02 +03:00
ogamespec
788f858635 threads command 2023-08-05 09:31:19 +03:00
ogamespec
37938a4e4d
Merge pull request #250 from ogamespec/master
Removed old GX code (integrated in core)
2023-08-04 19:36:11 +03:00
ogamespec
24d1fc1e93 MX bootrom chip EXI transfer moved to bootrtc.cpp 2023-08-04 19:35:26 +03:00
ogamespec
8cc28373fa removed old GX code (integrated in core) 2023-08-04 18:46:16 +03:00
ogamespec
2d006f33d4 Stabilizing GFX 2023-08-04 18:44:33 +03:00
ogamespec
8ca466de82
Merge pull request #248 from ogamespec/master
pong.dol -> build
2023-08-03 21:36:58 +03:00
ogamespec
5705b8f786 pong.dol -> build 2023-08-03 21:34:24 +03:00
ogamespec
a0b61188d8
Merge pull request #247 from ogamespec/master
tabs
2023-08-03 17:20:07 +03:00
ogamespec
27258d4b3b tabs 2023-08-03 17:12:01 +03:00
ogamespec
473e927812 tabs 2023-08-03 17:07:21 +03:00
ogamespec
584eb2f61d tabs 2023-08-03 17:03:50 +03:00
ogamespec
d80d51b8c9 tabs 2023-08-03 16:58:00 +03:00
ogamespec
208dae53b2
Merge pull request #246 from ogamespec/master
Linux build
2023-08-03 15:17:06 +03:00
ogamespec
e9f95caf04 Update uisimple.cpp 2023-08-03 15:16:09 +03:00
ogamespec
88338f5a32 linux build 2023-08-03 15:15:22 +03:00
ogamespec
c3af5d6d18 linux build 2023-08-03 14:36:39 +03:00
ogamespec
080c914f18 linux build 2023-08-03 14:25:04 +03:00
ogamespec
d395454093
Merge pull request #245 from ogamespec/master
Refactoring is complete
2023-08-03 12:25:17 +03:00
ogamespec
f8ea5343b3 Clean solution 2023-08-03 12:23:17 +03:00
ogamespec
c1e763dcc4 cleanup 2023-08-03 12:19:53 +03:00
ogamespec
09e92b055b Readmes 2023-08-03 12:11:30 +03:00
ogamespec
c4ffb43fac cleanup 2023-08-03 12:05:38 +03:00
ogamespec
06a8cd00e2 jdi fixes 2023-08-03 11:27:41 +03:00
ogamespec
416d55242a first run 2023-08-03 11:16:08 +03:00
ogamespec
d066c01fe1 Data -> build 2023-08-03 10:50:07 +03:00
ogamespec
9c03b5dbeb compiled 2023-08-03 10:48:14 +03:00
ogamespec
bcf9a24fa3 thirdparty compiled 2023-08-03 10:18:21 +03:00
ogamespec
0865159dcc
Merge pull request #244 from ogamespec/master
Refactoring Wave
2023-08-03 02:53:43 +03:00
ogamespec
d9dcd53e67 Update README.md 2023-08-03 02:52:33 +03:00
ogamespec
bb56122df1 DolwinVideo -> thirdparty 2023-08-03 02:40:02 +03:00
ogamespec
4304f7dac2 Update pch.h 2023-08-03 02:29:48 +03:00
ogamespec
fc1406dea6 HLE subsystem refactoring 2023-08-03 02:24:56 +03:00
ogamespec
9452ce934a Update pch.h 2023-08-03 02:12:57 +03:00
ogamespec
dbc2d9956f audionull.cpp 2023-08-03 02:02:04 +03:00
ogamespec
47bf9207c5 main.cpp 2023-08-03 01:57:59 +03:00
ogamespec
6b7b3c02b7 dvd.cpp 2023-08-03 01:48:53 +03:00
ogamespec
084da6e5fd debugui.cpp 2023-08-03 01:37:23 +03:00
ogamespec
ccf335fba0 ui.cpp 2023-08-03 01:15:56 +03:00
ogamespec
33a5e708b5 refactor wave 2023-08-03 00:08:20 +03:00
ogamespec
9fff18d1c4 refactor wave 2023-08-03 00:01:45 +03:00
ogamespec
0a8235e3fa refactor wave 2023-08-02 23:43:02 +03:00
ogamespec
fa6fb1994c thirdparty 2023-08-02 23:13:22 +03:00
ogamespec
ceaded68cc ThirdParty->thirdparty 2023-08-02 23:12:54 +03:00
ogamespec
f076bcc0e3 refactoring wave 2023-08-02 23:11:35 +03:00
ogamespec
7b049dafcd refactoring wip 2023-08-02 22:12:08 +03:00
ogamespec
0532fd25e4 refactoring 2023-08-02 22:07:39 +03:00
ogamespec
334e5f21be Readme 2023-08-02 22:04:17 +03:00
ogamespec
3404d6b85c
Merge pull request #243 from ogamespec/master
Linux build
2022-11-23 16:00:26 +03:00
ogamespec
56250830c0 Linux build 2022-11-23 16:00:10 +03:00
ogamespec
6e8639efa0
Merge pull request #242 from ogamespec/master
Playground VS2022
2022-11-23 15:48:59 +03:00
ogamespec
c774284327 Playground VS2022 2022-11-23 15:46:26 +03:00
ogamespec
57d64f52a3
Merge pull request #241 from ogamespec/master
GekkoCore tweaking
2022-11-23 15:08:57 +03:00
ogamespec
2130db4bc8 GekkoCore tweaking 2022-11-23 15:08:08 +03:00
ogamespec
15f4a3a3f2 Switched to VS2022 2022-11-23 14:24:09 +03:00
ogamespec
c6f0eccf65
Merge pull request #240 from ogamespec/master
Update Jitc.cpp
2022-02-10 22:12:23 +03:00
ogamespec
0a717c86b0 Update Jitc.cpp 2022-02-10 21:46:38 +03:00
ogamespec
4c44d7690c
Merge pull request #239 from ogamespec/master
Fixed Jitc::Invalidate
2022-02-10 21:39:02 +03:00
ogamespec
df7d5ea673 Fixed Jitc::Invalidate 2022-02-10 21:38:41 +03:00
ogamespec
a0101d7952
Merge pull request #238 from ogamespec/master
Replaced unordered_map to indexed array for JITC
2022-02-10 21:15:14 +03:00
ogamespec
7d99ec52e3 Replaced unordered_map to indexed array for JITC 2022-02-10 21:14:50 +03:00
ogamespec
38b3252b92
Merge pull request #237 from ogamespec/master
Less anal - more fun
2022-02-10 20:09:31 +03:00
ogamespec
e8334f71b7 Less anal - more fun 2022-02-10 19:59:27 +03:00
ogamespec
c5c2f75998
Merge pull request #236 from ogamespec/master
MnAnalyze -> MnDecoder
2022-02-10 19:55:59 +03:00
ogamespec
7accb5be6c MnAnalyze -> MnDecoder 2022-02-10 19:55:36 +03:00
ogamespec
cab82982d4 MN102 Decoder 2022-02-10 19:54:03 +03:00
ogamespec
ffa4ddbeb0 DSP DecoderInfo in class instance 2022-02-10 19:52:11 +03:00
ogamespec
50fbce7a0b
Merge pull request #235 from ogamespec/master
DecoderInfo in class instance
2022-02-10 19:47:44 +03:00
ogamespec
c046f70c28 DecoderInfo in class instance 2022-02-10 19:47:19 +03:00
ogamespec
5cab80074e
Merge pull request #234 from ogamespec/master
Small fix in GL_CloseSubsystem
2022-02-10 19:29:47 +03:00
ogamespec
c9d2bca2d1 Small fix in GL_CloseSubsystem 2022-02-10 19:29:30 +03:00
ogamespec
54682a93bb
Merge pull request #233 from ogamespec/master
Rename some structs
2022-02-10 19:01:15 +03:00
ogamespec
3535a711af Small IntelCore rebranding 2022-02-10 18:59:47 +03:00
ogamespec
ed5e1b8b9d GekkoCore small rebranding 2022-02-10 18:53:03 +03:00
ogamespec
fc38a9791c
Merge pull request #232 from ogamespec/master
DSP small rebranding
2022-02-10 18:41:09 +03:00
ogamespec
e0ece3e609 DSP small rebranding 2022-02-10 18:40:46 +03:00
ogamespec
ada4f91b1f Merge branch 'master' of https://github.com/ogamespec/dolwin 2022-02-10 18:30:28 +03:00
ogamespec
7bef63b9fc Abandoned VS2015 projects 2022-02-10 18:30:19 +03:00
ogamespec
8b22c554bd
Merge pull request #231 from ogamespec/master
Merge branch '3-gekko-jitc64'
2022-02-10 18:23:06 +03:00
ogamespec
8840183f3c Merge branch '3-gekko-jitc64' 2022-02-10 18:22:22 +03:00
ogamespec
38f9ac5351 Projects 2022-01-26 22:48:09 +03:00
ogamespec
7aaa864f90
Merge pull request #230 from ogamespec/3-gekko-jitc64
Fixed jitc x64 common prolog/epilog (spl -> rsp)
2021-07-25 22:37:43 +03:00
ogamespec
ed8f4ee94f Fixed jitc x64 common prolog/epilog (spl -> rsp) 2021-07-25 19:11:57 +03:00
ogamespec
2da0c95de9
Merge pull request #229 from ogamespec/3-gekko-jitc64
Implemented missing FPU/PS instructions
2021-07-25 16:51:02 +03:00
ogamespec
9c5c1200f9 The cache now has access to the core 2021-07-25 16:48:26 +03:00
ogamespec
49c68158c1 Implemented missing FPU/PS instructions 2021-06-18 01:58:29 +03:00
ogamespec
8b6608c285
Merge pull request #228 from ogamespec/3-gekko-jitc64
Gekko gather buffer auto-retire support
2021-06-18 01:16:59 +03:00
ogamespec
8254a98902 Update Gekko.h 2021-06-18 01:15:04 +03:00
ogamespec
502d6c5dc0 Gekko address reservation facility 2021-06-18 00:32:37 +03:00
ogamespec
47900a94da Update GatherBuffer.cpp 2021-06-18 00:17:14 +03:00
ogamespec
c552e2d4c7 Made set/reset XER macros as private methods 2021-06-18 00:15:57 +03:00
ogamespec
9f31b32e03 GatherBuffer retire 2021-06-17 23:56:54 +03:00
ogamespec
d401f0b2df
Merge pull request #227 from ogamespec/3-gekko-jitc64
Removed asm modules
2021-06-17 23:04:04 +03:00
ogamespec
982fa8e456 Update System.cpp 2021-06-17 23:03:07 +03:00
ogamespec
6a1b4899cc Removed asm modules 2021-06-17 22:44:42 +03:00
ogamespec
940692948d
Merge pull request #226 from ogamespec/3-gekko-jitc64
Cumulative fixes based on GekkoCore unit test results
2021-06-17 22:23:46 +03:00
ogamespec
a829855612 Minor changes 2021-06-17 22:20:56 +03:00
ogamespec
3d35bee949 FullAdder 2021-06-17 22:15:27 +03:00
ogamespec
01fb84caed Reworked interpreter add/sub instructions 2021-06-17 21:44:55 +03:00
ogamespec
9e1ebb1ba4 Update Rotate.cpp 2021-06-17 17:11:46 +03:00
ogamespec
ec91d58b83 Removed unneded macros 2021-06-17 16:34:48 +03:00
ogamespec
404e2c7e5f Simplified FP store single instructions 2021-06-16 23:33:38 +03:00
ogamespec
395e1b75aa Small fix in Json parser 2021-06-16 22:55:09 +03:00
ogamespec
3dd27211c2 Implemented missing opcodes lswx, stswx 2021-06-16 21:50:57 +03:00
ogamespec
a09c29be8f GekkoAssembler lwzux fixed 2021-06-16 20:49:47 +03:00
ogamespec
c4d1df7517 Removed ambigious ReadHalfS 2021-06-16 19:02:15 +03:00
ogamespec
508cf694b7 Update GekkoDisasm.cpp 2021-06-16 18:46:25 +03:00
ogamespec
7ffbe8567e Gekko mcrf fixed 2021-06-16 18:23:52 +03:00
ogamespec
8d4530eb11 Jitc tuning for GekkoIsaTest 2021-06-16 13:55:21 +03:00
ogamespec
8e5f5f927c
Merge pull request #225 from ogamespec/3-gekko-jitc64
Cumulative changes in JITC development.
2021-06-16 13:26:15 +03:00
ogamespec
3140602cbd More Gekko->core 2021-06-16 13:22:37 +03:00
ogamespec
11fe79d74b Removed ExecuteOpcodeDirect, simplifed SPR access 2021-06-16 13:09:39 +03:00
ogamespec
ffe7b64c20 Update JitcPairedSingle.cpp 2021-06-15 23:37:53 +03:00
ogamespec
1e945ad190 Friended DspUnitTest 2021-06-15 14:25:16 +03:00
ogamespec
818a5b7bda Update Fallback.cpp 2021-06-08 19:17:57 +03:00
ogamespec
dd8460e331 Easy to read Jitc::FallbackStub 2021-06-08 19:16:09 +03:00
ogamespec
03b96c5823 A more easy-to-read Common.cpp 2021-06-08 18:28:45 +03:00
ogamespec
d4a4bdadcb JitcEnabled command 2021-06-08 15:12:19 +03:00
ogamespec
01a49dd36a JitcX86 stub 2021-06-08 14:58:13 +03:00
ogamespec
5b01a8501c Fixed sraw. opcode 2021-06-08 12:42:33 +03:00
ogamespec
0db984b4a8 Updated GekkoCore Readme 2021-05-28 11:59:56 +03:00
ogamespec
503cb95830 Shrinked new interpreter source code by GPR macro 2021-05-27 23:14:12 +03:00
ogamespec
30c34b2dbd Temporary disabled psq_l 2021-05-27 21:46:41 +03:00
ogamespec
021dd5d374
Merge pull request #224 from ogamespec/3-gekko-jitc64
Gekko assembler quick helpers
2021-05-27 20:56:35 +03:00
ogamespec
68bbe08d99 GekkoAssembler paired singles 2021-05-27 20:54:54 +03:00
ogamespec
7cbfa72d19 GekkoAssembler quick helpers part 2 2021-05-27 20:37:46 +03:00
ogamespec
7b8bb5d4ef Quick helpers (1) 2021-05-27 19:51:26 +03:00
ogamespec
b049ba271e GekkoAssembler quick helpers defs 2021-05-27 15:06:22 +03:00
ogamespec
257b368598
Merge pull request #222 from ogamespec/198-fpu-codegen
FPU assembler done
2021-05-27 13:15:26 +03:00
ogamespec
63f005fc9e Fixed 0x67 prefix for ProcessFpuInstr 2021-05-27 13:13:05 +03:00
ogamespec
33a02d471e ProcessFpuInstr 2021-05-27 12:46:55 +03:00
ogamespec
b31bebbe42 Macro for enabling a simple MMU 2021-05-27 11:25:39 +03:00
ogamespec
3c093e4e8c FPU instructions quick helpers 2021-05-27 10:58:20 +03:00
ogamespec
69cf049a55
Merge pull request #221 from ogamespec/198-fpu-codegen
x87 FPU Instructions WIP
2021-05-26 23:34:20 +03:00
ogamespec
d4efd6e31c FPU Control and State Management instr 2021-05-26 23:12:13 +03:00
ogamespec
696dcf7496 FPU Load Constants instructions 2021-05-26 22:04:59 +03:00
ogamespec
83c4da415f FPU Comparison, Transcendental instructions 2021-05-26 21:48:56 +03:00
ogamespec
6a046c0407 FPU Data Transfer and Basic Arithmetic instructions definitions/features 2021-05-26 20:38:13 +03:00
ogamespec
7bb865c0df Simplified FPU assembler framework 2021-05-22 21:10:04 +03:00
ogamespec
3cc9eb170d A basic framework for assembling x87 instructions. 2021-05-22 19:45:10 +03:00
ogamespec
893c2ca069 Read Intel manual one more time, extract all FPU instructions, add them to the Readme and check that they match the AnalyzeInfo header 2021-05-22 16:40:13 +03:00
ogamespec
0d66f84b77 Rlwinm small optimize on mask 2021-05-19 21:46:53 +03:00
ogamespec
ec0941c891
Merge pull request #220 from ogamespec/104-jitc-debug
Jitc debug commands and stats in UI
2021-05-19 18:54:14 +03:00
ogamespec
502641cfc3 JitCommands 2021-05-19 18:51:45 +03:00
ogamespec
22d6d307cf Displaying JITC statistics in the status 2021-05-19 17:05:40 +03:00
ogamespec
edbbc658e3 UserSelector.cpp fix warning 2021-05-19 14:24:28 +03:00
ogamespec
f8fac17849 Added IntelCore to linkage 2021-05-19 13:50:13 +03:00
ogamespec
09a80674b5 Removed module base 0x400'000, will need to redo the VMCall opcode and HLE Stubs.
- CMake for IntelCore
2021-05-19 13:27:29 +03:00
ogamespec
cb24b62b31
Merge pull request #219 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler Layer1 completed
2021-05-11 17:51:45 +03:00
ogamespec
7eabc236bb Update Readme.md 2021-05-11 17:50:35 +03:00
ogamespec
d32f108453 PUSH Sreg, POP Sreg, RET, RETF 2021-05-11 17:39:38 +03:00
ogamespec
86db5fdadc MOV CR/DR/TR 2021-05-11 17:06:20 +03:00
ogamespec
78867f4d19 Jcc, JCXZ/JECXZ/JRCXZ, LOOP, LOOPZ/LOOPE, LOOPNZ/LOOPNE 2021-05-11 15:38:01 +03:00
ogamespec
7d7ded9597 BSWAP, IN, INT n, OUT 2021-05-11 13:34:27 +03:00
ogamespec
80862fb23d Jitc::Rlwinm using IntelAssembler 2021-05-11 11:14:15 +03:00
ogamespec
ff1154561d
Merge pull request #218 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP
2021-05-10 23:37:10 +03:00
ogamespec
3451876e30 XADD, XCHG, XOR 2021-05-10 23:36:10 +03:00
ogamespec
5362106309 TEST, UD0, UD1 2021-05-10 22:35:02 +03:00
ogamespec
f58fd3bee7 SUB 2021-05-10 22:18:36 +03:00
ogamespec
4d078840dd SGDT, SHL, SHLD, SHR, SHRD, SIDT, SLDT, SMSW, STR 2021-05-10 20:34:13 +03:00
ogamespec
31ac71bc0c
Merge pull request #217 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP
2021-05-10 00:28:14 +03:00
ogamespec
d581f04877 SETcc 2021-05-10 00:26:05 +03:00
ogamespec
01b887a672 SBB 2021-05-09 21:45:47 +03:00
ogamespec
fc0b2dc53f RCL, RCR, ROL, ROR, SAL, SAR 2021-05-09 21:39:04 +03:00
ogamespec
086b9d3d46 NOT, OR, POP, PUSH 2021-05-09 19:06:51 +03:00
ogamespec
0000d65a3a Multibyte NOP 2021-05-09 17:57:58 +03:00
ogamespec
f619dfd5d4 MUL 2021-05-09 16:44:03 +03:00
ogamespec
a512ac366b MOVSX, MOVSXD, MOVZX 2021-05-09 16:21:41 +03:00
ogamespec
ad5a988b15 MOVBE 2021-05-09 14:46:47 +03:00
ogamespec
77541bc03c
Merge pull request #214 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler: MOV instruction
2021-05-04 23:14:32 +03:00
ogamespec
cd294e5e41 Boss defeated, achievement unlocked 2021-05-04 23:13:21 +03:00
ogamespec
f63267c741 Combining Sreg with MR/RM forms was a bad idea. Made separate forms for them (MSr/SrM) 2021-05-04 22:08:41 +03:00
ogamespec
5d11c1f629 The tough battle with MOV continues 2021-05-04 21:47:14 +03:00
ogamespec
f7b831f701 PtrHint for mov 2021-05-04 20:37:37 +03:00
ogamespec
83e03394e5 Fighting with x86 boss (MOV instruction) 2021-05-04 20:00:20 +03:00
ogamespec
0d225e1631 Update Readme.md 2021-05-03 23:29:34 +03:00
ogamespec
f1bff577bc Update Readme.md 2021-05-03 23:25:44 +03:00
ogamespec
075cd7181b Update Readme.md 2021-05-03 23:19:45 +03:00
ogamespec
ed5543655a
Merge pull request #213 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP
2021-05-03 23:04:55 +03:00
ogamespec
7c9c71bc8b VERR, VERW 2021-05-03 22:58:19 +03:00
ogamespec
0468f3d41a LLDT, LMSW, LSL, LSS, LTR 2021-05-03 22:54:42 +03:00
ogamespec
da7fb24b9c LGDT, LGS, LIDT 2021-05-03 21:14:21 +03:00
ogamespec
93f59ec850 LES, LFS 2021-05-03 17:32:22 +03:00
ogamespec
cc0d8e94ce LEA 2021-05-03 17:24:30 +03:00
ogamespec
30c511adfe LDS 2021-05-03 17:20:00 +03:00
ogamespec
19118d3446 LAR 2021-05-03 17:07:36 +03:00
ogamespec
d2286cc807 JMP, JMP far 2021-05-03 16:45:35 +03:00
ogamespec
b034aabc95 INVPCID 2021-05-03 16:23:22 +03:00
ogamespec
ac602452d1 INVLPG 2021-05-03 15:47:15 +03:00
ogamespec
38b8bb4591 INC 2021-05-03 15:25:19 +03:00
ogamespec
d8e01f7d19 IMUL 2021-05-03 15:09:08 +03:00
ogamespec
376a5595a4 DIV, IDIV 2021-04-28 23:57:41 +03:00
ogamespec
6d60977727
Merge pull request #212 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP
2021-04-28 23:14:16 +03:00
ogamespec
1d00a3aa44 DEC 2021-04-28 23:13:07 +03:00
ogamespec
98909332b5 CMP, CMPXCHG 2021-04-28 21:53:26 +03:00
ogamespec
3343a893d2 CALL 2021-04-28 16:41:16 +03:00
ogamespec
f41ceaa064
Merge pull request #211 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP (more GP instructions)
2021-04-27 23:45:07 +03:00
ogamespec
6e07c33ff7 pause in spinlock 2021-04-27 23:16:17 +03:00
ogamespec
b23d548d83 Update IntelAssembler.cpp 2021-04-27 22:57:33 +03:00
ogamespec
aeb4d35581 BSF, BSR, BT, BTC, BTR, BTS 2021-04-27 22:36:51 +03:00
ogamespec
e537c6a8cf ARPL, BOUND 2021-04-27 20:03:10 +03:00
ogamespec
7700975ba0 ADD, AND 2021-04-27 15:19:32 +03:00
ogamespec
2316e4f315
Merge pull request #210 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler ModRM quick fixes
2021-04-27 14:18:17 +03:00
ogamespec
ea9c868df5 Fixed prefix 0x66 for imm16 in 32-bit mode 2021-04-27 14:02:42 +03:00
ogamespec
a035f4a576 Fixed simm8 with prefix 0x66 2021-04-27 13:27:29 +03:00
ogamespec
7638285f37
Merge pull request #209 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP
2021-04-27 12:24:35 +03:00
ogamespec
8891df9f18 IntelAssembler::HandleModRmImm 2021-04-27 12:21:31 +03:00
ogamespec
8f83b4b2ed Fixed REX_W 2021-04-27 11:07:09 +03:00
ogamespec
a5d5a555eb Prepared for Form_MI 2021-04-26 23:52:14 +03:00
ogamespec
df7d9acc0b Form_MI_Opcode_SImm8 2021-04-26 23:36:18 +03:00
ogamespec
44152fc5e1 Param::simm8 2021-04-26 23:35:11 +03:00
ogamespec
7e5de9990c Check registers match size 2021-04-26 22:11:09 +03:00
ogamespec
f8d455665b Fixed ModRM handling for long mode and adc parameters 2021-04-26 21:12:02 +03:00
ogamespec
a0b0772226
Merge pull request #208 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP
2021-04-26 18:56:18 +03:00
ogamespec
48a036c1bb Fixed bug with rexRequired 2021-04-26 18:27:11 +03:00
ogamespec
e6e5839e42 Update IntelAssembler.cpp 2021-04-26 17:37:40 +03:00
ogamespec
2f4e0d6dd8 AddressPrefix handling 2021-04-26 17:08:39 +03:00
ogamespec
5bf4d7799c IntelAssembler::HandleModRegRm 2021-04-26 16:42:18 +03:00
ogamespec
22193285c4 IntelAssembler::ProcessGpInstr 2021-04-26 14:55:58 +03:00
ogamespec
6a149b61d8 Added missing cases to IntelAssembler::IsMemDisp32 2021-04-26 11:06:32 +03:00
ogamespec
752615ae4e
Merge pull request #207 from ogamespec/197-powerpc-intel-amd-codegen
RnD moved to standalone repository
2021-04-26 09:54:29 +03:00
ogamespec
65fcc30677 Merge branch 'master' into 197-powerpc-intel-amd-codegen 2021-04-26 09:52:56 +03:00
ogamespec
e9b8067dae RnD moved 2021-04-26 09:51:18 +03:00
ogamespec
62b39c552c IntelAssembler::GetReg for long mode 2021-04-25 23:21:07 +03:00
ogamespec
894eb4f9b9
Merge pull request #206 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler Unit Test
2021-04-25 22:16:05 +03:00
ogamespec
907578030c TEST_METHOD SIB_mechanism 2021-04-25 22:07:18 +03:00
ogamespec
00c28817dc IntelAssembler::GetRm, GetIndex, GetBase, IsSpecial 2021-04-25 21:44:41 +03:00
ogamespec
d1a7e27718 IntelAssembler::GetMod 2021-04-25 20:18:22 +03:00
ogamespec
5c8cb59b89 SIB scale handling 2021-04-25 13:25:43 +03:00
ogamespec
dec0a16d59 Simplified IsMemDisp8 and IsMemDisp32 2021-04-25 13:05:46 +03:00
ogamespec
3a40928a86 Updated various tests 2021-04-24 18:25:14 +03:00
ogamespec
ac81be74b9 Reanimated GekkoCoreUnitTest 2021-04-24 17:40:13 +03:00
ogamespec
d9851eb204 IntelAssembler UnitTest 2021-04-24 17:20:05 +03:00
ogamespec
2d2df23289
Merge pull request #205 from ogamespec/197-powerpc-intel-amd-codegen
IntelAssembler WIP
2021-04-20 21:27:49 +03:00
ogamespec
773ffc36b4 Update Dolwin_Quick_Start.md 2021-04-20 20:34:29 +03:00
ogamespec
771f706044 Update Json.h 2021-04-20 20:19:56 +03:00
ogamespec
c78b41bdc1 Null backends readme 2021-04-20 20:03:00 +03:00
ogamespec
61c3c0504d Update README.md 2021-04-20 19:57:17 +03:00
ogamespec
650f3fd04d Doxyfile update 2021-04-20 19:56:29 +03:00
ogamespec
7ed546cc44 Fix warnings for x86 2021-04-20 19:34:51 +03:00
ogamespec
b1ba1e5298 Readme update 2021-04-20 19:10:31 +03:00
ogamespec
ae8ef2272b IsMemDisp utility 2021-04-20 18:49:43 +03:00
ogamespec
dd0e8925e9 Fixed IsMemDisp8/32 for long mode 2021-04-20 18:41:37 +03:00
ogamespec
c9f2078038 Update IntelAnalyzer.h 2021-04-20 14:27:49 +03:00
ogamespec
f02aae14e7 Update IntelAnalyzer.h 2021-04-20 14:25:23 +03:00
ogamespec
612a239dff Long Mode param 2021-04-20 13:56:47 +03:00
ogamespec
34fa823d93
Merge pull request #204 from ogamespec/197-powerpc-intel-amd-codegen
x86/x64 code generator WIP
2021-04-13 23:20:53 +03:00
ogamespec
437e49185f Minor 2021-04-13 23:19:19 +03:00
ogamespec
0840914edf ModRM in Readme 2021-04-13 23:06:02 +03:00
ogamespec
b42eb8c1e5 Simplified string opcodes 2021-04-13 22:43:07 +03:00
ogamespec
cf659213e5 Multibyte instructions compile prefixes correctly. 2021-04-13 22:24:39 +03:00
ogamespec
ea9a39a316 Removed Tables.cpp 2021-04-11 20:57:16 +03:00
ogamespec
facc01f294
Merge pull request #203 from ogamespec/197-powerpc-intel-amd-codegen
x86/x64 code generator WIP
2021-04-08 23:29:41 +03:00
ogamespec
74c14e58d2 CMPSB/CMPSW/CMPSD/CMPSQ, LODSB/LODSW/LODSD/LODSQ, MOVSB/MOVSW/MOVSD/MOVSQ, SCASB/SCASW/SCASD/SCASQ, STOSB/STOSW/STOSD/STOSQ, INSB/INSW/INSD, OUTSB/OUTSW/OUTSD 2021-04-08 23:26:04 +03:00
ogamespec
4acd5eb9e7 POPA, POPAD, POPF, POPFD, POPFQ, PUSHA, PUSHAD, PUSHF, PUSHFD, PUSHFQ 2021-04-08 22:23:35 +03:00
ogamespec
5951efb683 VS2015 projects updated 2021-04-08 21:23:19 +03:00
ogamespec
dcc88c2af9 Update IntelAssembler.cpp 2021-04-08 21:15:05 +03:00
ogamespec
f3655c62e9 CPUID, DAA, DAS, HLT, INT3, INTO, INT1, INVD, IRET, IRETD, IRETQ, LAHF, SAHF, LEAVE, NOP, RDMSR, RDPMC, RDTSC, RDTSCP, RSM, SWAPGS, SYSCALL, SYSRET, SYSRETQ, UD2, WAIT, WBINVD, WRMSR, XLAT/XLATB 2021-04-08 21:14:32 +03:00
ogamespec
1c400fccb4 CLC, CLD, CLI, CLTS, CMC, STC, STD, STI 2021-04-08 20:21:31 +03:00
ogamespec
060a7ceb9d CBW, CWDE, CDQE, CWD, CDQ, CQO 2021-04-08 19:59:27 +03:00
ogamespec
c51d0cf297 IntelAssembler::aad 2021-04-08 16:58:40 +03:00
ogamespec
208d6c05d9 CodeSegment Write for AnalyzeInfo 2021-04-08 16:38:42 +03:00
ogamespec
4fb07f277f More comments 2021-04-08 15:42:48 +03:00
ogamespec
f6492d28a8 IntelAssembler skeleton 2021-04-08 15:28:19 +03:00
ogamespec
d6ef62a1ef Cleaned InterpreterPrivate header from old stuff 2021-04-08 13:59:52 +03:00
ogamespec
dcb51d9dd6 Update Readme.md 2021-04-08 13:10:48 +03:00
ogamespec
2f1fc5cff4 Rake some more instruction categories 2021-04-08 13:08:29 +03:00
ogamespec
2a4edb0211 64-bit mode instructions 2021-04-08 12:06:09 +03:00
ogamespec
40c2d99606 Update Readme.md 2021-04-08 11:47:33 +03:00
ogamespec
22273d7c43 AnalyzeInfo struct 2021-04-08 11:41:55 +03:00
ogamespec
70e1a86042 GatherBuffer uses core 2021-04-07 17:06:40 +03:00
ogamespec
c335673edb Fixed mips stats in Jitc 2021-04-07 16:49:07 +03:00
ogamespec
1f11365d8e Update Readme.md 2021-04-07 14:35:31 +03:00
ogamespec
0be120e569 Fused-Multiply-ADD (FMA) 2021-04-06 19:38:58 +03:00
ogamespec
230ebc9c37 List of Intel instructions 2021-04-06 18:08:24 +03:00
ogamespec
10bf32bd3a More module dummies 2021-04-06 13:37:07 +03:00
ogamespec
1498cd4776 IntelCore initial commit 2021-04-06 13:09:44 +03:00
ogamespec
166aef23d7 Tabs 2021-04-06 12:22:48 +03:00
ogamespec
3c4b2533a8
Merge pull request #196 from ogamespec/190-new-interpreter
190 new interpreter
2021-04-04 20:02:59 +03:00
ogamespec
6362f40d4e System Instructions 2021-04-04 20:00:36 +03:00
ogamespec
08ee9cea47 Logical Instructions 2021-04-04 19:17:29 +03:00
ogamespec
4c9cc5ab81 Integer Instructions 2021-04-04 18:44:09 +03:00
ogamespec
2f269445ce Integer Load and Store Instructions 2021-04-04 17:49:40 +03:00
ogamespec
33fb0c54cb Floating-Point Load and Store Instructions 2021-04-04 16:42:36 +03:00
ogamespec
9d22899d06 Floating-Point Instructions 2021-04-04 16:12:34 +03:00
ogamespec
c6b33a52b8 Paired Single Load and Store Instructions 2021-04-04 14:59:21 +03:00
ogamespec
3125388e23 Tabs 2021-04-04 12:58:29 +03:00
ogamespec
723aa668ae Update PI.h 2021-04-03 00:32:44 +03:00
ogamespec
01835532c2
Merge pull request #195 from ogamespec/190-new-interpreter
Reworked memory access as needed
2021-04-03 00:30:19 +03:00
ogamespec
1cf39ca72c In previous versions, this functionality was mistakenly located in the MI module. 2021-04-03 00:04:14 +03:00
ogamespec
60210691ae
Merge pull request #194 from ogamespec/190-new-interpreter
190 new interpreter
2021-04-02 23:28:11 +03:00
ogamespec
bb680c808d Paired Single Instructions 2021-04-02 23:25:03 +03:00
ogamespec
7acd6acf8d Update UserAbout.cpp 2021-04-02 22:29:37 +03:00
ogamespec
fb260df5ed Update Dolwin.rc 2021-04-02 22:28:50 +03:00
ogamespec
d7236f1081 Readme fixes 2021-04-02 22:27:44 +03:00
ogamespec
a78d2591db Tabs 2021-04-02 22:22:08 +03:00
ogamespec
9bf1d46f43 Branch Instructions 2021-04-02 22:19:12 +03:00
ogamespec
f908fb9bed Condition Register Logical Instructions 2021-04-02 21:43:14 +03:00
ogamespec
d0fee4aa5f Integer Shift Instructions 2021-04-02 21:27:44 +03:00
ogamespec
656ca6ab43 Cleanup InterpreterPrivate 2021-04-02 20:56:50 +03:00
ogamespec
142130d64e Update Interpreter.cpp 2021-04-02 20:36:10 +03:00
ogamespec
7c9d5f68e5 Integer Rotate Instructions 2021-04-02 20:34:11 +03:00
ogamespec
fe5a5d8390 Integer compare instructions 2021-04-02 20:06:38 +03:00
ogamespec
b2d95f9d79 POC for new interpreter 2021-04-02 19:51:24 +03:00
ogamespec
bba69956ee
Merge pull request #193 from ogamespec/191-gekko-assembler
191 gekko assembler
2021-04-02 16:53:28 +03:00
ogamespec
df8c847296 Gekko assembler completed 2021-04-02 16:49:49 +03:00
ogamespec
c5ff5ca027 Paired-Single Floating Point Arithmetic Instructions 2021-04-02 16:22:20 +03:00
ogamespec
979546299d Paired-Single Load and Store Instructions 2021-04-02 16:09:12 +03:00
ogamespec
93f6ea1089 The most creepy FPU instructions in the world 2021-04-02 15:53:45 +03:00
ogamespec
32adfb4dd8 Segment Register / TLB 2021-03-28 23:21:38 +03:00
ogamespec
d335457b74 Processor Control Instructions 2021-03-28 23:03:44 +03:00
ogamespec
23b81a9e0c System / Trap Instructions 2021-03-28 22:44:59 +03:00
ogamespec
6c50267e08 Floating-Point Move Instructions 2021-03-28 22:32:34 +03:00
ogamespec
1e427d3cca FP Load and Store 2021-03-28 22:06:48 +03:00
ogamespec
2d6f9735e0 Integer Load and Store 2021-03-28 21:51:37 +03:00
ogamespec
7bfcbdd1bf Fixed linux build 2021-03-28 20:58:50 +03:00
ogamespec
0a0aa1a75a More Floating-Point 2021-03-28 20:43:14 +03:00
ogamespec
cd92fa5e74 Update Dolwin.rc 2021-03-28 20:28:22 +03:00
ogamespec
b724fb4cad Floating-Point Arithmetic Instructions 2021-03-28 20:13:55 +03:00
ogamespec
df77ba26ed Integer Shift Instructions 2021-03-28 19:58:30 +03:00
ogamespec
b45c60424e Integer Rotate Instructions 2021-03-28 19:51:59 +03:00
ogamespec
d2b8b464a5 Missing instructions before other groups 2021-03-28 19:34:19 +03:00
ogamespec
89456d27eb More integer instructions 2021-03-28 18:00:59 +03:00
ogamespec
1648f2671c Reorganized assembler switch-case a bit 2021-03-28 17:15:38 +03:00
ogamespec
b410346dd8 Update TLB.h 2021-03-28 16:55:59 +03:00
ogamespec
2540ba5a80 More opcodes 2020-11-22 03:04:53 +03:00
ogamespec
e29b86929e Condition opcodes 2020-11-22 01:42:56 +03:00
ogamespec
e1c178ceb1 Compare instructions 2020-11-22 01:18:17 +03:00
ogamespec
5c7b33dad7 Form_BOBI 2020-11-15 22:07:00 +03:00
ogamespec
2f52018adb Form_BranchShort 2020-11-15 21:41:29 +03:00
ogamespec
2e333a1ef3 Fixed Form_BranchLong non-absolute LI calculation 2020-11-15 18:19:35 +03:00
ogamespec
2f497aebb7 GekkoDisasmNoMemAccess command 2020-11-10 20:55:47 +03:00
ogamespec
cc2fb56ade GekkoAssembler wip 2020-11-10 00:50:44 +03:00
ogamespec
ba5168f664 Some notes and thoughts 2020-11-08 23:11:47 +03:00
ogamespec
c704ddb909 More instructions 2020-11-08 22:02:36 +03:00
ogamespec
73c080820c The skeleton of the assembler, then only dig deeper 2020-11-08 20:36:41 +03:00
ogamespec
9e85643a02 GekkoAssemble command 2020-11-08 18:41:16 +03:00
ogamespec
d6091645b6 Merge branch 'master' into 191-gekko-assembler 2020-11-08 18:12:52 +03:00
ogamespec
8ca1df0c6e
Merge pull request #192 from ogamespec/190-new-interpreter
Commands for checking the Gekko analyzer for python
2020-11-08 18:01:13 +03:00
ogamespec
7898d3fa4e Update GekkoAnalyzer.h 2020-11-08 17:59:20 +03:00
ogamespec
8167d5588e GekkoAssembler stub 2020-11-01 02:14:02 +03:00
ogamespec
e30cf9f1d3 Update GekkoAnalyzer.h 2020-10-31 18:16:06 +03:00
ogamespec
93884ba548 Gekko analyzer testing commands 2020-10-31 15:33:19 +03:00
ogamespec
dcec2e8c93 Cleaned Loader a bit 2020-10-31 13:18:52 +03:00
ogamespec
482f8eb688
Merge pull request #189 from ogamespec/57-dolphinsdk-mount-bug
57 dolphinsdk mount bug
2020-10-30 22:41:03 +03:00
ogamespec
034bf67db8 A little tweaking when working with mounting disks for rendering the UI 2020-10-30 22:38:44 +03:00
ogamespec
32c55c2309 Update DolphinSdkDvdData.json 2020-10-30 22:01:55 +03:00
ogamespec
9b94a1178e DvdInfo command improved 2020-10-30 17:30:15 +03:00
ogamespec
32d38831e9
Merge pull request #188 from ogamespec/57-dolphinsdk-mount-bug
57 dolphinsdk mount bug
2020-10-16 23:17:37 +03:00
ogamespec
8f3abe8369 MountSDK log enabler 2020-10-16 23:02:16 +03:00
ogamespec
77fa8d5fa7 DvdRead command improvements 2020-10-16 22:38:49 +03:00
ogamespec
0c0d8ad2c9
Merge pull request #187 from ogamespec/57-dolphinsdk-mount-bug
Minor fixes
2020-10-16 20:46:47 +03:00
ogamespec
65cc8185b1 Update MI.cpp 2020-10-16 15:46:33 +03:00
ogamespec
b010126d1f Update Emulator.cpp 2020-10-16 13:41:21 +03:00
ogamespec
614931aeaf Small fixes 2020-10-06 12:53:29 +03:00
ogamespec
a21d83577f
Merge pull request #186 from ogamespec/57-dolphinsdk-mount-bug
57 dolphinsdk mount bug
2020-09-29 03:05:01 +03:00
ogamespec
cb73b351a2 Update DolphinSdkDvdData.json 2020-09-29 02:56:44 +03:00
ogamespec
97c1e338b1 Preliminary fix for DolphinSDK mount 2020-09-29 01:44:25 +03:00
ogamespec
2a0f3af02b
Merge pull request #185 from ogamespec/57-dolphinsdk-mount-bug
Fixed GX registers bitfield definitions
2020-09-15 17:28:05 +03:00
ogamespec
b6a8c507aa Fixed GX registers bitfield definitions 2020-09-15 17:27:18 +03:00
ogamespec
10e8fb7c52 Update File.cpp 2020-09-11 01:22:08 +03:00
ogamespec
594377d597
Merge pull request #184 from ogamespec/57-dolphinsdk-mount-bug
DolphinSDK mount bug WIP
2020-09-11 01:19:01 +03:00
ogamespec
b9b99a8ce6 BuildFileTree for MountDVD
- Fixed mips counters reset
2020-09-11 01:17:18 +03:00
ogamespec
b55d40b408 Fixed Ubuntu build 2020-09-10 23:26:19 +03:00
ogamespec
9b00e15148
Merge pull request #182 from ogamespec/179-reentrancy-bug
Fixed reentrancy bug
2020-09-09 23:01:36 +03:00
ogamespec
6f80016c99 Fixed reentrancy bug 2020-09-09 22:57:18 +03:00
ogamespec
d4083e9faf Cleanup. DolwinLegacy.exe -> Dolwin.exe 2020-09-09 22:08:58 +03:00
ogamespec
5b8190d8b1
Merge pull request #181 from ogamespec/180-opcode-stats
Gekko opcode statistics
2020-09-09 01:01:09 +03:00
ogamespec
3839689991 Gekko opcode statistics 2020-09-09 01:00:21 +03:00
ogamespec
5be7895e9b More PVS 2020-09-04 22:56:45 +03:00
ogamespec
c71c9d3b19 Update UserSettings.cpp 2020-09-04 22:53:11 +03:00
ogamespec
159414a91d Trying to reanimate SamplingProfiler utility 2020-09-04 22:45:14 +03:00
ogamespec
0e7f266ae9 PVS found some bugs 2020-09-04 14:48:47 +03:00
ogamespec
46421b9809 Cleanup 2020-09-04 14:26:47 +03:00
ogamespec
90653cd249
Merge pull request #178 from ogamespec/177-perf-counters
Performance Counters
2020-09-04 02:28:35 +03:00
ogamespec
b7aeb5827d Portable OSTimeFormat 2020-09-04 02:25:09 +03:00
ogamespec
57bc553261 Update Emulator.h 2020-09-04 00:40:33 +03:00
ogamespec
7505970fd0 Performance counters 2020-09-04 00:26:40 +03:00
892 changed files with 139784 additions and 293213 deletions

16
.gitignore vendored
View file

@ -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
View 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

View file

@ -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)

File diff suppressed because it is too large Load diff

View file

@ -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"
]
}

View file

@ -1,14 +0,0 @@
{
"info": {
"description": "DolwinVideo Commands",
"helpGroup": "DolwinVideo Debug Commands"
},
"can": {
"DumpVat": {
"help": "Dump CommandProcessor VCD/VAT settings"
}
}
}

View file

@ -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"
}
}
}

View file

@ -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

View file

@ -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

View file

@ -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:
![Dolwin_Architecture](https://github.com/ogamespec/dolwin-docs/blob/master/EMU/DolwinArchitecture.png)
## 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.

View file

@ -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

View file

@ -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

2582
Doxyfile

File diff suppressed because it is too large Load diff

View file

@ -1,62 +1,44 @@
# Nintendo GameCube Emulator
# プレイキューブ
![PNG](https://github.com/ogamespec/dolwin-docs/blob/master/ScreenShots/Ikaruga_0130.png)
![pureikyubu](/imgstore/pureikyubu.png)
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
|![progress_bs2](/imgstore/progress_bs2.png)|![progress_ikaruga](/imgstore/progress_ikaruga.png)|![progress_luigi](/imgstore/progress_luigi.png)|
|---|---|---|
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
View file

@ -1,4 +0,0 @@
# https://github.com/ogamespec/dolwin/issues/129
volatility

View file

@ -1,5 +0,0 @@
Debug
Release
x64
.vs
*.bin

View file

@ -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;
}

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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.

View file

@ -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"

View file

@ -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;
}
};
}

View file

@ -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);
}
};
}

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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

View file

@ -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.

View file

@ -1 +0,0 @@
#include "pch.h"

View file

@ -1,5 +0,0 @@
#pragma once
#include "CppUnitTest.h"
#include <intrin.h>
#include <algorithm>

View file

@ -1,8 +0,0 @@
Debug
Release
x64
.vs
*.adp
*.pcm

View file

@ -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);
}

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -1,3 +0,0 @@
# DtkDecode
Demonstration and verification of the GC DVD Audio decoder.

View file

@ -1,5 +0,0 @@
Debug
Release
x64
.vs
*.bin

View file

@ -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;
}

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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"
```

View file

@ -1,2 +0,0 @@
*.Designer.cs binary
*.resx binary

View file

@ -1,13 +0,0 @@
.vs
bin
obj
Data
temp
*.opendb
*.db
Build
Output
x64
Win32
Data
packages

View file

@ -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>

View file

@ -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;
}
}
}

View file

@ -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>

View file

@ -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

View file

@ -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;
}
}

View file

@ -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)
{
}
}
}

View file

@ -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>

View file

@ -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());
}
}
}

View file

@ -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")]

View file

@ -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;
}
}
}
}

View file

@ -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>

View file

@ -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;
}
}
}
}

View file

@ -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>

View file

@ -1,3 +0,0 @@
# EventLogMonitor
Utility for viewing Dolwin event logs.

View file

@ -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;
}
}
}

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net472" />
</packages>

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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.

View file

@ -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;

View file

@ -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);
}
};
}

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -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;
}
};
}

View file

@ -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;
}
};
}

View file

@ -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; }
};

View file

@ -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);
}
};
}

View file

@ -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;
}
}

View file

@ -1,5 +0,0 @@
// Flipper MI Stubs
#pragma once
#include "../../SRC/Hardware/Hardware.h"

View file

@ -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

View file

@ -1 +0,0 @@
#include "pch.h"

View file

@ -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.

View file

@ -1,4 +0,0 @@
Debug
Release
x64
.vs

View file

@ -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";
}

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

View file

@ -1,2 +0,0 @@
# JsonDemo

View file

@ -1,12 +0,0 @@
.vs
bin
obj
Data
temp
*.opendb
*.db
Build
Output
x64
Win32
Data

View file

@ -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"
}
}

View file

@ -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;
}
}

View file

@ -1,7 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>

View file

@ -1,5 +0,0 @@
# ManagedConsole
Managed code for working with the Win32 console.
Almost completely ported from Dolwin 0.10 sources.

View file

@ -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);
}
}
}
}

View file

@ -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