Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Dark GDK .NET / [STICKY] [DarkGDK.NET] Bugs report

Author
Message
Yoda Master
9
Years of Service
User Offline
Joined: 23rd Feb 2008
Location: Genova
Posted: 13th Jan 2009 09:30
@kBessa, APEXnow:

I think the toolkit is now fully object oriented, but still not so .NET oriented!!

@kBessa:

About music I'm working on a library based on DirectShow to play video and music. It will be fully object-oriented, hiding all the low-level stuff.

Fear leads to anger
Anger leads to hate
Hate leads to suffering
kBessa
10
Years of Service
User Offline
Joined: 8th Nov 2006
Location: Manaus, Amazonas, Brazil
Posted: 13th Jan 2009 16:43 Edited at: 13th Jan 2009 16:49
@Yoda:

The problem with DirectShow is that you rely on what filters people may have installed on their PCs. I myself have a OGG/Vorbis filter, but I am not sure if someone playing my game will have it. As a matter of fact, if you have OGG/Vorbis filter, DarkGDK is able to load .ogg files, as DirectSound does use DirectShow filters.

About the classes, some decisions were made to make them more similar to DarkGDK and DBPro, like using Delete instead of Dispose, but I think that's something APEXnow can just add, keeping the Delete method as well.

[center][center]
Yoda Master
9
Years of Service
User Offline
Joined: 23rd Feb 2008
Location: Genova
Posted: 13th Jan 2009 20:44
But the DarkGDK.NET should be designed for people who program with .NET, not for people who use DarkGDK or DBPro. I think they prefer using their tools instead of learning a new one.

As far as I know...DarkGDK.NET is based on DarkGDK binaries...What does this mean? What happen when I call a GDK.NET function? 9-|

What do you think about implementing an unique version written in C++/CLR, like SlimDX? We would have huge speed and objects at the same time! And TGC wouldn't have to maintain two different versions anymore. A great saving of work for them and more better products for everybody!! 6

Fear leads to anger
Anger leads to hate
Hate leads to suffering
jason p sage
9
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 14th Jan 2009 02:58
Quote: "What do you think about implementing an unique version written in C++/CLR"
YUCK!! CLR is bad enough - Managed C++ is like Ordering a Pizza and asking for a diet coke to go with it ... bleecch

kBessa
10
Years of Service
User Offline
Joined: 8th Nov 2006
Location: Manaus, Amazonas, Brazil
Posted: 14th Jan 2009 16:54
@Yoda:

That would make a .NET requirement for people not using the .NET version, so I think it would be unnaceptable. The best solution for an almost unified development would be if DarkGDK was composed of DLL instead of Static Libraries, as the .NET version would only require a small wrapper with P/Invoke's, instead of a full re-compilation.

Actually, I've been taking a look at PureGDK, it seems that it just uses DBPro's DLLs. So why didn't DarkGDK and DarkGDK.NET followed the same path? As an update to DBPro would virtually update all of these products.

[center][center]
Yoda Master
9
Years of Service
User Offline
Joined: 23rd Feb 2008
Location: Genova
Posted: 15th Jan 2009 20:56
@kBessa:
You're right!!! I was not thinking at the .NET requirement. This solution has no way to be implemented.

@jason p sage:
Quote: "CLR is bad enough"

I think C-based languages are bad enough.

However SlimDX is written in C++/CLR as far as I know and it works great.

Fear leads to anger
Anger leads to hate
Hate leads to suffering
yerrel
13
Years of Service
User Offline
Joined: 9th Sep 2003
Location: Planet Earth.. :-)
Posted: 16th Jan 2009 15:30
I think i also have found some Bugs?

I've tried to use the Rotate commands for the Image and the Sprite class but it just stays static, no Rotations at all!

And also for the Text-class.
The Text.SetColor() don't work! trying to set it to any color i.e. Text.SetColor(System.Drawing.Color.Red);, the text stays white!

I think there is too many bugs!

Best regards,
Yerrel

MSI K8T NEO-2 F2.0, 8XAGP, 2x512Mb Dual Channel... Dark GDK..... http://www.binary-coder.com
Yoda Master
9
Years of Service
User Offline
Joined: 23rd Feb 2008
Location: Genova
Posted: 17th Jan 2009 09:54
@yerrel:

