Compare commits

..

41 Commits

Author SHA1 Message Date
zilmar 2df34341d9 Merge remote-tracking branch 'origin/3.0.1' into Release 2021-06-18 14:25:42 +09:30
zilmar 32bf2ab7c3 Remove "Dev" for 3.0.1 2021-06-18 12:49:50 +09:30
zilmar 8040e8a210 Make showing nag window a temp setting 2021-06-14 16:58:33 +09:30
oddMLan d647cd8ea6 Update RDB
- Add new games (Freak Boy, Doubutsu Banchou)
- Added settings to a few games for stability with Enhancements (RDRAM Size=8 and Randomize SI/PI DMA=0)
- Removed incorrect Super Mario 64 hack entry (it is the basic expanded ROM)
- Some minor nomenclature corrections (Debug Version -> Debug) etc.
- Fixed Mortal Kombat Trilogy slowdown (thanks mkultimate & AIO)
2021-06-13 15:29:03 +09:30
oddMLan 873970d18e (Cheats) Leave only 1 line break at EOF 2021-06-13 15:02:50 +09:30
oddMLan 8277421556 Enhancement -> Enhancements (Updated package scripts as well)
Enhancement-User -> Enhancements-User
2021-06-13 14:58:02 +09:30
zilmar 1942416dd0 update version to 3.0.1 2021-06-13 13:36:44 +09:30
zilmar 699d4bb301 Use a specific version of Gliden64 (1d90610782) 2021-06-13 13:15:12 +09:30
zilmar a1ab96fec4 Merge branch '3.0-develop' of https://github.com/project64/project64 into 3.0-develop 2021-06-11 22:39:55 +09:30
zilmar a44ab96f6a Copy Project64.cfg.development if Project64.cfg does not exist 2021-06-11 22:38:33 +09:30
zilmar 744f5bd2b8 BlueToonYoshi_RDB_Updated_06-08-2021 2021-06-11 22:38:13 +09:30
zilmar 6970c72718 Remove calling git describe from UpdateVersion.cmd 2021-06-11 22:37:33 +09:30
oddMLan d6ff745603 Fix spelling mistake in support window 2021-06-11 22:37:12 +09:30
Felipe 58394d9119 Add files via upload 2021-06-11 22:36:34 +09:30
zilmar 527ad040b0 Disable menu if showing nag window 2021-06-11 22:35:56 +09:30
oddMLan 3d472f23e0 Fix spelling mistake in support window 2021-05-30 20:55:24 +09:30
Felipe fa8fdf1daa Add files via upload 2021-05-30 20:55:10 +09:30
zilmar 65e42355ae Disable menu if showing nag window 2021-05-30 20:46:15 +09:30
oddMLan 929635c6de Localize unstranslated strings
-'Always use interpreter core' & 'Enable Discord Rich Presence'
2021-05-28 16:46:07 +09:30
oddMLan 6ed7d613e2 Since 8MB is default now, remove hardcoded check in SettingsType-RDBRamSize.cpp and redundant note in the UI
This reverts commits 8475fa9c14 4020735b26
2021-05-28 16:43:55 +09:30
oddMLan d7eb1e9e21 Updated Spanish strings 2021-05-28 16:43:33 +09:30
oddMLan 80afb80925 Beautify Welcome Screen
Simplify wording, tweak the element alignments, and the plugin choice works like a button now (looks less confusing)
2021-05-28 16:42:47 +09:30
oddMLan 194564ee26 English.pj.Lang: Simplify wording & fix formatting 2021-05-28 16:42:20 +09:30
oddMLan 2c7f18212b Don't ask for advanced mode to let user pick enhancements 2021-05-28 16:42:04 +09:30
oddMLan bf06721b47 Fix ROM browser default column size 2021-05-28 16:39:15 +09:30
oddMLan aa05e02337 Minor layout fixes
- Fixed Notes in Enhancements window
- Fix Add Cheat to accommodate for cheat disable value feature
- Center about window header
2021-05-28 16:38:22 +09:30
shygoo f83bee91d9 [Debugger] Fix memory viewer paste crash 2021-05-26 16:59:51 +09:30
shygoo 7368802c00 [Debugger] Fix memory viewer paste crash 2021-05-26 16:58:48 +09:30
Derek "Turtle" Roe 77f4e4b101 Fix broken link in build doc 2021-05-26 10:30:21 +09:30
zilmar 77c266f1b5 Merge branch '3.0-Release' of https://github.com/project64/project64 into 3.0-Release 2021-05-26 10:26:35 +09:30
Nora c9999afc51 Remove leftovers from boxart being present on DiscordRPC 2021-05-26 10:22:02 +09:30
shygoo 0a61cbb1e3 [Debugger] Fix memory dump 2021-05-26 10:21:54 +09:30
Jaxon c3ccf08f8d Update Norwegian translation 2021-05-26 10:21:42 +09:30
Nora 69e78a7d3e Remove leftovers from boxart being present on DiscordRPC 2021-05-26 10:20:05 +09:30
shygoo af6cbf48f2 [Debugger] Fix memory dump 2021-05-26 10:19:45 +09:30
Jaxon d446775053 Update Norwegian translation 2021-05-26 10:19:23 +09:30
zilmar aab2dc63c2 Update CHANGELOG.md 2021-05-22 09:59:08 +09:30
zilmar 06ad543ff0 Update CHANGELOG.md 2021-05-22 09:58:21 +09:30
shygoo 7d86e892fa [Debugger] Fix search 2021-05-22 09:39:42 +09:30
shygoo 476d2dbc22 [Debugger] Fix search 2021-05-22 09:38:53 +09:30
zilmar d2cef0dc3f Remove Dev from version number 2021-05-19 11:22:57 +09:30
2732 changed files with 133727 additions and 359000 deletions

View File

