yashsingh1/xdaforums huggingface dataset:
[Xperia Play Android Development] bubblegumballoon:
N64oid probably never will though. Adding touch pad support cuts of every android device

that has a firmware lower than 2.3 and thats alot of devices.

With Mupen64plus-ae multiple builds can be made so it doesn't effect other devices.

Thats why I feel so strongly that developers should help support this project,

it means that developers can add whatever they want and can create device specific features.
[Xperia Play Android Development] IE-coRe:
I would love to see this with touchpad support. Waht do you guess how long will it take?
[Xperia Play Android Development] bubblegumballoon:
Touch pad support is nearly done, my best guess it will either be finished by tomorrow or in a few days. Also just to clarify I am not the one making this emulator. :)

This the latest build for non qualcomm devices: http://www.paulscode.com/source/Mupen64Plus-AE/13SEP2011/Mupen64Plus-debug.apk

This is the latest build for qualcomm devices (like the xperia play: http://www.paulscode.com/source/Mupen64Plus-AE/13SEP2011/Mupen64Plus-debug-sortProblem.apk

The xperia play version has very bad graphics at the moment but paul is working on fixing that atm.
[Xperia Play Android Development] Logseman:
You mean Paul as in Paul O'Brien, Modaco's overlord and programmer extraordinaire?
[Xperia Play Android Development] bubblegumballoon:
No the full name of the Paul who is making the emulator is Paul Lamb
[Xperia Play Android Development] antEris:
Rockin' :D

P.s. I can't wait for this to come to fruition. Finally! A viable way to play Duke Nukem :p
[Xperia Play Android Development] Nhialor:
What are you talking about? Google made it so that multiple versions of the same apk can be uploaded to the market under the same heading, so adding it for our device would therefore NOT rule out other phones, as they could just download the regular version (our version wouldn't be able to be seen by them), also, as a computer science major, it'd be easy to not have this problem if he doesn't want to go down this road, he could do, for arguments sake, if build.prop=="R800i"|"R800x"{control-type="touchpad"}else{control-type="regular"}, or even just a tick box in the option menu...!

therefore avoiding the problem. Obviously it goes a lot deaper than that, but saying that adding support for us would rule out other devices is just not true. It's something else that's stopping him.
[Xperia Play Android Development] bubblegumballoon:
Well If you actually knew anything about n64oid you would know that its not even on the android market. Its distributed via slideme which does not support uploading of multiple apk's for a single app.

And ive talked to alot of emulator developers and for some reason (Im not entirely sure why) Including touch pad support cuts off support for older versions (lower than 2.3).
[Xperia Play Android Development] Nhialor:
haha ,completly forgot about that, but still, u see my point about the proper implemantation?

EDIT: Wait, I remember something that either Yonghz or Shtruck said something like the classes needed for this are unaccesible for Froyo and before or something, so you may be right. Apologies
[Xperia Play Android Development] bubblegumballoon:
No problem and Im sure ive seen Shtruck say something along those lines on the fpsece forums :)
[Xperia Play Android Development] hairdewx:
I would imagine they would be able to add backwards compatibility after adding touch pad support, but that would take extra time - which they may not be willing to give the time.
[Xperia Play Android Development] bubblegumballoon:
Im not sure what you mean by backwards compatibility but in the future arm6 devices will be supported as well.

Also touch pads are in the process of being added, in the newest build the touchpad overlay has been added to the screen and different layouts have been made for different screen sizes (phone, tablet, small screens etc).
[Xperia Play Android Development] hairdewx:
I meant having N64oid, FPSE, etc. detect the android version and run version specific code to add touch pad support while avoiding the compatibility issues.

I have done that before in software (I am a software engineer for a living) but it takes a long time to do and adds extra things to support. I certainly would not be motivated enough to do that either :D
[Xperia Play Android Development] bubblegumballoon:
Im no emulation programmer but alot of emulator developers have said the same thing that implementing the touch pad controls limits it to 2.3+

Im sure if somebody was brainy enough to create an emulator then they would know how to support more versions if it were possible. :)

also I would like to point out that Mupen64plus-ae supports arm6, It was already implemented but I forgot to update my post.
[Xperia Play Android Development] hairdewx:
Touch pads limit it to 2.3+ because of some of the classes and available system calls it needs are only in 2.3+.

But that doesn't mean it's impossible to make one apk support all android versions, just very impractical implementation-wise and probably not worth it.
[Xperia Play Android Development] bubblegumballoon:
The project is open source so anybody (with the right knowledge) could just go and add touch pad support if they wanted.

