Charmed Quark Systems, Ltd. - Support Forums and Community

Full Version: Official RIVA thread
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
Yeah, for me the command in the button executes on the first try just the pressed image is not drawn.
I just tried again with 3.4.4. The first press definitely gets told to redraw the unpressed state, while the second and further get told to draw the pressed state. I will need to make a simpler template and boost the verbose level to see in more details...
What I saw when debugging was that my client did indeed receive a draw command -- an AlphaBlit with an alpha of 0, which caused nothing to appear on the screen. When the button was pressed a second time, the command came through as a DrawBitmap. But then, when the user switches to another button, again the first draw command is a transparent AlphaBlit, and second and succeeding commands are DrawBitmaps.

So it wouldn't be a positioning error or anything like that. And it's not a caching or buffering thing; I'm getting a command, it's just not one that looks sensible. It's something about the draw command itself.

I think we would want to have the Android client likewise print out some debugging information to see what command is being received when the button is pressed. I look at everything I could think of to see if I was maybe missing some magic bit in the AlphaBlit that would tell me it was really a non-transparent draw, but I couldn't find anything.

And is there a way to have the server log what messages (or at least the opcodes and serial numbers) that it thinks it's sending (obviously only in a special RIVA debug mode)? We could then correlate that with what the client sees without forcing Dean to waste his time helping us debug specific cases.
Actually, I am seeing an alpha_blit both time, and the number of messages is exactly the same... Now to print out more values...

Code:
Press at: (140, 314)
Sending to the server: PRESS
Writing PRESS
Transmitting Message Header: [Unsigned Byte: 2e, Unsigned Short: b, Unsigned Short: 4, Unsigned Byte: 78, Unsigned Byte: f1]
Transmitting Message Body: [Point: (140, 314)]
Header ID = 128, length = 0, code = START_DRAW
Header ID = 129, length = 11, code = PUSH_CLIP_AREA
Header ID = 130, length = 11, code = FILL_AREA
Header ID = 131, length = 11, code = PUSH_CLIP_AREA
Header ID = 132, length = 0, code = PUSH_CONTEXT
Header ID = 133, length = 11, code = PUSH_CLIP_AREA
Header ID = 134, length = 0, code = PUSH_CONTEXT
Header ID = 135, length = 11, code = FILL_AREA
Header ID = 136, length = 0, code = POP_CONTEXT
Header ID = 137, length = 0, code = POP_CLIP_AREA
Header ID = 138, length = 0, code = POP_CONTEXT
Header ID = 139, length = 0, code = PUSH_CONTEXT
Header ID = 140, length = 11, code = PUSH_CLIP_AREA
Header ID = 141, length = 73, code = ALPHA_BLIT
Image ID = 1, type = CQCRepo, image = \System\General\Icons\Magnifying Glass
Header ID = 142, length = 0, code = POP_CLIP_AREA
Header ID = 143, length = 0, code = POP_CONTEXT
Header ID = 144, length = 0, code = POP_CLIP_AREA
Header ID = 145, length = 0, code = POP_CLIP_AREA
Header ID = 146, length = 8, code = END_DRAW
Drawing on the canvas
Get image: CQCRepo::\System\General\Icons\Magnifying Glass-1
Release at: (140, 314) for a duration of 2596
Sending to the server: RELEASE
Writing RELEASE
OK, so without an unpressed image, the first time the alpha blit is in the exact same position, thus no animation, while the second time it is shifted by (1,1).

In the same manner, with different images, the first time it just redraws the initial image, while the second time it loads a different image.

So short of the official RIVA client cheating or using the "screenshot" protocol, I don't understand why they would act differently. Wink
brianmount Wrote:And is there a way to have the server log what messages (or at least the opcodes and serial numbers) that it thinks it's sending (obviously only in a special RIVA debug mode)?
Or how would one sniff the packet for the official RIVA client? If I use wireshark, I can see the TCP chatter to taRIVA on another PC, but for the official RIVA client, I'm not seeing any TCP chatter... I assume it's because it's not going through the NIC, so there's nothing to capture...
do you run your server and the official client on the same host? do you use 'localhost' as the address?

alternatively, do you have another PC you could install the RIVA client on?
So, just as a sanity check, if you have an action in the OnClick, if you press the button and hold it it down for however long, does the action not occur until you release the press while still within the button? And if you move the mouse in and out of the button while holding it down, does the pressed state change then? It should move to unpressed if you move the mouse out of the button and then back in. If not, does it do it the second time you press that button?

Also, are you seeing the same as the iPhone one, where it's actually fine on a given button then you move to another and it does the one time glitch then starts working, then you move back to the original button and it does the one time glitch again?

The C++ RIVA isn't cheating in any way. It's just doing the usual thing and it works. So I know that the RIVA server is at least capable of doing the right thing. It's just a matter of why it's not in this particular case.
Dean Roddey Wrote:So, just as a sanity check, if you have an action in the OnClick, if you press the button and hold it it down for however long, does the action not occur until you release the press while still within the button?
No action until the release, same as the official RIVA client (except for the pressed animation).

Quote:And if you move the mouse in and out of the button while holding it down, does the pressed state change then?
I see a change on the official RIVA client, but nothing on taRIVA, the CQC RIVA server isn't sending any messages to reload the unpressed image... No messages either on the second time.

Quote:Also, are you seeing the same as the iPhone one, where it's actually fine on a given button then you move to another and it does the one time glitch then starts working, then you move back to the original button and it does the one time glitch again?
Indeed, getting the exact same result.

Quote:The C++ RIVA isn't cheating in any way.
Well, call me Thomas if you want, but until I can sniff the packets exchanged between the RIVA server and the official RIVA client, I still think it's using the Simple client protocol, which is why it's not seeing what the iPhone and Android RIVA clients are seeing... Wink
So if I want to sniff the TCP packets exchanged by the official RIVA client and a RIVA server, I kinda need to connect to a different PC (at least with Wireshark)... How can I change the server to which the RIVA client will connect, I'm not seeing that option anywhere, it only asks for the username and password... Basically, the official RIVA client is auto-connecting to my server, but I want to go connect to batwater's RIVA server...
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39