This commit is contained in:
Stefanos Kornilios Mitsis Poiitidis 2014-03-13 21:49:12 +02:00
commit e6ac0e4918
312 changed files with 6059 additions and 9143 deletions

26
.gitignore vendored
View File

@ -10,3 +10,29 @@ newdc/android/libnewdc/bin/libnewdc.jar
newdc/android/libnewdc/bin/classes/com/example/newdc/JNIdc.class
shell/android/assets/build
shell/android/tools
# iOS/Xcode general stuff
.DS_Store
*/build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
*.hmap
emulator.xccheckout
reicast.xccheckout
build/*
*.so
*Karen_angelXwind*
local.properties
ant.properties

View File

@ -1,8 +1,8 @@
reicast
===========
reicast is a sega dreamcast emulator
reicast is a multi-platform Sega Dreamcast emulator.
This is developer oriented resource, if you just want bins head over to http://reicast.com
This is a developer-oriented resource, if you just want bins head over to http://reicast.com/
Caution
-------
@ -16,7 +16,7 @@ If you are interested into further porting/adapting/whatever, *please* don't for
Let's try to keep everything under a single project :)
To build for android
Building for Android
--------------------
Tools required:
* Latest Android SDK
@ -31,31 +31,50 @@ Tools required:
From project root directory:
```
export ANDROID_NDK=\ <-Type the full path to your NDK here
export ANDROID_NDK=/ # Type the full path to your NDK here
cd shell\android
cd shell/android/
android update project -p . --target "android-19"
ant debug
```
Building for iOS
----------------
Tools required:
* Latest Xcode
- https://developer.apple.com/xcode/downloads/
* An iOS device (reicast will not compile for the iOS Simulator)
* iOS 5.x ~ 7.x
* iOSOpenDev if developing without an official Apple certificate
- http://iosopendev.com/download/
From project root directory:
```
cd shell/ios/
xcodebuild -configuration Release
```
Translations
------------
New and updated translations are always appreciated!
All we ask is that you not use “regional” phrases that may not be generally understood.
Translations can be submitted as a pull request or at http://reicast.loungekatt.com/translate
Translations can be submitted as a pull request
Beta versions
-------------
Compiled test versions are available at reicast.loungekatt.com
Automated Git builds can be found at http://reicast.angelxwind.net/ for iOS and Android.
Donations and stuff
-------------------
Well, glad you liked the project so far!
We're currently short on hardware
We're currently short on hardware.
If you would like to donate some devices, get in touch at team@reicast.com. GLES3 capable stuff, some mainstream hardware and rarities would be extremely appreciated.
Keep in mind we're located in Greece for the most part
@ -67,32 +86,39 @@ This has been tested/developed on
* Some Chinese tablet
* OUYA
* Various development boards
* gcw zero
* GCW Zero
We had to buy all of these, except the gcw zero and a beaglebone which were donated (thanks! You rock!)
We had to buy all of these, except the GCW Zero and a BeagleBone which were donated (Thanks! You rock!)
Apart from that, we don't accept monetary donations right now.
We also don't plan to be releasing a premium version at any store.
Most of the project has been developed by drk||Raziel (aka, skmp, drk, Raz, etc) but it has been based on the
works of multiple people. It would be extremely unfair to charge for it and get all the credit :)
We're planning for an indiegogo campaign later on to help with sustained development and running costs, so follow @reicastdc on twitter for updates
Other Testing
-------------
These devices are tested by contributors regularly
These devices are tested by Karen/angelXwind:
* Apple iPhone 4 GSM Rev0 (N90AP)
* Apple iPhone 4 CDMA (N92AP)
* Apple iPod touch 4 (N81AP)
* Apple iPod touch 3G (N18AP)
* Apple iPhone 3GS (N88AP)
* Sony Xperia X10a (es209ra)
* Amazon Kindle Fire HD 7 (tate-pvt-08)
These devices are tested by contributors regularly:
* Nvidia Shield
* Nexus 5 / 7
* Xperia Play
Team
----
You can check the currently active committers on [the pretty graphs page](https://github.com/reicast/reicast-emulator/graphs/contributors)
Chat on freenode #reicast.
Our IRC channel is [#reicast @ chat.freenode.net](irc://chat.freenode.net/reicast).
The original reicast team consisted of drk||Raziel (mostly just writing code), PsyMan (debugging/testing and everything else) and a little bit of gb_away
@ -101,6 +127,5 @@ Special thanks
--------------
In previous iterations a lot of people have worked on this, notably David Miller (aka, ZeZu), the nullDC team, friends from #pcsx2 and all over the world :)
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/reicast/reicast-emulator/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

View File

@ -1,4 +1,4 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.source=1.5
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.source=1.6

View File

@ -1 +1 @@
382f2e5c19c85627f23bdc8e6cc2c59c97262bc3
6097b6f5b009454b5c041f89f429f96aa1e795f6

Binary file not shown.

View File

@ -36,35 +36,4 @@
android:gravity="center"
android:text="@string/app_site" />
<SlidingDrawer
android:id="@+id/slidingGithub"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:content="@+id/changelist"
android:handle="@+id/handle"
android:topOffset="40dp" >
<Button
android:id="@+id/handle"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/ic_github" >
</Button>
<RelativeLayout
android:id="@+id/changelist"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#b5b5b5"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector" />
</RelativeLayout>
</SlidingDrawer>
</LinearLayout>

View File

@ -1,68 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/change"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:orientation="horizontal"
android:padding="5dip" >
<!-- ListRow Left Thumbnail image -->
<LinearLayout
android:id="@+id/thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginRight="5dip"
android:background="@drawable/image_bg"
android:padding="3dip" >
<ImageView
android:id="@+id/avatar"
android:layout_width="60dip"
android:layout_height="60dip"
android:gravity="center"
android:src="@drawable/ic_github" />
</LinearLayout>
<!-- Main Commit Content -->
<TextView
android:id="@+id/committer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dip"
android:layout_toRightOf="@+id/thumbnail"
android:text="GitHub Committer"
android:textColor="#040404"
android:textSize="14sp"
android:textStyle="bold"
android:typeface="sans" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/committer"
android:layout_marginTop="2dip"
android:layout_toRightOf="@+id/thumbnail"
android:text="GitHub Commit Message"
android:textColor="#343434"
android:textSize="12sp" />
<!-- Right Date -->
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@id/thumbnail"
android:layout_marginRight="5dip"
android:gravity="right"
android:text="January 25, 2012"
android:textColor="#10bcc9"
android:textSize="12sp"
android:textStyle="bold" />
</RelativeLayout>

View File

@ -1,32 +0,0 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#50FFFFFF"
android:orientation="horizontal"
android:padding="5dp"
android:alpha="0.5">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
android:maxHeight="80dip"
android:maxWidth="80dip" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/image"
android:layout_marginLeft="5dip"
android:includeFontPadding="false"
android:lineSpacingMultiplier="1.0"
android:textColor="#000000"
android:textSize="18dip"
android:typeface="sans" />
</RelativeLayout>

View File

@ -1,15 +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="fill_parent"
android:layout_gravity="center"
android:orientation="vertical" >
<WebView
android:id="@+id/webframe"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none" />
</LinearLayout>

View File

@ -1,73 +1,97 @@
<resources>
<string name="menu_settings">セッティング</string>
<string name="system_path">システムパス (とのデータフォルダーの場所 dc_boot.bin/dc_flash.bin)</string>
<string name="menu_settings">設定</string>
<string name="system_path">システムパスdc_boot.bindc_flash.binの場所</string>
<string name="browser_path">デフォルトのシステムパス</string>
<string name="games_path">ストレージパス (の場所 .gdi .cdi or .cdh イメージ)</string>
<string name="games_path">ストレージパス*.gdi、*.cdi、または*.cdhイメージの場所</string>
<string name="game_path">デフォルトゲーム·ストレージ</string>
<string name="config_home">ホームディレクトリを設定してください。</string>
<string name="config_game">ゲームディレクトリを設定してください。</string>
<string name="unsupported">カーネルのバージョンはサポートされていません!</string>
<string name="boot_bios">ブートドリームキャストビオス</string>
<string name="missing_bios">BIOSが不足している。ドリームキャストBIOSが動作するように、このエミュレータに必要です。 BIOSファイル内に配置します %1$s/data/dc_boot.bin</string>
<string name="missing_flash">行方不明に点滅します。ドリームキャストのFlashが動作するためにこのエミュレータに必要です。 Flashファイル内に配置します %1$s/data/dc_flash.bin</string>
<string name="require_bios">あなたは、BIOSを提供する必要が</string>
<string name="boot_bios">ドリームキャストBIOSをスタート</string>
<string name="missing_bios">ドリームキャストBIOSが不足している。ドリームキャストBIOSが動作するためreicastために必要です。ここでBIOSファイルを入れてください%1$s/data/dc_boot.bin</string>
<string name="missing_flash">ドリームキャストFlashが不足している。ドリームキャストFlashが動作するためreicastために必要です。ここでFlashファイルを入れてください%1$s/data/dc_flash.bin</string>
<string name="require_bios">BIOSファイルを提供する必要があります。</string>
<string name="data_folder">データフォルダが想定されます。</string>
<string name="git_broken">GitHub Nativeは使用できません</string>
<string name="folder_bios">BOOT BIOSを</string>
<string name="folder_select">現在のフォルダを選択</string>
<string name="folder_bios">BIOSをスタートする</string>
<string name="folder_select">フォルダを選択</string>
<string name="select_dynarec">Dynarecオプション</string>
<string name="optimization_opts">最適化とデバッグの設定</string>
<string name="experimental_opts">実験的</string>
<string name="select_native">ネイティブインタフェースを使用</string>
<string name="select_dynarec">Dynarecの設定</string>
<string name="select_unstable">不安定な最適化</string>
<string name="select_region">DC地域</string>
<string name="select_limitfps">限界FPS</string>
<string name="select_mipmaps">ミップマップを使用してくださいSGX540フィックス</string>
<string name="select_broadcast">ブロードキャスト</string>
<string name="select_limitfps">FPSを制限</string>
<string name="select_mipmaps">ミップマップを使用SGX540のフィックス</string>
<string name="select_stretch">ワイドスクリーンモード</string>
<string name="set_frameskip">フレーム船舶の価値</string>
<string name="select_render">PVRレンダリング</string>
<string name="set_frameskip">フレームスキップ</string>
<string name="select_render">PVRレンダリング現在役に立たない</string>
<string name="select_fps">FPSを表示</string>
<string name="select_software">ソフトウェアレンダリング</string>
<string name="select_sound">サウンドを無効に</string>
<string name="select_depth">レンダラの深度</string>
<string name="select_force_gpu">v6 GPU設定を有効に</string>
<string name="default_disk">デフォルトディスク</string>
<string name="games_listing">利用可能なドリームキャストのゲーム</string>
<string name="games_listing">ゲームリスト</string>
<string name="customize_touch_controls">タッチコントロールをカスタマイズする</string>
<string name="launch_editor">エディタを起動します</string>
<string name="touch_vibration">振動をタッチ</string>
<string name="controller_a">コントローラ A</string>
<string name="controller_b">コントローラ B</string>
<string name="controller_c">コントローラ C</string>
<string name="controller_d">コントローラ D</string>
<string name="controller_not_connected">コントローラ接続されていません</string>
<string name="controller_none_selected">でコントローラ選択されていません</string>
<string name="report_issue">前回のクラッシュ検出された</string>
<string name="bios_config">設定が失敗しました!</string>
<string name="customize_touch_controls">タッチコントロールを編集</string>
<string name="launch_editor">エディタをスタート</string>
<string name="touch_vibration">振動</string>
<string name="controller_a">コントローラA</string>
<string name="controller_b">コントローラB</string>
<string name="controller_c">コントローラC</string>
<string name="controller_d">コントローラD</string>
<string name="controller_not_connected">コントローラが接続されていません</string>
<string name="controller_none_selected">コントローラが選択されていない。</string>
<string name="select">選択する</string>
<string name="remove">削除する</string>
<string name="select_controller_title">セレクトコントローラ</string>
<string name="select_controller_message">ポートに割り当てるコントローラのいずれかのボタンを押してください</string>
<string name="controller_already_in_use">このコントローラは、すでに使用されています!</string>
<string name="modified_layout">カスタムキーレイアウトを可能にする</string>
<string name="controller_compat">互換モードを有効にする</string>
<string name="select_controller_title">コントローラを選択</string>
<string name="select_controller_message">ポートに%1$sコントローラを割り当てるには、いずれかのボタンを押してください。</string>
<string name="controller_already_in_use">このコントローラはすでに使用されています。</string>
<string name="joystick_layout">Dパッドとしてジョイスティックを使用</string>
<string name="modified_layout">カスタムキーレイアウトを有効に</string>
<string name="controller_compat">互換モードを有効に</string>
<string name="mic_in_port_2">ポート2に接続されたマイク</string>
<string name="customize_physical_controls">物理コントロールをカスタマイズする</string>
<string name="map_keycode_title">コントローラを変更する</string>
<string name="map_keycode_message">のための新しいコントローラのボタンを押してください %1$s</string>
<string name="customize_physical_controls">物理コントロールを編集</string>
<string name="map_keycode_title">コントローラを編集する</string>
<string name="map_keycode_message">%1$sボタンを押してください</string>
<string name="moga_pro_connect">MOGAプロ接続!</string>
<string name="moga_connect">MOGA接続!</string>
<string name="moga_pro_connect">MOGAプロが接続された!</string>
<string name="moga_connect">MOGAが接続された!</string>
<string name="about_text">reicastはドリームキャストエミュレータです</string>
<string name="revision_text">バージョン: %1$s [%2$s]</string>
<string name="about_text">reicastはマルチプラットフォームのドリームキャストエミュレータです</string>
<string name="revision_text">バージョン%1$s [%2$s]</string>
<string-array name="controllers">
<item>コントローラ A</item>
<item>コントローラ B</item>
<item>コントローラ C</item>
<item>コントローラ D</item>
<item>コントローラA</item>
<item>コントローラB</item>
<item>コントローラC</item>
<item>コントローラD</item>
</string-array>
<string name="browser">ブラウザ</string>
<string name="settings">セッティング</string>
<string name="browser">ブラウザ</string>
<string name="settings">設定</string>
<string name="paths">パス</string>
<string name="input">コントローラー</string>
<string name="about">およそ</string>
<string name="about">reicastについて</string>
<string name="rateme">私を評価してください</string>
<string name="messages">テストスイート</string>
<string name="textOn">上の</string>
<string name="textOn">オン</string>
<string name="textOff">オフ</string>
<string name="cancel">キャンセル</string>
<string name="manual">マニュアル</string>
</resources>

View File

@ -3,9 +3,6 @@
<string name="app_name">reicast</string>
<string name="app_site">Homepage: http://reicast.com</string>
<string name="git_api">https://api.github.com/repos/reicast/reicast-emulator/commits</string>
<string name="git_issues">https://github.com/reicast/reicast-emulator/issues/</string>
<string name="log_url">http://twisted.dyndns.tv:3194/ReicastBot/report/submit.php</string>
<string name="error_kernel"></string>

View File

@ -4,49 +4,50 @@
<string name="system_path">System Path (location of the data folder with dc_boot.bin/dc_flash.bin inside)</string>
<string name="browser_path">Default System Path</string>
<string name="games_path">Storage Path (location of .gdi, .chd or .cdi images)</string>
<string name="games_path">Storage Path (location of *.gdi, *.chd or *.cdi images)</string>
<string name="game_path">Default Game Storage</string>
<string name="config_home">Please configure a home directory</string>
<string name="config_game">Please configure a games directory</string>
<string name="unsupported">Unsupported Kernel Version!</string>
<string name="config_home">Please configure a home directory.</string>
<string name="config_game">Please configure a game directory.</string>
<string name="unsupported">Unsupported kernel version!</string>
<string name="boot_bios">Boot Dreamcast Bios</string>
<string name="missing_bios">BIOS Missing. The Dreamcast BIOS is required for this emulator to work. Place the BIOS file in %1$s/data/dc_boot.bin</string>
<string name="missing_flash">Flash Missing. The Dreamcast Flash is required for this emulator to work. Place the Flash file in %1$s/data/dc_flash.bin</string>
<string name="require_bios">You have to provide the BIOS</string>
<string name="data_folder">The data folder is assumed</string>
<string name="git_broken">GitHub Native Unavailable!</string>
<string name="boot_bios">Boot Dreamcast BIOS</string>
<string name="missing_bios_title">Missing Dreamcast BIOS</string>
<string name="missing_bios">The Dreamcast BIOS is missing. A dump of the Dreamcast BIOS is required for this emulator to work. Make sure the BIOS file is named "dc_boot.bin" and is in %1$s/data/dc_boot.bin</string>
<string name="missing_flash_title">Missing Dreamcast Flash ROM</string>
<string name="missing_flash">The Dreamcast Flash is missing. A dump of the Dreamcast Flash is required for this emulator to work. Make sure the Flash file is named "dc_flash.bin" and is in %1$s/data/dc_flash.bin</string>
<string name="require_bios">You have to provide a Dreamcast BIOS.</string>
<string name="data_folder">The current data folder is assumed.</string>
<string name="folder_bios">BOOT BIOS</string>
<string name="folder_select">SELECT CURRENT FOLDER</string>
<string name="folder_bios">Boot BIOS</string>
<string name="folder_select">Select current folder</string>
<string name="optimization_opts">Optimization and Debugging Options</string>
<string name="experimental_opts">Expert (May cause widespread panic)</string>
<string name="experimental_opts">Experimental (May cause widespread panic)</string>
<string name="select_native">Enable Native Interface</string>
<string name="select_dynarec">Dynarec Options</string>
<string name="select_unstable">Unstable Optimisations</string>
<string name="select_region">DC Region</string>
<string name="select_broadcast">Broadcast</string>
<string name="select_limitfps">Limit FPS</string>
<string name="select_mipmaps">Use Mipmaps (fix for old SGX540)</string>
<string name="select_mipmaps">Use Mipmaps (fixes SGX540)</string>
<string name="select_stretch">Widescreen Mode</string>
<string name="set_frameskip">Frameskip Value</string>
<string name="select_render">PVR Rendering (does nothing for now)</string>
<string name="select_fps">Show OnScreen FPS</string>
<string name="select_fps">Show On-screen FPS</string>
<string name="select_software">Force Software Rendering</string>
<string name="select_sound">Disable Emulator Sound</string>
<string name="select_depth">Rendering Depth</string>
<string name="select_force_gpu">Force v6 GPU Config</string>
<string name="default_disk">Set Default Disk</string>
<string name="default_disk">Default Disk</string>
<string name="games_listing">Available Dreamcast Games</string>
<string name="games_listing">Game List</string>
<string name="report_issue">Previous Crash Detected</string>
<string name="bios_config">Configuration failed!</string>
<string name="customize_touch_controls">Customize Touch Controls</string>
<string name="launch_editor">Launch Editor</string>
<string name="touch_vibration">Touch Vibration</string>
<string name="touch_vibration">Haptic Feedback</string>
<string name="controller_a">Controller A</string>
<string name="controller_b">Controller B</string>
<string name="controller_c">Controller C</string>
@ -58,7 +59,7 @@
<string name="select_controller_title">Select Controller</string>
<string name="select_controller_message">Press any button on the controller %1$s to assign to port</string>
<string name="controller_already_in_use">This controller is already in use!</string>
<string name="joystick_layout">Use Joystick For Dpad Input</string>
<string name="joystick_layout">Use Joystick For D-Pad Input</string>
<string name="modified_layout">Enable Custom Key Layout</string>
<string name="controller_compat">Enable Compatibility Mode</string>
<string name="mic_in_port_2">Microphone plugged into port 2</string>
@ -67,17 +68,17 @@
<string name="map_keycode_title">Modify Controller</string>
<string name="map_keycode_message">Press the new controller button for %1$s</string>
<string name="moga_pro_connect">MOGA Pro Connected!</string>
<string name="moga_connect">MOGA Connected!</string>
<string name="moga_pro_connect">MOGA Pro connected!</string>
<string name="moga_connect">MOGA connected!</string>
<string name="about_text">reicast is a dreamcast emulator</string>
<string name="about_text">reicast is a multi-platform Dreamcast emulator.</string>
<string name="revision_text">Version: %1$s [%2$s]</string>
<string-array name="controllers">
<item>Controller A</item>
<item>Controller B</item>
<item>Controller C</item>
<item>Controller D</item>
<item>Controller A</item>
<item>Controller B</item>
<item>Controller C</item>
<item>Controller D</item>
</string-array>
<string name="browser">Browser</string>
@ -92,6 +93,7 @@
<string name="textOff">OFF</string>
<string name="cancel">Cancel</string>
<string name="dismiss">Dismiss</string>
<string name="manual">Manual</string>
<string name="options">Options</string>
</resources>

View File

@ -33,7 +33,7 @@
<style name="fpsOverlayText">
<item name="android:paddingLeft">4px</item>
<item name="android:paddingBottom">4px</item>
<item name="android:textColor">#ffffffff</item>
<item name="android:textColor">#ffff00</item>
<item name="android:textSize">32sp</item>
<item name="android:shadowColor">#000000</item>
<item name="android:shadowDx">1</item>

View File

@ -57,14 +57,6 @@ public class FileUtils {
return null;
}
public File[] listFilesAsArray(File directory, FilenameFilter[] filter,
int recurse) {
Collection<File> files = listFiles(directory, filter, recurse);
File[] arr = new File[files.size()];
return files.toArray(arr);
}
public Collection<File> listFiles(File directory, FilenameFilter[] filter,
int recurse) {
@ -92,14 +84,13 @@ public class FileUtils {
}
public static void saveScreenshot(final Context c, int w, int h, GL10 gl){
try{
try {
File dir = new File(MainActivity.home_directory);
SimpleDateFormat s = new SimpleDateFormat("yyyyMMddHHmmss");
String timestamp = s.format(new Date());
File f = new File(dir.toString(), timestamp+".jpeg");
File f = new File(dir.getAbsolutePath(), timestamp+".jpeg");
FileOutputStream out = new FileOutputStream(f);
savePixels(0, 0, w, h, gl).compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
//attempt to put into gallery app
MediaScannerConnection.scanFile(c.getApplicationContext(), new String[]{f.toString()}, null, new OnScanCompletedListener() {
@ -108,7 +99,7 @@ public class FileUtils {
//c.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
}
});
}catch(Exception e){
} catch(Exception e) {
e.printStackTrace();
}
}
@ -116,26 +107,26 @@ public class FileUtils {
//thank you stackoverflow
public static Bitmap savePixels(int x, int y, int w, int h, GL10 gl)
{
int b[]=new int[w*(y+h)];
int bt[]=new int[w*h];
IntBuffer ib=IntBuffer.wrap(b);
ib.position(0);
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
int b[]=new int[w*(y+h)];
int bt[]=new int[w*h];
IntBuffer ib=IntBuffer.wrap(b);
ib.position(0);
gl.glReadPixels(x, 0, w, y+h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
for(int i=0, k=0; i<h; i++, k++)
{//remember, that OpenGL bitmap is incompatible with Android bitmap
//and so, some correction need.
for(int j=0; j<w; j++)
{
int pix=b[i*w+j];
int pb=(pix>>16)&0xff;
int pr=(pix<<16)&0x00ff0000;
int pix1=(pix&0xff00ff00) | pr | pb;
bt[(h-k-1)*w+j]=pix1;
}
}
for(int i=0, k=0; i<h; i++, k++)
{//remember, that OpenGL bitmap is incompatible with Android bitmap
//and so, some correction need.
for(int j=0; j<w; j++)
{
int pix=b[i*w+j];
int pb=(pix>>16)&0xff;
int pr=(pix<<16)&0x00ff0000;
int pix1=(pix&0xff00ff00) | pr | pb;
bt[(h-k-1)*w+j]=pix1;
}
}
Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
return sb;
Bitmap sb=Bitmap.createBitmap(bt, w, h, Bitmap.Config.ARGB_8888);
return sb;
}
}

View File

@ -1,111 +1,23 @@
/* ====================================================================
* Copyright (c) 2012-2013 Lounge Katt Entertainment. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by Lounge Katt" unless
* otherwise displayed by public repository entries.
*
* 4. The names "Lounge Katt", "TwistedUmbrella", and "LiveLog"
* must not be used to endorse or promote products derived from this
* software without prior written permission. For written permission,
* please contact admin@loungekatt.com.
*
* 5. Products derived from this software may not be called "LiveLog"
* nor may "LiveLog" appear in their names without prior written
* permission of Lounge Katt Entertainment.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by Lounge Katt" unless
* otherwise displayed by tagged repository entries.
*
* THIS SOFTWARE IS PROVIDED BY Lounge Katt ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* The license and distribution terms for any publicly available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution license
* [including the GNU Public License.] Content not subject to these terms is
* subject to to the terms and conditions of the Apache License, Version 2.0.
*/
package com.reicast.emulator;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.text.util.Linkify;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
import android.widget.TextView;
import com.reicast.emulator.config.Config;
import com.reicast.emulator.debug.GitAdapter;
@SuppressWarnings("deprecation")
public class AboutFragment extends Fragment {
SlidingDrawer slidingGithub;
private ListView list;
private GitAdapter adapter;
private Handler handler;
String buildId = "";
private Activity parentActivity;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@ -115,11 +27,9 @@ public class AboutFragment extends Fragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
parentActivity = getActivity();
handler = new Handler();
try {
InputStream file = parentActivity.getAssets().open("build");
InputStream file = getResources().getAssets().open("build");
if (file != null) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(file));
@ -131,16 +41,16 @@ public class AboutFragment extends Fragment {
}
try {
String versionName = parentActivity.getPackageManager()
.getPackageInfo(parentActivity.getPackageName(), 0).versionName;
int versionCode = parentActivity.getPackageManager()
.getPackageInfo(parentActivity.getPackageName(), 0).versionCode;
String versionName = getActivity().getPackageManager()
.getPackageInfo(getActivity().getPackageName(), 0).versionName;
int versionCode = getActivity().getPackageManager()
.getPackageInfo(getActivity().getPackageName(), 0).versionCode;
TextView version = (TextView) getView().findViewById(
R.id.revision_text);
String revision = parentActivity.getString(R.string.revision_text,
String revision = getString(R.string.revision_text,
versionName, String.valueOf(versionCode));
if (!buildId.equals("")) {
revision = parentActivity.getString(R.string.revision_text,
revision = getString(R.string.revision_text,
versionName, buildId.substring(0,7));
}
version.setText(revision);
@ -148,180 +58,7 @@ public class AboutFragment extends Fragment {
e.printStackTrace();
}
TextView website = (TextView) getView().findViewById(
R.id.site_text);
TextView website = (TextView) getView().findViewById(R.id.site_text);
Linkify.addLinks(website, Linkify.ALL);
slidingGithub = (SlidingDrawer) getView().findViewById(
R.id.slidingGithub);
if (MainActivity.debugUser) {
slidingGithub.setOnDrawerOpenListener(new OnDrawerOpenListener() {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public void onDrawerOpened() {
String git = parentActivity.getString(R.string.git_api);
retrieveGitTask queryGithub = new retrieveGitTask();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
queryGithub.executeOnExecutor(
AsyncTask.THREAD_POOL_EXECUTOR, git);
} else {
queryGithub.execute(git);
}
}
});
slidingGithub.open();
} else {
slidingGithub.setVisibility(View.GONE);
}
}
public class retrieveGitTask extends
AsyncTask<String, Integer, ArrayList<HashMap<String, String>>> {
@Override
protected void onPreExecute() {
}
@Override
protected ArrayList<HashMap<String, String>> doInBackground(
String... paths) {
ArrayList<HashMap<String, String>> commitList = new ArrayList<HashMap<String, String>>();
try {
JSONArray gitObject = getContent(paths[0]);
for (int i = 0; i < gitObject.length(); i++) {
JSONObject jsonObject = gitObject.getJSONObject(i);
JSONObject commitArray = jsonObject.getJSONObject("commit");
String date = commitArray.getJSONObject("committer")
.getString("date").replace("T", " ")
.replace("Z", "");
String author = commitArray.getJSONObject("author")
.getString("name");
String committer = commitArray.getJSONObject("committer")
.getString("name");
String avatar = null;
if (!jsonObject.getString("committer").equals("null")) {
avatar = jsonObject.getJSONObject("committer")
.getString("avatar_url");
committer = committer
+ " ("
+ jsonObject.getJSONObject("committer")
.getString("login") + ")";
if (avatar.equals("null")) {
avatar = "https://github.com/apple-touch-icon-144.png";
}
} else {
avatar = "https://github.com/apple-touch-icon-144.png";
}
if (!jsonObject.getString("author").equals("null")) {
author = author
+ " ("
+ jsonObject.getJSONObject("author").getString(
"login") + ")";
}
String sha = jsonObject.getString("sha");
String curl = jsonObject
.getString("url")
.replace("https://api.github.com/repos",
"https://github.com")
.replace("commits", "commit");
String title = "No commit heading attached";
String message = "No commit message attached";
if (commitArray.getString("message").contains("\n\n")) {
String fullOutput = commitArray.getString("message");
title = fullOutput.substring(0,
fullOutput.indexOf("\n\n"));
message = fullOutput.substring(
fullOutput.indexOf("\n\n") + 1,
fullOutput.length());
} else {
title = commitArray.getString("message");
}
HashMap<String, String> map = new HashMap<String, String>();
map.put("Date", date);
map.put("Committer", committer);
map.put("Title", title);
map.put("Message", message);
map.put("Sha", sha);
map.put("Url", curl);
map.put("Author", author);
map.put("Avatar", avatar);
map.put("Build", buildId);
commitList.add(map);
}
} catch (JSONException e) {
handler.post(new Runnable() {
public void run() {
Config.customNotify(parentActivity, R.drawable.ic_github, R.string.git_broken);
slidingGithub.close();
}
});
e.printStackTrace();
} catch (Exception e) {
handler.post(new Runnable() {
public void run() {
Config.customNotify(parentActivity, R.drawable.ic_github, R.string.git_broken);
slidingGithub.close();
}
});
e.printStackTrace();
}
return commitList;
}
@Override
protected void onPostExecute(
ArrayList<HashMap<String, String>> commitList) {
if (commitList != null && commitList.size() > 0) {
list = (ListView) getView().findViewById(R.id.list);
list.setSelector(R.drawable.list_selector);
list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
adapter = new GitAdapter(parentActivity, commitList);
// Set adapter as specified collection
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
}
});
}
}
}
private JSONArray getContent(String urlString) throws IOException,
JSONException {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(urlString);
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return new JSONArray(builder.toString());
}
}