Also I would like to point out touch screen controls have now been added but they are still not finished, there are still a few more things to be added like a moving analog stick and lots of optimisations so dont expect it to be perfect just yet. :)
[Xperia Play Android Development] bubblegumballoon:
Mupen64plus-ae now works properly on adreno GPU's (qualcomm chipsets)

It works great on my xperia play! keep in mind that its still not finished yet.
[Xperia Play Android Development] Dyelon:
did you use the first apk or the "qualcomm" apk?

because Im trying the second apk and its not letting me download the data from paulscode.com...

any help would be appreciated
[Xperia Play Android Development] TLRtheory:
Derp... I didn't have the Xperia PLAY version -_-

It's working beautifully now.
[Xperia Play Android Development] bubblegumballoon:
Yes anybody reading this be sure to download the "xperia play touchpad example" thats the build with the touchpad support. The touchpads should be mapped to the n64's analog stick and c buttons by default.
[Xperia Play Android Development] toxicpaulution:
Yea did that and still no ****ing luck I'm about to trash this phone absolutely no luck with it with anything I try and the lag where it does its own **** is getting on my nerve
[Xperia Play Android Development] AndroHero:
Sounds like you have a faulty phone ..... Or a ghost :D
[Xperia Play Android Development] toxicpaulution:
Well **** I can't send it back bc I bought it up front from att for 425$ lol I think ill just sell it and get something else
[Xperia Play Android Development] bubblegumballoon:
What sort of issues are you having with the phone? do the touchpads work with any other games?

It sounds like you might have a faulty unit, I replaces my iphone 3gs with the xperia play and its miles better imo. :)
[Xperia Play Android Development] toxicpaulution:
Randomly it like scrolls on its own keyboard types its own or doesn't type ill turn the screen off and it turns back on and its just irriatating :/ I've tried everything with no luck and like I said I can't take it back bc I bought it up front
[Xperia Play Android Development] bubblegumballoon:
I use it alot more for gaming and phone calls rather than texting but ive experienced that issue with the keyboard as well. Installing the skype keyboard helped alot but the issue still exists, I can understand that if you text alot the issue would be very frustrating.

I really wish there were other gaming phones out there atm and alot of phones with physical keyboard have pretty low specs. :/
[Xperia Play Android Development] svenk919:
The Xperia Play is know to do this when the charger is in, does this also happen when the charger isn't plugged in?
[Xperia Play Android Development] bubblegumballoon:
Happens randomly for me, the charger doesn't make any difference.
[Xperia Play Android Development] toxicpaulution:
Not as much but still wtf lol

---------- Post added at 01:28 PM ---------- Previous post was at 01:05 PM ----------

And now I'm getting a stupid message and it wont allow me to get my mms messages.... serioulsy wtf Sony come on -
[Xperia Play Android Development] ermacwins:
Brilliant news, I take it that once thats done I can play it on my Galaxy S2?
[Xperia Play Android Development] bubblegumballoon:
You can use it on your galaxy s 2 right now it just required a little bit more effort to change settings without the GUI. Not that you really need to change any settings haha but instructions on how to use the emulator without the GUI are in the opening post of this thread.
[Xperia Play Android Development] CZroe:
Be careful with this! The circle-square-circle conversions are why you can't properly do the magic-less and charge-less spin attack in The Legend of Zelda Ocarina of Time without an Adaptoid, real N64 controller, and Adaptoid plug-in. Also, please consider limiting the range to those possible with a good N64 controller. Even the official Nintendo emulators do not do this which causes random spin-outs in Mario Kart 64 and walking backwards in Blast Corps. Both are issues I experienced with third-party controllers on the actual console (I think one was called "The Rock" or "Rhino" or something). Nintendo knew the maximum range and developed the games in such a manner specifically to lock out third-party controllers. When the Rumble Pak arrived with Starfox 64, it would lock your Arwing in a tilt when you inserted in into an Interact Shark Pad 64 or whatever they called it until they made an updated version to counter Nintendo's attempts to lock them out.

Please tell me that it will properly support mapping two analog stick and triggers from different emulated controller ports for certain dual-analog modes certain games included by supporting two controllers for one player (Goldeneye, Robotron 64, Perfect Dark, etc). That'll get me more excited!

Perhaps this can be solved by writing a test program that asks the user to move in a circle and registers typical inputs to find common ground for the average player's thumbs.

No, not "always" an option. Unfortunately, it's no longer an option with the 2.3.4 update from what I understand. :(

Are you dumping them yourself or something? ;)