I used sprite rotation without any bugs. Can you post some code? Maybe you are doing something wrong!

About text class....I think is quite useless...It offers too poor performance...Try the kBessa LightText plugin...It also offers wonderfull antialiased text!

About SetColor in Text class...I don't understand why they kept that command....It wasn't working even in the previous release...If you want to change color for Text you have to use the Ink command in Basic2D class.

Fear leads to anger
Anger leads to hate
Hate leads to suffering
A73
8
Years of Service
User Offline
Joined: 21st Jan 2009
Location:
Posted: 21st Jan 2009 21:58
Hi,

a very annoying thing I found is that the vSync option of SetDisplayMode isn't working at all, at least on my machines.

Quote: "Function SetDisplayModeExC(lWidth As Long, lHeight As Long, lDepth As Long, lMode As Long) As Boolean"


Using lMode 0 or 1 leaves the screen dark.

A quick question:
Will the methods from the DGDK SetDisplayModeAntialiased and such implemented into DGDK.NET?

And btw. Apex, you've done a good job porting the GDK stuff to .NET

Cheers
Globbits
8
Years of Service
User Offline
Joined: 30th Jan 2009
Location: Cambridge
Posted: 2nd Feb 2009 11:25
DarkGDK.NET is fantastic. I'm having fun coding with it so far, but have found a few problems:

