What's new

NRage Input Plugin V2.00 BETA (an overhaul)

Legend

New member
I cannot get the message boxes to show when using Glide64, with or without the wrapper. All I see is an outline of the box and it does seem to be switching just fine. Then if I CLICK ANYTHING in the menu tabs the emulator will completely freeze and I have to do an "end task" to exit. This occurs on all the emus I've tried and various version of Glide64. The boxes show up using Glide64 just fine with 1.83.

Since I use Glide64 for almost everything, this could be a big problem. Can someone check on this for me? Thanks.
 
OP
R

rabiddeity

Plugin Hacker
Legend said:
I cannot get the message boxes to show when using Glide64, with or without the wrapper. All I see is an outline of the box and it does seem to be switching just fine. Then if I CLICK ANYTHING in the menu tabs the emulator will completely freeze and I have to do an "end task" to exit. This occurs on all the emus I've tried and various version of Glide64. The boxes show up using Glide64 just fine with 1.83.

Since I use Glide64 for almost everything, this could be a big problem. Can someone check on this for me? Thanks.

Does this happen just using this plugin with Glide64? What if you toggle off the message boxes?
 

Legend

New member
It works fine with Jabo and Rice's plugins. And it works fine with "messages" off. And I tested a bunch of old N-rage's and the boxes did appear just fine. But new plugin+any glide64+shortcut key+any emu=crash unfortunatly...
 
OP
R

rabiddeity

Plugin Hacker
Legend said:
It works fine with Jabo and Rice's plugins. And it works fine with "messages" off. And I tested a bunch of old N-rage's and the boxes did appear just fine. But new plugin+any glide64+shortcut key+any emu=crash unfortunatly...

So... don't use messages. That's why I put in the option.

What video card are you using? What resolution? Which wrappers have you tried? Myself, I use the Hacktarux wrapper from here:
http://www.emuxhaven.net/forums/showthread.php?t=6123
...and the only issue I have is some graphics corruption when the message window disappears. In my case, it appears that the plugin or wrapper is not redrawing the framebuffer properly after the window is destroyed. Most likely this is because of how the N64 framebuffer effects work; on a real N64 the hardware renders some textured polygons to internal memory, and then the ROM can do all sorts of transforms on that memory. That's how you get effects in Perfect Dark like the camspy lensing effect and IR goggles effect; it's also used for most of the special effects in Paper Mario. On a PC, the OS doesn't usually have access to that framebuffer. Once the polys are rendered, they are flushed straight through to the screen. Hacktarux and/or the Glide64 author used some brilliant hacks to get around that limitation, but the whole thing is quite delicate. Without looking at his code, I'd guess he's rendering, capturing the window output using a Win32 call, drawing with that, and overwriting what he just captured.

All NRage does is create a window on top of the render surface for 2 seconds, and apparently that's enough to screw it up. I don't think there's much I can do on this end, apart from letting you turn off messages. I wouldn't bug Hacktarux or the Glide64 team about it either, as they're already working miracles with this thing.
 

Legend

New member
What can I say I have alot of time on my hands right now...Here's some more, corrected info.
These are all with the same settings as much as possible, same 1028x720 res., same PJ64 emulator. But these are just my results with my setup. I even deleted reg. entry to have this be as accurate as I can get it.


glide64/2.00

with Hack's wrapper

fullscreen = nothing
window = outline (it stays there indefinetly, then go to menu and click on somthing, then message box is readable but it never goes away!!)

No wrapper

fullscreen=nothing
window=outline


PJ64/glide64/1.83

wrapper

fullscreen=outline
window=fine

no wrapper

fullscreen=nothing
window=fine

Jabo/2.00/1.83

window=fine
fullscreen=nothing

rice/2.00

window=outline-stays there forever like Glide, even toggling fullscreen
fullscreen=nothing

rice/1.83

window=fine
fullscreen=nothing

So I definetly think it's more than framebuffer usage with Glide64. Rice's shows there's some regression with the message boxes since 1.83.

This plugin, for me at least, is causing major unstability with the boxes enable. True I can disable it, but what about the others who open up 1964 using Rice's plugin, start Beetle Racing in fullscreen, use 2 shortcut keys, play awhile, exit fullscreen, have the top left corner gone till rom close, click on the menu to end, only to have the emu be so unresponsive that a system restart is the only way out. I've had to do that a bunch tonite. Pj64 is a little more stable and an "end task" in the task manager usually works. This could all be me, can you guys out there see if the message boxes are causing you this much trouble with Rice's or Glide64 plugin. Play around with them for a bit.
 