Anyone can get any ROM. On the other hand, not anyone can dump from their personal large collection. I can. :) I have two V64 and two V64jr units as well as a substantial library of imported Japanese and domestic USA N64 game paks (AKA, "cartridges").

I still came in completely confused about why it only supported Mario 64 and such and I had to start reading the thread. :)
[Xperia Play Android Development] bubblegumballoon:
It doesnt only support mario 64 :P

Read the FAQ again, theres a section that shows you how to change games.
[Xperia Play Android Development] paulscode:
This is a non-issue, as I'm not using a square any more. The setup is like this:

[ANALOG]
info=Analog
x=0
y=50
min=1
max=55
buff=55

Do you have any idea what the "correct" range is? The Nintendo technical specifications state this value is "of type signed char and in the range between 80 and -80. (32768 / 409 = ~80.1)". I am using signed char values -80 through 80 (inclusive). Could you test some of the common problems you mentioned to see if my emulator is affected by them? I've not added this setup to the virtual on-screen gamepad yet (it will use the same type of syntax in the next build - it's still represented by a square until then).

Easy addition (will just require a small update to the pad.ini syntax to specify which controller you are mapping). I'll add support for this after I finish the GUI.

BuckM found the values I'm using now. Everyone has reported that they work well. They can be adjusted if they are not good enough (see the syntax and graphic above)

This will be irrelevant soon. The GUI has ROM selecting in it, obviously.
[Xperia Play Android Development] DJ 1:
Are there any plans for Bluetooth gamepad support for other android devices?

Would love to get sixaxis controller with this ;)
[Xperia Play Android Development] bubblegumballoon:
You can already use the sixaxis controller with it, just use this app (requires root): https://market.android.com/details?id=com.dancingpixelstudios.sixaxiscontroller&hl=en

You will have the manually bind the buttons though (just like you do with the xperia touch pad).
[Xperia Play Android Development] bubblegumballoon:
Its much easier to test for bugs if everybody is using the same rom and when the gui is implemented you can choose any game you want, it wont automatically make you play super mario 64. :P
[Xperia Play Android Development] paulscode:
I should be emulating it correctly, then, if that's the case. There's no reason to have to measure the actual device, if we can assume the range is -80 to 80, then its a simple application of the Pythagorean theorem. Here's the algorithm I use in the code:

