Author Topic: Alpha Testing Underway!  (Read 484026 times)

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3499
  • Developer
    • View Profile
    • PaulsCode.Com
Alpha Testing Underway!
« on: November 03, 2011, 06:31:17 PM »
- Updated 18 December 2011 -

Alpha Testing Phase Has Ended

Visit this thread to get involved in Beta Testing (includes links to latest versions and source code)


Bug-fixes completed:

- pointed front-end to correct configuration path so defaults are not always used
- fixed crash on devices without SDCard at /mnt/sdcard
- shut down app smoothly when user presses "Home" to leave
- mapped common Android buttons to recognizable SDL scancodes
- SDL scancodes print to logcat output when buttons are pressed (for manual input config)
- mapped all known Android keycodes to unique SDL scancodes
- added Toast message displaying SDL scancodes for keys when pressed
- stopped device from entering sleep mode while app is running
- fixed 50-second crash bug
- fixed toast message code crash after 257 button presses
- added on-screen virtual gamepad
- added gamepad layouts for small screens and tablets
- fixed problem where touchscreen stopped responding after 50 seconds
- fixed problem where virtual gamepad was preventing keys mapped to analog axis from functioning
- fixed performance drain caused by redrawing the analog stick
- fixed "easy-to-drop" analog stick, improved responsiveness

- enabled volume up/down keys to control the volume
- fixed random crashes
- created separate SDL Scancode Finder app, removed scancode notifications from emulator app
- fixed crash when slide-out keypads or gamepads are opened or closed while app is running
- fixed crash caused by incoming calls or other view changes
- implemented Eeprom clock emulation
- fixed virtual gamepad responsiveness on some devices
- fixed missing key detection for core functions
- added game session save/ resume capability
- added save-game slot choosing capability
- implemented a basic GUI
- added support for zipped ROMs
- fixed menu crash when leaving game and returning to menu
- fixed plug-in "enable" checkboxes
- added option to disable volume keys when using them as controller buttons
- improved virtual gamepad redraw speed
- fixed "disappearing button" bug in virtual gamepad
- fixed analog-image unresponsive bug in virtual gamepad
- added customizable FPS indicator
- added option to emulate analog control as an octagon (more accurate)
- implemented "stick capture" logic making full-throttle moves easier
- fixed reverse mapping bug for analog up/down
- fixed gamepad forgetting what settings you picked
GLES2N64 Bug-fixes:
- fixed polygon sort-order problem (introduced depth-buffer bug on Qualcomm chipsets!)
- fixed side-bar graphics glitches
- fixed depth-buffer bug on Qualcomm chip-sets
- fixed shader bug on devices without Neon
- added hardware profiling to fix missing shadows and door stars in Mario64
- added screen-stretch option
- added frame-skip interface
GLES2Rice Bug-fixes:
- Frame sized incorrectly
- Most polygons missing or textured black
- Fixed emulator not stopping after choosing "Close" from in-game menu
- Fixed incorrect normals problem

Remaining known problems: (at the end of the Alpha Testing phase)

- virtual gamepad analog stick disappears randomly (reappears quickly, or stays gone until next touch event)
- Emulation runs too fast on some devices
- RGB565 format causes poor dithering effect on some devices (should use RGB888)
- Core reset function freezes the app
- APK compiled from source code hangs on black screen (see notes below for workaround)
GLES2N64 Problems:
- Mario's hat and face have incorrectly-shaded polygons on devices without Neon when VEC4 optimization enabled
- Mario's right-eye colored red on devices without Neon when VEC4 optimization disabled
GLES2Rice Problems:
- Slow frame-rate
- 2D texture problems
- Flickering shadows, carpets, etc. in Mario64
- Incorrect sorting of some objects
- Incorrect texture coordinates
- Hi-res texture support not implemented
- Screen-stretch not implemented
- Frame-skip not implemented


This product is not affiliated with, nor authorized, endorsed or licensed in any way by Nintendo Corporation, its affiliates or subsidiaries. All trademarks are property of their respective holders. All individual games screen shots or audio that are simulated by Mupen64Plus AE are property of their respective copyright holders and are only used for the purpose of informing the customer of the software's functionality.  You must have the right to a given ROM before you play it.
« Last Edit: March 18, 2012, 08:46:36 AM by Paul »
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3499
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Alpha Testing Underway!
« Reply #1 on: November 03, 2011, 06:33:02 PM »
Project Overview