@ -1,28 +1,9 @@
# Introduction
First of all, thank you for considering contributing to Project64! Project64 is an open-source project, and we love to receive contributions from the community. Contributions help fix bugs, add new features, and improve the project. There are many ways to contribute, from writing and improving the documentation, testing, submitting bug reports and feature requests, or writing code that can be incorporated into Project64 itself.
First of all, thank you for considering contributing to Project64! Project64 is an open-source project and contributions by the community help fix bugs, add new features, and improve the project.
If you are looking for support or need help, please join the [Discord](https://discord.gg/Cg3zquF)! It's the best way to get your questions answered quickly. Please do not open a GitHub issue without first reading through the [support document](../Docs/SUPPORT.md).
Following these guidelines will help make sure that users and developers alike can work together to achieve the projects goals.
Following these guidelines will help ensure that users and developers alike can work together to achieve the project's goals.
Please do NOT post any copyrighted materials. This includes (but is not limited to) ROMs, ROM hacks, IPL and firmware files, etc.
Save states and game saves do not fall under this category, so please post them only if they are applicable to your issue!
# Github Contribution Guide
1. Create a fork of this repository on your own account.
2. Create a new branch from the `develop` branch.
* Choose a meaningful name for the branch (e.g. `fix`, `documentation`).
3. Commit any changes onto your new branch.
4. If sensible, squash all commits into one. This helps clean up the vetting process.
* Ensure that commit messages are clear, concise, and informative. They should include information about all changes made, especially when squashing multiple commits into one.
5. Once all commits have been made and squashed, rebase all changes in your branch.
* Rebasing will resolve any merge confilcts that your changes may cause.
6. Create a pull request to the `develop` branch
* The pull request should be descriptive and include all changes made to the code base. If multiple files have been changed, organize them such that they can be easily followed by a reviewer.
* Make sure that you **allow edits** by maintainers when making the Pull Request.
7. Your changes should be reviewed and fixes may be made to your changes.
* If fixes are made please make sure to address them.
Project64 is an open-source project and we love to receive contributions from the community. There are many ways to contribute, from writing and improving the documentation, testing, submitting bug reports and feature requests, or writing code which can be incorporated into Project64 itself.
Please don't use the issue tracker for support questions. Please join the Discord so the community can help with your issue!

19
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,19 @@
## Expected behavior
## Actual behavior
## Steps to reproduce the problem
1.
1.
1.
1.
1.
## Specifications
- Windows version:
- Project64 version:
- Plugins used:

View File

@ -1,147 +0,0 @@
name: Bug report
description: >-
If you experience a bug in Project64 and/or its maintained plugins, please open an
issue here and fill out the template.
title: '[Bug]: '
labels:
- bug
- triage
assignees:
- null
body:
- type: markdown
attributes:
value: '## FAQs and a warning'
- type: markdown
attributes:
value: >-
Please read the support document in this repository before opening an issue!
If you are having issues with a plugin that isn't included with or
supported by the Project64 team, we cannot support you other then pointing
you to the developer or repository for those plugins.
Please join the Discord first and ask questions and ask for support there
first. If the issue should require an open GitHub issue, somebody will ask
you to open one.
We have a lot of people in the Discord who are more then
happy to help you with any issues you may be having!
Please avoid opening issues if you do not meet the minimum requirements
for Project64. These are outlined in the README for this repository.
- type: textarea
id: what-should-happen
attributes:
label: Expected behavior?
description: How was the emulator supposed to behave
placeholder: Tell us what you expect to see!; use screenshots if necessary.
value: null
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: Actual behavior?
description: Describe in detail the issue you encountered.
placeholder: Tell us what you see!; use screenshots if necessary.
value: null
validations:
required: true
- type: textarea
id: repro
attributes:
label: Steps to reproduce the problem
description: How do you trigger this bug? Please walk us through it step by step.
value: |
1.
2.
3.
4.
5.
...
validations:
required: true
- type: textarea
id: error-messages
attributes:
label: Error messages?
description: Was there an error message?
placeholder: List any error messages here!; use screenshots if necessary.
value: null
validations:
required: false
- type: textarea
id: ROM_details
attributes:
label: What game were you playing?
description: What is the specific game/ROM that you encountered an issue with?
value: |
Title:
Nintendo 64 game or Nintendo 64 Disk Drive:
ROM information (First you must uncheck "hide advanced settings" in the settings menu, then File > ROM info should show up, post the information contained there in this field. Alternatively, you can right click the ROM in the ROM browser and hit "ROM information".):
Save type: (attach game save or save state here)
Original or modified ROM?:(attach patch if applicable here)
validations:
required: false
- type: textarea
id: SysInfo
attributes:
label: Specifications and build details
description: >-
List your PC specifications/information, you can obtain this from MSINFO32 and the
emulators title bar and about page.
value: |
Project64: (include commit version number and whether you are using the
32-bit or 64-bit version)
OS: (include version and OS build number using WinVer):
CPU:
RAM:
Graphics:
validations:
required: true
- type: checkboxes
id: DefaultPlugins
attributes:
label: Using included plugins
description: >-
Please make sure you are using the included plugins before opening an
issue:
options:
- label: >-
I can confirm I am using the included RSP, audio, input, and graphics
plugins
required: true
- type: textarea
id: PluginsUsed
attributes:
label: Plugins used while the issue occurred
description: What plugins is the issue occuring with?
value: |
Graphics plugin (and HLE or LLE):
Audio plugin:
Input plugin:
RSP plugin:
validations:
required: true
- type: checkboxes
id: Copyright_Compliance
attributes:
label: Copyright Compliance
description: >-
Please do not attach any files that infringe on the copyright of any
party.
options:
- label: There are no infringing files attached to this bug report.
required: true

View File

@ -1,38 +0,0 @@
name: Feature request
description: >-
If you would like a new feature in Project64 or its default plugins, please
open an issue here and fill out the template.
title: '[Feature request]: '
labels:
- feature request
- enhancement
assignees:
- null
body:
- type: textarea
id: feature-request
attributes:
label: Request box
description: What feature would you like to see added?
placeholder: Tell us what you would like to see added to Project64!
value: null
validations:
required: true
- type: textarea
id: reason-why
attributes:
label: Reason box
description: Provide reasoning for the new feature
placeholder: Tell us why you'd like to see this feature added
value: null
validations:
required: true
- type: textarea
id: Examples
attributes:
label: Examples
description: Provide examples of this feature
placeholder: Provide examples or screenshots of this feature in other software
value: null
validations:
required: true

View File

@ -1,5 +1,5 @@
blank_issues_enabled: false
blank_issues_enabled: true
contact_links:
- name: Project64 Community Support
url: https://discord.gg/Cg3zquF
about: For general questions and support please join the Discord!
about: Please ask and answer questions on our Discord!

View File

@ -1,13 +1,7 @@
[Add description of the PR here]
Fixes #
### Proposed changes
## Proposed Changes
-
-
-
### Does this make breaking changes?
### Does this version of Project64 compile and run without issue?

95
.gitignore vendored
View File

@ -20,11 +20,11 @@
Thumbs.db
/.vs
/Bin/Debug
/Bin/Debug64
/Bin/Package
/Bin/Win32/Debug
/Bin/Win32/Release
/Bin/x64/Debug
/Bin/x64/Release
/Bin/Release
/Bin/Release64
/build
/Config/Cheats-User
/Config/Enhancements-User
@ -36,64 +36,31 @@ Thumbs.db
/git.properties
/ipch
/Package
/Plugin/Win32/Audio/AndroidAudio_d.dll
/Plugin/Win32/Audio/AndroidAudio.dll
/Plugin/Win32/Audio/Project64-Audio_d.dll
/Plugin/Win32/Audio/Project64-Audio.dll
/Plugin/Win32/GFX/lib
/Plugin/Win32/GFX/map
/Plugin/Win32/GFX/pdb
/Plugin/Win32/GFX/Project64-Video_d.dll
/Plugin/Win32/GFX/Project64-Video.dll
/Plugin/Win32/Input/AndroidInput_d.dll
/Plugin/Win32/Input/AndroidInput.dll
/Plugin/Win32/Input/lib
/Plugin/Win32/Input/map
/Plugin/Win32/Input/pdb
/Plugin/Win32/Input/PJ64_NRage_d.dll
/Plugin/Win32/Input/PJ64_NRage.dll
/Plugin/Win32/Input/Project64-Input_d.dll
/Plugin/Win32/Input/Project64-Input.dll
/Plugin/Win32/RSP/lib
/Plugin/Win32/RSP/map
/Plugin/Win32/RSP/pdb
/Plugin/Win32/RSP/Project64-RSP_d.dll
/Plugin/Win32/RSP/Project64-RSP.dll
/Plugin/Win32/RSP/RSP 1.7.dll
/Plugin/Win32/RSP/RSP_d 1.7.dll
/Plugin/Win32/RSP/RSP-HLE_d.dll
/Plugin/Win32/RSP/RSP-HLE.dll
/Plugin/Win32/RSP/Project64-RSP-Basic_d.dll
/Plugin/Win32/RSP/Project64-RSP-Basic.dll
/Plugin/x64/Audio/AndroidAudio_d.dll
/Plugin/x64/Audio/AndroidAudio.dll
/Plugin/x64/Audio/Project64-Audio_d.dll
/Plugin/x64/Audio/Project64-Audio.dll
/Plugin/x64/GFX/lib
/Plugin/x64/GFX/map
/Plugin/x64/GFX/pdb
/Plugin/x64/GFX/Project64-Video_d.dll
/Plugin/x64/GFX/Project64-Video.dll
/Plugin/x64/Input/AndroidInput_d.dll
/Plugin/x64/Input/AndroidInput.dll
/Plugin/x64/Input/lib
/Plugin/x64/Input/map
/Plugin/x64/Input/pdb
/Plugin/x64/Input/PJ64_NRage_d.dll
/Plugin/x64/Input/PJ64_NRage.dll
/Plugin/x64/Input/Project64-Input_d.dll
/Plugin/x64/Input/Project64-Input.dll
/Plugin/x64/RSP/lib
/Plugin/x64/RSP/map
/Plugin/x64/RSP/pdb
/Plugin/x64/RSP/Project64-RSP_d.dll
/Plugin/x64/RSP/Project64-RSP.dll
/Plugin/x64/RSP/RSP 1.7.dll
/Plugin/x64/RSP/RSP_d 1.7.dll
/Plugin/x64/RSP/RSP-HLE_d.dll
/Plugin/x64/RSP/RSP-HLE.dll
/Plugin/x64/RSP/Project64-RSP-Basic_d.dll
/Plugin/x64/RSP/Project64-RSP-Basic.dll
/Plugin/Audio/AndroidAudio_d.dll
/Plugin/Audio/AndroidAudio.dll
/Plugin/Audio/Project64-Audio_d.dll
/Plugin/Audio/Project64-Audio.dll
/Plugin/GFX/lib
/Plugin/GFX/map
/Plugin/GFX/pdb
/Plugin/GFX/Project64-Video_d.dll
/Plugin/GFX/Project64-Video.dll
/Plugin/Input/AndroidInput_d.dll
/Plugin/Input/AndroidInput.dll
/Plugin/Input/lib
/Plugin/Input/map
/Plugin/Input/pdb
/Plugin/Input/PJ64_NRage_d.dll
/Plugin/Input/PJ64_NRage.dll
/Plugin/Input/Project64-Input_d.dll
/Plugin/Input/Project64-Input.dll
/Plugin/RSP/lib
/Plugin/RSP/map
/Plugin/RSP/pdb
/Plugin/RSP/RSP 1.7.dll
/Plugin/RSP/RSP_d 1.7.dll
/Plugin/RSP/RSP-HLE_d.dll
/Plugin/RSP/RSP-HLE.dll
/Plugin64/AndroidAudio
/Plugin64/Audio/AndroidAudio_d.dll
/Plugin64/Audio/AndroidAudio.dll
@ -128,6 +95,4 @@ Thumbs.db
/Source/Project64-core/Version.h
/Source/Project64-input/Version.h
/Source/Project64-video/Version.h
/Source/Project64-rsp-core/Version.h
/Plugin/Win32/GFX/GLideN64
/Plugin/x64/GFX/GLideN64
/Source/RSP/Version.h

3
.gitmodules vendored
View File

@ -1,3 +0,0 @@
[submodule "Source/GLideN64/Source"]
path = Source/GLideN64/Source
url = https://github.com/gonetz/GLideN64.git

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;resources&gt;&#13;&#10;&lt;item path=&quot;/Project64/assets&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/resources&gt;}"/>
<booleanAttribute key="org.eclipse.debug.core.capture_output" value="false"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="false"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Project64"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="true"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Project64/buildAssets.xml}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="clean"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Project64}"/>
</launchConfiguration>

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;resources&gt;&#13;&#10;&lt;item path=&quot;/Project64/jni&quot; type=&quot;2&quot;/&gt;&#13;&#10;&lt;/resources&gt;}"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="Project64"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_BUILD_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;resources&gt;&#13;&#10;&lt;item path=&quot;/Project64&quot; type=&quot;4&quot;/&gt;&#13;&#10;&lt;/resources&gt;}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/Project64/copySource.xml}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="clean"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/Project64}"/>
</launchConfiguration>

31
Android/.gitignore vendored
View File

@ -1,14 +1,17 @@
assets/Config
assets/Lang
config/version.gradle
app/src/main/assets/assets.zip
*.iml
.gradle
local.properties
.idea/
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
build
# Generated and temporary files
assets/project64_data/Config
assets/project64_data/Lang
bin/
gen/
obj/
*.d
*.o
*.so
Version.h.in
# Eclipse project files
.settings/
.classpath
.cproject
.project

53
Android/.project.init Normal file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Project64</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
<triggers>clean,</triggers>
<arguments>
<dictionary>
<key>LaunchConfigHandle</key>
<value>&lt;project&gt;/.externalToolBuilders/Copy Project64 C++ Source.launch</value>
</dictionary>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
<triggers>clean,</triggers>
<arguments>
<dictionary>
<key>LaunchConfigHandle</key>
<value>&lt;project&gt;/.externalToolBuilders/Build Assets.launch</value>
</dictionary>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1,34 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="emu.project64">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="emu.project64" android:versionCode="11" android:versionName="2.3.3" >
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-sdk android:minSdkVersion="17" android:targetSdkVersion="26" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.software.leanback" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<application
android:name="emu.project64.Project64Application"
android:allowBackup="false"
android:allowBackup="true"
android:isGame="true"
android:hardwareAccelerated="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:banner="@drawable/banner"
android:theme="@style/Theme.Project64"
android:requestLegacyExternalStorage="true" >
android:theme="@style/Theme.Project64" >
<activity
android:name="emu.project64.SplashActivity"
android:label="@string/SplashActivity_title"
android:theme="@style/Theme.Project64.Splash"
android:configChanges="keyboardHidden|orientation|screenSize"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="tv.ouya.intent.category.GAME" />
</intent-filter>
</activity>
<activity
@ -36,33 +36,54 @@
android:exported="false"
android:label="@string/GalleryActivity_title"
android:launchMode="singleTask"
android:theme="@style/Theme.Project64.Gallery" >
android:theme="@style/Theme.Project64.Apearance" >
</activity>
<activity
android:name="emu.project64.ScanRomsActivity"
android:exported="false"
android:label="@string/ScanRomsActivity_title"
android:theme="@style/Theme.Project64.Apearance" >
android:theme="@style/Theme.AppCompat" >
</activity>
<activity
android:name="emu.project64.profile.ControllerProfileActivity"
android:exported="false"
android:label="@string/ControllerProfileActivity_title"
android:theme="@style/Theme.Project64.Apearance" >
<intent-filter>
<action android:name=".profile.ControllerProfileActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!--
For the GameActivities, do not restart the activity when the phone's slider
opens or closes, or when the orientation (and thereby screen size) changes.
This behavior is specified in android:configChanges below.
-->
<activity
android:name="emu.project64.game.GameActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/GameActivity_title"
android:theme="@style/Theme.Project64.GameActivity" >
</activity>
<activity
android:name="emu.project64.game.GameActivityXperiaPlay"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/GameActivity_title"
android:theme="@style/Theme.Project64.GameActivity" >
<meta-data
android:name="android.app.lib_name"
android:value="xperia-touchpad" />
</activity>
<activity
android:name="emu.project64.AboutActivity"
android:theme="@style/Theme.Project64.About" />
<activity
<activity
android:name="emu.project64.settings.SettingsActivity"
android:theme="@style/Theme.Project64.Settings"/>
android:theme="@style/Theme.Project64.Apearance" />
<activity
android:name="emu.project64.settings.GameSettingsActivity"
android:theme="@style/Theme.Project64.Settings" />
android:theme="@style/Theme.Project64.Apearance" />
</application>
</manifest>

View File

@ -1,36 +0,0 @@
@ECHO OFF
SETLOCAL
set origdir=%cd%
cd /d %~dp0..\..\
set base_dir=%cd%
cd /d %origdir%
echo buildAssets
call "%base_dir%\Android\Script\buildAssets.cmd"
set Result=%ERRORLEVEL%
echo Done - ERRORLEVEL: %Result%
IF %Result% NEQ 0 goto :EndErr
echo UpdateVersionNumber
call "%base_dir%\Android\Script\UpdateVersionNumber.cmd"
set Result=%ERRORLEVEL%
echo Done - ERRORLEVEL: %Result%
IF %Result% NEQ 0 goto :EndErr
echo copySource
call "%base_dir%\Android\Script\copySource.cmd"
set Result=%ERRORLEVEL%
echo Done - ERRORLEVEL: %Result%
IF %Result% NEQ 0 goto :EndErr
goto :end
:EndErr
ENDLOCAL
echo Build failed
exit /B 1
:End
ENDLOCAL
exit /B 0

Binary file not shown.

View File

@ -1,18 +0,0 @@
@ECHO OFF
SETLOCAL
set origdir=%cd%
cd /d %~dp0..\..\
set base_dir=%cd%
cd /d %origdir%
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Android\config\version.gradle.in" "%base_dir%\Android\config\version.gradle"
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-core\Version.h.in" "%base_dir%\Source\Project64-core\Version.h"
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-rsp-core\Version.h.in" "%base_dir%\Source\Project64-rsp-core\Version.h"
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-audio\Version.h.in" "%base_dir%\Source\Project64-audio\Version.h"
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\Project64-video\Version.h.in" "%base_dir%\Source\Project64-video\Version.h"
"%base_dir%\Android\Script\UpdateVersion.exe" "%base_dir%\Source\RSP\Version.h.in" "%base_dir%\Source\RSP\Version.h"
:End
ENDLOCAL
exit /B 0

63
Android/Script/build.cmd Normal file
View File

@ -0,0 +1,63 @@
@ECHO OFF
SETLOCAL
set origdir=%cd%
cd /d %~dp0..\..\
set base_dir=%cd%
cd /d %origdir%
set VersionName=
if not "%1" == "" set VersionName= %1
set NDK-BUILDER=""
if exist "C:\Android\android-ndk-r10d\ndk-build.cmd" ( set NDK-BUILDER="C:\Android\android-ndk-r10d\ndk-build.cmd" )
if exist "C:\Android\android-ndk-r11c\ndk-build.cmd" ( set NDK-BUILDER="C:\Android\android-ndk-r11c\ndk-build.cmd" )
if exist "C:\Android\android-ndk-r13b\ndk-build.cmd" ( set NDK-BUILDER="C:\Android\android-ndk-r13b\ndk-build.cmd" )
if %NDK-BUILDER% == "" (
echo can not find android NDK
goto :EndErr
)
set ANDROID_SDK=""
if exist "C:\Android\android-sdk" ( set ANDROID_SDK="C:\Android\android-sdk" )
if %ANDROID_SDK% == "" (
echo can not find android SDK
goto :EndErr
)
call "%base_dir%\Android\Script\buildAssets.cmd"
IF %ERRORLEVEL% NEQ 0 goto :EndErr
call "%base_dir%\Android\Script\copySource.cmd"
IF %ERRORLEVEL% NEQ 0 goto :EndErr
cd /d %base_dir%\Android
call %NDK-BUILDER% clean
IF %ERRORLEVEL% NEQ 0 goto :EndErr
call %NDK-BUILDER%
IF %ERRORLEVEL% NEQ 0 goto :EndErr
call ant clean release -Dsdk.dir=%ANDROID_SDK%
IF %ERRORLEVEL% NEQ 0 goto :EndErr
cd /d %origdir%
:: Make sure the sign environment variables exist
IF NOT DEFINED project64_cert_keystore ( exit /B 0 )
IF NOT DEFINED project64_cert_password ( exit /B 0 )
:: Sign the APK
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -tsa http://timestamp.digicert.com -keystore "%project64_cert_keystore%" -storepass %project64_cert_password% -keypass %project64_cert_password% "%base_dir%\Android\bin\Project64-release-unsigned.apk" project64
:: Align the APK
zipalign -v 4 "%base_dir%\Android\bin\Project64-release-unsigned.apk" "%base_dir%\Package\Project64%VersionName%.apk"
echo Build ok
goto :end
:EndErr
ENDLOCAL
echo Build failed
exit /B 1
:End
ENDLOCAL
exit /B 0

View File

@ -8,35 +8,26 @@ set base_dir=%cd%
cd /d %origdir%
echo Building Lang files
xcopy "%base_dir%/Lang" "%base_dir%/Android/assets/Lang/" /D /I /F /Y /E
xcopy "%base_dir%/Lang" "%base_dir%/Android/assets/project64_data/Lang/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo Copy config files
IF NOT EXIST "%base_dir%/Android/assets/Config/" mkdir "%base_dir%/Android/assets/Config/"
copy "%base_dir%\Config\Audio.rdb" "%base_dir%\Android\assets\Config\"
IF NOT EXIST "%base_dir%/Android/assets/project64_data/Config/" mkdir "%base_dir%/Android/assets/project64_data/Config/"
copy "%base_dir%\Config\Audio.rdb" "%base_dir%\Android\assets\project64_data\Config\"
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
copy "%base_dir%\Config\Video.rdb" "%base_dir%\Android\assets\Config\"
copy "%base_dir%\Config\Video.rdb" "%base_dir%\Android\assets\project64_data\Config\"
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
copy "%base_dir%\Config\Project64.rdb" "%base_dir%\Android\assets\Config\"
copy "%base_dir%\Config\Project64.cht" "%base_dir%\Android\assets\project64_data\Config\"
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
copy "%base_dir%\Config\Project64.rdx" "%base_dir%\Android\assets\Config\"
copy "%base_dir%\Config\Project64.rdb" "%base_dir%\Android\assets\project64_data\Config\"
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
IF NOT EXIST "%base_dir%/Android/assets/Config/Cheats/" mkdir "%base_dir%/Android/assets/Config/Cheats/"
xcopy "%base_dir%/Config/Cheats" "%base_dir%/Android/assets/Config/Cheats/" /D /I /F /Y /E
copy "%base_dir%\Config\Project64.rdx" "%base_dir%\Android\assets\project64_data\Config\"
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
IF NOT EXIST "%base_dir%/Android/assets/Config/Enhancements/" mkdir "%base_dir%/Android/assets/Config/Enhancements/"
xcopy "%base_dir%/Config/Enhancements" "%base_dir%/Android/assets/Config/Enhancements/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
IF NOT EXIST "%base_dir%/Android/app/src/main/assets/" mkdir "%base_dir%/Android/app/src/main/assets/"
IF EXIST "%base_dir%/Android/app/src/main/assets/assets.zip" del "%base_dir%\Android\app\src\main\assets\assets.zip"
powershell Compress-Archive "%base_dir%/Android/assets/*" "%base_dir%/Android/app/src/main/assets/assets.zip"
goto :end
:End

View File

@ -11,10 +11,6 @@ echo copy 3rdParty/7zip
xcopy "%base_dir%/Source/3rdParty/7zip" "%base_dir%/Android/jni/3rdParty/7zip/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy 3rdParty/asmjit
xcopy "%base_dir%/Source/3rdParty/asmjit" "%base_dir%/Android/jni/3rdParty/asmjit/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy 3rdParty/png
xcopy "%base_dir%/Source/3rdParty/png" "%base_dir%/Android/jni/3rdParty/png/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
@ -28,11 +24,11 @@ xcopy "%base_dir%/Source/Common" "%base_dir%/Android/jni/Common/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy PluginInput
xcopy "%base_dir%/Source/Android/PluginInput" "%base_dir%/Android/jni/Plugin-Input/" /D /I /F /Y /E
xcopy "%base_dir%/Source/Android/PluginInput" "%base_dir%/Android/jni/PluginInput/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy PluginRSP
xcopy "%base_dir%/Source/Android/PluginRSP" "%base_dir%/Android/jni/Plugin-Rsp/" /D /I /F /Y /E
xcopy "%base_dir%/Source/Android/PluginRSP" "%base_dir%/Android/jni/PluginRSP/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy Project64-bridge
@ -43,18 +39,10 @@ echo copy Project64-audio
xcopy "%base_dir%/Source/Project64-audio" "%base_dir%/Android/jni/Project64-audio/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy Project64-plugin-spec
xcopy "%base_dir%/Source/Project64-plugin-spec" "%base_dir%/Android/jni/Project64-plugin-spec/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy Project64-core
xcopy "%base_dir%/Source/Project64-core" "%base_dir%/Android/jni/Project64-core/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy Project64-rsp-core
xcopy "%base_dir%/Source/Project64-rsp-core" "%base_dir%/Android/jni/Project64-rsp-core/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)
echo copy Project64-video
xcopy "%base_dir%/Source/Project64-video" "%base_dir%/Android/jni/Project64-video/" /D /I /F /Y /E
IF %ERRORLEVEL% NEQ 0 (exit /B 1)

View File

@ -1 +0,0 @@
/build

View File

@ -1,49 +0,0 @@
plugins {
id 'com.android.application'
}
apply from: '../config/version.gradle'
android {
defaultConfig {
applicationId = "emu.Project64"
externalNativeBuild {
cmake {
cppFlags '-std=c++11'
}
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.material:material:1.1.0'
implementation "androidx.drawerlayout:drawerlayout:1.0.0"
implementation 'androidx.preference:preference:1.1.1'
testImplementation 'junit:junit:4.12'
implementation project(':jni:3rdParty:png')
implementation project(':jni:3rdParty:zlib')
implementation project(':jni:Common')
implementation project(':jni:Settings')
implementation project(':jni:Project64-rsp-core')
implementation project(':jni:Project64-core')
implementation project(':jni:Project64-bridge')
implementation project(':jni:Project64-video')
implementation project(':jni:Project64-audio')
implementation project(':jni:Plugin-input')
implementation project(':jni:Plugin-rsp')
}

View File

@ -1,21 +0,0 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@ -1,615 +0,0 @@
package emu.project64;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import emu.project64.R;
import emu.project64.dialog.ProgressDialog;
import emu.project64.game.GameActivity;
import emu.project64.jni.LanguageStringID;
import emu.project64.jni.NativeExports;
import emu.project64.jni.SettingsID;
import emu.project64.jni.UISettingID;
import emu.project64.settings.GameSettingsActivity;
import emu.project64.settings.SettingsActivity;
import emu.project64.util.Strings;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import androidx.appcompat.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.appcompat.view.menu.MenuBuilder;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class GalleryActivity extends AppCompatActivity
{
//Progress dialog for ROM scan
private ProgressDialog mProgress = null;
// Widgets
private RecyclerView mGridView;
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private MenuListView mDrawerList;
// Resizable gallery thumb nails
public int galleryWidth;
public int galleryMaxWidth;
public int galleryHalfSpacing;
public int galleryColumns = 2;
// Misc.
private static List<GalleryItem> mGalleryItems = new ArrayList<GalleryItem>();
private static List<GalleryItem> mRecentItems = new ArrayList<GalleryItem>();
private static GalleryActivity mActiveGalleryActivity = null;
public static final int GAME_DIR_REQUEST_CODE = 1;
static final int RC_SETTINGS = 10002;
@Override
protected void onNewIntent( Intent intent )
{
// If the activity is already running and is launched again (e.g. from a file manager app),
// the existing instance will be reused rather than a new one created. This behavior is
// specified in the manifest (launchMode = singleTask). In that situation, any activities
// above this on the stack (e.g. GameActivity, GamePrefsActivity) will be destroyed
// gracefully and onNewIntent() will be called on this instance. onCreate() will NOT be
// called again on this instance. Currently, the only info that may be passed via the intent
// is the selected game path, so we only need to refresh that aspect of the UI. This will
// happen anyhow in onResume(), so we don't really need to do much here.
super.onNewIntent( intent );
// Only remember the last intent used
setIntent( intent );
}
@Override
protected void onCreate( Bundle savedInstanceState )
{
super.onCreate( savedInstanceState );
mActiveGalleryActivity = this;
Log.d("GalleryActivity", "Starting setup.");
// Lay out the content
setContentView( R.layout.gallery_activity );
mGridView = (RecyclerView) findViewById( R.id.gridview );
mProgress = new ProgressDialog(this, getString( R.string.scanning_title ), getString( R.string.toast_pleaseWait ), false );
// Load Cached Rom List
NativeExports.LoadRomList();
refreshGrid();
// Update the grid layout
galleryMaxWidth = (int) getResources().getDimension( R.dimen.galleryImageWidth );
galleryHalfSpacing = (int) getResources().getDimension( R.dimen.galleryHalfSpacing );
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( metrics );
int width = metrics.widthPixels - galleryHalfSpacing * 2;
galleryColumns = (int) Math.ceil( width * 1.0 / ( galleryMaxWidth + galleryHalfSpacing * 2 ) );
galleryWidth = width / galleryColumns - galleryHalfSpacing * 2;
GridLayoutManager layoutManager = (GridLayoutManager) mGridView.getLayoutManager();
layoutManager.setSpanCount( galleryColumns );
Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
toolbar.setTitle( R.string.app_name );
setSupportActionBar( toolbar );
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setHomeButtonEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
}
void UpdateMenuLanguage(Menu menu)
{
Strings.SetMenuTitle(menu, R.id.menuItem_GameDir, LanguageStringID.ANDROID_GAMEDIR);
Strings.SetMenuTitle(menu, R.id.menuItem_settings, LanguageStringID.ANDROID_SETTINGS);
Strings.SetMenuTitle(menu, R.id.menuItem_discord, LanguageStringID.ANDROID_DISCORD);
Strings.SetMenuTitle(menu, R.id.menuItem_about, LanguageStringID.ANDROID_ABOUT);
}
void alert(String message)
{
AlertDialog.Builder bld = new AlertDialog.Builder(this);
bld.setMessage(message);
bld.setNeutralButton("OK", null);
Log.d("GalleryActivity", "Showing alert dialog: " + message);
bld.create().show();
}
@Override
protected void onPostCreate( Bundle savedInstanceState )
{
super.onPostCreate( savedInstanceState );
}
@Override
public void onConfigurationChanged( Configuration newConfig )
{
super.onConfigurationChanged( newConfig );
}
@SuppressLint("RestrictedApi")
@Override
public boolean onCreateOptionsMenu( Menu menu )
{
super.onCreateOptionsMenu( menu );
getMenuInflater().inflate( R.menu.gallery, menu );
UpdateMenuLanguage(menu);
if(menu instanceof MenuBuilder)
{
MenuBuilder menuBuilder = (MenuBuilder) menu;
menuBuilder.setOptionalIconsVisible(true);
}
return true;
}
@Override
public boolean onOptionsItemSelected( MenuItem item )
{
switch( item.getItemId() )
{
case R.id.menuItem_GameDir:
Intent ScanRomsIntent = new Intent(this, ScanRomsActivity.class);
startActivityForResult( ScanRomsIntent, GAME_DIR_REQUEST_CODE );
return true;
case R.id.menuItem_settings:
Intent SettingsIntent = new Intent(this, SettingsActivity.class);
startActivity( SettingsIntent );
return true;
case R.id.menuItem_discord:
Intent DiscordIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://discord.gg/Cg3zquF"));
startActivity(DiscordIntent);
return true;
case R.id.menuItem_about:
Intent AboutIntent = new Intent(this, AboutActivity.class);
startActivity( AboutIntent );
return true;
}
return super.onOptionsItemSelected( item );
}
private boolean HasAutoSave(File GameSaveDir)
{
if (!GameSaveDir.exists() || !GameSaveDir.isDirectory())
{
return false;
}
File[] fList = GameSaveDir.listFiles();
for (File file : fList)
{
String extension = "";
int i = file.getName().lastIndexOf('.');
if (i > 0)
{
extension = file.getName().substring(i+1);
}
if (extension.equals("zip"))
{
i = file.getName().lastIndexOf('.', i - 1);
if (i > 0)
{
extension = file.getName().substring(i+1);
}
}
if (extension.equals("pj.zip") ||
extension.equals("pj"))
{
return true;
}
}
return false;
}
private void StartGameMenu (boolean ShowSettings)
{
File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.toString()));
final File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.toString()));
class Item
{
public final String text;
public final int icon;
public Item(String text, Integer icon)
{
this.text = text;
this.icon = icon;
}
@Override
public String toString()
{
return text;
}
}
List<Item>menuItemLst = new ArrayList<Item>();
menuItemLst.add(new Item("Resume from Native save", R.drawable.ic_controller));
menuItemLst.add(new Item("Resume from Auto save", R.drawable.ic_play));
menuItemLst.add(new Item("Restart", R.drawable.ic_refresh));
if (ShowSettings && !NativeExports.SettingsLoadBool(SettingsID.UserInterface_BasicMode.toString()))
{
menuItemLst.add(new Item("Settings", R.drawable.ic_sliders));
}
Item[] itemsDynamic = new Item[menuItemLst .size()];
itemsDynamic = menuItemLst.toArray(itemsDynamic);
final Item[] items = itemsDynamic;
final File SaveDir = GameSaveDir;
ListAdapter adapter = new ArrayAdapter<Item>( this, android.R.layout.select_dialog_item, android.R.id.text1, items)
{
public View getView(int position, View convertView, android.view.ViewGroup parent)
{
//Use super class to create the View
View v = super.getView(position, convertView, parent);
TextView tv = (TextView)v.findViewById(android.R.id.text1);
// Get Drawable icon
Drawable d = items[position].icon != 0 ? ResourcesCompat.getDrawable(getResources(), items[position].icon, null) : null;
tv.setTextColor(Color.parseColor("#000000"));
if (d != null)
{
d.setColorFilter(Color.parseColor("#000000"), android.graphics.PorterDuff.Mode.SRC_ATOP);
}
if (!isEnabled(position))
{
tv.setTextColor(Color.parseColor("#AAAAAA"));
if (d != null)
{
d.setColorFilter(Color.parseColor("#AAAAAA"), android.graphics.PorterDuff.Mode.SRC_ATOP);
}
}
tv.setCompoundDrawablesWithIntrinsicBounds(d, null, null, null);
tv.setCompoundDrawablePadding((int) (15 * getResources().getDisplayMetrics().density + 0.5f));
return v;
}
@Override
public boolean areAllItemsEnabled()
{
return true;
}
@Override
public boolean isEnabled(int position)
{
if (position == 1 && HasAutoSave(SaveDir) == false)
{
return false;
}
if (position == 2 && SaveDir.exists() == false)
{
return false;
}
return true;
}
};
final LayoutInflater inflater = (LayoutInflater) getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.dialog_menu, null );
final Context finalContext = this;
AlertDialog.Builder GameMenu = new AlertDialog.Builder(new ContextThemeWrapper(finalContext,R.style.Theme_Project64_Dialog_Alert));
GameMenu.setView( layout);
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
DlgTitle.setText(NativeExports.SettingsLoadString(SettingsID.Rdb_GoodName.toString()));
ListView ListOptions = (ListView)layout.findViewById(R.id.list_options);
ListOptions.setAdapter(adapter);
AlertDialog dialog = GameMenu.create();
ListOptions.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
if (position == 0)
{
launchGameActivity(false);
}
else if (position == 1)
{
launchGameActivity(true);
}
else if (position == 2)
{
/*AlertDialog.Builder ResetPrompt = new AlertDialog.Builder(finalContext);
ResetPrompt
.setTitle(getText(R.string.confirmResetGame_title))
.setMessage(getText(R.string.confirmResetGame_message))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
String[]entries = SaveDir.list();
for(String s: entries)
{
File currentFile = new File(SaveDir.getPath(),s);
currentFile.delete();
}
SaveDir.delete();
launchGameActivity(false);
}
})
.setNegativeButton(android.R.string.cancel, this)
.show();*/
}
else if (position == 3)
{
Intent SettingsIntent = new Intent(finalContext, GameSettingsActivity.class);
startActivityForResult( SettingsIntent, RC_SETTINGS );
dialog.dismiss();
}
}
});
dialog.show();
}
public void onGalleryItemClick( GalleryItem item )
{
NativeExports.LoadGame(item.romFile.getAbsolutePath());
File InstantSaveDir = new File(NativeExports.SettingsLoadString(SettingsID.Directory_InstantSave.toString()));
File GameSaveDir = new File(InstantSaveDir,NativeExports.SettingsLoadString(SettingsID.Game_UniqueSaveDir.toString()));
Boolean ResumeGame = HasAutoSave(GameSaveDir);
launchGameActivity(ResumeGame);
}
public boolean onGalleryItemLongClick( GalleryItem item )
{
NativeExports.LoadGame(item.romFile.getAbsolutePath());
StartGameMenu(true);
return true;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Log.d("GalleryActivity", "onActivityResult(" + requestCode + "," + resultCode + "," + data);
// Check which request we're responding to
if (requestCode == GAME_DIR_REQUEST_CODE)
{
// Make sure the request was successful
if (resultCode == RESULT_OK && data != null)
{
Bundle extras = data.getExtras();
String searchPath = extras.getString( ScanRomsActivity.GAME_DIR_PATH );
boolean searchRecursively = extras.getBoolean( ScanRomsActivity.GAME_DIR_RECURSIVELY );
if (searchPath != null)
{
NativeExports.RefreshRomDir(searchPath, searchRecursively);
}
}
}
}
void refreshGrid( )
{
List<GalleryItem> items;
items = new ArrayList<GalleryItem>();
if (mRecentItems.size() > 0)
{
items.add( new GalleryItem( this, Strings.GetString(LanguageStringID.ANDROID_GALLERY_RECENTLYPLAYED)));
items.addAll( mRecentItems );
items.add( new GalleryItem( this, Strings.GetString(LanguageStringID.ANDROID_GALLERY_LIBRARY)));
}
Collections.sort( mGalleryItems, new GalleryItem.NameComparator() );
items.addAll( mGalleryItems );
mGridView.setAdapter( new GalleryItem.Adapter( this, items ) );
// Allow the headings to take up the entire width of the layout
final List<GalleryItem> finalItems = items;
GridLayoutManager layoutManager = new GridLayoutManager( this, galleryColumns );
layoutManager.setSpanSizeLookup( new GridLayoutManager.SpanSizeLookup()
{
@Override
public int getSpanSize( int position )
{
// Headings will take up every span (column) in the grid
if( finalItems.get( position ).isHeading )
return galleryColumns;
// Games will fit in a single column
return 1;
}
} );
mGridView.setLayoutManager( layoutManager );
}
@Override
protected void onResume()
{
super.onResume();
refreshViews();
}
@TargetApi( 11 )
private void refreshViews()
{
// Refresh the gallery
refreshGrid();
}
@Override
public boolean onKeyDown( int keyCode, KeyEvent event )
{
if( keyCode == KeyEvent.KEYCODE_MENU )
{
if( mDrawerLayout.isDrawerOpen( GravityCompat.START ) )
{
mDrawerLayout.closeDrawer( GravityCompat.START );
}
else
{
mDrawerLayout.openDrawer( GravityCompat.START );
}
return true;
}
return super.onKeyDown( keyCode, event );
}
@Override
public void onBackPressed()
{
if( mDrawerLayout.isDrawerOpen( GravityCompat.START ) )
{
mDrawerLayout.closeDrawer( GravityCompat.START );
}
else
{
moveTaskToBack(true);
}
}
// Enables or disables the "please wait" screen.
public void launchGameActivity(boolean ResumeGame)
{
if (ResumeGame)
{
NativeExports.SettingsSaveDword(SettingsID.Game_CurrentSaveState.toString(), 0);
}
NativeExports.SettingsSaveBool(SettingsID.Game_LoadSaveAtStart.toString(), ResumeGame);
Intent intent = new Intent( this, GameActivity.class );
this.startActivity( intent );
}
public static void LanguageChanged()
{
if (mActiveGalleryActivity != null)
{
mActiveGalleryActivity.finish();
mActiveGalleryActivity.startActivity( mActiveGalleryActivity.getIntent() );
}
}
public static void RomListReset ()
{
mGalleryItems = new ArrayList<GalleryItem>();
if (mActiveGalleryActivity != null && mActiveGalleryActivity.mProgress != null)
{
Handler h = new Handler(Looper.getMainLooper());
h.post(new Runnable()
{
public void run()
{
mActiveGalleryActivity.mProgress.show();
}
});
}
}
public static void RomListAddItem (String FullFileName, String FileName, String GoodName, int TextColor)
{
GalleryItem item = new GalleryItem( mActiveGalleryActivity, GoodName, FileName, FullFileName, TextColor );
mGalleryItems.add( item );
if (mActiveGalleryActivity != null && mActiveGalleryActivity.mProgress != null)
{
Handler h = new Handler(Looper.getMainLooper());
final String ProgressMessage = new String("Added " + GoodName);
h.post(new Runnable()
{
public void run()
{
mActiveGalleryActivity.mProgress.setMessage(ProgressMessage);
}
});
}
}
private static void refreshRecentRoms()
{
mRecentItems = new ArrayList<GalleryItem>();
for (int i = 0, n = NativeExports.SettingsLoadDword(UISettingID.FileRecentGameFileCount.toString()); i < n; i++)
{
String RecentFile = NativeExports.SettingsLoadStringIndex(UISettingID.FileRecentGameFileIndex.toString(), i);
if (RecentFile.length() == 0)
{
break;
}
for (int z = 0; z < mGalleryItems.size(); z++)
{
if (RecentFile.equals(mGalleryItems.get(z).romFile.getAbsolutePath()))
{
mRecentItems.add(mGalleryItems.get(z));
break;
}
}
}
}
public static void RomListLoadDone()
{
refreshRecentRoms();
if (mActiveGalleryActivity != null && mActiveGalleryActivity.mProgress != null)
{
Handler h = new Handler(Looper.getMainLooper());
h.post(new Runnable()
{
public void run()
{
mActiveGalleryActivity.refreshGrid();
mActiveGalleryActivity.mProgress.dismiss();
}
});
}
}
public static void RecentRomsUpdated()
{
refreshRecentRoms();
Handler h = new Handler(Looper.getMainLooper());
h.post(new Runnable()
{
public void run()
{
mActiveGalleryActivity.refreshGrid();
}
});
}
}

