gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

DS development > libQWDS: v1.2 release

#112450 - OOPMan - Sat Dec 16, 2006 2:37 pm

EDIT: The latest version of libQWDS can always be found here...

Well, after slaving away at it for the last week or two libQWDS is now ready for release.

I'd write more about it, but I've spent the last few hours writing documentation, so I think I'll just copy-paste the Dev-Scene blog post instead :-)

Quote:
libQWDS v1.0 Release
December 16th, 2006 by oopman

My first blog entry here. Actually, I don’t blog at all, really, so I’ll mainly be using this to release stuff under the Dev-Scene umbrella.

Anyway, I spent most of the morning writing documentation and so forth, so I’m not
going to go into much detail.

May I present to you libQWDS v1.0 This library implements the QuikWriting developed by Ken Perlin as a library for use with the NDS.

The attached archive includes the library souce (LGPL’ed) and an example application (GPL’ed), as well as a pair of pre-compiled binaries for the lazy.

For more information take a look at the documents included inside the libqwds.rar file package within qwds.rar

Enjoy…

Get it here

Oh, and any comments would be welcome :-)

EDIT: The Dev-Scene Upload link is not working. So I’ve uploaded a copy to NDS Storage. It can be found under Source Codes->Application Source Codes. On a side note, it would be nice if the Dev-Scene upload feature supported RAR files…


Comments? Applause? Rotten eggs? I've got room enough for 'em all ;-)
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...


Last edited by OOPMan on Mon Dec 25, 2006 11:57 am; edited 1 time in total

#112501 - 0xtob - Sun Dec 17, 2006 12:18 am

Hey, great stuff! This will sure be useful for text editors / chat clients etc. It takes a bit getting used to, but I guess you can become pretty fast with it. Also, thanks for making it open source and writing that big documentation!

For everyone who want to see how it works, check this Java applet.

#112512 - OOPMan - Sun Dec 17, 2006 9:06 am

I actually stumbled across it purely by accident as well :-)

I was using the alternate mode in DSO and wanted to do research on it. Google somehow led me to QW and that was that :-)

It is very fast once you get used to it though :-)

Hopefully people will implement it in text editors, though :-)
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#112516 - felix123 - Sun Dec 17, 2006 10:07 am

Nice job. Can you please make the center zone larger? I keep on getting stray "o"s.

OOPMan wrote:
I was using the alternate mode in DSO

I thought it looks similar to DSO.

Dasher could be a pretty interesting text input method for the DS as well.
_________________
Nintendo DS homebrew on Wikipedia

#112518 - OOPMan - Sun Dec 17, 2006 11:09 am

Yeah, the alternate mode in DSO was interesting, but it sucked that you have to lift the stylus :-( Anyway, from the QW PDF document it looks like DSO is using a system called T-Cubed...

The dead zone area is customisable via a radius parameter. In the demo app it's set to 1000, although you can recompile it and set the value larger.

I have noticed stray o's in the demo sometimes as well though.

Increasing the size of the dead zone should fix it, but making much larger than 1500 would cause the dead-zone to take up most of the screen :-)

Anyway, try recompiling the demo with a value of 1500 in the radius parameter and see if that helps...

Another thing to note. Dualis seems to have issues with this. It consistently seems to pump incorrect stylus values out. This had me tearing my hair out for a bit (I'm on an SC:miniSD, so I test on HW less regularly than I would like) until I tried No$GBA, which worked fine. On hardware it works really well too :-)

I'll take a look at Dasher now. The thing I like about QW is that you don't need to lift the stylus :-)

EDIT: Dasher looks quite nice, although I'm not a huge fan of predictive text. It would be interesting to try and implement it on the DS I'd imagine. Screen size might be an issue, though...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#112527 - nornagon - Sun Dec 17, 2006 3:03 pm

I'd love to see a dasher implementation on the DS...

#112528 - OOPMan - Sun Dec 17, 2006 4:04 pm

I downloaded the Dasher source but it looks pretty complicated, to say the least. Lots of source files, all C++ and so forth. Whether or not it would be able to run well on the DS is something I can't comment on...

EDIT: Took a bit more of a look at the Dasher source. At the moment it seems to GTK+ to compile standard. It might be possible to dig the actual all-important algorithms from the code, just depends on how spread out said algorithms are...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#112549 - nornagon - Sun Dec 17, 2006 9:52 pm

Yeah, I had a look at it a while ago and got scared off :P I hope you have better luck than I -.-

#112561 - OOPMan - Sun Dec 17, 2006 10:22 pm

Not likely to happen any time in the near future, I'm afaird :-(

I'm hoping to get the upcoming features in libQWDS done before the end of the month (Well, maybe not Unicode, but the custom segments and radials stuff for sure) but after that, well, things get sticky.