Last edited:
OP
R

rabiddeity

Plugin Hacker
Glide64 with no wrapper in a window? Something must be wrong with your config. Voodoo2 was never capable of rendering in a window... which means you must have a wrapper still active somewhere. As for true fullscreen, the 3dfx card is bypassing your regular video card and rendering straight to the screen; in that case, it doesn't matter how many windows I open, they aren't going to show up.

Anyway, for running in a window, I'm trying to create a window on top of a Direct3D surface. Generally that appears to cause problems regardless of what kind of video card you have, because Windows gets confused about which window should paint what.

I haven't made any significant changes to the message box code since 1.83. The only difference is that the strings for the window text are loaded from resources instead of being hardcoded strings. If there were a problem with that the messages wouldn't display properly under any plugin.

If you're not convinced, look at the code for 1.83 and the code for 2.00, specifically in the "NRage Plugin V2.cpp" file. In 1.83 the code is in "WM_KeyDown" and in 2.00 the code is in "DoShortcut". Search for the string "CreateWindowEx". The parameters are identical, except for Unicode expansion. Immediately after that you should see a SetTimer call; in 1.83 it would set a variable for how many iterations to wait (SetWindowLong), and call the function MessageTimer every 100ms. In 2.00 I simplified it a bit so that it just calls MessageTimer after 2 seconds. When it's time for Message Window to leave the mortal coil, MessageTimer code kills the timer (preventing it from repeating) and then destroys the message window. In theory, the underlying window (the render window) should then be responsible for painting that vacated area again. But obviously, nobody is painting it.

Anyway, I don't know if it can be fixed. But if it can, it's going to be in the parameters to CreateWindowEx. I'll fiddle with it, but no promises, OK?
 

Legend

New member
rabiddeity said:
Anyway, I don't know if it can be fixed. But if it can, it's going to be in the parameters to CreateWindowEx. I'll fiddle with it, but no promises, OK?

Thanks for trying here. I edited my previous post right after you looked at it probably. In the bottom, I describe step by step exactly what I do to reproduce the bug. I've done it tens times. Switch immediately over to 1.83, and it never happens. I am positive something wrong is going on here with 2.00. Please try what I did and see if it's not the same for you. Who would have thought that message boxes would cause such unstability.
So, for me at least, I cannot run the plugin with "messages" on and have any kind of reliability.

BTW, I was running Glide64 with my voodoo 2's in windowed but yes nothing was being rendered, but I could still see message boxes pop in and out.
 
Last edited:

squall_leonhart

The Great Gunblade Wielder
that was already explained.

with voodoo cards they render 3d only, to a full screen resolution.

2d images can't be painted onto that like d3d and opengl can have these days (opengl isn't as friendly as d3d for this)
 
OP
R

rabiddeity

Plugin Hacker
Legend said:
Thanks for trying here. I edited my previous post right after you looked at it probably. In the bottom, I describe step by step exactly what I do to reproduce the bug. I've done it tens times. Switch immediately over to 1.83, and it never happens. I am positive something wrong is going on here with 2.00. Please try what I did and see if it's not the same for you. Who would have thought that message boxes would cause such unstability.
So, for me at least, I cannot run the plugin with "messages" on and have any kind of reliability.

BTW, I was running Glide64 with my voodoo 2's in windowed but yes nothing was being rendered, but I could still see message boxes pop in and out.

Well, I tried running it in several different styles. I even tried one style that creates a popup window OUTSIDE the current window, and it STILL screws up.

The popover window was sort of a hack to begin with, according to NRage. I'm gonna set the default "Show Messages" to OFF in the release version. I think as long as there's documentation with the plugin to tell people what the risks are enabling it, I think it should be OK.

Speaking of which, does anyone want to write a manual or help file for how to set up the plugin?
 

Legend

