Compare commits

..

3645 Commits

Author SHA1 Message Date
Raul Tambre f898ebff3f Merge pull request #1238 from tambry/CoverityFix
Fix Coverity and bump the version.
2015-10-03 08:46:43 +03:00
Raul Tambre 455d07e05b Bump version to 0.0.0.6 2015-10-02 21:43:13 +03:00
Raul Tambre fd9977d3bd Fix Coverity and make Coverity branch master 2015-10-02 19:55:18 +03:00
Raul Tambre f6777825d5 Merge pull request #1235 from Zangetsu38/patch-1
Little fix correct path for Game Data
2015-09-28 20:34:31 +03:00
Zangetsu38 893a4e34a1 Little fix correct path for Game Data 2015-09-28 19:11:17 +02:00
Raul Tambre 4ac6c23ced Merge pull request #1233 from Zangetsu38/Zangetsu
Adding the icon on window GL and DX12
2015-09-28 19:20:17 +03:00
Zangetsu38 f27e77c7e0 Adding the icon on window GL and DX12 2015-09-27 00:36:44 +02:00
B1ackDaemon 286d2962c6 Merge pull request #1231 from vlj/d3d12
D3d12: Code cleaning and minor fixes
2015-09-26 05:50:02 +03:00
Vincent Lejeune 37721d6b8a d3d12: Use big buffer instead of placed resource for vertex index storage
Increase perf in Disgaea 3
2015-09-25 22:35:22 +02:00
Vincent Lejeune 8ba74a7f7d d3d12: Add some more counter to debug overlay 2015-09-25 22:35:21 +02:00
Vincent Lejeune 506fdec6df d3d12: Copy vertexbuffer in vram for output scaling pass. 2015-09-25 22:35:21 +02:00
Vincent Lejeune de5a3451cd d3d12: Force command queue completion 2015-09-25 22:35:20 +02:00
Vincent Lejeune 23bd197bd4 d3d12: clean code 2015-09-25 22:35:19 +02:00
Vincent Lejeune f10c812301 d3d12: Use d3dx12.h defined struct. 2015-09-25 22:34:34 +02:00
Vincent Lejeune ae51ce2349 d3d12: Fix a comment 2015-09-25 16:24:45 +02:00
Vincent Lejeune fa6e2bfe02 d3d12: Add d3dx12.h from DX sample on github 2015-09-25 16:23:03 +02:00
Hykem faf0a0d851 Merge pull request #1219 from Nekotekina/master
Terrifying PKG installer fix
2015-09-22 15:18:13 +01:00
Nekotekina 8ae3401ffa Some things improved
shared_mutex_t implemented
GUI Emu Callbacks rewritten
fxm::import, fxm::import_always implemented
cellMsgDialog rewritten
Emu.CallAfter improved (returns std::future)
2015-09-22 16:48:21 +03:00
Nekotekina 9d68c16c62 be_t (se_t) optimizations 2015-09-22 13:28:35 +03:00
Nekotekina 59f1077a36 Cleanup, be_t fixed
Some functions renamed:
get_ps3_function_name
execute_syscall_by_index
2015-09-22 13:28:34 +03:00
Nekotekina 4e62ec7458 PKG Installer fixed, u128 improved 2015-09-22 13:28:32 +03:00
Nekotekina 12f36cf31f Experimental class template Module<T>
Allocates ps3 memory for specific instance T
2015-09-22 13:28:31 +03:00
Nekotekina 093ecc0a02 CALL_FUNC macro fixed
Now it can call any HLE function, possibly using LLE if available.
2015-09-22 13:28:29 +03:00
Zangetsu38 da4bf43fb2 Update submodule ffmpeg and wxWidgets. 2015-09-20 23:08:24 +02:00
Danila Malyutin 11eeab0a1a PPU/LLVM: Added noexcept and some fixes 2015-09-19 17:09:50 +03:00
Danila Malyutin 3208a7713f PPU/LLVM: Fix for crashes on exit with jit 2015-09-19 17:09:49 +03:00
Vincent Lejeune 97f62571ff d3d12: Properly clean protected page in dtor 2015-09-18 22:36:22 +02:00
Vincent Lejeune c31c0c40a4 d3d12: Fix ARGB8 swizzle and support swizzling of rtts
Fix harem tengoku colors.
2015-09-18 22:36:21 +02:00
Vincent Lejeune 12f00a5e16 d3d12: Fix indexed triangle fan emulation. 2015-09-18 22:36:21 +02:00
Vincent Lejeune 0da893695e d3d12: Fix buffer upload with a base vertex. 2015-09-18 22:36:20 +02:00
Vincent Lejeune 5f08cca849 d3d12: Do not init D2DStruct if uneeded 2015-09-18 22:36:19 +02:00
Vincent Lejeune 72e5578595 d3d12: Get rid of extra garbage collection off 2015-09-18 22:36:19 +02:00
Vincent Lejeune bf04758285 d3d12: Submit command list every draw call in debug mode 2015-09-18 22:36:18 +02:00
Vincent Lejeune 7d15cc0dfd d3d12: Build shader in debug mode if debug output is enabled. 2015-09-18 22:36:18 +02:00
Vincent Lejeune 05c5058dfd PPU/LLVM: Remove useless call to NotifyBlockStart
Likely a rebase error, with this Metal Slug can run at 60 fps again.
2015-09-16 22:39:49 +02:00
Nekotekina 91c98a9533 Fix issue #1223 2015-09-16 21:31:41 +03:00
Hykem e86e72804b Merge pull request #1218 from Aaahh/patch-1
Update README.md
2015-09-16 17:18:40 +01:00
Aaahh Ahh 34622933f3 Merge branch 'master' into patch-1 2015-09-15 23:50:32 -04:00
Vincent Lejeune c407c786cc PPU/LLVM: Do not notify already compiled block.
Also flush m_pending_address_start to avoid memory consumption
explosion.
2015-09-15 19:21:40 +02:00
Vincent Lejeune ecb3d93918 PPU/LLVM: Remove lock in GetCompiledExecutableIfAvailable
This should increase performance a lot in some case.
2015-09-15 19:21:40 +02:00
Vincent Lejeune 667cb64c29 PPU/LLVM: Rename ProcessExecutionTrace to better reflect what it does. 2015-09-15 19:21:40 +02:00
Vincent Lejeune 359258c3d3 PPU/LLVM: Increase recompiler thread responsiveness. 2015-09-15 19:21:39 +02:00
Vincent Lejeune 9d18bba1df PPU/LLVM: Propagate exceptions
It fixes a crash in Retro City Rampage with low (ie 10) llvm threshold.
2015-09-15 19:21:39 +02:00
Raul Tambre 8204737efa Implement GetLicenseArea, category improvements
Also fixed newlines, CellSailEvent, fixed CellMusic changes, fixed
console_write, fixed L10n changes and removed the login dialog for now,
until a more proper implementation.
2015-09-13 10:26:01 +03:00
Aaahh Ahh 4622914610 Update README.md 2015-09-12 19:35:10 -04:00
Raul Tambre ea376e7751 Implement console_write and GetHomeDataExportPath 2015-09-12 14:11:26 +03:00
Raul Tambre cd7fbae583 Implement NetStartDialogLoadAsync, L10N additions
Also improved cellPadPeriphGetInfo
2015-09-10 17:13:31 +03:00
Raul Tambre f9731de777 HddGameCheck fix and Music/Avc2 improvements 2015-09-10 16:09:31 +03:00
Nekotekina cbe83ad8dd Various fixes 2015-09-08 13:47:00 +03:00
Raul Tambre 4666f190db Fix BRI instruction, fixes #1165 2015-09-07 20:14:00 +03:00
Raul Tambre de97c8e20f Add RPCS3 version to logging
Also fixed the link pointing to the RPCS3 forum.
2015-09-07 20:13:42 +03:00
Raul Tambre 09673c928c cellVideoOut accuracy improved, logging additions
Now basic settings are logged in the start of every log, to help devs in
determining  possible problems, when users test or try to run certain
games.
2015-09-07 20:00:58 +03:00
Raul Tambre c923cb54d3 cellGem and cellGameExec improvements 2015-09-07 20:00:33 +03:00
Raul Tambre 218e823fdc More cellSailFuture/Player improvements 2015-09-07 19:54:03 +03:00
Raul Tambre 5a7327492a Various cellSailPlayer improvements
Added default attributes, fixed a Travis error and added currently
broken player booting that I can't figure out.
2015-09-07 19:51:38 +03:00
Raul Tambre c9f3871c68 cellSail improvements 2015-09-07 19:47:54 +03:00
Raul Tambre ff3bfa1ca2 Implement cellVideoOutGetGamma/SetGamma
Also fixed settings window being too small and some minor formatting.
2015-09-07 16:33:25 +03:00
Nekotekina 7e01c81154 SPU Recompiler fixed 2015-09-07 00:36:32 +03:00
Hykem ab1c05aa71 Merge pull request #1199 from Nekotekina/master
SPU Cleanup
2015-09-02 19:04:10 +01:00
Nekotekina 817fec9684 SPU Cleanup
SPURecompiler improved
Old SPU decoder removed
SPU Interpreters merged
2015-09-02 00:38:44 +03:00
Vincent Lejeune 58181c5c17 PPU/LLVM: Remove indirect call completly 2015-09-01 18:58:14 +03:00
Vincent Lejeune 60d5dd40f7 PPU/LLVM: Fix unsigned/signed type comparaison warning 2015-09-01 18:58:12 +03:00
Vincent Lejeune 02a1bffc12 PPU/LLVM: Simplify trace management 2015-09-01 18:58:11 +03:00
Vincent Lejeune f2c8db75bf PPU/LLVM: Do not recompile blocks 2015-09-01 18:58:10 +03:00
potmdehex 665f316a3b Replace sprintf with fmt::format 2015-08-30 20:26:16 -07:00
Raul Tambre de7bbb5661 Merge pull request #1202 from danilaml/patch-1
Small appveyor fix
2015-08-29 11:54:45 +03:00
Danila Malyutin 4456d9fcf1 Small appveyor fix
clone depth isn't very reliable for submodules. Still waiting for appveyor to update to 2.5.0 git.
2015-08-29 01:20:19 +03:00
Nekotekina d1f31d6fda fmt::format fixed 2015-08-27 02:57:00 +03:00
Vincent Lejeune 5fe3ea6440 PPU/LLVM: Use a big table instead of an unordered_map to get compilation result.
The hashmap overhead may be really big in some case.
2015-08-26 22:22:01 +02:00
Vincent Lejeune 942f26509b Memory: Factorize virtual memory reservation/allocation code in function 2015-08-26 21:54:40 +02:00
Vincent Lejeune 241dedef4e PPU/LLVM: Properly print verification string 2015-08-26 21:54:40 +02:00
Vincent Lejeune eb90e509f9 PPU/LLVM: Avoid using an indirect call for function call 2015-08-26 21:54:39 +02:00
Vincent Lejeune b2ca9edde2 PPU/LLVM: Use ExecuteFunction in ExecuteTillReturn 2015-08-26 21:54:39 +02:00
Vincent Lejeune f81192373f PPU/LLVM: Replace magic number with opcode enum in GetBranchTypeFromInstruction. 2015-08-26 21:54:39 +02:00
Raul Tambre 99a9fd8505 Merge pull request #1196 from vlj/d3d12
D3d12/RSX: Some light improvement to program management.
2015-08-26 20:21:29 +03:00
Vincent Lejeune e0aa74d380 D3D12: Add CELL_GCM_ZERO case to comparaison function. 2015-08-26 18:45:57 +02:00
Vincent Lejeune 095c8fa19b RSX/D3D12: Improve shader lookup performance 2015-08-26 18:45:57 +02:00
Vincent Lejeune 9c24bb9d75 RSX/D3D12/GL/Null: Notify backend of program/state change 2015-08-26 18:45:57 +02:00
Danila Malyutin 3468a7ebcf PPU/LLVM: Add regression tests for SUBFIC 2015-08-26 14:39:50 +03:00
Danila Malyutin 8ea7da56ec PPU/LLVM: Fix SUBFIC instruction
Fixes sprites in Disgaea 3
2015-08-26 14:39:48 +03:00
Danila Malyutin 4bf0deecb6 Fix zlib lib linking order.
It should be AFTER lib that requires it.
2015-08-26 14:32:09 +03:00
Nekotekina e551e2bc5d Bugfix 2015-08-24 21:22:49 +03:00
Nekotekina 5e14310071 noexcept usage fixed
thread_t renamed to named_thread_t
2015-08-24 21:22:48 +03:00
Nekotekina 168cd9bb7a TLS for sys_net implemented
Method ptr for vm::ptr (renamed "of")
Method ref for vm::ptr (returns vm::ref)
Operator & for vm::ref (returns vm::ptr)
2015-08-24 21:22:46 +03:00
Nekotekina 6b6cd11fbe cellSaveData fix 2015-08-24 21:22:45 +03:00
Nekotekina fcd6b64f8f vm::var rewritten 2015-08-24 21:22:44 +03:00
Nekotekina 9c8773252a Minor style changes (sys_net) 2015-08-24 21:22:43 +03:00
Nekotekina ce494f8847 fmt::by_value, fmt::Format removed 2015-08-24 21:22:42 +03:00
Nekotekina 15057ffc5e wtf? 2015-08-24 21:22:40 +03:00
Nekotekina 73b108765e fs:: const renaming, fs::g_tls_error stub 2015-08-24 21:22:39 +03:00
Nekotekina c2897cddd6 id_traits, idm::get_last_id() added
id_traits for file/dir descriptors
idm::get_current_id() removed, thread-local last ID
2015-08-24 21:22:38 +03:00
Nekotekina d9403c2ed2 thread_t cleanup 2015-08-24 21:22:37 +03:00
Nekotekina be9a599beb PPU Decoder Cache improved 2015-08-24 21:22:35 +03:00
Nekotekina eb63558c6d KernelExplorer improved 2015-08-24 21:22:34 +03:00
Nekotekina e18db20630 VFS cleanup, some methods added
VFS::DeleteAll, VFS::GetDirSize, VFS::Exists, VFS::Rename
(VFS::RenameFile, VFS::RenameDir removed)
2015-08-24 21:22:33 +03:00
Nekotekina db88c539fb idm::get_type, sceKernelGetThreadmgrUIDClass 2015-08-24 21:22:32 +03:00
Nekotekina c6bdedf3b0 sleep_queue_t moved to SleepQueue.cpp, cleanup
Used ARMv7Thread instead of ARMv7Context in PSV HLE functions and
callbacks. However, interpreter still uses ARMv7Context.
Various PSV functions partially implemented:
sceKernelCreateEventFlag
sceKernelDeleteEventFlag
sceKernelOpenEventFlag
sceKernelCloseEventFlag
sceKernelWaitEventFlag
sceKernelWaitEventFlagCB
sceKernelPollEventFlag
sceKernelSetEventFlag
sceKernelClearEventFlag
sceKernelCancelEventFlag
sceKernelGetEventFlagInfo
sceKernelCreateSema
sceKernelDeleteSema
sceKernelCreateMutex
sceKernelDeleteMutex
sceKernelCreateCond
sceKernelDeleteCond
2015-08-24 21:22:30 +03:00
Nekotekina 94d1488259 IdManager funcs added: idm::import, idm::withdraw 2015-08-24 21:22:29 +03:00
Nekotekina 8b3c250702 PKG decryption without the intermediate 2015-08-24 21:22:28 +03:00
Nekotekina 07b9379a7c New u128 type stub 2015-08-24 21:22:27 +03:00
Nekotekina 8d758b9088 alignas() used instead of set_alignment macro 2015-08-24 21:22:25 +03:00
Nekotekina 544fe531a3 Added fxm::withdraw, cellGame improved 2015-08-24 21:22:24 +03:00
Nekotekina 6f3c50eba2 u128 renamed to v128
Since it's vector union type
2015-08-24 21:22:23 +03:00
Nekotekina f8afee3325 Fixed Object Manager (detached) 2015-08-24 21:22:22 +03:00
Nekotekina 9923f96431 Added PSP PKG support 2015-08-24 21:22:21 +03:00
Nekotekina dd665e7363 ID manager simplified
ID manager refactoring, redundant "type" information removed
2015-08-24 21:22:19 +03:00
Nekotekina da8883d5d3 cellSaveData definitions shortened 2015-08-24 21:22:18 +03:00
Nekotekina 2113fce2fb cellFont, cellRudp cleanup 2015-08-24 21:22:17 +03:00
Nekotekina 9e5daa1737 IdManager improved, added Fixed ID mechanism
Fixed UB in get_current_id()
2015-08-24 21:22:15 +03:00
Nekotekina c7ee8cadde cellFont, cellFs, cellGcmSys funcs added, minor cleanup 2015-08-24 21:22:14 +03:00
O1L c0b90d01bd Add LLVM Debug / Release configurations for gui solution. Disable some DX12-only options on non-DX12 builds 2015-08-24 20:54:35 +03:00
O1L 6ae7f450f1 Compilation fix 2015-08-24 00:23:31 +03:00
O1L 3c27bf0a6a Gui: separate 'Settings' code from MainFrame.cpp, minor cleanup 2015-08-24 00:23:30 +03:00
Danila Malyutin b01583f54b Some fixes for possible *nix compiler errors 2015-08-24 00:20:06 +03:00
Danila Malyutin 8140ab459f Don't init llvm on travis
it should be installed from packages
2015-08-24 00:20:04 +03:00
Danila Malyutin 6c4f968373 Try to build with llvm
and update readme
2015-08-24 00:20:03 +03:00
Danila Malyutin d0283265cc Improve clock_gettime on osx
and some clean up
2015-08-24 00:20:02 +03:00
Danila Malyutin 009370f73c Fix some compiling problems on OSX
and enable osx builds on travis
2015-08-24 00:20:01 +03:00
Raul Tambre e8088d1216 Merge pull request #1191 from vlj/d3d12
d3d12: Fix metal slug 3 crash
2015-08-22 00:23:13 +03:00
Vincent Lejeune 1ee749a9a8 d3d12: Fix blend alpha mode
Follow GL spec.
2015-08-17 22:12:58 +02:00
Raul Tambre 6124783180 Merge pull request #1188 from vlj/d3d12
d3d12: Fix wrong index being used for sampler descriptor heap
2015-08-17 12:26:44 +03:00
Vincent Lejeune 592543c47f d3d12: Fix wrong index being used for sampler descriptor heap
Fix a crash in Disgaea 3 with debug output enabled.
2015-08-17 00:12:30 +02:00
Vincent Lejeune be1511bd7a d3d12: Add a d2d overlay to display debug text 2015-08-16 23:00:55 +02:00
Vincent Lejeune fcd579a7b5 d3d12: Record draw call count and duration instead of vertex/texture upload 2015-08-16 23:00:46 +02:00
Vincent Lejeune 0e733b20de Lower minidx9/Include priority 2015-08-16 23:00:35 +02:00
Vincent Lejeune 80c25b8ced d3d12: Reuse the same command list until flip or semaphoreRelease 2015-08-16 23:00:27 +02:00
Vincent Lejeune a93a81997f d3d12: Remove preventive "waitForCompletion" after a flip. 2015-08-16 23:45:56 +03:00
Vincent Lejeune a852d5caca d3d12: Disable openMP
It actually decreases performance.
2015-08-16 23:45:54 +03:00
Vincent Lejeune 06532e3263 d3d12: Do not invalidate surface texture if they are not set.
Fix hang with depth read texture and color buffer enabled.
2015-08-16 23:45:52 +03:00
Vincent Lejeune 63a54dd70d d3d12: Rewrite per frame resource cleaning function. 2015-08-16 23:45:51 +03:00
Vincent Lejeune c2430d3af1 d3d12: Use ComPtr for some others member. 2015-08-16 23:45:49 +03:00
Vincent Lejeune b54adebfc7 d3d12: Do not recreate fence/event each frame. 2015-08-16 23:45:47 +03:00
Danila Malyutin 491d5528ed Don't print all env vars on travis
clogs logs and might leak encrypted vars if we'll have any.
2015-08-16 23:40:11 +03:00
Danila Malyutin 7460d215fd Fix travis OoM crash with gcc and -O3
Until with move to containers.
2015-08-16 23:40:09 +03:00
Danila Malyutin 5bf6c25652 Remove unneeded code (fixes flag "conflicts")
cmake should add appropriate flags depending on build type automatically
2015-08-16 23:40:07 +03:00
Danila Malyutin 0fb8ad8c5a Update Cotire to 1.7.3
It fixes some bugs. Also use add_compile_options instead of add_defenitions where necessary
2015-08-16 23:40:05 +03:00
Danila Malyutin aeee0758c2 Ignore warnings in VS from llvm headers 2015-08-16 23:40:03 +03:00
Danila Malyutin 83b77ced9e Fix openal lib name in debug-memleak
is this config even working?
2015-08-16 23:40:01 +03:00
Nekotekina 405d7cb70c Revert "RSX: Fix NV3089"
This reverts commit a86e44deb4.
Reasons: it's broken and not strictly related with d3d12 PR.
2015-08-16 18:37:20 +03:00
Raul Tambre 0ce4930c0f Merge pull request #1177 from Zangetsu38/Getsuga
Fix correct size setting windows.
2015-08-15 10:38:29 +03:00
Raul Tambre a3dc623270 Merge pull request #1181 from vlj/d3d12
D3d12: Fixes
2015-08-15 10:31:35 +03:00
Vincent Lejeune 3b0afe92e3 d3d12: Add a dummy D3D12Lib struct that load/unload d3d12.dll
It allows to unload the lib after everything else has been released, it
fixes a crash when leaving an app with d3d12 backend.
2015-08-14 23:39:38 +02:00
Vincent Lejeune 09cc127dd9 d3d12: Use ComPtr<> instead of manually releasing some structures 2015-08-14 23:39:37 +02:00
Vincent Lejeune 9cb88b3a8d d3d12: Use ThrowIfFailed instead of check to be inline with DX12 Samples 2015-08-14 23:39:37 +02:00
KaOs1 f3d7c5da9d sys_mempool implementation fixes 2015-08-14 22:44:41 +03:00
KaOs1 bc13128afe sys_mempool implemented 2015-08-14 22:44:39 +03:00
Vincent Lejeune befe93784f d3d12: Do not create/submit an extra command list for texture upload/rtt state change 2015-08-14 21:23:30 +02:00
Zangetsu38 732eef6c02 Update with master and Fixed Conflict 2015-08-14 19:35:58 +02:00
Vincent Lejeune 4185fcb6cd d3d12: Do not output scale if there is no rtt available
Fix crash in Disgaea 3
2015-08-14 17:03:16 +02:00
Raul Tambre 850416d530 Merge pull request #1169 from vlj/d3d12
Implement a d3d12 backend
2015-08-14 17:44:27 +03:00
Vincent Lejeune abee3539b8 d3d12: Fix non dx12 build config 2015-08-14 00:29:22 +02:00
Raul Tambre 07f33a3809 Merge pull request #1178 from danilaml/appveyor-llvm-dx12
Add llvm build to appveyor and fix wrong xaudio lib with cmake
2015-08-13 09:31:42 +03:00
Danila Malyutin 1d09408e38 Disable regular (non-llvm) builds to save time
because appveyor wouldn't run them in parallel. llvm builds are only ~1
min longer anyway.
2015-08-13 01:34:34 +03:00
Danila Malyutin 99156c61e4 Fix wrong XAudio lib being linked 2015-08-13 01:12:15 +03:00
Danila Malyutin c63db8842c Add llvm build to appveyor 2015-08-12 23:59:56 +03:00
Vincent Lejeune 9cb7339067 d3d12: Do not detach garbage collection thread
Thanks Neko for the tips.
2015-08-12 22:59:15 +02:00
Zangetsu38 5e9eb9c3bb Fix correct size setting windows.
And other small change
2015-08-12 17:41:46 +02:00
Raul Tambre a775b428f4 Merge pull request #1173 from vlj/llvm36-debug
Add debug options for llvm compiler
2015-08-12 17:53:49 +03:00
Vincent Lejeune cf1c86bb2f d3d12: Signal thread termination request + use a producer/consumer pattern closer to other ones in rpcs3. 2015-08-12 00:28:38 +02:00
Vincent Lejeune 7843b23ee1 Move DX12_SUPPORT before ($preprocessor defenitions) 2015-08-12 00:28:38 +02:00
Zangetsu38 f0a5641cf0 Fix file not found 2015-08-12 00:28:37 +02:00
Vincent Lejeune 3fe90d9e8d Add DX12 variant of debug/release with and without llvm 2015-08-12 00:28:37 +02:00
Vincent Lejeune 3d486a8ba9 d3d12: Reset gfxHandler in dtor 2015-08-12 00:28:36 +02:00
Vincent Lejeune 11980346c9 Clean an useless added line 2015-08-12 00:28:36 +02:00
vlj 6a408301d7 d3d12: Another fix 2015-08-12 00:28:35 +02:00
vlj 9b10895c38 d3d12: Fix build with latest master 2015-08-12 00:28:35 +02:00
vlj 6fcd0e0421 d3d12: Add semaphorePGRAPHTextureRead 2015-08-12 00:28:34 +02:00
vlj 37cc5e5c11 d3d12: Fix D3D12GSRender member name 2015-08-12 00:28:34 +02:00
vlj 38a809b483 d3d12: Use another sampler heap when using more than 2048 samplers 2015-08-12 00:28:34 +02:00
vlj d2edeafffe d3d12: Remove extra , 2015-08-12 00:28:33 +02:00
vlj b839b86895 d3d12: Fix color for target_none 2015-08-12 00:28:33 +02:00
vlj af181395fc d3d12: Fix warning 2015-08-12 00:28:32 +02:00
vlj 265331117e d3d12: Support targetless flip
Fix PS3Doom
2015-08-12 00:28:32 +02:00
vlj 725b0c606d d3d12: Add some doc 2015-08-12 00:28:31 +02:00
vlj 0e6cd8cd0e d3d12: Fix warnings 2015-08-12 00:28:31 +02:00
vlj ff219c6035 d3d12: Factorise sampler desc creation in a separate function 2015-08-12 00:28:30 +02:00
vlj 612d169b78 d3d12: Add some comments 2015-08-12 00:28:30 +02:00
vlj 8801abb93a d3d12: Refactor index management
Separates it from vertex management and move all the logic (forced
indexing, index count calculation...) outside of GSRender.
2015-08-12 00:28:29 +02:00
vlj 1f3fbe91e2 d3d12: Don't call GetAddress if context_dma is not set 2015-08-12 00:28:29 +02:00
vlj 91809c09d4 d3d12: use memcpy instead of streamToBuffer for alpha settings
streamToBuffer doesn't work well for data < 128 bits
2015-08-12 00:28:28 +02:00
vlj bf394d4f56 d3d12: Support triangle fan
Fix missing character members in the guided fate paradox
2015-08-12 00:28:28 +02:00
vlj 6f0c74cf76 d3d12: Fix crash with write color/depth buffer enabled 2015-08-12 00:28:27 +02:00
vlj 428d66598d d3d12: Move util shader creation in another file 2015-08-12 00:28:27 +02:00
vlj 2cd035d530 d3d12: Fix A1R5G5B5 endianness
Fix color in Retro city rampage
2015-08-12 00:28:27 +02:00
vlj cb0ebad210 d3d12: Fix binding of tex/sampler 2015-08-12 00:28:26 +02:00
vlj 3cc3974466 d3d12: Fix m_ctrl not being properly passed to fragement decompiler
Fix Retro City Rampage
2015-08-12 00:28:26 +02:00
vlj 45b7da6666 d3d12: Mipmap offset is 512byte aligned
Fix retro city rampage crash at startup
2015-08-12 00:28:25 +02:00
vlj 6cb00e681b d3d12: support swizzled CELL_GCM_TEXTURE_A4R4G4B4
Fix terraria menu
2015-08-12 00:28:25 +02:00
vlj 40a3b5c918 d3d12: Mark semaphore location as volatile 2015-08-12 00:28:24 +02:00
vlj a519aa8350 d3d12: Add a (ugly) fix because of some race condition somewhere 2015-08-12 00:28:24 +02:00
vlj 8cf6255d5d d3d12: Fix unneeeded vectors 2015-08-12 00:28:23 +02:00
vlj fc65f181a7 d3d12: Fix a potential crash in GC thread 2015-08-12 00:28:23 +02:00
vlj 16fa3697db d3d12: Use atomic for data heap 2015-08-12 00:28:22 +02:00
vlj de55d64781 d3d12: Make canAlloc function const 2015-08-12 00:28:22 +02:00
vlj fd269f3adc d3d12: Fix alloc function
It may generate wrong result in very rare circumstance, although I never
experienced it.
2015-08-12 00:28:21 +02:00
vlj 3472f75ae0 d3d12: Fix uninitialized variables 2015-08-12 00:28:21 +02:00
vlj d4b83bcf6f d3d12: Try to factorise CPU/GPU descriptor handle gen
I'm still not satisfied with it but I didn't find another way to make it
compact and readable.
2015-08-12 00:28:20 +02:00
vlj 1c7bff4d36 d3d12: Use align instead of powerOf2Align 2015-08-12 00:28:20 +02:00
vlj 5e33d5535d d3d12: Add a TODO notice at the beginning 2015-08-12 00:28:19 +02:00
vlj 141c7ef340 d3d12: Do not cache non buffer vertex attribute
Fix dice test
2015-08-12 00:28:19 +02:00
vlj 73aeda1507 d3d12: Use stream to buffer to upload vertex constants 2015-08-12 00:28:19 +02:00
vlj 2c802735bd d3d12: Fix crash + use ref instead of copying in some for loops 2015-08-12 00:28:18 +02:00
vlj 865445e29b d3d12: Remove m_textureData heap since it wasn't used
Free 512 mb
2015-08-12 00:28:18 +02:00
vlj 8f31211557 d3d12: Avoid copying 8k of constant data per draw call 2015-08-12 00:28:17 +02:00
vlj d88d078f4a d3d12: Fix left over commented code 2015-08-12 00:28:17 +02:00
vlj 5102241ac2 d3d12: Compute texture size in host mem 2015-08-12 00:28:16 +02:00
vlj 4ee66a2680 d3d12: Implement intraframe vertex caching 2015-08-12 00:28:16 +02:00
vlj 294d649012 d3d12: Fix a type warning 2015-08-12 00:28:15 +02:00
vlj d29b82566e d3d12: Fix memleak 2015-08-12 00:28:15 +02:00
vlj c6a5e905bc d3d12: enable texture caching
Bring a little more perf in arkedo 2
2015-08-12 00:28:14 +02:00
vlj 8cc9642b96 Completly unclean way to track texture modification between frames 2015-08-12 00:28:14 +02:00
vlj 03a84cb208 d3d12: Measure time spent uploading texture and vertex 2015-08-12 00:28:13 +02:00
vlj 3f495689c0 d3d12: Ignore texture with 0 width/height
Fix crash in voodoo chronicles.
2015-08-12 00:28:13 +02:00
vlj ad3e50f90f d3d12: Do not guess texture size but use actual value 2015-08-12 00:28:12 +02:00
vlj 628acbf0b4 d3d12: Do not reserve a lot more than necessary. 2015-08-12 00:28:12 +02:00
vlj dbcddcf5e2 d3d12: Clean up texture upload code
Should be easier to read code (and spot bugs).
Fix crash with mipmap and DXTCn texture format.
2015-08-12 00:28:11 +02:00
vlj eda3c9084e d3d12: Fix mipmap data 2015-08-12 00:28:11 +02:00
vlj 178d0e0e85 d3d12: Try implement mipmap
The mipmap level below 0 are currently wrong, find out why
2015-08-12 00:28:11 +02:00
vlj d23cf861f1 d3d12: Factorize ring buffer like code to depth/color buffer migration 2015-08-12 00:28:10 +02:00
vlj dca9ae6ab5 d3d12: Factorize cleaning function for heaps 2015-08-12 00:28:10 +02:00
vlj aa66ddcd86 d3d12: Add some code documentation + rename some functions 2015-08-12 00:28:09 +02:00
vlj f2d39d0e82 d3d12: Use fixed width/height scale and use surface_clip info for scaleOffset matrix
Thanks to raven02 for the patch.
2015-08-12 00:28:09 +02:00
vlj f59bc86ac5 d3d12: Fix scaling for terraria/Voodoo chronicles
It break render_to_target test but it looks like an issue with
scale/offset buffer rather than viewport/scissor
2015-08-12 00:28:08 +02:00
vlj 09ccd7e436 d3d12: Fix crash with W16Z16Y16X16 texture format 2015-08-12 00:28:08 +02:00
vlj 2310ba137f d3d12: Fix crash with rescaling pass 2015-08-12 00:28:07 +02:00
vlj 9fdb6f0dad d3d12: Fix color of scaling output 2015-08-12 00:28:07 +02:00
vlj 281f8be76f d3d12: Enable scaling pass
The output is black and white, need to find out why.
2015-08-12 00:28:06 +02:00
vlj 224bae383c d3d12: Add some code that will scale final render target 2015-08-12 00:28:06 +02:00
vlj f55bb7165c d3d12: Load dll at runtime 2015-08-12 00:28:05 +02:00
vlj 006d989304 d3d12: Uncomment code that shouldn't have been commented out 2015-08-12 00:28:05 +02:00
raven02 00c975b469 d3d12: use gcm buffer width and height for copy texture region
It fixes crash in Voodoo Chronicles and Terraria
2015-08-12 00:28:04 +02:00
vlj e36c4f75e0 d3d12; Fix swizzle for B8 texture format
Fix menu in guided fate paradox for WARP
2015-08-12 00:28:04 +02:00
vlj 41577b5018 d3d12: Fix some warnings 2015-08-12 00:28:03 +02:00
vlj 17e169e652 d3d12: Fix crash at exit + tweak heap sizes to make dice test working 2015-08-12 00:28:03 +02:00
vlj 75a52219e0 d3d12: Rewind constant buffers get value 2015-08-12 00:28:03 +02:00
vlj c53828787a d3d12: Emit an error if waiting for too long for semaphore 2015-08-12 00:28:02 +02:00
vlj d2c13bc4c1 d3d12: Use a commited resource for constant buffer
Since we rarely use more than 1k of constant data we waste space due to
alignment requirement with heap so use a commited resource instead.
2015-08-12 00:28:02 +02:00
vlj 2f54482592 d3d12: Make depth test optionnal and use (0,0,0,0) when texture unit is disabled 2015-08-12 00:28:01 +02:00
raven02 482a371bb0 d3d12: set max_depth_value based on depth format 2015-08-12 00:26:54 +02:00
raven02 da923f8a3d d3d12: declare bufferSize for allocation 2015-08-12 00:26:53 +02:00
raven02 cf27d4c2ca d3d12: Fix pitch in COMPRESSED_DXT23/DXT45
Make pm_zcull.ppu.elf renders correctly.
2015-08-12 00:26:53 +02:00
vlj 24c23dc5f6 d3d12: Use dummy texture to fill empty texture slot
vertex attribute test has a shader that reads a texture, but rpcs3
doesn't provide the texture ; this makes WARP crash.
2015-08-12 00:26:52 +02:00
vlj cfde5698c7 d3d12: Fix swizzling for D8R8G8B8
Fix human.ppu.elf demo
2015-08-12 00:26:52 +02:00
vlj 70b537c8c2 d3d12: Implement discard
Should make alpha test kill test almost working as it should.
2015-08-12 00:26:51 +02:00
vlj dc1a57e71c d3d12: Fix color masking
Wasn't using the correct PSO state variable
2015-08-12 00:26:51 +02:00
raven02 724159c8b4 d3d12: warning log fix 2015-08-12 00:26:50 +02:00
raven02 a86e44deb4 RSX: Fix NV3089
Make convert_swizzle.elf works
2015-08-12 00:26:50 +02:00
vlj 93e20c0853 d3d12: Fix index count 2015-08-12 00:26:49 +02:00
vlj 8b631d486c d3d12: Fix build 2015-08-12 00:26:49 +02:00
raven02 48e6db3a2f d3d12: use CELL_GCM suffix for filter 2015-08-12 00:26:48 +02:00
vlj 224503d2dc d3d12: Move program related code out of D3D12GSRender and some get* format functions 2015-08-12 00:26:48 +02:00
vlj ad55cced13 d3d12: Fix vertex buffer sometimes incomplete. 2015-08-12 00:26:47 +02:00
vlj e55949dbfa d3d12: Use h0 in fragment decompiler when there is no r0
Partially fix alpha kill test.
2015-08-12 00:26:47 +02:00
vlj 8669dac5e7 d3d12: Implement sampler filters properly
Fix menu in the guided fate paradox
2015-08-12 00:26:46 +02:00
vlj 2d0dbf4949 d3d12: Async semaphore leads to deadlock, make it sync, but do resource garbage collection async 2015-08-12 00:26:46 +02:00
vlj 10b92d45d1 d3d12: Use RSXThread width height for viewport
Thanks to raven02 for finding this, it fixes render to texture test
2015-08-12 00:26:45 +02:00
vlj 4966ab565a d3d12; Clean resource sooner and fix crash with VS debugger. 2015-08-12 00:26:45 +02:00
raven02 1837f40ed4 d3d12: Factorize common use functions among frag and vertex decompiler 2015-08-12 00:26:44 +02:00
vlj e38bf8d51f d3d12: Fix rgba16float endianness for textures 2015-08-12 00:26:44 +02:00
vlj ff9f348ec2 d3d12: Use finer pitch when downloading rtt 2015-08-12 00:26:43 +02:00
vlj c2d3c857b6 d3d12: Handle w16Z16Y16X16 rtt format
It doesnt fix completly render_to_texture test but it helps.
2015-08-12 00:26:43 +02:00
vlj b8ba902657 d3d12: Fix rtt size (and crash in render_to_texture test) 2015-08-12 00:26:42 +02:00
vlj 33daa81e6f d3d12: Fix some src pitch 2015-08-12 00:26:42 +02:00
raven02 68d3f6f536 d3d12: minor cleanup 2015-08-12 00:26:41 +02:00
raven02 4ef66e6901 d3d12: Add blend for MRT 2015-08-12 00:26:41 +02:00
raven02 e72d098ea1 d3d12: use CELL_GCM suffix 2015-08-12 00:26:40 +02:00
vlj 8474cd8064 d3d12: Fix pitch for compressed textures 2015-08-12 00:26:40 +02:00
vlj 27e56b6199 d3d12: Do not set mask if not requested 2015-08-12 00:26:39 +02:00
vlj bdeb08e045 d3d12: Add color masking 2015-08-12 00:26:39 +02:00
vlj acb8f82f84 d3d12: Add front/back face culling setting 2015-08-12 00:26:38 +02:00
vlj b465992178 d3d12: Fix stencil op
Thanks to raven02 for noticing them !
2015-08-12 00:26:38 +02:00
vlj c73d19161b d3d12: Disable depth/color buffer write if not requested
Doesnt really increase performance...
2015-08-12 00:26:37 +02:00
vlj d564c25241 d3d12: Use real depth function too 2015-08-12 00:26:37 +02:00
vlj b2ad49bac8 d3d12: Check blend and depth stencil state when evaluating pso equality 2015-08-12 00:26:36 +02:00
vlj 5f46b32616 d3d12: Use instancing to pass constant vertex attribute
Maybe a bit hackish but it works.
2015-08-12 00:26:36 +02:00
vlj 64a555caca d3d12: Write data to single vertex attrib
stencil reflect has some color but it's still broken.
2015-08-12 00:26:35 +02:00
vlj 02f15810ee d3d12: Implement stencil states
Unfortunatly it doesnt solve stencil reflect test atm
2015-08-12 00:26:35 +02:00
vlj e3b73f9ea0 d3d12: Fix vertex error in stencil reflect 2015-08-12 00:26:34 +02:00
vlj 381260a493 d3d12: Check IALayout equality in pipeline state 2015-08-12 00:26:34 +02:00
vlj e4435a9308 DPH disappeared when merging, need to merge commit with the initial one 2015-08-12 00:26:34 +02:00
vlj 22e67db0f2 d3d12: Add some others texture format 2015-08-12 00:26:33 +02:00
vlj c3e19f34fa gl: sampler2d are constants 2015-08-12 00:26:33 +02:00
vlj ca90c05b0a gl : refix 2015-08-12 00:26:32 +02:00
vlj 744b56b12d gl: Fix texture unswizzling
Fix multi texture test
2015-08-12 00:26:32 +02:00
vlj 694d4e01a0 d3d12: Use openMP for vertex buffer mapping and factorize function 2015-08-12 00:26:31 +02:00
vlj 459ab17d74 d3d12: Use openMP to upload texture
Does not really increase performance so far
2015-08-12 00:26:31 +02:00
vlj cfe058dc82 d3d12: Factorize texture upload code 2015-08-12 00:26:30 +02:00
raven02 ce857ab1da RSX: DP2A for fragment decompiler 2015-08-12 00:26:30 +02:00
vlj caf863be4d d3d12: Fix crash at exit 2015-08-12 00:26:29 +02:00
vlj 5882f9defb d3d12: Do not use texture pitch but compute it ourself
Fix sonic cd splash screen
2015-08-12 00:26:29 +02:00
vlj f31282623a d3d12: Fix texture unswizzling 2015-08-12 00:26:28 +02:00
raven02 25c09c5088 d3d12: Add Blend Op 2015-08-12 00:26:28 +02:00
vlj a2b8d3a885 d3d12: Fix memleak 2015-08-12 00:26:27 +02:00
raven02 76d52b4bb3 d3d12: Implement A4R4G4B4 texture format with byte swapped
Make the guided fate paradox works
2015-08-12 00:26:27 +02:00
vlj 593b9a494d d3d12: Double texture storage size 2015-08-12 00:26:27 +02:00
vlj d886fd55d3 d3d12: Fix for size calculation 2015-08-12 00:26:26 +02:00
vlj a751a06d01 d3d12: Try not to overcommit texture memory 2015-08-12 00:26:26 +02:00
vlj a5fb8c95f4 d3d12: Fix interframe sync 2015-08-12 00:26:25 +02:00
vlj ac352cd083 d3d12: Use custom loadvertex like call 2015-08-12 00:26:25 +02:00
vlj b63c77ca7d d3d12: Swap current/non current right after present has been called 2015-08-12 00:26:24 +02:00
vlj 9e2dfcaba3 d3d12: fix memleak 2015-08-12 00:26:24 +02:00
vlj 7db3599648 d3d12: Ping pong between data to avoid gpu stall as much as possible 2015-08-12 00:26:23 +02:00
vlj 461bf12c4f d3d12: Cleaning 2015-08-12 00:26:23 +02:00
vlj 51d287d9b0 d3d12: Take alignment into account in streamBuffer
And use it for texture upload
2015-08-12 00:26:22 +02:00
vlj 878a116c4a Rebasing didn't went quite right...Fixes 2015-08-12 00:26:22 +02:00
vlj 3a6abe1656 d3d12: fix crash when inferring texture size 2015-08-12 00:26:21 +02:00
vlj 9748007cd3 d3d12: Use ring buffer for textures too
It looks like the texture size calculation is wrong, it can lead to
crash
2015-08-12 00:26:21 +02:00
vlj 6bb5dd2125 d3d12: Use ring like buffer for vertex index data 2015-08-12 00:26:20 +02:00
vlj f721f2cbaa d3d12: Use ring like heap for vertex and fragment constants too 2015-08-12 00:26:20 +02:00
vlj 59aca7566e d3d12: Some fixes to avoid running out of constant spaces 2015-08-12 00:26:19 +02:00
vlj e0cff6b0b4 d3d12: Start using a ring-like buffer for constants 2015-08-12 00:26:19 +02:00
vlj c1abf80b40 d3d12: Fix r5g6b5 only using half texture 2015-08-12 00:26:19 +02:00
vlj 5ca02a5053 d3d12: Fix R5G6B5 being byte swapped 2015-08-12 00:26:18 +02:00
vlj d8d72c4327 d3d12: Implement R5G6B5 texture format
Make sonic works, but with wrong color
2015-08-12 00:26:18 +02:00
vlj 25b10c5e3e d3d12: Consume less descriptor slot if not required 2015-08-12 00:26:17 +02:00
vlj 6d9e542cde d3d12: Ignore files in bin/ 2015-08-12 00:26:17 +02:00
vlj 043adab2ce d3d12: Fix fragment constant filling
The command buffer does not necessarily set them in order...
2015-08-12 00:26:16 +02:00
vlj 1c803e725b d3d12: Do not overwrite hlsl file 2015-08-12 00:26:16 +02:00
vlj 0b435afd1d d3d12: Fix some texture format swizzles. 2015-08-12 00:26:15 +02:00
vlj 3aafb60629 d3d12: Fix offset in scale offset
Depth Buffer should be correctly positionned in depth_read test
2015-08-12 00:26:15 +02:00
raven02 0be60890e7 d3d12: minor fixes 2015-08-12 00:26:14 +02:00
vlj fdf24545af d3d12: Raise texture upload heap to make multi texture work
The result is not in line with PS3 real output though
2015-08-12 00:26:14 +02:00
vlj e454f59f97 d3d12: Fix depth buffer not being transitionned to generic read 2015-08-12 00:26:13 +02:00
vlj aac93b9063 d3d12: Clean code + fix warnings 2015-08-12 00:26:13 +02:00
vlj 001dc7cf57 d3d12: Do not copy fbo, just use new one 2015-08-12 00:26:12 +02:00
vlj 5a57564b0c d3d12: Forgot a hunk 2015-08-12 00:26:12 +02:00
vlj 01ac9f02d2 d3d12: Use placed resource for depth conversion result 2015-08-12 00:26:11 +02:00
vlj 2636fb457e d3d12: Use placed resource for mrt readback
Should be slightly faster (no allocation)
2015-08-12 00:26:11 +02:00
raven02 28c125618a d3d12 : add few more compressed format 2015-08-12 00:26:10 +02:00
raven02 046e522851 d3d12: Add DXT23 & DXT45 2015-08-12 00:26:10 +02:00
vlj 6877e5e3ba d3d12: Start using heap for depth buffer readback 2015-08-12 00:26:09 +02:00
vlj 90fb4396fe d3d12; Add a texture cache 2015-08-12 00:26:08 +02:00
raven02 d8f76f5aee d3d12: Add LogicOp 2015-08-12 00:26:08 +02:00
vlj f382ba0319 d3d12: Enable multiple mrt read 2015-08-12 00:26:07 +02:00
vlj 8e9cdc5fea d3d12: Fix memleak 2015-08-12 00:26:07 +02:00
vlj da328c078a d3d12: Fix cube_mrt.ppu.elf
It should display a (single) blue cube
2015-08-12 00:26:06 +02:00
vlj cef58da879 d3d12: Fix non mrt samples 2015-08-12 00:26:06 +02:00
vlj 595392428d d3d12: First attempt at read color buffer using dma address change
If address of m_context_dma_color_a change, copy the RTT in a texture
that can be used for drawing.
Currently a bit broken, the rtt is used for others textures too...
2015-08-12 00:26:05 +02:00
vlj 3e11598941 d3d12: Fix increment size for sampler and row pitch for swizzled textures 2015-08-12 00:26:05 +02:00
vlj 262d3d0755 d3d12: Fix copyToCellRamAndRelease copy size 2015-08-12 00:26:04 +02:00
vlj 906146d8f6 d3d12: Lower memory storage 2015-08-12 00:26:04 +02:00
vlj f12cb9b519 d3d12: Send RTTs to cell memory when a semaphore is released 2015-08-12 00:26:03 +02:00
vlj 53ac34db35 d3d12: Fix a warning 2015-08-12 00:26:03 +02:00
vlj 74dab18174 d3d12: Use graphic queue to download depth buffer
For now go to the easiest solution and improve later
2015-08-12 00:26:02 +02:00
vlj af69803ee0 d3d12: Factorize resource state change 2015-08-12 00:26:01 +02:00
vlj 3a029efbd3 d3d12: Add D8R8G8B8 format to texture
Should fix human.ppu.elf
2015-08-12 00:26:01 +02:00
vlj 68a62f897d d3d12: Fix texture loading for fw_fog.ppu.elf
Color are wrong though
2015-08-12 00:26:00 +02:00
vlj 7b571aab70 d3d12: Start supporting dxtc1 format 2015-08-12 00:26:00 +02:00
vlj b5a7637b49 d3d12: Implement texture swizzling and untiling 2015-08-12 00:25:59 +02:00
vlj 52a68875fc d3d12: Add some other texture case + factorise resource desc code 2015-08-12 00:25:59 +02:00
vlj 88d05a08cf d3d12: Use a dummy texture to fill unused slots 2015-08-12 00:25:58 +02:00
vlj 79420e52a2 d3d12: Disable depth test if not required 2015-08-12 00:25:58 +02:00
vlj f77e2acfbe d3d12: Start supporting mrt 2015-08-12 00:25:57 +02:00
vlj c167a1228e d3d12: Revert back to a signel resource storage
Using two of them doesnt increase perf atm but eats twice the space
2015-08-12 00:25:57 +02:00
vlj b81fd13232 d3d12: Fix double release 2015-08-12 00:25:56 +02:00
vlj 7a431e85f6 d3d12: Use copy queue to transfer z buffer 2015-08-12 00:25:56 +02:00
vlj f618247937 d3d12: Fix format of depth texture 2015-08-12 00:25:55 +02:00
vlj b50ab149d6 d3d12: Convert depth buffer on gpu 2015-08-12 00:25:55 +02:00
vlj 56853de0ef d3d12: Do not bind depth stencil buffer if depth test is disabled 2015-08-12 00:25:54 +02:00
vlj 1228787355 d3d12: DMA depth buffer when semaphore write is asked. 2015-08-12 00:25:54 +02:00
vlj b72d435ce8 d3d12: fix stencil reflect again 2015-08-12 00:25:53 +02:00
vlj bc25f4d6ad d3d12: Make waiting thread sleeping 2015-08-12 00:25:53 +02:00
vlj 9c193e0282 d3d12: Implement semaphore 2015-08-12 00:25:52 +02:00
vlj c5a1f8930f d3d12: Another fix for vertex buffer not big enough buffer 2015-08-12 00:25:52 +02:00
vlj 233450a7ca d3d12: Fix stencil reflect test 2015-08-12 00:25:51 +02:00
vlj 8bd678afc0 d3d12: Fix vertex buffer reconstruction with mismatching stride 2015-08-12 00:25:51 +02:00
vlj 8ad1bc1970 d3d12: Fix powerOf2Align 2015-08-12 00:25:50 +02:00
vlj 10cc2c080c d3d12: Try to reconstruct packed vertex buffers 2015-08-12 00:25:50 +02:00
vlj 2709a3e49a d3d12: Use streaming buffer for index buffer 2015-08-12 00:25:49 +02:00
vlj 90e0a89e9b d3d12: Try to use stream function that doesn't pollute cache 2015-08-12 00:25:49 +02:00
vlj 8b8385b0a4 d3d12: Reduce heap size 2015-08-12 00:25:48 +02:00
vlj a6770813b1 d3d12: Fix var not initialized 2015-08-12 00:25:48 +02:00
vlj e9fab57a0e d3d12: Fix indexed quad draw
We were not positionning the index buffer correctly in the heap.
2015-08-12 00:25:47 +02:00
vlj 82545a7b56 d3d12: Clean indexed draw buffer gen code 2015-08-12 00:25:47 +02:00
vlj 22f413be3a d3d12; Live buffer related code and factorise resource_desc for buffers 2015-08-12 00:25:46 +02:00
raven02 9814a92a25 Tex: define more sampler parameters 2015-08-12 00:25:45 +02:00
vlj cd951af664 d3d12: Fix to run fw_vertex_attribute.ppu.elf
A little dirty, need to be improved.
2015-08-12 00:25:45 +02:00
vlj 2df1220144 d3d12: Use GL enum for primitive type 2015-08-12 00:25:44 +02:00
vlj b8073b4e75 d3d12: Try to fix forced quad indexed buffer 2015-08-12 00:25:44 +02:00
vlj 232c97cc82 d3d12: Add support for indexed draw 2015-08-12 00:25:43 +02:00
vlj 5ce0261265 d3d12: Release index buffer and upload command allocator 2015-08-12 00:25:43 +02:00
vlj bd68d382bd d3d12: Use __mm_stream_si128 to send texture/constants data 2015-08-12 00:25:42 +02:00
vlj 12fc6e6145 d3d12: Use separate vertex constant buffer for good 2015-08-12 00:25:42 +02:00
vlj 6d61e36f5d d3d12: Fix for rsx_fp_dynamic_test2
The compare function shouldn't be swizzled.
2015-08-12 00:25:41 +02:00
vlj 824b9aa628 d3d12: make depth read optionnal 2015-08-12 00:25:41 +02:00
vlj 487fd4dc2a d3d12: Start implementing depth to u8 conversion shader
Not used atm
2015-08-12 00:25:40 +02:00
vlj e88d45b1bf d3d12: Fix for Intel HD4600 2015-08-12 00:25:40 +02:00
vlj cb14697aa0 d3d12: Honor adaptater selection + debug output layer 2015-08-12 00:25:39 +02:00
vlj 6e8b94a7e1 Add config option for d3d debug layer and adaptater 2015-08-12 00:25:39 +02:00
vlj 18e3e74070 d3d12: Fix depth read size 2015-08-12 00:25:38 +02:00
vlj c08ac779f4 d3d12: src and dst were inverted, fix it
now depth buffer is properly read, but it is too little
2015-08-12 00:25:38 +02:00
vlj 2031944792 d3d12: Do transition when reading depth buffer 2015-08-12 00:25:37 +02:00
vlj fafcce6d5f d3d12: Implement write depth buffer callback 2015-08-12 00:25:37 +02:00
vlj 986a39fcfb d3d12: clean upload command lists as well 2015-08-12 00:25:36 +02:00
vlj 75202ac55b d3d12: properly clean textures 2015-08-12 00:25:36 +02:00
vlj 1076727c75 d3d12: Use a heap for scale offset and fragment buffer too 2015-08-12 00:25:35 +02:00
vlj 740354d2c9 d3d12: Fix depth format mismatch 2015-08-12 00:25:35 +02:00
vlj e6146e4ecb d3d12: Fix single channel texture
Should now display font properly
2015-08-12 00:25:34 +02:00
vlj 4a89432d39 d3d12: Implement blend decoding 2015-08-12 00:25:34 +02:00
vlj 312ff7e8f5 RSX: Fix for default value of temp reg 2015-08-12 00:25:33 +02:00
vlj 727f54dd32 d3d12: Record command while gpu is busy rendering previous frame + cleaning fixes 2015-08-12 00:25:33 +02:00
vlj 71b9caf65a d3d12: Duplicate all resource to do real double buffering 2015-08-12 00:25:32 +02:00
vlj 5872144165 d3d12: Move texture code to another file + add the copy command as soon as possible 2015-08-12 00:25:32 +02:00
vlj abbd244376 d3d12: Fix fractal not animated in dynamic test 2 2015-08-12 00:25:31 +02:00
raven02 1471afcfe6 D3DGS naming fix 2015-08-12 00:25:31 +02:00
vlj b5f91a6e75 d3d12: Fix for vertex decompiler 2015-08-12 00:25:30 +02:00
raven02 b2577833f9 d3d12: DP2A 2015-08-12 00:25:30 +02:00
vlj 31ea9068de d3d12: Use true default value for vertex decompiler 2015-08-12 00:25:29 +02:00
raven02 9fc50fcce5 d3d12: Fix for vertex decompiler 2015-08-12 00:25:29 +02:00
vlj a9425fcf2a d3d12: Pass first clear value as clear optimised value to RTTs 2015-08-12 00:23:52 +02:00
vlj eb1b8b748a d3d12: Fix for fragment decompiler 2015-08-12 00:23:51 +02:00
vlj f2985f12c1 d3d12: Use heap for vertex buffer
It should consume less memory.
2015-08-12 00:23:51 +02:00
Zangetsu38 2aedd0633f Fix crash after launch game one mode release.
Fix Temporary.
2015-08-12 00:23:50 +02:00
vlj 7b25483b67 d3d12: depth read doesnt crash anymore 2015-08-12 00:23:50 +02:00
vlj 3f31976080 d3d12: Update 2015-08-12 00:23:49 +02:00
vlj 422a9f1fdc d3d12: Use VertexProgramDecompiler 2015-08-12 00:23:49 +02:00
vlj d2beafca4d d3d12: Update 2015-08-12 00:23:48 +02:00
vlj 5681781ab0 GL: Forgot hunk 2015-08-12 00:23:48 +02:00
vlj 05d6c8df60 d3d12: Update 2015-08-12 00:23:47 +02:00
vlj 07449abfc6 d3d12: Add more functions 2015-08-12 00:23:47 +02:00
vlj 72c84cb8aa d3d12: Add some more functions 2015-08-12 00:23:46 +02:00
vlj bf8a48e3bd d3d12: Some work to decompiler 2015-08-12 00:23:46 +02:00
vlj c465b6699a d3d12: Use the fragment decompile class 2015-08-12 00:23:45 +02:00
vlj edb9a97c17 d3d12: Some fix to quad emulation mode 2015-08-12 00:23:45 +02:00
vlj 445c7dd884 d3d12: Use a default value of 1 for .w channel of output in Vertex Program 2015-08-12 00:23:44 +02:00
vlj 2985f2d6e3 d3d12: Use naive vertex buffer offset 2015-08-12 00:23:44 +02:00
vlj a279aebf31 d3d12: Use an indexed draw for unindexed quad 2015-08-12 00:23:43 +02:00
vlj cbd7d3d614 d3d12: Fix depth being offseted by .5 + add depth buffer support 2015-08-12 00:23:43 +02:00
vlj 5640e81eb5 d3d12: Forgot hunk 2015-08-12 00:23:42 +02:00
vlj 4114df50c2 d3d12: Use correct VS debug macro + cleaning 2015-08-12 00:23:41 +02:00
vlj 1f9c8f757a d3d12: Add a swizzle to texture
Looks like shader4componentmapping doesnt work, maybe a bug.
2015-08-12 00:23:41 +02:00
vlj 3a75e6a357 d3d12: Some fixe to textures 2015-08-12 00:23:40 +02:00
vlj 782a11b47f d3d12: Add dump hlsl file to gitignore list 2015-08-12 00:23:40 +02:00
vlj 39039514d1 d3d12: Start implementing texture upload and usage 2015-08-12 00:23:39 +02:00
vlj 263294d263 d3d12: Some fixes to VP/FP decompiler 2015-08-12 00:23:39 +02:00
vlj 43f4ed49b4 d3d12: Some fix for VPDecompiler 2015-08-12 00:23:38 +02:00
vlj 16e8d6349e d3d12: Make compilation more robust 2015-08-12 00:23:38 +02:00
vlj f1ab5abe2e d3d12: Cleaning 2015-08-12 00:23:37 +02:00
vlj c3e162b442 d3d12: Read constants directly from fp 2015-08-12 00:23:37 +02:00
vlj 7b6ad026c6 d3d12: Add fragment constant offset cache 2015-08-12 00:23:36 +02:00
vlj 9d1993cdee d3d12: Fix for d3d12 pipeline cache 2015-08-12 00:23:36 +02:00
vlj ba66992ee3 d3d12: Use template class for caching 2015-08-12 00:23:35 +02:00
vlj a58974eac8 d3d12: Fix reversed output 2015-08-12 00:23:34 +02:00
vlj 2ac3c66c80 d3d12: Fix hash/compare/getSize for fragment program
It didn't properly take constants into account
2015-08-12 00:23:34 +02:00
vlj d1ebc47867 d3d12: Use actual hw in release mode + honor vsync option 2015-08-12 00:23:33 +02:00
vlj 5cb0fe63b8 d3d12: Avoid recompiling fragment shader if constants change 2015-08-12 00:23:33 +02:00
vlj 789ed767e2 d3d12: Move Constant inside main 2015-08-12 00:23:32 +02:00
vlj f446501339 d3d12: Try to fix fragment shaders first test 2015-08-12 00:23:32 +02:00
vlj 98a924874f d3d12: Inline constants
It's slow
2015-08-12 00:23:31 +02:00
vlj b6cc7af8cd d3d12: Support for fragment constants 2015-08-12 00:23:31 +02:00
vlj 88aea70100 d3d12: some fix for fragment program decompiler 2015-08-12 00:23:30 +02:00
vlj c96bc6231c d3d12: Print fps in windows title 2015-08-12 00:23:30 +02:00
vlj a276391e87 d3d12: Fix linkage between VS and PS 2015-08-12 00:23:29 +02:00
vlj ee3e5cfe1f d3d12: Support for fragment constant buffer 2015-08-12 00:23:29 +02:00
vlj 9cb87552b8 d3d12: Fragment program decompiler can decompile basic shader 2015-08-12 00:23:28 +02:00
vlj bb643070bd d3d12: Start working on fragment decompiler 2015-08-12 00:23:28 +02:00
vlj 5da166b26b d3d12: Move/clean code 2015-08-12 00:23:27 +02:00
vlj caab6cbc60 d3d12: Some cleaning 2015-08-12 00:23:27 +02:00
vlj 16f40fb69c d3d12: Fix some warnings 2015-08-12 00:23:26 +02:00
vlj 3960555e45 d3d12: Use the compiler vertex program
It works with the primitive sample.
2015-08-12 00:23:26 +02:00
vlj 96c4e87bf5 d3d12: Some extra code again 2015-08-12 00:23:25 +02:00
vlj 5a1b756c14 d3d12: Dump program parameters 2015-08-12 00:23:25 +02:00
vlj 3853dffce2 d3d12: Start working on Vertex program decompilation 2015-08-12 00:23:24 +02:00
vlj 87d51665dc d3d12: Fix some warning 2015-08-12 00:23:24 +02:00
vlj d93e95b614 d3d12: Add support for various primitives 2015-08-12 00:23:23 +02:00
vlj 75219be066 d3d12: cache PSO State too 2015-08-12 00:23:23 +02:00
vlj da5b047c58 d3d12: Change some variable name to better reflect their behavior 2015-08-12 00:23:22 +02:00
vlj b016fbc9e4 d3d12: Add missing hunk + properly clean our D3D allocations 2015-08-12 00:23:22 +02:00
vlj 07ea311b3a d3d12: Separate scaleOffset and classic constants 2015-08-12 00:23:21 +02:00
vlj 40e19e0c95 d3d12: Something strange is happening to depth... 2015-08-12 00:23:21 +02:00
vlj 411265d83a d3d12: Use constant buffer content 2015-08-12 00:23:20 +02:00
vlj d627f9cb83 d3d12: Stop emulation if program compilation fails 2015-08-12 00:23:20 +02:00
vlj 1c2849a736 d3d12: Remove useless class member 2015-08-12 00:23:19 +02:00
vlj 28b964aeb0 d3d12: Fix Input Layout 2015-08-12 00:23:19 +02:00
vlj 65fbc57221 d3d12: Enable constant buffer support 2015-08-12 00:23:18 +02:00
vlj 6f487f910c d3d12: Fix build with DX12_SUPPORT not def 2015-08-12 00:23:18 +02:00
vlj 646c908a93 d3d12: Fix some warnings 2015-08-12 00:23:17 +02:00
vlj 9abaf80099 d3d12: Vertex element are not interleaved. 2015-08-12 00:23:17 +02:00
vlj 8ec9f84c1b d3d12; Factorise IALayout generation code 2015-08-12 00:23:16 +02:00
vlj 14e9323154 d3d12: make some shape appears 2015-08-12 00:23:16 +02:00
vlj fedd35989c d3d12: Start writing vertex/index buffer support 2015-08-12 00:23:15 +02:00
vlj 722e6b8ac5 d3d12: Fix some warning and start adding IALayout support 2015-08-12 00:23:15 +02:00
vlj d2889786a2 d3d12: Some cleaning 2015-08-12 00:23:14 +02:00
vlj c6e2f070ee d3d12: Some fix for creation of PSO 2015-08-12 00:23:14 +02:00
vlj 34bf82d81c d3d12: Add sensible default to PSO 2015-08-12 00:23:14 +02:00
vlj 2734c98716 d3d12: PSO related reorganisation 2015-08-12 00:23:13 +02:00
vlj e58292bb11 d3d12: PSO caching works 2015-08-12 00:23:13 +02:00
vlj 0ebc221011 d3d12: VS Caching apparently fixed 2015-08-12 00:23:12 +02:00
vlj c29616b341 d3d12: Fragment Program caching works
But not VP...
2015-08-12 00:23:12 +02:00
vlj 3f24da47a0 d3d12: Update vs project files 2015-08-12 00:23:11 +02:00
vlj d5b4a31c37 d3d12: Start caching shaders 2015-08-12 00:23:11 +02:00
vlj 728736ccdd d3d12: Add fbo support and blit it before present 2015-08-12 00:23:10 +02:00
vlj 2f5a6eb993 d3d12: Fix gfxcommandlist leak 2015-08-12 00:23:10 +02:00
vlj b1c3e09155 d3d12: Clean backbuffers and descriptors 2015-08-12 00:23:09 +02:00
vlj 7773631401 d3d12: backbuffer are properly cleared 2015-08-12 00:23:09 +02:00
vlj 5e7531b9bf d3d12: Use ifdef to guard code 2015-08-12 00:23:08 +02:00
vlj 4f708ab9ee d3d12: Enable buffer flip 2015-08-12 00:23:08 +02:00
vlj 0b5816d6d6 d3d12: Create window 2015-08-12 00:23:07 +02:00
vlj 976d707596 d3d12: Start implementation 2015-08-12 00:23:07 +02:00
Raul Tambre d10c44ed3a Merge pull request #1175 from danilaml/appveyor-cmake
Make it possible to compile rpcs3 on win via cmake and make win builds available for download on appveyor
2015-08-11 20:44:22 +03:00
Vincent Lejeune e459d01927 PPU/LLVM: Add debug tool for LLVM recompiler 2015-08-11 18:10:32 +02:00
Raul Tambre 1e9c266457 Merge pull request #1176 from vlj/llvm-fix
PPU/LLVM: Fix recursive call crashing llvm backend
2015-08-11 08:24:07 +03:00
Vincent Lejeune 6e8a5f3a5f PPU/LLVM: Avoid recompiler thread spinning forever 2015-08-10 20:32:22 +02:00
Vincent Lejeune 53769ae1bd PPU/LLVM: Fix recursive call crashing llvm backend 2015-08-10 19:59:30 +02:00
Danila Malyutin 6e84db45f2 Enable artifacts
now appveyor builds can be downloaded for testing
2015-08-10 01:59:05 +03:00
Danila Malyutin 1af7e32c93 Fix LNK4098 warning 2015-08-10 01:59:04 +03:00
Danila Malyutin 6e70258d82 Enable appveyor logger 2015-08-10 01:59:03 +03:00
Danila Malyutin 570e41f8e0 Small fixes and improvments 2015-08-10 01:59:03 +03:00
Raul Tambre fd5fbab115 Merge pull request #1171 from vlj/llvm-fix
Fix Sonic CD music with LLVM backend
2015-08-08 18:35:29 +03:00
Danila Malyutin e06b33162d Use precompiled wxWidgets package
have to use gdrive until official 3.1 release
2015-08-08 04:43:08 +03:00
Danila Malyutin ddff65d288 Make it possible to build rpcs3 via cmake/vs2015 combo. 2015-08-08 04:43:08 +03:00
Danila Malyutin e91589cab5 clean up 2015-08-08 04:43:07 +03:00
Danila Malyutin 36648805b8 Update OpenAL 2015-08-08 04:43:06 +03:00
Danila Malyutin fafdc213ed Fix OpenAL and and wxWidgets finding on cmake/win 2015-08-07 18:30:08 +03:00
vlj cc83a9df3b Merge pull request #44 from danilaml/patch-1
Completely fix MTOCRF
2015-08-06 23:42:33 +02:00
Raul Tambre 8fd52666b7 Minor fixes in cellNetCtl and cellSysutil
Also fixed a couple minor bugs relating to cache.
2015-08-06 15:24:11 +03:00
Raul Tambre 48def8fa5b Minor sceNpManagerGetStatus improvements
Might allow a couple games to go in-game. Also a couple other minor fixes.
2015-08-06 15:24:10 +03:00
Raul Tambre 480996b140 Various stubbing 2015-08-06 15:24:10 +03:00
Raul Tambre 1012a3e312 Minor cellSysutil improvements, cellNetCtl fixes 2015-08-06 15:24:09 +03:00
Raul Tambre c69dfff16e cellNetCtlGetInfo improvements and fixes 2015-08-06 15:24:09 +03:00
Raul Tambre c12af57bdd Implement _sys_printf and sys_prx improvements 2015-08-06 15:24:08 +03:00
Raul Tambre 91f67b683b sceNpMatching2 stubs and some refactoring 2015-08-06 15:24:04 +03:00
Danila Malyutin a3c22eb836 Add MTOCRF tests 2015-08-06 03:43:49 +03:00
Danila Malyutin 98a3cbdf84 Fix MTOCRF instruction
to be the same as interpreter.
2015-08-06 03:43:48 +03:00
Vincent Lejeune 09347ba92a PPU/LLVM: Fix MTOCRF instruction 2015-08-05 17:27:59 +02:00
Vincent Lejeune fc3314ea96 PPU/LLVM: Print PPC block before translated LLVM bytecode 2015-08-05 17:27:59 +02:00
Raul Tambre c0f1913e44 Merge pull request #1170 from danilaml/appveyor
Add AppVeyor support.
2015-08-05 13:12:05 +03:00
Danila Malyutin f35a2c8a04 Be a little more consistent with travis
and disable tests (we don't have any). Also cache didn't help much so disable it for now.
2015-08-05 03:38:26 +03:00
Danila Malyutin 0f28879f8d Try to use cache to speed up build 2015-08-04 22:29:03 +03:00
Danila Malyutin 17a4222c31 Add appveyor badge 2015-08-04 18:52:16 +03:00
Danila Malyutin 9a8fa12718 Add appveyor.yml 2015-08-04 18:47:02 +03:00
Hykem 0541371a0e Merge pull request #1161 from Nekotekina/master
Various changes
2015-08-02 16:54:27 +01:00
Hykem 7aa86c50c6 Merge pull request #1167 from vlj/llvm36
PPU/LLVM: Try to fix crash (again) when cleaning modules
2015-08-02 16:54:12 +01:00
Hykem 2a096effa7 Merge pull request #1168 from danilaml/logstd
Log stdout and stderr on windows
2015-08-02 16:53:59 +01:00
vlj 8a6171caa5 Merge pull request #43 from danilaml/patch-2
Fix crashes in tests with unresolved "func" errors
2015-08-02 14:58:17 +02:00
Nekotekina 6da5138683 sysPrxForUser module split 2015-08-02 05:15:49 +03:00
Danila Malyutin eac63f7265 Fix crashes in tests with unresolved "func" errors
and uncomment fixed tests
2015-08-02 04:16:44 +03:00
Danila Malyutin 8f00342612 Log stdout and stderr on win
(Some modules like llvm can repport errors to stderr).
2015-08-02 04:06:59 +03:00
Vincent Lejeune 8f490e8ecd PPU/LLVM: Try to fix crash (again) when cleaning modules 2015-08-01 21:56:44 +02:00
Nekotekina 8fcaac5f1d cellSysutil crap split, cleanup, functions added 2015-08-01 21:49:01 +03:00
Nekotekina 0b1e45b6b5 Some functions added 2015-08-01 14:39:43 +03:00
Nekotekina ce9cd13e42 cellL10n, cellRtc, cellSail cleanup 2015-08-01 14:39:41 +03:00
Nekotekina b391e93466 Modules cleanup 2015-08-01 14:39:39 +03:00
Nekotekina a2646f9871 ModuleManager cleanup 2015-08-01 14:39:37 +03:00
Nekotekina eb5974322f cellStorage.cpp, cellVideo(Export|Upload) modules 2015-08-01 14:39:35 +03:00
Nekotekina 137a38b3c6 cellRec, cellRemotePlay, cellSysconf 2015-08-01 14:39:33 +03:00
Nekotekina 08b6428d5c cellPrint module added 2015-08-01 14:39:31 +03:00
Nekotekina 2eaf5cdc01 cellOskDialog, cellPhoto(Decode|Export|Import) 2015-08-01 14:39:29 +03:00
Nekotekina 7361b4e079 cellImeJp, cellMusic(|Decode|Export), cellSysutilMisc 2015-08-01 14:39:28 +03:00
Nekotekina c364c6a787 cellGameExec, cellAvconfExt, cellSysutilAvc2 modules 2015-08-01 14:39:26 +03:00
Nekotekina 16ad4936ee atomic.h fixed 2015-08-01 14:39:24 +03:00
Nekotekina 776eafa0ce cellDaisy, cellSpudll modules 2015-08-01 14:39:22 +03:00
Nekotekina 9b928ee835 cellPngEnc, cellSailRec, cellUsbPspcm modules 2015-08-01 14:39:20 +03:00
Nekotekina ae73330314 cellJpgEnc, cellKey2char, cellSheap added
ModuleManager cleanup
2015-08-01 14:39:18 +03:00
Nekotekina 5a9896c78c cellHttp, cellHttpUtil, cellSsl, cellBGDL added 2015-08-01 14:39:16 +03:00
Nekotekina 13a5a96117 cellCelp8Enc, cellCelpEnc module added 2015-08-01 14:39:14 +03:00
Nekotekina 06ef95fbea File/dir descriptors numbering experimental impl 2015-08-01 14:39:12 +03:00
Nekotekina badeb29901 Minor fixes 2015-08-01 14:39:10 +03:00
Nekotekina 02c0b69adb cellSaveData module added 2015-08-01 14:39:08 +03:00
Nekotekina 3cc0383db7 cellAtracMulti stub added 2015-08-01 14:39:06 +03:00
Nekotekina a12220d234 Minor formatting fix 2015-08-01 14:39:04 +03:00
Nekotekina 25056f49c4 Added on_error handler for Module 2015-08-01 14:39:03 +03:00
Nekotekina 5815d90eb4 Minor formatting fix, cellRudp fix 2015-08-01 14:39:01 +03:00
Nekotekina 16b7d204d2 decode_x64_reg_op: MOVUPS support 2015-08-01 14:38:59 +03:00
Nekotekina 8e1991c1e1 semaphore_t, RSX fixes
1) GS_LOCK_WAIT_FLUSH semaphore eliminated
2) GS_LOCK_WAIT_FLIP semaphore left unused
3) cellRescSetWaitFlip/cellGcmSetWaitFlip purged: they don't wait for
flip, it's a nonsense, they only generate some RSX command
4) Semaphores rewritten
2015-08-01 14:38:57 +03:00
Nekotekina 71a378a3fb vm::wait_op improved
Now it accepts thread_t and its descendants (but may require adding
friend vm::waiter_lock_t class)
2015-08-01 14:38:55 +03:00
Nekotekina ff1f6d3d4f PPUInterpreter formal fix (affects nothing) 2015-08-01 14:38:53 +03:00
Nekotekina 3d665148ca cellMsgDialog race condition fixed 2015-08-01 14:38:51 +03:00
Nekotekina be2f993155 func_def eliminated 2015-08-01 14:38:49 +03:00
Nekotekina 31774b7262 atomic.h, sys_cond/sys_lwcond improved 2015-08-01 14:38:47 +03:00
Nekotekina ffc11bfda3 b8 type 2015-08-01 14:38:45 +03:00
KaOs1 804ee1183b Install PKGs into custom folder 2015-07-31 22:15:07 +02:00
darkf 2f8a41d810 sys_net: Implement socketselect 2015-07-28 04:43:35 -07:00
Danila Malyutin 6e6170ae1c Try to disable -Wformat-security at all
only fmt triggered it (gcc bug?) and we have clang too so we can live
with that until they fix it.
2015-07-27 03:40:42 +03:00
Danila Malyutin caa6db8617 Replace clang diagnostics with gcc
Clang understands both types of pragmas. Unfortunately it seems that due to bug in gcc (id=53431) this doesn't help
2015-07-27 03:33:59 +03:00
Danila Malyutin 9a37acee3e Fixes for abstract class without virtual destructor 2015-07-27 03:01:43 +03:00
Danila Malyutin e0d5cdd5e1 Fixes for trigraph, unused and tautological warning. 2015-07-26 23:48:59 +03:00
Danila Malyutin 582329ffc6 Fixes for some of clang warnings 2015-07-26 23:24:37 +03:00
Danila Malyutin 5ae6586803 Add missing override specifiers 2015-07-26 18:37:14 +03:00
Danila Malyutin e810eabd32 Clean up and fixes 2015-07-26 18:09:33 +03:00
Danila Malyutin 6849192b39 Tabify 2015-07-26 18:09:31 +03:00
Danila Malyutin 6832910187 Update llvm tests to work with new mcjit recomp
WIP, also found some offending instructions with it.
2015-07-26 18:09:29 +03:00
Raul Tambre a239eaf630 cellSpurs additions and internal struct refactoring
Also updated the README.
2015-07-26 17:04:10 +03:00
Raul Tambre 14897b23b7 Minor formatting 2015-07-26 16:44:55 +03:00
Raul Tambre 6ef4cecf57 Split sceNp into sceNpUtil and register sceNpClans 2015-07-26 16:44:10 +03:00
Raul Tambre 7b0b0440ef cellFont cleanup 2015-07-26 16:43:35 +03:00
Raul Tambre 45dda65ce9 Add NV4097_SET_TEX_COORD_CONTROL arguments
Also added a TODO for _cellSpursLFQueueInitialize.
2015-07-26 16:42:02 +03:00
Raul Tambre 9ecedfdf3c Better cellNetCtlGetInfo logging
Also added back some more logging in cellSaveData, but this time only
printed as warnings.
2015-07-26 16:34:11 +03:00
Zangetsu38 e47493e81b Some small change.
Update README.md for VS 2015.
remove sln buildbot
remove unused appveyor config
remove package.bat, no longer current, now found in bigpet/rpcs3-buildbot-tools
2015-07-23 15:05:23 +02:00
Peter Tissen 4624377942 use official wxWidgets repo 2015-07-23 12:17:58 +02:00
Danila Malyutin 10c5d87f18 Update .gitignore
I think these files are sometimes generated by vs15
2015-07-23 10:46:24 +03:00
Danila Malyutin 831858ce7e Change jit to mcjit in CMakeLists
This fixes compiling on linux
2015-07-23 10:46:12 +03:00
Danila Malyutin af90f03323 Purge llvm compiling from travis (yay!)
Reduces build times greatly.
2015-07-23 10:45:58 +03:00
vlj 26f6b89530 PPU/LLVM: Remove duplicate m_address_to_ordinal map and improve cleaning 2015-07-22 02:11:00 +03:00
vlj 501c14fc65 PPU/LLVM: Clean code
Replace auto with real type, reduce indent and useless variables...
2015-07-22 02:10:58 +03:00
vlj 4adb9a2683 PPU/LLVM: Do not cache block 2015-07-22 02:10:57 +03:00
vlj abd61538ea PPU/LLVM: Rename ExecutionEngine to CPUHybridDecoderRecompiler
In order to avoid naming conflict with llvm own ExecutionEngine
2015-07-22 02:10:55 +03:00
vlj 7592b87a90 PPU/LLVM: Fix build 2015-07-22 02:10:54 +03:00
Nekotekina b3dfa4f5a2 VS2015 2015-07-22 02:10:14 +03:00
Peter Tissen ecf78dbafe add various temporary VS2015 changes (some to fixup temporary bugs, don't merge) 2015-07-22 01:32:21 +03:00
vlj cfa0079c3d PPU/LLVM: Fix branch detection
Thanks Nekotekina for the fix
2015-07-22 01:32:19 +03:00
Vincent Lejeune b7d5d70a92 PPU/LLVM: Fix for callback spinning undefinitly
Thanks for Nekoteki for the fix
2015-07-22 01:32:18 +03:00
Nekotekina cdf38d15d2 sys_lwmutex, sys_lwcond syscalls improved 2015-07-21 23:14:42 +03:00
Nekotekina 6462201aac Some macro removed 2015-07-21 23:14:41 +03:00
Nekotekina 023d385af8 sys_semaphore improved 2015-07-21 23:14:39 +03:00
Nekotekina 0aefaec46e sys_event improved, some unnamed functions named 2015-07-21 23:14:38 +03:00
Nekotekina 6019e02457 sys_rwlock improved 2015-07-21 23:14:36 +03:00
Nekotekina 6255f3b07d sys_event_flag improved 2015-07-21 23:14:34 +03:00
Nekotekina bc91ad0f4d sys_event improved 2015-07-21 23:14:33 +03:00
Nekotekina 2f7fe35f5c Minor style change 2015-07-21 23:14:31 +03:00
Nekotekina 8175630619 sys_cond/sys_mutex improved 2015-07-21 23:14:29 +03:00
Nekotekina 43d3ccce95 SPU Channels improved 2015-07-21 23:14:28 +03:00
Nekotekina 9913c9059c Very bugfix
I reverted cellSaveData changes since they were relying on the
uninitialized local variable `save_entry` and thus were almost
completely wrong.
2015-07-21 23:14:26 +03:00
Nekotekina 5bd83516ba SPU Interrupt Enable Status implemented
SPU Interrupts are still NOT implemented
2015-07-21 23:14:25 +03:00
Nekotekina 1519a2b468 Exceptions passed to wait_op caller 2015-07-21 23:14:23 +03:00
Nekotekina a7668ff57f SPU_EVENT_LR improved 2015-07-21 23:14:22 +03:00
Nekotekina 1e021cdbba waiter_map reintroduced, combined with vm 2015-07-21 23:14:20 +03:00
Nekotekina a8fcf71f9c Minor bugfix, cleanup 2015-07-21 23:14:04 +03:00
Nekotekina 3bc6c53eb3 sys_interrupt improved 2015-07-18 03:12:10 +03:00
Nekotekina b8a27d8a4c Silly bugs fixed 2015-07-18 03:12:08 +03:00
Nekotekina 48c75105e2 "Memory" eliminated 2015-07-18 03:12:06 +03:00
Danila Malyutin aad97aaea1 Enable colorized output for gcc
Since we use 4.9 now. Makes reading logs much easier!
2015-07-17 03:30:45 +03:00
Danila Malyutin 8f7e70d959 Enable travis-ci for all branches
except ppu_recompiler (dead branch).
That way it's much easier to setup travis on forks without messing with master yml.
I see no reason to run travis on master only anyway.
2015-07-17 02:45:51 +03:00
Raul Tambre 5f43360711 Fix Travis compiling 2015-07-16 21:36:06 +03:00
Raul Tambre 67e647a2ca sys_net and cellRudp fixes 2015-07-16 20:28:47 +03:00
Raul Tambre 746be46f1e Huge improvements to cellNetCtlGetInfo 2015-07-16 17:09:42 +03:00
Raul Tambre 6305d4edf9 Minor savedata fix and cellSail callback fixes 2015-07-16 14:31:59 +03:00
Raul Tambre 6beec80b60 Draft socketselect, other minor fixes 2015-07-15 16:21:41 +03:00
Raul Tambre 82733e1943 cellRudp improvements and fixes 2015-07-15 11:52:20 +03:00
Hykem 93e850404e Merge pull request #1144 from tambry/tea
Saving fix and improvements to sceNp2 and cellCamera
2015-07-14 18:03:33 +01:00
Raul Tambre 2e3113b5f2 Fix Travis compiling 2015-07-14 18:59:10 +03:00
Raul Tambre 80b544aa78 Add sceNp2 and some sceNpMatching2 functions 2015-07-14 15:07:23 +03:00
Raul Tambre ddcaf4972f Better fix for savedata and cellCamera improvements 2015-07-14 14:45:31 +03:00
Raul Tambre 66cf864ee0 Fix saving and some more logging
Fixes Shin Hayarigami (BLJS10279).
2015-07-13 22:06:16 +03:00
Hykem 3896c39ceb Update MainFrame.cpp
Use _WIN32 instead of __WINDOWS__
2015-07-11 12:29:47 +01:00
Hykem 916967a7d7 Merge pull request #1140 from danilaml/linux-icon-fix
Fix for icons on OSes other than Windows. Small fixes for travis
2015-07-11 12:27:32 +01:00
Hykem aad293df1a Merge pull request #1139 from danilaml/patch-2
Update travis to use gcc 4.9
2015-07-11 12:26:23 +01:00
Hykem b08c3186be Merge pull request #1136 from Nekotekina/master
Various changes
2015-07-11 12:25:42 +01:00
Danila Malyutin 7795305c9f Fix for icons on OSes other than Windows. Small fixes for travis
Didn't test. Also added memory monitoring to travis.
2015-07-11 04:46:27 +03:00
Nekotekina 06dacf04b5 Log style fix 2015-07-11 02:38:40 +03:00
Danila Malyutin b7c7148937 Update travis to use gcc 4.9
Due to this change: https://github.com/RPCS3/rpcs3/commit/de9a2fd556123a3bcde4752a9d419db045b10d00#commitcomment-12110160
2015-07-10 21:01:25 +03:00
Nekotekina 2d37c6b5e2 sys_memory, sys_mmapper rewritten
LogBase::Fatal() removed
2015-07-10 20:37:12 +03:00
Nekotekina 39629c5c7a IdManager collision threat fix 2015-07-10 04:31:43 +03:00
Nekotekina 4bacfcf847 sys_lv2dbg added, bugfix 2015-07-10 04:31:41 +03:00
Nekotekina daa93a7226 ARMv7 func binder improved (faster compilation) 2015-07-10 04:31:39 +03:00
Nekotekina 096fc86f17 SC_FUNC improved (faster compilation) 2015-07-10 04:31:37 +03:00
Nekotekina 82781e620a Small fixes 2015-07-10 04:31:36 +03:00
Nekotekina c0f13f7084 sleep_queue_t rewritten, used in sys_cond/sys_mutex
Some synchronization fixes
2015-07-10 04:31:34 +03:00
Nekotekina eafddd9e33 CPUThread fixes, thread_t cleanup 2015-07-10 04:31:32 +03:00
Nekotekina 83321c5be7 sys_time_get_current_time fixed, CALL_FUNC draft 2015-07-10 04:31:30 +03:00
Nekotekina 22e1da5e76 Minor cleanup 2015-07-10 04:31:29 +03:00
Nekotekina 3064cf8101 CHECK_EMU_STATUS, autojoin_thread_t 2015-07-10 04:31:27 +03:00
Nekotekina 8f9e1100c8 SPU fixes, various fixes 2015-07-10 04:31:25 +03:00
Nekotekina 721ad404d2 VM_CAST macro 2015-07-10 04:31:23 +03:00
Nekotekina 8c00dcd02d Bugfix 2015-07-10 04:31:21 +03:00
Nekotekina 32d3d1fbe5 EXCEPTION() macro usage, sceNpTrophy improved 2015-07-10 04:31:20 +03:00
Nekotekina 6f1e76198a Some fixes 2015-07-10 04:31:18 +03:00
Nekotekina 3aefa2b4e1 ThreadBase rewritten (wip) 2015-07-10 04:31:16 +03:00
Nekotekina b7a320fbbd cellCamera fix 2015-07-10 04:31:14 +03:00
Nekotekina ec68e012f9 vm::var replaced, atomic_op simplified 2015-07-10 04:31:12 +03:00
Nekotekina c598fe7aa9 atomic_op() rewritten, atomic.h refactoring
cellSync refactoring, wait_op() rewritten, bugfixes
2015-07-10 04:31:10 +03:00
Nekotekina 39f836b495 re32/se32/... macro eliminated, some fixes 2015-07-10 04:31:09 +03:00
Nekotekina ef6f9f6ded be_t constructor implemented, make() eliminated
be_t enums are forbidden, le_t improved, some operators cleaned.
2015-07-10 04:31:07 +03:00
S Gopal Rajagopal a800d21a31 SPURS: Fix some bugs
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
2015-07-10 04:31:05 +03:00
S Gopal Rajagopal fe67504ffc SPURS: Use atomic ops to implement some portions of event flags and trace
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
	rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp
2015-07-10 04:31:03 +03:00
S Gopal Rajagopal dc92a79fcc SPURS: Implement some core functions
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
2015-07-10 04:31:01 +03:00
Nekotekina 714da1aa7c vm::var fix, vm::ptr improved
GetCurrentPPUThread() removed
2015-07-10 04:31:00 +03:00
S Gopal Rajagopal 46e4f2d48c SPURS: Implement some portions of spurs initialization
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
	rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp
	rpcs3/Emu/SysCalls/lv2/sys_event.cpp
	rpcs3/Emu/SysCalls/lv2/sys_event.h
	rpcs3/Emu/SysCalls/lv2/sys_lwmutex.cpp
	rpcs3/Emu/SysCalls/lv2/sys_lwmutex.h
	rpcs3/Emu/SysCalls/lv2/sys_semaphore.cpp
	rpcs3/Emu/SysCalls/lv2/sys_semaphore.h
	rpcs3/Emu/SysCalls/lv2/sys_spu.cpp
	rpcs3/Emu/SysCalls/lv2/sys_spu.h
2015-07-10 04:30:58 +03:00
S Gopal Rajagopal 5b7f701878 SPURS: Implement SPURS SPU thread exit using throw
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpursSpu.cpp
2015-07-10 04:30:56 +03:00
Nekotekina c0fdef7a12 Small fix 2015-07-10 04:30:54 +03:00
Nekotekina 317417d541 vm::cptr/bcptr/lcptr used widely for const pointers 2015-07-10 04:30:53 +03:00
Nekotekina e896da8064 Added .aligned() method for vm::ptr
Added set_alignment() macro for setting alignment
Added alignof32() macro similar to sizeof32()
Added CHECK_SIZE, CHECK_ALIGN macro with static_assert
Minor refactoring
2015-07-10 04:30:51 +03:00
Nekotekina a7f77c27f7 ARMv7Context used through multiple inheritance
Forgive me...
2015-07-10 04:30:49 +03:00
Nekotekina 6c4148a949 Bugfix 2015-07-10 04:30:47 +03:00
Nekotekina bc9481db1b PSV modules refactoring 2015-07-10 04:30:45 +03:00
Nekotekina 8229c0ed3d Compilation fix 2015-07-10 04:30:43 +03:00
Nekotekina edb9595721 Using vm::ps3 namespace moved in proper places
Various fixes
2015-07-10 04:30:41 +03:00
Nekotekina 7eacfe19f6 vm::ptr fixes
std::function conversion removed (since it's convertible anyway),
pointer difference return type changed
vm::cptr, vm::bcptr aliases added
2015-07-10 04:30:39 +03:00
Nekotekina 63c5b2ab32 sys_fs_open() O_APPEND support
Added vm::static_ptr_cast, vm::const_ptr_cast, vm::reinterpret_ptr_cast
Added pointer comparison with vm::null
2015-07-10 04:30:37 +03:00
Danila Malyutin e338c3938b Trying to fix potential resource leak 2015-07-10 04:26:59 +03:00
Danila Malyutin 8483b17995 Initialize pointers to null on creation
Fixes access violation in hello_world.ppu.elf on window close.
As I understood the reason - when dtor of XAudioThread is called it
checks:
if (m_source_voice) Quit();
But m_source_voice isn't initialized to 0 by default so when in Quit()
in tries to call some funcs from unitialized ptrs and access violation
happens.
2015-07-10 04:26:57 +03:00
Danila Malyutin 6ce793d582 Deleted unneeded xaudio #ifs
There is no improvement in 2.8 and on my setup (8.1 x64) it always
preferred minidx headers anyway (so it'd still load 2.7 dll).
2015-07-10 04:26:56 +03:00
Danila Malyutin ee2940c159 Swapped buttons positions in about dialog
It's much more intuitive (and common) to have OK in the bottom-right
corner.
2015-07-10 04:26:54 +03:00
Raul Tambre f272171099 Re-do network status and add it to settings 2015-07-09 20:42:39 +03:00
Raul Tambre 909b512493 SysCall improvements 2015-07-09 20:19:29 +03:00
Raul Tambre 0acd37a328 Make icon show on actual window 2015-07-08 19:16:18 +03:00
Raul Tambre 61cd591ad5 Improve cellGameBootCheck 2015-07-06 14:47:49 +03:00
Raul Tambre 30c25cb722 Added NV4097_SET_TEXTURE_CONTROL2
Still need to use the parameters that are passed.
2015-07-06 10:12:17 +03:00
Hykem a27a51124f Merge pull request #1130 from Zangetsu38/Dante
Add Icon on the .exe
2015-07-04 12:03:06 +01:00
Hykem a114dbcd76 Merge pull request #1132 from vlj/rsx
Rsx: Some interface changes
2015-07-04 12:02:45 +01:00
Hykem 1e30077a65 Merge pull request #1133 from Zangetsu38/Zangetsu
Update Submpodule asmjit
2015-07-04 12:02:30 +01:00
vlj f4efeabcf3 RSX: Rename and document function member. 2015-07-03 17:08:06 +02:00
vlj 972515938c Memory: Fix virtualProtect protecting too much memory. 2015-07-03 17:08:06 +02:00
Zangetsu38 7d576117f9 Update Submpodule asmjit 2015-07-02 19:10:00 +02:00
vlj 4a7f6af8d9 Memory: Add a callback allowing customisation of handle_access_violation. 2015-07-02 19:05:27 +02:00
raven02 3a0894aaea RSX: Use CELL_GCM suffix for index array 2015-07-02 19:01:19 +02:00
vlj 5abeec85cc GL/RSX: Let backend call LoadVertex themselves. 2015-07-02 19:01:19 +02:00
vlj 4485e6b869 RSX: Do not emit error when parsing NV4097_SET_NO_PARANOID_TEXTURE_FETCHES
This opcode disables whole quad fetch on RSX, this is handled by drivers
on PC api.
2015-07-02 19:01:18 +02:00
vlj 288581cb43 RSX/GL/Null: Move semaphore handling to backend 2015-07-02 19:01:18 +02:00
Zangetsu38 c47082f725 Remove win32 Debug - MemLeak 2015-07-02 05:07:48 +02:00
Zangetsu38 1b5f2579a5 Add Icon on the .exe
thx BigPet for you help
2015-06-30 20:36:46 +02:00
Hykem 01bb63b1a6 Merge pull request #1128 from Zangetsu38/patch-1
Remove -x64 on exe because now it is useless
2015-06-30 17:26:01 +01:00
Zangetsu38 5804ce5f84 Remove -x64 on exe because now it is useless 2015-06-28 18:09:28 +02:00
B1ackDaemon bf74c0c749 Merge pull request #1124 from vlj/gcmsys
sysGCM: Fix for getNextCommandBufferBeginEnd
2015-06-23 17:53:56 +03:00
vlj 0993ee08e6 sysGCM: Fix for getNextCommandBufferBeginEnd
We were sometimes using memory outside of buffer.
It fixes vertex attribute test.
2015-06-22 00:59:14 +02:00
Hykem b25eb39fba Merge pull request #1122 from vlj/gcmsys
SysGCM: Split default command buffer into 32kb big fragments and swap between them
2015-06-20 15:25:46 +01:00
Vincent Lejeune 9a91b188df SysGCM: Split default command buffer into 32kb big fragments and swap between them 2015-06-20 00:52:21 +02:00
Hykem 596546df5a Merge pull request #1121 from vlj/rsx
Rsx: Improve debugger
2015-06-19 14:54:29 +01:00
vlj 712a514c6d RSXDebugger: Make bigger command list window 2015-06-17 22:09:04 +02:00
vlj b353cd4ecb RSXDebugger: Display viewport size 2015-06-17 22:09:04 +02:00
vlj e7b459573e RSXDebugger: Add clip details when parsing clip horizontal 2015-06-17 22:09:03 +02:00
vlj cf7e5028a4 RSXDebugger: Add surface detail when parsing set surface format 2015-06-17 22:09:03 +02:00
vlj 629c290faa RSXDebugger: Print more accurate semaphore 2015-06-17 22:09:02 +02:00
vlj 4b0d8557b4 RSXDebugger: Disasm a couple more command 2015-06-17 22:08:57 +02:00
Hykem de9a2fd556 Merge pull request #1119 from Nekotekina/master
be_t, vm::ptr, vm::ref improved
2015-06-16 15:00:30 +01:00
Hykem c51ce40d8d Merge pull request #1117 from Zangetsu38/master
Update glext.h on version 31191
2015-06-16 15:00:22 +01:00
Nekotekina 9c1c3bffbe is_be_t, is_le_t fixed 2015-06-15 20:00:08 +03:00
Nekotekina d8b1c3118a vm::ref assignment operators fixed 2015-06-15 19:21:23 +03:00
Nekotekina e833904b02 BEType improved (bugfix) 2015-06-15 19:21:21 +03:00
Nekotekina d7cb5a6e9e vm::ref improved (operators)
atomic operators fixed, vm::ptr operators improved
2015-06-15 19:21:20 +03:00
Nekotekina b7d967361d vm::ptr conversion operator fixed 2015-06-15 19:21:18 +03:00
Nekotekina 93dcd704c5 vm::psv::pptr usage 2015-06-15 19:21:16 +03:00
Nekotekina 3064560027 vm::ptr refactoring (operators improved)
vm::pptr, vm::bpptr added for PS3
is_le_t added
sizeof32() added (32-bit sizeof macro)
2015-06-15 19:21:14 +03:00
Nekotekina 8c62a893a9 cellGifDec, cellPngDec: small update 2015-06-15 19:21:12 +03:00
Nekotekina a77a75660b Compilation fix 2015-06-15 19:21:10 +03:00
Nekotekina 4d9add5e7c vm::ref improved, bugfixes 2015-06-15 19:21:09 +03:00
Nekotekina 1256d648c1 be_t simplified, vm::ref improved
remove_be_t renamed to to_ne_t (to native endianness)
le_t and to_le_t draft, bugfixes
2015-06-15 19:21:07 +03:00
Igor null 5ae2349f36 changed broken breakpoints database format to a consistent format 2015-06-15 18:09:21 +03:00
Zangetsu38 1dc2f6a164 Update glext.h on version 31191
Fix correct size icon with correct proportion
2015-06-11 12:52:56 +02:00
Hykem d86c33c09e Merge pull request #1111 from danilaml/improve-llvm-tests
Make ppuJIT test log more compact and easier to read
2015-06-08 18:41:13 +01:00
Hykem f935c789bd Merge pull request #1116 from vlj/rsx
RSX: Fix index gathering
2015-06-08 18:40:12 +01:00
vlj 02594c8239 RSX: Fix index gathering 2015-06-08 18:11:51 +02:00
Danila Malyutin ee715d9d36 Make ppuJIT testlog more compact and easier to read 2015-06-02 23:11:46 +03:00
Hykem 3b8c34e47c Merge pull request #1106 from raven02/scale
RSX: simplify resolution rescale
2015-06-02 16:09:52 +01:00
raven02 f2c5dc2b5c RSX: simplify resolution rescale 2015-05-31 18:35:15 +08:00
raven02 e6df1ddcc0 Fix CELL_GCM_TEXTURE_CLAMP
It should be GL_CLAMP
2015-05-29 21:59:51 +08:00
B1ackDaemon 8f9db92bf0 Merge pull request #1104 from Nekotekina/master
Some things changed
2015-05-29 09:26:00 +03:00
DHrpcs3 39e679806b Implemented some sys_prx syscalls
Fixed vm::ptr

Conflicts:
	Utilities/BEType.h
	Utilities/StrFmt.cpp
	rpcs3/Emu/Memory/vm_ptr.h
	rpcs3/Emu/SysCalls/lv2/sys_prx.cpp
	rpcs3/Emu/SysCalls/lv2/sys_prx.h

Cherry-picked commit "Implemented some sys_prx syscalls"
2015-05-29 04:34:30 +03:00
Nekotekina b84d831d8f MFF_NO_RETURN flag introduced 2015-05-29 01:49:50 +03:00
Nekotekina a70d305806 IdManager fix 2015-05-28 22:13:35 +03:00
Nekotekina 0724a9efa2 printf_alike removed 2015-05-28 18:28:34 +03:00
Nekotekina 74e13a4ef6 Compilation fix 2015-05-28 18:23:11 +03:00
Nekotekina 18fa6ca961 Forgotten one 2015-05-28 18:16:03 +03:00
Nekotekina 78fdcf75e7 Attribute macro changed
__forceinline -> force_inline
__noinline -> never_inline
printf_alike(x,y) added
2015-05-28 18:14:22 +03:00
Nekotekina f83306b0bf Fix 2015-05-27 15:49:54 +03:00
Nekotekina fba8e84370 Compilation fix 2015-05-27 14:05:04 +03:00
Nekotekina 26e5a07905 Fix 2015-05-27 13:55:15 +03:00
Nekotekina 7037da80cb Compilation fix 2015-05-27 13:17:28 +03:00
Nekotekina f14b712f07 Compilation fix 2015-05-27 13:02:29 +03:00
Nekotekina 2823953489 Compilation fix 2015-05-27 12:51:25 +03:00
Nekotekina 22b78fec71 IdManager improved, atomic_t improved
Various changes
2015-05-27 06:11:59 +03:00
Nekotekina cdf70e0b77 Compilation fix 2015-05-25 22:11:55 +03:00
Nekotekina 98aee31c5a refcnt.h removed 2015-05-25 21:12:53 +03:00
B1ackDaemon 24278e0eca Merge pull request #1100 from vlj/master
GL: Fix output swizzling for fog and clip distance
2015-05-24 23:42:34 +03:00
vlj 2dbac65613 GL: Fix output swizzling for fog and clip distance 2015-05-24 17:09:05 +02:00
B1ackDaemon dcad0e286a Merge pull request #1092 from Bigpet/localdev
Change `GetDeviceLocal` device selection
2015-05-24 02:09:51 +03:00
B1ackDaemon 4c87c9a545 Merge pull request #1093 from vlj/common-decompiler
Extract vertex/fragment decompiler code.
2015-05-24 01:43:09 +03:00
raven02 2d6dd873cd FP: RSQ instruction alternative 2015-05-23 20:45:12 +02:00
raven02 f98b03b61f VP: use getFloatTypeName() with compare instructions 2015-05-23 20:45:11 +02:00
raven02 eac5147a45 FP: fix SFL instruction 2015-05-23 20:45:11 +02:00
raven02 bebd437a7e RSX: use getFloatTypeName 2015-05-23 20:45:10 +02:00
Vincent Lejeune 669a54d071 GL: Factorise getFloatTypeName, getFunction and compareFunction between Fragment and Vertex Decompiler 2015-05-23 20:45:10 +02:00
raven02 79cb025d25 RSX : factorize DPH 2015-05-23 20:45:09 +02:00
raven02 67e8e0a367 RSX: DP2A for fragment decompiler 2015-05-23 20:45:09 +02:00
raven02 f961a2e3b4 GL: fix IFE instruction 2015-05-23 20:45:08 +02:00
vlj df794b88b0 GL: Use decompiler common class 2015-05-23 20:45:08 +02:00
vlj 2416d49dba RSX: Add a class factorizing decompiler code 2015-05-23 20:45:07 +02:00
B1ackDaemon 2a6f11b390 Merge pull request #1089 from vlj/gl
Store Vertex/Fragment program in a hashtable and do not rebuilt FP if a constant changes
2015-05-23 02:53:48 +03:00
Vincent Lejeune 7a5c8dd586 GL: Remove unused calls to glGetError() 2015-05-22 19:43:32 +02:00
vlj d5bdf78a29 Merge pull request #10 from Syphurith/gl
Renamed Symbols for `gl` branch
2015-05-22 18:25:17 +02:00
Syphurith 5a6869fc5e Renamed LogSeverity Symbols, like.. LogSeveritySuccess from Succuess to avoid conflicts with macros such as those in X11 header. 2015-05-22 20:16:30 +08:00
B1ackDaemon d5ead0d315 Merge pull request #1091 from vlj/shader-fix
gl: Fix swizzle for DIVRSQ, COS, SIN in fragment shader
2015-05-21 19:13:46 +03:00
vlj e2748c319e Merge pull request #7 from raven02/patch-3
gl: Fix IFE instruction
2015-05-21 17:31:18 +02:00
raven02 d0c2addf91 gl: Fix IFE instruction
This fixes the rsx_fp_static_test4.ppu.elf
2015-05-21 22:34:51 +08:00
Peter Tissen 0b0c8723eb Change GetDeviceLocal device selection
For `GetDeviceLocal` only consider a device if the full path to the device
matches the first part of the path to match.

The issue was that putting in a file that was not in a sub-path of an existing
mounted device failed. So if the rpcs3 devices are in
D:\DEV\rpcs3\bin and you open D:\DEV\ps3autotests\tests\rsx\primitives\primitives.ppu.elf
it would return
/dev_usb000/ps3autotests\tests\rsx\primitives\primitives.ppu.elf
which resolves to
D:/DEV/rpcs3/bin/dev_usb000/ps3autotests/tests/rsx/primitives/primitives.ppu.elf
and is wrong.

Correct are either /dev_usb000/../../../ps3autotests\tests\rsx\primitives\primitives.ppu.elf
or /hostfs/D:\DEV\ps3autotests\tests\rsx\primitives\primitives.ppu.elf

I chose to resolve without the ".." beyond root, since that just seems wrong
(so it will now return the hostfs version).

Fixes #1090
2015-05-21 10:45:40 +02:00
vlj d58188d7ba gl: Fix swizzle for DIVRSQ, COS, SIN, EXP2, LOG2 in fragment shader
This fix rsx_fp_static_test2.ppu.elf, rsx_fp_static_test3.ppu.elf, rsx_fp_static_test5.ppu.elf.
Likely rsx_fp_dynamic_test2.ppu.elf too
2015-05-20 19:31:21 +02:00
vlj 2a7c65c019 GL: Use pipeline cache 2015-05-19 17:26:06 +02:00
vlj 145f411324 RSX: Add a template class that helps caching programs. 2015-05-19 17:26:05 +02:00
Zangetsu 46302084e7 Fixed Error rpcs3.sln after Launch compilation 2015-05-10 18:20:19 +02:00
Hykem 45e9e9c938 Merge pull request #1079 from Bigpet/master
Update WxWidgets repository
2015-05-09 13:44:06 +01:00
Hykem 2b48443b95 Merge pull request #1078 from Nekotekina/master
Some fixes
2015-05-09 13:43:06 +01:00
Nekotekina 3ae43edc3e cellFs fix 2015-05-09 01:36:15 +03:00
Peter Tissen fe1b0e70b9 Update WxWidgets repository
This is in preparation to make it easy to compile with VS2015.

Also there's notables changes in wxWidgets that we might find very useful,
such as being able to create OpenGL debug contexts.

The change in .gitmodules might make it necessary for people to run
"git submodule sync" after pulling these changes
2015-05-08 21:25:17 +02:00
Nekotekina 8cf62e560e Compilation fix 2015-05-08 18:42:35 +03:00
Nekotekina f92c10ef71 Minor fixes 2015-05-08 12:45:21 +03:00
Hykem bb63ec0c83 Merge pull request #1068 from Nekotekina/master
wxDir replaced
2015-04-26 13:17:42 +01:00
Nekotekina e676d0bdcf Bugfix 2015-04-26 02:29:53 +03:00
Nekotekina ff359ed118 SPU Interpreter2 initialization fix 2015-04-26 01:56:58 +03:00
Nekotekina 9cfdce91a1 vfsDir usage fixed 2015-04-26 00:26:54 +03:00
Nekotekina 31a41b795e fs::dir::get_first fixed 2015-04-25 23:55:15 +03:00
Nekotekina 442cf3e937 Compilation fix 2015-04-25 23:24:45 +03:00
Nekotekina 3cab629a67 Compilation fix 2015-04-25 23:21:06 +03:00
Nekotekina dcf3e0776e Compilation fix 2015-04-25 23:10:39 +03:00
Nekotekina 02ca97804e fs::dir implemented, bugfixes 2015-04-25 22:15:53 +03:00
Hykem d18d19870f Merge pull request #1062 from Nekotekina/master
SPURecompiler improved
2015-04-25 19:32:47 +01:00
Nekotekina c5737d01c6 Logging fixed
Now it displays messagebox if logging system isn't initialized.
Otherwise it could cause stack overflow.
2015-04-25 16:29:05 +03:00
Nekotekina 5d6d058965 Fix 2015-04-25 01:18:12 +03:00
Nekotekina 74b3580b69 rfile_t renamed 2015-04-25 00:38:11 +03:00
Nekotekina b449545ae0 Compilation fix 2015-04-24 18:12:40 +03:00
Nekotekina ed6fb7cc43 o_append implemented 2015-04-24 17:06:30 +03:00
Nekotekina 2f4d6fc2a1 Adaptive /dev_bdvd/ mounting 2015-04-24 03:35:42 +03:00
Nekotekina fbc268e993 rFileName removed 2015-04-23 19:58:37 +03:00
Nekotekina 743421881e Some code disabled 2015-04-22 00:18:34 +03:00
Nekotekina f4540c2793 vm::null usage 2015-04-21 23:26:21 +03:00
Nekotekina 5aa6daf58f Some code simplified 2015-04-21 22:43:40 +03:00
Nekotekina 8b0c772423 Fix unique_ptr usage 2015-04-21 22:35:11 +03:00
Nekotekina 978d578f4e Bugfix 2015-04-21 21:18:15 +03:00
Nekotekina d05597ccdb Small fix 2015-04-21 18:16:29 +03:00
Nekotekina 56c64c8045 VFS::CreatePath fixed, bugfixes 2015-04-20 18:53:31 +03:00
Nekotekina 8c1aa3ee15 Bugfix 2015-04-20 04:54:19 +03:00
Nekotekina 935302b620 Bugfix 2015-04-20 02:49:13 +03:00
Nekotekina 3b26031692 Bugfix 2015-04-20 01:26:28 +03:00
Nekotekina 339021ac15 cellFsGetDirectoryEntries improved 2015-04-19 22:25:04 +03:00
Nekotekina 73b00b844b sys_fs_fstat fixed 2015-04-19 20:57:04 +03:00
Nekotekina 3c872ab611 sys_fs_ftruncate implemented, bugfixes
Eliminated using stat() for _WIN32 because it doesn't support unicode
correctly, use rExists() or get_file_info() instead
2015-04-19 20:14:16 +03:00
Nekotekina 93ebce4162 Bugfixes 2015-04-19 19:02:35 +03:00
Nekotekina ab405901ee wxFile removed (rFile -> rfile_t) 2015-04-19 16:19:24 +03:00
Peter Tissen fd34d11eec Merge branch 'p4-Bundle' 2015-04-18 20:28:30 +02:00
Nekotekina 2cafa84b75 Small changes 2015-04-18 20:18:23 +03:00
Nekotekina f2276bb70c VFS::TruncateFile() implemented 2015-04-18 16:38:42 +03:00
Nekotekina b1f7543436 PPU stack fixed (2) 2015-04-18 04:35:58 +03:00
Nekotekina b7fd09740b PPU stack fixed 2015-04-18 03:25:26 +03:00
Nekotekina 8bd7823b70 Bugfix 2015-04-18 02:13:43 +03:00
Nekotekina 747d53790c Compilation fix 2015-04-17 23:43:54 +03:00
Nekotekina 8c9ef2eef4 Compilation fix 2015-04-17 23:16:55 +03:00
Nekotekina ad02c8d510 _sys_ppu_thread_create fixed 2015-04-17 22:46:06 +03:00
luxsie 0f1bb8545d Tab to Space. 2015-04-18 03:12:25 +08:00
Nekotekina 048cb7993d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-04-17 20:09:24 +03:00
Nekotekina d9b53b476f Compilation fix 2 2015-04-17 17:05:28 +03:00
Nekotekina 9bedf0d13e Compilation fix 2015-04-17 16:56:32 +03:00
Nekotekina be48a330b4 cellVdecGetPicture improved 2015-04-17 16:24:22 +03:00
Nekotekina 4874a81dc5 cellSaveData improved 2015-04-17 07:37:13 +03:00
Nekotekina 94cbfd6a5c PSFLoader improved, saving implemented 2015-04-16 19:19:41 +03:00
Nekotekina b2111b3c3d PSFLoader improved 2015-04-16 18:33:55 +03:00
Nekotekina 37b22ec99d PSFLoader improved 2015-04-16 02:17:42 +03:00
Nekotekina 00205bfa58 Abstract class for MsgDialog interface 2015-04-15 21:33:44 +03:00
Hykem 588d364efe Merge pull request #1063 from Bigpet/clangtravis
use clang 3.6 for travis
2015-04-15 17:14:44 +01:00
Nekotekina cfb41c4dab Compilation fix 2015-04-15 18:12:10 +03:00
Nekotekina d032bc5691 vfsLocalDir, rFile routines improved 2015-04-15 17:27:37 +03:00
Nekotekina 2798827066 Small update 2015-04-14 17:54:03 +03:00
Nekotekina d8cc6b4c39 Small update 2015-04-14 14:35:41 +03:00
Nekotekina b54a33efce Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-04-14 13:35:36 +03:00
Nekotekina d2ad84453d KernelExplorer fixed 2015-04-14 05:00:31 +03:00
Peter Tissen 92acfcf454 seperate repo adds into seperate commands, for consistency 2015-04-14 00:20:13 +02:00
Nekotekina 39524318aa CopyFile improved 2015-04-13 22:06:01 +03:00
Nekotekina 7e8e288ba2 CopyFile fixed (finally) 2015-04-13 21:42:39 +03:00
Nekotekina f8c64b1fb4 CopyFile fixed 2015-04-13 21:35:44 +03:00
Nekotekina f8ad9d13f8 CopyFile fixed 2015-04-13 21:21:50 +03:00
Nekotekina a465c1aa0a getFileInfo fixed 2015-04-13 21:10:31 +03:00
Nekotekina 4d85a49666 SPURS fixed 2015-04-13 20:39:38 +03:00
luxsie 7b276e38f4 Enable Travis. Plus set Clang-3.6 for Travis build.
show version info about the $CXX not just gcc or clang.
2015-04-13 17:45:16 +02:00
Nekotekina 16fe7919a0 VFS::CopyFile implemented 2015-04-13 17:46:10 +03:00
Nekotekina 94b3cdf9e7 cellGame slightly rearranged 2015-04-13 17:05:44 +03:00
Nekotekina 85b63de631 Events improved 2015-04-13 16:32:09 +03:00
Nekotekina fea6fd1a70 Bugfixes 2015-04-12 23:16:30 +03:00
luxsie 0233fbff51 Thanks to @Nekotekina, about his patience on SPUThread.h. 2015-04-13 00:37:58 +08:00
Hykem 4f21cef3af Merge pull request #1054 from Syphurith/p2Travis
Travis Enabled.
2015-04-12 14:51:04 +01:00
Nekotekina ea5110cec3 Various changes 2015-04-12 04:36:25 +03:00
Hykem 54b6616ec9 Merge pull request #1060 from Syphurith/p5-EmulationDir
Custom EmulationDir
2015-04-11 13:12:03 +01:00
Hykem 18b8a7d473 Merge pull request #1053 from Bigpet/cmake_err
Stop overwriting the ADDITIONAL_LIBS setting for CMake.
2015-04-11 13:09:19 +01:00
Hykem 721a0c8bcb Merge pull request #1052 from Bigpet/master
remove lwmutex::const_be_u32_t::value
2015-04-11 13:09:03 +01:00
luxsie 02c263fc19 Remove comments in confirmed files. 2015-04-11 13:31:28 +08:00
luxsie 94441d7df3 Restore what is directly truncated in sys_spu.cpp. @danilaml that may be someone used a wrong constant for the third condition. 2015-04-11 01:58:12 +08:00
luxsie 147c50e7ca Removed some useless comments, thank Neko. 2015-04-11 00:27:20 +08:00
luxsie ea17e08ae6 Tested Enable/Disable this Custom EmulationDir Feature, and it can check whether directory exists. But there is still problem with its log. 2015-04-10 23:56:38 +08:00
luxsie 64ab14b237 I forgot to save the EmulationDirEnable.. Also just show the bind once. 2015-04-10 23:23:20 +08:00
luxsie a3d6919431 Add notice for the custom path, and add an option to Configuration - System panel. Not Tested. 2015-04-10 23:10:02 +08:00
luxsie 5f6afca18a Added SysEmulationDir to set $(EmulationDir) to custom location. 2015-04-10 22:49:34 +08:00
luxsie e4a2a60f55 CppCheck: End of those marking. and removed one meaningless comparation in sys_spu.cpp. 2015-04-10 20:26:48 +08:00
luxsie 900389d857 CppCheck: Tried to classify and marked some lines that weird. 2015-04-10 20:13:25 +08:00
luxsie cd23a2ecaf CppCheck: About assert side-effect and remove_if that i don't know enough.. 2015-04-10 19:29:45 +08:00
luxsie d072eba687 CppCheck: Marked out case_range that in RSXThread.cpp. It seems missing its own break;. 2015-04-10 19:20:50 +08:00
luxsie f6392baab3 CppCheck: Make it return value not without return, in cellSpurs.cpp. 2015-04-10 19:14:33 +08:00
luxsie 30acfb89c3 CppCheck: Orz. fix out-bound reference of NONZEROCOEFFS in CellCameraAttributes. 2015-04-10 19:12:08 +08:00
luxsie ef7166057a Revert Non-Necessary Change. Thank Bigpet. 2015-04-09 21:30:24 +08:00
luxsie a2ab685ba9 Small change for Badges in README.md. 2015-04-09 20:43:46 +08:00
luxsie da85fba015 Modify .travis.yml to enable Travis.
Fix the master git repo name in Github, also the one in git-version-gen.cmd.
Display Shell Export List to help debugging our Travis Build.
2015-04-09 15:11:32 +08:00
luxsie 080e42ec9f Stop overwriting the ADDITIONAL_LIBS setting for CMake. 2015-04-09 00:09:03 +02:00
Peter Tissen d140cffc08 remove the publicly accessible version of the template parameter in lwmutex::const_be_u32_t because it's never used and causes linker errors in clang 3.4 (and allegedly gcc 4.8.4) 2015-04-08 22:43:29 +02:00
Nekotekina d1fbccc9ce SPURecompiler improved 2015-04-05 21:01:15 +03:00
Nekotekina d2883fc554 SPURecompiler cleanup 2015-04-04 21:21:49 +03:00
B1ackDaemon 952098c00f Merge pull request #1046 from Nekotekina/new_interpreter
Alternative interpreters
2015-04-04 20:03:18 +03:00
Nekotekina 9479bcf77b Small fix 2015-04-04 19:16:53 +03:00
Nekotekina 26b5eebc17 Bugfixes 2015-04-04 19:00:02 +03:00
Nekotekina 1c82e8b1d5 Bugfixes 2015-04-03 19:56:57 +03:00
Hykem abdfcf9d0b Merge pull request #1045 from Zangetsu38/master
Update GLEXT.h to revision 30346
2015-04-03 16:33:16 +01:00
Zangetsu38 55c317c1cf Update GLEXT.h to revision 30346 2015-04-03 14:07:35 +02:00
Nekotekina 59effb3412 PPU: some instructions replaced 2015-04-02 18:22:43 +03:00
Nekotekina 6b9a6c50fe PPU: some instructions replaced 2015-04-01 17:01:04 +03:00
Nekotekina 72fdcf120c PPU: some instructions replaced 2015-03-31 17:54:41 +03:00
DHrpcs3 0b4105915a Merge pull request #1044 from joshslark/master
Some fixes to allow compilation on linux
2015-03-31 13:08:50 +03:00
Joshua Clark 3c3e3baa14 proper fix for issue #1041 2015-03-31 04:20:25 -05:00
Joshua Clark 10983338d8 Small fixes to allow compililation on linux 2015-03-31 03:34:37 -05:00
Nekotekina 3247152ff7 PPU: some instructions replaced 2015-03-29 14:00:10 +03:00
joshslark 55b83af845 Add arch linux dependency instructions 2015-03-27 02:56:13 -05:00
Nekotekina d640aba903 PPU: some instructions replaced 2015-03-26 21:42:12 +03:00
Nekotekina 75fa95c7ff PPU: some instruction replaced 2015-03-24 22:54:15 +03:00
Raul Tambre c4ec38f358 Merge pull request #1043 from Nekotekina/master
Stack overflow fix
2015-03-24 19:58:31 +02:00
Nekotekina ec8519b969 LLVM stack overflow fix 2015-03-24 18:17:53 +03:00
Nekotekina f095dec43d Compilation fix 2015-03-22 02:22:24 +03:00
Nekotekina dc6c21833d SPU: completed 2015-03-22 01:03:28 +03:00
Nekotekina 08dd95e52b SPU: Floating Interpolate implemented 2015-03-21 22:39:56 +03:00
Nekotekina a86317ce5a SPU: some instructions updated 2015-03-21 21:07:37 +03:00
Nekotekina e477a0b8fc SPU: some instructions updated 2015-03-21 18:36:56 +03:00
Nekotekina ff1708a899 SPU: some instructions updated 2015-03-21 17:29:33 +03:00
Nekotekina ef563f038d SPU: some instructions updated 2015-03-21 02:36:05 +03:00
Nekotekina c8bb83b824 spu_opcode_t 2015-03-20 20:30:13 +03:00
Nekotekina 63276a3f84 SPU interpreter (basic concept) 2015-03-20 19:53:54 +03:00
DHrpcs3 a342de6143 Merge pull request #1039 from raven02/patch-1
Fix intel HD graphics crash
2015-03-18 16:32:04 +02:00
raven02 9954b36ec7 Fix intel HD graphics crash 2015-03-18 22:30:47 +08:00
DHrpcs3 903cb8d7e5 Merge pull request #1037 from raven02/patch-8
Disable glDepthBoundsEXT for Intel HD graphics
2015-03-18 08:27:18 +02:00
raven02 9b41f846d6 Disable glDepthBoundsEXT for Intel HD graphics 2015-03-18 06:05:32 +08:00
Nekotekina 620e937473 Basic load 2015-03-17 23:03:24 +03:00
Nekotekina 573f112b37 Small update 2015-03-17 03:44:35 +03:00
Nekotekina 0ca4c189a5 Small update 2015-03-17 02:18:13 +03:00
Nekotekina a71cb5f521 Basic concept 2015-03-17 00:38:21 +03:00
Nekotekina 6a0ce1850a Initial commit 2015-03-16 21:50:59 +03:00
Raul Tambre b5a4e21c81 Merge pull request #1036 from Nekotekina/master
sys_fs bugfixes
2015-03-16 20:31:50 +02:00
Nekotekina bee6b84733 sys_fs bugfixes 2015-03-16 19:20:02 +03:00
Nekotekina 7ce45a3bae cellFsSt* update 2015-03-16 16:15:52 +03:00
Nekotekina 63b97d6817 cellFsSt* 2015-03-16 03:21:40 +03:00
Nekotekina c125f5376c cellAudio event queue fix 2015-03-15 20:23:43 +03:00
Nekotekina 3e412a2a1f Syscall names registered 2015-03-15 16:26:01 +03:00
Nekotekina ff90ddbd2f IdManager cleaned 2015-03-15 12:20:29 +03:00
Nekotekina fae7ddc611 sys_fs_test, sys_fs_fcntl draft 2015-03-15 03:41:08 +03:00
DHrpcs3 1f05275ac4 Merge pull request #1035 from Nekotekina/master
sys_fs review, cleanup
2015-03-14 23:07:47 +02:00
Nekotekina 469926c5e1 _sys_heap*, _sys_malloc+, _sys_strcmp implemented 2015-03-14 23:28:59 +03:00
Nekotekina 614cb88116 start func running 2015-03-14 18:46:13 +03:00
Nekotekina 5cb1a2f26d cellFsAioWrite implemented 2015-03-14 14:29:26 +03:00
Nekotekina ea8473943b Additional layer for opened file objects 2015-03-14 03:38:36 +03:00
Nekotekina 9bc5ce300e cellFsWriteWithOffset 2015-03-14 01:05:48 +03:00
Nekotekina 139173caa0 sys_fs_open() update, octal formatting 2015-03-13 23:43:11 +03:00
Nekotekina 0fc6ec2df9 Fix 2015-03-13 18:37:00 +03:00
Nekotekina d209cc5671 Fix 2015-03-13 18:36:03 +03:00
Nekotekina aa4b74c194 Fix 2015-03-13 18:33:11 +03:00
Nekotekina fc81d79807 Fix 2015-03-13 18:29:10 +03:00
Nekotekina 6c36013e2a sys_fs_open rewritten 2015-03-13 18:06:27 +03:00
Nekotekina 3e34bd64bf Compilation fix 2015-03-13 04:59:25 +03:00
Nekotekina c88e0a0eb9 Small cleanup 2015-03-13 04:09:53 +03:00
Nekotekina 5c31037c04 atomic_t update 2015-03-13 02:18:38 +03:00
Nekotekina 5764ee7a2a Small fix 2015-03-13 02:03:22 +03:00
Nekotekina bcad7afcc9 Bugfix 2015-03-12 22:39:41 +03:00
Nekotekina 583b6d92ec sys_fs syscalls detached from cellFs 2015-03-12 22:02:02 +03:00
Nekotekina 0cf7bb056e Bugfix 2015-03-11 20:50:11 +03:00
Nekotekina bd517cf915 atomic_t operators update 2015-03-11 19:58:50 +03:00
Nekotekina a3d400b5cc Minor cleanup 2015-03-11 18:30:50 +03:00
Raul Tambre db7bde0a6f Merge pull request #1033 from Nekotekina/master
Cleanup, lv2 timer/lwmutex/lwcond rewritten
2015-03-11 13:59:56 +02:00
Nekotekina daad7d71f9 Bugfix 2015-03-11 14:45:58 +03:00
Nekotekina 6de3a6090a Bugfix 2015-03-11 14:35:23 +03:00
Nekotekina 629206c0dc Bugfix 2015-03-11 14:27:29 +03:00
Nekotekina 6e3e2cf0f3 Fix 2015-03-11 14:12:20 +03:00
Nekotekina 03219a9a4e Fix 2015-03-11 13:41:20 +03:00
Nekotekina a19a13136c Bugfix 2015-03-11 13:39:54 +03:00
Nekotekina 0a4820f4f8 Some diagnostic message 2015-03-11 12:43:36 +03:00
Nekotekina 116638f352 Bugfix 2015-03-11 01:48:17 +03:00
Nekotekina fe4ab0abbb Bugfix 2015-03-11 00:47:13 +03:00
Nekotekina a62eeaaecc Bugfix 2015-03-10 22:16:31 +03:00
Nekotekina 11b409907e atomic_t specializations fixed 2015-03-10 19:27:08 +03:00
Nekotekina befc0f62b8 Lv2 lwcond "true" syscalls 2015-03-10 17:42:08 +03:00
Nekotekina 3cf80b0831 sys_lwcond* funcs moved and rewritten 2015-03-09 22:56:55 +03:00
Nekotekina 2709dc2e36 Compilation fix 2015-03-09 05:05:53 +03:00
Nekotekina 1653991b9d Using "using" in vm::ptr/ref 2015-03-09 04:57:50 +03:00
Nekotekina 8155ef5e67 Lv2 lwmutex "true" syscalls experimentally implemented 2015-03-09 04:30:34 +03:00
Nekotekina 507798c541 Lv2 Lwmutex 2015-03-09 00:56:45 +03:00
Nekotekina 9883e1e8b8 Lv2 Timer rewritten 2015-03-08 18:25:31 +03:00
Raul Tambre e5de176b16 Merge pull request #1032 from Nekotekina/master
lv2 sema/rwlock, bugfox, cleanup
2015-03-08 15:00:54 +02:00
Nekotekina 0f233beff9 Lv2 Semaphore rewritten 2015-03-08 06:37:07 +03:00
Nekotekina dba249554d Lv2 Rwlock rewritten 2015-03-08 05:32:41 +03:00
Nekotekina 1d2351bf85 Attempt to fix bug 2015-03-08 00:20:38 +03:00
Nekotekina cf335a5dc4 Video freezing fixed 2015-03-07 20:39:25 +03:00
Nekotekina 4a6ef91eb3 More cleanup 2015-03-07 19:03:42 +03:00
Nekotekina 961fc27215 Minor cleanup 2015-03-07 16:39:07 +03:00
B1ackDaemon 9d8e8028a6 Merge pull request #1030 from Nekotekina/master
lv2 cond/mutex, Id Manager fix
2015-03-07 06:28:12 +02:00
Nekotekina 476b9020ce sys_spu_thread_group_terminate fixed 2015-03-07 03:37:39 +03:00
Nekotekina d234493b4a Compilation fix 2015-03-07 01:58:42 +03:00
Nekotekina 428e51b619 Compilation fix 2015-03-07 01:24:04 +03:00
Nekotekina ef65299dff Lv2 Cond/Mutex rewritten, bugfixes 2015-03-07 01:10:04 +03:00
B1ackDaemon 48c1f0f03d Merge pull request #1029 from Nekotekina/master
Event Flag rewritten, bugfixes
2015-03-06 00:01:07 +02:00
Nekotekina e2a2709ad0 Event Flag refactoring, bugfixes 2015-03-06 00:29:05 +03:00
Nekotekina 5d768bd3cf Bugfix, sys_spu_thread_group_connect_event implemented 2015-03-05 16:18:06 +03:00
B1ackDaemon 8c046429cc Merge pull request #1027 from Nekotekina/master
Event and SPU refactoring
2015-03-05 02:36:20 +02:00
Nekotekina a2293d94f6 Fix 2015-03-05 03:01:48 +03:00
Nekotekina f22001d527 Bugfix
+sys_spu_thread_group_disconnect_event_all_threads
2015-03-05 02:34:20 +03:00
Nekotekina 9e49a33b3c SPU syscall improvements 2015-03-05 00:51:14 +03:00
Nekotekina 30fe3dc6f5 Compilation fix 2015-03-04 14:38:28 +03:00
Nekotekina ad38e9f0fe event_queue_t, event_port_t rewritten 2015-03-04 07:42:04 +03:00
Nekotekina 78c37ff8b6 Some bicycle for PSV 2015-03-03 23:09:23 +03:00
Nekotekina 8587ae5883 Compilation fix 2015-03-03 02:34:49 +03:00
Nekotekina 5f8cf18a5a SPU refactoring 2015-03-03 00:09:20 +03:00
Nekotekina bc94d92cba nyu 2015-03-02 05:10:41 +03:00
Raul Tambre 31bf130b1c Merge pull request #1025 from Nekotekina/master
Various fixes
2015-03-01 09:57:25 +02:00
Nekotekina 619b8e473f Possibly fix for OSX 2015-02-28 22:37:31 +03:00
Nekotekina eaf3787ae6 Imports fixed 2015-02-28 21:47:37 +03:00
Nekotekina 72dcbefff4 Bugfix 2015-02-28 19:38:48 +03:00
Nekotekina c054d8e7dc Bugfix 2015-02-28 18:00:38 +03:00
Nekotekina d76e801c47 Compilation fix 2015-02-28 17:51:42 +03:00
Nekotekina 942d984dc5 sys_process_get_paramsfo implemented 2015-02-28 17:41:15 +03:00
Nekotekina 316bd8d155 Bugfix 2015-02-28 15:49:09 +03:00
Nekotekina 6cbdeb9411 Unused code removed 2015-02-28 15:37:06 +03:00
Nekotekina e4bfe81712 Readability improved 2015-02-27 21:57:10 +03:00
Nekotekina d62e95d0f8 Success log level fixed 2015-02-27 21:11:07 +03:00
Nekotekina 233f2e478a Improved readability 2015-02-27 02:17:33 +03:00
Nekotekina ae21783680 sys_libc.cpp with memcpy 2015-02-26 23:08:48 +03:00
Nekotekina 88476fe698 Insignificant changes 2015-02-26 21:26:44 +03:00
Nekotekina be4e85f0f2 PPCThread removed (it does nothing anyway) 2015-02-26 03:54:49 +03:00
Hykem 9b2907dc64 Merge pull request #1024 from Nekotekina/master
HLE binding improvements
2015-02-25 17:25:01 +00:00
Nekotekina 99c5366f50 Small fix 2015-02-25 15:26:22 +03:00
Nekotekina 9afdb429fa Result logging restored 2015-02-25 15:08:22 +03:00
Nekotekina 0b21474b79 Logging fixed 2015-02-25 14:48:12 +03:00
Nekotekina 432f0c3630 LLE logging 2015-02-25 14:24:30 +03:00
Nekotekina 0e33636aaf Import fix 2015-02-25 13:28:43 +03:00
Hykem dc90ab3cee Merge pull request #1021 from tambry/Things
Improvements in cellSearch, cellUsbd and cellRudp
2015-02-24 17:00:07 +00:00
Nekotekina 991fd015de Size of injected code decreased 2015-02-24 19:38:10 +03:00
Nekotekina a8688bff85 RTOC saving fixed 2015-02-24 17:04:25 +03:00
Nekotekina 1e28611435 Compilation fix 2015-02-24 14:06:24 +03:00
Nekotekina 07cb56e1ea Flags for HLE functions 2015-02-23 21:54:17 +03:00
Hykem 5416782392 Merge pull request #1023 from O1L/master
Implemented binary vertex program disassembler
2015-02-23 16:58:21 +00:00
Raul Tambre e6a47bfa89 Fix be_ts and fix loading in some modules 2015-02-23 17:09:52 +02:00
O1L 99ea666bf2 Implemented binary vertex program disassembler 2015-02-23 16:22:30 +04:00
DHrpcs3 881dafcdff Merge pull request #1022 from O1L/master
Shaders disassembly tool
2015-02-23 09:24:23 +02:00
O1L deebe3ca1f Used fmt::Format instead of sprintf 2015-02-22 22:53:26 +04:00
O1L 4d27198ad7 Conflicts fixed 2015-02-22 20:06:42 +04:00
O1L 8d383ea15c Oops 2015-02-22 19:47:44 +04:00
Raul Tambre ef3a011919 Fix compiling 2015-02-22 17:36:22 +02:00
Raul Tambre 31b91c10ec Fix m_inited 2015-02-22 16:52:20 +02:00
Raul Tambre 46e7207e93 Improvements in cellSearch, cellUsbd and cellRudp 2015-02-22 16:50:11 +02:00
O1L e84f356a29 Implemented binary fragment program disassembler 2015-02-22 18:47:12 +04:00
Hykem 3a9cc0ab63 Merge pull request #1020 from tambry/Things
Improvements and fixes
2015-02-22 13:43:41 +00:00
Raul Tambre c13ebc8692 More stubs 2015-02-22 13:38:14 +02:00
Raul Tambre e7d0aedfb4 Merge upstream 2015-02-22 10:58:18 +02:00
Raul Tambre f9497e35e4 Stub some modules 2015-02-22 10:50:26 +02:00
B1ackDaemon bdad5ef745 Merge pull request #1019 from Nekotekina/master
Some cleanup, HLE calls simplified
2015-02-21 18:06:45 +02:00
Nekotekina 55b348f4fc Small fix 2015-02-21 17:35:23 +03:00
Nekotekina 9ee9523680 StaticFuncManager removed 2015-02-21 17:07:22 +03:00
Nekotekina a182743561 sys_net fixed 2015-02-21 16:05:35 +03:00
Nekotekina 6b4b86434d Some code moved 2015-02-21 15:03:37 +03:00
Nekotekina faaef03604 Fix 2015-02-21 14:30:26 +03:00
Nekotekina 18954ee5b8 Partial fix 2015-02-21 13:37:43 +03:00
Nekotekina e6b2be2bc9 Some names fixed 2015-02-21 00:21:52 +03:00
Nekotekina 303a9de045 Test 2015-02-20 22:45:00 +03:00
Nekotekina cd2eb59da6 Compilation fix (sc) 2015-02-20 21:14:34 +03:00
Nekotekina a4a25dc28d Compilation fix 2015-02-20 21:11:21 +03:00
Nekotekina 0bb15b2ff7 Compilation fix_ 2015-02-20 21:05:45 +03:00
Nekotekina 0c1bfefbc8 Compilation fix 2015-02-20 21:00:53 +03:00
Nekotekina 69a3db491c Compilation fix 2015-02-20 20:58:15 +03:00
Nekotekina 8d13aa3f2e Compilation fix 2015-02-20 17:42:41 +03:00
Nekotekina 8cd00287cd Compilation fix 2015-02-20 17:27:49 +03:00
Nekotekina fdad4019e5 Compilation fix 2015-02-20 17:04:11 +03:00
Nekotekina 655acc746d HLE function binding for PPU/ARMv7 simplified 2015-02-20 16:58:40 +03:00
Raul Tambre e2d2c9d377 Fix stacksize 2015-02-20 15:55:00 +02:00
Nekotekina 7ab1e64aab Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-02-20 14:38:57 +03:00
Raul Tambre 948758f758 Merge remote-tracking branch 'upstream/master' into Things 2015-02-20 12:59:31 +02:00
Raul Tambre 67c02274cb Merge pull request #1013 from Syphurith/PPU-Thread-Stacksize
About ppu thread stacksize
2015-02-20 12:58:30 +02:00
B1ackDaemon d18b91e828 Merge pull request #1018 from gopalsr83/master
Fixed some issues in cellSpurs
2015-02-20 00:16:34 +02:00
Raul Tambre 4b516273f6 Implement cellSaveDataListAutoLoad, fix textureProj 2015-02-19 22:56:57 +02:00
S Gopal Rajagopal 26d3bfe9c2 SPURS: Disable kernel 2015-02-20 02:16:25 +05:30
Nekotekina f9eb3f8476 get_x64_reg_value fix 2015-02-19 23:38:25 +03:00
S Gopal Rajagopal 1356a17e84 Merge upstream 2015-02-20 01:57:46 +05:30
S Gopal Rajagopal 68978a0109 SPURS: More fixes 2015-02-20 01:53:05 +05:30
S Gopal Rajagopal 796d96f06b SPURS: Fix some issues 2015-02-20 01:15:33 +05:30
Nekotekina 152feb898e libmixer fix 2015-02-19 22:17:30 +03:00
Hykem c1786df2a6 Merge pull request #1017 from tambry/Improvements
cellCamera fix and update GLEXT.h
2015-02-19 17:16:36 +00:00
Hykem fe376abe6c Merge pull request #1011 from Bigpet/master
Only link to librt on Linux
2015-02-19 17:15:56 +00:00
Raul Tambre 4ad91a6fa8 Merge upstream 2015-02-19 17:15:21 +02:00
Raul Tambre 39cf935929 Minor formatting in GLProgram 2015-02-19 17:10:21 +02:00
Raul Tambre 872e41825e Merge pull request #1016 from Nekotekina/master
Cleanup
2015-02-19 17:09:17 +02:00
Nekotekina fed1418c0e Loader fix 2015-02-19 16:47:53 +03:00
Nekotekina 2d1d996c50 Small fix 2015-02-19 14:18:28 +03:00
Nekotekina e84fc6426c PRX_DEBUG removed 2015-02-19 01:54:31 +03:00
Nekotekina d177b1adea ARMv7: loader fixed 2015-02-19 00:23:31 +03:00
B1ackDaemon 1003c42310 Merge pull request #1015 from gopalsr83/master
Miscellaneous fixes and improvements to the PPU LLVM JIT
2015-02-18 21:55:25 +02:00
S Gopal Rajagopal 4272ec7a82 PPUJIT: Convert tabs to spaces 2015-02-19 00:37:09 +05:30
Peter Tissen a404f2e6fa Add iconv to linked libs on non-linux UNIX
of course the correct solution would be to actually search for the symbols
but that seems like a lot of efford just for the sake of doing it right.
This should probably suffice for all relevant platforms for now.
2015-02-18 19:30:04 +01:00
S Gopal Rajagopal 85648da706 Merge remote-tracking branch 'upstream/master' 2015-02-18 23:43:37 +05:30
S Gopal Rajagopal 681fb1eeaa PPUJIT: Support stopping/pausing threads (does not always work) 2015-02-18 23:40:04 +05:30
luxsie ffb0454424 sys_ppu_thread_create: Add warning when allocated more stack size than required. 2015-02-19 01:44:07 +08:00
Hykem cae85c6247 Merge pull request #1012 from Nekotekina/master
Reservations, memory system, module manager improved
2015-02-18 17:36:02 +00:00
Nekotekina 91c9fd3c3c Compilation fix 2015-02-18 19:37:12 +03:00
Nekotekina 1589b72699 Compilation fix 2015-02-18 19:28:09 +03:00
Nekotekina af986d8f4c Loader improved, ModuleManager refactored 2015-02-18 19:22:06 +03:00
luxsie 73d9b58dfc sys_ppu_thread_create: minimum stack size and stack allocation unit applied. 2015-02-18 23:56:46 +08:00
Peter Tissen 518c028a3d Only link to librt on Linux
The library is not needed on OSX and does not seem to exists there
2015-02-18 15:59:26 +01:00
Raul Tambre 714ff6c32e Update GLEXT.h to revision 29735 2015-02-18 11:39:56 +02:00
Nekotekina 1f2eafc4f2 Loader fixed 2015-02-17 18:27:15 +03:00
Nekotekina 3f3873ceb5 STOS support (for memset) 2015-02-17 05:01:47 +03:00
Nekotekina bddad4d766 Compilation fix 2015-02-17 03:40:10 +03:00
Nekotekina 20dce26b1d Reservations improved 2015-02-17 03:08:23 +03:00
S Gopal Rajagopal 1365c830b2 PPUJIT: Fix EOL issues 2015-02-16 23:07:22 +05:30
S Gopal Rajagopal 3a2b13c02b PPUJIT: Fix unit tests 2015-02-16 23:00:41 +05:30
S Gopal Rajagopal e7f278b5d2 PPUJIT: Support exception based MMIO and reservations 2015-02-16 22:49:17 +05:30
Nekotekina e6c628caba Memory (unfinished) 2015-02-16 04:53:53 +03:00
Nekotekina 1189503b4d Some cleanup 2015-02-15 20:13:06 +03:00
Nekotekina 6909a15400 decode_x64_reg_op improved 2015-02-15 15:31:42 +03:00
Raul Tambre 2df18c91e9 cellCamera ifs now switches 2015-02-14 09:16:48 +02:00
B1ackDaemon bf1e29e227 Merge pull request #1009 from Nekotekina/master
Memory cleanup
2015-02-14 00:48:28 +02:00
Nekotekina f01059283a Some cleanup 2015-02-14 00:45:36 +03:00
Nekotekina 0d489518ab Compilation fix 2015-02-13 23:24:18 +03:00
Nekotekina 5fc77fe89e Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-02-13 23:15:35 +03:00
Hykem fcd300ad4d Merge pull request #1008 from robxu9/master
Fix building on OS X 10.10
2015-02-13 15:55:08 +00:00
Nekotekina ba83767706 Small fix 2015-02-13 18:26:42 +03:00
Raul Tambre 7b249790f5 Merge remote-tracking branch 'upstream/master' into Improvements 2015-02-13 16:47:08 +02:00
Raul Tambre 8ce3943e09 Small formatting changes 2015-02-13 16:44:26 +02:00
Nekotekina 267de68441 Memory cleanup, page flags implemented
RSXCMDMem, SPRXMem, MmaperMem removed
MainMem range fixed
2015-02-13 17:04:03 +03:00
Nekotekina 0eebfb0aaa Memory cleanup: u64 -> u32, empty TLS fixed
cellGameContentPermit fixed
2015-02-12 23:10:25 +03:00
B1ackDaemon 4d5bdf1419 Merge pull request #1006 from Nekotekina/master
Small fix
2015-02-12 10:56:43 +02:00
Nekotekina 5986448d67 Small fix 2015-02-12 11:44:53 +03:00
B1ackDaemon 35e04bdbe3 Merge pull request #1005 from tambry/Improvements2
Improvements to cellCamera, cellGem and other minor things
2015-02-11 23:27:03 +02:00
B1ackDaemon 5e73d68e4a Merge pull request #1004 from Nekotekina/master
SPURS fix, PPU threads are deleted at exit/join
2015-02-11 23:26:56 +02:00
Raul Tambre cc6ba726eb Big improvements to cellCamera and cellGem 2015-02-11 23:09:48 +02:00
Nekotekina 42f961816c SPURS fix, PPU threads are deleted at exit/join 2015-02-11 23:11:49 +03:00
B1ackDaemon 982e536ad2 Merge pull request #1003 from Nekotekina/master
Compilation fix
2015-02-11 15:37:21 +02:00
Nekotekina 5c08bd6a73 Compilation fix 2015-02-11 16:05:50 +03:00
B1ackDaemon 7624c89d12 Merge pull request #1002 from Nekotekina/master
Compilation fix
2015-02-11 14:58:26 +02:00
Nekotekina 250fb15592 Compilation fix 3 2015-02-11 15:25:20 +03:00
Nekotekina 3e26971044 Compilation fix 2 2015-02-11 15:22:53 +03:00
Nekotekina 4340899833 Compilation fix 2015-02-11 15:03:15 +03:00
Nekotekina fdc5fa34be Bugfix 2015-02-11 14:39:51 +03:00
B1ackDaemon 2032b15acf Merge pull request #1001 from gopalsr83/spurs_taskset
SPURS Taskset
2015-02-11 13:06:29 +02:00
S Gopal Rajagopal d675c67f79 SPURS: Disable the SPURS kernel 2015-02-11 15:45:43 +05:30
S Gopal Rajagopal 853234f7d7 Merge remote-tracking branch 'upstream/master' into spurs_taskset 2015-02-11 15:00:46 +05:30
B1ackDaemon 47af5c1b5c Merge pull request #999 from Bigpet/master
Add librt to the list of linked libraries
2015-02-11 09:21:21 +02:00
Robert Xu 00e637645c Fix building on OS X 10.10 2015-02-10 23:17:39 -05:00
Peter Tissen 068883a441 Add librt to the list of linked libraries
This is needed by `shm_unlink` and similar functions. Fixes #997
2015-02-11 00:44:22 +01:00
Raul Tambre 43a95d709d Merge remote-tracking branch 'upstream/master' into Improvements2 2015-02-10 17:43:21 +02:00
B1ackDaemon 73d63c508a Merge pull request #998 from Nekotekina/master
NV3089_IMAGE_IN_SIZE rewritten
2015-02-10 15:37:07 +02:00
Nekotekina c0a1dab09d Small fix 2015-02-10 16:20:07 +03:00
Nekotekina e642e39324 NV3089_IMAGE_IN_SIZE 2015-02-10 15:51:45 +03:00
Raul Tambre dfb2598e41 Fixed conflicts 2015-02-09 15:22:04 +02:00
Raul Tambre cd8bcd4c02 Various improvements 2015-02-09 15:06:46 +02:00
Nekotekina 4e28a007c8 NV3089_IMAGE_IN_SIZE 2015-02-09 01:44:55 +03:00
B1ackDaemon 4ba915bbdd Merge pull request #996 from Nekotekina/master
Reservations improved
2015-02-08 22:08:09 +02:00
Nekotekina 31bbf56ff1 Reservations improved 2015-02-08 18:25:50 +03:00
Nekotekina 19acaf3f86 Bugfix, ECIWX/ECOWX disabled 2015-02-08 16:38:08 +03:00
B1ackDaemon 3080fb2806 Merge pull request #995 from darkf/trophy
Improve sceNpTrophy
2015-02-08 15:12:22 +02:00
darkf bddff3b70a Improve sceNpTrophy 2015-02-08 03:37:10 -08:00
B1ackDaemon 9d9a7cf370 Merge pull request #993 from Nekotekina/master
Bugfix
2015-02-08 00:20:52 +02:00
Nekotekina fcbbdc87fc Bugfix 2015-02-08 01:09:23 +03:00
B1ackDaemon 71292a7617 Merge pull request #992 from Nekotekina/master
Reservations reimplemented
2015-02-07 22:21:51 +02:00
Nekotekina 90c021fc31 Small fix 2015-02-07 23:06:35 +03:00
Nekotekina e70875ad5c Linux fix 2015-02-07 18:35:54 +03:00
Nekotekina 6aef58318c Fix 2 2015-02-07 17:13:32 +03:00
Nekotekina c9f994d92d Fix 1 2015-02-07 17:12:39 +03:00
Nekotekina c71c5eb422 Compilation fix 2015-02-07 16:59:10 +03:00
Nekotekina 39db6bb461 Reservations improved 2015-02-07 16:46:42 +03:00
Nekotekina 1af4848324 New reservations (not finished) 2015-02-07 02:39:51 +03:00
Nekotekina c1c586a072 Some drafts 2015-02-06 03:23:37 +03:00
Nekotekina 5983813d12 ARMv7: new instructions
EOR_IMM, LDM, REV, STM
2015-02-05 21:13:27 +03:00
Nekotekina e93aaf3957 ARMv7: bugfix, some disasm subroutines 2015-02-05 15:18:10 +03:00
Nekotekina 819c955cca ARMv7: partial disasm functionality, bugfix 2015-02-05 02:52:47 +03:00
S Gopal Rajagopal daaa5059e9 SPURS: Fixed more issues 2015-02-04 20:59:34 +05:30
Nekotekina e3f55a75a3 TTY output improved; ARMv7: new instructions
ADC_REG, MVN_REG, ORR_REG, ROR_IMM, ROR_REG, TST_IMM, armv7_fmt improved
2015-02-04 15:16:10 +03:00
Nekotekina d5bbea097b ARMv7: new instructions, bugfix
ADC_IMM, ADR, AND_IMM, EOR_REG, LDRB_REG
2015-02-04 00:34:18 +03:00
S Gopal Rajagopal d1a7c85e95 Merge remote-tracking branch 'upstream/master' into spurs_taskset
Conflicts:
	rpcs3/emucore.vcxproj.filters
2015-02-03 23:12:26 +05:30
Nekotekina 2494fcf8d8 ARMv7: new instructions, bugfix
LDRD_LIT, LDRH_IMM, LDRH_LIT, LSR_IMM, ORR_IMM, STRD_IMM, STRD_REG,
UMULL
2015-02-03 17:48:20 +03:00
S Gopal Rajagopal 0191955ab6 SPURS: Fix more issues 2015-02-03 11:03:49 +05:30
Nekotekina 60f6566c78 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-02-03 01:20:08 +03:00
B1ackDaemon 32fd9223ff Merge pull request #990 from Bigpet/minifixes
fix #elif with no condition
2015-02-03 00:18:49 +02:00
Peter Tissen 8ce1de036a fix #elif with no condition 2015-02-02 22:38:47 +01:00
Nekotekina 5225ca8fc2 ARMv7: branch instrs fixed, new instructions
BIC_IMM, BIC_REG, RSB_IMM, LDR_LIT, STRB_REG, STRH_REG
Fixed initial stack size
2015-02-03 00:00:05 +03:00
S Gopal Rajagopal 67342781b7 SPURS: Fix some issues 2015-02-03 02:13:32 +05:30
B1ackDaemon c267ca2584 Merge pull request #989 from Nekotekina/master
Various improvements
2015-02-02 13:39:51 +02:00
B1ackDaemon fbee6d4017 Merge pull request #988 from Bigpet/restore_threadlist
re-enable threadlist in GUI
2015-02-02 13:11:20 +02:00
B1ackDaemon 4c52b65374 Merge pull request #987 from Bigpet/minifixes
Fix some small mistakes
2015-02-02 13:10:53 +02:00
Peter Tissen 13d2f8fa59 re-enable threadlist in GUI
This used to crash so it was removed. However I think this is a cruicial feature.
This is the only way to observe the stack-frames, registers and disasm around the PC
in a user friendly way.

The reason this caused crashes was that we got a reference to a std::vector and iterated
over it in one thread while another thread could modify it (and thereby invalidating the
iterators). The way I "fixed" it is to just copy the `std::vector<std::shared_ptr<...>>`
and iterate over the copy. This obviously has some overhead (locking the shared_ptr
counters and incrementing them). It also allows entities other than the Thread manager
to keep the Thread objects frome being deleted but that should not be a problem.
2015-02-02 11:33:49 +01:00
Peter Tissen bd65f81074 Fix some small mistakes
* replace_first and replace_all were in the wrong namespace, so they could not be linked
* replace_all did not work correctly (would loop indefinately)
* cellGcmUnmapIoAddress did not shif the size, so it would run past the end of the mmap array
* fsstat did use a 32-bit size on Windows, so files >4 gigs would return "stat failed"
2015-02-02 11:27:18 +01:00
Nekotekina 23c7028b2a ARMv7: ARM encoding introduced; bugfixes 2015-02-02 12:14:49 +03:00
B1ackDaemon c153215d6d Merge pull request #980 from tambry/Things
Test mode, RSXIO changes reverted and experimental DMA implementation
2015-02-02 09:07:07 +02:00
S Gopal Rajagopal 2c70f5168a SPURS: Reorder, rename and some cleanup 2015-02-02 09:02:38 +05:30
Nekotekina dab80497bb ARMv7: bugfix, loader improved, scePerf 2015-02-02 00:12:40 +03:00
S Gopal Rajagopal ba6ac5019e SPURS: Implement some portions of taskset policy manager 2015-02-02 01:32:40 +05:30
Nekotekina e5dd03dbcb ARMv7: argc, argv setting, LDRSB_IMM, bugfixes 2015-02-01 16:52:34 +03:00
Raul Tambre 899b06d6db Fix conflicts 2 2015-02-01 15:45:25 +02:00
Nekotekina 8a945a1a52 Fixes 2015-02-01 10:09:24 +03:00
S Gopal Rajagopal 61342946a4 SPURS: Implement some portions of taskset pm 2015-02-01 02:16:06 +05:30
Nekotekina 61a5459ccb TLS for ARMv7 threads 2015-01-31 19:44:26 +03:00
Hykem 12d1f8202d Merge pull request #986 from Nekotekina/master
RSX "refactoring" reverted
2015-01-31 13:44:37 +00:00
Nekotekina 384cb5e415 RSX "refactoring" reverted 2015-01-31 16:01:34 +03:00
S Gopal Rajagopal d8bed3b0ce SPURS: Implement some portions of the taskset PM 2015-01-31 03:35:03 +05:30
B1ackDaemon 29165af761 Merge pull request #985 from Nekotekina/master
Bugfix for TLS
2015-01-30 23:54:16 +02:00
Nekotekina 140a42fbcb Bugfix 2015-01-31 00:30:46 +03:00
B1ackDaemon 289ef4c6d4 Merge pull request #984 from Nekotekina/master
Function stubs for PSV
2015-01-30 23:22:30 +02:00
S Gopal Rajagopal f7b7c234b7 SPURS: Implement some SPU thread functions used by the system service module 2015-01-31 01:32:07 +05:30
Nekotekina 4ea1b8cffc Fixed TLS for PPU threads 2015-01-30 23:01:13 +03:00
S Gopal Rajagopal 507638e6d8 SPURS: Update system service workload to use lock line reservations 2015-01-31 00:36:58 +05:30
Nekotekina 2be045593a Compilation fix 2015-01-30 20:41:17 +03:00
Nekotekina bdd458d2ae Some functions added 2015-01-30 20:19:11 +03:00
Nekotekina 6cab4d7100 Some functions added 2015-01-30 15:19:01 +03:00
Nekotekina cd6f95c90d Some functions added 2015-01-30 13:48:12 +03:00
Nekotekina 35898a6cdf Some functions added 2015-01-30 02:58:53 +03:00
Nekotekina 74b6d5c2ed Some functions added 2015-01-30 00:42:53 +03:00
Nekotekina 6c40dc0631 Some functions added 2015-01-29 20:42:51 +03:00
Raul Tambre a671c43862 Fix conflicts 2015-01-29 18:28:39 +02:00
Nekotekina 62c8f2ac34 ARMv7: stubs for other modules, loader improved 2015-01-29 18:48:05 +03:00
S Gopal Rajagopal 62e2d8d9a7 SPURS: Update kernel to use lock line reservations 2015-01-29 20:20:34 +05:30
B1ackDaemon 1fa301b719 Merge pull request #981 from Nekotekina/master
ARMv7 progress, some changes in vm_ptr
2015-01-29 01:57:42 +02:00
S Gopal Rajagopal a7728c9067 SPURS: Document some parts of taskset policy module 2015-01-28 23:48:06 +05:30
Nekotekina e508d6db5d sceGxm stub 2015-01-28 17:17:12 +03:00
Raul Tambre 084106ced6 Disable DMA writes and add copyright notices 2015-01-28 15:17:13 +02:00
Nekotekina 579a88b7c4 vm_ptr: function format changed 2015-01-28 15:59:16 +03:00
Nekotekina 1c4db01e19 sceDisplay, sceDeci4p stub 2015-01-28 01:39:16 +03:00
Nekotekina 14efde9190 ARMv7: LDRB_IMM, STRB_IMM 2015-01-27 22:57:44 +03:00
Raul Tambre e12cfc89de Experimental DMA implementation, bug fixes
The experimental DMA implementation is ported from Nucleus.
2015-01-27 21:04:40 +02:00
Raul Tambre 3a51a6ded7 Revert RSXIO changes
This revert fixes many games, while seeming to break none.
2015-01-27 19:22:56 +02:00
Raul Tambre 0e8ea4f27c Merge remote-tracking branch 'upstream/master' into Things 2015-01-27 18:54:28 +02:00
Raul Tambre d48617a3e8 Merge pull request #979 from tambry/CompileFix
Fix compiling
2015-01-27 18:48:41 +02:00
Raul Tambre f81b00d488 Fix compiling 2015-01-27 17:34:50 +02:00
Raul Tambre f15c679fea Add support for "test mode"
Since @devmapal hasn't made a PR for this and this would be probably
useful for Coveralls and unit tests I'm making a PR for it myself.

More info:

https://github.com/devmapal/rpcs3/commit/c72f5d40f521b955faec024e6b788aa1e027ccfc
2015-01-27 17:14:15 +02:00
Raul Tambre 095608530f Merge pull request #976 from tambry/Fixes
Various fixes and improvements
2015-01-27 16:54:59 +02:00
Nekotekina 912e3fc213 sceCtrl stub 2015-01-27 04:39:43 +03:00
Nekotekina 3141cc9bc7 NIDs fix 2015-01-27 04:26:05 +03:00
Nekotekina 81340e9d5c scePerf stub, sceSysmodule, sema, ef 2015-01-27 03:19:51 +03:00
Raul Tambre 78a92c7d43 More fixes and fixes to previous fixes 2015-01-26 21:01:47 +02:00
Raul Tambre 31dcdea27b Add Coveralls badge
Start making unit tests now!
2015-01-26 20:53:00 +02:00
S Gopal Rajagopal 2e2f92f4f6 SPURS: Implement some portions of taskset policy module 2015-01-26 20:15:58 +05:30
Nekotekina a7d85480a8 Fixes 2015-01-26 15:55:26 +03:00
Nekotekina 12c13e6193 Fix 2015-01-26 09:13:11 +03:00
Nekotekina 9350476263 psv_object_list_t template concept 2015-01-26 01:38:50 +03:00
Hykem 9d6dc46812 Merge pull request #977 from Nekotekina/master
ARMv7 changes
2015-01-25 20:18:59 +00:00
Nekotekina 6d1c9f2764 Some warnings fixed 2015-01-25 19:23:24 +03:00
Nekotekina 94b0d9dfd5 ARMv7: IO funcs registered, u64/s64 stack arg support 2015-01-25 02:34:40 +03:00
Nekotekina 23923af487 ARMv7: Some functions registered, u64/s64 arg/result support 2015-01-24 23:48:45 +03:00
Raul Tambre be50130c3f Various fixes
Fixes to dead code and a couple self-assignings
2015-01-24 21:50:26 +02:00
Raul Tambre 94c81c73c5 Implement more FP instructions 2015-01-24 21:30:36 +02:00
Raul Tambre 23a5cd5cff Small fix to cellMsgDialogOpen2 2015-01-24 21:21:19 +02:00
Nekotekina 08c0c90a05 Some functions registered 2015-01-24 03:18:25 +03:00
Nekotekina 2647b77c01 sceLibKernel.h added 2015-01-24 00:48:14 +03:00
Nekotekina 55a2a5c8e5 ARMv7: CLZ, MVN_IMM, UXTB implemented 2015-01-23 22:36:35 +03:00
S Gopal Rajagopal 430aa9af89 SPURS: Implement cellSpursGetWorkloadData and cellSpursLookUpTasksetAddress 2015-01-24 00:41:29 +05:30
S Gopal Rajagopal 173fb060cb SPURS: Improve the readability of the event flag functions 2015-01-24 00:17:37 +05:30
Nekotekina 47e2e0bd58 ARMv7 interpreter refactoring 2015-01-23 20:25:36 +03:00
Raul Tambre f2e2786959 Merge pull request #975 from Nekotekina/master
ARMv7 changes
2015-01-23 16:55:13 +02:00
Nekotekina 4f706ed69c ++ 2015-01-23 15:57:50 +03:00
Nekotekina bef2ee8f72 ARMv7: MUL implemented 2015-01-23 06:50:14 +03:00
Nekotekina ca3e82341d sceLibc: sprintf() 2015-01-23 04:47:55 +03:00
Nekotekina b4c4c4cc89 Small update 2015-01-23 02:47:28 +03:00
S Gopal Rajagopal 8717bdffa9 SPURS: Implement cellSpursEventFlagWait and cellSpursEventFlagSet. Also modify implementation to make use of vm::var 2015-01-23 03:01:46 +05:30
Nekotekina cbd56fc4f5 ARMv7 opcode table fixed 2015-01-22 23:35:22 +03:00
Nekotekina e01528137e LDRH opcodes 2015-01-22 22:34:03 +03:00
Nekotekina 15e946053b More opcodes 2015-01-22 21:42:03 +03:00
Raul Tambre a7e4e07a80 Merge pull request #973 from sb2130/small-fix
small fix on loader::load(vfsStream& stream)
2015-01-22 16:30:33 +02:00
sb2130 3e40f22d15 small fix on loader::load(vfsStream& stream)
i->get_error_code() would have been changed in the if brace
2015-01-22 13:44:33 +08:00
Nekotekina 4246d83f2a More opcodes 2015-01-22 04:58:20 +03:00
Nekotekina 07a2e0b55a fmt::format fixed 2015-01-22 02:45:50 +03:00
Nekotekina ec3c899955 Some bug fixed 2015-01-22 02:12:49 +03:00
Nekotekina 1a5d5c96ed Compilation fix 2015-01-22 00:39:25 +03:00
Nekotekina 79d03ece66 ARMv7 decoder improved 2015-01-22 00:09:37 +03:00
Nekotekina 6069be7a93 Some code moved to ARMv7Decoder.cpp 2015-01-21 20:33:24 +03:00
Nekotekina ab501842c8 ARMv7: V* instructions draft 2015-01-21 20:15:04 +03:00
Nekotekina aead66ccbf Some refactoring 2015-01-21 18:18:26 +03:00
Nekotekina 8660b41833 Compilation fix 2015-01-21 17:43:45 +03:00
Nekotekina 509e09c2c5 ARMv7Callback.h, psv modules initialization fixed
sceLibc: __cxa_atexit, __aeabi_atexit
2015-01-21 17:34:05 +03:00
Nekotekina 506951a5a4 sceLibc: memset() 2015-01-21 14:38:24 +03:00
Nekotekina ab5dd3ae6f Another attempt 2015-01-21 02:41:56 +03:00
Nekotekina 0cd03ca9e6 psv_log_base initialization fixed 2015-01-21 02:29:54 +03:00
Nekotekina f3ee2ac9ef Compilation fix 2015-01-21 01:46:59 +03:00
Nekotekina 2d7bf06dea ARMv7: LDR_REG, LDRD_IMM, LDREX, STREX
sceLibc: printf() improved
sceLibKernel: sceKernelGetThreadId(), sceKernelWaitThreadEnd()
2015-01-21 01:29:33 +03:00
S Gopal Rajagopal 411dfd9a3f Merge remote-tracking branch 'upstream/master' into spurs_taskset
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellSpurs.cpp
	rpcs3/Emu/SysCalls/Modules/cellSpurs.h
	rpcs3/emucore.vcxproj.filters
2015-01-21 01:13:53 +05:30
S Gopal Rajagopal 17f34f5127 SPURS: Implement cellSpursSendSignal, cellSpursSendWorkloadSignal and some cellSpursEventFlag functions 2015-01-21 00:47:20 +05:30
Nekotekina 5dd3437da9 ARMv7Context, some opcodes added 2015-01-20 18:06:15 +03:00
B1ackDaemon 6a2eefaf3f Merge pull request #971 from Nekotekina/master
Optimization and some restrictions for ppu/armv7 function prototypes
2015-01-20 01:58:07 +02:00
Nekotekina ec2e53dc6b Formatting changes 2015-01-20 02:15:43 +03:00
Nekotekina 36a134798b Small vm fix 2015-01-20 00:30:33 +03:00
Nekotekina 5195b2b1b4 RealToVirtualAddr became vm::get_addr() 2015-01-19 22:41:31 +03:00
Nekotekina c4558d2ca7 cast_armv7_gpr added 2015-01-19 21:02:33 +03:00
Nekotekina 6ec6303933 Compilation fix 2015-01-19 19:59:07 +03:00
Nekotekina 1629feb15e vm::ptr::make() fixed, added to_le() method 2015-01-19 19:30:35 +03:00
Nekotekina 8ecf3dcc80 Compilation fix 2015-01-19 17:34:11 +03:00
Nekotekina f3c9143a81 cast_to_ppu_gpr(), cast_from_ppu_gpr() updated 2015-01-19 17:16:31 +03:00
Nekotekina 3428499492 fmt::to_udec(), fmt::to_sdec() 2015-01-19 16:31:02 +03:00
Nekotekina 0d28f378a7 fmt::format() optimization (fmt::unveil template) 2015-01-19 01:54:56 +03:00
Nekotekina 87f1a9d9dc Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-01-19 00:29:41 +03:00
B1ackDaemon e8d9ea116a Merge pull request #970 from raven02/patch-5
FP: switch to version 420
2015-01-18 23:04:44 +02:00
raven02 2c98a37512 Init: switch to version 420 layout (binding = 0) 2015-01-19 04:42:46 +08:00
raven02 546619ee24 VP: switch to version 420 2015-01-19 04:42:00 +08:00
raven02 7880753099 FP: switch to version 420 2015-01-19 04:41:22 +08:00
B1ackDaemon d9dd3a7eda Merge pull request #969 from achurch/spu-interpreter-fixes
Fix SPU interpreter to match real hardware
2015-01-18 20:54:12 +02:00
B1ackDaemon 9709f7f821 Merge pull request #968 from achurch/ppu-interpreter-fixes
Implement FPU rounding mode and exception checking in the PPU interpreter.
2015-01-18 20:54:08 +02:00
Andrew Church e64f6a1db3 Implement full floating-point support. 2015-01-19 03:19:10 +09:00
Andrew Church 4375422c09 Implement the mfspr and mtspr instructions. 2015-01-19 03:18:36 +09:00
Andrew Church 03b059c1d5 Implement the SRR0 register. 2015-01-19 03:18:03 +09:00
Andrew Church a87de1b565 Implement the FPSCR register. 2015-01-19 03:17:51 +09:00
Nekotekina 561e7cd5a9 Compilation fix 2015-01-18 17:30:24 +03:00
Nekotekina 6545df2b15 Exception handling fix 2015-01-18 16:57:39 +03:00
Andrew Church 3a87a40593 Implement host FP exception checking for PPU floating-point instructions. 2015-01-18 21:14:31 +09:00
Andrew Church 04902965fe Set host FP rounding mode for PPU floating-point instructions. 2015-01-18 21:14:19 +09:00
Raul Tambre 6627cc9666 Let Coverity run itself only on coverity_scan branch 2015-01-18 13:51:40 +02:00
DHrpcs3 1bf9e41c26 Forgot this one 2015-01-18 13:16:24 +02:00
DHrpcs3 482d470bf2 Small RSX fixes
- Fixed constants offset in FP decompiler.
- Fixed vertex textures initialization.
2015-01-18 12:51:30 +02:00
Raul Tambre 7da5714fd9 Try to fix Coverity Scan 2015-01-18 12:13:36 +02:00
Raul Tambre a792bae121 Add Coverity Scan build uploading through Travis
Hopefully I didn't break anything...
2015-01-18 11:28:21 +02:00
Raul Tambre 7c2b2620c1 Add Coverity Scan badge 2015-01-18 11:18:53 +02:00
B1ackDaemon 26f1e2c9e3 Merge pull request #965 from Nekotekina/master
cellAudio update, thread_t
2015-01-18 02:40:03 +02:00
B1ackDaemon 10150957ff Merge pull request #964 from achurch/ppu-interpreter-fixes
Implement missing and fix broken PPU instructions in the interpreter.
2015-01-18 01:11:06 +02:00
Nekotekina d557ba2d97 Audio format changed to 8ch 2015-01-18 02:01:08 +03:00
Andrew Church c9df9c93ed Implement VSCR_NJ for all vector FP instructions. 2015-01-18 07:05:48 +09:00
Andrew Church 9a310c312e Fix intermediate truncation in vector FP fused multiply-add. 2015-01-18 07:05:38 +09:00
Andrew Church 3eb3f66e96 Fix vmaxfp/vminfp with mixed signs of zero. 2015-01-18 07:05:30 +09:00
Andrew Church 10c706d9a5 Handle NaNs correctly in vector FP instructions. 2015-01-18 07:05:18 +09:00
Andrew Church 2e2dbf6c33 Reduce code duplication for vcmp instructions. 2015-01-18 07:05:08 +09:00
Andrew Church 0fa0946a46 Fix vsumsws clobbering input registers and reading from the wrong word. 2015-01-18 07:04:56 +09:00
Andrew Church 14e0cbde9c Catch invalid and zero-division exceptions in FPU instructions. 2015-01-18 07:04:45 +09:00
Andrew Church 43e74a9c61 Fix intermediate rounding of fused multiply-add instructions. 2015-01-18 07:04:35 +09:00
Andrew Church fee20573d2 Fix fcti rounding. 2015-01-18 07:04:22 +09:00
Andrew Church 5fd88bf801 Fix invalid double constant. 2015-01-18 07:04:13 +09:00
Andrew Church 46fa645555 Reduce code duplication in FPU instruction implementations. 2015-01-18 07:04:01 +09:00
Andrew Church bbe12bf4b1 Fix mftbu returning the wrong half of the timebase register. 2015-01-18 07:03:48 +09:00
Andrew Church 74cbf1877b Fix stwcx. and stdcx. not properly clearing the reservation address. 2015-01-18 07:03:16 +09:00
Andrew Church d78fe3b4d4 Fix detection of denormals in frsp. 2015-01-18 07:03:02 +09:00
Andrew Church b7761beee9 Fix lfs/stfs with SNaNs. 2015-01-18 07:02:50 +09:00
Andrew Church 42b55c60e7 Fix fcmp. 2015-01-18 07:02:18 +09:00
Andrew Church 6cd3310171 Fix FPSCR manipulation instructions. 2015-01-18 07:02:11 +09:00
Andrew Church ee508f85b4 Fix handling of VRSAVE, and remove references to nonexistent USPRG registers. 2015-01-18 07:01:52 +09:00
Andrew Church e47d21024c Fix mtcrf. 2015-01-18 07:01:25 +09:00
Andrew Church 54827f7267 Fix conditional bcctr. 2015-01-18 07:01:16 +09:00
Andrew Church ae4420e604 Implement missing PPU instructions. 2015-01-18 07:00:58 +09:00
Nekotekina 011362bf1c Things updated 2015-01-17 21:33:39 +03:00
Nekotekina a6754e29a6 Compilation fix 2015-01-17 19:36:23 +03:00
Nekotekina b897a5d20a cellAudio, thread_t improvements, pause/resume callback 2015-01-17 19:14:58 +03:00
Nekotekina 4dae27c1d4 squeue_t updated 2015-01-16 20:09:53 +03:00
Nekotekina fd06f70387 cellAudio updated, thread_t updated 2015-01-16 17:36:53 +03:00
Hykem 692502b177 Merge pull request #962 from Zangetsu38/master
Fix Git version and Remove old Platform on emucore.vcxproj
2015-01-15 16:10:48 +00:00
Zangetsu38 0a7b9c03e4 Fix My error 2015-01-15 04:18:44 +01:00
Dante38490 edd4359554 Merge branch 'master' of https://github.com/Zangetsu38/rpcs3 2015-01-15 04:16:54 +01:00
Dante38490 e61849c3c4 Fix correct name file 2015-01-15 04:16:14 +01:00
Zangetsu38 6db1ee634d Merge pull request #3 from Bigpet/master
forgot to remove somicolon
2015-01-15 04:15:34 +01:00
Dante38490 1cf4791f95 Fix correct PATH 2015-01-15 04:03:25 +01:00
Peter Tissen 57361e2943 forgot to remove somicolon 2015-01-15 04:00:43 +01:00
Zangetsu38 e69f76de87 Merge pull request #2 from Bigpet/master
don't distinguish between windows and unix for no reason
2015-01-15 03:47:22 +01:00
Peter Tissen 71225da135 don't distinguish between windows and unix for no reason 2015-01-15 03:34:03 +01:00
Dante38490 d3c9aff2f4 Fix Typho 2015-01-15 02:26:49 +01:00
Dante38490 79e8ed47d5 Fix Linux 2 2015-01-15 00:46:42 +01:00
Dante38490 e5b59a6bad Fix Compile Linux 2015-01-14 23:48:55 +01:00
Dante38490 3da3eee15f Fix Git version and Remove old Platform on emucore.vcxproj 2015-01-14 22:46:02 +01:00
Nekotekina 42b748a881 Syscall name resolving improved 2015-01-14 22:45:36 +03:00
B1ackDaemon a43e03b549 Merge pull request #961 from Nekotekina/master
Some bugs fixed
2015-01-14 20:00:21 +02:00
Nekotekina 809ba66290 vm::cast in PPUInterpreter 2015-01-14 19:48:50 +03:00
Nekotekina 4237043f38 Compilation fix 2015-01-14 17:31:24 +03:00
Nekotekina cdeac05e88 vm::cast 2015-01-14 16:57:19 +03:00
Nekotekina 824b0f832a Compilation fix 2015-01-14 02:32:44 +03:00
Nekotekina bf7cf0ee9d .ToLE() changed to .value() or removed 2015-01-14 02:08:00 +03:00
Hykem 8df825abc5 Merge pull request #960 from Nekotekina/master
PKG installer fixed
2015-01-13 18:08:41 +00:00
Nekotekina f1f51521f4 PKG installer fixed 2015-01-13 20:38:32 +03:00
Nekotekina 88fd748dd5 Experimental vm::ptr support for fmt::format 2015-01-13 20:14:07 +03:00
Nekotekina 1c4e89d2bf Formatting fixes, ToBE() replaced with data() 2015-01-13 17:54:36 +03:00
B1ackDaemon f4c712dafc Merge pull request #959 from Nekotekina/master
Experimental function fmt::format
2015-01-13 03:02:16 +02:00
Nekotekina fe86869f37 Fix 2015-01-13 03:10:39 +03:00
Nekotekina 25672cdc47 cntlz fix 2015-01-13 00:32:53 +03:00
Nekotekina 7372583cab Compilation fix 3 2015-01-12 23:37:29 +03:00
Nekotekina e40347dd53 Compilation fix 2 2015-01-12 22:31:11 +03:00
Nekotekina b90540c1eb Compilation fix 2015-01-12 22:11:55 +03:00
Nekotekina b6ec618f97 Experimental template formatting with be_t<> support 2015-01-12 21:12:06 +03:00
Nekotekina ad2b2c9c62 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2015-01-12 16:46:55 +03:00
B1ackDaemon 11fd944f53 Merge pull request #957 from O1L/master
AudioThread improvements
2015-01-12 15:17:48 +02:00
Oil 0648f1d0a2 Build fix 2015-01-11 16:21:53 +04:00
Nekotekina c89d2cf138 a128() removed 2015-01-11 15:13:18 +03:00
Nekotekina da09477be8 Callback syntax changed
call() became overloaded () operator
2015-01-11 13:43:40 +03:00
Nekotekina c36e692411 be_storage_t
BE data is internally stored as u8, u16, u32, u64, u128 value (decreases
amount of reinterpret casts in be<>le conversions)
2015-01-11 12:33:05 +03:00
Oil b5c33ec26b Improved AudioThread interface, added XAudio2 audio output 2015-01-11 03:46:10 +04:00
Oil e6e60795b7 Added minidx9 as a submodule 2015-01-11 01:19:21 +04:00
B1ackDaemon afe221c29d Merge pull request #956 from Nekotekina/master
cellAudio fixes, Linux fixes
2015-01-10 21:32:02 +02:00
Nekotekina 5928b85ec1 cellAudio fix (forgotten functions) 2015-01-10 00:04:17 +03:00
Nekotekina 70ee62f43f cellAudioAdd(2/6ch)Data fixed 2015-01-09 23:11:21 +03:00
Nekotekina 056f93f3e4 Linux fixes 2015-01-09 01:17:26 +03:00
B1ackDaemon 1d0f2c16e0 Merge pull request #955 from Nekotekina/master
vm::stackvar, callback args and syscall results fixed
2015-01-08 00:58:24 +02:00
Nekotekina bd71c1200e CB_FUNC/SC_FUNC fixed 2015-01-07 19:44:47 +03:00
Nekotekina a1b1f6be63 Compilation fix 2 2015-01-07 05:31:17 +03:00
Nekotekina 5f27e9b6e7 Compilation fix 2015-01-07 05:27:35 +03:00
Nekotekina 3f44e07b7c vm::stackvar (experimental)
Should be convenient for small allocations which would be done on stack
on real console
2015-01-07 05:14:00 +03:00
Hykem 5ffc6ffca5 Merge pull request #954 from Nekotekina/master
PKG installer fix + experimental optimization
2015-01-05 16:41:52 +00:00
Hykem b756b80786 Merge pull request #953 from raven02/patch-4
RSX : last few cmd refactoring
2015-01-05 16:41:38 +00:00
S Gopal Rajagopal b01c17d1a0 SPURS: Add locks in the system service workload 2015-01-05 21:54:03 +05:30
S Gopal Rajagopal 2d94db4945 Merge upstream 2015-01-05 16:44:26 +05:30
Nekotekina 181854fc35 cellSaveData reorganized a bit 2015-01-05 02:07:46 +03:00
Nekotekina 92c9a0a9aa Damned fix for damned terraria 2015-01-05 01:45:09 +03:00
Nekotekina ba5e2e3f0f Fix 3 2015-01-05 01:29:51 +03:00
Nekotekina 43ebd4450d Fix 2 2015-01-05 01:01:43 +03:00
Nekotekina 63df801b03 Compilation fix 2015-01-05 00:59:17 +03:00
Nekotekina 6069071e4d Code moved, attempt to make SIGSEGV handler 2015-01-05 00:46:31 +03:00
raven02 12edfeb216 RSX : last few cmd refactoring 2015-01-05 04:08:26 +08:00
Nekotekina 27cfdc897b PKG installer improved
Now it doesn't attempt to delete existing directory and overwrites only
existing files. It should fix installing updates.
2015-01-04 19:44:54 +03:00
Nekotekina 22497757e9 Prefix decoding improved 2015-01-04 18:33:25 +03:00
Nekotekina 896097da0d Experimental RawSPU MMIO implementation 2015-01-04 15:35:47 +03:00
Raul Tambre 3d2aa622f1 Merge pull request #951 from raven02/patch-2
RSX disable front face
2015-01-04 09:47:09 +02:00
raven02 ec7b351cf0 RSX disable front face 2015-01-04 06:38:06 +08:00
Raul Tambre fc97e3d2b8 Merge pull request #949 from Nekotekina/master
Sync primitives fix
2015-01-03 21:17:42 +02:00
Raul Tambre 1d914d820b Merge pull request #950 from raven02/patch-1
RSX : few more refactoring
2015-01-03 21:14:56 +02:00
raven02 d2e6f6fef0 RSX : few more cmd refactoring 2015-01-04 01:00:56 +08:00
S Gopal Rajagopal c1df79b713 SPURS: Integrate SPURS kernel and system service workload. Also, fixed some bugs. 2015-01-03 15:59:22 +05:30
Raul Tambre 3181c566c0 Merge pull request #947 from raven02/rsx
RSX : inline fragment naming & structure as vertex shader one
2015-01-03 10:28:55 +02:00
Nekotekina d8664c8da4 Bugfix 2015-01-02 19:02:31 +03:00
Nekotekina 318d7276c0 Warning fix 2015-01-02 18:29:57 +03:00
Nekotekina 658079af55 Compilation fix 2 2015-01-02 15:32:54 +03:00
Nekotekina b61bcb6ad6 Compilation fix 2015-01-02 14:53:55 +03:00
raven02 fffadb975b RSX : inline fragment naming as vertex shader 2015-01-02 08:06:42 +08:00
Nekotekina f3cd908d5c Sync primitives reworked
(rwlock rewritten)
2015-01-02 02:41:29 +03:00
S Gopal Rajagopal 4a83d43a8f SPURS: System service workload 2015-01-02 01:33:36 +05:30
B1ackDaemon ac75b62f4d Merge pull request #946 from raven02/patch-14
RSX: create depth buffer only when required
2015-01-01 17:56:10 +02:00
raven02 8616d340bb RSX: create depth buffer only when required 2015-01-01 22:54:46 +08:00
Raul Tambre 406eff5ef0 Merge pull request #944 from tambry/master
Implement cellPadPeriphGetInfo
2015-01-01 15:32:15 +02:00
Raul Tambre 9873d909d0 Implement cellPadPeriphGetInfo
Also minor fixes
2015-01-01 12:25:37 +02:00
Raul Tambre 2d46830ba8 Merge pull request #943 from raven02/patch-12
RSX: add alpha func/ref , depth func/mask and bug fix
2015-01-01 11:17:18 +02:00
raven02 a7ca705552 RSX: add alpha func/ref , depth func/mask and bug fix 2015-01-01 12:31:40 +08:00
S Gopal Rajagopal 6664116042 SPURS: System service workload - initial commit 2015-01-01 01:51:22 +05:30
B1ackDaemon 944b9f3ae6 Merge pull request #942 from tambry/SubDisplay
Implement cellSubDisplayGetRequiredMemory
2014-12-31 12:23:31 +02:00
Raul Tambre 044dcb0790 Merge pull request #941 from raven02/patch-12
RSX : refactor glEnable cmd
2014-12-30 22:17:08 +02:00
Raul Tambre 29c1dc2c07 Implement cellSubDisplayGetRequiredMemory 2014-12-30 22:15:00 +02:00
raven02 3e3665a13b RSX: refactor glEnable cmd 2014-12-30 23:44:08 +08:00
B1ackDaemon 99a9a1e38d Merge pull request #940 from raven02/patch-11
RSX : add ClearColor() / ClearStencil() / ClearDepth() / ClearSurface()
2014-12-30 08:30:46 +02:00
raven02 d66825515d Fix compiling #1 2014-12-30 10:57:12 +08:00
raven02 669ebc594c Fix compiling 2014-12-30 06:26:41 +08:00
raven02 1b87f9312b RSX : add ClearColor() / ClearStencil() / ClearDepth() / ClearSurface() 2014-12-30 03:37:58 +08:00
B1ackDaemon 325dd0308b Merge pull request #939 from raven02/patch-10
FP: Implement LIT instruction
2014-12-29 02:55:22 +02:00
raven02 85d23e2c32 format fix 2014-12-29 06:53:31 +08:00
raven02 19e1631697 change to log_warning 2014-12-29 06:43:29 +08:00
raven02 24a19a0dd9 format fix 2014-12-29 06:42:08 +08:00
raven02 51c107656f Temporary disable BRI instruction 2014-12-29 06:39:00 +08:00
raven02 06907cb942 format fix 2014-12-29 06:37:32 +08:00
raven02 b81e0f9e4c Remove duplicate code 2014-12-29 06:22:54 +08:00
raven02 4907dedf69 RSX: Implement LIT instruction 2014-12-29 06:21:34 +08:00
B1ackDaemon af25d47dd9 Merge pull request #938 from Nekotekina/master
Various changes
2014-12-28 20:51:23 +02:00
Nekotekina f16ec62b4a Bugfix 2014-12-28 18:53:02 +03:00
Nekotekina 1636531d4a Conflicts fixed 2014-12-28 16:52:04 +03:00
Nekotekina 6cd2665e12 Conflicts fixed 2014-12-28 16:29:01 +03:00
B1ackDaemon 4b8d617364 Merge pull request #936 from tambry/FPImprovements
Fragment Program improvements and additions
2014-12-28 15:17:42 +02:00
B1ackDaemon 31ca42bf1a Merge pull request #935 from raven02/patch-9
RSX: add few nv4097 cmds and simplify case switch
2014-12-28 15:17:35 +02:00
Nekotekina d11bdfedb6 GSFrame caption fixed 2014-12-28 16:15:53 +03:00
Nekotekina 653db28675 removed excessive stuff 2014-12-28 16:15:22 +03:00
raven02 4701affbf9 minor changes 2014-12-28 21:01:30 +08:00
raven02 63a559310c case range switch 2014-12-28 21:00:20 +08:00
Raul Tambre 108e879266 Fragment Program improvements and additions
+ Added TODOs for REFL, LIT, LRP, BEM, TEXBEM and TXPBEM
- Removed the warning message about TEX_SRB texture projection being
used
* Implemented packSnorm2x16, unpackSnorm2x16, packSnorm4x8 and
unpackSnorm4x8. All need more testing to be confirmed as working
2014-12-28 09:53:01 +02:00
raven02 b610155956 one more cmd 2014-12-28 08:46:50 +08:00
raven02 8e88e531de few more cmd 2014-12-28 08:43:14 +08:00
raven02 8690c02972 RSX : log NV4097_SET_CONTEXT_DMA_REPORT 2014-12-28 08:35:56 +08:00
B1ackDaemon 0388ba5032 Merge pull request #933 from O1L/master
Some changes in LLEModulesManager and cellAudio
2014-12-27 22:20:36 +02:00
Oil 2a6f4e19cc Some changes in LLEModulesManager and cellAudio 2014-12-27 21:25:51 +04:00
B1ackDaemon e79a7c2261 Merge pull request #932 from tambry/FragmentProgramFix
Fix TXB instruction
2014-12-27 13:47:59 +02:00
Raul Tambre 240c209360 Fix TXB instruction 2014-12-27 11:00:44 +02:00
B1ackDaemon 411e21210c Merge pull request #931 from raven02/patch-7
RSX break fix: fall back the case switch
2014-12-27 00:58:29 +02:00
B1ackDaemon c8ba041a38 Merge pull request #930 from tambry/StatFixesAndFragment
Fragment program improvements and stat fixes
2014-12-26 22:57:29 +02:00
raven02 b9a8c6414d RSX: fall back the case switch 2014-12-27 04:15:00 +08:00
Nekotekina dabac03820 Revert "Formatting RSX thread"
This reverts commit 97d50a0692.
2014-12-26 21:32:53 +03:00
Raul Tambre 0cd3cd3e05 cellFsStat fix and other fixes 2014-12-26 18:16:57 +02:00
Raul Tambre 1bde52623b Fragment Program improvements
* Implement TXP (Needs testing)
* Implement TXB
* Implement TXL
2014-12-26 17:56:55 +02:00
Nekotekina be2d606193 Conflicts fixed 2014-12-26 17:06:36 +03:00
Raul Tambre d6989c1847 Merge pull request #927 from raven02/patch-5
Formatting RSX thread
2014-12-26 10:20:18 +02:00
Raul Tambre cbffd14539 Merge pull request #925 from tambry/SaveDataTimes
Improvements to saving and cellFsStat
2014-12-26 10:20:07 +02:00
Raul Tambre 052692ac8c Improvements to saving and cellFsStat 2014-12-26 10:06:12 +02:00
Raul Tambre 2c3e3b583a Merge pull request #928 from raven02/patch-6
ELF loader : small bug fix
2014-12-26 09:46:49 +02:00
raven02 98404e12c5 ELF loader : small bug fix 2014-12-26 15:26:43 +08:00
raven02 97d50a0692 Formatting RSX thread 2014-12-26 14:25:22 +08:00
B1ackDaemon 2c70cef453 Merge pull request #926 from raven02/patch-4
Not always flush in callback
2014-12-26 01:11:23 +02:00
Nekotekina 1491dcdc92 squeue_t fix 2 2014-12-26 01:58:43 +03:00
raven02 3f7e6c990f Not always flush in callback 2014-12-26 06:54:36 +08:00
Nekotekina bdbbde4d36 squeue_t fixed 2014-12-26 01:49:55 +03:00
Nekotekina c305949435 Compilation fix 2014-12-25 23:30:34 +03:00
Raul Tambre 00e87adcfd Merge pull request #924 from raven02/revert-867-patch-7
Revert "Check address is not null for cellGcmAddressToOffset"
2014-12-25 19:29:54 +02:00
raven02 bc8fba9cc4 Revert "Check address is not null for cellGcmAddressToOffset" 2014-12-26 00:46:33 +08:00
Raul Tambre 9a63754b43 Merge pull request #922 from darkf/string-search
Add a memory ASCII string search
2014-12-25 11:07:21 +02:00
darkf efd729d0b8 MemoryStringSearcher: drop superfluous qualifier 2014-12-25 00:53:56 -08:00
Raul Tambre e38dc93a66 Merge pull request #921 from darkf/savedata-fix
cellSaveData: Terminate callback loop when asked to
2014-12-25 10:44:10 +02:00
darkf efde3219bd cellSaveData: terminate callback loop when asked to 2014-12-25 00:32:18 -08:00
darkf a94a7d4495 Add a memory ASCII string search 2014-12-24 20:39:57 -08:00
Nekotekina 7613d749ec SQueue renamed and moved 2014-12-25 01:24:17 +03:00
B1ackDaemon 31aef6460d Merge pull request #920 from tambry/SailAndVideo
cellSail PAMF creation and 3D availability fix
2014-12-24 21:27:06 +02:00
Raul Tambre cf1bd9b61b Fix compiling 2014-12-24 21:03:52 +02:00
Raul Tambre 642e850dfe cellSail PAMF creation and 3D availability fix 2014-12-24 20:47:56 +02:00
Nekotekina 69388f032e cellFs functions merged 2014-12-24 21:19:59 +03:00
Nekotekina cbdc32e95e Kernel Explorer partially restored 2014-12-24 19:09:32 +03:00
Nekotekina d8239a39c9 std::shared_ptr in IdManager 2014-12-24 02:38:13 +03:00
Nekotekina b2de24db73 SMutex eliminated 2014-12-23 02:31:11 +03:00
Raul Tambre 27c76960b4 Merge pull request #918 from Dante38490/patch-1
Fix Size Setting panel
2014-12-22 17:25:21 +02:00
Raul Tambre 4f031c11c6 Merge pull request #916 from tambry/master
Update submodules
2014-12-22 13:53:13 +02:00
Nekotekina 0fb092f2a5 Syscalls: minor fixes 2014-12-22 03:56:04 +03:00
DHrpcs3 e1ea7a28c3 Fixed condition decompilation in vertex & fragment shaders
Added 30 & 60 modes to frame limiter
2014-12-22 01:10:22 +02:00
Dante38490 7464843e53 Update MainFrame.cpp
Fix Size Setting panel for Tab Graphic
2014-12-22 00:06:25 +01:00
B1ackDaemon 5f40f732a9 Merge pull request #917 from raven02/patch-2
Fix callback hangup in Arkedo game series
2014-12-21 23:52:20 +02:00
raven02 52467c54e3 Fix callback hangup in Adreko game series 2014-12-22 05:37:43 +08:00
DHrpcs3 969cf67ba8 Implemented frame limiter
Some errors in unpkg replaced with warnings
2014-12-21 22:42:15 +02:00
Raul Tambre 688e5a3af6 Fix compiling 2014-12-21 21:44:07 +02:00
S Gopal Rajagopal 52b342464b SPURS: Improve readability of SPURS1 kernel at the cost of some perormance 2014-12-22 01:07:53 +05:30
B1ackDaemon 0011a50c0b Merge pull request #915 from O1L/master
Show more information in GSFrame title, some changes in cellAudio
2014-12-21 19:52:40 +02:00
Oil b3be4d11e3 Show more information in GSFrame, some changes in cellAudio 2014-12-21 20:29:51 +04:00
Raul Tambre b2b31b0421 Update FFMPEG 2014-12-21 12:58:30 +02:00
Raul Tambre 5f3b25b43a Update ASMJIT 2014-12-21 12:56:38 +02:00
B1ackDaemon a9647152f7 Merge pull request #914 from raven02/patch-1
RSX : Reapply fmt::merge change & VFS change
2014-12-21 11:15:34 +02:00
raven02 e98d1c0cb7 Trophy.trp path change 2014-12-21 07:36:17 +08:00
raven02 1e6a533ac7 PARAM.SFO path change 2014-12-21 07:35:29 +08:00
raven02 c6a00e157d Reapply VFS change 2014-12-21 07:32:19 +08:00
raven02 0506bf0352 Reapply fmt::merge change 2014-12-21 07:30:30 +08:00
B1ackDaemon 7a61fd3055 Merge pull request #913 from raven02/patch-3
RSX: vertex data regression fix
2014-12-20 22:51:21 +02:00
S Gopal Rajagopal 698f4fd450 SPURS: Improve the readability of the SPURS2 kernel at the cost of some performance 2014-12-21 01:37:29 +05:30
raven02 7c9062fd3d fix :) 2014-12-21 01:54:01 +08:00
raven02 612d11bd03 Minor fix 2014-12-21 01:42:15 +08:00
raven02 c63f370d8b regression fix #1 2014-12-21 01:14:27 +08:00
raven02 c76dd371f3 RSX: vertex data regression fix 2014-12-21 01:13:10 +08:00
B1ackDaemon 5d6fb5a56b Merge pull request #911 from darkf/savedata_fix
cellSaveData fix
2014-12-20 14:20:27 +02:00
B1ackDaemon f231ebb0ad Merge pull request #910 from darkf/cellsail_fix
cellSail: fix wrong argument type
2014-12-20 14:20:23 +02:00
darkf e0ff129dd1 vfsLocalFile: log when Create fails 2014-12-20 03:46:09 -08:00
darkf 980b9aaab3 cellSaveData: allocate file list properly 2014-12-20 03:45:27 -08:00
darkf 29036504e6 cellSail: fix wrong argument type 2014-12-19 23:05:42 -08:00
Hykem d07328417f Merge pull request #909 from tambry/master
Revert "Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC"
2014-12-19 16:03:05 +00:00
Raul Tambre 2545372a76 Revert "Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC"
This reverts commit c5ca199163.
2014-12-19 17:19:23 +02:00
B1ackDaemon c1a6767187 Merge pull request #908 from tambry/FileOP
Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC
2014-12-19 16:45:47 +02:00
Raul Tambre c5ca199163 Implement CELL_SAVEDATA_FILEOP_WRITE_NOTRUNC 2014-12-19 16:02:11 +02:00
B1ackDaemon dd067847dd Merge pull request #907 from tambry/cellSailAndFixes
cellSail updates and many various fixes
2014-12-19 13:46:36 +02:00
Raul Tambre ce853bc252 cellSail updates and many various fixes 2014-12-19 13:31:52 +02:00
Nekotekina e9653f1029 cellMsgDialogOpen2(): argument checking improved 2014-12-19 02:18:44 +03:00
B1ackDaemon 83208d8b89 Merge pull request #905 from raven02/patch-2
Revert VFS and fmt::merge
2014-12-17 21:52:26 +02:00
raven02 37838a49ec Revert fmt::merge 2014-12-18 00:10:20 +08:00
raven02 52bf72787f Revert VFS 2014-12-18 00:05:29 +08:00
B1ackDaemon 621864be18 Merge pull request #904 from raven02/patch-1
Temporary disable compile_shader()
2014-12-17 17:21:19 +02:00
raven02 114550b0f7 Temporary disable compile_shader() 2014-12-17 22:59:28 +08:00
B1ackDaemon fb16583964 Merge pull request #903 from raven02/rsx
RSX: shaders fix and vertex texture implementation
2014-12-17 16:35:59 +02:00
raven02 3fc471eb32 RSX: shaders fix and vertex texture implementation 2014-12-17 22:01:59 +08:00
B1ackDaemon d2964c1fa4 Merge pull request #902 from darkf/fix_fixed
Minor fixes
2014-12-16 17:37:45 +02:00
B1ackDaemon 369bef5e1e Merge pull request #901 from raven02/patch-1
RSX: fix missing case break
2014-12-16 17:28:36 +02:00
darkf 8fa301ec05 cellMsgDialogOpen2: Don't segfault when given a null pointer 2014-12-16 07:07:33 -08:00
darkf 1dbc0b448a cellMsgDialog: Fix a few minor typos. 2014-12-16 07:04:59 -08:00
raven02 e27a1f98aa Fix missing break 2014-12-16 22:52:43 +08:00
S Gopal Rajagopal 5a60160035 SPURS: Added comments on CellSpurs fields 2014-12-16 09:12:50 +05:30
B1ackDaemon 9ca6bb9296 Merge pull request #900 from O1L/master
High rescale quality for icons, fixed removing of games in GameViewer
2014-12-15 21:15:31 +02:00
Oil 8ec5b1cd84 High rescale quality for icons in GameViewer, fixed removing of games in GameViewer 2014-12-15 21:38:12 +04:00
B1ackDaemon 181d593cee Merge pull request #899 from Survanium90/master
Added function "sys_process_is_stack"
2014-12-15 18:47:11 +02:00
Survanium90 eb9e6434f1 Added function "sys_process_is_stack" 2014-12-15 19:09:27 +03:00
B1ackDaemon 2b719b6dc0 Merge pull request #898 from tambry/DrmFunctions
Implement sys_game_process_exitspawn and fixes
2014-12-14 21:04:49 +02:00
Raul Tambre fc25abdbfd Fix compiling 2014-12-14 20:51:19 +02:00
B1ackDaemon 89d8c34cae Merge pull request #897 from raven02/patch-13
RSX : enum vec_opcode & sca_opcode
2014-12-14 20:34:29 +02:00
Raul Tambre b8d2343765 Implement sys_game_process_exitspawn and fixes 2014-12-14 19:14:26 +02:00
raven02 c0b4bf2f94 log error for unimplmented fpcode 2014-12-14 23:21:41 +08:00
raven02 96a992fadb enum sca_opcode and vec_opcode 2014-12-14 23:10:48 +08:00
raven02 32aa5ad415 RSX : enum vec_opcode & sc_opcode 2014-12-14 23:09:44 +08:00
Hykem 24c5e7d6cd Merge pull request #886 from Arkaran99/master
Avoid giving arguments by value for log
2014-12-14 13:11:50 +00:00
B1ackDaemon e5718ed264 Merge pull request #896 from tambry/SailThings
cellSail additions, updates and fixes
2014-12-14 12:02:36 +02:00
B1ackDaemon 7a4d851201 Merge pull request #895 from raven02/patch-12
Better fit the gameviewer and icon path fix for blu-ray disc
2014-12-14 12:02:27 +02:00
raven02 cb52ca220e vfs path fix 2014-12-14 17:36:32 +08:00
raven02 6c571b30d2 icon sizing fix 2014-12-14 16:21:38 +08:00
Raul Tambre ebe2a5e2cc cellSail additions, updates and fixes 2014-12-14 09:59:04 +02:00
raven02 8b4de95919 fix icon loading for blu-ray disc 2014-12-14 15:04:29 +08:00
raven02 7e2fa38519 sort name column by default 2014-12-14 14:54:26 +08:00
raven02 47fc7f22b0 mainframe resize 2014-12-14 14:48:24 +08:00
raven02 012af73844 Better fit the gameviewer 2014-12-14 14:47:06 +08:00
S Gopal Rajagopal 68cc9b2059 SPURS: Enable logging of taskset calls 2014-12-14 12:07:46 +05:30
S Gopal Rajagopal 53e0979f29 SPURS: Implement cellSpursCreateTask 2014-12-14 03:19:06 +05:30
B1ackDaemon 5d745a60dc Merge pull request #893 from Nekotekina/master
cellPamfReaderGetStreamInfo() improved
2014-12-13 22:43:57 +02:00
B1ackDaemon ff64f908be Merge pull request #892 from O1L/master
GUI: show game icons in GameViewer
2014-12-13 21:08:40 +02:00
S Gopal Rajagopal 40f5f73658 SPURS: Implement some taskset functions 2014-12-14 00:22:31 +05:30
B1ackDaemon 68ec7ac095 Merge pull request #891 from raven02/patch-11
RSX: Fixed BRI, Experimental BRA implementation
2014-12-13 20:51:28 +02:00
Oil 4ca8cb05fa Build fix 2014-12-13 21:51:40 +04:00
Oil 6bd041f800 GUI: show game icons in GameViewer 2014-12-13 21:27:34 +04:00
Nekotekina 982f7cba59 cellPamfReaderGetStreamInfo() improved 2014-12-13 19:54:01 +03:00
raven02 1b6bd42201 Minor fix 2014-12-14 00:39:28 +08:00
raven02 4967771df5 Add std::set<int> m_jump_lvls 2014-12-14 00:19:06 +08:00
raven02 a5705d3308 VP: Fixed BRI, Experimental BRA implementation 2014-12-14 00:17:23 +08:00
Hykem 0e81313477 Merge pull request #889 from Dante38490/patch-1
Fixed Path Rap file for decrypt .Edat
2014-12-13 13:49:05 +00:00
S Gopal Rajagopal 5dd15b3c47 SPURS: Implement create taskset 2014-12-13 01:42:09 +05:30
Dante38490 7a05ad7023 Fixed Path Rap file for decrypt .Edat 2014-12-12 17:31:48 +01:00
Hykem 52eb61736d Merge pull request #883 from MRebhan/patch-1
Update README.md
2014-12-12 15:38:55 +00:00
Hykem b48159b104 Merge pull request #888 from Nekotekina/master
DivX, MP3 codecs activated, cellPamf and cellDmux improvements
2014-12-12 15:38:26 +00:00
Nekotekina 154433b2e9 Bugfix 2014-12-12 04:27:27 +03:00
Nekotekina 058eb9e709 Demuxer improved 2014-12-12 03:21:34 +03:00
Nekotekina 8557614322 cellPamf improved 2014-12-11 22:25:11 +03:00
B1ackDaemon 937214bc59 Merge pull request #887 from gopalsr83/master
PPU: Corrected SC instruction format to comply with the PowerISA
2014-12-11 20:43:33 +02:00
B1ackDaemon 447580a6b7 Merge pull request #885 from tambry/Fixes
Minor fixes
2014-12-11 18:00:48 +02:00
Raul Tambre 418a12dd03 Minor fixes 2014-12-11 16:54:02 +02:00
S Gopal Rajagopal 5db254f3a5 PPU: Corrected SC instruction format to comply with the PowerISA 2014-12-11 19:13:17 +05:30
B1ackDaemon 530c17f4f7 Merge pull request #881 from O1L/master
ARMv7 decoder reworked.
2014-12-10 13:47:26 +02:00
S Gopal Rajagopal a254507be1 SPURS: Implement taskset attribute functions 2014-12-10 10:12:13 +05:30
Nekotekina 2b4f858caf Fixes 2014-12-09 20:24:50 +03:00
Nekotekina cb694f944c Added DivX and MP3 support 2014-12-09 19:13:03 +03:00
B1ackDaemon 1ba5b27f45 Merge pull request #884 from Nekotekina/master
PSV loader fixed
2014-12-08 10:24:34 +02:00
Nekotekina f2d4453b04 PSV loader fixed 2014-12-08 03:35:15 +03:00
Oil 5d37b42576 GCC build fix 2014-12-07 15:25:49 +04:00
MRebhan 1ad53bc889 Update README.md
Add dependency for Linux build: libglew-dev
2014-12-07 08:30:15 +01:00
Hykem f241a63e86 Merge pull request #882 from Nekotekina/master
AV decoding fix
2014-12-06 14:02:18 +00:00
Nekotekina 796c1b46c2 asserts replaced (2) 2014-12-06 15:48:08 +03:00
Nekotekina 270bfad96f asserts replaced 2014-12-06 12:28:17 +03:00
Nekotekina 6e1e537b5f Small fix 2014-12-06 03:50:39 +03:00
Nekotekina eb7cd7ccce Demuxer improved + MSVC thread name registrering 2014-12-05 19:12:15 +03:00
DHrpcs3 473af155fc Update README.md 2014-12-05 16:32:55 +02:00
Oil 16d31bc5e6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-12-03 20:29:11 +04:00
Nekotekina 8cb8298c03 Going to fix demuxer 2014-12-03 16:21:58 +03:00
B1ackDaemon b942da3f68 Merge pull request #879 from gopalsr83/master
PPU: Implemented some instructions and fixed some bugs in the recompiler. Also fixed some issues in the interpreter.
2014-12-02 03:19:35 +02:00
DHrpcs3 ceee6049dc Fixed last commit 2014-12-02 03:04:01 +02:00
DHrpcs3 d82f0b62a5 Fixed RSXThread::ReadIO32 exception 2014-12-02 02:51:42 +02:00
DHrpcs3 a725676346 Fixed sys_mmapper_unmap_memory 2014-12-02 01:25:08 +02:00
DHrpcs3 d593e47554 RSX: Fixed NV4097_SET_VERTEX_DATA4UB_M, NV4097_SET_VERTEX_DATA2F_M & NV4097_SET_VERTEX_DATA4F_M implementation 2014-12-02 00:02:05 +02:00
Oil b2c113e5b1 Oops, disable my debug logs. 2014-12-01 23:27:22 +04:00
Oil c3696f7897 ARMv7 decoder reworked (needs more testing / fixes / optimisations). TODO: implement new ARMv7 disassembler (currently ARMv7DisAsm fully disabled), add 0x0 opcodes group. 2014-12-01 23:20:27 +04:00
S Gopal Rajagopal 1f60d6374c Merge remote-tracking branch 'upstream/master' 2014-12-02 00:49:18 +05:30
Alexandro Sánchez Bach 7ba0bda244 Merge pull request #878 from Nekotekina/master
PSV progression, loader fixes
2014-12-01 18:17:57 +01:00
Oil b736b8616b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-12-01 20:47:48 +04:00
Nekotekina e4d5e7c78b Some draft 2014-12-01 19:34:18 +03:00
S Gopal Rajagopal 54d6aee028 Merge remote-tracking branch 'upstream/master' 2014-12-01 18:47:25 +05:30
Nekotekina c61fe621b0 Memory leak fixed 2014-12-01 03:41:01 +03:00
Nekotekina 697b699873 Some bugs fixed
ARMv7 partially restored
2014-12-01 01:04:47 +03:00
S Gopal Rajagopal 6cc6ca9f3c PPU: Implemented more instructions 2014-12-01 02:09:48 +05:30
Nekotekina 1568930da6 /dev_bdvd/ and /app_home/ fixed 2014-11-30 22:23:51 +03:00
B1ackDaemon 8f5d9b2c0e Merge pull request #876 from tambry/master
CellVideoOut fix, formatting fixes and Travis compiling fix
2014-11-30 21:09:27 +02:00
Nekotekina d648957864 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-30 15:08:54 +03:00
Nekotekina fd7a0950a7 Compilation fix 2014-11-30 15:08:23 +03:00
DHrpcs3 a58c5f5a4c VFS fixes
- using /app_home/ as local link
Implemented fmt::merge & fmt::tolower
2014-11-30 13:18:17 +02:00
Oil 58787f80a1 Conflicts fixed 2014-11-30 12:35:03 +04:00
Raul Tambre 1eb9460f2b Merge remote-tracking branch 'upstream/master' 2014-11-30 09:09:38 +02:00
DHrpcs3 ebae8dad0a Minor fixes 2014-11-30 00:03:29 +02:00
DHrpcs3 12d8e0ef38 Fixed path to param.sfo 2014-11-29 23:59:16 +02:00
S Gopal Rajagopal ce0f713f03 PPU: Implement more instructions in the recompiler. Fix some instructions in the interpreter. 2014-11-30 02:46:29 +05:30
Nekotekina 9fc7197c4f cellGameContentPermit: extremely DANGEROUS bug fixed
And few tiny changes.
2014-11-29 20:41:18 +03:00
Raul Tambre 6aff1545c2 Merge remote-tracking branch 'upstream/master'
Conflicts:
	rpcs3/Emu/SysCalls/lv2/lv2Fs.cpp

Update from master
2014-11-29 19:05:49 +02:00
Raul Tambre bfff7ff5f9 Fix CellVideoOut values, formatting fixes 2014-11-29 19:01:04 +02:00
DHrpcs3 d9b0b56e3e Using strcmp instead stricmp 2014-11-29 17:15:26 +02:00
DHrpcs3 6d3c4e6efc Fixed compilation 2014-11-29 16:54:32 +02:00
DHrpcs3 47df9eb156 Fixed loading unknown modules 2014-11-29 16:50:59 +02:00
DHrpcs3 2b7f984de8 Fixed GameViewer
Disabled pause on null rsx instruction
2014-11-29 16:16:48 +02:00
DHrpcs3 95ce623da4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-29 15:17:34 +02:00
DHrpcs3 a59cf50f03 Improved LLE Manager
Improved VFS
2014-11-29 15:16:53 +02:00
S Gopal Rajagopal 6ea50567b6 PPU: Implemented some instructions in the recompiler. Fixed some bugs in the interpreter. 2014-11-29 01:39:59 +05:30
Nekotekina a7e659abd1 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-28 22:06:45 +03:00
Nekotekina 936aeed0a5 SPU loader fix 2014-11-28 21:56:16 +03:00
S Gopal Rajagopal 205e1d88b3 PPU LLVM recompiler: Implement more instructions 2014-11-26 00:53:24 +05:30
S Gopal Rajagopal 631675fdd6 Merge remote-tracking branch 'upstream/master'
Conflicts:
	rpcs3/Emu/Cell/PPUInterpreter.h
2014-11-25 23:26:16 +05:30
Alexandro Sánchez Bach a8c9898253 Merge pull request #874 from devmapal/master
Fixes compilation error
2014-11-24 22:15:08 +01:00
Fabian Schaffert ad01829b23 Fixes compilation error 2014-11-24 22:06:21 +01:00
S Gopal Rajagopal a9645eda73 Implement some more FP instructions in the PPU LLVM recompiler 2014-11-25 02:14:12 +05:30
Nekotekina ea1bad8724 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-24 22:51:01 +03:00
S Gopal Rajagopal bb1e08a6be Remove code left in comments from the PPU LLVM recompiler. Also cause the emulator to pause if unsupported instructions are required to be compiled. 2014-11-24 23:49:06 +05:30
DHrpcs3 795729a0b7 Fixed vm_ptr
Improved elf64 loader.
Minor improvements to vm.
Added hotkeys to MainFrame.
2014-11-24 20:12:04 +02:00
S Gopal Rajagopal d92344f383 Implement more instructions in the PPU LLVM recompiler 2014-11-24 01:41:25 +05:30
S Gopal Rajagopal 5934132b55 Implemented VPK* 2014-11-23 20:47:00 +05:30
S Gopal Rajagopal 921ee1464b Implemented some vector instructions 2014-11-23 19:06:20 +05:30
Nekotekina 8df2c3d707 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-22 19:49:54 +03:00
Hykem c846e33a10 Merge pull request #873 from tambry/TravisFix
Fix Travis compiling
2014-11-21 15:58:16 +00:00
Raul Tambre 16b4b9bf40 Fix Travis compiling 2014-11-21 15:52:01 +02:00
DHrpcs3 cdfef3bf9e Fixed compilation errors
Implemented converter_le_be
2014-11-20 21:41:04 +02:00
S Gopal Rajagopal 5addbcbbb0 Direct UT output to PPULLVMRecompiler.log 2014-11-21 00:04:59 +05:30
S Gopal Rajagopal 6661018691 Fixed the unit test framework for the PPU LLVM recompiler. Added tests for ANDC. Fixed an issues that prevented LMW/STMW from being generated properly. 2014-11-20 23:38:10 +05:30
S Gopal Rajagopal 13acb06d1a Implemented ANDC and also added support for TB and TBH in MFSPR 2014-11-20 01:03:51 +05:30
S Gopal Rajagopal e8582c8655 Improved the logic that detects which functions should be recompiled 2014-11-20 00:42:07 +05:30
Hykem 28aaa94022 Merge pull request #871 from raven02/patch-9
Check contentInfoPath && usrdirPath is not null for cellGameContentPermi...
2014-11-19 16:13:38 +00:00
raven02 06f3df0ff4 Check contentInfoPath && usrdirPath is not null for cellGameContentPermit 2014-11-19 23:17:29 +08:00
DHrpcs3 598d929aba Implemented LLE Modules Manager (draft)
Improved loader core.
Implemented *_thread wrappers.
Minor fixes.
Temporary disabled ELF Compiler & DisAsm frame.
2014-11-19 16:16:30 +02:00
Hykem 1d61484992 Merge pull request #870 from tambry/SPRFixes
Fix for TB SPR and disable writing to TB SPR
2014-11-18 17:29:50 +00:00
Hykem b019ee09c6 Merge pull request #866 from Dante38490/master
Update rpcs3.sln
2014-11-18 17:29:40 +00:00
Raul Tambre f99353f649 Fix for TB SPR and disable writing to TB SPR
Now use get_time() like MFTB instead of reading for the time-based SPR.
2014-11-18 18:03:49 +02:00
Alexandro Sánchez Bach 11d9642639 Merge pull request #869 from raven02/patch-8
Minor fix
2014-11-18 09:01:04 +01:00
raven02 cd347fa110 Minor fix 2014-11-18 14:44:37 +08:00
Alexandro Sánchez Bach 427fd58ef2 Merge pull request #868 from devmapal/master
Fixes issues in sys_semaphore_create() and sys_event_flag_(create/get)()
2014-11-17 04:29:39 +01:00
Fabian Schaffert e9ab9f51fc Fixes segfaults for sys_event_flag_(create/get)
Neither sys_event_flag_create() nor sys_event_flag_get() checked for
NULL pointers in their arguments, which caused the corresponding test
from ps3autotests to segfault.
2014-11-16 21:16:49 +01:00
Fabian Schaffert 00e0e85793 Fixes return value of sys_semaphore_create()
In case of att.addr() being NULL, CELL_EFAULT must be returnd and not
CELL_EINVAL, according to the corresponding ps3autotest.
2014-11-16 14:45:58 +01:00
Alexandro Sánchez Bach 1ef01be4b5 Merge pull request #867 from raven02/patch-7
Check address is not null for cellGcmAddressToOffset
2014-11-16 12:46:36 +01:00
raven02 25ba18e8a7 Check address is not null for cellGcmAddressToOffset 2014-11-16 19:05:41 +08:00
Zangetsu 05f91dc293 Update SLN Delete version express and Update Number for VS2013 Update 4 2014-11-16 05:40:02 +01:00
Hykem 0e094f6618 Merge pull request #864 from devmapal/master
Fixes build in Debug mode on linux
2014-11-15 21:51:31 +00:00
Fabian Schaffert f507724b5c Fixes build in Debug mode on linux
The changes introduced in commit 80294e1 makes the mcdisassembler
component of LLVM necessary in debug mode to successfully link rpcs3.
2014-11-15 21:30:01 +01:00
Hykem 4fe4e589fb Merge pull request #863 from raven02/patch-6
Check pSelf->pAddr is not NULL before setup pAddr pointer
2014-11-15 15:19:50 +00:00
Hykem 19d1a6babc Merge pull request #858 from gopalsr83/ppu_llvm_recompiler
Improved tracer for the PPU recompiler
2014-11-15 15:19:40 +00:00
Alexandro Sánchez Bach 2e40123557 Merge pull request #862 from tambry/Fixes
cellSail fixes, split GetRegBySPR into ReadSPR and WriteSPR, added 0x10c case for them
2014-11-15 15:49:20 +01:00
raven02 3b31a9233d Check pSelf->pAddr is not NULL before setup pAddr pointer 2014-11-15 22:47:30 +08:00
Raul Tambre 3af57957d5 cellSail fixes and GetRegBySPR split up
* Fixed cellSailPlayerAddDescriptor
* Fixed cellSailDescriptorSetAutoSelection
* Fixed cellSailDescriptorIsAutoSelection
* Split GetRegBySPR into ReadSPR and WriteSPR
* Added 0x10c for ReadSPR and WriteSPR (Time-based register)
2014-11-15 16:45:02 +02:00
Alexandro Sánchez Bach 4f30e014a4 Merge pull request #861 from devmapal/master
Fixes segmentation fault on exiting rpcs3
2014-11-15 01:41:47 +01:00
Fabian Schaffert 6906d146bb Adds copy constructor for class InstrBase
A copy constructor is necessarry for `class InstrBase`, as the implicit
copy constructor simply copies the pointer `m_args`. This results in a
double delete of the same memory region, causing a segmentation fault
when rpcs3 exited.
2014-11-15 00:16:17 +01:00
Alexandro Sánchez Bach 7904d87ddd Merge pull request #860 from devmapal/master
Fixes segfault described in #794
2014-11-12 23:40:04 +01:00
Fabian Schaffert 4185c1e422 Fixes segfault described in #794
Fixes bug in sys_semaphore_create() when a NULL pointer address is
passed in sem or attr.

Fixes bug in sys_semaphore_get_value() when a NULL pointer address is
passed in count.
2014-11-12 23:25:27 +01:00
Nekotekina 220384997f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-11 16:04:16 +03:00
B1ackDaemon 831ff350f2 Merge pull request #859 from tambry/RSXLogging
Added RSX logging option
2014-11-10 22:47:43 +02:00
Raul Tambre 9ee7471bd5 Added RSX logging option
Also some minor fixes to cellSail
2014-11-10 22:18:46 +02:00
S Gopal Rajagopal 1568d2d602 Fixed some more gcc/clang compilation errors 2014-11-10 14:32:41 +05:30
S Gopal Rajagopal 87accc624f Fixed some errors thrown by gcc/clang 2014-11-10 12:49:48 +05:30
S Gopal Rajagopal 18251b784f Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler 2014-11-10 11:30:44 +05:30
Nekotekina c8d4193f08 PSV: sceKernelCreateThread and sceKernelStartThread
Some fixes in callback manager
2014-11-10 03:21:50 +03:00
raven02 ea7ec448dd WIN32: set timer resolution clock to 1 ms 2014-11-10 07:34:28 +08:00
S Gopal Rajagopal 06a4c301cd Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler
Conflicts:
	rpcs3/Emu/Cell/PPUInterpreter.h
	rpcs3/Emu/Cell/PPULLVMRecompiler.cpp
	rpcs3/Emu/Cell/PPULLVMRecompiler.h
	rpcs3/Emu/Cell/PPUThread.cpp
	rpcs3/emucore.vcxproj.filters
	rpcs3/rpcs3.vcxproj
2014-11-10 02:31:35 +05:30
S Gopal Rajagopal c12a98510c Utilize idle time to combine blocks 2014-11-10 01:04:21 +05:30
S Gopal Rajagopal 71c12360c7 Always inline functions 2014-11-09 14:03:36 +05:30
S Gopal Rajagopal 5c468d7591 Disabled call stack tracing when using the PPU LLVM recompiler 2014-11-09 11:50:01 +05:30
S Gopal Rajagopal 80294e1034 Fixed some bugs 2014-11-09 02:00:19 +05:30
Nekotekina ac20cf0060 cellGcmCallback modified 2014-11-08 19:58:51 +03:00
S Gopal Rajagopal 34e34910fd Integrated execution engine, tracer, recompilation engine and compiler 2014-11-08 09:52:23 +05:30
Nekotekina 27c35174bc ARMv7: ADD*, LSL*, shifts fixed 2014-11-07 22:30:04 +03:00
S Gopal Rajagopal ee6a239679 Generate code from a CFG 2014-11-07 16:24:59 +05:30
B1ackDaemon 2fb0911e2a Merge pull request #855 from Nekotekina/master
Various progress
2014-11-06 20:39:31 +02:00
Nekotekina 0503f08f67 Hmm... 2014-11-06 19:20:29 +03:00
Nekotekina 5ba772df93 Some errors 2014-11-06 19:09:54 +03:00
Nekotekina 8ad141de6f sceLibc: memcpy, stack arguments 2014-11-06 18:29:14 +03:00
Nekotekina af0ab4e8ad Bugfix 2014-11-06 03:57:34 +03:00
Nekotekina 7172154da7 ARMv7: CMP_IMM, SUB_IMM, null HLE function 2014-11-06 03:22:48 +03:00
Nekotekina 1749b95b57 sceRefs reading algorithm modified 2014-11-05 21:53:54 +03:00
Nekotekina 5d63c6b526 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-11-05 19:20:44 +03:00
Nekotekina 7a2cd15173 sceLibm, sceLibKernel drafts 2014-11-05 19:07:34 +03:00
S Gopal Rajagopal 7c3c5ae08e Construct CFG from execution traces 2014-11-05 01:01:20 +05:30
Hykem a4e5751cff Merge branch 'gopalsr83-master' 2014-11-04 16:49:02 +00:00
Hykem e14fbda502 Merge branch 'master' of https://github.com/gopalsr83/rpcs3 into gopalsr83-master 2014-11-04 16:48:45 +00:00
Hykem 5a27a84f5a Merge branch 'master' of https://github.com/gopalsr83/rpcs3 into gopalsr83-master 2014-11-04 16:45:25 +00:00
Hykem 321c29fe1c Merge pull request #851 from Bigpet/cmakeless
remove dependency on CMake and python under Windows
2014-11-04 16:30:09 +00:00
Nekotekina c5858de567 sceLibstdcxx draft 2014-11-04 03:51:26 +03:00
Nekotekina 43382a0ac6 Something is wrong with entry points... 2014-11-03 14:35:50 +03:00
gopalsr83 af78355570 Fixed linux compilation 2014-11-03 11:58:50 +05:30
S Gopal Rajagopal c2743e6dad Removed LLVM and PPU LLVM Recompiler from Debug, Release and 'Debug - MemLeak' build configurations. Added 'Release - LLVM' and 'Debug - LLVM' which include LLVM and PPU LLVM Recompiler. 2014-11-02 21:25:51 +05:30
Nekotekina df72f5e37c ARMv7: CMP_REG, LDR_IMM, LDR_LIT, STR_REG, SUB_REG
sceLibc: exit and printf drafts
This actually allows to display hello world.
2014-11-02 18:50:20 +03:00
Nekotekina 31c71b4a48 Compilation fix 2014-11-02 04:18:02 +03:00
Nekotekina ddbd590bef Small fix 2014-11-02 03:28:53 +03:00
Nekotekina 61e6d8af96 Compilation fix 2014-11-02 02:45:07 +03:00
Nekotekina 3bdfc6b499 ARMv7: more opcodes, some changes in loader 2014-11-02 02:19:14 +03:00
Hykem 8ff9b44abb Merge pull request #853 from tambry/OpenGLUpdate
Update OpenGL definitions to 4.5 specification
2014-11-01 13:12:10 +00:00
Nekotekina 536c5a900a ARMv7: more opcodes + STR 2014-11-01 01:00:36 +03:00
S Gopal Rajagopal 7846fa5829 Made changes to tracer so that it understand compiled blocks 2014-11-01 01:22:39 +05:30
Nekotekina 3895c083cb ARMv7: BX, MOV_IMM, IT (ITSTATE register) 2014-10-31 04:12:07 +03:00
Nekotekina de156c59e4 ARMv7: more opcodes 2014-10-30 23:07:47 +03:00
Raul Tambre 633078004a Update OpenGL definitions to 4.5 specification 2014-10-30 22:02:49 +02:00
Nekotekina 7aeda3b0c7 ARMv7: more opcodes 2014-10-30 18:17:51 +03:00
Nekotekina 94213bb398 ARMv7: more opcodes 2014-10-29 18:30:35 +03:00
Nekotekina bf6415accd Tiny ARMv7 interpreter update 2014-10-29 07:13:34 +03:00
Nekotekina 0f602e0e13 Bugfix 2014-10-28 19:46:14 +03:00
Nekotekina 65ddf980e0 Small fix 2014-10-28 15:30:37 +03:00
Nekotekina 09a4d14f8f cellAdec improved 2014-10-28 00:24:11 +03:00
Peter Tissen 1af2f5b214 remove dependency on CMake and python 2014-10-26 17:59:08 +01:00
Alexandro Sánchez Bach 7258ddc318 Merge pull request #850 from raven02/patch-4
Stub DCBI instruction
2014-10-26 11:59:39 +01:00
raven02 f54a5c6591 Stub DCBI instruction 2014-10-26 06:30:43 +08:00
Hykem d26f7f696d Merge pull request #848 from Dante38490/patch-1
Update README.md
2014-10-25 18:59:33 +01:00
S Gopal Rajagopal 160b58cf61 Fixed compilation issues 2014-10-25 06:56:57 +05:30
S Gopal Rajagopal 6bc0ce8046 Intial commit for advanced tracer 2014-10-25 06:38:47 +05:30
B1ackDaemon a180e90a6d Merge pull request #849 from raven02/patch-3
Support FCTID/FCTIW instructions
2014-10-25 02:30:52 +03:00
Nekotekina ffda60996d Compilation fix 2014-10-24 23:13:47 +04:00
Nekotekina 6df5ddb973 Few warnings fixed 2014-10-24 17:24:09 +04:00
raven02 4eb4186b5c Support FCTID/FCTIW instructions 2014-10-24 08:46:14 +08:00
Nekotekina 973e3f8f7e Few instructions simplified 2014-10-24 02:06:15 +04:00
Dante38490 2c99aa4ea9 Update README.md
Update now Compile With PPU GIT (LLVM)
2014-10-23 06:09:31 +02:00
Nekotekina 7777be6fc1 Some things simplified 2014-10-23 02:53:44 +04:00
Alexandro Sánchez Bach 5d1cafdebc Merge pull request #847 from gopalsr83/ppu_llvm_recompiler
PPU Recompiler (LLVM)
2014-10-22 15:13:26 +02:00
S Gopal Rajagopal ce21a9d250 Cleanup some files 2014-10-22 01:12:15 +05:30
S Gopal Rajagopal dfd3425e65 Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler
Conflicts:
	Utilities/BEType.h
	rpcs3/Emu/Cell/PPUInterpreter.h
	rpcs3/emucore.vcxproj.filters
2014-10-22 00:01:16 +05:30
S Gopal Rajagopal 8cfc9c7493 Merge pull request #1 from raven02/patch-2
Support FSQRT/FSQRTS instructions
2014-10-21 23:46:37 +05:30
raven02 00486d39e2 Add test against interpreter 2014-10-21 22:43:46 +08:00
raven02 20a5bf424f Support FSQRT/FSQRTS instructions 2014-10-21 22:20:52 +08:00
gopalsr83 1446e5bb50 Made changes for compiling in Linux 2014-10-21 16:06:10 +05:30
S Gopal Rajagopal 4514fc12bd Updated Travis CI configuration to compile LLVM 2014-10-21 02:17:00 +05:30
Hykem ab0a907c7a Merge pull request #846 from gopalsr83/master
Fixed the implementation of LSWI and STSWI. Simplified the implementation of VSL and VSR.
2014-10-20 16:43:20 +01:00
S Gopal Rajagopal 7e1413badf Fixed the implementation of LSWI and STSWI. Simplified the implementation
of VSL and VSR.
2014-10-20 17:19:01 +05:30
S Gopal Rajagopal 024c15d4d3 Some cleanup 2014-10-20 01:16:35 +05:30
Alexandro Sánchez Bach 6a163b8cc5 Merge pull request #844 from Nekotekina/master
Some fixes in cellAdec, cellVdec, cellDmux
2014-10-19 00:45:31 +02:00
S Gopal Rajagopal 8a7ba5a709 Merge remote-tracking branch 'upstream/master' into ppu_llvm_recompiler
Conflicts:
	Utilities/BEType.h
	rpcs3/Emu/Cell/PPUInterpreter.h
	rpcs3/emucore.vcxproj.filters
2014-10-19 02:36:26 +05:30
S Gopal Rajagopal ce4d04290e Support more instructions 2014-10-19 01:57:54 +05:30
Alexandro Sánchez Bach 59c8def566 Merge pull request #845 from Survanium90/master
Various changes in CellGem, SceNP and CellMic
2014-10-18 21:11:26 +02:00
Survanium90 f1168f7c59 Initial CellMic implementation 2014-10-18 22:22:52 +04:00
Survanium90 7fd3dd9ebf Implemented sceNpManagerGetContentRatingFlag 2014-10-18 22:20:37 +04:00
Survanium90 220e4ad8a6 Added initialization checks in CellGem 2014-10-18 22:14:16 +04:00
Nekotekina 81474be103 AV decoding minor cleanup 2014-10-18 21:00:21 +04:00
Nekotekina 318d06efda cellAdecClose, cellVdecClose fix 2014-10-18 02:20:03 +04:00
Nekotekina 18930a43f2 waiter_map_t small fix 2014-10-18 00:13:25 +04:00
B1ackDaemon 9c8666573b Merge pull request #842 from tambry/ChangesAndAdditions
Initial cellSail implementation
2014-10-17 18:43:46 +03:00
Raul Tambre b96037f160 Fixes
Fixed vm::vars missing be_t in a lot of cases and disabled a part of
cellSailCreateDescriptor for now.
2014-10-17 18:14:58 +03:00
Raul Tambre d58beb8f4c Initial cellSail implementation
Also a TODOs for frequencies
2014-10-17 16:20:40 +03:00
B1ackDaemon 3d415d653b Merge pull request #841 from Nekotekina/master
Small cellSpurs / cellSync update
2014-10-17 01:13:27 +03:00
B1ackDaemon d5a8675d1e Merge pull request #839 from gopalsr83/master
Minor fixes to PPU interpreter.
2014-10-17 01:13:20 +03:00
Nekotekina 5de059789d waiter_map_t for syncRwm and syncQueue 2014-10-16 23:34:17 +04:00
Nekotekina f839713a94 Bugfix 2014-10-16 21:07:41 +04:00
Nekotekina 18b69cac99 waiter_map_t : concept changed
Purpose-specific waiter_map_t objects instead of global one. SM_Sleep()
removed.
2014-10-16 20:29:41 +04:00
S Gopal Rajagopal 817947e373 Made minor fixes to some instructions in the PPU interpreter. Also changed the implementation of MFTB so that it always increments at a constant rate. 2014-10-16 17:03:46 +05:30
S Gopal Rajagopal 35a0e0c625 Support more instructions 2014-10-16 15:28:57 +05:30
S Gopal Rajagopal b95cddb0c7 Fix compilation errors caused by rebase 2014-10-14 14:23:50 +05:30
S Gopal Rajagopal cd154ad357 Support more instructions 2014-10-13 15:40:42 +05:30
S Gopal Rajagopal 143f542bd6 Fixed some bugs 2014-10-13 15:40:42 +05:30
S Gopal Rajagopal 9c99fc7bb1 Disabled unit tests 2014-10-13 15:40:41 +05:30
S Gopal Rajagopal 3e7d42b023 Support some instructions 2014-10-13 15:40:41 +05:30
S Gopal Rajagopal 1bd235616f Implemented branch instructions and some basic block combining. 2014-10-13 15:40:40 +05:30
gopalsr83 d5e86f7190 Fixed compilation in Linux. Have not tested it though. 2014-10-13 15:40:39 +05:30
S Gopal Rajagopal f210180aa6 Disabled the use of BMI instructions since older processors do not support it 2014-10-13 15:40:39 +05:30
S Gopal Rajagopal e687a91243 Implemented some FP instructions but did not add support for updating the FPSCR. Many misc changes. 2014-10-13 15:40:38 +05:30
S Gopal Rajagopal ccc37b5dc5 Print disassembly to log 2014-10-13 15:40:38 +05:30
S Gopal Rajagopal a029e70863 More changes to get the build to work properly 2014-10-13 15:38:03 +05:30
S Gopal Rajagopal 2ff8b9fb20 Remove unneeded files 2014-10-13 15:36:24 +05:30
S Gopal Rajagopal d35d00f301 Remove unneeded LLVM files 2014-10-13 15:36:23 +05:30
S Gopal Rajagopal 170439f91c LLVM VS project files that were part of the reposiory have been removed. These files will now be auto-generated. It should now be possbile to build from any directory and not just D:\Projects\rpcs3. 2014-10-13 15:35:03 +05:30
S Gopal Rajagopal c72d97c64a Implemented LF*, STF*, RL* and a few more instructions 2014-10-13 15:30:58 +05:30
S Gopal Rajagopal e485047a10 Enabled some LLVM analysis/transform passes
Implement mul, neg, nor, subf
2014-10-13 15:26:10 +05:30
S Gopal Rajagopal d69de9c332 Fixed some bugs that prevented the recompiler from terminating properly 2014-10-13 15:26:09 +05:30
S Gopal Rajagopal 840ae2f86b Run recompilation in the background 2014-10-13 15:26:09 +05:30
S Gopal Rajagopal 1f3a117744 Disabled tests 2014-10-13 15:26:08 +05:30
S Gopal Rajagopal f5188cdb32 Some refactoring. Added support for some load/store instructions. 2014-10-13 15:26:08 +05:30
S Gopal Rajagopal 1be5222e66 Made changes so that there is a single LLVM context instead of one per PPU. If separate LLVM contexts are used per PPU and if different PPUs execute the same address then the address will have to compiled once per PPU. 2014-10-13 15:26:07 +05:30
S Gopal Rajagopal a4bb9eaa55 Made changes so that the recompiler output may be verfied against that of the interpreter. This seems to be a better strategy for testing the recompiler. The best strategy would be to verify its output against a real PPU core but I dont have access to one. 2014-10-13 15:26:07 +05:30
S Gopal Rajagopal 791f8e3b9a Compilation Fix 2014-10-13 15:25:02 +05:30
S Gopal Rajagopal 02d1c9f6d2 Added LLVM as a submodule 2014-10-13 15:24:24 +05:30
S Gopal Rajagopal 6135b450c2 Implemented fallback to PPU Interpreter 2014-10-13 15:22:39 +05:30
S Gopal Rajagopal aa614e83f2 Refactoring + new instructions 2014-10-13 15:22:39 +05:30
S Gopal Rajagopal 878926f57c Support few more instructions 2014-10-13 15:22:38 +05:30
S Gopal Rajagopal ac86ee8fa9 Added support for MULLI 2014-10-13 15:22:38 +05:30
S Gopal Rajagopal eaa644dc20 Added support for a few more vector instructions 2014-10-13 15:22:37 +05:30
S Gopal Rajagopal d8d0c0d2fe Added support for 3 more instructions 2014-10-13 15:21:25 +05:30
S Gopal Rajagopal 659a3d88c6 Added more tests 2014-10-13 15:21:24 +05:30
S Gopal Rajagopal 66d0b25448 Moved tests to a new file 2014-10-13 15:21:24 +05:30
S Gopal Rajagopal 2ea881301a Implemented a basic UT framework for PPULLVMRecompiler 2014-10-13 15:18:53 +05:30
S Gopal Rajagopal 2bb63ad051 LLVM based PPU Recompiler. Intial commit 2014-10-13 15:18:17 +05:30
Raul Tambre 9e5403aeb3 Remove unneeded be_t 2014-10-11 20:20:01 +03:00
Nekotekina 48eb66383b waiter_reg_t, cellSyncBarrier improved 2014-10-11 02:37:20 +04:00
Nekotekina 3c2e0fff07 waiter_op() and waiter_signal() basis
Simplified signaling on condition variables without using them directly.
2014-10-11 01:33:57 +04:00
Nekotekina 446993eaa6 Atomic intrinsics for u128 type
cellSpursGetSpuThreadGroupId
cellSpursGetNumSpuThread
cellSpursGetSpuThreadId
2014-10-10 22:41:57 +04:00
Nekotekina 09fbda603c Atomic intrinsics refactoring 2014-10-10 22:19:14 +04:00
Raul Tambre d92b44e93f Update ASMJIT 2014-10-10 17:24:37 +03:00
Raul Tambre 9bcaa1e498 Disable pausing when a null command occurs 2014-10-10 17:24:28 +03:00
Nekotekina b0da8319b7 SPURS kernel v2 2014-10-10 01:39:03 +04:00
Nekotekina b7d0bfa972 SPU branch D/E flags workaround 2014-10-10 01:38:02 +04:00
Nekotekina 1dac13be16 RSXIO memory mapping with strict ordering (draft) 2014-10-10 01:26:04 +04:00
Nekotekina 266c3d4753 Small fixes 2014-10-08 18:26:08 +04:00
Nekotekina 9a02add930 Bugfix 2014-10-08 16:29:29 +04:00
Arkaran99 d9a95aae09 Avoid giving arguments by value for log. 2014-10-08 01:35:19 +02:00
Nekotekina fd7da9d61a Compilation fix 2014-10-08 01:53:50 +04:00
Nekotekina 94c30924dd Some things for u128 2014-10-08 01:37:04 +04:00
Nekotekina 237ab974dd SPURS kernel v1 2014-10-07 17:35:44 +04:00
B1ackDaemon 67bc9acbe0 Merge pull request #836 from raven02/patch-1
Small RSX fix
2014-10-06 18:08:50 +03:00
raven02 b13a8ab4e3 Small RSX fix 2014-10-06 21:39:25 +08:00
Alexandro Sánchez Bach 9c3981bc8e Merge pull request #835 from Nekotekina/master
Notification for encrypted SPU modules
2014-10-06 00:17:38 +02:00
Nekotekina ed0918d097 Notification for encrypted SPU modules 2014-10-06 01:21:00 +04:00
B1ackDaemon 5e954f4f76 Merge pull request #834 from Nekotekina/master
RSXDebugger fix
2014-10-05 11:36:35 +03:00
Nekotekina 4273c52efc RSXDebugger fix 2014-10-05 12:25:54 +04:00
B1ackDaemon 4a2d61bc84 Merge pull request #833 from Nekotekina/master
RSX fix
2014-10-05 11:07:14 +03:00
Nekotekina 5f46534b72 RSX fix
Forgot to rollback these lines.
2014-10-05 12:03:14 +04:00
B1ackDaemon f38fb61c62 Merge pull request #830 from Nekotekina/master
Various changes
2014-10-04 18:15:16 +03:00
Nekotekina 6c8d6aaf71 Damned conflicts fixed 2014-10-04 18:57:53 +04:00
Nekotekina 74007d5e5d Small changes in memory and RSXIOMem
Some bugs fixed, some other changes.
2014-10-04 18:43:46 +04:00
Alexandro Sánchez Bach ad4b0f092b Merge pull request #828 from Survanium90/master
Added initialization checks in SceNpClans module
2014-10-04 15:51:34 +02:00
Survanium90 b02225dd80 Added initialization and termination for SceNpTus Module
Also added initialization checks
2014-10-04 11:38:38 +04:00
Survanium90 70e5068e37 Added more initializations in cellCamera 2014-10-04 11:31:27 +04:00
Survanium90 aed76b2a0a Fix 2 for "Added initialization checks in SceNpClans module" 2014-10-04 01:09:40 +04:00
Survanium90 18d40102f7 Fix for "Added initialization checks in SceNpClans module" 2014-10-03 23:07:05 +04:00
Survanium90 5b467ff82a Added initialization checks in SceNpClans module 2014-10-03 17:39:34 +04:00
Alexandro Sánchez Bach e4eecd247c Merge pull request #827 from Bigpet/master
change initial value of sys_lwmutex_t::waiter
2014-10-02 19:19:21 +02:00
Peter Tissen f11c6c3cf4 change initial value of sys_lwmutex_t::waiter 2014-10-02 15:13:44 +02:00
Nekotekina 6b0857dcff Conflicts fixed 2014-10-02 16:19:52 +04:00
Nekotekina 752449bbc0 Small update 2014-10-02 14:29:20 +04:00
DHrpcs3 77076191c7 Fixed fix_import function in Modules.cpp 2014-10-02 08:13:35 +03:00
Hykem faeedf1355 Fixed compilation errors. 2014-10-01 15:15:04 +01:00
Hykem 4978af50e4 Merge pull request #825 from Survanium90/master
Added initialization for SceNpUtilBandwidthTestInitStart
2014-10-01 14:58:10 +01:00
Hykem 6d6c1a9672 Updated the Crypto Engine:
- Fixed several bugs in unedat;
- Improved EDAT/SDAT file decryption.
2014-10-01 14:57:44 +01:00
Nekotekina 4a6779469c Memory fixes 2014-10-01 17:18:38 +04:00
DHrpcs3 eada1fe12c Improved be_t
Fixed NV4097_SET_TWO_SIDE_LIGHT_EN
Added LIS, ORI, NOP & BLR to PPU Jit
2014-10-01 12:45:43 +03:00
Survanium90 1ded37d253 Added initialization for SceNpUtilBandwidthTestInitStart
Also added initialization checks
2014-10-01 13:25:06 +04:00
Hykem 64158b1b10 Merge pull request #824 from Nmzik/master
Adjusted attributes, added better log messages and an initialization check in the sceNP module
2014-09-30 21:01:58 +01:00
Nekotekina ce97a7e7a6 Channel<> rewritten 2014-09-30 23:06:04 +04:00
nmzik c0b53d6b48 Adjusted attributes, added better log messages and an initialization check in the sceNP module 2014-09-30 22:42:15 +04:00
Nekotekina 68cdc95da5 Some fixes 2014-09-30 02:28:02 +04:00
Nekotekina 6b53479ac3 _cellSpursWorkloadFlagReceiver, cellSpursReadyCountStore 2014-09-29 19:39:44 +04:00
Nekotekina 7d95311a01 Some %x fixed 2014-09-29 19:38:04 +04:00
Nekotekina c53a822c4e spursAddWorkload 2014-09-28 23:10:13 +04:00
Hykem 5b18e90cac Merge pull request #822 from tambry/cellAvconfExtAndVideoOut
Add cellAvconfExt and cellVideoOutGetScreenSize
2014-09-28 17:54:47 +01:00
Raul Tambre 2e29348b9c Removed wx implementation and added Windows only implementation 2014-09-28 19:42:37 +03:00
Raul Tambre b9e7e46198 Also remove couple unneeded be_t 2014-09-28 18:24:34 +03:00
Raul Tambre 879e2d920c Add cellAvconfExt and cellVideoOutGetScreenSize
Also added a flag to RSX debugger showing if two sided lighting is
enabled, a 3D Monitor option and fixed a ")" missing in TODO printout
for sys_spu_elf_get_information.
2014-09-28 18:21:45 +03:00
Nekotekina ae17ef4d68 vm::atomic -> atomic_t 2014-09-27 22:49:33 +04:00
Nekotekina e40776ba79 cellSpursWakeUp, CellSpursWorkloadAttribute
+vm_atomic update (8bit type)
2014-09-26 01:41:35 +04:00
Alexandro Sánchez Bach 13b7df5d39 Merge pull request #821 from tambry/sys_get_random_number-Fix
Fix sys_get_random_number
2014-09-25 23:23:06 +02:00
Raul Tambre 1f870af5cf Fix sys_get_random_number
Thanks @Nekotekina
2014-09-25 22:27:40 +03:00
B1ackDaemon 9bef0a8683 Merge pull request #820 from tambry/SceNpAdditionsAndOtherFixes
Implemented sceNpBasicGetEvent, sceNpLookupInit and sceNpLookupTerm
2014-09-25 22:08:21 +03:00
Raul Tambre c87c75a45b Fix some things 2014-09-25 21:51:52 +03:00
Raul Tambre b5fa247eb3 Updated ASMJIT 2014-09-25 20:16:23 +03:00
Raul Tambre d17322948d Implemented sceNpBasicGetEvent, sceNpLookupInit and sceNpLookupTerm
Updated writing to pointers for sys_get_random_number,
sceNpBasicGetFriendListEntryCount and sceNpBasicGetMessageEntryCount.
Fixed some pointers and TODOs in cellNetCtl.
2014-09-25 20:07:06 +03:00
Nekotekina 05a7466a5a m_custom_task thread member 2014-09-24 22:44:26 +04:00
Nekotekina a4a4e572a0 vm::atomic update, small fixes 2014-09-23 18:27:18 +04:00
Nekotekina e5a485e50b More changes 2014-09-23 03:07:40 +04:00
Alexandro Sánchez Bach c329942482 Merge pull request #819 from tambry/ProofedUnloadingOfSomeModules
Added sceNpTrophyTerm and proofed some unloadings
2014-09-23 00:12:23 +02:00
Raul Tambre 790a8bf814 Added sceNpTrophyTerm and proofed some unloadings
Made cellNetCtl, cellGem, cellCamera, sceNp, sceNpCommerce2 and
sceNpTrophy properly unload if termination function wasn't called.
2014-09-22 22:00:28 +03:00
Nekotekina 449e7c1049 Small fix 2014-09-21 19:14:13 +04:00
B1ackDaemon f1e2446f17 Merge pull request #818 from tambry/SceNpCleanupAndCommerce2Additions
Huge sceNp cleanup and added sceNpCommerce2Init and sceNpCommerce2Term
2014-09-21 17:44:56 +03:00
Raul Tambre 4a998e5374 Huge sceNp cleanup, added sceNpCommerce2Init and sceNpCommerce2Term 2014-09-21 17:26:21 +03:00
Nekotekina c9ad88b3ff ...+CellSyncQueue 2014-09-21 17:02:05 +04:00
Nekotekina 3ab08e0d7a vm::atomic update (or, and, xor)
CellSyncMutex, CellSyncBarrier, CellSyncRwm refactoring
2014-09-21 03:29:42 +04:00
Nekotekina 169c8c47c0 vm::atomic update 2014-09-21 01:00:55 +04:00
Alexandro Sánchez Bach 2234d0fe0a Merge pull request #817 from tambry/sceNpAdditionModuleFix
Added sceNpBasicGetFriendListEntryCount and sceNpBasicGetMessageEntryCount
2014-09-20 18:47:24 +02:00
Raul Tambre 6360ef1790 Added sceNpBasicGetFriendListEntryCount and sceNpBasicGetMessageEntryCount
Fixed (?) sometimes functions being unloaded when they shouldn't.
Also reverted the SPUThread hack.
2014-09-20 19:09:18 +03:00
Nekotekina 89da242cd2 Warning fix 2014-09-20 04:08:12 +04:00
Nekotekina 66000240ac vm::atomic update, be_t update
1) MakeFromLE replaced with make(), MakeFromBE removed. Compiler seems
to be able to optimize it anyway.
2) be_t<> conversion operator temporarily replaced with conversion
through LE because it can't work with all possible numeric conversions
(float<>int for example)
2014-09-20 03:16:11 +04:00
Nekotekina 0baf295c1b to_be() 2014-09-19 23:12:31 +04:00
Nekotekina b6f8700b8b vm::atomic initial structure 2014-09-19 23:11:43 +04:00
Nekotekina dbd49a55c6 CellSpurs initialization 2014-09-19 15:27:51 +04:00
Nekotekina 5ad68cfe30 Compilation fix 2014-09-19 04:24:06 +04:00
Nekotekina bb77249ac8 CellSpurs initialization 2014-09-19 04:19:22 +04:00
B1ackDaemon df84e89d46 Merge pull request #816 from tambry/CameraAndOptimizations
Added a camera option
2014-09-18 21:33:14 +03:00
Raul Tambre fcfdd1551b Added a camera option
Also a couple minor optimizations
2014-09-18 21:19:10 +03:00
Oil 9d1a2dd376 Minor changes 2014-09-17 23:51:02 +04:00
Alexandro Sánchez Bach 279ec3d8a3 Merge pull request #814 from Nekotekina/master
declCPU removed, PPUThread& is passed as argument
2014-09-17 17:31:45 +02:00
Nekotekina 0044141631 sys_process_is_spu_lock_line_reservation_address
Formatting changed a bit
2014-09-17 17:15:17 +04:00
Nekotekina 626133c0eb declCPU removed, PPUThread& is passed as argument
Added experimental feature: passing PPUThread& to syscall
2014-09-16 21:49:50 +04:00
B1ackDaemon 8cc09d1c91 Merge pull request #813 from tambry/ArkedoCrashFix
Fix crash in Arkedo games (that I created)
2014-09-16 19:31:29 +03:00
Raul Tambre b7a6c93e96 Fix crash in Arkedo games (that I created) 2014-09-16 19:28:21 +03:00
B1ackDaemon ef1c5af608 Merge pull request #812 from Nekotekina/master
cellSpursAttributeEnableSystemWorkload
2014-09-16 18:08:37 +03:00
Nekotekina b600cba180 CB_FUNC / SC_FUNC small update 2014-09-16 17:56:27 +04:00
Nekotekina 667da92934 Merge branch 'master' of https://github.com/Nekotekina/rpcs3 2014-09-16 17:31:03 +04:00
Nekotekina 3730c53c9e cellSpursAttributeEnableSystemWorkload 2014-09-16 17:29:58 +04:00
Bigpet 96c86580f0 define templates outside of block scope 2014-09-16 15:03:57 +02:00
DHrpcs3 b0569639a9 Improved to_be_t
Fixed cellCameraGetType
Removed be_array_t
Improved cb_caller
2014-09-16 14:23:58 +03:00
Nekotekina 76418fe1b4 cellSpursAttributeEnableSystemWorkload 2014-09-16 02:58:56 +04:00
B1ackDaemon 29c2e84fa1 Merge pull request #810 from Nekotekina/master
Some code removed, CellSpursAttribute implemented
2014-09-15 22:13:54 +03:00
Nekotekina 5f1253598c Fix formatting 2014-09-15 23:04:18 +04:00
Nekotekina c9132a4bdb Compilation fix + CellSpursAttribute 2014-09-15 22:17:30 +04:00
Nekotekina 201f0f3a9f Basic stack argument support for callbacks 2014-09-15 19:04:09 +04:00
Nekotekina 4243558319 Compilation fix 3 2014-09-15 02:52:22 +04:00
Nekotekina 38746a5ef9 Compilation fix 2 2014-09-15 02:34:59 +04:00
Nekotekina dfaa668b31 Compilation fix 2014-09-15 02:27:30 +04:00
Nekotekina 597d07bf24 Small refactoring 2014-09-15 02:17:24 +04:00
B1ackDaemon 8f1a8450be Merge pull request #807 from O1L/master
More information in KernelExplorer.
2014-09-14 20:31:14 +03:00
B1ackDaemon bd1f413481 Merge pull request #806 from Arkaran99/master
Small refactor
2014-09-14 20:31:08 +03:00
O1L 2b7a00d42d Fixed typo 2014-09-14 00:50:38 +04:00
O1L dc7e143de5 More information in KernelExplorer. 2014-09-14 00:40:12 +04:00
Arkaran99 3caff5a107 Change ModuleManager::init function.
First step to help refactor Module management.
Add every module in the static ModuleInfo list. Module without id are assigned
to 0xffff.
The init function is called after constructor and take a pointer to Module
as an input.
This pointer is used to set the Module's global pointer in its file.
2014-09-13 22:00:17 +02:00
Arkaran99 7dafb164e8 Remove unused include and very small refactoring.
Unused include in unself.h, ELF.h.
New line after an if to enable debugging.
Rewrite strange boolean expression in ELF.cpp.
2014-09-13 20:38:18 +02:00
Arkaran99 9834fc7f70 Update gitignore to ignore x64 folders. 2014-09-13 20:38:16 +02:00
B1ackDaemon 3775d28d24 Merge pull request #805 from Nekotekina/master
CallbackManager rewritten
2014-09-13 19:45:45 +03:00
Nekotekina 860d7bd3f1 Small fix 2 2014-09-13 18:25:02 +04:00
Nekotekina 0df3e955c8 Small fix 2014-09-13 01:50:50 +04:00
Nekotekina 10e9d383d4 ExecAsCallback() removed 2014-09-13 01:14:48 +04:00
Nekotekina c1da446653 FastCall() removed 2014-09-12 23:27:33 +04:00
Alexandro Sánchez Bach 20186b5049 Merge pull request #802 from tambry/sys_get_random_number
Implemented sys_get_random_number
2014-09-12 17:25:09 +02:00
Raul Tambre 1098edea98 Fixed assigning of the generated number 2014-09-12 18:11:04 +03:00
Alexandro Sánchez Bach 3d910a9a42 Merge pull request #803 from tambry/InitilizationsAndTerminations
Added more initializations and terminations
2014-09-12 16:43:33 +02:00
Raul Tambre c74c592dd3 Added more initializations and terminations 2014-09-12 17:28:02 +03:00
Nekotekina 5a4aa9096b Float/vector arg support for callbacks 2014-09-12 17:08:24 +04:00
Raul Tambre 6d0fae09c5 Implemented sys_get_random_number 2014-09-12 15:18:27 +03:00
Nekotekina 85f2009175 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-09-12 01:16:57 +04:00
Nekotekina 3e1c04b356 Small fix 2014-09-12 01:10:44 +04:00
Nekotekina 8cde1c18c4 Cb fix 2014-09-12 00:46:11 +04:00
Nekotekina ed55011ede Compilation fix 2 2014-09-11 23:40:50 +04:00
Nekotekina fe53f6f2d7 Compilation fix 2014-09-11 23:33:20 +04:00
Nekotekina cd39256361 CallbackManager rewritten 2014-09-11 23:18:19 +04:00
B1ackDaemon 98c67389b0 Merge pull request #801 from tambry/TwoSidedLight
Implemented NV4097_SET_TWO_SIDE_LIGHT_EN
2014-09-11 19:13:46 +03:00
Raul Tambre 88cc03b9e2 Implemented NV4097_SET_TWO_SIDE_LIGHT_EN 2014-09-11 18:59:42 +03:00
B1ackDaemon ff29320a34 Merge pull request #800 from darkf/stread
implement cellFsStRead (does *not* use ringbuffers)
2014-09-10 08:02:25 +03:00
darkf 145e0aa827 implement cellFsStRead (does *not* use ringbuffers) 2014-09-09 21:54:51 -07:00
Alexandro Sánchez Bach b881e095e9 Fixed cellFsStReadInit issue
* Disabled automatic HLEExitOnStop option when the ELF file argument is
provided.
* Reverted some changes of last pull.
2014-09-09 23:18:21 +02:00
B1ackDaemon 218399afcb Merge pull request #799 from tambry/cellCameraAndGemAndOtherUpdates
Cell camera and gem and other updates
2014-09-09 19:35:10 +03:00
Raul Tambre dc51630803 Comment fix 2014-09-09 19:08:13 +03:00
Raul Tambre 089a6ee07d Minor cellSysutil fix 2014-09-09 18:49:12 +03:00
Raul Tambre 6029cc40f2 Added new things, updated others
+ Tab in settings for cellCamera and cellGem related things, currently
includes setting camera type
+ cellCamera and cellGem initilization
+ Added cellCameraGetType
* Updated asmjit and ffmpeg
* Some minor optimizations
2014-09-09 18:44:02 +03:00
Nekotekina 3b71721a33 It was overcomplicated 2014-09-09 16:13:38 +04:00
Alexandro Sánchez Bach a99c8e3c7c Merge pull request #796 from O1L/master
PPU / SPU / RawSPU threads in KernelExplorer.
2014-09-08 23:16:10 +02:00
Nekotekina c79b52b334 bugfix 2014-09-08 21:06:08 +04:00
Nekotekina 5d951451c5 cellPngDec (nothing changed) 2014-09-08 18:56:47 +04:00
B1ackDaemon c2563da820 Merge pull request #797 from tambry/cellCameraAndOvis
Re-enabled cellCamera and cellOvis, added cellCamera enums and structs
2014-09-08 16:00:23 +03:00
Nekotekina 311a3b3e47 Compilation fix 2014-09-08 14:20:25 +04:00
Nekotekina 470afd78d5 WIP (cellPngDec refactoring) 2014-09-08 04:54:17 +04:00
Raul Tambre 16727a9c5e Re-enabled cellCamera and cellOvis, added cellCamera enums and structs
Also some fixes to ordering in emucore.vcxproj.filters
2014-09-07 18:53:13 +03:00
O1L 54106f6f9b Removed unnecessary newlines. 2014-09-07 18:05:29 +04:00
O1L 402199d70f Add PPU / SPU / RawSPU threads in KernelExplorer, and some coding style changes. 2014-09-07 17:47:53 +04:00
O1L 339e40d423 Fixed conflicts 2014-09-07 15:13:29 +04:00
Alexandro Sánchez Bach e65676ffa9 Merge pull request #795 from Arkaran99/master
Fix compile errors in Debug - MemLeak.
2014-09-07 11:04:15 +02:00
Arkaran99 1e60319be2 Fix compile errors in Debug - MemLeak.
Add rpcs3/define_new_memleakdetect.h to save and replace new operator with Visual Studio Memory Leak Detection's operator.
Add rpcs3/restore_new.h to restore new operator to a previous saved state.
2014-09-07 10:43:25 +02:00
Alexandro Sánchez Bach ec9740e747 Merge pull request #793 from Nekotekina/master
vm:: replacement 3
2014-09-07 02:11:13 +02:00
Nekotekina 58f436e749 Small fix 2014-09-07 03:35:48 +04:00
Nekotekina 6c01854fec Well, vector argument support in SC_FUNC 2014-09-06 21:30:50 +04:00
Nekotekina 82433d946e u128
Only useful as vector type anyway.
2014-09-06 20:30:13 +04:00
Nekotekina 43a61d0ab9 Memory.Write*/Read* replaced 2014-09-06 17:33:01 +04:00
B1ackDaemon 1b499a6fd5 Merge pull request #792 from Nekotekina/master
cellSync2* fixes
2014-09-06 14:10:53 +03:00
Nekotekina b5e7724e76 ++ 2014-09-06 14:58:56 +04:00
Nekotekina 95734b8b9a cellSync2 fixes 2014-09-06 14:52:22 +04:00
Alexandro Sánchez Bach 7e758970cf Merge pull request #791 from Nekotekina/master
vm:: replacement 2
2014-09-06 02:09:16 +02:00
Nekotekina b0d9fba418 Conflicts fixed 2014-09-06 02:54:42 +04:00
Nekotekina 12becc6120 MemoryBase::operator[] replaced 2014-09-06 02:12:10 +04:00
Nekotekina db9cbe6cdd MemoryBase::operator+ replaced 2014-09-06 00:26:36 +04:00
Nekotekina feec20ac3e Compilation fix, be_t fix
+ CellWebBrowserConfig2 struct
2014-09-05 21:54:06 +04:00
Nekotekina 225dba754d GetMemFromAddr, VirtualToRealAddr replaced
Some arg types changed
2014-09-05 21:23:00 +04:00
Nekotekina f298d0451e Attempt to fix some warnings 2014-09-05 15:24:37 +04:00
Nekotekina 964c1bfd6c WriteString replaced
strcpy_trunc (defined in GNU.h) is better for fixed-length char arrays
2014-09-05 03:23:36 +04:00
Alexandro Sánchez Bach 3ffc0edac9 Merge pull request #790 from tambry/cellPamfAccessViolationFix
Fix cellPamfReaderGetPresentationStartTime access violation
2014-09-04 22:03:16 +02:00
Nekotekina 27b24132a0 sys_ppu_thread_create fix 2014-09-04 23:55:06 +04:00
Raul Tambre cef2c59ae2 Fix cellPamfReaderGetPresentationStartTime access violation
Should also fix access violations for other cellPamf functions
2014-09-04 22:39:08 +03:00
Nekotekina 4346514b9d Compilation fix 2014-09-04 21:39:02 +04:00
Nekotekina 9f2afffca1 Some functions removed 2014-09-04 21:32:20 +04:00
B1ackDaemon 2084665cc1 Merge pull request #789 from tambry/cellSync2InitAndEstimate
Added cellSync2 attribute initilization
2014-09-04 18:36:06 +03:00
Raul Tambre e6ab29346e Added cellSync2 attribute initilization
Also added checks for EstimateBufferSize functions
2014-09-04 18:27:19 +03:00
Nekotekina 05cebd1017 re() removed, added be_t<const T> specialization 2014-09-04 13:21:23 +04:00
Nekotekina 4b49d57f97 Small fix 2014-09-03 21:09:10 +04:00
Nekotekina 1337cf4f04 Some memory functions removed 2014-09-03 20:33:30 +04:00
B1ackDaemon c51e52614e Merge pull request #787 from Bigpet/unixtypo
unix preprocessor define typo fixed
2014-09-03 13:20:22 +03:00
Peter Tissen 383f6aff2b unix preprocessor define typo fixed 2014-09-03 12:12:50 +02:00
Nekotekina d0e532e7ce DynamicMemoryBlockBase.h removed
Map() and Unmap(): roughly rewritten.
I checked every memory-related syscall and I'm sure that they don't
really need any mirroring. Some unused code deleted.
2014-09-03 01:48:44 +04:00
B1ackDaemon 82f31b6436 Merge pull request #786 from tambry/cellSaveDataFixes
Removed cellSaveDataListAutoSave and cellSaveDataListAutoLoad until they can be fixed
2014-09-02 22:04:36 +03:00
Raul Tambre e6595f05bc Removed cellSaveDataListAutoSave and cellSaveDataListAutoLoad until they can be fixed
Also added a lot of TODO printouts for other save data functions.
2014-09-02 19:58:42 +03:00
B1ackDaemon 505dacf152 Merge pull request #785 from Nekotekina/master
vm:: global replacement
2014-09-02 16:03:07 +03:00
Nekotekina fa43e80206 Small mistake 2014-09-02 16:50:19 +04:00
Nekotekina 47ee010b64 Another little bug 2014-09-02 16:45:53 +04:00
Nekotekina 30d7fcd288 Small mistake 2014-09-02 16:18:50 +04:00
Nekotekina 5a20d41fb2 Conflicts fixed 2014-09-02 05:25:57 +04:00
Nekotekina 1626df7e46 Compilation fix 2014-09-02 05:14:24 +04:00
Nekotekina b952017a3a mem_ptr_t replaced 2014-09-02 05:05:13 +04:00
Nekotekina bd9775e0eb Callbacks fix + TODO 2014-09-02 02:59:46 +04:00
Nekotekina 6e02477fc6 Some warnings fixed 2014-09-02 02:35:10 +04:00
Nekotekina 9c94a6943d mem_bptr_t replaced 2014-09-02 02:22:13 +04:00
Nekotekina 37da5589e4 Compilation fix 6 2014-09-02 01:46:02 +04:00
Nekotekina 51ea1e3bed Compilation fix 5 2014-09-02 01:41:36 +04:00
Nekotekina 73555c1df1 Compilation fix 4 2014-09-02 01:22:07 +04:00
Alexandro Sánchez Bach 294d94a2d9 Merge pull request #784 from tambry/cellNetCtlNetStart
Added cellNetCtlNetStartDialogLoadAsync and cellNetCtlNetStartDialogUnloadAsync
2014-09-01 21:38:12 +02:00
Nekotekina 4f6a407393 Compilation fix 3 2014-09-01 22:29:51 +04:00
Nekotekina 09022b1000 Compilation fix 2 + callback fix 2014-09-01 21:38:55 +04:00
Raul Tambre 9ef074c7ef Added cellNetCtlNetStartDialogLoadAsync and cellNetCtlNetStartDialogUnloadAsync 2014-09-01 19:52:36 +03:00
Nekotekina 3b764d45f2 Compilation fix 2014-09-01 20:45:22 +04:00
Nekotekina 774b5be7d7 Patch from DH applied 2014-09-01 20:16:44 +04:00
Nekotekina f31ed4e9f2 mem_func_ptr_t replaced 2014-09-01 16:47:26 +04:00
Nekotekina 9501869aa1 mem32_t replaced 2014-09-01 04:51:48 +04:00
Nekotekina 0b5ef1d8f9 mem64_t replaced
Added conversion from vm::var to vm::ptr of the same type.
2014-09-01 02:58:08 +04:00
Nekotekina 0d94c78e63 mem16_t replaced
I think it's not bad to use pointer type when possible, because it's
often originally pointer, not reference.
2014-09-01 01:55:38 +04:00
Alexandro Sánchez Bach 6fa75cf993 Merge pull request #783 from lioncash/consts
Core: Apply const to some functions
2014-08-31 22:56:39 +02:00
Lioncash 82840282fb Core: Apply const to some functions 2014-08-31 16:12:09 -04:00
Nekotekina 49b295e332 Bugs fixed 2014-08-31 23:38:03 +04:00
Nekotekina 06486b6537 Bug fixed 2014-08-31 21:13:21 +04:00
Nekotekina 96d7034c96 Compilation fix 3 2014-08-31 19:48:45 +04:00
Nekotekina f6f58b7615 Compilation fix 2 2014-08-31 19:39:01 +04:00
Nekotekina 8e5980b307 Compilation fix 2014-08-31 19:31:26 +04:00
Nekotekina a8cfefac07 vm::ptr for u8/char types, mem_list_ptr_t removed 2014-08-31 19:01:48 +04:00
Nekotekina ebc4fa3e81 Compilation fix 2014-08-31 15:18:32 +04:00
Nekotekina 571bd63644 Test 2014-08-31 13:54:12 +04:00
Nekotekina 26e03fa794 Compilation fix 3 2014-08-31 03:38:55 +04:00
Nekotekina 140d40b5bc Compilation fix 2 2014-08-31 03:19:10 +04:00
Nekotekina ff3df64a26 Compilation fix 2014-08-31 03:06:43 +04:00
Nekotekina 367b8e7129 memory-wip branch merged 2014-08-31 02:15:11 +04:00
Nekotekina 9e2bb9e9d2 Some warnings fixed 2014-08-31 00:41:01 +04:00
B1ackDaemon 5a043ddacb Merge pull request #780 from tambry/minorFixes
Minor shortening in Resc
2014-08-30 22:11:42 +03:00
Nekotekina fb1d7d3982 Some warnings fixed 2014-08-30 22:35:18 +04:00
Nekotekina 3269c88d02 Some warnings fixed, some code removed 2014-08-30 21:51:00 +04:00
Nekotekina 8dfe7138df (nothing, really) 2014-08-30 17:52:12 +04:00
B1ackDaemon d99ae7b21c Merge pull request #781 from Nekotekina/master
wxRemoval©
2014-08-30 13:19:00 +03:00
Nekotekina d14f22d059 Compilation fix 2 2014-08-30 00:26:27 +04:00
Nekotekina 6cb2518a81 Compilation fix 2014-08-29 23:59:17 +04:00
Nekotekina 120c3261b4 <wx/math.h> excluded, wxString forwarded 2014-08-29 23:51:11 +04:00
Nekotekina 56ba26ab24 cellMsgDialog code moved 2014-08-29 22:30:21 +04:00
Nekotekina 21e254d05f Compilation fix 5 2014-08-29 17:25:01 +04:00
Nekotekina 2c8b485ba0 Compilation fix 4 2014-08-29 17:06:58 +04:00
Nekotekina 851ae920b9 Compilation fix 3 2014-08-29 16:27:25 +04:00
Nekotekina 12f4f35cfa Compilation fix 2 2014-08-29 16:21:23 +04:00
Nekotekina 0be2728e19 Compilation fix 2014-08-29 16:07:50 +04:00
Nekotekina 028ce2dd9f stdafx_gui.h created, wx removed from stdafx.h 2014-08-29 02:49:26 +04:00
Nekotekina 693e7a38fa Some std include moved 2014-08-28 20:29:05 +04:00
Nekotekina b37f3e1b93 mem_class_t eliminated
It didn't work for some reasons anyway,
2014-08-28 05:18:35 +04:00
Nekotekina f6bb62a76c cellFiber stub activated 2014-08-28 02:14:24 +04:00
Nekotekina d5aa7aae43 sys_spu_thread_group_exit 2014-08-28 01:04:55 +04:00
Nekotekina 1065eb17de sys_memory_get_page_attribute faked correctly 2014-08-27 23:05:46 +04:00
Nekotekina 6a996fcd0a cellSpursJq stub 2014-08-27 18:37:51 +04:00
Nekotekina 0fb45cccbc cellSync2 stub 2014-08-27 17:11:34 +04:00
Nekotekina bbf7508d41 cellSync2 stub activated 2014-08-27 02:44:32 +04:00
Nekotekina 36e691c2db Small fix 2014-08-27 01:09:50 +04:00
Raul Tambre 0d6386f391 Minor shortening in Resc 2014-08-26 21:07:05 +03:00
Alexandro Sánchez Bach 0b52abeaf8 Merge pull request #779 from Nekotekina/master
SC_FUNC fix
2014-08-26 19:54:17 +02:00
Nekotekina d7fd8e3ca6 Small fix 2014-08-26 20:45:43 +04:00
Nekotekina 5d3a612003 SC_FUNC.h rewritten
Now float arguments should work correctly
2014-08-26 18:38:14 +04:00
Nekotekina 9eda0aa245 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-26 04:52:28 +04:00
Alexandro Sánchez Bach 08f192ee0e Merge pull request #778 from DHrpcs3/gcm-wip
cellGcmSys and lv2 updates
2014-08-26 01:58:10 +02:00
Nekotekina 78cbb90ef6 Some leaks fixed 2014-08-26 03:55:37 +04:00
Alexandro Sánchez Bach 5bd85bd4eb Minor lv2 / GCM updates and double-click loading 2014-08-26 01:45:15 +02:00
Alexandro Sánchez Bach 13fec1cd9a GCM Report/Notify and sys_rsx functions 2014-08-25 23:41:57 +02:00
Nekotekina 455bdc3819 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-26 00:52:26 +04:00
Alexandro Sánchez Bach 472a71fb8f Merge pull request #777 from tambry/contentErrorDialogFix
Fix access violation when directory name is not given
2014-08-25 21:15:51 +02:00
Raul Tambre 6397640df8 Fix access violation when directory name is not given
Instead now displays it as "Unknown"
2014-08-25 21:59:15 +03:00
Nekotekina 04c67c3f4b Compilation fix 2014-08-25 22:50:24 +04:00
Nekotekina a74e07dc40 Some cleanup 2014-08-25 22:09:48 +04:00
Nekotekina f6ba1eaebd SPU spr name table 2014-08-25 21:01:40 +04:00
Nekotekina 61c4a88ab4 rFile.h, Thread.h, IdManager.h includes moved 2014-08-25 18:56:13 +04:00
Alexandro Sánchez Bach 3c562afd49 Merge pull request #776 from Nekotekina/master
GUI callbacks
2014-08-25 04:39:38 +02:00
Nekotekina bed3260e45 Compilation fix 2014-08-25 03:38:11 +04:00
Nekotekina a324b58145 Compilation fix (?) 2014-08-25 03:08:25 +04:00
Nekotekina 84c5899faf Abstract GSFrameBase class and callback 2014-08-25 02:23:26 +04:00
Nekotekina 50b5d72bb2 Include cleaning 2014-08-24 21:42:19 +04:00
Alexandro Sánchez Bach 6f0531b3f7 Merge pull request #775 from Nekotekina/master
Many changez
2014-08-24 01:00:16 +02:00
Nekotekina 11f618fdef Compilation fix 2014-08-24 02:34:04 +04:00
Nekotekina 7c7782cd4c Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-24 02:20:05 +04:00
Alexandro Sánchez Bach 23fb4734ea Merge pull request #774 from tambry/cellSailThings
Added cellSail structures and callbacks
2014-08-24 00:04:22 +02:00
Nekotekina e353c39522 cellGem bug fixed 2014-08-24 00:42:49 +04:00
Nekotekina 4ffd03fe3e Include clearing 2014-08-24 00:40:04 +04:00
Raul Tambre 31131c17ef Added cellSail structures and callbacks 2014-08-23 22:41:22 +03:00
Nekotekina b005ee3cda Log include fixes 2014-08-23 18:51:51 +04:00
Alexandro Sánchez Bach c71ed13f1a Merge pull request #770 from tambry/cellNetCtlImprovements
More improvements and small additions to cellNetCtl
2014-08-23 15:28:57 +02:00
Raul Tambre 9d2fd7a27f More improvements and small additions to cellNetCtl 2014-08-23 16:27:25 +03:00
Alexandro Sánchez Bach 889e7807cb Merge pull request #771 from tambry/cellSaveDataListAuto
Added Added cellSaveDataListAutoSave and AutoLoad
2014-08-23 15:11:39 +02:00
Alexandro Sánchez Bach 0d4c10b56c Merge pull request #773 from tambry/OverwriteFix
Fix overwriting, when installing PKG files
2014-08-23 14:57:21 +02:00
Raul Tambre 7a7264db33 Use std::string for installing PKG files
Also now only refreshes, when it could open the PKG file.
2014-08-23 10:50:34 +03:00
Raul Tambre ae47cdaad8 Fix overwriting, when installing PKG files
Now properly removes the directory and tries to continue installation.
2014-08-23 10:30:26 +03:00
Nekotekina efa538f9d7 include clearing 2014-08-23 04:16:54 +04:00
Nekotekina 0d15fc35d7 Compilation fix 2014-08-23 01:31:39 +04:00
Nekotekina 861ce9e733 include clearing 2014-08-23 01:15:02 +04:00
Raul Tambre 9c6b935770 Added Added cellSaveDataListAutoSave and AutoLoad
Also fixed logging of container argument for all other save data
functions.
2014-08-22 22:34:43 +03:00
Nekotekina 102f8cf993 Compilation fix 2014-08-22 20:54:53 +04:00
Nekotekina 652c5901f8 Another try 2014-08-22 20:36:27 +04:00
Nekotekina a8b5912340 Compilation fix 2 (not sure) 2014-08-22 19:33:01 +04:00
Nekotekina 52cf911c60 Compilation fix 2014-08-22 18:58:50 +04:00
Nekotekina 7a466b7fb7 Conflicts fixed 2014-08-22 18:30:39 +04:00
Nekotekina 5abd3fabfa Attempt to remove some includes 2014-08-22 18:21:55 +04:00
Nekotekina a169c5bcac Reservation global struct removed
It wasn't solving anything, unfortunately.
2014-08-22 01:37:45 +04:00
Nekotekina 184007e1e0 sys_spu_thread_throw_event 2014-08-21 16:55:28 +04:00
Nekotekina 4760ec63e2 cellSpurs: debug preparations
Almost all functions registered
2014-08-21 13:56:02 +04:00
Nekotekina f153143c9d still FSCRRD 2014-08-21 06:20:41 +04:00
Nekotekina 1f3f6f4664 sys_event_flag_set_bit_impatient 2014-08-21 05:31:45 +04:00
Nekotekina 1941f3d916 Interrupt handling changed 2014-08-21 05:02:55 +04:00
Nekotekina 126b636edf Light hack for FSCRRD and FSCRWR
SPU_*Event* channels implemented for LR event
MFC_RdTagMask implemented
2014-08-21 02:12:56 +04:00
Nekotekina 9eb280c367 SetCurrentNamedThread() 2014-08-20 18:23:48 +04:00
Nekotekina dd9df4f36f _sys_spu_printf_initialize
_sys_spu_printf_finalize
_sys_spu_printf_attach_group
_sys_spu_printf_detach_group
_sys_spu_printf_attach_thread
_sys_spu_printf_detach_thread
2014-08-20 14:21:39 +04:00
Nekotekina ffa258d334 Some fixes 2014-08-20 04:32:25 +04:00
Nekotekina 0a0ccb54bf Small fix 2014-08-19 23:28:50 +04:00
Nekotekina 89b944c397 REG_FUNC macros
And some auxiliary changes
2014-08-19 22:17:20 +04:00
Hykem 0d43c822cd Merge pull request #769 from lioncash/ini
Ini: Remove dead code
2014-08-19 15:44:47 +01:00
Lioncash 46a472acf9 Ini: Remove dead code 2014-08-19 10:25:13 -04:00
Alexandro Sánchez Bach 29a7a619bc Merge pull request #766 from DHrpcs3/prx_loader
Kernel Explorer implemented
2014-08-19 14:03:59 +02:00
Alexandro Sánchez Bach a010f802ca Linux compilation fixes 2014-08-19 13:57:05 +02:00
Alexandro Sánchez Bach c273c0e42b Minor sys_prx update 2014-08-19 13:19:24 +02:00
Alexandro Sánchez Bach d3e9e1296c Kernel Explorer implemented 2014-08-19 13:19:22 +02:00
Alexandro Sánchez Bach d53327f8bb Updated IDManager
ID member m_flags has been replaced with m_type, which stores the type
of the object referenced by the ID and added std::set<IDType> to the ID
manager to group relevant IDs in order to use them later in some
lv2/sys_process functions and the Kernel Explorer.
2014-08-19 13:10:41 +02:00
Alexandro Sánchez Bach 475fb0d8c8 Merge pull request #767 from lioncash/logical
GLGSRender: Fix always false error condition
2014-08-19 11:25:31 +02:00
Alexandro Sánchez Bach 6cd67be087 Merge pull request #768 from lioncash/delete
cellL10n: Fix mismatching delete call, should be delete[]
2014-08-19 11:23:36 +02:00
Nekotekina 4446aa5d17 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-19 12:32:00 +04:00
Lioncash 2e6ce1c94a cellL10n: Fix mismatching delete call, should be delete[] 2014-08-19 03:07:18 -04:00
Lioncash 538498f21f GLGSRender: Fix always false error condition 2014-08-19 02:48:11 -04:00
Alexandro Sánchez Bach 529d0dbbbe Vertex Data base offset/index
Fixed incorrect default value in RSXTexture.
2014-08-19 02:10:29 +02:00
Nekotekina afe984ca29 Small fix 2014-08-19 02:33:21 +04:00
Nekotekina 293f276f87 Some headers defined 2014-08-19 01:16:48 +04:00
Alexandro Sánchez Bach cf9769fe65 Fragment Shader recompiler comments
Don't expect changes due to this commit.
2014-08-18 22:07:52 +02:00
Nekotekina 9ba553643c cellSyncLFQueueClear
cellSyncLFQueueSize
cellSyncLFQueueDepth
_cellSyncLFQueueGetSignalAddress
cellSyncLFQueueGetDirection
cellSyncLFQueueGetEntrySize
2014-08-18 20:12:03 +04:00
Alexandro Sánchez Bach b23a5f2312 RSXVertexData bugs fixed
* Some extra info on sys_rsx syscalls
* Code cleaned in GLGSRender.cpp
2014-08-18 16:37:23 +02:00
Alexandro Sánchez Bach f71780609d Merge pull request #765 from Syphurith/patch-L10nConvertStr-rebuilt
L10nConvertStr
2014-08-18 12:36:53 +02:00
luxsie 7bbf4bbaeb Implemented L10nConvertStr as only char* -> char* (type).
This may be used in other l10n functions, since it was designed to receive void* pointer.
Find sizeof(size_t) is 4 (uint32_t?) in Guided Fate Paradox. Thank @B1ackDaemon for testing.
Changed log content for this function. Also fixed many typos..
Need windows sdk for code page transformation on windows. Need iconv to build on Linux/Mac.
Original source for char to char codepage transformation is already tested using codeblocks and vs.
Noticed l10n_conv_t is omitted in reference, which may be replaced by iconv_t or simply other function.
Modified .travis.yml to apt-get install libc6-dev and removed -liconv from CMakeFile.txt.
2014-08-18 17:47:54 +08:00
Nekotekina 07a5720c17 SPU: some instructions removed
They can't be used on PS3.
Bitfields for interrupt flags added.
2014-08-18 04:23:05 +04:00
Nekotekina 8a785fefc2 SPR are not used 2014-08-18 02:46:39 +04:00
Nekotekina 55ee7065be SPR removed from SPU 2014-08-18 02:39:25 +04:00
Nekotekina 64935ccee6 syncLFQueueCompletePopPointer + bugfix 2014-08-18 01:35:10 +04:00
Alexandro Sánchez Bach f691746771 Merge pull request #763 from DHrpcs3/gcm-wip
cellGcmSys and sys_rsx changes
2014-08-17 22:11:58 +02:00
Nekotekina cf5dbdbdb5 syncLFQueueGetPopPointer + bugfix 2014-08-17 19:08:26 +04:00
Nekotekina db676256d7 cellPadSetPortSetting fix 2014-08-17 18:59:28 +04:00
Nekotekina e1ac43e1b8 sys_spu_thread_group_join fix 2014-08-17 18:46:21 +04:00
Alexandro Sánchez Bach bb1749d3da cellGcmSys changes and minor fixes 2014-08-17 11:22:36 +02:00
B1ackDaemon 8236b3d034 Merge pull request #762 from tambry/GrammaticalFixes
Fixed some grammatical mistakes
2014-08-17 11:00:49 +03:00
Raul Tambre 9b1a2e50f2 Fixed some grammatical mistakes 2014-08-17 10:53:09 +03:00
B1ackDaemon d9b5cafdee Merge pull request #761 from tambry/cellLoadingFixes
Fix sceNpClans, sceNpCommerce2, sceNpSns and sceNpTus functions not being registered
2014-08-17 09:29:06 +03:00
Raul Tambre 0489f9c342 Fix sceNpClans, sceNpCommerce2, sceNpSns and sceNpTus functions not being registered 2014-08-17 09:18:53 +03:00
Alexandro Sánchez Bach b7be8b19ef Updates in sys_rsx and CellGcmDisplayInfo
Thanks a lot to @3141card for all the relevant information about RSX
related lv2 syscalls.
2014-08-16 23:45:56 +02:00
Nekotekina 50fb51dd0d syncLFQueueGetPushPointer, syncLFQueueCompletePushPointer 2014-08-17 01:39:01 +04:00
B1ackDaemon 2b4f44c0b2 Merge pull request #760 from Syphurith/patch-UI
UI: Clear command for Log Console
2014-08-16 21:09:22 +03:00
B1ackDaemon 95a66afbe6 Merge pull request #759 from tambry/cellGem
Enabled cellGem and added cellGemGetMemorySize
2014-08-16 21:09:12 +03:00
luxsie b82d2caa6b typo fix: added missing header. really sorry for that. 2014-08-17 00:33:24 +08:00
Raul Tambre 1e4f95dee3 Enabled cellGem and added cellGemGetMemorySize 2014-08-16 19:20:16 +03:00
luxsie e360746265 Give Log Console (ConLogFrame) a Context Menu with Copy and Clear actions. 2014-08-17 00:03:31 +08:00
Nekotekina 152c2b87a4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-16 19:01:25 +04:00
Hykem bf8b066d97 Merge pull request #757 from tambry/SceNpImprovements
Huge SceNp header additions and splitting
2014-08-15 18:27:15 +01:00
Hykem b78d0a8e5b Merge pull request #756 from Syphurith/patch-UI
Added Save Data Utility UI (stub)
2014-08-15 18:26:40 +01:00
Raul Tambre d36580f1dc Huge SceNp header additions and splitting
TUS, SNS, Commerce and Clans modules are now in seperate files.
Added a lot of headers and structures.
2014-08-15 17:57:55 +03:00
luxsie d949ef1b8a Removed checking <0 on unsigned int. (lol) 2014-08-15 21:36:20 +08:00
luxsie 9e59ccd9af Typo Fix. Bind submenu items. 2014-08-15 21:02:18 +08:00
Nekotekina cb58a773c9 Some hack 2014-08-15 16:50:59 +04:00
luxsie 5531a615e6 Added Save Data Utility UI (stub).
May be connected to real data after those related save data list get implemented, with those data sent to UI decided.
Also removed some comments from Auto-Pause.
2014-08-15 19:44:16 +08:00
luxsie 98cdbb759b Make Auto-Pause UI better. 2014-08-15 15:02:36 +08:00
B1ackDaemon 4d88cfed95 Merge pull request #755 from Syphurith/patch-AutoPause
Typo fix for Auto-Pause GUI.
2014-08-14 19:54:52 +03:00
luxsie b9b9eb7fb2 Typo fix for checking input against what program get. 2014-08-15 00:04:32 +08:00
Hykem d1e74044f9 Merge pull request #754 from Syphurith/patch-AutoPause
Auto-Pause GUI Configuration
2014-08-14 16:39:35 +01:00
Hykem 004df937ed Merge pull request #752 from Syphurith/patch-syscall-177
SysCalls 177 sys_spu_thread_group_terminate
2014-08-14 16:36:53 +01:00
luxsie 069aa9fb2a Added GUI Configuration for Auto-Pause.
You can easily configure it as what you do for VHD/VFS.
To disable/enable Auto-Pause, find the configuration checkboxes from HLE/Misc panel in Config->Setting of rpcs3.
2014-08-14 23:22:13 +08:00
Nekotekina 9f0c5899d6 Little fix (forbids pointer arithmetic in some places) 2014-08-14 16:15:04 +04:00
Nekotekina c9cd80c089 Memory bugs fixed 2014-08-14 16:02:01 +04:00
Nekotekina 369c667faa syncLFQueueCompletePushPointer 2014-08-14 01:39:54 +04:00
Nekotekina 8ec47b7e27 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-14 01:03:01 +04:00
B1ackDaemon 27403162ad Merge pull request #753 from tambry/NpDrmIsAvailable2
Implement sceNpDrmIsAvailable2
2014-08-13 22:40:23 +03:00
Raul Tambre 91b4596c0b Implement sceNpDrmIsAvailable2 2014-08-13 22:29:38 +03:00
B1ackDaemon d7a4f3ed20 Merge pull request #751 from tambry/RWLockFix
Actually fix sys_rwlock_create
2014-08-13 22:06:28 +03:00
Nekotekina 4b72ecda0d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-13 22:22:44 +04:00
Raul Tambre 63088515b4 Actually fix sys_rwlock_create 2014-08-13 21:01:09 +03:00
luxsie 2d29023931 Implemented Syscalls 177. Not tested (having nothing to trigger it)
Added State changes for sys_spu_thread_group_* calls.
Does almost nothing for 176 and skips the EPERM check for 177.
2014-08-14 01:55:35 +08:00
B1ackDaemon 618d2c85ab Merge pull request #750 from Syphurith/patch-AutoPause
Auto-Pause At Function Call and System Call
2014-08-13 20:22:44 +03:00
Hykem 351d6eabb8 Merge pull request #747 from tambry/FlipImmediate
Somewhat implemented cellGcmSetFlipImmediate
2014-08-13 16:48:30 +01:00
Hykem b005d2fbd7 Merge pull request #746 from tambry/DrmAvailableViolationFix
License isn't always needed, fixes access violation
2014-08-13 16:48:02 +01:00
Hykem 1b41cb0e80 Merge pull request #745 from tambry/DirNameFix
Fix redeclaration
2014-08-13 16:47:45 +01:00
Hykem 60cb52bd23 Merge pull request #743 from tambry/DefaultRWLock
Create RWLock with default attributes, when attributes is a null pointer
2014-08-13 16:47:28 +01:00
Raul Tambre 134ee1eff0 Somewhat implemented cellGcmSetFlipImmediate
Also a small change (optimization?) in cellGcmSetPrepareFlip()
2014-08-13 17:00:37 +03:00
luxsie ea00c3a07f Auto-Pause At Function Call and System Call.
Would have a configuration window (with create the list, and enable/disable, being something similar to VFSManger and etc).
Move the code to Debug::AutoPause in AutoPause.cpp and AutoPause.h
It triggers currently in GameViewer, and would finally change to somewhere else.
Well and now it is all enabled (Function call + System call) by default.
2014-08-13 20:54:27 +08:00
Raul Tambre 8f4d8f82ed License isn't always needed, fixes access violation 2014-08-13 15:25:13 +03:00
Raul Tambre 03747e3106 Fix redeclaration 2014-08-13 13:53:21 +03:00
B1ackDaemon 36ab30d3e9 Merge pull request #744 from tambry/DataPatchCheckFix
Don't set game's size info in Patch and Data check
2014-08-13 12:53:29 +03:00
B1ackDaemon ae1fc37eeb Merge pull request #742 from archshift/gitignore
Add build directory to .gitignore
2014-08-13 12:53:14 +03:00
Raul Tambre 1a92526ba0 Don't set game's size info in Patch and Data check 2014-08-13 10:57:55 +03:00
Raul Tambre 3095d01144 Create RWLock with default attributes, when attributes is a null pointer 2014-08-13 10:46:17 +03:00
archshift 1570bee4b8 Add build directory to .gitignore
Many people prefer to build out-of-source, especially in the ./build directory. This prevents it from being tracked by git.
2014-08-13 00:43:11 -07:00
B1ackDaemon 22d018c4cd Merge pull request #741 from tambry/RefixCellGame
Re-fixed content error dialogs
2014-08-13 10:04:18 +03:00
Raul Tambre 980dfc8f4b Re-fixed content error dialogs 2014-08-13 09:39:45 +03:00
B1ackDaemon 72f1206585 Merge pull request #740 from tambry/ErrorDialogFix
Improve content errors and fix access violation
2014-08-13 00:23:52 +03:00
B1ackDaemon 5b89d137fc Merge pull request #739 from tambry/BootCheckFix
Don't set game's size info when it's a null pointer
2014-08-13 00:23:42 +03:00
Raul Tambre 7dc48425c1 Improve content errors and fix access violation 2014-08-12 23:27:13 +03:00
Raul Tambre 8095c34e49 Don't set game's size info when it's a null pointer 2014-08-12 20:44:28 +03:00
Nekotekina ce0a7fda5c syncLFQueueGetPushPointer 2014-08-12 19:46:22 +04:00
Nekotekina 8002295397 Merge branch 'master' of https://github.com/Nekotekina/rpcs3 2014-08-12 13:05:45 +04:00
Nekotekina fb80c1419c Endianness fix (I'm idiot) 2014-08-12 13:05:07 +04:00
Nekotekina 24019fa7b2 CellSyncLFQueue draft 2014-08-12 13:05:05 +04:00
Nekotekina 6383288311 syncLFQueueInitialize 2014-08-12 13:05:03 +04:00
B1ackDaemon 7645f9a3dd Merge pull request #738 from Syphurith/patch-1
Auto-Pause at specified function call.
2014-08-12 01:18:45 +03:00
Nekotekina 99b4b36935 Endianness fix (I'm idiot) 2014-08-12 01:10:18 +04:00
luxsie fcab9b2f8e typo fix. 2014-08-12 04:24:12 +08:00
luxsie e9ee084231 Automatic-Pause at specified function calls, can be set up using "pause.bin" with rpcs3.
You would need to find the function ids you wanna play with and write them reversed with Hex Editor.
That's quite pity i have no knowledge about wxWidgets so there is no GUI to set up this.
2014-08-12 04:15:20 +08:00
Nekotekina 641efa9b34 CellSyncLFQueue draft 2014-08-11 22:35:34 +04:00
Nekotekina aed250d3b0 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-08-11 13:48:36 +04:00
B1ackDaemon bbb7435041 Merge pull request #737 from tambry/LastSyscallName
Log name of syscall, when access violation occurs
2014-08-10 23:18:02 +03:00
Raul Tambre 54839b293b Log name of syscall, when access violation occurs 2014-08-10 22:56:42 +03:00
B1ackDaemon 2fbd9453dd Merge pull request #736 from tambry/cellSpursTasksetAttribute2
Added TasksetAttribute2 initilization and fixed wrong TODO message
2014-08-10 22:16:02 +03:00
Raul Tambre 0aed6d8c19 Add TaskAttribute2 initilization 2014-08-10 22:06:51 +03:00
Raul Tambre 51dd8cb5c3 Add TasksetAttribute2 initilization, fix wrong TODO
Also fixed cellSpurs.h formatting
2014-08-10 19:05:41 +03:00
B1ackDaemon b8c0b3af73 Merge pull request #735 from raven02/patch-4
Damn typo
2014-08-10 02:18:53 +03:00
raven02 e948842faa Damn typo 2014-08-10 07:10:44 +08:00
Nekotekina c7e77730fe syncLFQueueInitialize 2014-08-09 23:39:56 +04:00
B1ackDaemon 6bd45f9697 Merge pull request #734 from Nekotekina/master
Logging last syscall code for memory error
2014-08-09 20:19:23 +03:00
Nekotekina dadd93bb84 Revert "Return CELL_EFAULT if specified address is invalid"
This reverts commit 15fa50f24e.
2014-08-09 20:39:28 +04:00
Nekotekina 4c29c93283 Merge remote-tracking branch 'origin/master' 2014-08-09 20:29:05 +04:00
Nekotekina c3bba76d32 cellSyncLFQueueInitialize preparations 2014-08-09 20:27:13 +04:00
Nekotekina b09412a79a sys_process_get_sdk_version rough implementation 2014-08-09 20:27:11 +04:00
Nekotekina 18e1799980 Last syscall registering 2014-08-09 20:25:05 +04:00
Nekotekina b4615f2452 cellSyncLFQueueInitialize preparations 2014-08-09 20:23:53 +04:00
B1ackDaemon e9835d4a2c Merge pull request #733 from raven02/patch-3
Show game title and ID in log
2014-08-09 19:10:42 +03:00
B1ackDaemon e69744c7ca Merge pull request #732 from raven02/patch-2
Return CELL_EFAULT if specified address is invalid
2014-08-09 19:10:37 +03:00
B1ackDaemon 228c33d44d Merge pull request #731 from raven02/patch-1
FS: add cellFsChmod/SdataOpenByFd/Fsync & cellFsAioWrite
2014-08-09 19:10:34 +03:00
Nekotekina b7ea1f4d44 sys_process_get_sdk_version rough implementation 2014-08-09 20:04:53 +04:00
Nekotekina 6f8fb71d15 Last syscall registering 2014-08-09 20:01:55 +04:00
raven02 e49fcd4b21 Fix typo 2014-08-09 23:31:21 +08:00
raven02 b9ae34cc3b Show game title and ID in log 2014-08-09 23:16:21 +08:00
raven02 15fa50f24e Return CELL_EFAULT if specified address is invalid 2014-08-09 20:36:24 +08:00
raven02 3f65b54a1e cellFsSdataOpenByFd 2014-08-09 17:17:23 +08:00
raven02 6a0ad1b001 cellFsFsync 2014-08-09 16:44:27 +08:00
raven02 1521eea324 Misc cleanup 2014-08-09 16:27:59 +08:00
raven02 ae96537b8d FS: add cellFsChmod & cellFsAioWrite 2014-08-09 15:11:30 +08:00
B1ackDaemon 3d47c8ab9f Merge pull request #730 from Nekotekina/master
Commit collection
2014-08-09 00:27:44 +03:00
Nekotekina c3d84c8f05 Log fix 2014-08-09 00:39:15 +04:00
Nekotekina f0eadc783d Oops. 2014-08-08 22:52:11 +04:00
Nekotekina 231de946a0 Renaming (2) 2014-08-08 22:25:45 +04:00
Nekotekina 7f5ae1cdc2 Renaming (1) 2014-08-08 22:23:30 +04:00
Nekotekina dfd5fd388e Little cleanup 2014-08-08 22:13:17 +04:00
Nekotekina b00e0fcf69 sys_event_flag.cpp restored 2014-08-08 19:55:12 +04:00
Nekotekina b89c4fec3e cellSyncLFQueue moved, cellSpursQueue cleared 2014-08-08 18:50:42 +04:00
Nekotekina 9b24db3a76 cellSyncQueuePeek 2014-08-08 17:54:46 +04:00
Nekotekina 9b24ca7a28 Broken comments 2014-08-08 16:55:51 +04:00
Nekotekina 8169a8e4bb cellSyncRwmWrite 2014-08-08 01:34:56 +04:00
Nekotekina 6568a94b0e cellSyncBarrierWait 2014-08-07 23:16:29 +04:00
Nekotekina fb448461df cellSyncBarrierNotify 2014-08-07 11:59:56 +04:00
Nekotekina 270c851645 vfsLocalDir::IsOpened() implemented 2014-08-06 02:34:26 +04:00
Nekotekina 36f76bf288 Some missing logs 2014-08-06 02:19:33 +04:00
Nekotekina facb412e62 ... 2014-08-05 21:47:07 +04:00
Nekotekina 5621258b9d edat patch 2014-08-05 21:47:05 +04:00
Sacha 9f268065de Fix infinite loop in rMkpath 2014-08-05 21:47:03 +04:00
Nekotekina e7ae71bd73 Copy(To)(From)(Real) elimination
It was nothing but a crutch
2014-08-05 21:33:02 +04:00
B1ackDaemon cb22cbca62 Merge pull request #725 from Nekotekina/edat-fix
edat patch from sent stuff (fixes shit)
2014-08-05 19:37:02 +03:00
B1ackDaemon 6864a3ebcd Merge pull request #724 from xsacha/rFile
Fix infinite loop in rMkpath
2014-08-05 19:36:56 +03:00
Nekotekina 83948a298c ... 2014-08-05 18:41:32 +04:00
Nekotekina d2bb2c71b4 edat patch 2014-08-05 18:36:16 +04:00
Nekotekina 021656d821 Some missing logs 2014-08-05 18:06:40 +04:00
Sacha e1b7380bc6 Fix infinite loop in rMkpath 2014-08-05 22:14:08 +10:00
Nekotekina bdc263bc34 sys_time fix 2014-08-05 14:29:00 +04:00
Nekotekina 8f04ab07ed IsGood() check elimination
Reasons: 1) It's unsafe - we cannot guarantee that address is still good
while it is used. 2) It's wrong in many modules which are usually just
compare pointer with zero.
2014-08-05 14:18:22 +04:00
Nekotekina 48514b0e93 It doesn't hurt if we list all the imports? 2014-08-05 00:25:25 +04:00
Nekotekina 424d5e22d2 GetCount for Out_IntrMBox 2014-08-04 22:43:42 +04:00
Nekotekina f5b3c38c27 Arrgh, wrong checks!!! 2014-08-04 22:33:17 +04:00
Alexandro Sánchez Bach 2fb95556a5 Merge pull request #723 from raven02/patch-3
Remove duplicate
2014-08-04 13:57:32 +02:00
raven02 d48de0afb0 Remove duplicate 2014-08-04 18:36:32 +08:00
Alexandro Sánchez Bach 9223174c0c Merge pull request #722 from DHrpcs3/gcm-wip
Some GCM-related changes
2014-08-04 01:54:44 +02:00
Alexandro Sánchez Bach 90d0e69a56 Fixed error of pull request #714 2014-08-04 01:52:36 +02:00
Alexandro Sánchez Bach f07c35d9ae Renamed Emu/GS -> Emu/RSX 2014-08-04 01:37:23 +02:00
Alexandro Sánchez Bach 48a339fd17 cellGcmSys updated
* cellGcmGetTiledPitchSize (thanks 3141card), cellGcmFunc15.
* sysPrxForUser: _sys_memset
* Created headers cellGcmSys.h and sysPrxForUser.h
* int, int32_t -> s32 and uint32_t -> u32.
2014-08-04 01:37:21 +02:00
Alexandro Sánchez Bach e3d38f704f Merge pull request #714 from xsacha/rFile
More rFile cleanups and fixes.
2014-08-04 01:07:09 +02:00
raven02 7f5cc96842 RSX : fix opengl error 0x505 2014-08-04 00:27:49 +02:00
raven02 fa2fa5b4bf Init cellSail module 2014-08-04 00:09:37 +02:00
Alexandro Sánchez Bach 35b00bf8bc Fixed error of pull request #719 2014-08-04 00:07:50 +02:00
Alexandro Sánchez Bach fc122630d4 Merge pull request #719 from tambry/cellnetctl
Additions and improvements to cellNetCtl
2014-08-03 23:37:50 +02:00
Dante38490 18918db012 Remove the Soft_OAL line
Because now that the file is integrated with git it so it became unnecessary.
2014-08-03 23:29:52 +02:00
Raul Tambre f405395f97 Additions and improvements to cellNetCtl 2014-08-03 09:30:45 +03:00
DHrpcs3 7411012db9 Fixed compilation errors
Implemented vm::ptr & vm::ref
2014-08-01 19:27:48 +03:00
Sacha e8525a6f14 More rFile cleanups and fixes.
Was using fileExists/dirExists before when really should have just been exists. File or Dir doesn't matter and would only create false negatives.
Current working directory shouldn't really be used at all. This is just the folder the application is run from (not even where the .exe resides).
Some of the infos required by vfsLocalDir such as executable may not be portable. Not sure of their intended function as they are never used.
2014-08-01 04:20:00 +10:00
DHrpcs3 cd33be1491 Implemented vm::var.
MemoryAllocator replaced with vm::var
2014-07-31 19:08:02 +03:00
Alexandro Sánchez Bach 6cb083be1a Merge pull request #713 from raven02/patch-2
Fix PBO no initialization
2014-07-30 15:53:58 +02:00
raven02 f52c644af7 Update GLGSRender.cpp 2014-07-30 21:31:55 +08:00
Alexandro Sánchez Bach e56c6914d2 Merge pull request #712 from raven02/patch-17
EDAT: list the edat files name
2014-07-29 23:50:22 +02:00
raven02 33559ca0ea Minor change 2014-07-30 05:48:58 +08:00
raven02 ebec856a36 EDAT: list the edat files name 2014-07-30 05:45:23 +08:00
B1ackDaemon 03627a62eb Merge pull request #711 from raven02/patch-17
RSX: cleanup PBO
2014-07-29 22:49:32 +03:00
raven02 90dd215b8c RSX: cleanup PBO 2014-07-30 03:33:44 +08:00
Alexandro Sánchez Bach 08d22a8033 Merge pull request #710 from tambry/debuggererrorfix
Fix debugger startup error
2014-07-29 14:38:36 +02:00
Raul Tambre 8c6622dd82 Fix debugger startup error 2014-07-29 11:28:15 +03:00
B1ackDaemon b98b3241e7 Merge pull request #709 from Nekotekina/master
Various fixes, new functions
2014-07-29 07:14:01 +03:00
Nekotekina 9d2d5102f6 Conflict fixed 2014-07-29 05:48:29 +04:00
Nekotekina 143a75616c Conflicts fixed 2014-07-29 00:29:38 +04:00
Alexandro Sánchez Bach 9ccc36382b Merge pull request #707 from tambry/newsyscalls
Prepared new SysCalls, made nicer
2014-07-28 17:53:21 +02:00
Raul Tambre 329520168b Prepared new SysCalls, made nicer 2014-07-28 18:40:06 +03:00
Alexandro Sánchez Bach d1343f5415 Merge pull request #706 from raven02/patch-16
Fix spacing
2014-07-28 14:51:54 +02:00
raven02 dbc8f76b52 Add sceNpSignalingDestroyCtx() 2014-07-28 19:15:28 +08:00
raven02 b22ba86183 Fix spacing 2014-07-28 14:10:50 +08:00
B1ackDaemon b2b8cb17cd Merge pull request #702 from raven02/patch-14
RSX: detach shader when clear program buffer
2014-07-27 22:06:29 +03:00
B1ackDaemon 0aae7a5168 Merge pull request #703 from raven02/patch-15
Stub bunch of sceNP functions
2014-07-27 20:52:57 +03:00
raven02 caf5a57875 Stub all remaining sceNP functions 2014-07-28 01:30:25 +08:00
raven02 726760a38e RSX: detach shader when clear program buffer 2014-07-27 22:18:53 +08:00
B1ackDaemon bacc193638 Merge pull request #700 from raven02/patch-13
Regression fix #697
2014-07-27 07:38:45 +03:00
raven02 a7bc421137 Regression fix https://github.com/DHrpcs3/rpcs3/issues/697 2014-07-27 09:24:06 +08:00
B1ackDaemon c41be3a964 Merge pull request #698 from raven02/patch-12
RSX: checkForGlError for Stencil/Depth/Color
2014-07-26 08:50:58 +03:00
raven02 76fb1d9db0 RSX: checkForGlError for Stencil/Depth/Color misc 2014-07-26 12:58:33 +08:00
Alexandro Sánchez Bach c6cac4b205 Cleanup in RSXThread::DoCmd
Some RSX commands added.
Moved unused commands to the bottom of the big switch/case.
2014-07-25 21:03:08 +02:00
Alexandro Sánchez Bach 1d0071302a Merge pull request #696 from raven02/patch-11
Fix flip control gcm sample
2014-07-25 11:11:43 +02:00
Alexandro Sánchez Bach 665aaa0ef5 Merge pull request #695 from raven02/patch-10
RSX : add missing NV4097 method names
2014-07-25 11:10:44 +02:00
raven02 2a16f50f7f Fix flip control gcm sample 2014-07-25 16:43:38 +08:00
raven02 1ac0ae8172 RSX : add missing NV4097 method names 2014-07-25 16:41:59 +08:00
Nekotekina 9d0bd55ec0 cellSyncQueueTryPush, cellSyncQueueTryPop 2014-07-25 12:35:37 +04:00
Alexandro Sánchez Bach c497de1963 Merge pull request #594 from Dante38490/patch-1
Version rpcs3 Update to 0.0.0.5 After create Tag 0.0.0.5
2014-07-25 10:34:28 +02:00
Nekotekina 74e18dc8c9 cellSyncQueuePop...
cellSyncQueueSize,
cellSyncQueueClear implemented
2014-07-24 19:02:04 +04:00
Nekotekina f8d9242743 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-24 17:26:50 +04:00
Dante38490 c28747aef6 Version change to 0.0.0.5 After create Tag 0.0.0.5 2014-07-24 02:54:08 +02:00
Nekotekina 3d184b3a59 cellSyncQueuePush implemented 2014-07-24 01:51:57 +04:00
Alexandro Sánchez Bach 65ecaab2c4 Merge pull request #593 from DHrpcs3/wip
GUI and RSX updates
2014-07-23 20:52:30 +02:00
Alexandro Sánchez Bach 58421029c4 Merge pull request #591 from Bigpet/cmakefix
use a include directory relative to the lists file
2014-07-23 20:40:38 +02:00
Alexandro Sánchez Bach 3689560617 Minor fixes and changes 2014-07-23 20:36:57 +02:00
Peter Tissen afe493f187 use a include directory relatie to the lists file 2014-07-23 19:51:41 +02:00
Alexandro Sánchez Bach 602c436e1c Removed "Boot game and start" entry
There is already a setting on the menu (Settings > HLE > Always start
after boot) to do that. Make it active by default since disabling it is
only useful for debugging purposes.
2014-07-23 12:38:08 +02:00
Alexandro Sánchez Bach abbd3ae239 RSX method naming modified
GCM commands (e.g. cellGcmSet*) are not the same as RSX methods (e.g.
NV4097_*). The name has to be changed.
2014-07-23 00:50:45 +02:00
Alexandro Sánchez Bach 713bff01e1 Flipping / padding on .JPG and .GIF decoding
* Changes in cellJpgDec and cellGifDec come from cellPngDec.
2014-07-22 21:37:45 +02:00
Nekotekina f55afc27a9 cellSyncQueue draft 2014-07-22 23:02:45 +04:00
Alexandro Sánchez Bach fe46a45915 Fixed memory exception on cellJpgDec & cellGifDec
* Added support for CELL_JPGDEC_BUFFER and CELL_GIFDEC_BUFFER.
2014-07-22 17:16:15 +02:00
Nekotekina 1c32a284e1 cellSyncRwmInitialize implemented
cellSyncRwmRead implemented (SPU sample works)
2014-07-22 18:46:31 +04:00
Nekotekina 356904d198 .gitignore updated 2014-07-22 01:55:02 +04:00
Nekotekina 2a5506dae6 cellSyncBarrierInitialize implemented
(SPU sample works)
2014-07-21 23:05:58 +04:00
Nekotekina fa5311718e Small SPU cleanup 2014-07-21 22:35:44 +04:00
Nekotekina e3fbfc4bda Logging option restored 2014-07-21 20:39:00 +04:00
Nekotekina 5c84ad30a1 LogBase class for both SysCallBase and Module 2014-07-21 19:58:03 +04:00
Nekotekina 0865fca90a Fix for SysCallBase 2014-07-21 18:49:56 +04:00
Nekotekina 640de81571 Variadic templates for module logs
Two new module log types: Todo() and Notice()
2014-07-21 18:42:43 +04:00
Nekotekina da8194d659 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-21 14:37:42 +04:00
DHrpcs3 6651795f6d Merge pull request #586 from DHrpcs3/revert-582-patch-7
Revert "Regression fix #343"
2014-07-21 13:30:47 +03:00
DHrpcs3 9c2fe3b25d Revert "Regression fix #343" 2014-07-21 09:57:07 +00:00
Nekotekina fe49046a96 sys_spinlock fixed 2014-07-21 02:30:16 +04:00
Nekotekina 1f64087a3b Fix of fix (damned crutch) 2014-07-20 21:59:59 +04:00
Nekotekina bba74b9056 Compilation fix 2014-07-20 21:52:27 +04:00
B1ackDaemon 1a2da9d608 Merge pull request #585 from raven02/patch-8
Make a spelling difference consistent
2014-07-20 20:23:45 +03:00
Nekotekina 883885dc0b cellSyncMutex fixed 2014-07-20 21:14:04 +04:00
Nekotekina 3d74112aa3 sys_process_is_stack fixed 2014-07-20 21:13:35 +04:00
Nekotekina 25aeb2e086 SysCall table fixes 2014-07-20 21:13:07 +04:00
Nekotekina 41495e5d2a sys_ppu_thread_exit fix 2014-07-20 21:05:48 +04:00
Nekotekina 1f46098b23 Name fix (SPU JIT)
Unnecessary check removed
2014-07-20 21:03:41 +04:00
raven02 5f3ea1005a Make a spelling difference consistent 2014-07-20 14:55:33 +08:00
DH 8b9a46bb39 RSX: fixed scissor 2014-07-19 18:39:47 +03:00
Peter Tissen 0fe32fa0d3 fix a typo in the packaging batch file
the soft_oal.dll was written with a dash which is clearly wrong
2014-07-19 15:09:39 +02:00
DH 68078427aa Fixed LOOP & REP instructions in FragmentShaderDecompiler 2014-07-19 14:58:32 +03:00
DH 7433a021db Improved RSX emulation
- Fixed NV4097_SET_SHADER_CONTROL
- Vertex Shader: SCA instructions don't override VEC result
2014-07-19 12:24:15 +03:00
B1ackDaemon bd04990af3 Merge pull request #583 from DHrpcs3/revert-579-patch-4
Revert "Fix a dst_reg typo for tc9"
2014-07-19 10:06:17 +03:00
B1ackDaemon a7f3b6fd57 Revert "Fix a dst_reg typo for tc9" 2014-07-19 10:04:33 +03:00
Alexandro Sánchez Bach 222750b846 Merge pull request #582 from raven02/patch-7
Regression fix #343
2014-07-18 23:15:06 +02:00
raven02 1a36a2d759 Regression fix #2 2014-07-19 04:33:08 +08:00
B1ackDaemon 9989988cb7 Merge pull request #581 from boxingcow/master
Fix small Clang warning about parenthesis
2014-07-18 21:40:39 +03:00
B1ackDaemon 4e55be9762 Merge pull request #580 from raven02/patch-6
GUI : Boot elf and run at start
2014-07-18 21:31:02 +03:00
boxingcow c7e4c90cb5 Merge git://github.com/DHrpcs3/rpcs3 2014-07-18 19:13:27 +01:00
raven02 f151ba7c53 GUI : Boot elf and run at start 2014-07-19 02:07:50 +08:00
B1ackDaemon e7ad52ee9f Merge pull request #579 from raven02/patch-4
Fix a dst_reg typo for tc9
2014-07-18 20:56:06 +03:00
B1ackDaemon b97ce7732b Merge pull request #578 from Nekotekina/master
Elimination of be_t<> constructors
2014-07-18 20:51:29 +03:00
raven02 d058ef769c Fix a dst_reg typo for tc9 2014-07-19 01:47:58 +08:00
Nekotekina 5f55afda0f Little fix 2 2014-07-18 21:30:22 +04:00
Nekotekina f69337be65 Little fix 2014-07-18 21:04:12 +04:00
B1ackDaemon 2eb73e5b4b Merge pull request #576 from raven02/patch-2
Fix compiler warning
2014-07-18 19:59:14 +03:00
Nekotekina 74914c5916 be_t<> constructor elimination 2014-07-18 20:55:26 +04:00
DHrpcs3 1cfd2c4475 Merge pull request #577 from raven02/patch-3
Regression fix #1
2014-07-18 19:44:31 +03:00
raven02 4856066a81 Regression fix #1 2014-07-18 23:03:39 +08:00
raven02 f729f21e6c Fix compiler warning 2014-07-18 22:19:37 +08:00
Hykem a7971b55ee Merge pull request #574 from Nekotekina/SРU
SPU Fixes
2014-07-17 13:41:15 +01:00
Hykem e6a660a200 Merge pull request #573 from Aslaville/UI
fix broken commit (2267c84d6a)
2014-07-17 13:40:52 +01:00
Nekotekina 7816843dfb Little fix 2014-07-16 22:29:26 +04:00
boxingcow c37c90613f Fix small clang warning 2014-07-16 17:45:54 +01:00
Nekotekina c3e0669435 Time functions fixed 2014-07-16 20:21:09 +04:00
Nekotekina ecbc9d1b08 RawSPU cleanup 2014-07-16 20:10:18 +04:00
Nekotekina 694a2b774e SPU Recompiler fix 2014-07-16 16:15:20 +04:00
Nekotekina 3d0983e7d0 SPU Interpreter fix
(these bugs weren't in SPURecompiler)
2014-07-16 16:13:11 +04:00
Nekotekina 3d9c76a80d RawSPU initialization fix 2014-07-16 16:09:43 +04:00
Nekotekina d94ce7094e Rounding mode set 2014-07-16 16:09:20 +04:00
Nekotekina e1a9f08a91 sys_raw_spu_destroy implemented 2014-07-16 16:07:38 +04:00
Nekotekina b487dcee27 RawSPU initialization fix 2014-07-16 16:06:58 +04:00
Nekotekina 8e19af530b .gitignore fix 2014-07-16 16:03:54 +04:00
David Kiarie 78aef474a5 rename some functions as per their function 2014-07-15 18:29:48 +03:00
David Kiarie dbfd07f11e fix broken commit (2267c84d6a) 2014-07-15 18:04:37 +03:00
Alexandro Sánchez Bach 75e81bc969 Merge pull request #572 from Nekotekina/master
Update
2014-07-15 01:06:53 +02:00
Nekotekina 51f64049ab Callback header fix 2014-07-15 01:33:35 +04:00
Nekotekina 51b54a4d6b SSE4.1 detection 2014-07-15 01:32:32 +04:00
Peter Tissen 38333f01e3 Merge remote-tracking branch 'origin/pr/571' 2014-07-14 22:02:26 +02:00
Sacha 26e1418897 Fix rFile 2014-07-15 05:42:41 +10:00
Nekotekina 01aa74e4a8 IsGoodAddr() bug fixed 2014-07-14 23:15:30 +04:00
B1ackDaemon 73491d4ffa Merge pull request #570 from xsacha/video-fix
Fix issue from #567 that stopped videos from working. Clean up some code...
2014-07-14 21:02:01 +03:00
Sacha 82536b298c Fix issue from #567 that stopped videos from working. Clean up some code. 2014-07-15 03:21:24 +10:00
Hykem 62d3dcaf64 Merge pull request #567 from xsacha/master
c++11 cleanup
2014-07-14 12:04:57 +01:00
Hykem 09d0d81a43 Merge pull request #566 from lioncash/assignments
RSXThread: Remove some redundant assignments
2014-07-14 12:04:22 +01:00
Hykem 17d400f72a Merge pull request #565 from boxingcow/master
Fix the OS X build fixes...
2014-07-14 12:03:57 +01:00
Hykem b930b874fe Merge pull request #557 from Aslaville/ui
rpcs3/Gui:minor gui  fixes
2014-07-14 12:03:19 +01:00
Nekotekina a71053ae15 Asmjit updated 2014-07-14 13:24:10 +04:00
boxingcow ebf713c5a6 Update Memory.h
To remove extraneous code.
2014-07-14 09:18:45 +01:00
Sacha 6bd044f9be c++11 fixups. Initialise to zero where possible. note: cellAudio looks quite messed up. 2014-07-14 17:26:31 +10:00
Lioncash 3c04f2fef9 RSXThread: Remove some redundant assignments 2014-07-14 00:06:15 -04:00
Nekotekina dab3d6c6d6 Callbacks 2014-07-13 23:05:28 +04:00
Nekotekina 1dbbbc55f6 Little fix 2014-07-13 22:59:54 +04:00
Nekotekina 2eafb235ba spu_printf fixed 2014-07-13 22:55:14 +04:00
boxingcow 10647890ef There is a special place in hell for 'Smart Dashes' 2014-07-13 18:51:19 +01:00
Nekotekina 7370c49ff3 Forgotten memory check + PSV stuff fixed 2014-07-13 16:26:38 +04:00
boxingcow 3c8084b2c7 Stupid mistake. 2014-07-13 09:31:11 +01:00
B1ackDaemon 582825934c Merge pull request #563 from Nekotekina/master
Fixed mkdir (PKG Install issue)
2014-07-13 02:21:42 +03:00
Nekotekina 2c7de61027 Compilation fix 2014-07-13 02:56:52 +04:00
Nekotekina 21aedb518c PKG Installing fixed 2014-07-13 02:39:43 +04:00
B1ackDaemon fc962de3dd Merge pull request #562 from boxingcow/master
Fix OS X build
2014-07-13 01:08:31 +03:00
B1ackDaemon f240690ff5 Merge pull request #558 from Bigpet/modunload
unload modules upon stopping
2014-07-13 01:08:25 +03:00
boxingcow b7b3761c09 Add include path for XQuartz on OS X 2014-07-12 22:10:49 +01:00
boxingcow a4f73bc705 Fix broken OS X build with isnan and MAP_ANONYMOUS 2014-07-12 22:06:43 +01:00
boxingcow 634a1f3162 Add .DS_Store to .gitignore 2014-07-12 22:01:41 +01:00
B1ackDaemon b523c2810e Merge pull request #560 from Nekotekina/master
Little fix
2014-07-12 19:53:32 +03:00
Nekotekina 2331c5991a Little fix 2014-07-12 20:38:37 +04:00
Alexandro Sánchez Bach 5835669dd9 Merge pull request #559 from Nekotekina/master
Build fix
2014-07-12 18:07:43 +02:00
Nekotekina a94d0771fe Compilation fix 2 2014-07-12 19:40:52 +04:00
Nekotekina 9b5a3fd2b6 Compilation fix 2014-07-12 19:30:07 +04:00
Nekotekina 1908842255 Build fix
Non-ASCII characters replaced in PPUThread.h
Some cleanup
2014-07-12 18:53:36 +04:00
Alexandro Sánchez Bach 64754a08b4 Merge pull request #417 from xsacha/master
Stdafx: More header cleaning.
2014-07-12 14:03:21 +02:00
Peter Tissen f75a3c8f60 unload modules upon stopping I guess we won't find out what's wrong if we don't let it fail 2014-07-12 13:52:37 +02:00
David Kiarie 2267c84d6a rpcs3/Gui:minor gui fixes
Enable uses to go back after using VHDDManager or
VFSManager by providing Ok and Cancel buttons otherwise I
have to kill rpcs3

signed-off-by: asla<davidkiarie4@gmail.com>
2014-07-12 12:48:58 +03:00
Sacha a1158c9515 Remove some indirect headers. 2014-07-12 17:46:14 +10:00
Sacha 9816ec3aa0 Fix conflicts. 2014-07-12 17:02:39 +10:00
Sacha c09b0f511e More header changes. 2014-07-12 16:33:04 +10:00
Sacha 6e06fdf638 Stdafx: Major header cleanup 2014-07-12 16:33:04 +10:00
Alexandro Sánchez Bach 14050c7302 Removed: "Ignore R/W memory errors" option
Very small commit to take care of one thing missing in #409.

Reasons for that change:
<Nekoteki>AlexAltea: it's fatal error that shouldn't be ignored
<Nekoteki>AlexAltea: the second reason, ps3 can handle page faults by
itself
2014-07-11 18:18:12 +02:00
Alexandro Sánchez Bach 3642b267a0 Merge pull request #409 from Nekotekina/master
Memory system improved
2014-07-11 15:14:26 +02:00
Nekotekina c16daed87d Compilation fix 2014-07-11 16:50:50 +04:00
Nekotekina 2203cb1dcf F|_|C|< the speed, we need some checks 2014-07-11 16:22:56 +04:00
Nekotekina 2fe52451e1 Exceptions fixed 2014-07-11 15:32:34 +04:00
Nekotekina ad524798fa Compilation fix 2014-07-11 13:39:51 +04:00
Nekotekina 125359e30e Some fixes 2014-07-11 13:18:23 +04:00
Nekotekina 259b57c64a Fixed conflicts 2014-07-11 10:09:38 +04:00
Nekotekina cb9c1030a9 Warning fix 2014-07-11 10:01:23 +04:00
Alexandro Sánchez Bach ca3f621b3b Merge pull request #415 from xsacha/master
Stdafx: more cleanup
2014-07-10 23:29:07 +02:00
Sacha 51bb9dced4 Optimise travis a bit more. Use Cmake 3.0. Also drop rPlatform from stdafx. 2014-07-11 07:13:45 +10:00
Sacha 8793d75811 Stdafx: More cleanup 2014-07-11 06:54:12 +10:00
B1ackDaemon 1a1fb622fa Merge pull request #414 from xsacha/master
Use a standard config dir on non-Windows. Fixes #192
2014-07-10 22:56:24 +03:00
Sacha 3737993bb2 Use a standard config dir on non-Windows. Fixes #192
Also remove WindowInfo::GetDefault which was redundant.
2014-07-11 05:45:07 +10:00
B1ackDaemon 313af89d36 Merge pull request #413 from xsacha/master
Warnings: Fix several warnings.
2014-07-10 22:26:57 +03:00
Sacha f256153a2b Warnings: Fix several warnings. 2014-07-11 05:08:05 +10:00
B1ackDaemon 2bd8db5f7a Merge pull request #412 from raven02/patch-23
Remove m_alpha_func sanity check
2014-07-10 21:58:43 +03:00
raven02 8cacbe3567 Remove m_alpha_func sanity check 2014-07-11 02:41:48 +08:00
B1ackDaemon d1533b606b Merge pull request #411 from raven02/patch-22
RSX : set default values using opengl one.
2014-07-10 21:06:47 +03:00
B1ackDaemon c03677bd96 Merge pull request #410 from xsacha/master
CMake and stdafx improvements
2014-07-10 20:28:20 +03:00
raven02 a8480f66e0 RSX : set bunch of default values using opengl one 2014-07-11 01:23:36 +08:00
Sacha 6b148d1d4c CMake: Improve to support build type. Default to release. 2014-07-11 02:46:10 +10:00
Nekotekina 0dfbb5de73 Compilation fix 2014-07-10 18:29:38 +04:00
Sacha ab7a45aede stdafx: move out some uncommon includes 2014-07-11 00:16:26 +10:00
Nekotekina 22b9afdb60 Some cleanup 2 2014-07-10 04:13:04 +04:00
Nekotekina b5f376f834 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-10 02:07:53 +04:00
Alexandro Sánchez Bach 59d0b1da4e Merge pull request #408 from raven02/patch-21
Fix crash in Battle fantasia/Crystal defenders
2014-07-10 00:05:14 +02:00
raven02 96fb8b968f Fix crash in Battle fantasia/Crystal defenders 2014-07-10 05:50:25 +08:00
Alexandro Sánchez Bach 470ffaf167 Merge pull request #407 from Bigpet/appveyorbuild3
Appveyorbuild
2014-07-09 23:05:11 +02:00
Alexandro Sánchez Bach 2e06e8152e Merge pull request #405 from xsacha/master
wxRemoval: Ini.cpp
2014-07-09 22:57:40 +02:00
Sacha 80dbe1a67f Use an alternative to sregex. 2014-07-10 06:49:24 +10:00
Nekotekina 3fdeb72999 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-10 00:02:45 +04:00
Nekotekina bb0695e76c Using recursive mutex 2014-07-10 00:02:21 +04:00
Sacha 711f9eadc5 Revert some changes until GCC 4.9 is available. 2014-07-10 05:16:17 +10:00
Peter Tissen 10d9c3e412 add back /Y flag on xcopy
to make sure no stdin input is requuired
2014-07-09 17:27:20 +02:00
Peter Tissen dd382b2afc add files to allow for packaging on teamcity
add initial appveyor script

add submodule update before build

add msbuild cmd

remove msbuild cmd

make script runnable locally

add solution without wxwdigets

add initial appveyor script

add submodule update before build

add msbuild cmd

remove msbuild cmd

add packaging step to appveyor

add ftp upload test

use msbuild explicitly

doesn't seem to work otherwise

temporarily remove deploy script

temporarily remove build script

remove non-essential stuff

add back some stuff

set artifact path

update artifact stuff

try to add back deploy

add build step again, *sigh*

add some more build settings

add build sript style build again

download wxwidgets instead of building

remove quite flag for debugging

add cert igonre to download

dont redundantly add folder

use a seperate solution without wxwidgets dependencies

only use the rpcs3 7z as artifact

to avoid re-packaging wxwidgets, also comment out deployment, since I don't have acccess to the main account to add secure strings

Conflicts:
	package.bat
2014-07-09 17:18:23 +02:00
Nekotekina 123c4ba1a8 Some bugs fixed 2014-07-09 03:04:36 +04:00
Sacha 0299ab7660 wxRemoval: Ini.cpp 2014-07-09 06:34:10 +10:00
B1ackDaemon f232351720 Merge pull request #404 from xsacha/master
Qt update
2014-07-08 20:18:44 +03:00
Nekotekina 6e77f80d5f Small fix 2 2014-07-08 21:18:12 +04:00
Nekotekina 34590bc884 Small fix 2014-07-08 21:08:56 +04:00
Sacha 2ba5ada9f8 Qt: Update to match rest of emu. 2014-07-09 02:26:31 +10:00
Sacha ba3838f54c Qt: Update to Qt 5.2 code base. Makes the code much simpler! 2014-07-09 02:25:17 +10:00
B1ackDaemon 3c7d48933f Merge pull request #403 from raven02/patch-20
RSX: simplify recale native resolution code
2014-07-08 19:18:27 +03:00
raven02 52112006d4 RSX: simplify recale native resolution 2014-07-08 23:25:02 +08:00
Nekotekina 50b42f8593 ifdefs and linux (posix) version (not tested) 2014-07-08 18:26:49 +04:00
Nekotekina d1fff053c2 Some cleanup 2014-07-07 21:22:36 +04:00
B1ackDaemon cd8f286791 Merge pull request #401 from raven02/patch-19
RSX : add rescale support for native 960x1080 & 1024x768
2014-07-07 18:48:08 +03:00
raven02 38e41e0ea8 RSX : add rescale support for native 960x1080 & 1024x768 2014-07-07 22:16:59 +08:00
Alexandro Sánchez Bach bbf3c80d04 Merge pull request #400 from SiPlus/patch-1
Change vec2(float, 0.0).xxxx to vec4(float)
2014-07-07 10:25:31 +02:00
SiPlus bf8e6dbc8e Change vec2(float, 0.0).xxxx to vec4(float) in FS 2014-07-07 10:57:03 +04:00
SiPlus 8a305b19af Change vec2(float, 0.0).xxxx to vec4(float) in VS 2014-07-07 10:53:47 +04:00
Nekotekina faab4ed6db Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-07 03:36:26 +04:00
Nekotekina 19db12e090 Memory allocation changes 2014-07-07 03:36:07 +04:00
B1ackDaemon a26bc227d8 Merge pull request #399 from raven02/patch-18
cellPamf : add error log for CELL_PAMF_ERROR_INVALID_ARG
2014-07-06 22:39:37 +03:00
raven02 d751e350c6 cellPamf : add error log for CELL_PAMF_ERROR_INVALID_ARG 2014-07-07 02:26:05 +08:00
Alexandro Sánchez Bach e55c8410b4 Merge pull request #398 from Bigpet/slnfix
fix compile error on the Debug - Memleak config
2014-07-06 20:12:47 +02:00
Peter Tissen ad83fb325c fix compile error on the Debug - Memleak config 2014-07-06 19:40:51 +02:00
Alexandro Sánchez Bach d0b7c9a9af Merge pull request #396 from DHrpcs3/prx_loader
Changes for modules and lv2 sycalls
2014-07-06 19:02:50 +02:00
Alexandro Sánchez Bach 230ba0d360 Fixed conflicts and minor changes (2) 2014-07-06 18:05:52 +02:00
Alexandro Sánchez Bach 0002cc0af3 Removed old / unnecessary code
* Removed Plugins.h file as I assume setting up a plugin hell is a bad
idea (does anyone disagree?).
* Removed FnIdGenerator, and moved FnIdGenerator::GenerateFnId to
getFunctionId in Modules.cpp
* Disabled RSX Debugger and Memory Viewer when the emulator is stopped.
* ELF64Loader::LoadPhdrData refactored.
2014-07-06 16:44:56 +02:00
Alexandro Sánchez Bach 08d61163ea Removed external functions from SysCalls.h
* Replace `int` with `s32` as return type for syscalls.
* Renamed `SC_Something.*` files with the proper lv2 name
`sys_something.*`.
* Moving away from the lv2, those functions and folders that doesn't
correspond to lv2 functions. E.g. module functions from sys_io,
sysPrxForUser, cellGcmSys.
* Splitted some files (memory -> memory+mmapper) and merged other ones
(event+event_flag ->event, spu+spu_thread -> spu), according to common
sense, PSDevWiki docs, and checking firmware files.
* Removed external functions from `SysCalls.h`.

NOTE: What should we do about: cellGcmCallback? It's not a lv2 syscall
but it appears on the sc_table and it is actually called in games. Is
this some kind of hack?
2014-07-06 16:23:37 +02:00
B1ackDaemon 7218ccfe66 Merge pull request #394 from raven02/patch-17
RSX blending MRT and cellResc 512MB io address space changes
2014-07-06 03:15:39 +03:00
Alexandro Sánchez Bach 98787ddb3b Merge pull request #395 from Nekotekina/master
SPU Decrementer, cellSSPlayer functions
2014-07-05 22:29:56 +02:00
Nekotekina b0ce69f1e1 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-05 23:24:54 +04:00
Nekotekina 60f3ed3543 SSPlayer funcs in libmixer 2014-07-05 23:24:14 +04:00
Nekotekina d16953d392 SPU Decrementer 2014-07-05 23:23:34 +04:00
raven02 9ede2d6753 RSX blending MRT and cellResc 512MB io address space changes 2014-07-06 01:33:04 +08:00
B1ackDaemon c4360ee834 Merge pull request #393 from raven02/patch-16
RSX : comment out code for NV4097_SET_SCULL_CONTROL and add LOG_WARNING
2014-07-05 01:13:28 +03:00
raven02 1fc3654ca4 Comment style change 2014-07-05 04:07:15 +08:00
raven02 6a6fbea5ee RSX : comment out code for NV4097_SET_SCULL_CONTROL and add LOG_WARNING 2014-07-05 04:01:49 +08:00
Peter Tissen 061fe50835 don't prompt for xcopy
don't ask whether to override files when copying them for packaging
2014-07-04 13:13:47 +02:00
Peter Tissen c5e780ffb2 Merge pull request #392 from Bigpet/master
make package script runnable locally
2014-07-04 12:19:01 +02:00
Peter Tissen ba29a19e82 make script runnable locally 2014-07-04 12:15:43 +02:00
Peter Tissen d84c619882 Merge pull request #391 from Bigpet/master
add files to allow for packaging  on teamcity
2014-07-04 10:32:02 +02:00
Peter Tissen 69c9d95f10 add files to allow for packaging on teamcity 2014-07-04 10:29:31 +02:00
Alexandro Sánchez Bach 072dfc600c Merge pull request #390 from Nekotekina/master
cellMsgDialog functions improved
2014-07-04 01:24:14 +02:00
B1ackDaemon f3cbdcd59d Merge pull request #388 from raven02/patch-13
RSX: sanity check m_alpha_func
2014-07-04 02:07:11 +03:00
B1ackDaemon e22e9993d7 Merge pull request #389 from raven02/patch-14
cellResc : SetVBlankHandler() & SetFlipHandler()
2014-07-04 02:06:55 +03:00
Nekotekina abbbaa222b cellMsgDialog functions improved
Callback can return result now
2014-07-04 02:52:43 +04:00
raven02 feb241439e Few changes and comment 2014-07-04 06:19:23 +08:00
raven02 4d57af9ed2 cellResc : SetVBlankHandler() & SetFlipHandler() 2014-07-04 03:10:30 +08:00
raven02 8b9a454e2f Sanity check m_alpha_func 2014-07-03 13:29:54 +08:00
Alexandro Sánchez Bach e29a1ddef7 Merge pull request #386 from raven02/patch-11
Obsolete option "480p downscale" and make it auto rescale whenever appro...
2014-07-02 19:20:09 +02:00
raven02 b7be0dc633 Obsolete option "480p downscale" and make it auto rescale whenever approriate 2014-07-03 00:48:44 +08:00
Alexandro Sánchez Bach cb61112490 Merge pull request #385 from raven02/patch-10
RSX : check packed before memcpy when writing color/depth buffers
2014-07-02 10:42:53 +02:00
raven02 82a28d3365 RSX : check packed before memcpy when writing color/depth buffers 2014-07-02 16:30:56 +08:00
B1ackDaemon 6d870cb558 Merge pull request #383 from raven02/patch-9
Indentation fix
2014-07-02 01:58:50 +03:00
Alexandro Sánchez Bach 3d4be9aee3 Merge pull request #384 from raven02/skippamf
Obsolete skipPamf option
2014-07-01 23:19:13 +02:00
raven02 3019122685 Obsolete skipPamf option 2014-07-02 04:42:53 +08:00
raven02 1eb66198c0 Indentation fix 2014-07-02 04:29:16 +08:00
B1ackDaemon fd56797b77 Merge pull request #381 from Nekotekina/master
Nekotekina's stuff
2014-07-01 22:06:52 +03:00
Nekotekina 77458e5795 Compilation fix 6 2014-07-01 22:42:05 +04:00
Nekotekina fdc8479635 Compilation fix 5 2014-07-01 22:06:15 +04:00
Nekotekina 7f5f67163b Compilation fix 4 2014-07-01 21:50:57 +04:00
Nekotekina 8736a14599 Compilation fix 3 2014-07-01 21:39:03 +04:00
Alexandro Sánchez Bach 97e31c8873 Merge pull request #382 from raven02/patch-8
Implement Polygon Stipple
2014-07-01 18:27:55 +02:00
raven02 7aefdd3e1f Implement Polygon Stipple 2014-07-02 00:09:24 +08:00
Nekotekina 5f6a236550 Compilation fix 2 2014-07-01 20:04:58 +04:00
Nekotekina 2eeab1feb0 Compilation fix 2014-07-01 19:34:25 +04:00
Nekotekina f3b61f58ef Fixed conflicts 2014-07-01 17:29:47 +04:00
Nekotekina 2d1409c706 FileExists() fixed 2014-07-01 16:21:55 +04:00
B1ackDaemon f0468a145f Merge pull request #380 from raven02/patch-6
cellResc : few more stuff init and cleanup
2014-07-01 05:51:12 +03:00
raven02 a7bac1f084 cellResc : few more stuff init and cleanup 2014-07-01 10:20:30 +08:00
B1ackDaemon 2037068428 Merge pull request #379 from raven02/patch-7
Cross-check and validate all NV0406E/4097/3089/3062/308A functions with ...
2014-07-01 03:31:35 +03:00
raven02 8d1d227dac Cross-check and validate all NV0406E/4097/3089/3062/308A functions with gcm_method.h 2014-07-01 07:57:49 +08:00
Nekotekina 017e44cf4d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-07-01 02:54:36 +04:00
Nekotekina 06868cb694 cellGameDataCheckCreate2 implemented 2014-07-01 02:53:29 +04:00
B1ackDaemon 0a4cffd759 Merge pull request #378 from raven02/patch-5
Implement cellRescCreateInterlaceTable()
2014-06-30 06:45:58 +03:00
raven02 0f1606fbd3 Build fix 2014-06-30 10:38:24 +08:00
raven02 347f6f20b7 Implement cellRescCreateInterlaceTable() 2014-06-30 06:11:00 +08:00
Nekotekina cf98ddf979 Small fixes 2014-06-30 01:08:56 +04:00
Alexandro Sánchez Bach 42424618af Merge pull request #377 from raven02/patch-4
cellResc : InitMembers , InitSurfaces and few stuffs for InitRSXContext
2014-06-29 21:32:28 +02:00
raven02 26c77fbaa0 cellResc : InitMembers , InitSurfaces and few stuffs for InitRSXContext 2014-06-30 03:15:37 +08:00
Nekotekina 6f1efc851f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-29 07:22:39 +04:00
Nekotekina 8987350b5b Small changes 2 2014-06-29 07:21:57 +04:00
Alexandro Sánchez Bach 0c53c00325 Merge pull request #373 from raven02/remove
Remove obsolete option "Hide Debug Console"
2014-06-28 18:00:47 +02:00
raven02 fb8ced95b0 Remove obsolete option "Hide Debug Console" and move skipPamf to HLE section 2014-06-28 23:58:20 +08:00
Alexandro Sánchez Bach 57a288a242 Merge pull request #376 from raven02/patch-3
Fix texture MAG filter and add max anisotropy
2014-06-28 16:51:43 +02:00
raven02 382af8437c Fix texture MAG filter and add max anisotropy 2014-06-28 21:12:14 +08:00
Nekotekina b11e086589 Small changes 2014-06-28 05:19:44 +04:00
B1ackDaemon 2d862da540 Merge pull request #375 from raven02/patch-2
Fix CELL_GCM_TEXTURE_DEPTH24_D8 and detail trace for GLTexture::Init()
2014-06-28 03:03:51 +03:00
raven02 a1db96d70d Fix CELL_GCM_TEXTURE_DEPTH24_D8 and detail trace for GLTexture::Init() 2014-06-28 07:30:12 +08:00
Nekotekina a4308b96f6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-27 20:05:17 +04:00
Alexandro Sánchez Bach f8a0225b33 Merge pull request #372 from Bigpet/logsimpler
Don't use two sets of logging functions
2014-06-27 17:22:15 +02:00
Peter Tissen 95f1a0e645 use only one set of logging macros instead of two and don't use free() as a function name 2014-06-27 15:28:17 +02:00
Nekotekina e6a4ef9eb8 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-27 17:03:28 +04:00
Nekotekina 5ef3b80596 cellSysutilBgmPlayback fix 2014-06-27 15:11:56 +04:00
Alexandro Sánchez Bach afad6daa7d Merge pull request #371 from Bigpet/newlogtemp
Logging system rework
2014-06-27 12:09:44 +02:00
Peter Tissen ae472e9e67 use a more compact method to add and remove listeners t o all channels 2014-06-27 09:22:00 +02:00
Peter Tissen 1ad4380fab rename conlog gui file and set the logbuffer-consumed flag sooner 2014-06-27 06:01:40 +02:00
Peter Tissen 21da317453 Logging system rework
* use one central unified log with channels/priorities ad-hoc listener registration and de-registration
* disable buffering by default
* add multi-threaded ringbuffer implementation
* use buffered listener for the gui (using the ringbuffer)
2014-06-26 17:34:28 +02:00
Nekotekina 458322e548 SC_Event_flag: test passed 2014-06-26 18:17:07 +04:00
B1ackDaemon 394b698e92 Merge pull request #370 from Nekotekina/master
Fixed some samples freeze
2014-06-26 01:37:21 +03:00
Nekotekina eca7339a67 Some freezing fixed 2014-06-26 01:59:23 +04:00
B1ackDaemon 4cbbbec8b3 Merge pull request #369 from raven02/patch-8
Log error when flag 0x3c/0x3d EDAT files detected
2014-06-25 22:07:41 +03:00
raven02 0ed518a85d Add EDAT_FLAG_0x3C/0x3D 2014-06-26 00:11:10 +08:00
raven02 eb7128bcc1 Log error when flag 0x3c/0x3d EDAT files detected 2014-06-26 00:10:17 +08:00
Nekotekina 2200e6f4d9 Small fixes 2014-06-25 02:16:44 +04:00
B1ackDaemon 336442eeba Merge pull request #368 from raven02/patch-7
Gameviewer : fix wrong category
2014-06-24 19:23:27 +03:00
raven02 6f3b3f11c8 Gameviewer : fix wrong category 2014-06-24 23:03:27 +08:00
Alexandro Sánchez Bach eb3e18ac7e Added some lv2 syscalls for sys_prx 2014-06-23 19:41:22 +02:00
B1ackDaemon d0fd6eedf6 Merge pull request #366 from raven02/patch-6
RSX: Use blit for MRT as well
2014-06-23 20:05:40 +03:00
raven02 677bc4c553 RSX: Use blit for MRT as well 2014-06-24 00:42:57 +08:00
Hykem 2e668cd2b6 Merge pull request #364 from raven02/patch-5
RSX : delete PBOs when exit thread
2014-06-23 03:41:26 +01:00
Hykem 35b57fc78e Merge pull request #365 from Nekotekina/master
Work on RawSPU: interrupt mailbox
2014-06-23 03:41:11 +01:00
Nekotekina f9c592098f Work on RawSPU: interrupt mailbox
Achievement unlocked: run spu_test!
2014-06-23 05:03:16 +04:00
raven02 fe74f97d44 RSX : delete PBO when exit thread 2014-06-23 03:45:32 +08:00
B1ackDaemon 77e11d670a Merge pull request #361 from raven02/patch-4
RSX: asynchronous glReadPixels with PBO for writing color/depth buffers
2014-06-22 19:27:59 +03:00
Alexandro Sánchez Bach 5a1d702e3d Merge pull request #362 from Nekotekina/master
rCriticalSection & rSemaphore removed
2014-06-22 13:23:37 +02:00
Nekotekina 30b8e51234 rCriticalSection & rSemaphore removed
SC_Semaphore errors fixed
Room for interrupt threads
2014-06-22 14:59:28 +04:00
raven02 a99061127f RSX: asynchronous glReadPixels with PBO for writing color/depth buffers 2014-06-22 18:44:22 +08:00
B1ackDaemon 69cb8349e6 Merge pull request #360 from raven02/patch-3
Paritally revert #359
2014-06-22 02:04:18 +03:00
raven02 f5813bf2cd Paritally revert #359 2014-06-22 06:55:02 +08:00
B1ackDaemon 6bf4695721 Merge pull request #359 from raven02/patch-2
FP: flush m_code_level & check emptyness of m_end_offsets
2014-06-22 00:41:51 +03:00
raven02 2f2a0c8fbc FP: flush m_code_level & check emptyness of m_end_offsets 2014-06-22 05:23:24 +08:00
B1ackDaemon 5912953152 Merge pull request #357 from Nekotekina/master
SC_Semaphore improved and detached from (r)wxSemaphore
2014-06-21 21:57:05 +03:00
Nekotekina 2fad8039f5 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-21 18:40:35 +04:00
B1ackDaemon b9bfd7af80 Merge pull request #356 from raven02/patch-1
Set rendering width/height to buffer width/height
2014-06-21 17:27:54 +03:00
Nekotekina 54cdc41ac8 Small workaround 2014-06-21 18:26:37 +04:00
Nekotekina 5da33c6243 SC_Semaphore rewritten 2014-06-21 18:24:27 +04:00
raven02 4e55e6abbd Set rendering width/height to buffer width/height 2014-06-21 18:04:59 +08:00
B1ackDaemon 283c1f64e7 Merge pull request #354 from raven02/patch-34
RSX: matrix offset fix and use original buffer width/height for writing color/depth
2014-06-21 07:58:11 +03:00
raven02 c3960b7f43 Misc thread started/ended/aborted aligment 2014-06-21 12:29:17 +08:00
raven02 12f217aba9 RSX: matrix offset fix and use original buffer width for writing color/depth 2014-06-21 12:02:11 +08:00
B1ackDaemon dc8b0b09c6 Merge pull request #353 from Nekotekina/master
Tried to replace semaphore
2014-06-21 01:03:46 +03:00
Nekotekina e79236a97f SQueue little improvement 2014-06-20 23:57:28 +04:00
Nekotekina 1c4ae999d6 SSemaphore basic implementation
Set for RSX
2014-06-20 23:56:19 +04:00
Nekotekina 7fca980887 sys_ppu_thread_create threadname workaround 2014-06-20 23:54:04 +04:00
B1ackDaemon 52eaf10d93 Merge pull request #352 from raven02/patch-33
Downscale small bug fix
2014-06-20 22:04:09 +03:00
raven02 fda97f25a0 Downscale small bug fix 2014-06-21 02:25:32 +08:00
Hykem 9048bab305 Merge pull request #350 from Nekotekina/master
Some crash avoidance
2014-06-20 14:47:59 +01:00
Hykem 6e3289f392 Merge pull request #351 from raven02/patch-32
Option allow downscaling 720p/1080p to 480p
2014-06-20 14:47:49 +01:00
Nekotekina 568e99d4d3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-20 17:13:51 +04:00
Nekotekina 90b9861043 SMutex partially replaced with std::mutex
SPURecompiler.h: SETcc bug fixed
2014-06-20 15:00:36 +04:00
raven02 efffc7e6bc Option allow downscaling 720p/1080p to 480p 2014-06-20 17:49:22 +08:00
Nekotekina 237e7989b4 Tried to avoid glDeleteShader crash 2014-06-20 00:34:09 +04:00
Alexandro Sánchez Bach f131f134a5 Minor changes
* Removed old lv2Process* functions
* Function name is displayed again in unimplemented syscalls
* Minor changes that won't affect the emulator.
2014-06-19 20:15:53 +02:00
Nekotekina ccfaabd1d7 Defined thread_local for MSVC
Updated asmjit project
Tried to fix crash on exit
Fixed hypothetical issue when pausing already stopped emulator
2014-06-19 17:50:18 +04:00
B1ackDaemon bf6507e9be Merge pull request #348 from raven02/patch-31
Fix 1024x768 resolution not being saved
2014-06-19 00:39:04 +03:00
raven02 07006fd093 Add comment 2014-06-19 05:20:27 +08:00
raven02 4f4ab4c81a Fix 1024x768 resolution not being saved 2014-06-19 05:02:04 +08:00
B1ackDaemon 4930d8785b Merge pull request #346 from raven02/patch-29
Remove glDetachShader for vp and fp
2014-06-17 19:52:41 +03:00
raven02 79d34afb96 Remove glDetachShader for vp and fp 2014-06-18 00:21:40 +08:00
B1ackDaemon ba08d25517 Merge pull request #345 from raven02/patch-28
Drop off  scissor test enable on OnInitThread()
2014-06-16 07:35:56 +03:00
raven02 0541482ee4 Drop off glEnable(GL_SCISSOR_TEST) 2014-06-16 06:32:11 +08:00
B1ackDaemon 95cc6fb3bc Merge pull request #342 from raven02/patch-28
Paritally fix depth read elf
2014-06-15 22:22:20 +03:00
raven02 ee58ba9fd9 Paritally fix depth read elf 2014-06-16 03:05:28 +08:00
Alexandro Sánchez Bach a6bca0ecc5 Merge pull request #340 from raven02/patch-26
RSX: set default m_line_stipple_pattern as 0xffff
2014-06-15 12:27:37 +02:00
raven02 64044173c6 set default m_line_stipple_pattern as 0xffff 2014-06-15 12:25:09 +08:00
B1ackDaemon aafa3351da Merge pull request #339 from raven02/patch-25
RSX : implement line stipple [NV4097_SET_LINE_STIPPLE/PATTERN]
2014-06-15 01:06:34 +03:00
raven02 76c8eedb25 RSX : implement line stipple 2014-06-15 05:53:26 +08:00
Alexandro Sánchez Bach a4c5c4d5f9 Merge pull request #338 from raven02/patch-24
RSX: fix line width
2014-06-14 20:31:16 +02:00
raven02 44dd770cec RSX: fix line width 2014-06-15 02:29:27 +08:00
B1ackDaemon aaf60a1869 Merge pull request #337 from raven02/patch-23
Regression fix : restore point size functionality
2014-06-14 20:18:36 +03:00
raven02 5007d62e27 Regresion fix : restore point size functionality 2014-06-15 00:59:16 +08:00
B1ackDaemon f7c0c6fd34 Merge pull request #336 from raven02/patch-22
Gameviewer : name category HG as HDD game and DG as Disc game
2014-06-14 16:40:06 +03:00
raven02 f471857a25 Gameviewer : name category HG as HDD game and DG as Disc game 2014-06-14 14:16:23 +08:00
B1ackDaemon 49c9e0f3e2 Merge pull request #335 from raven02/patch-21
Fix line width conversion and comment out point size which already done ...
2014-06-14 00:11:34 +03:00
raven02 bf456d5d16 Build fix 2014-06-14 04:44:53 +08:00
raven02 469faf43aa Fix line width conversion and comment out point size which already done in vertex shader 2014-06-14 04:14:04 +08:00
B1ackDaemon c5a244c669 Merge pull request #334 from raven02/patch-20
Fix point size/line_width/poly_offset
2014-06-12 21:35:55 +03:00
raven02 8112440a27 Fix point size/line_width/poly_offset_scale_factor/bias 2014-06-13 02:18:12 +08:00
B1ackDaemon ada0b31295 Merge pull request #332 from raven02/patch-18
Fix vertex program decompile function
2014-06-12 17:27:23 +03:00
B1ackDaemon 49e2d0528c Merge pull request #333 from raven02/patch-19
Gameviewer : read PARAM.SFO for blu-ray disc copy
2014-06-12 17:27:06 +03:00
raven02 9b951d5d3f Gameviewer : read PARAM.SFO for blue-ray disc 2014-06-12 09:27:27 +08:00
raven02 70f6871363 Fix vertex program decompile function 2014-06-12 04:22:32 +08:00
B1ackDaemon 52a1860f0a Merge pull request #327 from raven02/patch-17
cellSysUtil : stub remaining BGM playback functions
2014-06-09 20:01:12 +03:00
raven02 a28ad25221 cellSysUtil : stub remaining BGM playback functions 2014-06-10 00:28:52 +08:00
B1ackDaemon c9dec7b118 Merge pull request #326 from Nekotekina/master
cellSysmoduleLoadModule modified
2014-06-09 17:42:58 +03:00
Nekotekina 4fedf5749e cellSysmoduleLoadModule modified
cellSysutilEnableBgmPlayback draft
cellSurMixerGetCurrentBlockTag
cellSurMixerGetTimestamp
Interval.h draft
2014-06-09 17:35:35 +04:00
Bigpet 0d42fcf536 Merge pull request #325 from Bigpet/master
add dependency on asmjit to rpcs3 project
2014-06-09 05:39:12 +02:00
Peter Tissen 779117d129 fix machine specific path, sorry about that one 2014-06-09 05:37:12 +02:00
Peter Tissen 2382f3b69e add dependency on asmjit to rpcs3 project, might fix the buildbot 2014-06-09 03:36:26 +02:00
Alexandro Sánchez Bach e050b7fd1e Merge pull request #324 from Bigpet/splitfixups
remove unexplained commented out code that I added myself with the last PR
2014-06-09 03:08:22 +02:00
Peter Tissen e85abdeb2c remove unexplained commented out code that I added myself with the last PR
* remove unexplained commented out code that I added myself
* revert asmjit settings change that was meant to only be local for me
2014-06-09 02:55:16 +02:00
Hykem bd6837f2f9 Merge pull request #216 from UnconventionalT/binary-dir-fix
Set build independent binary output dir
2014-06-09 01:36:15 +01:00
Hykem 93481fe27d Merge pull request #239 from Bigpet/splitproj
Split gui and emulation core into seperate projects
2014-06-09 01:22:04 +01:00
Peter Tissen 33d82e0d6e reset debug output directory 2014-06-08 23:23:36 +02:00
Peter Tissen ed10ea7544 add back fused gui log classes, this needs to be redone another way
also, add back wx requirement for strfmt
2014-06-08 23:16:08 +02:00
Peter Tissen 10e10de98d add xinput pad handler to the windows emucore 2014-06-08 23:16:07 +02:00
Peter Tissen 314307b840 Fix building with precompiled headers
add the unimplemented modules to the emucore project

fix a bug in the rXml wrapper that didn't consider the possiblity of functions returning null pointers
2014-06-08 23:16:06 +02:00
Peter Tissen c37905e465 initial start to eliminate static func init, not compilable atm
move module initialization into a module manager, still has some issues like stopping not working and debug crashing

add #idef 0 to modules that aren't in the windows project

don't double initialize and don't de-initialize for now, since many modules don't expect it and it leads to many errors

remove duplicate module lists for empty modules and implemented ones, make Module non-copyable but movable

add secondary project, no real use for it now

add some memleak config to the emucore and add asmjit path to rpcs3

small rebase error fixed to get it to compile again

add filters for emucore

re-add the module manager and static file

WIP commit, linker errors abound

some more abstraction layer stuff

fix the remaining linker errors, re-enable platform specific mouse, pad and keyboard handlers

rebasing

fix memset undefined and re() usage of se_t before declaration

Add wxGUI define by default for cmake builds

fix copy constructors of Datetime header

fix copy constructors of other wx interface classes

remove static declarations of global variables

make wxGLCanvas constructor non-ambiguous even with wx2.8. compat mode, fix wrong std::exception constructor calls

remove duplicate definition for FromUTF8 and ToUTF8

temp changes
2014-06-08 23:16:06 +02:00
B1ackDaemon c4e3ec825e Merge pull request #322 from raven02/patch-16
cellSpurs : create new taskset using attr
2014-06-08 19:36:58 +03:00
raven02 f051011fd1 cellSpurs: create new taskset using attr 2014-06-08 23:29:16 +08:00
Alexandro Sánchez Bach d6f71ee2b3 Merge pull request #323 from Bigpet/master
enable full precompiled headers for non-Windows Platforms
2014-06-08 17:26:01 +02:00
Peter Tissen 4d84507c96 try include guards to circumvent a weird error with gcc and unity builds 2014-06-08 16:58:40 +02:00
DH 3c8815cc06 Improved Vertex Shader Decompiler
- Fixed condition register selection
- Implemented LIT
- Fixed RCP
2014-06-08 17:52:35 +03:00
Peter Tissen 982ea35d44 enable full precompiled headers for non-Windows Platforms for now to make people not guess all the time what to include 2014-06-08 16:43:53 +02:00
DH 7bb966ba82 Improved PPU Interpreter
- Fixed UpdateCR0
- Fixed XER.CA updating
2014-06-08 08:27:57 +03:00
DH 03d2798dba Fragment Shader Decompiler: fixed condition registers. 2014-06-07 19:20:39 +03:00
DH e0046671f1 Improved Fragment Shader Decompiler
- Fixed KIL
- Added all regs to reg_table
2014-06-07 18:52:25 +03:00
DH afcbeb3713 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-06-07 18:32:42 +03:00
DH 1b1ce85b32 Fixed small error in Fragment Shader Decompiler 2014-06-07 18:32:15 +03:00
Alexandro Sánchez Bach 125b71d2c5 Reverted remaining .ToBE() deletions & small fix
And fixed wrong comparison on: `_cellSpursEventFlagInitialize`.
2014-06-07 17:18:40 +02:00
DH a4740d5f09 Improved unknown HLE functions logging
Fixed Fragment Shader Decompiler
2014-06-07 18:08:14 +03:00
DH f8e8e2f624 Improved Fragment Shader Decompiler
- Implemented LIT, RFL, LIF, BRK, IF, LOOP, REP
- Fixed KIL, RCP, RSQ, DP2A

Implemented fmt::replace_first & fmt::replace_all
2014-06-07 17:15:49 +03:00
Alexandro Sánchez Bach 30a1516d19 Merge pull request #318 from raven02/patch-14
Centre the game list panel
2014-06-07 15:40:34 +02:00
Alexandro Sánchez Bach 4f5f600ef6 Merge pull request #319 from raven02/patch-15
cellSpurs : initialize eventFlag
2014-06-07 15:23:12 +02:00
raven02 7855ebcd9f cellSpurs : initialize eventFlag 2014-06-07 20:31:07 +08:00
raven02 219e048922 Centre the game list panel 2014-06-07 16:08:02 +08:00
Alexandro Sánchez Bach 5ed77a3ca9 Reverted BE <-> LE comp. changes in some lv2 SCs 2014-06-07 09:08:16 +02:00
Alexandro Sánchez Bach 2534216971 Improvements in SC_Process and other lv2 syscalls
* Splitted the file in SC_Process.h and SC_Process.cpp.
* Some argument data types modified on sys_process_* functions.
* Implemented sys_process_get_number_of_object and sys_process_get_id.
* Added dummy versions of other sys_process_* functions based on the old
SysCalls::lv2Process* code (which I deleted).
* Improved BE <-> LE comparisons on SC_Mutex, SC_Lwmutex and SC_Lwcond.
* Updated some SC_Memory functions to use mem_ptr_t<T>.

NOTE: There are probably better ways to get the active objects that
don't imply creating a new data type filled with std::set<u32>'s.

TODO: For some types, the corresponding std::set<u32> isn't being
updated when an object is created/destroyed. I'll take care of this
soon.
2014-06-07 08:34:36 +02:00
Alexandro Sánchez Bach 5e00dfb5c3 GcmZcullInfo::Pack and removed 32-bit OAL dll 2014-06-07 04:22:29 +02:00
Alexandro Sánchez Bach 4ac8061240 Merge pull request #315 from Bigpet/simplestdafx
Reduce stdafx.h under Linux for better build-times
2014-06-06 04:17:15 +02:00
Peter Tissen 8da681eab2 enable cotire for better build-times 2014-06-06 03:33:24 +02:00
Peter Tissen 40add8f9a2 Seperate ConLog.h and ConLogFrame.h (for now only seperate headers)
make precompiled header slimmer under Linux to increase CI and dev-machine build-times

make sure unused modules don't compile
add unused modules to the VS project to easier keep track of them
2014-06-06 02:50:22 +02:00
B1ackDaemon 283f290f47 Merge pull request #314 from raven02/patch-11
cellGcmSys: fill out some stuffs for zCulling
2014-06-05 23:19:45 +03:00
Oil 268e2eee4c Changed default LogFrame position. 2014-06-05 22:17:53 +04:00
Alexandro Sánchez Bach 4f36ecc681 Merge pull request #312 from raven02/patch-10
cellResc : add those unimplemented and error logging
2014-06-05 19:56:41 +02:00
raven02 b9a055f1c8 cellGcmSys: fill out some stuffs for zCulling 2014-06-06 01:50:48 +08:00
raven02 26fc29c1a9 cellResc : add those unimplemented and error logging 2014-06-06 00:19:23 +08:00
Oil 49295f8eff Fixed a scrollbar issue. 2014-06-05 19:21:06 +04:00
Oil b6ac09aa1a Improved LogFrame. 2014-06-05 18:08:44 +04:00
Alexandro Sánchez Bach af219bb415 cellGcmSys: Report retrieval functions 2014-06-05 00:04:11 +02:00
Alexandro Sánchez Bach 53b650e88f Merge pull request #311 from raven02/patch-9
cellGcmSys : add those unimplemented and error logging
2014-06-04 23:01:30 +02:00
raven02 44d762fc60 cellGcmSys : add those unimplemented and error logging 2014-06-05 04:51:17 +08:00
Alexandro Sánchez Bach a61c4f6bb0 Merge pull request #310 from raven02/patch-8
enum for vertex data type/antialias & cellSpurs error code fixes
2014-06-04 21:57:17 +02:00
raven02 1827b91882 Check 8-byte and 128-byte alignment for spurs 2014-06-05 02:52:30 +08:00
raven02 7c137cc482 Build fix 2014-06-05 00:53:37 +08:00
raven02 c7b26f1372 cellSpurs task error code fixes and plus bunch of new functions add 2014-06-05 00:03:31 +08:00
raven02 ba91345984 enum for vertex data type 2014-06-04 23:59:46 +08:00
Alexandro Sánchez Bach 585ac5a748 Fixed cellSaveDataAutoLoad2
Probably that's closer to what a real PS3 does. Anyway, tests are
required to be sure about that.

Issue #304 fixed.
2014-06-03 22:42:15 +02:00
B1ackDaemon 77f818fa23 Merge pull request #309 from raven02/patch-7
Fix opcodes STR/SFL for both VP and FP
2014-06-03 23:08:44 +03:00
raven02 1a37723a05 Add missing case 0x0d 2014-06-04 03:02:12 +08:00
raven02 59628960b6 Fix opcodes STR/SFL for both VP and FP 2014-06-04 02:53:06 +08:00
B1ackDaemon 650c5155df Merge pull request #303 from raven02/patch-4
Set default log level to Error
2014-06-03 16:13:52 +03:00
B1ackDaemon 4faa4d6ed9 Merge pull request #307 from raven02/patch-5
RSX: Reorganize and group revelant NV4097 functions
2014-06-03 16:13:36 +03:00
Alexandro Sánchez Bach 664d2502ca Merge pull request #308 from raven02/patch-6
Speedup write color buffers
2014-06-03 14:11:38 +02:00
raven02 8bb5da3b06 Speedup write color buffers 2014-06-03 18:32:27 +08:00
Alexandro Sánchez Bach a382b81d56 Merge pull request #305 from DHrpcs3/remove-32bit
Remove 32-bit configuration from the project
2014-06-03 00:24:33 +02:00
raven02 aac846ff74 Add NV4097_SET_FLIP
It is custom naming
2014-06-03 06:18:33 +08:00
raven02 c4075f1592 RSX: Reorganize and group revelant NV4097 functions 2014-06-03 06:17:33 +08:00
Peter Tissen e8efb8f9fb move inline definitions in header, wtf am I doing, Travis pls. 2014-06-02 22:00:05 +02:00
Peter Tissen 1bb140780b include cstdint type
add mulh like function for gcc

avoid multiple definitions of msvc intrinsic replacements
2014-06-02 21:12:35 +02:00
Peter Tissen 96e229abfa add primitive InterlockedOr64 implementation
use non msvc specific type for int64_t

add umul for gcc
2014-06-02 19:29:22 +02:00
Alexandro Sánchez Bach b05bd51216 Fixed GameViewer issue
Double-clicking an entry in the sorted list caused the corresponding
element of the unsorted list to be run. This is now fixed.
2014-06-02 16:59:50 +02:00
Alexandro Sánchez Bach 82c6d8d68b Removed 32-bit related #if(n)def's 2014-06-02 14:08:32 +02:00
Alexandro Sánchez Bach 111da4d0fd Removed 32-bit config. from .SLN and CMakeLists 2014-06-02 13:59:45 +02:00
Alexandro Sánchez Bach ab65b38d9a Merge pull request #301 from raven02/patch-2
Stub bunch of cellSpurs functions & error log null pointer
2014-06-02 10:36:28 +02:00
raven02 f7d21596a5 Set default log level to Error 2014-06-02 16:34:31 +08:00
raven02 54ede6c4e3 Fix wrong identation 2014-06-02 16:09:36 +08:00
raven02 c4522922f2 Silly typo fix 2014-06-02 15:57:34 +08:00
Alexandro Sánchez Bach a09984d210 Merge pull request #302 from raven02/patch-3
Fix 'always start after boot' not saving
2014-06-02 09:50:42 +02:00
raven02 96bcfdac7e Fix 'always start after boot' not saving 2014-06-02 15:18:01 +08:00
raven02 05d80e4994 EventFlag_add should be always present and checked 2014-06-02 14:53:13 +08:00
raven02 5597f95aba Log as error for null pointer 2014-06-02 13:42:30 +08:00
raven02 3662c4e9bf Stub cellSpurs functions 2014-06-02 12:14:00 +08:00
Alexandro Sánchez Bach cb3622176a Merge pull request #300 from Bigpet/iniReplace
use non wxIni implementation
2014-06-02 00:02:53 +02:00
Peter Tissen c216c0f2e8 revert argument order again, doesn't really need to be reversed, will just cause confusion 2014-06-01 23:07:35 +02:00
Peter Tissen 2d77415cc3 use non-wx header only Ini library in preparation of the core/gui devide 2014-06-01 22:57:50 +02:00
Alexandro Sánchez Bach a9768739eb Merge pull request #298 from Bigpet/twophasefix
help out compilers that use two phase lookup as dictated by the standard
2014-06-01 21:56:49 +02:00
Bigpet 924f117ba0 help out compilers that use two phase lookup as dictated by the standard 2014-06-01 21:28:29 +02:00
Alexandro Sánchez Bach fe0e34cbe1 Merge pull request #290 from Blaypeg/master
Add options for autoboot
2014-06-01 21:03:01 +02:00
Blaypeg dab71d01c1 Add Remove Game option to Gameviewer
Can right click game to remove from list and installation
2014-06-01 19:36:08 +01:00
B1ackDaemon c6c87b66f9 Merge pull request #297 from raven02/patch-1
Change to Error logging for null cmd
2014-06-01 21:34:50 +03:00
raven02 16d909834f Change to Error logging for null cmd 2014-06-02 02:32:00 +08:00
B1ackDaemon c231bec736 Merge pull request #296 from raven02/master
Add /dev_flash and sub-directories
2014-06-01 16:16:18 +03:00
B1ackDaemon fea95d264f Merge pull request #295 from raven02/patch-32
Fragment decompiler changes to async mode
2014-06-01 16:16:08 +03:00
Blaypeg 934856c350 Moved autostart to HLE Section 2014-06-01 14:10:26 +01:00
DH c00f4b6022 Improved mem_ptr_t.
Implemented mem_func_ptr_t.
2014-06-01 12:38:37 +03:00
raven02 d7d4cd4434 Add /dev_flash and sub-directories 2014-06-01 16:21:14 +08:00
raven02 ceeff8ae81 Fragment decompiler change to async mode 2014-06-01 14:54:56 +08:00
B1ackDaemon da2c5bbda0 Merge pull request #294 from raven02/patch-31
Opcode : Add DP2A and temporarily disable KIL instruction
2014-06-01 04:52:57 +03:00
raven02 1bff3ad6ff Opcodo : Add DP2A and temporarily disable KIL 2014-06-01 07:12:31 +08:00
Alexandro Sánchez Bach c01b5fb0db Added cellSaveDataAuto* functions
Implemented:
- cellSaveDataAutoSave2
- cellSaveDataAutoLoad2
2014-05-31 23:41:12 +02:00
Alexandro Sánchez Bach 1efa137f8f Merge pull request #291 from O1L/master
Fixed issue #276.
2014-05-31 18:03:11 +02:00
Oil 1705c5afb6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-05-31 19:19:54 +04:00
Hykem d300a50630 Merge pull request #278 from Dante38490/master
Correct name soft_oal.dll and fix sln
2014-05-31 16:12:56 +01:00
Hykem ecd87aa2b5 Merge pull request #279 from Dante38490/patch-1
Update README.md
2014-05-31 16:12:29 +01:00
Hykem 1affafe5ea Merge pull request #277 from aniruddh22/patch-1
Add 1024x768 native resolution support
2014-05-31 16:11:15 +01:00
Oil 14fae9a401 Add a option for converting audio to 16 bit. Issue #276 fixed with using this option? 2014-05-31 18:21:47 +04:00
Blaypeg 0d3b8c0808 Add Menu and INI option to autostart emulation 2014-05-31 11:40:37 +01:00
Alexandro Sánchez Bach 834f5dc9a9 Merge pull request #288 from raven02/patch-29
Implement cellSpursAttributeSetMemoryContainerForSpuThread
2014-05-31 10:53:39 +02:00
Alexandro Sánchez Bach 802a1fee7c Merge pull request #289 from raven02/patch-30
Compact duplicate draw objects routine
2014-05-31 10:52:02 +02:00
raven02 08c7ae64e3 Compact duplicate draw objects routine 2014-05-31 15:48:23 +08:00
raven02 41d0163781 cellSpursAttributeSetMemoryContainerForSpuThread() 2014-05-31 10:31:43 +08:00
Alexandro Sánchez Bach d3cb97d4e9 Merge pull request #287 from raven02/patch-28
Use be_t<u32>/<64> in struct
2014-05-31 01:40:51 +02:00
raven02 97561ff52b Use be_t<u32>/<64> 2014-05-31 06:49:19 +08:00
Alexandro Sánchez Bach a0cc3a0fb0 Merge pull request #286 from Nekotekina/master
Some bugs fixed
2014-05-31 00:20:39 +02:00
B1ackDaemon 46e61efefb Merge pull request #284 from raven02/patch-27
Fix typo for #283
2014-05-30 22:36:00 +03:00
raven02 57d4d72f60 Fix typo for #283 2014-05-31 03:28:16 +08:00
B1ackDaemon f09a358ea5 Merge pull request #283 from raven02/patch-26
Implement cellPngDecCreate/Destroy()
2014-05-30 21:17:33 +03:00
Blaypeg d455c21db5 Merge pull request #2 from DHrpcs3/master
update
2014-05-30 18:56:31 +01:00
raven02 eb61c2a960 Add struct CellPngDecMainHandle 2014-05-31 01:45:45 +08:00
raven02 141d8e20ec Implement cellPngDecCreate/Destroy() 2014-05-31 01:44:38 +08:00
Nekotekina d5d4f88c17 Small RSX fix 2014-05-30 21:16:20 +04:00
B1ackDaemon f545ba08cb Merge pull request #282 from raven02/patch-25
Cleanup and add point size/specular/point sprite
2014-05-30 17:36:39 +03:00
Nekotekina 940d71ecdb Another cellPamf issue fixed
event_flag messages changed
2014-05-30 18:13:49 +04:00
raven02 bb64684be9 Fix spacing 2014-05-30 19:25:48 +08:00
raven02 323a48d14b Cleanup and add point size/point sprite/specular 2014-05-30 19:19:26 +08:00
B1ackDaemon 69ec7a041e Merge pull request #281 from raven02/patch-24
Add few more opcode(STR/SFL) and fix KIL (discard)
2014-05-28 16:00:30 +03:00
raven02 13d68cbeeb Opcode : add STR/SFL and fix KIL (discard) 2014-05-28 11:32:56 +08:00
Alexandro Sánchez Bach c1594255a7 Merge pull request #280 from raven02/patch-23
Opcode: add KIL & LRP
2014-05-28 02:29:13 +02:00
raven02 872cbec8ba Opcode : add KIL & LRP 2014-05-28 08:03:57 +08:00
Dante38490 4f1b7bf69a Update README.md 2014-05-26 14:34:07 +02:00
Zangetsu 3de9202533 Correct name soft_oal.dll and fix sln 2014-05-26 14:30:27 +02:00
aniruddh da77ed1de3 Update sysutil_video.h 2014-05-26 17:31:07 +05:30
Alexandro Sánchez Bach b953e06622 Merge pull request #275 from Blaypeg/master
GUI Update, Game panel column headings now sortable
2014-05-25 23:30:15 +02:00
Blaypeg 42e5000c2d Remove Unused varible 2014-05-25 22:01:00 +01:00
Blaypeg f060f9e047 Set Game List columns as sortable 2014-05-25 21:59:26 +01:00
Blaypeg f1257f9e3f Change types to stop compiler warnings 2014-05-25 21:36:55 +01:00
Alexandro Sánchez Bach 40f0f80f5d Minor changes
Irrelevant modifications. None of this affects RPCS3 directly.
2014-05-25 22:31:40 +02:00
B1ackDaemon 948d4ef3a2 Merge pull request #274 from raven02/patch-22
GLGSRender: re-enable glPrimitiveRestartIndex
2014-05-25 22:39:33 +03:00
B1ackDaemon 5fda90abc6 Merge pull request #273 from raven02/patch-21
RSXDebugger : add scissor test & primitive restart
2014-05-25 22:39:28 +03:00
B1ackDaemon 6b66f77590 Merge pull request #272 from raven02/patch-20
RSXThread: add few more logging and comments
2014-05-25 22:39:22 +03:00
B1ackDaemon ddd485fdad Merge pull request #271 from raven02/patch-19
DbgConsole: hide debug console
2014-05-25 22:39:17 +03:00
B1ackDaemon 9c1ec3569f Merge pull request #268 from O1L/master
Switch to OpenAL Soft.
2014-05-25 22:39:09 +03:00
Blaypeg 95f67080f8 Attempt to make columns sortable for game list 2014-05-25 19:45:44 +01:00
raven02 29d0b1443e Add Primitve restart & scissor test 2014-05-26 01:07:16 +08:00
raven02 fe31f1be61 Re-enable glPrimitiveRestartIndex 2014-05-26 00:50:43 +08:00
raven02 c096bfce7a Add case_16(NV4097_SET_TEXTURE_FORMAT, 0x20) 2014-05-25 22:21:38 +08:00
raven02 5109065425 RSXThread: Add few more logging and comments 2014-05-25 22:08:45 +08:00
Alexandro Sánchez Bach 5d88ca2287 Merge pull request #270 from mputters/xinput
Inverted XInput Y-axis for sticks
2014-05-25 13:01:42 +02:00
raven02 2b8998af91 Hide debug console option 2014-05-25 16:05:21 +08:00
Michael Putters 6780a2f0bf Inverted XInput Y-axis for sticks 2014-05-25 09:34:06 +02:00
Oil 8a1227eaa2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-05-25 01:46:25 +04:00
Oil 6072fd2fbb Switch to OpenAL Soft (see issue #166). Use native FLOAT32 data now. Add small check in OpenALThread. 2014-05-25 01:38:29 +04:00
B1ackDaemon 33584b6668 Merge pull request #267 from mputters/xinput
Basic XInput support
2014-05-24 22:14:41 +03:00
Michael Putters 03914d60d3 Basic XInput support 2014-05-24 21:05:00 +02:00
Hykem 490d1059ac Merge pull request #250 from ItzWarty/cellPngDecDecodeData_optimizations
Optimize cellPngDecDecodeData's CELL_PNGDEC_ARGB case
2014-05-24 17:23:17 +01:00
B1ackDaemon b09560cc1c Merge pull request #266 from raven02/patch-18
Add option to skip PAMF movie
2014-05-24 18:13:53 +03:00
raven02 8a068e7fca Add option to skip PAMF 2014-05-24 21:48:54 +08:00
B1ackDaemon 59f08f9bdd Merge pull request #265 from unknownbrackets/ppu-minor
Fix the DCBZ instruction
2014-05-23 20:32:15 +03:00
Unknown W. Brackets f49d3d6a28 Fix the DCBZ instruction.
Needs to zero memory.
2014-05-23 09:57:13 -07:00
Blaypeg 360070bddb Merge pull request #1 from DHrpcs3/master
test
2014-05-23 17:31:59 +01:00
B1ackDaemon a186efded2 Merge pull request #264 from unknownbrackets/ppu-minor
Clean up LR updates in branches, remove CA update in ADD
2014-05-23 19:24:32 +03:00
Unknown W. Brackets 82d60ee48d Do not set the CA bit in ADD().
Thanks Ashe`.
2014-05-23 09:20:58 -07:00
Unknown W. Brackets 493bf93a5a Update LR only when cond passes.
It should not be updated otherwise.  In most cases, won't matter.

Also, reorder slightly so SetBranch() can safely set PC directly.
2014-05-23 09:20:57 -07:00
B1ackDaemon 0ec78e0d5e Merge pull request #263 from raven02/patch-16
Add 960x540 natvie resolution support
2014-05-23 19:02:40 +03:00
B1ackDaemon 9e4c2c1030 Merge pull request #262 from raven02/patch-15
Replace slow glReadpixels routine with glBlitframebuffer
2014-05-23 19:02:26 +03:00
raven02 6520b8f06d Add 960x540 natvie resolution support 2014-05-23 23:51:55 +08:00
raven02 a2af749e71 Replace slow glReadpixels routine with glBlitframebuffer for non-MRT 2014-05-23 22:22:32 +08:00
B1ackDaemon e2ebb09d6c Merge pull request #259 from raven02/patch-14
Code cleanup and added glPolygonOffset
2014-05-21 20:42:23 +03:00
raven02 94393ff4ea Re-enable glFrontFace with sanity check 2014-05-22 01:08:46 +08:00
raven02 3445f8a49f There is no glEnable(GL_FRONT_FACE) 2014-05-22 00:48:49 +08:00
raven02 b95667563f Code cleanup and added glPolygonOffset 2014-05-22 00:31:40 +08:00
B1ackDaemon e569de73d6 Merge pull request #248 from ItzWarty/master
virtual memory block reads/writes properly fail if address is out of bounds
2014-05-21 18:22:01 +03:00
Alexandro Sánchez Bach 38e0c62e99 Merge pull request #258 from raven02/patch-13
Enable GL_SCISSOR_TEST and add glLogicOp
2014-05-21 15:43:33 +02:00
Oil 60514cc48d Completed. 2014-05-21 17:06:02 +04:00
Oil e3a56e39d7 Restored. 2014-05-21 16:57:57 +04:00
Oil 3475912233 Some changes from previous commit restored. 2014-05-21 16:14:33 +04:00
Oil 570efab05f asmjit project moved in asmjitsrc directory. 2014-05-21 14:45:36 +04:00
raven02 967935d389 Enable GL_SCISSOR_TEST and add glLogicOp 2014-05-21 18:14:51 +08:00
Alexandro Sánchez Bach ec53f2557a Merge pull request #257 from jarveson/cellpad_fixes2
Cellpad fixes
2014-05-21 03:38:27 +02:00
Jake afc5294016 cellPad: Changes to report 0 length if theres no changes 2014-05-20 19:56:36 -05:00
Jake 233b179f65 cellPad: Fix logic error in setPressMode and setSensorMode 2014-05-20 19:54:08 -05:00
Alexandro Sánchez Bach 840e9d8ed8 Merge pull request #255 from raven02/patch-12
Set default polygon_mode as GL_FILL
2014-05-20 21:21:31 +02:00
raven02 e0f89beb7d Set default polygon_mode as GL_FILL 2014-05-21 02:08:49 +08:00
B1ackDaemon 6bb812f283 Merge pull request #254 from raven02/patch-12
Implement NV4097_SET_BACK_POLYGON_MODE
2014-05-20 17:12:02 +03:00
raven02 f67d30571b Add NV4097_SET_BACK_POLYGON_MODE 2014-05-20 22:10:14 +08:00
Alexandro Sánchez Bach 9209edc15c Merge pull request #253 from ItzWarty/memoryviewer_fixes
Improve Memory Viewer: There are bugs in text representation.
2014-05-20 00:29:03 +02:00
Michael Yu 85785b471e MEMORY: Fixed IsMyAddress bound error (GetEndAddr returns an inclusive value) 2014-05-19 14:58:01 -07:00
Michael Yu 4c02c20d84 Improve Memory Viewer: There are bugs in text representation.
Char display now only displays printable ascii characters. Anything non-printable is printed as '.' as is standard.
Additionally, displayed lines are properly delineated with newlines so that we don't wrap on spaces.
2014-05-19 14:56:58 -07:00
Alexandro Sánchez Bach 9ce9c3ce21 Merge pull request #252 from raven02/patch-11
Regression fix cellPamf
2014-05-19 19:13:18 +02:00
raven02 0ba5bb4e7a Regress fix cellPamf 2014-05-19 22:48:59 +08:00
Alexandro Sánchez Bach c312bc1b70 Merge pull request #249 from raven02/patch-9
Add support for m_surface_depth_format 0
2014-05-19 15:16:17 +02:00
raven02 4f961c9e0b Add comment for depth format 0 2014-05-19 21:14:30 +08:00
Alexandro Sánchez Bach e280d54f3f Fix pointers issue in cellUserInfoGetList
Solves GetMemFromAddr(0x0) on NPEB01894.
2014-05-19 15:05:53 +02:00
Michael Yu 3aeb0b0f95 cellPngDecDecodeData handles CELL_PNGDEC_ARGB case much faster.
Profiling done with two samples on Solar v2.1 from rpcs3 init to first frame.
Before optimization, profiler found rpcs3 in cellPngDecDecodeData 15.3% of the time.
Post-optimization, profiler finds rpcs3 in cellPngDecDecodeData 0.33% of the time for ~50x improvement.
2014-05-19 02:23:23 -07:00
Michael Yu 9bdb12e3da MEMORY: Added AppendRawBytes, which also advances the memory pointer unlike Memory.CopyFromReal 2014-05-19 02:23:23 -07:00
Michael Yu 2834697f1f MEMORY: Copy from real's destination parameter should be immutable 2014-05-19 02:23:22 -07:00
Michael Yu 346614b0da gitignore now ignores files generated by visual studio profiler, solution configured for profiling. 2014-05-19 02:23:22 -07:00
raven02 c2f3f04808 Add support for m_surface_depth_format 0 2014-05-19 15:43:41 +08:00
Michael Yu 9e791da7bd virtual memory block reads/writes properly fail if address is out of bounds.
Fixes Solar v2.1 http://puu.sh/8ScXK.jpg
2014-05-18 23:12:28 -07:00
Alexandro Sánchez Bach 0d0df4b491 Merge pull request #247 from unknownbrackets/texformats
Implement more texture formats per the test
2014-05-19 00:52:20 +02:00
Unknown W. Brackets 7948f376fb GL: Fix the compressed R8B8 / B8R8 type formats.
The not-swizzled bit is always set for them.
2014-05-18 15:24:12 -07:00
Unknown W. Brackets 612e515317 GL: Fix X16 / Y16_X16 texture formats.
Per the rsx/texture_formats test.  Not sure about pitch, may need to deal
with UNPACK_ROW_LENGTH...
2014-05-18 14:39:04 -07:00
Unknown W. Brackets 06c4c45200 GL: Fix half-float texture formats.
This matches the ps3 output/channels for these textures per the
rsx/texture_formats test.
2014-05-18 14:22:05 -07:00
Alexandro Sánchez Bach 4f63f57d26 Merge pull request #246 from Blaypeg/master
Explicit conversion to avoid compiler warning (2)
2014-05-18 15:05:06 +02:00
Blaypeg 5e36362a4c int ->size_t 2014-05-18 13:28:11 +01:00
Alexandro Sánchez Bach b4a7684344 Check pointers in cellPamf 2014-05-18 12:46:01 +02:00
B1ackDaemon 9e7f8564b6 Merge pull request #244 from raven02/patch-6
Fix wrong color effect in Disgaea 3
2014-05-18 11:08:17 +03:00
B1ackDaemon 1a6fa4aedc Merge pull request #243 from unknownbrackets/texformats
Swap R/B in a few other texture formats
2014-05-18 11:08:12 +03:00
B1ackDaemon be11bd85f6 Merge pull request #242 from unknownbrackets/pngdec
cellPngDec: Ignore bytesPerLine < width * bpp
2014-05-18 11:08:05 +03:00
raven02 c8e52a78f9 Fix wrong color effect in Disgaea 3 2014-05-18 14:57:56 +08:00
Unknown W. Brackets 07505aa9e2 GL: Fix D1R5G5B5 texture R/B components as well. 2014-05-17 23:14:42 -07:00
Unknown W. Brackets 7992115f6c GL: Swap R/B in A1R5G5B5 correctly.
Fixes Terraria, thanks @raven02.  How did I miss this, it was not passing
the test after all...
2014-05-17 23:06:26 -07:00
Unknown W. Brackets fed2998d48 cellPngDec: Ignore bytesPerLine < width * bpp.
It seems strange, but Sonic CD passes bytesPerLine = w * 3 for a 4 channel
image.  Either this is a bug elsewhere, or it ignores likely incorrect
strides.

Untested except in Sonic CD.
2014-05-17 22:32:11 -07:00
B1ackDaemon c0f55ae1e7 Merge pull request #241 from unknownbrackets/texformats
Add a few more texformats, fix cellPngDec
2014-05-18 02:19:30 +03:00
Unknown W. Brackets c8dea6b931 Typo. 2014-05-17 15:38:13 -07:00
Unknown W. Brackets 28b10157ad GL: Add Y16_X16 tex format (untested.) 2014-05-17 14:49:23 -07:00
Unknown W. Brackets 439dd9d8a3 GL: Add Y16_X16_FLOAT tex format (untested.) 2014-05-17 14:49:22 -07:00
Unknown W. Brackets cf0e116a56 GL: Add R8B8_R8G8 / B8R8_G8R8 formats, tweak G8B8.
Based on how the first two swizzle, most likely G8B8 works that way too.
2014-05-17 14:49:22 -07:00
Alexandro Sánchez Bach 0e3e4c7553 Merge pull request #236 from unknownbrackets/pngdec
cellPngDec: fix outputMode, outputBytesPerLine
2014-05-17 21:48:16 +02:00
Alexandro Sánchez Bach 921de12d93 Merge pull request #238 from unknownbrackets/texformats
Correct various texture formats in OpenGL
2014-05-17 20:56:29 +02:00
Unknown W. Brackets dbcee43567 Typo. 2014-05-17 11:32:18 -07:00
Unknown W. Brackets b58320d7dc GL: Small simplification. 2014-05-17 11:29:49 -07:00
Unknown W. Brackets 0978a1348e GL: Correct byteswapping for 565 type textures. 2014-05-17 11:15:26 -07:00
Unknown W. Brackets 86d35d58df GL: Add support for R6G5B5. 2014-05-17 11:15:26 -07:00
Unknown W. Brackets 2f8e31cddd GL: support the G8B8 tex format. 2014-05-17 11:15:25 -07:00
Unknown W. Brackets 68bc41b436 GL: Correct texture reswizzling, fix A4R4G4B4. 2014-05-17 11:15:25 -07:00
Alexandro Sánchez Bach ac65af7b62 Merge pull request #237 from raven02/patch-5
Fix wrong type for DEPTH24_D8/DEPTH16
2014-05-17 19:19:55 +02:00
raven02 ccc35176f6 Fix wrong type for DEPTH24_D8/DEPTH16 2014-05-18 00:52:48 +08:00
Unknown W. Brackets f7114cc620 cellPngDec: fix outputMode, outputBytesPerLine.
This handles CELL_PNGDEC_BOTTOM_TO_TOP and also handles reduced
outputBytesPerLine more correctly-looking.  Not actually tested against
actual behavior.
2014-05-17 09:21:25 -07:00
Alexandro Sánchez Bach d745a7bb4e Implemented CELL_GCM_TEXTURE_D1R5G5B5
Same color issue as A1R5G5B5 though.
2014-05-17 17:17:41 +02:00
B1ackDaemon 1f465bc7d8 Merge pull request #235 from raven02/patch-4
Implement CELL_GCM_TEXTURE_A1R5G5B5 & CELL_GCM_TEXTURE_A4R4G4B4
2014-05-17 12:22:58 +03:00
B1ackDaemon 389e3bbd91 Merge pull request #233 from raven02/patch-3
Fix CELL_GCM_TEXTURE_B8 opengl error 0x0500
2014-05-17 12:22:45 +03:00
B1ackDaemon a3a6a8a9e0 Merge pull request #232 from raven02/patch-2
Fix ternary operator
2014-05-17 12:22:35 +03:00
B1ackDaemon 36d5cf1a7f Merge pull request #231 from raven02/patch-1
Set default off for WriteColorBuffers / DepthBuffers
2014-05-17 12:22:27 +03:00
B1ackDaemon a33e4c7346 Merge pull request #230 from raven02/master
Use GL_BGRA for glReadPixels()
2014-05-17 12:22:12 +03:00
raven02 0d9de89a26 Implement CELL_GCM_TEXTURE_A1R5G5B5 & CELL_GCM_TEXTURE_A4R4G4B4 2014-05-17 17:00:25 +08:00
raven02 ddfdaa270e Set default on for Ignore RW errors
This seems to be making couples of games at least not booting without the option ticking.
2014-05-17 10:03:21 +08:00
raven02 e7a4eac676 Typo fix 2014-05-17 01:44:13 +08:00
raven02 ca7c4e119e Fix CELL_GCM_TEXTURE_B8 opengl error 0x0500 2014-05-17 01:27:55 +08:00
raven02 86ca4819ee Fix ternary operator 2014-05-16 22:43:32 +08:00
raven02 8278c8f5c4 Set default off for WriteColorBuffers / DepthBuffers 2014-05-16 21:29:34 +08:00
raven02 20af7c4981 Log lvl -> Log Level 2014-05-16 21:27:14 +08:00
raven02 f5e1d9eab1 Use GL_BGRA for glReadPixels() 2014-05-16 15:13:34 +08:00
Alexandro Sánchez Bach 68b0f800ff Merge pull request #228 from raven02/patch-1
Add few more texture formats and comments
2014-05-15 18:15:37 +02:00
raven02 42434adfaf Add few more texture formats and comments 2014-05-15 22:29:55 +08:00
Alexandro Sánchez Bach 315f1e62ad Merge pull request #227 from raven02/master
Implement CELL_GCM_TEXTURE_R5G5B5A1/R5G6B5
2014-05-15 11:01:41 +02:00
raven02 f3c3bebd6e Implement CELL_GCM_TEXTURE_R5G5B5A1/R5G6B5 2014-05-15 16:11:29 +08:00
Alexandro Sánchez Bach 5b252a8bad Merge pull request #226 from O1L/master
Fixed issue #221.
2014-05-14 14:49:49 +02:00
Oil 5833d22fe0 Fixed issue #221, and other minor changes. 2014-05-13 22:45:24 +04:00
Alexandro Sánchez Bach 38bd40891d Fixed issue with RSX Reports
Reports consist of 16 bytes (64-bit timestamp, 32-bit value and 32-bit
zero padding). This was found by @nohbdy some time ago.
2014-05-12 21:31:01 +02:00
Alexandro Sánchez Bach 4aefd5cbc4 Merge pull request #225 from Bigpet/master
Some light formatting and hotkeys for main frame restored.
2014-05-11 00:54:42 +02:00
Peter Tissen ca64054505 some light formatting and hotkeys for main frame restored 2014-05-10 16:00:34 +02:00
Peter Tissen 4c5b5f709f match project dependencies for wxStuff from their *.sln 2014-05-09 11:16:31 +02:00
Alexandro Sánchez Bach 8d5599d3dc Merge pull request #220 from unknownbrackets/opcodes
Add a few missing opcodes, fix SRAWI
2014-05-09 06:23:20 +02:00
Alexandro Sánchez Bach 93cb2a0af9 Merge pull request #219 from jarveson/cellPad_fixes
Cell pad fixes
2014-05-09 06:20:36 +02:00
Jake 6045c9a890 Removed unneccessary commented analog stick code 2014-05-08 17:20:16 -05:00
Unknown W. Brackets ff89e06fd6 Add missing ICBI instruction. 2014-05-07 23:53:19 -07:00
Unknown W. Brackets 9290453d2e Add missing STFSUX/STFDUX instructions. 2014-05-07 23:48:27 -07:00
Unknown W. Brackets 592e13b6a0 Add missing LSWX and STSWX instructions. 2014-05-07 23:39:45 -07:00
Unknown W. Brackets a5c18b2a09 Add missing TD instruction. 2014-05-07 23:36:13 -07:00
Unknown W. Brackets d54237b0a3 Fix SRAWI instruction decoding.
It's SH, not sh.  Lowercase combines bits from two fields.
2014-05-07 23:23:23 -07:00
Unknown W. Brackets 134e891068 Fix operand order in DSTST instruction.
No functional change.  Also, switch SC to use a u32 for more typesafe
opcode decoding - also no functional change.
2014-05-07 23:22:03 -07:00
Unknown W. Brackets cf86056ba9 Update wxWidgets to fix recompile thing in MSVC. 2014-05-07 23:21:45 -07:00
Jake 5deedb1524 Fix pad handler for digital buttons 2014-05-07 18:08:16 -05:00
Jake 4d28d2e75d Revert comment out of cellPadGetCapabilityInfo in funcList 2014-05-07 01:45:18 -05:00
Jake 0e933439dc Initial cellPadClearBuf functionality 2014-05-06 23:09:10 -05:00
Jake 387eac4d08 Added pressure support for keys, redid analog 'key' stick support 2014-05-06 23:04:47 -05:00
Jake 0d4e950769 Implemented more cellPad functions, fixed some cellpad error returns 2014-05-06 22:54:41 -05:00
Jake 604eecf5d4 Add in cellPadGetCapabilityInfo function 2014-05-06 22:48:55 -05:00
Jake 199845a9d1 Fixed 'Assign_changes' usage for cellpad / padhandler 2014-05-05 21:58:49 -05:00
Jake 29cd11ad06 Added in some more error codes to Cellpad functions 2014-05-05 20:49:20 -05:00
Alexandro Sánchez Bach 5b0ebacc40 Merge pull request #217 from Bigpet/master
fix msvc opengl includes
2014-05-01 21:07:40 +02:00
Peter Tissen 4de24cb436 more compact precompiler checking 2014-05-01 19:32:16 +02:00
Peter Tissen 0aa8a9f372 fix OpenGL includes for Win32 2014-05-01 19:29:28 +02:00
Alexandro Sánchez Bach 4c9444b958 Merge pull request #214 from kaazoo/master
Add compilation support for Mac OSX
2014-05-01 16:50:43 +02:00
Andreas Schroeder 11ca131607 detect Mac OSX and Windows, fall back to Linux 2014-04-30 00:58:57 +02:00
Andreas Schroeder ebe20a0825 move clock_gettime() into GNU.cpp 2014-04-29 22:46:43 +02:00
Andreas Schroeder 22a90a0907 add info for Mac OSX 2014-04-29 22:46:43 +02:00
Andreas Schroeder e7f0efa56d Mac OSX: use __thread for thread-local storage 2014-04-29 22:46:42 +02:00
Andreas Schroeder 64cfab5b46 Mac OSX: fix includes & add missing functionality 2014-04-29 22:46:42 +02:00
Clayton Walker 4db97eae7c Set build independent binary output dir
Useful for using multimple compilers (gcc/clang) with different compile-time (debug/release)
2014-04-29 01:17:41 -06:00
Alexandro Sánchez Bach f908a3ca78 Merge pull request #213 from Bigpet/master
Compile fix for VS (doesn't like implicit `u64 *` to `unsigned long*`)
2014-04-28 23:15:52 +02:00
Peter Tissen 3220e9bbc4 format warning disable for clang, typo correction 2014-04-28 21:50:07 +02:00
Peter Tissen baaa2ae45a format warning disable for clang, it clutters up the build messages too much 2014-04-28 21:36:31 +02:00
Peter Tissen 92d556524b well let's hope Clang doesn't mind implicit unsigned int to u64 2014-04-28 21:18:11 +02:00
Hykem 90896560bb Merge pull request #209 from unknownbrackets/warnings
Fix a bunch of warnings
2014-04-28 17:15:12 +01:00
Hykem 82e47a5c53 Merge pull request #212 from unknownbrackets/perf
Improve memory access performance a little
2014-04-28 16:31:11 +01:00
Unknown W. Brackets 8ff354a4ea Switch a bunch of loops to range fors. 2014-04-28 07:57:49 -07:00
Hykem 7b28d9d7ba Merge pull request #185 from lioncash/gui-cleanup
Clean up UI code.
2014-04-28 15:54:54 +01:00
Unknown W. Brackets d6baac6fbe Fix reseved -> reserved typo. 2014-04-28 07:43:12 -07:00
Unknown W. Brackets fce0a1efa1 Add AboutDialog.h header to msvc. 2014-04-28 07:43:12 -07:00
Unknown W. Brackets fb03214f0a Clarify if/else precedence in a macro. 2014-04-28 07:43:11 -07:00
Unknown W. Brackets bdb08c58d3 Clarify a no-content loop. 2014-04-28 07:43:11 -07:00
Unknown W. Brackets 1fb8060263 Clarify precedence in macro. 2014-04-28 07:43:10 -07:00
Unknown W. Brackets 75fe77115d Avoid a trigraph. 2014-04-28 07:43:10 -07:00
Unknown W. Brackets 763fb2719f Don't try to delete [] things that weren't new'd. 2014-04-28 07:43:09 -07:00
Unknown W. Brackets bcf63a0fae Correct some non-const string literals.
Should not be treated as non-const char *.
2014-04-28 07:43:09 -07:00
Unknown W. Brackets 80eb12a9d6 Always return a value in get_time().
Although, clock_gettime() should never fail here.
2014-04-28 07:43:08 -07:00
Unknown W. Brackets f2d6bf73ca Clarify an assignment is not a comparison. 2014-04-28 07:43:07 -07:00
Unknown W. Brackets 563aa2d2ca Log unhandled case in FPSCR::checkSliceRounding(). 2014-04-28 07:43:07 -07:00
Unknown W. Brackets 2fdefc4fb5 Fix some int/ptr comparisons. 2014-04-28 07:43:06 -07:00
Unknown W. Brackets b550ccfc73 Make MemoryBase::Unmap() return a value. 2014-04-28 07:43:06 -07:00
Alexandro Sánchez Bach dea8bed140 Merge pull request #207 from UnconventionalT/master
Gui: Replace sscanf with ToULong
2014-04-28 10:12:10 +02:00
Unknown W. Brackets 32554b7023 Use templates in FastRead/FastWrite to simplify.
DRY.
2014-04-28 00:42:02 -07:00
Alexandro Sánchez Bach c8d93d0da4 Merge pull request #208 from darkf/patch-1
README: Use OpenAL Soft and add a Travis CI badge
2014-04-28 09:36:20 +02:00
Unknown W. Brackets e4c0b0310c Don't ask twice if MemoryBlocks can read mem.
They already check on Read32(), so just use that to iterate.
2014-04-28 00:15:37 -07:00
Unknown W. Brackets 2f7fbf01cf Avoid pointless strdup(). 2014-04-27 21:31:42 -07:00
Unknown W. Brackets 42d5da633a Fix an unused variable warning. 2014-04-27 21:31:42 -07:00
Unknown W. Brackets 5f6a2e498a Fix some type comparion warnings. 2014-04-27 21:31:41 -07:00
Lioncash 8feabb00d6 Correct event handlers to trigger in all instnces
Some events don't propagate correctly to the right sub-window
and some things like the pad handler don't even necessarily have
windows. So, just register some events with the top-level app.

Also add a virtual destructor to the PadHandlerBase to be able to
deal with multiple inheritance in the derived classes.
2014-04-27 20:05:01 -04:00
darkf 708662da39 README: Use OpenAL Soft and add a Travis CI badge 2014-04-27 16:55:18 -07:00
Lioncash b877879db6 Clean up UI code.
- Use Bind instead of connect. It's recommended for anyone using wx 2.9+
- Remove AppConnector. All this did was destroy objects used in the UI. However, wxWidgets handles this. So it's redundant.
- Misc other unimportant changes.
2014-04-27 19:53:13 -04:00
Clayton Walker 0c5526f2fd Gui: Replace sscanf with ToULong 2014-04-27 17:11:03 -06:00
B1ackDaemon db1ca2f89f Merge pull request #206 from Bigpet/linspurec
enable SPU recompiler on linux
2014-04-28 00:12:35 +03:00
Peter Tissen fad6c7cecb add asmjit path hack, we'll get rid of it sooner or later 2014-04-27 21:32:12 +02:00
Peter Tissen 870fa5a153 explicit cast from void(*)() to void * 2014-04-27 20:23:32 +02:00
Peter Tissen 0bcadaf155 explicitER casting, why you heff to be mad Clang 2014-04-27 20:13:47 +02:00
Peter Tissen 95ca5315e7 fix path to the asmjit lib 2014-04-27 19:59:12 +02:00
Peter Tissen 9d3d7b09b3 explicit casting 2014-04-27 19:55:31 +02:00
Peter Tissen 7169972434 disable cotire for now 2014-04-27 19:34:09 +02:00
Peter Tissen 4981c576d2 rename all the non-standard include file extensions to *.h 2014-04-27 19:28:03 +02:00
Peter Tissen 6a24d2bbac fix typo in cmakelists.txt, again 2014-04-27 19:23:11 +02:00
Peter Tissen 07841fc9e3 fix typo in cmakelists.txt 2014-04-27 19:17:41 +02:00
Peter Tissen 85be97e6a2 add explicit casts for the ptrdiffs 2014-04-27 19:15:35 +02:00
Peter Tissen a766f5951d add precompiled header build to cmake to speed up building 2014-04-27 19:07:20 +02:00
Peter Tissen 60a7fe17b5 remove .m128i_uxx subscripts because they're non standard 2014-04-27 18:51:24 +02:00
Peter Tissen f906d031fa remove more offsetof calls on linux and add asmjit linkage 2014-04-27 18:37:21 +02:00
Peter Tissen 1ba5cafc5f enable SPU recompiler on linux 2014-04-27 18:18:04 +02:00
Alexandro Sánchez Bach d085301af3 Merge pull request #204 from darkf/padfix
pad: Send all button states so release events fire
2014-04-27 16:06:03 +02:00
darkf d47dbf4f32 pad: Send all button states so release events fire 2014-04-27 05:33:31 -07:00
Alexandro Sánchez Bach b0699f38e7 Merge pull request #202 from Bigpet/linub
Add travis CI config file and all the changes to make it compile there under both gcc and llvm clang
2014-04-27 01:13:54 +02:00
Bigpet eea3aa9729 This is squashed commit from the follwing commits:
* various changes to make it compile with clang

* don't compile recompiler on linux yet but make the CMake build include asmjit already

* add experimental travis bot

* modify yml to match

* try to build and install wxWidgets, since it's not in the travis repo

* use newer cmake version for travis

* add keys with sudo

* use sudo for all apt- commands

* Add additional dependencies

* use version approriate gcc flags for c++11

* try clang, gcc too old

* set c++0x flag for clang

* use gcc 4.8

* use gcc 4.8 and add the repo for it

* use gcc 4.8 even for clang to get newer headers

* fix ambiguous conversions

* add lz from hykem and more explicit conversions from be for x86

* more switch disambiguation

* more switch disambiguation

* add additional unigned int casts to deal with be_t conversion ambiguity

* remove unnecessary clang flag

* add lz.cpp to vcxproj and cast to u32 instead of unsigned int

* correct temporaray #ifdefs
2014-04-27 00:41:46 +02:00
Alexandro Sánchez Bach a2157a5365 Merge pull request #201 from Nekotekina/master
Compilation fix again
2014-04-26 12:55:29 +02:00
Nekotekina 0d375809b1 Useless code removed 2014-04-26 00:28:43 +04:00
Nekotekina a24cb250d8 Compilation fix again 2014-04-26 00:09:23 +04:00
Alexandro Sánchez Bach 6facd8d9c6 Merge pull request #200 from Nekotekina/master
Compilation fixes
2014-04-25 15:53:35 +02:00
Nekotekina 555d053e32 Compilation fixes 2014-04-25 16:48:27 +04:00
Alexandro Sánchez Bach 15b0b6830e Merge pull request #199 from darkf/net-work
Improve networking
2014-04-25 10:00:18 +02:00
darkf 2b7c12a3f0 Stub cellWebBrowserEstimate2 so some apps proceed 2014-04-24 22:14:40 -07:00
darkf ee2e0b3bbf sys_net: Implement sockaddr_in, inet_addr, listen 2014-04-24 22:02:33 -07:00
darkf b0b6034e63 accept accepts NULL address 2014-04-24 05:10:43 -07:00
Alexandro Sánchez Bach 8c4fd75c82 Merge pull request #198 from darkf/spugui
Add SPU decoder mode selection to GUI/Config
2014-04-23 20:38:34 +02:00
darkf 090f7f8cfb Add SPU decoder mode selection to GUI/Config 2014-04-23 05:06:19 -07:00
Alexandro Sánchez Bach 0d7e45639a Merge pull request #197 from Nekotekina/master
Simple SPU JIT
2014-04-23 13:19:18 +02:00
Nekotekina 525084e7cc Some stuff 2014-04-20 23:36:53 +04:00
Nekotekina e1bbedd4bf Accuracy improved 2014-04-20 02:53:42 +04:00
Alexandro Sánchez Bach 9e793c2122 cellSaveData* (cellSysutil) refactoring 2014-04-19 18:50:06 +02:00
Nekotekina 678a964ff4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-19 18:45:55 +04:00
Alexandro Sánchez Bach 225c58c17b Merge pull request #196 from Bigpet/deleteErr
fix copying class with pointers as member
2014-04-19 11:33:27 +02:00
Nekotekina 7875738391 More opcodes 2014-04-19 02:11:07 +04:00
Nekotekina 62df7eb499 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/rpcs3.vcxproj.filters

Conflicts fixed
2014-04-18 16:59:31 +04:00
Peter Tissen ee9d25c675 forgot the right check 2014-04-18 13:31:37 +02:00
Peter Tissen 79eaffaaa7 copying class with pointers as member when deleting them in the desctructor is danger zone. 2014-04-18 13:28:27 +02:00
Alexandro Sánchez Bach ef108ae4d6 Merge pull request #194 from Dante38490/patch-1
Restore the "# Visual Studio 2013" comment in rpcs3.sln
2014-04-18 00:17:25 +02:00
Dante38490 9900b36f07 return back
restore correct version
2014-04-17 23:38:07 +02:00
Alexandro Sánchez Bach bad20ab9df Merge pull request #193 from nohbdy/pull_apr172014
RSX Bugfixes and plugging memory leaks
2014-04-17 23:18:20 +02:00
Nekotekina 5d091411a3 More opcodes 2014-04-18 00:25:02 +04:00
nohbdy d136adc73f RSX Bugfixes and plugging memory leaks
BUGFIX: Add break after NV4097_SET_TEXTURE_BORDER_COLOR in RSXThread.cpp
BUGFIX: Fix parameters passed to RSXTexture::SetControl3 (they were being
passed in reverse order)
BUGFIX: Remove invalid, non-sensical call to glPixelStorei in GLGSRender.h
BUGFIX: Fix signed/unsigned comparison compiler warnings in GLGSRender.h
CHANGE: Make GLFragmentProgram::Decompiler synchronous by default
CHANGE: Update wxWidgets submodule to latest commit
BUGFIX: Fix several memory leaks
ADDED: Created a new MSVC debug configuration to output locations
  of allocations that end up leaking after the program
  is closed.
BUGFIX: Fix the stupid PadHandler crash due to the lack of a virtual d'tor
2014-04-17 15:15:43 -05:00
Nekotekina 29d2ea7513 Some bugs fixed 2014-04-17 03:28:21 +04:00
Nekotekina a57841d006 Some comments cleared 2014-04-16 15:36:20 +04:00
Nekotekina dab0751300 ... 2014-04-16 15:09:06 +04:00
B1ackDaemon 34729e2687 Merge pull request #191 from Bigpet/master
Fix for video playback
2014-04-15 17:12:15 +03:00
Peter Tissen f073f1ca4b yeah, that happened 2014-04-15 14:48:21 +02:00
Alexandro Sánchez Bach aa8e854be2 Merge pull request #187 from Bigpet/master
range-check and more explicit ownership with vector<ptr>
2014-04-15 00:55:07 +02:00
Nekotekina c41317dd82 New bugs added 2014-04-14 13:42:55 +04:00
Peter Tissen 8ef9414406 try to reign in the vector<ptr> madness 2014-04-14 10:55:43 +02:00
Peter Tissen 552b71a378 fix not range-checked vector access 2014-04-14 09:01:31 +02:00
Alexandro Sánchez Bach 5dc9be649d Merge pull request #184 from daniel-dressler/master
Add Linux build instructions for Debian & Ubuntu
2014-04-13 07:38:55 +02:00
danieru b87aa55351 Fix run instruction hitting CWD bug
PCS3 assumes current working directory is bin folder.
So running it like ./bin/pcs3 stops it from finding
dev_hdd0 and related.
2014-04-12 21:15:09 -06:00
danieru 57a9b557e9 Add Linux build instructions for Debian & Ubuntu 2014-04-12 19:19:48 -06:00
B1ackDaemon 0d7397a636 Merge pull request #183 from Bigpet/cmakefix
quote guard CMake variables
2014-04-12 22:54:43 +03:00
B1ackDaemon a059297bf4 Merge pull request #182 from Bigpet/array_remove
Replace Array with std::vector
2014-04-12 22:54:34 +03:00
Bigpet a14c61802e quote guard CMake variables 2014-04-12 21:36:34 +02:00
Nekotekina 180f8aac5d SPU Interpreter fix 2014-04-12 14:27:27 +04:00
Peter Tissen cdaca2d308 fix accidental wxWidgets version change 2014-04-12 12:09:48 +02:00
Bigpet 25c3aa8e19 fixes to get llvm to compile (excepti for utils.cpp, that'll get fixed
later)

Eradicate the Array almost everywhere, some usages like Stack still
remains
2014-04-12 12:06:52 +02:00
Peter Tissen d65968b41d unify line endings to shut up VS 2014-04-12 11:42:20 +02:00
Nekotekina e56bb1b675 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-11 12:33:41 +04:00
Nekotekina a7057f5205 Conflicts fixed 2014-04-10 02:00:01 +04:00
Alexandro Sánchez Bach c8d8428275 Merge pull request #179 from O1L/master
Minor fix in GUI an other changes.
2014-04-09 23:59:29 +02:00
Oil 0763e429b8 I just forgot to do it... 2014-04-10 00:42:50 +04:00
Oil 770ebaf271 Implemented small tool for generating id of HLE-Function. Fixed small issue in PADManager dialog. 2014-04-09 23:57:26 +04:00
Alexandro Sánchez Bach 8183ee4d56 cellSaveData* improvements
* cellSaveDataFixedSave2 and cellSaveDataFixedLoad2 implemented. Still a
little buggy.
* Small fix the cellSaveDataList(Save|Load)2 problem in Disgaea D2 and
other games.

NOTE: cellSysutil_SaveData.cpp is a total mess: some blocks of code
appear in all the syscalls. I just want to wait until most of the
SaveData functions are implemented and working to do some serious
refactoring.
2014-04-09 18:23:14 +02:00
Alexandro Sánchez Bach 930d507d43 Merge pull request #178 from Bigpet/master
Remove GCC specific variadic macro syntax
2014-04-08 21:59:25 +02:00
Peter Tissen 10ca726752 Remove GCC specific variadic macro syntax 2014-04-08 21:47:02 +02:00
Alexandro Sánchez Bach e89ecd192b Merge pull request #177 from Bigpet/minifix
Various warning fixes and devirtualization
2014-04-08 20:06:20 +02:00
Alexandro Sánchez Bach ce1b6039ac Merge pull request #175 from eriksson/nx-fixes
*nix fixes
2014-04-08 20:05:55 +02:00
Peter Tissen 4066950975 Various warning fixes and devirtualization
* Remove ArrayString
* devirtualize GetCount and SetCount, they're no longer needed
* set storage duration of fmt::placeholder to extern to be consistent
* make length unsigned and the return value of sprintf signed
* remove dead code "s.Close()" is never reached
* devirtualize WrteToLog()
* devirtualize Ini functions
2014-04-08 19:41:47 +02:00
Nekotekina 33f7afd6e6 Some bugs fixed 2014-04-08 19:10:07 +04:00
Eriksson Monteiro 3cb18ac5a9 fix trailing comma in array 2014-04-08 00:41:09 +01:00
Alexandro Sánchez Bach 1975b7e139 Merge pull request #176 from lioncash/ppu-typo
Fix a typo in SUBFZE for the PPUInterpreter.
2014-04-07 21:21:38 +02:00
Nekotekina 4e9dc8ab9c SPU JIT: more asm 2014-04-07 22:27:30 +04:00
Lioncash f019bd995a Fix typo in SUBFZE for the PPUInterpreter. 2014-04-07 11:48:30 -04:00
Nekotekina f9b68bc012 SPU JIT fix
Nothing changed in interpreter.
2014-04-07 17:06:13 +04:00
Alexandro Sánchez Bach 9e40247af0 Fixed error in SC_Pad.cpp and Readme.md updated 2014-04-07 14:40:50 +02:00
Alexandro Sánchez Bach f45223563c Merge pull request #150 from lioncash/unique-ptr
Misc cleanup of the Io stuff.
2014-04-07 09:49:09 +02:00
Lioncash d36da21d6f Fix stupid mistake I made with rebasing.
Accidentally overwrote the Pad handler stuff for windows. Should be fixed now.
2014-04-06 23:47:00 -04:00
Lioncash 3c5e3fa853 Move the mouse/keyboard/pad handlers over to using unique_ptr as the underlying base. 2014-04-06 23:46:59 -04:00
lioncash c5a7946a24 Move Keyboard/Mouse/Pad handlers over to using vector. 2014-04-06 23:46:59 -04:00
lioncash 26e80a18b4 Disallow inheriting of the null and windows mouse/keyboard/pad handlers. These aren't intended to be further extended. 2014-04-06 23:46:58 -04:00
Eriksson Monteiro e65d1a3dd9 replace CLK_TCK for CLOCKS_PER_SEC 2014-04-06 22:51:36 +01:00
Eriksson Monteiro 5a5edf17fd Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 into nx-dbgoutput 2014-04-06 22:35:36 +01:00
Alexandro Sánchez Bach 8798b05e1f Merge pull request #161 from lioncash/vs
Reorganize the VS project.
2014-04-06 22:59:05 +02:00
Alexandro Sánchez Bach b6cda331c0 Merge pull request #174 from Nmzik/master
Added 2 new functions
2014-04-06 21:58:58 +02:00
Nmzik f9e6230ead added 2 functions 2014-04-06 23:47:21 +04:00
Nekotekina e614a7313c SPU JIT WIP 2014-04-06 23:23:32 +04:00
Hykem d0b249fbca Merge pull request #172 from O1L/master
GUI: Pad Settings dialog reworked.
2014-04-06 16:17:07 +01:00
Hykem f76e1630b4 Merge pull request #171 from Nmzik/master
Minor improvement
2014-04-06 16:08:07 +01:00
Eriksson Monteiro d7dc938653 remove trailing commas in arrays 2014-04-06 14:25:53 +01:00
Alexandro Sánchez Bach 039dd480da Merge pull request #173 from lioncash/misc
Fix two parameter sanity checks in sceRtc.
2014-04-06 15:00:26 +02:00
Lioncash 842a6fe1d4 Fix two parameter sanity checks in sceRtc. 2014-04-05 15:46:56 -04:00
Nekotekina 4a9310755f Working on simple SPU JIT
No, it doesn't work.
2014-04-05 20:30:08 +04:00
O1L bbbe2f8916 GUI: Pad Settings dialog reworked. 2014-04-05 18:26:45 +04:00
Nmzik 3243c4c0c8 Test 2014-04-05 14:17:32 +04:00
Alexandro Sánchez Bach 3bcf5d1557 Merge pull request #170 from Nekotekina/master
Audio fixes
2014-04-04 17:55:09 +02:00
Nekotekina 82edd111e9 asmjit submodule added 2014-04-04 19:36:53 +04:00
Nekotekina c6c6dbe546 Conflicts fixed 2014-04-04 18:43:43 +04:00
Alexandro Sánchez Bach dcb9d53e6d Merge pull request #169 from lioncash/tab-fixes
Use spaces for vertical alignment
2014-04-04 16:01:57 +02:00
lioncash d0c9d7c0ae Use spaces for vertical alignment 2014-04-04 09:25:38 -04:00
Alexandro Sánchez Bach e25796f0d0 Merge pull request #168 from darkf/sysutil
Implement/stub cellSysutilGetBgmPlaybackStatus
2014-04-04 11:32:53 +02:00
darkf 4d4b6c0895 Implement/stub cellSysutilGetBgmPlaybackStatus 2014-04-04 00:28:00 -07:00
Nekotekina 24eb97f287 AudioDumper: 8ch output 2014-04-04 00:46:40 +04:00
Nekotekina fb9dbfab3a Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-03 16:11:56 +04:00
Nekotekina 1e02598903 cellSync: global mutex avoided
cellAudio: level bug fixed
2014-04-03 15:01:14 +04:00
Alexandro Sánchez Bach 7093852fa0 lv2 sc_table edited & FP recompiler ddx/ddy fix
* Replaced ddx/ddy with dFdx/dFdy in FP recompiler.
* SysCalls table edited. It should now be easier to read / edit. Tell me
if you disagree with this.
2014-04-03 04:20:12 +02:00
Alexandro Sánchez Bach 01b5681dc8 Merge pull request #165 from lioncash/misc
Add a parameter check to some Gif/Jpg/Png decoding syscalls
2014-04-03 04:06:51 +02:00
Lioncash 9d0dd4c7cf Add a parameter check to some Gif/Jpg/Png decoding syscalls 2014-04-02 22:02:43 -04:00
Alexandro Sánchez Bach 262607c83d Merge pull request #164 from lioncash/stubs
Stub some sceNp funcs
2014-04-03 02:55:44 +02:00
Lioncash 2a83af6dbf Stub some sceNp funcs 2014-04-02 19:32:07 -04:00
Alexandro Sánchez Bach 91958ce1cb Merge pull request #162 from lioncash/build-fix
Fix the build.
2014-04-02 21:02:41 +02:00
Lioncash 1aff35f669 Fix the build. 2014-04-02 14:42:25 -04:00
Lioncash bb40c0a71a Reorganize the VS project.
Puts all the headers with the corresponding cpp file instead of having every include in a single folder.

Also added headers that weren't included previously.
2014-04-02 14:30:30 -04:00
Alexandro Sánchez Bach fc9a90e220 Merge pull request #160 from Bigpet/master
Gui logging in main thread
2014-04-02 19:58:34 +02:00
Alexandro Sánchez Bach 2c2ee023b5 Merge pull request #159 from lioncash/vector
Move most of PPUProgramCompiler over to vector
2014-04-02 19:57:02 +02:00
Alexandro Sánchez Bach 81cdaa883a cellPngDec fixes and some rewritings
* This commit solves the cellPngDec GetMemFromAddr(0x0) error when
loading PNGs from files.
* cellVideoOutGetResolution, cellRtc* syscalls rewritten to use the use
the mem*_t data types.
* Replaced int/uint with s32/u32 in some syscall arguments and structs.
2014-04-02 19:53:44 +02:00
Peter Tissen dad82aa1eb Gui logging in main thread
Do the logging to the GUI log element in the main thread. Not doing this
causes issues with the GTK backend of wxWidgets. Plus it's just common
sense to try to limit gui calls to one thread.
2014-04-02 17:57:50 +02:00
Nekotekina b6d8f1e028 Small fix (cellAudio, fsAioRead)
libsynth2 draft
2014-04-02 19:17:43 +04:00
Lioncash 990fca3e7b Minor simplifications to PPUProgramCompiler 2014-04-02 10:21:16 -04:00
Lioncash b3e0441940 Move PPUProgramCompiler to vector 2014-04-02 09:58:47 -04:00
Nekotekina e2e8980194 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-02 12:37:03 +04:00
Alexandro Sánchez Bach c294f5318f Merge pull request #157 from Dante38490/patch-4
Update rpcs3.sln on VS 2013
2014-04-01 23:31:10 +02:00
Dante38490 d1219b0dc8 Update rpcs3.sln 2014-04-01 22:05:54 +02:00
Nekotekina d2ca1cc25a Audio sync fix
Libmixer: SSPlayer draft
Detection fixed
Macros for function substitute registration
2014-04-02 00:04:56 +04:00
Alexandro Sánchez Bach 4857e86cdc Merge pull request #156 from Bigpet/wxString_exorcism
Fix static placeholder test.
2014-04-01 20:30:44 +02:00
Peter Tissen 748aa6fce8 fix indentation 2014-04-01 20:27:58 +02:00
Peter Tissen 373ae6b107 remove dummy alias in strfmt. Fix some wxString remnants, that only make problems in Linux 2014-04-01 20:13:22 +02:00
Peter Tissen 69352206b6 blantant test code removal well this is embarassing, VS didn't recompile it, so I didn't notice the mistake 2014-04-01 19:44:38 +02:00
Alexandro Sánchez Bach 2ab8aa173d Merge pull request #155 from Bigpet/wxString_exorcism
Wx string exorcism fixups
2014-04-01 19:40:28 +02:00
Peter Tissen 02729695ff remove some wxString references I missed 2014-04-01 19:25:22 +02:00
Peter Tissen bcb9ad94c1 correct some merge error that happened from automatic git merging 2014-04-01 19:19:51 +02:00
Alexandro Sánchez Bach bc095322c3 Merge pull request #153 from Bigpet/wxString_exorcism
wxString exorcism
2014-04-01 18:25:33 +02:00
Peter Tissen febe8624bf remove redundant c_str -> string -> c_str conversions 2014-04-01 17:22:57 +02:00
Peter Tissen 8ac226ae69 replace all instances of wxString with std::string in all cases not
directly involved in either the GUI or other wxWidget classes like wxFile
2014-04-01 16:23:03 +02:00
Nekotekina 7c79631609 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-04-01 12:19:32 +04:00
Alexandro Sánchez Bach fa4473de49 Merge pull request #147 from lioncash/mem-leaks
Fix some memleaks in unedat.cpp
2014-03-31 21:41:24 +02:00
Alexandro Sánchez Bach a09ad031ec cellSaveData* (cellSysutil) improvements
* cellSaveData improvements: cellSaveDataListLoad2 should work perfectly
(ignoring the fact that there is no dialog, and the first entry is
chosen automatically). cellSaveDataListSave2 has improved too. Some code
refactoring is required though.
* Reverted (deleted) Emu/SysCalls/Dialogs/ folder which I accidentally
included while merging Nekotekina's branch (including minor SaveData
changes).
* Modified some small things in cellGcmSys.
2014-03-31 20:30:07 +02:00
Peter Tissen b1894ac6cb fix implicit conversion error 2014-03-31 17:35:05 +02:00
Peter Tissen 8a000940da upgrade to VS2013 to use variadic templates for type safe printing 2014-03-31 17:35:04 +02:00
Nekotekina 24becb9325 Conflicts fixed 2014-03-31 18:38:21 +04:00
lioncash c4b64c8d9f Fix variable typos in unedat.cpp
Also fixed possible uninitialized variable usage. Initializes length to zero.
2014-03-31 08:59:52 -04:00
lioncash e47e37a8d2 Fix some memory leaks in unedat.cpp. 2014-03-31 08:56:24 -04:00
Alexandro Sánchez Bach 01dbb8eb9a Merge pull request #145 from Nekotekina/master
Fixed conflicts.
2014-03-31 12:04:34 +02:00
Alexandro Sánchez Bach 8011cc8ec4 Merge pull request #146 from darkf/stuff
Add FindGLEW to CMake build and fix naming error
2014-03-31 11:23:17 +02:00
Alexandro Sánchez Bach 66ec7c0d63 Merge pull request #144 from acmiyaguchi/gcm
Reorganize cellGcmSys module
2014-03-31 11:18:40 +02:00
darkf 61d0e4ee54 Rename xor to xor_ to allow build to continue in compliant compilers 2014-03-31 00:55:27 -07:00
darkf 8007693084 Add FindGLEW to CMake modules along with some compiler flags 2014-03-31 00:00:30 -07:00
Nekotekina 9afbbfad0a Little fix 2014-03-31 10:19:51 +04:00
Anthony Miyaguchi 2106fb83b2 Added cellGcmSetUserHandler that already existed but was never added. 2014-03-30 18:01:51 -07:00
Anthony Miyaguchi b571f14fe4 Function declaration at top needed for another function. 2014-03-30 17:56:03 -07:00
Anthony Miyaguchi eab81deb27 Reordered functions for organization. 2014-03-30 17:54:57 -07:00
Anthony Miyaguchi a62552b086 Organized the cellGcmSys_init() functions in a more sane manner. 2014-03-30 17:54:34 -07:00
Nekotekina 2d955dc297 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-31 00:43:44 +04:00
Hykem 196c2ffe5b Updated the crypto engine:
- Updated AES and SHA-1 source code;
- Fixed a few code warnings;
- Implemented EDAT/SDAT decryption.

Started SPURS implementation:
- Added an internal SPURSManager class draft;
- Added several drafts for cellSpurs functions.

Implemented key.edat decryption in sceNpDrmIsAvailable:
- NOTE: Currently, the decrypted key.edat is stored under dev_hdd1/titleID and the user must replace this file in dev_hdd0. This behavior will change in the future as it's currently intended for controlled testing only.
2014-03-30 21:09:49 +01:00
Nekotekina 9e2561d121 Downmixing/upmixing 2014-03-30 22:53:43 +04:00
Nekotekina fce074d812 Audio mixing fixed
Libmixer reseen
Some bugs fixed
2014-03-30 15:59:55 +04:00
Alexandro Sánchez Bach e6aa1a9553 Merge pull request #142 from lioncash/hdd
Misc HDD stuff
2014-03-30 12:23:47 +02:00
Lioncash b9de74f5c6 Move VHDDManager over to using vector. Also fix some variable and function name typos. 2014-03-30 00:13:00 -04:00
Lioncash 479ef45aec Fix a case where m_hdd_file is passed to m_file uninitialized.
Due to the way initializations work in C++, despite the order of the initializations in the initialization list, it will actually do the initializing in the order the class variables are defined.
2014-03-30 00:08:16 -04:00
Alexandro Sánchez Bach ae5d06d4be Merge pull request #141 from lioncash/bounds
Memset the ringbuffer in m_fs_config by the size of the actual ringbuffer struct, not FsRingBufferConfig's size..
2014-03-30 00:18:02 +01:00
Alexandro Sánchez Bach 3e328cdea5 Merge pull request #140 from lioncash/misc-things
Fix missing unary increment operator in DisAsmFrame
2014-03-30 00:15:47 +01:00
Lioncash 12b627fa9c Memset the ringbuffer in m_fs_config by the size of the actual ringbuffer struct, not FsRingBufferConfig. 2014-03-29 16:28:39 -04:00
Lioncash d6bcf14cc0 Fix missing unary increment operator in DisAsmFrame 2014-03-29 16:13:05 -04:00
Nekotekina 72bb0c842f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-29 20:49:43 +04:00
Alexandro Sánchez Bach 7804c56584 Merge pull request #138 from bagedevimo/nix-fix
More *nix fixes.
2014-03-29 16:26:08 +01:00
Ben Anderson 33f7f37ca7 Fixes null ptr in gcc, probably to do with operator precedence. @Bigpet was all over this one. 2014-03-30 03:21:41 +13:00
Ben Anderson 84c9323750 Fixes GL fix, which was broken. Added -g flag to cmake, so we can have debug builds. 2014-03-30 03:15:46 +13:00
Alexandro Sánchez Bach 4c6aa34810 Merge pull request #135 from bagedevimo/path-fix
Nix Path fix.
2014-03-29 09:50:26 +01:00
Ben Anderson e24027eccb Added call to GlewInit() under *nix, should fix cairo display crashes. 2014-03-29 21:11:43 +13:00
Nekotekina 98024cbb01 Conflicts fixed 2014-03-29 12:04:38 +04:00
Ben Anderson b317b2feda Commenting out all of this, should fix the pathing glitches on *nix, without breaking windows functionality. 2014-03-29 20:52:39 +13:00
Alexandro Sánchez Bach a7fbd5c9b6 Merge pull request #133 from bagedevimo/fix
Fixes invalid conversion from wxStringConst, to std::string under gcc-4-8
2014-03-29 07:05:57 +01:00
Ben Anderson 6141c33630 Fixes invalid conversion from wxStringConst, to std::string under gcc-4.8 2014-03-29 13:52:27 +13:00
Nekotekina 689c41ccb3 Minor fixes
Libmixer: additional patterns
2014-03-29 02:50:05 +04:00
Alexandro Sánchez Bach 503c24453a cellSaveData* progress & reverted commit 950fcfe
* Reverted commit
https://github.com/DHrpcs3/rpcs3/commit/950fcfe4ef6da8aad5198fc12b029862545cfc4e
(Reverted ConLog changes) that fixed the "Bad flip!" error since there
is a better way of solving it. It will be fixed soon.
* Moved cellSaveData to cellSysutil (but preserving the functions in a
separated file named: cellSysutil_SaveData.cpp).
* Progress on cellSaveDataList* functions.
* Added a small margin to the new Settings dialog. :-)
2014-03-28 20:06:15 +01:00
Alexandro Sánchez Bach 64b80f5a2e Merge pull request #132 from O1L/master
GUI: Config -> Settings menu reworked.
2014-03-28 19:37:32 +01:00
O1L 1be14f818a GUI: some changes in Config -> Settings 2014-03-28 21:17:44 +04:00
Alexandro Sánchez Bach 5bf70afb21 Merge pull request #131 from bagedevimo/x11
Fixes X11 threading issue, under Linux
2014-03-28 13:03:54 +01:00
Ben Anderson b36a5a95f0 x11 fix 2014-03-29 00:33:51 +13:00
Nekotekina 70cc2494aa bad_flip issue fix 2014-03-28 12:47:32 +04:00
Hykem 98b4a35fb5 Merge pull request #130 from nohbdy/bugfix
Minor code and memory initialization fixes
2014-03-28 04:53:28 +00:00
Hykem e03b68f12f Merge pull request #129 from acmiyaguchi/master
Fix a hang after failing to run an *.elf file and stopping emulator
2014-03-28 04:52:51 +00:00
Alexandro Sánchez Bach 950fcfe4ef Reverted ConLog changes of commit 5ea58d94
This was causing a "Bad flip!" error on Arkedo Series 02 Swap!. I guess
we will have to search for a better solution. I just reverted the
ConLog.cpp / ConLog.h files.

Related commit:
https://github.com/DHrpcs3/rpcs3/commit/5ea58d9451c2af7884bb5d1fd74e47d0bcc5770a
2014-03-28 05:32:24 +01:00
Alexandro Sánchez Bach 2c7269e3de PSF Loader improved & issue #126 fixed
* Improved PSF Loader: Now you can get the value of the PARAM.SFO
entries directly with the GetString(key), GetInteger(key) methods.
GameInfo related lines were removed since they have nothing to do with
PSF files.
* cellGame, cellSysutil, and GameViewer are modified because of the PSF
Loader changes.
* Removed unnecessary null pointer checks:
https://github.com/DHrpcs3/rpcs3/issues/126
2014-03-28 05:20:13 +01:00
nohbdy d533572ee9 Minor code and memory initialization fixes
* Explicitly initialize member variables in SELFDecrypter, MemInfo, and
VirtualMemoryBlock
* Zero out memory used for counter/nonce in aes-ctr
* Fix use of a ControlInfo pointer after it is added to an Array via
Array::Move (which makes it an invalid pointer) in
SELFDecrypter::LoadHeaders
2014-03-27 22:16:14 -05:00
Anthony Miyaguchi 544bacf54e Quick one line change fixes a hang after failing to run an *.elf file and stopping the emulator via the Stop button. 2014-03-27 18:57:28 -07:00
Alexandro Sánchez Bach 64145d7d62 Merge pull request #124 from xsacha/master
Linux build fix
2014-03-27 23:17:59 +01:00
Alexandro Sánchez Bach 1fd42c34c2 Minor fixes
* Modified some .gitignore's
* Removed some #include <vector>'s
and other stuff...
2014-03-27 16:40:58 +01:00
Alexandro Sánchez Bach c541176a32 Merge pull request #125 from lioncash/ui
Simplify some VFS-related code.
2014-03-27 16:08:04 +01:00
Alexandro Sánchez Bach 7d3414c44c Merge pull request #127 from lioncash/misc-things
Minor logging changes.
2014-03-27 16:03:38 +01:00
lioncash a5f35cc437 Fix a typo in a log message
Also moved a logging statement after an if statement check. We don't want to signify creation of something before checking its validity.
2014-03-27 09:23:32 -04:00
lioncash 7f5412f427 Make a some printfs into error log calls. 2014-03-27 09:22:56 -04:00
lioncash 007f0f2437 More specific log message for adecRawRead.
Was previously logging as adecRead.
2014-03-27 07:36:24 -04:00
Lioncash 8e44bcdbda Simplify some VFS-related code. 2014-03-27 02:49:02 -04:00
Sacha 9b0bcf0b54 Linux build fix 2014-03-27 11:12:45 +10:00
Hykem 457455b71d Merge pull request #121 from lioncash/stack
Use Push instead of AddCpy in CallStackBranch.
2014-03-27 00:12:04 +00:00
Hykem f399ce68a2 Merge pull request #122 from lioncash/misc-things
Remove an unnecessary c_str call.
2014-03-27 00:11:47 +00:00
Lioncash 2185465d34 Remove an unnecessary c_str call. 2014-03-26 19:54:09 -04:00
Lioncash a7bc2034d0 Use Push instead of AddCpy in CallStackBranch. 2014-03-26 19:25:12 -04:00
Nekotekina 994ce50392 Experimental libmixer
adec, vdec improved
fixed sound
2014-03-27 02:45:58 +04:00
Nekotekina 79c01316d6 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-26 16:00:58 +04:00
Alexandro Sánchez Bach c57d3af8dd Merge pull request #120 from xsacha/master
Linux build fix
2014-03-26 10:02:03 +01:00
Sacha ebc6b9e66e Fix an assign. Some other misc changes. 2014-03-26 10:29:17 +10:00
Sacha 3e9cbb4a24 Linux build fix. 2014-03-26 10:23:06 +10:00
Nekotekina 7f7a23027b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-26 02:26:11 +04:00
Nekotekina 8a54f542d0 Reservation improved 2014-03-25 17:05:07 +04:00
Alexandro Sánchez Bach 31e1464e1a Merge pull request #117 from lioncash/const-references
Use const references for the string keys in Ini.cpp/.h
2014-03-25 02:11:56 +01:00
Alexandro Sánchez Bach 621edfb926 Merge pull request #118 from lioncash/misc-things
Fix erroneous assignment in an if statement.
2014-03-25 02:09:11 +01:00
Lioncash a5d9c9033f Fix erroneous assignment in an if statement.
Should have been a comparison.
2014-03-24 20:08:33 -04:00
Lioncash b8d3ce7ae8 Use const references for the string keys in Ini.cpp/.h 2014-03-24 19:53:14 -04:00
Nekotekina 21d19ccd59 Small RSX fix 2014-03-24 21:51:20 +04:00
Nekotekina 9b1c0c97d3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-24 19:28:28 +04:00
Alexandro Sánchez Bach 0ef0cfb38a Merge pull request #114 from lioncash/misc-things
Misc things
2014-03-24 15:32:16 +01:00
lioncash 90b83f6b3e Fix a missing return in an if statement in sceNpTrophyCreateContext. 2014-03-24 09:40:25 -04:00
lioncash 6841230141 Fix erroneous duplicate condition check in cellSpursGetTasksetId. 2014-03-24 09:40:02 -04:00
lioncash 8302e6c001 Fix case where UTF16stoUTF8s in cellL10n.cpp would always fail out if compiled with Visual Studio. 2014-03-24 09:21:17 -04:00
lioncash 4db1f49aaf Remove redundant assignment in RSXThread.
This is assigned the same value further down the function.
2014-03-24 08:53:34 -04:00
lioncash c00850c4c5 Minor const correctness 2014-03-24 08:47:30 -04:00
lioncash 874da27599 Initialize strings through the initializer list in PPUProgramCompiler.h 2014-03-24 08:40:35 -04:00
Hykem ea34cb52c1 Merge pull request #112 from Dante38490/patch-1
Update git-version-gen.cmd
2014-03-23 20:49:05 +00:00
Nekotekina 7bab42455b Minor fixes
cellAtrac faked
2014-03-23 23:43:37 +04:00
B1ackDaemon d1ffea0847 Merge pull request #113 from Nekotekina/master
Playable video
2014-03-22 23:09:00 +02:00
Nekotekina be80a7c39c SC_Lwcond fixed 2014-03-23 01:04:55 +04:00
Nekotekina d0ea397492 cellAtrac draft
sys_spu_thread_group_resume
Some bugs fixed
2014-03-22 15:08:07 +04:00
Dante38490 3701b2b551 Update git-version-gen.cmd
little change add adress website officiel
2014-03-22 11:45:59 +01:00
Nekotekina 169fcd098b Demuxer improvement 2014-03-22 05:08:25 +04:00
Nekotekina 5ea58d9451 ConLog unicode support improved 2014-03-21 19:06:08 +04:00
Nekotekina 39d1e21802 Fix slashes for Windows :p 2014-03-21 13:45:26 +04:00
Nekotekina cad7a05848 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-21 13:02:10 +04:00
Alexandro Sánchez Bach ad7ac17647 Small fixes in sceNpTrophy and cellSaveData
* Added cellSaveData.cpp to the project.
* Fixed wrong cellSaveData structs.
* Fixed compilation problem caused by the switch/case statements
introduced in sceNpTrophy and TROPUSR.cpp in the last commit
2014-03-21 00:46:27 +01:00
Alexandro Sánchez Bach f86ac251a8 TROPUSR Loader & sceNpTrophy stuff
* Added a loader for the TROPUSR.DAT files.
* Added a few structs/enums to sceNpTrophy.h
* Added more sceNpTrophy functions and updated other ones.
* Updated cellHddGame error codes in cellSysutil.h
* Added addresses of cellHddGame to cellSysutil_init.

NOTE:  There is a known problem in the `if
(!Emu.GetVFS().ExistsFile(filepath))` in `TROPUSRLoader::Load` which
causes the games to overwrite their TROPUSR.DAT file every time they
boot and they "forget" the unlocked trophies. However, as long as the
game is running the unlocked trophies should be still there.
2014-03-20 19:23:14 +01:00
Alexandro Sánchez Bach 834700eb24 Merge pull request #110 from Bigpet/master
stswi and lswi instructions
2014-03-20 02:56:56 +01:00
Peter Tissen f0e73a652f stswi and lswi instructions 2014-03-20 02:48:02 +01:00
Alexandro Sánchez Bach f0129382b9 Merge pull request #109 from Bigpet/master
Missed carry flag corrections and the rotate fixes
2014-03-20 01:03:59 +01:00
Peter Tissen 6e4203998a Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-20 00:51:58 +01:00
Alexandro Sánchez Bach cd4f0b2c68 Merge pull request #108 from Bigpet/master
added SUBFME, SUBFZE and fix cache folder creation
2014-03-20 00:10:12 +01:00
Nekotekina 87e016bdf0 RLWIMI, RLWINM and RLWNM fixed 2014-03-19 23:40:52 +01:00
Peter Tissen 5a1ce28105 fix carry errors 2014-03-19 23:40:49 +01:00
Peter Tissen acf955635f correct the subtraction instructions and try something more sensible for overflow detection 2014-03-19 18:13:52 +01:00
Alexandro Sánchez Bach 8c2aee5e64 cellHddGameCheck and some fixes
* Fixed wrong endianness in several structs.
* Fixed CreateFile-related bug in TRP Loader.
* Added cellHddGame (cellSysutil) structs and cellHddGameCheck.
2014-03-19 16:19:35 +01:00
Nekotekina a520934abd RLWIMI, RLWINM and RLWNM fixed 2014-03-19 18:47:28 +04:00
Peter Tissen 27bb41d652 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-19 14:38:42 +01:00
Nekotekina 38bfbe2c40 Audio decoding 2014-03-19 04:32:23 +04:00
Peter Tissen 2ddee26d83 add experimental subfme and subfze support and fix cache folder creation 2014-03-18 23:58:42 +01:00
Alexandro Sánchez Bach 37f7a31a22 Another small fix related with TextureBorderColor
TODO: Find an appropriate place for setting the GL_TEXTURE_BORDER_COLOR
parameter.
2014-03-18 18:27:11 +01:00
Alexandro Sánchez Bach 2601933bdc TextureBorderColor & cellFont problems fixed
* Fixed tabs/spaces problem in cellSysutil.h too.

NOTE: The problem with cellFont (crash on line 604) has been fixed, but
for a high price: There is now a huge memory leak when a NULL pointer is
passed to cellFontRenderSurfaceInit.
2014-03-18 17:45:26 +01:00
Alexandro Sánchez Bach fb38897b8f Merge pull request #105 from kacek/master
implemented  cellGcmsetTexture_BorderColor function
2014-03-18 13:00:35 +01:00
kacek 39dc6f0838 cellGcmSetTexture_BorderColor fix 2014-03-18 07:20:59 +01:00
kacek 4b14c72ed8 implemented cellGcmsetTexture_BorderColor function 2014-03-18 01:03:26 +01:00
Alexandro Sánchez Bach cf4501fe41 cellGame, cellSysutil and TRP installer improved
* TRP Loader and sceNpTrophyRegisterContext improved.
* cellSysutil constants moved to cellSysutil.h
* cellGameBootCheck bug fixed that makes size->hddFreeSizeKB be 0.
* Added system language selector (this is *not* RPCS3's language).
cellSysutilGetSystemParamInt(0x111) will return the selected language.

NOTE: The problems caused by the last commit (pull request #104 merged)
are not yet fixed.
2014-03-17 20:34:19 +01:00
Alexandro Sánchez Bach 9786c036d5 Merge pull request #104 from xsacha/master
Fix some strings for Linux
2014-03-17 18:13:10 +01:00
Nekotekina c4d9223034 event flag improvement (not finished)
Fixed empty SPU thread name issue
2014-03-17 19:07:47 +04:00
Sacha 6968137bbc Fix slashes for Linux 2014-03-17 23:41:15 +10:00
Nekotekina 475c3ff967 Merge https://github.com/elisha464/rpcs3 2014-03-17 13:17:12 +04:00
Nekotekina 4cbe3a2a46 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-17 13:16:43 +04:00
Nekotekina 1a1bed2258 Event flag partial implementation 2014-03-17 00:14:46 +04:00
Alexandro Sánchez Bach 39a717b239 Merge pull request #103 from xsacha/master
Linux build fix
2014-03-16 16:15:41 +01:00
Sacha a00f47b5e4 Linux build fix 2014-03-16 22:49:05 +10:00
Nekotekina 4aa6ddf3dd Weird MFC_PUTR_CMD handling 2014-03-16 01:33:19 +04:00
Nekotekina c9a421f12f SPU Thread Group-specific MMIO
LS access, SNR writing
2014-03-16 00:46:53 +04:00
Hykem 0a35c4f2c4 Added missing change. 2014-03-15 20:37:29 +00:00
Hykem c4a9c874d1 Improved FRES and FRSQRTE results (tested with ppu_fpu).
Implemented and improved several SC_Memory syscalls.

Started working in sceNp module.
2014-03-15 19:45:43 +00:00
B1ackDaemon 65eb873597 Merge pull request #102 from Nekotekina/master
Different changes
2014-03-15 18:03:55 +02:00
Nekotekina 60d922da11 DMA List commands
cellAudio: multiple queue support
sys_cond simplified
cellFsMkdir (?)
2014-03-15 19:43:14 +04:00
Nekotekina 024aa0660c Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-15 03:15:18 +04:00
Alexandro Sánchez Bach 6c4a980d36 Minor changes
* Fixed identation
* Make some parts of the code more readable.
2014-03-14 18:12:12 +01:00
Alexandro Sánchez Bach 48abfdfbb1 Merge pull request #101 from O1L/master
Minor changes.
2014-03-14 15:05:53 +01:00
O1L b0f6b03c38 Fixed crash on using NUll Audio Output, fixed possible crash in OpenAL exit and minor changes in cellAudioEventQueue functions. 2014-03-14 17:53:37 +03:00
O1L 50d49141b0 Conflicts fixed. 2014-03-14 16:50:50 +03:00
Nekotekina 2c447f686d sys_spinlock implemented 2014-03-13 20:11:16 +04:00
Nekotekina 2de22f0321 Fixed conflicts 2014-03-13 13:18:47 +04:00
Nekotekina 8cc6a287a7 Update 2014-03-13 13:17:45 +04:00
DH 0e437312ad Improved OpenAL audio output
Implemented LDBRX PPU instruction
Enabled FRSQRTE PPU instruction
Improved Fragment Program Decompiler
Implemented Log lvl selection
2014-03-13 02:26:53 +02:00
Alexandro Sánchez Bach 80cfb2eb58 cellGame functions & MULHD(U) warn. disabled 2014-03-12 23:34:35 +01:00
Alexandro Sánchez Bach fb1b57720c Merge pull request #100 from O1L/master 2014-03-11 20:14:39 +01:00
elisha464 62f9d454eb Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-11 21:00:21 +02:00
elisha464 c08c5eef10 disabled a few stuff and changed color to white before rendering to main window (fix fw_stencil_reflect) 2014-03-11 20:52:14 +02:00
Alexandro Sánchez Bach 5c563d04c7 Merge pull request #99 from xsacha/master
Linux build fix
2014-03-11 19:29:28 +01:00
elisha464 9194b73a81 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-11 19:57:31 +02:00
O1L a31160fe99 Fix converting audio data. Implemented some cellFsStRead functions. 2014-03-11 20:45:15 +03:00
Alexandro Sánchez Bach b31a990cf1 cellUserInfo module added & cellFsReadWithOffset 2014-03-11 18:40:37 +01:00
Sacha 5f3f7e197a Linux build fix. 2014-03-12 02:36:58 +10:00
Nekotekina b7b33145f6 Compilation fix 2014-03-12 02:36:58 +10:00
Nekotekina 7f7d5a57c8 rldcr, rldcl instructions
Some intructions fixed
2014-03-11 20:20:01 +04:00
Alexandro Sánchez Bach d5e94d4cd9 Some sys_net functions
* sys_net; Added some functions using winsock.h | sys/socket.h
* sys_net: Renamed overloaded function/structs "*" to "sys_net_*"
* Added SetAddr function to mem_base_t
2014-03-11 15:42:28 +01:00
Nekotekina 7984df37c3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-10 20:24:15 +04:00
DHrpcs3 d90d2f2df7 Merge pull request #98 from lioncash/out-of-bounds-fix
Fix a case where an array is read out of bounds in cellSpurs.cpp
2014-03-10 16:11:46 +02:00
Lioncash 1aa6e5df95 Fix a case where an array is read out of bounds in cellSpurs.cpp 2014-03-10 03:28:17 -04:00
Nekotekina a33575b115 Compilation fix 2014-03-10 03:07:53 +04:00
Alexandro Sánchez Bach b46cb71324 Merge pull request #97 from xsacha/master
Fix slashes in OpenAL includes
2014-03-09 17:37:41 +01:00
Sacha bde5c9cfed Fix slashes in OpenAL includes 2014-03-10 00:44:12 +10:00
Alexandro Sánchez Bach 8461bee32e Updates in cellL10n and sceNpTrophy
* UTF16stoUTF8s updated.
* Added missing return in sceNpTrophyRegisterContext.
* Added sceNpTrophyGetGameInfo.
2014-03-09 04:57:19 +01:00
Alexandro Sánchez Bach 2f65e84562 Merge pull request #94 from Nekotekina/master
Different changes
2014-03-08 00:20:43 +01:00
Nekotekina 75f535c947 Conflicts fixed 2014-03-08 03:02:59 +04:00
Hykem fdf935afe9 Merge pull request #93 from O1L/master
Implemented OpenAL audio output.
2014-03-07 22:46:55 +00:00
O1L df894c05b2 Implemented simple OpenAL audio output. Structures and enum's from cellAudio.cpp moved to cellAudio.h . Audio dump functions moved in AudioDumper class. 2014-03-08 02:15:39 +03:00
Nekotekina 1c302433af cellSpurs draft added 2014-03-08 01:31:08 +04:00
Nekotekina 3a00ec7682 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-07 16:04:14 +04:00
Nekotekina 3127543b6e sys_ppu_thread_join, sys_ppu_thread_exit fixed
Some diagnostic messages in mutexes
2014-03-07 16:03:42 +04:00
elisha464 0edd70d3d8 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-07 09:10:29 +02:00
Alexandro Sánchez Bach 4af648905c Merge pull request #91 from Bigpet/master
respect the outputBytesPerLine parameter
2014-03-07 04:23:08 +01:00
Peter Tissen 3871134a49 respect the outputBytesPerLine parameter if it's longer than the natural length of the PNG file 2014-03-07 04:15:56 +01:00
elisha464 e32a6a2eea Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-06 19:46:23 +02:00
Alexandro Sánchez Bach 898fbf02b8 Fixes in sceNpTrophy and FSEL (PPU instr.) 2014-03-06 13:27:58 +01:00
Nekotekina fac86aae58 Conflicts fixed (again) 2014-03-06 15:55:50 +04:00
Nekotekina 05c6a96d27 Conflicts fixed 2014-03-06 15:50:45 +04:00
Nekotekina e86a849600 libmixer draft
and some hacks
2014-03-06 15:40:50 +04:00
Alexandro Sánchez Bach d6596ca453 Progress in cellL10n
* cellL10n added to the project.
* Function addresses added to cellL10n_init.
* UTF16stoUTF8s implemented (WARNING: I haven't tested it).
2014-03-06 09:48:35 +01:00
Alexandro Sánchez Bach 39d3814be7 Changes in cellRtc & sceNpTrophy
* Two header files added: cellRtc.h and sceNpTrophy.h
* Changes in sceNpTrophyCreateContext.
* Implemented sceNpTrophyGetTrophyInfo.
2014-03-06 01:52:23 +01:00
Nekotekina 384536ba4f prx_mem memory leak fixed
CPUThread::ExecAsCallback (experimental)
2014-03-04 23:18:17 +04:00
Alexandro Sánchez Bach 8204deaae6 Minor changes
* Fixed some forgotten `!` in cellFsGetFreeSize.
* Fixed VSUM2SWS opcode.
* Added cellNetCtl to the project.
* Implemented cellNetCtlGetState.
2014-03-04 15:40:15 +01:00
Alexandro Sánchez Bach bc77f27bb2 Merge pull request #90 from Aishou/master
Linux compilation fixes
2014-03-04 15:18:12 +01:00
Aishou d32025ae3c more fixes... 2014-03-04 09:37:28 +01:00
Nekotekina b32a8e2e28 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-04 03:36:45 +04:00
Nekotekina 8a4c67deab It can play video, but it can't
I don't know how to disable aggressive data caching that occures in
vdecRead(). Also ReleaseAu function is disabled because it breaks
everything.
2014-03-04 03:21:34 +04:00
elisha464 11571cf2a4 fix memory alignment
added eaIOMap with flags (draft)
changed gcmInit to throw an error when not being able to map to io address
2014-03-03 22:45:27 +02:00
Aishou 354cf24302 fix gcc compile... 2014-03-03 14:51:54 +01:00
Aishou bd45704c83 merge branch 'master' of https://github.com/DHrpcs3/rpcs3 into crypto 2014-03-03 14:42:21 +01:00
Alexandro Sánchez Bach 05db17b2b0 Fixed x64 compilation errors & cellFsGetFreeSize 2014-03-03 14:16:42 +01:00
Aishou caa797cee3 not sure about it.. but compiles.. 2014-03-03 12:05:15 +01:00
Aishou 85626024a0 fix gcc complain about non-const reference... 2014-03-03 11:44:00 +01:00
Hykem 4770e5af08 Fixed AboutDialog (changed in last commit). 2014-03-03 04:59:22 +00:00
Hykem a1adc6cdaa First installment of RPCS3's custom crypto engine:
- Removed all scetool dependencies;
- Implemented a key vault to manage PS3 keys internally;
- Implemented SELF decryption;
- Improved PKG handling.

Notes:
- NPDRM SELF files (EBOOT.BIN) can also be decrypted. A valid matching RAP file must be placed under the dev_usb000 folder.
- The source code is considerably commented and several debugging functions were also added in order to aid anyone who wishes to contribute to the engine.
2014-03-03 04:48:07 +00:00
Nekotekina c064c701e2 cellAdec draft 2014-03-03 03:02:42 +04:00
Alexandro Sánchez Bach 6fcead2a0e Merge pull request #89 from Nekotekina/master
...
2014-03-02 14:37:06 +01:00
Aishou 851acfdbf3 add ffmpeg to link.. 2014-03-02 13:00:57 +01:00
Aishou bea8be29d5 get ffmpeg working with cmake.. 2014-03-02 12:55:20 +01:00
Aishou 7a1d44b552 Merge https://github.com/Nekotekina/rpcs3 2014-03-02 11:57:17 +01:00
Aishou b4712c0dca Merge remote-tracking branch 'upstream/master' 2014-03-02 11:50:07 +01:00
Nekotekina c978fe377d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-02 10:24:18 +04:00
Nekotekina 9e62b330b1 I cannot do anything 2014-03-02 03:50:47 +04:00
Alexandro Sánchez Bach 1e53c7f244 Reverted 'Unimpl.' warning on some SPU instr.
I'm sorry. I deserve punishment and torture for this.
2014-03-01 20:29:26 +01:00
Aishou e0d3f1cae6 Merge remote-tracking branch 'upstream/master' 2014-03-01 19:59:36 +01:00
Alexandro Sánchez Bach 6c28753dae Minor fixes: SPU, sys_mmapper, and cmd-line args.
* Some SPU instructions updated:
- Updated wrong instructions: SHLH, FRDS
- Added UNIMPLEMENTED warning to: HBR, HBRA, HBRR
* Updated sys_mmapper_allocate_memory declaration in SysCalls.h
* Added sceNp.cpp to project
* Added checkbox in the Settings menu for exiting RPCS3 when
sys_process_exit (SC_Process.cpp) is called. Unfortunately, due to some
problems, this checkbox doesn't have a real effect yet.
2014-03-01 19:33:40 +01:00
Alexandro Sánchez Bach 7f7ad1b661 Few functions added
* sceNpManagerGetStatus
* sys_mmapper_free_memory
* Minor changes in sys_mmapper_allocate_memory
* Changed the layout of the sys_vm functions in SysCalls.cpp
2014-03-01 19:33:39 +01:00
Alexandro Sánchez Bach cd10dca71f RPCS3 arguments, TTY to file & sceNpTrophy stuff 2014-03-01 19:33:38 +01:00
Aishou d418cceae4 fix the typo. 2014-03-01 15:32:15 +01:00
Nekotekina 4828723d5c Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-03-01 12:39:42 +04:00
Nekotekina 17fa60c31c Vpost draft 2014-03-01 12:38:50 +04:00
Aishou fd564159b5 gcc.. 2014-02-28 20:21:52 +01:00
Aishou 377db4515a Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	Utilities/BEType.h
2014-02-28 19:55:48 +01:00
Alexandro Sánchez Bach 6a15351363 Merge pull request #88 from Bigpet/master
fix small mistakes
2014-02-28 19:39:43 +01:00
Peter Tissen dbc39bce40 fix small mistakes
fix endian mistakes, mistaken word length and preprocessor mistake
2014-02-28 19:36:19 +01:00
Alexandro Sánchez Bach 38fbd190b0 Merge pull request #87 from elisha464/master
minor rsx fixes
2014-02-28 14:23:14 +01:00
Nekotekina f3a3a630c3 Merge branch 'master' of https://github.com/elisha464/rpcs3 2014-02-28 13:53:46 +04:00
elisha464 1ab5bc40a0 fixed colors on scogger 2014-02-28 11:19:56 +02:00
Nekotekina dbdae77780 Some errors fixed 2014-02-27 22:25:32 +04:00
elisha464 d0300e5f43 fix alpha test 2014-02-27 19:47:08 +02:00
elisha464 5fbc190c80 fixed flipped colors on some homebrews 2014-02-26 23:24:57 +02:00
Nekotekina 8b952bf98c memcpy partially replaced
Fixed one of exit issues
2014-02-26 18:06:13 +04:00
Aishou f85420b343 small compile fixes 2014-02-26 14:24:41 +01:00
Nekotekina 8bd0ee875c Fixed conflicts 2014-02-26 15:27:06 +04:00
Nekotekina 8048c70bc8 cond/lwcond fixed 2014-02-26 14:35:30 +04:00
Nekotekina 0bd5dc5363 Demuxer improved, cellPamf improved
File reading improved
2014-02-26 11:51:00 +04:00
Alexandro Sánchez Bach 681c3c53f0 cellPad modifications
* Using be_t on cellPad structs.
* Swapped Square and Circle default keys (they were inverted).
2014-02-25 14:09:44 +01:00
Alexandro Sánchez Bach 2827db0e2a Using be_t in some cellGcm structs & minor fixes
* Using be_t in CellGcmControl, CellGcmConfig, CellGcmContextData and
CellGcmTileInfo.
* Fixed wrong names in Emu/SysCalls/Modules/sceNp.cpp
* Fixed ConLog's mount info strings in System.cpp
2014-02-24 17:03:47 +01:00
DHrpcs3 d9d80d8fb4 Merge pull request #83 from Bigpet/master
Make buildable with GCC in Linux
2014-02-24 09:14:21 +02:00
Alexandro Sánchez Bach 7379b0e2ed Minor changes: GCM command, PKG loader & SysCalls
* Fixed incorrect time displayed on NV4097_GET_REPORT.
* Fixed small bug in PKGLoader::UnpackEntry
* Moved some code in SC_Time.cpp
* Auxiliary function declarations of SC_Time.cpp in SC_Time.h
* Updated cellFsUnlink. *This won't work until ExistsFile is fully
implemented*.
2014-02-24 07:54:42 +01:00
Peter Tissen 1908286e7c make things compile under windows again, there's still some ugly ifdefs
I'd like to get rid of
2014-02-24 01:51:55 +01:00
Nekotekina a14276abf1 Work on demuxer, ffmpeg libs linked 2014-02-24 04:00:42 +04:00
Bigpet 92fb77d50e more merge fixes, I should really compile it before submitting a pull request 2014-02-23 20:40:12 +01:00
Bigpet aef3b24c8d fix small type mismatch 2014-02-23 18:23:14 +01:00
Bigpet 1be8563fdb fix small merge mistake 2014-02-23 18:21:10 +01:00
Bigpet bebf027e0b merge newer changes 2014-02-23 18:13:08 +01:00
Bigpet 9a30ce5f18 Make buildable with GCC in Linux
* replace GetThreadID with std::this_thread.getId()
* name all anonymous structs and unions that contain non-trivially constructable objects
* made default constructor for big endian type noexcept to make it work with std::atomic
* move instantiated specialized template function members ouside of the class definition to comply with the standard
* added default instantiation for template parameter "=nullptr"
* used the C++11 standardized thread_local instead of the __declspec(thread)
* added transitional definitions to bridge the microsoft specific calls (compare and exchange and aligned alloc)
* removed cyclic dependency between Emulator->CPUThreadManager->CPUThread->SMutex->Emulator->...
* fixed some instances of indentation by space instead of tabs
* surrounded some unused code with an #if 0 block to make sure it doesn't compile
2014-02-23 17:52:52 +01:00
Alexandro Sánchez Bach 696e00a570 Merge refactoring branch & Krofna's pull req. #46 2014-02-23 02:39:46 +01:00
Nekotekina 8df7f49b55 ffmpeg submodule added 2014-02-22 21:42:23 +04:00
DH 81b19057bb Implemented audio Dump To File
Fixed MFOCRF, MTOCRF, MTCRF
Minor fixes
2014-02-22 14:06:23 +02:00
DHrpcs3 7c6c20ef18 Merge pull request #82 from Nekotekina/master
Event, audio, SPU fixes
2014-02-22 10:54:32 +02:00
DH 05184d2e71 Improved GameViewer
GameViewer use VFS.
Implemented be_t increment / decrement
Implemented se
Improved sys_fs syscalls.
2014-02-22 04:53:06 +02:00
Nekotekina b56df0c7f6 New functions
sys_spu_thread_bind_queue, sys_spu_thread_connect_event and SPU-side
sys_spu_thread_receive_event, sys_spu_thread_send_event
Fixed event system
Fixed SleepQueue priority alg
Audio: cellAudioGetPortTimestamp and cellAudioGetPortBlockTag
2014-02-22 04:26:50 +04:00
Bigpet 07135570f4 merge branch 2014-02-21 20:36:22 +01:00
Alexandro Sánchez Bach e7a721a1fb Merge pull request #46 from krofna 2014-02-21 17:13:57 +01:00
Alexandro Sánchez Bach 17b877e448 Minor changes in RSXTexture.h and PKG Loader
* Moved RSXTexture from RSXThread.h to RSXTexture.h
* Renamed RSXTexture::Getmipmap to RSXTexture::GetMipmap
* Used more GCM texture format constants in GLGSRender.h
* PKG Loader: Added an "Overwrite?" dialog in case the folder
dest+titleID (i.e. "/dev_hdd0/game/"+titleID) already exists. Note that
in that case, the game won't be installed regardless of the option you
choose on the dialog.
2014-02-21 14:21:08 +01:00
Alexandro Sánchez Bach 5f9e60c45f PKG Loader rewritten
* Rewritten unpkg.c -> Loader/PKG.cpp
* MainFrame::InstallPkg now *only* installs the PKG.
* Fixed crash when unpacking big debug PKG files.
* Debug PKGs are no longer recrypted.
* 'About...' dialog updated to remove PKG-related notice.
* Unpkg removed.

NOTE: The class PKGLoader is using wxWidgets functions to access the
files. I think VFS would be better, but the Emulator isn't necessarily
running when installing the PKG. In the other hand, initializing VFS
with RPCS3 may be somewhat risky... Any alternatives?

TODO: Get rid of the decrypted "*.dec" files, and try to decrypt and
read contents of the PKG on the fly using the information stored in
m_entries.
2014-02-21 02:35:33 +01:00
Nekotekina 81147506f0 Event fix, cellAudio fix 2014-02-21 00:47:22 +04:00
Nekotekina 08b4748aae cellAdec, cellVpost headers 2014-02-20 16:13:02 +04:00
Nekotekina 9351e50f63 Minor changes, some bugs fixed
cellVdec headers, cellFsAioRead review, sync stuff review, cellAdec and
cellVpost
2014-02-20 06:16:17 +04:00
DH d6fe398f79 Implemented RSXThread OutOfArgsCount notification. 2014-02-20 01:39:47 +02:00
Alexandro Sánchez Bach 8fedbd204e Merge pull request #81 from elisha464/master
small fix, makes scogger run
2014-02-19 23:50:53 +01:00
elisha464 ab4c4c2fd2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-20 00:41:32 +02:00
elisha464 45452c57c4 fixed MFOCRF 2014-02-20 00:38:47 +02:00
DH b1df7444a4 Minor fixes 2014-02-19 19:27:52 +02:00
Alexandro Sánchez Bach 83a7c83761 Moved some lines and deleted old code
* Removed Compiler ELF references from rpcs3.cpp
* Reordered the menu bar lines.
* Moved the construction of some panels of MainFrame from rpcs3.cpp to
MainFrame.cpp
2014-02-19 05:33:31 +01:00
Alexandro Sánchez Bach b85a86b225 RSX Debugger: Shader program editor
* Added checkbox in the Settings dialog for logging/editing shader
programs.
* Added "Programs" tab to the RSX Debugger. Double-click on the entries
to view/edit the shaders. Click on "Yes" after closing the editor will
recompile your program even if no changes were done.
* Replaced "Ctrl+C" shortcut for running the emulator with "Ctrl+E" to
avoid accidentally unpausing the emulator when copying text.
* Added glDetachShader to GLProcTable.tbl

NOTE: There is a known bug: For some reason, certain shaders refuse to
compile again, even if you save the original shader as the "new" one.
2014-02-19 01:41:57 +01:00
Alexandro Sánchez Bach 51613df455 Merge pull request #80 from Nekotekina/master
Sync changes, simple file output for sound
2014-02-18 20:57:32 +01:00
Nekotekina d849e083b6 Small changes 2014-02-18 22:45:51 +04:00
Alexandro Sánchez Bach 22558df68e Merge pull request #79 from elisha464/master
vertexShaderDecompiler fix
2014-02-17 22:10:08 +01:00
elisha464 7f7b12a6dd a small fix in vertexShaderDecompiler (fixes scogger loading screen) 2014-02-17 23:05:59 +02:00
elisha464 07c9fbee7f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/Emu/GS/GL/GLGSRender.cpp
	rpcs3/Emu/GS/GL/GLGSRender.h
	rpcs3/Emu/GS/RSXTexture.cpp
	rpcs3/Emu/GS/RSXThread.cpp
	rpcs3/Emu/GS/RSXThread.h
	rpcs3/Gui/RSXDebugger.cpp
	rpcs3/rpcs3.vcxproj.filters
2014-02-17 19:27:17 +02:00
Alexandro Sánchez Bach ab25edfacc Few source-code improvements
* Fixed identation inconsistency after last merge.
* Replaced uint32_t with u32 in LinearToSwizzleAddress.
* Replaced hardcoded values with defined GCM constants (in Emu/GS/GCM.h)
in some switch statements.

This commit won't produce any changes in the RPCS3 executable. It's just
to make the code easier to read.
2014-02-16 22:17:56 +01:00
Nekotekina 931929a82c Fixed conflicts 2014-02-16 21:57:36 +04:00
DH bd8ff4ca11 Fixed cellFsOpen & cellFsOpendir 2014-02-16 17:37:32 +02:00
Nekotekina 4375b9dd2a Audio port output in .wav file 2014-02-16 19:23:58 +04:00
DH 321d323beb Improved VFS
- Implemended vfsDir.
- Improved vfsDevice.
- Improved vfsFile.
2014-02-16 17:19:06 +02:00
DH 5d59dae730 Fixed RSXDebugger 2014-02-16 11:39:03 +02:00
DH a7368cc893 Merged elisha464 branch 2014-02-16 10:56:58 +02:00
DH 01f3763eb4 Small fixes 2014-02-16 10:28:32 +02:00
Alexandro Sánchez Bach 3fdb50b0ea Some sceNpTrophy syscalls and few fixes
* Restored deleted functions in FuncList.cpp
* Fixed bugs in TRPLoader.
* Implemented some sceNpTrophy syscalls.
* Added sceNp headers (required for sceNpTrophy).
* Updated .gitignore to ignore trophies.

NOTE: Thanks to the new sceNpTrophy syscalls, RPCS3 can install the
trophy contents in dev_hdd0/home/00000001/trophy/. Remember this is
still on an experimental stage.
2014-02-16 02:51:04 +01:00
Nekotekina 848c5dadf0 Fixed some problems 2014-02-16 01:16:35 +04:00
elisha464 5590efe054 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/Emu/GS/GL/GLVertexProgram.cpp
	rpcs3/rpcs3.vcxproj.filters
2014-02-15 13:05:16 +02:00
B1ackDaemon 700698247a Merge pull request #77 from Bigpet/SysCacheImpl
Basic sys cache implementation
2014-02-15 08:13:31 +02:00
Peter Tissen bdc8eba3bb Add cache support
also added tentative blocksize and sys_game_procexit support

added final cache support and improved the process chainloading error messages

don't ignore cache directory in the .gitignore

add warning for clearing cache
2014-02-15 01:51:59 +01:00
Peter Tissen f3ad989e34 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-15 01:44:18 +01:00
Alexandro Sánchez Bach deaedcb6fa TRP Loader and undo few cellGame changes 2014-02-15 01:06:12 +01:00
Alexandro Sánchez Bach f2a3db0bd8 Merge pull request #76 from Bigpet/master
Fix stepping a little better than last time
2014-02-14 21:09:24 +01:00
Nekotekina e066bcf261 Small cellAudio update 2014-02-15 00:08:02 +04:00
Peter Tissen b5d588a40b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-14 20:50:25 +01:00
Peter Tissen f179bd4cd7 fix stepping a little better than last time 2014-02-14 20:50:02 +01:00
Alexandro Sánchez Bach e03d274071 Merge pull request #75 from Bigpet/master
Undo thread behavior changes and add html subproject to dependencies.
2014-02-14 18:17:04 +01:00
Peter Tissen 8bf8c7e6e9 undo thread behavior changes and add html subproject to dependencies. 2014-02-14 18:14:14 +01:00
elisha464 f7967f97ec flipped frame buffer 2014-02-14 14:50:41 +02:00
Nekotekina e94ea409fe sys_lwcond, sys_mutex, sys_cond rewritten
Some bugs fixed
2014-02-14 15:40:41 +04:00
Alexandro Sánchez Bach 82e0bbebdb Fixed few warnings and typos 2014-02-14 01:30:15 +01:00
Alexandro Sánchez Bach 209155d71d Merge pull request #72 from Bigpet/master
Fix "Go to Adress" and Stepping
2014-02-14 00:17:25 +01:00
Peter Tissen 6fbd4d3daf Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-14 00:10:58 +01:00
Peter Tissen 11ba83738f make stepping work again, it's impossible to use it without these changes 2014-02-14 00:08:32 +01:00
Alexandro Sánchez Bach eb93e87b7f Logging CheckBox, cellGame stuff and other fixes
* cellGameContentPermit and cellGameBootCheck updated.
* Checkbox in the Settings dialog, for enabling logging.
* Fixed GUI issue in the InterpreterDisAsmFrame.
* Fixed -dirty flag in wxWidgets submodule.
2014-02-13 20:05:23 +01:00
Alexandro Sánchez Bach 2b63888782 Merge pull request #71 from Nekotekina/master
Log fixes
2014-02-13 18:10:36 +01:00
elisha464 6846d15dc8 more rsx texture (filters)
implemented deswizzling of textures (only one format for now, a fix for multiple context sample)
2014-02-13 19:02:46 +02:00
Nekotekina 5a240c32a9 log fixes (to wx_str()) 2014-02-13 20:59:13 +04:00
Nekotekina a6faf04db4 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-13 15:57:34 +04:00
Alexandro Sánchez Bach 373d189edb Merge pull request #70 from Nekotekina/rpcs3
and conflicts fixed.
2014-02-13 12:13:05 +01:00
Alexandro Sánchez Bach 5953781c13 Few bugs fixed and license file added
* Fixed GUI issues caused by the update to wxWidgets 3.
* Fixed small bug in SC_TTY (thanks Nukem9!)
* Added GPL v2 license file.
2014-02-13 11:33:07 +01:00
Nekotekina 77ec2c954f Trying to fix merge conflicts... 2014-02-13 12:39:58 +04:00
Alexandro Sánchez Bach 256ee2ff8a Merge pull request #68 from Bigpet/master
Remove the outdated gl.lib reference
2014-02-12 22:18:12 +01:00
Peter Tissen 39e72fc3cc add the dependencies config for rpcs3, so that wxwidgets gets automatically build to build rpcs3 2014-02-12 22:08:03 +01:00
Peter Tissen d3f4b086c6 add the x64 library directory correctly 2014-02-12 21:57:37 +01:00
Peter Tissen de95ac3adb remove the outdated gl.lib reference, if this causes new linker issues we need to add the right name to the vcxproj instead 2014-02-12 21:46:23 +01:00
Alexandro Sánchez Bach 3a9b5afe30 Merge pull request #67 from Bigpet/master
change submodule to DHrpcs3
2014-02-12 21:09:12 +01:00
Peter Tissen b8400cbe63 change submodule to DHrpcs3 2014-02-12 21:07:44 +01:00
Nekotekina 460d948e87 Event system rewriting, EventManager partially implemented
cellAudio partially rewritten, some bugs fixed
2014-02-12 23:03:14 +04:00
Alexandro Sánchez Bach e9b3c4b5f6 Merge pull request #66 from Bigpet/wxWidget3Port
wxWidgets3 port
2014-02-12 19:54:41 +01:00
Peter Tissen 1400625648 add submodule instructions and bump submodule version 2014-02-12 19:23:33 +01:00
Alexandro Sánchez Bach 8adf19c904 Few module functions added
Implemented:
* cellSysutilApGetRequiredMemSize
* cellGameContentErrorDialog

Binded lv2 SysCall 814 to cellFsUnlink
2014-02-11 03:47:25 +01:00
Peter Tissen b05e466e8f clean up more output conversions, everything that wants to get printed needs to be explicitly convertex to the wxCharType otherwise the VFormat prints nothing 2014-02-10 19:51:03 +01:00
elisha464 48115b153e more rsx texture (control1)
and fixed crash of rsx debugger
2014-02-10 18:34:30 +02:00
Peter Tissen 427a63f324 remove commented out code 2014-02-10 17:16:35 +01:00
Peter Tissen 7423997b42 convert Dbg console packets uniformly to char* 2014-02-10 17:13:38 +01:00
elisha464 bc38af04a5 implemented viewport scale and offset (but everything seems to flip now :( ) 2014-02-10 17:57:32 +02:00
Peter Tissen b9c3dc352d use .wx_str() instead of .mb_str(), Dbg console is still broken 2014-02-10 13:53:09 +01:00
elisha464 c2ec1cb709 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/rpcs3.vcxproj.filters
2014-02-10 14:47:15 +02:00
Peter Tissen fdcdd7769f use the unicode version of the regex lib, don't know why the releas config links against it while debug doesn't 2014-02-10 11:19:48 +01:00
Peter Tissen bf26e069b8 use relative paths again to include the wxWidgets stuff 2014-02-10 03:00:02 +01:00
Peter Tissen 3f52a6aa50 prevent overflow becaus wxStrings aren't \0 terminated anymore 2014-02-10 02:43:24 +01:00
Peter Tissen b9abb1e075 merging vfs changes because I need to fix wxstring reads 2014-02-10 02:23:40 +01:00
Peter Tissen 59dcbd3ba3 make it compilable, don't merge this, string logs are broken and paths absolute to my machine 2014-02-10 02:13:13 +01:00
Alexandro Sánchez Bach 4d98826259 Directory-related functions implemented
* cellFsOpendir, cellFsReaddir, cellFsClosedir functions implemented.
* vfsDirBase: m_entryes, GetEntryes renamed to m_entries, GetEntries
respectively.
* vfsLocalDir: Read() function added to get the entries one by one.
* Moved IsExists() from vfsLocalDir to vfsDirBase to avoid "R6025 pure
virtual function call" error.
* Other minor changes in some functions of sys_fs
2014-02-09 22:53:48 +01:00
Peter Tissen 6dcfaf8617 add wxWidgets repository as a submodule 2014-02-09 22:03:38 +01:00
Peter Tissen 30df3727c2 delete submodules again 2014-02-09 21:51:01 +01:00
Peter Tissen 145450964a add wxWidgets submodule 2014-02-09 21:48:23 +01:00
Peter Tissen 8f7ceee36a remove local copy of wxWidgets 2014-02-09 21:45:53 +01:00
Alexandro Sánchez Bach 27a4e6a2b6 Merge pull request #65 from Bigpet/master
Update Readme with some links to the wiki and forums
2014-02-09 18:55:15 +01:00
Peter Tissen d85c26aa8b Update Readme with some links to the wiki and forums 2014-02-09 18:44:04 +01:00
Alexandro Sánchez Bach 4ebd974f5e Merge pull request #64 from Nekotekina/master
Last changes
2014-02-09 14:50:35 +01:00
Nekotekina 3308fefa7f Small changes
lwmutex completely implemented
2014-02-09 15:11:48 +04:00
Alexandro Sánchez Bach 66a9acfb04 cellFont rendering functions
-Now, all the games using rendering text using
cellFontRenderCharGlyphImage and all the related functions should work,
or at least don't crash.

-There are still issues with the character position on surface, and in
some cases, it renders the text with a different font than the one the
game specified. A lot of cellFont stuff is still missing or may be not
properly implemented.

-For games using system-embedded fontsets you have to find a *legal* way
to copy the .TTF files from your PS3 into dev_flash/data/font.
2014-02-09 12:07:50 +01:00
Nekotekina ed40732e7b Reservation review
Minor changes
SC_Event_flag.cpp module detached
2014-02-08 01:55:25 +04:00
Nekotekina 6c606be09f Reservation implemented
Some SPU bugs fixed;
sys_spu_thread_get_exit_status
sys_spu_thread_group_destroy
2014-02-07 02:55:48 +04:00
DHrpcs3 ce88a4fc9a Merge pull request #63 from O1L/master
Improved UnPkg.
2014-02-07 00:40:45 +02:00
O1L 74426fd4e9 Minor changes 2014-02-06 22:34:05 +04:00
O1L e0737204fd Use _ftelli64 and _fseeki64 instead ftell and fseek in unpkg, required to unpacking big files (> 4 Gb). Deleted wxMoveDir() (not needed now :P ) and added simple progress bars in unpkg. 2014-02-06 20:58:42 +04:00
elisha464 c515cb8fb6 more rsx texture (address, control0, image rect) 2014-02-05 22:48:30 +02:00
Nekotekina cfe154d916 Small changes, some bugs fixed 2014-02-05 15:55:32 +04:00
elisha464 d2bd0b0ccf Copy Paste :P (thnx AlexAletra) 2014-02-04 18:47:31 +02:00
Nekotekina aeca523a34 Small changes 2014-02-04 00:23:05 +04:00
elisha464 ad4ad4e55d started fixing the rsx textures
offset and format are done
2014-02-03 18:11:47 +02:00
Nekotekina 311486ed79 Fixed thread issues
Fixed args passing
Fixed thread stopping/pausing (temporarily)
Fixed problems with SC_Condition and SC_Mutex (partially)
2014-02-03 17:12:25 +04:00
Nekotekina a0c8e116df Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-03 01:20:48 +04:00
DH 8ba8d35541 Fixed compilation errors. 2014-02-02 22:47:17 +02:00
Nekotekina 7fce5589f8 Memory alignment fix
Some mutexes added, _sys_heap_memalign implemented
2014-02-02 23:49:10 +04:00
DH beb19633e9 Implemented vfsLocalDir & vfsDirBase.
Improved ThreadBase.
Minor fixes.
2014-02-02 21:42:32 +02:00
elisha464 8467d8c8c7 fixed clamping of texture_border 2014-02-01 18:44:19 +02:00
elisha464 39bb6d3b2b Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-01 16:15:42 +02:00
elisha464 da8cd146eb change warning to log in lwmutex 2014-02-01 16:15:24 +02:00
elisha464 79c2654a8c fixed problem of textures being disabled after every end command 2014-02-01 14:54:55 +02:00
elisha464 bff084c233 fix WriteDepthBuffer and scissoring 2014-02-01 13:10:57 +02:00
Nekotekina 15dd0bb0f2 Oops 2014-02-01 14:19:15 +04:00
Nekotekina b602260314 Some typos fixed (thanks to Nukem9)
cellSysutilCheckCallback() modified, some warnings converted
2014-02-01 14:17:15 +04:00
DHrpcs3 16c284214f Merge pull request #60 from elisha464/master
fragmentDecompiler fix
2014-01-31 23:30:22 -08:00
elisha464 9526ff37b9 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-01 00:16:43 +02:00
B1ackDaemon 31c0687fc0 Merge pull request #59 from Nekotekina/master
New sync primitives
2014-01-31 14:09:32 -08:00
Nekotekina 9919154d66 Afterfix 2014-02-01 02:07:37 +04:00
elisha464 985b27daab Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-02-01 00:02:10 +02:00
Nekotekina 6553909dc5 Fixed conflicts 2014-02-01 01:56:44 +04:00
Nekotekina 67601bd639 Small changes 2014-02-01 01:35:48 +04:00
DH d93ce95a36 Small fixes 2014-01-31 22:54:26 +02:00
elisha464 678e455b4f fixed fragment decompiler
when adding a const, I added a check to see if it already exists
2014-01-31 22:44:35 +02:00
DH 4b8d6b6919 Improved ThreadBase.
Improved Vertex Shader Decompiler.
2014-01-31 20:40:18 +02:00
Nekotekina 432c6cf206 Small changes
SC_FUNC changes (done by DH)
PPUInterpreter changes (copied from main, done by elisha464)
Log() using fixed
2014-01-31 16:46:49 +04:00
Nekotekina 6efe751d4c Bugs fixed, lwcond implementation
Modules: mutex added
2014-01-31 03:40:05 +04:00
Nekotekina 67a144df2a SC_Rwlock implementation, SC_Lwcond draft
Other small changes
2014-01-30 00:31:09 +04:00
Alexandro Sánchez Bach d07b5f0dc8 Merge pull request #58 from elisha464/master
Fixed some vector instructions and a small fix in the fragment shader decompiler
2014-01-28 11:41:27 -08:00
elisha464 7e591deaf3 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-28 20:02:20 +02:00
elisha464 3209b2f5f3 fixed VPREM and VSLDOI 2014-01-28 20:01:44 +02:00
elisha464 057efb48fa fix problem where there was black quads instead of text in fw samples 2014-01-26 23:08:09 +02:00
elisha464 543ed01642 delete m_main_mem_addr 2014-01-26 23:07:14 +02:00
Alexandro Sánchez Bach 211a477864 Merge pull request #57 from Nekotekina/master
Update: lwmutex reimplementation, cellPamf update, cellDmux draft, small changes in PPU interpreter
2014-01-25 15:17:15 -08:00
Nekotekina 4de64e5afe FDs fix 2014-01-26 02:53:02 +04:00
Nekotekina 88208f5e01 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-26 00:42:53 +04:00
Alexandro Sánchez Bach 09387879a0 Merge pull request #56 from elisha464/master
changed RSXThread to use the IO Memory

The datatype args didn't work for a certain part of RSXThread, because it tried to read from memory directly, but I needed it to you se read32 of the memorybase so it can reach the virtual memory block and in the end the real address.
2014-01-23 16:35:47 -08:00
elisha464 e8d00e6bbd Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-24 02:28:04 +02:00
elisha464 824fd46062 forgot some stuff :P 2014-01-24 02:26:08 +02:00
elisha464 8e9dcd279a changed everything to use the new IO address space 2014-01-24 01:22:56 +02:00
Nekotekina fc3f5348b8 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-24 00:38:29 +04:00
Alexandro Sánchez Bach 51512f25c5 Merge pull request #55 from elisha464/master
More fixes
2014-01-23 12:11:54 -08:00
elisha464 eac9526549 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-23 22:11:28 +02:00
elisha464 4ee90e1f90 changed warning of cellGcmAddressToOffset to Log 2014-01-23 21:38:26 +02:00
elisha464 8a3835bcef fix thread exit crash 2014-01-23 21:37:59 +02:00
Nekotekina d16dbedaa1 Fixed conflicts 2014-01-23 22:45:40 +04:00
Nekotekina 93faac5780 Small changes 2014-01-23 22:40:49 +04:00
elisha464 64bfae6648 fix stop when trying to run two games in a row 2014-01-23 19:03:43 +02:00
DHrpcs3 4b356998f2 Merge pull request #53 from elisha464/master
minor fixes
2014-01-22 12:49:03 -08:00
elisha464 ec942f2657 fixed getId and create thread (the id was written using write32 instead of write64) 2014-01-22 21:53:11 +02:00
elisha464 f260d1c602 fix cellGcmMapMainMemory 2014-01-22 20:04:11 +02:00
DHrpcs3 cf740f5129 Merge pull request #52 from elisha464/master
More memory mapping functions
2014-01-21 13:28:55 -08:00
elisha464 14c7c63e34 small fix 2014-01-21 22:23:28 +02:00
elisha464 7920f6d473 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3
Conflicts:
	rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp
2014-01-21 21:19:07 +02:00
elisha464 9b9e621593 finished all memory mapping functions of libgcm 2014-01-21 21:10:44 +02:00
elisha464 8514a14cf4 small change to unmapping functions 2014-01-21 20:29:16 +02:00
elisha464 6504ddede4 fixed some memory mapping functions 2014-01-21 20:08:33 +02:00
elisha464 66a481d4bc Implement reserved memory in virtual memory block 2014-01-21 19:55:48 +02:00
Nekotekina 5f9bc13898 Some bugs fixed 2014-01-21 03:34:16 +04:00
Nekotekina 6fb1a67a83 SC_Lwmutex 2014-01-20 01:19:37 +04:00
DH dc2fd8c39e Improved vfsDevice.
Minor fixes.
2014-01-19 18:05:27 +02:00
Nekotekina d65647acf3 cellPamf update, cellDmux draft 2014-01-19 14:52:30 +04:00
DH ab41540064 Improved ID manager.
Improved MemoryBlock.
2014-01-19 05:14:11 +02:00
DHrpcs3 159b6ecea3 Merge pull request #51 from elisha464/master
Memory Mapping functions for libgcm and virtual memory block
2014-01-18 14:21:52 -08:00
elisha464 4e4dd43646 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-18 23:36:42 +02:00
elisha464 48726e8fed More memory mapping functions for libgcm 2014-01-18 23:36:22 +02:00
Nekotekina 9e06aeff33 cellPamf update 2014-01-18 03:45:07 +04:00
elisha464 509d46a544 Added Virtual Memory Block for the IO Address Space
Started implementing some the memory mapping functions of libgcm
2014-01-17 18:56:03 +02:00
Nekotekina e41f21abc7 Simple analog stick support (from KB)
Left stick: arrows; right stick: PgDn/PgUp (vertical) and Home/End
(horizontal)
Added L10n functions' list (copied from old distr)
Fixed "LoadShdr64 error: shstrndx too big" in ELF64 loader
Other minor changes
2014-01-14 23:03:48 +04:00
Ivan e0a70bb0fa Merge pull request #49 from Nekotekina/master
cellSyncMutex+SPU
2014-01-12 02:40:53 -08:00
Nekotekina 970b834f2e CellSync review (mutexes, SPU).
File descriptors temporarily detached from ID manager.
Some logs disabled.
2014-01-12 14:27:59 +04:00
Nekotekina 4e8cd72e59 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-12 13:35:10 +04:00
Alexandro Sánchez Bach 2506810a2e cellAudio updated
cellAudio:
* Change endianness of datatypes.
* Fixed port handling.
* Uninitialize module when restarting.
* Minor syntax fixes.
2014-01-10 22:06:22 +01:00
Nekotekina 1be7454bc4 Fixed errors, improvements
cellSync review, MFC channel AtomicStat added, draft implementation of
MFC_GETLLAR_CMD, MFC_PUTLLC_CMD etc, memory allocating hacks for
alignment.
2014-01-10 05:30:59 +04:00
DH 76695a97b9 Implemented mem_func_ptr_t.
Improved cellFsAioRead.
Fixed cellAudioOut* return error codes.
2014-01-08 23:16:13 +02:00
Alexandro Sánchez Bach 1d61e7b4a4 Merge pull request #48 from Nekotekina/master
Compilation fix + other fixes
2014-01-07 13:36:51 -08:00
Nekotekina 775bf8b340 Fixed conflicts 2014-01-08 00:49:40 +04:00
Nekotekina f4952bee18 Small fixes 2014-01-08 00:27:34 +04:00
DH 7971db665e Improved Vertex Shader Decompiler.
Fixed VFS Manager crash.
Fixed SPU image loader.
Draft implementation of cellFsAioRead.
Improved Callbacks.
2014-01-07 22:11:02 +02:00
DH cbeadcf872 Improved RSX Debugger
- Fixed crash in debug build.
 - Implemented texture selection.
2014-01-07 09:30:41 +02:00
B1ackDaemon 40f2e679ec Merge pull request #47 from Nekotekina/master
cellSync, cellPamf and other
2014-01-06 08:53:30 -08:00
Nekotekina db8f01717c cellPamf improvements 2014-01-06 20:16:11 +04:00
Nekotekina 5f8d36600c cellPamf partial research and implementation 2014-01-06 05:50:56 +04:00
Nekotekina 2d011e94cd Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-05 03:58:19 +04:00
Nekotekina 5f06f46f32 Minor improvements
cellFsAioRead partially implemented, cellPadInfoPressMode &
cellPadInfoSensorMode stubs
2014-01-05 03:58:03 +04:00
Alexandro Sánchez Bach aa9b0d0a31 RSX Debugger, Mem. Viewer and module improvements
* Small cleanup in cellJpgDec and cellPngDec.
* cellPamf added to the project and a few test lines added to
cellPamfGetHeaderSize(2).
* Improved speed of the Raw Image Preview on the the Memory Viewer.
* Now you can click on the shown buffers / textures in the RSX Debugger
in order to see them in full size. More settings added to the tabs.
* Fixed cellFsStat in order to fix the crash aused by opening
directiories. The solution is really *really* ugly. Once vfsDir is
ready, I will replace it with something better.
2014-01-05 00:45:44 +01:00
Nekotekina 64b18b4dc2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2014-01-02 18:56:53 +04:00
Alexandro Sánchez Bach 1a43fe5ceb RSX Debugger & cellFont improved
RSX Debugger:
*Better way to add name:value pairs to the tabs.
*Added some entries in the Settings/Texture/Lightning tabs.
*Experimental DisAsm.
*Support for previewing RGB textures (buggy!).
*Minor cleanups and improvements

cellFont:
*Added cellFontOpenFontMemory, cellFontOpenFontFile,
cellFontOpenFontset. They still need some modifications (e.g. bind these
functions to stblib/stb_truetype.h).
2014-01-02 02:13:08 +01:00
Nekotekina 906f448221 Fixed conflicts 2013-12-31 15:16:05 +04:00
Nekotekina 552fd355bc New functions
Added cellSync module, implemented sys_spu_thread_group_join,
sys_spu_thread_group_suspend, added /dev_bdvd/ device, fixed default
values of analog sticks.
2013-12-31 15:10:24 +04:00
Alexandro Sánchez Bach d1a27748a3 Experimental RSX Debugger & minor changes
RSX Debugger:
Currently, it can preview the color buffers while the RSX Thread is
running, view and modify the render flags, and act as a memory viewer in
the RSX command buffers (no disasm yet). You can press F5, to update the
information (buffers, memory, flags, etc.) of the frame. There are *a
lot* of TODO's here that will be done in the future.

Minor changes:
*Added /dev_flash/ to VFS (required for cellFont in the future).
*cellMsgDialogOpenErrorCode implemented using wxMessageBox. The
information for each error code comes from PSDevWiki. There are lots
error codes missing.
*Updated sys_memory_get_page_attribute

Happy new year to everyone! :-)
2013-12-30 23:59:39 +01:00
Alexandro Sánchez Bach 3858f5097e Merge pull request #40 from osvcos/master
Halfplement syscall 351 (sys_memory_get_page_attribute)
2013-12-30 13:32:28 -08:00
Osvaldo Costa 7277940b84 Halfplement syscall 351 (sys_memory_get_page_attribute) 2013-12-30 16:34:39 -03:00
Osvaldo Costa 9a1e22fb85 Halfplement syscall 351 (sys_memory_get_page_attribute) 2013-12-29 18:18:51 -03:00
Alexandro Sánchez Bach 24d01a28c8 Merge pull request #38 from O1L/master
Update missed WindowsPadHandler.h

_Note:_ O1L explained that there was some issues when trying to fix what I mentioned in my last comment caused by wxWidgets 2.8.12. Therefore I will merge this commit as we can try different approaches to fix this in the future.
2013-12-28 14:03:32 -08:00
O1L 429041097b Update missed file 2013-12-28 14:05:44 +04:00
Hykem e807ae1a58 Merge pull request #37 from O1L/master
cellSysutil audio functions, configurable controls and other minor changes
2013-12-27 13:51:14 -08:00
Hykem f477b62813 Merge pull request #36 from Nekotekina/master
SPU Improvements
2013-12-27 13:50:55 -08:00
Hykem 69be408b32 Merge pull request #34 from osvcos/master
Relocate sys_process_is_stack to sysPrxForUser.cpp
2013-12-27 13:50:25 -08:00
Nekotekina ca13d4f2ef SPU
LQX Hack removed, Critical Section for m_status removed.
2013-12-27 15:35:08 +04:00
O1L 286254a10a Implemented some cellSysutil audio functions, added configurable controls (draft/ugly implementation), and minor changes in cellAudio and ConLog 2013-12-27 14:55:11 +04:00
Nekotekina 1ab5ef9dd7 SPU
Implemented sys_raw_spu_load, sys_raw_spu_image_load. Minor review of
MFC, channels.
2013-12-25 21:28:10 +04:00
Nekotekina 35257f5e94 SPU Improvements
Implemented sys_spu_image_import, original Mandelbrot PKG should work
now.
2013-12-24 21:34:51 +04:00
Nekotekina 3a82ed5dc9 Fixed x86 build
Fixed crashes
2013-12-24 15:10:55 +04:00
Nekotekina ab2bc35b18 Fixed conflicts
(merge branch)
2013-12-24 12:42:03 +04:00
DH eb2ab73e16 Implemented LWZUX, LWAX, LWAUX, LHA, LHAU, LWA, STWBRX, STHBRX. 2013-12-24 07:25:15 +02:00
DH 456374d487 Added missed files. 2013-12-24 06:02:21 +02:00
DH b500fcbaed Fixed ELF64 loader.
Fixed cellPadGetInfo.
Fixed cellFsOpen path encoding.
Draft implementation of cellAudioGetPortConfig.
Implemented STBUX, STHUX, STWUX.
Improved Boot (S)ELF / Install PKG UI.
2013-12-24 05:58:32 +02:00
Nekotekina fdb3fdb927 Files removed
They don't work from this folder
2013-12-23 17:20:16 +04:00
Nekotekina ba8108d595 SPU Fixes
Mandelbrot set does work now and its modified version included in
TEST12345 folder.
2013-12-23 15:57:09 +04:00
Nekotekina 37b5b49f58 Fast fix
Previous commit was wrong
2013-12-22 22:16:57 +04:00
Nekotekina c9abf559be SPU Improvements
Implemented SNR channels and syscalls, fixed sys_spu_thread_initialize
(args' passing, SPU image copying for each thread)
2013-12-22 21:40:50 +04:00
Nekotekina e28ba30561 Notification of NI flag change
Probably useless.
2013-12-19 02:30:06 +04:00
Nekotekina c3d2cd344f Win32 fix & elf loading fix
Fixed compilation error for x86 version. Fixed issue with ELF loading.
2013-12-15 01:59:37 +04:00
Nekotekina 01a274a1db Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-14 04:17:02 +04:00
Nekotekina eed6a7ffe3 STBUX implemented
Missed PPU opcode + replaced some non-unicode non-ASCII characters in
PPPInstrTable.h
2013-12-14 04:15:20 +04:00
Nekotekina ee137323aa MBox, some improvements
Some changes reverted (warnings), multi-thread safety fixed, MBox MMIO
modified
2013-12-13 05:35:28 +04:00
Osvaldo Costa 2c1cb51843 Relocate sys_process_is_stack to sysPrxForUser.cpp 2013-12-11 19:26:36 -03:00
Osvaldo Costa bc3772614b Relocate sys_process_is_stack to sysPrxForUser.cpp 2013-12-11 19:13:28 -03:00
Nekotekina c9fc99c388 Basic DMA, MFC, channel changes
Added new consts, thread-safe locks for critical resources, removed some
warnings. Modified git-version.h
2013-12-11 02:58:11 +04:00
Alexandro Sánchez Bach e2de06da63 Fixed conflicts 2013-12-09 18:07:13 +01:00
Alexandro Sánchez Bach 849af30bfd First cellFont functions & minor changes
* Edited .gitignore
* Moved some functions to cellFontFT.
* Now cellFont initializes correctly, but it doesn't render anything
yet. There are still several things to change and functions to
implement. I will take care of it.
2013-12-09 17:56:04 +01:00
Nekotekina bba9ea830f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 21:46:14 +04:00
Nekotekina e8d2245a0b Revert "SPU Improvement"
This reverts commit 9bf8f2eec5.
2013-12-08 21:44:52 +04:00
DH bf03874be2 Refresh Game Viewer after Install PKG 2013-12-08 19:06:20 +02:00
DH 23539f13b5 Improved Boot UI.
Added dev_usb000.
Fixed Game Viewer.
Minor fixes.
2013-12-08 18:54:45 +02:00
Nekotekina 78ca7e1d44 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 18:04:12 +04:00
Nekotekina 34ac4688e6 MFC
Minor changes
2013-12-08 18:03:51 +04:00
DH eaef09df91 Improved PSF loader.
Improved Game Viewer.
Implemented cellPadGetInfo.
Minor improvements.
2013-12-08 15:47:54 +02:00
Nekotekina 2135fb9685 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 05:00:53 +04:00
DH 34f5997f82 Improved OpenGL renderer.
- Rotate color buffer.
2013-12-08 02:42:59 +02:00
DH 76a93443c3 Improved OpenGL renderer
- Implemented color buffer reading.
2013-12-08 02:09:16 +02:00
Nekotekina 430ded8259 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-12-08 03:13:03 +04:00
Nekotekina 9bf8f2eec5 SPU Improvement
Some instructions implemented with SSE intrinsics
2013-12-08 03:12:37 +04:00
DH bba1b6a6e0 SPU improvements
- Implemented more SPU Channels.
- Improved interpreter.
Minor improvements.
2013-12-08 00:52:41 +02:00
Hykem a9a246a866 General improvements:
- Added drafts for event flag emulation;
- Implemented memory locking/unlocking;
- Refactored common SC_Memory objects;
- Implemented VM (virtual memory) syscalls;
- Improved cellGameBootCheck;
- Added more dummy values to cellVideoOutGetDeviceInfo;
- Mapped functions sys_mmapper_allocate_memory and sys_mmapper_map_memory to sysPrxForUser;
- Mapped syscalls 341 and 342 (duplicates of 324 and 325) to sys_memory_container_create and sys_memory_container_destroy;

Improved PKG installation routine:
- Allow immediate game booting;
- Fixed and improved game folder path handling.
2013-12-07 20:56:42 +00:00
DHrpcs3 ff4fcdd5fd Merge pull request #33 from Nekotekina/master
SPU Changes Request
2013-12-04 05:52:26 -08:00
Nekotekina 241ae83645 SPU Improvement
Implemented CFLTS, CFLTU, CSFLT and CUFLT. Finally fixed FREST.
2013-12-04 00:35:45 +04:00
Nekotekina 73c2628ef4 SPU Fixes 3.2 2013-12-02 22:49:06 +04:00
Nekotekina 38fabf7cd2 SPU Fixes 3.1
Small fixes
2013-12-02 14:40:58 +04:00
Nekotekina 1cfcc742d8 SPU Fixes 3
Almost all implemented instructions are fixed. Partialy tested. Some
instructions are still unimplemented.
2013-12-01 21:30:40 +04:00
Nekotekina ae39d3802f SPU Fixes 2
It's almost finished
2013-12-01 04:36:55 +04:00
Nekotekina b217742c7b Merge fix 2013-11-30 03:50:43 +04:00
Nekotekina f0946c4bc8 Merge branch 'master' of https://github.com/Nekotekina/rpcs3 2013-11-30 03:40:50 +04:00
Nekotekina 384e20acf0 SPU fixes
Partially tested and fixed
2013-11-30 03:40:31 +04:00
Nekotekina c48168ffc7 SPU ELF loading
I'm not sure that it's correct way to get entry point
2013-11-29 19:27:10 +04:00
Nekotekina 65c920bc8d Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-29 18:46:57 +04:00
Alexandro Sánchez Bach 5ce57e963f New functions & Minor changes
* cellGameBootCheck, cellSysutilGetSystemParamString partially
implemented.
* Improved debug SELF loader (I applied DH's changes over another part
of code that Hykem wrote).
* Added checkbox in the Config>Settings menu to ignore Read/Write errors
(disabled by default).
* Minor issues.
2013-11-29 05:56:26 +01:00
Nekotekina a32fe40275 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-28 18:37:33 +04:00
DH 28a5d1bcab Fixed conflicts. 2013-11-28 14:27:04 +02:00
DHrpcs3 1bc99a3762 Merge pull request #30 from xsacha/master
Removal of WX dependency and introduction of Qt UI alternative
2013-11-28 04:09:49 -08:00
Nekotekina 794cd4cf89 cellGcmSetUserHandler (empty), SPU.SF syntax
Test commit
2013-11-28 02:15:45 +04:00
Sacha 6bcaf469e8 First stage of WX dependency removal. 2013-11-28 05:16:19 +10:00
Sacha d83a9b12d6 Introduce a Qt UI for RPCS3 2013-11-27 16:37:46 +10:00
DH 4fbfc14763 Improved Debug SELF loader 2013-11-26 07:04:39 +02:00
DH 9ce30fdd74 Improved OpenGL renderer & RAW SPU
- Improved Fragment Shader Decompiler.
- Fixed NV308A_COLOR cmd.
- Fixed break points for RAW SPU Thread.
- Added cellMsgDialogOpen2 to cellSysutil module.
2013-11-26 06:34:19 +02:00
B1ackDaemon dae31c44e0 Merge pull request #27 from Hykem/master
Syscall 114 and UNFSELF
2013-11-25 17:22:26 -08:00
Hykem 97d65e5563 Missing changes from last commit. 2013-11-26 00:28:08 +00:00
Hykem 03d2525ccc Implemented syscall 114.
Implemented manual unfself routine for debug (homebrew) packages.
2013-11-26 00:23:25 +00:00
DHrpcs3 a852baee5b Merge pull request #25 from FGRE/master
Fix linking
2013-11-25 09:57:22 -08:00
DHrpcs3 12c2e13dfa Merge pull request #26 from O1L/master
Added cellFont module (dummy in this moment) & minor changes in default settings
2013-11-25 09:56:33 -08:00
O1L 206cc6ac91 Added libfont module. Set Renderer to OpenGL, Aspect Ratio to 16:9 and Pad Handler to Windows by default. Partially implemented cellGcmSetDebugOutputLevel and cellGcmSetSecondVFrequency functions. Added 'host_root' path to VFS Manager. 2013-11-25 15:49:55 +04:00
Mislav Blažević 9a8cf34f44 Fix linking 2013-11-24 10:23:04 +01:00
Alexandro Sánchez Bach f43a324937 New GCM commands implemented
- NV4097_SET_DEPTH_BOUNDS_MIN
- NV4097_SET_POLY_OFFSET_FILL_ENABLE
- NV4097_SET_POLY_OFFSET_LINE_ENABLE
- NV4097_SET_POLY_OFFSET_POINT_ENABLE
- NV4097_SET_RESTART_INDEX_ENABLE
- NV4097_SET_RESTART_INDEX
2013-11-24 01:47:17 +01:00
DH c7ca4b996a Fixed compilation errors
Minor improvements
2013-11-24 02:01:57 +02:00
DHrpcs3 0ff38bc8ce Merge pull request #24 from FGRE/master
Fix compilation with GNU compiler
2013-11-23 14:50:13 -08:00
Mislav Blažević 2926d3805c Cleanup OpenGL hacks 2013-11-23 23:31:05 +01:00
Mislav Blažević d8bd34b57e Start porting to GNU compiler 2013-11-23 23:27:58 +01:00
DH f91bd80bc2 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-23 20:51:32 +02:00
DH da9c778a4c Improved RAW SPU
Fixed sc binder_func_10
2013-11-23 20:50:54 +02:00
Alexandro Sánchez Bach 268a654fec Implemented Raw Image Preview tool 2013-11-23 18:56:03 +01:00
DH 8463694d4f - Improved call stack. 2013-11-23 17:20:31 +02:00
DH cbe4ab253c Improved Memory Viewer 2013-11-23 07:38:19 +02:00
Alexandro Sánchez Bach 5e1a958ee6 New debugging features, cellGame & minor changes
Two cellGame functions partially implemented:
- cellGameGetParamInt
- cellGameGetParamString

New debugging features:
- Call Stack viewer added
- Memory Viewer rewritten (Not finished yet)

Modified definition of UNIMPLEMENTED_FUNC to improve compatibility with
other compilers: Thanks @krofna

Replaced the "Compiler" menu entry with "Tools" and "Memory Viewer"
entry added.

NOTE: To "quickly" browse the memory using the Memory Viewer you can use
the scrollbar. Notice the irony of the word 'quickly' since the memory
viewer is actually slow as fuck. I will fix that soon. As you can see,
I'd like to add a Raw image viewer in the future in order to "see"
textures directly from memory.
2013-11-23 05:47:19 +01:00
DH 62c1980cac Improved PPU Interpreter
- Fixed MULHW & MULHWU.
- Improved MULHD & MULHDU.
2013-11-23 04:55:26 +02:00
DH aab69513aa Fixed SLD.
Thanks to elisha464.
2013-11-22 17:15:04 +02:00
DHrpcs3 ead70f5c00 Merge pull request #19 from osvcos/master
Change the GUI a little bit
2013-11-19 13:20:29 -08:00
DH 9d5b13839b - Fixed OpenGL renderer LoadVertexArray & DrawArray.
- Improved SPU SCs.
- Renamed mem_ptr_t -> mem_list_ptr_t, mem_struct_ptr_t -> mem_ptr_t.
2013-11-19 23:10:23 +02:00
Osvaldo Costa 19fea00432 Change the GUI a little bit
Removed the launch of the ELF Compiler window at startup. Instead of it,
I added a menubar item called "Compiler", and within it a menu item
called "ELF Compiler", wich will launch the window.
2013-11-17 23:10:59 -03:00
DH 5373747210 - Improved sc function binder.
- Improved Module binder.
- Added Dump Depth Buffer & Dump Color Buffers options (values can be changed on the fly).
2013-11-16 23:12:30 +02:00
DH baea02901b - Implemented cellRescResetFlipStatus & cellRescGetFlipStatus.
- Renamed gs homebrews.
- Updated AboutDialog.
2013-11-16 03:44:08 +02:00
Alexandro Sánchez Bach 382ae8a78f Improved cellResc module
* cellResc module improved

* Many changes in this commit are from [DH]: The implementation of
cellRescSetConvertAndFlip, cellRescSetWaitFlip and cellRescSetSrc as
well as all the other changes that are not in cellResc module.

* Fixed another conflict from O1L/rpcs3 (master): Deleted
"cellPhotoUtility" (which already exists in cellPhotoExport)
Now all the conflicts are solved. :-)

NOTE: We should search for a better name for 's_rescInternalInstance'.
This one is just too long and some lines don't even fit in my screen
because of this.
2013-11-16 01:38:22 +01:00
Alexandro Sánchez Bach 2a5f353e1e Fixed remaining conflicts
Fixed remaining conflicts from O1L/rpcs3 (master):
* Removed cellPhotoDecodeUtil.cpp, cellPhotoImportUtil.cpp and
cellScreenShotUtility.cpp which are already present.
* Updated cellSaveData.cpp to fix the conflicts.
2013-11-14 12:54:37 +01:00
Alexandro Sánchez Bach 45e58d882e Merge pull request #17 from O1L/master
PKG Installer
2013-11-14 03:34:28 -08:00
O1L b1caa5f9c4 Fixed errors from previous commit. Sorry. 2013-11-13 23:43:44 +04:00
O1L 6d56f1ae86 Implemented PKG Installer, improved Boot game. 2013-11-13 22:35:25 +04:00
O1L 584d4eb9d4 Updated 2013-11-13 22:24:24 +04:00
DH 3dd9683b47 Fixed clear mask. 2013-11-09 23:49:01 +02:00
DH 842559804f Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-11-09 23:30:41 +02:00
DH 521244b0e0 Improved GS Renderer. 2013-11-09 23:29:49 +02:00
Alexandro Sánchez Bach a55f76879e Merge pull request #16 from Magn3s1um/master
Floating-Point Status and Control Register (FPSCR) and code fixes
2013-11-09 08:07:17 -08:00
Magn3s1um 63482dcfdc -Fixed MPYU and special registers based on comments 2013-11-09 07:51:26 -08:00
Magn3s1um 1192d20295 -Partial Implementation of Floating-Point Status and Control Register (FPSCR) 2013-11-09 07:41:56 -08:00
DH 6ea2c7d6a8 - Fixed memory leaks in cellRtc module.
- Fixed CPUThread crash.
- Improved ARMv7 Interpreter.
2013-11-09 14:25:12 +02:00
Alexandro Sánchez Bach 3b15f35432 Merge pull request #15 from Hykem/master
Fix for OpenGL error and implementation of cellRtc
2013-11-08 18:55:34 -08:00
Alexandro Sánchez Bach 620b8d0369 Fixed errors of last commit
I forgot to modify one line of code that broke the entire solution. Now
this is fixed. I also disabled the logging of sys_timer_usleep calls.
2013-11-09 03:48:43 +01:00
Hykem 3076571b6f Fixed OpenGL error 0x0502.
Implemented cellRtc module.

Added module name list in cellSysmodule to aid debugging.
2013-11-09 01:27:37 +00:00
Magn3s1um 3c762750a0 -Added SPR registers
-Implemented MTSPR
2013-11-08 17:17:44 -08:00
Alexandro Sánchez Bach 60261408c2 Merge branch 'master' of https://github.com/AlexAltea/rpcs3
NOTE: I included some changes of the forks of O1L and Dante38490 to my
fork. However, a conflict appeared while merging their sources with the
ones of DH. I had to resolve this conflict manually and push all the
changes like a new commit, that's why there changes weren't recorded
individually and (probably) won't appear at in the commits list. I am
very sorry for this, I'll try to avoid this in the future.

In order to preserve the authors of those commits, I write this list
here:
O1L: Dummy Modules (cellAudio, cellSaveData, and more)

https://github.com/O1L/rpcs3/commit/23ece01a0b6381cbbf70f87d6fa5d8d38094a1d3

https://github.com/O1L/rpcs3/commit/784fc571b3d5d7b4a59e52b27c2abba866e6f225

Dante38490: Spotted and fixed an issue in git-version-gen.cmd

https://github.com/Dante38490/rpcs3/commit/44e8867125deff3cecc29c6ed42f3a6fda998e5a

Regarding my changes:
* New lv2 SysCalls implemented (and others improved)
* SDATA unpacker implemented
* Changed layout of sc_table
2013-11-09 02:05:58 +01:00
DH 099333c992 - Implemented some ARMv7 instructions. 2013-11-06 03:01:15 +02:00
DH f18fff08c7 - Fixed compilation errors. 2013-11-05 22:04:55 +02:00
DH b263c3ebaf - Renamed ARM9 to ARMv7.
- Improved ELF32 loader.
2013-11-05 21:22:58 +02:00
DH 6b22e7d90a - Implemented ARM9Interpreter & ARM9DisAsm.
- Implemented MemoryBlockLE & DynamicMemoryBlockLE.
- Implemented CPUDecoder.
2013-11-05 20:12:18 +02:00
DH 0b35be32a4 - Implemented ARM9Thread.
- Improved OpenGL Renderer.
- Improved RAW SPU mfc.
2013-11-03 21:23:16 +02:00
DHrpcs3 6622dc42b5 Merge pull request #9 from Hykem/master
Add SELF decryption and ELF32 little endian support
2013-10-28 15:50:36 -07:00
Hykem 198d0a2fc0 Added ELF32 little endian support for PSP ELF files. 2013-10-28 21:58:03 +00:00
Alexandro Sánchez Bach f1b420eb3b SELF decrypter improves & About... dialog added
SELF decrypter improved:
The files 'scetool.exe' and 'zlib1.dll' are no longer needed. Everything
needed is now included in the rpsc3 project. So the only thing you need
in order to load SELF files are the keys. More information about this
matter in my last commit: c1565e55

Warning for devs! There is a lot of spaghetti code in /scetool/. I
fucked up things a bit while trying to include scetool in rpcs3. There
is a lot of unused code there and I need to make sure that everything is
working properly. In any case, the code seems to work stable so
end-users shouldn't be worried about this warning. ;-)

'About...' dialog added:
Well, I have nothing more to say here. I wish you all a nice day!
2013-10-21 23:02:43 +02:00
Alexandro Sánchez Bach c1565e55e5 Experimental SELF decryption support
This SELF decryption feature is not portable and its code looks really
ugly. It is experimental and is meant to save time to developers when
doing tests with SELF files. Besides that, it works (under Windows). :-)

How to use it:
1. Place "scetool.exe" (and "zlib1.dll") into the main rpcs3 folder.

2. Obtain a LEGAL copy of the SELF decryption keys and place them in a
folder named "data" next to the main executable in a format that is
readable for "scetool.exe". That is, following files should be present:
data/keys
data/ldr_curves
data/vsh_curves

(See screenshot in the comments)

NOTE: These are the steps to enable SELF decryption and it applies to
future commits regarding this matter. We do NOT take any responsibility
about the way you obtain the keys or (until we include SELF decryption
into our code) the actions "scetool.exe" (or "zlib1.dll") perform.
2013-10-14 21:40:44 +02:00
DH 5874a5683e Fixed small error. 2013-10-06 18:41:19 +03:00
DH 64cd9746b8 Fixed minor Debugger errors. 2013-10-06 18:05:58 +03:00
DH 8259006bc3 Improved OpenGL renderer.
- Improved Vertex Shader Decompiler.
- Fixed CMD analyzer.

- Improved sys_fs module.
- Minor fixes.
2013-10-06 17:15:04 +03:00
DH dd48f827c3 - Implemented be_t, mem_struct_ptr_t, vfsFile.
- Improved sys_fs, cellPngDec, cellJpgDec, cellGifDec modules.
2013-10-06 15:07:42 +03:00
O1L f8193fd784 Merge branch 'master' of https://github.com/DHrpcs3/rpcs3 2013-10-01 15:05:44 +04:00
O1L 23ece01a0b Minor improved cellAudio module. More dummy modules created. Some modules are not included to the project. If you want to implement a function of any of these modules, add the corresponding file to the project first. 2013-09-30 20:35:28 +04:00
B1ackDaemon efd336b743 Merge pull request #7 from AlexAltea/master
Some modules updated / improved & New dummy modules
2013-09-28 15:07:31 -07:00
Alexandro Sánchez Bach 2eb2a2a197 Small issue fixed 2013-09-28 23:05:56 +02:00
Alexandro Sánchez Bach 9bb2d082e6 Some Modules updated to use mem*_t class
cellKb, cellMouse and cellSysutil now use the mem*_t instances instead
of using "u32 *_addr" variables.
2013-09-28 16:30:04 +02:00
Alexandro Sánchez Bach afb9273823 More dummy modules
* 41 new dummy modules created.

NOTE: I have detached the previous 4 dummy modules of my last commit
(1a85ccbbf4) from the project since they will consume space of the
executable, and compilation time and don't provide anything useful yet,
the same applies to this commit. The only reason to provide this dummy
modules is to avoid that developers have to spend too much time on
creating the template of the module before implementing functions. If
you want to implement a function of any of these modules, add the
corresponding file to the project first.
2013-09-28 04:36:57 +02:00
O1L 784fc571b3 Created new dummy module for cellAudio. 2013-09-27 14:05:29 +04:00
Alexandro Sánchez Bach 1a85ccbbf4 Improved image dec. modules & New dummy modules
* Improved image decoding modules:
- Fixed error that appeared after last commit (eebe859f83).
- Changed some functions to use the mem*_t classes.
- Implemented cell*DecSetParameter.

* Created new dummy modules for sys_net (0x0000), sys_http (0x0001),
cellHttpUtil (0x0002) and cellSsl (0x0003).
2013-09-25 15:43:55 +02:00
DH eebe859f83 Improved mem_t.
- Implemented mem_ptr_t.
- Fixed issue 3.
2013-09-25 00:11:29 +03:00
B1ackDaemon e655999a23 Merge pull request #5 from AlexAltea/master
Improved debugger, modules and the SPU interpreter
2013-09-23 06:55:37 -07:00
Alexandro Sánchez Bach 7d97bbfbbf Changed syntax of last SPU instructions 2013-09-23 14:20:47 +02:00
Alexandro Sánchez Bach 03dcfeabc3 More SPU Instructions: Floating point comparison
* Implemented Floating/Double-floating comparison instructions:
FCGT, FCMGT, FCEQ, FCMEQ, DFCGT, DFCMGT, DFCEQ, DFCMEQ

* Implemented more Floating/Double-floating operations:
FMA, FMS, FNMS, DFMA, DFMS, DFNMS, DFNMA

* Implemented Double / Single floating-point conversion:
FESD, FRSD
2013-09-23 12:48:27 +02:00
Alexandro Sánchez Bach db7e68d308 More SPU Instructions: Floating point arithmetic
Implemented Floating/Double-floating arithmetic operations: Add,
Substract and Multiply: FA, FS, FM, DFA, DFS, DFM respectively.

* Fixed issue in the register editor: Wrong value displayed when reading
64 bit or 128 bit registers.

* Fixed issue in the register editor: Error when writing to 128 bit
registers.
2013-09-23 01:50:16 +02:00
Alexandro Sánchez Bach 9c6ae554fa Debugger improved: Register editor added
How to use the register editor:
1. Load an .ELF file
2. Select any instruction from a thread. (This is a workaround to
activate the appropriate event listener. This will be changed in the
future).
3. Press 'R' key and modify any register you want.

Note:
The register editor only works with PPU and SPU threads.

Additional changes:
* Fixed the filesize problem caused by the instruction editor dialog.
* Instruction Editor: Fixed small issue in SPU threads
2013-09-22 13:34:54 +02:00
Alexandro Sánchez Bach bf293ebbfc Debugger improved: Instruction editor added
How to use the instruction editor:
1. Load an .ELF file
2. Select an instruction from any valid memory address inside any
thread.
3. Press 'E' key and have fun. :P

Note1: I suggest to remove the function InterpreterDisAsmFrame::DClick
and use InterpreterDisAsmFrame::InstrKey to do all debugging-related
actions (Add breakpoint, Edit, Step, Run, etc.) using the same keyboard
layout as debuggers like OllyDbg.

Note2: The final binary is 200 KB larger due to this feature. This issue
should be fixed in the future. This has probably something to do with
the #include's.
2013-09-21 02:40:36 +02:00
Alexandro Sánchez Bach a11de0f607 Improved image decoding modules
* Huge improvement in the speed of cell{Png|Gif|Jpg}DecDecodeData when
reading input files.

Note: Sorry if this commit is too "small", but I need to sync every
change since I use two PCs.
2013-09-19 23:40:43 +02:00
Alexandro Sánchez Bach 20665b9f89 Improved sys_fs module
- cellFsStat now accepts mounting points in the path argument.

- cellFsMkdir, cellFsRmdir, cellFsUnlink and cellFsRename are now using
the real path provided by the VFS.

- cellFsFtruncate, cellFsTruncate and cellFsFGetBlockSize are partially
implemented.

Note: I have spotted a bug in cellFsRename and cellFsRmdir (this has
nothing to do with the changes I made), but I don't dare to fix it since
I am not sure if I will break other functions with my solution.
2013-09-18 23:50:00 +02:00
DHrpcs3 d7e4f7ec3b Merge pull request #4 from AlexAltea/master
New image decodification modules & IO devices
2013-09-15 08:13:23 -07:00
Alexandro Sánchez Bach b85d39bfc3 Minor issues fixed
*Memory leak in image decodification modules.

*Changed mouse wheel delta value.
2013-09-14 22:47:59 +02:00
Alexandro Sánchez Bach 1024a7c7c4 Mouse support added
*Implemented 'cellMouse*' functions from 'sys_io' module, which are part
of the libmouse library.

* Added corresponding entries in the 'Config > Settings' menu to change
the handler of the mouse. Supported handlers: Windows, Null.

* cellGifDec: Fixed some errors and added support for RGBA color.

(Remember: The mouse support is very experimental)
2013-09-14 20:20:57 +02:00
Alexandro Sánchez Bach 1b7302c0ba Keybord support improved
*Improved Keyboard:
- Fixed crash when using Null keyboard handler
- Added support for meta keys
- Added support for {caps, num, scroll} lock.

*Small issues fixed in previous module:
- cellGifDec: Fixed wrong information of packet field in
cellGifDecReadHeader.
- cellGifDec: Set DataOutInfo.recordType as 1 since the output is always
an image.
- cellJpgDec: Set colorSpace as 3, until a better function is
implemented.
- cellJpgDec, cellPngDec: Added RGBA support.

*Changed layout of "Config > Settings" menu.
2013-09-13 19:29:54 +02:00
Alexandro Sánchez Bach 4835ae35af Keybord support Added
* Implemented 'cellKb*' functions from 'sys_io' module, which are part
of the libkb library.

* Added corresponding entries in the 'Config > Settings' menu to change
the handler of the keyboard. Supported handlers: Windows, Null.

INFO: This keyboard library is *very* experimental and I am aware of
some bugs. There will be improvements soon.
2013-09-11 22:49:49 +02:00
Alexandro Sánchez Bach aea7f4aa77 cellGifDec Module Added
*Implemented 'cellGifDec', using 'sys_fs' to access the files and the
'stb_image' (stblib) library to decode GIF buffers to Raw-pixel buffers
that can be used as textures.

*Replace 'lodepng' and 'jpeg-compressor' libraries with 'stb_image' in
cellPngDec and cellJpgDec, respectively.

*Fixed minor issues in cellPngDec and cellJpgDec.
2013-09-10 15:17:02 +02:00
Alexandro Sánchez Bach 0275b430cf cellJpgDec Module Added
*Replaced "sys_jpgdec" with "cellJpgDec" in
"rpcs3\Emu\SysCalls\Modules.cpp".
*Implemented 'cellJpgDec', using 'sys_fs' to access the files and the
'jpg-compressor' (jpgd) library to decode JPG buffers to Raw-pixel
buffers that can be
used as textures.
*Fixed memory leak issue in cellPngDec and minor changes.
2013-09-09 18:27:31 +02:00
Alexandro Sánchez Bach 3123432dcc cellPngDec Module Added
Implemented 'cellPngDec', using 'sys_fs' to access the files and the
'lodepng' library to decode PNG buffers to Raw-pixel buffers that can be
used as textures.
2013-09-08 10:45:10 +02:00
DHrpcs3 43e0c84f64 Merge pull request #2 from cornytrace/master
Several small improvements
2013-09-05 03:44:45 -07:00
Cornee Traas eefd175900 Fix more spelling mistakes 2013-09-05 10:06:59 +02:00
Cornee Traas 9b921f3c2d Update .gitignore 2013-09-05 09:45:46 +02:00
Cornee Traas f25fa26b42 Refactor of game loading 2013-09-05 09:45:33 +02:00
Cornee Traas f4b98074b0 Merge remote-tracking branch 'upstream/master'
Conflicts:
	rpcs3/Emu/GS/GL/GLGSRender.cpp
	rpcs3/Gui/InterpreterDisAsm.cpp
	rpcs3/Gui/MainFrame.cpp
2013-09-03 19:26:31 +02:00
Cornee Traas f42e6d7374 Update .gitignore to include git-version.h 2013-08-12 11:57:25 +02:00
Cornee Traas 96c692aefc Fix spelling of IsRunned to IsRunning 2013-08-12 11:56:56 +02:00
Cornee Traas d249bfef4d When debugging, put the git revision in the title
Useful for bug reports, user-friendly version still used when building
in release mode. A unix script for generating the git version is still
needed.
2013-08-11 00:09:27 +02:00
Cornee Traas cd3ad0b149 (indirectly) Fix ini boolean parsing error 2013-08-10 23:51:24 +02:00
Cornee Traas fafb88672a Fix debugger working directory 2013-08-10 23:48:54 +02:00
Cornee Traas 6fd824fcca Update .gitignore 2013-08-10 23:48:32 +02:00
2680 changed files with 223417 additions and 1039224 deletions
+62 -13
View File
@@ -9,21 +9,70 @@
# Compiled Static libraries
*.lai
*.la
*.a
/libs
# *.a # Commented out since OpenAL Soft's binaries use this extension.
*.opensdf
*.sdf
*.user
/bin/rpcs3.exe
/bin/RPCS3.log
/bin/rpcs3.ini
/bin/compiled.elf
/bin/FragmentProgram.txt
/bin/VertexDataArray.dump
/bin/VertexProgram.txt
/bin/BreakPoints.dat
/bin/textures
*.suo
*.tlog
*.idb
*.pdb
*.obj
*.ilk
*.pch
*.log
*.exe
*.dll
*.elf
*.lastbuildstate
*.unsuccessfulbuild
*.res
*.dump
*.wav
/build
/bin
/libs
/ipch
/rpcs3/Debug
/rpcs3/Release
/ipch
/llvm_build
/wxWidgets/lib
/bin/rpcs3.ini
/bin/rpcs3.ipdb
/bin/rpcs3.iobj
/bin/FragmentProgram.txt
/bin/VertexProgram.txt
/bin/*.hlsl
/bin/BreakPoints.dat
/bin/textures
/bin/*.lib
/bin/*.exp
rpcs3/git-version.h
# Visual Studio Profiler Files
*.vspx
*.psess
# Copyrighted files
/bin/data/
/bin/dev_flash/data/font
/bin/dev_flash/sys
/bin/dev_flash/vsh
# Ignore installed games except test homebrews
!/bin/dev_hdd0/game/
/bin/dev_hdd0/game/*
!/bin/dev_hdd0/game/TEST12345/
# Ignore other system generated files
bin/dev_hdd0/*.txt
x64/*
rpcs3/x64/*
.DS_Store
rpcs3/Emu/SysCalls/Modules/prx_*.h
/CMakeFiles/
CMakeCache.txt
+17
View File
@@ -0,0 +1,17 @@
[submodule "wxWidgets"]
path = wxWidgets
url = https://github.com/wxWidgets/wxWidgets
ignore = dirty
[submodule "rpcs3-ffmpeg"]
path = ffmpeg
url = https://github.com/hrydgard/ppsspp-ffmpeg
[submodule "asmjit"]
path = asmjit
url = https://github.com/kobalicek/asmjit
[submodule "llvm"]
path = llvm
url = https://github.com/llvm-mirror/llvm
branch = release_36
[submodule "minidx9"]
path = minidx9
url = https://github.com/hrydgard/minidx9.git
+107
View File
@@ -0,0 +1,107 @@
language: cpp
os:
- linux
- osx
osx_image: xcode6.4
compiler:
- clang
- gcc
env:
global:
- secure: "jA29KvTCTR7q4BMzPPUBGazjJwrIWa7k4fo5ZSMlyxh2NbztZTKQYwodgDcXBoptCd1KJ9H3FXwBnNdMNVnTkvoPL9uWnN4K/3D1D20FCag1kmlBwnaVqVei5cRiZ9TOMuaxhjkdg8pcrQLTlXEEdMZf6A2OW0VgoBGDVSX9nYc="
# Which Travis environment to run Coverity on
- coverity_scan_run_condition='"$CC" = gcc -a "$TRAVIS_OS_NAME" != osx'
# Test mode is for testing if it's working with Coverity. Change to true if testing, to avoid reaching the quota.
- coverity_scan_script_test_mode=false
branches:
except:
- ppu_recompiler
matrix:
exclude:
- os: osx
compiler: gcc
git:
submodules: false
before_install:
# shutdown services on Travis, which may have a memory impact
# show memory usage before and after shutdown of services
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo service --status-all;
sudo free -m -t;
sudo /etc/init.d/mysql stop;
sudo /etc/init.d/postgresql stop;
sudo /etc/init.d/couchdb stop;
sudo /etc/init.d/redis-server stop;
sudo free -m -t;
echo "yes" | sudo apt-key adv --fetch-keys 'http://repos.codelite.org/CodeLite.asc';
echo "yes" | sudo apt-add-repository 'deb http://repos.codelite.org/wx3.0/ubuntu/ precise universe';
echo "yes" | sudo add-apt-repository 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu precise main';
echo "yes" | sudo add-apt-repository 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise-3.6 main';
wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -;
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y;
sudo apt-get update;
sudo apt-get install libwxgtk3.0-dev libopenal-dev freeglut3-dev libglew-dev libc6-dev llvm-3.6 llvm-3.6-dev libedit-dev;
sudo apt-get install aria2 -qq;
download_extract() { aria2c -x 16 $1 -o $2 && tar -xf $2; };
fi;
- if [ "$TRAVIS_OS_NAME" = "linux" ] && [ "$CXX" = "g++" ]; then
sudo apt-get install -qq g++-4.9;
export CXX="g++-4.9" CC="gcc-4.9" CXXFLAGS="-Wno-format-security";
export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01';
elif [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo apt-get install -qq --allow-unauthenticated clang-3.6 libstdc++-4.8-dev;
export CXX="clang++-3.6" CC="clang-3.6";
fi;
# Travis uses CMake 2.8.7. We require 2.8.8. Grab latest
# Add coverall for C++ so coverall.io could be triggered. Even it should be --coverage and gcov.
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo apt-get install lib32stdc++6 -qq &&
aria2c -x 16 http://www.cmake.org/files/v3.0/cmake-3.0.0-Linux-i386.sh &&
chmod a+x cmake-3.0.0-Linux-i386.sh &&
sudo ./cmake-3.0.0-Linux-i386.sh --skip-license --prefix=/usr;
sudo pip install cpp-coveralls;
else
brew update; brew update;
brew install glew wxwidgets llvm36;
fi;
before_script:
- git submodule update --init asmjit ffmpeg
- mkdir build
- cd build
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cmake ..; else cmake .. -DLLVM_DIR=/usr/local/opt/llvm36/lib/llvm-3.6/share/llvm/cmake; fi
script:
# Add a command to show all the variables. May be useful for debugging Travis.
# - echo "--Shell Export Lists START--" ; export -p; echo "--Shell Export Lists STOP--";
# And to ensure the versions of toolchain
- echo "--CXX version?"; "$CXX" --version; echo "--CXX version confirmed";
- if [ "$COVERITY_SCAN_BRANCH" != 1 ]; then make -j 4; fi
addons:
coverity_scan:
project:
name: $TRAVIS_REPO_SLUG
notification_email: raul.tambre@gmail.com
build_command_prepend: ""
build_command: "make -j 4"
branch_pattern: master
after_success:
- coveralls --extension .c --extension .cpp --extension .h;
after_failure:
# show memory usage again and show actions of the OOM killer
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then
sudo free -m -t;
sudo dmesg;
fi;
+18
View File
@@ -0,0 +1,18 @@
cmake_minimum_required(VERSION 2.8.12)
set(ASMJIT_STATIC TRUE)
if (NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to Release")
set(CMAKE_BUILD_TYPE "Release")
endif()
if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
message( FATAL_ERROR "RPCS3 can only be compiled on 64-bit platforms." )
endif()
add_subdirectory( asmjit )
# TODO: do real installation, including copying directory structure
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/bin")
add_subdirectory( rpcs3 )
+9973 -11256
View File
File diff suppressed because it is too large Load Diff
+339
View File
@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{description}
Copyright (C) {year} {fullname}
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
{signature of Ty Coon}, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
+656
View File
@@ -0,0 +1,656 @@
#ifndef AL_AL_H
#define AL_AL_H
#if defined(__cplusplus)
extern "C" {
#endif
#ifndef AL_API
#if defined(AL_LIBTYPE_STATIC)
#define AL_API
#elif defined(_WIN32)
#define AL_API __declspec(dllimport)
#else
#define AL_API extern
#endif
#endif
#if defined(_WIN32)
#define AL_APIENTRY __cdecl
#else
#define AL_APIENTRY
#endif
/** Deprecated macro. */
#define OPENAL
#define ALAPI AL_API
#define ALAPIENTRY AL_APIENTRY
#define AL_INVALID (-1)
#define AL_ILLEGAL_ENUM AL_INVALID_ENUM
#define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION
/** Supported AL version. */
#define AL_VERSION_1_0
#define AL_VERSION_1_1
/** 8-bit boolean */
typedef char ALboolean;
/** character */
typedef char ALchar;
/** signed 8-bit 2's complement integer */
typedef signed char ALbyte;
/** unsigned 8-bit integer */
typedef unsigned char ALubyte;
/** signed 16-bit 2's complement integer */
typedef short ALshort;
/** unsigned 16-bit integer */
typedef unsigned short ALushort;
/** signed 32-bit 2's complement integer */
typedef int ALint;
/** unsigned 32-bit integer */
typedef unsigned int ALuint;
/** non-negative 32-bit binary integer size */
typedef int ALsizei;
/** enumerated 32-bit value */
typedef int ALenum;
/** 32-bit IEEE754 floating-point */
typedef float ALfloat;
/** 64-bit IEEE754 floating-point */
typedef double ALdouble;
/** void type (for opaque pointers only) */
typedef void ALvoid;
/* Enumerant values begin at column 50. No tabs. */
/** "no distance model" or "no buffer" */
#define AL_NONE 0
/** Boolean False. */
#define AL_FALSE 0
/** Boolean True. */
#define AL_TRUE 1
/**
* Relative source.
* Type: ALboolean
* Range: [AL_TRUE, AL_FALSE]
* Default: AL_FALSE
*
* Specifies if the Source has relative coordinates.
*/
#define AL_SOURCE_RELATIVE 0x202
/**
* Inner cone angle, in degrees.
* Type: ALint, ALfloat
* Range: [0 - 360]
* Default: 360
*
* The angle covered by the inner cone, where the source will not attenuate.
*/
#define AL_CONE_INNER_ANGLE 0x1001
/**
* Outer cone angle, in degrees.
* Range: [0 - 360]
* Default: 360
*
* The angle covered by the outer cone, where the source will be fully
* attenuated.
*/
#define AL_CONE_OUTER_ANGLE 0x1002
/**
* Source pitch.
* Type: ALfloat
* Range: [0.5 - 2.0]
* Default: 1.0
*
* A multiplier for the frequency (sample rate) of the source's buffer.
*/
#define AL_PITCH 0x1003
/**
* Source or listener position.
* Type: ALfloat[3], ALint[3]
* Default: {0, 0, 0}
*
* The source or listener location in three dimensional space.
*
* OpenAL, like OpenGL, uses a right handed coordinate system, where in a
* frontal default view X (thumb) points right, Y points up (index finger), and
* Z points towards the viewer/camera (middle finger).
*
* To switch from a left handed coordinate system, flip the sign on the Z
* coordinate.
*/
#define AL_POSITION 0x1004
/**
* Source direction.
* Type: ALfloat[3], ALint[3]
* Default: {0, 0, 0}
*
* Specifies the current direction in local space.
* A zero-length vector specifies an omni-directional source (cone is ignored).
*/
#define AL_DIRECTION 0x1005
/**
* Source or listener velocity.
* Type: ALfloat[3], ALint[3]
* Default: {0, 0, 0}
*
* Specifies the current velocity in local space.
*/
#define AL_VELOCITY 0x1006
/**
* Source looping.
* Type: ALboolean
* Range: [AL_TRUE, AL_FALSE]
* Default: AL_FALSE
*
* Specifies whether source is looping.
*/
#define AL_LOOPING 0x1007
/**
* Source buffer.
* Type: ALuint
* Range: any valid Buffer.
*
* Specifies the buffer to provide sound samples.
*/
#define AL_BUFFER 0x1009
/**
* Source or listener gain.
* Type: ALfloat
* Range: [0.0 - ]
*
* A value of 1.0 means unattenuated. Each division by 2 equals an attenuation
* of about -6dB. Each multiplicaton by 2 equals an amplification of about
* +6dB.
*
* A value of 0.0 is meaningless with respect to a logarithmic scale; it is
* silent.
*/
#define AL_GAIN 0x100A
/**
* Minimum source gain.
* Type: ALfloat
* Range: [0.0 - 1.0]
*
* The minimum gain allowed for a source, after distance and cone attenation is
* applied (if applicable).
*/
#define AL_MIN_GAIN 0x100D
/**
* Maximum source gain.
* Type: ALfloat
* Range: [0.0 - 1.0]
*
* The maximum gain allowed for a source, after distance and cone attenation is
* applied (if applicable).
*/
#define AL_MAX_GAIN 0x100E
/**
* Listener orientation.
* Type: ALfloat[6]
* Default: {0.0, 0.0, -1.0, 0.0, 1.0, 0.0}
*
* Effectively two three dimensional vectors. The first vector is the front (or
* "at") and the second is the top (or "up").
*
* Both vectors are in local space.
*/
#define AL_ORIENTATION 0x100F
/**
* Source state (query only).
* Type: ALint
* Range: [AL_INITIAL, AL_PLAYING, AL_PAUSED, AL_STOPPED]
*/
#define AL_SOURCE_STATE 0x1010
/** Source state value. */
#define AL_INITIAL 0x1011
#define AL_PLAYING 0x1012
#define AL_PAUSED 0x1013
#define AL_STOPPED 0x1014
/**
* Source Buffer Queue size (query only).
* Type: ALint
*
* The number of buffers queued using alSourceQueueBuffers, minus the buffers
* removed with alSourceUnqueueBuffers.
*/
#define AL_BUFFERS_QUEUED 0x1015
/**
* Source Buffer Queue processed count (query only).
* Type: ALint
*
* The number of queued buffers that have been fully processed, and can be
* removed with alSourceUnqueueBuffers.
*
* Looping sources will never fully process buffers because they will be set to
* play again for when the source loops.
*/
#define AL_BUFFERS_PROCESSED 0x1016
/**
* Source reference distance.
* Type: ALfloat
* Range: [0.0 - ]
* Default: 1.0
*
* The distance in units that no attenuation occurs.
*
* At 0.0, no distance attenuation ever occurs on non-linear attenuation models.
*/
#define AL_REFERENCE_DISTANCE 0x1020
/**
* Source rolloff factor.
* Type: ALfloat
* Range: [0.0 - ]
* Default: 1.0
*
* Multiplier to exaggerate or diminish distance attenuation.
*
* At 0.0, no distance attenuation ever occurs.
*/
#define AL_ROLLOFF_FACTOR 0x1021
/**
* Outer cone gain.
* Type: ALfloat
* Range: [0.0 - 1.0]
* Default: 0.0
*
* The gain attenuation applied when the listener is outside of the source's
* outer cone.
*/
#define AL_CONE_OUTER_GAIN 0x1022
/**
* Source maximum distance.
* Type: ALfloat
* Range: [0.0 - ]
* Default: +inf
*
* The distance above which the source is not attenuated any further with a
* clamped distance model, or where attenuation reaches 0.0 gain for linear
* distance models with a default rolloff factor.
*/
#define AL_MAX_DISTANCE 0x1023
/** Source buffer position, in seconds */
#define AL_SEC_OFFSET 0x1024
/** Source buffer position, in sample frames */
#define AL_SAMPLE_OFFSET 0x1025
/** Source buffer position, in bytes */
#define AL_BYTE_OFFSET 0x1026
/**
* Source type (query only).
* Type: ALint
* Range: [AL_STATIC, AL_STREAMING, AL_UNDETERMINED]
*
* A Source is Static if a Buffer has been attached using AL_BUFFER.
*
* A Source is Streaming if one or more Buffers have been attached using
* alSourceQueueBuffers.
*
* A Source is Undetermined when it has the NULL buffer attached using
* AL_BUFFER.
*/
#define AL_SOURCE_TYPE 0x1027
/** Source type value. */
#define AL_STATIC 0x1028
#define AL_STREAMING 0x1029
#define AL_UNDETERMINED 0x1030
/** Buffer format specifier. */
#define AL_FORMAT_MONO8 0x1100
#define AL_FORMAT_MONO16 0x1101
#define AL_FORMAT_STEREO8 0x1102
#define AL_FORMAT_STEREO16 0x1103
/** Buffer frequency (query only). */
#define AL_FREQUENCY 0x2001
/** Buffer bits per sample (query only). */
#define AL_BITS 0x2002
/** Buffer channel count (query only). */
#define AL_CHANNELS 0x2003
/** Buffer data size (query only). */
#define AL_SIZE 0x2004
/**
* Buffer state.
*
* Not for public use.
*/
#define AL_UNUSED 0x2010
#define AL_PENDING 0x2011
#define AL_PROCESSED 0x2012
/** No error. */
#define AL_NO_ERROR 0
/** Invalid name paramater passed to AL call. */
#define AL_INVALID_NAME 0xA001
/** Invalid enum parameter passed to AL call. */
#define AL_INVALID_ENUM 0xA002
/** Invalid value parameter passed to AL call. */
#define AL_INVALID_VALUE 0xA003
/** Illegal AL call. */
#define AL_INVALID_OPERATION 0xA004
/** Not enough memory. */
#define AL_OUT_OF_MEMORY 0xA005
/** Context string: Vendor ID. */
#define AL_VENDOR 0xB001
/** Context string: Version. */
#define AL_VERSION 0xB002
/** Context string: Renderer ID. */
#define AL_RENDERER 0xB003
/** Context string: Space-separated extension list. */
#define AL_EXTENSIONS 0xB004
/**
* Doppler scale.
* Type: ALfloat
* Range: [0.0 - ]
* Default: 1.0
*
* Scale for source and listener velocities.
*/
#define AL_DOPPLER_FACTOR 0xC000
AL_API void AL_APIENTRY alDopplerFactor(ALfloat value);
/**
* Doppler velocity (deprecated).
*
* A multiplier applied to the Speed of Sound.
*/
#define AL_DOPPLER_VELOCITY 0xC001
AL_API void AL_APIENTRY alDopplerVelocity(ALfloat value);
/**
* Speed of Sound, in units per second.
* Type: ALfloat
* Range: [0.0001 - ]
* Default: 343.3
*
* The speed at which sound waves are assumed to travel, when calculating the
* doppler effect.
*/
#define AL_SPEED_OF_SOUND 0xC003
AL_API void AL_APIENTRY alSpeedOfSound(ALfloat value);
/**
* Distance attenuation model.
* Type: ALint
* Range: [AL_NONE, AL_INVERSE_DISTANCE, AL_INVERSE_DISTANCE_CLAMPED,
* AL_LINEAR_DISTANCE, AL_LINEAR_DISTANCE_CLAMPED,
* AL_EXPONENT_DISTANCE, AL_EXPONENT_DISTANCE_CLAMPED]
* Default: AL_INVERSE_DISTANCE_CLAMPED
*
* The model by which sources attenuate with distance.
*
* None - No distance attenuation.
* Inverse - Doubling the distance halves the source gain.
* Linear - Linear gain scaling between the reference and max distances.
* Exponent - Exponential gain dropoff.
*
* Clamped variations work like the non-clamped counterparts, except the
* distance calculated is clamped between the reference and max distances.
*/
#define AL_DISTANCE_MODEL 0xD000
AL_API void AL_APIENTRY alDistanceModel(ALenum distanceModel);
/** Distance model value. */
#define AL_INVERSE_DISTANCE 0xD001
#define AL_INVERSE_DISTANCE_CLAMPED 0xD002
#define AL_LINEAR_DISTANCE 0xD003
#define AL_LINEAR_DISTANCE_CLAMPED 0xD004
#define AL_EXPONENT_DISTANCE 0xD005
#define AL_EXPONENT_DISTANCE_CLAMPED 0xD006
/** Renderer State management. */
AL_API void AL_APIENTRY alEnable(ALenum capability);
AL_API void AL_APIENTRY alDisable(ALenum capability);
AL_API ALboolean AL_APIENTRY alIsEnabled(ALenum capability);
/** State retrieval. */
AL_API const ALchar* AL_APIENTRY alGetString(ALenum param);
AL_API void AL_APIENTRY alGetBooleanv(ALenum param, ALboolean *values);
AL_API void AL_APIENTRY alGetIntegerv(ALenum param, ALint *values);
AL_API void AL_APIENTRY alGetFloatv(ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetDoublev(ALenum param, ALdouble *values);
AL_API ALboolean AL_APIENTRY alGetBoolean(ALenum param);
AL_API ALint AL_APIENTRY alGetInteger(ALenum param);
AL_API ALfloat AL_APIENTRY alGetFloat(ALenum param);
AL_API ALdouble AL_APIENTRY alGetDouble(ALenum param);
/**
* Error retrieval.
*
* Obtain the first error generated in the AL context since the last check.
*/
AL_API ALenum AL_APIENTRY alGetError(void);
/**
* Extension support.
*
* Query for the presence of an extension, and obtain any appropriate function
* pointers and enum values.
*/
AL_API ALboolean AL_APIENTRY alIsExtensionPresent(const ALchar *extname);
AL_API void* AL_APIENTRY alGetProcAddress(const ALchar *fname);
AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *ename);
/** Set Listener parameters */
AL_API void AL_APIENTRY alListenerf(ALenum param, ALfloat value);
AL_API void AL_APIENTRY alListener3f(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
AL_API void AL_APIENTRY alListenerfv(ALenum param, const ALfloat *values);
AL_API void AL_APIENTRY alListeneri(ALenum param, ALint value);
AL_API void AL_APIENTRY alListener3i(ALenum param, ALint value1, ALint value2, ALint value3);
AL_API void AL_APIENTRY alListeneriv(ALenum param, const ALint *values);
/** Get Listener parameters */
AL_API void AL_APIENTRY alGetListenerf(ALenum param, ALfloat *value);
AL_API void AL_APIENTRY alGetListener3f(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
AL_API void AL_APIENTRY alGetListenerfv(ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetListeneri(ALenum param, ALint *value);
AL_API void AL_APIENTRY alGetListener3i(ALenum param, ALint *value1, ALint *value2, ALint *value3);
AL_API void AL_APIENTRY alGetListeneriv(ALenum param, ALint *values);
/** Create Source objects. */
AL_API void AL_APIENTRY alGenSources(ALsizei n, ALuint *sources);
/** Delete Source objects. */
AL_API void AL_APIENTRY alDeleteSources(ALsizei n, const ALuint *sources);
/** Verify a handle is a valid Source. */
AL_API ALboolean AL_APIENTRY alIsSource(ALuint source);
/** Set Source parameters. */
AL_API void AL_APIENTRY alSourcef(ALuint source, ALenum param, ALfloat value);
AL_API void AL_APIENTRY alSource3f(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
AL_API void AL_APIENTRY alSourcefv(ALuint source, ALenum param, const ALfloat *values);
AL_API void AL_APIENTRY alSourcei(ALuint source, ALenum param, ALint value);
AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
AL_API void AL_APIENTRY alSourceiv(ALuint source, ALenum param, const ALint *values);
/** Get Source parameters. */
AL_API void AL_APIENTRY alGetSourcef(ALuint source, ALenum param, ALfloat *value);
AL_API void AL_APIENTRY alGetSource3f(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
AL_API void AL_APIENTRY alGetSourcefv(ALuint source, ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetSourcei(ALuint source, ALenum param, ALint *value);
AL_API void AL_APIENTRY alGetSource3i(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
AL_API void AL_APIENTRY alGetSourceiv(ALuint source, ALenum param, ALint *values);
/** Play, replay, or resume (if paused) a list of Sources */
AL_API void AL_APIENTRY alSourcePlayv(ALsizei n, const ALuint *sources);
/** Stop a list of Sources */
AL_API void AL_APIENTRY alSourceStopv(ALsizei n, const ALuint *sources);
/** Rewind a list of Sources */
AL_API void AL_APIENTRY alSourceRewindv(ALsizei n, const ALuint *sources);
/** Pause a list of Sources */
AL_API void AL_APIENTRY alSourcePausev(ALsizei n, const ALuint *sources);
/** Play, replay, or resume a Source */
AL_API void AL_APIENTRY alSourcePlay(ALuint source);
/** Stop a Source */
AL_API void AL_APIENTRY alSourceStop(ALuint source);
/** Rewind a Source (set playback postiton to beginning) */
AL_API void AL_APIENTRY alSourceRewind(ALuint source);
/** Pause a Source */
AL_API void AL_APIENTRY alSourcePause(ALuint source);
/** Queue buffers onto a source */
AL_API void AL_APIENTRY alSourceQueueBuffers(ALuint source, ALsizei nb, const ALuint *buffers);
/** Unqueue processed buffers from a source */
AL_API void AL_APIENTRY alSourceUnqueueBuffers(ALuint source, ALsizei nb, ALuint *buffers);
/** Create Buffer objects */
AL_API void AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers);
/** Delete Buffer objects */
AL_API void AL_APIENTRY alDeleteBuffers(ALsizei n, const ALuint *buffers);
/** Verify a handle is a valid Buffer */
AL_API ALboolean AL_APIENTRY alIsBuffer(ALuint buffer);
/** Specifies the data to be copied into a buffer */
AL_API void AL_APIENTRY alBufferData(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
/** Set Buffer parameters, */
AL_API void AL_APIENTRY alBufferf(ALuint buffer, ALenum param, ALfloat value);
AL_API void AL_APIENTRY alBuffer3f(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
AL_API void AL_APIENTRY alBufferfv(ALuint buffer, ALenum param, const ALfloat *values);
AL_API void AL_APIENTRY alBufferi(ALuint buffer, ALenum param, ALint value);
AL_API void AL_APIENTRY alBuffer3i(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
AL_API void AL_APIENTRY alBufferiv(ALuint buffer, ALenum param, const ALint *values);
/** Get Buffer parameters. */
AL_API void AL_APIENTRY alGetBufferf(ALuint buffer, ALenum param, ALfloat *value);
AL_API void AL_APIENTRY alGetBuffer3f(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
AL_API void AL_APIENTRY alGetBufferfv(ALuint buffer, ALenum param, ALfloat *values);
AL_API void AL_APIENTRY alGetBufferi(ALuint buffer, ALenum param, ALint *value);
AL_API void AL_APIENTRY alGetBuffer3i(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
AL_API void AL_APIENTRY alGetBufferiv(ALuint buffer, ALenum param, ALint *values);
/** Pointer-to-function type, useful for dynamically getting AL entry points. */
typedef void (AL_APIENTRY *LPALENABLE)(ALenum capability);
typedef void (AL_APIENTRY *LPALDISABLE)(ALenum capability);
typedef ALboolean (AL_APIENTRY *LPALISENABLED)(ALenum capability);
typedef const ALchar* (AL_APIENTRY *LPALGETSTRING)(ALenum param);
typedef void (AL_APIENTRY *LPALGETBOOLEANV)(ALenum param, ALboolean *values);
typedef void (AL_APIENTRY *LPALGETINTEGERV)(ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALGETFLOATV)(ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETDOUBLEV)(ALenum param, ALdouble *values);
typedef ALboolean (AL_APIENTRY *LPALGETBOOLEAN)(ALenum param);
typedef ALint (AL_APIENTRY *LPALGETINTEGER)(ALenum param);
typedef ALfloat (AL_APIENTRY *LPALGETFLOAT)(ALenum param);
typedef ALdouble (AL_APIENTRY *LPALGETDOUBLE)(ALenum param);
typedef ALenum (AL_APIENTRY *LPALGETERROR)(void);
typedef ALboolean (AL_APIENTRY *LPALISEXTENSIONPRESENT)(const ALchar *extname);
typedef void* (AL_APIENTRY *LPALGETPROCADDRESS)(const ALchar *fname);
typedef ALenum (AL_APIENTRY *LPALGETENUMVALUE)(const ALchar *ename);
typedef void (AL_APIENTRY *LPALLISTENERF)(ALenum param, ALfloat value);
typedef void (AL_APIENTRY *LPALLISTENER3F)(ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
typedef void (AL_APIENTRY *LPALLISTENERFV)(ALenum param, const ALfloat *values);
typedef void (AL_APIENTRY *LPALLISTENERI)(ALenum param, ALint value);
typedef void (AL_APIENTRY *LPALLISTENER3I)(ALenum param, ALint value1, ALint value2, ALint value3);
typedef void (AL_APIENTRY *LPALLISTENERIV)(ALenum param, const ALint *values);
typedef void (AL_APIENTRY *LPALGETLISTENERF)(ALenum param, ALfloat *value);
typedef void (AL_APIENTRY *LPALGETLISTENER3F)(ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
typedef void (AL_APIENTRY *LPALGETLISTENERFV)(ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETLISTENERI)(ALenum param, ALint *value);
typedef void (AL_APIENTRY *LPALGETLISTENER3I)(ALenum param, ALint *value1, ALint *value2, ALint *value3);
typedef void (AL_APIENTRY *LPALGETLISTENERIV)(ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALGENSOURCES)(ALsizei n, ALuint *sources);
typedef void (AL_APIENTRY *LPALDELETESOURCES)(ALsizei n, const ALuint *sources);
typedef ALboolean (AL_APIENTRY *LPALISSOURCE)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEF)(ALuint source, ALenum param, ALfloat value);
typedef void (AL_APIENTRY *LPALSOURCE3F)(ALuint source, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
typedef void (AL_APIENTRY *LPALSOURCEFV)(ALuint source, ALenum param, const ALfloat *values);
typedef void (AL_APIENTRY *LPALSOURCEI)(ALuint source, ALenum param, ALint value);
typedef void (AL_APIENTRY *LPALSOURCE3I)(ALuint source, ALenum param, ALint value1, ALint value2, ALint value3);
typedef void (AL_APIENTRY *LPALSOURCEIV)(ALuint source, ALenum param, const ALint *values);
typedef void (AL_APIENTRY *LPALGETSOURCEF)(ALuint source, ALenum param, ALfloat *value);
typedef void (AL_APIENTRY *LPALGETSOURCE3F)(ALuint source, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
typedef void (AL_APIENTRY *LPALGETSOURCEFV)(ALuint source, ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETSOURCEI)(ALuint source, ALenum param, ALint *value);
typedef void (AL_APIENTRY *LPALGETSOURCE3I)(ALuint source, ALenum param, ALint *value1, ALint *value2, ALint *value3);
typedef void (AL_APIENTRY *LPALGETSOURCEIV)(ALuint source, ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALSOURCEPLAYV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCESTOPV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCEREWINDV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCEPAUSEV)(ALsizei n, const ALuint *sources);
typedef void (AL_APIENTRY *LPALSOURCEPLAY)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCESTOP)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEREWIND)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEPAUSE)(ALuint source);
typedef void (AL_APIENTRY *LPALSOURCEQUEUEBUFFERS)(ALuint source, ALsizei nb, const ALuint *buffers);
typedef void (AL_APIENTRY *LPALSOURCEUNQUEUEBUFFERS)(ALuint source, ALsizei nb, ALuint *buffers);
typedef void (AL_APIENTRY *LPALGENBUFFERS)(ALsizei n, ALuint *buffers);
typedef void (AL_APIENTRY *LPALDELETEBUFFERS)(ALsizei n, const ALuint *buffers);
typedef ALboolean (AL_APIENTRY *LPALISBUFFER)(ALuint buffer);
typedef void (AL_APIENTRY *LPALBUFFERDATA)(ALuint buffer, ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
typedef void (AL_APIENTRY *LPALBUFFERF)(ALuint buffer, ALenum param, ALfloat value);
typedef void (AL_APIENTRY *LPALBUFFER3F)(ALuint buffer, ALenum param, ALfloat value1, ALfloat value2, ALfloat value3);
typedef void (AL_APIENTRY *LPALBUFFERFV)(ALuint buffer, ALenum param, const ALfloat *values);
typedef void (AL_APIENTRY *LPALBUFFERI)(ALuint buffer, ALenum param, ALint value);
typedef void (AL_APIENTRY *LPALBUFFER3I)(ALuint buffer, ALenum param, ALint value1, ALint value2, ALint value3);
typedef void (AL_APIENTRY *LPALBUFFERIV)(ALuint buffer, ALenum param, const ALint *values);
typedef void (AL_APIENTRY *LPALGETBUFFERF)(ALuint buffer, ALenum param, ALfloat *value);
typedef void (AL_APIENTRY *LPALGETBUFFER3F)(ALuint buffer, ALenum param, ALfloat *value1, ALfloat *value2, ALfloat *value3);
typedef void (AL_APIENTRY *LPALGETBUFFERFV)(ALuint buffer, ALenum param, ALfloat *values);
typedef void (AL_APIENTRY *LPALGETBUFFERI)(ALuint buffer, ALenum param, ALint *value);
typedef void (AL_APIENTRY *LPALGETBUFFER3I)(ALuint buffer, ALenum param, ALint *value1, ALint *value2, ALint *value3);
typedef void (AL_APIENTRY *LPALGETBUFFERIV)(ALuint buffer, ALenum param, ALint *values);
typedef void (AL_APIENTRY *LPALDOPPLERFACTOR)(ALfloat value);
typedef void (AL_APIENTRY *LPALDOPPLERVELOCITY)(ALfloat value);
typedef void (AL_APIENTRY *LPALSPEEDOFSOUND)(ALfloat value);
typedef void (AL_APIENTRY *LPALDISTANCEMODEL)(ALenum distanceModel);
#if defined(__cplusplus)
} /* extern "C" */
#endif
#endif /* AL_AL_H */
+237
View File
@@ -0,0 +1,237 @@
#ifndef AL_ALC_H
#define AL_ALC_H
#if defined(__cplusplus)
extern "C" {
#endif
#ifndef ALC_API
#if defined(AL_LIBTYPE_STATIC)
#define ALC_API
#elif defined(_WIN32)
#define ALC_API __declspec(dllimport)
#else
#define ALC_API extern
#endif
#endif
#if defined(_WIN32)
#define ALC_APIENTRY __cdecl
#else
#define ALC_APIENTRY
#endif
/** Deprecated macro. */
#define ALCAPI ALC_API
#define ALCAPIENTRY ALC_APIENTRY
#define ALC_INVALID 0
/** Supported ALC version? */
#define ALC_VERSION_0_1 1
/** Opaque device handle */
typedef struct ALCdevice_struct ALCdevice;
/** Opaque context handle */
typedef struct ALCcontext_struct ALCcontext;
/** 8-bit boolean */
typedef char ALCboolean;
/** character */
typedef char ALCchar;
/** signed 8-bit 2's complement integer */
typedef signed char ALCbyte;
/** unsigned 8-bit integer */
typedef unsigned char ALCubyte;
/** signed 16-bit 2's complement integer */
typedef short ALCshort;
/** unsigned 16-bit integer */
typedef unsigned short ALCushort;
/** signed 32-bit 2's complement integer */
typedef int ALCint;
/** unsigned 32-bit integer */
typedef unsigned int ALCuint;
/** non-negative 32-bit binary integer size */
typedef int ALCsizei;
/** enumerated 32-bit value */
typedef int ALCenum;
/** 32-bit IEEE754 floating-point */
typedef float ALCfloat;
/** 64-bit IEEE754 floating-point */
typedef double ALCdouble;
/** void type (for opaque pointers only) */
typedef void ALCvoid;
/* Enumerant values begin at column 50. No tabs. */
/** Boolean False. */
#define ALC_FALSE 0
/** Boolean True. */
#define ALC_TRUE 1
/** Context attribute: <int> Hz. */
#define ALC_FREQUENCY 0x1007
/** Context attribute: <int> Hz. */
#define ALC_REFRESH 0x1008
/** Context attribute: AL_TRUE or AL_FALSE. */
#define ALC_SYNC 0x1009
/** Context attribute: <int> requested Mono (3D) Sources. */
#define ALC_MONO_SOURCES 0x1010
/** Context attribute: <int> requested Stereo Sources. */
#define ALC_STEREO_SOURCES 0x1011
/** No error. */
#define ALC_NO_ERROR 0
/** Invalid device handle. */
#define ALC_INVALID_DEVICE 0xA001
/** Invalid context handle. */
#define ALC_INVALID_CONTEXT 0xA002
/** Invalid enum parameter passed to an ALC call. */
#define ALC_INVALID_ENUM 0xA003
/** Invalid value parameter passed to an ALC call. */
#define ALC_INVALID_VALUE 0xA004
/** Out of memory. */
#define ALC_OUT_OF_MEMORY 0xA005
/** Runtime ALC version. */
#define ALC_MAJOR_VERSION 0x1000
#define ALC_MINOR_VERSION 0x1001
/** Context attribute list properties. */
#define ALC_ATTRIBUTES_SIZE 0x1002
#define ALC_ALL_ATTRIBUTES 0x1003
/** String for the default device specifier. */
#define ALC_DEFAULT_DEVICE_SPECIFIER 0x1004
/**
* String for the given device's specifier.
*
* If device handle is NULL, it is instead a null-char separated list of
* strings of known device specifiers (list ends with an empty string).
*/
#define ALC_DEVICE_SPECIFIER 0x1005
/** String for space-separated list of ALC extensions. */
#define ALC_EXTENSIONS 0x1006
/** Capture extension */
#define ALC_EXT_CAPTURE 1
/**
* String for the given capture device's specifier.
*
* If device handle is NULL, it is instead a null-char separated list of
* strings of known capture device specifiers (list ends with an empty string).
*/
#define ALC_CAPTURE_DEVICE_SPECIFIER 0x310
/** String for the default capture device specifier. */
#define ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER 0x311
/** Number of sample frames available for capture. */
#define ALC_CAPTURE_SAMPLES 0x312
/** Enumerate All extension */
#define ALC_ENUMERATE_ALL_EXT 1
/** String for the default extended device specifier. */
#define ALC_DEFAULT_ALL_DEVICES_SPECIFIER 0x1012
/**
* String for the given extended device's specifier.
*
* If device handle is NULL, it is instead a null-char separated list of
* strings of known extended device specifiers (list ends with an empty string).
*/
#define ALC_ALL_DEVICES_SPECIFIER 0x1013
/** Context management. */
ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCint* attrlist);
ALC_API ALCboolean ALC_APIENTRY alcMakeContextCurrent(ALCcontext *context);
ALC_API void ALC_APIENTRY alcProcessContext(ALCcontext *context);
ALC_API void ALC_APIENTRY alcSuspendContext(ALCcontext *context);
ALC_API void ALC_APIENTRY alcDestroyContext(ALCcontext *context);
ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(void);
ALC_API ALCdevice* ALC_APIENTRY alcGetContextsDevice(ALCcontext *context);
/** Device management. */
ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename);
ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device);
/**
* Error support.
*
* Obtain the most recent Device error.
*/
ALC_API ALCenum ALC_APIENTRY alcGetError(ALCdevice *device);
/**
* Extension support.
*
* Query for the presence of an extension, and obtain any appropriate
* function pointers and enum values.
*/
ALC_API ALCboolean ALC_APIENTRY alcIsExtensionPresent(ALCdevice *device, const ALCchar *extname);
ALC_API void* ALC_APIENTRY alcGetProcAddress(ALCdevice *device, const ALCchar *funcname);
ALC_API ALCenum ALC_APIENTRY alcGetEnumValue(ALCdevice *device, const ALCchar *enumname);
/** Query function. */
ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum param);
ALC_API void ALC_APIENTRY alcGetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
/** Capture function. */
ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device);
ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device);
ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device);
ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
/** Pointer-to-function type, useful for dynamically getting ALC entry points. */
typedef ALCcontext* (ALC_APIENTRY *LPALCCREATECONTEXT)(ALCdevice *device, const ALCint *attrlist);
typedef ALCboolean (ALC_APIENTRY *LPALCMAKECONTEXTCURRENT)(ALCcontext *context);
typedef void (ALC_APIENTRY *LPALCPROCESSCONTEXT)(ALCcontext *context);
typedef void (ALC_APIENTRY *LPALCSUSPENDCONTEXT)(ALCcontext *context);
typedef void (ALC_APIENTRY *LPALCDESTROYCONTEXT)(ALCcontext *context);
typedef ALCcontext* (ALC_APIENTRY *LPALCGETCURRENTCONTEXT)(void);
typedef ALCdevice* (ALC_APIENTRY *LPALCGETCONTEXTSDEVICE)(ALCcontext *context);
typedef ALCdevice* (ALC_APIENTRY *LPALCOPENDEVICE)(const ALCchar *devicename);
typedef ALCboolean (ALC_APIENTRY *LPALCCLOSEDEVICE)(ALCdevice *device);
typedef ALCenum (ALC_APIENTRY *LPALCGETERROR)(ALCdevice *device);
typedef ALCboolean (ALC_APIENTRY *LPALCISEXTENSIONPRESENT)(ALCdevice *device, const ALCchar *extname);
typedef void* (ALC_APIENTRY *LPALCGETPROCADDRESS)(ALCdevice *device, const ALCchar *funcname);
typedef ALCenum (ALC_APIENTRY *LPALCGETENUMVALUE)(ALCdevice *device, const ALCchar *enumname);
typedef const ALCchar* (ALC_APIENTRY *LPALCGETSTRING)(ALCdevice *device, ALCenum param);
typedef void (ALC_APIENTRY *LPALCGETINTEGERV)(ALCdevice *device, ALCenum param, ALCsizei size, ALCint *values);
typedef ALCdevice* (ALC_APIENTRY *LPALCCAPTUREOPENDEVICE)(const ALCchar *devicename, ALCuint frequency, ALCenum format, ALCsizei buffersize);
typedef ALCboolean (ALC_APIENTRY *LPALCCAPTURECLOSEDEVICE)(ALCdevice *device);
typedef void (ALC_APIENTRY *LPALCCAPTURESTART)(ALCdevice *device);
typedef void (ALC_APIENTRY *LPALCCAPTURESTOP)(ALCdevice *device);
typedef void (ALC_APIENTRY *LPALCCAPTURESAMPLES)(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
#if defined(__cplusplus)
}
#endif
#endif /* AL_ALC_H */
+400
View File
@@ -0,0 +1,400 @@
/**
* OpenAL cross platform audio library
* Copyright (C) 2008 by authors.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
* Or go to http://www.gnu.org/copyleft/lgpl.html
*/
#ifndef AL_ALEXT_H
#define AL_ALEXT_H
#include <stddef.h>
/* Define int64_t and uint64_t types */
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#include <inttypes.h>
#elif defined(_WIN32) && defined(__GNUC__)
#include <stdint.h>
#elif defined(_WIN32)
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#else
/* Fallback if nothing above works */
#include <inttypes.h>
#endif
#include "alc.h"
#include "al.h"
#ifdef __cplusplus
extern "C" {
#endif
#ifndef AL_LOKI_IMA_ADPCM_format
#define AL_LOKI_IMA_ADPCM_format 1
#define AL_FORMAT_IMA_ADPCM_MONO16_EXT 0x10000
#define AL_FORMAT_IMA_ADPCM_STEREO16_EXT 0x10001
#endif
#ifndef AL_LOKI_WAVE_format
#define AL_LOKI_WAVE_format 1
#define AL_FORMAT_WAVE_EXT 0x10002
#endif
#ifndef AL_EXT_vorbis
#define AL_EXT_vorbis 1
#define AL_FORMAT_VORBIS_EXT 0x10003
#endif
#ifndef AL_LOKI_quadriphonic
#define AL_LOKI_quadriphonic 1
#define AL_FORMAT_QUAD8_LOKI 0x10004
#define AL_FORMAT_QUAD16_LOKI 0x10005
#endif
#ifndef AL_EXT_float32
#define AL_EXT_float32 1
#define AL_FORMAT_MONO_FLOAT32 0x10010
#define AL_FORMAT_STEREO_FLOAT32 0x10011
#endif
#ifndef AL_EXT_double
#define AL_EXT_double 1
#define AL_FORMAT_MONO_DOUBLE_EXT 0x10012
#define AL_FORMAT_STEREO_DOUBLE_EXT 0x10013
#endif
#ifndef AL_EXT_MULAW
#define AL_EXT_MULAW 1
#define AL_FORMAT_MONO_MULAW_EXT 0x10014
#define AL_FORMAT_STEREO_MULAW_EXT 0x10015
#endif
#ifndef AL_EXT_ALAW
#define AL_EXT_ALAW 1
#define AL_FORMAT_MONO_ALAW_EXT 0x10016
#define AL_FORMAT_STEREO_ALAW_EXT 0x10017
#endif
#ifndef ALC_LOKI_audio_channel
#define ALC_LOKI_audio_channel 1
#define ALC_CHAN_MAIN_LOKI 0x500001
#define ALC_CHAN_PCM_LOKI 0x500002
#define ALC_CHAN_CD_LOKI 0x500003
#endif
#ifndef AL_EXT_MCFORMATS
#define AL_EXT_MCFORMATS 1
#define AL_FORMAT_QUAD8 0x1204
#define AL_FORMAT_QUAD16 0x1205
#define AL_FORMAT_QUAD32 0x1206
#define AL_FORMAT_REAR8 0x1207
#define AL_FORMAT_REAR16 0x1208
#define AL_FORMAT_REAR32 0x1209
#define AL_FORMAT_51CHN8 0x120A
#define AL_FORMAT_51CHN16 0x120B
#define AL_FORMAT_51CHN32 0x120C
#define AL_FORMAT_61CHN8 0x120D
#define AL_FORMAT_61CHN16 0x120E
#define AL_FORMAT_61CHN32 0x120F
#define AL_FORMAT_71CHN8 0x1210
#define AL_FORMAT_71CHN16 0x1211
#define AL_FORMAT_71CHN32 0x1212
#endif
#ifndef AL_EXT_MULAW_MCFORMATS
#define AL_EXT_MULAW_MCFORMATS 1
#define AL_FORMAT_MONO_MULAW 0x10014
#define AL_FORMAT_STEREO_MULAW 0x10015
#define AL_FORMAT_QUAD_MULAW 0x10021
#define AL_FORMAT_REAR_MULAW 0x10022
#define AL_FORMAT_51CHN_MULAW 0x10023
#define AL_FORMAT_61CHN_MULAW 0x10024
#define AL_FORMAT_71CHN_MULAW 0x10025
#endif
#ifndef AL_EXT_IMA4
#define AL_EXT_IMA4 1
#define AL_FORMAT_MONO_IMA4 0x1300
#define AL_FORMAT_STEREO_IMA4 0x1301
#endif
#ifndef AL_EXT_STATIC_BUFFER
#define AL_EXT_STATIC_BUFFER 1
typedef ALvoid (AL_APIENTRY*PFNALBUFFERDATASTATICPROC)(const ALint,ALenum,ALvoid*,ALsizei,ALsizei);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alBufferDataStatic(const ALint buffer, ALenum format, ALvoid *data, ALsizei len, ALsizei freq);
#endif
#endif
#ifndef ALC_EXT_EFX
#define ALC_EXT_EFX 1
#include "efx.h"
#endif
#ifndef ALC_EXT_disconnect
#define ALC_EXT_disconnect 1
#define ALC_CONNECTED 0x313
#endif
#ifndef ALC_EXT_thread_local_context
#define ALC_EXT_thread_local_context 1
typedef ALCboolean (ALC_APIENTRY*PFNALCSETTHREADCONTEXTPROC)(ALCcontext *context);
typedef ALCcontext* (ALC_APIENTRY*PFNALCGETTHREADCONTEXTPROC)(void);
#ifdef AL_ALEXT_PROTOTYPES
ALC_API ALCboolean ALC_APIENTRY alcSetThreadContext(ALCcontext *context);
ALC_API ALCcontext* ALC_APIENTRY alcGetThreadContext(void);
#endif
#endif
#ifndef AL_EXT_source_distance_model
#define AL_EXT_source_distance_model 1
#define AL_SOURCE_DISTANCE_MODEL 0x200
#endif
#ifndef AL_SOFT_buffer_sub_data
#define AL_SOFT_buffer_sub_data 1
#define AL_BYTE_RW_OFFSETS_SOFT 0x1031
#define AL_SAMPLE_RW_OFFSETS_SOFT 0x1032
typedef ALvoid (AL_APIENTRY*PFNALBUFFERSUBDATASOFTPROC)(ALuint,ALenum,const ALvoid*,ALsizei,ALsizei);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alBufferSubDataSOFT(ALuint buffer,ALenum format,const ALvoid *data,ALsizei offset,ALsizei length);
#endif
#endif
#ifndef AL_SOFT_loop_points
#define AL_SOFT_loop_points 1
#define AL_LOOP_POINTS_SOFT 0x2015
#endif
#ifndef AL_EXT_FOLDBACK
#define AL_EXT_FOLDBACK 1
#define AL_EXT_FOLDBACK_NAME "AL_EXT_FOLDBACK"
#define AL_FOLDBACK_EVENT_BLOCK 0x4112
#define AL_FOLDBACK_EVENT_START 0x4111
#define AL_FOLDBACK_EVENT_STOP 0x4113
#define AL_FOLDBACK_MODE_MONO 0x4101
#define AL_FOLDBACK_MODE_STEREO 0x4102
typedef void (AL_APIENTRY*LPALFOLDBACKCALLBACK)(ALenum,ALsizei);
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTART)(ALenum,ALsizei,ALsizei,ALfloat*,LPALFOLDBACKCALLBACK);
typedef void (AL_APIENTRY*LPALREQUESTFOLDBACKSTOP)(void);
#ifdef AL_ALEXT_PROTOTYPES
AL_API void AL_APIENTRY alRequestFoldbackStart(ALenum mode,ALsizei count,ALsizei length,ALfloat *mem,LPALFOLDBACKCALLBACK callback);
AL_API void AL_APIENTRY alRequestFoldbackStop(void);
#endif
#endif
#ifndef ALC_EXT_DEDICATED
#define ALC_EXT_DEDICATED 1
#define AL_DEDICATED_GAIN 0x0001
#define AL_EFFECT_DEDICATED_DIALOGUE 0x9001
#define AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT 0x9000
#endif
#ifndef AL_SOFT_buffer_samples
#define AL_SOFT_buffer_samples 1
/* Channel configurations */
#define AL_MONO_SOFT 0x1500
#define AL_STEREO_SOFT 0x1501
#define AL_REAR_SOFT 0x1502
#define AL_QUAD_SOFT 0x1503
#define AL_5POINT1_SOFT 0x1504
#define AL_6POINT1_SOFT 0x1505
#define AL_7POINT1_SOFT 0x1506
/* Sample types */
#define AL_BYTE_SOFT 0x1400
#define AL_UNSIGNED_BYTE_SOFT 0x1401
#define AL_SHORT_SOFT 0x1402
#define AL_UNSIGNED_SHORT_SOFT 0x1403
#define AL_INT_SOFT 0x1404
#define AL_UNSIGNED_INT_SOFT 0x1405
#define AL_FLOAT_SOFT 0x1406
#define AL_DOUBLE_SOFT 0x1407
#define AL_BYTE3_SOFT 0x1408
#define AL_UNSIGNED_BYTE3_SOFT 0x1409
/* Storage formats */
#define AL_MONO8_SOFT 0x1100
#define AL_MONO16_SOFT 0x1101
#define AL_MONO32F_SOFT 0x10010
#define AL_STEREO8_SOFT 0x1102
#define AL_STEREO16_SOFT 0x1103
#define AL_STEREO32F_SOFT 0x10011
#define AL_QUAD8_SOFT 0x1204
#define AL_QUAD16_SOFT 0x1205
#define AL_QUAD32F_SOFT 0x1206
#define AL_REAR8_SOFT 0x1207
#define AL_REAR16_SOFT 0x1208
#define AL_REAR32F_SOFT 0x1209
#define AL_5POINT1_8_SOFT 0x120A
#define AL_5POINT1_16_SOFT 0x120B
#define AL_5POINT1_32F_SOFT 0x120C
#define AL_6POINT1_8_SOFT 0x120D
#define AL_6POINT1_16_SOFT 0x120E
#define AL_6POINT1_32F_SOFT 0x120F
#define AL_7POINT1_8_SOFT 0x1210
#define AL_7POINT1_16_SOFT 0x1211
#define AL_7POINT1_32F_SOFT 0x1212
/* Buffer attributes */
#define AL_INTERNAL_FORMAT_SOFT 0x2008
#define AL_BYTE_LENGTH_SOFT 0x2009
#define AL_SAMPLE_LENGTH_SOFT 0x200A
#define AL_SEC_LENGTH_SOFT 0x200B
typedef void (AL_APIENTRY*LPALBUFFERSAMPLESSOFT)(ALuint,ALuint,ALenum,ALsizei,ALenum,ALenum,const ALvoid*);
typedef void (AL_APIENTRY*LPALBUFFERSUBSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,const ALvoid*);
typedef void (AL_APIENTRY*LPALGETBUFFERSAMPLESSOFT)(ALuint,ALsizei,ALsizei,ALenum,ALenum,ALvoid*);
typedef ALboolean (AL_APIENTRY*LPALISBUFFERFORMATSUPPORTEDSOFT)(ALenum);
#ifdef AL_ALEXT_PROTOTYPES
AL_API void AL_APIENTRY alBufferSamplesSOFT(ALuint buffer, ALuint samplerate, ALenum internalformat, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
AL_API void AL_APIENTRY alBufferSubSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, const ALvoid *data);
AL_API void AL_APIENTRY alGetBufferSamplesSOFT(ALuint buffer, ALsizei offset, ALsizei samples, ALenum channels, ALenum type, ALvoid *data);
AL_API ALboolean AL_APIENTRY alIsBufferFormatSupportedSOFT(ALenum format);
#endif
#endif
#ifndef AL_SOFT_direct_channels
#define AL_SOFT_direct_channels 1
#define AL_DIRECT_CHANNELS_SOFT 0x1033
#endif
#ifndef ALC_SOFT_loopback
#define ALC_SOFT_loopback 1
#define ALC_FORMAT_CHANNELS_SOFT 0x1990
#define ALC_FORMAT_TYPE_SOFT 0x1991
/* Sample types */
#define ALC_BYTE_SOFT 0x1400
#define ALC_UNSIGNED_BYTE_SOFT 0x1401
#define ALC_SHORT_SOFT 0x1402
#define ALC_UNSIGNED_SHORT_SOFT 0x1403
#define ALC_INT_SOFT 0x1404
#define ALC_UNSIGNED_INT_SOFT 0x1405
#define ALC_FLOAT_SOFT 0x1406
/* Channel configurations */
#define ALC_MONO_SOFT 0x1500
#define ALC_STEREO_SOFT 0x1501
#define ALC_QUAD_SOFT 0x1503
#define ALC_5POINT1_SOFT 0x1504
#define ALC_6POINT1_SOFT 0x1505
#define ALC_7POINT1_SOFT 0x1506
typedef ALCdevice* (ALC_APIENTRY*LPALCLOOPBACKOPENDEVICESOFT)(const ALCchar*);
typedef ALCboolean (ALC_APIENTRY*LPALCISRENDERFORMATSUPPORTEDSOFT)(ALCdevice*,ALCsizei,ALCenum,ALCenum);
typedef void (ALC_APIENTRY*LPALCRENDERSAMPLESSOFT)(ALCdevice*,ALCvoid*,ALCsizei);
#ifdef AL_ALEXT_PROTOTYPES
ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceName);
ALC_API ALCboolean ALC_APIENTRY alcIsRenderFormatSupportedSOFT(ALCdevice *device, ALCsizei freq, ALCenum channels, ALCenum type);
ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, ALCvoid *buffer, ALCsizei samples);
#endif
#endif
#ifndef AL_EXT_STEREO_ANGLES
#define AL_EXT_STEREO_ANGLES 1
#define AL_STEREO_ANGLES 0x1030
#endif
#ifndef AL_EXT_SOURCE_RADIUS
#define AL_EXT_SOURCE_RADIUS 1
#define AL_SOURCE_RADIUS 0x1031
#endif
#ifndef AL_SOFT_source_latency
#define AL_SOFT_source_latency 1
#define AL_SAMPLE_OFFSET_LATENCY_SOFT 0x1200
#define AL_SEC_OFFSET_LATENCY_SOFT 0x1201
typedef int64_t ALint64SOFT;
typedef uint64_t ALuint64SOFT;
typedef void (AL_APIENTRY*LPALSOURCEDSOFT)(ALuint,ALenum,ALdouble);
typedef void (AL_APIENTRY*LPALSOURCE3DSOFT)(ALuint,ALenum,ALdouble,ALdouble,ALdouble);
typedef void (AL_APIENTRY*LPALSOURCEDVSOFT)(ALuint,ALenum,const ALdouble*);
typedef void (AL_APIENTRY*LPALGETSOURCEDSOFT)(ALuint,ALenum,ALdouble*);
typedef void (AL_APIENTRY*LPALGETSOURCE3DSOFT)(ALuint,ALenum,ALdouble*,ALdouble*,ALdouble*);
typedef void (AL_APIENTRY*LPALGETSOURCEDVSOFT)(ALuint,ALenum,ALdouble*);
typedef void (AL_APIENTRY*LPALSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT);
typedef void (AL_APIENTRY*LPALSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT,ALint64SOFT,ALint64SOFT);
typedef void (AL_APIENTRY*LPALSOURCEI64VSOFT)(ALuint,ALenum,const ALint64SOFT*);
typedef void (AL_APIENTRY*LPALGETSOURCEI64SOFT)(ALuint,ALenum,ALint64SOFT*);
typedef void (AL_APIENTRY*LPALGETSOURCE3I64SOFT)(ALuint,ALenum,ALint64SOFT*,ALint64SOFT*,ALint64SOFT*);
typedef void (AL_APIENTRY*LPALGETSOURCEI64VSOFT)(ALuint,ALenum,ALint64SOFT*);
#ifdef AL_ALEXT_PROTOTYPES
AL_API void AL_APIENTRY alSourcedSOFT(ALuint source, ALenum param, ALdouble value);
AL_API void AL_APIENTRY alSource3dSOFT(ALuint source, ALenum param, ALdouble value1, ALdouble value2, ALdouble value3);
AL_API void AL_APIENTRY alSourcedvSOFT(ALuint source, ALenum param, const ALdouble *values);
AL_API void AL_APIENTRY alGetSourcedSOFT(ALuint source, ALenum param, ALdouble *value);
AL_API void AL_APIENTRY alGetSource3dSOFT(ALuint source, ALenum param, ALdouble *value1, ALdouble *value2, ALdouble *value3);
AL_API void AL_APIENTRY alGetSourcedvSOFT(ALuint source, ALenum param, ALdouble *values);
AL_API void AL_APIENTRY alSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT value);
AL_API void AL_APIENTRY alSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT value1, ALint64SOFT value2, ALint64SOFT value3);
AL_API void AL_APIENTRY alSourcei64vSOFT(ALuint source, ALenum param, const ALint64SOFT *values);
AL_API void AL_APIENTRY alGetSourcei64SOFT(ALuint source, ALenum param, ALint64SOFT *value);
AL_API void AL_APIENTRY alGetSource3i64SOFT(ALuint source, ALenum param, ALint64SOFT *value1, ALint64SOFT *value2, ALint64SOFT *value3);
AL_API void AL_APIENTRY alGetSourcei64vSOFT(ALuint source, ALenum param, ALint64SOFT *values);
#endif
#endif
#ifndef ALC_EXT_DEFAULT_FILTER_ORDER
#define ALC_EXT_DEFAULT_FILTER_ORDER 1
#define ALC_DEFAULT_FILTER_ORDER 0x1100
#endif
#ifndef AL_SOFT_deferred_updates
#define AL_SOFT_deferred_updates 1
#define AL_DEFERRED_UPDATES_SOFT 0xC002
typedef ALvoid (AL_APIENTRY*LPALDEFERUPDATESSOFT)(void);
typedef ALvoid (AL_APIENTRY*LPALPROCESSUPDATESSOFT)(void);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alDeferUpdatesSOFT(void);
AL_API ALvoid AL_APIENTRY alProcessUpdatesSOFT(void);
#endif
#endif
#ifndef AL_SOFT_block_alignment
#define AL_SOFT_block_alignment 1
#define AL_UNPACK_BLOCK_ALIGNMENT_SOFT 0x200C
#define AL_PACK_BLOCK_ALIGNMENT_SOFT 0x200D
#endif
#ifndef AL_SOFT_MSADPCM
#define AL_SOFT_MSADPCM 1
#define AL_FORMAT_MONO_MSADPCM_SOFT 0x1302
#define AL_FORMAT_STEREO_MSADPCM_SOFT 0x1303
#endif
#ifndef AL_SOFT_source_length
#define AL_SOFT_source_length 1
/*#define AL_BYTE_LENGTH_SOFT 0x2009*/
/*#define AL_SAMPLE_LENGTH_SOFT 0x200A*/
/*#define AL_SEC_LENGTH_SOFT 0x200B*/
#endif
#ifndef ALC_SOFT_pause_device
#define ALC_SOFT_pause_device 1
typedef void (ALC_APIENTRY*LPALCDEVICEPAUSESOFT)(ALCdevice *device);
typedef void (ALC_APIENTRY*LPALCDEVICERESUMESOFT)(ALCdevice *device);
#ifdef AL_ALEXT_PROTOTYPES
ALC_API void ALC_APIENTRY alcDevicePauseSOFT(ALCdevice *device);
ALC_API void ALC_APIENTRY alcDeviceResumeSOFT(ALCdevice *device);
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif
+3
View File
@@ -0,0 +1,3 @@
/* The tokens that would be defined here are already defined in efx.h. This
* empty file is here to provide compatibility with Windows-based projects
* that would include it. */
+402
View File
@@ -0,0 +1,402 @@
/* Reverb presets for EFX */
#ifndef EFX_PRESETS_H
#define EFX_PRESETS_H
#ifndef EFXEAXREVERBPROPERTIES_DEFINED
#define EFXEAXREVERBPROPERTIES_DEFINED
typedef struct {
float flDensity;
float flDiffusion;
float flGain;
float flGainHF;
float flGainLF;
float flDecayTime;
float flDecayHFRatio;
float flDecayLFRatio;
float flReflectionsGain;
float flReflectionsDelay;
float flReflectionsPan[3];
float flLateReverbGain;
float flLateReverbDelay;
float flLateReverbPan[3];
float flEchoTime;
float flEchoDepth;
float flModulationTime;
float flModulationDepth;
float flAirAbsorptionGainHF;
float flHFReference;
float flLFReference;
float flRoomRolloffFactor;
int iDecayHFLimit;
} EFXEAXREVERBPROPERTIES, *LPEFXEAXREVERBPROPERTIES;
#endif
/* Default Presets */
#define EFX_REVERB_PRESET_GENERIC \
{ 1.0000f, 1.0000f, 0.3162f, 0.8913f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PADDEDCELL \
{ 0.1715f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.1700f, 0.1000f, 1.0000f, 0.2500f, 0.0010f, { 0.0000f, 0.0000f, 0.0000f }, 1.2691f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ROOM \
{ 0.4287f, 1.0000f, 0.3162f, 0.5929f, 1.0000f, 0.4000f, 0.8300f, 1.0000f, 0.1503f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.0629f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_BATHROOM \
{ 0.1715f, 1.0000f, 0.3162f, 0.2512f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.6531f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 3.2734f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_LIVINGROOM \
{ 0.9766f, 1.0000f, 0.3162f, 0.0010f, 1.0000f, 0.5000f, 0.1000f, 1.0000f, 0.2051f, 0.0030f, { 0.0000f, 0.0000f, 0.0000f }, 0.2805f, 0.0040f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_STONEROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 2.3100f, 0.6400f, 1.0000f, 0.4411f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1003f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_AUDITORIUM \
{ 1.0000f, 1.0000f, 0.3162f, 0.5781f, 1.0000f, 4.3200f, 0.5900f, 1.0000f, 0.4032f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7170f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CONCERTHALL \
{ 1.0000f, 1.0000f, 0.3162f, 0.5623f, 1.0000f, 3.9200f, 0.7000f, 1.0000f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.9977f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CAVE \
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 2.9100f, 1.3000f, 1.0000f, 0.5000f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.7063f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_ARENA \
{ 1.0000f, 1.0000f, 0.3162f, 0.4477f, 1.0000f, 7.2400f, 0.3300f, 1.0000f, 0.2612f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.0186f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_HANGAR \
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 10.0500f, 0.2300f, 1.0000f, 0.5000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2560f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CARPETEDHALLWAY \
{ 0.4287f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 0.3000f, 0.1000f, 1.0000f, 0.1215f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 0.1531f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_HALLWAY \
{ 0.3645f, 1.0000f, 0.3162f, 0.7079f, 1.0000f, 1.4900f, 0.5900f, 1.0000f, 0.2458f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.6615f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_STONECORRIDOR \
{ 1.0000f, 1.0000f, 0.3162f, 0.7612f, 1.0000f, 2.7000f, 0.7900f, 1.0000f, 0.2472f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 1.5758f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ALLEY \
{ 1.0000f, 0.3000f, 0.3162f, 0.7328f, 1.0000f, 1.4900f, 0.8600f, 1.0000f, 0.2500f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.9954f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.9500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FOREST \
{ 1.0000f, 0.3000f, 0.3162f, 0.0224f, 1.0000f, 1.4900f, 0.5400f, 1.0000f, 0.0525f, 0.1620f, { 0.0000f, 0.0000f, 0.0000f }, 0.7682f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY \
{ 1.0000f, 0.5000f, 0.3162f, 0.3981f, 1.0000f, 1.4900f, 0.6700f, 1.0000f, 0.0730f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1427f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_MOUNTAINS \
{ 1.0000f, 0.2700f, 0.3162f, 0.0562f, 1.0000f, 1.4900f, 0.2100f, 1.0000f, 0.0407f, 0.3000f, { 0.0000f, 0.0000f, 0.0000f }, 0.1919f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_QUARRY \
{ 1.0000f, 1.0000f, 0.3162f, 0.3162f, 1.0000f, 1.4900f, 0.8300f, 1.0000f, 0.0000f, 0.0610f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.7000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PLAIN \
{ 1.0000f, 0.2100f, 0.3162f, 0.1000f, 1.0000f, 1.4900f, 0.5000f, 1.0000f, 0.0585f, 0.1790f, { 0.0000f, 0.0000f, 0.0000f }, 0.1089f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PARKINGLOT \
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 1.0000f, 1.6500f, 1.5000f, 1.0000f, 0.2082f, 0.0080f, { 0.0000f, 0.0000f, 0.0000f }, 0.2652f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_SEWERPIPE \
{ 0.3071f, 0.8000f, 0.3162f, 0.3162f, 1.0000f, 2.8100f, 0.1400f, 1.0000f, 1.6387f, 0.0140f, { 0.0000f, 0.0000f, 0.0000f }, 3.2471f, 0.0210f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_UNDERWATER \
{ 0.3645f, 1.0000f, 0.3162f, 0.0100f, 1.0000f, 1.4900f, 0.1000f, 1.0000f, 0.5963f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 7.0795f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 1.1800f, 0.3480f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRUGGED \
{ 0.4287f, 0.5000f, 0.3162f, 1.0000f, 1.0000f, 8.3900f, 1.3900f, 1.0000f, 0.8760f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 3.1081f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DIZZY \
{ 0.3645f, 0.6000f, 0.3162f, 0.6310f, 1.0000f, 17.2300f, 0.5600f, 1.0000f, 0.1392f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4937f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.8100f, 0.3100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PSYCHOTIC \
{ 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
/* Castle Presets */
#define EFX_REVERB_PRESET_CASTLE_SMALLROOM \
{ 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 1.2200f, 0.8300f, 0.3100f, 0.8913f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_SHORTPASSAGE \
{ 1.0000f, 0.8900f, 0.3162f, 0.3162f, 0.1000f, 2.3200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_MEDIUMROOM \
{ 1.0000f, 0.9300f, 0.3162f, 0.2818f, 0.1000f, 2.0400f, 0.8300f, 0.4600f, 0.6310f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1550f, 0.0300f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_LARGEROOM \
{ 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.1259f, 2.5300f, 0.8300f, 0.5000f, 0.4467f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1850f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_LONGPASSAGE \
{ 1.0000f, 0.8900f, 0.3162f, 0.3981f, 0.1000f, 3.4200f, 0.8300f, 0.3100f, 0.8913f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_HALL \
{ 1.0000f, 0.8100f, 0.3162f, 0.2818f, 0.1778f, 3.1400f, 0.7900f, 0.6200f, 0.1778f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_CUPBOARD \
{ 1.0000f, 0.8900f, 0.3162f, 0.2818f, 0.1000f, 0.6700f, 0.8700f, 0.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 3.5481f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CASTLE_COURTYARD \
{ 1.0000f, 0.4200f, 0.3162f, 0.4467f, 0.1995f, 2.1300f, 0.6100f, 0.2300f, 0.2239f, 0.1600f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3700f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_CASTLE_ALCOVE \
{ 1.0000f, 0.8900f, 0.3162f, 0.5012f, 0.1000f, 1.6400f, 0.8700f, 0.3100f, 1.0000f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1380f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 5168.6001f, 139.5000f, 0.0000f, 0x1 }
/* Factory Presets */
#define EFX_REVERB_PRESET_FACTORY_SMALLROOM \
{ 0.3645f, 0.8200f, 0.3162f, 0.7943f, 0.5012f, 1.7200f, 0.6500f, 1.3100f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.1190f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_SHORTPASSAGE \
{ 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 2.5300f, 0.6500f, 1.3100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_MEDIUMROOM \
{ 0.4287f, 0.8200f, 0.2512f, 0.7943f, 0.5012f, 2.7600f, 0.6500f, 1.3100f, 0.2818f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1740f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_LARGEROOM \
{ 0.4287f, 0.7500f, 0.2512f, 0.7079f, 0.6310f, 4.2400f, 0.5100f, 1.3100f, 0.1778f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2310f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_LONGPASSAGE \
{ 0.3645f, 0.6400f, 0.2512f, 0.7943f, 0.5012f, 4.0600f, 0.6500f, 1.3100f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.1350f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_HALL \
{ 0.4287f, 0.7500f, 0.3162f, 0.7079f, 0.6310f, 7.4300f, 0.5100f, 1.3100f, 0.0631f, 0.0730f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_CUPBOARD \
{ 0.3071f, 0.6300f, 0.2512f, 0.7943f, 0.5012f, 0.4900f, 0.6500f, 1.3100f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.1070f, 0.0700f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_COURTYARD \
{ 0.3071f, 0.5700f, 0.3162f, 0.3162f, 0.6310f, 2.3200f, 0.2900f, 0.5600f, 0.2239f, 0.1400f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2900f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_FACTORY_ALCOVE \
{ 0.3645f, 0.5900f, 0.2512f, 0.7943f, 0.5012f, 3.1400f, 0.6500f, 1.3100f, 1.4125f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.1140f, 0.1000f, 0.2500f, 0.0000f, 0.9943f, 3762.6001f, 362.5000f, 0.0000f, 0x1 }
/* Ice Palace Presets */
#define EFX_REVERB_PRESET_ICEPALACE_SMALLROOM \
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 1.5100f, 1.5300f, 0.2700f, 0.8913f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1640f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_SHORTPASSAGE \
{ 1.0000f, 0.7500f, 0.3162f, 0.5623f, 0.2818f, 1.7900f, 1.4600f, 0.2800f, 0.5012f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_MEDIUMROOM \
{ 1.0000f, 0.8700f, 0.3162f, 0.5623f, 0.4467f, 2.2200f, 1.5300f, 0.3200f, 0.3981f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_LARGEROOM \
{ 1.0000f, 0.8100f, 0.3162f, 0.5623f, 0.4467f, 3.1400f, 1.5300f, 0.3200f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0270f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_LONGPASSAGE \
{ 1.0000f, 0.7700f, 0.3162f, 0.5623f, 0.3981f, 3.0100f, 1.4600f, 0.2800f, 0.7943f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0250f, { 0.0000f, 0.0000f, 0.0000f }, 0.1860f, 0.0400f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_HALL \
{ 1.0000f, 0.7600f, 0.3162f, 0.4467f, 0.5623f, 5.4900f, 1.5300f, 0.3800f, 0.1122f, 0.0540f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0520f, { 0.0000f, 0.0000f, 0.0000f }, 0.2260f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_CUPBOARD \
{ 1.0000f, 0.8300f, 0.3162f, 0.5012f, 0.2239f, 0.7600f, 1.5300f, 0.2600f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1430f, 0.0800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_COURTYARD \
{ 1.0000f, 0.5900f, 0.3162f, 0.2818f, 0.3162f, 2.0400f, 1.2000f, 0.3800f, 0.3162f, 0.1730f, { 0.0000f, 0.0000f, 0.0000f }, 0.3162f, 0.0430f, { 0.0000f, 0.0000f, 0.0000f }, 0.2350f, 0.4800f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_ICEPALACE_ALCOVE \
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 0.2818f, 2.7600f, 1.4600f, 0.2800f, 1.1220f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1610f, 0.0900f, 0.2500f, 0.0000f, 0.9943f, 12428.5000f, 99.6000f, 0.0000f, 0x1 }
/* Space Station Presets */
#define EFX_REVERB_PRESET_SPACESTATION_SMALLROOM \
{ 0.2109f, 0.7000f, 0.3162f, 0.7079f, 0.8913f, 1.7200f, 0.8200f, 0.5500f, 0.7943f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0130f, { 0.0000f, 0.0000f, 0.0000f }, 0.1880f, 0.2600f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_SHORTPASSAGE \
{ 0.2109f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 3.5700f, 0.5000f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.1720f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_MEDIUMROOM \
{ 0.2109f, 0.7500f, 0.3162f, 0.6310f, 0.8913f, 3.0100f, 0.5000f, 0.5500f, 0.3981f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2090f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_LARGEROOM \
{ 0.3645f, 0.8100f, 0.3162f, 0.6310f, 0.8913f, 3.8900f, 0.3800f, 0.6100f, 0.3162f, 0.0560f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0350f, { 0.0000f, 0.0000f, 0.0000f }, 0.2330f, 0.2800f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_LONGPASSAGE \
{ 0.4287f, 0.8200f, 0.3162f, 0.6310f, 0.8913f, 4.6200f, 0.6200f, 0.5500f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2300f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_HALL \
{ 0.4287f, 0.8700f, 0.3162f, 0.6310f, 0.8913f, 7.1100f, 0.3800f, 0.6100f, 0.1778f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2500f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_CUPBOARD \
{ 0.1715f, 0.5600f, 0.3162f, 0.7079f, 0.8913f, 0.7900f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.7783f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1810f, 0.3100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPACESTATION_ALCOVE \
{ 0.2109f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.1600f, 0.8100f, 0.5500f, 1.4125f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0180f, { 0.0000f, 0.0000f, 0.0000f }, 0.1920f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 3316.1001f, 458.2000f, 0.0000f, 0x1 }
/* Wooden Galleon Presets */
#define EFX_REVERB_PRESET_WOODEN_SMALLROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.1122f, 0.3162f, 0.7900f, 0.3200f, 0.8700f, 1.0000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_SHORTPASSAGE \
{ 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.7500f, 0.5000f, 0.8700f, 0.8913f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.6310f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_MEDIUMROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.2818f, 1.4700f, 0.4200f, 0.8200f, 0.8913f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_LARGEROOM \
{ 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.2818f, 2.6500f, 0.3300f, 0.8200f, 0.8913f, 0.0660f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_LONGPASSAGE \
{ 1.0000f, 1.0000f, 0.3162f, 0.1000f, 0.3162f, 1.9900f, 0.4000f, 0.7900f, 1.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.4467f, 0.0360f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_HALL \
{ 1.0000f, 1.0000f, 0.3162f, 0.0794f, 0.2818f, 3.4500f, 0.3000f, 0.8200f, 0.8913f, 0.0880f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_CUPBOARD \
{ 1.0000f, 1.0000f, 0.3162f, 0.1413f, 0.3162f, 0.5600f, 0.4600f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_COURTYARD \
{ 1.0000f, 0.6500f, 0.3162f, 0.0794f, 0.3162f, 1.7900f, 0.3500f, 0.7900f, 0.5623f, 0.1230f, { 0.0000f, 0.0000f, 0.0000f }, 0.1000f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_WOODEN_ALCOVE \
{ 1.0000f, 1.0000f, 0.3162f, 0.1259f, 0.3162f, 1.2200f, 0.6200f, 0.9100f, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 4705.0000f, 99.6000f, 0.0000f, 0x1 }
/* Sports Presets */
#define EFX_REVERB_PRESET_SPORT_EMPTYSTADIUM \
{ 1.0000f, 1.0000f, 0.3162f, 0.4467f, 0.7943f, 6.2600f, 0.5100f, 1.1000f, 0.0631f, 0.1830f, { 0.0000f, 0.0000f, 0.0000f }, 0.3981f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_SQUASHCOURT \
{ 1.0000f, 0.7500f, 0.3162f, 0.3162f, 0.7943f, 2.2200f, 0.9100f, 1.1600f, 0.4467f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.1260f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_SMALLSWIMMINGPOOL \
{ 1.0000f, 0.7000f, 0.3162f, 0.7943f, 0.8913f, 2.7600f, 1.2500f, 1.1400f, 0.6310f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_SPORT_LARGESWIMMINGPOOL \
{ 1.0000f, 0.8200f, 0.3162f, 0.7943f, 1.0000f, 5.4900f, 1.3100f, 1.1400f, 0.4467f, 0.0390f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2220f, 0.5500f, 1.1590f, 0.2100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_SPORT_GYMNASIUM \
{ 1.0000f, 0.8100f, 0.3162f, 0.4467f, 0.8913f, 3.1400f, 1.0600f, 1.3500f, 0.3981f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0450f, { 0.0000f, 0.0000f, 0.0000f }, 0.1460f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_FULLSTADIUM \
{ 1.0000f, 1.0000f, 0.3162f, 0.0708f, 0.7943f, 5.2500f, 0.1700f, 0.8000f, 0.1000f, 0.1880f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0380f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SPORT_STADIUMTANNOY \
{ 1.0000f, 0.7800f, 0.3162f, 0.5623f, 0.5012f, 2.5300f, 0.8800f, 0.6800f, 0.2818f, 0.2300f, { 0.0000f, 0.0000f, 0.0000f }, 0.5012f, 0.0630f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
/* Prefab Presets */
#define EFX_REVERB_PRESET_PREFAB_WORKSHOP \
{ 0.4287f, 1.0000f, 0.3162f, 0.1413f, 0.3981f, 0.7600f, 1.0000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PREFAB_SCHOOLROOM \
{ 0.4022f, 0.6900f, 0.3162f, 0.6310f, 0.5012f, 0.9800f, 0.4500f, 0.1800f, 1.4125f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PREFAB_PRACTISEROOM \
{ 0.4022f, 0.8700f, 0.3162f, 0.3981f, 0.5012f, 1.1200f, 0.5600f, 0.1800f, 1.2589f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0110f, { 0.0000f, 0.0000f, 0.0000f }, 0.0950f, 0.1400f, 0.2500f, 0.0000f, 0.9943f, 7176.8999f, 211.2000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PREFAB_OUTHOUSE \
{ 1.0000f, 0.8200f, 0.3162f, 0.1122f, 0.1585f, 1.3800f, 0.3800f, 0.3500f, 0.8913f, 0.0240f, { 0.0000f, 0.0000f, -0.0000f }, 0.6310f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.1210f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PREFAB_CARAVAN \
{ 1.0000f, 1.0000f, 0.3162f, 0.0891f, 0.1259f, 0.4300f, 1.5000f, 1.0000f, 1.0000f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 1.9953f, 0.0120f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
/* Dome and Pipe Presets */
#define EFX_REVERB_PRESET_DOME_TOMB \
{ 1.0000f, 0.7900f, 0.3162f, 0.3548f, 0.2239f, 4.1800f, 0.2100f, 0.1000f, 0.3868f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 1.6788f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.1770f, 0.1900f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PIPE_SMALL \
{ 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 5.0400f, 0.1000f, 0.1000f, 0.5012f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 2.5119f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DOME_SAINTPAULS \
{ 1.0000f, 0.8700f, 0.3162f, 0.3548f, 0.2239f, 10.4800f, 0.1900f, 0.1000f, 0.1778f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0420f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1200f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PIPE_LONGTHIN \
{ 0.2560f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 9.2100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_PIPE_LARGE \
{ 1.0000f, 1.0000f, 0.3162f, 0.3548f, 0.2239f, 8.4500f, 0.1000f, 0.1000f, 0.3981f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_PIPE_RESONANT \
{ 0.1373f, 0.9100f, 0.3162f, 0.4467f, 0.2818f, 6.8100f, 0.1800f, 0.1000f, 0.7079f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.0000f, 0.0220f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 20.0000f, 0.0000f, 0x0 }
/* Outdoors Presets */
#define EFX_REVERB_PRESET_OUTDOORS_BACKYARD \
{ 1.0000f, 0.4500f, 0.3162f, 0.2512f, 0.5012f, 1.1200f, 0.3400f, 0.4600f, 0.4467f, 0.0690f, { 0.0000f, 0.0000f, -0.0000f }, 0.7079f, 0.0230f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_ROLLINGPLAINS \
{ 1.0000f, 0.0000f, 0.3162f, 0.0112f, 0.6310f, 2.1300f, 0.2100f, 0.4600f, 0.1778f, 0.3000f, { 0.0000f, 0.0000f, -0.0000f }, 0.4467f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_DEEPCANYON \
{ 1.0000f, 0.7400f, 0.3162f, 0.1778f, 0.6310f, 3.8900f, 0.2100f, 0.4600f, 0.3162f, 0.2230f, { 0.0000f, 0.0000f, -0.0000f }, 0.3548f, 0.0190f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_CREEK \
{ 1.0000f, 0.3500f, 0.3162f, 0.1778f, 0.5012f, 2.1300f, 0.2100f, 0.4600f, 0.3981f, 0.1150f, { 0.0000f, 0.0000f, -0.0000f }, 0.1995f, 0.0310f, { 0.0000f, 0.0000f, 0.0000f }, 0.2180f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 4399.1001f, 242.9000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_OUTDOORS_VALLEY \
{ 1.0000f, 0.2800f, 0.3162f, 0.0282f, 0.1585f, 2.8800f, 0.2600f, 0.3500f, 0.1413f, 0.2630f, { 0.0000f, 0.0000f, -0.0000f }, 0.3981f, 0.1000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.3400f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
/* Mood Presets */
#define EFX_REVERB_PRESET_MOOD_HEAVEN \
{ 1.0000f, 0.9400f, 0.3162f, 0.7943f, 0.4467f, 5.0400f, 1.1200f, 0.5600f, 0.2427f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0290f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0800f, 2.7420f, 0.0500f, 0.9977f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_MOOD_HELL \
{ 1.0000f, 0.5700f, 0.3162f, 0.3548f, 0.4467f, 3.5700f, 0.4900f, 2.0000f, 0.0000f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1100f, 0.0400f, 2.1090f, 0.5200f, 0.9943f, 5000.0000f, 139.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_MOOD_MEMORY \
{ 1.0000f, 0.8500f, 0.3162f, 0.6310f, 0.3548f, 4.0600f, 0.8200f, 0.5600f, 0.0398f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.1220f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.4740f, 0.4500f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
/* Driving Presets */
#define EFX_REVERB_PRESET_DRIVING_COMMENTATOR \
{ 1.0000f, 0.0000f, 3.1623f, 0.5623f, 0.5012f, 2.4200f, 0.8800f, 0.6800f, 0.1995f, 0.0930f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0170f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 1.0000f, 0.2500f, 0.0000f, 0.9886f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_PITGARAGE \
{ 0.4287f, 0.5900f, 0.3162f, 0.7079f, 0.5623f, 1.7200f, 0.9300f, 0.8700f, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0160f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DRIVING_INCAR_RACER \
{ 0.0832f, 0.8000f, 0.3162f, 1.0000f, 0.7943f, 0.1700f, 2.0000f, 0.4100f, 1.7783f, 0.0070f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0150f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_INCAR_SPORTS \
{ 0.0832f, 0.8000f, 0.3162f, 0.6310f, 1.0000f, 0.1700f, 0.7500f, 0.4100f, 1.0000f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.5623f, 0.0000f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_INCAR_LUXURY \
{ 0.2560f, 1.0000f, 0.3162f, 0.1000f, 0.5012f, 0.1300f, 0.4100f, 0.4600f, 0.7943f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 1.5849f, 0.0100f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10268.2002f, 251.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_DRIVING_FULLGRANDSTAND \
{ 1.0000f, 1.0000f, 0.3162f, 0.2818f, 0.6310f, 3.0100f, 1.3700f, 1.2800f, 0.3548f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.1778f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DRIVING_EMPTYGRANDSTAND \
{ 1.0000f, 1.0000f, 0.3162f, 1.0000f, 0.7943f, 4.6200f, 1.7500f, 1.4000f, 0.2082f, 0.0900f, { 0.0000f, 0.0000f, 0.0000f }, 0.2512f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.0000f, 0.9943f, 10420.2002f, 250.0000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_DRIVING_TUNNEL \
{ 1.0000f, 0.8100f, 0.3162f, 0.3981f, 0.8913f, 3.4200f, 0.9400f, 1.3100f, 0.7079f, 0.0510f, { 0.0000f, 0.0000f, 0.0000f }, 0.7079f, 0.0470f, { 0.0000f, 0.0000f, 0.0000f }, 0.2140f, 0.0500f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 155.3000f, 0.0000f, 0x1 }
/* City Presets */
#define EFX_REVERB_PRESET_CITY_STREETS \
{ 1.0000f, 0.7800f, 0.3162f, 0.7079f, 0.8913f, 1.7900f, 1.1200f, 0.9100f, 0.2818f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 0.1995f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY_SUBWAY \
{ 1.0000f, 0.7400f, 0.3162f, 0.7079f, 0.8913f, 3.0100f, 1.2300f, 0.9100f, 0.7079f, 0.0460f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0280f, { 0.0000f, 0.0000f, 0.0000f }, 0.1250f, 0.2100f, 0.2500f, 0.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY_MUSEUM \
{ 1.0000f, 0.8200f, 0.3162f, 0.1778f, 0.1778f, 3.2800f, 1.4000f, 0.5700f, 0.2512f, 0.0390f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0340f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_CITY_LIBRARY \
{ 1.0000f, 0.8200f, 0.3162f, 0.2818f, 0.0891f, 2.7600f, 0.8900f, 0.4100f, 0.3548f, 0.0290f, { 0.0000f, 0.0000f, -0.0000f }, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 0.1300f, 0.1700f, 0.2500f, 0.0000f, 0.9943f, 2854.3999f, 107.5000f, 0.0000f, 0x0 }
#define EFX_REVERB_PRESET_CITY_UNDERPASS \
{ 1.0000f, 0.8200f, 0.3162f, 0.4467f, 0.8913f, 3.5700f, 1.1200f, 0.9100f, 0.3981f, 0.0590f, { 0.0000f, 0.0000f, 0.0000f }, 0.8913f, 0.0370f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.1400f, 0.2500f, 0.0000f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CITY_ABANDONED \
{ 1.0000f, 0.6900f, 0.3162f, 0.7943f, 0.8913f, 3.2800f, 1.1700f, 0.9100f, 0.4467f, 0.0440f, { 0.0000f, 0.0000f, 0.0000f }, 0.2818f, 0.0240f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.2000f, 0.2500f, 0.0000f, 0.9966f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
/* Misc. Presets */
#define EFX_REVERB_PRESET_DUSTYROOM \
{ 0.3645f, 0.5600f, 0.3162f, 0.7943f, 0.7079f, 1.7900f, 0.3800f, 0.2100f, 0.5012f, 0.0020f, { 0.0000f, 0.0000f, 0.0000f }, 1.2589f, 0.0060f, { 0.0000f, 0.0000f, 0.0000f }, 0.2020f, 0.0500f, 0.2500f, 0.0000f, 0.9886f, 13046.0000f, 163.3000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_CHAPEL \
{ 1.0000f, 0.8400f, 0.3162f, 0.5623f, 1.0000f, 4.6200f, 0.6400f, 1.2300f, 0.4467f, 0.0320f, { 0.0000f, 0.0000f, 0.0000f }, 0.7943f, 0.0490f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 0.2500f, 0.1100f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x1 }
#define EFX_REVERB_PRESET_SMALLWATERROOM \
{ 1.0000f, 0.7000f, 0.3162f, 0.4477f, 1.0000f, 1.5100f, 1.2500f, 1.1400f, 0.8913f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 1.4125f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.1790f, 0.1500f, 0.8950f, 0.1900f, 0.9920f, 5000.0000f, 250.0000f, 0.0000f, 0x0 }
#endif /* EFX_PRESETS_H */
+761
View File
@@ -0,0 +1,761 @@
#ifndef AL_EFX_H
#define AL_EFX_H
#include "alc.h"
#include "al.h"
#ifdef __cplusplus
extern "C" {
#endif
#define ALC_EXT_EFX_NAME "ALC_EXT_EFX"
#define ALC_EFX_MAJOR_VERSION 0x20001
#define ALC_EFX_MINOR_VERSION 0x20002
#define ALC_MAX_AUXILIARY_SENDS 0x20003
/* Listener properties. */
#define AL_METERS_PER_UNIT 0x20004
/* Source properties. */
#define AL_DIRECT_FILTER 0x20005
#define AL_AUXILIARY_SEND_FILTER 0x20006
#define AL_AIR_ABSORPTION_FACTOR 0x20007
#define AL_ROOM_ROLLOFF_FACTOR 0x20008
#define AL_CONE_OUTER_GAINHF 0x20009
#define AL_DIRECT_FILTER_GAINHF_AUTO 0x2000A
#define AL_AUXILIARY_SEND_FILTER_GAIN_AUTO 0x2000B
#define AL_AUXILIARY_SEND_FILTER_GAINHF_AUTO 0x2000C
/* Effect properties. */
/* Reverb effect parameters */
#define AL_REVERB_DENSITY 0x0001
#define AL_REVERB_DIFFUSION 0x0002
#define AL_REVERB_GAIN 0x0003
#define AL_REVERB_GAINHF 0x0004
#define AL_REVERB_DECAY_TIME 0x0005
#define AL_REVERB_DECAY_HFRATIO 0x0006
#define AL_REVERB_REFLECTIONS_GAIN 0x0007
#define AL_REVERB_REFLECTIONS_DELAY 0x0008
#define AL_REVERB_LATE_REVERB_GAIN 0x0009
#define AL_REVERB_LATE_REVERB_DELAY 0x000A
#define AL_REVERB_AIR_ABSORPTION_GAINHF 0x000B
#define AL_REVERB_ROOM_ROLLOFF_FACTOR 0x000C
#define AL_REVERB_DECAY_HFLIMIT 0x000D
/* EAX Reverb effect parameters */
#define AL_EAXREVERB_DENSITY 0x0001
#define AL_EAXREVERB_DIFFUSION 0x0002
#define AL_EAXREVERB_GAIN 0x0003
#define AL_EAXREVERB_GAINHF 0x0004
#define AL_EAXREVERB_GAINLF 0x0005
#define AL_EAXREVERB_DECAY_TIME 0x0006
#define AL_EAXREVERB_DECAY_HFRATIO 0x0007
#define AL_EAXREVERB_DECAY_LFRATIO 0x0008
#define AL_EAXREVERB_REFLECTIONS_GAIN 0x0009
#define AL_EAXREVERB_REFLECTIONS_DELAY 0x000A
#define AL_EAXREVERB_REFLECTIONS_PAN 0x000B
#define AL_EAXREVERB_LATE_REVERB_GAIN 0x000C
#define AL_EAXREVERB_LATE_REVERB_DELAY 0x000D
#define AL_EAXREVERB_LATE_REVERB_PAN 0x000E
#define AL_EAXREVERB_ECHO_TIME 0x000F
#define AL_EAXREVERB_ECHO_DEPTH 0x0010
#define AL_EAXREVERB_MODULATION_TIME 0x0011
#define AL_EAXREVERB_MODULATION_DEPTH 0x0012
#define AL_EAXREVERB_AIR_ABSORPTION_GAINHF 0x0013
#define AL_EAXREVERB_HFREFERENCE 0x0014
#define AL_EAXREVERB_LFREFERENCE 0x0015
#define AL_EAXREVERB_ROOM_ROLLOFF_FACTOR 0x0016
#define AL_EAXREVERB_DECAY_HFLIMIT 0x0017
/* Chorus effect parameters */
#define AL_CHORUS_WAVEFORM 0x0001
#define AL_CHORUS_PHASE 0x0002
#define AL_CHORUS_RATE 0x0003
#define AL_CHORUS_DEPTH 0x0004
#define AL_CHORUS_FEEDBACK 0x0005
#define AL_CHORUS_DELAY 0x0006
/* Distortion effect parameters */
#define AL_DISTORTION_EDGE 0x0001
#define AL_DISTORTION_GAIN 0x0002
#define AL_DISTORTION_LOWPASS_CUTOFF 0x0003
#define AL_DISTORTION_EQCENTER 0x0004
#define AL_DISTORTION_EQBANDWIDTH 0x0005
/* Echo effect parameters */
#define AL_ECHO_DELAY 0x0001
#define AL_ECHO_LRDELAY 0x0002
#define AL_ECHO_DAMPING 0x0003
#define AL_ECHO_FEEDBACK 0x0004
#define AL_ECHO_SPREAD 0x0005
/* Flanger effect parameters */
#define AL_FLANGER_WAVEFORM 0x0001
#define AL_FLANGER_PHASE 0x0002
#define AL_FLANGER_RATE 0x0003
#define AL_FLANGER_DEPTH 0x0004
#define AL_FLANGER_FEEDBACK 0x0005
#define AL_FLANGER_DELAY 0x0006
/* Frequency shifter effect parameters */
#define AL_FREQUENCY_SHIFTER_FREQUENCY 0x0001
#define AL_FREQUENCY_SHIFTER_LEFT_DIRECTION 0x0002
#define AL_FREQUENCY_SHIFTER_RIGHT_DIRECTION 0x0003
/* Vocal morpher effect parameters */
#define AL_VOCAL_MORPHER_PHONEMEA 0x0001
#define AL_VOCAL_MORPHER_PHONEMEA_COARSE_TUNING 0x0002
#define AL_VOCAL_MORPHER_PHONEMEB 0x0003
#define AL_VOCAL_MORPHER_PHONEMEB_COARSE_TUNING 0x0004
#define AL_VOCAL_MORPHER_WAVEFORM 0x0005
#define AL_VOCAL_MORPHER_RATE 0x0006
/* Pitchshifter effect parameters */
#define AL_PITCH_SHIFTER_COARSE_TUNE 0x0001
#define AL_PITCH_SHIFTER_FINE_TUNE 0x0002
/* Ringmodulator effect parameters */
#define AL_RING_MODULATOR_FREQUENCY 0x0001
#define AL_RING_MODULATOR_HIGHPASS_CUTOFF 0x0002
#define AL_RING_MODULATOR_WAVEFORM 0x0003
/* Autowah effect parameters */
#define AL_AUTOWAH_ATTACK_TIME 0x0001
#define AL_AUTOWAH_RELEASE_TIME 0x0002
#define AL_AUTOWAH_RESONANCE 0x0003
#define AL_AUTOWAH_PEAK_GAIN 0x0004
/* Compressor effect parameters */
#define AL_COMPRESSOR_ONOFF 0x0001
/* Equalizer effect parameters */
#define AL_EQUALIZER_LOW_GAIN 0x0001
#define AL_EQUALIZER_LOW_CUTOFF 0x0002
#define AL_EQUALIZER_MID1_GAIN 0x0003
#define AL_EQUALIZER_MID1_CENTER 0x0004
#define AL_EQUALIZER_MID1_WIDTH 0x0005
#define AL_EQUALIZER_MID2_GAIN 0x0006
#define AL_EQUALIZER_MID2_CENTER 0x0007
#define AL_EQUALIZER_MID2_WIDTH 0x0008
#define AL_EQUALIZER_HIGH_GAIN 0x0009
#define AL_EQUALIZER_HIGH_CUTOFF 0x000A
/* Effect type */
#define AL_EFFECT_FIRST_PARAMETER 0x0000
#define AL_EFFECT_LAST_PARAMETER 0x8000
#define AL_EFFECT_TYPE 0x8001
/* Effect types, used with the AL_EFFECT_TYPE property */
#define AL_EFFECT_NULL 0x0000
#define AL_EFFECT_REVERB 0x0001
#define AL_EFFECT_CHORUS 0x0002
#define AL_EFFECT_DISTORTION 0x0003
#define AL_EFFECT_ECHO 0x0004
#define AL_EFFECT_FLANGER 0x0005
#define AL_EFFECT_FREQUENCY_SHIFTER 0x0006
#define AL_EFFECT_VOCAL_MORPHER 0x0007
#define AL_EFFECT_PITCH_SHIFTER 0x0008
#define AL_EFFECT_RING_MODULATOR 0x0009
#define AL_EFFECT_AUTOWAH 0x000A
#define AL_EFFECT_COMPRESSOR 0x000B
#define AL_EFFECT_EQUALIZER 0x000C
#define AL_EFFECT_EAXREVERB 0x8000
/* Auxiliary Effect Slot properties. */
#define AL_EFFECTSLOT_EFFECT 0x0001
#define AL_EFFECTSLOT_GAIN 0x0002
#define AL_EFFECTSLOT_AUXILIARY_SEND_AUTO 0x0003
/* NULL Auxiliary Slot ID to disable a source send. */
#define AL_EFFECTSLOT_NULL 0x0000
/* Filter properties. */
/* Lowpass filter parameters */
#define AL_LOWPASS_GAIN 0x0001
#define AL_LOWPASS_GAINHF 0x0002
/* Highpass filter parameters */
#define AL_HIGHPASS_GAIN 0x0001
#define AL_HIGHPASS_GAINLF 0x0002
/* Bandpass filter parameters */
#define AL_BANDPASS_GAIN 0x0001
#define AL_BANDPASS_GAINLF 0x0002
#define AL_BANDPASS_GAINHF 0x0003
/* Filter type */
#define AL_FILTER_FIRST_PARAMETER 0x0000
#define AL_FILTER_LAST_PARAMETER 0x8000
#define AL_FILTER_TYPE 0x8001
/* Filter types, used with the AL_FILTER_TYPE property */
#define AL_FILTER_NULL 0x0000
#define AL_FILTER_LOWPASS 0x0001
#define AL_FILTER_HIGHPASS 0x0002
#define AL_FILTER_BANDPASS 0x0003
/* Effect object function types. */
typedef void (AL_APIENTRY *LPALGENEFFECTS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEEFFECTS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISEFFECT)(ALuint);
typedef void (AL_APIENTRY *LPALEFFECTI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALEFFECTIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALEFFECTF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALEFFECTFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETEFFECTI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETEFFECTIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETEFFECTF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETEFFECTFV)(ALuint, ALenum, ALfloat*);
/* Filter object function types. */
typedef void (AL_APIENTRY *LPALGENFILTERS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEFILTERS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISFILTER)(ALuint);
typedef void (AL_APIENTRY *LPALFILTERI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALFILTERIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALFILTERF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALFILTERFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETFILTERI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETFILTERIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETFILTERF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETFILTERFV)(ALuint, ALenum, ALfloat*);
/* Auxiliary Effect Slot object function types. */
typedef void (AL_APIENTRY *LPALGENAUXILIARYEFFECTSLOTS)(ALsizei, ALuint*);
typedef void (AL_APIENTRY *LPALDELETEAUXILIARYEFFECTSLOTS)(ALsizei, const ALuint*);
typedef ALboolean (AL_APIENTRY *LPALISAUXILIARYEFFECTSLOT)(ALuint);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, const ALint*);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat);
typedef void (AL_APIENTRY *LPALAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, const ALfloat*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTI)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTIV)(ALuint, ALenum, ALint*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTF)(ALuint, ALenum, ALfloat*);
typedef void (AL_APIENTRY *LPALGETAUXILIARYEFFECTSLOTFV)(ALuint, ALenum, ALfloat*);
#ifdef AL_ALEXT_PROTOTYPES
AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects);
AL_API ALvoid AL_APIENTRY alDeleteEffects(ALsizei n, const ALuint *effects);
AL_API ALboolean AL_APIENTRY alIsEffect(ALuint effect);
AL_API ALvoid AL_APIENTRY alEffecti(ALuint effect, ALenum param, ALint iValue);
AL_API ALvoid AL_APIENTRY alEffectiv(ALuint effect, ALenum param, const ALint *piValues);
AL_API ALvoid AL_APIENTRY alEffectf(ALuint effect, ALenum param, ALfloat flValue);
AL_API ALvoid AL_APIENTRY alEffectfv(ALuint effect, ALenum param, const ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGetEffecti(ALuint effect, ALenum param, ALint *piValue);
AL_API ALvoid AL_APIENTRY alGetEffectiv(ALuint effect, ALenum param, ALint *piValues);
AL_API ALvoid AL_APIENTRY alGetEffectf(ALuint effect, ALenum param, ALfloat *pflValue);
AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters);
AL_API ALvoid AL_APIENTRY alDeleteFilters(ALsizei n, const ALuint *filters);
AL_API ALboolean AL_APIENTRY alIsFilter(ALuint filter);
AL_API ALvoid AL_APIENTRY alFilteri(ALuint filter, ALenum param, ALint iValue);
AL_API ALvoid AL_APIENTRY alFilteriv(ALuint filter, ALenum param, const ALint *piValues);
AL_API ALvoid AL_APIENTRY alFilterf(ALuint filter, ALenum param, ALfloat flValue);
AL_API ALvoid AL_APIENTRY alFilterfv(ALuint filter, ALenum param, const ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGetFilteri(ALuint filter, ALenum param, ALint *piValue);
AL_API ALvoid AL_APIENTRY alGetFilteriv(ALuint filter, ALenum param, ALint *piValues);
AL_API ALvoid AL_APIENTRY alGetFilterf(ALuint filter, ALenum param, ALfloat *pflValue);
AL_API ALvoid AL_APIENTRY alGetFilterfv(ALuint filter, ALenum param, ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots);
AL_API ALvoid AL_APIENTRY alDeleteAuxiliaryEffectSlots(ALsizei n, const ALuint *effectslots);
AL_API ALboolean AL_APIENTRY alIsAuxiliaryEffectSlot(ALuint effectslot);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint iValue);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, const ALint *piValues);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat flValue);
AL_API ALvoid AL_APIENTRY alAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, const ALfloat *pflValues);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSloti(ALuint effectslot, ALenum param, ALint *piValue);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotiv(ALuint effectslot, ALenum param, ALint *piValues);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotf(ALuint effectslot, ALenum param, ALfloat *pflValue);
AL_API ALvoid AL_APIENTRY alGetAuxiliaryEffectSlotfv(ALuint effectslot, ALenum param, ALfloat *pflValues);
#endif
/* Filter ranges and defaults. */
/* Lowpass filter */
#define AL_LOWPASS_MIN_GAIN (0.0f)
#define AL_LOWPASS_MAX_GAIN (1.0f)
#define AL_LOWPASS_DEFAULT_GAIN (1.0f)
#define AL_LOWPASS_MIN_GAINHF (0.0f)
#define AL_LOWPASS_MAX_GAINHF (1.0f)
#define AL_LOWPASS_DEFAULT_GAINHF (1.0f)
/* Highpass filter */
#define AL_HIGHPASS_MIN_GAIN (0.0f)
#define AL_HIGHPASS_MAX_GAIN (1.0f)
#define AL_HIGHPASS_DEFAULT_GAIN (1.0f)
#define AL_HIGHPASS_MIN_GAINLF (0.0f)
#define AL_HIGHPASS_MAX_GAINLF (1.0f)
#define AL_HIGHPASS_DEFAULT_GAINLF (1.0f)
/* Bandpass filter */
#define AL_BANDPASS_MIN_GAIN (0.0f)
#define AL_BANDPASS_MAX_GAIN (1.0f)
#define AL_BANDPASS_DEFAULT_GAIN (1.0f)
#define AL_BANDPASS_MIN_GAINHF (0.0f)
#define AL_BANDPASS_MAX_GAINHF (1.0f)
#define AL_BANDPASS_DEFAULT_GAINHF (1.0f)
#define AL_BANDPASS_MIN_GAINLF (0.0f)
#define AL_BANDPASS_MAX_GAINLF (1.0f)
#define AL_BANDPASS_DEFAULT_GAINLF (1.0f)
/* Effect parameter ranges and defaults. */
/* Standard reverb effect */
#define AL_REVERB_MIN_DENSITY (0.0f)
#define AL_REVERB_MAX_DENSITY (1.0f)
#define AL_REVERB_DEFAULT_DENSITY (1.0f)
#define AL_REVERB_MIN_DIFFUSION (0.0f)
#define AL_REVERB_MAX_DIFFUSION (1.0f)
#define AL_REVERB_DEFAULT_DIFFUSION (1.0f)
#define AL_REVERB_MIN_GAIN (0.0f)
#define AL_REVERB_MAX_GAIN (1.0f)
#define AL_REVERB_DEFAULT_GAIN (0.32f)
#define AL_REVERB_MIN_GAINHF (0.0f)
#define AL_REVERB_MAX_GAINHF (1.0f)
#define AL_REVERB_DEFAULT_GAINHF (0.89f)
#define AL_REVERB_MIN_DECAY_TIME (0.1f)
#define AL_REVERB_MAX_DECAY_TIME (20.0f)
#define AL_REVERB_DEFAULT_DECAY_TIME (1.49f)
#define AL_REVERB_MIN_DECAY_HFRATIO (0.1f)
#define AL_REVERB_MAX_DECAY_HFRATIO (2.0f)
#define AL_REVERB_DEFAULT_DECAY_HFRATIO (0.83f)
#define AL_REVERB_MIN_REFLECTIONS_GAIN (0.0f)
#define AL_REVERB_MAX_REFLECTIONS_GAIN (3.16f)
#define AL_REVERB_DEFAULT_REFLECTIONS_GAIN (0.05f)
#define AL_REVERB_MIN_REFLECTIONS_DELAY (0.0f)
#define AL_REVERB_MAX_REFLECTIONS_DELAY (0.3f)
#define AL_REVERB_DEFAULT_REFLECTIONS_DELAY (0.007f)
#define AL_REVERB_MIN_LATE_REVERB_GAIN (0.0f)
#define AL_REVERB_MAX_LATE_REVERB_GAIN (10.0f)
#define AL_REVERB_DEFAULT_LATE_REVERB_GAIN (1.26f)
#define AL_REVERB_MIN_LATE_REVERB_DELAY (0.0f)
#define AL_REVERB_MAX_LATE_REVERB_DELAY (0.1f)
#define AL_REVERB_DEFAULT_LATE_REVERB_DELAY (0.011f)
#define AL_REVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f)
#define AL_REVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f)
#define AL_REVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
#define AL_REVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_REVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
#define AL_REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_REVERB_MIN_DECAY_HFLIMIT AL_FALSE
#define AL_REVERB_MAX_DECAY_HFLIMIT AL_TRUE
#define AL_REVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
/* EAX reverb effect */
#define AL_EAXREVERB_MIN_DENSITY (0.0f)
#define AL_EAXREVERB_MAX_DENSITY (1.0f)
#define AL_EAXREVERB_DEFAULT_DENSITY (1.0f)
#define AL_EAXREVERB_MIN_DIFFUSION (0.0f)
#define AL_EAXREVERB_MAX_DIFFUSION (1.0f)
#define AL_EAXREVERB_DEFAULT_DIFFUSION (1.0f)
#define AL_EAXREVERB_MIN_GAIN (0.0f)
#define AL_EAXREVERB_MAX_GAIN (1.0f)
#define AL_EAXREVERB_DEFAULT_GAIN (0.32f)
#define AL_EAXREVERB_MIN_GAINHF (0.0f)
#define AL_EAXREVERB_MAX_GAINHF (1.0f)
#define AL_EAXREVERB_DEFAULT_GAINHF (0.89f)
#define AL_EAXREVERB_MIN_GAINLF (0.0f)
#define AL_EAXREVERB_MAX_GAINLF (1.0f)
#define AL_EAXREVERB_DEFAULT_GAINLF (1.0f)
#define AL_EAXREVERB_MIN_DECAY_TIME (0.1f)
#define AL_EAXREVERB_MAX_DECAY_TIME (20.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_TIME (1.49f)
#define AL_EAXREVERB_MIN_DECAY_HFRATIO (0.1f)
#define AL_EAXREVERB_MAX_DECAY_HFRATIO (2.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_HFRATIO (0.83f)
#define AL_EAXREVERB_MIN_DECAY_LFRATIO (0.1f)
#define AL_EAXREVERB_MAX_DECAY_LFRATIO (2.0f)
#define AL_EAXREVERB_DEFAULT_DECAY_LFRATIO (1.0f)
#define AL_EAXREVERB_MIN_REFLECTIONS_GAIN (0.0f)
#define AL_EAXREVERB_MAX_REFLECTIONS_GAIN (3.16f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_GAIN (0.05f)
#define AL_EAXREVERB_MIN_REFLECTIONS_DELAY (0.0f)
#define AL_EAXREVERB_MAX_REFLECTIONS_DELAY (0.3f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_DELAY (0.007f)
#define AL_EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ (0.0f)
#define AL_EAXREVERB_MIN_LATE_REVERB_GAIN (0.0f)
#define AL_EAXREVERB_MAX_LATE_REVERB_GAIN (10.0f)
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_GAIN (1.26f)
#define AL_EAXREVERB_MIN_LATE_REVERB_DELAY (0.0f)
#define AL_EAXREVERB_MAX_LATE_REVERB_DELAY (0.1f)
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_DELAY (0.011f)
#define AL_EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ (0.0f)
#define AL_EAXREVERB_MIN_ECHO_TIME (0.075f)
#define AL_EAXREVERB_MAX_ECHO_TIME (0.25f)
#define AL_EAXREVERB_DEFAULT_ECHO_TIME (0.25f)
#define AL_EAXREVERB_MIN_ECHO_DEPTH (0.0f)
#define AL_EAXREVERB_MAX_ECHO_DEPTH (1.0f)
#define AL_EAXREVERB_DEFAULT_ECHO_DEPTH (0.0f)
#define AL_EAXREVERB_MIN_MODULATION_TIME (0.04f)
#define AL_EAXREVERB_MAX_MODULATION_TIME (4.0f)
#define AL_EAXREVERB_DEFAULT_MODULATION_TIME (0.25f)
#define AL_EAXREVERB_MIN_MODULATION_DEPTH (0.0f)
#define AL_EAXREVERB_MAX_MODULATION_DEPTH (1.0f)
#define AL_EAXREVERB_DEFAULT_MODULATION_DEPTH (0.0f)
#define AL_EAXREVERB_MIN_AIR_ABSORPTION_GAINHF (0.892f)
#define AL_EAXREVERB_MAX_AIR_ABSORPTION_GAINHF (1.0f)
#define AL_EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF (0.994f)
#define AL_EAXREVERB_MIN_HFREFERENCE (1000.0f)
#define AL_EAXREVERB_MAX_HFREFERENCE (20000.0f)
#define AL_EAXREVERB_DEFAULT_HFREFERENCE (5000.0f)
#define AL_EAXREVERB_MIN_LFREFERENCE (20.0f)
#define AL_EAXREVERB_MAX_LFREFERENCE (1000.0f)
#define AL_EAXREVERB_DEFAULT_LFREFERENCE (250.0f)
#define AL_EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
#define AL_EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_EAXREVERB_MIN_DECAY_HFLIMIT AL_FALSE
#define AL_EAXREVERB_MAX_DECAY_HFLIMIT AL_TRUE
#define AL_EAXREVERB_DEFAULT_DECAY_HFLIMIT AL_TRUE
/* Chorus effect */
#define AL_CHORUS_WAVEFORM_SINUSOID (0)
#define AL_CHORUS_WAVEFORM_TRIANGLE (1)
#define AL_CHORUS_MIN_WAVEFORM (0)
#define AL_CHORUS_MAX_WAVEFORM (1)
#define AL_CHORUS_DEFAULT_WAVEFORM (1)
#define AL_CHORUS_MIN_PHASE (-180)
#define AL_CHORUS_MAX_PHASE (180)
#define AL_CHORUS_DEFAULT_PHASE (90)
#define AL_CHORUS_MIN_RATE (0.0f)
#define AL_CHORUS_MAX_RATE (10.0f)
#define AL_CHORUS_DEFAULT_RATE (1.1f)
#define AL_CHORUS_MIN_DEPTH (0.0f)
#define AL_CHORUS_MAX_DEPTH (1.0f)
#define AL_CHORUS_DEFAULT_DEPTH (0.1f)
#define AL_CHORUS_MIN_FEEDBACK (-1.0f)
#define AL_CHORUS_MAX_FEEDBACK (1.0f)
#define AL_CHORUS_DEFAULT_FEEDBACK (0.25f)
#define AL_CHORUS_MIN_DELAY (0.0f)
#define AL_CHORUS_MAX_DELAY (0.016f)
#define AL_CHORUS_DEFAULT_DELAY (0.016f)
/* Distortion effect */
#define AL_DISTORTION_MIN_EDGE (0.0f)
#define AL_DISTORTION_MAX_EDGE (1.0f)
#define AL_DISTORTION_DEFAULT_EDGE (0.2f)
#define AL_DISTORTION_MIN_GAIN (0.01f)
#define AL_DISTORTION_MAX_GAIN (1.0f)
#define AL_DISTORTION_DEFAULT_GAIN (0.05f)
#define AL_DISTORTION_MIN_LOWPASS_CUTOFF (80.0f)
#define AL_DISTORTION_MAX_LOWPASS_CUTOFF (24000.0f)
#define AL_DISTORTION_DEFAULT_LOWPASS_CUTOFF (8000.0f)
#define AL_DISTORTION_MIN_EQCENTER (80.0f)
#define AL_DISTORTION_MAX_EQCENTER (24000.0f)
#define AL_DISTORTION_DEFAULT_EQCENTER (3600.0f)
#define AL_DISTORTION_MIN_EQBANDWIDTH (80.0f)
#define AL_DISTORTION_MAX_EQBANDWIDTH (24000.0f)
#define AL_DISTORTION_DEFAULT_EQBANDWIDTH (3600.0f)
/* Echo effect */
#define AL_ECHO_MIN_DELAY (0.0f)
#define AL_ECHO_MAX_DELAY (0.207f)
#define AL_ECHO_DEFAULT_DELAY (0.1f)
#define AL_ECHO_MIN_LRDELAY (0.0f)
#define AL_ECHO_MAX_LRDELAY (0.404f)
#define AL_ECHO_DEFAULT_LRDELAY (0.1f)
#define AL_ECHO_MIN_DAMPING (0.0f)
#define AL_ECHO_MAX_DAMPING (0.99f)
#define AL_ECHO_DEFAULT_DAMPING (0.5f)
#define AL_ECHO_MIN_FEEDBACK (0.0f)
#define AL_ECHO_MAX_FEEDBACK (1.0f)
#define AL_ECHO_DEFAULT_FEEDBACK (0.5f)
#define AL_ECHO_MIN_SPREAD (-1.0f)
#define AL_ECHO_MAX_SPREAD (1.0f)
#define AL_ECHO_DEFAULT_SPREAD (-1.0f)
/* Flanger effect */
#define AL_FLANGER_WAVEFORM_SINUSOID (0)
#define AL_FLANGER_WAVEFORM_TRIANGLE (1)
#define AL_FLANGER_MIN_WAVEFORM (0)
#define AL_FLANGER_MAX_WAVEFORM (1)
#define AL_FLANGER_DEFAULT_WAVEFORM (1)
#define AL_FLANGER_MIN_PHASE (-180)
#define AL_FLANGER_MAX_PHASE (180)
#define AL_FLANGER_DEFAULT_PHASE (0)
#define AL_FLANGER_MIN_RATE (0.0f)
#define AL_FLANGER_MAX_RATE (10.0f)
#define AL_FLANGER_DEFAULT_RATE (0.27f)
#define AL_FLANGER_MIN_DEPTH (0.0f)
#define AL_FLANGER_MAX_DEPTH (1.0f)
#define AL_FLANGER_DEFAULT_DEPTH (1.0f)
#define AL_FLANGER_MIN_FEEDBACK (-1.0f)
#define AL_FLANGER_MAX_FEEDBACK (1.0f)
#define AL_FLANGER_DEFAULT_FEEDBACK (-0.5f)
#define AL_FLANGER_MIN_DELAY (0.0f)
#define AL_FLANGER_MAX_DELAY (0.004f)
#define AL_FLANGER_DEFAULT_DELAY (0.002f)
/* Frequency shifter effect */
#define AL_FREQUENCY_SHIFTER_MIN_FREQUENCY (0.0f)
#define AL_FREQUENCY_SHIFTER_MAX_FREQUENCY (24000.0f)
#define AL_FREQUENCY_SHIFTER_DEFAULT_FREQUENCY (0.0f)
#define AL_FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION (0)
#define AL_FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION (2)
#define AL_FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION (0)
#define AL_FREQUENCY_SHIFTER_DIRECTION_DOWN (0)
#define AL_FREQUENCY_SHIFTER_DIRECTION_UP (1)
#define AL_FREQUENCY_SHIFTER_DIRECTION_OFF (2)
#define AL_FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION (0)
#define AL_FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION (2)
#define AL_FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION (0)
/* Vocal morpher effect */
#define AL_VOCAL_MORPHER_MIN_PHONEMEA (0)
#define AL_VOCAL_MORPHER_MAX_PHONEMEA (29)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA (0)
#define AL_VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING (-24)
#define AL_VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING (24)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING (0)
#define AL_VOCAL_MORPHER_MIN_PHONEMEB (0)
#define AL_VOCAL_MORPHER_MAX_PHONEMEB (29)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB (10)
#define AL_VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING (-24)
#define AL_VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING (24)
#define AL_VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING (0)
#define AL_VOCAL_MORPHER_PHONEME_A (0)
#define AL_VOCAL_MORPHER_PHONEME_E (1)
#define AL_VOCAL_MORPHER_PHONEME_I (2)
#define AL_VOCAL_MORPHER_PHONEME_O (3)
#define AL_VOCAL_MORPHER_PHONEME_U (4)
#define AL_VOCAL_MORPHER_PHONEME_AA (5)
#define AL_VOCAL_MORPHER_PHONEME_AE (6)
#define AL_VOCAL_MORPHER_PHONEME_AH (7)
#define AL_VOCAL_MORPHER_PHONEME_AO (8)
#define AL_VOCAL_MORPHER_PHONEME_EH (9)
#define AL_VOCAL_MORPHER_PHONEME_ER (10)
#define AL_VOCAL_MORPHER_PHONEME_IH (11)
#define AL_VOCAL_MORPHER_PHONEME_IY (12)
#define AL_VOCAL_MORPHER_PHONEME_UH (13)
#define AL_VOCAL_MORPHER_PHONEME_UW (14)
#define AL_VOCAL_MORPHER_PHONEME_B (15)
#define AL_VOCAL_MORPHER_PHONEME_D (16)
#define AL_VOCAL_MORPHER_PHONEME_F (17)
#define AL_VOCAL_MORPHER_PHONEME_G (18)
#define AL_VOCAL_MORPHER_PHONEME_J (19)
#define AL_VOCAL_MORPHER_PHONEME_K (20)
#define AL_VOCAL_MORPHER_PHONEME_L (21)
#define AL_VOCAL_MORPHER_PHONEME_M (22)
#define AL_VOCAL_MORPHER_PHONEME_N (23)
#define AL_VOCAL_MORPHER_PHONEME_P (24)
#define AL_VOCAL_MORPHER_PHONEME_R (25)
#define AL_VOCAL_MORPHER_PHONEME_S (26)
#define AL_VOCAL_MORPHER_PHONEME_T (27)
#define AL_VOCAL_MORPHER_PHONEME_V (28)
#define AL_VOCAL_MORPHER_PHONEME_Z (29)
#define AL_VOCAL_MORPHER_WAVEFORM_SINUSOID (0)
#define AL_VOCAL_MORPHER_WAVEFORM_TRIANGLE (1)
#define AL_VOCAL_MORPHER_WAVEFORM_SAWTOOTH (2)
#define AL_VOCAL_MORPHER_MIN_WAVEFORM (0)
#define AL_VOCAL_MORPHER_MAX_WAVEFORM (2)
#define AL_VOCAL_MORPHER_DEFAULT_WAVEFORM (0)
#define AL_VOCAL_MORPHER_MIN_RATE (0.0f)
#define AL_VOCAL_MORPHER_MAX_RATE (10.0f)
#define AL_VOCAL_MORPHER_DEFAULT_RATE (1.41f)
/* Pitch shifter effect */
#define AL_PITCH_SHIFTER_MIN_COARSE_TUNE (-12)
#define AL_PITCH_SHIFTER_MAX_COARSE_TUNE (12)
#define AL_PITCH_SHIFTER_DEFAULT_COARSE_TUNE (12)
#define AL_PITCH_SHIFTER_MIN_FINE_TUNE (-50)
#define AL_PITCH_SHIFTER_MAX_FINE_TUNE (50)
#define AL_PITCH_SHIFTER_DEFAULT_FINE_TUNE (0)
/* Ring modulator effect */
#define AL_RING_MODULATOR_MIN_FREQUENCY (0.0f)
#define AL_RING_MODULATOR_MAX_FREQUENCY (8000.0f)
#define AL_RING_MODULATOR_DEFAULT_FREQUENCY (440.0f)
#define AL_RING_MODULATOR_MIN_HIGHPASS_CUTOFF (0.0f)
#define AL_RING_MODULATOR_MAX_HIGHPASS_CUTOFF (24000.0f)
#define AL_RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF (800.0f)
#define AL_RING_MODULATOR_SINUSOID (0)
#define AL_RING_MODULATOR_SAWTOOTH (1)
#define AL_RING_MODULATOR_SQUARE (2)
#define AL_RING_MODULATOR_MIN_WAVEFORM (0)
#define AL_RING_MODULATOR_MAX_WAVEFORM (2)
#define AL_RING_MODULATOR_DEFAULT_WAVEFORM (0)
/* Autowah effect */
#define AL_AUTOWAH_MIN_ATTACK_TIME (0.0001f)
#define AL_AUTOWAH_MAX_ATTACK_TIME (1.0f)
#define AL_AUTOWAH_DEFAULT_ATTACK_TIME (0.06f)
#define AL_AUTOWAH_MIN_RELEASE_TIME (0.0001f)
#define AL_AUTOWAH_MAX_RELEASE_TIME (1.0f)
#define AL_AUTOWAH_DEFAULT_RELEASE_TIME (0.06f)
#define AL_AUTOWAH_MIN_RESONANCE (2.0f)
#define AL_AUTOWAH_MAX_RESONANCE (1000.0f)
#define AL_AUTOWAH_DEFAULT_RESONANCE (1000.0f)
#define AL_AUTOWAH_MIN_PEAK_GAIN (0.00003f)
#define AL_AUTOWAH_MAX_PEAK_GAIN (31621.0f)
#define AL_AUTOWAH_DEFAULT_PEAK_GAIN (11.22f)
/* Compressor effect */
#define AL_COMPRESSOR_MIN_ONOFF (0)
#define AL_COMPRESSOR_MAX_ONOFF (1)
#define AL_COMPRESSOR_DEFAULT_ONOFF (1)
/* Equalizer effect */
#define AL_EQUALIZER_MIN_LOW_GAIN (0.126f)
#define AL_EQUALIZER_MAX_LOW_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_LOW_GAIN (1.0f)
#define AL_EQUALIZER_MIN_LOW_CUTOFF (50.0f)
#define AL_EQUALIZER_MAX_LOW_CUTOFF (800.0f)
#define AL_EQUALIZER_DEFAULT_LOW_CUTOFF (200.0f)
#define AL_EQUALIZER_MIN_MID1_GAIN (0.126f)
#define AL_EQUALIZER_MAX_MID1_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_MID1_GAIN (1.0f)
#define AL_EQUALIZER_MIN_MID1_CENTER (200.0f)
#define AL_EQUALIZER_MAX_MID1_CENTER (3000.0f)
#define AL_EQUALIZER_DEFAULT_MID1_CENTER (500.0f)
#define AL_EQUALIZER_MIN_MID1_WIDTH (0.01f)
#define AL_EQUALIZER_MAX_MID1_WIDTH (1.0f)
#define AL_EQUALIZER_DEFAULT_MID1_WIDTH (1.0f)
#define AL_EQUALIZER_MIN_MID2_GAIN (0.126f)
#define AL_EQUALIZER_MAX_MID2_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_MID2_GAIN (1.0f)
#define AL_EQUALIZER_MIN_MID2_CENTER (1000.0f)
#define AL_EQUALIZER_MAX_MID2_CENTER (8000.0f)
#define AL_EQUALIZER_DEFAULT_MID2_CENTER (3000.0f)
#define AL_EQUALIZER_MIN_MID2_WIDTH (0.01f)
#define AL_EQUALIZER_MAX_MID2_WIDTH (1.0f)
#define AL_EQUALIZER_DEFAULT_MID2_WIDTH (1.0f)
#define AL_EQUALIZER_MIN_HIGH_GAIN (0.126f)
#define AL_EQUALIZER_MAX_HIGH_GAIN (7.943f)
#define AL_EQUALIZER_DEFAULT_HIGH_GAIN (1.0f)
#define AL_EQUALIZER_MIN_HIGH_CUTOFF (4000.0f)
#define AL_EQUALIZER_MAX_HIGH_CUTOFF (16000.0f)
#define AL_EQUALIZER_DEFAULT_HIGH_CUTOFF (6000.0f)
/* Source parameter value ranges and defaults. */
#define AL_MIN_AIR_ABSORPTION_FACTOR (0.0f)
#define AL_MAX_AIR_ABSORPTION_FACTOR (10.0f)
#define AL_DEFAULT_AIR_ABSORPTION_FACTOR (0.0f)
#define AL_MIN_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_MAX_ROOM_ROLLOFF_FACTOR (10.0f)
#define AL_DEFAULT_ROOM_ROLLOFF_FACTOR (0.0f)
#define AL_MIN_CONE_OUTER_GAINHF (0.0f)
#define AL_MAX_CONE_OUTER_GAINHF (1.0f)
#define AL_DEFAULT_CONE_OUTER_GAINHF (1.0f)
#define AL_MIN_DIRECT_FILTER_GAINHF_AUTO AL_FALSE
#define AL_MAX_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
#define AL_DEFAULT_DIRECT_FILTER_GAINHF_AUTO AL_TRUE
#define AL_MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_FALSE
#define AL_MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO AL_TRUE
#define AL_MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_FALSE
#define AL_MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
#define AL_DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO AL_TRUE
/* Listener parameter value ranges and defaults. */
#define AL_MIN_METERS_PER_UNIT FLT_MIN
#define AL_MAX_METERS_PER_UNIT FLT_MAX
#define AL_DEFAULT_METERS_PER_UNIT (1.0f)
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* AL_EFX_H */
+187
View File
@@ -0,0 +1,187 @@
EXPORTS
alAuxiliaryEffectSlotf
alAuxiliaryEffectSlotfv
alAuxiliaryEffectSloti
alAuxiliaryEffectSlotiv
alBuffer3f
alBuffer3i
alBufferData
alBufferSamplesSOFT
alBufferSubDataSOFT
alBufferSubSamplesSOFT
alBufferf
alBufferfv
alBufferi
alBufferiv
alDeferUpdatesSOFT
alDeleteAuxiliaryEffectSlots
alDeleteBuffers
alDeleteEffects
alDeleteFilters
alDeleteFontsoundsSOFT
alDeletePresetsSOFT
alDeleteSoundfontsSOFT
alDeleteSources
alDisable
alDistanceModel
alDopplerFactor
alDopplerVelocity
alEffectf
alEffectfv
alEffecti
alEffectiv
alEnable
alFilterf
alFilterfv
alFilteri
alFilteriv
alFontsound2iSOFT
alFontsoundModulatoriSOFT
alFontsoundiSOFT
alFontsoundivSOFT
alGenAuxiliaryEffectSlots
alGenBuffers
alGenEffects
alGenFilters
alGenFontsoundsSOFT
alGenPresetsSOFT
alGenSoundfontsSOFT
alGenSources
alGetAuxiliaryEffectSlotf
alGetAuxiliaryEffectSlotfv
alGetAuxiliaryEffectSloti
alGetAuxiliaryEffectSlotiv
alGetBoolean
alGetBooleanv
alGetBuffer3f
alGetBuffer3i
alGetBufferSamplesSOFT
alGetBufferf
alGetBufferfv
alGetBufferi
alGetBufferiv
alGetDouble
alGetDoublev
alGetEffectf
alGetEffectfv
alGetEffecti
alGetEffectiv
alGetEnumValue
alGetError
alGetFilterf
alGetFilterfv
alGetFilteri
alGetFilteriv
alGetFloat
alGetFloatv
alGetFontsoundModulatorivSOFT
alGetFontsoundivSOFT
alGetInteger
alGetInteger64SOFT
alGetInteger64vSOFT
alGetIntegerv
alGetListener3f
alGetListener3i
alGetListenerf
alGetListenerfv
alGetListeneri
alGetListeneriv
alGetPresetivSOFT
alGetProcAddress
alGetSoundfontivSOFT
alGetSource3dSOFT
alGetSource3f
alGetSource3i
alGetSource3i64SOFT
alGetSourcedSOFT
alGetSourcedvSOFT
alGetSourcef
alGetSourcefv
alGetSourcei
alGetSourcei64SOFT
alGetSourcei64vSOFT
alGetSourceiv
alGetString
alIsAuxiliaryEffectSlot
alIsBuffer
alIsBufferFormatSupportedSOFT
alIsEffect
alIsEnabled
alIsExtensionPresent
alIsFilter
alIsFontsoundSOFT
alIsPresetSOFT
alIsSoundfontSOFT
alIsSource
alListener3f
alListener3i
alListenerf
alListenerfv
alListeneri
alListeneriv
alLoadSoundfontSOFT
alMidiEventSOFT
alMidiGainSOFT
alMidiPauseSOFT
alMidiPlaySOFT
alMidiResetSOFT
alMidiSoundfontSOFT
alMidiSoundfontvSOFT
alMidiStopSOFT
alMidiSysExSOFT
alPresetFontsoundsSOFT
alPresetiSOFT
alPresetivSOFT
alProcessUpdatesSOFT
alSoundfontPresetsSOFT
alSource3dSOFT
alSource3f
alSource3i
alSource3i64SOFT
alSourcePause
alSourcePausev
alSourcePlay
alSourcePlayv
alSourceQueueBuffers
alSourceRewind
alSourceRewindv
alSourceStop
alSourceStopv
alSourceUnqueueBuffers
alSourcedSOFT
alSourcedvSOFT
alSourcef
alSourcefv
alSourcei
alSourcei64SOFT
alSourcei64vSOFT
alSourceiv
alSpeedOfSound
alcCaptureCloseDevice
alcCaptureOpenDevice
alcCaptureSamples
alcCaptureStart
alcCaptureStop
alcCloseDevice
alcCreateContext
alcDestroyContext
alcDevicePauseSOFT
alcDeviceResumeSOFT
alcGetContextsDevice
alcGetCurrentContext
alcGetEnumValue
alcGetError
alcGetInteger64vSOFT
alcGetIntegerv
alcGetProcAddress
alcGetString
alcGetThreadContext
alcIsExtensionPresent
alcIsRenderFormatSupportedSOFT
alcLoopbackOpenDeviceSOFT
alcMakeContextCurrent
alcOpenDevice
alcProcessContext
alcRenderSamplesSOFT
alcSetThreadContext
alcSuspendContext
Binary file not shown.
+45 -2
View File
@@ -1,4 +1,47 @@
rpcs3
RPCS3
=====
PS3 emulator/debugger
[![Build Status](https://travis-ci.org/RPCS3/rpcs3.svg?branch=master)](https://travis-ci.org/RPCS3/rpcs3)
[![Build status](https://ci.appveyor.com/api/projects/status/411c4clmiohtx7eo/branch/master?svg=true)](https://ci.appveyor.com/project/rpcs3/rpcs3/branch/master)
[![Coverity Status](https://scan.coverity.com/projects/3960/badge.svg)](https://scan.coverity.com/projects/3960)
[![Coverage Status](https://coveralls.io/repos/DHrpcs3/rpcs3/badge.svg)](https://coveralls.io/r/DHrpcs3/rpcs3)
An open-source PlayStation 3 emulator/debugger written in C++.
You can find some basic information in the [FAQ](https://github.com/DHrpcs3/rpcs3/wiki/FAQ). For discussion about this emulator and PS3 emulation please visit the [official forums](http://www.emunewz.net/forum/forumdisplay.php?fid=162).
### Development
If you want to contribute please take a took at the [Coding Style](https://github.com/DHrpcs3/rpcs3/wiki/Coding-Style), [Roadmap](https://github.com/DHrpcs3/rpcs3/wiki/Roadmap) and [Developer Information](https://github.com/DHrpcs3/rpcs3/wiki/Developer-Information) pages. You should as well contact any of the developers in the forum in order to know about the current situation of the emulator.
### Dependencies
__Windows__
* [Visual Studio 2015](https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx)
* [Visual C++ Redistributable Packages for Visual Studio 2015](http://www.microsoft.com/en-us/download/details.aspx?id=48145)
* [Cmake 3.1.0+](http://www.cmake.org/download/) (add to PATH)
* [Python 2.7+](https://www.python.org/downloads/) (add to PATH)
__Linux__
* Debian & Ubuntu: `sudo apt-get install libopenal-dev libwxgtk3.0-dev build-essential libglew-dev`
* Arch: `sudo pacman -S glew openal wxgtk cmake llvm`
__Mac OSX__
* Install with Homebrew: `brew install glew wxwidgets` (add `llvm36` to that list if you want to build with ppu jit)
* Remove '-framework QuickTime' from '_ldflags' in /usr/local/bin/wx-config
### Building
To initialize the repository don't forget to execute `git submodule update --init` to pull the wxWidgets source.
* __Windows__:
Open the *.SLN* file, and press *Build* > *Rebuild Solution*.
* __Linux & Mac OSX__:
If you want to build with LLVM, then LLVM 3.6.2 is required.
`cd rpcs3 && cmake CMakeLists.txt && make && cd ../` Then run with `cd bin && ./rpcs3`
If you are on OSX and want to build with llvm don't forget to add `-DLLVM_DIR=/usr/local/opt/llvm36/lib/llvm-3.6/share/llvm/cmake` (or wherever llvm brew was installed) to cmake invocation.
### Support
* [Donate by PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MPJ3S9XQXCE3G)
-501
View File
@@ -1,501 +0,0 @@
#pragma once
template<typename T> class Array
{
protected:
u32 m_count;
T* m_array;
public:
Array()
: m_count(0)
, m_array(NULL)
{
}
~Array()
{
Clear();
}
inline bool RemoveAt(const u32 from, const u32 count = 1)
{
if(!GetCount()) return false;
const u32 to = from + count;
if(to > GetCount()) return false;
for(u32 i=0; i<count; ++i) m_array[from + i].~T();
memmove(m_array + from, m_array + to, (m_count-to) * sizeof(T));
m_count -= count;
return true;
}
void InsertRoomEnd(const u32 size)
{
_InsertRoomEnd(size);
}
bool InsertRoom(const u32 pos, const u32 size)
{
if(pos >= m_count) return false;
_InsertRoomEnd(size);
memmove(m_array + pos + size, m_array + pos, sizeof(T) * (m_count - size - pos));
return true;
}
inline bool Move(const u32 pos, T* data)
{
if(!InsertRoom(pos, 1)) return false;
memcpy(m_array + pos, data, sizeof(T));
free(data);
return true;
}
inline u32 Move(T* data)
{
_InsertRoomEnd(1);
memcpy(m_array + GetCount() - 1, data, sizeof(T));
free(data);
return m_count - 1;
}
inline bool Add(const u32 pos, T*& data)
{
if(!InsertRoom(pos, 1)) return false;
memcpy(m_array + pos, data, sizeof(T));
free(data);
data = m_array + pos;
return true;
}
inline u32 Add(T*& data)
{
_InsertRoomEnd(1);
memcpy(m_array + GetCount() - 1, data, sizeof(T));
free(data);
data = m_array + GetCount() - 1;
return m_count - 1;
}
inline bool AddCpy(const u32 pos, const T* data, u32 count = 1)
{
if(!InsertRoom(pos, count)) return false;
for(u32 i=0; i<count; ++i)
{
new (m_array + pos + i) T(data[i]);
}
return true;
}
inline bool AddCpy(const u32 pos, const T& data)
{
return AddCpy(pos, &data);
}
inline u32 AddCpy(const T* data, u32 count = 1)
{
_InsertRoomEnd(count);
for(u32 i=0; i<count; ++i)
{
new (m_array + m_count - count + i) T(data[i]);
}
return m_count - count;
}
inline u32 AddCpy(const T& data)
{
return AddCpy(&data);
}
inline void Clear()
{
u32 count = m_count;
m_count = 0;
for(u32 i=0; i<count; ++i) m_array[i].~T();
safe_free(m_array);
}
inline void ClearF()
{
m_count = 0;
safe_free(m_array);
}
inline T& Get(u32 num)
{
//if(num >= GetCount()) return *new T();
return m_array[num];
}
virtual u32 GetCount() const { return m_count; }
virtual void SetCount(const u32 count, bool memzero = true)
{
if(m_count >= count) return;
_InsertRoomEnd(count - m_count);
if(memzero) memset(m_array + m_count - count, 0, sizeof(T) * (m_count - count));
}
void Reserve(const u32 count)
{
SetCount(GetCount() + count);
}
void AppendFrom(const Array<T>& src)
{
if(!src.GetCount()) return;
Reserve(src.GetCount());
memcpy(m_array, &src[0], GetCount() * sizeof(T));
}
void CopyFrom(const Array<T>& src)
{
Clear();
AppendFrom(src);
}
inline T* GetPtr() { return m_array; }
inline const T* GetPtr() const { return m_array; }
T& operator[](u32 num) const { return m_array[num]; }
T* operator + (u32 right) const
{
return m_array + right;
}
T* operator ->()
{
return m_array;
}
protected:
void _InsertRoomEnd(const u32 size)
{
if(!size) return;
m_array = m_count ? (T*)realloc(m_array, sizeof(T) * (m_count + size)) : (T*)malloc(sizeof(T) * size);
m_count += size;
}
};
class ArrayString : public Array<char>
{
public:
ArrayString() : Array()
{
}
ArrayString(const wxString& value) : Array()
{
*this = value;
}
ArrayString(const char* value) : Array()
{
*this = value;
}
virtual u32 GetCount() const
{
return m_array ? strlen(m_array) : 0;
}
virtual void SetCount(const u32 count, bool memzero = true)
{
if(m_count && count < m_count - 1)
{
m_array[count] = '\0';
}
else
{
Array::SetCount(count + 1, memzero);
}
}
ArrayString& operator = (const char* right)
{
Clear();
if(right)
{
size_t len = strlen(right);
if(len)
{
SetCount(len);
memcpy(m_array, right, len * sizeof(char));
m_array[len] = '\0';
}
}
return *this;
}
ArrayString& operator = (const ArrayString& right)
{
Clear();
if(size_t len = right.GetCount())
{
SetCount(len);
memcpy(m_array, right.GetPtr(), len * sizeof(char));
m_array[len] = '\0';
}
return *this;
}
ArrayString& operator = (const wxString& right)
{
Clear();
if(size_t len = right.Len())
{
SetCount(len);
memcpy(m_array, right.c_str(), len * sizeof(char));
m_array[len] = '\0';
}
return *this;
}
ArrayString* Clone() const
{
ArrayString* new_array = new ArrayString();
(*new_array) = m_array;
return new_array;
}
};
template<typename T> struct Stack : public Array<T>
{
Stack() : Array<T>()
{
}
~Stack()
{
Clear();
}
void Push(const T data) { AddCpy(data); }
T Pop()
{
const u32 pos = GetCount() - 1;
const T ret = Get(pos);
RemoveAt(pos);
return ret;
}
};
template<typename T, size_t size> class SizedStack
{
T m_ptr[size];
uint m_count;
public:
SizedStack()
{
Clear();
}
~SizedStack()
{
Clear();
}
void Clear()
{
m_count = 0;
}
bool Pop(T& dst)
{
if(!m_count)
return false;
dst = m_ptr[--m_count];
return true;
}
bool Push(const T& src)
{
if(m_count + 1 > size)
return false;
m_ptr[m_count++] = src;
return true;
}
size_t GetFreeCount() const
{
return size - m_count;
}
size_t GetCount() const
{
return m_count;
}
size_t GetMaxCount() const
{
return size;
}
};
template<typename T> class ArrayF
{
u32 m_count;
T** m_array;
public:
ArrayF()
: m_count(0)
, m_array(NULL)
{
}
virtual ~ArrayF()
{
Clear();
}
inline bool RemoveFAt(const u32 from, const u32 count = 1)
{
if(from + count > m_count) return false;
memmove(&m_array[from], &m_array[from+count], (m_count-(from+count)) * sizeof(T**));
m_count -= count;
return true;
}
inline bool RemoveAt(const u32 from, const u32 count = 1)
{
if(from + count > m_count) return false;
for(uint i = from; i < from + count; ++i)
{
free(m_array[i]);
}
return RemoveFAt(from, count);
}
inline u32 Add(T& data)
{
return Add(&data);
}
inline u32 Add(T* data)
{
if(!m_array)
{
m_array = (T**)malloc(sizeof(T*));
}
else
{
m_array = (T**)realloc(m_array, sizeof(T*) * (m_count + 1));
}
m_array[m_count] = data;
return m_count++;
}
inline void ClearF()
{
if(m_count == 0) return;
m_count = 0;
m_array = NULL;
}
inline void Clear()
{
if(m_count == 0) return;
m_count = 0;
safe_free(m_array);
}
inline T& Get(const u64 num)
{
//if(m_count <= num) *m_array[0]; //TODO
return *m_array[num];
}
T** operator + (u32 right) const
{
return m_array + right;
}
T* operator ->()
{
return *m_array;
}
inline T** GetPtr()
{
return m_array;
}
inline u32 GetCount() const { return m_count; }
T& operator[](u32 num) const { return *m_array[num]; }
};
template<typename T> struct ScopedPtr
{
private:
T* m_ptr;
public:
ScopedPtr() : m_ptr(nullptr)
{
}
ScopedPtr(T* ptr) : m_ptr(ptr)
{
}
~ScopedPtr()
{
Swap(nullptr);
}
operator T*() { return m_ptr; }
operator const T*() const { return m_ptr; }
T* operator ->() { return m_ptr; }
const T* operator ->() const { return m_ptr; }
void Swap(T* ptr)
{
delete m_ptr;
m_ptr = ptr;
}
};
+717
View File
@@ -0,0 +1,717 @@
#pragma once
#if defined(__GNUG__)
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_val_compare_and_swap(volatile T* dest, T2 comp, T2 exch)
{
return __sync_val_compare_and_swap(dest, comp, exch);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), bool> sync_bool_compare_and_swap(volatile T* dest, T2 comp, T2 exch)
{
return __sync_bool_compare_and_swap(dest, comp, exch);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_lock_test_and_set(volatile T* dest, T2 value)
{
return __sync_lock_test_and_set(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_add(volatile T* dest, T2 value)
{
return __sync_fetch_and_add(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_sub(volatile T* dest, T2 value)
{
return __sync_fetch_and_sub(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_or(volatile T* dest, T2 value)
{
return __sync_fetch_and_or(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_and(volatile T* dest, T2 value)
{
return __sync_fetch_and_and(dest, value);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T), T> sync_fetch_and_xor(volatile T* dest, T2 value)
{
return __sync_fetch_and_xor(dest, value);
}
#elif defined(_MSC_VER)
// atomic compare and swap functions
inline u8 sync_val_compare_and_swap(volatile u8* dest, u8 comp, u8 exch)
{
return _InterlockedCompareExchange8((volatile char*)dest, exch, comp);
}
inline u16 sync_val_compare_and_swap(volatile u16* dest, u16 comp, u16 exch)
{
return _InterlockedCompareExchange16((volatile short*)dest, exch, comp);
}
inline u32 sync_val_compare_and_swap(volatile u32* dest, u32 comp, u32 exch)
{
return _InterlockedCompareExchange((volatile long*)dest, exch, comp);
}
inline u64 sync_val_compare_and_swap(volatile u64* dest, u64 comp, u64 exch)
{
return _InterlockedCompareExchange64((volatile long long*)dest, exch, comp);
}
inline u128 sync_val_compare_and_swap(volatile u128* dest, u128 comp, u128 exch)
{
_InterlockedCompareExchange128((volatile long long*)dest, exch.hi, exch.lo, (long long*)&comp);
return comp;
}
inline bool sync_bool_compare_and_swap(volatile u8* dest, u8 comp, u8 exch)
{
return (u8)_InterlockedCompareExchange8((volatile char*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u16* dest, u16 comp, u16 exch)
{
return (u16)_InterlockedCompareExchange16((volatile short*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u32* dest, u32 comp, u32 exch)
{
return (u32)_InterlockedCompareExchange((volatile long*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u64* dest, u64 comp, u64 exch)
{
return (u64)_InterlockedCompareExchange64((volatile long long*)dest, exch, comp) == comp;
}
inline bool sync_bool_compare_and_swap(volatile u128* dest, u128 comp, u128 exch)
{
return _InterlockedCompareExchange128((volatile long long*)dest, exch.hi, exch.lo, (long long*)&comp) != 0;
}
// atomic exchange functions
inline u8 sync_lock_test_and_set(volatile u8* dest, u8 value)
{
return _InterlockedExchange8((volatile char*)dest, value);
}
inline u16 sync_lock_test_and_set(volatile u16* dest, u16 value)
{
return _InterlockedExchange16((volatile short*)dest, value);
}
inline u32 sync_lock_test_and_set(volatile u32* dest, u32 value)
{
return _InterlockedExchange((volatile long*)dest, value);
}
inline u64 sync_lock_test_and_set(volatile u64* dest, u64 value)
{
return _InterlockedExchange64((volatile long long*)dest, value);
}
inline u128 sync_lock_test_and_set(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
if (sync_bool_compare_and_swap(dest, old, value)) return old;
}
}
// atomic add functions
inline u8 sync_fetch_and_add(volatile u8* dest, u8 value)
{
return _InterlockedExchangeAdd8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_add(volatile u16* dest, u16 value)
{
return _InterlockedExchangeAdd16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_add(volatile u32* dest, u32 value)
{
return _InterlockedExchangeAdd((volatile long*)dest, value);
}
inline u64 sync_fetch_and_add(volatile u64* dest, u64 value)
{
return _InterlockedExchangeAdd64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_add(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
u128 _new;
_new.lo = old.lo + value.lo;
_new.hi = old.hi + value.hi + (_new.lo < value.lo);
if (sync_bool_compare_and_swap(dest, old, _new)) return old;
}
}
// atomic sub functions
inline u8 sync_fetch_and_sub(volatile u8* dest, u8 value)
{
return _InterlockedExchangeAdd8((volatile char*)dest, -(char)value);
}
inline u16 sync_fetch_and_sub(volatile u16* dest, u16 value)
{
return _InterlockedExchangeAdd16((volatile short*)dest, -(short)value);
}
inline u32 sync_fetch_and_sub(volatile u32* dest, u32 value)
{
return _InterlockedExchangeAdd((volatile long*)dest, -(long)value);
}
inline u64 sync_fetch_and_sub(volatile u64* dest, u64 value)
{
return _InterlockedExchangeAdd64((volatile long long*)dest, -(long long)value);
}
inline u128 sync_fetch_and_sub(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
u128 _new;
_new.lo = old.lo - value.lo;
_new.hi = old.hi - value.hi - (old.lo < value.lo);
if (sync_bool_compare_and_swap(dest, old, _new)) return old;
}
}
// atomic `bitwise or` functions
inline u8 sync_fetch_and_or(volatile u8* dest, u8 value)
{
return _InterlockedOr8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_or(volatile u16* dest, u16 value)
{
return _InterlockedOr16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_or(volatile u32* dest, u32 value)
{
return _InterlockedOr((volatile long*)dest, value);
}
inline u64 sync_fetch_and_or(volatile u64* dest, u64 value)
{
return _InterlockedOr64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_or(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
u128 _new;
_new.lo = old.lo | value.lo;
_new.hi = old.hi | value.hi;
if (sync_bool_compare_and_swap(dest, old, _new)) return old;
}
}
// atomic `bitwise and` functions
inline u8 sync_fetch_and_and(volatile u8* dest, u8 value)
{
return _InterlockedAnd8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_and(volatile u16* dest, u16 value)
{
return _InterlockedAnd16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_and(volatile u32* dest, u32 value)
{
return _InterlockedAnd((volatile long*)dest, value);
}
inline u64 sync_fetch_and_and(volatile u64* dest, u64 value)
{
return _InterlockedAnd64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_and(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
u128 _new;
_new.lo = old.lo & value.lo;
_new.hi = old.hi & value.hi;
if (sync_bool_compare_and_swap(dest, old, _new)) return old;
}
}
// atomic `bitwise xor` functions
inline u8 sync_fetch_and_xor(volatile u8* dest, u8 value)
{
return _InterlockedXor8((volatile char*)dest, value);
}
inline u16 sync_fetch_and_xor(volatile u16* dest, u16 value)
{
return _InterlockedXor16((volatile short*)dest, value);
}
inline u32 sync_fetch_and_xor(volatile u32* dest, u32 value)
{
return _InterlockedXor((volatile long*)dest, value);
}
inline u64 sync_fetch_and_xor(volatile u64* dest, u64 value)
{
return _InterlockedXor64((volatile long long*)dest, value);
}
inline u128 sync_fetch_and_xor(volatile u128* dest, u128 value)
{
while (true)
{
u128 old;
old.lo = dest->lo;
old.hi = dest->hi;
u128 _new;
_new.lo = old.lo ^ value.lo;
_new.hi = old.hi ^ value.hi;
if (sync_bool_compare_and_swap(dest, old, _new)) return old;
}
}
#endif /* _MSC_VER */
template<typename T, std::size_t Size = sizeof(T)> struct atomic_storage
{
static_assert(!Size, "Invalid atomic type");
};
template<typename T> struct atomic_storage<T, 1>
{
using type = u8;
};
template<typename T> struct atomic_storage<T, 2>
{
using type = u16;
};
template<typename T> struct atomic_storage<T, 4>
{
using type = u32;
};
template<typename T> struct atomic_storage<T, 8>
{
using type = u64;
};
template<typename T> struct atomic_storage<T, 16>
{
using type = u128;
};
template<typename T> using atomic_storage_t = typename atomic_storage<T>::type;
// result wrapper to deal with void result type
template<typename T, typename RT, typename VT> struct atomic_op_result_t
{
RT result;
template<typename... Args> inline atomic_op_result_t(T func, VT& var, Args&&... args)
: result(std::move(func(var, std::forward<Args>(args)...)))
{
}
inline RT move()
{
return std::move(result);
}
};
// void specialization: result is the initial value of the first arg
template<typename T, typename VT> struct atomic_op_result_t<T, void, VT>
{
VT result;
template<typename... Args> inline atomic_op_result_t(T func, VT& var, Args&&... args)
: result(var)
{
func(var, std::forward<Args>(args)...);
}
inline VT move()
{
return std::move(result);
}
};
// member function specialization
template<typename CT, typename... FArgs, typename RT, typename VT> struct atomic_op_result_t<RT(CT::*)(FArgs...), RT, VT>
{
RT result;
template<typename... Args> inline atomic_op_result_t(RT(CT::*func)(FArgs...), VT& var, Args&&... args)
: result(std::move((var.*func)(std::forward<Args>(args)...)))
{
}
inline RT move()
{
return std::move(result);
}
};
// member function void specialization
template<typename CT, typename... FArgs, typename VT> struct atomic_op_result_t<void(CT::*)(FArgs...), void, VT>
{
VT result;
template<typename... Args> inline atomic_op_result_t(void(CT::*func)(FArgs...), VT& var, Args&&... args)
: result(var)
{
(var.*func)(std::forward<Args>(args)...);
}
inline VT move()
{
return std::move(result);
}
};
template<typename T> class atomic_t
{
using type = std::remove_cv_t<T>;
using stype = atomic_storage_t<type>;
using storage = atomic_storage<type>;
static_assert(alignof(type) <= alignof(stype), "atomic_t<> error: unexpected alignment");
stype m_data;
template<typename T2> static inline void write_relaxed(volatile T2& data, const T2& value)
{
data = value;
}
static inline void write_relaxed(volatile u128& data, const u128& value)
{
sync_lock_test_and_set(&data, value);
}
template<typename T2> static inline T2 read_relaxed(const volatile T2& data)
{
return data;
}
static inline u128 read_relaxed(const volatile u128& value)
{
return sync_val_compare_and_swap(const_cast<volatile u128*>(&value), u128{0}, u128{0});
}
public:
static inline const stype to_subtype(const type& value)
{
return reinterpret_cast<const stype&>(value);
}
static inline const type from_subtype(const stype value)
{
return reinterpret_cast<const type&>(value);
}
atomic_t() = default;
atomic_t(const atomic_t&) = delete;
atomic_t(atomic_t&&) = delete;
inline atomic_t(type value)
: m_data(to_subtype(value))
{
}
atomic_t& operator =(const atomic_t&) = delete;
atomic_t& operator =(atomic_t&&) = delete;
inline atomic_t& operator =(type value)
{
return write_relaxed(m_data, to_subtype(value)), *this;
}
operator type() const volatile
{
return from_subtype(read_relaxed(m_data));
}
// Unsafe direct access
stype* raw_data()
{
return reinterpret_cast<stype*>(&m_data);
}
// Unsafe direct access
type& raw()
{
return reinterpret_cast<type&>(m_data);
}
// Atomically compare data with cmp, replace with exch if equal, return previous data value anyway
inline const type compare_and_swap(const type& cmp, const type& exch) volatile
{
return from_subtype(sync_val_compare_and_swap(&m_data, to_subtype(cmp), to_subtype(exch)));
}
// Atomically compare data with cmp, replace with exch if equal, return true if data was replaced
inline bool compare_and_swap_test(const type& cmp, const type& exch) volatile
{
return sync_bool_compare_and_swap(&m_data, to_subtype(cmp), to_subtype(exch));
}
// Atomically replace data with exch, return previous data value
inline const type exchange(const type& exch) volatile
{
return from_subtype(sync_lock_test_and_set(&m_data, to_subtype(exch)));
}
// Atomically read data, possibly without memory barrier (not for 128 bit)
inline const type load() const volatile
{
return from_subtype(read_relaxed(m_data));
}
// Atomically write data, possibly without memory barrier (not for 128 bit)
inline void store(const type& value) volatile
{
write_relaxed(m_data, to_subtype(value));
}
// Perform an atomic operation on data (func is either pointer to member function or callable object with a T& first arg);
// Returns the result of the callable object call or previous (old) value of the atomic variable if the return type is void
template<typename F, typename... Args, typename RT = std::result_of_t<F(T&, Args...)>> auto atomic_op(F func, Args&&... args) volatile -> decltype(atomic_op_result_t<F, RT, T>::result)
{
while (true)
{
// Read the old value from memory
const stype old = read_relaxed(m_data);
// Copy the old value
stype _new = old;
// Call atomic op for the local copy of the old value and save the return value of the function
atomic_op_result_t<F, RT, T> result(func, reinterpret_cast<type&>(_new), args...);
// Atomically compare value with `old`, replace with `_new` and return on success
if (sync_bool_compare_and_swap(&m_data, old, _new)) return result.move();
}
}
// Atomic bitwise OR, returns previous data
inline const type _or(const type& right) volatile
{
return from_subtype(sync_fetch_and_or(&m_data, to_subtype(right)));
}
// Atomic bitwise AND, returns previous data
inline const type _and(const type& right) volatile
{
return from_subtype(sync_fetch_and_and(&m_data, to_subtype(right)));
}
// Atomic bitwise AND NOT (inverts right argument), returns previous data
inline const type _and_not(const type& right) volatile
{
return from_subtype(sync_fetch_and_and(&m_data, ~to_subtype(right)));
}
// Atomic bitwise XOR, returns previous data
inline const type _xor(const type& right) volatile
{
return from_subtype(sync_fetch_and_xor(&m_data, to_subtype(right)));
}
inline const type operator |=(const type& right) volatile
{
return from_subtype(sync_fetch_and_or(&m_data, to_subtype(right)) | to_subtype(right));
}
inline const type operator &=(const type& right) volatile
{
return from_subtype(sync_fetch_and_and(&m_data, to_subtype(right)) & to_subtype(right));
}
inline const type operator ^=(const type& right) volatile
{
return from_subtype(sync_fetch_and_xor(&m_data, to_subtype(right)) ^ to_subtype(right));
}
};
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator ++(atomic_t<T>& left)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1) + 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator --(atomic_t<T>& left)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1) - 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator ++(atomic_t<T>& left, int)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1));
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), T> operator --(atomic_t<T>& left, int)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1));
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, T> operator +=(atomic_t<T>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), right) + right);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, T> operator -=(atomic_t<T>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), right) - right);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator ++(atomic_t<nse_t<T>>& left)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1) + 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator --(atomic_t<nse_t<T>>& left)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1) - 1);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator ++(atomic_t<nse_t<T>>& left, int)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), 1));
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), nse_t<T>> operator --(atomic_t<nse_t<T>>& left, int)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), 1));
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, nse_t<T>> operator +=(atomic_t<nse_t<T>>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_add(left.raw_data(), right) + right);
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, nse_t<T>> operator -=(atomic_t<nse_t<T>>& left, const T2& right)
{
return left.from_subtype(sync_fetch_and_sub(left.raw_data(), right) - right);
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator ++(atomic_t<se_t<T>>& left)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return ++value;
});
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator --(atomic_t<se_t<T>>& left)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return --value;
});
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator ++(atomic_t<se_t<T>>& left, int)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return value++;
});
}
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T), se_t<T>> operator --(atomic_t<se_t<T>>& left, int)
{
return left.atomic_op([](se_t<T>& value) -> se_t<T>
{
return value--;
});
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, se_t<T>> operator +=(atomic_t<se_t<T>>& left, const T2& right)
{
return left.atomic_op([&](se_t<T>& value) -> se_t<T>
{
return value += right;
});
}
template<typename T, typename T2> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<T2, T>::value, se_t<T>> operator -=(atomic_t<se_t<T>>& left, const T2& right)
{
return left.atomic_op([&](se_t<T>& value) -> se_t<T>
{
return value -= right;
});
}
template<typename T> using atomic_be_t = atomic_t<be_t<T>>; // Atomic BE Type (for PS3 virtual memory)
template<typename T> using atomic_le_t = atomic_t<le_t<T>>; // Atomic LE Type (for PSV virtual memory)
// Algorithm for std::atomic; similar to atomic_t::atomic_op()
template<typename T, typename F, typename... Args, typename RT = std::result_of_t<F(T&, Args...)>> auto atomic_op(std::atomic<T>& var, F func, Args&&... args) -> decltype(atomic_op_result_t<F, RT, T>::result)
{
auto old = var.load();
while (true)
{
auto _new = old;
atomic_op_result_t<F, RT, T> result(func, _new, args...);
if (var.compare_exchange_strong(old, _new)) return result.move();
}
}
+123
View File
@@ -0,0 +1,123 @@
#include "stdafx.h"
#include "rpcs3/Ini.h"
#include "AutoPause.h"
#include "Utilities/Log.h"
#include "Utilities/File.h"
#include "Emu/System.h"
using namespace Debug;
std::unique_ptr<AutoPause> g_autopause;
AutoPause& AutoPause::getInstance(void)
{
if (!g_autopause)
{
g_autopause.reset(new AutoPause);
}
return *g_autopause;
}
//Still use binary format. Default Setting should be "disable all auto pause".
AutoPause::AutoPause(void)
{
m_pause_function.reserve(16);
m_pause_syscall.reserve(16);
initialized = false;
//Reload(false, false);
Reload();
}
//Notice: I would not allow to write the binary to file in this command.
AutoPause::~AutoPause(void)
{
initialized = false;
m_pause_function.clear();
m_pause_syscall.clear();
m_pause_function_enable = false;
m_pause_syscall_enable = false;
}
//Load Auto Pause Configuration from file "pause.bin"
//This would be able to create in a GUI window.
void AutoPause::Reload(void)
{
if (fs::is_file("pause.bin"))
{
m_pause_function.clear();
m_pause_function.reserve(16);
m_pause_syscall.clear();
m_pause_syscall.reserve(16);
fs::file list("pause.bin");
//System calls ID and Function calls ID are all u32 iirc.
u32 num;
size_t fmax = list.size();
size_t fcur = 0;
list.seek(0);
while (fcur <= fmax - sizeof(u32))
{
list.read(&num, sizeof(u32));
fcur += sizeof(u32);
if (num == 0xFFFFFFFF) break;
if (num < 1024)
{
//Less than 1024 - be regarded as a system call.
//emplace_back may not cause reductant move/copy operation.
m_pause_syscall.emplace_back(num);
LOG_WARNING(HLE, "Auto Pause: Find System Call ID 0x%x", num);
}
else
{
m_pause_function.emplace_back(num);
LOG_WARNING(HLE, "Auto Pause: Find Function Call ID 0x%x", num);
}
}
}
m_pause_syscall_enable = Ini.DBGAutoPauseSystemCall.GetValue();
m_pause_function_enable = Ini.DBGAutoPauseFunctionCall.GetValue();
initialized = true;
}
void AutoPause::TryPause(u32 code)
{
if (code < 1024)
{
//Would first check Enable setting. Then the list length.
if ((!m_pause_syscall_enable)
|| (m_pause_syscall.size() <= 0))
{
return;
}
for (u32 i = 0; i < m_pause_syscall.size(); ++i)
{
if (code == m_pause_syscall[i])
{
Emu.Pause();
LOG_ERROR(HLE, "Auto Pause Triggered: System call 0x%x", code); // Used Error
}
}
}
else
{
//Well similiar.. Seperate the list caused by possible setting difference.
if ((!m_pause_function_enable)
|| (m_pause_function.size() <= 0))
{
return;
}
for (u32 i = 0; i < m_pause_function.size(); ++i)
{
if (code == m_pause_function[i])
{
Emu.Pause();
LOG_ERROR(HLE, "Auto Pause Triggered: Function call 0x%x", code); // Used Error
}
}
}
}
+24
View File
@@ -0,0 +1,24 @@
#pragma once
//Regarded as a Debugger Enchantment
namespace Debug {
//To store the pause function/call id, and let those pause there.
//Would be with a GUI to configure those.
struct AutoPause
{
std::vector<u32> m_pause_syscall;
std::vector<u32> m_pause_function;
bool initialized;
bool m_pause_syscall_enable;
bool m_pause_function_enable;
AutoPause();
~AutoPause();
public:
static AutoPause& getInstance(void);
void Reload(void);
void TryPause(u32 code);
};
}
+943
View File
@@ -0,0 +1,943 @@
#pragma once
#ifdef _MSC_VER
#include <intrin.h>
#else
#include <x86intrin.h>
#endif
#define IS_LE_MACHINE // only draft
template<typename T, std::size_t N, std::size_t M> class masked_array_t // array type accessed as (index ^ M)
{
T m_data[N];
public:
T& operator [](std::size_t index)
{
return m_data[index ^ M];
}
const T& operator [](std::size_t index) const
{
return m_data[index ^ M];
}
T& at(std::size_t index)
{
return (index ^ M) < N ? m_data[index ^ M] : throw std::out_of_range("Masked array");
}
const T& at(std::size_t index) const
{
return (index ^ M) < N ? m_data[index ^ M] : throw std::out_of_range("Masked array");
}
};
union v128
{
#ifdef IS_LE_MACHINE
template<typename T, std::size_t N = 16 / sizeof(T)> using normal_array_t = masked_array_t<T, N, 0>;
template<typename T, std::size_t N = 16 / sizeof(T)> using reversed_array_t = masked_array_t<T, N, N - 1>;
#else
template<typename T, std::size_t N = 16 / sizeof(T)> using normal_array_t = masked_array_t<T, N, N - 1>;
template<typename T, std::size_t N = 16 / sizeof(T)> using reversed_array_t = masked_array_t<T, N, 0>;
#endif
normal_array_t<u64> _u64;
normal_array_t<s64> _s64;
reversed_array_t<u64> u64r;
reversed_array_t<s64> s64r;
normal_array_t<u32> _u32;
normal_array_t<s32> _s32;
reversed_array_t<u32> u32r;
reversed_array_t<s32> s32r;
normal_array_t<u16> _u16;
normal_array_t<s16> _s16;
reversed_array_t<u16> u16r;
reversed_array_t<s16> s16r;
normal_array_t<u8> _u8;
normal_array_t<s8> _s8;
reversed_array_t<u8> u8r;
reversed_array_t<s8> s8r;
normal_array_t<f32> _f;
normal_array_t<f64> _d;
reversed_array_t<f32> fr;
reversed_array_t<f64> dr;
__m128 vf;
__m128i vi;
__m128d vd;
class bit_array_128
{
u64 m_data[2];
public:
class bit_element
{
u64& data;
const u64 mask;
public:
bit_element(u64& data, const u64 mask)
: data(data)
, mask(mask)
{
}
inline operator bool() const
{
return (data & mask) != 0;
}
inline bit_element& operator =(const bool right)
{
if (right)
{
data |= mask;
}
else
{
data &= ~mask;
}
return *this;
}
inline bit_element& operator =(const bit_element& right)
{
if (right)
{
data |= mask;
}
else
{
data &= ~mask;
}
return *this;
}
};
// Index 0 returns the MSB and index 127 returns the LSB
bit_element operator [](u32 index)
{
#ifdef IS_LE_MACHINE
return bit_element(m_data[1 - (index >> 6)], 0x8000000000000000ull >> (index & 0x3F));
#else
return bit_element(m_data[index >> 6], 0x8000000000000000ull >> (index & 0x3F));
#endif
}
// Index 0 returns the MSB and index 127 returns the LSB
bool operator [](u32 index) const
{
#ifdef IS_LE_MACHINE
return (m_data[1 - (index >> 6)] & (0x8000000000000000ull >> (index & 0x3F))) != 0;
#else
return (m_data[index >> 6] & (0x8000000000000000ull >> (index & 0x3F))) != 0;
#endif
}
bit_element at(u32 index)
{
if (index >= 128) throw std::out_of_range("Bit element");
return operator[](index);
}
bool at(u32 index) const
{
if (index >= 128) throw std::out_of_range("Bit element");
return operator[](index);
}
}
_bit;
static v128 from64(u64 _0, u64 _1 = 0)
{
v128 ret;
ret._u64[0] = _0;
ret._u64[1] = _1;
return ret;
}
static v128 from64r(u64 _1, u64 _0 = 0)
{
return from64(_0, _1);
}
static v128 from32(u32 _0, u32 _1 = 0, u32 _2 = 0, u32 _3 = 0)
{
v128 ret;
ret._u32[0] = _0;
ret._u32[1] = _1;
ret._u32[2] = _2;
ret._u32[3] = _3;
return ret;
}
static v128 from32r(u32 _3, u32 _2 = 0, u32 _1 = 0, u32 _0 = 0)
{
return from32(_0, _1, _2, _3);
}
static v128 from32p(u32 value)
{
v128 ret;
ret.vi = _mm_set1_epi32(static_cast<s32>(value));
return ret;
}
static v128 from16p(u16 value)
{
v128 ret;
ret.vi = _mm_set1_epi16(static_cast<s16>(value));
return ret;
}
static v128 from8p(u8 value)
{
v128 ret;
ret.vi = _mm_set1_epi8(static_cast<s8>(value));
return ret;
}
static v128 fromBit(u32 bit)
{
v128 ret = {};
ret._bit[bit] = true;
return ret;
}
static v128 fromV(__m128i value)
{
v128 ret;
ret.vi = value;
return ret;
}
static v128 fromF(__m128 value)
{
v128 ret;
ret.vf = value;
return ret;
}
static v128 fromD(__m128d value)
{
v128 ret;
ret.vd = value;
return ret;
}
static inline v128 add8(const v128& left, const v128& right)
{
return fromV(_mm_add_epi8(left.vi, right.vi));
}
static inline v128 add16(const v128& left, const v128& right)
{
return fromV(_mm_add_epi16(left.vi, right.vi));
}
static inline v128 add32(const v128& left, const v128& right)
{
return fromV(_mm_add_epi32(left.vi, right.vi));
}
static inline v128 addfs(const v128& left, const v128& right)
{
return fromF(_mm_add_ps(left.vf, right.vf));
}
static inline v128 addfd(const v128& left, const v128& right)
{
return fromD(_mm_add_pd(left.vd, right.vd));
}
static inline v128 sub8(const v128& left, const v128& right)
{
return fromV(_mm_sub_epi8(left.vi, right.vi));
}
static inline v128 sub16(const v128& left, const v128& right)
{
return fromV(_mm_sub_epi16(left.vi, right.vi));
}
static inline v128 sub32(const v128& left, const v128& right)
{
return fromV(_mm_sub_epi32(left.vi, right.vi));
}
static inline v128 subfs(const v128& left, const v128& right)
{
return fromF(_mm_sub_ps(left.vf, right.vf));
}
static inline v128 subfd(const v128& left, const v128& right)
{
return fromD(_mm_sub_pd(left.vd, right.vd));
}
static inline v128 maxu8(const v128& left, const v128& right)
{
return fromV(_mm_max_epu8(left.vi, right.vi));
}
static inline v128 minu8(const v128& left, const v128& right)
{
return fromV(_mm_min_epu8(left.vi, right.vi));
}
static inline v128 eq8(const v128& left, const v128& right)
{
return fromV(_mm_cmpeq_epi8(left.vi, right.vi));
}
static inline v128 eq16(const v128& left, const v128& right)
{
return fromV(_mm_cmpeq_epi16(left.vi, right.vi));
}
static inline v128 eq32(const v128& left, const v128& right)
{
return fromV(_mm_cmpeq_epi32(left.vi, right.vi));
}
bool operator ==(const v128& right) const
{
return _u64[0] == right._u64[0] && _u64[1] == right._u64[1];
}
bool operator !=(const v128& right) const
{
return _u64[0] != right._u64[0] || _u64[1] != right._u64[1];
}
inline bool is_any_1() const // check if any bit is 1
{
return _u64[0] || _u64[1];
}
inline bool is_any_0() const // check if any bit is 0
{
return ~_u64[0] || ~_u64[1];
}
// result = (~left) & (right)
static inline v128 andnot(const v128& left, const v128& right)
{
return fromV(_mm_andnot_si128(left.vi, right.vi));
}
void clear()
{
_u64[0] = 0;
_u64[1] = 0;
}
std::string to_hex() const;
std::string to_xyzw() const;
static inline v128 byteswap(const v128 val)
{
return fromV(_mm_shuffle_epi8(val.vi, _mm_set_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)));
}
};
CHECK_SIZE_ALIGN(v128, 16, 16);
inline v128 operator |(const v128& left, const v128& right)
{
return v128::fromV(_mm_or_si128(left.vi, right.vi));
}
inline v128 operator &(const v128& left, const v128& right)
{
return v128::fromV(_mm_and_si128(left.vi, right.vi));
}
inline v128 operator ^(const v128& left, const v128& right)
{
return v128::fromV(_mm_xor_si128(left.vi, right.vi));
}
inline v128 operator ~(const v128& other)
{
return v128::from64(~other._u64[0], ~other._u64[1]);
}
template<typename T, std::size_t Size = sizeof(T)> struct se_storage
{
static_assert(!Size, "Bad se_storage<> type");
};
template<typename T> struct se_storage<T, 2>
{
using type = u16;
[[deprecated]] static constexpr u16 swap(u16 src) // for reference
{
return (src >> 8) | (src << 8);
}
static inline u16 to(const T& src)
{
return _byteswap_ushort(reinterpret_cast<const u16&>(src));
}
static inline T from(u16 src)
{
const u16 result = _byteswap_ushort(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> struct se_storage<T, 4>
{
using type = u32;
[[deprecated]] static constexpr u32 swap(u32 src) // for reference
{
return (src >> 24) | (src << 24) | ((src >> 8) & 0x0000ff00) | ((src << 8) & 0x00ff0000);
}
static inline u32 to(const T& src)
{
return _byteswap_ulong(reinterpret_cast<const u32&>(src));
}
static inline T from(u32 src)
{
const u32 result = _byteswap_ulong(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> struct se_storage<T, 8>
{
using type = u64;
[[deprecated]] static constexpr u64 swap(u64 src) // for reference
{
return (src >> 56) | (src << 56) |
((src >> 40) & 0x000000000000ff00) |
((src >> 24) & 0x0000000000ff0000) |
((src >> 8) & 0x00000000ff000000) |
((src << 8) & 0x000000ff00000000) |
((src << 24) & 0x0000ff0000000000) |
((src << 40) & 0x00ff000000000000);
}
static inline u64 to(const T& src)
{
return _byteswap_uint64(reinterpret_cast<const u64&>(src));
}
static inline T from(u64 src)
{
const u64 result = _byteswap_uint64(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> struct se_storage<T, 16>
{
using type = v128;
static inline v128 to(const T& src)
{
return v128::byteswap(reinterpret_cast<const v128&>(src));
}
static inline T from(const v128& src)
{
const v128 result = v128::byteswap(src);
return reinterpret_cast<const T&>(result);
}
};
template<typename T> using se_storage_t = typename se_storage<T>::type;
template<typename T1, typename T2> struct se_convert
{
using type_from = std::remove_cv_t<T1>;
using type_to = std::remove_cv_t<T2>;
using stype_from = se_storage_t<std::remove_cv_t<T1>>;
using stype_to = se_storage_t<std::remove_cv_t<T2>>;
using storage_from = se_storage<std::remove_cv_t<T1>>;
using storage_to = se_storage<std::remove_cv_t<T2>>;
static inline std::enable_if_t<std::is_same<type_from, type_to>::value, stype_to> convert(const stype_from& data)
{
return data;
}
static inline stype_to convert(const stype_from& data, ...)
{
return storage_to::to(storage_from::from(data));
}
};
static struct se_raw_tag_t {} const se_raw{};
template<typename T, bool Se = true> class se_t;
// se_t with switched endianness
template<typename T> class se_t<T, true>
{
using type = std::remove_cv_t<T>;
using stype = se_storage_t<type>;
using storage = se_storage<type>;
stype m_data;
static_assert(!std::is_union<type>::value && !std::is_class<type>::value || std::is_same<type, v128>::value || std::is_same<type, u128>::value, "se_t<> error: invalid type (struct or union)");
static_assert(!std::is_pointer<type>::value, "se_t<> error: invalid type (pointer)");
static_assert(!std::is_reference<type>::value, "se_t<> error: invalid type (reference)");
static_assert(!std::is_array<type>::value, "se_t<> error: invalid type (array)");
static_assert(!std::is_enum<type>::value, "se_t<> error: invalid type (enumeration), use integral type instead");
static_assert(alignof(type) == alignof(stype), "se_t<> error: unexpected alignment");
template<typename T2, bool = std::is_integral<T2>::value> struct bool_converter
{
static inline bool to_bool(const se_t<T2>& value)
{
return static_cast<bool>(value.value());
}
};
template<typename T2> struct bool_converter<T2, true>
{
static inline bool to_bool(const se_t<T2>& value)
{
return value.m_data != 0;
}
};
public:
se_t() = default;
se_t(const se_t& right) = default;
inline se_t(type value)
: m_data(storage::to(value))
{
}
// construct directly from raw data (don't use)
inline se_t(const stype& raw_value, const se_raw_tag_t&)
: m_data(raw_value)
{
}
inline type value() const
{
return storage::from(m_data);
}
// access underlying raw data (don't use)
inline const stype& raw_data() const noexcept
{
return m_data;
}
se_t& operator =(const se_t&) = default;
inline se_t& operator =(type value)
{
return m_data = storage::to(value), *this;
}
inline operator type() const
{
return storage::from(m_data);
}
// optimization
explicit inline operator bool() const
{
return bool_converter<type>::to_bool(*this);
}
// optimization
template<typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T, T2), se_t&> operator &=(const se_t<T2>& right)
{
return m_data &= right.raw_data(), *this;
}
// optimization
template<typename CT> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator &=(CT right)
{
return m_data &= storage::to(right), *this;
}
// optimization
template<typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T, T2), se_t&> operator |=(const se_t<T2>& right)
{
return m_data |= right.raw_data(), *this;
}
// optimization
template<typename CT> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator |=(CT right)
{
return m_data |= storage::to(right), *this;
}
// optimization
template<typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T, T2), se_t&> operator ^=(const se_t<T2>& right)
{
return m_data ^= right.raw_data(), *this;
}
// optimization
template<typename CT> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator ^=(CT right)
{
return m_data ^= storage::to(right), *this;
}
};
// se_t with native endianness
template<typename T> class se_t<T, false>
{
using type = std::remove_cv_t<T>;
type m_data;
static_assert(!std::is_union<type>::value && !std::is_class<type>::value || std::is_same<type, v128>::value || std::is_same<type, u128>::value, "se_t<> error: invalid type (struct or union)");
static_assert(!std::is_pointer<type>::value, "se_t<> error: invalid type (pointer)");
static_assert(!std::is_reference<type>::value, "se_t<> error: invalid type (reference)");
static_assert(!std::is_array<type>::value, "se_t<> error: invalid type (array)");
static_assert(!std::is_enum<type>::value, "se_t<> error: invalid type (enumeration), use integral type instead");
public:
se_t() = default;
se_t(const se_t&) = default;
inline se_t(type value)
: m_data(value)
{
}
inline type value() const
{
return m_data;
}
se_t& operator =(const se_t& value) = default;
inline se_t& operator =(type value)
{
return m_data = value, *this;
}
inline operator type() const
{
return m_data;
}
template<typename CT> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator &=(const CT& right)
{
return m_data &= right, *this;
}
template<typename CT> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator |=(const CT& right)
{
return m_data |= right, *this;
}
template<typename CT> inline std::enable_if_t<IS_INTEGRAL(T) && std::is_convertible<CT, T>::value, se_t&> operator ^=(const CT& right)
{
return m_data ^= right, *this;
}
};
// se_t with native endianness (alias)
template<typename T> using nse_t = se_t<T, false>;
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator +=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value += right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator -=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value -= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator *=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value *= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator /=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value /= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator %=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value %= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator <<=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value <<= right);
}
template<typename T, bool Se, typename T1> inline se_t<T, Se>& operator >>=(se_t<T, Se>& left, const T1& right)
{
auto value = left.value();
return left = (value >>= right);
}
template<typename T, bool Se> inline se_t<T, Se> operator ++(se_t<T, Se>& left, int)
{
auto value = left.value();
auto result = value++;
left = value;
return result;
}
template<typename T, bool Se> inline se_t<T, Se> operator --(se_t<T, Se>& left, int)
{
auto value = left.value();
auto result = value--;
left = value;
return result;
}
template<typename T, bool Se> inline se_t<T, Se>& operator ++(se_t<T, Se>& right)
{
auto value = right.value();
return right = ++value;
}
template<typename T, bool Se> inline se_t<T, Se>& operator --(se_t<T, Se>& right)
{
auto value = right.value();
return right = --value;
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2), bool> operator ==(const se_t<T1>& left, const se_t<T2>& right)
{
return left.raw_data() == right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2), bool> operator ==(const se_t<T1>& left, T2 right)
{
return left.raw_data() == se_storage<T1>::to(right);
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2), bool> operator ==(T1 left, const se_t<T2>& right)
{
return se_storage<T2>::to(left) == right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2), bool> operator !=(const se_t<T1>& left, const se_t<T2>& right)
{
return left.raw_data() != right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2), bool> operator !=(const se_t<T1>& left, T2 right)
{
return left.raw_data() != se_storage<T1>::to(right);
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2), bool> operator !=(T1 left, const se_t<T2>& right)
{
return se_storage<T2>::to(left) != right.raw_data();
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2) && sizeof(T1) >= 4, se_t<decltype(T1() & T2())>> operator &(const se_t<T1>& left, const se_t<T2>& right)
{
return{ left.raw_data() & right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2) && sizeof(T1) >= 4, se_t<decltype(T1() & T2())>> operator &(const se_t<T1>& left, T2 right)
{
return{ left.raw_data() & se_storage<T1>::to(right), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2) && sizeof(T2) >= 4, se_t<decltype(T1() & T2())>> operator &(T1 left, const se_t<T2>& right)
{
return{ se_storage<T2>::to(left) & right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2) && sizeof(T1) >= 4, se_t<decltype(T1() | T2())>> operator |(const se_t<T1>& left, const se_t<T2>& right)
{
return{ left.raw_data() | right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2) && sizeof(T1) >= 4, se_t<decltype(T1() | T2())>> operator |(const se_t<T1>& left, T2 right)
{
return{ left.raw_data() | se_storage<T1>::to(right), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2) && sizeof(T2) >= 4, se_t<decltype(T1() | T2())>> operator |(T1 left, const se_t<T2>& right)
{
return{ se_storage<T2>::to(left) | right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_BINARY_COMPARABLE(T1, T2) && sizeof(T1) >= 4, se_t<decltype(T1() ^ T2())>> operator ^(const se_t<T1>& left, const se_t<T2>& right)
{
return{ left.raw_data() ^ right.raw_data(), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGRAL(T1) && IS_INTEGER(T2) && sizeof(T1) >= sizeof(T2) && sizeof(T1) >= 4, se_t<decltype(T1() ^ T2())>> operator ^(const se_t<T1>& left, T2 right)
{
return{ left.raw_data() ^ se_storage<T1>::to(right), se_raw };
}
// optimization
template<typename T1, typename T2> inline std::enable_if_t<IS_INTEGER(T1) && IS_INTEGRAL(T2) && sizeof(T1) <= sizeof(T2) && sizeof(T2) >= 4, se_t<decltype(T1() ^ T2())>> operator ^(T1 left, const se_t<T2>& right)
{
return{ se_storage<T2>::to(left) ^ right.raw_data(), se_raw };
}
// optimization
template<typename T> inline std::enable_if_t<IS_INTEGRAL(T) && sizeof(T) >= 4, se_t<decltype(~T())>> operator ~(const se_t<T>& right)
{
return{ ~right.raw_data(), se_raw };
}
#ifdef IS_LE_MACHINE
template<typename T> using be_t = se_t<T, true>;
template<typename T> using le_t = se_t<T, false>;
#else
template<typename T> using be_t = se_t<T, false>;
template<typename T> using le_t = se_t<T, true>;
#endif
template<typename T> struct is_be_t : public std::integral_constant<bool, false>
{
};
template<typename T> struct is_be_t<be_t<T>> : public std::integral_constant<bool, true>
{
};
template<typename T> struct is_be_t<const T> : public std::integral_constant<bool, is_be_t<T>::value>
{
};
template<typename T> struct is_be_t<volatile T> : public std::integral_constant<bool, is_be_t<T>::value>
{
};
// to_be_t helper struct
template<typename T> struct to_be
{
using type = std::conditional_t<std::is_arithmetic<T>::value || std::is_enum<T>::value || std::is_same<T, v128>::value || std::is_same<T, u128>::value, be_t<T>, T>;
};
// be_t<T> if possible, T otherwise
template<typename T> using to_be_t = typename to_be<T>::type;
template<typename T> struct to_be<const T> // move const qualifier
{
using type = const to_be_t<T>;
};
template<typename T> struct to_be<volatile T> // move volatile qualifier
{
using type = volatile to_be_t<T>;
};
template<> struct to_be<void> { using type = void; };
template<> struct to_be<bool> { using type = bool; };
template<> struct to_be<char> { using type = char; };
template<> struct to_be<u8> { using type = u8; };
template<> struct to_be<s8> { using type = s8; };
template<typename T> struct is_le_t : public std::integral_constant<bool, false>
{
};
template<typename T> struct is_le_t<le_t<T>> : public std::integral_constant<bool, true>
{
};
template<typename T> struct is_le_t<const T> : public std::integral_constant<bool, is_le_t<T>::value>
{
};
template<typename T> struct is_le_t<volatile T> : public std::integral_constant<bool, is_le_t<T>::value>
{
};
template<typename T> struct to_le
{
using type = std::conditional_t<std::is_arithmetic<T>::value || std::is_enum<T>::value || std::is_same<T, v128>::value || std::is_same<T, u128>::value, le_t<T>, T>;
};
// le_t<T> if possible, T otherwise
template<typename T> using to_le_t = typename to_le<T>::type;
template<typename T> struct to_le<const T> // move const qualifier
{
using type = const to_le_t<T>;
};
template<typename T> struct to_le<volatile T> // move volatile qualifier
{
using type = volatile to_le_t<T>;
};
template<> struct to_le<void> { using type = void; };
template<> struct to_le<bool> { using type = bool; };
template<> struct to_le<char> { using type = char; };
template<> struct to_le<u8> { using type = u8; };
template<> struct to_le<s8> { using type = s8; };
// to_ne_t helper struct
template<typename T> struct to_ne
{
using type = T;
};
template<typename T, bool Se> struct to_ne<se_t<T, Se>>
{
using type = T;
};
// restore native endianness for T: returns T for be_t<T> or le_t<T>, T otherwise
template<typename T> using to_ne_t = typename to_ne<T>::type;
template<typename T> struct to_ne<const T> // move const qualifier
{
using type = const to_ne_t<T>;
};
template<typename T> struct to_ne<volatile T> // move volatile qualifier
{
using type = volatile to_ne_t<T>;
};
+843
View File
@@ -0,0 +1,843 @@
#include "stdafx.h"
#include "Log.h"
#include "File.h"
#ifdef _WIN32
#include <Windows.h>
#define GET_API_ERROR static_cast<u64>(GetLastError())
static_assert(fs::file::null == intptr_t(INVALID_HANDLE_VALUE) && fs::dir::null == fs::file::null, "Check fs::file::null definition");
std::unique_ptr<wchar_t[]> to_wchar(const std::string& source)
{
const auto length = source.size() + 1; // size + null terminator
const int size = source.size() < INT_MAX ? static_cast<int>(length) : throw EXCEPTION("Invalid source length (0x%llx)", source.size());
std::unique_ptr<wchar_t[]> buffer(new wchar_t[length]); // allocate buffer assuming that length is the max possible size
if (!MultiByteToWideChar(CP_UTF8, 0, source.c_str(), size, buffer.get(), size))
{
throw EXCEPTION("System error 0x%x", GetLastError());
}
return buffer;
}
void to_utf8(std::string& result, const wchar_t* source)
{
const int length = lstrlenW(source); // source length
if (length == 0)
{
return result.clear();
}
const int size = WideCharToMultiByte(CP_UTF8, 0, source, length, NULL, 0, NULL, NULL); // output size
if (size <= 0)
{
throw EXCEPTION("System error 0x%x", GetLastError());
}
result.resize(size);
if (!WideCharToMultiByte(CP_UTF8, 0, source, length, &result.front(), size, NULL, NULL))
{
throw EXCEPTION("System error 0x%x", GetLastError());
}
}
time_t to_time_t(const ULARGE_INTEGER& ft)
{
return ft.QuadPart / 10000000ULL - 11644473600ULL;
}
time_t to_time_t(const LARGE_INTEGER& ft)
{
ULARGE_INTEGER v;
v.LowPart = ft.LowPart;
v.HighPart = ft.HighPart;
return to_time_t(v);
}
time_t to_time_t(const FILETIME& ft)
{
ULARGE_INTEGER v;
v.LowPart = ft.dwLowDateTime;
v.HighPart = ft.dwHighDateTime;
return to_time_t(v);
}
bool truncate_file(const std::string& file, u64 length)
{
// open the file
const auto handle = CreateFileW(to_wchar(file).get(), GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle == INVALID_HANDLE_VALUE)
{
return false;
}
LARGE_INTEGER distance;
distance.QuadPart = length;
// seek and truncate
if (!SetFilePointerEx(handle, distance, NULL, FILE_BEGIN) || !SetEndOfFile(handle))
{
const auto error = GetLastError();
CloseHandle(handle);
SetLastError(error);
return false;
}
return CloseHandle(handle);
}
#else
#include <sys/stat.h>
#include <sys/types.h>
#include <dirent.h>
#include <fcntl.h>
#include <unistd.h>
#if defined(__APPLE__) || defined(__FreeBSD__)
#include <copyfile.h>
#else
#include <sys/sendfile.h>
#endif
#include "errno.h"
#define GET_API_ERROR static_cast<u64>(errno)
#endif
thread_local fse fs::g_tls_error = fse::ok;
bool fs::stat(const std::string& path, stat_t& info)
{
g_tls_error = fse::ok;
#ifdef _WIN32
WIN32_FILE_ATTRIBUTE_DATA attrs;
if (!GetFileAttributesExW(to_wchar(path).get(), GetFileExInfoStandard, &attrs))
{
return false;
}
info.is_directory = (attrs.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
info.is_writable = (attrs.dwFileAttributes & FILE_ATTRIBUTE_READONLY) == 0;
info.size = (u64)attrs.nFileSizeLow | ((u64)attrs.nFileSizeHigh << 32);
info.atime = to_time_t(attrs.ftLastAccessTime);
info.mtime = to_time_t(attrs.ftLastWriteTime);
info.ctime = to_time_t(attrs.ftCreationTime);
#else
struct stat file_info;
if (stat(path.c_str(), &file_info) < 0)
{
return false;
}
info.is_directory = S_ISDIR(file_info.st_mode);
info.is_writable = file_info.st_mode & 0200; // HACK: approximation
info.size = file_info.st_size;
info.atime = file_info.st_atime;
info.mtime = file_info.st_mtime;
info.ctime = file_info.st_ctime;
#endif
return true;
}
bool fs::exists(const std::string& path)
{
g_tls_error = fse::ok;
#ifdef _WIN32
return GetFileAttributesW(to_wchar(path).get()) != 0xFFFFFFFF;
#else
struct stat buffer;
return stat(path.c_str(), &buffer) == 0;
#endif
}
bool fs::is_file(const std::string& file)
{
g_tls_error = fse::ok;
#ifdef _WIN32
DWORD attrs;
if ((attrs = GetFileAttributesW(to_wchar(file).get())) == INVALID_FILE_ATTRIBUTES)
{
return false;
}
return (attrs & FILE_ATTRIBUTE_DIRECTORY) == 0;
#else
struct stat file_info;
if (stat(file.c_str(), &file_info) < 0)
{
return false;
}
return !S_ISDIR(file_info.st_mode);
#endif
}
bool fs::is_dir(const std::string& dir)
{
g_tls_error = fse::ok;
#ifdef _WIN32
DWORD attrs;
if ((attrs = GetFileAttributesW(to_wchar(dir).get())) == INVALID_FILE_ATTRIBUTES)
{
return false;
}
return (attrs & FILE_ATTRIBUTE_DIRECTORY) != 0;
#else
struct stat file_info;
if (stat(dir.c_str(), &file_info) < 0)
{
return false;
}
return S_ISDIR(file_info.st_mode);
#endif
}
bool fs::create_dir(const std::string& dir)
{
g_tls_error = fse::ok;
#ifdef _WIN32
if (!CreateDirectoryW(to_wchar(dir).get(), NULL))
#else
if (mkdir(dir.c_str(), 0777))
#endif
{
LOG_WARNING(GENERAL, "Error creating directory '%s': 0x%llx", dir, GET_API_ERROR);
return false;
}
return true;
}
bool fs::create_path(const std::string& path)
{
g_tls_error = fse::ok;
size_t start = 0;
while (true)
{
// maybe it could be more optimal if goes from the end recursively
size_t pos = path.find_first_of("/\\", start);
if (pos == std::string::npos)
{
pos = path.length();
}
std::string dir = path.substr(0, pos);
start = ++pos;
if (dir.size() == 0)
{
continue;
}
if (!is_dir(dir))
{
// if doesn't exist or not a dir
if (!create_dir(dir))
{
// if creating failed
return false;
}
}
if (pos >= path.length())
{
break;
}
}
return true;
}
bool fs::remove_dir(const std::string& dir)
{
g_tls_error = fse::ok;
#ifdef _WIN32
if (!RemoveDirectoryW(to_wchar(dir).get()))
#else
if (rmdir(dir.c_str()))
#endif
{
LOG_WARNING(GENERAL, "Error deleting directory '%s': 0x%llx", dir, GET_API_ERROR);
return false;
}
return true;
}
bool fs::rename(const std::string& from, const std::string& to)
{
g_tls_error = fse::ok;
#ifdef _WIN32
if (!MoveFileW(to_wchar(from).get(), to_wchar(to).get()))
#else
if (rename(from.c_str(), to.c_str()))
#endif
{
LOG_WARNING(GENERAL, "Error renaming '%s' to '%s': 0x%llx", from, to, GET_API_ERROR);
return false;
}
return true;
}
#ifndef _WIN32
int OSCopyFile(const char* source, const char* destination, bool overwrite)
{
/* This function was taken from http://stackoverflow.com/questions/2180079/how-can-i-copy-a-file-on-unix-using-c */
int input, output;
if ((input = open(source, O_RDONLY)) == -1)
{
return -1;
}
if ((output = open(destination, O_WRONLY | O_CREAT | (overwrite ? O_TRUNC : O_EXCL), 0666)) == -1)
{
close(input);
return -1;
}
//Here we use kernel-space copying for performance reasons
#if defined(__APPLE__) || defined(__FreeBSD__)
//fcopyfile works on FreeBSD and OS X 10.5+
int result = fcopyfile(input, output, 0, COPYFILE_ALL);
#else
//sendfile will work with non-socket output (i.e. regular file) on Linux 2.6.33+
off_t bytesCopied = 0;
struct stat fileinfo = { 0 };
fstat(input, &fileinfo);
int result = sendfile(output, input, &bytesCopied, fileinfo.st_size) == -1 ? -1 : 0;
#endif
close(input);
close(output);
return result;
}
#endif
bool fs::copy_file(const std::string& from, const std::string& to, bool overwrite)
{
g_tls_error = fse::ok;
#ifdef _WIN32
if (!CopyFileW(to_wchar(from).get(), to_wchar(to).get(), !overwrite))
#else
if (OSCopyFile(from.c_str(), to.c_str(), overwrite))
#endif
{
LOG_WARNING(GENERAL, "Error copying '%s' to '%s': 0x%llx", from, to, GET_API_ERROR);
return false;
}
return true;
}
bool fs::remove_file(const std::string& file)
{
g_tls_error = fse::ok;
#ifdef _WIN32
if (!DeleteFileW(to_wchar(file).get()))
#else
if (unlink(file.c_str()))
#endif
{
LOG_WARNING(GENERAL, "Error deleting file '%s': 0x%llx", file, GET_API_ERROR);
return false;
}
return true;
}
bool fs::truncate_file(const std::string& file, u64 length)
{
g_tls_error = fse::ok;
#ifdef _WIN32
if (!::truncate_file(file, length))
#else
if (::truncate(file.c_str(), length))
#endif
{
LOG_WARNING(GENERAL, "Error resizing file '%s' to 0x%llx: 0x%llx", file, length, GET_API_ERROR);
return false;
}
return true;
}
fs::file::~file()
{
if (m_fd != null)
{
#ifdef _WIN32
CloseHandle((HANDLE)m_fd);
#else
::close(m_fd);
#endif
}
}
bool fs::file::open(const std::string& filename, u32 mode)
{
this->close();
g_tls_error = fse::ok;
#ifdef _WIN32
DWORD access = 0;
switch (mode & (fom::read | fom::write | fom::append))
{
case fom::read: access |= GENERIC_READ; break;
case fom::read | fom::append: access |= GENERIC_READ; break;
case fom::write: access |= GENERIC_WRITE; break;
case fom::write | fom::append: access |= FILE_APPEND_DATA; break;
case fom::read | fom::write: access |= GENERIC_READ | GENERIC_WRITE; break;
case fom::read | fom::write | fom::append: access |= GENERIC_READ | FILE_APPEND_DATA; break;
default:
{
LOG_ERROR(GENERAL, "fs::file::open('%s') failed: neither fom::read nor fom::write specified (0x%x)", filename, mode);
return false;
}
}
DWORD disp = 0;
switch (mode & (fom::create | fom::trunc | fom::excl))
{
case 0: disp = OPEN_EXISTING; break;
case fom::create: disp = OPEN_ALWAYS; break;
case fom::trunc: disp = TRUNCATE_EXISTING; break;
case fom::create | fom::trunc: disp = CREATE_ALWAYS; break;
case fom::create | fom::excl: disp = CREATE_NEW; break;
case fom::create | fom::excl | fom::trunc: disp = CREATE_NEW; break;
}
if (!disp || (mode & ~(fom::read | fom::write | fom::append | fom::create | fom::trunc | fom::excl)))
{
LOG_ERROR(GENERAL, "fs::file::open('%s') failed: unknown mode specified (0x%x)", filename, mode);
return false;
}
m_fd = (intptr_t)CreateFileW(to_wchar(filename).get(), access, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, disp, FILE_ATTRIBUTE_NORMAL, NULL);
#else
int flags = 0;
switch (mode & (fom::read | fom::write))
{
case fom::read: flags |= O_RDONLY; break;
case fom::write: flags |= O_WRONLY; break;
case fom::read | fom::write: flags |= O_RDWR; break;
default:
{
LOG_ERROR(GENERAL, "fs::file::open('%s') failed: neither fom::read nor fom::write specified (0x%x)", filename, mode);
return false;
}
}
if (mode & fom::append) flags |= O_APPEND;
if (mode & fom::create) flags |= O_CREAT;
if (mode & fom::trunc) flags |= O_TRUNC;
if (mode & fom::excl) flags |= O_EXCL;
if (((mode & fom::excl) && !(mode & fom::create)) || (mode & ~(fom::read | fom::write | fom::append | fom::create | fom::trunc | fom::excl)))
{
LOG_ERROR(GENERAL, "fs::file::open('%s') failed: unknown mode specified (0x%x)", filename, mode);
return false;
}
m_fd = ::open(filename.c_str(), flags, 0666);
#endif
if (m_fd == null)
{
LOG_WARNING(GENERAL, "fs::file::open('%s', 0x%x) failed: error 0x%llx", filename, mode, GET_API_ERROR);
return false;
}
return true;
}
bool fs::file::trunc(u64 size) const
{
g_tls_error = fse::ok;
#ifdef _WIN32
LARGE_INTEGER old, pos;
pos.QuadPart = 0;
SetFilePointerEx((HANDLE)m_fd, pos, &old, FILE_CURRENT); // get old position
pos.QuadPart = size;
SetFilePointerEx((HANDLE)m_fd, pos, NULL, FILE_BEGIN); // set new position
SetEndOfFile((HANDLE)m_fd); // change file size
SetFilePointerEx((HANDLE)m_fd, old, NULL, FILE_BEGIN); // restore position
return true; // TODO
#else
return !::ftruncate(m_fd, size);
#endif
}
bool fs::file::stat(stat_t& info) const
{
g_tls_error = fse::ok;
#ifdef _WIN32
FILE_BASIC_INFO basic_info;
if (!GetFileInformationByHandleEx((HANDLE)m_fd, FileBasicInfo, &basic_info, sizeof(FILE_BASIC_INFO)))
{
return false;
}
info.is_directory = (basic_info.FileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
info.is_writable = (basic_info.FileAttributes & FILE_ATTRIBUTE_READONLY) == 0;
info.size = this->size();
info.atime = to_time_t(basic_info.LastAccessTime);
info.mtime = to_time_t(basic_info.ChangeTime);
info.ctime = to_time_t(basic_info.CreationTime);
#else
struct stat file_info;
if (fstat(m_fd, &file_info) < 0)
{
return false;
}
info.is_directory = S_ISDIR(file_info.st_mode);
info.is_writable = file_info.st_mode & 0200; // HACK: approximation
info.size = file_info.st_size;
info.atime = file_info.st_atime;
info.mtime = file_info.st_mtime;
info.ctime = file_info.st_ctime;
#endif
return true;
}
bool fs::file::close()
{
g_tls_error = fse::ok;
if (m_fd == null)
{
return false;
}
auto fd = m_fd;
m_fd = null;
#ifdef _WIN32
return CloseHandle((HANDLE)fd);
#else
return !::close(fd);
#endif
}
u64 fs::file::read(void* buffer, u64 count) const
{
g_tls_error = fse::ok;
const int size = count <= INT_MAX ? static_cast<int>(count) : throw EXCEPTION("Invalid count (0x%llx)", count);
#ifdef _WIN32
DWORD nread;
if (!ReadFile((HANDLE)m_fd, buffer, size, &nread, NULL))
{
return -1;
}
return nread;
#else
return ::read(m_fd, buffer, size);
#endif
}
u64 fs::file::write(const void* buffer, u64 count) const
{
g_tls_error = fse::ok;
const int size = count <= INT_MAX ? static_cast<int>(count) : throw EXCEPTION("Invalid count (0x%llx)", count);
#ifdef _WIN32
DWORD nwritten;
if (!WriteFile((HANDLE)m_fd, buffer, size, &nwritten, NULL))
{
return -1;
}
return nwritten;
#else
return ::write(m_fd, buffer, size);
#endif
}
u64 fs::file::seek(s64 offset, fsm seek_mode) const
{
g_tls_error = fse::ok;
#ifdef _WIN32
LARGE_INTEGER pos;
pos.QuadPart = offset;
const DWORD mode =
seek_mode == fsm::begin ? FILE_BEGIN :
seek_mode == fsm::cur ? FILE_CURRENT :
seek_mode == fsm::end ? FILE_END :
throw EXCEPTION("Unknown seek_mode (0x%x)", seek_mode);
if (!SetFilePointerEx((HANDLE)m_fd, pos, &pos, mode))
{
return -1;
}
return pos.QuadPart;
#else
const int whence =
seek_mode == fsm::begin ? SEEK_SET :
seek_mode == fsm::cur ? SEEK_CUR :
seek_mode == fsm::end ? SEEK_END :
throw EXCEPTION("Unknown seek_mode (0x%x)", seek_mode);
return ::lseek(m_fd, offset, whence);
#endif
}
u64 fs::file::size() const
{
g_tls_error = fse::ok;
#ifdef _WIN32
LARGE_INTEGER size;
if (!GetFileSizeEx((HANDLE)m_fd, &size))
{
return -1;
}
return size.QuadPart;
#else
struct stat file_info;
if (::fstat(m_fd, &file_info) < 0)
{
return -1;
}
return file_info.st_size;
#endif
}
fs::dir::~dir()
{
if (m_dd != null)
{
#ifdef _WIN32
FindClose((HANDLE)m_dd);
#else
::closedir((DIR*)m_dd);
#endif
}
}
void fs::dir::import(handle_type dd, const std::string& path)
{
if (m_dd != null)
{
#ifdef _WIN32
FindClose((HANDLE)m_dd);
#else
::closedir((DIR*)m_dd);
#endif
}
g_tls_error = fse::ok;
m_dd = dd;
#ifdef _WIN32
m_path = to_wchar(path);
#else
m_path.reset(new char[path.size() + 1]);
memcpy(m_path.get(), path.c_str(), path.size() + 1);
#endif
}
bool fs::dir::open(const std::string& dirname)
{
if (m_dd != null)
{
#ifdef _WIN32
FindClose((HANDLE)m_dd);
#else
::closedir((DIR*)m_dd);
#endif
}
g_tls_error = fse::ok;
m_dd = null;
m_path.reset();
if (!is_dir(dirname))
{
return false;
}
#ifdef _WIN32
m_path = to_wchar(dirname + "/*");
#else
m_path.reset(new char[dirname.size() + 1]);
memcpy(m_path.get(), dirname.c_str(), dirname.size() + 1);
#endif
return true;
}
bool fs::dir::close()
{
g_tls_error = fse::ok;
if (m_dd == null)
{
if (m_path)
{
m_path.reset();
return true;
}
else
{
return false;
}
}
auto dd = m_dd;
m_dd = null;
m_path.reset();
#ifdef _WIN32
return FindClose((HANDLE)dd);
#else
return !::closedir((DIR*)dd);
#endif
}
bool fs::dir::get_first(std::string& name, stat_t& info)
{
if (m_dd != null) // close previous handle
{
#ifdef _WIN32
FindClose((HANDLE)m_dd);
#else
::closedir((DIR*)m_dd);
#endif
}
g_tls_error = fse::ok;
m_dd = null;
if (!m_path)
{
return false;
}
#ifdef _WIN32
WIN32_FIND_DATAW found;
m_dd = (intptr_t)FindFirstFileW(m_path.get(), &found);
if (m_dd == null)
{
return false;
}
to_utf8(name, found.cFileName);
info.is_directory = (found.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
info.is_writable = (found.dwFileAttributes & FILE_ATTRIBUTE_READONLY) == 0;
info.size = ((u64)found.nFileSizeHigh << 32) | (u64)found.nFileSizeLow;
info.atime = to_time_t(found.ftLastAccessTime);
info.mtime = to_time_t(found.ftLastWriteTime);
info.ctime = to_time_t(found.ftCreationTime);
return true;
#else
m_dd = (intptr_t)::opendir(m_path.get());
return get_next(name, info);
#endif
}
bool fs::dir::get_next(std::string& name, stat_t& info)
{
g_tls_error = fse::ok;
if (m_dd == null)
{
return false;
}
#ifdef _WIN32
WIN32_FIND_DATAW found;
if (!FindNextFileW((HANDLE)m_dd, &found))
{
return false;
}
to_utf8(name, found.cFileName);
info.is_directory = (found.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
info.is_writable = (found.dwFileAttributes & FILE_ATTRIBUTE_READONLY) == 0;
info.size = ((u64)found.nFileSizeHigh << 32) | (u64)found.nFileSizeLow;
info.atime = to_time_t(found.ftLastAccessTime);
info.mtime = to_time_t(found.ftLastWriteTime);
info.ctime = to_time_t(found.ftCreationTime);
#else
const auto found = ::readdir((DIR*)m_dd);
struct stat file_info;
if (!found || ::fstatat(::dirfd((DIR*)m_dd), found->d_name, &file_info, 0) < 0)
{
return false;
}
name = found->d_name;
info.is_directory = S_ISDIR(file_info.st_mode);
info.is_writable = file_info.st_mode & 0200; // HACK: approximation
info.size = file_info.st_size;
info.atime = file_info.st_atime;
info.mtime = file_info.st_mtime;
info.ctime = file_info.st_ctime;
#endif
return true;
}
+143
View File
@@ -0,0 +1,143 @@
#pragma once
enum class fsm : u32 // file seek mode
{
begin,
cur,
end,
};
namespace fom // file open mode
{
enum : u32
{
read = 1 << 0,
write = 1 << 1,
append = 1 << 2,
create = 1 << 3,
trunc = 1 << 4,
excl = 1 << 5,
};
};
enum class fse : u32 // filesystem (file or dir) error
{
ok, // no error
invalid_arguments,
};
enum : u32 // obsolete flags
{
o_read = fom::read,
o_write = fom::write,
o_append = fom::append,
o_create = fom::create,
o_trunc = fom::trunc,
o_excl = fom::excl,
};
namespace fs
{
thread_local extern fse g_tls_error;
struct stat_t
{
bool is_directory;
bool is_writable;
u64 size;
s64 atime;
s64 mtime;
s64 ctime;
};
bool stat(const std::string& path, stat_t& info);
bool exists(const std::string& path);
bool is_file(const std::string& file);
bool is_dir(const std::string& dir);
bool remove_dir(const std::string& dir);
bool create_dir(const std::string& dir);
bool create_path(const std::string& path);
bool rename(const std::string& from, const std::string& to);
bool copy_file(const std::string& from, const std::string& to, bool overwrite);
bool remove_file(const std::string& file);
bool truncate_file(const std::string& file, u64 length);
struct file final
{
using handle_type = std::intptr_t;
static const handle_type null = -1;
private:
handle_type m_fd = null;
public:
file() = default;
~file();
explicit file(const std::string& filename, u32 mode = fom::read) { open(filename, mode); }
file(const file&) = delete;
file(file&&) = delete; // possibly TODO
file& operator =(const file&) = delete;
file& operator =(file&&) = delete; // possibly TODO
operator bool() const { return m_fd != null; }
void import(handle_type fd) { this->~file(); m_fd = fd; }
bool open(const std::string& filename, u32 mode = fom::read);
bool is_opened() const { return m_fd != null; }
bool trunc(u64 size) const; // change file size (possibly appending zero bytes)
bool stat(stat_t& info) const; // get file info
bool close();
u64 read(void* buffer, u64 count) const;
u64 write(const void* buffer, u64 count) const;
u64 seek(s64 offset, fsm seek_mode = fsm::begin) const;
u64 size() const;
};
struct dir final
{
#ifdef _WIN32
using handle_type = intptr_t;
using name_type = std::unique_ptr<wchar_t[]>;
static const handle_type null = -1;
#else
using handle_type = intptr_t;
using name_type = std::unique_ptr<char[]>;
static const handle_type null = 0;
#endif
private:
handle_type m_dd = null;
name_type m_path;
public:
dir() = default;
~dir();
explicit dir(const std::string& dirname) { open(dirname); }
dir(const dir&) = delete;
dir(dir&&) = delete; // possibly TODO
dir& operator =(const dir&) = delete;
dir& operator =(dir&&) = delete; // possibly TODO
operator bool() const { return m_path.operator bool(); }
void import(handle_type dd, const std::string& path);
bool open(const std::string& dirname);
bool is_opened() const { return *this; }
bool close();
bool get_first(std::string& name, stat_t& info);
//bool get_first(std::string& name);
bool get_next(std::string& name, stat_t& info);
//bool get_next(std::string& name);
};
}
+59
View File
@@ -0,0 +1,59 @@
#include "GNU.h"
#ifdef __APPLE__
#include <sys/types.h>
#include <sys/_types/_timespec.h>
#include <mach/mach.h>
#include <mach/clock.h>
#include <mach/mach_time.h>
#undef CPU_STATE_MAX
#define MT_NANO (+1.0E-9)
#define MT_GIGA UINT64_C(1000000000)
// TODO create a list of timers,
static double mt_timebase = 0.0;
static uint64_t mt_timestart = 0;
// TODO be more careful in a multithreaded environement
int clock_gettime(clockid_t clk_id, struct timespec *tp)
{
kern_return_t retval = KERN_SUCCESS;
if( clk_id == TIMER_ABSTIME)
{
if (!mt_timestart) { // only one timer, initilized on the first call to the TIMER
mach_timebase_info_data_t tb = { 0 };
mach_timebase_info(&tb);
mt_timebase = tb.numer;
mt_timebase /= tb.denom;
mt_timestart = mach_absolute_time();
}
double diff = (mach_absolute_time() - mt_timestart) * mt_timebase;
tp->tv_sec = diff * MT_NANO;
tp->tv_nsec = diff - (tp->tv_sec * MT_GIGA);
}
else // other clk_ids are mapped to the coresponding mach clock_service
{
clock_serv_t cclock;
mach_timespec_t mts;
host_get_clock_service(mach_host_self(), clk_id, &cclock);
retval = clock_get_time(cclock, &mts);
mach_port_deallocate(mach_task_self(), cclock);
tp->tv_sec = mts.tv_sec;
tp->tv_nsec = mts.tv_nsec;
}
return retval;
}
#endif /* __APPLE__ */
#if defined(__GNUG__)
void * _aligned_malloc(size_t size, size_t alignment) {
void *buffer;
return (posix_memalign(&buffer, alignment, size) == 0) ? buffer : 0;
}
#endif
+329
View File
@@ -0,0 +1,329 @@
#pragma once
#include <emmintrin.h>
#if defined(_MSC_VER) && _MSC_VER <= 1800
#define thread_local __declspec(thread)
#elif __APPLE__
#define thread_local __thread
#endif
#if defined(_MSC_VER)
#define never_inline __declspec(noinline)
#else
#define never_inline __attribute__((noinline))
#endif
#if defined(_MSC_VER)
#define safe_buffers __declspec(safebuffers)
#else
#define safe_buffers
#endif
#if defined(_MSC_VER)
#define force_inline __forceinline
#else
#define force_inline __attribute__((always_inline))
#endif
#if defined(_MSC_VER) && _MSC_VER <= 1800
#define alignas(x) _CRT_ALIGN(x)
#endif
#if defined(__GNUG__)
#include <stdlib.h>
#include <cstdint>
#ifndef __APPLE__
#include <malloc.h>
#endif
#define _fpclass(x) std::fpclassify(x)
#define _byteswap_ushort(x) __builtin_bswap16(x)
#define _byteswap_ulong(x) __builtin_bswap32(x)
#define _byteswap_uint64(x) __builtin_bswap64(x)
#define INFINITE 0xFFFFFFFF
inline uint64_t __umulh(uint64_t a, uint64_t b)
{
uint64_t result;
__asm__("mulq %[b]" : "=d" (result) : [a] "a" (a), [b] "rm" (b));
return result;
}
inline int64_t __mulh(int64_t a, int64_t b)
{
int64_t result;
__asm__("imulq %[b]" : "=d" (result) : [a] "a" (a), [b] "rm" (b));
return result;
}
#ifdef __APPLE__
// XXX only supports a single timer
#define TIMER_ABSTIME -1
/* The opengroup spec isn't clear on the mapping from REALTIME to CALENDAR
being appropriate or not.
http://pubs.opengroup.org/onlinepubs/009695299/basedefs/time.h.html */
#define CLOCK_REALTIME 1 // #define CALENDAR_CLOCK 1 from mach/clock_types.h
#define CLOCK_MONOTONIC 0 // #define SYSTEM_CLOCK 0
typedef int clockid_t;
/* the mach kernel uses struct mach_timespec, so struct timespec
is loaded from <sys/_types/_timespec.h> for compatability */
// struct timespec { time_t tv_sec; long tv_nsec; };
int clock_gettime(clockid_t clk_id, struct timespec *tp);
#endif /* __APPLE__ */
#endif /* __GNUG__ */
#if defined(_MSC_VER)
// Unsigned 128-bit integer implementation
struct alignas(16) uint128_t
{
uint64_t lo, hi;
uint128_t() = default;
uint128_t(uint64_t l)
: lo(l)
, hi(0)
{
}
[[deprecated("Not implemented")]] inline uint128_t operator +(const uint128_t& r) const
{
return{};
}
inline uint128_t operator +(uint64_t r) const
{
uint128_t value;
value.lo = lo + r;
value.hi = value.lo < r ? hi + 1 : hi;
return value;
}
[[deprecated("Not implemented")]] inline uint128_t operator -(const uint128_t& r) const
{
return{};
}
inline uint128_t operator -(uint64_t r) const
{
uint128_t value;
value.lo = lo - r;
value.hi = lo < r ? hi - 1 : hi;
return value;
}
inline uint128_t operator +() const
{
return *this;
}
inline uint128_t operator -() const
{
uint128_t value;
value.lo = ~lo + 1;
value.hi = lo ? ~hi : ~hi + 1;
return value;
}
inline uint128_t& operator ++()
{
if (!++lo) ++hi;
return *this;
}
inline uint128_t operator ++(int)
{
uint128_t value = *this;
if (!++lo) ++hi;
return value;
}
inline uint128_t& operator --()
{
if (!lo--) hi--;
return *this;
}
inline uint128_t operator --(int)
{
uint128_t value = *this;
if (!lo--) hi--;
return value;
}
inline uint128_t operator ~() const
{
uint128_t value;
value.lo = ~lo;
value.hi = ~hi;
return value;
}
inline uint128_t operator &(const uint128_t& r) const
{
uint128_t value;
value.lo = lo & r.lo;
value.hi = hi & r.hi;
return value;
}
inline uint128_t operator |(const uint128_t& r) const
{
uint128_t value;
value.lo = lo | r.lo;
value.hi = hi | r.hi;
return value;
}
inline uint128_t operator ^(const uint128_t& r) const
{
uint128_t value;
value.lo = lo ^ r.lo;
value.hi = hi ^ r.hi;
return value;
}
[[deprecated("Not implemented")]] inline uint128_t& operator +=(const uint128_t& r)
{
return *this;
}
inline uint128_t& operator +=(uint64_t r)
{
hi = (lo += r) < r ? hi + 1 : hi;
return *this;
}
[[deprecated("Not implemented")]] inline uint128_t& operator -=(const uint128_t& r)
{
return *this;
}
inline uint128_t& operator &=(const uint128_t& r)
{
lo &= r.lo;
hi &= r.hi;
return *this;
}
inline uint128_t& operator |=(const uint128_t& r)
{
lo |= r.lo;
hi |= r.hi;
return *this;
}
inline uint128_t& operator ^=(const uint128_t& r)
{
lo ^= r.lo;
hi ^= r.hi;
return *this;
}
};
using __uint128_t = uint128_t;
#endif
inline uint32_t cntlz32(uint32_t arg)
{
#if defined(_MSC_VER)
unsigned long res;
if (!_BitScanReverse(&res, arg))
{
return 32;
}
else
{
return res ^ 31;
}
#else
if (arg)
{
return __builtin_clzll((uint64_t)arg) - 32;
}
else
{
return 32;
}
#endif
}
inline uint64_t cntlz64(uint64_t arg)
{
#if defined(_MSC_VER)
unsigned long res;
if (!_BitScanReverse64(&res, arg))
{
return 64;
}
else
{
return res ^ 63;
}
#else
if (arg)
{
return __builtin_clzll(arg);
}
else
{
return 64;
}
#endif
}
// compare 16 packed unsigned bytes (greater than)
inline __m128i sse_cmpgt_epu8(__m128i A, __m128i B)
{
// (A xor 0x80) > (B xor 0x80)
const auto sign = _mm_set1_epi32(0x80808080);
return _mm_cmpgt_epi8(_mm_xor_si128(A, sign), _mm_xor_si128(B, sign));
}
inline __m128i sse_cmpgt_epu16(__m128i A, __m128i B)
{
const auto sign = _mm_set1_epi32(0x80008000);
return _mm_cmpgt_epi16(_mm_xor_si128(A, sign), _mm_xor_si128(B, sign));
}
inline __m128i sse_cmpgt_epu32(__m128i A, __m128i B)
{
const auto sign = _mm_set1_epi32(0x80000000);
return _mm_cmpgt_epi32(_mm_xor_si128(A, sign), _mm_xor_si128(B, sign));
}
inline __m128 sse_exp2_ps(__m128 A)
{
const auto x0 = _mm_max_ps(_mm_min_ps(A, _mm_set1_ps(127.4999961f)), _mm_set1_ps(-127.4999961f));
const auto x1 = _mm_add_ps(x0, _mm_set1_ps(0.5f));
const auto x2 = _mm_sub_epi32(_mm_cvtps_epi32(x1), _mm_and_si128(_mm_castps_si128(_mm_cmpnlt_ps(_mm_setzero_ps(), x1)), _mm_set1_epi32(1)));
const auto x3 = _mm_sub_ps(x0, _mm_cvtepi32_ps(x2));
const auto x4 = _mm_mul_ps(x3, x3);
const auto x5 = _mm_mul_ps(x3, _mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(x4, _mm_set1_ps(0.023093347705f)), _mm_set1_ps(20.20206567f)), x4), _mm_set1_ps(1513.906801f)));
const auto x6 = _mm_mul_ps(x5, _mm_rcp_ps(_mm_sub_ps(_mm_add_ps(_mm_mul_ps(_mm_set1_ps(233.1842117f), x4), _mm_set1_ps(4368.211667f)), x5)));
return _mm_mul_ps(_mm_add_ps(_mm_add_ps(x6, x6), _mm_set1_ps(1.0f)), _mm_castsi128_ps(_mm_slli_epi32(_mm_add_epi32(x2, _mm_set1_epi32(127)), 23)));
}
inline __m128 sse_log2_ps(__m128 A)
{
const auto _1 = _mm_set1_ps(1.0f);
const auto _c = _mm_set1_ps(1.442695040f);
const auto x0 = _mm_max_ps(A, _mm_castsi128_ps(_mm_set1_epi32(0x00800000)));
const auto x1 = _mm_or_ps(_mm_and_ps(x0, _mm_castsi128_ps(_mm_set1_epi32(0x807fffff))), _1);
const auto x2 = _mm_rcp_ps(_mm_add_ps(x1, _1));
const auto x3 = _mm_mul_ps(_mm_sub_ps(x1, _1), x2);
const auto x4 = _mm_add_ps(x3, x3);
const auto x5 = _mm_mul_ps(x4, x4);
const auto x6 = _mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(_mm_set1_ps(-0.7895802789f), x5), _mm_set1_ps(16.38666457f)), x5), _mm_set1_ps(-64.1409953f));
const auto x7 = _mm_rcp_ps(_mm_add_ps(_mm_mul_ps(_mm_add_ps(_mm_mul_ps(_mm_set1_ps(-35.67227983f), x5), _mm_set1_ps(312.0937664f)), x5), _mm_set1_ps(-769.6919436f)));
const auto x8 = _mm_cvtepi32_ps(_mm_sub_epi32(_mm_srli_epi32(_mm_castps_si128(x0), 23), _mm_set1_epi32(127)));
return _mm_add_ps(_mm_mul_ps(_mm_mul_ps(_mm_mul_ps(_mm_mul_ps(x5, x6), x7), x4), _c), _mm_add_ps(_mm_mul_ps(x4, _c), x8));
}
-136
View File
@@ -1,136 +0,0 @@
#pragma once
#include "Array.h"
typedef u32 ID_TYPE;
struct ID
{
bool m_used;
wxString m_name;
u8 m_attr;
void* m_data;
ID(bool used = false, const wxString& name = wxEmptyString, void* data = NULL, const u8 attr = 0)
: m_used(used)
, m_name(name)
, m_data(data)
, m_attr(attr)
{
}
};
class IdManager
{
ArrayF<ID> IDs;
static const u64 first_id = 1;
void Cleanup()
{
while(IDs.GetCount())
{
const u32 num = IDs.GetCount()-1;
ID& id = IDs[num];
if(id.m_used) break;
IDs.RemoveAt(num);
}
}
public:
IdManager()
{
}
~IdManager()
{
Clear();
}
static ID_TYPE GetMaxID()
{
return (ID_TYPE)-1;
}
bool CheckID(const u64 id)
{
if(id == 0 || id > (u64)NumToID(IDs.GetCount()-1) || id >= GetMaxID()) return false;
return IDs[IDToNum(id)].m_used;
}
__forceinline const ID_TYPE NumToID(const ID_TYPE num) const
{
return num + first_id;
}
__forceinline const ID_TYPE IDToNum(const ID_TYPE id) const
{
return id - first_id;
}
void Clear()
{
IDs.Clear();
}
virtual ID_TYPE GetNewID(const wxString& name = wxEmptyString, void* data = NULL, const u8 attr = 0)
{
for(uint i=0; i<IDs.GetCount(); ++i)
{
if(IDs[i].m_used) continue;
return NumToID(i);
}
const ID_TYPE pos = IDs.GetCount();
if(NumToID(pos) >= GetMaxID()) return 0;
IDs.Add(new ID(true, name, data, attr));
return NumToID(pos);
}
ID& GetIDData(const ID_TYPE _id)
{
//if(!CheckID(_id)) return IDs.Get(0); //TODO
return IDs[IDToNum(_id)];
}
bool GetFirst(ID& dst, ID_TYPE* _id = NULL)
{
u32 pos = 0;
return GetNext(pos, dst, _id);
}
bool HasID(const s64 id)
{
if(id == wxID_ANY) return IDs.GetCount() != 0;
return CheckID(id);
}
bool GetNext(u32& pos, ID& dst, ID_TYPE* _id = NULL)
{
while(pos < IDs.GetCount())
{
ID& id = IDs[pos++];
if(!id.m_used) continue;
dst = id;
if(_id) *_id = NumToID(pos - 1);
return true;
}
return false;
}
virtual bool RemoveID(const ID_TYPE _id, bool free_data = true)
{
if(!CheckID(_id)) return false;
ID& id = IDs[IDToNum(_id)];
if(!id.m_used) return false;
id.m_used = false;
id.m_attr = 0;
id.m_name.Clear();
if(free_data) delete id.m_data;
id.m_data = NULL;
if(IDToNum(_id) == IDs.GetCount()-1) Cleanup();
return true;
}
};
+32
View File
@@ -0,0 +1,32 @@
#pragma once
template<typename T1, typename T2> struct range_t
{
T1 _min; // first value
T2 _max; // second value
};
template<typename T1, typename T2> constexpr range_t<std::decay_t<T1>, std::decay_t<T2>> make_range(T1&& _min, T2&& _max)
{
return{ std::forward<T1>(_min), std::forward<T2>(_max) };
}
template<typename T1, typename T2, typename T> constexpr bool operator <(const range_t<T1, T2>& range, const T& value)
{
return range._min < value && range._max < value;
}
template<typename T1, typename T2, typename T> constexpr bool operator <(const T& value, const range_t<T1, T2>& range)
{
return value < range._min && value < range._max;
}
template<typename T1, typename T2, typename T> constexpr bool operator ==(const range_t<T1, T2>& range, const T& value)
{
return !(value < range._min) && !(range._max < value);
}
template<typename T1, typename T2, typename T> constexpr bool operator ==(const T& value, const range_t<T1, T2>& range)
{
return !(value < range._min) && !(range._max < value);
}
+276
View File
@@ -0,0 +1,276 @@
#include "stdafx.h"
#include "rPlatform.h"
#include "Log.h"
#include "rMsgBox.h"
#include <iostream>
#include <cinttypes>
#include "Thread.h"
#include "File.h"
using namespace Log;
std::unique_ptr<LogManager> g_log_manager;
u32 LogMessage::size() const
{
//1 byte for NULL terminator
return (u32)(sizeof(LogMessage::size_type) + sizeof(LogType) + sizeof(Severity) + sizeof(std::string::value_type) * mText.size() + 1);
}
void LogMessage::serialize(char *output) const
{
LogMessage::size_type size = this->size();
memcpy(output, &size, sizeof(LogMessage::size_type));
output += sizeof(LogMessage::size_type);
memcpy(output, &mType, sizeof(LogType));
output += sizeof(LogType);
memcpy(output, &mServerity, sizeof(Severity));
output += sizeof(Severity);
memcpy(output, mText.c_str(), mText.size() );
output += sizeof(std::string::value_type)*mText.size();
*output = '\0';
}
LogMessage LogMessage::deserialize(char *input, u32* size_out)
{
LogMessage msg;
LogMessage::size_type msgSize = *(reinterpret_cast<LogMessage::size_type*>(input));
input += sizeof(LogMessage::size_type);
msg.mType = *(reinterpret_cast<LogType*>(input));
input += sizeof(LogType);
msg.mServerity = *(reinterpret_cast<Severity*>(input));
input += sizeof(Severity);
if (msgSize > 9000)
{
int wtf = 6;
}
msg.mText.append(input, msgSize - 1 - sizeof(Severity) - sizeof(LogType));
if (size_out){(*size_out) = msgSize;}
return msg;
}
LogChannel::LogChannel() : LogChannel("unknown")
{}
LogChannel::LogChannel(const std::string& name) :
name(name)
, mEnabled(true)
, mLogLevel(Severity::Warning)
{}
void LogChannel::log(const LogMessage &msg)
{
std::lock_guard<std::mutex> lock(mListenerLock);
for (auto &listener : mListeners)
{
listener->log(msg);
}
}
void LogChannel::addListener(std::shared_ptr<LogListener> listener)
{
std::lock_guard<std::mutex> lock(mListenerLock);
mListeners.insert(listener);
}
void LogChannel::removeListener(std::shared_ptr<LogListener> listener)
{
std::lock_guard<std::mutex> lock(mListenerLock);
mListeners.erase(listener);
}
struct CoutListener : LogListener
{
void log(const LogMessage &msg) override
{
std::cerr << msg.mText << std::endl;
}
};
struct FileListener : LogListener
{
fs::file mFile;
bool mPrependChannelName;
FileListener(const std::string& name = _PRGNAME_, bool prependChannel = true)
: mFile(rPlatform::getConfigDir() + name + ".log", fom::write | fom::create | fom::trunc)
, mPrependChannelName(prependChannel)
{
if (!mFile)
{
rMessageBox("Can't create log file! (" + name + ".log)", "Error", rICON_ERROR);
}
}
void log(const LogMessage &msg) override
{
std::string text = msg.mText;
if (mPrependChannelName)
{
text.insert(0, gTypeNameTable[static_cast<u32>(msg.mType)].mName);
if (msg.mType == Log::TTY)
{
text = fmt::escape(text);
if (text[text.length() - 1] != '\n')
{
text += '\n';
}
}
}
mFile.write(text.c_str(), text.size());
}
};
LogManager::LogManager()
#ifdef BUFFERED_LOGGING
: mExiting(false), mLogConsumer()
#endif
{
auto it = mChannels.begin();
std::shared_ptr<LogListener> listener(new FileListener());
for (const LogTypeName& name : gTypeNameTable)
{
it->name = name.mName;
it->addListener(listener);
it++;
}
std::shared_ptr<LogListener> TTYListener(new FileListener("TTY",false));
getChannel(TTY).addListener(TTYListener);
#ifdef BUFFERED_LOGGING
mLogConsumer = std::thread(&LogManager::consumeLog, this);
#endif
}
LogManager::~LogManager()
{
#ifdef BUFFERED_LOGGING
mExiting = true;
mBufferReady.notify_all();
mLogConsumer.join();
}
void LogManager::consumeLog()
{
std::unique_lock<std::mutex> lock(mStatusMut);
while (!mExiting)
{
mBufferReady.wait(lock);
mBuffer.lockGet();
size_t size = mBuffer.size();
std::vector<char> local_messages(size);
mBuffer.popN(&local_messages.front(), size);
mBuffer.unlockGet();
u32 cursor = 0;
u32 removed = 0;
while (cursor < size)
{
Log::LogMessage msg = Log::LogMessage::deserialize(local_messages.data() + cursor, &removed);
cursor += removed;
getChannel(msg.mType).log(msg);
}
}
#endif
}
void LogManager::log(LogMessage msg)
{
//don't do any formatting changes or filtering to the TTY output since we
//use the raw output to do diffs with the output of a real PS3 and some
//programs write text in single bytes to the console
if (msg.mType != TTY)
{
std::string prefix;
switch (msg.mServerity)
{
case Severity::Success:
prefix = "S ";
break;
case Severity::Notice:
prefix = "! ";
break;
case Severity::Warning:
prefix = "W ";
break;
case Severity::Error:
prefix = "E ";
break;
}
if (auto thr = get_current_thread_ctrl())
{
prefix += "{" + thr->get_name() + "} ";
}
msg.mText.insert(0, prefix);
msg.mText.append(1,'\n');
}
#ifdef BUFFERED_LOGGING
size_t size = msg.size();
std::vector<char> temp_buffer(size);
msg.serialize(temp_buffer.data());
mBuffer.pushRange(temp_buffer.begin(), temp_buffer.end());
mBufferReady.notify_one();
#else
mChannels[static_cast<u32>(msg.mType)].log(msg);
#endif
}
void LogManager::addListener(std::shared_ptr<LogListener> listener)
{
for (auto& channel : mChannels)
{
channel.addListener(listener);
}
}
void LogManager::removeListener(std::shared_ptr<LogListener> listener)
{
for (auto& channel : mChannels)
{
channel.removeListener(listener);
}
}
LogManager& LogManager::getInstance()
{
if (!g_log_manager)
{
g_log_manager.reset(new LogManager());
}
return *g_log_manager;
}
LogChannel &LogManager::getChannel(LogType type)
{
return mChannels[static_cast<u32>(type)];
}
void log_message(Log::LogType type, Log::Severity sev, const char* text)
{
log_message(type, sev, std::string(text));
}
void log_message(Log::LogType type, Log::Severity sev, std::string text)
{
if (g_log_manager)
{
// another msvc bug makes this not work, uncomment this when it's fixed
//g_log_manager->log({logType, severity, text});
Log::LogMessage msg{ type, sev, std::move(text) };
g_log_manager->log(msg);
}
else
{
rMessageBox(text,
sev == Severity::Notice ? "Notice" :
sev == Severity::Warning ? "Warning" :
sev == Severity::Success ? "Success" :
sev == Severity::Error ? "Error" : "Unknown",
sev == Severity::Notice ? rICON_INFORMATION :
sev == Severity::Warning ? rICON_EXCLAMATION :
sev == Severity::Error ? rICON_ERROR : rICON_INFORMATION);
}
}
+135
View File
@@ -0,0 +1,135 @@
#pragma once
#include "Utilities/MTRingbuffer.h"
//#define BUFFERED_LOGGING 1
//first parameter is of type Log::LogType and text is of type std::string
#define LOG_SUCCESS(logType, text, ...) log_message(logType, Log::Severity::Success, text, ##__VA_ARGS__)
#define LOG_NOTICE(logType, text, ...) log_message(logType, Log::Severity::Notice, text, ##__VA_ARGS__)
#define LOG_WARNING(logType, text, ...) log_message(logType, Log::Severity::Warning, text, ##__VA_ARGS__)
#define LOG_ERROR(logType, text, ...) log_message(logType, Log::Severity::Error, text, ##__VA_ARGS__)
namespace Log
{
const unsigned int MAX_LOG_BUFFER_LENGTH = 1024*1024;
const unsigned int gBuffSize = 1000;
enum LogType : u32
{
GENERAL = 0,
LOADER,
MEMORY,
RSX,
HLE,
PPU,
SPU,
ARMv7,
TTY,
};
struct LogTypeName
{
LogType mType;
std::string mName;
};
//well I'd love make_array() but alas manually counting is not the end of the world
static const std::array<LogTypeName, 9> gTypeNameTable = { {
{ GENERAL, "G: " },
{ LOADER, "LDR: " },
{ MEMORY, "MEM: " },
{ RSX, "RSX: " },
{ HLE, "HLE: " },
{ PPU, "PPU: " },
{ SPU, "SPU: " },
{ ARMv7, "ARM: " },
{ TTY, "TTY: " }
} };
enum class Severity : u32
{
Notice = 0,
Warning,
Success,
Error,
};
struct LogMessage
{
using size_type = u32;
LogType mType;
Severity mServerity;
std::string mText;
u32 size() const;
void serialize(char *output) const;
static LogMessage deserialize(char *input, u32* size_out=nullptr);
};
struct LogListener
{
virtual ~LogListener() {};
virtual void log(const LogMessage &msg) = 0;
};
struct LogChannel
{
LogChannel();
LogChannel(const std::string& name);
LogChannel(LogChannel& other) = delete;
LogChannel& operator = (LogChannel& other) = delete;
void log(const LogMessage &msg);
void addListener(std::shared_ptr<LogListener> listener);
void removeListener(std::shared_ptr<LogListener> listener);
std::string name;
private:
bool mEnabled;
Severity mLogLevel;
std::mutex mListenerLock;
std::set<std::shared_ptr<LogListener>> mListeners;
};
struct LogManager
{
LogManager();
~LogManager();
static LogManager& getInstance();
LogChannel& getChannel(LogType type);
void log(LogMessage msg);
void addListener(std::shared_ptr<LogListener> listener);
void removeListener(std::shared_ptr<LogListener> listener);
#ifdef BUFFERED_LOGGING
void consumeLog();
#endif
private:
#ifdef BUFFERED_LOGGING
MTRingbuffer<char, MAX_LOG_BUFFER_LENGTH> mBuffer;
std::condition_variable mBufferReady;
std::mutex mStatusMut;
std::atomic<bool> mExiting;
std::thread mLogConsumer;
#endif
std::array<LogChannel, std::tuple_size<decltype(gTypeNameTable)>::value> mChannels;
//std::array<LogChannel,gTypeNameTable.size()> mChannels; //TODO: use this once Microsoft sorts their shit out
};
}
static struct { inline operator Log::LogType() { return Log::LogType::GENERAL; } } GENERAL;
static struct { inline operator Log::LogType() { return Log::LogType::LOADER; } } LOADER;
static struct { inline operator Log::LogType() { return Log::LogType::MEMORY; } } MEMORY;
static struct { inline operator Log::LogType() { return Log::LogType::RSX; } } RSX;
static struct { inline operator Log::LogType() { return Log::LogType::HLE; } } HLE;
static struct { inline operator Log::LogType() { return Log::LogType::PPU; } } PPU;
static struct { inline operator Log::LogType() { return Log::LogType::SPU; } } SPU;
static struct { inline operator Log::LogType() { return Log::LogType::ARMv7; } } ARMv7;
static struct { inline operator Log::LogType() { return Log::LogType::TTY; } } TTY;
void log_message(Log::LogType type, Log::Severity sev, const char* text);
void log_message(Log::LogType type, Log::Severity sev, std::string text);
template<typename... Args> never_inline void log_message(Log::LogType type, Log::Severity sev, const char* fmt, Args... args)
{
log_message(type, sev, fmt::format(fmt, fmt::do_unveil(args)...));
}
+2 -2
View File
@@ -61,7 +61,7 @@ public:
Show();
}
__forceinline void Update(const u8 thread_id, const u64 value, const wxString& msg)
force_inline void Update(const u8 thread_id, const u64 value, const wxString& msg)
{
if(thread_id > m_cores) return;
@@ -95,4 +95,4 @@ public:
wxDialog::Close(force);
}
};
};
+155
View File
@@ -0,0 +1,155 @@
#pragma once
//Simple non-resizable FIFO Ringbuffer that can be simultaneously be read from and written to
//if we ever get to use boost please replace this with boost::circular_buffer, there's no reason
//why we would have to keep this amateur attempt at such a fundamental data-structure around
template< typename T, unsigned int MAX_MTRINGBUFFER_BUFFER_SIZE>
class MTRingbuffer{
std::array<T, MAX_MTRINGBUFFER_BUFFER_SIZE> mBuffer;
//this is a recursive mutex because the get methods lock it but the only
//way to be sure that they do not block is to check the size and the only
//way to check the size and use get atomically is to lock this mutex,
//so it goes:
//lock get mutex-->check size-->call get-->lock get mutex-->unlock get mutex-->return from get-->unlock get mutex
std::recursive_mutex mMutGet;
std::mutex mMutPut;
size_t mGet;
size_t mPut;
size_t moveGet(size_t by = 1){ return (mGet + by) % MAX_MTRINGBUFFER_BUFFER_SIZE; }
size_t movePut(size_t by = 1){ return (mPut + by) % MAX_MTRINGBUFFER_BUFFER_SIZE; }
public:
MTRingbuffer() : mGet(0), mPut(0){}
//blocks until there's something to get, so check "spaceLeft()" if you want to avoid blocking
//also lock the get mutex around the spaceLeft() check and the pop if you want to avoid racing
T pop()
{
std::lock_guard<std::recursive_mutex> lock(mMutGet);
while (mGet == mPut)
{
//wait until there's actually something to get
//throwing an exception might be better, blocking here is a little awkward
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // hack
}
size_t ret = mGet;
mGet = moveGet();
return mBuffer[ret];
}
//blocks if the buffer is full until there's enough room
void push(T &putEle)
{
std::lock_guard<std::mutex> lock(mMutPut);
while (movePut() == mGet)
{
//if this is reached a lot it's time to increase the buffer size
//or implement dynamic re-sizing
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // hack
}
mBuffer[mPut] = std::forward(putEle);
mPut = movePut();
}
bool empty()
{
return mGet == mPut;
}
//returns the amount of free places, this is the amount of actual free spaces-1
//since mGet==mPut signals an empty buffer we can't actually use the last free
//space, so we shouldn't report it as free.
size_t spaceLeft() //apparently free() is a macro definition in msvc in some conditions
{
if (mGet < mPut)
{
return mBuffer.size() - (mPut - mGet) - 1;
}
else if (mGet > mPut)
{
return mGet - mPut - 1;
}
else
{
return mBuffer.size() - 1;
}
}
size_t size()
{
//the magic -1 is the same magic 1 that is explained in the spaceLeft() function
return mBuffer.size() - spaceLeft() - 1;
}
//takes random access iterator to T
template<typename IteratorType>
void pushRange(IteratorType from, IteratorType until)
{
std::lock_guard<std::mutex> lock(mMutPut);
size_t length = until - from;
//if whatever we're trying to store is greater than the entire buffer the following loop will be infinite
assert(mBuffer.size() > length);
while (spaceLeft() < length)
{
//if this is reached a lot it's time to increase the buffer size
//or implement dynamic re-sizing
std::this_thread::sleep_for(std::chrono::milliseconds(1)); // hack
}
if (mPut + length <= mBuffer.size())
{
std::copy(from, until, mBuffer.begin() + mPut);
}
else
{
size_t tillEnd = mBuffer.size() - mPut;
std::copy(from, from + tillEnd, mBuffer.begin() + mPut);
std::copy(from + tillEnd, until, mBuffer.begin());
}
mPut = movePut(length);
}
//takes output iterator to T
template<typename IteratorType>
void popN(IteratorType output, size_t n)
{
std::lock_guard<std::recursive_mutex> lock(mMutGet);
//make sure we're not trying to retrieve more than is in
assert(n <= size());
peekN<IteratorType>(output, n);
mGet = moveGet(n);
}
//takes output iterator to T
template<typename IteratorType>
void peekN(IteratorType output, size_t n)
{
size_t lGet = mGet;
if (lGet + n <= mBuffer.size())
{
std::copy_n(mBuffer.begin() + lGet, n, output);
}
else
{
auto next = std::copy(mBuffer.begin() + lGet, mBuffer.end(), output);
std::copy_n(mBuffer.begin(), n - (mBuffer.size() - lGet), next);
}
}
//well this is just asking for trouble
//but the comment above the declaration of mMutGet explains why it's there
//if there's a better way please remove this
void lockGet()
{
mMutGet.lock();
}
//well this is just asking for trouble
//but the comment above the declaration of mMutGet explains why it's there
//if there's a better way please remove this
void unlockGet()
{
mMutGet.unlock();
}
};
+120
View File
@@ -0,0 +1,120 @@
#include "stdafx.h"
#include "Utilities/Semaphore.h"
bool semaphore_t::try_wait()
{
// check m_value without interlocked op
if (m_var.load().value == 0)
{
return false;
}
// try to decrement m_value atomically
const auto old = m_var.atomic_op([](sync_var_t& var)
{
if (var.value)
{
var.value--;
}
});
// recheck atomic result
if (old.value == 0)
{
return false;
}
return true;
}
bool semaphore_t::try_post()
{
// check m_value without interlocked op
if (m_var.load().value >= max_value)
{
return false;
}
// try to increment m_value atomically
const auto old = m_var.atomic_op([&](sync_var_t& var)
{
if (var.value < max_value)
{
var.value++;
}
});
// recheck atomic result
if (old.value >= max_value)
{
return false;
}
if (old.waiters)
{
// notify waiting thread
std::lock_guard<std::mutex> lock(m_mutex);
m_cv.notify_one();
}
return true;
}
void semaphore_t::wait()
{
if (m_var.atomic_op([](sync_var_t& var) -> bool
{
if (var.value)
{
var.value--;
return true;
}
else
{
//var.waiters++;
return false;
}
}))
{
return;
}
std::unique_lock<std::mutex> lock(m_mutex);
m_var.atomic_op([](sync_var_t& var)
{
var.waiters++;
});
while (!m_var.atomic_op([](sync_var_t& var) -> bool
{
if (var.value)
{
var.value--;
var.waiters--;
return true;
}
else
{
return false;
}
}))
{
m_cv.wait(lock);
}
}
bool semaphore_t::post_and_wait()
{
// TODO: merge these functions? Probably has a race condition.
if (try_wait()) return false;
try_post();
wait();
return true;
}
+37
View File
@@ -0,0 +1,37 @@
#pragma once
class semaphore_t
{
// semaphore mutex
std::mutex m_mutex;
// semaphore condition variable
std::condition_variable m_cv;
struct sync_var_t
{
u32 value; // current semaphore value
u32 waiters; // current amount of waiters
};
// current semaphore value
atomic_t<sync_var_t> m_var;
public:
// max semaphore value
const u32 max_value;
semaphore_t(u32 max_value = 1, u32 value = 0)
: m_var(sync_var_t{ value, 0 })
, max_value(max_value)
{
}
bool try_wait();
bool try_post();
void wait();
bool post_and_wait();
};
+152
View File
@@ -0,0 +1,152 @@
#include "stdafx.h"
#include "SharedMutex.h"
static const u32 MAX_READERS = 0x7fffffff; // 2^31-1
inline bool shared_mutex_t::try_lock_shared()
{
return m_info.atomic_op([](ownership_info_t& info) -> bool
{
if (info.readers < MAX_READERS && !info.writers && !info.waiting_readers && !info.waiting_writers)
{
info.readers++;
return true;
}
return false;
});
}
void shared_mutex_t::lock_shared()
{
if (!try_lock_shared())
{
std::unique_lock<std::mutex> lock(m_mutex);
m_wrcv.wait(lock, WRAP_EXPR(m_info.atomic_op([](ownership_info_t& info) -> bool
{
if (info.waiting_readers < UINT16_MAX)
{
info.waiting_readers++;
return true;
}
return false;
})));
m_rcv.wait(lock, WRAP_EXPR(m_info.atomic_op([](ownership_info_t& info) -> bool
{
if (!info.writers && !info.waiting_writers && info.readers < MAX_READERS)
{
info.readers++;
return true;
}
return false;
})));
const auto info = m_info.atomic_op([](ownership_info_t& info)
{
if (!info.waiting_readers--)
{
throw EXCEPTION("Invalid value");
}
});
if (info.waiting_readers == UINT16_MAX)
{
m_wrcv.notify_one();
}
}
}
void shared_mutex_t::unlock_shared()
{
const auto info = m_info.atomic_op([](ownership_info_t& info)
{
if (!info.readers--)
{
throw EXCEPTION("Not locked");
}
});
const bool notify_writers = info.readers == 1 && info.writers;
const bool notify_readers = info.readers == UINT32_MAX && info.waiting_readers;
if (notify_writers || notify_readers)
{
std::lock_guard<std::mutex> lock(m_mutex);
if (notify_writers) m_wcv.notify_one();
if (notify_readers) m_rcv.notify_one();
}
}
inline bool shared_mutex_t::try_lock()
{
return m_info.compare_and_swap_test({ 0, 0, 0, 0 }, { 0, 1, 0, 0 });
}
void shared_mutex_t::lock()
{
if (!try_lock())
{
std::unique_lock<std::mutex> lock(m_mutex);
m_wwcv.wait(lock, WRAP_EXPR(m_info.atomic_op([](ownership_info_t& info) -> bool
{
if (info.waiting_writers < UINT16_MAX)
{
info.waiting_writers++;
return true;
}
return false;
})));
m_wcv.wait(lock, WRAP_EXPR(m_info.atomic_op([](ownership_info_t& info) -> bool
{
if (!info.writers)
{
info.writers++;
return true;
}
return false;
})));
m_wcv.wait(lock, WRAP_EXPR(m_info.load().readers == 0));
const auto info = m_info.atomic_op([](ownership_info_t& info)
{
if (!info.waiting_writers--)
{
throw EXCEPTION("Invalid value");
}
});
if (info.waiting_writers == UINT16_MAX)
{
m_wwcv.notify_one();
}
}
}
void shared_mutex_t::unlock()
{
const auto info = m_info.atomic_op([](ownership_info_t& info)
{
if (!info.writers--)
{
throw EXCEPTION("Not locked");
}
});
if (info.waiting_writers || info.waiting_readers)
{
std::lock_guard<std::mutex> lock(m_mutex);
if (info.waiting_writers) m_wcv.notify_one();
else if (info.waiting_readers) m_rcv.notify_all();
}
}
+46
View File
@@ -0,0 +1,46 @@
#pragma once
#include <shared_mutex>
// An attempt to create lock-free (in optimistic case) implementation similar to std::shared_mutex;
// MSVC implementation of std::shared_timed_mutex is not lock-free and thus may be slow, and std::shared_mutex is not available.
class shared_mutex_t
{
struct ownership_info_t
{
u32 readers : 31;
u32 writers : 1;
u16 waiting_readers;
u16 waiting_writers;
};
atomic_t<ownership_info_t> m_info{};
std::mutex m_mutex;
std::condition_variable m_rcv;
std::condition_variable m_wcv;
std::condition_variable m_wrcv;
std::condition_variable m_wwcv;
public:
shared_mutex_t() = default;
// Lock in shared mode
void lock_shared();
// Try to lock in shared mode
bool try_lock_shared();
// Unlock in shared mode
void unlock_shared();
// Lock exclusively
void lock();
// Try to lock exclusively
bool try_lock();
// Unlock exclusively
void unlock();
};
+55
View File
@@ -0,0 +1,55 @@
#include "stdafx.h"
#include "Emu/CPU/CPUThread.h"
#include "SleepQueue.h"
void sleep_queue_entry_t::add_entry()
{
m_queue.emplace_back(m_thread.shared_from_this());
}
void sleep_queue_entry_t::remove_entry()
{
for (auto it = m_queue.begin(); it != m_queue.end(); it++)
{
if (it->get() == &m_thread)
{
m_queue.erase(it);
return;
}
}
}
bool sleep_queue_entry_t::find() const
{
for (auto it = m_queue.begin(); it != m_queue.end(); it++)
{
if (it->get() == &m_thread)
{
return true;
}
}
return false;
}
sleep_queue_entry_t::sleep_queue_entry_t(CPUThread& cpu, sleep_queue_t& queue)
: m_thread(cpu)
, m_queue(queue)
{
add_entry();
cpu.sleep();
}
sleep_queue_entry_t::sleep_queue_entry_t(CPUThread& cpu, sleep_queue_t& queue, const defer_sleep_t&)
: m_thread(cpu)
, m_queue(queue)
{
cpu.sleep();
}
sleep_queue_entry_t::~sleep_queue_entry_t()
{
remove_entry();
m_thread.awake();
}
+46
View File
@@ -0,0 +1,46 @@
#pragma once
class CPUThread;
using sleep_queue_t = std::deque<std::shared_ptr<CPUThread>>;
static struct defer_sleep_t {} const defer_sleep{};
// automatic object handling a thread entry in the sleep queue
class sleep_queue_entry_t final
{
CPUThread& m_thread;
sleep_queue_t& m_queue;
void add_entry();
void remove_entry();
bool find() const;
public:
// add specified thread to the sleep queue
sleep_queue_entry_t(CPUThread& cpu, sleep_queue_t& queue);
// don't add specified thread to the sleep queue
sleep_queue_entry_t(CPUThread& cpu, sleep_queue_t& queue, const defer_sleep_t&);
// removes specified thread from the sleep queue if added
~sleep_queue_entry_t();
// add thread to the sleep queue
inline void enter()
{
add_entry();
}
// remove thread from the sleep queue
inline void leave()
{
remove_entry();
}
// check whether the thread exists in the sleep queue
inline explicit operator bool() const
{
return find();
}
};
+247
View File
@@ -0,0 +1,247 @@
#include "stdafx.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/string.h>")
#pragma warning(disable : 4996)
#include <wx/string.h>
#pragma warning(pop)
std::string v128::to_hex() const
{
return fmt::format("%016llx%016llx", _u64[1], _u64[0]);
}
std::string v128::to_xyzw() const
{
return fmt::format("x: %g y: %g z: %g w: %g", _f[3], _f[2], _f[1], _f[0]);
}
std::string fmt::to_hex(u64 value, size_t count)
{
assert(count - 1 < 16);
count = std::max<u64>(count, 16 - cntlz64(value) / 4);
char res[16] = {};
for (size_t i = count - 1; ~i; i--, value /= 16)
{
res[i] = "0123456789abcdef"[value % 16];
}
return std::string(res, count);
}
std::string fmt::to_udec(u64 value)
{
char res[20] = {};
size_t first = sizeof(res);
if (!value)
{
res[--first] = '0';
}
for (; value; value /= 10)
{
res[--first] = '0' + (value % 10);
}
return std::string(&res[first], sizeof(res) - first);
}
std::string fmt::to_sdec(s64 svalue)
{
const bool sign = svalue < 0;
u64 value = sign ? -svalue : svalue;
char res[20] = {};
size_t first = sizeof(res);
if (!value)
{
res[--first] = '0';
}
for (; value; value /= 10)
{
res[--first] = '0' + (value % 10);
}
if (sign)
{
res[--first] = '-';
}
return std::string(&res[first], sizeof(res) - first);
}
//extern const std::string fmt::placeholder = "???";
std::string fmt::replace_first(const std::string& src, const std::string& from, const std::string& to)
{
auto pos = src.find(from);
if (pos == std::string::npos)
{
return src;
}
return (pos ? src.substr(0, pos) + to : to) + std::string(src.c_str() + pos + from.length());
}
std::string fmt::replace_all(const std::string &src, const std::string& from, const std::string& to)
{
std::string target = src;
for (auto pos = target.find(from); pos != std::string::npos; pos = target.find(from, pos + 1))
{
target = (pos ? target.substr(0, pos) + to : to) + std::string(target.c_str() + pos + from.length());
pos += to.length();
}
return target;
}
//TODO: move this wx Stuff somewhere else
//convert a wxString to a std::string encoded in utf8
//CAUTION, only use this to interface with wxWidgets classes
std::string fmt::ToUTF8(const wxString& right)
{
auto ret = std::string(((const char *)right.utf8_str()));
return ret;
}
//convert a std::string encoded in utf8 to a wxString
//CAUTION, only use this to interface with wxWidgets classes
wxString fmt::FromUTF8(const std::string& right)
{
auto ret = wxString::FromUTF8(right.c_str());
return ret;
}
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with CmpNoCase from wxString
int fmt::CmpNoCase(const std::string& a, const std::string& b)
{
if (a.length() != b.length())
{
return -1;
}
else
{
return std::equal(a.begin(),
a.end(),
b.begin(),
[](const char& a, const char& b){return ::tolower(a) == ::tolower(b); })
? 0 : -1;
}
}
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with CmpNoCase from wxString
void fmt::Replace(std::string &str, const std::string &searchterm, const std::string& replaceterm)
{
size_t cursor = 0;
do
{
cursor = str.find(searchterm, cursor);
if (cursor != std::string::npos)
{
str.replace(cursor, searchterm.size(), replaceterm);
cursor += replaceterm.size();
}
else
{
break;
}
} while (true);
}
std::vector<std::string> fmt::rSplit(const std::string& source, const std::string& delim)
{
std::vector<std::string> ret;
size_t cursor = 0;
do
{
size_t prevcurs = cursor;
cursor = source.find(delim, cursor);
if (cursor != std::string::npos)
{
ret.push_back(source.substr(prevcurs,cursor-prevcurs));
cursor += delim.size();
}
else
{
ret.push_back(source.substr(prevcurs));
break;
}
} while (true);
return ret;
}
std::vector<std::string> fmt::split(const std::string& source, std::initializer_list<std::string> separators, bool is_skip_empty)
{
std::vector<std::string> result;
size_t cursor_begin = 0;
for (size_t cursor_end = 0; cursor_end < source.length(); ++cursor_end)
{
for (auto &separator : separators)
{
if (strncmp(source.c_str() + cursor_end, separator.c_str(), separator.length()) == 0)
{
std::string candidate = source.substr(cursor_begin, cursor_end - cursor_begin);
if (!is_skip_empty || !candidate.empty())
result.push_back(candidate);
cursor_begin = cursor_end + separator.length();
cursor_end = cursor_begin - 1;
break;
}
}
}
if (cursor_begin != source.length())
{
result.push_back(source.substr(cursor_begin));
}
return std::move(result);
}
std::string fmt::tolower(std::string source)
{
std::transform(source.begin(), source.end(), source.begin(), ::tolower);
return source;
}
std::string fmt::toupper(std::string source)
{
std::transform(source.begin(), source.end(), source.begin(), ::toupper);
return source;
}
std::string fmt::escape(std::string source)
{
const std::pair<std::string, std::string> escape_list[] =
{
{ "\\", "\\\\" },
{ "\a", "\\a" },
{ "\b", "\\b" },
{ "\f", "\\f" },
{ "\n", "\\n\n" },
{ "\r", "\\r" },
{ "\t", "\\t" },
{ "\v", "\\v" },
};
source = fmt::replace_all(source, escape_list);
for (char c = 0; c < 32; c++)
{
if (c != '\n') source = fmt::replace_all(source, std::string(1, c), fmt::format("\\x%02X", c));
}
return source;
}
+354
View File
@@ -0,0 +1,354 @@
#pragma once
class wxString;
#if defined(_MSC_VER) && _MSC_VER <= 1800
#define snprintf _snprintf
#endif
namespace fmt
{
//struct empty_t{};
//extern const std::string placeholder;
template <typename T>
std::string AfterLast(const std::string& source, T searchstr)
{
size_t search_pos = source.rfind(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(search_pos);
}
template <typename T>
std::string BeforeLast(const std::string& source, T searchstr)
{
size_t search_pos = source.rfind(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(0, search_pos);
}
template <typename T>
std::string AfterFirst(const std::string& source, T searchstr)
{
size_t search_pos = source.find(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(search_pos);
}
template <typename T>
std::string BeforeFirst(const std::string& source, T searchstr)
{
size_t search_pos = source.find(searchstr);
search_pos = search_pos == std::string::npos ? 0 : search_pos;
return source.substr(0, search_pos);
}
// write `fmt` from `pos` to the first occurence of `fmt::placeholder` to
// the stream `os`. Then write `arg` to to the stream. If there's no
// `fmt::placeholder` after `pos` everything in `fmt` after pos is written
// to `os`. Then `arg` is written to `os` after appending a space character
//template<typename T>
//empty_t write(const std::string &fmt, std::ostream &os, std::string::size_type &pos, T &&arg)
//{
// std::string::size_type ins = fmt.find(placeholder, pos);
// if (ins == std::string::npos)
// {
// os.write(fmt.data() + pos, fmt.size() - pos);
// os << ' ' << arg;
// pos = fmt.size();
// }
// else
// {
// os.write(fmt.data() + pos, ins - pos);
// os << arg;
// pos = ins + placeholder.size();
// }
// return{};
//}
// typesafe version of a sprintf-like function. Returns the printed to
// string. To mark positions where the arguments are supposed to be
// inserted use `fmt::placeholder`. If there's not enough placeholders
// the rest of the arguments are appended at the end, seperated by spaces
//template<typename ... Args>
//std::string SFormat(const std::string &fmt, Args&& ... parameters)
//{
// std::ostringstream os;
// std::string::size_type pos = 0;
// std::initializer_list<empty_t> { write(fmt, os, pos, parameters)... };
// if (!fmt.empty())
// {
// os.write(fmt.data() + pos, fmt.size() - pos);
// }
// std::string result = os.str();
// return result;
//}
std::string replace_first(const std::string& src, const std::string& from, const std::string& to);
std::string replace_all(const std::string &src, const std::string& from, const std::string& to);
template<size_t list_size>
std::string replace_all(std::string src, const std::pair<std::string, std::string>(&list)[list_size])
{
for (size_t pos = 0; pos < src.length(); ++pos)
{
for (size_t i = 0; i < list_size; ++i)
{
const size_t comp_length = list[i].first.length();
if (src.length() - pos < comp_length)
continue;
if (src.substr(pos, comp_length) == list[i].first)
{
src = (pos ? src.substr(0, pos) + list[i].second : list[i].second) + src.substr(pos + comp_length);
pos += list[i].second.length() - 1;
break;
}
}
}
return src;
}
template<size_t list_size>
std::string replace_all(std::string src, const std::pair<std::string, std::function<std::string()>>(&list)[list_size])
{
for (size_t pos = 0; pos < src.length(); ++pos)
{
for (size_t i = 0; i < list_size; ++i)
{
const size_t comp_length = list[i].first.length();
if (src.length() - pos < comp_length)
continue;
if (src.substr(pos, comp_length) == list[i].first)
{
src = (pos ? src.substr(0, pos) + list[i].second() : list[i].second()) + src.substr(pos + comp_length);
pos += list[i].second().length() - 1;
break;
}
}
}
return src;
}
std::string to_hex(u64 value, size_t count = 1);
std::string to_udec(u64 value);
std::string to_sdec(s64 value);
template<typename T, bool is_enum = std::is_enum<T>::value> struct unveil
{
using result_type = T;
force_inline static result_type get_value(const T& arg)
{
return arg;
}
};
template<> struct unveil<char*, false>
{
using result_type = const char*;
force_inline static result_type get_value(const char* arg)
{
return arg;
}
};
template<std::size_t N> struct unveil<const char[N], false>
{
using result_type = const char*;
force_inline static result_type get_value(const char(&arg)[N])
{
return arg;
}
};
template<> struct unveil<std::string, false>
{
using result_type = const char*;
force_inline static result_type get_value(const std::string& arg)
{
return arg.c_str();
}
};
template<typename T> struct unveil<T, true>
{
using result_type = std::underlying_type_t<T>;
force_inline static result_type get_value(const T& arg)
{
return static_cast<result_type>(arg);
}
};
template<typename T, bool Se> struct unveil<se_t<T, Se>, false>
{
using result_type = typename unveil<T>::result_type;
force_inline static result_type get_value(const se_t<T, Se>& arg)
{
return unveil<T>::get_value(arg);
}
};
template<typename T>
force_inline typename unveil<T>::result_type do_unveil(const T& arg)
{
return unveil<T>::get_value(arg);
}
// Formatting function with special functionality:
//
// std::string is forced to .c_str()
// be_t<> is forced to .value() (fmt::do_unveil reverts byte order automatically)
//
// External specializations for fmt::do_unveil (can be found in another headers):
// vm::ptr, vm::bptr, ... (fmt::do_unveil) (vm_ptr.h) (with appropriate address type, using .addr() can be avoided)
// vm::ref, vm::bref, ... (fmt::do_unveil) (vm_ref.h)
//
template<typename... Args> safe_buffers std::string format(const char* fmt, Args... args)
{
// fixed stack buffer for the first attempt
std::array<char, 4096> fixed_buf;
// possibly dynamically allocated buffer for the second attempt
std::unique_ptr<char[]> buf;
// pointer to the current buffer
char* buf_addr = fixed_buf.data();
for (std::size_t buf_size = fixed_buf.size();;)
{
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-security"
const std::size_t len = std::snprintf(buf_addr, buf_size, fmt, do_unveil(args)...);
#pragma GCC diagnostic pop
if (len > INT_MAX)
{
throw std::runtime_error("std::snprintf() failed");
}
if (len < buf_size)
{
return{ buf_addr, len };
}
buf.reset(buf_addr = new char[buf_size = len + 1]);
}
}
struct exception : public std::exception
{
std::unique_ptr<char[]> message;
template<typename... Args> never_inline safe_buffers exception(const char* file, int line, const char* func, const char* text, Args... args) noexcept
{
const std::string data = format(text, args...) + format("\n(in file %s:%d, in function %s)", file, line, func);
message.reset(new char[data.size() + 1]);
std::memcpy(message.get(), data.c_str(), data.size() + 1);
}
exception(const exception& other) noexcept
{
const std::size_t size = std::strlen(other.message.get());
message.reset(new char[size + 1]);
std::memcpy(message.get(), other.message.get(), size + 1);
}
virtual const char* what() const noexcept override
{
return message.get();
}
};
//convert a wxString to a std::string encoded in utf8
//CAUTION, only use this to interface with wxWidgets classes
std::string ToUTF8(const wxString& right);
//convert a std::string encoded in utf8 to a wxString
//CAUTION, only use this to interface with wxWidgets classes
wxString FromUTF8(const std::string& right);
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with CmpNoCase from wxString
int CmpNoCase(const std::string& a, const std::string& b);
//TODO: remove this after every snippet that uses it is gone
//WARNING: not fully compatible with Replace from wxString
void Replace(std::string &str, const std::string &searchterm, const std::string& replaceterm);
std::vector<std::string> rSplit(const std::string& source, const std::string& delim);
std::vector<std::string> split(const std::string& source, std::initializer_list<std::string> separators, bool is_skip_empty = true);
template<typename T>
std::string merge(const T& source, const std::string& separator)
{
if (!source.size())
{
return{};
}
std::string result;
auto it = source.begin();
auto end = source.end();
for (--end; it != end; ++it)
{
result += *it + separator;
}
return result + source.back();
}
template<typename T>
std::string merge(std::initializer_list<T> sources, const std::string& separator)
{
if (!sources.size())
{
return{};
}
std::string result;
bool first = true;
for (auto &v : sources)
{
if (first)
{
result = fmt::merge(v, separator);
first = false;
}
else
{
result += separator + fmt::merge(v, separator);
}
}
return result;
}
std::string tolower(std::string source);
std::string toupper(std::string source);
std::string escape(std::string source);
}
+1330 -54
View File
File diff suppressed because it is too large Load Diff
+416 -192
View File
@@ -1,221 +1,445 @@
#pragma once
#include "Array.h"
#include <functional>
#include <thread>
#include <mutex>
#include <condition_variable>
class ThreadExec;
const class thread_ctrl_t* get_current_thread_ctrl();
class ThreadBase
// named thread control class
class thread_ctrl_t final
{
protected:
wxString m_name;
bool m_detached;
friend class named_thread_t;
template<typename T> friend void current_thread_register_atexit(T);
// thread handler
std::thread m_thread;
// name getter
const std::function<std::string()> m_name;
// functions executed at thread exit (temporarily)
std::vector<std::function<void()>> m_atexit;
public:
wxMutex m_main_mutex;
thread_ctrl_t(std::function<std::string()> name)
: m_name(std::move(name))
{
}
protected:
ThreadBase(bool detached = true, const wxString& name = "Unknown ThreadBase");
public:
ThreadExec* m_executor;
virtual void Task()=0;
virtual void Start();
virtual void Resume();
virtual void Pause();
virtual void Stop(bool wait = true);
virtual bool Wait() const;
virtual bool IsRunning() const;
virtual bool IsPaused() const;
virtual bool IsAlive() const;
virtual bool TestDestroy() const;
virtual wxString GetThreadName() const;
virtual void SetThreadName(const wxString& name);
// get thread name
std::string get_name() const;
};
ThreadBase* GetCurrentNamedThread();
class ThreadExec : public wxThread
// register function at thread exit (temporarily)
template<typename T> void current_thread_register_atexit(T func)
{
wxCriticalSection m_wait_for_exit;
volatile bool m_alive;
extern thread_local thread_ctrl_t* g_tls_this_thread;
public:
ThreadBase* m_parent;
ThreadExec(bool detached, ThreadBase* parent)
: wxThread(detached ? wxTHREAD_DETACHED : wxTHREAD_JOINABLE)
, m_parent(parent)
, m_alive(true)
{
Create();
Run();
}
void Stop(bool wait = true)
{
if(!m_alive) return;
m_parent = nullptr;
if(wait)
{
Delete();
//wxCriticalSectionLocker lock(m_wait_for_exit);
}
}
ExitCode Entry()
{
//wxCriticalSectionLocker lock(m_wait_for_exit);
m_parent->Task();
m_alive = false;
if(m_parent) m_parent->m_executor = nullptr;
return (ExitCode)0;
}
};
//ThreadBase* GetCurrentThread();
template<typename T> class MTPacketBuffer
{
protected:
volatile bool m_busy;
volatile u32 m_put, m_get;
Array<u8> m_buffer;
u32 m_max_buffer_size;
mutable wxCriticalSection m_cs_main;
void CheckBusy()
{
m_busy = m_put >= m_max_buffer_size;
}
public:
MTPacketBuffer(u32 max_buffer_size)
: m_max_buffer_size(max_buffer_size)
{
Flush();
}
~MTPacketBuffer()
{
Flush();
}
void Flush()
{
wxCriticalSectionLocker lock(m_cs_main);
m_put = m_get = 0;
m_buffer.Clear();
m_busy = false;
}
private:
virtual void _push(const T& v) = 0;
virtual T _pop() = 0;
public:
void Push(const T& v)
{
wxCriticalSectionLocker lock(m_cs_main);
_push(v);
}
T Pop()
{
wxCriticalSectionLocker lock(m_cs_main);
return _pop();
}
bool HasNewPacket() const { wxCriticalSectionLocker lock(m_cs_main); return m_put != m_get; }
bool IsBusy() const { return m_busy; }
};
static __forceinline bool SemaphorePostAndWait(wxSemaphore& sem)
{
if(sem.TryWait() != wxSEMA_BUSY) return false;
sem.Post();
sem.Wait();
return true;
g_tls_this_thread->m_atexit.emplace_back(func);
}
/*
class StepThread : public ThreadBase
class named_thread_t
{
wxSemaphore m_main_sem;
wxSemaphore m_destroy_sem;
volatile bool m_exit;
protected:
StepThread(const wxString& name = "Unknown StepThread")
: ThreadBase(true, name)
, m_exit(false)
{
}
virtual ~StepThread() throw()
{
}
private:
virtual void Task()
{
m_exit = false;
while(!TestDestroy())
{
m_main_sem.Wait();
if(TestDestroy() || m_exit) break;
Step();
}
while(!TestDestroy()) Sleep(0);
if(m_destroy_sem.TryWait() != wxSEMA_NO_ERROR) m_destroy_sem.Post();
}
virtual void Step()=0;
// pointer to managed resource (shared with actual thread)
std::shared_ptr<thread_ctrl_t> m_thread;
public:
void DoStep()
// thread mutex for external use
std::mutex mutex;
// thread condition variable for external use
std::condition_variable cv;
public:
// initialize in empty state
named_thread_t() = default;
// create named thread
named_thread_t(std::function<std::string()> name, std::function<void()> func);
// destructor, will terminate if thread is neither joined nor detached
virtual ~named_thread_t();
named_thread_t(const named_thread_t&) = delete;
named_thread_t& operator =(const named_thread_t&) = delete;
public:
// get thread name
std::string get_name() const;
// create named thread (current state must be empty)
void start(std::function<std::string()> name, std::function<void()> func);
// detach thread -> empty state
void detach();
// join thread -> empty state
void join();
// check if not empty
bool joinable() const { return m_thread.operator bool(); }
// check whether it is the current running thread
bool is_current() const;
// get internal thread pointer
const thread_ctrl_t* get_thread_ctrl() const { return m_thread.get(); }
};
class autojoin_thread_t final : private named_thread_t
{
public:
using named_thread_t::mutex;
using named_thread_t::cv;
public:
autojoin_thread_t() = delete;
autojoin_thread_t(std::function<std::string()> name, std::function<void()> func)
{
if(IsRunning()) m_main_sem.Post();
start(std::move(name), std::move(func));
}
void WaitForExit()
virtual ~autojoin_thread_t() override
{
if(TestDestroy()) m_destroy_sem.Wait();
join();
}
void WaitForNextStep()
using named_thread_t::is_current;
};
extern const std::function<bool()> SQUEUE_ALWAYS_EXIT;
extern const std::function<bool()> SQUEUE_NEVER_EXIT;
bool squeue_test_exit();
template<typename T, u32 sq_size = 256>
class squeue_t
{
struct squeue_sync_var_t
{
if(!IsRunning()) return;
while(m_main_sem.TryWait() != wxSEMA_NO_ERROR) Sleep(0);
}
void Exit(bool wait = false)
{
if(!IsAlive()) return;
if(m_main_sem.TryWait() != wxSEMA_NO_ERROR)
struct
{
m_exit = true;
m_main_sem.Post();
u32 position : 31;
u32 pop_lock : 1;
};
struct
{
u32 count : 31;
u32 push_lock : 1;
};
};
atomic_t<squeue_sync_var_t> m_sync;
mutable std::mutex m_rcv_mutex;
mutable std::mutex m_wcv_mutex;
mutable std::condition_variable m_rcv;
mutable std::condition_variable m_wcv;
T m_data[sq_size];
enum squeue_sync_var_result : u32
{
SQSVR_OK = 0,
SQSVR_LOCKED = 1,
SQSVR_FAILED = 2,
};
public:
squeue_t()
: m_sync(squeue_sync_var_t{})
{
}
u32 get_max_size() const
{
return sq_size;
}
bool is_full() const
{
return m_sync.load().count == sq_size;
}
bool push(const T& data, const std::function<bool()>& test_exit)
{
u32 pos = 0;
while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.push_lock)
{
return SQSVR_LOCKED;
}
if (sync.count == sq_size)
{
return SQSVR_FAILED;
}
sync.push_lock = 1;
pos = sync.position + sync.count;
return SQSVR_OK;
}))
{
if (res == SQSVR_FAILED && (test_exit() || squeue_test_exit()))
{
return false;
}
std::unique_lock<std::mutex> wcv_lock(m_wcv_mutex);
m_wcv.wait_for(wcv_lock, std::chrono::milliseconds(1));
}
Delete();
m_data[pos >= sq_size ? pos - sq_size : pos] = data;
if(wait) WaitForExit();
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.push_lock);
sync.push_lock = 0;
sync.count++;
});
m_rcv.notify_one();
m_wcv.notify_one();
return true;
}
bool push(const T& data, const volatile bool* do_exit)
{
return push(data, [do_exit](){ return do_exit && *do_exit; });
}
force_inline bool push(const T& data)
{
return push(data, SQUEUE_NEVER_EXIT);
}
force_inline bool try_push(const T& data)
{
return push(data, SQUEUE_ALWAYS_EXIT);
}
bool pop(T& data, const std::function<bool()>& test_exit)
{
u32 pos = 0;
while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (!sync.count)
{
return SQSVR_FAILED;
}
if (sync.pop_lock)
{
return SQSVR_LOCKED;
}
sync.pop_lock = 1;
pos = sync.position;
return SQSVR_OK;
}))
{
if (res == SQSVR_FAILED && (test_exit() || squeue_test_exit()))
{
return false;
}
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
data = m_data[pos];
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.pop_lock);
sync.pop_lock = 0;
sync.position++;
sync.count--;
if (sync.position == sq_size)
{
sync.position = 0;
}
});
m_rcv.notify_one();
m_wcv.notify_one();
return true;
}
bool pop(T& data, const volatile bool* do_exit)
{
return pop(data, [do_exit](){ return do_exit && *do_exit; });
}
force_inline bool pop(T& data)
{
return pop(data, SQUEUE_NEVER_EXIT);
}
force_inline bool try_pop(T& data)
{
return pop(data, SQUEUE_ALWAYS_EXIT);
}
bool peek(T& data, u32 start_pos, const std::function<bool()>& test_exit)
{
assert(start_pos < sq_size);
u32 pos = 0;
while (u32 res = m_sync.atomic_op([&pos, start_pos](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.count <= start_pos)
{
return SQSVR_FAILED;
}
if (sync.pop_lock)
{
return SQSVR_LOCKED;
}
sync.pop_lock = 1;
pos = sync.position + start_pos;
return SQSVR_OK;
}))
{
if (res == SQSVR_FAILED && (test_exit() || squeue_test_exit()))
{
return false;
}
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
data = m_data[pos >= sq_size ? pos - sq_size : pos];
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.pop_lock);
sync.pop_lock = 0;
});
m_rcv.notify_one();
return true;
}
bool peek(T& data, u32 start_pos, const volatile bool* do_exit)
{
return peek(data, start_pos, [do_exit](){ return do_exit && *do_exit; });
}
force_inline bool peek(T& data, u32 start_pos = 0)
{
return peek(data, start_pos, SQUEUE_NEVER_EXIT);
}
force_inline bool try_peek(T& data, u32 start_pos = 0)
{
return peek(data, start_pos, SQUEUE_ALWAYS_EXIT);
}
class squeue_data_t
{
T* const m_data;
const u32 m_pos;
const u32 m_count;
squeue_data_t(T* data, u32 pos, u32 count)
: m_data(data)
, m_pos(pos)
, m_count(count)
{
}
public:
T& operator [] (u32 index)
{
assert(index < m_count);
index += m_pos;
index = index < sq_size ? index : index - sq_size;
return m_data[index];
}
};
void process(void(*proc)(squeue_data_t data))
{
u32 pos, count;
while (m_sync.atomic_op([&pos, &count](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.pop_lock || sync.push_lock)
{
return SQSVR_LOCKED;
}
pos = sync.position;
count = sync.count;
sync.pop_lock = 1;
sync.push_lock = 1;
return SQSVR_OK;
}))
{
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
proc(squeue_data_t(m_data, pos, count));
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
assert(sync.pop_lock && sync.push_lock);
sync.pop_lock = 0;
sync.push_lock = 0;
});
m_wcv.notify_one();
m_rcv.notify_one();
}
void clear()
{
while (m_sync.atomic_op([](squeue_sync_var_t& sync) -> u32
{
assert(sync.count <= sq_size);
assert(sync.position < sq_size);
if (sync.pop_lock || sync.push_lock)
{
return SQSVR_LOCKED;
}
sync.pop_lock = 1;
sync.push_lock = 1;
return SQSVR_OK;
}))
{
std::unique_lock<std::mutex> rcv_lock(m_rcv_mutex);
m_rcv.wait_for(rcv_lock, std::chrono::milliseconds(1));
}
m_sync.exchange({});
m_wcv.notify_one();
m_rcv.notify_one();
}
};
*/
+32 -27
View File
@@ -1,47 +1,52 @@
#pragma once
#include <chrono>
class Timer
{
private:
bool stopped;
double startTimeInMicroSec;
double endTimeInMicroSec;
LARGE_INTEGER frequency;
LARGE_INTEGER startCycle;
LARGE_INTEGER endCycle;
bool m_stopped;
std::chrono::high_resolution_clock::time_point m_start;
std::chrono::high_resolution_clock::time_point m_end;
public:
Timer()
Timer() : m_stopped(false)
{
QueryPerformanceFrequency(&frequency);
startCycle.QuadPart = 0;
endCycle.QuadPart = 0;
stopped = false;
startTimeInMicroSec = 0;
endTimeInMicroSec = 0;
}
void Start()
{
stopped = false;
QueryPerformanceCounter(&startCycle);
m_stopped = false;
m_start = std::chrono::high_resolution_clock::now();
}
void Stop()
{
stopped = true;
QueryPerformanceCounter(&endCycle);
m_stopped = true;
m_end = std::chrono::high_resolution_clock::now();
}
double GetElapsedTimeInSec(){return GetElapsedTimeInMicroSec() / 1000000.0;}
double GetElapsedTimeInMilliSec(){return GetElapsedTimeInMicroSec() / 1000.0;}
double GetElapsedTimeInMicroSec()
double GetElapsedTimeInSec() const
{
if(!stopped) QueryPerformanceCounter(&endCycle);
startTimeInMicroSec = startCycle.QuadPart * (1000000.0 / frequency.QuadPart);
endTimeInMicroSec = endCycle.QuadPart * (1000000.0 / frequency.QuadPart);
return endTimeInMicroSec - startTimeInMicroSec;
return double(GetElapsedTimeInMicroSec()) / 1000000.0;
}
};
double GetElapsedTimeInMilliSec() const
{
return double(GetElapsedTimeInMicroSec()) / 1000.0;
}
u64 GetElapsedTimeInMicroSec() const
{
std::chrono::high_resolution_clock::time_point now = m_stopped ? m_end : std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::microseconds>(now - m_start).count();
}
u64 GetElapsedTimeInNanoSec() const
{
std::chrono::high_resolution_clock::time_point now = m_stopped ? m_end : std::chrono::high_resolution_clock::now();
return std::chrono::duration_cast<std::chrono::nanoseconds>(now - m_start).count();
}
};
+41
View File
@@ -0,0 +1,41 @@
#include "stdafx.h"
#include "VirtualMemory.h"
#ifdef _WIN32
#include <Windows.h>
#else
#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#endif
namespace memory_helper
{
void* reserve_memory(size_t size)
{
#ifdef _WIN32
return VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_NOACCESS);
#else
return mmap(nullptr, size, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0);
#endif
}
void commit_page_memory(void* pointer, size_t page_size)
{
#ifdef _WIN32
VirtualAlloc((u8*)pointer, page_size, MEM_COMMIT, PAGE_READWRITE);
#else
mprotect((u8*)pointer, page_size, PROT_READ | PROT_WRITE);
#endif
}
void free_reserved_memory(void* pointer, size_t size)
{
#ifdef _WIN32
VirtualFree(pointer, 0, MEM_RELEASE);
#else
munmap(pointer, size);
#endif
}
}
+22
View File
@@ -0,0 +1,22 @@
#pragma once
namespace memory_helper
{
/**
* Reserve size bytes of virtual memory and returns it.
* The memory should be commited before usage.
*/
void* reserve_memory(size_t size);
/**
* Commit page_size bytes of virtual memory starting at pointer.
* That is, bake reserved memory with physical memory.
* pointer should belong to a range of reserved memory.
*/
void commit_page_memory(void* pointer, size_t page_size);
/**
* Free memory alloced via reserve_memory.
*/
void free_reserved_memory(void* pointer, size_t size);
}
+73
View File
@@ -0,0 +1,73 @@
@echo off
rem // This program is free software: you can redistribute it and/or modify
rem // it under the terms of the GNU General Public License as published by
rem // the Free Software Foundation, version 2.0 or later versions.
rem // This program is distributed in the hope that it will be useful,
rem // but WITHOUT ANY WARRANTY; without even the implied warranty of
rem // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
rem // GNU General Public License 2.0 for more details.
rem // A copy of the GPL 2.0 should have been included with the program.
rem // If not, see http://www.gnu.org/licenses/
rem // Official git repository and contact information can be found at
rem // https://github.com/RPCS3/rpcs3 and http://rpcs3.net/.
setlocal ENABLEDELAYEDEXPANSION
set GIT_VERSION_FILE=%~p0..\rpcs3\git-version.h
if not defined GIT (
set GIT="git"
)
call %GIT% describe > NUL 2> NUL
if errorlevel 1 (
echo Git not on path, trying default Msysgit paths
set GIT="%ProgramFiles(x86)%\Git\bin\git.exe"
call !GIT! describe > NUL 2> NUL
if errorlevel 1 (
set GIT="%ProgramFiles%\Git\bin\git.exe"
)
)
if exist "%GIT_VERSION_FILE%" (
rem // Skip updating the file if RPCS3_GIT_VERSION_NO_UPDATE is 1.
findstr /B /C:"#define RPCS3_GIT_VERSION_NO_UPDATE 1" "%GIT_VERSION_FILE%" > NUL
if not errorlevel 1 (
goto done
)
)
call %GIT% describe --always > NUL 2> NUL
if errorlevel 1 (
echo Unable to update git-version.h, git not found.
echo If you don't want to add it to your path, set the GIT environment variable.
echo // This is a generated file. > "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION "unknown" >> "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo // If you don't want this file to update/recompile, change to 1. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION_NO_UPDATE 0 >> "%GIT_VERSION_FILE%"
goto done
)
for /F %%I IN ('call %GIT% describe --always') do set GIT_VERSION=%%I
rem // Don't modify the file if it already has the current version.
if exist "%GIT_VERSION_FILE%" (
findstr /C:"%GIT_VERSION%" "%GIT_VERSION_FILE%" > NUL
if not errorlevel 1 (
goto done
)
)
echo // This is a generated file. > "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION "%GIT_VERSION%" >> "%GIT_VERSION_FILE%"
echo. >> "%GIT_VERSION_FILE%"
echo // If you don't want this file to update/recompile, change to 1. >> "%GIT_VERSION_FILE%"
echo #define RPCS3_GIT_VERSION_NO_UPDATE 0 >> "%GIT_VERSION_FILE%"
:done
+38
View File
@@ -0,0 +1,38 @@
#include "stdafx.h"
#include "restore_new.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/msgdlg.h>")
#pragma warning(disable : 4996)
#include <wx/msgdlg.h>
#pragma warning(pop)
#include "define_new_memleakdetect.h"
#include "rMsgBox.h"
#ifndef QT_UI
rMessageDialog::rMessageDialog(void *parent, const std::string& msg, const std::string& title , long style )
{
handle = reinterpret_cast<void*>(new wxMessageDialog(
reinterpret_cast<wxWindow*>(parent)
, fmt::FromUTF8(msg)
, fmt::FromUTF8(title)
, style
));
}
rMessageDialog::~rMessageDialog()
{
delete reinterpret_cast<wxMessageDialog*>(handle);
}
long rMessageDialog::ShowModal()
{
return reinterpret_cast<wxMessageDialog*>(handle)->ShowModal();
}
long rMessageBox(const std::string& message, const std::string& title, long style)
{
return wxMessageBox(fmt::FromUTF8(message), fmt::FromUTF8(title),style);
}
#endif
+38
View File
@@ -0,0 +1,38 @@
#pragma once
enum MsgBoxParams : unsigned long
{
rYES_DEFAULT = 0x0,
rOK_DEFAULT = 0x0,
rCENTRE = 0x1,
rYES = 0x2, //res
rOK = 0x4,
rNO = 0x8, //res
rCANCEL = 0x10,
rYES_NO = 0xA,
rNO_DEFAULT = 0x80,
rICON_EXCLAMATION = 0x100,
rICON_ERROR = 0x200,
rICON_HAND = 0x200,
rICON_QUESTION = 0x400,
rICON_INFORMATION = 0x800,
rHELP = 0x1000,
rID_CANCEL = 0x13ED,
rID_YES = 0x13EF, //resDialog
rSTAY_ON_TOP = 0x8000,
rICON_NONE = 0x40000,
rICON_AUTH_NEEDED = 0x80000,
rCANCEL_DEFAULT = 0x80000000,
};
struct rMessageDialog
{
rMessageDialog(void *parent, const std::string& msg, const std::string& title = "RPCS3", long style = rOK | rCENTRE);
rMessageDialog(const rMessageDialog& other) = delete;
~rMessageDialog();
long ShowModal();
void *handle;
};
long rMessageBox(const std::string& message, const std::string& title,long style);
+61
View File
@@ -0,0 +1,61 @@
#include "stdafx.h"
#include "restore_new.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/image.h>")
#pragma warning(disable : 4996)
#include <wx/image.h>
#pragma warning(pop)
#include "define_new_memleakdetect.h"
#ifndef _WIN32
#include <dirent.h>
#endif
#include "rPlatform.h"
rImage::rImage()
{
handle = static_cast<void*>(new wxImage());
}
rImage::~rImage()
{
delete static_cast<wxImage*>(handle);
}
void rImage::Create(int width, int height, void *data, void *alpha)
{
static_cast<wxImage*>(handle)->Create(width, height, static_cast<unsigned char*>(data), static_cast<unsigned char*>(alpha));
}
void rImage::SaveFile(const std::string& name, rImageType type)
{
if (type == rBITMAP_TYPE_PNG)
{
static_cast<wxImage*>(handle)->SaveFile(fmt::FromUTF8(name),wxBITMAP_TYPE_PNG);
}
else
{
throw EXCEPTION("unsupported type");
}
}
std::string rPlatform::getConfigDir()
{
static std::string dir = ".";
if (dir == ".") {
#ifdef _WIN32
dir = "";
//mkdir(dir.c_str());
#else
if (getenv("XDG_CONFIG_HOME") != NULL)
dir = getenv("XDG_CONFIG_HOME");
else if (getenv("HOME") != NULL)
dir = getenv("HOME") + std::string("/.config");
else // Just in case
dir = "./config";
dir = dir + "/rpcs3/";
mkdir(dir.c_str(), 0777);
#endif
}
return dir;
}
+45
View File
@@ -0,0 +1,45 @@
#pragma once
struct rPlatform
{
static std::string getConfigDir();
};
/**********************************************************************
*********** RSX Debugger
************************************************************************/
struct RSXDebuggerProgram
{
u32 id;
u32 vp_id;
u32 fp_id;
std::string vp_shader;
std::string fp_shader;
bool modified;
RSXDebuggerProgram()
: modified(false)
{
}
};
extern std::vector<RSXDebuggerProgram> m_debug_programs;
/**********************************************************************
*********** Image stuff
************************************************************************/
enum rImageType
{
rBITMAP_TYPE_PNG
};
struct rImage
{
rImage();
rImage(const rImage &) = delete;
~rImage();
void Create(int width , int height, void *data, void *alpha);
void SaveFile(const std::string& name, rImageType type);
void *handle;
};
+235
View File
@@ -0,0 +1,235 @@
#include "stdafx.h"
#include "rTime.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/datetime.h>")
#pragma warning(disable : 4996)
#include <wx/datetime.h>
#pragma warning(pop)
std::string rDefaultDateTimeFormat = "%c";
rTimeSpan::rTimeSpan()
{
handle = static_cast<void *>(new wxTimeSpan());
}
rTimeSpan::~rTimeSpan()
{
delete static_cast<wxTimeSpan*>(handle);
}
rTimeSpan::rTimeSpan(const rTimeSpan& other)
{
handle = static_cast<void *>(new wxTimeSpan(*static_cast<wxTimeSpan*>(other.handle)));
}
rTimeSpan::rTimeSpan(int a, int b , int c, int d)
{
handle = static_cast<void *>(new wxTimeSpan(a,b,c,d));
}
rDateSpan::rDateSpan()
{
handle = static_cast<void *>(new wxDateSpan());
}
rDateSpan::~rDateSpan()
{
delete static_cast<wxDateSpan*>(handle);
}
rDateSpan::rDateSpan(const rDateSpan& other)
{
handle = static_cast<void *>(new wxDateSpan(*static_cast<wxDateSpan*>(other.handle)));
}
rDateSpan::rDateSpan(int a, int b, int c, int d)
{
handle = static_cast<void *>(new wxDateSpan(a,b,c,d));
}
rDateTime::rDateTime()
{
handle = static_cast<void *>(new wxDateTime());
}
rDateTime::~rDateTime()
{
delete static_cast<wxDateTime*>(handle);
}
rDateTime::rDateTime(const rDateTime& other)
{
handle = static_cast<void *>(new wxDateTime(*static_cast<wxDateTime*>(other.handle)));
}
rDateTime::rDateTime(const time_t& time)
{
handle = static_cast<void *>(new wxDateTime(time));
}
rDateTime::rDateTime(u16 day, rDateTime::Month month, u16 year, u16 hour, u16 minute, u16 second, u32 millisecond)
{
handle = static_cast<void *>(new wxDateTime(day,(wxDateTime::Month)month,year,hour,minute,second,millisecond));
}
rDateTime rDateTime::UNow()
{
rDateTime time;
delete static_cast<wxDateTime*>(time.handle);
time.handle = static_cast<void *>(new wxDateTime(wxDateTime::UNow()));
return time;
}
rDateTime rDateTime::FromUTC(bool val)
{
rDateTime time(*this);
void *temp = time.handle;
time.handle = static_cast<void *>(new wxDateTime(static_cast<wxDateTime*>(temp)->FromTimezone(wxDateTime::GMT0, val)));
delete static_cast<wxDateTime*>(temp);
return time;
}
rDateTime rDateTime::ToUTC(bool val)
{
rDateTime time(*this);
void *temp = time.handle;
time.handle = static_cast<void *>(new wxDateTime(static_cast<wxDateTime*>(temp)->ToTimezone(wxDateTime::GMT0, val)));
delete static_cast<wxDateTime*>(temp);
return time;
}
time_t rDateTime::GetTicks()
{
return static_cast<wxDateTime*>(handle)->GetTicks();
}
void rDateTime::Add(const rTimeSpan& span)
{
static_cast<wxDateTime*>(handle)->Add(*static_cast<wxTimeSpan*>(span.handle));
}
void rDateTime::Add(const rDateSpan& span)
{
static_cast<wxDateTime*>(handle)->Add(*static_cast<wxDateSpan*>(span.handle));
}
wxDateTime::TimeZone convertTZ(rDateTime::rTimeZone tz)
{
switch (tz)
{
case rDateTime::Local:
return wxDateTime::Local;
case rDateTime::GMT0:
return wxDateTime::GMT0;
case rDateTime::UTC:
return wxDateTime::UTC;
default:
throw EXCEPTION("WRONG DATETIME");
}
}
std::string rDateTime::Format(const std::string &format, const rTimeZone &tz) const
{
return fmt::ToUTF8(static_cast<wxDateTime*>(handle)->Format(fmt::FromUTF8(format),convertTZ(tz)));
}
void rDateTime::ParseDateTime(const char* format)
{
static_cast<wxDateTime*>(handle)->ParseDateTime(format);
}
u32 rDateTime::GetAsDOS()
{
return static_cast<wxDateTime*>(handle)->GetAsDOS();
}
rDateTime &rDateTime::SetFromDOS(u32 fromdos)
{
static_cast<wxDateTime*>(handle)->SetFromDOS(fromdos);
return *this;
}
bool rDateTime::IsLeapYear(int year, rDateTime::Calender cal)
{
if (cal == Gregorian)
{
return wxDateTime::IsLeapYear(year, wxDateTime::Gregorian);
}
else
{
return wxDateTime::IsLeapYear(year, wxDateTime::Julian);
}
}
int rDateTime::GetNumberOfDays(rDateTime::Month month, int year, rDateTime::Calender cal)
{
if (cal == Gregorian)
{
return wxDateTime::GetNumberOfDays(static_cast<wxDateTime::Month>(month), year, wxDateTime::Gregorian);
}
else
{
return wxDateTime::GetNumberOfDays(static_cast<wxDateTime::Month>(month), year, wxDateTime::Julian);
}
}
void rDateTime::SetToWeekDay(rDateTime::WeekDay day, int n, rDateTime::Month month, int year)
{
static_cast<wxDateTime*>(handle)->SetToWeekDay(
static_cast<wxDateTime::WeekDay>(day)
, n
, static_cast<wxDateTime::Month>(month)
, year
);
}
int rDateTime::GetWeekDay()
{
return static_cast<wxDateTime*>(handle)->GetWeekDay();
}
u16 rDateTime::GetYear(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetYear(convertTZ(timezone));
}
u16 rDateTime::GetMonth(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetMonth(convertTZ(timezone));
}
u16 rDateTime::GetDay(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetDay(convertTZ(timezone));
}
u16 rDateTime::GetHour(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetHour(convertTZ(timezone));
}
u16 rDateTime::GetMinute(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetMinute(convertTZ(timezone));
}
u16 rDateTime::GetSecond(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetSecond(convertTZ(timezone));
}
u32 rDateTime::GetMillisecond(rDateTime::TZ timezone)
{
return static_cast<wxDateTime*>(handle)->GetMillisecond(convertTZ(timezone));
}
+102
View File
@@ -0,0 +1,102 @@
#pragma once
extern std::string rDefaultDateTimeFormat;
struct rTimeSpan
{
rTimeSpan();
~rTimeSpan();
rTimeSpan(const rTimeSpan& other);
rTimeSpan(int, int, int, int);
void *handle;
};
struct rDateSpan
{
rDateSpan();
~rDateSpan();
rDateSpan(const rDateSpan& other);
rDateSpan(int, int, int, int);
void *handle;
};
struct rDateTime
{
enum TZ
{
Local, GMT0,UTC
};
enum Calender
{
Gregorian, Julian
};
using rTimeZone = TZ;
enum WeekDay
{
Sun = 0,
Mon,
Tue,
Wed,
Thu,
Fri,
Sat,
Inv_WeekDay
};
enum Month {
Jan = 0,
Feb = 1,
Mar = 2,
Apr = 3,
May = 4,
Jun = 5,
Jul = 6,
Aug = 7,
Sep = 8,
Oct = 9,
Nov = 10,
Dec = 11,
Inv_Month = 12
};
rDateTime();
~rDateTime();
rDateTime(const rDateTime& other);
rDateTime(const time_t &time);
rDateTime(u16 day, rDateTime::Month month, u16 year, u16 hour, u16 minute, u16 second, u32 millisecond);
static rDateTime UNow();
rDateTime FromUTC(bool val);
rDateTime ToUTC(bool val);
time_t GetTicks();
void Add(const rTimeSpan& span);
void Add(const rDateSpan& span);
void Close();
std::string Format(const std::string &format = rDefaultDateTimeFormat, const rTimeZone &tz = Local) const;
void ParseDateTime(const char* format);
u32 GetAsDOS();
rDateTime &SetFromDOS(u32 fromdos);
static bool IsLeapYear(int year, rDateTime::Calender cal);
static int GetNumberOfDays(rDateTime::Month month, int year, rDateTime::Calender cal);
void SetToWeekDay(rDateTime::WeekDay day, int n, rDateTime::Month month, int year);
int GetWeekDay();
u16 GetYear( rDateTime::TZ timezone);
u16 GetMonth(rDateTime::TZ timezone);
u16 GetDay(rDateTime::TZ timezone);
u16 GetHour(rDateTime::TZ timezone);
u16 GetMinute(rDateTime::TZ timezone);
u16 GetSecond(rDateTime::TZ timezone);
u32 GetMillisecond(rDateTime::TZ timezone);
void *handle;
};
+117
View File
@@ -0,0 +1,117 @@
#include "stdafx.h"
#include "Utilities/rXml.h"
#pragma warning(push)
#pragma message("TODO: remove wx dependency: <wx/xml/xml.h>")
#pragma warning(disable : 4996)
#include <wx/xml/xml.h>
#pragma warning(pop)
rXmlNode::rXmlNode()
{
ownPtr = true;
handle = reinterpret_cast<void *>(new wxXmlNode());
}
rXmlNode::rXmlNode(void *ptr)
{
ownPtr = false;
handle = ptr;
}
rXmlNode::rXmlNode(const rXmlNode& other)
{
ownPtr = true;
handle = reinterpret_cast<void *>(new wxXmlNode(*reinterpret_cast<wxXmlNode*>(other.handle)));
}
rXmlNode &rXmlNode::operator=(const rXmlNode& other)
{
if (ownPtr)
{
delete reinterpret_cast<wxXmlNode*>(handle);
}
handle = reinterpret_cast<void *>(new wxXmlNode(*reinterpret_cast<wxXmlNode*>(other.handle)));
ownPtr = true;
return *this;
}
rXmlNode::~rXmlNode()
{
if (ownPtr)
{
delete reinterpret_cast<wxXmlNode*>(handle);
}
}
std::shared_ptr<rXmlNode> rXmlNode::GetChildren()
{
wxXmlNode* result = reinterpret_cast<wxXmlNode*>(handle)->GetChildren();
if (result)
{
return std::make_shared<rXmlNode>(reinterpret_cast<void*>(result));
}
else
{
return std::shared_ptr<rXmlNode>(nullptr);
}
}
std::shared_ptr<rXmlNode> rXmlNode::GetNext()
{
wxXmlNode* result = reinterpret_cast<wxXmlNode*>(handle)->GetNext();
if (result)
{
return std::make_shared<rXmlNode>(reinterpret_cast<void*>(result));
}
else
{
return std::shared_ptr<rXmlNode>(nullptr);
}
}
std::string rXmlNode::GetName()
{
return fmt::ToUTF8(reinterpret_cast<wxXmlNode*>(handle)->GetName());
}
std::string rXmlNode::GetAttribute(const std::string &name)
{
return fmt::ToUTF8(reinterpret_cast<wxXmlNode*>(handle)->GetAttribute(fmt::FromUTF8(name)));
}
std::string rXmlNode::GetNodeContent()
{
return fmt::ToUTF8(reinterpret_cast<wxXmlNode*>(handle)->GetNodeContent());
}
rXmlDocument::rXmlDocument()
{
handle = reinterpret_cast<void *>(new wxXmlDocument());
}
rXmlDocument::rXmlDocument(const rXmlDocument& other)
{
handle = reinterpret_cast<void *>(new wxXmlDocument(*reinterpret_cast<wxXmlDocument*>(other.handle)));
}
rXmlDocument &rXmlDocument::operator = (const rXmlDocument& other)
{
delete reinterpret_cast<wxXmlDocument*>(handle);
handle = reinterpret_cast<void *>(new wxXmlDocument(*reinterpret_cast<wxXmlDocument*>(other.handle)));
return *this;
}
rXmlDocument::~rXmlDocument()
{
delete reinterpret_cast<wxXmlDocument*>(handle);
}
void rXmlDocument::Load(const std::string & path)
{
reinterpret_cast<wxXmlDocument*>(handle)->Load(fmt::FromUTF8(path));
}
std::shared_ptr<rXmlNode> rXmlDocument::GetRoot()
{
return std::make_shared<rXmlNode>(reinterpret_cast<void*>(reinterpret_cast<wxXmlDocument*>(handle)->GetRoot()));
}
+30
View File
@@ -0,0 +1,30 @@
#pragma once
struct rXmlNode
{
rXmlNode();
rXmlNode(void *);
rXmlNode(const rXmlNode& other);
rXmlNode &operator=(const rXmlNode& other);
~rXmlNode();
std::shared_ptr<rXmlNode> GetChildren();
std::shared_ptr<rXmlNode> GetNext();
std::string GetName();
std::string GetAttribute( const std::string &name);
std::string GetNodeContent();
void *handle;
bool ownPtr;
};
struct rXmlDocument
{
rXmlDocument();
rXmlDocument(const rXmlDocument& other);
rXmlDocument &operator=(const rXmlDocument& other);
~rXmlDocument();
void Load(const std::string & path);
std::shared_ptr<rXmlNode> GetRoot();
void *handle;
};
+539
View File
@@ -0,0 +1,539 @@
/*
* Copyright 2001-2004 Unicode, Inc.
*
* Disclaimer
*
* This source code is provided as is by Unicode, Inc. No claims are
* made as to fitness for any particular purpose. No warranties of any
* kind are expressed or implied. The recipient agrees to determine
* applicability of information provided. If this file has been
* purchased on magnetic or optical media from Unicode, Inc., the
* sole remedy for any claim will be exchange of defective media
* within 90 days of receipt.
*
* Limitations on Rights to Redistribute This Code
*
* Unicode, Inc. hereby grants the right to freely use the information
* supplied in this file in the creation of products supporting the
* Unicode Standard, and to make copies of this file in any form
* for internal or external distribution as long as this notice
* remains attached.
*/
/* ---------------------------------------------------------------------
Conversions between UTF32, UTF-16, and UTF-8. Source code file.
Author: Mark E. Davis, 1994.
Rev History: Rick McGowan, fixes & updates May 2001.
Sept 2001: fixed const & error conditions per
mods suggested by S. Parent & A. Lillich.
June 2002: Tim Dodd added detection and handling of incomplete
source sequences, enhanced error detection, added casts
to eliminate compiler warnings.
July 2003: slight mods to back out aggressive FFFE detection.
Jan 2004: updated switches in from-UTF8 conversions.
Oct 2004: updated to use UNI_MAX_LEGAL_UTF32 in UTF-32 conversions.
See the header file "ConvertUTF.h" for complete documentation.
------------------------------------------------------------------------ */
#include "ConvertUTF.h"
#ifdef CVTUTF_DEBUG
#include <stdio.h>
#endif
static const int halfShift = 10; /* used for shifting by 10 bits */
static const UTF32 halfBase = 0x0010000UL;
static const UTF32 halfMask = 0x3FFUL;
#define UNI_SUR_HIGH_START (UTF32)0xD800
#define UNI_SUR_HIGH_END (UTF32)0xDBFF
#define UNI_SUR_LOW_START (UTF32)0xDC00
#define UNI_SUR_LOW_END (UTF32)0xDFFF
#define false 0
#define true 1
/* --------------------------------------------------------------------- */
ConversionResult ConvertUTF32toUTF16 (
const UTF32** sourceStart, const UTF32* sourceEnd,
UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
ConversionResult result = conversionOK;
const UTF32* source = *sourceStart;
UTF16* target = *targetStart;
while (source < sourceEnd) {
UTF32 ch;
if (target >= targetEnd) {
result = targetExhausted; break;
}
ch = *source++;
if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
/* UTF-16 surrogate values are illegal in UTF-32; 0xffff or 0xfffe are both reserved values */
if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
if (flags == strictConversion) {
--source; /* return to the illegal value itself */
result = sourceIllegal;
break;
} else {
*target++ = UNI_REPLACEMENT_CHAR;
}
} else {
*target++ = (UTF16)ch; /* normal case */
}
} else if (ch > UNI_MAX_LEGAL_UTF32) {
if (flags == strictConversion) {
result = sourceIllegal;
} else {
*target++ = UNI_REPLACEMENT_CHAR;
}
} else {
/* target is a character in range 0xFFFF - 0x10FFFF. */
if (target + 1 >= targetEnd) {
--source; /* Back up source pointer! */
result = targetExhausted; break;
}
ch -= halfBase;
*target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
*target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
}
}
*sourceStart = source;
*targetStart = target;
return result;
}
/* --------------------------------------------------------------------- */
ConversionResult ConvertUTF16toUTF32 (
const UTF16** sourceStart, const UTF16* sourceEnd,
UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
ConversionResult result = conversionOK;
const UTF16* source = *sourceStart;
UTF32* target = *targetStart;
UTF32 ch, ch2;
while (source < sourceEnd) {
const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */
ch = *source++;
/* If we have a surrogate pair, convert to UTF32 first. */
if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
/* If the 16 bits following the high surrogate are in the source buffer... */
if (source < sourceEnd) {
ch2 = *source;
/* If it's a low surrogate, convert to UTF32. */
if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
+ (ch2 - UNI_SUR_LOW_START) + halfBase;
++source;
} else if (flags == strictConversion) { /* it's an unpaired high surrogate */
--source; /* return to the illegal value itself */
result = sourceIllegal;
break;
}
} else { /* We don't have the 16 bits following the high surrogate. */
--source; /* return to the high surrogate */
result = sourceExhausted;
break;
}
} else if (flags == strictConversion) {
/* UTF-16 surrogate values are illegal in UTF-32 */
if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
--source; /* return to the illegal value itself */
result = sourceIllegal;
break;
}
}
if (target >= targetEnd) {
source = oldSource; /* Back up source pointer! */
result = targetExhausted; break;
}
*target++ = ch;
}
*sourceStart = source;
*targetStart = target;
#ifdef CVTUTF_DEBUG
if (result == sourceIllegal) {
fprintf(stderr, "ConvertUTF16toUTF32 illegal seq 0x%04x,%04x\n", ch, ch2);
fflush(stderr);
}
#endif
return result;
}
/* --------------------------------------------------------------------- */
/*
* Index into the table below with the first byte of a UTF-8 sequence to
* get the number of trailing bytes that are supposed to follow it.
* Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is
* left as-is for anyone who may want to do such conversion, which was
* allowed in earlier algorithms.
*/
static const char trailingBytesForUTF8[256] = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5
};
/*
* Magic values subtracted from a buffer value during UTF8 conversion.
* This table contains as many values as there might be trailing bytes
* in a UTF-8 sequence.
*/
static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL,
0x03C82080UL, 0xFA082080UL, 0x82082080UL };
/*
* Once the bits are split out into bytes of UTF-8, this is a mask OR-ed
* into the first byte, depending on how many bytes follow. There are
* as many entries in this table as there are UTF-8 sequence types.
* (I.e., one byte sequence, two byte... etc.). Remember that sequencs
* for *legal* UTF-8 will be 4 or fewer bytes total.
*/
static const UTF8 firstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC };
/* --------------------------------------------------------------------- */
/* The interface converts a whole buffer to avoid function-call overhead.
* Constants have been gathered. Loops & conditionals have been removed as
* much as possible for efficiency, in favor of drop-through switches.
* (See "Note A" at the bottom of the file for equivalent code.)
* If your compiler supports it, the "isLegalUTF8" call can be turned
* into an inline function.
*/
/* --------------------------------------------------------------------- */
ConversionResult ConvertUTF16toUTF8 (
const UTF16** sourceStart, const UTF16* sourceEnd,
UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
ConversionResult result = conversionOK;
const UTF16* source = *sourceStart;
UTF8* target = *targetStart;
while (source < sourceEnd) {
UTF32 ch;
unsigned short bytesToWrite = 0;
const UTF32 byteMask = 0xBF;
const UTF32 byteMark = 0x80;
const UTF16* oldSource = source; /* In case we have to back up because of target overflow. */
ch = *source++;
/* If we have a surrogate pair, convert to UTF32 first. */
if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_HIGH_END) {
/* If the 16 bits following the high surrogate are in the source buffer... */
if (source < sourceEnd) {
UTF32 ch2 = *source;
/* If it's a low surrogate, convert to UTF32. */
if (ch2 >= UNI_SUR_LOW_START && ch2 <= UNI_SUR_LOW_END) {
ch = ((ch - UNI_SUR_HIGH_START) << halfShift)
+ (ch2 - UNI_SUR_LOW_START) + halfBase;
++source;
} else if (flags == strictConversion) { /* it's an unpaired high surrogate */
--source; /* return to the illegal value itself */
result = sourceIllegal;
break;
}
} else { /* We don't have the 16 bits following the high surrogate. */
--source; /* return to the high surrogate */
result = sourceExhausted;
break;
}
} else if (flags == strictConversion) {
/* UTF-16 surrogate values are illegal in UTF-32 */
if (ch >= UNI_SUR_LOW_START && ch <= UNI_SUR_LOW_END) {
--source; /* return to the illegal value itself */
result = sourceIllegal;
break;
}
}
/* Figure out how many bytes the result will require */
if (ch < (UTF32)0x80) { bytesToWrite = 1;
} else if (ch < (UTF32)0x800) { bytesToWrite = 2;
} else if (ch < (UTF32)0x10000) { bytesToWrite = 3;
} else if (ch < (UTF32)0x110000) { bytesToWrite = 4;
} else { bytesToWrite = 3;
ch = UNI_REPLACEMENT_CHAR;
}
target += bytesToWrite;
if (target > targetEnd) {
source = oldSource; /* Back up source pointer! */
target -= bytesToWrite; result = targetExhausted; break;
}
switch (bytesToWrite) { /* note: everything falls through. */
case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
case 1: *--target = (UTF8)(ch | firstByteMark[bytesToWrite]);
}
target += bytesToWrite;
}
*sourceStart = source;
*targetStart = target;
return result;
}
/* --------------------------------------------------------------------- */
/*
* Utility routine to tell whether a sequence of bytes is legal UTF-8.
* This must be called with the length pre-determined by the first byte.
* If not calling this from ConvertUTF8to*, then the length can be set by:
* length = trailingBytesForUTF8[*source]+1;
* and the sequence is illegal right away if there aren't that many bytes
* available.
* If presented with a length > 4, this returns false. The Unicode
* definition of UTF-8 goes up to 4-byte sequences.
*/
static Boolean isLegalUTF8(const UTF8 *source, int length) {
UTF8 a;
const UTF8 *srcptr = source+length;
switch (length) {
default: return false;
/* Everything else falls through when "true"... */
case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return false;
case 2: if ((a = (*--srcptr)) > 0xBF) return false;
switch (*source) {
/* no fall-through in this inner switch */
case 0xE0: if (a < 0xA0) return false; break;
case 0xED: if (a > 0x9F) return false; break;
case 0xF0: if (a < 0x90) return false; break;
case 0xF4: if (a > 0x8F) return false; break;
default: if (a < 0x80) return false;
}
case 1: if (*source >= 0x80 && *source < 0xC2) return false;
}
if (*source > 0xF4) return false;
return true;
}
/* --------------------------------------------------------------------- */
/*
* Exported function to return whether a UTF-8 sequence is legal or not.
* This is not used here; it's just exported.
*/
Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd) {
int length = trailingBytesForUTF8[*source]+1;
if (source+length > sourceEnd) {
return false;
}
return isLegalUTF8(source, length);
}
/* --------------------------------------------------------------------- */
ConversionResult ConvertUTF8toUTF16 (
const UTF8** sourceStart, const UTF8* sourceEnd,
UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags) {
ConversionResult result = conversionOK;
const UTF8* source = *sourceStart;
UTF16* target = *targetStart;
while (source < sourceEnd) {
UTF32 ch = 0;
unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
if (source + extraBytesToRead >= sourceEnd) {
result = sourceExhausted; break;
}
/* Do this check whether lenient or strict */
if (! isLegalUTF8(source, extraBytesToRead+1)) {
result = sourceIllegal;
break;
}
/*
* The cases all fall through. See "Note A" below.
*/
switch (extraBytesToRead) {
case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */
case 3: ch += *source++; ch <<= 6;
case 2: ch += *source++; ch <<= 6;
case 1: ch += *source++; ch <<= 6;
case 0: ch += *source++;
}
ch -= offsetsFromUTF8[extraBytesToRead];
if (target >= targetEnd) {
source -= (extraBytesToRead+1); /* Back up source pointer! */
result = targetExhausted; break;
}
if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */
/* UTF-16 surrogate values are illegal in UTF-32 */
if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
if (flags == strictConversion) {
source -= (extraBytesToRead+1); /* return to the illegal value itself */
result = sourceIllegal;
break;
} else {
*target++ = UNI_REPLACEMENT_CHAR;
}
} else {
*target++ = (UTF16)ch; /* normal case */
}
} else if (ch > UNI_MAX_UTF16) {
if (flags == strictConversion) {
result = sourceIllegal;
source -= (extraBytesToRead+1); /* return to the start */
break; /* Bail out; shouldn't continue */
} else {
*target++ = UNI_REPLACEMENT_CHAR;
}
} else {
/* target is a character in range 0xFFFF - 0x10FFFF. */
if (target + 1 >= targetEnd) {
source -= (extraBytesToRead+1); /* Back up source pointer! */
result = targetExhausted; break;
}
ch -= halfBase;
*target++ = (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START);
*target++ = (UTF16)((ch & halfMask) + UNI_SUR_LOW_START);
}
}
*sourceStart = source;
*targetStart = target;
return result;
}
/* --------------------------------------------------------------------- */
ConversionResult ConvertUTF32toUTF8 (
const UTF32** sourceStart, const UTF32* sourceEnd,
UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags) {
ConversionResult result = conversionOK;
const UTF32* source = *sourceStart;
UTF8* target = *targetStart;
while (source < sourceEnd) {
UTF32 ch;
unsigned short bytesToWrite = 0;
const UTF32 byteMask = 0xBF;
const UTF32 byteMark = 0x80;
ch = *source++;
if (flags == strictConversion ) {
/* UTF-16 surrogate values are illegal in UTF-32 */
if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
--source; /* return to the illegal value itself */
result = sourceIllegal;
break;
}
}
/*
* Figure out how many bytes the result will require. Turn any
* illegally large UTF32 things (> Plane 17) into replacement chars.
*/
if (ch < (UTF32)0x80) { bytesToWrite = 1;
} else if (ch < (UTF32)0x800) { bytesToWrite = 2;
} else if (ch < (UTF32)0x10000) { bytesToWrite = 3;
} else if (ch <= UNI_MAX_LEGAL_UTF32) { bytesToWrite = 4;
} else { bytesToWrite = 3;
ch = UNI_REPLACEMENT_CHAR;
result = sourceIllegal;
}
target += bytesToWrite;
if (target > targetEnd) {
--source; /* Back up source pointer! */
target -= bytesToWrite; result = targetExhausted; break;
}
switch (bytesToWrite) { /* note: everything falls through. */
case 4: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
case 3: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
case 2: *--target = (UTF8)((ch | byteMark) & byteMask); ch >>= 6;
case 1: *--target = (UTF8) (ch | firstByteMark[bytesToWrite]);
}
target += bytesToWrite;
}
*sourceStart = source;
*targetStart = target;
return result;
}
/* --------------------------------------------------------------------- */
ConversionResult ConvertUTF8toUTF32 (
const UTF8** sourceStart, const UTF8* sourceEnd,
UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags) {
ConversionResult result = conversionOK;
const UTF8* source = *sourceStart;
UTF32* target = *targetStart;
while (source < sourceEnd) {
UTF32 ch = 0;
unsigned short extraBytesToRead = trailingBytesForUTF8[*source];
if (source + extraBytesToRead >= sourceEnd) {
result = sourceExhausted; break;
}
/* Do this check whether lenient or strict */
if (! isLegalUTF8(source, extraBytesToRead+1)) {
result = sourceIllegal;
break;
}
/*
* The cases all fall through. See "Note A" below.
*/
switch (extraBytesToRead) {
case 5: ch += *source++; ch <<= 6;
case 4: ch += *source++; ch <<= 6;
case 3: ch += *source++; ch <<= 6;
case 2: ch += *source++; ch <<= 6;
case 1: ch += *source++; ch <<= 6;
case 0: ch += *source++;
}
ch -= offsetsFromUTF8[extraBytesToRead];
if (target >= targetEnd) {
source -= (extraBytesToRead+1); /* Back up the source pointer! */
result = targetExhausted; break;
}
if (ch <= UNI_MAX_LEGAL_UTF32) {
/*
* UTF-16 surrogate values are illegal in UTF-32, and anything
* over Plane 17 (> 0x10FFFF) is illegal.
*/
if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) {
if (flags == strictConversion) {
source -= (extraBytesToRead+1); /* return to the illegal value itself */
result = sourceIllegal;
break;
} else {
*target++ = UNI_REPLACEMENT_CHAR;
}
} else {
*target++ = ch;
}
} else { /* i.e., ch > UNI_MAX_LEGAL_UTF32 */
result = sourceIllegal;
*target++ = UNI_REPLACEMENT_CHAR;
}
}
*sourceStart = source;
*targetStart = target;
return result;
}
/* ---------------------------------------------------------------------
Note A.
The fall-through switches in UTF-8 reading code save a
temp variable, some decrements & conditionals. The switches
are equivalent to the following loop:
{
int tmpBytesToRead = extraBytesToRead+1;
do {
ch += *source++;
--tmpBytesToRead;
if (tmpBytesToRead) ch <<= 6;
} while (tmpBytesToRead > 0);
}
In UTF-8 writing code, the switches on "bytesToWrite" are
similarly unrolled loops.
--------------------------------------------------------------------- */
+151
View File
@@ -0,0 +1,151 @@
#pragma once
/*
* Copyright 2001-2004 Unicode, Inc.
*
* Disclaimer
*
* This source code is provided as is by Unicode, Inc. No claims are
* made as to fitness for any particular purpose. No warranties of any
* kind are expressed or implied. The recipient agrees to determine
* applicability of information provided. If this file has been
* purchased on magnetic or optical media from Unicode, Inc., the
* sole remedy for any claim will be exchange of defective media
* within 90 days of receipt.
*
* Limitations on Rights to Redistribute This Code
*
* Unicode, Inc. hereby grants the right to freely use the information
* supplied in this file in the creation of products supporting the
* Unicode Standard, and to make copies of this file in any form
* for internal or external distribution as long as this notice
* remains attached.
*/
/* ---------------------------------------------------------------------
Conversions between UTF32, UTF-16, and UTF-8. Header file.
Several funtions are included here, forming a complete set of
conversions between the three formats. UTF-7 is not included
here, but is handled in a separate source file.
Each of these routines takes pointers to input buffers and output
buffers. The input buffers are const.
Each routine converts the text between *sourceStart and sourceEnd,
putting the result into the buffer between *targetStart and
targetEnd. Note: the end pointers are *after* the last item: e.g.
*(sourceEnd - 1) is the last item.
The return result indicates whether the conversion was successful,
and if not, whether the problem was in the source or target buffers.
(Only the first encountered problem is indicated.)
After the conversion, *sourceStart and *targetStart are both
updated to point to the end of last text successfully converted in
the respective buffers.
Input parameters:
sourceStart - pointer to a pointer to the source buffer.
The contents of this are modified on return so that
it points at the next thing to be converted.
targetStart - similarly, pointer to pointer to the target buffer.
sourceEnd, targetEnd - respectively pointers to the ends of the
two buffers, for overflow checking only.
These conversion functions take a ConversionFlags argument. When this
flag is set to strict, both irregular sequences and isolated surrogates
will cause an error. When the flag is set to lenient, both irregular
sequences and isolated surrogates are converted.
Whether the flag is strict or lenient, all illegal sequences will cause
an error return. This includes sequences such as: <F4 90 80 80>, <C0 80>,
or <A0> in UTF-8, and values above 0x10FFFF in UTF-32. Conformant code
must check for illegal sequences.
When the flag is set to lenient, characters over 0x10FFFF are converted
to the replacement character; otherwise (when the flag is set to strict)
they constitute an error.
Output parameters:
The value "sourceIllegal" is returned from some routines if the input
sequence is malformed. When "sourceIllegal" is returned, the source
value will point to the illegal value that caused the problem. E.g.,
in UTF-8 when a sequence is malformed, it points to the start of the
malformed sequence.
Author: Mark E. Davis, 1994.
Rev History: Rick McGowan, fixes & updates May 2001.
Fixes & updates, Sept 2001.
------------------------------------------------------------------------ */
/* ---------------------------------------------------------------------
The following 4 definitions are compiler-specific.
The C standard does not guarantee that wchar_t has at least
16 bits, so wchar_t is no less portable than unsigned short!
All should be unsigned values to avoid sign extension during
bit mask & shift operations.
------------------------------------------------------------------------ */
typedef unsigned int UTF32; /* at least 32 bits */
typedef unsigned short UTF16; /* at least 16 bits */
typedef unsigned char UTF8; /* typically 8 bits */
typedef unsigned char Boolean; /* 0 or 1 */
/* Some fundamental constants */
#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD
#define UNI_MAX_BMP (UTF32)0x0000FFFF
#define UNI_MAX_UTF16 (UTF32)0x0010FFFF
#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF
#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF
typedef enum {
conversionOK, /* conversion successful */
sourceExhausted, /* partial character in source, but hit end */
targetExhausted, /* insuff. room in target for conversion */
sourceIllegal /* source sequence is illegal/malformed */
} ConversionResult;
typedef enum {
strictConversion = 0,
lenientConversion
} ConversionFlags;
/* This is for C++ and does no harm in C */
#ifdef __cplusplus
extern "C" {
#endif
ConversionResult ConvertUTF8toUTF16 (
const UTF8** sourceStart, const UTF8* sourceEnd,
UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
ConversionResult ConvertUTF16toUTF8 (
const UTF16** sourceStart, const UTF16* sourceEnd,
UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
ConversionResult ConvertUTF8toUTF32 (
const UTF8** sourceStart, const UTF8* sourceEnd,
UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
ConversionResult ConvertUTF32toUTF8 (
const UTF32** sourceStart, const UTF32* sourceEnd,
UTF8** targetStart, UTF8* targetEnd, ConversionFlags flags);
ConversionResult ConvertUTF16toUTF32 (
const UTF16** sourceStart, const UTF16* sourceEnd,
UTF32** targetStart, UTF32* targetEnd, ConversionFlags flags);
ConversionResult ConvertUTF32toUTF16 (
const UTF32** sourceStart, const UTF32* sourceEnd,
UTF16** targetStart, UTF16* targetEnd, ConversionFlags flags);
Boolean isLegalUTF8Sequence(const UTF8 *source, const UTF8 *sourceEnd);
#ifdef __cplusplus
}
#endif
/* --------------------------------------------------------------------- */
+20
View File
@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2006-2013 Brodie Thiesfield
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+150
View File
@@ -0,0 +1,150 @@
simpleini
=========
A cross-platform library that provides a simple API to read and write INI-style configuration files. It supports data files in ASCII, MBCS and Unicode. It is designed explicitly to be portable to any platform and has been tested on Windows, WinCE and Linux. Released as open-source and free using the MIT licence.
# Feature Summary
- MIT Licence allows free use in all software (including GPL and commercial)
- multi-platform (Windows 95/98/ME/NT/2K/XP/2003, Windows CE, Linux, Unix)
- loading and saving of INI-style configuration files
- configuration files can have any newline format on all platforms
- liberal acceptance of file format
* key/values with no section
* removal of whitespace around sections, keys and values
- support for multi-line values (values with embedded newline characters)
- optional support for multiple keys with the same name
- optional case-insensitive sections and keys (for ASCII characters only)
- saves files with sections and keys in the same order as they were loaded
- preserves comments on the file, section and keys where possible.
- supports both char or wchar_t programming interfaces
- supports both MBCS (system locale) and UTF-8 file encodings
- system locale does not need to be UTF-8 on Linux/Unix to load UTF-8 file
- support for non-ASCII characters in section, keys, values and comments
- support for non-standard character types or file encodings via user-written converter classes
- support for adding/modifying values programmatically
- compiles cleanly in the following compilers:
* Windows/VC6 (warning level 3)
* Windows/VC.NET 2003 (warning level 4)
* Windows/VC 2005 (warning level 4)
* Linux/gcc (-Wall)
* Windows/MinGW GCC
# Documentation
Full documentation of the interface is available in doxygen format.
# Examples
These snippets are included with the distribution in the file snippets.cpp.
### SIMPLE USAGE
```c++
CSimpleIniA ini;
ini.SetUnicode();
ini.LoadFile("myfile.ini");
const char * pVal = ini.GetValue("section", "key", "default");
ini.SetValue("section", "key", "newvalue");
```
### LOADING DATA
```c++
// load from a data file
CSimpleIniA ini(a_bIsUtf8, a_bUseMultiKey, a_bUseMultiLine);
SI_Error rc = ini.LoadFile(a_pszFile);
if (rc < 0) return false;
// load from a string
std::string strData;
rc = ini.LoadData(strData.c_str(), strData.size());
if (rc < 0) return false;
```
### GETTING SECTIONS AND KEYS
```c++
// get all sections
CSimpleIniA::TNamesDepend sections;
ini.GetAllSections(sections);
// get all keys in a section
CSimpleIniA::TNamesDepend keys;
ini.GetAllKeys("section-name", keys);
```
### GETTING VALUES
```c++
// get the value of a key
const char * pszValue = ini.GetValue("section-name",
"key-name", NULL /*default*/);
// get the value of a key which may have multiple
// values. If bHasMultipleValues is true, then just
// one value has been returned
bool bHasMultipleValues;
pszValue = ini.GetValue("section-name", "key-name",
NULL /*default*/, &amp;bHasMultipleValues);
// get all values of a key with multiple values
CSimpleIniA::TNamesDepend values;
ini.GetAllValues("section-name", "key-name", values);
// sort the values into the original load order
values.sort(CSimpleIniA::Entry::LoadOrder());
// output all of the items
CSimpleIniA::TNamesDepend::const_iterator i;
for (i = values.begin(); i != values.end(); ++i) {
printf("key-name = '%s'\n", i->pItem);
}
```
### MODIFYING DATA
```c++
// adding a new section
rc = ini.SetValue("new-section", NULL, NULL);
if (rc < 0) return false;
printf("section: %s\n", rc == SI_INSERTED ?
"inserted" : "updated");
// adding a new key ("new-section" will be added
// automatically if it doesn't already exist)
rc = ini.SetValue("new-section", "new-key", "value");
if (rc < 0) return false;
printf("key: %s\n", rc == SI_INSERTED ?
"inserted" : "updated");
// changing the value of a key
rc = ini.SetValue("section", "key", "updated-value");
if (rc < 0) return false;
printf("key: %s\n", rc == SI_INSERTED ?
"inserted" : "updated");
```
### DELETING DATA
```c++
// deleting a key from a section. Optionally the entire
// section may be deleted if it is now empty.
ini.Delete("section-name", "key-name",
true /*delete the section if empty*/);
// deleting an entire section and all keys in it
ini.Delete("section-name", NULL);
```
### SAVING DATA
```c++
// save the data to a string
rc = ini.Save(strData);
if (rc < 0) return false;
// save the data back to the file
rc = ini.SaveFile(a_pszFile);
if (rc < 0) return false;
```
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+35
View File
@@ -0,0 +1,35 @@
version: 1.0.{build}
os: Visual Studio 2015
configuration:
# - Release
- ReleaseLLVM
platform: x64
clone_folder: c:\rpcs3
clone_depth: 3
test: off
branches:
except:
- ppu_recompiler
before_build:
# until git for win 2.5 release with commit checkout
- git submodule update --init ffmpeg asmjit minidx9
- 7z x wxWidgets.7z -aos -oC:\rpcs3\wxWidgets > null
- if %configuration%==Release (cmake -G "Visual Studio 14 Win64")
else (7z x llvmlibs.7z -aos -oC:\rpcs3 > null && cmake -G "Visual Studio 14 Win64" -DLLVM_DIR=C:/rpcs3/llvm_build/share/llvm/cmake)
build_script:
- cmake --build . --config Release -- /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
install:
- ps: Start-FileDownload 'https://402331b94f8e4b87ae2ef4677347f7956cf3861f.googledrive.com/host/0B6v_qtb9hkicfmt0NG0wTTRtUmF4X3VTQk5Oc2JidEVKVnUteDA1dXdrYlNsVW9kREpsSHc/wxWidgets.7z'
- ps: Start-FileDownload 'https://402331b94f8e4b87ae2ef4677347f7956cf3861f.googledrive.com/host/0B6v_qtb9hkicfmt0NG0wTTRtUmF4X3VTQk5Oc2JidEVKVnUteDA1dXdrYlNsVW9kREpsSHc/llvmlibs.7z'
- set WXWIN=C:\rpcs3\wxWidgets
- set OPENALDIR=C:\rpcs3\OpenAL
- set PATH=C:\Program Files (x86)\MSBuild\14.0\Bin;C:\wxWidgets;%PATH%
- set COMMIT_SHA=%APPVEYOR_REPO_COMMIT:~0,8%
artifacts:
- path: bin
name: rpcs3-$(configuration)-$(COMMIT_SHA)
Submodule
+1
Submodule asmjit added at b0dad1af25
+136
View File
@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\asmjit\src\asmjit\base\assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\codegen.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\constpool.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\containers.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cputicks.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\error.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\globals.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\intutil.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\logger.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\runtime.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\string.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\vmem.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\zone.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86inst.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand_regs.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86scheduler.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\asmjit\src\asmjit\base\assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\codegen.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\constpool.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\containers.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cputicks.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\error.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\globals.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\intutil.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\lock.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\logger.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\runtime.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\string.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vectypes.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vmem.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\zone.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86inst.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86scheduler_p.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{AC40FF01-426E-4838-A317-66354CEFAE88}</ProjectGuid>
<RootNamespace>asmjit</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<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|x64'">
<OutDir>$(SolutionDir)libs\$(Configuration)\</OutDir>
<IntDir>
</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(SolutionDir)libs\$(Configuration)\</OutDir>
<IntDir>
</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>ASMJIT_STATIC;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>false</SDLCheck>
<PreprocessorDefinitions>ASMJIT_STATIC;_UNICODE;UNICODE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+58
View File
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="..\asmjit\src\asmjit\base\assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\codegen.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\constpool.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\containers.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\cputicks.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\error.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\globals.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\intutil.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\logger.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\runtime.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\string.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\vmem.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\base\zone.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86assembler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86compiler.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86context.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86cpuinfo.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86inst.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86operand_regs.cpp" />
<ClCompile Include="..\asmjit\src\asmjit\x86\x86scheduler.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\asmjit\src\asmjit\x86\x86assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86inst.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\x86\x86scheduler_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\assembler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\codegen.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\compiler.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\constpool.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\containers.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\context_p.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cpuinfo.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\cputicks.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\error.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\globals.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\intutil.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\lock.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\logger.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\operand.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\runtime.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\string.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vectypes.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\vmem.h" />
<ClInclude Include="..\asmjit\src\asmjit\base\zone.h" />
</ItemGroup>
</Project>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
BIN
View File
Binary file not shown.
@@ -0,0 +1,6 @@
# Note: This folder has to exist. Once the User Account manager is implemented, make sure it creates this folder in case it's missing and delete this .gitignore file.
# Ignore everything in this directory
*
# Except this file
!.gitignore
+1
View File
@@ -0,0 +1 @@
User
@@ -0,0 +1,6 @@
# Note: This folder has to exist. Once the User Account manager is implemented, make sure it creates this folder in case it's missing and delete this .gitignore file.
# Ignore everything in this directory
*
# Except this file
!.gitignore
@@ -0,0 +1,6 @@
# Note: This folder has to exist. Once the User Account manager is implemented, make sure it creates this folder in case it's missing and delete this .gitignore file.
# Ignore everything in this directory
*
# Except this file
!.gitignore
+6
View File
@@ -0,0 +1,6 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
!cache
!cache/README.txt
+1
View File
@@ -0,0 +1 @@
This directory is used for cache functionality, so don't store any data here.
+1
View File
@@ -0,0 +1 @@
This directory is used for temporary gamedata functionality, so don't store any data here.
+4
View File
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Submodule
+1
Submodule ffmpeg added at 8dd84dc1ea
Submodule
+1
Submodule llvm added at 19ade095e8
+30
View File
@@ -0,0 +1,30 @@
REM You need cmake and python to update the project files
REM this script relies on CWD being the path that this script is in
cmake -G "Visual Studio 12 Win64" -DCMAKE_CONFIGURATION_TYPES="Debug;Release" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF -DLLVM_INCLUDE_UTILS=OFF -DWITH_POLLY=OFF ../llvm
RD /S /Q cmake
RD /S /Q CMakeFiles
RD /S /Q projects
RD /S /Q share
RD /S /Q tools
DEL ALL_BUILD.vcxproj
DEL ALL_BUILD.vcxproj.filters
DEL CMakeCache.txt
DEL cmake_install.cmake
DEL CPackConfig.cmake
DEL CPackSourceConfig.cmake
DEL DummyConfigureOutput
DEL INSTALL.vcxproj
DEL INSTALL.vcxproj.filters
DEL LLVM.sdf
DEL LLVM.sln
DEL LLVMBuild.cmake
DEL PACKAGE.vcxproj
DEL PACKAGE.vcxproj.filters
DEL ZERO_CHECK.vcxproj
DEL ZERO_CHECK.vcxproj.filters
DEL include\llvm\llvm_headers_do_not_build.vcxproj
DEL include\llvm\llvm_headers_do_not_build.vcxproj.filters
python make_paths_relative.py
+68
View File
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<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">
<ProjectGuid>{8BC303AB-25BE-4276-8E57-73F171B2D672}</ProjectGuid>
<Keyword>MakeFileProj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<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|x64'">
<NMakePreprocessorDefinitions>
</NMakePreprocessorDefinitions>
<NMakeBuildCommandLine>cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_CONFIGURATION_TYPES="Debug;Release" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF -DLLVM_INCLUDE_UTILS=OFF -DWITH_POLLY=OFF ../llvm
msbuild.exe ALL_BUILD.vcxproj /t:build /p:Configuration=Debug
</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_CONFIGURATION_TYPES="Debug;Release" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF -DLLVM_INCLUDE_UTILS=OFF -DWITH_POLLY=OFF ../llvm
msbuild.exe ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Debug
</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_CONFIGURATION_TYPES="Debug;Release" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF -DLLVM_INCLUDE_UTILS=OFF -DWITH_POLLY=OFF ../llvm
msbuild.exe ALL_BUILD.vcxproj /t:clean /p:Configuration=Debug
</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<NMakePreprocessorDefinitions />
<NMakeBuildCommandLine>cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_CONFIGURATION_TYPES="Debug;Release" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF -DLLVM_INCLUDE_UTILS=OFF -DWITH_POLLY=OFF ../llvm
msbuild.exe ALL_BUILD.vcxproj /t:build /p:Configuration=Release
</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_CONFIGURATION_TYPES="Debug;Release" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF -DLLVM_INCLUDE_UTILS=OFF -DWITH_POLLY=OFF ../llvm
msbuild.exe ALL_BUILD.vcxproj /t:rebuild /p:Configuration=Release
</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_CONFIGURATION_TYPES="Debug;Release" -DLLVM_TARGETS_TO_BUILD=X86 -DLLVM_BUILD_RUNTIME=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=OFF -DLLVM_INCLUDE_UTILS=OFF -DWITH_POLLY=OFF ../llvm
msbuild.exe ALL_BUILD.vcxproj /t:clean /p:Configuration=Release
</NMakeCleanCommandLine>
</PropertyGroup>
<ItemDefinitionGroup>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+17
View File
@@ -0,0 +1,17 @@
<?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;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;hm;inl;inc;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>
</Project>
+164
View File
@@ -0,0 +1,164 @@
import os
import shutil
import xml.etree.ElementTree as ET
import re
RPCS3DIR = ""
cmake_dirs = ["CMakeFiles",]
cmake_files = ["INSTALL.vcxproj",
"INSTALL.vcxproj.filters",
"PACKAGE.vcxproj",
"PACKAGE.vcxproj.filters",
"cmake_install.cmake",
]
vcxproj_files_blacklist = ["llvm_build.vcxproj","llvm_build.vcxproj.filters"]
vcxproj_files = ["lib\Analysis\LLVMAnalysis.vcxproj",
"lib\Analysis\IPA\LLVMipa.vcxproj",
"lib\AsmParser\LLVMAsmParser.vcxproj",
"lib\Bitcode\Reader\LLVMBitReader.vcxproj",
"lib\Bitcode\Writer\LLVMBitWriter.vcxproj",
"lib\CodeGen\LLVMCodeGen.vcxproj",
"lib\CodeGen\AsmPrinter\LLVMAsmPrinter.vcxproj",
"lib\CodeGen\SelectionDAG\LLVMSelectionDAG.vcxproj",
"lib\DebugInfo\LLVMDebugInfo.vcxproj",
"lib\ExecutionEngine\LLVMExecutionEngine.vcxproj",
"lib\ExecutionEngine\Interpreter\LLVMInterpreter.vcxproj",
"lib\ExecutionEngine\JIT\LLVMJIT.vcxproj",
"lib\ExecutionEngine\MCJIT\LLVMMCJIT.vcxproj",
"lib\ExecutionEngine\RuntimeDyld\LLVMRuntimeDyld.vcxproj",
"lib\IR\LLVMCore.vcxproj",
"lib\IRReader\LLVMIRReader.vcxproj",
"lib\LineEditor\LLVMLineEditor.vcxproj",
"lib\Linker\LLVMLinker.vcxproj",
"lib\LTO\LLVMLTO.vcxproj",
"lib\MC\LLVMMC.vcxproj",
"lib\MC\MCAnalysis\LLVMMCAnalysis.vcxproj",
"lib\MC\MCDisassembler\LLVMMCDisassembler.vcxproj",
"lib\MC\MCParser\LLVMMCParser.vcxproj",
"lib\Object\LLVMObject.vcxproj",
"lib\Option\LLVMOption.vcxproj",
"lib\ProfileData\LLVMProfileData.vcxproj",
"lib\Support\LLVMSupport.vcxproj",
"lib\TableGen\LLVMTableGen.vcxproj",
"lib\Target\LLVMTarget.vcxproj",
"lib\Target\X86\LLVMX86CodeGen.vcxproj",
"lib\Target\X86\X86CommonTableGen.vcxproj",
"lib\Target\X86\AsmParser\LLVMX86AsmParser.vcxproj",
"lib\Target\X86\Disassembler\LLVMX86Disassembler.vcxproj",
"lib\Target\X86\InstPrinter\LLVMX86AsmPrinter.vcxproj",
"lib\Target\X86\MCTargetDesc\LLVMX86Desc.vcxproj",
"lib\Target\X86\TargetInfo\LLVMX86Info.vcxproj",
"lib\Target\X86\Utils\LLVMX86Utils.vcxproj",
"lib\Transforms\Hello\LLVMHello.vcxproj",
"lib\Transforms\InstCombine\LLVMInstCombine.vcxproj",
"lib\Transforms\Instrumentation\LLVMInstrumentation.vcxproj",
"lib\Transforms\IPO\LLVMipo.vcxproj",
"lib\Transforms\ObjCARC\LLVMObjCARCOpts.vcxproj",
"lib\Transforms\Scalar\LLVMScalarOpts.vcxproj",
"lib\Transforms\Utils\LLVMTransformUtils.vcxproj",
"lib\Transforms\Vectorize\LLVMVectorize.vcxproj",
"include\llvm\IR\intrinsics_gen.vcxproj",
"utils\TableGen\llvm-tblgen.vcxproj",
]
def get_parent_dir():
path = os.getcwd()
os.chdir("..")
rpcs3_dir = os.getcwd()
os.chdir(path)
return rpcs3_dir
def rem_cmake_files(root_path):
for root, dirs, files in os.walk(root_path):
for directory in dirs:
if directory in cmake_dirs:
print("deleting: " + os.path.join(root,directory))
shutil.rmtree(os.path.join(root,directory))
dirs = [item for item in dirs if item not in cmake_dirs]
for file in files:
if file in cmake_files:
print("deleting: " + os.path.join(root,file))
os.remove(os.path.join(root,file))
def repl_cmake_copy(match):
newtext = "copy /y "
files = match.group(1)
files = files.replace('/','\\')
return newtext+files
def make_paths_relative(file):
global vcxproj_files
global vcxproj_files_blacklist
this_vcxproj = os.path.relpath(file,os.getcwd())
if this_vcxproj in vcxproj_files_blacklist:
return
if (file.find('.vcxproj')!=len(file)-8) and (file.find('.vcxproj.filters')!=len(file)-16):
print('ERROR: File "'+file+'" is not vcxproj file')
return
proj_path = os.path.dirname(file)
if proj_path[1] != ':':
print('ERROR: Path "'+proj_path+'" is not in the Windows format')
return
#check if we expected this project file
if file[-8:] == '.vcxproj':
if this_vcxproj in vcxproj_files:
vcxproj_files.remove(this_vcxproj)
else:
print('ERROR: unexpected vcxproj file: "' + this_vcxproj +'" please update the script')
return
#open the file and text-replace the absolute paths
with open(file,'r') as f:
file_cont = f.read()
rel_path = '$(ProjDir)'+os.path.relpath(RPCS3DIR,proj_path)
file_cont = file_cont.replace(RPCS3DIR,rel_path)
rpcs3_path_alt = RPCS3DIR.replace('\\','/')
rel_path_alt = rel_path.replace('\\','/')
file_cont = file_cont.replace(rpcs3_path_alt,rel_path_alt)
#interpret the XML to remove the cmake commands from the "Command" tags
ET.register_namespace('','http://schemas.microsoft.com/developer/msbuild/2003')
tree = ET.fromstring(file_cont)
for parent in tree.findall('.//{http://schemas.microsoft.com/developer/msbuild/2003}Command/..'):
for element in parent.findall('{http://schemas.microsoft.com/developer/msbuild/2003}Command'):
text = str(element.text)
rgx = re.compile(r'[^\r\n<>]+cmake.exe["]?\s+-E copy_if_different([^\r\n]+)')
text, num_rep = rgx.subn(repl_cmake_copy,text)
rgx = re.compile(r'[^\r\n<>]+cmake.exe([^\r\n]*)')
text, num_rep2 = rgx.subn(r'REM OMMITTED CMAKE COMMAND',text)
num_rep += num_rep2
rgx = re.compile(r'[^\r\n<>]+ml64.exe"?([^\r\n]*)')
text, num_rep2 = rgx.subn(r'"$(VCInstallDir)bin\x86_amd64\ml64.exe" \1',text)
num_rep += num_rep2
#if (text.find('cmake') != -1) or (text.find('python') != -1):
# parent.remove(element)
if num_rep > 0:
element.text = text
#re-create the XML and save the file
file_cont = ET.tostring(tree,'utf-8')
with open(file,'w') as f:
f.write(file_cont)
def iterate_proj_file(root_path):
for root, dirs, files in os.walk(root_path):
for file in files:
if file.find('.vcxproj') != -1 :
make_paths_relative(os.path.join(root,file))
def main_func():
global RPCS3DIR
RPCS3DIR = get_parent_dir()
rem_cmake_files(os.getcwd())
iterate_proj_file(os.getcwd())
for a in vcxproj_files:
print('ERROR: project file was not found "'+ a + '"')
if __name__ == "__main__":
main_func()
Submodule
+1
Submodule minidx9 added at ec19e64346
+800 -219
View File
File diff suppressed because it is too large Load Diff
-32
View File
@@ -1,32 +0,0 @@
#include "stdafx.h"
#include "AppConnector.h"
AppConnector::~AppConnector()
{
for(uint i=0; i<m_connect_arr.GetCount(); ++i)
{
wxGetApp().Disconnect(
m_connect_arr[i].winid,
m_connect_arr[i].lastId,
m_connect_arr[i].eventType,
m_connect_arr[i].func,
m_connect_arr[i].userData,
m_connect_arr[i].eventSink);
}
}
void AppConnector::Connect(int winid, int lastId, int eventType, wxObjectEventFunction func, wxObject* userData, wxEvtHandler* eventSink)
{
m_connect_arr.Move(new ConnectInfo(winid, lastId, eventType, func, userData, eventSink));
wxGetApp().Connect(winid, lastId, eventType, func, userData, eventSink);
}
void AppConnector::Connect(int winid, int eventType, wxObjectEventFunction func, wxObject* userData, wxEvtHandler* eventSink)
{
Connect(winid, wxID_ANY, eventType, func, userData, eventSink);
}
void AppConnector::Connect(int eventType, wxObjectEventFunction func, wxObject* userData, wxEvtHandler* eventSink)
{
Connect(wxID_ANY, wxID_ANY, eventType, func, userData, eventSink);
}
-33
View File
@@ -1,33 +0,0 @@
#pragma once
class AppConnector
{
struct ConnectInfo
{
int winid;
int lastId;
int eventType;
wxObjectEventFunction func;
wxObject* userData;
wxEvtHandler* eventSink;
ConnectInfo(int winid, int lastId, int eventType, wxObjectEventFunction func, wxObject* userData, wxEvtHandler* eventSink)
: winid(winid)
, lastId(lastId)
, eventType(eventType)
, func(func)
, userData(userData)
, eventSink(eventSink)
{
}
};
Array<ConnectInfo> m_connect_arr;
public:
~AppConnector();
void Connect(int winid, int lastId, int eventType, wxObjectEventFunction func, wxObject* userData = nullptr, wxEvtHandler* eventSink = nullptr);
void Connect(int winid, int eventType, wxObjectEventFunction func, wxObject* userData = nullptr, wxEvtHandler* eventSink = nullptr);
void Connect(int eventType, wxObjectEventFunction func, wxObject* userData = nullptr, wxEvtHandler* eventSink = nullptr);
};
+178
View File
@@ -0,0 +1,178 @@
cmake_minimum_required(VERSION 2.8.12)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake_modules")
include(cotire)
project(rpcs3)
# Generate git-version.h at build time.
add_custom_target(GitVersion ALL
DEPENDS something_that_never_exists)
add_custom_command(OUTPUT something_that_never_exists
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/git-version.cmake)
if(CMAKE_COMPILER_IS_GNUCXX)
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7.0)
message(FATAL_ERROR "GCC ${CMAKE_CXX_COMPILER_VERSION} is too old.")
endif()
# Warnings
add_compile_options(-Wno-attributes -Wno-enum-compare -Wno-invalid-offsetof)
elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
if(APPLE)
add_compile_options(-stdlib=libc++)
endif()
endif()
if(NOT MSVC)
add_definitions(-DwxGUI)
if($ENV{CI})
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O1") # fix for travis gcc OoM crash. Might be fixed with the move to containers.
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -fexceptions")
add_compile_options(-msse -msse2 -mcx16 -mssse3)
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHa /Zc:throwingNew /D _CRT_SECURE_NO_DEPRECATE=1 /D _CRT_NON_CONFORMING_SWPRINTFS=1 /D _SCL_SECURE_NO_WARNINGS=1")
endif()
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/opt/X11/include")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/opt/X11/include")
endif()
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
#on some Linux distros shm_unlink and similar functions are in librt only
set(ADDITIONAL_LIBS "rt" "X11")
elseif(UNIX)
#it seems like glibc includes the iconv functions we use but other libc
#implementations like the one on OSX don't seem implement them
set(ADDITIONAL_LIBS "iconv")
else()
set(ADDITIONAL_LIBS "")
endif()
If(NOT RPCS3_SRC_DIR)
SET(RPCS3_SRC_DIR ${CMAKE_CURRENT_LIST_DIR})
Message("-- Initializing RPCS3_SRC_DIR=${RPCS3_SRC_DIR}")
Else()
Message("-- Using Custom RPCS3_SRC_DIR=${RPCS3_SRC_DIR}")
EndIf()
set(CMAKE_MODULE_PATH "${RPCS3_SRC_DIR}/cmake_modules")
if(NOT WIN32)
add_definitions(-DGL_GLEXT_PROTOTYPES)
add_definitions(-DGLX_GLXEXT_PROTOTYPES)
endif()
find_package(wxWidgets COMPONENTS core base net aui gl xml REQUIRED)
if(NOT WIN32)
if(APPLE)
find_path(GLEW_INCLUDE_DIR GL/glew.h
/usr/include/GL
/usr/openwin/share/include
/usr/openwin/include
/usr/X11R6/include
/usr/include/X11
/opt/graphics/OpenGL/include
/opt/graphics/OpenGL/contrib/libglew
/usr/local/include
)
endif()
find_package(GLEW REQUIRED)
find_package(ZLIB REQUIRED)
endif()
find_package(OpenGL REQUIRED)
find_package(OpenAL REQUIRED)
find_package(LLVM CONFIG)
include("${wxWidgets_USE_FILE}")
if(APPLE)
set(PLATFORM_ARCH "macosx/x86_64")
elseif(WIN32)
set(PLATFORM_ARCH "Windows/x86_64")
else()
set(PLATFORM_ARCH "linux/x86_64")
endif()
include_directories(
${GLEW_INCLUDE_DIR}
${wxWidgets_INCLUDE_DIRS}
${OPENAL_INCLUDE_DIR}
${LLVM_INCLUDE_DIRS}
"${RPCS3_SRC_DIR}/../ffmpeg/${PLATFORM_ARCH}/include"
"${RPCS3_SRC_DIR}"
"${RPCS3_SRC_DIR}/Loader"
"${RPCS3_SRC_DIR}/Crypto"
"${RPCS3_SRC_DIR}/.."
"${RPCS3_SRC_DIR}/../asmjit/src/asmjit"
)
if(WIN32)
include_directories(BEFORE "${RPCS3_SRC_DIR}/../minidx9/Include")
endif()
if(LLVM_FOUND)
add_definitions(${LLVM_DEFINITIONS})
add_definitions(-DLLVM_AVAILABLE)
if (CMAKE_BUILD_TYPE STREQUAL "Release")
llvm_map_components_to_libnames(LLVM_LIBS mcjit vectorize x86codegen x86disassembler)
else()
llvm_map_components_to_libnames(LLVM_LIBS mcjit vectorize x86codegen x86disassembler mcdisassembler)
endif()
if(MSVC)
set_source_files_properties(${RPCS3_SRC_DIR}/Emu/Cell/PPULLVMRecompiler.cpp PROPERTIES COMPILE_FLAGS /GR-)
else()
set_source_files_properties(${RPCS3_SRC_DIR}/Emu/Cell/PPULLVMRecompiler.cpp PROPERTIES COMPILE_FLAGS -fno-rtti)
endif()
endif()
link_directories("${RPCS3_SRC_DIR}/../ffmpeg/${PLATFORM_ARCH}/lib" "${RPCS3_SRC_DIR}/../asmjit/")
get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
foreach(dir ${dirs})
message(STATUS "dir='${dir}'")
endforeach()
file(
GLOB_RECURSE
RPCS3_SRC
"${RPCS3_SRC_DIR}/rpcs3.cpp"
"${RPCS3_SRC_DIR}/Ini.cpp"
"${RPCS3_SRC_DIR}/../Utilities/GNU.cpp"
"${RPCS3_SRC_DIR}/Emu/*"
"${RPCS3_SRC_DIR}/Gui/*"
"${RPCS3_SRC_DIR}/Loader/*"
"${RPCS3_SRC_DIR}/Crypto/*"
"${RPCS3_SRC_DIR}/../Utilities/*"
)
list(REMOVE_ITEM RPCS3_SRC ${RPCS3_SRC_DIR}/../Utilities/simpleini/ConvertUTF.c)
add_executable(rpcs3 ${RPCS3_SRC})
if(NOT MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_CURRENT_BINARY_DIR}/../asmjit/") #hack because the asmjit cmake file force fno exceptions upd: not sure if vs2015 build is affected
else()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS /NODEFAULTLIB:libc.lib /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib")
endif()
if(WIN32) # I'm not sure we need all of these libs, but we link them in vs
target_link_libraries(rpcs3 odbc32.lib odbccp32.lib comctl32.lib ws2_32.lib shlwapi.lib winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib)
if(LLVM_FOUND)
target_link_libraries(rpcs3 asmjit.lib ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} avformat.lib avcodec.lib avutil.lib swresample.lib swscale.lib ${LLVM_LIBS} ${ADDITIONAL_LIBS})
else()
target_link_libraries(rpcs3 asmjit.lib ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} avformat.lib avcodec.lib avutil.lib swresample.lib swscale.lib ${ADDITIONAL_LIBS})
endif()
else()
if(LLVM_FOUND)
target_link_libraries(rpcs3 asmjit.a ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} ${GLEW_LIBRARY} ${OPENGL_LIBRARIES})
target_link_libraries(rpcs3 libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a ${ZLIB_LIBRARIES} ${LLVM_LIBS} ${ADDITIONAL_LIBS})
else()
target_link_libraries(rpcs3 asmjit.a ${wxWidgets_LIBRARIES} ${OPENAL_LIBRARY} ${GLEW_LIBRARY} ${OPENGL_LIBRARIES})
target_link_libraries(rpcs3 libavformat.a libavcodec.a libavutil.a libswresample.a libswscale.a ${ZLIB_LIBRARIES} ${ADDITIONAL_LIBS})
endif()
endif()
set_target_properties(rpcs3 PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT "${RPCS3_SRC_DIR}/stdafx.h")
cotire(rpcs3)
+975
View File
@@ -0,0 +1,975 @@
/*
* FIPS-197 compliant AES implementation
*
* Copyright (C) 2006-2013, Brainspark B.V.
*
* This file is part of PolarSSL (http://www.polarssl.org)
* Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
*
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/*
* The AES block cipher was designed by Vincent Rijmen and Joan Daemen.
*
* http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf
* http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
*/
#include "stdafx.h"
#include "aes.h"
/*
* 32-bit integer manipulation macros (little endian)
*/
#ifndef GET_UINT32_LE
#define GET_UINT32_LE(n,b,i) \
{ \
(n) = ( (uint32_t) (b)[(i) ] ) \
| ( (uint32_t) (b)[(i) + 1] << 8 ) \
| ( (uint32_t) (b)[(i) + 2] << 16 ) \
| ( (uint32_t) (b)[(i) + 3] << 24 ); \
}
#endif
#ifndef PUT_UINT32_LE
#define PUT_UINT32_LE(n,b,i) \
{ \
(b)[(i) ] = (unsigned char) ( (n) ); \
(b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \
(b)[(i) + 2] = (unsigned char) ( (n) >> 16 ); \
(b)[(i) + 3] = (unsigned char) ( (n) >> 24 ); \
}
#endif
#if defined(POLARSSL_AES_ROM_TABLES)
/*
* Forward S-box
*/
static const unsigned char FSb[256] =
{
0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5,
0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76,
0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0xF0,
0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0,
0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC,
0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15,
0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A,
0x07, 0x12, 0x80, 0xE2, 0xEB, 0x27, 0xB2, 0x75,
0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0,
0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84,
0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B,
0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF,
0xD0, 0xEF, 0xAA, 0xFB, 0x43, 0x4D, 0x33, 0x85,
0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8,
0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5,
0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2,
0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17,
0xC4, 0xA7, 0x7E, 0x3D, 0x64, 0x5D, 0x19, 0x73,
0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88,
0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB,
0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C,
0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79,
0xE7, 0xC8, 0x37, 0x6D, 0x8D, 0xD5, 0x4E, 0xA9,
0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08,
0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6,
0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A,
0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E,
0x61, 0x35, 0x57, 0xB9, 0x86, 0xC1, 0x1D, 0x9E,
0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94,
0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF,
0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68,
0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16
};
/*
* Forward tables
*/
#define FT \
\
V(A5,63,63,C6), V(84,7C,7C,F8), V(99,77,77,EE), V(8D,7B,7B,F6), \
V(0D,F2,F2,FF), V(BD,6B,6B,D6), V(B1,6F,6F,DE), V(54,C5,C5,91), \
V(50,30,30,60), V(03,01,01,02), V(A9,67,67,CE), V(7D,2B,2B,56), \
V(19,FE,FE,E7), V(62,D7,D7,B5), V(E6,AB,AB,4D), V(9A,76,76,EC), \
V(45,CA,CA,8F), V(9D,82,82,1F), V(40,C9,C9,89), V(87,7D,7D,FA), \
V(15,FA,FA,EF), V(EB,59,59,B2), V(C9,47,47,8E), V(0B,F0,F0,FB), \
V(EC,AD,AD,41), V(67,D4,D4,B3), V(FD,A2,A2,5F), V(EA,AF,AF,45), \
V(BF,9C,9C,23), V(F7,A4,A4,53), V(96,72,72,E4), V(5B,C0,C0,9B), \
V(C2,B7,B7,75), V(1C,FD,FD,E1), V(AE,93,93,3D), V(6A,26,26,4C), \
V(5A,36,36,6C), V(41,3F,3F,7E), V(02,F7,F7,F5), V(4F,CC,CC,83), \
V(5C,34,34,68), V(F4,A5,A5,51), V(34,E5,E5,D1), V(08,F1,F1,F9), \
V(93,71,71,E2), V(73,D8,D8,AB), V(53,31,31,62), V(3F,15,15,2A), \
V(0C,04,04,08), V(52,C7,C7,95), V(65,23,23,46), V(5E,C3,C3,9D), \
V(28,18,18,30), V(A1,96,96,37), V(0F,05,05,0A), V(B5,9A,9A,2F), \
V(09,07,07,0E), V(36,12,12,24), V(9B,80,80,1B), V(3D,E2,E2,DF), \
V(26,EB,EB,CD), V(69,27,27,4E), V(CD,B2,B2,7F), V(9F,75,75,EA), \
V(1B,09,09,12), V(9E,83,83,1D), V(74,2C,2C,58), V(2E,1A,1A,34), \
V(2D,1B,1B,36), V(B2,6E,6E,DC), V(EE,5A,5A,B4), V(FB,A0,A0,5B), \
V(F6,52,52,A4), V(4D,3B,3B,76), V(61,D6,D6,B7), V(CE,B3,B3,7D), \
V(7B,29,29,52), V(3E,E3,E3,DD), V(71,2F,2F,5E), V(97,84,84,13), \
V(F5,53,53,A6), V(68,D1,D1,B9), V(00,00,00,00), V(2C,ED,ED,C1), \
V(60,20,20,40), V(1F,FC,FC,E3), V(C8,B1,B1,79), V(ED,5B,5B,B6), \
V(BE,6A,6A,D4), V(46,CB,CB,8D), V(D9,BE,BE,67), V(4B,39,39,72), \
V(DE,4A,4A,94), V(D4,4C,4C,98), V(E8,58,58,B0), V(4A,CF,CF,85), \
V(6B,D0,D0,BB), V(2A,EF,EF,C5), V(E5,AA,AA,4F), V(16,FB,FB,ED), \
V(C5,43,43,86), V(D7,4D,4D,9A), V(55,33,33,66), V(94,85,85,11), \
V(CF,45,45,8A), V(10,F9,F9,E9), V(06,02,02,04), V(81,7F,7F,FE), \
V(F0,50,50,A0), V(44,3C,3C,78), V(BA,9F,9F,25), V(E3,A8,A8,4B), \
V(F3,51,51,A2), V(FE,A3,A3,5D), V(C0,40,40,80), V(8A,8F,8F,05), \
V(AD,92,92,3F), V(BC,9D,9D,21), V(48,38,38,70), V(04,F5,F5,F1), \
V(DF,BC,BC,63), V(C1,B6,B6,77), V(75,DA,DA,AF), V(63,21,21,42), \
V(30,10,10,20), V(1A,FF,FF,E5), V(0E,F3,F3,FD), V(6D,D2,D2,BF), \
V(4C,CD,CD,81), V(14,0C,0C,18), V(35,13,13,26), V(2F,EC,EC,C3), \
V(E1,5F,5F,BE), V(A2,97,97,35), V(CC,44,44,88), V(39,17,17,2E), \
V(57,C4,C4,93), V(F2,A7,A7,55), V(82,7E,7E,FC), V(47,3D,3D,7A), \
V(AC,64,64,C8), V(E7,5D,5D,BA), V(2B,19,19,32), V(95,73,73,E6), \
V(A0,60,60,C0), V(98,81,81,19), V(D1,4F,4F,9E), V(7F,DC,DC,A3), \
V(66,22,22,44), V(7E,2A,2A,54), V(AB,90,90,3B), V(83,88,88,0B), \
V(CA,46,46,8C), V(29,EE,EE,C7), V(D3,B8,B8,6B), V(3C,14,14,28), \
V(79,DE,DE,A7), V(E2,5E,5E,BC), V(1D,0B,0B,16), V(76,DB,DB,AD), \
V(3B,E0,E0,DB), V(56,32,32,64), V(4E,3A,3A,74), V(1E,0A,0A,14), \
V(DB,49,49,92), V(0A,06,06,0C), V(6C,24,24,48), V(E4,5C,5C,B8), \
V(5D,C2,C2,9F), V(6E,D3,D3,BD), V(EF,AC,AC,43), V(A6,62,62,C4), \
V(A8,91,91,39), V(A4,95,95,31), V(37,E4,E4,D3), V(8B,79,79,F2), \
V(32,E7,E7,D5), V(43,C8,C8,8B), V(59,37,37,6E), V(B7,6D,6D,DA), \
V(8C,8D,8D,01), V(64,D5,D5,B1), V(D2,4E,4E,9C), V(E0,A9,A9,49), \
V(B4,6C,6C,D8), V(FA,56,56,AC), V(07,F4,F4,F3), V(25,EA,EA,CF), \
V(AF,65,65,CA), V(8E,7A,7A,F4), V(E9,AE,AE,47), V(18,08,08,10), \
V(D5,BA,BA,6F), V(88,78,78,F0), V(6F,25,25,4A), V(72,2E,2E,5C), \
V(24,1C,1C,38), V(F1,A6,A6,57), V(C7,B4,B4,73), V(51,C6,C6,97), \
V(23,E8,E8,CB), V(7C,DD,DD,A1), V(9C,74,74,E8), V(21,1F,1F,3E), \
V(DD,4B,4B,96), V(DC,BD,BD,61), V(86,8B,8B,0D), V(85,8A,8A,0F), \
V(90,70,70,E0), V(42,3E,3E,7C), V(C4,B5,B5,71), V(AA,66,66,CC), \
V(D8,48,48,90), V(05,03,03,06), V(01,F6,F6,F7), V(12,0E,0E,1C), \
V(A3,61,61,C2), V(5F,35,35,6A), V(F9,57,57,AE), V(D0,B9,B9,69), \
V(91,86,86,17), V(58,C1,C1,99), V(27,1D,1D,3A), V(B9,9E,9E,27), \
V(38,E1,E1,D9), V(13,F8,F8,EB), V(B3,98,98,2B), V(33,11,11,22), \
V(BB,69,69,D2), V(70,D9,D9,A9), V(89,8E,8E,07), V(A7,94,94,33), \
V(B6,9B,9B,2D), V(22,1E,1E,3C), V(92,87,87,15), V(20,E9,E9,C9), \
V(49,CE,CE,87), V(FF,55,55,AA), V(78,28,28,50), V(7A,DF,DF,A5), \
V(8F,8C,8C,03), V(F8,A1,A1,59), V(80,89,89,09), V(17,0D,0D,1A), \
V(DA,BF,BF,65), V(31,E6,E6,D7), V(C6,42,42,84), V(B8,68,68,D0), \
V(C3,41,41,82), V(B0,99,99,29), V(77,2D,2D,5A), V(11,0F,0F,1E), \
V(CB,B0,B0,7B), V(FC,54,54,A8), V(D6,BB,BB,6D), V(3A,16,16,2C)
#define V(a,b,c,d) 0x##a##b##c##d
static const uint32_t FT0[256] = { FT };
#undef V
#define V(a,b,c,d) 0x##b##c##d##a
static const uint32_t FT1[256] = { FT };
#undef V
#define V(a,b,c,d) 0x##c##d##a##b
static const uint32_t FT2[256] = { FT };
#undef V
#define V(a,b,c,d) 0x##d##a##b##c
static const uint32_t FT3[256] = { FT };
#undef V
#undef FT
/*
* Reverse S-box
*/
static const unsigned char RSb[256] =
{
0x52, 0x09, 0x6A, 0xD5, 0x30, 0x36, 0xA5, 0x38,
0xBF, 0x40, 0xA3, 0x9E, 0x81, 0xF3, 0xD7, 0xFB,
0x7C, 0xE3, 0x39, 0x82, 0x9B, 0x2F, 0xFF, 0x87,
0x34, 0x8E, 0x43, 0x44, 0xC4, 0xDE, 0xE9, 0xCB,
0x54, 0x7B, 0x94, 0x32, 0xA6, 0xC2, 0x23, 0x3D,
0xEE, 0x4C, 0x95, 0x0B, 0x42, 0xFA, 0xC3, 0x4E,
0x08, 0x2E, 0xA1, 0x66, 0x28, 0xD9, 0x24, 0xB2,
0x76, 0x5B, 0xA2, 0x49, 0x6D, 0x8B, 0xD1, 0x25,
0x72, 0xF8, 0xF6, 0x64, 0x86, 0x68, 0x98, 0x16,
0xD4, 0xA4, 0x5C, 0xCC, 0x5D, 0x65, 0xB6, 0x92,
0x6C, 0x70, 0x48, 0x50, 0xFD, 0xED, 0xB9, 0xDA,
0x5E, 0x15, 0x46, 0x57, 0xA7, 0x8D, 0x9D, 0x84,
0x90, 0xD8, 0xAB, 0x00, 0x8C, 0xBC, 0xD3, 0x0A,
0xF7, 0xE4, 0x58, 0x05, 0xB8, 0xB3, 0x45, 0x06,
0xD0, 0x2C, 0x1E, 0x8F, 0xCA, 0x3F, 0x0F, 0x02,
0xC1, 0xAF, 0xBD, 0x03, 0x01, 0x13, 0x8A, 0x6B,
0x3A, 0x91, 0x11, 0x41, 0x4F, 0x67, 0xDC, 0xEA,
0x97, 0xF2, 0xCF, 0xCE, 0xF0, 0xB4, 0xE6, 0x73,
0x96, 0xAC, 0x74, 0x22, 0xE7, 0xAD, 0x35, 0x85,
0xE2, 0xF9, 0x37, 0xE8, 0x1C, 0x75, 0xDF, 0x6E,
0x47, 0xF1, 0x1A, 0x71, 0x1D, 0x29, 0xC5, 0x89,
0x6F, 0xB7, 0x62, 0x0E, 0xAA, 0x18, 0xBE, 0x1B,
0xFC, 0x56, 0x3E, 0x4B, 0xC6, 0xD2, 0x79, 0x20,
0x9A, 0xDB, 0xC0, 0xFE, 0x78, 0xCD, 0x5A, 0xF4,
0x1F, 0xDD, 0xA8, 0x33, 0x88, 0x07, 0xC7, 0x31,
0xB1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xEC, 0x5F,
0x60, 0x51, 0x7F, 0xA9, 0x19, 0xB5, 0x4A, 0x0D,
0x2D, 0xE5, 0x7A, 0x9F, 0x93, 0xC9, 0x9C, 0xEF,
0xA0, 0xE0, 0x3B, 0x4D, 0xAE, 0x2A, 0xF5, 0xB0,
0xC8, 0xEB, 0xBB, 0x3C, 0x83, 0x53, 0x99, 0x61,
0x17, 0x2B, 0x04, 0x7E, 0xBA, 0x77, 0xD6, 0x26,
0xE1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0C, 0x7D
};
/*
* Reverse tables
*/
#define RT \
\
V(50,A7,F4,51), V(53,65,41,7E), V(C3,A4,17,1A), V(96,5E,27,3A), \
V(CB,6B,AB,3B), V(F1,45,9D,1F), V(AB,58,FA,AC), V(93,03,E3,4B), \
V(55,FA,30,20), V(F6,6D,76,AD), V(91,76,CC,88), V(25,4C,02,F5), \
V(FC,D7,E5,4F), V(D7,CB,2A,C5), V(80,44,35,26), V(8F,A3,62,B5), \
V(49,5A,B1,DE), V(67,1B,BA,25), V(98,0E,EA,45), V(E1,C0,FE,5D), \
V(02,75,2F,C3), V(12,F0,4C,81), V(A3,97,46,8D), V(C6,F9,D3,6B), \
V(E7,5F,8F,03), V(95,9C,92,15), V(EB,7A,6D,BF), V(DA,59,52,95), \
V(2D,83,BE,D4), V(D3,21,74,58), V(29,69,E0,49), V(44,C8,C9,8E), \
V(6A,89,C2,75), V(78,79,8E,F4), V(6B,3E,58,99), V(DD,71,B9,27), \
V(B6,4F,E1,BE), V(17,AD,88,F0), V(66,AC,20,C9), V(B4,3A,CE,7D), \
V(18,4A,DF,63), V(82,31,1A,E5), V(60,33,51,97), V(45,7F,53,62), \
V(E0,77,64,B1), V(84,AE,6B,BB), V(1C,A0,81,FE), V(94,2B,08,F9), \
V(58,68,48,70), V(19,FD,45,8F), V(87,6C,DE,94), V(B7,F8,7B,52), \
V(23,D3,73,AB), V(E2,02,4B,72), V(57,8F,1F,E3), V(2A,AB,55,66), \
V(07,28,EB,B2), V(03,C2,B5,2F), V(9A,7B,C5,86), V(A5,08,37,D3), \
V(F2,87,28,30), V(B2,A5,BF,23), V(BA,6A,03,02), V(5C,82,16,ED), \
V(2B,1C,CF,8A), V(92,B4,79,A7), V(F0,F2,07,F3), V(A1,E2,69,4E), \
V(CD,F4,DA,65), V(D5,BE,05,06), V(1F,62,34,D1), V(8A,FE,A6,C4), \
V(9D,53,2E,34), V(A0,55,F3,A2), V(32,E1,8A,05), V(75,EB,F6,A4), \
V(39,EC,83,0B), V(AA,EF,60,40), V(06,9F,71,5E), V(51,10,6E,BD), \
V(F9,8A,21,3E), V(3D,06,DD,96), V(AE,05,3E,DD), V(46,BD,E6,4D), \
V(B5,8D,54,91), V(05,5D,C4,71), V(6F,D4,06,04), V(FF,15,50,60), \
V(24,FB,98,19), V(97,E9,BD,D6), V(CC,43,40,89), V(77,9E,D9,67), \
V(BD,42,E8,B0), V(88,8B,89,07), V(38,5B,19,E7), V(DB,EE,C8,79), \
V(47,0A,7C,A1), V(E9,0F,42,7C), V(C9,1E,84,F8), V(00,00,00,00), \
V(83,86,80,09), V(48,ED,2B,32), V(AC,70,11,1E), V(4E,72,5A,6C), \
V(FB,FF,0E,FD), V(56,38,85,0F), V(1E,D5,AE,3D), V(27,39,2D,36), \
V(64,D9,0F,0A), V(21,A6,5C,68), V(D1,54,5B,9B), V(3A,2E,36,24), \
V(B1,67,0A,0C), V(0F,E7,57,93), V(D2,96,EE,B4), V(9E,91,9B,1B), \
V(4F,C5,C0,80), V(A2,20,DC,61), V(69,4B,77,5A), V(16,1A,12,1C), \
V(0A,BA,93,E2), V(E5,2A,A0,C0), V(43,E0,22,3C), V(1D,17,1B,12), \
V(0B,0D,09,0E), V(AD,C7,8B,F2), V(B9,A8,B6,2D), V(C8,A9,1E,14), \
V(85,19,F1,57), V(4C,07,75,AF), V(BB,DD,99,EE), V(FD,60,7F,A3), \
V(9F,26,01,F7), V(BC,F5,72,5C), V(C5,3B,66,44), V(34,7E,FB,5B), \
V(76,29,43,8B), V(DC,C6,23,CB), V(68,FC,ED,B6), V(63,F1,E4,B8), \
V(CA,DC,31,D7), V(10,85,63,42), V(40,22,97,13), V(20,11,C6,84), \
V(7D,24,4A,85), V(F8,3D,BB,D2), V(11,32,F9,AE), V(6D,A1,29,C7), \
V(4B,2F,9E,1D), V(F3,30,B2,DC), V(EC,52,86,0D), V(D0,E3,C1,77), \
V(6C,16,B3,2B), V(99,B9,70,A9), V(FA,48,94,11), V(22,64,E9,47), \
V(C4,8C,FC,A8), V(1A,3F,F0,A0), V(D8,2C,7D,56), V(EF,90,33,22), \
V(C7,4E,49,87), V(C1,D1,38,D9), V(FE,A2,CA,8C), V(36,0B,D4,98), \
V(CF,81,F5,A6), V(28,DE,7A,A5), V(26,8E,B7,DA), V(A4,BF,AD,3F), \
V(E4,9D,3A,2C), V(0D,92,78,50), V(9B,CC,5F,6A), V(62,46,7E,54), \
V(C2,13,8D,F6), V(E8,B8,D8,90), V(5E,F7,39,2E), V(F5,AF,C3,82), \
V(BE,80,5D,9F), V(7C,93,D0,69), V(A9,2D,D5,6F), V(B3,12,25,CF), \
V(3B,99,AC,C8), V(A7,7D,18,10), V(6E,63,9C,E8), V(7B,BB,3B,DB), \
V(09,78,26,CD), V(F4,18,59,6E), V(01,B7,9A,EC), V(A8,9A,4F,83), \
V(65,6E,95,E6), V(7E,E6,FF,AA), V(08,CF,BC,21), V(E6,E8,15,EF), \
V(D9,9B,E7,BA), V(CE,36,6F,4A), V(D4,09,9F,EA), V(D6,7C,B0,29), \
V(AF,B2,A4,31), V(31,23,3F,2A), V(30,94,A5,C6), V(C0,66,A2,35), \
V(37,BC,4E,74), V(A6,CA,82,FC), V(B0,D0,90,E0), V(15,D8,A7,33), \
V(4A,98,04,F1), V(F7,DA,EC,41), V(0E,50,CD,7F), V(2F,F6,91,17), \
V(8D,D6,4D,76), V(4D,B0,EF,43), V(54,4D,AA,CC), V(DF,04,96,E4), \
V(E3,B5,D1,9E), V(1B,88,6A,4C), V(B8,1F,2C,C1), V(7F,51,65,46), \
V(04,EA,5E,9D), V(5D,35,8C,01), V(73,74,87,FA), V(2E,41,0B,FB), \
V(5A,1D,67,B3), V(52,D2,DB,92), V(33,56,10,E9), V(13,47,D6,6D), \
V(8C,61,D7,9A), V(7A,0C,A1,37), V(8E,14,F8,59), V(89,3C,13,EB), \
V(EE,27,A9,CE), V(35,C9,61,B7), V(ED,E5,1C,E1), V(3C,B1,47,7A), \
V(59,DF,D2,9C), V(3F,73,F2,55), V(79,CE,14,18), V(BF,37,C7,73), \
V(EA,CD,F7,53), V(5B,AA,FD,5F), V(14,6F,3D,DF), V(86,DB,44,78), \
V(81,F3,AF,CA), V(3E,C4,68,B9), V(2C,34,24,38), V(5F,40,A3,C2), \
V(72,C3,1D,16), V(0C,25,E2,BC), V(8B,49,3C,28), V(41,95,0D,FF), \
V(71,01,A8,39), V(DE,B3,0C,08), V(9C,E4,B4,D8), V(90,C1,56,64), \
V(61,84,CB,7B), V(70,B6,32,D5), V(74,5C,6C,48), V(42,57,B8,D0)
#define V(a,b,c,d) 0x##a##b##c##d
static const uint32_t RT0[256] = { RT };
#undef V
#define V(a,b,c,d) 0x##b##c##d##a
static const uint32_t RT1[256] = { RT };
#undef V
#define V(a,b,c,d) 0x##c##d##a##b
static const uint32_t RT2[256] = { RT };
#undef V
#define V(a,b,c,d) 0x##d##a##b##c
static const uint32_t RT3[256] = { RT };
#undef V
#undef RT
/*
* Round constants
*/
static const uint32_t RCON[10] =
{
0x00000001, 0x00000002, 0x00000004, 0x00000008,
0x00000010, 0x00000020, 0x00000040, 0x00000080,
0x0000001B, 0x00000036
};
#else
/*
* Forward S-box & tables
*/
static unsigned char FSb[256];
static uint32_t FT0[256];
static uint32_t FT1[256];
static uint32_t FT2[256];
static uint32_t FT3[256];
/*
* Reverse S-box & tables
*/
static unsigned char RSb[256];
static uint32_t RT0[256];
static uint32_t RT1[256];
static uint32_t RT2[256];
static uint32_t RT3[256];
/*
* Round constants
*/
static uint32_t RCON[10];
/*
* Tables generation code
*/
#define ROTL8(x) ( ( x << 8 ) & 0xFFFFFFFF ) | ( x >> 24 )
#define XTIME(x) ( ( x << 1 ) ^ ( ( x & 0x80 ) ? 0x1B : 0x00 ) )
#define MUL(x,y) ( ( x && y ) ? pow[(log[x]+log[y]) % 255] : 0 )
static int aes_init_done = 0;
static void aes_gen_tables( void )
{
int i, x, y, z;
int pow[256];
int log[256];
/*
* compute pow and log tables over GF(2^8)
*/
for( i = 0, x = 1; i < 256; i++ )
{
pow[i] = x;
log[x] = i;
x = ( x ^ XTIME( x ) ) & 0xFF;
}
/*
* calculate the round constants
*/
for( i = 0, x = 1; i < 10; i++ )
{
RCON[i] = (uint32_t) x;
x = XTIME( x ) & 0xFF;
}
/*
* generate the forward and reverse S-boxes
*/
FSb[0x00] = 0x63;
RSb[0x63] = 0x00;
for( i = 1; i < 256; i++ )
{
x = pow[255 - log[i]];
y = x; y = ( (y << 1) | (y >> 7) ) & 0xFF;
x ^= y; y = ( (y << 1) | (y >> 7) ) & 0xFF;
x ^= y; y = ( (y << 1) | (y >> 7) ) & 0xFF;
x ^= y; y = ( (y << 1) | (y >> 7) ) & 0xFF;
x ^= y ^ 0x63;
FSb[i] = (unsigned char) x;
RSb[x] = (unsigned char) i;
}
/*
* generate the forward and reverse tables
*/
for( i = 0; i < 256; i++ )
{
x = FSb[i];
y = XTIME( x ) & 0xFF;
z = ( y ^ x ) & 0xFF;
FT0[i] = ( (uint32_t) y ) ^
( (uint32_t) x << 8 ) ^
( (uint32_t) x << 16 ) ^
( (uint32_t) z << 24 );
FT1[i] = ROTL8( FT0[i] );
FT2[i] = ROTL8( FT1[i] );
FT3[i] = ROTL8( FT2[i] );
x = RSb[i];
RT0[i] = ( (uint32_t) MUL( 0x0E, x ) ) ^
( (uint32_t) MUL( 0x09, x ) << 8 ) ^
( (uint32_t) MUL( 0x0D, x ) << 16 ) ^
( (uint32_t) MUL( 0x0B, x ) << 24 );
RT1[i] = ROTL8( RT0[i] );
RT2[i] = ROTL8( RT1[i] );
RT3[i] = ROTL8( RT2[i] );
}
}
#endif
/*
* AES key schedule (encryption)
*/
int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int keysize )
{
unsigned int i;
uint32_t *RK;
#if !defined(POLARSSL_AES_ROM_TABLES)
if( aes_init_done == 0 )
{
aes_gen_tables();
aes_init_done = 1;
}
#endif
switch( keysize )
{
case 128: ctx->nr = 10; break;
case 192: ctx->nr = 12; break;
case 256: ctx->nr = 14; break;
default : return( POLARSSL_ERR_AES_INVALID_KEY_LENGTH );
}
ctx->rk = RK = ctx->buf;
for( i = 0; i < (keysize >> 5); i++ )
{
GET_UINT32_LE( RK[i], key, i << 2 );
}
switch( ctx->nr )
{
case 10:
for( i = 0; i < 10; i++, RK += 4 )
{
RK[4] = RK[0] ^ RCON[i] ^
( (uint32_t) FSb[ ( RK[3] >> 8 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( RK[3] >> 16 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( RK[3] >> 24 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( RK[3] ) & 0xFF ] << 24 );
RK[5] = RK[1] ^ RK[4];
RK[6] = RK[2] ^ RK[5];
RK[7] = RK[3] ^ RK[6];
}
break;
case 12:
for( i = 0; i < 8; i++, RK += 6 )
{
RK[6] = RK[0] ^ RCON[i] ^
( (uint32_t) FSb[ ( RK[5] >> 8 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( RK[5] >> 16 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( RK[5] >> 24 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( RK[5] ) & 0xFF ] << 24 );
RK[7] = RK[1] ^ RK[6];
RK[8] = RK[2] ^ RK[7];
RK[9] = RK[3] ^ RK[8];
RK[10] = RK[4] ^ RK[9];
RK[11] = RK[5] ^ RK[10];
}
break;
case 14:
for( i = 0; i < 7; i++, RK += 8 )
{
RK[8] = RK[0] ^ RCON[i] ^
( (uint32_t) FSb[ ( RK[7] >> 8 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( RK[7] >> 16 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( RK[7] >> 24 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( RK[7] ) & 0xFF ] << 24 );
RK[9] = RK[1] ^ RK[8];
RK[10] = RK[2] ^ RK[9];
RK[11] = RK[3] ^ RK[10];
RK[12] = RK[4] ^
( (uint32_t) FSb[ ( RK[11] ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( RK[11] >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( RK[11] >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( RK[11] >> 24 ) & 0xFF ] << 24 );
RK[13] = RK[5] ^ RK[12];
RK[14] = RK[6] ^ RK[13];
RK[15] = RK[7] ^ RK[14];
}
break;
default:
break;
}
return( 0 );
}
/*
* AES key schedule (decryption)
*/
int aes_setkey_dec( aes_context *ctx, const unsigned char *key, unsigned int keysize )
{
int i, j;
aes_context cty;
uint32_t *RK;
uint32_t *SK;
int ret;
switch( keysize )
{
case 128: ctx->nr = 10; break;
case 192: ctx->nr = 12; break;
case 256: ctx->nr = 14; break;
default : return( POLARSSL_ERR_AES_INVALID_KEY_LENGTH );
}
ctx->rk = RK = ctx->buf;
ret = aes_setkey_enc( &cty, key, keysize );
if( ret != 0 )
return( ret );
SK = cty.rk + cty.nr * 4;
*RK++ = *SK++;
*RK++ = *SK++;
*RK++ = *SK++;
*RK++ = *SK++;
for( i = ctx->nr - 1, SK -= 8; i > 0; i--, SK -= 8 )
{
for( j = 0; j < 4; j++, SK++ )
{
*RK++ = RT0[ FSb[ ( *SK ) & 0xFF ] ] ^
RT1[ FSb[ ( *SK >> 8 ) & 0xFF ] ] ^
RT2[ FSb[ ( *SK >> 16 ) & 0xFF ] ] ^
RT3[ FSb[ ( *SK >> 24 ) & 0xFF ] ];
}
}
*RK++ = *SK++;
*RK++ = *SK++;
*RK++ = *SK++;
*RK++ = *SK++;
memset( &cty, 0, sizeof( aes_context ) );
return( 0 );
}
#define AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \
{ \
X0 = *RK++ ^ FT0[ ( Y0 ) & 0xFF ] ^ \
FT1[ ( Y1 >> 8 ) & 0xFF ] ^ \
FT2[ ( Y2 >> 16 ) & 0xFF ] ^ \
FT3[ ( Y3 >> 24 ) & 0xFF ]; \
\
X1 = *RK++ ^ FT0[ ( Y1 ) & 0xFF ] ^ \
FT1[ ( Y2 >> 8 ) & 0xFF ] ^ \
FT2[ ( Y3 >> 16 ) & 0xFF ] ^ \
FT3[ ( Y0 >> 24 ) & 0xFF ]; \
\
X2 = *RK++ ^ FT0[ ( Y2 ) & 0xFF ] ^ \
FT1[ ( Y3 >> 8 ) & 0xFF ] ^ \
FT2[ ( Y0 >> 16 ) & 0xFF ] ^ \
FT3[ ( Y1 >> 24 ) & 0xFF ]; \
\
X3 = *RK++ ^ FT0[ ( Y3 ) & 0xFF ] ^ \
FT1[ ( Y0 >> 8 ) & 0xFF ] ^ \
FT2[ ( Y1 >> 16 ) & 0xFF ] ^ \
FT3[ ( Y2 >> 24 ) & 0xFF ]; \
}
#define AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3) \
{ \
X0 = *RK++ ^ RT0[ ( Y0 ) & 0xFF ] ^ \
RT1[ ( Y3 >> 8 ) & 0xFF ] ^ \
RT2[ ( Y2 >> 16 ) & 0xFF ] ^ \
RT3[ ( Y1 >> 24 ) & 0xFF ]; \
\
X1 = *RK++ ^ RT0[ ( Y1 ) & 0xFF ] ^ \
RT1[ ( Y0 >> 8 ) & 0xFF ] ^ \
RT2[ ( Y3 >> 16 ) & 0xFF ] ^ \
RT3[ ( Y2 >> 24 ) & 0xFF ]; \
\
X2 = *RK++ ^ RT0[ ( Y2 ) & 0xFF ] ^ \
RT1[ ( Y1 >> 8 ) & 0xFF ] ^ \
RT2[ ( Y0 >> 16 ) & 0xFF ] ^ \
RT3[ ( Y3 >> 24 ) & 0xFF ]; \
\
X3 = *RK++ ^ RT0[ ( Y3 ) & 0xFF ] ^ \
RT1[ ( Y2 >> 8 ) & 0xFF ] ^ \
RT2[ ( Y1 >> 16 ) & 0xFF ] ^ \
RT3[ ( Y0 >> 24 ) & 0xFF ]; \
}
/*
* AES-ECB block encryption/decryption
*/
int aes_crypt_ecb( aes_context *ctx,
int mode,
const unsigned char input[16],
unsigned char output[16] )
{
int i;
uint32_t *RK, X0, X1, X2, X3, Y0, Y1, Y2, Y3;
RK = ctx->rk;
GET_UINT32_LE( X0, input, 0 ); X0 ^= *RK++;
GET_UINT32_LE( X1, input, 4 ); X1 ^= *RK++;
GET_UINT32_LE( X2, input, 8 ); X2 ^= *RK++;
GET_UINT32_LE( X3, input, 12 ); X3 ^= *RK++;
if( mode == AES_DECRYPT )
{
for( i = (ctx->nr >> 1) - 1; i > 0; i-- )
{
AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 );
AES_RROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 );
}
AES_RROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 );
X0 = *RK++ ^ \
( (uint32_t) RSb[ ( Y0 ) & 0xFF ] ) ^
( (uint32_t) RSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) RSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) RSb[ ( Y1 >> 24 ) & 0xFF ] << 24 );
X1 = *RK++ ^ \
( (uint32_t) RSb[ ( Y1 ) & 0xFF ] ) ^
( (uint32_t) RSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) RSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) RSb[ ( Y2 >> 24 ) & 0xFF ] << 24 );
X2 = *RK++ ^ \
( (uint32_t) RSb[ ( Y2 ) & 0xFF ] ) ^
( (uint32_t) RSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) RSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) RSb[ ( Y3 >> 24 ) & 0xFF ] << 24 );
X3 = *RK++ ^ \
( (uint32_t) RSb[ ( Y3 ) & 0xFF ] ) ^
( (uint32_t) RSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) RSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) RSb[ ( Y0 >> 24 ) & 0xFF ] << 24 );
}
else /* AES_ENCRYPT */
{
for( i = (ctx->nr >> 1) - 1; i > 0; i-- )
{
AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 );
AES_FROUND( X0, X1, X2, X3, Y0, Y1, Y2, Y3 );
}
AES_FROUND( Y0, Y1, Y2, Y3, X0, X1, X2, X3 );
X0 = *RK++ ^ \
( (uint32_t) FSb[ ( Y0 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y1 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y2 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y3 >> 24 ) & 0xFF ] << 24 );
X1 = *RK++ ^ \
( (uint32_t) FSb[ ( Y1 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y2 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y3 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y0 >> 24 ) & 0xFF ] << 24 );
X2 = *RK++ ^ \
( (uint32_t) FSb[ ( Y2 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y3 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y0 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y1 >> 24 ) & 0xFF ] << 24 );
X3 = *RK++ ^ \
( (uint32_t) FSb[ ( Y3 ) & 0xFF ] ) ^
( (uint32_t) FSb[ ( Y0 >> 8 ) & 0xFF ] << 8 ) ^
( (uint32_t) FSb[ ( Y1 >> 16 ) & 0xFF ] << 16 ) ^
( (uint32_t) FSb[ ( Y2 >> 24 ) & 0xFF ] << 24 );
}
PUT_UINT32_LE( X0, output, 0 );
PUT_UINT32_LE( X1, output, 4 );
PUT_UINT32_LE( X2, output, 8 );
PUT_UINT32_LE( X3, output, 12 );
return( 0 );
}
/*
* AES-CBC buffer encryption/decryption
*/
int aes_crypt_cbc( aes_context *ctx,
int mode,
size_t length,
unsigned char iv[16],
const unsigned char *input,
unsigned char *output )
{
int i;
unsigned char temp[16];
if( length % 16 )
return( POLARSSL_ERR_AES_INVALID_INPUT_LENGTH );
if( mode == AES_DECRYPT )
{
while( length > 0 )
{
memcpy( temp, input, 16 );
aes_crypt_ecb( ctx, mode, input, output );
for( i = 0; i < 16; i++ )
output[i] = (unsigned char)( output[i] ^ iv[i] );
memcpy( iv, temp, 16 );
input += 16;
output += 16;
length -= 16;
}
}
else
{
while( length > 0 )
{
for( i = 0; i < 16; i++ )
output[i] = (unsigned char)( input[i] ^ iv[i] );
aes_crypt_ecb( ctx, mode, output, output );
memcpy( iv, output, 16 );
input += 16;
output += 16;
length -= 16;
}
}
return( 0 );
}
/*
* AES-CFB128 buffer encryption/decryption
*/
int aes_crypt_cfb128( aes_context *ctx,
int mode,
size_t length,
size_t *iv_off,
unsigned char iv[16],
const unsigned char *input,
unsigned char *output )
{
int c;
size_t n = *iv_off;
if( mode == AES_DECRYPT )
{
while( length-- )
{
if( n == 0 )
aes_crypt_ecb( ctx, AES_ENCRYPT, iv, iv );
c = *input++;
*output++ = (unsigned char)( c ^ iv[n] );
iv[n] = (unsigned char) c;
n = (n + 1) & 0x0F;
}
}
else
{
while( length-- )
{
if( n == 0 )
aes_crypt_ecb( ctx, AES_ENCRYPT, iv, iv );
iv[n] = *output++ = (unsigned char)( iv[n] ^ *input++ );
n = (n + 1) & 0x0F;
}
}
*iv_off = n;
return( 0 );
}
/*
* AES-CTR buffer encryption/decryption
*/
int aes_crypt_ctr( aes_context *ctx,
size_t length,
size_t *nc_off,
unsigned char nonce_counter[16],
unsigned char stream_block[16],
const unsigned char *input,
unsigned char *output )
{
int c, i;
size_t n = *nc_off;
while( length-- )
{
if( n == 0 ) {
aes_crypt_ecb( ctx, AES_ENCRYPT, nonce_counter, stream_block );
for( i = 16; i > 0; i-- )
if( ++nonce_counter[i - 1] != 0 )
break;
}
c = *input++;
*output++ = (unsigned char)( c ^ stream_block[n] );
n = (n + 1) & 0x0F;
}
*nc_off = n;
return( 0 );
}
/* AES-CMAC */
unsigned char const_Rb[16] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87
};
unsigned char const_Zero[16] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
void leftshift_onebit(unsigned char *input, unsigned char *output)
{
int i;
unsigned char overflow = 0;
for (i = 15; i >= 0; i--)
{
output[i] = input[i] << 1;
output[i] |= overflow;
overflow = (input[i] & 0x80) ? 1 : 0;
}
}
void xor_128(unsigned char *a, unsigned char *b, unsigned char *out)
{
int i;
for (i = 0; i < 16; i++)
out[i] = a[i] ^ b[i];
}
void generate_subkey(aes_context *ctx, unsigned char *K1, unsigned char *K2)
{
unsigned char L[16];
unsigned char Z[16];
unsigned char tmp[16];
int i;
for (i = 0; i < 16; i++) Z[i] = 0;
aes_crypt_ecb(ctx, AES_ENCRYPT, Z, L);
if ((L[0] & 0x80) == 0)
{
leftshift_onebit(L,K1);
} else {
leftshift_onebit(L,tmp);
xor_128(tmp,const_Rb,K1);
}
if ((K1[0] & 0x80) == 0)
{
leftshift_onebit(K1,K2);
} else {
leftshift_onebit(K1,tmp);
xor_128(tmp,const_Rb,K2);
}
}
void padding (unsigned char *lastb, unsigned char *pad, int length)
{
int i;
for (i = 0; i < 16; i++)
{
if (i < length)
pad[i] = lastb[i];
else if (i == length)
pad[i] = 0x80;
else
pad[i] = 0x00;
}
}
void aes_cmac(aes_context *ctx, int length, unsigned char *input, unsigned char *output)
{
unsigned char X[16], Y[16], M_last[16], padded[16];
unsigned char K1[16], K2[16];
int n, i, flag;
generate_subkey(ctx, K1, K2);
n = (length + 15) / 16;
if (n == 0)
{
n = 1;
flag = 0;
} else {
if ((length % 16) == 0)
flag = 1;
else
flag = 0;
}
if (flag)
{
xor_128(&input[16 * (n - 1)], K1, M_last);
} else {
padding(&input[16 * (n - 1)], padded, length % 16);
xor_128(padded, K2, M_last);
}
for (i = 0; i < 16; i++) X[i] = 0;
for (i = 0; i < n - 1; i++)
{
xor_128(X, &input[16*i], Y);
aes_crypt_ecb(ctx, AES_ENCRYPT, Y, X);
}
xor_128(X,M_last,Y);
aes_crypt_ecb(ctx, AES_ENCRYPT, Y, X);
for (i = 0; i < 16; i++)
output[i] = X[i];
}
+179
View File
@@ -0,0 +1,179 @@
#pragma once
/**
* \file aes.h
*
* \brief AES block cipher
*
* Copyright (C) 2006-2013, Brainspark B.V.
*
* This file is part of PolarSSL (http://www.polarssl.org)
* Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
*
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <string.h>
#ifdef _MSC_VER
#include <basetsd.h>
typedef UINT32 uint32_t;
#else
#include <inttypes.h>
#endif
#define AES_ENCRYPT 1
#define AES_DECRYPT 0
#define POLARSSL_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */
#define POLARSSL_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */
// Regular implementation
//
/**
* \brief AES context structure
*/
typedef struct
{
int nr; /*!< number of rounds */
uint32_t *rk; /*!< AES round keys */
uint32_t buf[68]; /*!< unaligned data */
}
aes_context;
#ifdef __cplusplus
extern "C" {
#endif
/**
* \brief AES key schedule (encryption)
*
* \param ctx AES context to be initialized
* \param key encryption key
* \param keysize must be 128, 192 or 256
*
* \return 0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH
*/
int aes_setkey_enc( aes_context *ctx, const unsigned char *key, unsigned int keysize );
/**
* \brief AES key schedule (decryption)
*
* \param ctx AES context to be initialized
* \param key decryption key
* \param keysize must be 128, 192 or 256
*
* \return 0 if successful, or POLARSSL_ERR_AES_INVALID_KEY_LENGTH
*/
int aes_setkey_dec( aes_context *ctx, const unsigned char *key, unsigned int keysize );
/**
* \brief AES-ECB block encryption/decryption
*
* \param ctx AES context
* \param mode AES_ENCRYPT or AES_DECRYPT
* \param input 16-byte input block
* \param output 16-byte output block
*
* \return 0 if successful
*/
int aes_crypt_ecb( aes_context *ctx,
int mode,
const unsigned char input[16],
unsigned char output[16] );
/**
* \brief AES-CBC buffer encryption/decryption
* Length should be a multiple of the block
* size (16 bytes)
*
* \param ctx AES context
* \param mode AES_ENCRYPT or AES_DECRYPT
* \param length length of the input data
* \param iv initialization vector (updated after use)
* \param input buffer holding the input data
* \param output buffer holding the output data
*
* \return 0 if successful, or POLARSSL_ERR_AES_INVALID_INPUT_LENGTH
*/
int aes_crypt_cbc( aes_context *ctx,
int mode,
size_t length,
unsigned char iv[16],
const unsigned char *input,
unsigned char *output );
/**
* \brief AES-CFB128 buffer encryption/decryption.
*
* Note: Due to the nature of CFB you should use the same key schedule for
* both encryption and decryption. So a context initialized with
* aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT.
*
* both
* \param ctx AES context
* \param mode AES_ENCRYPT or AES_DECRYPT
* \param length length of the input data
* \param iv_off offset in IV (updated after use)
* \param iv initialization vector (updated after use)
* \param input buffer holding the input data
* \param output buffer holding the output data
*
* \return 0 if successful
*/
int aes_crypt_cfb128( aes_context *ctx,
int mode,
size_t length,
size_t *iv_off,
unsigned char iv[16],
const unsigned char *input,
unsigned char *output );
/**
* \brief AES-CTR buffer encryption/decryption
*
* Warning: You have to keep the maximum use of your counter in mind!
*
* Note: Due to the nature of CTR you should use the same key schedule for
* both encryption and decryption. So a context initialized with
* aes_setkey_enc() for both AES_ENCRYPT and AES_DECRYPT.
*
* \param length The length of the data
* \param nc_off The offset in the current stream_block (for resuming
* within current cipher stream). The offset pointer to
* should be 0 at the start of a stream.
* \param nonce_counter The 128-bit nonce and counter.
* \param stream_block The saved stream-block for resuming. Is overwritten
* by the function.
* \param input The input data stream
* \param output The output data stream
*
* \return 0 if successful
*/
int aes_crypt_ctr( aes_context *ctx,
size_t length,
size_t *nc_off,
unsigned char nonce_counter[16],
unsigned char stream_block[16],
const unsigned char *input,
unsigned char *output );
void aes_cmac(aes_context *ctx, int length, unsigned char *input, unsigned char *output);
#ifdef __cplusplus
}
#endif
+548
View File
@@ -0,0 +1,548 @@
// Copyright 2007,2008,2010 Segher Boessenkool <segher@kernel.crashing.org>
// Licensed under the terms of the GNU GPL, version 2
// http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
#include "stdafx.h"
#include "utils.h"
void bn_print(char *name, u8 *a, u32 n)
{
u32 i;
printf("%s = ", name);
for (i = 0; i < n; i++)
printf("%02x", a[i]);
printf("\n");
}
static void bn_zero(u8 *d, u32 n)
{
memset(d, 0, n);
}
void bn_copy(u8 *d, u8 *a, u32 n)
{
memcpy(d, a, n);
}
int bn_compare(u8 *a, u8 *b, u32 n)
{
u32 i;
for (i = 0; i < n; i++) {
if (a[i] < b[i])
return -1;
if (a[i] > b[i])
return 1;
}
return 0;
}
static u8 bn_add_1(u8 *d, u8 *a, u8 *b, u32 n)
{
u32 i;
u32 dig;
u8 c;
c = 0;
for (i = n - 1; i < n; i--) {
dig = a[i] + b[i] + c;
c = dig >> 8;
d[i] = dig;
}
return c;
}
static u8 bn_sub_1(u8 *d, u8 *a, u8 *b, u32 n)
{
u32 i;
u32 dig;
u8 c;
c = 1;
for (i = n - 1; i < n; i--) {
dig = a[i] + 255 - b[i] + c;
c = dig >> 8;
d[i] = dig;
}
return 1 - c;
}
void bn_reduce(u8 *d, u8 *N, u32 n)
{
if (bn_compare(d, N, n) >= 0)
bn_sub_1(d, d, N, n);
}
void bn_add(u8 *d, u8 *a, u8 *b, u8 *N, u32 n)
{
if (bn_add_1(d, a, b, n))
bn_sub_1(d, d, N, n);
bn_reduce(d, N, n);
}
void bn_sub(u8 *d, u8 *a, u8 *b, u8 *N, u32 n)
{
if (bn_sub_1(d, a, b, n))
bn_add_1(d, d, N, n);
}
static const u8 inv256[0x80] = {
0x01, 0xab, 0xcd, 0xb7, 0x39, 0xa3, 0xc5, 0xef,
0xf1, 0x1b, 0x3d, 0xa7, 0x29, 0x13, 0x35, 0xdf,
0xe1, 0x8b, 0xad, 0x97, 0x19, 0x83, 0xa5, 0xcf,
0xd1, 0xfb, 0x1d, 0x87, 0x09, 0xf3, 0x15, 0xbf,
0xc1, 0x6b, 0x8d, 0x77, 0xf9, 0x63, 0x85, 0xaf,
0xb1, 0xdb, 0xfd, 0x67, 0xe9, 0xd3, 0xf5, 0x9f,
0xa1, 0x4b, 0x6d, 0x57, 0xd9, 0x43, 0x65, 0x8f,
0x91, 0xbb, 0xdd, 0x47, 0xc9, 0xb3, 0xd5, 0x7f,
0x81, 0x2b, 0x4d, 0x37, 0xb9, 0x23, 0x45, 0x6f,
0x71, 0x9b, 0xbd, 0x27, 0xa9, 0x93, 0xb5, 0x5f,
0x61, 0x0b, 0x2d, 0x17, 0x99, 0x03, 0x25, 0x4f,
0x51, 0x7b, 0x9d, 0x07, 0x89, 0x73, 0x95, 0x3f,
0x41, 0xeb, 0x0d, 0xf7, 0x79, 0xe3, 0x05, 0x2f,
0x31, 0x5b, 0x7d, 0xe7, 0x69, 0x53, 0x75, 0x1f,
0x21, 0xcb, 0xed, 0xd7, 0x59, 0xc3, 0xe5, 0x0f,
0x11, 0x3b, 0x5d, 0xc7, 0x49, 0x33, 0x55, 0xff,
};
static void bn_mon_muladd_dig(u8 *d, u8 *a, u8 b, u8 *N, u32 n)
{
u32 dig;
u32 i;
u8 z = -(d[n-1] + a[n-1]*b) * inv256[N[n-1]/2];
dig = d[n-1] + a[n-1]*b + N[n-1]*z;
dig >>= 8;
for (i = n - 2; i < n; i--) {
dig += d[i] + a[i]*b + N[i]*z;
d[i+1] = dig;
dig >>= 8;
}
d[0] = dig;
dig >>= 8;
if (dig)
bn_sub_1(d, d, N, n);
bn_reduce(d, N, n);
}
void bn_mon_mul(u8 *d, u8 *a, u8 *b, u8 *N, u32 n)
{
u8 t[512];
u32 i;
bn_zero(t, n);
for (i = n - 1; i < n; i--)
bn_mon_muladd_dig(t, a, b[i], N, n);
bn_copy(d, t, n);
}
void bn_to_mon(u8 *d, u8 *N, u32 n)
{
u32 i;
for (i = 0; i < 8*n; i++)
bn_add(d, d, d, N, n);
}
void bn_from_mon(u8 *d, u8 *N, u32 n)
{
u8 t[512];
bn_zero(t, n);
t[n-1] = 1;
bn_mon_mul(d, d, t, N, n);
}
static void bn_mon_exp(u8 *d, u8 *a, u8 *N, u32 n, u8 *e, u32 en)
{
u8 t[512];
u32 i;
u8 mask;
bn_zero(d, n);
d[n-1] = 1;
bn_to_mon(d, N, n);
for (i = 0; i < en; i++)
for (mask = 0x80; mask != 0; mask >>= 1) {
bn_mon_mul(t, d, d, N, n);
if ((e[i] & mask) != 0)
bn_mon_mul(d, t, a, N, n);
else
bn_copy(d, t, n);
}
}
void bn_mon_inv(u8 *d, u8 *a, u8 *N, u32 n)
{
u8 t[512], s[512];
bn_zero(s, n);
s[n-1] = 2;
bn_sub_1(t, N, s, n);
bn_mon_exp(d, a, N, n, t, n);
}
void bn_copy(u8 *d, u8 *a, u32 n);
int bn_compare(u8 *a, u8 *b, u32 n);
void bn_reduce(u8 *d, u8 *N, u32 n);
void bn_add(u8 *d, u8 *a, u8 *b, u8 *N, u32 n);
void bn_sub(u8 *d, u8 *a, u8 *b, u8 *N, u32 n);
void bn_to_mon(u8 *d, u8 *N, u32 n);
void bn_from_mon(u8 *d, u8 *N, u32 n);
void bn_mon_mul(u8 *d, u8 *a, u8 *b, u8 *N, u32 n);
void bn_mon_inv(u8 *d, u8 *a, u8 *N, u32 n);
struct point {
u8 x[20];
u8 y[20];
};
static u8 ec_p[20];
static u8 ec_a[20]; // mon
static u8 ec_b[20]; // mon
static u8 ec_N[21];
static struct point ec_G; // mon
static struct point ec_Q; // mon
static u8 ec_k[21];
static void elt_copy(u8 *d, u8 *a)
{
memcpy(d, a, 20);
}
static void elt_zero(u8 *d)
{
memset(d, 0, 20);
}
static int elt_is_zero(u8 *d)
{
u32 i;
for (i = 0; i < 20; i++)
if (d[i] != 0)
return 0;
return 1;
}
static void elt_add(u8 *d, u8 *a, u8 *b)
{
bn_add(d, a, b, ec_p, 20);
}
static void elt_sub(u8 *d, u8 *a, u8 *b)
{
bn_sub(d, a, b, ec_p, 20);
}
static void elt_mul(u8 *d, u8 *a, u8 *b)
{
bn_mon_mul(d, a, b, ec_p, 20);
}
static void elt_square(u8 *d, u8 *a)
{
elt_mul(d, a, a);
}
static void elt_inv(u8 *d, u8 *a)
{
u8 s[20];
elt_copy(s, a);
bn_mon_inv(d, s, ec_p, 20);
}
static void point_to_mon(struct point *p)
{
bn_to_mon(p->x, ec_p, 20);
bn_to_mon(p->y, ec_p, 20);
}
static void point_from_mon(struct point *p)
{
bn_from_mon(p->x, ec_p, 20);
bn_from_mon(p->y, ec_p, 20);
}
#if 0
static int point_is_on_curve(u8 *p)
{
u8 s[20], t[20];
u8 *x, *y;
x = p;
y = p + 20;
elt_square(t, x);
elt_mul(s, t, x);
elt_mul(t, x, ec_a);
elt_add(s, s, t);
elt_add(s, s, ec_b);
elt_square(t, y);
elt_sub(s, s, t);
return elt_is_zero(s);
}
#endif
static void point_zero(struct point *p)
{
elt_zero(p->x);
elt_zero(p->y);
}
static int point_is_zero(struct point *p)
{
return elt_is_zero(p->x) && elt_is_zero(p->y);
}
static void point_double(struct point *r, struct point *p)
{
u8 s[20], t[20];
struct point pp;
u8 *px, *py, *rx, *ry;
pp = *p;
px = pp.x;
py = pp.y;
rx = r->x;
ry = r->y;
if (elt_is_zero(py)) {
point_zero(r);
return;
}
elt_square(t, px); // t = px*px
elt_add(s, t, t); // s = 2*px*px
elt_add(s, s, t); // s = 3*px*px
elt_add(s, s, ec_a); // s = 3*px*px + a
elt_add(t, py, py); // t = 2*py
elt_inv(t, t); // t = 1/(2*py)
elt_mul(s, s, t); // s = (3*px*px+a)/(2*py)
elt_square(rx, s); // rx = s*s
elt_add(t, px, px); // t = 2*px
elt_sub(rx, rx, t); // rx = s*s - 2*px
elt_sub(t, px, rx); // t = -(rx-px)
elt_mul(ry, s, t); // ry = -s*(rx-px)
elt_sub(ry, ry, py); // ry = -s*(rx-px) - py
}
static void point_add(struct point *r, struct point *p, struct point *q)
{
u8 s[20], t[20], u[20];
u8 *px, *py, *qx, *qy, *rx, *ry;
struct point pp, qq;
pp = *p;
qq = *q;
px = pp.x;
py = pp.y;
qx = qq.x;
qy = qq.y;
rx = r->x;
ry = r->y;
if (point_is_zero(&pp)) {
elt_copy(rx, qx);
elt_copy(ry, qy);
return;
}
if (point_is_zero(&qq)) {
elt_copy(rx, px);
elt_copy(ry, py);
return;
}
elt_sub(u, qx, px);
if (elt_is_zero(u)) {
elt_sub(u, qy, py);
if (elt_is_zero(u))
point_double(r, &pp);
else
point_zero(r);
return;
}
elt_inv(t, u); // t = 1/(qx-px)
elt_sub(u, qy, py); // u = qy-py
elt_mul(s, t, u); // s = (qy-py)/(qx-px)
elt_square(rx, s); // rx = s*s
elt_add(t, px, qx); // t = px+qx
elt_sub(rx, rx, t); // rx = s*s - (px+qx)
elt_sub(t, px, rx); // t = -(rx-px)
elt_mul(ry, s, t); // ry = -s*(rx-px)
elt_sub(ry, ry, py); // ry = -s*(rx-px) - py
}
static void point_mul(struct point *d, u8 *a, struct point *b) // a is bignum
{
u32 i;
u8 mask;
point_zero(d);
for (i = 0; i < 21; i++)
for (mask = 0x80; mask != 0; mask >>= 1) {
point_double(d, d);
if ((a[i] & mask) != 0)
point_add(d, d, b);
}
}
static void generate_ecdsa(u8 *R, u8 *S, u8 *k, u8 *hash)
{
u8 e[21];
u8 kk[21];
u8 m[21];
u8 minv[21];
struct point mG;
e[0] = 0;
memcpy(e + 1, hash, 20);
bn_reduce(e, ec_N, 21);
try_again:
prng(m, 21);
m[0] = 0;
if (bn_compare(m, ec_N, 21) >= 0)
goto try_again;
// R = (mG).x
point_mul(&mG, m, &ec_G);
point_from_mon(&mG);
R[0] = 0;
elt_copy(R+1, mG.x);
// S = m**-1*(e + Rk) (mod N)
bn_copy(kk, k, 21);
bn_reduce(kk, ec_N, 21);
bn_to_mon(m, ec_N, 21);
bn_to_mon(e, ec_N, 21);
bn_to_mon(R, ec_N, 21);
bn_to_mon(kk, ec_N, 21);
bn_mon_mul(S, R, kk, ec_N, 21);
bn_add(kk, S, e, ec_N, 21);
bn_mon_inv(minv, m, ec_N, 21);
bn_mon_mul(S, minv, kk, ec_N, 21);
bn_from_mon(R, ec_N, 21);
bn_from_mon(S, ec_N, 21);
}
static int check_ecdsa(struct point *Q, u8 *R, u8 *S, u8 *hash)
{
u8 Sinv[21];
u8 e[21];
u8 w1[21], w2[21];
struct point r1, r2;
u8 rr[21];
e[0] = 0;
memcpy(e + 1, hash, 20);
bn_reduce(e, ec_N, 21);
bn_to_mon(R, ec_N, 21);
bn_to_mon(S, ec_N, 21);
bn_to_mon(e, ec_N, 21);
bn_mon_inv(Sinv, S, ec_N, 21);
bn_mon_mul(w1, e, Sinv, ec_N, 21);
bn_mon_mul(w2, R, Sinv, ec_N, 21);
bn_from_mon(w1, ec_N, 21);
bn_from_mon(w2, ec_N, 21);
point_mul(&r1, w1, &ec_G);
point_mul(&r2, w2, Q);
point_add(&r1, &r1, &r2);
point_from_mon(&r1);
rr[0] = 0;
memcpy(rr + 1, r1.x, 20);
bn_reduce(rr, ec_N, 21);
bn_from_mon(R, ec_N, 21);
bn_from_mon(S, ec_N, 21);
return (bn_compare(rr, R, 21) == 0);
}
#if 0
static void ec_priv_to_pub(u8 *k, u8 *Q)
{
point_mul(Q, k, ec_G);
}
#endif
int ecdsa_set_curve(u8* p, u8* a, u8* b, u8* N, u8* Gx, u8* Gy)
{
memcpy(ec_p, p, 20);
memcpy(ec_a, a, 20);
memcpy(ec_b, b, 20);
memcpy(ec_N, N, 21);
memcpy(ec_G.x, Gx, 20);
memcpy(ec_G.y, Gy, 20);
bn_to_mon(ec_a, ec_p, 20);
bn_to_mon(ec_b, ec_p, 20);
point_to_mon(&ec_G);
return 0;
}
void ecdsa_set_pub(u8 *Q)
{
memcpy(ec_Q.x, Q, 20);
memcpy(ec_Q.y, Q+20, 20);
point_to_mon(&ec_Q);
}
void ecdsa_set_priv(u8 *k)
{
memcpy(ec_k, k, sizeof ec_k);
}
int ecdsa_verify(u8 *hash, u8 *R, u8 *S)
{
return check_ecdsa(&ec_Q, R, S, hash);
}
void ecdsa_sign(u8 *hash, u8 *R, u8 *S)
{
generate_ecdsa(R, S, ec_k, hash);
}
+14
View File
@@ -0,0 +1,14 @@
#pragma once
// Copyright (C) 2014 Hykem <hykem@hotmail.com>
// Licensed under the terms of the GNU GPL, version 3
// http://www.gnu.org/licenses/gpl-3.0.txt
#include <string.h>
#include <stdio.h>
int ecdsa_set_curve(unsigned char *p, unsigned char *a, unsigned char *b, unsigned char *N, unsigned char *Gx, unsigned char *Gy);
void ecdsa_set_pub(unsigned char *Q);
void ecdsa_set_priv(unsigned char *k);
int ecdsa_verify(unsigned char *hash, unsigned char *R, unsigned char *S);
void ecdsa_sign(unsigned char *hash, unsigned char *R, unsigned char *S);
+811
View File
@@ -0,0 +1,811 @@
#include "stdafx.h"
#include "utils.h"
#include "aes.h"
#include "key_vault.h"
SELF_KEY::SELF_KEY(u64 ver, u16 rev, u32 type, const std::string& e, const std::string& r, const std::string& pb, const std::string& pr, u32 ct)
{
version = ver;
revision = rev;
self_type = type;
hex_to_bytes(erk, e.c_str(), 0);
hex_to_bytes(riv, r.c_str(), 0);
hex_to_bytes(pub, pb.c_str(), 0);
hex_to_bytes(priv, pr.c_str(), 0);
curve_type = ct;
}
KeyVault::KeyVault()
{
}
void KeyVault::LoadSelfLV0Keys()
{
sk_LV0_arr.clear();
sk_LV0_arr.emplace_back(0x0000000000000000, 0x0000, KEY_LV0,
"CA7A24EC38BDB45B98CCD7D363EA2AF0C326E65081E0630CB9AB2D215865878A",
"F9205F46F6021697E670F13DFA726212",
"A8FD6DB24532D094EFA08CB41C9A72287D905C6B27B42BE4AB925AAF4AFFF34D41EEB54DD128700D",
"001AD976FCDE86F5B8FF3E63EF3A7F94E861975BA3",
0x33);
}
void KeyVault::LoadSelfLDRKeys()
{
sk_LDR_arr.clear();
sk_LDR_arr.emplace_back(0x0000000000000000, 0x0000, KEY_LDR,
"C0CEFE84C227F75BD07A7EB846509F93B238E770DACB9FF4A388F812482BE21B",
"47EE7454E4774CC9B8960C7B59F4C14D",
"C2D4AAF319355019AF99D44E2B58CA29252C89123D11D6218F40B138CAB29B7101F3AEB72A975019",
"00C5B2BFA1A413DD16F26D31C0F2ED4720DCFB0670",
0x20);
}
void KeyVault::LoadSelfLV1Keys()
{
sk_LV1_arr.clear();
sk_LV1_arr.emplace_back(0x0003003000000000, 0x0000, KEY_LV1,
"B9F3F9E6107CFF2680A91E118C2403CF4A6F18F3C7EFD7D13D1AC4DB760BD222",
"B43661B9A79BAD9D8E2B046469CDA1E7",
"4C870BE86DDD996A92A3F7F404F33604244A1D02AB5B78BC9DAF030B78BE8867CF586171B7D45D20",
"002CC736C7AD06D264E9AB663EB1F35F5DC159248C",
0x33);
sk_LV1_arr.emplace_back(0x0003004200000000, 0x0000, KEY_LV1,
"B880593856C8C6D2037585626A12977F50DCFCF3F132D2C89AA6E670EAFC1646",
"A79B05D4E37B8117A95E6E7C14FB640E",
"7454C7CCBFC2F66C142D78A730A3A6F973CC0FB75A46FCBB390790138910A0CAC78E5E21F4DA3375",
"00033A699FDD2DA6CDD6CCC03B2C6145F998706F74",
0x34);
sk_LV1_arr.emplace_back(0x0003005000000000, 0x0000, KEY_LV1,
"1E8EEEA9E80A729F3FA52CF523B25941EA44B4155D94E5DADC5C5A77847620C7",
"E034D31A80316960024D1B3D3164FDC3",
"7E3A196f4A5879F3A7B091A2263F7C24E1716129B580566D308D9C2254B36AEE53DEF30EC85F8398",
"005815D17125D04C33790321DE29EB6241365100B5",
0x35);
sk_LV1_arr.emplace_back(0x0003005500000000, 0x0000, KEY_LV1,
"53ABDF84BE08B0351B734F2B97D2BE1621BC6C889E4362E5C70F39D6C3ED9F23",
"44E652661AC7584DBE08ECB810FB5FC0",
"733198A7759BC07326755BC9773A8A17C8A7043C7BDAB83D88E230512E2EA3852D7DA4263A7E97F9",
"004312C65347ACBE95CC306442FEFD0AF4C2935EB3",
0x05);
sk_LV1_arr.emplace_back(0x0003005600000000, 0x0000, KEY_LV1,
"48793EBDDA1AF65D737DA2FDA2DD104447A698F8A82CAAEE992831711BA94E83",
"15DCF3C67147A45D09DE7521EECA07A1",
"85A8868C320127F10B6598964C69221C086702021D31803520E21FDE4DBE827766BE41825CB7328C",
"",
0x07);
sk_LV1_arr.emplace_back(0x0003006100000000, 0x0000, KEY_LV1,
"5FF17D836E2C4AD69476E2614F64BDD05B9115389A9A6D055B5B544B1C34E3D5",
"DF0F50EC3C4743C5B17839D7B49F24A4",
"1CDABE30833823F461CA534104115FFF60010B710631E435A7D915E82AE88EDE667264656CB7062E",
"",
0x05);
sk_LV1_arr.emplace_back(0x0003006600000000, 0x0000, KEY_LV1,
"BD0621FA19383C3C72ECBC3B008F1CD55FFD7C3BB7510BF11AD0CF0FC2B70951",
"569AF3745E1E02E3E288273CDE244CD8",
"21E26F11C2D69478609DD1BD278CDFC940D90386455BA52FCD1FA7E27AC2AFA826C79A10193B625C",
"",
0x07);
sk_LV1_arr.emplace_back(0x0003007400000000, 0x0000, KEY_LV1,
"41A6E0039041E9D8AAF4EF2F2A2971248EDBD96A3985611ED7B4CE73EE4804FE",
"C8C98D5A5CE23AF5607A352AECACB0DC",
"4389664390265F96C1A882374C0F856364E33DB09BE124A4666F9A12F0DD9C811EDD55BA21ED0667",
"",
0x12);
sk_LV1_arr.emplace_back(0x0004001100000000, 0x0000, KEY_LV1,
"557EDF6C063F3272B0D44EEC12F418DA774815B5415597CC5F75C21E048BAD74",
"7144D7574937818517826227EF4AC0B4",
"085D38DBF9B757329EB862107929909D32FA1DAE60641BF4AC25319D7650597EE977F8E810FEEA96",
"",
0x13);
sk_LV1_arr.emplace_back(0x0004005000000000, 0x0000, KEY_LV1,
"10CEA04973FCCC12EC19924510822D8D4C41F657FD3D7E73F415A8D687421BCD",
"ED8699562C6AC65204FA166257E7FCF4",
"9AF86FC869C159FBB62F7D9674EE257ABF12E5A96D5875B4AA73C13C2BC13E2A4079F98B9B935EE2",
"",
0x14);
}
void KeyVault::LoadSelfLV2Keys()
{
sk_LV2_arr.clear();
sk_LV2_arr.emplace_back(0x0003003000000000, 0x0000, KEY_LV2,
"94303F69513572AB5AE17C8C2A1839D2C24C28F65389D3BBB11894CE23E0798F",
"9769BFD187B90990AE5FEA4E110B9CF5",
"AFAF5E96AF396CBB69071082C46A8F34A030E8EDB799E0A7BE00AA264DFF3AEBF7923920D559404D",
"0070ABF9361B02291829D479F56AB248203CD3EB46",
0x20);
sk_LV2_arr.emplace_back(0x0003004200000000, 0x0000, KEY_LV2,
"575B0A6C4B4F2760A03FE4189EBAF4D947279FD982B14070349098B08FF92C10",
"411CB18F460CE50CAF2C426D8F0D93C8",
"3FEE313954CB3039C321A7E33B97FFDEC8988A8B55759161B04DBF4731284E4A8191E3F17D32B0EA",
"0073076441A08CD179E5FACE349B86DA58B5B7BA78",
0x21);
sk_LV2_arr.emplace_back(0x0003005000000000, 0x0000, KEY_LV2,
"6DBD48D787C58803A8D724DA5ACF04FF8FCE91D7545D2322F2B7ABF57014AF68",
"603A36213708520ED5D745DEC1325BA5",
"5888CB83AC3CCA9610BC173C53141C0CA58B93719E744660CA8823D5EAEE8F9BF736997054E4B7E3",
"0009EBC3DE442FA5FBF6C4F3D4F9EAB07778A142BD",
0x22);
sk_LV2_arr.emplace_back(0x0003005500000000, 0x0000, KEY_LV2,
"84015E90FA23139628A3C75CC09714E6427B527A82D18ABC3E91CD8D7DDAFF17",
"5B240444D645F2038118F97FD5A145D5",
"B266318245266B2D33641CD8A864066D077FAC60B7E27399099A70A683454B70F9888E7CC0C2BF72",
"009D4CBA2BFB1A8330D3E20E59D281D476D231C73A",
0x32);
sk_LV2_arr.emplace_back(0x0003005600000000, 0x0000, KEY_LV2,
"EAE15444048EFDE7A831BFA9F5D96F047C9FCFF50723E292CF50F5417D81E359",
"9CA9282DC7FA9F315EF3156D970B7CD4",
"0D58938CB47598A6A672874F1768068F8B80D8D17014D2ABEBAC85E5B0993D9FB6F307DDC3DDA699",
"",
0x33);
sk_LV2_arr.emplace_back(0x0003006100000000, 0x0000, KEY_LV2,
"88AD367EDEC2FEED3E2F99B1C685075C41BDEC90C84F526CAF588F89BBD1CBCC",
"8D18E8E525230E63DE10291C9DD615BF",
"86EED1D65E58890ABDA9ACA486A2BDDB9C0A529C2053FAE301F0F698EAF443DA0F60595A597A7027",
"",
0x32);
sk_LV2_arr.emplace_back(0x0003006600000000, 0x0000, KEY_LV2,
"688D5FCAC6F4EA35AC6AC79B10506007286131EE038116DB8AA2C0B0340D9FB0",
"75E0239D18B0B669EAE650972F99726B",
"008E1C820AC567D1BFB8FE3CC6AD2E1845A1D1B19ED2E18B18CA34A8D28A83EC60C63859CDB3DACA",
"",
0x33);
sk_LV2_arr.emplace_back(0x0003007400000000, 0x0000, KEY_LV2,
"E81C5B04C29FB079A4A2687A39D4EA97BFB49D80EF546CEB292979A5F77A6254",
"15058FA7F2CAD7C528B5F605F6444EB0",
"438D0E5C1E7AFB18234DB6867472FF5F52B750F30C379C7DD1EE0FD23E417B3EA819CC01BAC480ED",
"",
0x11);
sk_LV2_arr.emplace_back(0x0004001100000000, 0x0000, KEY_LV2,
"A1E4B86ED02BF7F1372A2C73FE02BC738907EB37CE3BA605FE783C999FAFDB97",
"BBE7799B9A37CB272E386618FDFD4AEC",
"5B31A8E2A663EBD673196E2E1022E0D64988C4E1BBFE5E474415883A3BA0D9C562A2BE9C30E9B4A8",
"",
0x07);
sk_LV2_arr.emplace_back(0x0004005000000000, 0x0000, KEY_LV2,
"0CAF212B6FA53C0DA7E2C575ADF61DBE68F34A33433B1B891ABF5C4251406A03",
"9B79374722AD888EB6A35A2DF25A8B3E",
"1034A6F98AF6625CC3E3604B59B971CA617DF337538D2179EBB22F3BDC9D0C6DA56BA7DDFD205A50",
"",
0x14);
}
void KeyVault::LoadSelfISOKeys()
{
sk_ISO_arr.clear();
sk_ISO_arr.emplace_back(0x0003003000000000, 0x0001, KEY_ISO,
"8860D0CFF4D0DC688D3223321B96B59A777E6914961488E07048DAECB020ECA4",
"C82D015D46CF152F1DD0C16F18B5B1E5",
"733918D7C888130509346E6B4A8B6CAA357AB557E814E8122BF102C14A314BF9475B9D70EAF9EC29",
"009BE892E122A5C943C1BB7403A67318AA9E1B286F",
0x36);
sk_ISO_arr.emplace_back(0x0003004200000000, 0x0001, KEY_ISO,
"101E27F3FA2FB53ACA924F783AD553162D56B975D05B81351A1111799F20254D",
"8D2E9C6297B8AD252998458296AC773C",
"138446EE0BDDA5638F97328C8956E6489CBBFE57C5961D40DD5C43BB4138F1C400A8B27204A5D625",
"00849DBC57D3B92F01864E6E82EB4EF0EF6311E122",
0x32);
sk_ISO_arr.emplace_back(0x0003005000000000, 0x0001, KEY_ISO,
"3F2604FA27AEADFBE1AC69EB00BB16EF196C2193CBD62900FFD8C25041680843",
"A414AC1DB7987E43777651B330B899E1",
"1F4633AFDE18614D6CEF38A2FD6C4CCAC7B6EB8109D72CD066ECEBA0193EA3F43C37AE83179A4E5F",
"0085B4B05DEBA7E6AD831653C974D95149803BB272",
0x33);
sk_ISO_arr.emplace_back(0x0003005500000000, 0x0001, KEY_ISO,
"BDB74AA6E3BA2DC10B1BD7F17198399A158DBE1FA0BEA68C90FCACBE4D04BE37",
"0207A479B1574F8E7F697528F05D5435",
"917E1F1DC48A54EB5F10B38E7569BB5383628A7C906F0DCA62FDA33805C15FAB270016940A09DB58",
"00294411363290975BA551336D3965D88AF029A17B",
0x03);
sk_ISO_arr.emplace_back(0x0003005600000000, 0x0001, KEY_ISO,
"311C015F169F2A1E0757F7064B14C7C9F3A3FFEE015BD4E3A22401A2667857CE",
"7BB8B3F5AC8E0890E3148AE5688C7350",
"3F040EFA2335FED5670BA4D5C3AB2D9D0B4BA69D154A0062EA995A7D21DBAF0DC5A0DAD333D1C1DD",
"",
0x08);
sk_ISO_arr.emplace_back(0x0003006100000000, 0x0001, KEY_ISO,
"8474ADCA3B3244931EECEB9357841442442A1C4A4BCF4E498E6738950F4E4093",
"FFF9CACCC4129125CAFB240F419E5F39",
"098E1A53E59A95316B00D5A29C05FFEBAE41D1A8A386F9DA96F98858FD25E07BB7A3BC96A5D5B556",
"",
0x03);
sk_ISO_arr.emplace_back(0x0003006600000000, 0x0001, KEY_ISO,
"E6A21C599B75696C169EC02582BDA74A776134A6E05108EA701EC0CA2AC03592",
"D292A7BD57C0BB2EABBCA1252FA9EDEF",
"2ED078A13DC4617EB550AD06E228C83C142A2D588EB5E729402D18038A14842FD65B277DCAD225A5",
"",
0x08);
sk_ISO_arr.emplace_back(0x0003007400000000, 0x0001, KEY_ISO,
"072D3A5C3BDB0D674DE209381432B20414BC9BDA0F583ECB94BD9A134176DD51",
"8516A81F02CF938740498A406C880871",
"5A778DEB5C4F12E8D48E06A2BBBBE3C90FA8C6C47DF9BDB5697FD4A8EB7941CE3F59A557E81C787D",
"",
0x21);
sk_ISO_arr.emplace_back(0x0003007400000000, 0x0100, KEY_ISO,
"786FAB8A0B89474A2CB80B3EA104CCCB9E13F66B45EC499BB31865D07C661EA8",
"94662F13D99A9F5D211C979FFDF65FE3",
"912C94C252B7799CEB45DFBB73EF7CAD9BCC0793A3331BBB79E3C47C0F5C782F698065A8D4DB0D8B",
"",
0x0E);
sk_ISO_arr.emplace_back(0x0004001100000000, 0x0001, KEY_ISO,
"4262657A3185D9480F82C8BD2F81766FCC2C8FD7DD5EBE8657B00B939E0C75BD",
"4F1E3EF07D893A4714B1B3D5A4E50479",
"4DBFCFA68B52F1D66E09AFA6C18EC65479EDBD027B6B8C6A5D85FE5C84D43EA40CEF1672078A0702",
"",
0x11);
sk_ISO_arr.emplace_back(0x0004001100000000, 0x0100, KEY_ISO,
"16AA7D7C35399E2B1BFAF68CD19D7512A7855029C08BECC4CC3F035DF7F9C70B",
"0E50DB6D937D262CB0499136852FCB80",
"AEE2795BF295662A50DFAFE70D1B0B6F0A2EBB211E1323A275FC6E2D13BE4F2F10CA34784F4CF1EC",
"",
0x0F);
sk_ISO_arr.emplace_back(0x0004005000000000, 0x0001, KEY_ISO,
"63565DBE98C3B1A52AADC907C47130FE57A10734E84F22592670F86ED2B0A086",
"953F6A99891B4739358F5363A00C08B9",
"26BE7B02E7D65C6C21BF4063CDB8C0092FE1679D62FA1A8CCC284A1D21885473A959992537A06612",
"",
0x15);
sk_ISO_arr.emplace_back(0x0004005000000000, 0x0100, KEY_ISO,
"B96EA32CB96EA32DB96EA32CB96EA32CB96EA32CB96EA32DB96EA32CB96EA32C",
"B96EA32CB96EA32DB96EA32DB96EA32C",
"2D7066E68C6AC3373B1346FD76FE7D18A207C811500E65D85DB57BC4A27AD78F59FD53F38F50E151",
"0044AA25B4276D79B494A29CB8DE104642424F8EEF",
0x02);
}
void KeyVault::LoadSelfAPPKeys()
{
sk_APP_arr.clear();
sk_APP_arr.emplace_back(0x0000009200000000, 0x0000, KEY_APP,
"95F50019E7A68E341FA72EFDF4D60ED376E25CF46BB48DFDD1F080259DC93F04",
"4A0955D946DB70D691A640BB7FAECC4C",
"6F8DF8EBD0A1D1DB08B30DD3A951E3F1F27E34030B42C729C55555232D61B834B8BDFFB07E54B343",
"006C3E4CCB2C69A5AD7C6F60448E50C7F9184EEAF4",
0x21);
sk_APP_arr.emplace_back(0x0003003000000000, 0x0001, KEY_APP,
"79481839C406A632BDB4AC093D73D99AE1587F24CE7E69192C1CD0010274A8AB",
"6F0F25E1C8C4B7AE70DF968B04521DDA",
"94D1B7378BAFF5DFED269240A7A364ED68446741622E50BC6079B6E606A2F8E0A4C56E5CFF836526",
"003DE80167D2F0E9D30F2145144A558D1174F5410C",
0x11);
sk_APP_arr.emplace_back(0x0003003000000000, 0x0002, KEY_APP,
"4F89BE98DDD43CAD343F5BA6B1A133B0A971566F770484AAC20B5DD1DC9FA06A",
"90C127A9B43BA9D8E89FE6529E25206F",
"8CA6905F46148D7D8D84D2AFCEAE61B41E6750FC22EA435DFA61FCE6F4F860EE4F54D9196CA5290E",
"",
0x13);
sk_APP_arr.emplace_back(0x0003003000000000, 0x0003, KEY_APP,
"C1E6A351FCED6A0636BFCB6801A0942DB7C28BDFC5E0A053A3F52F52FCE9754E",
"E0908163F457576440466ACAA443AE7C",
"50022D5D37C97905F898E78E7AA14A0B5CAAD5CE8190AE5629A10D6F0CF4173597B37A95A7545C92",
"",
0x0B);
sk_APP_arr.emplace_back(0x0003004200000000, 0x0004, KEY_APP,
"838F5860CF97CDAD75B399CA44F4C214CDF951AC795298D71DF3C3B7E93AAEDA",
"7FDBB2E924D182BB0D69844ADC4ECA5B",
"1F140E8EF887DAB52F079A06E6915A6460B75CD256834A43FA7AF90C23067AF412EDAFE2C1778D69",
"0074E922FDEE5DC4CDF22FC8D7986477F813400860",
0x14);
sk_APP_arr.emplace_back(0x0003004200000000, 0x0005, KEY_APP,
"C109AB56593DE5BE8BA190578E7D8109346E86A11088B42C727E2B793FD64BDC",
"15D3F191295C94B09B71EBDE088A187A",
"B6BB0A84C649A90D97EBA55B555366F52381BB38A84C8BB71DA5A5A0949043C6DB249029A43156F7",
"",
0x15);
sk_APP_arr.emplace_back(0x0003004200000000, 0x0006, KEY_APP,
"6DFD7AFB470D2B2C955AB22264B1FF3C67F180983B26C01615DE9F2ECCBE7F41",
"24BD1C19D2A8286B8ACE39E4A37801C2",
"71F46AC33FF89DF589A100A7FB64CEAC244C9A0CBBC1FDCE80FB4BF8A0D2E66293309CB8EE8CFA95",
"",
0x2C);
sk_APP_arr.emplace_back(0x0003005000000000, 0x0007, KEY_APP,
"945B99C0E69CAF0558C588B95FF41B232660ECB017741F3218C12F9DFDEEDE55",
"1D5EFBE7C5D34AD60F9FBC46A5977FCE",
"AB284CA549B2DE9AA5C903B75652F78D192F8F4A8F3CD99209415C0A84C5C9FD6BF3095C1C18FFCD",
"002CF896D35DB871D0E6A252E799876A70D043C23E",
0x15);
sk_APP_arr.emplace_back(0x0003005000000000, 0x0008, KEY_APP,
"2C9E8969EC44DFB6A8771DC7F7FDFBCCAF329EC3EC070900CABB23742A9A6E13",
"5A4CEFD5A9C3C093D0B9352376D19405",
"6E82F6B54A0E9DEBE4A8B3043EE3B24CD9BBB62B4416B0482582E419A2552E29AB4BEA0A4D7FA2D5",
"",
0x16);
sk_APP_arr.emplace_back(0x0003005000000000, 0x0009, KEY_APP,
"F69E4A2934F114D89F386CE766388366CDD210F1D8913E3B973257F1201D632B",
"F4D535069301EE888CC2A852DB654461",
"1D7B974D10E61C2ED087A0981535904677EC07E96260F89565FF7EBDA4EE035C2AA9BCBDD5893F99",
"",
0x2D);
sk_APP_arr.emplace_back(0x0003005500000000, 0x000A, KEY_APP,
"29805302E7C92F204009161CA93F776A072141A8C46A108E571C46D473A176A3",
"5D1FAB844107676ABCDFC25EAEBCB633",
"09301B6436C85B53CB1585300A3F1AF9FB14DB7C30088C4642AD66D5C148B8995BB1A698A8C71827",
"0010818ED8A666051C6198662C3D6DDE2CA4901DDC",
0x25);
sk_APP_arr.emplace_back(0x0003005500000000, 0x000B, KEY_APP,
"A4C97402CC8A71BC7748661FE9CE7DF44DCE95D0D58938A59F47B9E9DBA7BFC3",
"E4792F2B9DB30CB8D1596077A13FB3B5",
"2733C889D289550FE00EAA5A47A34CEF0C1AF187610EB07BA35D2C09BB73C80B244EB4147700D1BF",
"",
0x26);
sk_APP_arr.emplace_back(0x0003005500000000, 0x000C, KEY_APP,
"9814EFFF67B7074D1B263BF85BDC8576CE9DEC914123971B169472A1BC2387FA",
"D43B1FA8BE15714B3078C23908BB2BCA",
"7D1986C6BEE6CE1E0C5893BD2DF203881F40D5056761CC3F1F2E9D9A378617A2DE40BA5F09844CEB",
"",
0x3D);
sk_APP_arr.emplace_back(0x0003005600000000, 0x000D, KEY_APP,
"03B4C421E0C0DE708C0F0B71C24E3EE04306AE7383D8C5621394CCB99FF7A194",
"5ADB9EAFE897B54CB1060D6885BE22CF",
"71502ADB5783583AB88B2D5F23F419AF01C8B1E72FCA1E694AD49FE3266F1F9C61EFC6F29B351142",
"",
0x12);
sk_APP_arr.emplace_back(0x0003005600000000, 0x000E, KEY_APP,
"39A870173C226EB8A3EEE9CA6FB675E82039B2D0CCB22653BFCE4DB013BAEA03",
"90266C98CBAA06C1BF145FF760EA1B45",
"84DE5692809848E5ACBE25BE548F6981E3DB14735A5DDE1A0FD1F475866532B862B1AB6A004B7255",
"",
0x27);
sk_APP_arr.emplace_back(0x0003005600000000, 0x000F, KEY_APP,
"FD52DFA7C6EEF5679628D12E267AA863B9365E6DB95470949CFD235B3FCA0F3B",
"64F50296CF8CF49CD7C643572887DA0B",
"0696D6CCBD7CF585EF5E00D547503C185D7421581BAD196E081723CD0A97FA40B2C0CD2492B0B5A1",
"",
0x3A);
sk_APP_arr.emplace_back(0x0003006100000000, 0x0010, KEY_APP,
"A5E51AD8F32FFBDE808972ACEE46397F2D3FE6BC823C8218EF875EE3A9B0584F",
"7A203D5112F799979DF0E1B8B5B52AA4",
"50597B7F680DD89F6594D9BDC0CBEE03666AB53647D0487F7F452FE2DD02694631EA755548C9E934",
"",
0x25);
sk_APP_arr.emplace_back(0x0003006100000000, 0x0011, KEY_APP,
"0F8EAB8884A51D092D7250597388E3B8B75444AC138B9D36E5C7C5B8C3DF18FD",
"97AF39C383E7EF1C98FA447C597EA8FE",
"2FDA7A56AAEA65921C0284FF1942C6DE137370093D106034B59191951A5201B422D462F8726F852D",
"",
0x26);
sk_APP_arr.emplace_back(0x0003006600000000, 0x0013, KEY_APP,
"DBF62D76FC81C8AC92372A9D631DDC9219F152C59C4B20BFF8F96B64AB065E94",
"CB5DD4BE8CF115FFB25801BC6086E729",
"B26FE6D3E3A1E766FAE79A8E6A7F48998E7FC1E4B0AD8745FF54C018C2A6CC7A0DD7525FAFEA4917",
"",
0x12);
sk_APP_arr.emplace_back(0x0003006600000000, 0x0014, KEY_APP,
"491B0D72BB21ED115950379F4564CE784A4BFAABB00E8CB71294B192B7B9F88E",
"F98843588FED8B0E62D7DDCB6F0CECF4",
"04275E8838EF95BD013B223C3DF674540932F21B534C7ED2944B9104D938FEB03B824DDB866AB26E",
"",
0x27);
sk_APP_arr.emplace_back(0x0003007400000000, 0x0016, KEY_APP,
"A106692224F1E91E1C4EBAD4A25FBFF66B4B13E88D878E8CD072F23CD1C5BF7C",
"62773C70BD749269C0AFD1F12E73909E",
"566635D3E1DCEC47243AAD1628AE6B2CEB33463FC155E4635846CE33899C5E353DDFA47FEF5694AF",
"",
0x30);
sk_APP_arr.emplace_back(0x0003007400000000, 0x0017, KEY_APP,
"4E104DCE09BA878C75DA98D0B1636F0E5F058328D81419E2A3D22AB0256FDF46",
"954A86C4629E116532304A740862EF85",
"3B7B04C71CAE2B1199D57453C038BB1B541A05AD1B94167B0AB47A9B24CAECB9000CB21407009666",
"",
0x08);
sk_APP_arr.emplace_back(0x0003007400000000, 0x0018, KEY_APP,
"1F876AB252DDBCB70E74DC4A20CD8ED51E330E62490E652F862877E8D8D0F997",
"BF8D6B1887FA88E6D85C2EDB2FBEC147",
"64A04126D77BF6B4D686F6E8F87DD150A5B014BA922D2B694FFF4453E11239A6E0B58F1703C51494",
"",
0x11);
sk_APP_arr.emplace_back(0x0004001100000000, 0x0019, KEY_APP,
"3236B9937174DF1DC12EC2DD8A318A0EA4D3ECDEA5DFB4AC1B8278447000C297",
"6153DEE781B8ADDC6A439498B816DC46",
"148DCA961E2738BAF84B2D1B6E2DA2ABD6A95F2C9571E54C6922F9ED9674F062B7F1BE5BD6FA5268",
"",
0x31);
sk_APP_arr.emplace_back(0x0004001100000000, 0x001A, KEY_APP,
"5EFD1E9961462794E3B9EF2A4D0C1F46F642AAE053B5025504130590E66F19C9",
"1AC8FA3B3C90F8FDE639515F91B58327",
"BE4B1B513536960618BFEF12A713F6673881B02F9DC616191E823FC8337CCF99ADAA6172019C0C23",
"",
0x17);
sk_APP_arr.emplace_back(0x0004001100000000, 0x001B, KEY_APP,
"66637570D1DEC098467DB207BAEA786861964D0964D4DBAF89E76F46955D181B",
"9F7B5713A5ED59F6B35CD8F8A165D4B8",
"4AB6FB1F6F0C3D9219923C1AC683137AB05DF667833CC6A5E8F590E4E28FE2EB180C7D5861117CFB",
"",
0x12);
sk_APP_arr.emplace_back(0x0004004600000000, 0x001C, KEY_APP,
"CFF025375BA0079226BE01F4A31F346D79F62CFB643CA910E16CF60BD9092752",
"FD40664E2EBBA01BF359B0DCDF543DA4",
"36C1ACE6DD5CCC0006FDF3424750FAC515FC5CFA2C93EC53C6EC2BC421708D154E91F2E7EA54A893",
"",
0x09);
sk_APP_arr.emplace_back(0x0004004600000000, 0x001D, KEY_APP,
"D202174EB65A62048F3674B59EF6FE72E1872962F3E1CD658DE8D7AF71DA1F3E",
"ACB9945914EBB7B9A31ECE320AE09F2D",
"430322887503CF52928FAAA410FD623C7321281C8825D95F5B47EF078EFCFC44454C3AB4F00BB879",
"",
0x1A);
}
void KeyVault::LoadSelfNPDRMKeys()
{
sk_NPDRM_arr.clear();
sk_NPDRM_arr.emplace_back(0x0001000000000000, 0x0001, KEY_NPDRM,
"F9EDD0301F770FABBA8863D9897F0FEA6551B09431F61312654E28F43533EA6B",
"A551CCB4A42C37A734A2B4F9657D5540",
"B05F9DA5F9121EE4031467E74C505C29A8E29D1022379EDFF0500B9AE480B5DAB4578A4C61C5D6BF",
"00040AB47509BED04BD96521AD1B365B86BF620A98",
0x11);
sk_NPDRM_arr.emplace_back(0x0001000000000000, 0x0002, KEY_NPDRM,
"8E737230C80E66AD0162EDDD32F1F774EE5E4E187449F19079437A508FCF9C86",
"7AAECC60AD12AED90C348D8C11D2BED5",
"05BF09CB6FD78050C78DE69CC316FF27C9F1ED66A45BFCE0A1E5A6749B19BD546BBB4602CF373440",
"",
0x0A);
sk_NPDRM_arr.emplace_back(0x0003003000000000, 0x0003, KEY_NPDRM,
"1B715B0C3E8DC4C1A5772EBA9C5D34F7CCFE5B82025D453F3167566497239664",
"E31E206FBB8AEA27FAB0D9A2FFB6B62F",
"3F51E59FC74D6618D34431FA67987FA11ABBFACC7111811473CD9988FE91C43FC74605E7B8CB732D",
"",
0x08);
sk_NPDRM_arr.emplace_back(0x0003004200000000, 0x0004, KEY_NPDRM,
"BB4DBF66B744A33934172D9F8379A7A5EA74CB0F559BB95D0E7AECE91702B706",
"ADF7B207A15AC601110E61DDFC210AF6",
"9C327471BAFF1F877AE4FE29F4501AF5AD6A2C459F8622697F583EFCA2CA30ABB5CD45D1131CAB30",
"00B61A91DF4AB6A9F142C326BA9592B5265DA88856",
0x16);
sk_NPDRM_arr.emplace_back(0x0003004200000000, 0x0006, KEY_NPDRM,
"8B4C52849765D2B5FA3D5628AFB17644D52B9FFEE235B4C0DB72A62867EAA020",
"05719DF1B1D0306C03910ADDCE4AF887",
"2A5D6C6908CA98FC4740D834C6400E6D6AD74CF0A712CF1E7DAE806E98605CC308F6A03658F2970E",
"",
0x29);
sk_NPDRM_arr.emplace_back(0x0003005000000000, 0x0007, KEY_NPDRM,
"3946DFAA141718C7BE339A0D6C26301C76B568AEBC5CD52652F2E2E0297437C3",
"E4897BE553AE025CDCBF2B15D1C9234E",
"A13AFE8B63F897DA2D3DC3987B39389DC10BAD99DFB703838C4A0BC4E8BB44659C726CFD0CE60D0E",
"009EF86907782A318D4CC3617EBACE2480E73A46F6",
0x17);
sk_NPDRM_arr.emplace_back(0x0003005000000000, 0x0009, KEY_NPDRM,
"0786F4B0CA5937F515BDCE188F569B2EF3109A4DA0780A7AA07BD89C3350810A",
"04AD3C2F122A3B35E804850CAD142C6D",
"A1FE61035DBBEA5A94D120D03C000D3B2F084B9F4AFA99A2D4A588DF92B8F36327CE9E47889A45D0",
"",
0x2A);
sk_NPDRM_arr.emplace_back(0x0003005500000000, 0x000A, KEY_NPDRM,
"03C21AD78FBB6A3D425E9AAB1298F9FD70E29FD4E6E3A3C151205DA50C413DE4",
"0A99D4D4F8301A88052D714AD2FB565E",
"3995C390C9F7FBBAB124A1C14E70F9741A5E6BDF17A605D88239652C8EA7D5FC9F24B30546C1E44B",
"009AC6B22A056BA9E0B6D1520F28A57A3135483F9F",
0x27);
sk_NPDRM_arr.emplace_back(0x0003005500000000, 0x000C, KEY_NPDRM,
"357EBBEA265FAEC271182D571C6CD2F62CFA04D325588F213DB6B2E0ED166D92",
"D26E6DD2B74CD78E866E742E5571B84F",
"00DCF5391618604AB42C8CFF3DC304DF45341EBA4551293E9E2B68FFE2DF527FFA3BE8329E015E57",
"",
0x3A);
sk_NPDRM_arr.emplace_back(0x0003005600000000, 0x000D, KEY_NPDRM,
"337A51416105B56E40D7CAF1B954CDAF4E7645F28379904F35F27E81CA7B6957",
"8405C88E042280DBD794EC7E22B74002",
"9BFF1CC7118D2393DE50D5CF44909860683411A532767BFDAC78622DB9E5456753FE422CBAFA1DA1",
"",
0x18);
sk_NPDRM_arr.emplace_back(0x0003005600000000, 0x000F, KEY_NPDRM,
"135C098CBE6A3E037EBE9F2BB9B30218DDE8D68217346F9AD33203352FBB3291",
"4070C898C2EAAD1634A288AA547A35A8",
"BBD7CCCB556C2EF0F908DC7810FAFC37F2E56B3DAA5F7FAF53A4944AA9B841F76AB091E16B231433",
"",
0x3B);
sk_NPDRM_arr.emplace_back(0x0003006100000000, 0x0010, KEY_NPDRM,
"4B3CD10F6A6AA7D99F9B3A660C35ADE08EF01C2C336B9E46D1BB5678B4261A61",
"C0F2AB86E6E0457552DB50D7219371C5",
"64A5C60BC2AD18B8A237E4AA690647E12BF7A081523FAD4F29BE89ACAC72F7AB43C74EC9AFFDA213",
"",
0x27);
sk_NPDRM_arr.emplace_back(0x0003006600000000, 0x0013, KEY_NPDRM,
"265C93CF48562EC5D18773BEB7689B8AD10C5EB6D21421455DEBC4FB128CBF46",
"8DEA5FF959682A9B98B688CEA1EF4A1D",
"9D8DB5A880608DC69717991AFC3AD5C0215A5EE413328C2ABC8F35589E04432373DB2E2339EEF7C8",
"",
0x18);
sk_NPDRM_arr.emplace_back(0x0003007400000000, 0x0016, KEY_NPDRM,
"7910340483E419E55F0D33E4EA5410EEEC3AF47814667ECA2AA9D75602B14D4B",
"4AD981431B98DFD39B6388EDAD742A8E",
"62DFE488E410B1B6B2F559E4CB932BCB78845AB623CC59FDF65168400FD76FA82ED1DC60E091D1D1",
"",
0x25);
sk_NPDRM_arr.emplace_back(0x0004001100000000, 0x0019, KEY_NPDRM,
"FBDA75963FE690CFF35B7AA7B408CF631744EDEF5F7931A04D58FD6A921FFDB3",
"F72C1D80FFDA2E3BF085F4133E6D2805",
"637EAD34E7B85C723C627E68ABDD0419914EBED4008311731DD87FDDA2DAF71F856A70E14DA17B42",
"",
0x24);
sk_NPDRM_arr.emplace_back(0x0004004600000000, 0x001C, KEY_NPDRM,
"8103EA9DB790578219C4CEDF0592B43064A7D98B601B6C7BC45108C4047AA80F",
"246F4B8328BE6A2D394EDE20479247C5",
"503172C9551308A87621ECEE90362D14889BFED2CF32B0B3E32A4F9FE527A41464B735E1ADBC6762",
"",
0x30);
}
void KeyVault::LoadSelfUNK7Keys()
{
sk_UNK7_arr.clear();
sk_UNK7_arr.emplace_back(0x0003003000000000, 0x0000, KEY_UNK7,
"D91166973979EA8694476B011AC62C7E9F37DA26DE1E5C2EE3D66E42B8517085",
"DC01280A6E46BC674B81A7E8801EBE6E",
"A0FC44108236141BF3517A662B027AFC1AC513A05690496C754DEB7D43BDC41B80FD75C212624EE4",
"",
0x11);
sk_UNK7_arr.emplace_back(0x0003004200000000, 0x0000, KEY_UNK7,
"B73111B0B00117E48DE5E2EE5E534C0F0EFFA4890BBB8CAD01EE0F848F91583E",
"86F56F9E5DE513894874B8BA253334B1",
"B0BA1A1AB9723BB4E87CED9637BE056066BC56E16572D43D0210A06411DBF8FEB8885CD912384AE5",
"",
0x12);
sk_UNK7_arr.emplace_back(0x0003005000000000, 0x0000, KEY_UNK7,
"8E944267C02E69A4FE474B7F5FCD7974A4F936FF4355AEC4F80EFA123858D8F6",
"908A75754E521EAC2F5A4889C6D7B72D",
"91201DA7D79E8EE2563142ECBD646DA026C963AC09E760E5390FFE24DAE6864310ABE147F8204D0B",
"",
0x13);
sk_UNK7_arr.emplace_back(0x0003005500000000, 0x0000, KEY_UNK7,
"BB31DF9A6F62C0DF853075FAA65134D9CE2240306C1731D1F7DA9B5329BD699F",
"263057225873F83940A65C8C926AC3E4",
"BC3A82A4F44C43A197070CD236FDC94FCC542D69A3E803E0AFF78D1F3DA19A79D2F61FAB5B94B437",
"",
0x23);
sk_UNK7_arr.emplace_back(0x0003005600000000, 0x0000, KEY_UNK7,
"71AA75C70A255580E4AE9BDAA0B08828C53EAA713CD0713797F143B284C1589B",
"9DED878CB6BA07121C0F50E7B172A8BF",
"387FCDAEAFF1B59CFAF79CE6215A065ACEAFFAF4048A4F217E1FF5CE67C66EC3F089DB235E52F9D3",
"",
0x29);
sk_UNK7_arr.emplace_back(0x0003006100000000, 0x0000, KEY_UNK7,
"F5D1DBC182F5083CD4EA37C431C7DAC73882C07F232D2699B1DD9FDDF1BF4195",
"D3A7C3C91CBA014FCBCA6D5570DE13FF",
"97CA8A9781F45E557E98F176EF794FCDA6B151EB3DFD1ABA12151E00AE59957C3B15628FC8875D28",
"",
0x23);
sk_UNK7_arr.emplace_back(0x0003006600000000, 0x0000, KEY_UNK7,
"BF10F09590C0152F7EF749FF4B990122A4E8E5491DA49A2D931E72EEB990F860",
"22C19C5522F7A782AFC547C2640F5BDE",
"3233BA2B284189FB1687DF653002257A0925D8EB0C64EBBE8CC7DE87F548D107DE1FD3D1D285DB4F",
"",
0x29);
sk_UNK7_arr.emplace_back(0x0003007400000000, 0x0000, KEY_UNK7,
"F11DBD2C97B32AD37E55F8E743BC821D3E67630A6784D9A058DDD26313482F0F",
"FC5FA12CA3D2D336C4B8B425D679DA55",
"19E27EE90E33EDAB16B22E688B5F704E5C6EC1062070EBF43554CD03DFDAE16D684BB8B5574DBECA",
"",
0x15);
sk_UNK7_arr.emplace_back(0x0004001100000000, 0x0000, KEY_UNK7,
"751EE949CD3ADF50A469197494A1EC358409CCBE6E85217EBDE7A87D3FF1ABD8",
"23AE4ADA4D3F798DC5ED98000337FF77",
"1BABA87CD1AD705C462D4E7427B6DAF59A50383A348A15088F0EDFCF1ADF2B5C2B2D507B2A357D36",
"",
0x1A);
sk_UNK7_arr.emplace_back(0x0004004600000000, 0x0000, KEY_UNK7,
"46BD0891224E0CE13E2162921D4BB76193AEEE4416A729FCDD111C5536BF87C9",
"BF036387CDB613C0AC88A6D9D2CC5316",
"A14F6D5F9AD7EBB3B7A39A7C32F13E5DC3B0BA16BDC33D39FDDF88F4AEEA6CFEEB0C0796C917A952",
"",
0x0F);
}
SELF_KEY KeyVault::GetSelfLV0Key() const
{
return sk_LV0_arr[0];
}
SELF_KEY KeyVault::GetSelfLDRKey() const
{
return sk_LDR_arr[0];
}
SELF_KEY KeyVault::GetSelfLV1Key(u64 version) const
{
SELF_KEY key(0, 0, 0, "", "", "", "", 0);
for(unsigned int i = 0; i < sk_LV1_arr.size(); i++)
{
if (sk_LV1_arr[i].version == version)
{
key = sk_LV1_arr[i];
break;
}
}
return key;
}
SELF_KEY KeyVault::GetSelfLV2Key(u64 version) const
{
SELF_KEY key(0, 0, 0, "", "", "", "", 0);
for(unsigned int i = 0; i < sk_LV2_arr.size(); i++)
{
if (sk_LV2_arr[i].version == version)
{
key = sk_LV2_arr[i];
break;
}
}
return key;
}
SELF_KEY KeyVault::GetSelfISOKey(u16 revision, u64 version) const
{
SELF_KEY key(0, 0, 0, "", "", "", "", 0);
for(unsigned int i = 0; i < sk_ISO_arr.size(); i++)
{
if ((sk_ISO_arr[i].version == version) &&
(sk_ISO_arr[i].revision == revision))
{
key = sk_ISO_arr[i];
break;
}
}
return key;
}
SELF_KEY KeyVault::GetSelfAPPKey(u16 revision) const
{
SELF_KEY key(0, 0, 0, "", "", "", "", 0);
for(unsigned int i = 0; i < sk_APP_arr.size(); i++)
{
if (sk_APP_arr[i].revision == revision)
{
key = sk_APP_arr[i];
break;
}
}
return key;
}
SELF_KEY KeyVault::GetSelfUNK7Key(u64 version) const
{
SELF_KEY key(0, 0, 0, "", "", "", "", 0);
for(unsigned int i = 0; i < sk_UNK7_arr.size(); i++)
{
if (sk_UNK7_arr[i].version == version)
{
key = sk_UNK7_arr[i];
break;
}
}
return key;
}
SELF_KEY KeyVault::GetSelfNPDRMKey(u16 revision) const
{
SELF_KEY key(0, 0, 0, "", "", "", "", 0);
for(unsigned int i = 0; i < sk_NPDRM_arr.size(); i++)
{
if (sk_NPDRM_arr[i].revision == revision)
{
key = sk_NPDRM_arr[i];
break;
}
}
return key;
}
SELF_KEY KeyVault::FindSelfKey(u32 type, u16 revision, u64 version)
{
// Empty key.
SELF_KEY key(0, 0, 0, "", "", "", "", 0);
// Check SELF type.
switch (type)
{
case KEY_LV0:
LoadSelfLV0Keys();
key = GetSelfLV0Key();
break;
case KEY_LV1:
LoadSelfLV1Keys();
key = GetSelfLV1Key(version);
break;
case KEY_LV2:
LoadSelfLV2Keys();
key = GetSelfLV2Key(version);
break;
case KEY_APP:
LoadSelfAPPKeys();
key = GetSelfAPPKey(revision);
break;
case KEY_ISO:
LoadSelfISOKeys();
key = GetSelfISOKey(revision, version);
break;
case KEY_LDR:
LoadSelfLDRKeys();
key = GetSelfLDRKey();
break;
case KEY_UNK7:
LoadSelfUNK7Keys();
key = GetSelfUNK7Key(version);
break;
case KEY_NPDRM:
LoadSelfNPDRMKeys();
key = GetSelfNPDRMKey(revision);
break;
default:
break;
}
return key;
}
void KeyVault::SetKlicenseeKey(u8 *key)
{
memcpy(klicensee_key, key, 0x10);
}
u8 *KeyVault::GetKlicenseeKey()
{
return klicensee_key;
}
void rap_to_rif(unsigned char* rap, unsigned char* rif)
{
int i;
int round;
aes_context aes;
unsigned char key[0x10];
unsigned char iv[0x10];
memset(key, 0, 0x10);
memset(iv, 0, 0x10);
// Initial decrypt.
aes_setkey_dec(&aes, RAP_KEY, 128);
aes_crypt_cbc(&aes, AES_DECRYPT, 0x10, iv, rap, key);
// rap2rifkey round.
for (round = 0; round < 5; ++round)
{
for (i = 0; i < 16; ++i)
{
int p = RAP_PBOX[i];
key[p] ^= RAP_E1[p];
}
for (i = 15; i >= 1; --i)
{
int p = RAP_PBOX[i];
int pp = RAP_PBOX[i - 1];
key[p] ^= key[pp];
}
int o = 0;
for (i = 0; i < 16; ++i)
{
int p = RAP_PBOX[i];
unsigned char kc = key[p] - o;
unsigned char ec2 = RAP_E2[p];
if (o != 1 || kc != 0xFF)
{
o = kc < ec2 ? 1 : 0;
key[p] = kc - ec2;
} else if (kc == 0xFF)
{
key[p] = kc - ec2;
} else
{
key[p] = kc;
}
}
}
memcpy(rif, key, 0x10);
}
+178
View File
@@ -0,0 +1,178 @@
#pragma once
enum SELF_KEY_TYPE {
KEY_LV0 = 1,
KEY_LV1,
KEY_LV2,
KEY_APP,
KEY_ISO,
KEY_LDR,
KEY_UNK7,
KEY_NPDRM
};
struct SELF_KEY {
u64 version;
u16 revision;
u32 self_type;
u8 erk[0x20];
u8 riv[0x10];
u8 pub[0x28];
u8 priv[0x15];
u32 curve_type;
SELF_KEY(u64 ver, u16 rev, u32 type, const std::string& e, const std::string& r, const std::string& pb, const std::string& pr, u32 ct);
};
static u8 PKG_AES_KEY[0x10] = {
0x2e, 0x7b, 0x71, 0xd7, 0xc9, 0xc9, 0xa1, 0x4e, 0xa3, 0x22, 0x1f, 0x18, 0x88, 0x28, 0xb8, 0xf8
};
static u8 PKG_AES_KEY2[0x10] = {
0x07, 0xf2, 0xc6, 0x82, 0x90, 0xb5, 0x0d, 0x2c, 0x33, 0x81, 0x8d, 0x70, 0x9b, 0x60, 0xe6, 0x2b
};
static u8 NP_IDPS[0x10] = {
0x5E, 0x06, 0xE0, 0x4F, 0xD9, 0x4A, 0x71, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
};
static u8 NP_KLIC_FREE[0x10] = {
0x72, 0xF9, 0x90, 0x78, 0x8F, 0x9C, 0xFF, 0x74, 0x57, 0x25, 0xF0, 0x8E, 0x4C, 0x12, 0x83, 0x87
};
static u8 NP_OMAC_KEY_2[0x10] = {
0x6B, 0xA5, 0x29, 0x76, 0xEF, 0xDA, 0x16, 0xEF, 0x3C, 0x33, 0x9F, 0xB2, 0x97, 0x1E, 0x25, 0x6B
};
static u8 NP_OMAC_KEY_3[0x10] = {
0x9B, 0x51, 0x5F, 0xEA, 0xCF, 0x75, 0x06, 0x49, 0x81, 0xAA, 0x60, 0x4D, 0x91, 0xA5, 0x4E, 0x97
};
static u8 NP_KLIC_KEY[0x10] = {
0xF2, 0xFB, 0xCA, 0x7A, 0x75, 0xB0, 0x4E, 0xDC, 0x13, 0x90, 0x63, 0x8C, 0xCD, 0xFD, 0xD1, 0xEE
};
static u8 NP_RIF_KEY[0x10] = {
0xDA, 0x7D, 0x4B, 0x5E, 0x49, 0x9A, 0x4F, 0x53, 0xB1, 0xC1, 0xA1, 0x4A, 0x74, 0x84, 0x44, 0x3B
};
static u8 NP_PSP_KEY_1[0x10] = {
0x2A, 0x6A, 0xFB, 0xCF, 0x43, 0xD1, 0x57, 0x9F, 0x7D, 0x73, 0x87, 0x41, 0xA1, 0x3B, 0xD4, 0x2E
};
static u8 NP_PSP_KEY_2[0x10] = {
0x0D, 0xB8, 0x57, 0x32, 0x36, 0x6C, 0xD7, 0x34, 0xFC, 0x87, 0x9E, 0x74, 0x33, 0x43, 0xBB, 0x4F
};
static u8 NP_PSX_KEY[0x10] = {
0x52, 0xC0, 0xB5, 0xCA, 0x76, 0xD6, 0x13, 0x4B, 0xB4, 0x5F, 0xC6, 0x6C, 0xA6, 0x37, 0xF2, 0xC1
};
static u8 RAP_KEY[0x10] = {
0x86, 0x9F, 0x77, 0x45, 0xC1, 0x3F, 0xD8, 0x90, 0xCC, 0xF2, 0x91, 0x88, 0xE3, 0xCC, 0x3E, 0xDF
};
static u8 RAP_PBOX[0x10] = {
0x0C, 0x03, 0x06, 0x04, 0x01, 0x0B, 0x0F, 0x08, 0x02, 0x07, 0x00, 0x05, 0x0A, 0x0E, 0x0D, 0x09
};
static u8 RAP_E1[0x10] = {
0xA9, 0x3E, 0x1F, 0xD6, 0x7C, 0x55, 0xA3, 0x29, 0xB7, 0x5F, 0xDD, 0xA6, 0x2A, 0x95, 0xC7, 0xA5
};
static u8 RAP_E2[0x10] = {
0x67, 0xD4, 0x5D, 0xA3, 0x29, 0x6D, 0x00, 0x6A, 0x4E, 0x7C, 0x53, 0x7B, 0xF5, 0x53, 0x8C, 0x74
};
static u8 SDAT_KEY[0x10] = {
0x0D, 0x65, 0x5E, 0xF8, 0xE6, 0x74, 0xA9, 0x8A, 0xB8, 0x50, 0x5C, 0xFA, 0x7D, 0x01, 0x29, 0x33
};
static u8 EDAT_KEY_0[0x10] = {
0xBE, 0x95, 0x9C, 0xA8, 0x30, 0x8D, 0xEF, 0xA2, 0xE5, 0xE1, 0x80, 0xC6, 0x37, 0x12, 0xA9, 0xAE
};
static u8 EDAT_HASH_0[0x10] = {
0xEF, 0xFE, 0x5B, 0xD1, 0x65, 0x2E, 0xEB, 0xC1, 0x19, 0x18, 0xCF, 0x7C, 0x04, 0xD4, 0xF0, 0x11
};
static u8 EDAT_KEY_1[0x10] = {
0x4C, 0xA9, 0xC1, 0x4B, 0x01, 0xC9, 0x53, 0x09, 0x96, 0x9B, 0xEC, 0x68, 0xAA, 0x0B, 0xC0, 0x81
};
static u8 EDAT_HASH_1[0x10] = {
0x3D, 0x92, 0x69, 0x9B, 0x70, 0x5B, 0x07, 0x38, 0x54, 0xD8, 0xFC, 0xC6, 0xC7, 0x67, 0x27, 0x47
};
static u8 EDAT_IV[0x10] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static u8 VSH_CURVE_P[0x14] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
static u8 VSH_CURVE_A[0x14] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC
};
static u8 VSH_CURVE_B[0x14] = {
0xA6, 0x8B, 0xED, 0xC3, 0x34, 0x18, 0x02, 0x9C, 0x1D, 0x3C, 0xE3, 0x3B, 0x9A, 0x32, 0x1F, 0xCC, 0xBB, 0x9E, 0x0F, 0x0B
};
static u8 VSH_CURVE_N[0x15] = {
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xB5, 0xAE, 0x3C, 0x52, 0x3E, 0x63, 0x94, 0x4F, 0x21, 0x27
};
static u8 VSH_CURVE_GX[0x14] = {
0x12, 0x8E, 0xC4, 0x25, 0x64, 0x87, 0xFD, 0x8F, 0xDF, 0x64, 0xE2, 0x43, 0x7B, 0xC0, 0xA1, 0xF6, 0xD5, 0xAF, 0xDE, 0x2C
};
static u8 VSH_CURVE_GY[0x14] = {
0x59, 0x58, 0x55, 0x7E, 0xB1, 0xDB, 0x00, 0x12, 0x60, 0x42, 0x55, 0x24, 0xDB, 0xC3, 0x79, 0xD5, 0xAC, 0x5F, 0x4A, 0xDF
};
static u8 VSH_PUB[0x28] = {
0x62, 0x27, 0xB0, 0x0A, 0x02, 0x85, 0x6F, 0xB0, 0x41, 0x08, 0x87, 0x67, 0x19, 0xE0, 0xA0, 0x18, 0x32, 0x91, 0xEE, 0xB9,
0x6E, 0x73, 0x6A, 0xBF, 0x81, 0xF7, 0x0E, 0xE9, 0x16, 0x1B, 0x0D, 0xDE, 0xB0, 0x26, 0x76, 0x1A, 0xFF, 0x7B, 0xC8, 0x5B
};
class KeyVault
{
std::vector<SELF_KEY> sk_LV0_arr;
std::vector<SELF_KEY> sk_LV1_arr;
std::vector<SELF_KEY> sk_LV2_arr;
std::vector<SELF_KEY> sk_APP_arr;
std::vector<SELF_KEY> sk_ISO_arr;
std::vector<SELF_KEY> sk_LDR_arr;
std::vector<SELF_KEY> sk_UNK7_arr;
std::vector<SELF_KEY> sk_NPDRM_arr;
u8 klicensee_key[0x10];
public:
KeyVault();
SELF_KEY FindSelfKey(u32 type, u16 revision, u64 version);
void SetKlicenseeKey(u8 *key);
u8 *GetKlicenseeKey();
private:
void LoadSelfLV0Keys();
void LoadSelfLDRKeys();
void LoadSelfLV1Keys();
void LoadSelfLV2Keys();
void LoadSelfISOKeys();
void LoadSelfAPPKeys();
void LoadSelfUNK7Keys();
void LoadSelfNPDRMKeys();
SELF_KEY GetSelfLV0Key() const;
SELF_KEY GetSelfLDRKey() const;
SELF_KEY GetSelfLV1Key(u64 version) const;
SELF_KEY GetSelfLV2Key(u64 version) const;
SELF_KEY GetSelfISOKey(u16 revision, u64 version) const;
SELF_KEY GetSelfAPPKey(u16 revision) const;
SELF_KEY GetSelfUNK7Key(u64 version) const;
SELF_KEY GetSelfNPDRMKey(u16 revision) const;
};
// RAP to RIF function.
void rap_to_rif(unsigned char* rap, unsigned char* rif);
+278
View File
@@ -0,0 +1,278 @@
// Copyright (C) 2014 Hykem <hykem@hotmail.com>
// Licensed under the terms of the GNU GPL, version 3
// http://www.gnu.org/licenses/gpl-3.0.txt
#include "lz.h"
void decode_range(unsigned int *range, unsigned int *code, unsigned char **src)
{
if (!((*range) >> 24))
{
(*range) <<= 8;
*code = ((*code) << 8) + (*src)++[5];
}
}
int decode_bit(unsigned int *range, unsigned int *code, int *index, unsigned char **src, unsigned char *c)
{
decode_range(range, code, src);
unsigned int val = ((*range) >> 8) * (*c);
*c -= ((*c) >> 3);
if (index) (*index) <<= 1;
if (*code < val)
{
*range = val;
*c += 31;
if (index) (*index)++;
return 1;
}
else
{
*code -= val;
*range -= val;
return 0;
}
}
int decode_number(unsigned char *ptr, int index, int *bit_flag, unsigned int *range, unsigned int *code, unsigned char **src)
{
int i = 1;
if (index >= 3)
{
decode_bit(range, code, &i, src, ptr + 0x18);
if (index >= 4)
{
decode_bit(range, code, &i, src, ptr + 0x18);
if (index >= 5)
{
decode_range(range, code, src);
for (; index >= 5; index--)
{
i <<= 1;
(*range) >>= 1;
if (*code < *range)
i++;
else
(*code) -= *range;
}
}
}
}
*bit_flag = decode_bit(range, code, &i, src, ptr);
if (index >= 1)
{
decode_bit(range, code, &i, src, ptr + 0x8);
if (index >= 2)
{
decode_bit(range, code, &i, src, ptr + 0x10);
}
}
return i;
}
int decode_word(unsigned char *ptr, int index, int *bit_flag, unsigned int *range, unsigned int *code, unsigned char **src)
{
int i = 1;
index /= 8;
if (index >= 3)
{
decode_bit(range, code, &i, src, ptr + 4);
if (index >= 4)
{
decode_bit(range, code, &i, src, ptr + 4);
if (index >= 5)
{
decode_range(range, code, src);
for (; index >= 5; index--)
{
i <<= 1;
(*range) >>= 1;
if (*code < *range)
i++;
else
(*code) -= *range;
}
}
}
}
*bit_flag = decode_bit(range, code, &i, src, ptr);
if (index >= 1)
{
decode_bit(range, code, &i, src, ptr + 1);
if (index >= 2)
{
decode_bit(range, code, &i, src, ptr + 2);
}
}
return i;
}
int decompress(unsigned char *out, unsigned char *in, unsigned int size)
{
int result;
unsigned char *tmp = new unsigned char[0xCC8];
int offset = 0;
int bit_flag = 0;
int data_length = 0;
int data_offset = 0;
unsigned char *tmp_sect1, *tmp_sect2, *tmp_sect3;
unsigned char *buf_start, *buf_end;
unsigned char prev = 0;
unsigned char *start = out;
unsigned char *end = (out + size);
unsigned char head = in[0];
unsigned int range = 0xFFFFFFFF;
unsigned int code = (in[1] << 24) | (in[2] << 16) | (in[3] << 8) | in[4];
// TODO:: Syphurith: There was a check against the unsigned char head. if (head < 0) would always be false.. I don't know are you tried to if (head > 0x80)?
if (head < 0) // Check if we have a valid starting byte.
{
// The dictionary header is invalid, the data is not compressed.
result = -1;
if (code <= size)
{
memcpy(out, (const void *)(in + 5), code);
result = (start - out);
}
}
else
{
// Set up a temporary buffer (sliding window).
memset(tmp, 0x80, 0xCA8);
while (1)
{
// Start reading at 0xB68.
tmp_sect1 = tmp + offset + 0xB68;
if (!decode_bit(&range, &code, 0, &in, tmp_sect1)) // Raw char.
{
// Adjust offset and check for stream end.
if (offset > 0) offset--;
if (start == end) return (start - out);
// Locate first section.
int sect = (((((((int)(start - out)) & 7) << 8) + prev) >> head) & 7) * 0xFF - 1;
tmp_sect1 = tmp + sect;
int index = 1;
// Read, decode and write back.
do
{
decode_bit(&range, &code, &index, &in, tmp_sect1 + index);
} while ((index >> 8) == 0);
// Save index.
*start++ = index;
}
else // Compressed char stream.
{
int index = -1;
// Identify the data length bit field.
do
{
tmp_sect1 += 8;
bit_flag = decode_bit(&range, &code, 0, &in, tmp_sect1);
index += bit_flag;
} while ((bit_flag != 0) && (index < 6));
// Default block size is 0x160.
int b_size = 0x160;
tmp_sect2 = tmp + index + 0x7F1;
// If the data length was found, parse it as a number.
if ((index >= 0) || (bit_flag != 0))
{
// Locate next section.
int sect = (index << 5) | (((((int)(start - out)) << index) & 3) << 3) | (offset & 7);
tmp_sect1 = tmp + 0xBA8 + sect;
// Decode the data length (8 bit fields).
data_length = decode_number(tmp_sect1, index, &bit_flag, &range, &code, &in);
if (data_length == 0xFF) return (start - out); // End of stream.
}
else
{
// Assume one byte of advance.
data_length = 1;
}
// If we got valid parameters, seek to find data offset.
if ((data_length <= 2))
{
tmp_sect2 += 0xF8;
b_size = 0x40; // Block size is now 0x40.
}
int diff = 0;
int shift = 1;
// Identify the data offset bit field.
do
{
diff = (shift << 4) - b_size;
bit_flag = decode_bit(&range, &code, &shift, &in, tmp_sect2 + (shift << 3));
} while (diff < 0);
// If the data offset was found, parse it as a number.
if ((diff > 0) || (bit_flag != 0))
{
// Adjust diff if needed.
if (bit_flag == 0) diff -= 8;
// Locate section.
tmp_sect3 = tmp + 0x928 + diff;
// Decode the data offset (1 bit fields).
data_offset = decode_word(tmp_sect3, diff, &bit_flag, &range, &code, &in);
}
else
{
// Assume one byte of advance.
data_offset = 1;
}
// Set buffer start/end.
buf_start = start - data_offset;
buf_end = start + data_length + 1;
// Underflow.
if (buf_start < out)
return -1;
// Overflow.
if (buf_end > end)
return -1;
// Update offset.
offset = ((((int)(buf_end - out)) + 1) & 1) + 6;
// Copy data.
do
{
*start++ = *buf_start++;
} while (start < buf_end);
}
prev = *(start - 1);
}
result = (start - out);
}
delete[] tmp;
return result;
}
+15
View File
@@ -0,0 +1,15 @@
#pragma once
// Copyright (C) 2014 Hykem <hykem@hotmail.com>
// Licensed under the terms of the GNU GPL, version 3
// http://www.gnu.org/licenses/gpl-3.0.txt
// Reverse-engineered custom LempelZivMarkov based compression.
#include <string.h>
void decode_range(unsigned int *range, unsigned int *code, unsigned char **src);
int decode_bit(unsigned int *range, unsigned int *code, int *index, unsigned char **src, unsigned char *c);
int decode_number(unsigned char *ptr, int index, int *bit_flag, unsigned int *range, unsigned int *code, unsigned char **src);
int decode_word(unsigned char *ptr, int index, int *bit_flag, unsigned int *range, unsigned int *code, unsigned char **src);
int decompress(unsigned char *out, unsigned char *in, unsigned int size);
+397
View File
@@ -0,0 +1,397 @@
/*
* FIPS-180-1 compliant SHA-1 implementation
*
* Copyright (C) 2006-2013, Brainspark B.V.
*
* This file is part of PolarSSL (http://www.polarssl.org)
* Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
*
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/*
* The SHA-1 standard was published by NIST in 1993.
*
* http://www.itl.nist.gov/fipspubs/fip180-1.htm
*/
#include "stdafx.h"
#include "sha1.h"
/*
* 32-bit integer manipulation macros (big endian)
*/
#ifndef GET_UINT32_BE
#define GET_UINT32_BE(n,b,i) \
{ \
(n) = ( (uint32_t) (b)[(i) ] << 24 ) \
| ( (uint32_t) (b)[(i) + 1] << 16 ) \
| ( (uint32_t) (b)[(i) + 2] << 8 ) \
| ( (uint32_t) (b)[(i) + 3] ); \
}
#endif
#ifndef PUT_UINT32_BE
#define PUT_UINT32_BE(n,b,i) \
{ \
(b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
(b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
(b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
(b)[(i) + 3] = (unsigned char) ( (n) ); \
}
#endif
/*
* SHA-1 context setup
*/
void sha1_starts( sha1_context *ctx )
{
ctx->total[0] = 0;
ctx->total[1] = 0;
ctx->state[0] = 0x67452301;
ctx->state[1] = 0xEFCDAB89;
ctx->state[2] = 0x98BADCFE;
ctx->state[3] = 0x10325476;
ctx->state[4] = 0xC3D2E1F0;
}
void sha1_process( sha1_context *ctx, const unsigned char data[64] )
{
uint32_t temp, W[16], A, B, C, D, E;
GET_UINT32_BE( W[ 0], data, 0 );
GET_UINT32_BE( W[ 1], data, 4 );
GET_UINT32_BE( W[ 2], data, 8 );
GET_UINT32_BE( W[ 3], data, 12 );
GET_UINT32_BE( W[ 4], data, 16 );
GET_UINT32_BE( W[ 5], data, 20 );
GET_UINT32_BE( W[ 6], data, 24 );
GET_UINT32_BE( W[ 7], data, 28 );
GET_UINT32_BE( W[ 8], data, 32 );
GET_UINT32_BE( W[ 9], data, 36 );
GET_UINT32_BE( W[10], data, 40 );
GET_UINT32_BE( W[11], data, 44 );
GET_UINT32_BE( W[12], data, 48 );
GET_UINT32_BE( W[13], data, 52 );
GET_UINT32_BE( W[14], data, 56 );
GET_UINT32_BE( W[15], data, 60 );
#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
#define R(t) \
( \
temp = W[(t - 3) & 0x0F] ^ W[(t - 8) & 0x0F] ^ \
W[(t - 14) & 0x0F] ^ W[ t & 0x0F], \
( W[t & 0x0F] = S(temp,1) ) \
)
#define P(a,b,c,d,e,x) \
{ \
e += S(a,5) + F(b,c,d) + K + x; b = S(b,30); \
}
A = ctx->state[0];
B = ctx->state[1];
C = ctx->state[2];
D = ctx->state[3];
E = ctx->state[4];
#define F(x,y,z) (z ^ (x & (y ^ z)))
#define K 0x5A827999
P( A, B, C, D, E, W[0] );
P( E, A, B, C, D, W[1] );
P( D, E, A, B, C, W[2] );
P( C, D, E, A, B, W[3] );
P( B, C, D, E, A, W[4] );
P( A, B, C, D, E, W[5] );
P( E, A, B, C, D, W[6] );
P( D, E, A, B, C, W[7] );
P( C, D, E, A, B, W[8] );
P( B, C, D, E, A, W[9] );
P( A, B, C, D, E, W[10] );
P( E, A, B, C, D, W[11] );
P( D, E, A, B, C, W[12] );
P( C, D, E, A, B, W[13] );
P( B, C, D, E, A, W[14] );
P( A, B, C, D, E, W[15] );
P( E, A, B, C, D, R(16) );
P( D, E, A, B, C, R(17) );
P( C, D, E, A, B, R(18) );
P( B, C, D, E, A, R(19) );
#undef K
#undef F
#define F(x,y,z) (x ^ y ^ z)
#define K 0x6ED9EBA1
P( A, B, C, D, E, R(20) );
P( E, A, B, C, D, R(21) );
P( D, E, A, B, C, R(22) );
P( C, D, E, A, B, R(23) );
P( B, C, D, E, A, R(24) );
P( A, B, C, D, E, R(25) );
P( E, A, B, C, D, R(26) );
P( D, E, A, B, C, R(27) );
P( C, D, E, A, B, R(28) );
P( B, C, D, E, A, R(29) );
P( A, B, C, D, E, R(30) );
P( E, A, B, C, D, R(31) );
P( D, E, A, B, C, R(32) );
P( C, D, E, A, B, R(33) );
P( B, C, D, E, A, R(34) );
P( A, B, C, D, E, R(35) );
P( E, A, B, C, D, R(36) );
P( D, E, A, B, C, R(37) );
P( C, D, E, A, B, R(38) );
P( B, C, D, E, A, R(39) );
#undef K
#undef F
#define F(x,y,z) ((x & y) | (z & (x | y)))
#define K 0x8F1BBCDC
P( A, B, C, D, E, R(40) );
P( E, A, B, C, D, R(41) );
P( D, E, A, B, C, R(42) );
P( C, D, E, A, B, R(43) );
P( B, C, D, E, A, R(44) );
P( A, B, C, D, E, R(45) );
P( E, A, B, C, D, R(46) );
P( D, E, A, B, C, R(47) );
P( C, D, E, A, B, R(48) );
P( B, C, D, E, A, R(49) );
P( A, B, C, D, E, R(50) );
P( E, A, B, C, D, R(51) );
P( D, E, A, B, C, R(52) );
P( C, D, E, A, B, R(53) );
P( B, C, D, E, A, R(54) );
P( A, B, C, D, E, R(55) );
P( E, A, B, C, D, R(56) );
P( D, E, A, B, C, R(57) );
P( C, D, E, A, B, R(58) );
P( B, C, D, E, A, R(59) );
#undef K
#undef F
#define F(x,y,z) (x ^ y ^ z)
#define K 0xCA62C1D6
P( A, B, C, D, E, R(60) );
P( E, A, B, C, D, R(61) );
P( D, E, A, B, C, R(62) );
P( C, D, E, A, B, R(63) );
P( B, C, D, E, A, R(64) );
P( A, B, C, D, E, R(65) );
P( E, A, B, C, D, R(66) );
P( D, E, A, B, C, R(67) );
P( C, D, E, A, B, R(68) );
P( B, C, D, E, A, R(69) );
P( A, B, C, D, E, R(70) );
P( E, A, B, C, D, R(71) );
P( D, E, A, B, C, R(72) );
P( C, D, E, A, B, R(73) );
P( B, C, D, E, A, R(74) );
P( A, B, C, D, E, R(75) );
P( E, A, B, C, D, R(76) );
P( D, E, A, B, C, R(77) );
P( C, D, E, A, B, R(78) );
P( B, C, D, E, A, R(79) );
#undef K
#undef F
ctx->state[0] += A;
ctx->state[1] += B;
ctx->state[2] += C;
ctx->state[3] += D;
ctx->state[4] += E;
}
/*
* SHA-1 process buffer
*/
void sha1_update( sha1_context *ctx, const unsigned char *input, size_t ilen )
{
size_t fill;
uint32_t left;
// TODO:: Syphurith: Orz. It is said that size_t is an unsigned type..
if( ilen <= 0 )
return;
left = ctx->total[0] & 0x3F;
fill = 64 - left;
ctx->total[0] += (uint32_t) ilen;
ctx->total[0] &= 0xFFFFFFFF;
if( ctx->total[0] < (uint32_t) ilen )
ctx->total[1]++;
if( left && ilen >= fill )
{
memcpy( (void *) (ctx->buffer + left), input, fill );
sha1_process( ctx, ctx->buffer );
input += fill;
ilen -= fill;
left = 0;
}
while( ilen >= 64 )
{
sha1_process( ctx, input );
input += 64;
ilen -= 64;
}
if( ilen > 0 )
memcpy( (void *) (ctx->buffer + left), input, ilen );
}
static const unsigned char sha1_padding[64] =
{
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
/*
* SHA-1 final digest
*/
void sha1_finish( sha1_context *ctx, unsigned char output[20] )
{
uint32_t last, padn;
uint32_t high, low;
unsigned char msglen[8];
high = ( ctx->total[0] >> 29 )
| ( ctx->total[1] << 3 );
low = ( ctx->total[0] << 3 );
PUT_UINT32_BE( high, msglen, 0 );
PUT_UINT32_BE( low, msglen, 4 );
last = ctx->total[0] & 0x3F;
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
sha1_update( ctx, sha1_padding, padn );
sha1_update( ctx, msglen, 8 );
PUT_UINT32_BE( ctx->state[0], output, 0 );
PUT_UINT32_BE( ctx->state[1], output, 4 );
PUT_UINT32_BE( ctx->state[2], output, 8 );
PUT_UINT32_BE( ctx->state[3], output, 12 );
PUT_UINT32_BE( ctx->state[4], output, 16 );
}
/*
* output = SHA-1( input buffer )
*/
void sha1( const unsigned char *input, size_t ilen, unsigned char output[20] )
{
sha1_context ctx;
sha1_starts( &ctx );
sha1_update( &ctx, input, ilen );
sha1_finish( &ctx, output );
memset( &ctx, 0, sizeof( sha1_context ) );
}
/*
* SHA-1 HMAC context setup
*/
void sha1_hmac_starts( sha1_context *ctx, const unsigned char *key, size_t keylen )
{
size_t i;
unsigned char sum[20];
if( keylen > 64 )
{
sha1( key, keylen, sum );
keylen = 20;
key = sum;
}
memset( ctx->ipad, 0x36, 64 );
memset( ctx->opad, 0x5C, 64 );
for( i = 0; i < keylen; i++ )
{
ctx->ipad[i] = (unsigned char)( ctx->ipad[i] ^ key[i] );
ctx->opad[i] = (unsigned char)( ctx->opad[i] ^ key[i] );
}
sha1_starts( ctx );
sha1_update( ctx, ctx->ipad, 64 );
memset( sum, 0, sizeof( sum ) );
}
/*
* SHA-1 HMAC process buffer
*/
void sha1_hmac_update( sha1_context *ctx, const unsigned char *input, size_t ilen )
{
sha1_update( ctx, input, ilen );
}
/*
* SHA-1 HMAC final digest
*/
void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] )
{
unsigned char tmpbuf[20];
sha1_finish( ctx, tmpbuf );
sha1_starts( ctx );
sha1_update( ctx, ctx->opad, 64 );
sha1_update( ctx, tmpbuf, 20 );
sha1_finish( ctx, output );
memset( tmpbuf, 0, sizeof( tmpbuf ) );
}
/*
* SHA1 HMAC context reset
*/
void sha1_hmac_reset( sha1_context *ctx )
{
sha1_starts( ctx );
sha1_update( ctx, ctx->ipad, 64 );
}
/*
* output = HMAC-SHA-1( hmac key, input buffer )
*/
void sha1_hmac( const unsigned char *key, size_t keylen,
const unsigned char *input, size_t ilen,
unsigned char output[20] )
{
sha1_context ctx;
sha1_hmac_starts( &ctx, key, keylen );
sha1_hmac_update( &ctx, input, ilen );
sha1_hmac_finish( &ctx, output );
memset( &ctx, 0, sizeof( sha1_context ) );
}
+163
View File
@@ -0,0 +1,163 @@
#pragma once
/**
* \file sha1.h
*
* \brief SHA-1 cryptographic hash function
*
* Copyright (C) 2006-2013, Brainspark B.V.
*
* This file is part of PolarSSL (http://www.polarssl.org)
* Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
*
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <string.h>
#ifdef _MSC_VER
#include <basetsd.h>
typedef UINT32 uint32_t;
#else
#include <inttypes.h>
#endif
#define POLARSSL_ERR_SHA1_FILE_IO_ERROR -0x0076 /**< Read/write error in file. */
// Regular implementation
//
/**
* \brief SHA-1 context structure
*/
typedef struct
{
uint32_t total[2]; /*!< number of bytes processed */
uint32_t state[5]; /*!< intermediate digest state */
unsigned char buffer[64]; /*!< data block being processed */
unsigned char ipad[64]; /*!< HMAC: inner padding */
unsigned char opad[64]; /*!< HMAC: outer padding */
}
sha1_context;
#ifdef __cplusplus
extern "C" {
#endif
/**
* \brief SHA-1 context setup
*
* \param ctx context to be initialized
*/
void sha1_starts( sha1_context *ctx );
/**
* \brief SHA-1 process buffer
*
* \param ctx SHA-1 context
* \param input buffer holding the data
* \param ilen length of the input data
*/
void sha1_update( sha1_context *ctx, const unsigned char *input, size_t ilen );
/**
* \brief SHA-1 final digest
*
* \param ctx SHA-1 context
* \param output SHA-1 checksum result
*/
void sha1_finish( sha1_context *ctx, unsigned char output[20] );
/* Internal use */
void sha1_process( sha1_context *ctx, const unsigned char data[64] );
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
extern "C" {
#endif
/**
* \brief Output = SHA-1( input buffer )
*
* \param input buffer holding the data
* \param ilen length of the input data
* \param output SHA-1 checksum result
*/
void sha1( const unsigned char *input, size_t ilen, unsigned char output[20] );
/**
* \brief Output = SHA-1( file contents )
*
* \param path input file name
* \param output SHA-1 checksum result
*
* \return 0 if successful, or POLARSSL_ERR_SHA1_FILE_IO_ERROR
*/
int sha1_file( const char *path, unsigned char output[20] );
/**
* \brief SHA-1 HMAC context setup
*
* \param ctx HMAC context to be initialized
* \param key HMAC secret key
* \param keylen length of the HMAC key
*/
void sha1_hmac_starts( sha1_context *ctx, const unsigned char *key, size_t keylen );
/**
* \brief SHA-1 HMAC process buffer
*
* \param ctx HMAC context
* \param input buffer holding the data
* \param ilen length of the input data
*/
void sha1_hmac_update( sha1_context *ctx, const unsigned char *input, size_t ilen );
/**
* \brief SHA-1 HMAC final digest
*
* \param ctx HMAC context
* \param output SHA-1 HMAC checksum result
*/
void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] );
/**
* \brief SHA-1 HMAC context reset
*
* \param ctx HMAC context to be reset
*/
void sha1_hmac_reset( sha1_context *ctx );
/**
* \brief Output = HMAC-SHA-1( hmac key, input buffer )
*
* \param key HMAC secret key
* \param keylen length of the HMAC key
* \param input buffer holding the data
* \param ilen length of the input data
* \param output HMAC-SHA-1 result
*/
void sha1_hmac( const unsigned char *key, size_t keylen,
const unsigned char *input, size_t ilen,
unsigned char output[20] );
#ifdef __cplusplus
}
#endif

Some files were not shown because too many files have changed in this diff Show More