dX = (float)( x - (analogMask.x + analogMask.hWidth) ); // distance from center along x-axis
dY = (float)( (analogMask.y + analogMask.hHeight) - y ); // distance from center along y-axis
d = (float) Math.sqrt( (dX * dX) + (dY * dY) ); // distance from center
if( d >= analogDeadzone && d < analogMaximum + analogPadding ) // if inside the analog control
{
touchedAnalog = true;
p = (d - (float)analogDeadzone) / (float)(analogMaximum - analogDeadzone); // percentage of full-throttle
if( p < 0 )
p = 0;
if( p > 1 )
p = 1;
// Native N64 analog input is between -80 and 80:
axisX = (int) ( (dX / d) * p * 80.0f );
axisY = (int) ( (dY / d) * p * 80.0f );
...etc

I wonder why nobody has emulated this correctly before? (perhaps I'm missing something here?) I'd like to see if there are the bugs you mentioned with those games - could you run some tests and let me know?
[Xperia Play Android Development] CZroe:
Wouldn't that create a square range tilted on its side (four triangles created by the four 90-degree angles formed at the intersection of X and Y)? It's actually octagon-shaped and neither circular nor square/diamond.

If 80 is the original range (I've also heard 75), then believe that the maximum diagonal range is -60 to 60 for each axis. This is because 60 is 3/4ths of the way to 80 and 40 to -40 would mean a tilted square range

I've never experienced the out of range bugs in PC emulators but I have found that the axis conversions always failed to account for the octagonal shape limiting the range. This may have changed over the years, but I usually detected this by comparing the ease with which the magic and charge-less spin attack in Ocarina of Time can be executed (spin stick and press B). It's almost impossible to do without an Adaptoid and the plugin. In fact, you could use it without the plugin as a PC controller and have the PC driver translate the diagonal extremes to a PC's square range extremes and it was still nearly impossible.

When I started spinning out in Mario Kart 64 on the Wii Virtual Console it was clear that even Nintendo couldn't get their axis conversions right... the Wii Remote itself has octagonal range but it was caused by it allowing a slight over-steer.

I will try when I get the chance but Mario Kart only does it when turning left or right so the 80/-80 range will presumably prevent that even if the diagonals are incorrect. It's the diagonals that I am worried about between the octagonal conversion. I'm not sure I still have Blast Corps lying around but I'll see if I still have it around to make a dump (does Big/Little Endian format matter? AKA byte-swapped V64 vs. Z64 format). I also need to make sure that it did exhibit this behavior on diagonals and not axis extremes only.
[Xperia Play Android Development] paulscode:
No, it would be a circle. For example, assuming the analog control is mapped to the left touchpad, and assuming BuckM's values:

min=1
max=55
buff=55

And assuming the analogMask has a with of 360 ("pixel" width of the touchpad), then:

analogMask.x = 0

analogMask.hWidth = 180 // (half the width, i.e. the radius)

analogDeadzone = 180 * (1 / 100) = 1.8

analogMaximum = 180 * (55 / 100) = 99

analogPadding = 180 * (55 / 100) = 99

Now, suppose the user presses a point at 315, 315 (up-right), then:

dX = (315 - (0 + 180)) = 135

dY = (315 - (0 + 180)) = 135

d = sqrt( (135*135) + (135*135) ) = 190.91883

p = (190.91883 - 1.8) / (99 - 1.8) = 1.94567

(greater than 1, so):

p = 1

axisX = (135 / 190.91883) * 1 * 80 = 56

axisY = (135 / 190.91883) * 1 * 80 = 56

So the values for "full throttle" up-right are 56,56 (not 80,80 which would be wrong, as you mentioned, and not 40,40 which would be the "square tilted on its side"). It's not an octagon, but a circle (which is much closer to being correct than a square). If it still causes problems, representing it as an octagon should only take a little bit more math to represent properly.

No, it can handle all formats as far as I know (I haven't tested this myself much, but nobody has reported a problem). Just call the ROM mario.n64 (it should figure out what format it is automatically).
[Xperia Play Android Development] paulscode:
Sorry to beat this topic to death, but do you know whether the octagon is inside or outside the circle (assuming radius 80), and what its orientation is?

I put together a couple images to illustrate the question:

A: B:

In these images, the correct values for a real N64 controller would include the blue and black regions.

If the correct orientation of the octagon is (A), then the maximum distance the stick can be from the center is 80. In this case, my algorithm produces values in the blue, black, and red regions (so it's going too far in the red areas).

If, however, the correct orientation of the octagon is (B), then the maximum distance the stick can be from the center is greater than 80. In this case, my algorithm produces values in just the blue region (so it is not going far enough in the corners).

I'll have to dig up my N64 controller if you aren't sure. I may as well emulate this precisely, but I'll need to know which orientation is correct first.
[Xperia Play Android Development] CZroe:
It's like diagram A. :)

That's why steering in Mario Kart is affected by even slight oversteering. Well, other than that EAD specifically programmed it to do that when it detects and unofficial controller allowing you to oversteer. ;)
[Xperia Play Android Development] paulscode:
Cool. I've added additional logic to the code to emulate the analog control as an octagon (can be turned on by a setting in the GUI). It basically trims down the coordinates if they fall in the red zone in my diagram. The code looks like this now (not tested yet - I'll do some quick checks before I release the next build):

public static boolean segsCross( float seg1pt1_x, float seg1pt1_y, float seg1pt2_x, float seg1pt2_y,
float seg2pt1_x, float seg2pt1_y, float seg2pt2_x, float seg2pt2_y
Point crossPt )
{
float vec1_x = seg1pt2_x - seg1pt1_x;
float vec1_y = seg1pt2_y - seg1pt1_y;

float vec2_x = seg2pt2_x - seg2pt1_x;
float vec2_y = seg2pt2_y - seg2pt1_y;

float div = (-vec2_x * vec1_y + vec1_x * vec2_y );
if( div == 0 )
return false; // Segments don't cross

float s = (-vec1_y * (seg1pt1_x - seg2pt1_x) + vec1_x * (seg1pt1_y - seg2pt1_y) ) / div;
float t = ( vec2_x * (seg1pt1_y - seg2pt1_y) - vec2_y * (seg1pt1_x - seg2pt1_x) ) / div;

if( s >= 0 && s < 1 && t >= 0 && t <= 1 )
{
crossPt.x = seg1pt1_x + (t * vec1_x);
crossPt.y = seg1pt1_y + (t * vec1_y);
return true; // Segments cross, point of intersection stored in 'crossPt'
}

return false; // Segments don't cross
}

...

dX = (float)( x - (analogMask.x + analogMask.hWidth) ); // distance from center along x-axis
dY = (float)( (analogMask.y + analogMask.hHeight) - y ); // distance from center along y-axis

if( Config.analogAsOctagon )
{
Point crossPt = new Point();
float dC = analogMask.hWidth;
float dA = (float) Math.sqrt( (dC * dC) / 2.0f )

if( dX > 0 && dY > 0 ) // Quadrant I
{
if( segsCross( 0, 0, dX, dY, 0, dC, dA, dA, crossPt ) ||
segsCross( 0, 0, dX, dY, dA, dA, 80, 0, crossPt ) )
{
dX = crossPt.x;
dY = crossPt.y;
}
}
else if( dX < 0 && dY > 0 ) // Quadrant II
{
if( segsCross( 0, 0, dX, dY, 0, dC, -dA, dA, crossPt ) ||
segsCross( 0, 0, dX, dY, -dA, dA, -dC, 0, crossPt ) )
{
dX = crossPt.x;
dY = crossPt.y;
}
}
else if( dX < 0 && dY < 0 ) // Quadrant III
{
if( segsCross( 0, 0, dX, dY, -dC, 0, -dA, -dA, crossPt ) ||
segsCross( 0, 0, dX, dY, -dA, -dA, 0, -dC, crossPt ) )
{
dX = crossPt.x;
dY = crossPt.y;
}
}
else if( dX > 0 && dY < 0 ) // Quadrant IV
{
if( segsCross( 0, 0, dX, dY, 0, -dC, dA, -dA, crossPt ) ||
segsCross( 0, 0, dX, dY, dA, -dA, dC, 0, crossPt ) )
{
dX = crossPt.x;
dY = crossPt.y;
}
}
}
d = (float) Math.sqrt( (dX * dX) + (dY * dY) ); // distance from center

if( d >= analogDeadzone && d < analogMaximum + analogPadding ) // if inside the analog control
{
touchedAnalog = true;
p = (d - (float)analogDeadzone) / (float)(analogMaximum - analogDeadzone); // percentage of full-throttle
if( p < 0 )
p = 0;
if( p > 1 )
p = 1;
// Native N64 analog input is between -80 and 80:
axisX = (int) ( (dX / d) * p * 80.0f );
axisY = (int) ( (dY / d) * p * 80.0f );
...etc

Thanks for pointing this out. It will be interesting to see if this fixes any of the problems that occur from emulating the analog control as a circle.
[Xperia Play Android Development] captain67:
I don't see the point of using a separate controller on a phone. Carrying one around with you would just be silly, and if you're using it at home you might as well use a PC instead.. Aside from the fact the Play has a built-in one that kicks ass.

(in reply to the talk about adaptoid and a real controller)

Edit: I misunderstood the comment. I realize now he was referring to multiplayer

Sent from Silent Earth 3
[Xperia Play Android Development] ermacwins:
Any new updates?
[Xperia Play Android Development] bubblegumballoon:
All I can say is the GUI should be done soon, no solid release date yet.
[Xperia Play Android Development] paulscode:
Sorry for taking so long.. it seems like the last little things take forever. There is a light at the end of the tunnel.

Also, I've had a chance to do some tests after the changes to the analog control, and I have to say, the spin attack in Zelda is considerably easier to pull off now. I haven't tested Mario cart yet to see if it is any easier/harder to spin out.
[Xperia Play Android Development] xrishox:
thanks for the update. take your time mate.
[Xperia Play Android Development] Dyelon:
Can't wait!!
[Xperia Play Android Development] projectmayhem22:
Looking forward to being able to play WWF No Mercy :D
[Xperia Play Android Development] bubblegumballoon:
Paul has uploaded a new test build which has the gui but is not finished yet, I repeat it is not finished yet! You can use it to try out the menus and stuff but wait until the latest official build comes out if you dont want to run into problems. I will post again when the finished version is released but I highly recommend waiting!

Note:

You will need to delete your old mupen app-data folder located at [sdcard]/app-data/paulscode.android.mupen64plus/ if you want to try newer builds.

Heres screenshots to save you installing the test build yourselfs.
[Xperia Play Android Development] Boonen:
Sorry, but where is the working games download link? I need super mario! Please help me!
[Xperia Play Android Development] IE-coRe:
You wont find them on xda. It breaks the forum rules.
[Xperia Play Android Development] captain67:
Since you're an Android user, you've probably heard of google? Try using it.

Sent from Silent Earth 3
[Xperia Play Android Development] acocalypso:
tested latest build, but after installing and downloading the stuff, crash, return to home screen, everytime when i try it.

edit: reinstalled the apk now works fine, thx a lot.

in pokemon snap you cant move the camera.
[Xperia Play Android Development] NeoandGeo:
How is the touchpad implemented? Is it CM7 ready, ala Minecraft or does it have a gameloft style implementation and broken on CM?