This project is the development of a Nintendo 64 Emulator for Android.  The concept began back in December 2010, after I was playing around with various N64 emulators for PC, including Project64 and Mupen64Plus.  I was so impressed with the progress that had been made on Mupen64Plus since I'd used it last, that I decided to dig around in the source code.  I really fell in love with the API and the modular nature of the code.  I decided to see if I could contribute to the emulation effort by attempting to port the code to an Android app.

The goal of this project is to develop a fully open-source Nintendo 64 emulator for Android, that is true to the official Mupen64Plus 2.0 API and compatible on a wide variety of devices and architectures.  My hope is that this will spark future development efforts to provide optimizations, alternate plug-ins, and ROM compatibility improvements.  Ultimately, the goal is that these efforts might eventually contribute back to the original project.


The history of this thread used to be much longer.  However, due to a database bug, I was forced to remove the forum archives.  They are backed up, and will be restored at some point in the future when I purchase a new hosting service.
« Last Edit: December 16, 2011, 05:30:53 PM by Paul »
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3499
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Alpha Testing Underway!
« Reply #2 on: November 03, 2011, 06:36:48 PM »
Quote from: scorpio16v
Quote
Some folks have reported that this same bug also affects Zelda 64 in a couple of areas (it appears to be considerably more prevalent in Shadow Man, though). Just out of curiosity, does this bug also affect N64oid with the gles2n64 plug-in?

On N64oid 1.1.4 it's the same bug
On 2.2.3 and 2.4.1 are no lights and the menue is missing on gles2n64 plugin.
Yongzh's "default" plugin has no bugs in Shadow Man.

For info: I bought the market and the slide me versions. So I didn't test warez.

Another bug that affects only gles2n64:

The buggy shadow in Pilotwings is in gles2n64 plugin, background is ok.
On default plugin the shadow is ok, but background has a bug and on this plugin, the game has a colored frame instead a black one.

Btw. the shadow in Pilotwings is in older Pandora ports and is fixed in newer.

pilotwings gles2n64
http://db.tt/KBXdpZmi

n64oid 'default' plugin (colored frame is only in menue screens)
http://db.tt/mDuSVgts
http://db.tt/H8CLEEsd

And now pilotwings on mupen64plus-ae

missing background
http://db.tt/wpJGirjr

and flickering background (only mali400 specific)
http://db.tt/fzMVtlHg