View File

@ -1,26 +0,0 @@
package emu.project64;
import android.content.Context;
import android.content.res.Resources;
public class Project64Application extends android.app.Application
{
private static Project64Application m_instance;
@Override
public void onCreate()
{
super.onCreate();
m_instance = this;
}
public static Context getAppContext()
{
return m_instance;
}
public static Resources getAppResources()
{
return m_instance.getResources();
}
}

View File

@ -1,66 +0,0 @@
package emu.project64.dialog;
import emu.project64.R;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
public class ProgressDialog
{
private final Activity mActivity;
private final TextView mTextMessage;
private AlertDialog mDialog;
@SuppressLint( "InflateParams" )
public ProgressDialog( Activity activity, CharSequence title, CharSequence message, boolean cancelable )
{
mActivity = activity;
final LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.progress_dialog, null );
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
DlgTitle.setText(title);
mTextMessage = (TextView) layout.findViewById( R.id.textMessage );
mTextMessage.setText( message );
Builder builder = new Builder( activity, R.style.Theme_Project64_Dialog_Alert );
builder.setView( layout);
builder.setCancelable( cancelable );
builder.setPositiveButton( null, null );
builder.setNegativeButton( null, null );
mDialog = builder.create();
mDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
}
public void show()
{
mDialog.show();
}
public void dismiss()
{
mDialog.dismiss();
}
public void setMessage( final CharSequence text )
{
mActivity.runOnUiThread( new Runnable()
{
@Override
public void run()
{
mTextMessage.setText( text );
}
} );
}
}