1. Creating an object from a mesh does not create a valid object (I have posted this already, but I'm fairly convinced this is a bug now http://forum.thegamecreators.com/?m=forum_view&t=144382&b=22):

DarkGDK.Basic3D.Object3D myObj = new DarkGDK.Basic3D.Object3D(myMesh);

2. There is no way to specify the texture stage in Limb.ScaleTexture
3. There is also no way to specify the texture stage in Limb.ScrollTexture
Lance Zimmerman
8
Years of Service
User Offline
Joined: 8th Feb 2009
Location:
Posted: 9th Feb 2009 10:52
Hello, I have DarkGDK.NET with Studio.NET 2008. I seem to have a problem reading the keyboard. Here is the lines of code.

If DarkGDK.IO.Keyboard.Up Then
iRightPaddleY = iRightPaddleY - 2
If iRightPaddleY < 0 Then iRightPaddleY = 0
End If

I was able to use VB.NET to read the shift and CTRL keys as you can see in the included code.
I wish it had a better manual, with actual code examples. I'm trying to learn it by recoding DarkBasic Pro code into it. Everything else works so far. Could someone please help me? Thank you.

Attachments

Login to view attachments
Palace
8
Years of Service
User Offline
Joined: 5th Jan 2009
Location:
Posted: 9th Feb 2009 20:08
Hi Lance

If you use a form and the viewport control then it will not intercept the keyboard. You need to start your program from a module and create your own window using the DarkGDK Display class. I've updated your code and have attached for you to have a look at.

Cheers

Attachments

Login to view attachments
Lance Zimmerman
8
Years of Service
User Offline
Joined: 8th Feb 2009
Location:
Posted: 11th Feb 2009 04:49
Thanks Palace, I actually solved that issue before it even posted here to the forum, it took so long I thought it did not go through. The answer is on page 1 of this thread actually. I missed it the first time through.
I have an issue now with the IO.File class now. I can not figure out how to use it. I've tried everything I can think of, I keep getting I can't use new because it is a protected friend.
How I wish there was example code for all the methods.
Thank you anyone that can help.
Lance Zimmerman
8
Years of Service
User Offline
Joined: 8th Feb 2009
Location:
Posted: 11th Feb 2009 13:17
Hello yes it is me again. I want to thank you again Palace for your help, I'm now using the module you gave me, I made a new template with it for starting new projects. I don't know why the one that came with DarkGDK.NET was not like that. Why is there even a form in the template, when you don't use it?
On to my next issue that I can't seem to figure out. How do I put a background image on a 2D program without using one big sprite? When I try using one giant sprite it seems to mess up other sprites.
Thank you for any help you can give me.
Palace
8
Years of Service
User Offline
Joined: 5th Jan 2009
Location:
Posted: 11th Feb 2009 14:33
Hi Lance

I had troubles as well when I first tried using the library. The help is really not that good (considering you have to pay for DarkGDK.NET and DarkGDK is free), so what I did was take the Dark Invaders C++ game for DarkGDK and re-wrote it for DarkGDK.NET (in VB). I'm half way through writing a tutorial for it as it covers a fair bit of 2D stuff. I've included the original Dark Invaders doco. It's in C++ but you should get an understanding of how the game works. Most of the VB code follows the C++ design with a few changes.
Hopefully it might get you on the right track.

Cheers

Attachments

Login to view attachments
APEXnow
DarkGDK .NET Developer
14
Years of Service
User Offline
Joined: 15th Apr 2003
Location: On a park bench
Posted: 14th Feb 2009 05:21
Ok, I see there are still quite a few issues to contend with. The toolkit is huge now and I appreciate the feedback on bugs that are found. All bugs and issues reported, I will fix. If I cannot fix due to an internal libraray issue, I will pass onto the main stream, but I appreciate and will fix any issues reported that I can.

Paul.

code master
13
Years of Service
User Offline
Joined: 4th Dec 2003
Location: Illinois
Posted: 15th Feb 2009 02:13
Calling an Object's Append Animation method seems to have no effect on the object.

Uto
14
Years of Service
User Offline
Joined: 16th Jan 2003
Location:
Posted: 30th Mar 2009 23:33 Edited at: 1st Apr 2009 16:25
limb1.link(limb2) - is just calling a wrapper - raises a 'to-do' error
Lance Zimmerman
8
Years of Service
User Offline
Joined: 8th Feb 2009
Location:
Posted: 6th Apr 2009 12:57 Edited at: 9th Apr 2009 13:56
I don't know if this goes under bugs, however when I test a project created in XP in Windows 7, the sprites don't work right. They leave a trail that they should not leave. In XP it works as it should.
I was wondering if anyone else has ran into this issue. I am going to do some more testing using virtual machines, I'll keep you updated. This is the project. It is a work in progress so incomplete, however you can run it and see that in XP or maybe even Vista, it works, but I think it has to do with DirectX 10 or something, I don't know as of yet.
Thank you for any help.
[update]
I created a fresh XP Virtual Machine, installed VS 2008, and GDK.NET. The project works as expected in Windows XP, but in Windows 7 the sprites leave a trail. That is they don't delete themselves from the screen so that they move, instead they leave copies of the sprite on the screen. So this looks to be some kind of bug. If you have more questions, let me know, thanks!

Attachments

Login to view attachments
Holy Cow Coder
8
Years of Service
User Offline
Joined: 8th Sep 2008
Location: Somewhere on Mustafar
Posted: 28th May 2009 15:44
I found this problem when trying to create a new DarkGDK.net app:

System.InvalidOperationException was unhandled
Message="An error occurred creating the form. See Exception.InnerException for details. The error is: Could not load file or assembly 'DarkGDK, Version=1.1.0.0, Culture=neutral, PublicKeyToken=e5d518e3875aacb1' or one of its dependencies. The system cannot find the file specified."
Source="DarkGDK RPG"
StackTrace:
at DarkGDK_RPG.My.MyProject.MyForms.Create__Instance__[T](T Instance) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 190
at DarkGDK_RPG.My.MyProject.MyForms.get_fMain()
at DarkGDK_RPG.My.MyApplication.OnCreateMainForm() in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\DarkGDK RPG\DarkGDK RPG\My Project\Application.Designer.vb:line 35
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at DarkGDK_RPG.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: System.IO.FileNotFoundException
Message="Could not load file or assembly 'DarkGDK, Version=1.1.0.0, Culture=neutral, PublicKeyToken=e5d518e3875aacb1' or one of its dependencies. The system cannot find the file specified."
Source="DarkGDK RPG"
FileName="DarkGDK, Version=1.1.0.0, Culture=neutral, PublicKeyToken=e5d518e3875aacb1"
FusionLog="=== Pre-bind state information ===\r\nLOG: User = X64SSD\\Administrator\r\nLOG: DisplayName = DarkGDK, Version=1.1.0.0, Culture=neutral, PublicKeyToken=e5d518e3875aacb1\n (Fully-specified)\r\nLOG: Appbase = file:///C:/Documents and Settings/Administrator/My Documents/Visual Studio 2008/Projects/DarkGDK RPG/DarkGDK RPG/bin/Debug/\r\nLOG: Initial PrivatePath = NULL\r\nCalling assembly : DarkGDK RPG, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.\r\n===\r\nLOG: This bind starts in default load context.\r\nLOG: No application configuration file found.\r\nLOG: Using machine configuration file from c:\\WINDOWS\\Microsoft.NET\\Framework64\\v2.0.50727\\config\\machine.config.\r\nLOG: Post-policy reference: DarkGDK, Version=1.1.0.0, Culture=neutral, PublicKeyToken=e5d518e3875aacb1\r\nLOG: The same bind was seen before, and was failed with hr = 0x80070002.\r\n"
StackTrace:
at DarkGDK_RPG.fMain.InitializeComponent()
at DarkGDK_RPG.fMain..ctor() in C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\DarkGDK RPG\DarkGDK RPG\fMain.vb:line 21
InnerException:

If anyone can help me figure out what to do to avoid this problem, I would appreciate it immensely.

"The Dark Side Clouds our vision...Only the Dark Lord of the Sith knows of our weakness. If informed the Senate is, multiply our enemies will." Master Yoda, Episode II.
darxus
7
Years of Service
User Offline
Joined: 18th Aug 2009
Location: Greece
Posted: 19th Aug 2009 04:46
Hi Apex, I got a few problems. I use Windows 7 basic and the SharpDevelop ide (I use SharpDevelop for more than 1 year and tried lots of SDKs successfully, I doubt if the IDE matters).


1. During the DarkGDK.NET installation I get this error:

Quote: "Module C:\Windows\system32\DGDK.dll failed to register.
HRESULT -2147010895.
Contact your support personnel."


I press the continue button though and installation completes, but I do hardcopy the DGDK.dll to C:\Windows\system32 by myself.




2. When I try to run one example I get this exception:

Quote: "See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {C841F657-4B80-4E24-8E98-BF98A0F87165} failed due to the following error: 80040154.
at DGDKPlugins.CDarkGDK..ctor()
at DarkGDK.ctlDarkGDKViewport.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4913 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Shaders - Beginner
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files/The%20Game%20Creators/DarkGDK.NET/Tutorials/Visual%20C%23/Shaders%20-%20Beginner/bin/x86/Debug/Shaders%20-%20Beginner.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4913 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4913 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4913 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
DarkGDK
Assembly Version: 1.2.0.0
Win32 Version: 1.2.0.0
CodeBase: file:///C:/Windows/assembly/GAC_32/DarkGDK/1.2.0.0__e5d518e3875aacb1/DarkGDK.dll
----------------------------------------
DGDKPlugins
Assembly Version: 1.2.0.0
Win32 Version:
CodeBase: file:///C:/Windows/assembly/GAC_32/DGDKPlugins/1.2.0.0__e5d518e3875aacb1/DGDKPlugins.dll
----------------------------------------
msvcm90
Assembly Version: 9.0.30729.4913
Win32 Version: 9.00.30729.4913
CodeBase: file:///C:/Windows/WinSxS/x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4913_none_508e1b40bcbca820/msvcm90.dll
----------------------------------------
DGDKLib
Assembly Version: 1.2.0.0
Win32 Version: 1.2.0.0
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/DGDKLib/1.2.0.0__e5d518e3875aacb1/DGDKLib.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
"



3. When I try to open an example I get this error :
Quote: "Error loading code-completion information for stdole from stdole: Could not find assembly file."


What is this stdole assembly? Is it included with DarkGDK.NET?

If I remove stdole and compile I will get this error:

Quote: "The OutputPath property is not set for this project. Please check to make sure that you have specified a valid Configuration/Platform combination. Configuration='Debug' Platform='AnyCPU'"




4. If I make a new project, include the assemblies DarkGDK and DGDKPlugins and type this code:

+ Code Snippet

I will get this error:

Quote: "
System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {C841F657-4B80-4E24-8E98-BF98A0F87165} failed due to the following error: 80040154.
at DGDKPlugins.CDarkGDK.InitDarkGDK
at GDKdotNet.Program.Main in c:\Users\drag\Documents\SharpDevelop Projects\GDKdotNet\GDKdotNet\Program.cs:line 11
"





Unfortunately DarkGDK.NET remains unusable for me at the moment.
That's all the information I could provide, I lack any other more advanced knowledge of spotting technical issues.

If I missed some information that you think is useful just ask me, I 'll be here.
Cloggy
12
Years of Service
User Offline
Joined: 31st Oct 2004
Location: Rayleigh, Essex
Posted: 29th Oct 2009 22:42
the DarkGDK.Basic2D.Drawing.Dot command appears to use the X parameter of both the X and Y position.

Example

DarkGDK.Basic2D.Drawing.Dot(200,10)

Actually draws a dot at 200,200

Just creating some D3D 2D Drawing demos and wondered why DarkGDK was drawing a line

APEXnow
DarkGDK .NET Developer
14
Years of Service
User Offline
Joined: 15th Apr 2003
Location: On a park bench
Posted: 30th Oct 2009 21:48 Edited at: 30th Oct 2009 21:50
Oh, how odd. Lemme check.....

Confirmed. I'll fix this and update the library soon as possible.

Yoda Master
9
Years of Service
User Offline
Joined: 23rd Feb 2008
Location: Genova
Posted: 5th Nov 2009 20:29
@APEXnow:

I don't know if someone already noticed this but the method "PerformCheckListForGraphicsCard" is mispelled: In the toolkit is called "PeformCheckListForGraphicsCard", an "r" is missing!!

Another thing: Are you going to make a new class design in the new release? Because I think the toolkit is far away from being really ".NET oriented". I believe it's classes are too different from classes defined in the microsoft framework itself. I think that who use DarkGDK.NET wants an ".NET implementation" like me, otherwise he would use DarkGDK for C++ or DarkBasicPro.

The last thing: I think CheckLists in the ".NET implementation" are the worst thing in the entire DarkGDK.NET class library. Any other implementations are on the way?

Fear leads to anger
Anger leads to hate
Hate leads to suffering
APEXnow
DarkGDK .NET Developer
14
Years of Service
User Offline
Joined: 15th Apr 2003
Location: On a park bench
Posted: 6th Nov 2009 14:55
Yoda,

Can you be more specific about '.NET Oriented'? You have to understand, that the DarkGDK class library is a wrapper for the underlying Interop library which encapsulates the exact same functionality as the DarkGDK C/C++ version.

I have had no plans to do a complete interface overhaul, but to expand and improve the existing one. I'm happy to take suggestions on improving the existing interface, i.e. the Check List functions could be more object oriented I agree. But with respect to being completely object oriented, I have to work with the interop library in order to achieve the same level of functionality.

Paul.

StartCoder
7
Years of Service
User Offline
Joined: 16th Oct 2009
Location:
Posted: 6th Nov 2009 19:01
I found an BUG.

You cant draw Text over Sprite, but you can draw it over Image.

I try this using the oDBText.Text and the DarkGDK.Text function.
but both with the same result, i also tried D3DFunc.Net Plugin Text function and the same result

here is my sample using ODBText.Text

Will not work
+ Code Snippet

Will work
+ Code Snippet

Could TGC please fix this bug?....
Diggsey
11
Years of Service
User Offline
Joined: 24th Apr 2006
Location: On this web page.
Posted: 7th Nov 2009 17:19
@StartCoder
That's not a bug, that's just how sprites work. Text and images are temporary. Once you clear the screen they are gone, you have to redraw them to show them. Sprites are permanent. Once you create them, they always draw themselves when you call sync, even if you don't call the 'sprite' function. To stop them drawing you have to delete them.

If you only want sprites to draw when you choose, make them invisible, and call 'paste sprite' to draw it. That way you can draw images and text over it.

StartCoder
7
Years of Service
User Offline
Joined: 16th Oct 2009
Location:
Posted: 7th Nov 2009 21:21
@Diggsey

I figured that out haha,i saw some DarkGDK(C++) samples and i understood. But Thank you anyway!.

its 2 bad that there is so few Samples for DarkGDK.net.

Login to post a reply

Server time is: 2017-05-26 12:15:53
Your offset time is: 2017-05-26 12:15:53