Subv
bec527fa24
SaveData: Implemented the SystemSaveData archive.
...
It will be stored in the /syssavedata folder. This archive is user by various Services and possibly games via the FS:U service.
2014-12-17 23:44:32 -05:00
bunnei
797efbde1a
Merge pull request #298 from lioncash/flags
...
armemu: Unset GE flags for UADD8 if results are < 0x100
2014-12-17 22:06:27 -05:00
bunnei
a968adf50e
Merge pull request #295 from lioncash/umaal
...
armemu: Implement UMAAL
2014-12-17 21:44:13 -05:00
Lioncash
85c318078d
armemu: Combine SSUB16, SADD16, SASX, and SSAX.
2014-12-17 21:17:54 -05:00
bunnei
075126247f
Merge pull request #292 from lioncash/backports
...
Backport more skyeye fixes from 3dmoo
2014-12-17 20:58:00 -05:00
bunnei
e00e303275
Merge pull request #297 from lioncash/ssub16
...
armemu: Fix SSUB16
2014-12-17 20:56:37 -05:00
bunnei
7bae450379
Merge pull request #185 from purpasmart96/mem_perm
...
Kernel: Add missing permissions
2014-12-17 20:56:04 -05:00
Subv
ea9ce0fba7
Filesystem/Archives: Implemented the SaveData archive
...
The savedata for each game is stored in /savedata/<ProgramID> for NCCH files. ELF files and 3DSX files use the folder 0 because they have no ID information
Got rid of the code duplication in File and Directory
Files that deal with the host machine's file system now live in DiskFile, similarly for directories and DiskDirectory and archives with DiskArchive.
FS_U: Use the correct error code when a file wasn't found
2014-12-17 19:21:38 -05:00
Lioncash
41fee1c940
armemu: Unset GE flags for UADD8 if results are < 0x100
...
Reference manual states these must be set to zero if this case is true.
2014-12-17 17:54:49 -05:00
Lioncash
58dc554733
armemu: Fix SSUB16
...
Broken from the same reason SADD16 was.
The lo part of the result should only be constructed from the lo halfwords of rm and rn.
The hi part of the result should only be constructed from the hi halfwords of rm and rn.
2014-12-17 15:40:10 -05:00
bunnei
e6f440ea7f
Merge pull request #293 from lioncash/sops
...
armemu: Fix SADD16
2014-12-17 14:54:24 -05:00
bunnei
3e9d4a7917
Merge pull request #287 from lioncash/qaddsub16
...
armemu: Join QADD16/QSUB16 and fix saturation clamping.
2014-12-17 12:34:52 -05:00
Lioncash
5820dba6b7
armemu: Implement UMAAL
2014-12-17 12:21:21 -05:00
Lioncash
2d91164bb9
armemu: Narrow the scope of some variables in handle_v6_insn
...
There's no reason to have these in the outer-most scope.
2014-12-17 10:26:20 -05:00
Lioncash
5289a496a7
armemu: Fix SADD16
...
The lo and hi parts of the result were being constructed as a result of hi and lo halfword intermixing from the rm and rn regs. However the lo part of the result should be constructed only from the lo halfwords of rm and rn, and the hi part of the result should only be constructed from the hi halfwords of rm and rn.
2014-12-17 09:36:25 -05:00
Normmatt
73211dc8fe
armemu: Fix PKHTB
2014-12-17 03:26:12 -05:00
Normmatt
8045df14d2
armemu: Implement REVSH
2014-12-17 03:26:01 -05:00
Normmatt
bc81cc9490
armemu: Fix UXTAB/UXTAH
2014-12-17 03:24:25 -05:00
Normmatt
b5dbd6f2a2
armemu: Fix SXTAB
2014-12-17 03:17:44 -05:00
Normmatt
efebd5589a
armemu: Fix SXTAH
2014-12-17 03:16:40 -05:00
bunnei
fdb4ef5210
Merge pull request #289 from lioncash/smops
...
Join SMUAD, SMUSD, and SMLAD ops. Also fix them as well.
2014-12-17 00:08:43 -05:00
bunnei
ec9ac2f51a
Merge pull request #290 from lioncash/vsub
...
armemu: Backport some VFP fixes from 3dmoo.
2014-12-16 23:22:58 -05:00
Normmatt
9c127f4a01
armemu: Fix FTOUI NaN sign.
2014-12-16 05:56:06 -05:00
Normmatt
2ed03c10e0
armemu: Fix FSUBS bug where NaN shouldn't be negated
2014-12-16 05:54:00 -05:00
Lioncash
d5bcddb77c
armemu: Fix SMUAD, SMUSD, and SMLAD
...
Wrong values were being multiplied together.
2014-12-16 03:13:06 -05:00
Lioncash
0f9e3baf39
armemu: Join SMUAD, SMUSD, and SMLAD
2014-12-16 03:11:50 -05:00
Lioncash
4c53799229
armemu: Fix lower-bound signed saturation clamping for QADD16/QSUB16.
2014-12-16 00:11:51 -05:00
Lioncash
49817e89d9
armemu: Join QADD16 and QSUB16 together.
...
The only difference between these ops is one adds and one subtracts. Everything is literally the same.
2014-12-16 00:11:19 -05:00
bunnei
cdfa7157eb
Merge pull request #286 from yuriks/msvc-fix
...
Comment out empty arrays causing compile errors in MSVC
2014-12-15 22:52:35 -05:00
Yuri Kunde Schlesner
082bf803ab
Comment out empty arrays causing compile errors in MSVC
2014-12-16 01:37:13 -02:00
bunnei
a8098187aa
Merge pull request #285 from lioncash/uxtab16
...
armemu: Implement UXTAB16
2014-12-15 22:29:12 -05:00
bunnei
cd2a31eaf4
Merge pull request #283 from yuriks/archive-refactor
...
Archive refactor
2014-12-15 22:15:08 -05:00
Yuri Kunde Schlesner
666f6deb47
Work around libstdc++'s lack of support for std::hash on enums
2014-12-16 01:09:21 -02:00
Yuri Kunde Schlesner
83e6e4ffec
FS.Archive: Clean up treatment of archives and their handles
...
- Refactor FS::Archive internals to make Archive creation and lifetime
management clearer.
- Remove the "Archive as a File" hack.
- Implement 64-bit Archive handles.
2014-12-16 01:08:44 -02:00
Yuri Kunde Schlesner
0931a42af0
Service.FS: Rename FileSys::File to FileBackend
2014-12-16 01:08:43 -02:00
Yuri Kunde Schlesner
d51afab0bc
Service.FS: Rename FileSys::Directory to DirectoryBackend
2014-12-16 01:08:43 -02:00
Yuri Kunde Schlesner
82fe821e87
Service.FS: Rename FileSys::Archive to ArchiveBackend
2014-12-16 01:08:42 -02:00
Yuri Kunde Schlesner
f6153679b0
Service.FS: Do archive registration using IdCode instead of name
2014-12-16 01:08:42 -02:00
Yuri Kunde Schlesner
ca67bb7945
HLE: Rename namespaces to match move & fix initialization order
2014-12-16 01:08:38 -02:00
Yuri Kunde Schlesner
c72ccfa6db
HLE: Move kernel/archive.* to service/fs/
2014-12-16 01:08:14 -02:00
Lioncash
1c7f77334c
armemu: Implement UXTAB16
2014-12-15 20:47:27 -05:00
bunnei
5df176425b
Merge pull request #282 from archshift/services
...
Added stubs for ldr:ro, cecd:u, nim:aoc, and am:app services
2014-12-15 19:28:13 -05:00
bunnei
0fd731ee63
Merge pull request #281 from lioncash/uxtb16
...
armemu: Fix UXTB16
2014-12-15 18:56:02 -05:00
archshift
89eef9eb6d
Added stub for nim:aoc service...
2014-12-15 15:32:42 -08:00
archshift
1356a6b313
Added stub for cecd:u service...
...
I couldn't find any information about this service...
2014-12-15 15:32:42 -08:00
archshift
6117fad036
Added stub for ldr:ro service...
2014-12-15 15:32:42 -08:00
archshift
6b51683bb1
Added am:app service stub.
...
Apparently nothing at all is known about this service...
2014-12-15 15:32:41 -08:00
Yuri Kunde Schlesner
e321decf98
Remove SyncRequest from K::Object and create a new K::Session type
...
This is a first step at fixing the conceptual insanity that is our
handling of service and IPC calls. For now, interfaces still directly
derived from Session because we don't have the infrastructure to do it
properly. (That is, Processes and scheduling them.)
2014-12-15 18:26:17 -02:00
Lioncash
2b0acd36e1
armemu: Fix UXTB16
...
Rotation bits are 10 and 11, not 9 and 10.
2014-12-14 23:00:31 -05:00
bunnei
1ee740898a
Merge pull request #276 from lioncash/decrappify
...
Clean up armdefs.h a little.
2014-12-14 22:08:14 -05:00
bunnei
17b4d6747a
Merge pull request #246 from Subv/cbranch_1
...
SVC: Implemented Semaphores
2014-12-14 22:03:28 -05:00
bunnei
2cac148ff3
Merge pull request #273 from bunnei/more-skyeye-fixes
...
ARM: Pull some SkyEye fixes from 3dmoo.
2014-12-14 21:58:05 -05:00
bunnei
d26b7146ce
ARM: Pull some SkyEye fixes from 3dmoo.
2014-12-14 21:51:46 -05:00
Lioncash
f6cb8c1927
Clean up armdefs.h
2014-12-14 02:00:42 -05:00
Yuri Kunde Schlesner
ac87c3b0d0
Restore the original console color after logging a message.
...
Fixes #277
2014-12-14 02:10:41 -02:00
Subv
1051795c32
Kernel/Semaphores: Fixed build
2014-12-13 13:43:01 -05:00
Subv
ea95876431
Kernel/Semaphore: Small style change
2014-12-13 13:40:19 -05:00
Subv
effb181888
Kernel/Semaphores: Invert the available count checking.
...
Same semantics, idea by @yuriks
2014-12-13 13:40:18 -05:00
Subv
5e25986235
Kernel/Semaphores: Addressed some issues.
2014-12-13 13:40:16 -05:00
Subv
cc81a510e3
Semaphore: Removed an unneeded function
2014-12-13 13:40:15 -05:00
Subv
61434651d8
Semaphores: Addressed some style issues
2014-12-13 13:40:13 -05:00
Subv
abff4a7ee2
Semaphore: Implemented the initial_count parameter.
2014-12-13 13:40:12 -05:00
Subv
49b31badba
SVC: Implemented ReleaseSemaphore.
...
This behavior was tested on hardware, however i'm still not sure what use the "initial_count" parameter has
2014-12-13 13:40:10 -05:00
Subv
82c84883a5
SVC: Implemented svcCreateSemaphore
...
ToDo: Implement svcReleaseSemaphore
* Some testing against hardware needed
2014-12-13 13:40:09 -05:00
Lioncash
cfc0ee9c60
kernel: Remove unused log arguments
2014-12-13 10:15:58 -05:00
Yuri Kunde Schlesner
4d2a6f8b9b
Remove old logging system
2014-12-13 02:08:06 -02:00
Yuri Kunde Schlesner
0e0a007a25
Add configurable per-class log filtering
2014-12-13 02:08:06 -02:00
Yuri Kunde Schlesner
0600e2d8b5
Convert old logging calls to new logging macros
2014-12-13 02:08:02 -02:00
Yuri Kunde Schlesner
6390c66e95
Implement text path trimming for shorter paths.
2014-12-13 01:59:52 -02:00
Yuri Kunde Schlesner
6b0fb62c47
Re-add coloring to the console logging output.
2014-12-13 01:59:52 -02:00
Yuri Kunde Schlesner
616d874443
New logging system
2014-12-13 01:59:52 -02:00
Yuri Kunde Schlesner
04b1f2936c
Add SCOPE_EXIT macro to conveniently execute cleanup actions
2014-12-13 01:59:51 -02:00
Yuri Kunde Schlesner
eda30c36ee
Added missing include in common_funcs.h
2014-12-13 01:59:50 -02:00
Yuri Kunde Schlesner
8a681cdf3d
Remove redundant include from common_funcs.h
2014-12-13 01:59:50 -02:00
bunnei
a6791e4fc7
Merge pull request #267 from bunnei/apt-shared-font
...
APT shared font loading
2014-12-12 22:12:12 -05:00
bunnei
6fe61d3deb
APT_U: Added GetSharedFont service function.
2014-12-12 22:06:10 -05:00
Tony Wasserka
33e61ef514
Merge pull request #261 from neobrain/boost
...
Add Boost as a submodule and add some minor cleanups using Boost.Range
2014-12-12 17:32:57 +01:00
bunnei
988998cca5
DSP: Added stub for ReadPipeIfPossible.
2014-12-12 00:53:51 -05:00
bunnei
5bac72282a
Common: Add "sysdata" to GetUserPath and cleanup.
2014-12-12 00:15:47 -05:00
bunnei
4cb7a44d4e
MemMap: Renamed "GSP" heap to "linear", as this is not specific to GSP.
...
- Linear simply indicates that the mapped physical address is always MappedVAddr+0x0C000000, thus this memory can be used for hardware devices' DMA (such as the GPU).
2014-12-12 00:15:47 -05:00
bunnei
3a75c8069e
Merge pull request #256 from Subv/mutex
...
Kernel/Mutex: Properly lock the mutex when a thread enters it
2014-12-10 22:52:55 -05:00
Emmanuel Gil Peyrot
5a3b1b5f44
CFG:U: Store country codes as u16 instead of char pointers, and return the correct error in GetCountryCodeID.
2014-12-10 22:33:23 +00:00
bunnei
ae3c6e82f7
Merge pull request #243 from bunnei/fix-gsp-synch
...
Fix gsp synch
2014-12-10 09:20:05 -05:00
archshift
4763fca9f8
Explicitly specify LE strings to iconv, fixes paths in Steel Diver
2014-12-09 22:07:28 -08:00
bunnei
f94d8f9603
GSP: Trigger GPU interrupts at more accurate locations.
2014-12-09 19:07:14 -05:00
bunnei
e90b37b935
GSP: Updated TriggerCmdReqQueue to return success code.
2014-12-09 19:07:14 -05:00
bunnei
3e1654eaa8
GSP: Updated RegisterInterruptRelayQueue to return expected magic number.
2014-12-09 19:07:14 -05:00
bunnei
170123982d
GPU: Fixed bug in command list size decoding.
2014-12-09 19:07:13 -05:00
Yuri Kunde Schlesner
521e1cb7e0
Remove unused NDMA module
2014-12-09 18:27:16 -02:00
Tony Wasserka
8b8131baec
More cleanups.
2014-12-09 16:37:34 +01:00
Tony Wasserka
0305435edd
Pica: Re-enable command names on MSVC.
...
The affected code is no longer limited by compiler support on that platform.
2014-12-09 16:37:34 +01:00
Tony Wasserka
ac4d7462cb
citra-qt: Rename "Stop Tracing" to "Finish Tracing".
...
This better reflects that no commands are supposed to show up until you hit the button a second time.
2014-12-09 16:37:34 +01:00
Tony Wasserka
79bb403089
More coding style fixes.
2014-12-09 16:37:34 +01:00
Tony Wasserka
0cd27a511e
Some code cleanup.
2014-12-09 16:37:34 +01:00
Tony Wasserka
55ce9aca71
citra-qt: Add pica framebuffer widget.
2014-12-09 16:37:34 +01:00
Tony Wasserka
2793619dce
citra_qt: Add enhanced texture debugging widgets.
...
Double-clicking a texture parameter command in the pica command lists will spawn these as a new tab in the pica command list dock area.
2014-12-09 16:37:34 +01:00
Tony Wasserka
fd194d95b0
citra-qt: Add texture viewer to Pica command list.
...
The texture viewer is enabled when selecting a write command to one of the texture config registers.
2014-12-09 16:37:34 +01:00
Tony Wasserka
c63a495de6
Add GUI widget for controlling pica breakpoints.
2014-12-09 16:37:34 +01:00
Tony Wasserka
2c71ec7052
Pica/DebugUtils: Add breakpoint functionality.
2014-12-09 16:37:34 +01:00
Tony Wasserka
706f9c5574
citra-qt: Polish the pica tracing widget.
...
Changed start/stop button to reflect current tracing status.
Properly labeled column headers.
2014-12-09 16:37:34 +01:00
Tony Wasserka
bf6b23f4a0
citra-qt: Add a utility spinbox class called CSpinBox.
...
This class has a few advantages over the regular QSpinBox:
- QSpinBox stores its as signed 32 bit integers, which for instance is unsuitable for representing memory addresses. CSpinBox uses 64 bit integers instead.
- QSpinBox does not provide an easy way to handle number input from bases different than 10.
- QSpinBox is quite inflexible in general and almost any sort of customization requires reimplementing it anyway.
2014-12-09 16:37:34 +01:00
Tony Wasserka
8db65723d2
Build fix for something which shouldn't have compiled successfully to begin with.
2014-12-09 16:37:34 +01:00
Tony Wasserka
27280f178b
Fix some headers to include their dependencies properly.
2014-12-09 16:37:34 +01:00
bunnei
b7327f807c
Merge pull request #217 from archshift/cmd_buff
...
Log the cmd_buff arguments when citra comes across an unimplemented function
2014-12-08 23:13:07 -05:00
bunnei
dd203f7068
Thread: Fixed to wait on address when in arbitration.
2014-12-08 19:44:10 -05:00
bunnei
a6bf3fd613
Merge pull request #244 from bunnei/cleanup-memmap
...
MemMap: Updated memory map to subtract base address instead of mask.
2014-12-08 19:34:54 -05:00
bunnei
f1ec1a0d2c
Merge pull request #263 from lioncash/sasx
...
Fix emulation of SASX and SSAX instructions.
2014-12-08 19:17:54 -05:00
bunnei
ff560a9428
Merge pull request #259 from ichfly/master
...
Loader: Add 3DSX support
2014-12-08 19:16:40 -05:00
bunnei
1f4953e1bb
Merge pull request #264 from Subv/files
...
Kernel/File: Fixed file read/write hwtests
2014-12-08 18:05:03 -05:00
bunnei
72ad73519c
Merge pull request #260 from archshift/opendir
...
Make OpenDirectory fail if the directory doesn't exist
2014-12-08 18:03:48 -05:00
Subv
1d1078fd8b
Kernel/File: Fixed file read/write hwtests
...
The 3DS allows the user to read from files opened with the Write access modifier, even if he did not specify the Read access modifier.
Open the files in binary mode so that we can prevent CR/LF problems in Windows, where a line-end is replaced by these two bytes instead of just 0xA, this was causing problems with the GetSize test
2014-12-08 17:45:17 -05:00
Lioncash
905e3b616a
armemu: Fix SSAX
2014-12-08 15:47:20 -05:00
ichfly
1aa969741d
Loader: Add 3DSX support
2014-12-08 18:06:43 +01:00
Lioncash
62fd564854
armemu: Fix SASX
2014-12-08 01:44:37 -05:00
Lioncash
b4256431aa
armemu: Fix parenthesis warnings regarding bitwise ops
2014-12-07 23:58:12 -05:00
Tony Wasserka
3d8c6e61be
StringUtil: Perform some minimal cleanup.
2014-12-07 23:52:17 +01:00
Tony Wasserka
4d4572c697
Integrate Boost into build system and perform a trivial cleanup in vertex_shader.cpp.
2014-12-07 23:52:17 +01:00
archshift
20d2ed0950
Make OpenDirectory fail if the directory doesn't exist
...
This is in line with what the hardware itself does.
It does this by splitting the initial directory opening into Directory.Open(), which will return false if a stat fails.
Then, Archive::OpenDirectory will return nullptr, and archive.cpp will return an error code .
2014-12-07 14:47:14 -08:00
Subv
bc318c464b
Mutex: Remove some forward declarations
...
Moved Mutex::WaitSynchronization to the end of the file.
2014-12-07 15:57:28 -05:00
Subv
64128aa61a
Mutex: Release all held mutexes when a thread exits.
2014-12-07 15:44:21 -05:00
bunnei
2aa2d341d0
Merge pull request #245 from rohit-n/null-nullptr
...
Change NULLs to nullptrs.
2014-12-07 13:40:04 -05:00
Subv
e3c8e4901c
Mutex: Properly lock the mutex when a thread enters it
...
Also resume only the next immediate thread waiting for the mutex when it is released, instead of resuming them all.
2014-12-05 23:40:43 -05:00
bunnei
17fae11fc7
Merge pull request #250 from Subv/cbranch_2
...
SVC: Implemented GetThreadId.
2014-12-04 22:15:03 -05:00
bunnei
5056329a80
Merge pull request #222 from archshift/renamexyz
...
Implemented RenameFile and RenameDirectory in FS:USER
2014-12-04 22:07:47 -05:00
bunnei
21d183e1e6
Merge pull request #248 from lioncash/kernel
...
Misc minor kernel-related changes.
2014-12-04 22:05:20 -05:00
Subv
6fac2bf0ab
Threads: Remove a redundant function.
...
Use the next_thread_id variable directly.
2014-12-04 14:59:56 -05:00
Subv
ef1d5cda06
Threads: Implemented a sequential thread id
2014-12-04 08:13:53 -05:00
archshift
139a4d91d9
Updated archive.cpp functions for proper error handling
2014-12-03 22:50:44 -08:00
Subv
029ff9f1fd
SVC: Implemented GetThreadId.
...
For now threads are using their Handle value as their Id, it should not really cause any problems because Handle values are unique in Citra, but it should be changed. I left a ToDo there because this is not correct behavior as per hardware.
2014-12-04 00:25:35 -05:00
bunnei
846dc72a37
Merge pull request #249 from lioncash/enum
...
mem_map: Make enum for addresses use u32 as the underlying type
2014-12-04 00:01:13 -05:00
bunnei
306b5392ca
Merge pull request #247 from lioncash/const
...
hid_user: Pass by reference with PadButtonPress/PadButtonRelease
2014-12-03 23:56:35 -05:00
Lioncash
3ba32d2b53
mem_map: Make enum for addresses use u32 as the underlying type
2014-12-03 23:36:45 -05:00
bunnei
abbc340957
Merge pull request #238 from archshift/dsp
...
Add stub for ConvertProcessFromDspDram
2014-12-03 23:35:06 -05:00
archshift
a404ad5272
Add stub for ConvertProcessFromDspDram
...
Should theoretically push retail stuff further along
2014-12-03 20:03:57 -08:00
Lioncash
208598dbe2
kernel: Shorten GetCount
2014-12-03 22:52:02 -05:00
Lioncash
9b68d5e074
kernel: Make some functions const
2014-12-03 19:48:34 -05:00
Lioncash
7ff8f0d916
hid_user: Pass by reference with PadButtonPress/PadButtonRelease
2014-12-03 19:33:54 -05:00
purpasmart96
16fc98af64
PTM_U: Added a stub for GetBatteryLevel & GetBatteryChargeState & GetAdapterState
2014-12-03 15:09:59 -08:00
Rohit Nirmal
8a62423970
Change NULLs to nullptrs.
2014-12-03 12:57:57 -06:00
bunnei
63b1453dd8
Merge pull request #236 from rohit-n/sign-compare
...
Silence a few -Wsign-compare warnings.
2014-12-03 10:04:47 -05:00
bunnei
e5b2733801
Merge pull request #231 from purpasmart96/serv_ac_wifi_status
...
AC_U: Added a stub for GetWifiStatus
2014-12-03 10:00:13 -05:00
bunnei
e2e56c7bac
Merge pull request #219 from Subv/ptm
...
PTM_U: Implemented the GetShellState function.
2014-12-03 09:58:52 -05:00
bunnei
e3886adc22
MemMap: Updated memory map to subtract base address instead of mask.
...
- More readable, a little less error prone.
Conflicts:
src/core/mem_map.h
src/core/mem_map_funcs.cpp
2014-12-03 01:23:29 -05:00
purpasmart96
32d420330d
AC_U: Added a stub for GetWifiStatus
2014-12-02 15:30:42 -08:00
Rohit Nirmal
f9b53c3e94
Silence a few -Wsign-compare warnings.
2014-11-30 22:29:23 -06:00
bunnei
d5be332d21
Merge pull request #237 from vaguilar/fix-viewport
...
Fixed viewport error caused by rounding
2014-11-30 23:24:16 -05:00
bunnei
884ecd58ea
Merge pull request #224 from bunnei/dsp-service-improvements
...
Dsp service improvements
2014-11-30 23:21:34 -05:00
bunnei
b0a5b3d986
Merge pull request #214 from Subv/master
...
CFG:U: Implemented the GetCountryCodeID and GetCountryCodeString
2014-11-30 23:19:07 -05:00
bunnei
1827bb1fcc
Merge pull request #196 from archshift/settings
...
Merge Config::ReadXYZs
2014-11-30 23:17:45 -05:00
bunnei
3e286fff7c
DSP: Added stubs for several commonly used DSP service functions.
2014-11-30 23:14:57 -05:00