View File

@ -1,40 +0,0 @@
package emu.project64.jni;
import android.app.Activity;
import emu.project64.game.GameSurface;
public class NativeExports
{
static
{
System.loadLibrary( "Project64-bridge" );
}
public static native boolean appInit (String BaseDir );
public static native String appVersion();
public static native void StopEmulation();
public static native void StartEmulation();
public static native void CloseSystem();
public static native void SettingsSaveBool(String Type, boolean Value);
public static native void SettingsSaveDword(String Type, int Value);
public static native void SettingsSaveString(String Type, String Value);
public static native boolean SettingsLoadBool(String Type);
public static native int SettingsLoadDword(String Type);
public static native String SettingsLoadString(String Type);
public static native String SettingsLoadStringIndex(String Type, int Index);
public static native boolean IsSettingSet(String Type);
public static native void LoadGame(String FileLoc);
public static native void StartGame(Activity activity, GameSurface.GLThread thread);
public static native void LoadRomList();
public static native void RefreshRomDir(String RomDir, boolean Recursive);
public static native void ExternalEvent(int Type);
public static native byte[] GetString(int StringId);
public static native void SetSpeed(int Speed);
public static native int GetSpeed();
public static native int GetBaseSpeed();
public static native void onSurfaceCreated();
public static native void onSurfaceChanged(int width, int height);
public static native void onDrawFrame();
}

View File

@ -1,15 +0,0 @@
package emu.project64.jni;
public class NativeVideo
{
static
{
System.loadLibrary( "Project64-video" );
}
public static native void UpdateScreenRes(int ScreenWidth, int ScreenHeight);
public static native int getResolutionCount();
public static native String getResolutionName(int Index);
public static native int GetScreenResWidth(int Index);
public static native int GetScreenResHeight(int Index);
}

View File

@ -1,17 +0,0 @@
package emu.project64.jni;
import android.content.Context;
import android.view.View;
public class NativeXperiaTouchpad extends View
{
/**
* Instantiates a new native input source.
*
* @param context The context associated with the input events.
*/
public NativeXperiaTouchpad( Context context )
{
super( context );
}
}

View File

@ -1,31 +0,0 @@
package emu.project64.jni;
public enum UISettingID
{
AssertsVersion,
BuildVersion,
ScreenOrientation,
//Recent Game
FileRecentGameFileCount,
FileRecentGameFileIndex,
//Touch Screen
TouchScreenButtonScale,
TouchScreenLayout,
//Controller Config
ControllerConfigFile,
ControllerCurrentProfile,
ControllerDeadzone,
ControllerSensitivity,
//App Info
AppInfoRunCount,
;
@Override
public String toString() {
return "UISettingID." + super.toString();
}
}

View File

@ -1,19 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
import androidx.preference.Preference;
public class AdvancedFragment extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.settings_advanced;
}
@Override
protected int getTitleId()
{
return R.string.advanced_screen_title;
}
}

View File

@ -1,18 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
public class AudioFragment extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.setting_audio;
}
@Override
protected int getTitleId()
{
return R.string.audio_screen_title;
}
}

View File

@ -1,18 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
public class GameListFragment extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.setting_gamelist;
}
@Override
protected int getTitleId()
{
return R.string.game_list_title;
}
}

View File

@ -1,18 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
public class GameSettingsFragment extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.game_settings;
}
@Override
protected int getTitleId()
{
return R.string.preferences;
}
}

View File

@ -1,25 +0,0 @@
package emu.project64.settings;
import android.os.Bundle;
import emu.project64.R;
public class GamepadScreenFragment extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.setting_gamepad;
}
@Override
protected int getTitleId()
{
return R.string.gamepad_title;
}
@Override
public void onCreatePreferences(Bundle bundle, String s)
{
super.onCreatePreferences(bundle, s);
}
}

View File

@ -1,18 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
public class InputFragment extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.setting_input;
}
@Override
protected int getTitleId()
{
return R.string.input_screen_title;
}
}

View File

@ -1,139 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
import emu.project64.jni.NativeExports;
import emu.project64.jni.SettingsID;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.text.TextUtils;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.core.content.res.TypedArrayUtils;
import androidx.preference.Preference;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class ListPreference extends Preference {
private CharSequence[] mEntries;
private CharSequence[] mEntryValues;
private CharSequence[] mEntriesSubtitles;
private String mValue;
private String mTitle;
private int mValueIndex;
private boolean mValueSet;
public ListPreference(Context context, AttributeSet attrs)
{
super(context, attrs, getAttr(context, R.attr.ListPreferenceStyle, android.R.attr.preferenceStyle));
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ListPreference);
mEntries = a.getTextArray(R.styleable.ListPreference_entries);
mEntryValues = a.getTextArray(R.styleable.ListPreference_entryValues);
mTitle = String.valueOf(getTitle());
mValueIndex = 0;
a.recycle();
updateSummary();
}
@Override
protected void onClick()
{
String[] mEntriesString = new String[mEntries.length];
int i=0;
for(CharSequence ch: mEntries)
{
mEntriesString[i++] = ch.toString();
}
final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.dialog_menu, null );
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getContext(),R.style.Theme_Project64_Dialog_Alert));
TextView DlgTitle = (TextView)layout.findViewById(R.id.dlg_title);
DlgTitle.setText(mTitle);
ListView ListOptions = (ListView)layout.findViewById(R.id.list_options);
ListAdapter adapter = new ArrayAdapter<String>(getContext(), R.layout.simple_list_item_single_choice,mEntriesString);
ListOptions.setAdapter(adapter);
ListOptions.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
ListOptions.setItemChecked(mValueIndex,true);
builder.setView( layout);
builder.setPositiveButton( null, null );
builder.setNegativeButton( null, null );
AlertDialog dialog = builder.create();
ListOptions.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView parent, View view, int position, long id)
{
setValueIndex(position);
dialog.dismiss();
}
});
dialog.show();
}
private void updateSummary()
{
if (mValueIndex < 0 && mValueIndex < mEntries.length)
{
return;
}
setSummary(mEntries[mValueIndex].toString());
}
private void setValueIndex(int index)
{
String value = mEntryValues[index].toString();
final boolean changed = !TextUtils.equals(mValue, value);
if (changed || !mValueSet)
{
mValueIndex = index;
mValue = value;
mValueSet = true;
persistString(value);
if (changed)
{
notifyChanged();
}
updateSummary();
}
}
private static int getAttr(Context context, int attr, int fallbackAttr)
{
TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(attr, value, true);
if (value.resourceId != 0)
{
return attr;
}
return fallbackAttr;
}
@Override
protected void onSetInitialValue(Object defaultValue)
{
if (getSharedPreferences().contains(getKey()))
{
String Value = getPersistedString( Integer.toString(mValueIndex));
for (int i = 0, n = mEntryValues.length; i < n; i++)
{
if (mEntryValues[i].equals(Value))
{
mValueIndex = i;
updateSummary();
}
}
}
}
}

View File

@ -1,108 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.text.TextUtils;
import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference;
import android.content.DialogInterface;
public class LogLevelPreference extends Preference {
private CharSequence[] mEntries;
private CharSequence[] mEntryValues;
private CharSequence[] mEntriesSubtitles;
private String mValue;
private int mValueIndex;
private boolean mValueSet;
public LogLevelPreference(Context context, AttributeSet attrs)
{
super(context, attrs, getAttr(context, R.attr.LogLevelPreferenceStyle, android.R.attr.preferenceStyle));
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TwoLinesListPreference);
mEntriesSubtitles = a.getTextArray(R.styleable.TwoLinesListPreference_entriesSubtitles);
mEntries = context.getResources().getStringArray(R.array.trace_severity_list);
mEntryValues = context.getResources().getStringArray(R.array.trace_severity_values);
a.recycle();
updateSummary();
}
@Override
protected void onClick() {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(getTitle())
.setSingleChoiceItems(mEntries, mValueIndex, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int index) {
setValueIndex(index);
dialog.dismiss();
}
})
.setPositiveButton("Go", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int index) {
setValueIndex(index);
dialog.dismiss();
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
private void updateSummary()
{
if (mValueIndex < 0)
{
return;
}
setSummary(mEntries[mValueIndex].toString());
}
private void setValueIndex(int index)
{
String value = mEntryValues[index].toString();
final boolean changed = !TextUtils.equals(mValue, value);
if (changed || !mValueSet) {
mValueIndex = index;
mValue = value;
mValueSet = true;
persistString(value);
if (changed) {
notifyChanged();
}
updateSummary();
}
}
private static int getAttr(Context context, int attr, int fallbackAttr)
{
TypedValue value = new TypedValue();
context.getTheme().resolveAttribute(attr, value, true);
if (value.resourceId != 0)
{
return attr;
}
return fallbackAttr;
}
@Override
protected void onSetInitialValue(Object defaultValue)
{
if (getSharedPreferences().contains(getKey()))
{
String Value = getPersistedString( Integer.toString(mValueIndex));
for (int i = 0, n = mEntryValues.length; i < n; i++)
{
if (mEntryValues[i].equals(Value))
{
mValueIndex = i;
updateSummary();
}
}
}
}
}

View File

@ -1,18 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
public class LoggingAudio extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.logging_audio;
}
@Override
protected int getTitleId()
{
return R.string.logging_Audio;
}
}

View File

@ -1,18 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
public class LoggingProject64Core extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.logging_project64core;
}
@Override
protected int getTitleId()
{
return R.string.logging_project64core;
}
}

View File

@ -1,18 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
public class LoggingVideo extends BaseSettingsFragment
{
@Override
protected int getXml()
{
return R.xml.logging_video;
}
@Override
protected int getTitleId()
{
return R.string.logging_Video;
}
}

View File

@ -1,24 +0,0 @@
package emu.project64.settings;
import emu.project64.R;
import emu.project64.jni.NativeExports;
import emu.project64.jni.SettingsID;
public class SettingsFragment extends BaseSettingsFragment
{
@Override
protected int getXml()
{
if (NativeExports.SettingsLoadBool(SettingsID.UserInterface_BasicMode.toString()))
{
return R.xml.settings_basic;
}
return R.xml.settings;
}
@Override
protected int getTitleId()
{
return R.string.preferences;
}
}

View File

@ -1,230 +0,0 @@
package emu.project64.task;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import android.content.res.AssetManager;
import android.os.AsyncTask;
import android.text.TextUtils;
import android.util.Log;
public class ExtractAssetZipTask extends AsyncTask<Void, String, List<ExtractAssetZipTask.Failure>>
{
public interface ExtractAssetZipListener
{
public void onExtractAssetsProgress( String nextFileToExtract );
public void onExtractAssetsFinished( List<Failure> failures );
}
public ExtractAssetZipTask( AssetManager assetManager, String dstPath, ExtractAssetZipListener listener)
{
if (assetManager == null )
throw new IllegalArgumentException( "Asset manager cannot be null" );
if( TextUtils.isEmpty( dstPath ) )
throw new IllegalArgumentException( "Destination path cannot be null or empty" );
mAssetManager = assetManager;
mDstPath = dstPath;
mListener = listener;
}
private final AssetManager mAssetManager;
private final String mDstPath;
private final ExtractAssetZipListener mListener;
@Override
protected List<Failure> doInBackground( Void... params )
{
return extractAssets( mDstPath );
}
@Override
protected void onProgressUpdate( String... values )
{
mListener.onExtractAssetsProgress( values[0] );
}
@Override
protected void onPostExecute( List<ExtractAssetZipTask.Failure> result )
{
mListener.onExtractAssetsFinished( result );
}
public static final class Failure
{
public enum Reason
{
FILE_UNWRITABLE,
FILE_UNCLOSABLE,
ASSET_UNCLOSABLE,
ASSET_IO_EXCEPTION,
FILE_IO_EXCEPTION,
}
public final String srcPath;
public final String dstPath;
public final Reason reason;
public Failure( String srcPath, String dstPath, Reason reason )
{
this.srcPath = srcPath;
this.dstPath = dstPath;
this.reason = reason;
}
@Override
public String toString()
{
switch( reason )
{
case FILE_UNWRITABLE:
return "Failed to open file " + dstPath;
case FILE_UNCLOSABLE:
return "Failed to close file " + dstPath;
case ASSET_UNCLOSABLE:
return "Failed to close asset " + srcPath;
case ASSET_IO_EXCEPTION:
return "Failed to extract asset " + srcPath + " to file " + dstPath;
case FILE_IO_EXCEPTION:
return "Failed to add file " + srcPath + " to file " + dstPath;
default:
return "Failed using source " + srcPath + " and destination " + dstPath;
}
}
}
private List<Failure> extractAssets( String dstPath )
{
final List<Failure> failures = new ArrayList<Failure>();
// Ensure the parent directories exist
File root = new File(dstPath + "/");
if (!root.exists()) {
root.mkdirs();
}
String dstFile = dstPath + "/assets.zip";
String srcFile = "assets.zip";
// Call the progress listener before extracting
publishProgress( dstPath );
// IO objects, initialize null to eliminate lint error
OutputStream out = null;
InputStream in = null;
Boolean ExtractZip = false;
// Extract the file
try
{
out = new FileOutputStream( dstFile );
in = mAssetManager.open( srcFile);
byte[] buffer = new byte[1024];
int read;
mListener.onExtractAssetsProgress( "copying asset zip file" );
while( ( read = in.read( buffer ) ) != -1 )
{
out.write( buffer, 0, read );
}
mListener.onExtractAssetsProgress( "Finished copying assset zip" );
out.flush();
ExtractZip = true;
}
catch( FileNotFoundException e )
{
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.FILE_UNWRITABLE );
Log.e( "ExtractAssetZipTask", failure.toString() );
failures.add( failure );
}
catch( IOException e )
{
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.ASSET_IO_EXCEPTION );
Log.e( "ExtractAssetZipTask", failure.toString() );
failures.add( failure );
}
finally
{
if( out != null )
{
try
{
out.close();
}
catch( IOException e )
{
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.FILE_UNCLOSABLE );
Log.e( "ExtractAssetZipTask", failure.toString() );
failures.add( failure );
}
}
if( in != null )
{
try
{
in.close();
}
catch( IOException e )
{
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.ASSET_UNCLOSABLE );
Log.e( "ExtractAssetZipTask", failure.toString() );
failures.add( failure );
}
}
}
if (ExtractZip)
{
String zipFilePath = dstPath + "/assets.zip";
String destDir = dstPath + "/";
File dir = new File(destDir);
// create output directory if it doesn't exist
if(!dir.exists()) dir.mkdirs();
FileInputStream fis;
//buffer for read and write data to file
byte[] buffer = new byte[1024];
try {
fis = new FileInputStream(zipFilePath);
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry ze = zis.getNextEntry();
while(ze != null){
String fileName = ze.getName();
File newFile = new File(destDir + File.separator + fileName.replace("\\", "/"));
mListener.onExtractAssetsProgress( "Unzipping "+fileName );
//create directories for sub directories in zip
new File(newFile.getParent()).mkdirs();
if (ze.getSize() != 0) {
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
}
//close this ZipEntry
zis.closeEntry();
ze = zis.getNextEntry();
}
//close last ZipEntry
zis.closeEntry();
zis.close();
fis.close();
} catch (IOException e) {
Failure failure = new Failure( srcFile, dstPath, Failure.Reason.ASSET_IO_EXCEPTION );
Log.e( "ExtractAssetZipTask", failure.toString() );
failures.add( failure );
}
}
return failures;
}
}

View File

@ -1,66 +0,0 @@
package emu.project64.util;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import emu.project64.R;
public class NotifierAdapter extends BaseAdapter
{
Context con;
String[] data;
Runnable DisplayMessager;
public NotifierAdapter (Context context, Runnable DisplayMessager, String[] data)
{
this.con = context;
this.data = data;
this.DisplayMessager = DisplayMessager;
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.notifier_adapter, parent, false);
TextView text = (TextView) view.findViewById(R.id.text);
text.setText(data[position]);
Button button = (Button) view.findViewById(R.id.button);
button.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View view)
{
synchronized(DisplayMessager)
{
DisplayMessager.notify();
};
}
}
);
return view;
}
}

View File