New member
God this plugin really hates me. Now it's STUCK ON DIRECT RUMBLE again and my last trick did not work. I cannot get off of this, I'm really stuck this time. Why is this happening? I think I plugged in controller 2 before this happened but I'm not sure if that's what's going on. Any thing to do with your adaptoid changes? I know you've cleaned the code up a lot but it's being so buggy for me...argh...here's a screen...:(
 
OP
R

rabiddeity

Plugin Hacker
You have to have an Adaptoid plugged in to select Direct Rumble, but you should be able to unselect it without a problem. What happens when you click "Constant Force"? Does the bubble fill in, and then not save, or does the bubble just not fill in at all?
 

Legend

New member
I do not have an adaptoid. I'm not even sure what one looks like. I have some awesome thrustmasters' that I would highly recommend, but the plugin thinks I have one. Somehow it got selected it automatically and does not let me out of it. The bubble fills in, but yes, does not save. :unsure:

And like the last time, if you hit the TEST RUMBLE button, it's a quick emu crash and close.
 
Last edited:
OP
R

rabiddeity

Plugin Hacker
Yikes. Has it at any point ever let you select "Adaptoid Pak" in the list of controller paks? Has the "Direct Rumble" bubble ever NOT been grayed out?

OK, here's a brutal tactic but it's guaranteed to work. Click "Default Config". That will wipe out your current controller's config and you'll have to rebind the keys.

Or, if you're feeling particularly brave, try closing the emulator and opening up your registry:

HKEY_CURRENT_USER\Software\NRage\DEBUG\DX8InputPlugin2\Controller X

where X is the controller number.

Set RumbleSettings to HEXADECIMAL 5001 (that's decimal 20481). That should fix its wagon.

If you have to do this more than once, then it's a serious problem and not a glitch from updating between versions. Let me know.
 
Last edited by a moderator:

Poobah

New member
Just for your information, rabiddeity, I wrote a makefile and tried compiling the troublesome source files as C with the C99 standard, but too many problems kept introducing themselves, so I think I'll just forget about compiling the source myself with MinGW. :)

EDIT: Thanks for the Unicode-related tips.
 
Last edited:

Legend

New member
Ok guy, THIS is what is going on. BTW your 2 tips DID work until I did the thing that's actually causing this. Give it a try to. I selected "RAMP" and that's it.

I can default everything, then I select rumble pak, then my controller, then ramp, then save. When opened, it's stuck on DIRECT until I default it. If I choose CONSANT, it never happens. So "Ramp" is your culprit. Go get'em!

While were on this, since no one ever answers this question, what is the difference between Constant and Ramp? Strength?
 
Last edited:

niuus

Avid gamer & multimedia fan
First of all, thx for the hard work on the plugin, rabiddeity.

Here is a bug i have, i try and configure the plugin, set all the buttons, set the Rumble Pak and try to test it, but it doesn't respond at all (this with "Constant Force checked). When i check "Ramp Force" and test it, it crashes on me. This happens whether i load a game or not. I'm attaching a pic and the debug code.

BTW, i'm using a Genius MaxForce G-12U



Code:
*** DLL Attach (2.00 Beta-Debugbuild | built on Aug 28 2006 at 14:10:14)
couldn't load language DLL, falling back to defaults
Initiating controllers...
GetInputDevice: gGuid is {6F1D2B60-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {6F1D2B61-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {C97DCD70-C907-11DA-8001-444553540000}
GetInputDevice: gGuid is {153D0140-5CC2-11D8-8001-444553540000}
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
GetInputDevice: gGuid is {153D0140-5CC2-11D8-8001-444553540000}
Got FF device 0
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 1
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 2
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 3
Config interface: Open
GetInputDevice: gGuid is {153D0140-5CC2-11D8-8001-444553540000}
GetInputDevice in RumblePakProc: OK
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
*** DLL Detach
---DEBUG FILE CLOSED---
 
OP
R

rabiddeity

Plugin Hacker
Legend said:
Ok guy, THIS is what is going on. BTW your 2 tips DID work until I did the thing that's actually causing this. Give it a try to. I selected "RAMP" and that's it.

I can default everything, then I select rumble pak, then my controller, then ramp, then save. When opened, it's stuck on DIRECT until I default it. If I choose CONSANT, it never happens. So "Ramp" is your culprit. Go get'em!

While were on this, since no one ever answers this question, what is the difference between Constant and Ramp? Strength?

Stupidity on my part, fixed. Should work now, just go in and select Constant Force and Save.

Constant force basically means the motors run at the specified strength until you shut them off (or the timeout expires). Ramp means the motors start at the specified strength and taper off. Constant is closer to the real thing, but ramp is in there for people whose hardware doesn't support it, or who want to try something different.
 

Top