Quote from: scorpio16v
Quote from: Paul
Quote from: scorpio16v
Is it possible to start mupen64plus-ae from comandline under Android with further arguments ?
[No it is not possible (this is the reason I hard-coded the ROM name "mario.n64" when starting the app). 

And the command ' am start' can't be used for that ?

http://learnandroid.blogspot.com/2008/01/run-android-application-from-command.html

Quote from: Kris
Hi Paul I've uploaded the source to my port of rice to gles 2 here. There are still problems with 2d elements and alpha test at the moment as there is another issue I've been trying to solve for about a week. The result is an incorrectly shaded mario and it seems similar to the problems with the various optimisations with the gles2n64 plugin.

Something is happening to the texture coordinates: the specular highlight of mario is from a texture so it gets mapped incorrectly this also causes problems in Yoshis story. Pictures of bad and good texture coordinates.

It's pretty frustrating as the same code I posted runs on desktop gl fine, it may also work on different arm devices I've only been working with the touchpad. I've tried all the fpu and math compiler settings and using software didn't help, I guess the next step is to use the math functions from gles2n64. I've found performance to be about the same as the other plugin even though rice hasn't got any arm specific code. Conker's intro looked good although it was quite slow.

You will probably need to look at the init code in COGLGraphicsContext::Initialize and maybe the texture format in COGLTexture::EndUpdate. GLES_2 needs to be defined somewhere but the eclipse project files already do this. I've got a version which uses egl to init based on gles2n64 that you could have. Let me know how it goes or if you've got any questions.

W.r.t the cheat functionality in mupen, this seemed to work ok, I used it to enable the fix for zelda's laggy menu screens.

P.s has anyone tried Majora's Mask on Mupen64Plus AE?, my port hangs early in the forest.

Quote from: Kris
Quote from: koekje
What cheat is that, and do you think I can use it on n64oid?

I got the zelda cheat from here, I think it would work in n64oid. I don't know where n64oid stores its files but you will need to edit mupencheat.txt along the lines of
Quote
crc 693BA2AE-B7F14E9F-C:45
gn Legend of Zelda, The - Ocarina of Time (U) (V1.2)
 cn Subscreen\delay fix
  801DAE8B 0002
You can search for the first 2 lines and I think it will remain if you use the emulators save states.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3499
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Alpha Testing Underway!
« Reply #3 on: November 03, 2011, 09:55:32 PM »
Quote from: Kris
Hi Paul I've uploaded the source to my port of rice to gles 2 here.

I'll port this to Android and start doing a little digging to see if I can help find the cause of the bugs.  Could you post the makefile you are using for this (or the list of which .cpp files should be compiled and any build flags)?
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline ringo20000

  • bit
  • Posts: 2
    • View Profile
Re: Alpha Testing Underway!
« Reply #4 on: November 03, 2011, 10:20:10 PM »
On the Xperia play, does the d-pad not work when the touchpad is enabled?  I have all the keys mapped and everything else seems to work except the d-pad.  Is it either the touchpad or d-pad?

Offline Kris

  • Developer
  • int
  • *****
  • Posts: 91
    • View Profile
Re: Alpha Testing Underway!
« Reply #5 on: November 03, 2011, 11:39:31 PM »
I'll port this to Android and start doing a little digging to see if I can help find the cause of the bugs.  Could you post the makefile you are using for this (or the list of which .cpp files should be compiled and any build flags)?

I've been working with eclipse and the C/C++ plugin and 'C/C++ GCC Cross Compiler Support' plugins and the project files are in the zip, not that I'm recommending them.

The original makefile could be a good start if you change:
Remove references to the deleted files: CNvTNTCombiner.cpp, OGLCombinerNV.cpp, OGLCombinerTNT2.cpp.
Remove references to the files in /liblinux: BMGImage.c, BMGUtils.cpp, bmp.c, pngrw.c
Pass NO_ASM into make.
You also need the preprocessor definition GLES_2 or you could edit OGLPlatform.h
Link to the GLESv2 and SDL libraries and headers.

It might be easier to edit the makefile for gles2n64, basically define NO_ASM, GLES_2 and compile all the files except the ones in /liblinux and the win32 one. For a release build the same sort of flags like -O3 or -Ofast and -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -funsafe-math-optimizations -ffast-math -fsingle-precision-constant

It's probably also worth noting that whereas gles2n64 does everything itself rice uses vidext from the core for some init, swapbuffers and other routines. I'm not convinced the vidext functions are necessary in the core but that's another thing.

I think the init code in COGLGraphicsContext::Initialize will probably require the most changes and I can post a different version that uses egl, the code in the zip works on windows and the touchpad. I used the egl from gles2n64 to get it to work on windows with the qualcomm gles emulator libs.

Good luck.

Offline Ganster41

  • byte
  • *
  • Posts: 10
    • View Profile
Re: Alpha Testing Underway!
« Reply #6 on: November 04, 2011, 04:34:15 AM »
Hi all! May be on devices without NEON you use VFP? With soft float it runs slow on 748MHz ARMv6, and older devices without VFP anyway can't play comfortly) May be I try to compile your project myself with needed flags later...
Mario64 runs ok, but sound so laggy. Why?
Did you try to run Star Wars Episode I: Racer? Some textures are invisible there(ex. car body, characters models in selection menu...).
PS. Sorry for my bad English.
Device: LG LU-6200
CPU: Qualcomm MSM8660 2x1.5 GHz Cortex-A8 cores
GPU: Adreno 220
RAM: 1024 MB
Resolution: 720 x 1280
Rom: Stock Android 4.1

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3499
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Alpha Testing Underway!
« Reply #7 on: November 04, 2011, 06:34:49 AM »
On the Xperia play, does the d-pad not work when the touchpad is enabled?  I have all the keys mapped and everything else seems to work except the d-pad.  Is it either the touchpad or d-pad?

I doubt that is the case, but I can check, if you post your logcat output after touching the buttons for the d-pad and touching the touchpad.

Hi all! May be on devices without NEON you use VFP? With soft float it runs slow on 748MHz ARMv6, and older devices without VFP anyway can't play comfortly) May be I try to compile your project myself with needed flags later...
I can look into this (I'll have to look up the correct flags and when they can be used, unless you happen to know off hand)

Mario64 runs ok, but sound so laggy. Why?
This is because the framerate is too low, due to your slow ARM6 device.  Overclocking might help improve this, otherwise you will have to disable the audio.

I think the init code in COGLGraphicsContext::Initialize will probably require the most changes and I can post a different version that uses egl, the code in the zip works on windows and the touchpad. I used the egl from gles2n64 to get it to work on windows with the qualcomm gles emulator libs.
Hey, if you could post that egl version for comparison, it would be great (I'll work on this tonight after I get home from work).
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline Ganster41

  • byte
  • *
  • Posts: 10
    • View Profile
Re: Alpha Testing Underway!
« Reply #8 on: November 04, 2011, 06:43:10 AM »
You can use -mfloat-abi=softfp -mfpu=vfp for ARMv6 VFP. I think GCC from NDK should support it too...
Device: LG LU-6200
CPU: Qualcomm MSM8660 2x1.5 GHz Cortex-A8 cores
GPU: Adreno 220
RAM: 1024 MB
Resolution: 720 x 1280
Rom: Stock Android 4.1

Offline Epic_bubble

  • long
  • ***
  • Posts: 235
    • View Profile
Re: Alpha Testing Underway!
« Reply #9 on: November 04, 2011, 06:53:35 AM »
On the Xperia play, does the d-pad not work when the touchpad is enabled?  I have all the keys mapped and everything else seems to work except the d-pad.  Is it either the touchpad or d-pad?

Have you mapped the xperia dpad buttons the the n64 dpad or analog stick? The n64 dpad doesn't do anything in mario64. What I did was map the xperia buttons to the n64 analog stick so I can use both the touchpad and dpad for controlling mario.
Device: Xperia play
CPU: Qualcomm 1 GHz Scorpion (Snapdragon)
GPU: Adreno 205
RAM: 512 MB
Screen res: 854 ? 480
ROM: stock android 2.3.4 rooted

Offline Paul

  • Administrator
  • double
  • *****
  • Posts: 3499
  • Developer
    • View Profile
    • PaulsCode.Com
Re: Alpha Testing Underway!
« Reply #10 on: November 04, 2011, 07:48:34 AM »
Wow, this theme is hard to read on my phone.  I'll definitely have to change the normal text color to a lighter grey than it is now.
Device: Samsung Galaxy Nexus i515
CPU: TI OMAP4460, 1.2 GHz (dual core, ARM Cortex-A9)
GPU: PowerVR SGX540, 307 MHz
RAM: 1 GB
Resolution: 720 x 1280
Rom: omni-4.4.4-20141014-toro-FML KitKat 4.4.4, rooted

Device: Eee PC 1015PEM
CPU: Intel Atom N550, 1.5 GHz (dual core, x86)
GPU: Intel GMA 3150, 200 MHz (dual core)
RAM: 2GB
Resolution: 1024 x 600
Rom: android-x86-4.3-20130725 Jelly Bean 4.3, rooted

Offline koekje

  • byte
  • *
  • Posts: 20
    • View Profile
Re: Alpha Testing Underway!
« Reply #11 on: November 04, 2011, 08:01:02 AM »
crc 693BA2AE-B7F14E9F-C:45
gn Legend of Zelda, The - Ocarina of Time (U) (V1.2)
 cn Subscreen\delay fix
  801DAE8B 0002

Does this also work with V1.0?


NVM looked at the site you gave and there it was for 1.0 :) thank you!
« Last Edit: November 04, 2011, 08:03:52 AM by koekje »
Device: HTC Desire Z ( G2/Vision )
CPU: 1497 MHz Scorpion processor,  Qualcomm MSM 7230 chipset
GPU: Adreno 205
RAM: 512 MB
Resolution: 480 x 800
Rom: Cyanogenmod 7.1, 2.3.4 rooted

Offline crualfoxhound

  • byte
  • *
  • Posts: 19
    • View Profile
Re: Alpha Testing Underway!
« Reply #12 on: November 04, 2011, 09:24:55 AM »
@Paul.

I be getting my galaxy note delivered shortly.
hopefully early next week.
So I can use both HTC Desire HD and Samsung galaxy note.
To help testing.

Catch ya later.

PS really like the new coloured  forum.
Device.

Samsung galaxy note 2 N7100

Offline Kris

  • Developer
  • int
  • *****
  • Posts: 91
    • View Profile

Offline ringo20000

  • bit
  • Posts: 2
    • View Profile
Re: Alpha Testing Underway!
« Reply #14 on: November 04, 2011, 11:42:37 AM »
On the Xperia play, does the d-pad not work when the touchpad is enabled?  I have all the keys mapped and everything else seems to work except the d-pad.  Is it either the touchpad or d-pad?

Have you mapped the xperia dpad buttons the the n64 dpad or analog stick? The n64 dpad doesn't do anything in mario64. What I did was map the xperia buttons to the n64 analog stick so I can use both the touchpad and dpad for controlling mario.

That was it.  I had the d-pad mapped to the d-pad instead of x,y axis.  I knew it was something simple I was missing.