View File

@ -8,6 +8,8 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
@ -17,7 +19,6 @@ import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.net.Uri;
@ -46,12 +47,12 @@ import com.reicast.emulator.emu.JNIdc;
public class FileBrowser extends Fragment {
Vibrator vib;
Drawable orig_bg;
Activity parentActivity;
boolean ImgBrowse;
private Vibrator vib;
private Drawable orig_bg;
private Activity parentActivity;
private boolean ImgBrowse;
private boolean games;
OnItemSelectedListener mCallback;
private OnItemSelectedListener mCallback;
private SharedPreferences mPrefs;
private File sdcard = Environment.getExternalStorageDirectory();
@ -84,9 +85,8 @@ public class FileBrowser extends Fragment {
// Container Activity must implement this interface
public interface OnItemSelectedListener {
public void onGameSelected(Uri uri);
public void onFolderSelected(Uri uri);
void onGameSelected(Uri uri);
void onFolderSelected(Uri uri);
}
@Override
@ -166,15 +166,14 @@ public class FileBrowser extends Fragment {
}
}
class LocateGames extends AsyncTask<String, Integer, List<File>> {
private final class LocateGames extends AsyncTask<String, Integer, List<File>> {
@Override
protected List<File> doInBackground(String... paths) {
final List<File> tFileList = new ArrayList<File>();
File storage = new File(paths[0]);
Resources resources = parentActivity.getResources();
// array of valid image file extensions
String[] mediaTypes = resources.getStringArray(R.array.images);
String[] mediaTypes = parentActivity.getResources().getStringArray(R.array.images);
FilenameFilter[] filter = new FilenameFilter[mediaTypes.length];
int i = 0;
@ -196,39 +195,31 @@ public class FileBrowser extends Fragment {
}
FileUtils fileUtils = new FileUtils();
File[] allMatchingFiles = fileUtils.listFilesAsArray(storage,
filter, 1);
for (File mediaFile : allMatchingFiles) {
tFileList.add(mediaFile);
}
return tFileList;
Collection<File> files = fileUtils.listFiles(storage, filter, 1);
return (List<File>) files;
}
@Override
protected void onPostExecute(List<File> games) {
final LinearLayout list = (LinearLayout) parentActivity
.findViewById(R.id.game_list);
final LinearLayout list = (LinearLayout) parentActivity.findViewById(R.id.game_list);
list.removeAllViews();
String heading = parentActivity
.getString(R.string.games_listing);
String heading = parentActivity.getString(R.string.games_listing);
createListHeader(heading, list, true);
if (games != null && !games.isEmpty()) {
for (int i = 0; i < games.size(); i++) {
createListItem(list, games.get(i));
for (final File game : games) {
createListItem(list, game);
}
} else {
Toast.makeText(parentActivity, R.string.config_game,
Toast.LENGTH_LONG).show();
Toast.makeText(parentActivity, R.string.config_game, Toast.LENGTH_LONG).show();
}
list.invalidate();
}
}
class DirSort implements Comparator<File> {
private static final class DirSort implements Comparator<File> {
// Comparator interface requires defining compare method.
@Override
public int compare(File filea, File fileb) {
return ((filea.isFile() ? "a" : "b") + filea.getName().toLowerCase(
@ -244,7 +235,7 @@ public class FileBrowser extends Fragment {
R.layout.bios_list_item, null, false);
((TextView) childview.findViewById(R.id.item_name))
.setText(parentActivity.getString(R.string.boot_bios));
.setText(R.string.boot_bios);
childview.setTag(null);
@ -285,29 +276,26 @@ public class FileBrowser extends Fragment {
.setImageResource(R.drawable.open_folder);
((TextView) headerView.findViewById(R.id.item_name))
.setText(header_text);
((TextView) headerView.findViewById(R.id.item_name))
.setTypeface(Typeface.DEFAULT_BOLD);
((TextView) headerView.findViewById(R.id.item_name))
.setTypeface(Typeface.DEFAULT_BOLD);
((ViewGroup) view).addView(headerView);
}
private void createListItem(LinearLayout list, final File game) {
final String name = game.getName();
final String nameLower = name.toLowerCase(Locale.getDefault());
final View childview = parentActivity.getLayoutInflater().inflate(
R.layout.app_list_item, null, false);
((TextView) childview.findViewById(R.id.item_name)).setText(name);
((ImageView) childview.findViewById(R.id.item_icon))
.setImageResource(game == null ? R.drawable.config : game
.isDirectory() ? R.drawable.open_folder
: name.toLowerCase(Locale.getDefault())
.endsWith(".gdi") ? R.drawable.gdi : name
.toLowerCase(Locale.getDefault()).endsWith(
".cdi") ? R.drawable.cdi : name
.toLowerCase(Locale.getDefault()).endsWith(
".chd") ? R.drawable.chd
: R.drawable.disk_unknown);
.setImageResource(game.isDirectory() ? R.drawable.open_folder
: nameLower.endsWith(".gdi") ? R.drawable.gdi
: nameLower.endsWith(".cdi") ? R.drawable.cdi
: nameLower.endsWith(".chd") ? R.drawable.chd
: R.drawable.disk_unknown);
childview.setTag(name);
@ -354,7 +342,6 @@ public class FileBrowser extends Fragment {
createListHeader(heading, v, false);
File flist[] = root_sd.listFiles();
File parent = root_sd.getParentFile();
list.add(null);
@ -364,32 +351,27 @@ public class FileBrowser extends Fragment {
Arrays.sort(flist, new DirSort());
for (int i = 0; i < flist.length; i++)
list.add(flist[i]);
Collections.addAll(list, flist);
for (int i = 0; i < list.size(); i++) {
if (list.get(i) != null && !list.get(i).isDirectory())
for (final File file : list) {
if (file != null && !file.isDirectory())
continue;
final View childview = parentActivity.getLayoutInflater().inflate(
R.layout.app_list_item, null, false);
if (list.get(i) == null) {
((TextView) childview.findViewById(R.id.item_name))
.setText(getString(R.string.folder_select));
} else if (list.get(i) == parent)
((TextView) childview.findViewById(R.id.item_name))
.setText("..");
if (file == null) {
((TextView) childview.findViewById(R.id.item_name)).setText(R.string.folder_select);
} else if (file == parent)
((TextView) childview.findViewById(R.id.item_name)).setText("..");
else
((TextView) childview.findViewById(R.id.item_name))
.setText(list.get(i).getName());
((TextView) childview.findViewById(R.id.item_name)).setText(file.getName());
((ImageView) childview.findViewById(R.id.item_icon))
.setImageResource(list.get(i) == null ? R.drawable.config
: list.get(i).isDirectory() ? R.drawable.open_folder
.setImageResource(file == null ? R.drawable.config
: file.isDirectory() ? R.drawable.open_folder
: R.drawable.disk_unknown);
childview.setTag(list.get(i));
final File item = list.get(i);
childview.setTag(file);
orig_bg = childview.getBackground();
@ -398,8 +380,8 @@ public class FileBrowser extends Fragment {
childview.findViewById(R.id.childview).setOnClickListener(
new OnClickListener() {
public void onClick(View view) {
if (item != null && item.isDirectory()) {
navigate(item);
if (file != null && file.isDirectory()) {
navigate(file);
ScrollView sv = (ScrollView) parentActivity
.findViewById(R.id.game_scroller);
sv.scrollTo(0, 0);
@ -436,11 +418,11 @@ public class FileBrowser extends Fragment {
childview.findViewById(R.id.childview).setOnTouchListener(
new OnTouchListener() {
@SuppressWarnings("deprecation")
public boolean onTouch(View view, MotionEvent arg1) {
if (arg1.getActionMasked() == MotionEvent.ACTION_DOWN) {
public boolean onTouch(View view, MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
view.setBackgroundColor(0xFF4F3FFF);
} else if (arg1.getActionMasked() == MotionEvent.ACTION_CANCEL
|| arg1.getActionMasked() == MotionEvent.ACTION_UP) {
} else if (event.getActionMasked() == MotionEvent.ACTION_CANCEL
|| event.getActionMasked() == MotionEvent.ACTION_UP) {
view.setBackgroundDrawable(orig_bg);
}

View File

@ -224,13 +224,17 @@ public class GL2JNIActivity extends Activity {
}
private void initJoyStickLayout(int playerNum) {
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
if (!pad.joystick[playerNum]) {
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
}
}
private void runCompatibilityMode() {
for (int n = 0; n < 4; n++) {
if (pad.compat[n]) {
String id = pad.portId[n];
pad.joystick[n] = prefs.getBoolean(Gamepad.pref_js_separate + id, false);
getCompatibilityMap(n, pad.portId[n]);
initJoyStickLayout(n);
}

View File

@ -246,13 +246,17 @@ public class GL2JNINative extends NativeActivity {
}
private void initJoyStickLayout(int playerNum) {
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
if (!pad.joystick[playerNum]) {
pad.globalLS_X[playerNum] = pad.previousLS_X[playerNum] = 0.0f;
pad.globalLS_Y[playerNum] = pad.previousLS_Y[playerNum] = 0.0f;
}
}
private void runCompatibilityMode(int joy) {
for (int n = 0; n < 4; n++) {
if (pad.compat[n]) {
String id = pad.portId[n];
pad.joystick[n] = prefs.getBoolean(Gamepad.pref_js_separate + id, false);
getCompatibilityMap(n, pad.portId[n]);
pad.playerNumX.put(joy, n);
initJoyStickLayout(n);

View File

@ -60,7 +60,7 @@ public class MainActivity extends SlidingFragmentActivity implements
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainuilayout_fragment);
setBehindContentView(R.layout.drawer_menu);
setBehindContentView(R.layout.drawer_menu);
mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
@ -71,7 +71,7 @@ public class MainActivity extends SlidingFragmentActivity implements
}
String prior_error = mPrefs.getString("prior_error", null);
if (prior_error != null && !prior_error.equals(null)) {
if (prior_error != null) {
displayLogOutput(prior_error);
mPrefs.edit().remove("prior_error").commit();
} else {
@ -175,7 +175,7 @@ public class MainActivity extends SlidingFragmentActivity implements
.replace(R.id.fragment_container, browseFrag,
"MAIN_BROWSER").addToBackStack(null)
.commit();
setTitle(getString(R.string.browser));
setTitle(R.string.browser);
sm.toggle(true);
}
@ -195,7 +195,7 @@ public class MainActivity extends SlidingFragmentActivity implements
.replace(R.id.fragment_container, configFrag,
"CONFIG_FRAG").addToBackStack(null)
.commit();
setTitle(getString(R.string.settings));
setTitle(R.string.settings);
sm.toggle(true);
}
@ -217,7 +217,7 @@ public class MainActivity extends SlidingFragmentActivity implements
.replace(R.id.fragment_container,
optionsFrag, "OPTIONS_FRAG")
.addToBackStack(null).commit();
setTitle(getString(R.string.paths));
setTitle(R.string.paths);
sm.toggle(true);
}
@ -237,7 +237,7 @@ public class MainActivity extends SlidingFragmentActivity implements
.beginTransaction()
.replace(R.id.fragment_container, inputFrag,
"INPUT_FRAG").addToBackStack(null).commit();
setTitle(getString(R.string.input));
setTitle(R.string.input);
sm.toggle(true);
}
@ -257,7 +257,7 @@ public class MainActivity extends SlidingFragmentActivity implements
.beginTransaction()
.replace(R.id.fragment_container, aboutFrag,
"ABOUT_FRAG").addToBackStack(null).commit();
setTitle(getString(R.string.about));
setTitle(R.string.about);
sm.toggle(true);
}
@ -274,7 +274,7 @@ public class MainActivity extends SlidingFragmentActivity implements
startActivity(new Intent(Intent.ACTION_VIEW, Uri
.parse("market://details?id="
+ getPackageName())));
//setTitle(getString(R.string.rateme));
//setTitle(R.string.rateme);
sm.toggle(true);
return true;
} else
@ -314,9 +314,9 @@ public class MainActivity extends SlidingFragmentActivity implements
*/
private void displayLogOutput(final String error) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle(getString(R.string.report_issue));
builder.setTitle(R.string.report_issue);
builder.setMessage(error);
builder.setNegativeButton("Dismiss",
builder.setNegativeButton(R.string.dismiss,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
@ -352,32 +352,32 @@ public class MainActivity extends SlidingFragmentActivity implements
this);
// set title
alertDialogBuilder.setTitle("You have to provide the BIOS");
if (!isBiosExisting())
alertDialogBuilder.setTitle(R.string.missing_bios_title);
else if (!isFlashExisting())
alertDialogBuilder.setTitle(R.string.missing_flash_title);
// set dialog message
alertDialogBuilder
.setMessage(msg)
.setCancelable(false)
.setPositiveButton("Dismiss",
.setPositiveButton(R.string.dismiss,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
public void onClick(DialogInterface dialog, int id) {
// if this button is clicked, close
// current activity
// MainActivity.this.finish();
}
})
.setNegativeButton("Options",
.setNegativeButton(R.string.options,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
public void onClick(DialogInterface dialog, int id) {
FileBrowser firstFragment = new FileBrowser();
Bundle args = new Bundle();
// args.putBoolean("ImgBrowse", false);
// specify ImgBrowse option. true = images,
// false = folders only
args.putString("browse_entry",
sdcard.toString());
args.putString("browse_entry", sdcard.toString());
// specify a path for selecting folder
// options
args.putBoolean("games_entry", false);
@ -520,7 +520,7 @@ public class MainActivity extends SlidingFragmentActivity implements
.beginTransaction()
.replace(R.id.fragment_container, fragment,
"MAIN_BROWSER").commit();
setTitle(getString(R.string.browser));
setTitle(R.string.browser);
}
@Override

View File

@ -115,33 +115,6 @@ public class Config {
JNIdc.dreamtime(DreamTime.getDreamtime());
}
public static void customNotify(Activity activity, int icon, int message) {
LayoutInflater inflater = activity.getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout,
(ViewGroup) activity.findViewById(R.id.toast_layout_root));
ImageView image = (ImageView) layout.findViewById(R.id.image);
if (icon != -1) {
image.setImageResource(icon);
} else {
image.setImageResource(R.drawable.ic_launcher);
}
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText(activity.getString(message));
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
final float scale = activity.getResources().getDisplayMetrics().density;
int toastPixels = (int) ((metrics.widthPixels * scale + 0.5f) / 14);
Toast toast = new Toast(activity);
toast.setGravity(Gravity.BOTTOM, 0, toastPixels);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(layout);
toast.show();
}
/**
* Read the output of a shell command
*

View File

@ -32,8 +32,6 @@ import de.ankri.views.Switch;
public class ConfigureFragment extends Fragment {
Activity parentActivity;
OnClickListener mCallback;
private Config config;
private SharedPreferences mPrefs;
@ -62,12 +60,12 @@ public class ConfigureFragment extends Fragment {
public void onViewCreated(View view, Bundle savedInstanceState) {
// setContentView(R.layout.activity_main);
parentActivity = getActivity();
//parentActivity = getActivity();
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
home_directory = mPrefs.getString(Config.pref_home, home_directory);
config = new Config(parentActivity);
config = new Config(getActivity());
config.getConfigurationPrefs();
// Generate the menu options and fill in existing settings
@ -115,23 +113,15 @@ public class ConfigureFragment extends Fragment {
}
unstable_opt.setOnCheckedChangeListener(unstable_option);
String[] regions = parentActivity.getResources()
.getStringArray(R.array.region);
Spinner region_spnr = (Spinner) getView().findViewById(
R.id.region_spinner);
String[] regions = getResources().getStringArray(R.array.region);
Spinner region_spnr = (Spinner) getView().findViewById(R.id.region_spinner);
ArrayAdapter<String> regionAdapter = new ArrayAdapter<String>(
parentActivity, R.layout.spinner_selected, regions);
regionAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActivity(), R.layout.spinner_selected, regions);
regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
region_spnr.setAdapter(regionAdapter);
region_spnr.setSelection(Config.dcregion, true);
region_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
mPrefs.edit().putInt(Config.pref_dcregion, pos).commit();
Config.dcregion = pos;
@ -140,17 +130,13 @@ public class ConfigureFragment extends Fragment {
public void onNothingSelected(AdapterView<?> arg0) {
}
});
String[] broadcasts = parentActivity.getResources().getStringArray(
R.array.broadcast);
Spinner broadcast_spnr = (Spinner) getView().findViewById(
R.id.broadcast_spinner);
String[] broadcasts = getResources().getStringArray(R.array.broadcast);
Spinner broadcast_spnr = (Spinner) getView().findViewById(R.id.broadcast_spinner);
ArrayAdapter<String> broadcastAdapter = new ArrayAdapter<String>(
parentActivity, R.layout.spinner_selected, broadcasts);
broadcastAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActivity(), R.layout.spinner_selected, broadcasts);
broadcastAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
broadcast_spnr.setAdapter(broadcastAdapter);
int select = 0;
@ -159,76 +145,66 @@ public class ConfigureFragment extends Fragment {
if (broadcasts[i].startsWith(cast + " - "))
select = i;
}
broadcast_spnr.setSelection(select, true);
broadcast_spnr.setSelection(select, true);
broadcast_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String item = parent.getItemAtPosition(pos).toString();
String selection = item.substring(0, item.indexOf(" - "));
mPrefs.edit()
.putInt(Config.pref_broadcast, Integer.valueOf(selection))
.putInt(Config.pref_broadcast, Integer.parseInt(selection))
.commit();
Config.broadcast = Integer.valueOf(selection);
Config.broadcast = Integer.parseInt(selection);
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
OnCheckedChangeListener limitfps_option = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mPrefs.edit().putBoolean(Config.pref_limitfps, isChecked).commit();
Config.limitfps = isChecked;
}
};
Switch limit_fps = (Switch) getView()
.findViewById(R.id.limitfps_option);
Switch limit_fps = (Switch) getView().findViewById(R.id.limitfps_option);
limit_fps.setChecked(Config.limitfps);
limit_fps.setOnCheckedChangeListener(limitfps_option);
OnCheckedChangeListener mipmaps_option = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mPrefs.edit().putBoolean(Config.pref_mipmaps, isChecked).commit();
Config.mipmaps = isChecked;
}
};
Switch mipmap_opt = (Switch) getView()
.findViewById(R.id.mipmaps_option);
Switch mipmap_opt = (Switch) getView().findViewById(R.id.mipmaps_option);
mipmap_opt.setChecked(Config.mipmaps);
mipmap_opt.setOnCheckedChangeListener(mipmaps_option);
OnCheckedChangeListener full_screen = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mPrefs.edit().putBoolean(Config.pref_widescreen, isChecked).commit();
Config.widescreen = isChecked;
}
};
Switch stretch_view = (Switch) getView().findViewById(
R.id.stretch_option);
Switch stretch_view = (Switch) getView().findViewById(R.id.stretch_option);
stretch_view.setChecked(Config.widescreen);
stretch_view.setOnCheckedChangeListener(full_screen);
final TextView mainFrames = (TextView) getView().findViewById(R.id.current_frames);
mainFrames.setText(String.valueOf(Config.frameskip));
SeekBar frameSeek = (SeekBar) getView()
.findViewById(R.id.frame_seekbar);
SeekBar frameSeek = (SeekBar) getView().findViewById(R.id.frame_seekbar);
frameSeek.setProgress(Config.frameskip);
frameSeek.setIndeterminate(false);
frameSeek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
mainFrames.setText(String.valueOf(progress));
}
@ -245,8 +221,7 @@ public class ConfigureFragment extends Fragment {
OnCheckedChangeListener pvr_rendering = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mPrefs.edit().putBoolean(Config.pref_pvrrender, isChecked).commit();
Config.pvrrender = isChecked;
}
@ -255,8 +230,7 @@ public class ConfigureFragment extends Fragment {
pvr_render.setChecked(Config.pvrrender);
pvr_render.setOnCheckedChangeListener(pvr_rendering);
final EditText cheatEdit = (EditText) getView().findViewById(
R.id.cheat_disk);
final EditText cheatEdit = (EditText) getView().findViewById(R.id.cheat_disk);
String disk = Config.cheatdisk;
if (disk != null && disk.contains("/")) {
cheatEdit.setText(disk.substring(disk.lastIndexOf("/"),
@ -280,12 +254,10 @@ public class ConfigureFragment extends Fragment {
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
@ -301,13 +273,11 @@ public class ConfigureFragment extends Fragment {
fps_opt.setChecked(counter);
fps_opt.setOnCheckedChangeListener(fps_options);
final Switch force_gpu_opt = (Switch) getView().findViewById(
R.id.force_gpu_option);
final Switch force_gpu_opt = (Switch) getView().findViewById(R.id.force_gpu_option);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
OnCheckedChangeListener force_gpu_options = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mPrefs.edit().putBoolean(Config.pref_forcegpu, isChecked).commit();
}
};
@ -322,9 +292,12 @@ public class ConfigureFragment extends Fragment {
R.id.software_option);
OnCheckedChangeListener force_software = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mPrefs.edit().putInt(Config.pref_rendertype, isChecked ? 1 : 2).commit();
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mPrefs.edit()
.putInt(Config.pref_rendertype,
isChecked ? GL2JNIView.LAYER_TYPE_SOFTWARE
: GL2JNIView.LAYER_TYPE_HARDWARE)
.commit();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
if (isChecked) {
force_gpu_opt.setEnabled(false);
@ -335,17 +308,14 @@ public class ConfigureFragment extends Fragment {
}
}
};
int software = mPrefs.getInt(Config.pref_rendertype,
GL2JNIView.LAYER_TYPE_HARDWARE);
force_software_opt
.setChecked(software == GL2JNIView.LAYER_TYPE_SOFTWARE);
int software = mPrefs.getInt(Config.pref_rendertype, GL2JNIView.LAYER_TYPE_HARDWARE);
force_software_opt.setChecked(software == GL2JNIView.LAYER_TYPE_SOFTWARE);
force_software_opt.setOnCheckedChangeListener(force_software);
Switch sound_opt = (Switch) getView().findViewById(R.id.sound_option);
OnCheckedChangeListener emu_sound = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mPrefs.edit().putBoolean(Config.pref_nosound, isChecked).commit();
Config.nosound = isChecked;
}
@ -354,15 +324,12 @@ public class ConfigureFragment extends Fragment {
sound_opt.setChecked(sound);
sound_opt.setOnCheckedChangeListener(emu_sound);
String[] depths = parentActivity.getResources().getStringArray(
R.array.depth);
String[] depths = getResources().getStringArray(R.array.depth);
Spinner depth_spnr = (Spinner) getView().findViewById(
R.id.depth_spinner);
Spinner depth_spnr = (Spinner) getView().findViewById(R.id.depth_spinner);
ArrayAdapter<String> depthAdapter = new ArrayAdapter<String>(
parentActivity, R.layout.spinner_selected, depths);
depthAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
getActivity(), R.layout.spinner_selected, depths);
depthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
depth_spnr.setAdapter(depthAdapter);
String depth = String.valueOf(mPrefs.getInt(Config.pref_renderdepth, 24));
@ -370,19 +337,14 @@ public class ConfigureFragment extends Fragment {
depth_spnr.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
int render = Integer.valueOf(parent.getItemAtPosition(pos)
.toString());
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
int render = Integer.parseInt(parent.getItemAtPosition(pos).toString());
mPrefs.edit().putInt(Config.pref_renderdepth, render).commit();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
}

View File

@ -6,6 +6,7 @@ import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@ -50,7 +51,7 @@ public class InputFragment extends Fragment {
// Container Activity must implement this interface
public interface OnClickListener {
public void onMainBrowseSelected(String path_entry, boolean games);
void onMainBrowseSelected(String path_entry, boolean games);
}
@Override
@ -105,8 +106,7 @@ public class InputFragment extends Fragment {
};
switchTouchVibrationEnabled = (Switch) getView().findViewById(
R.id.switchTouchVibrationEnabled);
boolean vibrate = sharedPreferences.getBoolean(Config.pref_touchvibe,
true);
boolean vibrate = sharedPreferences.getBoolean(Config.pref_touchvibe, true);
if (vibrate) {
switchTouchVibrationEnabled.setChecked(true);
} else {
@ -120,7 +120,7 @@ public class InputFragment extends Fragment {
false);
micPluggedIntoFirstController.setChecked(micPluggedIn);
if (getActivity().getPackageManager().hasSystemFeature(
"android.hardware.microphone")) {
PackageManager.FEATURE_MICROPHONE)) {
// Microphone is present on the device
micPluggedIntoFirstController
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@ -286,7 +286,7 @@ public class InputFragment extends Fragment {
buttonRemoveControllerPlayer1.setEnabled(true);
} else {
textViewDeviceDescriptorPlayer1
.setText(getString(R.string.controller_none_selected));
.setText(R.string.controller_none_selected);
buttonRemoveControllerPlayer1.setEnabled(false);
}
}
@ -306,7 +306,7 @@ public class InputFragment extends Fragment {
buttonRemoveControllerPlayer2.setEnabled(true);
} else {
textViewDeviceDescriptorPlayer2
.setText(getString(R.string.controller_none_selected));
.setText(R.string.controller_none_selected);
buttonRemoveControllerPlayer2.setEnabled(false);
}
}
@ -326,7 +326,7 @@ public class InputFragment extends Fragment {
buttonRemoveControllerPlayer3.setEnabled(true);
} else {
textViewDeviceDescriptorPlayer3
.setText(getString(R.string.controller_none_selected));
.setText(R.string.controller_none_selected);
buttonRemoveControllerPlayer3.setEnabled(false);
}
}
@ -346,7 +346,7 @@ public class InputFragment extends Fragment {
buttonRemoveControllerPlayer4.setEnabled(true);
} else {
textViewDeviceDescriptorPlayer4
.setText(getString(R.string.controller_none_selected));
.setText(R.string.controller_none_selected);
buttonRemoveControllerPlayer4.setEnabled(false);
}
}
@ -356,17 +356,17 @@ public class InputFragment extends Fragment {
listenForButton = playerNum;
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
builder.setTitle(getString(R.string.select_controller_title));
builder.setTitle(R.string.select_controller_title);
builder.setMessage(getString(R.string.select_controller_message,
String.valueOf(listenForButton)));
builder.setPositiveButton(getString(R.string.cancel),
builder.setPositiveButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
listenForButton = 0;
dialog.dismiss();
}
});
builder.setNegativeButton(getString(R.string.manual),
builder.setNegativeButton(R.string.manual,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
InputModFragment inputModFrag = new InputModFragment();
@ -456,8 +456,7 @@ public class InputFragment extends Fragment {
break;
}
Log.d("New controller for port " + String.valueOf(listenForButton)
+ ":", descriptor);
Log.d("New controller for port " + listenForButton + ":", descriptor);
listenForButton = 0;
alertDialogSelectController.cancel();
@ -489,7 +488,7 @@ public class InputFragment extends Fragment {
updateControllers();
}
class MogaListener implements ControllerListener {
private final class MogaListener implements ControllerListener {
private int playerNum;
private String controllerId;
@ -511,13 +510,14 @@ public class InputFragment extends Fragment {
}
public void onStateEvent(StateEvent event) {
if (event.getState() == StateEvent.STATE_CONNECTION
&& event.getAction() == MOGAInput.ACTION_CONNECTED) {
if (event.getState() == StateEvent.STATE_CONNECTION &&
event.getAction() == MOGAInput.ACTION_CONNECTED) {
int mControllerVersion = moga.mController
.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
pad.isActiveMoga[playerNum] = true;
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
if (mControllerVersion == Controller.ACTION_VERSION_MOGA ||
mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
pad.isActiveMoga[playerNum] = true;
}
}

View File

@ -4,7 +4,6 @@ import java.io.IOException;
import java.io.InputStream;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
@ -42,7 +41,6 @@ import de.ankri.views.Switch;
public class InputModFragment extends Fragment {
private Activity parentActivity;
private SharedPreferences mPrefs;
private Switch switchJoystickDpadEnabled;
@ -67,11 +65,9 @@ public class InputModFragment extends Fragment {
private int playerNum = -1;
private mapKeyCode mKey;
Gamepad pad = new Gamepad();
// Container Activity must implement this interface
public interface OnClickListener {
public void onMainBrowseSelected(String path_entry, boolean games);
void onMainBrowseSelected(String path_entry, boolean games);
}
@Override
@ -83,17 +79,15 @@ public class InputModFragment extends Fragment {
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
parentActivity = getActivity();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
Runtime.getRuntime().freeMemory();
System.gc();
}
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
final String[] controllers = parentActivity.getResources()
.getStringArray(R.array.controllers);
final String[] controllers = getResources().getStringArray(R.array.controllers);
Bundle b = getArguments();
if (b != null) {
@ -141,7 +135,7 @@ public class InputModFragment extends Fragment {
R.id.switchCompatibilityEnabled);
switchCompatibilityEnabled.setOnCheckedChangeListener(compat_mode);
mKey = new mapKeyCode(parentActivity);
mKey = new mapKeyCode(getActivity());
ImageView a_button_icon = (ImageView) getView().findViewById(
R.id.a_button_icon);
@ -350,7 +344,7 @@ public class InputModFragment extends Fragment {
Spinner player_spnr = (Spinner) getView().findViewById(
R.id.player_spinner);
ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(
parentActivity, android.R.layout.simple_spinner_item,
getActivity(), android.R.layout.simple_spinner_item,
controllers);
playerAdapter
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
@ -392,7 +386,7 @@ public class InputModFragment extends Fragment {
System.gc();
}
try {
InputStream bitmap = parentActivity.getAssets().open("buttons.png");
InputStream bitmap = getResources().getAssets().open("buttons.png");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = sS;
Bitmap image = BitmapFactory.decodeStream(bitmap, null, options);
@ -425,7 +419,7 @@ public class InputModFragment extends Fragment {
}
}
}
return parentActivity.getResources().getDrawable(R.drawable.input);
return getResources().getDrawable(R.drawable.input);
}
/**
@ -433,19 +427,17 @@ public class InputModFragment extends Fragment {
*
*/
private void selectController() {
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
builder.setTitle(getString(R.string.select_controller_title));
builder.setMessage(getString(R.string.select_controller_message,
String.valueOf(player.replace("_", ""))));
builder.setNegativeButton("Cancel",
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.select_controller_title);
builder.setMessage(getString(R.string.select_controller_message, player.replace("_", "")));
builder.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setOnKeyListener(new Dialog.OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
mPrefs.edit()
.putInt("controller" + player, event.getDeviceId())
.commit();
@ -478,12 +470,10 @@ public class InputModFragment extends Fragment {
this.button = button;
this.output = output;
isMapping = true;
AlertDialog.Builder builder = new AlertDialog.Builder(
parentActivity);
builder.setTitle(getString(R.string.map_keycode_title));
builder.setMessage(getString(R.string.map_keycode_message,
button.replace("_", " ")));
builder.setNegativeButton("Cancel",
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.map_keycode_title);
builder.setMessage(getString(R.string.map_keycode_message, button.replace("_", " ")));
builder.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
isMapping = false;
@ -491,8 +481,7 @@ public class InputModFragment extends Fragment {
}
});
builder.setOnKeyListener(new Dialog.OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
mapButton(keyCode, event);
isMapping = false;
dialog.dismiss();
@ -512,7 +501,7 @@ public class InputModFragment extends Fragment {
* The keyevent generated by the button being assigned
*/
private int mapButton(int keyCode, KeyEvent event) {
if (android.os.Build.MODEL.startsWith("R800")) {
if (Build.MODEL.startsWith("R800")) {
if (keyCode == KeyEvent.KEYCODE_MENU)
return -1;
} else {
@ -557,8 +546,8 @@ public class InputModFragment extends Fragment {
if (label.contains(":")) {
label = label.substring(0, label.indexOf(":"));
}
output.setText(label + ": "
+ String.valueOf(ev.getAction()));
output.setText(label + ": " + ev.getAction());
}
}
@ -594,7 +583,7 @@ public class InputModFragment extends Fragment {
if (label.contains(":")) {
label = label.substring(0, label.indexOf(":"));
}
output.setText(label + ": " + String.valueOf(keyCode));
output.setText(label + ": " + keyCode);
return true;
} else {
String label = output.getText().toString();

View File

@ -21,11 +21,9 @@ import com.reicast.emulator.R;
public class OptionsFragment extends Fragment {
Activity parentActivity;
Button mainBrowse;
Button gameBrowse;
Button mainLocale;
OnClickListener mCallback;
private Button mainBrowse;
private Button gameBrowse;
private OnClickListener mCallback;
private SharedPreferences mPrefs;
private File sdcard = Environment.getExternalStorageDirectory();
@ -62,9 +60,7 @@ public class OptionsFragment extends Fragment {
public void onViewCreated(View view, Bundle savedInstanceState) {
// setContentView(R.layout.activity_main);
parentActivity = getActivity();
mPrefs = PreferenceManager.getDefaultSharedPreferences(parentActivity);
mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
home_directory = mPrefs.getString("home_directory", home_directory);
mainBrowse = (Button) getView().findViewById(R.id.browse_main_path);
@ -89,7 +85,7 @@ public class OptionsFragment extends Fragment {
home_directory = editBrowse.getText().toString();
if (home_directory.endsWith("/data")) {
home_directory.replace("/data", "");
Toast.makeText(parentActivity, R.string.data_folder,
Toast.makeText(getActivity(), R.string.data_folder,
Toast.LENGTH_SHORT).show();
}
mPrefs.edit().putString("home_directory", home_directory)
@ -97,12 +93,10 @@ public class OptionsFragment extends Fragment {
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
@ -132,14 +126,11 @@ public class OptionsFragment extends Fragment {
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
}
}

View File

@ -1,249 +0,0 @@
/* ====================================================================
* Copyright (c) 2012-2013 Lounge Katt Entertainment. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by Lounge Katt" unless
* otherwise displayed by public repository entries.
*
* 4. The names "Lounge Katt", "TwistedUmbrella", and "LiveLog"
* must not be used to endorse or promote products derived from this
* software without prior written permission. For written permission,
* please contact admin@loungekatt.com.
*
* 5. Products derived from this software may not be called "LiveLog"
* nor may "LiveLog" appear in their names without prior written
* permission of Lounge Katt Entertainment.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by Lounge Katt" unless
* otherwise displayed by tagged repository entries.
*
* THIS SOFTWARE IS PROVIDED BY Lounge Katt ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* The license and distribution terms for any publicly available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution license
* [including the GNU Public License.] Content not subject to these terms is
* subject to to the terms and conditions of the Apache License, Version 2.0.
*/
package com.reicast.emulator.debug;
import java.util.ArrayList;
import java.util.HashMap;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.WebSettings;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.reicast.emulator.MainActivity;
import com.reicast.emulator.R;
public class GitAdapter extends BaseAdapter {
private static Activity activity;
private ArrayList<HashMap<String, String>> data;
private LayoutInflater inflater = null;
private DisplayImageOptions options;
public GitAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
this.activity = a;
this.data = d;
this.inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ImageLoaderConfiguration configicon = new ImageLoaderConfiguration.Builder(
activity).memoryCacheExtraOptions(96, 96).build();
this.options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.ic_github)
.showImageForEmptyUri(R.drawable.ic_github)
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED).build();
ImageLoader.getInstance().init(configicon);
}
public int getCount() {
return this.data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = this.inflater.inflate(R.layout.change_item, null);
TextView dateText = (TextView) vi.findViewById(R.id.date);
TextView committerText = (TextView) vi.findViewById(R.id.committer);
TextView titleText = (TextView) vi.findViewById(R.id.title);
ImageView avatarIcon = (ImageView) vi.findViewById(R.id.avatar);
final HashMap<String, String> commit = this.data.get(position);
final String date = commit.get("Date");
final String committer = commit.get("Committer");
final String title = commit.get("Title");
final String message = commit.get("Message");
final String sha = commit.get("Sha");
final String url = commit.get("Url");
final String author = commit.get("Author");
final String avatar = commit.get("Avatar");
final String current = commit.get("Build");
RelativeLayout item = (RelativeLayout) vi.findViewById(R.id.change);
if (current != null && !current.equals("") && current.equals(sha)) {
item.getBackground().setColorFilter(0xFF00FF00,
PorterDuff.Mode.MULTIPLY);
} else {
item.getBackground().setColorFilter(null);
}
dateText.setText(date);
committerText.setText(committer);
titleText.setText(title);
ImageLoader.getInstance()
.displayImage(avatar, avatarIcon, this.options);
vi.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
System.gc();
String output = message + "\n\n" + " - " + author;
displayCommit(sha, output, url, v.getContext());
}
});
// Handle clicking individual item from list
return vi;
}
private static void callGithubVerification(String sha) {
String hash = sha.substring(0, 7);
Intent github = new Intent("com.reicast.emulator.debug.GitHash");
github.setAction("reicast.emulator.GITHUB");
github.putExtra("hashtag", hash);
activity.startActivity(github);
}
public static void displayCommit(final String title, String message, String url,
Context context) {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
LayoutInflater infalter = LayoutInflater.from(context);
final View popWebView = infalter.inflate(R.layout.webview, null);
WebView mWebView = (WebView) popWebView.findViewById(R.id.webframe);
mWebView = configureWebview(url, context, mWebView);
builder.setView(popWebView);
builder.setPositiveButton("Close",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
return;
}
});
if (MainActivity.debugUser) {
builder.setNegativeButton("Download",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
callGithubVerification(title);
dialog.dismiss();
return;
}
});
}
builder.create().show();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressLint("SetJavaScriptEnabled")
@SuppressWarnings("deprecation")
public static WebView configureWebview(String url, Context context,
WebView mWebView) {
mWebView.getSettings().setSupportZoom(true);
mWebView.getSettings().setBuiltInZoomControls(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
mWebView.getSettings().setDisplayZoomControls(false);
}
mWebView.setInitialScale(1);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) {
mWebView.getSettings().setUseWideViewPort(true);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR_MR1) {
mWebView.getSettings().setLoadWithOverviewMode(true);
}
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginState(PluginState.ON);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.clearHistory();
mWebView.clearFormData();
mWebView.clearCache(true);
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
CookieSyncManager.getInstance().stopSync();
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
mWebView.loadUrl(url);
return mWebView;
}
}

View File

@ -7,7 +7,6 @@ import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
@ -60,6 +59,9 @@ public class GL2JNIView extends GLSurfaceView
{
public static final boolean DEBUG = false;
public static final int LAYER_TYPE_SOFTWARE = 1;
public static final int LAYER_TYPE_HARDWARE = 2;
private static String fileName;
//private AudioThread audioThread;
private EmuThread ethd;
@ -148,7 +150,7 @@ public class GL2JNIView extends GLSurfaceView
touchVibrationEnabled = prefs.getBoolean(Config.pref_touchvibe, true);
int renderType = prefs.getInt(Config.pref_renderdepth, LAYER_TYPE_HARDWARE);
int renderType = prefs.getInt(Config.pref_rendertype, LAYER_TYPE_HARDWARE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
this.setLayerType(renderType, null);
} else {

View File

@ -1,53 +1,53 @@
package com.reicast.emulator.emu;
public class JNIdc
public final class JNIdc
{
static { System.loadLibrary("dc"); }
static { System.loadLibrary("dc"); }
public static native void config(String dirName);
public static native void init(String fileName);
public static native void run(Object track);
public static native void stop();
public static native void config(String dirName);
public static native void init(String fileName);
public static native void run(Object track);
public static native void stop();
public static native int send(int cmd, int opt);
public static native int data(int cmd, byte[] data);
public static native int send(int cmd, int opt);
public static native int data(int cmd, byte[] data);
public static native void rendinit(int w, int y);
public static native void rendframe();
public static native void rendinit(int w, int y);
public static native void rendframe();
public static native void kcode(int[] kcode, int[] lt, int[] rt, int[] jx, int[] jy);
public static native void kcode(int[] kcode, int[] lt, int[] rt, int[] jx, int[] jy);
public static native void vjoy(int id,float x, float y, float w, float h);
//public static native int play(short result[],int size);
public static native void vjoy(int id,float x, float y, float w, float h);
//public static native int play(short result[],int size);
public static native void initControllers(boolean[] controllers);
public static native void initControllers(boolean[] controllers);
public static native void setupMic(Object sip);
public static native void vmuSwap();
public static native void setupVmu(Object sip);
public static native void dynarec(int dynarec);
public static native void idleskip(int idleskip);
public static native void unstable(int unstable);
public static native void cable(int cable);
public static native void region(int region);
public static native void broadcast(int broadcast);
public static native void limitfps(int limiter);
public static native void nobatch(int nobatch);
public static native void nosound(int noaudio);
public static native void mipmaps(int mipmaps);
public static native void widescreen(int stretch);
public static native void subdivide(int subdivide);
public static native void frameskip(int frames);
public static native void pvrrender(int render);
public static native void cheatdisk(String disk);
public static native void dreamtime(long clock);
public static native void setupMic(Object sip);
public static native void vmuSwap();
public static native void setupVmu(Object sip);
public static native void dynarec(int dynarec);
public static native void idleskip(int idleskip);
public static native void unstable(int unstable);
public static native void cable(int cable);
public static native void region(int region);
public static native void broadcast(int broadcast);
public static native void limitfps(int limiter);
public static native void nobatch(int nobatch);
public static native void nosound(int noaudio);
public static native void mipmaps(int mipmaps);
public static native void widescreen(int stretch);
public static native void subdivide(int subdivide);
public static native void frameskip(int frames);
public static native void pvrrender(int render);
public static native void cheatdisk(String disk);
public static native void dreamtime(long clock);
public static void show_osd() {
JNIdc.vjoy(13, 1,0,0,0);
}
public static void show_osd() {
JNIdc.vjoy(13, 1,0,0,0);
}
public static void hide_osd() {
JNIdc.vjoy(13, 0,0,0,0);
}
public static void hide_osd() {
JNIdc.vjoy(13, 0,0,0,0);
}
}

View File

@ -73,100 +73,100 @@ public class Gamepad {
public static final int Xperia_Touchpad = 1048584;
public static final int key_CONT_B = 0x0002;
public static final int key_CONT_A = 0x0004;
public static final int key_CONT_START = 0x0008;
public static final int key_CONT_DPAD_UP = 0x0010;
public static final int key_CONT_DPAD_DOWN = 0x0020;
public static final int key_CONT_DPAD_LEFT = 0x0040;
public static final int key_CONT_B = 0x0002;
public static final int key_CONT_A = 0x0004;
public static final int key_CONT_START = 0x0008;
public static final int key_CONT_DPAD_UP = 0x0010;
public static final int key_CONT_DPAD_DOWN = 0x0020;
public static final int key_CONT_DPAD_LEFT = 0x0040;
public static final int key_CONT_DPAD_RIGHT = 0x0080;
public static final int key_CONT_Y = 0x0200;
public static final int key_CONT_X = 0x0400;
public static final int key_CONT_Y = 0x0200;
public static final int key_CONT_X = 0x0400;
public int[] getConsoleController() {
return new int[] {
OuyaController.BUTTON_O, key_CONT_A,
OuyaController.BUTTON_A, key_CONT_B,
OuyaController.BUTTON_U, key_CONT_X,
OuyaController.BUTTON_Y, key_CONT_Y,
OuyaController.BUTTON_O, key_CONT_A,
OuyaController.BUTTON_A, key_CONT_B,
OuyaController.BUTTON_U, key_CONT_X,
OuyaController.BUTTON_Y, key_CONT_Y,
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
getStartButtonCode(), key_CONT_START,
getSelectButtonCode(), getSelectButtonCode()
getStartButtonCode(), key_CONT_START,
getSelectButtonCode(), getSelectButtonCode()
// Redundant, but verifies it is mapped properly
};
}
public int[] getXPlayController() {
return new int[] {
KeyEvent.KEYCODE_DPAD_CENTER, key_CONT_A,
KeyEvent.KEYCODE_BACK, key_CONT_B,
OuyaController.BUTTON_U, key_CONT_X,
OuyaController.BUTTON_Y, key_CONT_Y,
KeyEvent.KEYCODE_DPAD_CENTER, key_CONT_A,
KeyEvent.KEYCODE_BACK, key_CONT_B,
OuyaController.BUTTON_U, key_CONT_X,
OuyaController.BUTTON_Y, key_CONT_Y,
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
getStartButtonCode(), key_CONT_START,
getSelectButtonCode(), getSelectButtonCode()
getStartButtonCode(), key_CONT_START,
getSelectButtonCode(), getSelectButtonCode()
// Redundant, but verifies it is mapped properly
};
}
public int[] getOUYAController() {
return new int[] {
OuyaController.BUTTON_O, key_CONT_A,
OuyaController.BUTTON_A, key_CONT_B,
OuyaController.BUTTON_U, key_CONT_X,
OuyaController.BUTTON_Y, key_CONT_Y,
OuyaController.BUTTON_O, key_CONT_A,
OuyaController.BUTTON_A, key_CONT_B,
OuyaController.BUTTON_U, key_CONT_X,
OuyaController.BUTTON_Y, key_CONT_Y,
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
OuyaController.BUTTON_DPAD_UP, key_CONT_DPAD_UP,
OuyaController.BUTTON_DPAD_DOWN, key_CONT_DPAD_DOWN,
OuyaController.BUTTON_DPAD_LEFT, key_CONT_DPAD_LEFT,
OuyaController.BUTTON_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
getStartButtonCode(), key_CONT_START,
OuyaController.BUTTON_R3, key_CONT_START
getStartButtonCode(), key_CONT_START,
OuyaController.BUTTON_R3, key_CONT_START
};
}
public int[] getMogaController() {
return new int[] {
KeyEvent.KEYCODE_BUTTON_A, key_CONT_A,
KeyEvent.KEYCODE_BUTTON_B, key_CONT_B,
KeyEvent.KEYCODE_BUTTON_X, key_CONT_X,
KeyEvent.KEYCODE_BUTTON_Y, key_CONT_Y,
KeyEvent.KEYCODE_BUTTON_A, key_CONT_A,
KeyEvent.KEYCODE_BUTTON_B, key_CONT_B,
KeyEvent.KEYCODE_BUTTON_X, key_CONT_X,
KeyEvent.KEYCODE_BUTTON_Y, key_CONT_Y,
KeyEvent.KEYCODE_DPAD_UP, key_CONT_DPAD_UP,
KeyEvent.KEYCODE_DPAD_DOWN, key_CONT_DPAD_DOWN,
KeyEvent.KEYCODE_DPAD_LEFT, key_CONT_DPAD_LEFT,
KeyEvent.KEYCODE_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
KeyEvent.KEYCODE_DPAD_UP, key_CONT_DPAD_UP,
KeyEvent.KEYCODE_DPAD_DOWN, key_CONT_DPAD_DOWN,
KeyEvent.KEYCODE_DPAD_LEFT, key_CONT_DPAD_LEFT,
KeyEvent.KEYCODE_DPAD_RIGHT, key_CONT_DPAD_RIGHT,
getStartButtonCode(), key_CONT_START,
getSelectButtonCode(), getSelectButtonCode()
getStartButtonCode(), key_CONT_START,
getSelectButtonCode(), getSelectButtonCode()
};
}
public int[] setModifiedKeys(String id, int playerNum, SharedPreferences mPrefs) {
return new int[] {
mPrefs.getInt(pref_button_a + id, OuyaController.BUTTON_O), key_CONT_A,
mPrefs.getInt(pref_button_b + id, OuyaController.BUTTON_A), key_CONT_B,
mPrefs.getInt(pref_button_x + id, OuyaController.BUTTON_U), key_CONT_X,
mPrefs.getInt(pref_button_y + id, OuyaController.BUTTON_Y), key_CONT_Y,
mPrefs.getInt(pref_button_a + id, OuyaController.BUTTON_O), key_CONT_A,
mPrefs.getInt(pref_button_b + id, OuyaController.BUTTON_A), key_CONT_B,
mPrefs.getInt(pref_button_x + id, OuyaController.BUTTON_U), key_CONT_X,
mPrefs.getInt(pref_button_y + id, OuyaController.BUTTON_Y), key_CONT_Y,
mPrefs.getInt(pref_dpad_up + id, OuyaController.BUTTON_DPAD_UP), key_CONT_DPAD_UP,
mPrefs.getInt(pref_dpad_down + id, OuyaController.BUTTON_DPAD_DOWN), key_CONT_DPAD_DOWN,
mPrefs.getInt(pref_dpad_left + id, OuyaController.BUTTON_DPAD_LEFT), key_CONT_DPAD_LEFT,
mPrefs.getInt(pref_dpad_right + id, OuyaController.BUTTON_DPAD_RIGHT), key_CONT_DPAD_RIGHT,
mPrefs.getInt(pref_dpad_up + id, OuyaController.BUTTON_DPAD_UP), key_CONT_DPAD_UP,
mPrefs.getInt(pref_dpad_down + id, OuyaController.BUTTON_DPAD_DOWN), key_CONT_DPAD_DOWN,
mPrefs.getInt(pref_dpad_left + id, OuyaController.BUTTON_DPAD_LEFT), key_CONT_DPAD_LEFT,
mPrefs.getInt(pref_dpad_right + id, OuyaController.BUTTON_DPAD_RIGHT), key_CONT_DPAD_RIGHT,
mPrefs.getInt(pref_button_start + id, getStartButtonCode()), key_CONT_START,
mPrefs.getInt(pref_button_select + id, getSelectButtonCode()), getSelectButtonCode()
mPrefs.getInt(pref_button_start + id, getStartButtonCode()), key_CONT_START,
mPrefs.getInt(pref_button_select + id, getSelectButtonCode()), getSelectButtonCode()
};
}

View File

@ -11,7 +11,6 @@ import android.os.Build;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
import com.bda.controller.Controller;
import com.bda.controller.ControllerListener;
@ -19,14 +18,13 @@ import com.bda.controller.KeyEvent;
import com.bda.controller.MotionEvent;
import com.bda.controller.StateEvent;
import com.reicast.emulator.R;
import com.reicast.emulator.emu.JNIdc;
/******************************************************************************/
/*
*/
public class MOGAInput
public final class MOGAInput
{
private SharedPreferences prefs;
@ -41,7 +39,8 @@ public class MOGAInput
private String notify;
private Gamepad pad;
Activity act;
private Activity act;
public MOGAInput()
{
/*
@ -181,19 +180,19 @@ public class MOGAInput
}
if (event.getState() == StateEvent.STATE_CONNECTION && event.getAction() == ACTION_CONNECTED) {
int mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
pad.isMogaPro[playerNum] = true;
pad.isActiveMoga[playerNum] = true;
Log.d("com.reicast.emulator", act.getApplicationContext().getString(R.string.moga_pro_connect));
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
pad.isMogaPro[playerNum] = false;
pad.isActiveMoga[playerNum] = true;
Log.d("com.reicast.emulator", act.getApplicationContext().getString(R.string.moga_connect));
}
if (pad.isActiveMoga[playerNum]) {
notifyMogaConnected(notify, playerNum);
}
int mControllerVersion = mController.getState(Controller.STATE_CURRENT_PRODUCT_VERSION);
if (mControllerVersion == Controller.ACTION_VERSION_MOGAPRO) {
pad.isMogaPro[playerNum] = true;
pad.isActiveMoga[playerNum] = true;
Log.d("com.reicast.emulator", act.getString(R.string.moga_pro_connect));
} else if (mControllerVersion == Controller.ACTION_VERSION_MOGA) {
pad.isMogaPro[playerNum] = false;
pad.isActiveMoga[playerNum] = true;
Log.d("com.reicast.emulator", act.getString(R.string.moga_connect));
}
if (pad.isActiveMoga[playerNum]) {
notifyMogaConnected(notify, playerNum);
}
}
}
}

View File

@ -105,30 +105,30 @@ public class VJoy {
}
public static void resetCustomVjoyValues(Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().remove("touch_x_shift_dpad").commit();
prefs.edit().remove("touch_y_shift_dpad").commit();
prefs.edit().remove("touch_scale_dpad").commit();
prefs.edit().remove("touch_x_shift_dpad").commit();
prefs.edit().remove("touch_y_shift_dpad").commit();
prefs.edit().remove("touch_scale_dpad").commit();
prefs.edit().remove("touch_x_shift_buttons").commit();
prefs.edit().remove("touch_y_shift_buttons").commit();
prefs.edit().remove("touch_scale_buttons").commit();
prefs.edit().remove("touch_x_shift_buttons").commit();
prefs.edit().remove("touch_y_shift_buttons").commit();
prefs.edit().remove("touch_scale_buttons").commit();
prefs.edit().remove("touch_x_shift_start").commit();
prefs.edit().remove("touch_y_shift_start").commit();
prefs.edit().remove("touch_scale_start").commit();
prefs.edit().remove("touch_x_shift_start").commit();
prefs.edit().remove("touch_y_shift_start").commit();
prefs.edit().remove("touch_scale_start").commit();
prefs.edit().remove("touch_x_shift_left_trigger").commit();
prefs.edit().remove("touch_y_shift_left_trigger").commit();
prefs.edit().remove("touch_scale_left_trigger").commit();
prefs.edit().remove("touch_x_shift_left_trigger").commit();
prefs.edit().remove("touch_y_shift_left_trigger").commit();
prefs.edit().remove("touch_scale_left_trigger").commit();
prefs.edit().remove("touch_x_shift_right_trigger").commit();
prefs.edit().remove("touch_y_shift_right_trigger").commit();
prefs.edit().remove("touch_scale_right_trigger").commit();
prefs.edit().remove("touch_x_shift_right_trigger").commit();
prefs.edit().remove("touch_y_shift_right_trigger").commit();
prefs.edit().remove("touch_scale_right_trigger").commit();
prefs.edit().remove("touch_x_shift_analog").commit();
prefs.edit().remove("touch_y_shift_analog").commit();
prefs.edit().remove("touch_scale_analog").commit();
}
prefs.edit().remove("touch_x_shift_analog").commit();
prefs.edit().remove("touch_y_shift_analog").commit();
prefs.edit().remove("touch_scale_analog").commit();
}
}

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>ReicastDebug</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>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1,4 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.source=1.6

View File

@ -1,57 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.reicast.emulator.debug"
android:sharedUserId="android.uid.reicast"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="com.reicast.emulator.debug.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.reicast.emulator.debug.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity android:name=".Debug"
android:excludeFromRecents="true"
android:theme="@style/Theme.PanelTheme" >
<intent-filter>
<action android:name="reicast.emulator.DEBUG" />
<action android:name="reicast.emulator.NOTIFY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".GitHash"
android:excludeFromRecents="true"
android:theme="@style/Theme.PanelTheme" >
<intent-filter>
<action android:name="reicast.emulator.GITHUB" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<receiver
android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.reicast.emulator.debug" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@ -1,95 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="reicast-debug" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="ant.properties" />
<!-- if sdk.dir was not set from one of the property file, then
get it from the ANDROID_HOME env var.
This must be done before we load project.properties since
the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<condition property="ndk.dir" value="${env.ANDROID_NDK}">
<isset property="env.ANDROID_NDK" />
</condition>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>google-services</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>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -1,4 +0,0 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.source=1.6

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.gms"
android:versionCode="3136110"
android:versionName="3.1.36 (673201-10)" >
<uses-sdk android:minSdkVersion="8"/>
</manifest>

View File

@ -1,14 +0,0 @@
Library Project including Google Play services client jar.
This can be used by an Android project to use the API's provided
by Google Play services.
There is technically no source, but the src folder is necessary
to ensure that the build system works. The content is actually
located in the libs/ directory.
USAGE:
Make sure you import this Android library project into your IDE
and set this project as a dependency.

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="google-services" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="ant.properties" />
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var"
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

View File

@ -1 +0,0 @@
doc=../../../docs/reference

View File

@ -1,15 +0,0 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-9
android.library=true

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/common_signin_btn_dark_text_pressed" />
<item
android:state_enabled="false"
android:state_focused="true"
android:color="@color/common_signin_btn_dark_text_disabled" />
<item
android:state_focused="true"
android:color="@color/common_signin_btn_dark_text_focused" />
<item
android:state_enabled="false"
android:color="@color/common_signin_btn_dark_text_disabled" />
<item
android:color="@color/common_signin_btn_dark_text_default" />
</selector>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/common_signin_btn_light_text_pressed" />
<item
android:state_enabled="false"
android:state_focused="true"
android:color="@color/common_signin_btn_light_text_disabled" />
<item
android:state_focused="true"
android:color="@color/common_signin_btn_light_text_focused" />
<item
android:state_enabled="false"
android:color="@color/common_signin_btn_light_text_disabled" />
<item
android:color="@color/common_signin_btn_light_text_default" />
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

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