@ -1,61 +0,0 @@
package emu.project64.util;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import emu.project64.Project64Application;
public final class Utility
{
public static boolean close(Closeable closeable)
{
if (closeable != null)
{
try
{
closeable.close();
return true;
}
catch (IOException e)
{
}
}
return false;
}
public static String readAsset(String assetName, String defaultS)
{
InputStream is = null;
BufferedReader r = null;
try
{
is = Project64Application.getAppResources().getAssets().open(assetName);
r = new BufferedReader(new InputStreamReader(is, "UTF8"));
StringBuilder sb = new StringBuilder();
String line = r.readLine();
if(line != null)
{
sb.append(line);
line = r.readLine();
while(line != null)
{
sb.append('\n');
sb.append(line);
line = r.readLine();
}
}
return sb.toString();
}
catch (IOException e)
{
return defaultS;
}
finally
{
close(is);
close(r);
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

View File

@ -1,24 +0,0 @@
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid
android:color="@android:color/white" >
</solid>
<stroke
android:width="5dp"
android:color="@color/colorPrimary" />
<padding
android:left="12dp"
android:top="12dp"
android:right="12dp"
android:bottom="12dp" >
</padding>
<corners
android:radius="15dp" >
</corners>
</shape>

View File

@ -1,28 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="14dp"
/>
<gradient
android:angle="45"
android:centerX="35%"
android:centerColor="@color/ButtonCenterColor"
android:startColor="@color/ButtonStartColor"
android:endColor="@color/ButtonEndColor"
android:type="linear"
/>
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="270dp"
android:height="60dp"
/>
<stroke
android:width="3dp"
android:color="@color/buttonBorderColor"
/>
</shape>

View File

@ -1,15 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="30dp"
android:height="30dp"
android:viewportWidth="128"
android:viewportHeight="128">
<path
android:pathData="M64,1C29.3,1 1,29.3 1,64s28.3,63 63,63s63,-28.3 63,-63S98.7,1 64,1zM64,119C33.7,119 9,94.3 9,64S33.7,9 64,9s55,24.7 55,55S94.3,119 64,119z"
android:fillColor="#000000"/>
<path
android:pathData="M60,54.5h8v40h-8z"
android:fillColor="#000000"/>
<path
android:pathData="M60,35.5h8v8h-8z"
android:fillColor="#000000"/>
</vector>

View File

@ -1,5 +0,0 @@
<vector android:height="48dp" android:viewportHeight="507.5"
android:viewportWidth="507.5" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M254.88,262.34c8.67,-12.81 14.8,-27.5 17.75,-43.23h43.55v-0.02V174.81h-43.55c-3.02,-15.83 -9.1,-30.46 -17.77,-43.25l30.69,-30.72l-31.34,-31.36l-30.74,30.72c-12.77,-8.72 -27.46,-14.8 -43.25,-17.84V38.85h-44.28v43.51c-15.79,3.09 -30.46,9.12 -43.21,17.84L61.99,69.48L30.61,100.8l30.74,30.76c-8.67,12.79 -14.78,27.4 -17.8,43.25H0v44.31h43.55c3.06,15.73 9.15,30.42 17.8,43.23l-30.74,30.74l31.39,31.32l30.69,-30.76c12.79,8.67 27.46,14.84 43.25,17.86v43.55h44.33v-43.55c15.75,-3.04 30.46,-9.19 43.25,-17.82l30.74,30.72l31.34,-31.32L254.88,262.34zM158.07,245.26c-26.66,0 -48.32,-21.68 -48.32,-48.36c0,-26.7 21.66,-48.32 48.32,-48.32c26.68,0 48.36,21.61 48.36,48.32C206.43,223.58 184.75,245.26 158.07,245.26z"/>
<path android:fillColor="#000000" android:pathData="M507.5,365.28v-33.69h-33.09c-2.24,-12.02 -6.88,-23.12 -13.52,-32.85l23.34,-23.34l-23.84,-23.84l-23.32,23.34c-9.73,-6.62 -20.92,-11.24 -32.85,-13.57v-33.11h-33.69v33.09c-12.02,2.35 -23.15,6.95 -32.83,13.57l-23.43,-23.34l-23.84,23.81l23.34,23.38c-6.62,9.73 -11.24,20.92 -13.57,32.87h-33.07v33.69h33.07c2.31,11.95 6.95,23.17 13.57,32.85l-23.34,23.34l23.84,23.81l23.34,-23.38c9.69,6.66 20.88,11.28 32.83,13.61v33.11h33.69v-33.11c11.99,-2.29 23.12,-6.95 32.83,-13.52l23.34,23.3l23.81,-23.81l-23.34,-23.34c6.66,-9.69 11.24,-20.97 13.52,-32.85L507.5,365.28L507.5,365.28zM387.3,385.19c-20.25,0 -36.76,-16.48 -36.76,-36.78c0,-20.28 16.5,-36.74 36.76,-36.74c20.3,0 36.76,16.46 36.76,36.74C424.06,368.73 407.6,385.19 387.3,385.19z"/>
</vector>

View File

@ -1,4 +0,0 @@
<vector android:height="32dp" android:viewportHeight="512.01"
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M505.76,123.59c-8.34,-8.34 -21.82,-8.34 -30.17,0L256.01,343.18L36.42,123.59c-8.34,-8.34 -21.82,-8.34 -30.17,0s-8.34,21.82 0,30.17l234.67,234.67c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25l234.67,-234.67C514.1,145.42 514.1,131.93 505.76,123.59z"/>
</vector>

View File

@ -1,4 +0,0 @@
<vector android:height="32dp" android:viewportHeight="512.01"
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M388.42,475.59L168.83,256.01L388.42,36.42c8.34,-8.34 8.34,-21.82 0,-30.17s-21.82,-8.34 -30.17,0L123.59,240.92c-8.34,8.34 -8.34,21.82 0,30.17l234.67,234.67c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25C396.76,497.41 396.76,483.93 388.42,475.59z"/>
</vector>

View File

@ -1,4 +0,0 @@
<vector android:height="32dp" android:viewportHeight="512.01"
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M388.42,240.92L153.75,6.26c-8.34,-8.34 -21.82,-8.34 -30.17,0s-8.34,21.82 0,30.17L343.17,256.01L123.59,475.59c-8.34,8.34 -8.34,21.82 0,30.17c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25l234.67,-234.67C396.76,262.75 396.76,249.26 388.42,240.92z"/>
</vector>

View File

@ -1,4 +0,0 @@
<vector android:height="32dp" android:viewportHeight="512.01"
android:viewportWidth="512.01" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M505.76,358.26L271.09,123.59c-8.34,-8.34 -21.82,-8.34 -30.17,0L6.26,358.26c-8.34,8.34 -8.34,21.82 0,30.17s21.82,8.34 30.17,0l219.58,-219.58l219.58,219.58c4.16,4.16 9.62,6.25 15.08,6.25c5.46,0 10.92,-2.09 15.08,-6.25C514.1,380.08 514.1,366.6 505.76,358.26z"/>
</vector>

View File

@ -1,6 +0,0 @@
<vector android:height="48dp" android:viewportHeight="24"
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#f9fbff"
android:pathData="M6,0.5L18,0.5A5.5,5.5 0,0 1,23.5 6L23.5,18A5.5,5.5 0,0 1,18 23.5L6,23.5A5.5,5.5 0,0 1,0.5 18L0.5,6A5.5,5.5 0,0 1,6 0.5z"
android:strokeColor="#868c8f" android:strokeWidth="1"/>
</vector>

View File

@ -1,7 +0,0 @@
<vector android:height="48dp" android:viewportHeight="24"
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#f9fbff"
android:pathData="M6,0.5L18,0.5A5.5,5.5 0,0 1,23.5 6L23.5,18A5.5,5.5 0,0 1,18 23.5L6,23.5A5.5,5.5 0,0 1,0.5 18L0.5,6A5.5,5.5 0,0 1,6 0.5z"
android:strokeColor="#868c8f" android:strokeWidth="1"/>
<path android:fillColor="#494c4e" android:pathData="M19.707,7.293a1,1 0,0 0,-1.414 0L10,15.586 6.707,12.293a1,1 0,0 0,-1.414 1.414l4,4a1,1 0,0 0,1.414 0l9,-9A1,1 0,0 0,19.707 7.293Z"/>
</vector>

View File

@ -1,51 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="587.03"
android:viewportHeight="587.03">
<path
android:pathData="M402.37,186.22c-10.97,0 -19.9,8.92 -19.9,19.9s8.92,19.9 19.9,19.9c10.97,0 19.9,-8.93 19.9,-19.9S413.35,186.22 402.37,186.22z"
android:fillColor="#000000"/>
<path
android:pathData="M360.36,67.14c-2.7,-1.5 -5.65,-2.03 -8.72,-2.03c-38.74,0 -77.5,0 -116.24,0c-1.72,0 -3.42,0.16 -5.09,0.61c-3.71,0.99 -6.73,2.96 -8.81,6.25c-1.97,3.12 -2.58,6.55 -2.04,10.16c0.75,4.99 3.4,8.62 7.94,10.83c2.52,1.23 5.21,1.63 7.98,1.63c19.38,0 38.76,0 58.14,0c19.37,0 38.73,0 58.1,0c1.65,0 3.29,-0.14 4.9,-0.54c3.5,-0.87 6.43,-2.63 8.54,-5.59c2.33,-3.27 3.09,-6.95 2.51,-10.89C366.91,72.94 364.48,69.43 360.36,67.14zM249.37,88.98c-0.35,0 -0.68,0 -1,0c-1.39,0 -2.8,-0.01 -4.19,0.01c-0.31,0.01 -0.47,-0.1 -0.63,-0.35c-2.47,-3.99 -4.94,-7.97 -7.42,-11.96c-0.08,-0.13 -0.17,-0.26 -0.25,-0.39c-0.04,0.01 -0.07,0.01 -0.1,0.02c0,2.1 0,4.2 0,6.3c0,2.11 0,4.21 0,6.35c-1.88,0 -3.71,0 -5.59,0c0,-6.08 0,-12.17 0,-18.3c0.15,0 0.29,0 0.42,0c1.59,0 3.16,0.01 4.75,-0.01c0.34,-0.01 0.53,0.09 0.72,0.39c2.44,3.98 4.89,7.94 7.34,11.91c0.08,0.14 0.17,0.26 0.34,0.38c0,-4.21 0,-8.42 0,-12.65c1.9,0 3.74,0 5.61,0C249.37,76.77 249.37,82.86 249.37,88.98zM252.59,70.65c0.92,0 1.82,0 2.73,0c0.89,0 1.79,0 2.72,0c0,1.22 0,2.42 0,3.67c-1.79,0 -3.61,0 -5.45,0C252.59,73.1 252.59,71.89 252.59,70.65zM258.06,88.95c-1.82,0 -3.61,0 -5.44,0c0,-4.03 0,-8.06 0,-12.11c1.81,0 3.61,0 5.44,0C258.06,80.9 258.06,84.91 258.06,88.95zM277.19,88.95c-1.79,0 -3.56,0 -5.4,0c0,-0.15 0,-0.3 0,-0.45c0,-2.41 0,-4.82 0,-7.23c0,-1.26 -0.76,-2.24 -1.95,-2.49c-1.27,-0.27 -2.6,0.34 -3.07,1.46c-0.14,0.32 -0.18,0.69 -0.18,1.03c-0.01,2.4 0,4.8 0.01,7.2c0,0.15 0,0.31 0,0.49c-1.84,0 -3.6,0 -5.4,0c0,-4.04 0,-8.07 0,-12.12c1.78,0 3.56,0 5.4,0c0,0.38 0,0.76 0,1.24c0.2,-0.16 0.31,-0.24 0.42,-0.33c2.52,-2.11 6.36,-1.95 8.64,0.37c1.06,1.08 1.53,2.42 1.55,3.9c0.04,2.25 0.01,4.51 0.01,6.76C277.21,88.83 277.19,88.88 277.19,88.95zM285.78,88.94c-1.84,0 -3.65,0 -5.51,0c0,-4.03 0,-8.07 0,-12.14c-1.01,0 -1.96,0 -2.99,0c0,-0.56 -0.01,-1.1 0.02,-1.63c0,-0.06 0.21,-0.15 0.34,-0.15c0.86,-0.01 1.71,-0.01 2.62,-0.01c0,-0.82 0,-1.62 0,-2.44c1.85,0 3.65,0 5.51,0c0,0.8 0,1.59 0,2.42c1,0 1.97,0 2.96,0c0,0.62 0,1.19 0,1.8c-0.99,0 -1.94,0 -2.93,0C285.78,80.86 285.78,84.88 285.78,88.94zM294.02,86.4c0.17,1.18 1.16,1.85 2.33,1.81c1.07,-0.04 1.94,-0.86 2.1,-2.01c0.07,-0.47 0.07,-0.94 0.12,-1.46c0.89,0 1.78,0 2.67,0c0.88,0 1.76,0 2.7,0c-0.07,0.2 -0.12,0.37 -0.2,0.53c-0.95,2.06 -2.6,3.34 -4.72,3.98c-3.07,0.94 -5.96,0.54 -8.51,-1.48c-1.7,-1.35 -2.59,-3.13 -2.44,-5.35c0.12,-1.71 0.91,-3.1 2.17,-4.21c1.89,-1.66 4.13,-2.3 6.62,-2.12c2.14,0.15 4.01,0.94 5.53,2.48c1.19,1.21 1.91,2.89 1.85,4.36c-3.46,0 -6.89,0 -10.42,0C293.89,84.12 293.85,85.28 294.02,86.4zM322,88.94c-1.77,0 -3.54,0 -5.37,0c-0.01,-0.15 -0.03,-0.32 -0.03,-0.48c0,-2.38 0,-4.75 0,-7.12c0,-1.25 -0.59,-2.12 -1.68,-2.49c-1.1,-0.37 -2.35,0 -3.05,0.91c-0.33,0.42 -0.47,0.9 -0.47,1.44c0.01,2.4 0.01,4.8 0.01,7.2c0,0.17 0,0.34 0,0.54c-1.81,0 -3.59,0 -5.4,0c0,-4.03 0,-8.05 0,-12.1c1.79,0 3.56,0 5.4,0c0,0.39 0,0.77 0,1.27c0.21,-0.17 0.32,-0.27 0.44,-0.37c2.66,-2.22 6.79,-1.9 8.92,0.71c0.75,0.92 1.19,1.98 1.22,3.15c0.05,2.38 0.03,4.74 0.04,7.12C322.04,88.79 322.02,88.85 322,88.94zM339.36,88.95c-1.79,0 -3.56,0 -5.37,0c-0.02,-0.2 -0.04,-0.4 -0.05,-0.67c-1.85,1.08 -3.78,1.35 -5.8,0.66c-1.32,-0.45 -2.37,-1.3 -3.17,-2.44c-1.53,-2.17 -1.51,-5.16 0.07,-7.38c0.66,-0.93 1.49,-1.66 2.52,-2.18c1.02,-0.51 2.09,-0.7 3.21,-0.62c1.14,0.07 2.15,0.52 3.2,1.09c0,-1.17 0,-2.28 0,-3.38c0,-1.11 0,-2.21 0,-3.37c1.82,0 3.59,0 5.39,0C339.36,76.77 339.36,82.85 339.36,88.95zM354.84,87.72c-1.63,1.33 -3.52,1.91 -5.78,1.92c-2.03,-0.03 -4.02,-0.68 -5.68,-2.17c-2.9,-2.62 -2.86,-6.79 0.07,-9.38c3.18,-2.79 8.4,-2.82 11.56,-0.05C358.13,80.76 358.05,85.11 354.84,87.72z"
android:fillColor="#000000"/>
<path
android:pathData="M440.3,228.14c-10.97,0 -19.9,8.92 -19.9,19.9s8.92,19.9 19.9,19.9c10.97,0 19.9,-8.92 19.9,-19.9S451.28,228.14 440.3,228.14z"
android:fillColor="#000000"/>
<path
android:pathData="M535.02,94.32V76.35c-36.94,-28.95 -120.28,-30.45 -120.28,-30.45l-4.49,-6.98C358.82,7.77 294.7,9.93 293.52,9.97C292.33,9.93 228.21,7.77 176.79,38.92l-4.49,6.99c0,0 -83.35,1.5 -120.28,30.45v17.97c0,0 -41.09,36.27 -41.09,81.52s-30.61,188.32 10.65,266.84c41.26,78.51 77.85,-61.23 81.85,-87.18c4,-25.95 17.97,-57.9 26.62,-62.55c0,0 76.52,-5.32 79.85,54.56c3.32,59.85 24.93,226.7 83.57,229.57v0.01c0.02,0 0.04,-0.01 0.05,-0.01s0.04,0.01 0.06,0.01v-0.01c58.64,-2.87 80.25,-169.72 83.57,-229.57c3.33,-59.89 79.85,-54.56 79.85,-54.56c8.65,4.66 22.63,36.6 26.62,62.55s40.59,165.7 81.85,87.17c41.26,-78.53 10.65,-221.59 10.65,-266.84C576.11,130.59 535.02,94.32 535.02,94.32zM161.05,192.8c0,4.99 -4.06,9.05 -9.05,9.05H130.1v21.89c0,4.99 -4.06,9.05 -9.05,9.05h-15.97c-4.99,0 -9.05,-4.06 -9.05,-9.05v-21.89H74.13c-4.99,0 -9.05,-4.06 -9.05,-9.05v-15.97c0,-4.99 4.06,-9.05 9.05,-9.05H96.03v-21.89c0,-4.99 4.06,-9.05 9.05,-9.05h15.97c4.99,0 9.05,4.06 9.05,9.05v21.89h21.9c4.99,0 9.05,4.06 9.05,9.05V192.8zM485.22,114.72c11.05,0 20.03,8.98 20.03,20.02c0,11.04 -8.98,20.02 -20.03,20.02c-11.04,0 -20.02,-8.98 -20.02,-20.02C465.2,123.7 474.18,114.72 485.22,114.72zM451.28,148.65c11.05,0 20.03,8.98 20.03,20.02s-8.98,20.03 -20.03,20.03c-11.04,0 -20.02,-8.99 -20.02,-20.03S440.24,148.65 451.28,148.65zM293.52,388.07c-34.65,0 -62.84,-28.19 -62.84,-62.84s28.19,-62.85 62.84,-62.85c34.65,0 62.84,28.19 62.84,62.85C356.36,359.88 328.17,388.07 293.52,388.07zM267.5,211.1c0,-14.35 11.67,-26.02 26.02,-26.02s26.02,11.67 26.02,26.02c0,14.35 -11.67,26.02 -26.02,26.02S267.5,225.45 267.5,211.1zM371.84,85.35c-2.11,7.41 -8.4,12.66 -16.54,13.75c-0.75,0.1 -1.51,0.17 -2.27,0.25c-39.66,0 -79.32,0 -118.98,0c-0.5,-0.05 -0.99,-0.11 -1.49,-0.16c-2.83,-0.28 -5.54,-1.03 -8.04,-2.4c-5.59,-3.08 -8.89,-7.79 -9.86,-14.11c-0.1,-0.69 -0.16,-1.38 -0.24,-2.08c0,-0.48 0,-0.95 0,-1.43c0.08,-0.7 0.14,-1.41 0.24,-2.11c0.72,-4.9 2.96,-8.97 6.8,-12.1c3.93,-3.21 8.52,-4.58 13.53,-4.58c39.03,-0.01 78.05,-0.01 117.07,-0.01c2.05,0 4.07,0.25 6.05,0.79C369.24,64.16 374.76,75.05 371.84,85.35zM376.36,206.11c0,-14.35 11.67,-26.02 26.02,-26.02c14.35,0 26.02,11.67 26.02,26.02c0,14.35 -11.67,26.02 -26.02,26.02C388.03,232.13 376.36,220.46 376.36,206.11zM440.3,274.05c-14.35,0 -26.02,-11.67 -26.02,-26.02s11.67,-26.02 26.02,-26.02c14.35,0 26.02,11.67 26.02,26.02S454.65,274.05 440.3,274.05zM485.22,222.65c-11.04,0 -20.02,-8.98 -20.02,-20.02s8.98,-20.02 20.02,-20.02c11.05,0 20.03,8.98 20.03,20.02S496.27,222.65 485.22,222.65zM519.16,188.71c-11.04,0 -20.02,-8.99 -20.02,-20.03s8.98,-20.02 20.02,-20.02c11.05,0 20.03,8.98 20.03,20.02S530.21,188.71 519.16,188.71z"
android:fillColor="#000000"/>
<path
android:pathData="M351.21,78.8c-0.33,-0.89 -1.05,-1.35 -2,-1.35c-0.92,0 -1.64,0.44 -1.98,1.32c-0.18,0.48 -0.29,1.02 -0.29,1.54c-0.04,1.67 -0.02,3.35 -0.01,5.02c0,0.29 0.03,0.58 0.08,0.86c0.2,1.13 1.03,1.92 2.07,1.95c1.29,0.05 2.28,-0.83 2.36,-2.19c0.06,-1.05 0.01,-2.11 0.01,-3.16c0.02,0 0.03,0 0.05,0c0,-0.79 0.04,-1.59 -0.01,-2.38C351.46,79.87 351.4,79.31 351.21,78.8z"
android:fillColor="#000000"/>
<path
android:pathData="M485.22,202.62m-13.9,0a13.9,13.9 0,1 1,27.81 0a13.9,13.9 0,1 1,-27.81 0"
android:fillColor="#000000"/>
<path
android:pathData="M519.16,168.68m-13.91,0a13.91,13.91 0,1 1,27.82 0a13.91,13.91 0,1 1,-27.82 0"
android:fillColor="#000000"/>
<path
android:pathData="M293.52,268.51c-31.27,0 -56.72,25.45 -56.72,56.73s25.45,56.72 56.72,56.72s56.72,-25.44 56.72,-56.72S324.79,268.51 293.52,268.51zM293.52,355.8c-16.85,0 -30.56,-13.71 -30.56,-30.56s13.71,-30.56 30.56,-30.56c16.85,0 30.56,13.71 30.56,30.56S310.37,355.8 293.52,355.8z"
android:fillColor="#000000"/>
<path
android:pathData="M451.28,168.68m-13.91,0a13.91,13.91 0,1 1,27.82 0a13.91,13.91 0,1 1,-27.82 0"
android:fillColor="#000000"/>
<path
android:pathData="M293.52,300.78c-13.48,0 -24.44,10.97 -24.44,24.44s10.97,24.44 24.44,24.44s24.44,-10.97 24.44,-24.44S306.99,300.78 293.52,300.78z"
android:fillColor="#000000"/>
<path
android:pathData="M485.22,134.75m-13.9,0a13.9,13.9 0,1 1,27.81 0a13.9,13.9 0,1 1,-27.81 0"
android:fillColor="#000000"/>
<path
android:pathData="M296.28,77.51c-1.09,-0.04 -2.06,0.72 -2.27,1.81c-0.09,0.46 -0.07,0.94 -0.12,1.41c-0.02,0.26 0.08,0.35 0.34,0.34c0.66,-0.01 1.32,-0.01 1.98,-0.01c0.66,0 1.32,-0.01 1.98,0.01c0.28,0.01 0.38,-0.09 0.35,-0.37c-0.04,-0.42 -0.03,-0.84 -0.09,-1.26C298.28,78.35 297.36,77.54 296.28,77.51z"
android:fillColor="#000000"/>
<path
android:pathData="M152,173.9h-28.02v-28.01c0,-1.62 -1.32,-2.93 -2.93,-2.93h-15.97c-1.62,0 -2.93,1.32 -2.93,2.93v28.01H74.13c-1.62,0 -2.93,1.32 -2.93,2.93v15.97c0,1.62 1.32,2.93 2.93,2.93h28.02v28.01c0,1.62 1.32,2.93 2.93,2.93h15.97c1.62,0 2.93,-1.32 2.93,-2.93v-28.01h28.02c1.62,0 2.93,-1.32 2.93,-2.93v-15.97C154.93,175.22 153.61,173.9 152,173.9z"
android:fillColor="#000000"/>
<path
android:pathData="M313.42,211.1c0,-10.97 -8.92,-19.9 -19.9,-19.9c-10.97,0 -19.9,8.92 -19.9,19.9s8.92,19.9 19.9,19.9C304.49,231 313.42,222.07 313.42,211.1z"
android:fillColor="#000000"/>
<path
android:pathData="M331.8,78.27c-1.21,0.02 -2.09,0.81 -2.12,2c-0.04,1.7 -0.04,3.4 0,5.1c0.03,1.18 0.91,2 2.1,2.04c1.16,0.04 2.1,-0.75 2.18,-1.94c0.06,-0.86 0.01,-1.74 0.01,-2.61l0,0c0,-0.89 0.05,-1.79 -0.01,-2.69C333.88,78.99 332.98,78.25 331.8,78.27z"
android:fillColor="#000000"/>
</vector>

View File

@ -1,36 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="30dp"
android:height="30dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:strokeWidth="1"
android:pathData="M14.55,40.17c3.53,2.67 8.86,5.46 17.45,5.46s13.92,-2.79 17.45,-5.46"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="M48,22.18c-4.31,-2.2 -8.57,-4.26 -16,-4.26S20.33,20 16,22.18"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="m27.32,18.23 l-1.87,-3.68a22.75,22.75 0,0 0,-10.9 4.36S9,27 8,42.91c5.63,6.49 14.18,6.54 14.18,6.54L25.5,45"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="m38.5,45 l3.32,4.42s8.55,-0.02 14.18,-6.51c-1,-15.9 -6.55,-24 -6.55,-24s-5,-3.92 -10.9,-4.36l-1.82,3.69"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="M21.09,34.18a3.82,4.36 0,1 0,7.64 0a3.82,4.36 0,1 0,-7.64 0z"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
<path
android:strokeWidth="1"
android:pathData="M35.27,34.18a3.82,4.36 0,1 0,7.64 0a3.82,4.36 0,1 0,-7.64 0z"
android:fillColor="#00000000"
android:strokeColor="#000000"/>
</vector>

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="30dp"
android:height="30dp"
android:viewportWidth="512"
android:viewportHeight="512">
<path
android:pathData="M426.67,213.33L426.67,128L274.71,128L220.75,85.33L42.67,85.33L42.67,426.67L103.6,426.67L406.08,426.67L415.25,426.67L480,213.33L426.67,213.33ZM85.33,338.77L85.33,128L205.92,128L259.88,170.67L384,170.67L384,213.33L124.69,213.33L85.33,338.77ZM383.63,384L115.85,384L156.02,256L422.46,256L383.63,384Z"
android:fillColor="#000000"
android:fillType="evenOdd"/>
</vector>

View File

@ -1,30 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="512"
android:viewportHeight="512">
<path
android:pathData="M173.87,296.61h-20.61v-20.61c0,-10.38 -8.45,-18.83 -18.83,-18.83H111.82c-10.38,0 -18.83,8.45 -18.83,18.83v20.61H72.38c-10.38,0 -18.83,8.45 -18.83,18.83v22.61c0,10.38 8.45,18.83 18.83,18.83H92.99v20.61c0,10.38 8.45,18.83 18.83,18.83h22.61c10.38,0 18.83,-8.45 18.83,-18.83v-20.61h20.61c10.38,0 18.83,-8.45 18.83,-18.83V315.44C192.7,305.06 184.25,296.61 173.87,296.61zM173.87,340.74h-28.68c-4.46,0 -8.07,3.61 -8.07,8.07v28.68c0,1.46 -1.23,2.69 -2.69,2.69H111.82c-1.46,0 -2.69,-1.23 -2.69,-2.69v-28.68c0,-4.46 -3.61,-8.07 -8.07,-8.07H72.38c-1.46,0 -2.69,-1.23 -2.69,-2.69V315.44c0,-1.46 1.23,-2.69 2.69,-2.69h28.68c4.46,0 8.07,-3.61 8.07,-8.07v-28.68c0,-1.46 1.23,-2.69 2.69,-2.69h22.61c1.46,0 2.69,1.23 2.69,2.69v28.68c0,4.46 3.61,8.07 8.07,8.07h28.68c1.46,0 2.69,1.23 2.69,2.69v22.61h0C176.56,339.51 175.33,340.74 173.87,340.74z"
android:fillColor="#000000"/>
<path
android:pathData="M226.95,257.17h-25.82c-4.46,0 -8.07,3.61 -8.07,8.07s3.61,8.07 8.07,8.07h25.82c4.46,0 8.07,-3.61 8.07,-8.07S231.4,257.17 226.95,257.17z"
android:fillColor="#000000"/>
<path
android:pathData="M318.95,265.24c0,-4.46 -3.61,-8.07 -8.07,-8.07h-25.82c-4.46,0 -8.07,3.61 -8.07,8.07s3.61,8.07 8.07,8.07h25.82C315.33,273.31 318.95,269.7 318.95,265.24z"
android:fillColor="#000000"/>
<path
android:pathData="M388.88,310.62c16.62,0 30.14,-13.52 30.14,-30.14c0,-16.62 -13.52,-30.14 -30.14,-30.14c-16.62,0 -30.14,13.52 -30.14,30.14C358.74,297.1 372.26,310.62 388.88,310.62zM388.88,266.48c7.72,0 14,6.28 14,14s-6.28,14 -14,14c-7.72,0 -14,-6.28 -14,-14S381.16,266.48 388.88,266.48z"
android:fillColor="#000000"/>
<path
android:pathData="M435.15,296.61c-16.62,0 -30.14,13.52 -30.14,30.14s13.52,30.14 30.14,30.14c16.62,0 30.14,-13.52 30.14,-30.14S451.76,296.61 435.15,296.61zM435.15,340.74c-7.72,0 -14,-6.28 -14,-14s6.28,-14 14,-14s14,6.28 14,14S442.86,340.74 435.15,340.74z"
android:fillColor="#000000"/>
<path
android:pathData="M393.66,208.4h-67.77v-8.07c0,-13.35 -10.86,-24.21 -24.21,-24.21h-37.61v-6.81c0,-21.56 17.54,-39.09 39.09,-39.09h54.02c30.46,0 55.23,-24.78 55.23,-55.23c0,-4.46 -3.61,-8.07 -8.07,-8.07s-8.07,3.61 -8.07,8.07c0,21.56 -17.54,39.09 -39.09,39.09h-54.02c-30.46,0 -55.23,24.78 -55.23,55.23v6.81h-37.61c-13.35,0 -24.21,10.86 -24.21,24.21v8.07h-67.76c-0,-0 -0,-0 -0.01,0C53.09,208.4 0,261.49 0,326.75C0,392 53.09,445.09 118.34,445.09c19.4,0 38.64,-4.8 55.64,-13.88c0.18,-0.1 0.36,-0.2 0.54,-0.31c20.84,-12.29 45.15,-23.63 81.48,-23.63c36.28,0 60.57,11.3 81.39,23.57c0.2,0.13 0.41,0.26 0.63,0.37c17.01,9.08 36.25,13.87 55.65,13.87c65.25,0 118.34,-53.09 118.34,-118.34S458.91,208.4 393.66,208.4zM202.25,200.34c0,-4.45 3.62,-8.07 8.07,-8.07h91.36c4.45,0 8.07,3.62 8.07,8.07v8.07H202.25V200.34zM393.66,428.95c-16.63,0 -33.13,-4.08 -47.72,-11.8c-0,-0 -0.01,-0 -0.01,-0.01C323.06,403.63 296.34,391.13 256,391.13c-40.3,0 -67,12.48 -89.85,25.97c-14.62,7.75 -31.14,11.85 -47.81,11.85c-56.35,0 -102.2,-45.85 -102.2,-102.2c0,-56.2 45.6,-101.96 101.75,-102.2c0.3,0.02 0.61,0.02 0.92,-0h274.85c56.35,0 102.2,45.85 102.2,102.2S450.01,428.95 393.66,428.95z"
android:fillColor="#000000"/>
<path
android:pathData="M388.88,342.88c-16.62,0 -30.14,13.52 -30.14,30.14c0,16.62 13.52,30.14 30.14,30.14c16.62,0 30.14,-13.52 30.14,-30.14S405.5,342.88 388.88,342.88zM388.88,387.01c-7.72,0 -14,-6.28 -14,-14s6.28,-14 14,-14s14,6.28 14,14S396.6,387.01 388.88,387.01z"
android:fillColor="#000000"/>
<path
android:pathData="M372.75,326.75c0,-16.62 -13.52,-30.14 -30.14,-30.14c-16.62,0 -30.14,13.52 -30.14,30.14c0,16.62 13.52,30.14 30.14,30.14C359.23,356.88 372.75,343.36 372.75,326.75zM342.61,340.74c-7.72,0 -14,-6.28 -14,-14s6.28,-14 14,-14s14,6.28 14,14S350.33,340.74 342.61,340.74z"
android:fillColor="#000000"/>
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="16"
android:viewportHeight="16">
<path
android:fillColor="#FF000000"
android:pathData="M11.5,0h-7C3.675,0 3,0.675 3,1.5v13C3,15.325 3.675,16 4.5,16h7c0.825,0 1.5,-0.675 1.5,-1.5v-13C13,0.675 12.325,0 11.5,0zM8,15c-0.553,0 -1,-0.447 -1,-1s0.447,-1 1,-1s1,0.447 1,1S8.553,15 8,15zM12,12H4V2h8V12z"/>
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path
android:pathData="M30,2.497h-28c-1.099,0 -2,0.901 -2,2v23.006c0,1.099 0.9,2 2,2h28c1.099,0 2,-0.901 2,-2v-23.006c0,-1.099 -0.901,-2 -2,-2zM30,27.503l-28,-0v-5.892l8.027,-7.779 8.275,8.265c0.341,0.414 0.948,0.361 1.379,0.035l3.652,-3.306 6.587,6.762c0.025,0.025 0.053,0.044 0.08,0.065v1.85zM30,22.806l-5.876,-6.013c-0.357,-0.352 -0.915,-0.387 -1.311,-0.086l-3.768,3.282 -8.28,-8.19c-0.177,-0.214 -0.432,-0.344 -0.709,-0.363 -0.275,-0.01 -0.547,0.08 -0.749,0.27l-7.309,7.112v-14.322h28v18.309zM23,12.504c1.102,0 1.995,-0.894 1.995,-1.995s-0.892,-1.995 -1.995,-1.995 -1.995,0.894 -1.995,1.995c0,1.101 0.892,1.995 1.995,1.995z"
android:fillColor="#000000"/>
</vector>

View File

@ -1,6 +0,0 @@
<vector android:height="48dp" android:viewportHeight="28"
android:viewportWidth="28" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:fillType="evenOdd"
android:pathData="M24.415,12.554L5.418,0.311C4.291,-0.296 3,-0.233 3,1.946L3,26.054C3,28.046 4.385,28.36 5.418,27.689L24.415,15.446C25.197,14.647 25.197,13.353 24.415,12.554"
android:strokeColor="#00000000" android:strokeWidth="1"/>
</vector>

View File

@ -1,4 +0,0 @@
<vector android:height="48dp" android:viewportHeight="1024"
android:viewportWidth="1024" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M784.5,230.3v-50.6a32,32 0,1 1,64 0v149.1a32,32 0,0 1,-32 32H667.5a32,32 0,1 1,0 -64h93A320,320 0,1 0,524.8 833.2a320,320 0,0 0,320 -320h64a384,384 0,0 1,-384 384,384 384,0 0,1 -384,-384 384,384 0,0 1,643.7 -282.9z"/>
</vector>

View File

@ -1,14 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="30dp"
android:height="30dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,8.25C9.929,8.25 8.25,9.929 8.25,12C8.25,14.071 9.929,15.75 12,15.75C14.071,15.75 15.75,14.071 15.75,12C15.75,9.929 14.071,8.25 12,8.25ZM9.75,12C9.75,10.757 10.757,9.75 12,9.75C13.243,9.75 14.25,10.757 14.25,12C14.25,13.243 13.243,14.25 12,14.25C10.757,14.25 9.75,13.243 9.75,12Z"
android:fillColor="#1C274C"
android:fillType="evenOdd"/>
<path
android:pathData="M11.975,1.25C11.53,1.25 11.159,1.25 10.855,1.271C10.538,1.292 10.238,1.339 9.948,1.459C9.274,1.738 8.738,2.274 8.459,2.948C8.314,3.298 8.275,3.668 8.26,4.07C8.248,4.393 8.085,4.663 7.844,4.801C7.603,4.94 7.288,4.947 7.003,4.796C6.647,4.608 6.307,4.457 5.931,4.407C5.208,4.312 4.476,4.508 3.898,4.952C3.648,5.144 3.458,5.38 3.281,5.643C3.111,5.897 2.925,6.218 2.703,6.603L2.678,6.647C2.455,7.032 2.27,7.353 2.136,7.627C1.996,7.913 1.886,8.195 1.845,8.507C1.75,9.23 1.946,9.961 2.39,10.54C2.621,10.841 2.922,11.06 3.262,11.274C3.536,11.446 3.688,11.722 3.688,12C3.688,12.278 3.536,12.554 3.262,12.726C2.922,12.94 2.621,13.159 2.39,13.46C1.946,14.038 1.75,14.77 1.845,15.493C1.886,15.804 1.996,16.087 2.136,16.373C2.27,16.647 2.455,16.968 2.678,17.353L2.703,17.397C2.925,17.782 3.111,18.103 3.281,18.357C3.458,18.62 3.648,18.856 3.898,19.048C4.476,19.492 5.208,19.688 5.931,19.593C6.307,19.543 6.647,19.392 7.003,19.204C7.288,19.053 7.603,19.06 7.844,19.199C8.085,19.337 8.248,19.607 8.26,19.93C8.275,20.332 8.314,20.702 8.459,21.052C8.738,21.726 9.274,22.262 9.948,22.541C10.238,22.661 10.538,22.708 10.855,22.729C11.159,22.75 11.53,22.75 11.975,22.75H12.025C12.47,22.75 12.841,22.75 13.145,22.729C13.462,22.708 13.762,22.661 14.052,22.541C14.726,22.262 15.262,21.726 15.541,21.052C15.686,20.702 15.725,20.332 15.74,19.93C15.752,19.607 15.915,19.337 16.156,19.198C16.397,19.06 16.712,19.053 16.997,19.204C17.353,19.392 17.693,19.543 18.069,19.592C18.792,19.688 19.524,19.492 20.102,19.048C20.352,18.856 20.542,18.62 20.719,18.357C20.889,18.103 21.075,17.782 21.297,17.397L21.322,17.353C21.545,16.968 21.73,16.647 21.864,16.373C22.004,16.087 22.114,15.804 22.155,15.493C22.25,14.77 22.054,14.038 21.61,13.46C21.379,13.159 21.078,12.94 20.738,12.726C20.464,12.554 20.312,12.278 20.312,12C20.312,11.722 20.464,11.446 20.738,11.274C21.078,11.06 21.379,10.841 21.61,10.54C22.054,9.961 22.25,9.23 22.155,8.507C22.114,8.195 22.004,7.913 21.865,7.627C21.73,7.353 21.545,7.032 21.322,6.647L21.297,6.603C21.075,6.218 20.889,5.897 20.719,5.643C20.542,5.38 20.352,5.144 20.102,4.952C19.524,4.508 18.792,4.312 18.069,4.407C17.693,4.457 17.353,4.608 16.997,4.796C16.712,4.947 16.397,4.94 16.156,4.801C15.915,4.663 15.752,4.393 15.74,4.07C15.725,3.668 15.686,3.298 15.541,2.948C15.262,2.274 14.726,1.738 14.052,1.459C13.762,1.339 13.462,1.292 13.145,1.271C12.841,1.25 12.47,1.25 12.025,1.25H11.975ZM10.522,2.845C10.599,2.813 10.716,2.784 10.957,2.767C11.204,2.75 11.524,2.75 12,2.75C12.476,2.75 12.796,2.75 13.043,2.767C13.284,2.784 13.401,2.813 13.478,2.845C13.785,2.972 14.028,3.215 14.155,3.522C14.195,3.618 14.228,3.769 14.241,4.126C14.271,4.918 14.68,5.681 15.406,6.1C16.132,6.52 16.997,6.492 17.698,6.122C18.014,5.955 18.161,5.908 18.265,5.895C18.594,5.851 18.926,5.94 19.189,6.142C19.255,6.193 19.34,6.28 19.474,6.48C19.612,6.686 19.773,6.963 20.011,7.375C20.249,7.787 20.408,8.064 20.517,8.287C20.624,8.504 20.657,8.62 20.667,8.703C20.711,9.032 20.622,9.364 20.42,9.627C20.356,9.71 20.242,9.814 19.94,10.004C19.268,10.426 18.812,11.162 18.812,12C18.812,12.838 19.268,13.574 19.94,13.996C20.242,14.186 20.356,14.29 20.42,14.373C20.622,14.636 20.711,14.968 20.667,15.297C20.656,15.38 20.623,15.496 20.517,15.713C20.408,15.936 20.249,16.212 20.011,16.625C19.772,17.037 19.612,17.314 19.474,17.52C19.339,17.72 19.255,17.807 19.189,17.858C18.926,18.059 18.594,18.149 18.265,18.105C18.161,18.092 18.014,18.045 17.698,17.878C16.997,17.507 16.132,17.48 15.406,17.899C14.68,18.319 14.271,19.082 14.241,19.874C14.228,20.231 14.195,20.382 14.155,20.478C14.028,20.785 13.785,21.028 13.478,21.155C13.401,21.187 13.284,21.216 13.043,21.233C12.796,21.25 12.476,21.25 12,21.25C11.524,21.25 11.204,21.25 10.957,21.233C10.716,21.216 10.599,21.187 10.522,21.155C10.215,21.028 9.972,20.785 9.845,20.478C9.805,20.382 9.772,20.231 9.759,19.874C9.729,19.082 9.32,18.319 8.594,17.899C7.868,17.48 7.003,17.508 6.302,17.878C5.986,18.045 5.839,18.092 5.735,18.105C5.406,18.149 5.074,18.059 4.811,17.858C4.745,17.807 4.66,17.72 4.526,17.52C4.388,17.314 4.227,17.037 3.989,16.625C3.751,16.213 3.592,15.936 3.483,15.713C3.376,15.496 3.343,15.38 3.332,15.297C3.289,14.968 3.378,14.636 3.58,14.373C3.644,14.29 3.758,14.186 4.06,13.996C4.732,13.574 5.188,12.838 5.188,12C5.188,11.162 4.732,10.426 4.06,10.004C3.758,9.814 3.644,9.71 3.58,9.627C3.378,9.364 3.289,9.031 3.333,8.703C3.343,8.62 3.377,8.504 3.483,8.287C3.592,8.064 3.751,7.787 3.989,7.375C4.227,6.963 4.388,6.686 4.526,6.48C4.661,6.28 4.745,6.193 4.811,6.142C5.074,5.94 5.406,5.851 5.735,5.895C5.839,5.908 5.986,5.955 6.302,6.122C7.003,6.492 7.868,6.52 8.594,6.1C9.32,5.681 9.729,4.918 9.759,4.126C9.772,3.769 9.805,3.618 9.845,3.522C9.972,3.215 10.215,2.972 10.522,2.845Z"
android:fillColor="#1C274C"
android:fillType="evenOdd"/>
</vector>

View File

@ -1,4 +0,0 @@
<vector android:height="48dp" android:viewportHeight="16"
android:viewportWidth="16" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:fillType="evenOdd" android:pathData="M11.5,2a1.5,1.5 0,1 0,0 3,1.5 1.5,0 0,0 0,-3zM9.05,3a2.5,2.5 0,0 1,4.9 0L16,3v1h-2.05a2.5,2.5 0,0 1,-4.9 0L0,4L0,3h9.05zM4.5,7a1.5,1.5 0,1 0,0 3,1.5 1.5,0 0,0 0,-3zM2.05,8a2.5,2.5 0,0 1,4.9 0L16,8v1L6.95,9a2.5,2.5 0,0 1,-4.9 0L0,9L0,8h2.05zM11.5,12a1.5,1.5 0,1 0,0 3,1.5 1.5,0 0,0 0,-3zM9.05,13a2.5,2.5 0,0 1,4.9 0L16,13v1h-2.05a2.5,2.5 0,0 1,-4.9 0L0,14v-1h9.05z"/>
</vector>

View File

@ -1,9 +0,0 @@
<vector android:height="48dp" android:viewportHeight="24"
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M12.035,8.521C12.426,8.131 13.067,8.127 13.388,8.576C14.088,9.558 14.5,10.759 14.5,12.057C14.5,13.354 14.088,14.555 13.388,15.537C13.067,15.987 12.426,15.983 12.035,15.592C11.645,15.202 11.659,14.573 11.941,14.098C12.296,13.5 12.5,12.802 12.5,12.057C12.5,11.311 12.296,10.613 11.941,10.016C11.659,9.541 11.645,8.912 12.035,8.521Z"/>
<path android:fillColor="#000000" android:pathData="M14.864,5.693C15.255,5.303 15.892,5.3 16.242,5.727C17.653,7.451 18.5,9.655 18.5,12.057C18.5,14.459 17.653,16.663 16.242,18.387C15.892,18.815 15.255,18.812 14.864,18.421C14.473,18.031 14.479,17.401 14.818,16.965C15.872,15.61 16.5,13.907 16.5,12.057C16.5,10.208 15.872,8.504 14.818,7.149C14.479,6.714 14.473,6.084 14.864,5.693Z"/>
<path android:fillColor="#000000" android:pathData="M17.693,2.793C18.083,2.403 18.72,2.4 19.081,2.818C21.211,5.274 22.5,8.479 22.5,11.985C22.5,15.531 21.182,18.769 19.008,21.236C18.643,21.65 18.007,21.643 17.62,21.25C17.232,20.856 17.241,20.226 17.601,19.807C19.408,17.706 20.5,14.973 20.5,11.985C20.5,9.031 19.433,6.327 17.663,4.236C17.306,3.814 17.302,3.184 17.693,2.793Z"/>
<path android:fillColor="#00000000"
android:pathData="M10,16.586V7.414C10,6.523 8.923,6.077 8.293,6.707L6.293,8.707C6.105,8.895 5.851,9 5.586,9H4C3.448,9 3,9.448 3,10V14C3,14.552 3.448,15 4,15H5.586C5.851,15 6.105,15.105 6.293,15.293L8.293,17.293C8.923,17.923 10,17.477 10,16.586Z"
android:strokeColor="#000000" android:strokeLineCap="round" android:strokeWidth="2"/>
</vector>

View File

@ -1,6 +0,0 @@
<vector android:height="48dp" android:viewportHeight="512"
android:viewportWidth="512" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#000000" android:pathData="M0,17.07V153.6h512V17.07H0zM110.93,110.93h-51.2v-51.2h51.2V110.93z"/>
<path android:fillColor="#000000" android:pathData="M0,324.27h512V187.73H0V324.27zM59.73,230.39h51.2v51.2h-51.2V230.39z"/>
<path android:fillColor="#000000" android:pathData="M0,494.93h512V358.4H0V494.93zM59.73,401.06h51.2v51.2h-51.2V401.06z"/>
</vector>

View File

@ -1,4 +0,0 @@
<vector android:height="48dp" android:viewportHeight="24"
android:viewportWidth="24" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#1C274C" android:fillType="evenOdd" android:pathData="M7.53,3.47C7.823,3.763 7.823,4.237 7.53,4.53L5.811,6.25H15C18.176,6.25 20.75,8.824 20.75,12C20.75,15.176 18.176,17.75 15,17.75H8C7.586,17.75 7.25,17.414 7.25,17C7.25,16.586 7.586,16.25 8,16.25H15C17.347,16.25 19.25,14.347 19.25,12C19.25,9.653 17.347,7.75 15,7.75H5.811L7.53,9.47C7.823,9.763 7.823,10.237 7.53,10.53C7.237,10.823 6.763,10.823 6.47,10.53L3.47,7.53C3.177,7.237 3.177,6.763 3.47,6.47L6.47,3.47C6.763,3.177 7.237,3.177 7.53,3.47Z"/>
</vector>

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/Theme.Project64.ToolBar"
/>
<com.google.android.material.tabs.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextColor="@color/TabInactive"
app:tabSelectedTextColor="@color/TabActive"
app:tabIndicatorColor="@color/TabActive"
app:tabMode="scrollable" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/about_main" />
<include layout="@layout/about_licence" />
</androidx.viewpager.widget.ViewPager>
</LinearLayout>

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/border"
>
<TextView
android:id="@+id/dlg_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:paddingBottom="16dp"
/>
<ListView
android:id="@+id/list_options"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

View File

@ -1,27 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text"
android:text=""
android:textSize="24dp"
android:paddingBottom = "20dp"
/>
<Button
style="@style/Theme.Project64.Dialog.Button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/button"
android:gravity="center"
android:text="OK"
/>
</LinearLayout>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dip"
android:paddingStart="?attr/listPreferredItemPaddingStart"
android:paddingEnd="?attr/listPreferredItemPaddingEnd"
android:paddingTop="10dip"
android:textColor="?colorAccent"
android:textStyle="bold"
android:textSize="24dp" />
</LinearLayout>

View File

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/border"
>
<TextView
android:id="@+id/dlg_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:paddingBottom="16dp"
/>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="RtlHardcoded">
<ProgressBar
android:id="@+id/circleAnimation"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:paddingLeft="16dp"
android:paddingRight="16dp" />
</LinearLayout>
</LinearLayout>

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:checkMark="@null"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:drawableLeft="?android:attr/listChoiceIndicatorSingle"
android:drawablePadding="12dip"
android:paddingLeft="4dip"
android:paddingRight="4dip" />

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menuItem_GameDir"
android:icon="@drawable/ic_folder"
app:showAsAction="ifRoom|collapseActionView"
android:title="Game Dir" />
<item
android:id="@+id/menuItem_settings"
android:icon="@drawable/ic_settings"
android:title="Settings" />
<item
android:id="@+id/menuItem_discord"
android:icon="@drawable/ic_discord"
android:title="Discord" />
<item
android:id="@+id/menuItem_about"
android:icon="@drawable/ic_about"
android:title="About" />
</menu>

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<item android:id="@+id/menuItem_SaveState" android:title="Save State" />
<item android:id="@+id/menuItem_LoadState" android:title="Load State" />
<item android:id="@+id/menuItem_CurrentSaveState" android:title="Current Save State">
<menu>
<group android:checkableBehavior="single">
<item android:id="@+id/menuItem_CurrentSaveAuto" android:title="Current Save Auto" />
<item android:id="@+id/menuItem_CurrentSave1" android:title="Current Save 1" />
<item android:id="@+id/menuItem_CurrentSave2" android:title="Current Save 2" />
<item android:id="@+id/menuItem_CurrentSave3" android:title="Current Save 3" />
<item android:id="@+id/menuItem_CurrentSave4" android:title="Current Save 4" />
<item android:id="@+id/menuItem_CurrentSave5" android:title="Current Save 5" />
<item android:id="@+id/menuItem_CurrentSave6" android:title="Current Save 6" />
<item android:id="@+id/menuItem_CurrentSave7" android:title="Current Save 7" />
<item android:id="@+id/menuItem_CurrentSave8" android:title="Current Save 8" />
<item android:id="@+id/menuItem_CurrentSave9" android:title="Current Save 9" />
<item android:id="@+id/menuItem_CurrentSave10" android:title="Current Save 10" />
</group>
</menu>
</item>
<item android:id="@+id/menuItem_GameSpeed" android:title="Game Speed" />
<item android:id="@+id/menuItem_settings" android:title="Settings" />
<item android:id="@+id/menuItem_DebuggingMenu" android:title="Debugging Menu">
<menu>
<item android:id="@+id/menuItem_ResetFunctionTimes" android:title="Reset Function Times" />
<item android:id="@+id/menuItem_DumpFunctionTimes" android:title="Dump Function Times" />
</menu>
</item>
<item android:id="@+id/menuItem_pause" android:title="pause" />
<item android:id="@+id/menuItem_resume" android:title="resume" />
<item android:id="@+id/menuItem_HardReset" android:title="HardReset" />
<item android:id="@+id/menuItem_EndEmulation" android:title="EndEmulation" />
</menu>

View File

@ -1,7 +0,0 @@
<resources>
<style name="Theme.Project64.Base" parent="Theme.Project64.Base.7">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
</style>
</resources>

View File

@ -1,9 +0,0 @@
<resources>
<style name="Theme.Project64.Base" parent="Theme.Project64.Base.7">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:navigationBarColor">@color/white</item>
<item name="android:windowLightNavigationBar">true</item>
</style>
</resources>

View File

@ -1,121 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="LogLevelPreferenceStyle" format="reference" />
<attr name="ListPreferenceStyle" format="reference" />
<attr name="toolbar_popup_style" format="reference" />
<attr name="background_actionbar" format="reference|color" />
<attr name="background_gallerymenu" format="reference|color" />
<attr name="font_actionbar" format="reference|color" />
<attr name="font_actionbar_selected" format="reference|color" />
<attr name="textMenuColor" format="reference|color" />
<declare-styleable name="SeekBarPreference">
<attr name="minimumValue" format="integer" />
<attr name="maximumValue" format="integer" />
<attr name="stepSize" format="integer" />
<attr name="units" format="string" />
</declare-styleable>
<declare-styleable name="TwoLinesListPreference">
<attr name="entriesSubtitles" format="string"/>
</declare-styleable>
<declare-styleable name="ListPreference">
<attr name="entries" format="string"/>
<attr name="entryValues" format="string"/>
</declare-styleable>
<attr name="background_default" format="reference|color" />
<attr name="header_background" format="reference|color" />
<attr name="bottom_navigation_background" format="reference|color" />
<attr name="audio_header_background" format="reference|color" />
<attr name="audio_header_divider" format="color" />
<attr name="audio_menu_icon" format="color" />
<attr name="audio_list_background" format="reference|color" />
<attr name="bottom_sheet_background" format="reference|color" />
<attr name="bottom_sheet_radius" format="dimension" />
<attr name="bottom_navigation_color" format="reference|color" />
<attr name="background_default_darker" format="reference|color" />
<attr name="background_audio_tips" format="reference|color" />
<attr name="font_default" format="reference|color" />
<attr name="font_audio_light" format="reference|color" />
<attr name="font_light" format="reference|color" />
<attr name="audio_browser_separator" format="reference|color" />
<attr name="list_subtitle" format="reference|color" />
<attr name="list_title" format="reference|color" />
<attr name="audio_player_background_tint" format="reference|color" />
<attr name="progress_background" format="reference|color" />
<attr name="ariane_text_color" format="reference|color"/>
<attr name="ariane_text_size" format="dimension" />
<attr name="card_background" format="color"/>
<attr name="empty_button" format="reference" />
<attr name="default_separator" format="color" />
<attr name="card_border" format="color" />
<attr name="rounded_corners_bottom_default_darker" format="reference" />
<attr name="donate_card" format="color" />
<attr name="donate_item_background" format="reference" />
<attr name="empty_foreground" format="color" />
<attr name="empty_background" format="color" />
<attr name="disabled_overlay_color" format="color" />
<attr name="video_card_background" format="reference"/>
<attr name="video_list_background" format="reference"/>
<attr name="audio_chip_background" format="color" />
<attr name="audio_chip_text_color" format="color" />
<attr name="audio_seek_bar" format="reference" />
<attr name="mini_visualizer_color" format="color" />
<attr name="audio_chips_color" format="color" />
<attr name="audio_chips_text_color" format="color" />
<attr name="bookmark_background" format="color" />
<attr name="bottom_navigation_focus" format="color" />
<attr name="primary_focus" format="color" />
<attr name="scan_background" format="reference" />
<attr name="fast_scroller_bubble" format="reference" />
<attr name="fast_scroller_handle" format="reference" />
<!--Main Icons-->
<attr name="ic_playlist" format="reference" />
<attr name="ic_playlist_on" format="reference" />
<attr name="ic_menu_search" format="reference" />
<attr name="ic_save" format="reference" />
<attr name="gridview_progressbar" format="reference" />
<attr name="progress_mini_player" format="reference" />
<!--Advance Options Icons-->
<attr name="adv_options_item_background" format="reference" />
<attr name="ic_speed_normal_style" format="reference" />
<attr name="ic_sleep_normal_style" format="reference" />
<attr name="ic_jumpto_normal_style" format="reference" />
<attr name="ic_chapter_normal_style" format="reference" />
<attr name="ic_bookmark_normal_style" format="reference" />
<attr name="ic_equalizer_normal_style" format="reference" />
<attr name="ic_playasaudio_off" format="reference" />
<attr name="ic_playasaudio_on" format="reference" />
<attr name="ic_popup_dim" format="reference" />
<attr name="ic_passthrough" format="reference" />
<attr name="ic_abrepeat" format="reference" />
<attr name="ic_abrepeat_reset" format="reference" />
<attr name="ic_video_stats" format="reference" />
<attr name="ic_lock_player" format="reference" />
<attr name="player_icon_color" format="reference" />
<attr name="dialog_circle_background" format="reference"/>
<attr name="advanced_options_bg" format="reference"/>
<declare-styleable name="MiniVisualizer">
<attr name="bar_color" format="reference"/>
</declare-styleable>
<declare-styleable name="EmptyLoadingStateView">
<attr name="empty_text" format="reference|string" />
<attr name="show_no_media" format="boolean" />
<attr name="compact_mode" format="boolean" />
</declare-styleable>
<declare-styleable name="TitleListView">
<attr name="title" format="reference|string" />
<attr name="show_button" format="boolean" />
<attr name="button_icon" format="reference" />
</declare-styleable>
<declare-styleable name="HalfCircleView">
<attr name="is_left" format="boolean"/>
</declare-styleable>
<attr name="marginTopContent" format="dimension" />
</resources>

View File

@ -1,140 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.Project64" parent="@android:style/Theme">
</style>
<style name="Theme.Project64.Base" parent="Theme.Project64.Base.7" />
<style name="Theme.Project64.Base.7" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackground">@android:color/white</item>
<item name="android:textColorPrimary">@color/TextColor</item>
<item name="android:textColor">@color/TextColor</item>
</style>
<style name="Theme.Project64.Apearance" parent="Theme.Project64.Base">
</style>
<style name="Theme.Project64.ToolBar" parent="ThemeOverlay.MaterialComponents.Toolbar.Surface">
<item name="colorControlNormal">@color/grey700</item>
<item name="android:textColorPrimary">@color/grey700</item>
<item name="android:textColor">@color/grey700</item>
<item name="android:layout_marginTop">4dp</item>
<item name="android:layout_marginBottom">4dp</item>
</style>
<style name="Theme.Project64.ToolBar.TitleText" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
<item name="android:textSize">26sp</item>
</style>
<style name="Theme.Project64.About" parent="Theme.Project64.Base">
<item name="colorControlNormal">@color/grey700</item>
<item name="android:textColorPrimary">@color/grey700</item>
<item name="android:textColor">@color/grey700</item>
</style>
<style name="Theme.Project64.Dialog">
</style>
<style name="Theme.Project64.GameActivity" parent="Theme.Project64.Base">
<item name="android:windowBackground">@android:color/black</item>
<item name="android:colorBackground">@android:color/black</item>
</style>
<style name="Theme.Project64.Gallery" parent="Theme.Project64.Base">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackground">@android:color/white</item>
</style>
<style name="Theme.Project64.PreferenceCategory" parent="Preference.Material">
<item name="iconSpaceReserved">false</item>
<item name="android:layout">@layout/preference_category</item>
<item name="android:shouldDisableView">false</item>
<item name="android:selectable">false</item>
</style>
<style name="Theme.Project64.PreferenceCheckBox" parent="Preference.CheckBoxPreference.Material">
<item name="iconSpaceReserved">false</item>
</style>
<style name="Theme.Project64.ListPreference" parent="Preference.Material">
<item name="iconSpaceReserved">false</item>
</style>
<style name="Theme.Project64.PreferenceLogLevel" parent="Preference.Material">
<item name="iconSpaceReserved">false</item>
</style>
<style name="Theme.Project64.PreferenceList" parent="Preference.Material">
<item name="iconSpaceReserved">false</item>
</style>
<style name="Theme.Project64.PreferenceNoIcon" parent="Preference.Material">
<item name="iconSpaceReserved">false</item>
</style>
<style name="Theme.Project64.Settings" parent="Theme.Project64.Base">
<item name="android:textColor">@color/SettingsPrimary</item>
<item name="android:textColorPrimary">@color/SettingsPrimary</item>
<item name="android:textColorSecondary">@color/SettingsSecondary</item>
<item name="preferenceCategoryStyle">@style/Theme.Project64.PreferenceCategory</item>
<item name="checkBoxPreferenceStyle">@style/Theme.Project64.PreferenceCheckBox</item>
<item name="LogLevelPreferenceStyle">@style/Theme.Project64.PreferenceLogLevel</item>
<item name="ListPreferenceStyle">@style/Theme.Project64.PreferenceNoIcon</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="android:textSize">18sp</item>
</style>
<style name="Theme.Project64.Splash" parent="Theme.Project64.Base">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackground">@android:color/white</item>
<item name="android:textColor">@color/TextColor</item>
</style>
<style name="Theme.Project64.Dialog.Title">
<item name="android:background">@color/white</item>
<item name="android:textColor">@color/grey700</item>
<item name="android:textSize">30sp</item>
</style>
<style name="Theme.Project64.Dialog.Button">
<item name="android:textColor">@color/ButtonTextColor</item>
<item name="android:textSize">24sp</item>
<item name="android:clickable">true</item>
<item name="android:layout_width">270dp</item>
<item name="android:layout_height">60dp</item>
<item name="android:background">@drawable/button_shape</item>
<item name="android:shadowColor">#A8A8A8</item>
<item name="android:shadowDx">0</item>
<item name="android:shadowDy">0</item>
<item name="android:shadowRadius">5</item>
</style>
<style name="Theme.Project64.Dialog.Alert" parent="Base.Theme.AppCompat.Dialog.Alert">
<item name="android:background">@android:color/transparent</item>
<item name="android:windowTitleStyle">@style/Theme.Project64.Dialog.Title</item>
<item name="android:dividerHorizontal">@null</item>
<item name="android:dividerVertical">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:padding">0dp</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<style name="btnMappable" parent="@android:style/Widget.Button">
<item name="android:layout_width">@dimen/inputMapPreferenceButtonSize</item>
<item name="android:layout_height">@dimen/inputMapPreferenceButtonSize</item>
<item name="android:background">@drawable/button_gray</item>
<item name="android:focusable">false</item>
<item name="android:focusableInTouchMode">false</item>
<item name="android:textColor">@android:color/primary_text_dark_nodisable</item>
</style>
<style name="btnMappableNoText" parent="@style/btnMappable">
<item name="android:textColor">@android:color/transparent</item>
</style>
</resources>

View File

@ -1,114 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceMD5"
android:title="@string/TraceMD5" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceThread"
android:title="@string/TraceThread" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TracePath"
android:title="@string/TracePath" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceSettings"
android:title="@string/TraceSettings" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceUnknown"
android:title="@string/TraceUnknown" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceAppInit"
android:title="@string/TraceAppInit" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceAppCleanup"
android:title="@string/TraceAppCleanup" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceN64System"
android:title="@string/TraceN64System" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TracePlugins"
android:title="@string/TracePlugins" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceGFXPlugin"
android:title="@string/TraceGFXPlugin" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceAudioPlugin"
android:title="@string/TraceAudioPlugin" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceControllerPlugin"
android:title="@string/TraceControllerPlugin" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceRSPPlugin"
android:title="@string/TraceRSPPlugin" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceRSP"
android:title="@string/TraceRSP" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceAudio"
android:title="@string/TraceAudio" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceRegisterCache"
android:title="@string/TraceRegisterCache" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceRecompiler"
android:title="@string/TraceRecompiler" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceTLB"
android:title="@string/TraceTLB" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceProtectedMEM"
android:title="@string/TraceProtectedMem" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceUserInterface"
android:title="@string/TraceUserInterface" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceRomList"
android:title="@string/TraceRomList" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceExceptionHandler"
android:title="@string/TraceExceptionHandler" />
</PreferenceScreen>

View File

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoMD5"
android:title="@string/TraceVideoMD5" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoThread"
android:title="@string/TraceVideoThread" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoPath"
android:title="@string/TraceVideoPath" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoSettings"
android:title="@string/TraceVideoSettings" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoUnknown"
android:title="@string/TraceVideoUnknown" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoGlide64"
android:title="@string/TraceVideoGlide64" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoInterface"
android:title="@string/TraceVideoInterface" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoResolution"
android:title="@string/TraceVideoResolution" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoGlitch"
android:title="@string/TraceVideoGlitch" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceTraceVideoRDP"
android:title="@string/TraceVideoRDP" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoTLUT"
android:title="@string/TraceVideoTLUT" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoPNG"
android:title="@string/TraceVideoPNG" />
<emu.project64.settings.ListPreference
app:entries="@array/trace_severity_list"
app:entryValues="@array/trace_severity_values"
android:key="Debugger_TraceVideoOGLWrapper"
android:title="@string/TraceVideoOGLWrapper" />
</PreferenceScreen>

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:title="@string/preferences">
<Preference
style="@style/Theme.Project64.PreferenceNoIcon"
app:title="@string/AudioPlugin"
app:key="logging_audio" />
<Preference
app:key="settings_touch_screen"
app:title="@string/touch_screen_title"
app:summary="@string/touch_screen_summary"
app:icon="@drawable/ic_phone"
/>
<Preference
app:summary="@string/gamepad_summary"
app:title="@string/gamepad_title"
app:key="settings_gamepad_screen"
app:icon="@drawable/ic_gamepad"
/>
</androidx.preference.PreferenceScreen>

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto" app:title="@string/preferences">
<PreferenceCategory app:title="@string/Hardware">
<Preference
app:key="settings_input"
app:title="@string/input_screen_title"
app:summary="@string/input_screen_summary"
app:icon="@drawable/ic_controller"
/>
<Preference
app:key="settings_video"
app:title="@string/video_screen_title"
app:summary="@string/video_screen_summary"
app:icon="@drawable/ic_picture"
/>
<Preference
app:key="settings_audio"
app:title="@string/audio_screen_title"
app:summary="@string/audio_screen_summary"
app:icon="@drawable/ic_speaker"
/>
<Preference
app:key="settings_game_list"
app:title="@string/game_list_title"
app:summary="@string/game_list_summary"
app:icon="@drawable/ic_storage"
/>
</PreferenceCategory>
<PreferenceCategory app:title="@string/Other">
<Preference
app:key="settings_advanced"
app:title="@string/advanced_screen_title"
app:summary="@string/advanced_screen_summary"
app:icon="@drawable/ic_advanced"
/>
<Preference
app:key="settings_reset"
app:title="@string/reset_title"
app:summary="@string/reset_summary"
app:icon="@drawable/ic_undo"
/>
</PreferenceCategory>
</androidx.preference.PreferenceScreen>

View File

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Before

Width:  |  Height:  |  Size: 319 B

After

Width:  |  Height:  |  Size: 319 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 322 B

After

Width:  |  Height:  |  Size: 322 B

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 311 B

Some files were not shown because too many files have changed in this diff Show More