I'm going to be moving and won't have regular net access at all (And I probably won't have access to a development platform either :-( ) for some time.

Also, I *really* need to do some more work on libLUADS, since it's nothing more than a clean port at the moment :-)
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#112587 - OOPMan - Mon Dec 18, 2006 10:31 am

felix123 wrote:
Nice job. Can you please make the center zone larger? I keep on getting stray "o"s.


I now suspect that the stray o's may not have anything to do with the algorithm itself.

I found that pressing lightly causes stray o's to appear quite regularly, while pressing firmly while writing generally does a good job of ensuring things get read correctly.

I seem to recall a thread related to touch-screen accuracy. Perhaps this issue relates to that?
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...


Last edited by OOPMan on Thu Dec 21, 2006 5:51 pm; edited 2 times in total

#112641 - tepples - Tue Dec 19, 2006 1:39 am

In your ARM7 code, make sure that the touch "button" is pressed before and after you read the touch screen. If it's not pressed both before and after, discard the data. Otherwise, if you press lightly, it's likely that the touch screen is in a half-on, half-off state, and you'll get artifacts that go down and to the left.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#112686 - OOPMan - Tue Dec 19, 2006 1:47 pm

My library doesn't actually interact with the DS's hardware directly tepples.

My demo application is compiled using the standard devkitPro ARM7 binary.

Code-wise it's designed to be as portable and flexible as possible, although there's obviously still more I could on that end.

Anyway, one plus at the moment is that libQWDS can be compiled and linked into either the ARM9 or ARM7 binary :-)

What co-ord data gets sent to the library functions is entirely up to the coder :-)
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#112709 - tepples - Tue Dec 19, 2006 6:52 pm

OOPMan wrote:
My demo application is compiled using the standard devkitPro ARM7 binary.

If the standard devkitPro ARM7 binary does not reject stylus bounce, then the standard devkitPro ARM7 binary has a bug. Can you put a sprite over the touch screen to show what coordinates you're getting from ARM7?
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#112726 - OOPMan - Tue Dec 19, 2006 10:47 pm

Why not just text output the X,Y values that I'm getting from touchReadXY()?

I recall that the discussion/subject of the topic I mentioned (I think it was called Touch Screen Accuracy, it was on page 2 of this sub-forum last time I checked...) was specifically that there were problems with the touch reading in the standard ARM7 bin...

I may be recalling wrong, though...

But the light-touch behaviour you described does sound like the light-touch behaviour reported in my test applet...

Of note, my test app for libQWDS only interacts with the HW in 2 ways. It uses code from the extendedbg example to display the background and reads touch data using only the touchReadXY() function...

Anyway, I'll try putting some debug text in and seeing whether the XY values are stray...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#112733 - tepples - Tue Dec 19, 2006 11:15 pm

OOPMan wrote:
Why not just text output the X,Y values that I'm getting from touchReadXY()?

A sprite helps visualize the stray values better.

Quote:
Of note, my test app for libQWDS only interacts with the HW in 2 ways. It uses code from the extendedbg example to display the background and reads touch data using only the touchReadXY() function...

Then touchReadXY() needs to be fixed.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#112739 - Lick - Tue Dec 19, 2006 11:42 pm

I don't really get your point tepples, what's the ARM7 binary supposed to do? Could you rephrase?
_________________
http://licklick.wordpress.com

#112742 - tepples - Tue Dec 19, 2006 11:56 pm

The ARM7 binary is supposed to handle sound, input, and various other I/O tasks. The part that handles input is supposed to read the joypad (including X and Y buttons and the touch screen), read the touch screen, and then read the joypad again. If the touch screen is pressed only one of the two times, then it's likely that the pen is bouncing and making bad readings.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.


Last edited by tepples on Wed Dec 20, 2006 12:01 am; edited 1 time in total

#112745 - Lick - Wed Dec 20, 2006 12:00 am

Kay, but how does checking precisely twice make it more accurate? Won't a bounce (very weak pressure) be able to survive longer than 2 readings?
_________________
http://licklick.wordpress.com

#112746 - tepples - Wed Dec 20, 2006 12:02 am

Nothing will detect all bounces. But if the pen is down for part of the time that the touch screen is being read, and the pen is up for part of the time that the touch screen is being read, then there was a bounce. It is my understanding that this will detect the majority of bounces.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#112794 - OOPMan - Wed Dec 20, 2006 9:42 am

tepples wrote:
OOPMan wrote:
Why not just text output the X,Y values that I'm getting from touchReadXY()?

A sprite helps visualize the stray values better.


Good point. I'll try rig something up...

tepples wrote:
OOPMan wrote:
Of note, my test app for libQWDS only interacts with the HW in 2 ways. It uses code from the extendedbg example to display the background and reads touch data using only the touchReadXY() function...

Then touchReadXY() needs to be fixed.


I think the Stylus Accuracy thread came to the same conclusion :-)
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#112830 - OOPMan - Wed Dec 20, 2006 5:24 pm

The release of libQWDS v2.0 is probably going to be delayed for a while.

The custom zones stuff is introducing all kinds of stuff that I need to chew over before implementing (TAN function stuff being just one of them, special cases for certain angles, etc is another biffer chewy bit...).

At the moment I'm just going over libQWDS v1.0 and tweaking a little bit here and there in order to release a v1.1 which should be pretty much final...

After that, well, I'll maybe have done enough chewing to decide what to do about the custom zones stuff in v2.0...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...

#113258 - OOPMan - Mon Dec 25, 2006 11:56 am

libQWDS is now up to version 1.2. At present the v1.x line is probably as complete as it's going to get.

A number of bugs have been fixed in the library itself and the QWDSTest application.

I'm still working on v2.0 and may even have a test version running on my system later today. Well, anyway, that's the plan :-)

Anyway, the latest version is available here...
_________________
"My boot, your face..." - Attributed to OOPMan, Emperor of Eroticon VI

You can find my NDS homebrew projects here...