diff --git a/Android/res/drawable-hdpi/ic_review.png b/Android/res/drawable-hdpi/ic_review.png
new file mode 100644
index 000000000..62aca4f1e
Binary files /dev/null and b/Android/res/drawable-hdpi/ic_review.png differ
diff --git a/Android/res/drawable-mdpi/ic_review.png b/Android/res/drawable-mdpi/ic_review.png
new file mode 100644
index 000000000..b43d59c11
Binary files /dev/null and b/Android/res/drawable-mdpi/ic_review.png differ
diff --git a/Android/res/drawable-xhdpi/ic_review.png b/Android/res/drawable-xhdpi/ic_review.png
new file mode 100644
index 000000000..5a2569c30
Binary files /dev/null and b/Android/res/drawable-xhdpi/ic_review.png differ
diff --git a/Android/res/menu/gallery_drawer.xml b/Android/res/menu/gallery_drawer.xml
index b0e87f76e..c2aa8e4d9 100644
--- a/Android/res/menu/gallery_drawer.xml
+++ b/Android/res/menu/gallery_drawer.xml
@@ -14,6 +14,9 @@
+
diff --git a/Android/res/values/strings.xml b/Android/res/values/strings.xml
index 4b7413347..6c7516d39 100644
--- a/Android/res/values/strings.xml
+++ b/Android/res/values/strings.xml
@@ -199,6 +199,12 @@
Permissions
Project64 needs to be able to: \nRead your storage to read game files, save states, and configuration.\nWrite to your storage to write configuration and save data.
+
+ Please rate Project64 5 stars
+ Please rate Project64 5 stars if you have enjoyed it. Your support and feedback helps makes Project64 better.
+ Don\'t Rate
+ Rate 5 Starts
+
Scanning…
diff --git a/Android/src/emu/project64/GalleryActivity.java b/Android/src/emu/project64/GalleryActivity.java
index f1a137a80..123fac29f 100644
--- a/Android/src/emu/project64/GalleryActivity.java
+++ b/Android/src/emu/project64/GalleryActivity.java
@@ -51,6 +51,7 @@ import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
+import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
@@ -147,13 +148,6 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi
super.onCreate( savedInstanceState );
mActiveGalleryActivity = this;
- String FirstRun = NativeExports.UISettingsLoadString(UISettingID.SupportWindow_FirstRun.getValue());
- if (FirstRun.length() == 0)
- {
- SimpleDateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
- NativeExports.UISettingsSaveString(UISettingID.SupportWindow_FirstRun.getValue(), format.format(new Date()));
- }
-
mIabHelper = new IabHelper(this, "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnfHFIq+X0oIvV+bwcvdqQv5GmpWLL6Bw8xE6MLFzXzUGUIUZBwQS6Cz5IC0UM76ujPDPqQPeGy/8oq/bswB5pHCz2iS4ySGalzFfYfeIDklOe+R1pLEqmHuwsR5o4b8rLePLGmUI7hA0kozOTb0i+epANV3Pj63i5XFZLA7RMi5I+YysoE9Fob6kCx0kb02AATacF0OXI9paE1izvsHhZcOIrT4TRMbGlZjBVE/pcJtoBDh33QKz/JBOXWvwnh+efqhVsq/UfA6jYI+U4Z4tsnWhem8DB6Kqj5EhClC6qCPmkBFiOabyKaqhI/urBtYOwxkW9erwtA6OcDoHm5J/JwIDAQAB");
// enable debug logging (for a production application, you should set this to false).
@@ -247,6 +241,15 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi
}
});
UpdateLanguage();
+
+ int RunCount = NativeExports.UISettingsLoadDword(UISettingID.AppInfo_RunCount.getValue()) + 1;
+ if (RunCount < 1) { RunCount = 1; }
+ NativeExports.UISettingsSaveDword(UISettingID.AppInfo_RunCount.getValue(), RunCount);
+ Log.d("GalleryActivity", "ShowSupportWindow RunCount = " + RunCount);
+ if (RunCount == 5 || RunCount == 10)
+ {
+ ShowReviewOptions();
+ }
}
void UpdateLanguage()
@@ -254,6 +257,7 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi
Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_settings, LanguageStringID.ANDROID_SETTINGS);
Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_discord, LanguageStringID.ANDROID_DISCORD);
Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_reportBug, LanguageStringID.ANDROID_REPORT_BUG);
+ Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_review, LanguageStringID.ANDROID_REVIEW_PJ64);
Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_support, LanguageStringID.ANDROID_SUPPORT_PJ64);
Strings.SetMenuTitle(mDrawerList.getMenu(), R.id.menuItem_about, LanguageStringID.ANDROID_ABOUT);
}
@@ -410,6 +414,9 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi
Intent IssueIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/project64/project64/issues"));
startActivity(IssueIntent);
return true;
+ case R.id.menuItem_review:
+ ShowReviewOptions();
+ return true;
case R.id.menuItem_support:
ShowPaymentOptions();
return true;
@@ -579,7 +586,6 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi
currentFile.delete();
}
SaveDir.delete();
- NativeExports.UISettingsSaveDword(UISettingID.Game_RunCount.getValue(), 0);
launchGameActivity(false);
}
})
@@ -798,6 +804,30 @@ public class GalleryActivity extends AppCompatActivity implements IabBroadcastLi
}
}
+ public void ShowReviewOptions()
+ {
+ new AlertDialog.Builder(GalleryActivity.this).setTitle(getString(R.string.review_title))
+ .setMessage(getString(R.string.review_decription))
+ .setPositiveButton(getString( R.string.review_ok ), new OnClickListener()
+ {
+ @Override
+ public void onClick(DialogInterface dialog, int which)
+ {
+ Intent IssueIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=emu.project64&hl=en"));
+ startActivity(IssueIntent);
+ }
+
+ })
+ .setNegativeButton( getString( R.string.review_cancel), new OnClickListener()
+ {
+ @Override
+ public void onClick(DialogInterface dialog, int which)
+ {
+ }
+ })
+ .setCancelable(false).show();
+ }
+
public void ShowPaymentOptions()
{
ArrayList skuList = new ArrayList();
diff --git a/Android/src/emu/project64/jni/LanguageStringID.java b/Android/src/emu/project64/jni/LanguageStringID.java
index ddf1180d3..7fcaeb6dc 100644
--- a/Android/src/emu/project64/jni/LanguageStringID.java
+++ b/Android/src/emu/project64/jni/LanguageStringID.java
@@ -580,6 +580,7 @@ public enum LanguageStringID
ANDROID_ABOUT_PJ64_AUTHORS(3020),
ANDROID_DISCORD(3021),
ANDROID_SUPPORT_PJ64(3022),
+ ANDROID_REVIEW_PJ64(3023),
//In game menu
ANDROID_MENU_SETTINGS(3100),
diff --git a/Android/src/emu/project64/jni/UISettingID.java b/Android/src/emu/project64/jni/UISettingID.java
index ec80d79e3..589717506 100644
--- a/Android/src/emu/project64/jni/UISettingID.java
+++ b/Android/src/emu/project64/jni/UISettingID.java
@@ -29,14 +29,8 @@ public enum UISettingID
Controller_Deadzone,
Controller_Sensitivity,
- //Support Window
- SupportWindow_FirstRun,
- SupportWindow_AlwaysShow,
- SupportWindow_ShowingSupportWindow,
- SupportWindow_RunCount,
-
- //Game Settings
- Game_RunCount,
+ //App Info
+ AppInfo_RunCount,
;
private int value;
diff --git a/Source/Project64-core/MemoryExceptionFilter.cpp b/Source/Project64-core/MemoryExceptionFilter.cpp
index 88ed5b1b5..acd170eeb 100644
--- a/Source/Project64-core/MemoryExceptionFilter.cpp
+++ b/Source/Project64-core/MemoryExceptionFilter.cpp
@@ -723,6 +723,7 @@ bool CMipsMemoryVM::FilterArmException(uint32_t MemAddress, mcontext_t & context
if (OpCode32->reg_cond.opcode == 0 && OpCode32->reg_cond.opcode1 == 0 && OpCode32->reg_cond.opcode2 == 1 && OpCode32->reg_cond.opcode3 == 0xB)
{
//119330b1 ldrhne r3, [r3, r1]
+ //11d000b0 ldrhne r0, [r0]
if (!g_MMU->LH_NonMemory(MemAddress, ArmRegisters[OpCode32->reg_cond.rt], false))
{
if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory))
diff --git a/Source/Project64-core/Multilanguage.h b/Source/Project64-core/Multilanguage.h
index fcc818544..b6eae4ed4 100644
--- a/Source/Project64-core/Multilanguage.h
+++ b/Source/Project64-core/Multilanguage.h
@@ -585,6 +585,7 @@ enum LanguageStringID
ANDROID_ABOUT_PJ64_AUTHORS = 3020,
ANDROID_DISCORD = 3021,
ANDROID_SUPPORT_PJ64 = 3022,
+ ANDROID_REVIEW_PJ64 = 3023,
//In game menu
ANDROID_MENU_SETTINGS = 3100,
diff --git a/Source/Project64-core/Multilanguage/LanguageClass.cpp b/Source/Project64-core/Multilanguage/LanguageClass.cpp
index af161c1b5..d8c070a0b 100644
--- a/Source/Project64-core/Multilanguage/LanguageClass.cpp
+++ b/Source/Project64-core/Multilanguage/LanguageClass.cpp
@@ -551,6 +551,7 @@ void CLanguage::LoadDefaultStrings(void)
DEF_STR(ANDROID_ABOUT_PJ64_AUTHORS, "Project64 Authors.");
DEF_STR(ANDROID_DISCORD, "Discord");
DEF_STR(ANDROID_SUPPORT_PJ64, "Support Project64");
+ DEF_STR(ANDROID_REVIEW_PJ64, "Review Project64");
//In game menu
DEF_STR(ANDROID_MENU_SETTINGS, "Settings");