Merge remote-tracking branch 'origin/master' into skmp/linux86
This commit is contained in:
commit
5ef9d661a6
25
.travis.yml
25
.travis.yml
|
@ -1,7 +1,12 @@
|
||||||
notifications:
|
notifications:
|
||||||
irc: chat.freenode.net#reicast
|
irc: chat.freenode.net#reicast
|
||||||
language: cpp
|
language: android
|
||||||
compiler: gcc
|
android:
|
||||||
|
components:
|
||||||
|
- platform-tools
|
||||||
|
- tools
|
||||||
|
- build-tools-22.0.0
|
||||||
|
- android-21
|
||||||
before_install:
|
before_install:
|
||||||
- openssl aes-256-cbc -K $encrypted_c726d225a9d9_key -iv $encrypted_c726d225a9d9_iv
|
- openssl aes-256-cbc -K $encrypted_c726d225a9d9_key -iv $encrypted_c726d225a9d9_iv
|
||||||
-in debug.keystore.enc -out debug.keystore -d
|
-in debug.keystore.enc -out debug.keystore -d
|
||||||
|
@ -13,15 +18,11 @@ before_install:
|
||||||
- GIT_HASH=`git log --pretty=format:'%h' -n 1`
|
- GIT_HASH=`git log --pretty=format:'%h' -n 1`
|
||||||
- GIT_BUILD=`git describe --all`-$GIT_HASH
|
- GIT_BUILD=`git describe --all`-$GIT_HASH
|
||||||
install:
|
install:
|
||||||
- download_extract http://dl.google.com/android/ndk/android-ndk-r9c-linux-x86_64.tar.bz2
|
- wget http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin
|
||||||
android-ndk-r9c-linux-x86_64.tar.bz2
|
- chmod +x android-ndk-r10d-linux-x86_64.bin
|
||||||
- download_extract_zip http://dl.google.com/android/adt/adt-bundle-linux-x86_64-20131030.zip
|
- ./android-ndk-r10d-linux-x86_64.bin -y | grep -v Extracting
|
||||||
adt-bundle-linux-x86_64-20131030.zip
|
- mv android-ndk-r10d android-ndk
|
||||||
- mv android-ndk-r9c android-ndk
|
- rm android-ndk-r10d-linux-x86_64.bin
|
||||||
- mv adt-bundle-linux-x86_64-20131030/sdk/ android-sdk
|
|
||||||
- rm android-ndk-r9c-linux-x86_64.tar.bz2
|
|
||||||
- rm adt-bundle-linux-x86_64-20131030.zip
|
|
||||||
- export ANDROID_HOME=$(pwd)/android-sdk
|
|
||||||
- export NDK=$(pwd)/android-ndk
|
- export NDK=$(pwd)/android-ndk
|
||||||
- export ANDROID_NDK=$(pwd)/android-ndk
|
- export ANDROID_NDK=$(pwd)/android-ndk
|
||||||
- export PATH=${PATH}:$ANDROID_HOME/tools
|
- export PATH=${PATH}:$ANDROID_HOME/tools
|
||||||
|
@ -32,7 +33,7 @@ install:
|
||||||
before_script:
|
before_script:
|
||||||
script:
|
script:
|
||||||
- cd shell/android
|
- cd shell/android
|
||||||
- android update project -p . --target "android-19"
|
- android update project -p . --target "android-21"
|
||||||
- export NUMBER_OF_PROCESSORS=2
|
- export NUMBER_OF_PROCESSORS=2
|
||||||
- ant debug
|
- ant debug
|
||||||
before_deploy:
|
before_deploy:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#MFLAGS := -marm -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3-d16 -mfloat-abi=softfp
|
#MFLAGS := -marm -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3-d16 -mfloat-abi=softfp
|
||||||
#ASFLAGS := -march=armv7-a -mfpu=vfp-d16 -mfloat-abi=softfp
|
#ASFLAGS := -march=armv7-a -mfpu=vfp-d16 -mfloat-abi=softfp
|
||||||
#LDFLAGS := -g -Wl,-Map,$(notdir $@).map,--gc-sections -Wl,-O3 -Wl,--sort-common
|
#LDFLAGS := -Wl,-Map,$(notdir $@).map,--gc-sections -Wl,-O3 -Wl,--sort-common
|
||||||
|
|
||||||
RZDCY_SRC_DIR ?= $(call my-dir)
|
RZDCY_SRC_DIR ?= $(call my-dir)
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ RZDCY_FILES += $(foreach dir,$(addprefix $(RZDCY_SRC_DIR)/,$(RZDCY_MODULES)),$(w
|
||||||
|
|
||||||
ifdef FOR_PANDORA
|
ifdef FOR_PANDORA
|
||||||
RZDCY_CFLAGS := \
|
RZDCY_CFLAGS := \
|
||||||
$(CFLAGS) -c -g -O3 -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps \
|
$(CFLAGS) -c -O3 -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps \
|
||||||
-DRELEASE -DPANDORA\
|
-DRELEASE -DPANDORA\
|
||||||
-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
|
-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
|
||||||
-frename-registers -fsingle-precision-constant -ffast-math \
|
-frename-registers -fsingle-precision-constant -ffast-math \
|
||||||
|
@ -66,7 +66,7 @@ RZDCY_CFLAGS := \
|
||||||
RZDCY_CFLAGS += -DTARGET_LINUX_ARMELv7
|
RZDCY_CFLAGS += -DTARGET_LINUX_ARMELv7
|
||||||
else
|
else
|
||||||
RZDCY_CFLAGS := \
|
RZDCY_CFLAGS := \
|
||||||
$(CFLAGS) -c -g -O3 -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps \
|
$(CFLAGS) -c -O3 -I$(RZDCY_SRC_DIR) -I$(RZDCY_SRC_DIR)/deps \
|
||||||
-D_ANDROID -DRELEASE\
|
-D_ANDROID -DRELEASE\
|
||||||
-frename-registers -fsingle-precision-constant -ffast-math \
|
-frename-registers -fsingle-precision-constant -ffast-math \
|
||||||
-ftree-vectorize -fomit-frame-pointer
|
-ftree-vectorize -fomit-frame-pointer
|
||||||
|
|
|
@ -19,6 +19,7 @@ u32 tmu_prescaler_mask[3];
|
||||||
|
|
||||||
u32 tmu_shift[3];
|
u32 tmu_shift[3];
|
||||||
u32 tmu_mask[3];
|
u32 tmu_mask[3];
|
||||||
|
u64 tmu_mask64[3];
|
||||||
|
|
||||||
const u32 tmu_ch_bit[3]={1,2,4};
|
const u32 tmu_ch_bit[3]={1,2,4};
|
||||||
|
|
||||||
|
@ -75,18 +76,28 @@ void UpdateTMU_i(u32 Cycles)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
u32 tmu_ch_base[3];
|
u32 tmu_ch_base[3];
|
||||||
|
u64 tmu_ch_base64[3];
|
||||||
|
|
||||||
u32 read_TMU_TCNTch(u32 ch)
|
u32 read_TMU_TCNTch(u32 ch)
|
||||||
{
|
{
|
||||||
return tmu_ch_base[ch] - ((sh4_sched_now64() >> tmu_shift[ch])&tmu_mask[ch]);
|
return tmu_ch_base[ch] - ((sh4_sched_now64() >> tmu_shift[ch])&tmu_mask[ch]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s64 read_TMU_TCNTch64(u32 ch)
|
||||||
|
{
|
||||||
|
return tmu_ch_base64[ch] - ((sh4_sched_now64() >> tmu_shift[ch])&tmu_mask64[ch]);
|
||||||
|
}
|
||||||
|
|
||||||
void sched_chan_tick(int ch)
|
void sched_chan_tick(int ch)
|
||||||
{
|
{
|
||||||
//schedule next interrupt
|
//schedule next interrupt
|
||||||
//return TMU_TCOR(ch) << tmu_shift[ch];
|
//return TMU_TCOR(ch) << tmu_shift[ch];
|
||||||
|
|
||||||
u32 togo = read_TMU_TCNTch(ch);
|
u32 togo = read_TMU_TCNTch(ch);
|
||||||
|
|
||||||
|
if (togo > SH4_MAIN_CLOCK)
|
||||||
|
togo = SH4_MAIN_CLOCK;
|
||||||
|
|
||||||
u32 cycles = togo << tmu_shift[ch];
|
u32 cycles = togo << tmu_shift[ch];
|
||||||
|
|
||||||
if (cycles > SH4_MAIN_CLOCK)
|
if (cycles > SH4_MAIN_CLOCK)
|
||||||
|
@ -103,6 +114,7 @@ void write_TMU_TCNTch(u32 ch, u32 data)
|
||||||
{
|
{
|
||||||
//u32 TCNT=read_TMU_TCNTch(ch);
|
//u32 TCNT=read_TMU_TCNTch(ch);
|
||||||
tmu_ch_base[ch]=data+((sh4_sched_now64()>>tmu_shift[ch])&tmu_mask[ch]);
|
tmu_ch_base[ch]=data+((sh4_sched_now64()>>tmu_shift[ch])&tmu_mask[ch]);
|
||||||
|
tmu_ch_base64[ch] = data + ((sh4_sched_now64() >> tmu_shift[ch])&tmu_mask64[ch]);
|
||||||
|
|
||||||
sched_chan_tick(ch);
|
sched_chan_tick(ch);
|
||||||
}
|
}
|
||||||
|
@ -123,6 +135,7 @@ void turn_on_off_ch(u32 ch, bool on)
|
||||||
{
|
{
|
||||||
u32 TCNT=read_TMU_TCNTch(ch);
|
u32 TCNT=read_TMU_TCNTch(ch);
|
||||||
tmu_mask[ch]=on?0xFFFFFFFF:0x00000000;
|
tmu_mask[ch]=on?0xFFFFFFFF:0x00000000;
|
||||||
|
tmu_mask64[ch] = on ? 0xFFFFFFFFFFFFFFFF : 0x0000000000000000;
|
||||||
write_TMU_TCNTch(ch,TCNT);
|
write_TMU_TCNTch(ch,TCNT);
|
||||||
|
|
||||||
sched_chan_tick(ch);
|
sched_chan_tick(ch);
|
||||||
|
@ -214,12 +227,14 @@ int sched_tmu_cb(int ch, int sch_cycl, int jitter)
|
||||||
|
|
||||||
u32 tcnt = read_TMU_TCNTch(ch);
|
u32 tcnt = read_TMU_TCNTch(ch);
|
||||||
|
|
||||||
|
s64 tcnt64 = (s64)read_TMU_TCNTch64(ch);
|
||||||
|
|
||||||
u32 tcor = TMU_TCOR(ch);
|
u32 tcor = TMU_TCOR(ch);
|
||||||
|
|
||||||
u32 cycles = tcor << tmu_shift[ch];
|
u32 cycles = tcor << tmu_shift[ch];
|
||||||
|
|
||||||
//this is not 100% correct
|
//64 bit maths to differentiate big values from overflows
|
||||||
if (abs((s32)tcnt) <= jitter) {
|
if (tcnt64 <= jitter) {
|
||||||
//raise interrupt, timer counted down
|
//raise interrupt, timer counted down
|
||||||
TMU_TCR(ch) |= tmu_underflow;
|
TMU_TCR(ch) |= tmu_underflow;
|
||||||
InterruptPend(tmu_intID[ch], 1);
|
InterruptPend(tmu_intID[ch], 1);
|
||||||
|
@ -227,7 +242,7 @@ int sched_tmu_cb(int ch, int sch_cycl, int jitter)
|
||||||
//printf("Interrupt for %d, %d cycles\n", ch, sch_cycl);
|
//printf("Interrupt for %d, %d cycles\n", ch, sch_cycl);
|
||||||
|
|
||||||
//schedule next trigger by writing the TCNT register
|
//schedule next trigger by writing the TCNT register
|
||||||
write_TMU_TCNTch(ch, tcor - tcnt);
|
write_TMU_TCNTch(ch, tcor + tcnt);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
||||||
|
|
|
@ -36,11 +36,11 @@ vector<sched_list> list;
|
||||||
|
|
||||||
int sh4_sched_next_id=-1;
|
int sh4_sched_next_id=-1;
|
||||||
|
|
||||||
u32 sh4_sched_remaining(int id)
|
u32 sh4_sched_remaining(int id, u32 reference)
|
||||||
{
|
{
|
||||||
if (list[id].end != -1)
|
if (list[id].end != -1)
|
||||||
{
|
{
|
||||||
return list[id].end-sh4_sched_now();
|
return list[id].end - reference;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -48,6 +48,11 @@ u32 sh4_sched_remaining(int id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 sh4_sched_remaining(int id)
|
||||||
|
{
|
||||||
|
return sh4_sched_remaining(id, sh4_sched_now());
|
||||||
|
}
|
||||||
|
|
||||||
void sh4_sched_ffts()
|
void sh4_sched_ffts()
|
||||||
{
|
{
|
||||||
u32 diff=-1;
|
u32 diff=-1;
|
||||||
|
@ -103,10 +108,19 @@ u64 sh4_sched_now64()
|
||||||
}
|
}
|
||||||
void sh4_sched_request(int id, int cycles)
|
void sh4_sched_request(int id, int cycles)
|
||||||
{
|
{
|
||||||
verify(cycles <= SH4_MAIN_CLOCK);
|
verify(cycles== -1 || (cycles >= 0 && cycles <= SH4_MAIN_CLOCK));
|
||||||
|
|
||||||
list[id].start=sh4_sched_now();
|
list[id].start=sh4_sched_now();
|
||||||
|
|
||||||
|
if (cycles == -1) {
|
||||||
|
list[id].end = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
list[id].end = list[id].start + cycles;
|
list[id].end = list[id].start + cycles;
|
||||||
|
if (list[id].end == -1)
|
||||||
|
list[id].end++;
|
||||||
|
}
|
||||||
|
|
||||||
sh4_sched_ffts();
|
sh4_sched_ffts();
|
||||||
}
|
}
|
||||||
|
@ -150,8 +164,9 @@ void sh4_sched_tick(int cycles)
|
||||||
{
|
{
|
||||||
for (int i=0;i<list.size();i++)
|
for (int i=0;i<list.size();i++)
|
||||||
{
|
{
|
||||||
if ((list[i].end-fztime)<=(u32)cycles)
|
int remaining = sh4_sched_remaining(i, fztime);
|
||||||
{
|
verify(remaining >= 0 || remaining == -1);
|
||||||
|
if (remaining >= 0 && remaining <= (u32)cycles) {
|
||||||
handle_cb(i);
|
handle_cb(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
#if defined(_ANDROID)
|
#if defined(_ANDROID)
|
||||||
#include <asm/sigcontext.h>
|
#include <asm/sigcontext.h>
|
||||||
|
#if 0
|
||||||
typedef struct ucontext_t {
|
typedef struct ucontext_t {
|
||||||
unsigned long uc_flags;
|
unsigned long uc_flags;
|
||||||
struct ucontext_t *uc_link;
|
struct ucontext_t *uc_link;
|
||||||
|
@ -31,17 +32,18 @@ struct sigcontext uc_mcontext;
|
||||||
*/
|
*/
|
||||||
} ucontext_t;
|
} ucontext_t;
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if HOST_CPU == CPU_ARM
|
#if HOST_CPU == CPU_ARM
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.arm_pc)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.arm_pc)
|
||||||
#elif HOST_CPU == CPU_MIPS
|
#elif HOST_CPU == CPU_MIPS
|
||||||
#ifdef _ANDROID
|
#if 0 && _ANDROID
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.sc_pc)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.sc_pc)
|
||||||
#else
|
#else
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.pc)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.pc)
|
||||||
#endif
|
#endif
|
||||||
#elif HOST_CPU == CPU_X86
|
#elif HOST_CPU == CPU_X86
|
||||||
#ifdef _ANDROID
|
#if 0 && _ANDROID
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.eip)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.eip)
|
||||||
#else
|
#else
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.gregs[REG_EIP])
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.gregs[REG_EIP])
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
#if defined(_ANDROID)
|
#if defined(_ANDROID)
|
||||||
#include <asm/sigcontext.h>
|
#include <asm/sigcontext.h>
|
||||||
|
#if 0
|
||||||
typedef struct ucontext_t
|
typedef struct ucontext_t
|
||||||
{
|
{
|
||||||
unsigned long uc_flags;
|
unsigned long uc_flags;
|
||||||
|
@ -52,20 +52,20 @@ typedef struct ucontext_t
|
||||||
* we don't use them for now...
|
* we don't use them for now...
|
||||||
*/
|
*/
|
||||||
} ucontext_t;
|
} ucontext_t;
|
||||||
|
#endif
|
||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HOST_CPU == CPU_ARM
|
#if HOST_CPU == CPU_ARM
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.arm_pc)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.arm_pc)
|
||||||
#elif HOST_CPU == CPU_MIPS
|
#elif HOST_CPU == CPU_MIPS
|
||||||
#ifdef _ANDROID
|
#if 0 && _ANDROID
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.sc_pc)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.sc_pc)
|
||||||
#else
|
#else
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.pc)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.pc)
|
||||||
#endif
|
#endif
|
||||||
#elif HOST_CPU == CPU_X86
|
#elif HOST_CPU == CPU_X86
|
||||||
#ifdef _ANDROID
|
#if 0 && _ANDROID
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.eip)
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.eip)
|
||||||
#else
|
#else
|
||||||
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.gregs[REG_EIP])
|
#define GET_PC_FROM_CONTEXT(c) (((ucontext_t *)(c))->uc_mcontext.gregs[REG_EIP])
|
||||||
|
|
|
@ -253,6 +253,8 @@ void LoadSettings()
|
||||||
settings.debug.SerialConsole = cfgLoadInt("config", "Debug.SerialConsoleEnabled", 0) != 0;
|
settings.debug.SerialConsole = cfgLoadInt("config", "Debug.SerialConsoleEnabled", 0) != 0;
|
||||||
|
|
||||||
settings.reios.ElfFile = cfgLoadStr("reios", "ElfFile","");
|
settings.reios.ElfFile = cfgLoadStr("reios", "ElfFile","");
|
||||||
|
|
||||||
|
settings.validate.OpenGlChecks = cfgLoadInt("validate", "OpenGlChecks", 0) != 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
settings.bios.UseReios = cfgLoadInt("config", "bios.UseReios", 0);
|
settings.bios.UseReios = cfgLoadInt("config", "bios.UseReios", 0);
|
||||||
|
|
|
@ -183,10 +183,10 @@ typedef ConditionCode eCC;
|
||||||
#define rfp_r9 r9
|
#define rfp_r9 r9
|
||||||
|
|
||||||
|
|
||||||
typedef void FPBinOP (eFSReg Sd, eFSReg Sn, eFSReg Sm, ConditionCode CC=CC_AL);
|
typedef void FPBinOP (eFSReg Sd, eFSReg Sn, eFSReg Sm, ConditionCode CC);
|
||||||
typedef void FPUnOP (eFSReg Sd, eFSReg Sm, ConditionCode CC=CC_AL);
|
typedef void FPUnOP (eFSReg Sd, eFSReg Sm, ConditionCode CC);
|
||||||
typedef void BinaryOP (eReg Rd, eReg Rn, eReg Rm, ConditionCode CC=AL);
|
typedef void BinaryOP (eReg Rd, eReg Rn, eReg Rm, ConditionCode CC);
|
||||||
typedef void BinaryOPImm (eReg Rd, eReg Rn, s32 sImm8, ConditionCode CC=AL);
|
typedef void BinaryOPImm (eReg Rd, eReg Rn, s32 sImm8, ConditionCode CC);
|
||||||
typedef void UnaryOP (eReg Rd, eReg Rs);
|
typedef void UnaryOP (eReg Rd, eReg Rs);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
@@@@@@@@@@ some helpers @@@@@@@@@@
|
@@@@@@@@@@ some helpers @@@@@@@@@@
|
||||||
|
|
||||||
.global do_sqw_nommu_area_3
|
.global do_sqw_nommu_area_3
|
||||||
|
.hidden do_sqw_nommu_area_3
|
||||||
@r0: addr
|
@r0: addr
|
||||||
@r1: sq_both
|
@r1: sq_both
|
||||||
do_sqw_nommu_area_3:
|
do_sqw_nommu_area_3:
|
||||||
|
@ -25,6 +26,7 @@ vstm r3,{d0-d3}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global TAWriteSQ
|
.global TAWriteSQ
|
||||||
|
.hidden TAWriteSQ
|
||||||
@r0: addr
|
@r0: addr
|
||||||
@r1: sq_both
|
@r1: sq_both
|
||||||
TAWriteSQ:
|
TAWriteSQ:
|
||||||
|
@ -57,6 +59,7 @@ bx lr
|
||||||
@@@@@@@@@@ ngen_LinkBlock_*****_stub @@@@@@@@@@
|
@@@@@@@@@@ ngen_LinkBlock_*****_stub @@@@@@@@@@
|
||||||
|
|
||||||
.global ngen_LinkBlock_Generic_stub
|
.global ngen_LinkBlock_Generic_stub
|
||||||
|
.hidden ngen_LinkBlock_Generic_stub
|
||||||
ngen_LinkBlock_Generic_stub:
|
ngen_LinkBlock_Generic_stub:
|
||||||
|
|
||||||
mov r1,r4 @ djump/pc -> in case we need it ..
|
mov r1,r4 @ djump/pc -> in case we need it ..
|
||||||
|
@ -64,12 +67,14 @@ ngen_LinkBlock_Generic_stub:
|
||||||
|
|
||||||
|
|
||||||
.global ngen_LinkBlock_cond_Branch_stub
|
.global ngen_LinkBlock_cond_Branch_stub
|
||||||
|
.hidden ngen_LinkBlock_cond_Branch_stub
|
||||||
ngen_LinkBlock_cond_Branch_stub:
|
ngen_LinkBlock_cond_Branch_stub:
|
||||||
|
|
||||||
mov r1,#1
|
mov r1,#1
|
||||||
b ngen_LinkBlock_Shared_stub
|
b ngen_LinkBlock_Shared_stub
|
||||||
|
|
||||||
.global ngen_LinkBlock_cond_Next_stub
|
.global ngen_LinkBlock_cond_Next_stub
|
||||||
|
.hidden ngen_LinkBlock_cond_Next_stub
|
||||||
ngen_LinkBlock_cond_Next_stub:
|
ngen_LinkBlock_cond_Next_stub:
|
||||||
|
|
||||||
mov r1,#0
|
mov r1,#0
|
||||||
|
@ -77,6 +82,7 @@ ngen_LinkBlock_cond_Next_stub:
|
||||||
|
|
||||||
|
|
||||||
.global ngen_LinkBlock_Shared_stub
|
.global ngen_LinkBlock_Shared_stub
|
||||||
|
.hidden ngen_LinkBlock_Shared_stub
|
||||||
ngen_LinkBlock_Shared_stub:
|
ngen_LinkBlock_Shared_stub:
|
||||||
|
|
||||||
mov r0,lr
|
mov r0,lr
|
||||||
|
@ -88,6 +94,7 @@ ngen_LinkBlock_Shared_stub:
|
||||||
|
|
||||||
|
|
||||||
.global ngen_FailedToFindBlock_
|
.global ngen_FailedToFindBlock_
|
||||||
|
.hidden ngen_FailedToFindBlock_
|
||||||
ngen_FailedToFindBlock_:
|
ngen_FailedToFindBlock_:
|
||||||
mov r0,r4
|
mov r0,r4
|
||||||
bl rdv_FailedToFindBlock
|
bl rdv_FailedToFindBlock
|
||||||
|
@ -96,6 +103,7 @@ ngen_FailedToFindBlock_:
|
||||||
@@@@@@@@@@ ngen_blockcheckfail @@@@@@@@@@
|
@@@@@@@@@@ ngen_blockcheckfail @@@@@@@@@@
|
||||||
|
|
||||||
.global ngen_blockcheckfail
|
.global ngen_blockcheckfail
|
||||||
|
.hidden ngen_blockcheckfail
|
||||||
ngen_blockcheckfail:
|
ngen_blockcheckfail:
|
||||||
bl rdv_BlockCheckFail
|
bl rdv_BlockCheckFail
|
||||||
bx r0
|
bx r0
|
||||||
|
@ -111,6 +119,7 @@ ngen_blockcheckfail:
|
||||||
|
|
||||||
|
|
||||||
.global ngen_mainloop
|
.global ngen_mainloop
|
||||||
|
.hidden ngen_mainloop
|
||||||
ngen_mainloop:
|
ngen_mainloop:
|
||||||
|
|
||||||
push { r4-r12,lr }
|
push { r4-r12,lr }
|
||||||
|
@ -126,6 +135,7 @@ push { r4-r12,lr }
|
||||||
|
|
||||||
@this code is here for fall-through behavior of do_iter
|
@this code is here for fall-through behavior of do_iter
|
||||||
.global intc_sched
|
.global intc_sched
|
||||||
|
.hidden intc_sched
|
||||||
intc_sched: @ next_pc _MUST_ be on ram
|
intc_sched: @ next_pc _MUST_ be on ram
|
||||||
add r9,r9,#SH4_TIMESLICE
|
add r9,r9,#SH4_TIMESLICE
|
||||||
mov r4,lr
|
mov r4,lr
|
||||||
|
@ -140,6 +150,7 @@ do_iter:
|
||||||
mov r4,r0
|
mov r4,r0
|
||||||
|
|
||||||
.global no_update
|
.global no_update
|
||||||
|
.hidden no_update
|
||||||
no_update: @ next_pc _MUST_ be on r4 *R4 NOT R0 anymore*
|
no_update: @ next_pc _MUST_ be on r4 *R4 NOT R0 anymore*
|
||||||
|
|
||||||
sub r2,r8,#33816576
|
sub r2,r8,#33816576
|
||||||
|
@ -157,6 +168,7 @@ end_ngen_mainloop:
|
||||||
@@@@@@@@@@ ngen_mainloop @@@@@@@@@@
|
@@@@@@@@@@ ngen_mainloop @@@@@@@@@@
|
||||||
|
|
||||||
.global arm_compilecode
|
.global arm_compilecode
|
||||||
|
.hidden arm_compilecode
|
||||||
arm_compilecode:
|
arm_compilecode:
|
||||||
bl CompileCode
|
bl CompileCode
|
||||||
b arm_dispatch
|
b arm_dispatch
|
||||||
|
@ -167,6 +179,7 @@ XEntryPoints: .word EntryPoints
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.global arm_mainloop
|
.global arm_mainloop
|
||||||
|
.hidden arm_mainloop
|
||||||
arm_mainloop: @(cntx,lookup_base,cycles)
|
arm_mainloop: @(cntx,lookup_base,cycles)
|
||||||
|
|
||||||
push {r4,r5,r8,r9,lr}
|
push {r4,r5,r8,r9,lr}
|
||||||
|
@ -185,6 +198,7 @@ push {r4,r5,r8,r9,lr}
|
||||||
b arm_dispatch
|
b arm_dispatch
|
||||||
|
|
||||||
.global arm_dispatch
|
.global arm_dispatch
|
||||||
|
.hidden arm_dispatch
|
||||||
arm_dispatch:
|
arm_dispatch:
|
||||||
#ifdef TARGET_IPHONE
|
#ifdef TARGET_IPHONE
|
||||||
ldrd r0,r1,[r8,#184] @load: Next PC, interrupt
|
ldrd r0,r1,[r8,#184] @load: Next PC, interrupt
|
||||||
|
@ -203,6 +217,7 @@ arm_dofiq:
|
||||||
b arm_dispatch
|
b arm_dispatch
|
||||||
|
|
||||||
.global arm_exit
|
.global arm_exit
|
||||||
|
.hidden arm_exit
|
||||||
arm_exit:
|
arm_exit:
|
||||||
str r5,[r8,#192] @if timeslice is over, save remaining cycles
|
str r5,[r8,#192] @if timeslice is over, save remaining cycles
|
||||||
pop {r4,r5,r8,r9,pc}
|
pop {r4,r5,r8,r9,pc}
|
||||||
|
@ -211,6 +226,7 @@ arm_exit:
|
||||||
@matrix mul
|
@matrix mul
|
||||||
#ifndef _ANDROID
|
#ifndef _ANDROID
|
||||||
.global ftrv_asm
|
.global ftrv_asm
|
||||||
|
.hidden ftrv_asm
|
||||||
ftrv_asm:
|
ftrv_asm:
|
||||||
|
|
||||||
@r0=dst,r1=vec,r2=mtx
|
@r0=dst,r1=vec,r2=mtx
|
||||||
|
@ -229,6 +245,7 @@ vstm r0,{d4,d5}
|
||||||
bx lr
|
bx lr
|
||||||
|
|
||||||
.global fipr_asm
|
.global fipr_asm
|
||||||
|
.hidden fipr_asm
|
||||||
fipr_asm:
|
fipr_asm:
|
||||||
|
|
||||||
@ vdot
|
@ vdot
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define glCheck() verify(glGetError()==GL_NO_ERROR)
|
#define glCheck() do { if (unlikely(settings.validate.OpenGlChecks)) { verify(glGetError()==GL_NO_ERROR); } } while(0)
|
||||||
#define eglCheck() false
|
#define eglCheck() false
|
||||||
|
|
||||||
#define VERTEX_POS_ARRAY 0
|
#define VERTEX_POS_ARRAY 0
|
||||||
|
|
|
@ -686,6 +686,10 @@ struct settings_t
|
||||||
struct {
|
struct {
|
||||||
bool SerialConsole;
|
bool SerialConsole;
|
||||||
} debug;
|
} debug;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
bool OpenGlChecks;
|
||||||
|
} validate;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern settings_t settings;
|
extern settings_t settings;
|
||||||
|
|
|
@ -652,18 +652,30 @@ cResetEvent::~cResetEvent()
|
||||||
}
|
}
|
||||||
void cResetEvent::Set()//Signal
|
void cResetEvent::Set()//Signal
|
||||||
{
|
{
|
||||||
|
#if defined(DEBUG_THREADS)
|
||||||
|
Sleep(rand() % 10);
|
||||||
|
#endif
|
||||||
SetEvent(hEvent);
|
SetEvent(hEvent);
|
||||||
}
|
}
|
||||||
void cResetEvent::Reset()//reset
|
void cResetEvent::Reset()//reset
|
||||||
{
|
{
|
||||||
|
#if defined(DEBUG_THREADS)
|
||||||
|
Sleep(rand() % 10);
|
||||||
|
#endif
|
||||||
ResetEvent(hEvent);
|
ResetEvent(hEvent);
|
||||||
}
|
}
|
||||||
void cResetEvent::Wait(u32 msec)//Wait for signal , then reset
|
void cResetEvent::Wait(u32 msec)//Wait for signal , then reset
|
||||||
{
|
{
|
||||||
|
#if defined(DEBUG_THREADS)
|
||||||
|
Sleep(rand() % 10);
|
||||||
|
#endif
|
||||||
WaitForSingleObject(hEvent,msec);
|
WaitForSingleObject(hEvent,msec);
|
||||||
}
|
}
|
||||||
void cResetEvent::Wait()//Wait for signal , then reset
|
void cResetEvent::Wait()//Wait for signal , then reset
|
||||||
{
|
{
|
||||||
|
#if defined(DEBUG_THREADS)
|
||||||
|
Sleep(rand() % 10);
|
||||||
|
#endif
|
||||||
WaitForSingleObject(hEvent,(u32)-1);
|
WaitForSingleObject(hEvent,(u32)-1);
|
||||||
}
|
}
|
||||||
//End AutoResetEvent
|
//End AutoResetEvent
|
||||||
|
|
|
@ -35,18 +35,17 @@
|
||||||
<uses-feature
|
<uses-feature
|
||||||
android:name="android.hardware.gamepad"
|
android:name="android.hardware.gamepad"
|
||||||
android:required="false"/>
|
android:required="false"/>
|
||||||
<!--uses-feature
|
<uses-feature
|
||||||
android:name="android.software.leanback"
|
android:name="android.software.leanback"
|
||||||
android:required="false" /-->
|
android:required="false" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:icon="@drawable/ic_launcher"
|
android:icon="@drawable/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/AppTheme" >
|
android:theme="@style/AppTheme"
|
||||||
<!--
|
|
||||||
android:banner="@drawable/ic_banner"
|
android:banner="@drawable/ic_banner"
|
||||||
android:logo="@drawable/ic_banner"
|
android:logo="@drawable/ic_banner"
|
||||||
android:isGame="true"-->
|
android:isGame="true">
|
||||||
|
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="xperiaplayoptimized_content"
|
android:name="xperiaplayoptimized_content"
|
||||||
|
@ -61,7 +60,7 @@
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
<category android:name="tv.ouya.intent.category.GAME" />
|
<category android:name="tv.ouya.intent.category.GAME" />
|
||||||
<!--category android:name="android.intent.category.LEANBACK_LAUNCHER" /-->
|
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
|
@ -36,9 +36,11 @@ include $(LOCAL_PATH)/../../core/core.mk
|
||||||
LOCAL_SRC_FILES := $(RZDCY_FILES)
|
LOCAL_SRC_FILES := $(RZDCY_FILES)
|
||||||
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/jni/src/Android.cpp)
|
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/jni/src/Android.cpp)
|
||||||
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/jni/src/utils.cpp)
|
LOCAL_SRC_FILES += $(wildcard $(LOCAL_PATH)/jni/src/utils.cpp)
|
||||||
LOCAL_CFLAGS := $(RZDCY_CFLAGS)
|
LOCAL_CFLAGS := $(RZDCY_CFLAGS) -fvisibility=hidden -fvisibility-inlines-hidden -ffunction-sections -fdata-sections
|
||||||
LOCAL_CXXFLAGS := $(RZDCY_CXXFLAGS)
|
LOCAL_CXXFLAGS := $(RZDCY_CXXFLAGS) -fvisibility=hidden -fvisibility-inlines-hidden -ffunction-sections -fdata-sections
|
||||||
|
LOCAL_CPPFLAGS := $(RZDCY_CXXFLAGS) -fvisibility=hidden -fvisibility-inlines-hidden -ffunction-sections -fdata-sections
|
||||||
|
|
||||||
|
LOCAL_CPP_FEATURES :=
|
||||||
LOCAL_SHARED_LIBRARIES:= libcutils libutils
|
LOCAL_SHARED_LIBRARIES:= libcutils libutils
|
||||||
LOCAL_PRELINK_MODULE := false
|
LOCAL_PRELINK_MODULE := false
|
||||||
|
|
||||||
|
@ -49,6 +51,13 @@ LOCAL_LDLIBS := -llog -lGLESv2 -lEGL -lz
|
||||||
#-Wl,-Map,./res/raw/syms.mp3
|
#-Wl,-Map,./res/raw/syms.mp3
|
||||||
LOCAL_ARM_MODE := arm
|
LOCAL_ARM_MODE := arm
|
||||||
|
|
||||||
|
|
||||||
|
ifeq ($(TARGET_ARCH),mips)
|
||||||
|
LOCAL_LDFLAGS += -Wl,--gc-sections
|
||||||
|
else
|
||||||
|
LOCAL_LDFLAGS += -Wl,--gc-sections,--icf=safe
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# android has poor support for hardfp calling.
|
# android has poor support for hardfp calling.
|
||||||
# r9b+ is required, and it only works for internal calls
|
# r9b+ is required, and it only works for internal calls
|
||||||
|
|
|
@ -2,4 +2,4 @@ APP_STL := stlport_static
|
||||||
APP_ABI := armeabi-v7a x86 mips
|
APP_ABI := armeabi-v7a x86 mips
|
||||||
#APP_ABI := armeabi-v7a
|
#APP_ABI := armeabi-v7a
|
||||||
APP_PLATFORM := android-19
|
APP_PLATFORM := android-19
|
||||||
NDK_TOOLCHAIN_VERSION := 4.8
|
#NDK_TOOLCHAIN_VERSION := 4.8
|
||||||
|
|
|
@ -11,4 +11,4 @@
|
||||||
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
||||||
|
|
||||||
# Project target.
|
# Project target.
|
||||||
target=android-19
|
target=android-21
|
||||||
|
|
|
@ -1,56 +1,94 @@
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<string name="menu_settings">Einstellungen</string>
|
<string name="menu_settings">Einstellungen</string>
|
||||||
<string name="system_path">System Pfad (Speicherort des data Ordners welcher dc_boot.bin und dc_flash.bin enthält)</string>
|
|
||||||
<string name="browser_path">Standard System Pfad</string>
|
|
||||||
<string name="games_path">Spiele Pfad (Speicherort von .gdi, .chd oder .cdi Abbildern)</string>
|
|
||||||
<string name="game_path">Standard Spiele Pfad</string>
|
|
||||||
|
|
||||||
<string name="boot_bios">Dreamcast Bios Starten</string>
|
<string name="system_path">System-Pfad (Speicherort des data Ordners welcher dc_boot.bin und dc_flash.bin enthält)</string>
|
||||||
<string name="missing_bios">Fehlendes BIOS. Für einen funktionsfähigen Emulator ist das Dreamcast BIOS erforderlich. Legen Sie die BIOS Datei unter %1$s/data/dc_boot.bin ab.</string>
|
<string name="browser_path">Standard-System-Pfad</string>
|
||||||
<string name="missing_flash">Fehlender Flash. Für einen funktionsfähigen Emulator ist der Dreamcast Flash erforderlich. Legen Sie die Flash Datei unter %1$s/data/dc_flash.bin ab.</string>
|
<string name="games_path">Spiele-Pfad (Speicherort von .gdi, .chd oder .cdi Abbildern)</string>
|
||||||
<string name="require_bios">Es muss ein BIOS bereitgestellt werden</string>
|
<string name="button_theme">Onscreen-Button-Theme</string>
|
||||||
|
|
||||||
|
<string name="game_path">Standard-Spiele-Pfad</string>
|
||||||
|
<string name="config_home">Bitte konfigurieren Sie ihr Home-Verzeichnis.</string>
|
||||||
|
<string name="config_data">Bitte kopieren Sie den BIOS in %1$s/data/</string>
|
||||||
|
<string name="config_game">Bitte konfigurieren Sie ein Spiele-Verzeichnis.</string>
|
||||||
|
<string name="unsupported">Kernel-Version wird nicht unterstützt!</string>
|
||||||
|
<string name="locate">Finden</string>
|
||||||
|
<string name="browse">Durchsuchen</string>
|
||||||
|
|
||||||
|
<string name="boot_bios">Dreamcast-BIOS starten</string>
|
||||||
|
<string name="missing_bios_title">Fehlendes Dreamcast-BIOS.</string>
|
||||||
|
<string name="missing_bios">Für einen funktionsfähigen Emulator ist das Dreamcast-BIOS erforderlich. Legen Sie die BIOS-Datei unter %1$s/data/dc_boot.bin ab.</string>
|
||||||
|
<string name="missing_flash_title">Fehlender Dreamcast-Flash-ROM.</string>
|
||||||
|
<string name="missing_flash">Für einen funktionsfähigen Emulator ist der Dreamcast-Flash erforderlich. Legen Sie die Flash-Datei unter %1$s/data/dc_flash.bin ab.</string>
|
||||||
|
<string name="require_bios">Es muss ein BIOS bereitgestellt werden.</string>
|
||||||
|
<string name="data_folder">Das aktuelle Datenverzeichnis wird überprüft.</string>
|
||||||
|
<string name="emu_crash">Emulator-Fehler!</string>
|
||||||
|
<string name="emu_toast">Emulator-Fehler:\n %1$s</string>
|
||||||
|
|
||||||
<string name="folder_bios">BIOS STARTEN</string>
|
<string name="folder_bios">BIOS STARTEN</string>
|
||||||
<string name="folder_select">AKTUELLES VERZEICHNIS WÄHLEN</string>
|
<string name="folder_select">AKTUELLES VERZEICHNIS WÄHLEN</string>
|
||||||
|
|
||||||
<string name="select_dynarec">Dynarec Optionen</string>
|
<string name="optimization_opts">Optimierungen und Debugging-Optionen</string>
|
||||||
<string name="select_unstable">Nicht stabile Optimierungen</string>
|
<string name="experimental_opts">Experimentell (Kann Fehler verursachen)</string>
|
||||||
<string name="select_region">DC Region</string>
|
<string name="select_reios">Verwende reios-BIOS</string>
|
||||||
<string name="select_limitfps">Limitiere FPS</string>
|
<string name="select_bios">BIOS-Region (dc_flash[X].bin)</string>
|
||||||
|
<string name="select_details">Aktiviere Spiele-Details</string>
|
||||||
|
<string name="select_native">Nativer Modus [Kein OSD]</string>
|
||||||
|
<string name="select_dynarec">Dynarec-Optionen</string>
|
||||||
|
<string name="select_unstable">Instabile Optimierungen</string>
|
||||||
|
<string name="select_cable">Kabeltyp</string>
|
||||||
|
<string name="select_broadcast">Broadcast</string>
|
||||||
|
<string name="select_region">DC-Region</string>
|
||||||
|
<string name="select_limitfps">FPS begrenzen</string>
|
||||||
<string name="select_mipmaps">Verwende Mipmaps (Fehlerbehebung für den SGX540)</string>
|
<string name="select_mipmaps">Verwende Mipmaps (Fehlerbehebung für den SGX540)</string>
|
||||||
<string name="select_stretch">Breitbild Modus</string>
|
<string name="select_stretch">Breitbildmodus</string>
|
||||||
<string name="set_frameskip">Frameskip Wert</string>
|
<string name="set_frameskip">Frameskip-Wert</string>
|
||||||
<string name="select_render">PVR Rendering (Hat momentan keine Funktion)</string>
|
<string name="select_render">PVR-Rendering (Hat momentan keine Funktion)</string>
|
||||||
<string name="default_disk">Wähle Standard Datenträger</string>
|
<string name="select_fps">On-Screen-FPS anzeigen</string>
|
||||||
|
<string name="select_software">Softwarerendering erzwingen</string>
|
||||||
|
<string name="select_sound">Emulator-Sound deaktivieren</string>
|
||||||
|
<string name="select_depth">Rendering-Tiefe</string>
|
||||||
|
<string name="select_force_gpu">v6-GPU-Konfiguration erzwingen</string>
|
||||||
|
<string name="default_disk">Wähle Standard-Datenträger</string>
|
||||||
|
|
||||||
<string name="games_listing">Verfügbare Dreamcast Spiele</string>
|
<string name="games_listing">Verfügbare Dreamcast-Spiele</string>
|
||||||
|
|
||||||
<string name="customize_touch_controls">Touch Steuerung anpassen</string>
|
<string name="game_details">Spielinfoformationen - %1$s</string>
|
||||||
<string name="launch_editor">Editor Starten</string>
|
<string name="info_unavailable">Spielinformationen nicht verfügbar</string>
|
||||||
<string name="touch_vibration">Touch Vibration</string>
|
<string name="disk_loading">Lade Datenträgerinformationen</string>
|
||||||
|
|
||||||
|
<string name="report_issue">Vorhergehender Absturz erkannt</string>
|
||||||
|
<string name="bios_config">Konfiguration fehlgeschlagen!</string>
|
||||||
|
|
||||||
|
<string name="customize_touch_controls">Touchsteuerung anpassen</string>
|
||||||
|
<string name="launch_editor">Editor starten</string>
|
||||||
|
<string name="touch_vibration">Touchvibration</string>
|
||||||
|
<string name="vibration_duration">Dauer des haptischen Feedbacks</string>
|
||||||
<string name="controller_a">Controller A</string>
|
<string name="controller_a">Controller A</string>
|
||||||
<string name="controller_b">Controller B</string>
|
<string name="controller_b">Controller B</string>
|
||||||
<string name="controller_c">Controller C</string>
|
<string name="controller_c">Controller C</string>
|
||||||
<string name="controller_d">Controller D</string>
|
<string name="controller_d">Controller D</string>
|
||||||
<string name="controller_not_connected">Controller Nicht Verbunden</string>
|
<string name="controller_not_connected">Controller nicht verbunden</string>
|
||||||
<string name="controller_none_selected">Kein Controller Ausgewählt</string>
|
<string name="controller_none_selected">Kein Controller ausgewählt</string>
|
||||||
<string name="select">Auswählen</string>
|
<string name="select">Auswählen</string>
|
||||||
<string name="remove">Entfernen</string>
|
<string name="remove">Entfernen</string>
|
||||||
<string name="select_controller_title">Controller Auswählen</string>
|
<string name="select_controller_title">Controller auswählen</string>
|
||||||
<string name="select_controller_message">Drücken Sie eine beliebe Taste auf Controller %1$s für ein Hinzufügen zum Port</string>
|
<string name="select_controller_message">Drücken Sie eine beliebige Taste auf Controller %1$s für ein Hinzufügen zum Port</string>
|
||||||
<string name="controller_already_in_use">Dieser Controller ist bereits in Verwendung!</string>
|
<string name="controller_already_in_use">Dieser Controller ist bereits in Verwendung!</string>
|
||||||
|
<string name="rstick_mode">Rechter Stick: an - L/R, aus - A/B</string>
|
||||||
<string name="modified_layout">Benutzerdefiniertes Layout</string>
|
<string name="modified_layout">Benutzerdefiniertes Layout</string>
|
||||||
<string name="controller_compat">Kompatibilitätsmodus</string>
|
<string name="controller_compat">Kompatibilitätsmodus aktivieren</string>
|
||||||
|
<string name="controller_unavailable">Gamepad-IME erkannt!\nBitte deaktivieren Sie das native Interface.</string>
|
||||||
|
<string name="mic_in_port_2">Mikrophon in Port 2 eingesteckt</string>
|
||||||
|
|
||||||
<string name="customize_physical_controls">Physische Controller anpassen</string>
|
<string name="customize_physical_controls">Physische Controller anpassen</string>
|
||||||
<string name="map_keycode_title">Controller Ändern</string>
|
<string name="map_keycode_title">Controller ändern</string>
|
||||||
<string name="map_keycode_message">Drücken Sie die neue Controller-Taste für %1$s</string>
|
<string name="map_keycode_message">Drücken Sie die neue Controller-Taste für %1$s</string>
|
||||||
|
|
||||||
<string name="moga_pro_connect">MOGA Pro verbunden!</string>
|
<string name="moga_pro_connect">MOGA Pro verbunden!</string>
|
||||||
<string name="moga_connect">MOGA verbunden!</string>
|
<string name="moga_connect">MOGA verbunden!</string>
|
||||||
|
|
||||||
<string name="about_text">reicast ist ein Dreamcast Emulator</string>
|
<string name="about_text">reicast ist ein Dreamcast-Emulator</string>
|
||||||
<string name="revision_text">Version: %1$s</string>
|
<string name="revision_text">Version: %1$s</string>
|
||||||
|
|
||||||
<string-array name="controllers">
|
<string-array name="controllers">
|
||||||
|
@ -66,8 +104,44 @@
|
||||||
<string name="input">Eingabe</string>
|
<string name="input">Eingabe</string>
|
||||||
<string name="about">Über</string>
|
<string name="about">Über</string>
|
||||||
<string name="rateme">Bewerten</string>
|
<string name="rateme">Bewerten</string>
|
||||||
|
<string name="messages">Logdateien senden</string>
|
||||||
|
<string name="cloud">Cloud-VMU</string>
|
||||||
|
|
||||||
<string name="textOn">Ein</string>
|
<string name="textOn">Ein</string>
|
||||||
<string name="textOff">Aus</string>
|
<string name="textOff">Aus</string>
|
||||||
|
|
||||||
|
<string name="cancel">Abbrechen</string>
|
||||||
|
<string name="dismiss">Verwerfen</string>
|
||||||
|
<string name="manual">Manuell</string>
|
||||||
|
<string name="options">Optionen</string>
|
||||||
|
|
||||||
|
<string name="cloudInfos">Mit diesem Tool können Sie ihre VMUs mit Dropbox synchronisieren.</string>
|
||||||
|
<string name="uploadWarning">ACHTUNG: Sie sind im Begriff Ihre VMUs in Ihre Dropbox hochzuladen. Beachten Sie bitte, dass dies ihren letzten Upload ÜBERSCHREIBEN wird!</string>
|
||||||
|
<string name="downloadWarning">ACHTUNG: Sie sind im Begriff Ihre VMUs von Ihrer Dropbox herunterzuladen. Beachten Sie bitte, dass dies ihren letzten Download ÜBERSCHREIBEN wird! Eine Sicherungkopie wird im VmuBackups angelegt.</string>
|
||||||
|
<string name="uploadVMU">VMU hochladen</string>
|
||||||
|
<string name="downloadVMU">VMU herunterladen</string>
|
||||||
|
|
||||||
|
<string name="platform">Kopiere Logcat-Inhalte in die Zwischenablage\nBitte in den Fehlerbericht einfügen.</string>
|
||||||
|
<string name="log_saved">Logdatei ins \"Datenverzeichnis\" gespeichert.</string>
|
||||||
|
|
||||||
|
<!-- Onscreen Menu -->
|
||||||
|
<string name="popup_button_back">Zurück</string>
|
||||||
|
<string name="popup_button_disk">Disk wechseln</string>
|
||||||
|
<string name="popup_button_vmu_swap">VMU wechseln</string>
|
||||||
|
<string name="popup_button_options">Konfigurationsmenü</string>
|
||||||
|
<string name="popup_button_debugging">Debug-Menü</string>
|
||||||
|
<string name="popup_button_screenshot">Screenshot</string>
|
||||||
|
<string name="popup_button_exit">Emulator verlassen</string>
|
||||||
|
<string name="popup_button_clear_cache">Cache leeren</string>
|
||||||
|
<string name="popup_button_profiler_one">Profiler 1</string>
|
||||||
|
<string name="popup_button_profiler_two">Profiler 2</string>
|
||||||
|
<string name="popup_button_print_stats">Statistiken anzeigen</string>
|
||||||
|
<string name="popup_button_widescreen">Breitbild</string>
|
||||||
|
<string name="popup_button_frames_down">Frameskip -</string>
|
||||||
|
<string name="popup_button_frames_up">Frameskip +</string>
|
||||||
|
<string name="popup_button_frame_limit">Frameratebegrenzug</string>
|
||||||
|
<string name="popup_button_audio">Emulator-Sound</string>
|
||||||
|
<string name="popup_button_turbo">Turbo</string>
|
||||||
|
|
||||||
|
<string name="git_broken">GitHub Native is nicht verfügbar!</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<string name="menu_settings">설정</string>
|
<string name="menu_settings">설정</string>
|
||||||
<string name="system_path">시스템 경로 (dc_boot.bin / dc_flash.bin 내부와 데이터 폴더의 위치)</string>
|
<string name="system_path">시스템 경로 (dc_boot.bin / dc_flash.bin 데이터 폴더의 위치)</string>
|
||||||
<string name="browser_path">기본 시스템 경로</string>
|
<string name="browser_path">기본 시스템 경로</string>
|
||||||
<string name="games_path">저장 경로 (.GDI의 위치입니다. CHD 나. CDI 이미지)</string>
|
<string name="games_path">저장 경로 (.GDI의 위치입니다. CHD 나. CDI 이미지)</string>
|
||||||
<string name="game_path">기본 게임 저장</string>
|
<string name="button_theme">버튼 테마</string>
|
||||||
|
|
||||||
|
<string name="game_path">기본 게임 저장</string>
|
||||||
<string name="boot_bios">부팅 드림 캐스트 바이오스</string>
|
<string name="boot_bios">부팅 드림 캐스트 바이오스</string>
|
||||||
<string name="missing_bios">BIOS가 없음.드림캐스트가 작동하려면 BIOS가 필요합니다.BIOS 파일에 배치 %1$s/데이터/dc_boot.bin</string>
|
<string name="missing_bios">실행하려면 BIOS파일이 필요합니다.BIOS 파일을 %1$s/data/dc_boot.bin 에 넣으십시오</string>
|
||||||
<string name="missing_flash">플래시파일 없음.드림 캐스트가 에뮬레이터가 작동하려면 플레시파일이필요합니다.%1$s/데이터/dc_flash.bin에 넣으십시오</string>
|
<string name="missing_flash">실행하려면 플레시파일이필요합니다.%1$s/data/dc_flash.bin 에 넣으십시오</string>
|
||||||
<string name="require_bios">BIOS가 필요합니다</string>
|
<string name="require_bios">BIOS가 필요합니다</string>
|
||||||
|
|
||||||
<string name="folder_bios">BOOT의 BIOS</string>
|
<string name="folder_bios">BOOT의 BIOS</string>
|
||||||
|
@ -25,7 +26,7 @@
|
||||||
<string name="select_render">PVR 렌더링 (지금은 아무것도하지 않습니다)</string>
|
<string name="select_render">PVR 렌더링 (지금은 아무것도하지 않습니다)</string>
|
||||||
<string name="default_disk">설정 기본 디스크</string>
|
<string name="default_disk">설정 기본 디스크</string>
|
||||||
|
|
||||||
<string name="games_listing">가능 드림 캐스트 게임</string>
|
<string name="games_listing">드림 캐스트 게임 목록</string>
|
||||||
|
|
||||||
<string name="customize_touch_controls">터치 컨트롤 사용자 지정</string>
|
<string name="customize_touch_controls">터치 컨트롤 사용자 지정</string>
|
||||||
<string name="launch_editor">편집자에게 시작</string>
|
<string name="launch_editor">편집자에게 시작</string>
|
||||||
|
@ -37,8 +38,8 @@
|
||||||
<string name="controller_not_connected">컨트롤러가 연결되지 않음</string>
|
<string name="controller_not_connected">컨트롤러가 연결되지 않음</string>
|
||||||
<string name="controller_none_selected">선정 된 제어기가 없습니다</string>
|
<string name="controller_none_selected">선정 된 제어기가 없습니다</string>
|
||||||
<string name="select">선택</string>
|
<string name="select">선택</string>
|
||||||
<string name="remove">제거</string>
|
<string name="remove">삭제</string>
|
||||||
<string name="select_controller_title">선택 컨트롤러</string>
|
<string name="select_controller_title">컨트롤러 선택</string>
|
||||||
<string name="select_controller_message">컨트롤러의 버튼을 누르면 %1$s 포트에 할당</string>
|
<string name="select_controller_message">컨트롤러의 버튼을 누르면 %1$s 포트에 할당</string>
|
||||||
<string name="controller_already_in_use">이 컨트롤러는 이미 사용 중입니다!</string>
|
<string name="controller_already_in_use">이 컨트롤러는 이미 사용 중입니다!</string>
|
||||||
<string name="modified_layout">사용자 정의 키 레이아웃보기 사용</string>
|
<string name="modified_layout">사용자 정의 키 레이아웃보기 사용</string>
|
||||||
|
@ -48,10 +49,10 @@
|
||||||
<string name="map_keycode_title">컨트롤러를 수정</string>
|
<string name="map_keycode_title">컨트롤러를 수정</string>
|
||||||
<string name="map_keycode_message">의 새로운 컨트롤러의 버튼을 눌러 %1$s</string>
|
<string name="map_keycode_message">의 새로운 컨트롤러의 버튼을 눌러 %1$s</string>
|
||||||
|
|
||||||
<string name="moga_pro_connect">MOGA 프로 연결!</string>
|
<string name="moga_pro_connect">MOGA 프로 연결됨!</string>
|
||||||
<string name="moga_connect">MOGA 연결!</string>
|
<string name="moga_connect">MOGA 연결!</string>
|
||||||
|
|
||||||
<string name="about_text">reicast는 드림 캐스트 에뮬레이터</string>
|
<string name="about_text">reicast는 드림 캐스트 에뮬레이터입니다.</string>
|
||||||
<string name="revision_text">버전: %1$s [%2$s]</string>
|
<string name="revision_text">버전: %1$s [%2$s]</string>
|
||||||
|
|
||||||
<string-array name="controllers">
|
<string-array name="controllers">
|
||||||
|
@ -65,10 +66,45 @@
|
||||||
<string name="settings">설정</string>
|
<string name="settings">설정</string>
|
||||||
<string name="paths">경로</string>
|
<string name="paths">경로</string>
|
||||||
<string name="input">입력</string>
|
<string name="input">입력</string>
|
||||||
<string name="about">약</string>
|
<string name="about">정보</string>
|
||||||
<string name="rateme">저를 평가 해</string>
|
<string name="rateme">별점 평가</string>
|
||||||
|
|
||||||
<string name="textOn">ON</string>
|
<string name="textOn">ON</string>
|
||||||
<string name="textOff">OFF</string>
|
<string name="textOff">OFF</string>
|
||||||
|
|
||||||
|
<string name="cancel">취소</string>
|
||||||
|
<string name="dismiss">Dismiss</string>
|
||||||
|
<string name="manual">Manual</string>
|
||||||
|
<string name="options">옵션</string>
|
||||||
|
|
||||||
|
<string name="cloudInfos">With this tool you can upload/download your VMUs to/from Dropbox, in order to sync them with all your devices!</string>
|
||||||
|
<string name="uploadWarning">주의: 업로드하면 드롭박스에있는 VMUs파일을 덮어쓰게 됩니다. 실행전에 VMUs파일을 다른곳에 백업하세요! </string>
|
||||||
|
<string name="downloadWarning">주의:VMUs파일을 드롭박스에서 다운받아서 덮어쓰게 됩니다. 실행전에 VMUs파일을 다른곳에 백업하세요! </string>
|
||||||
|
<string name="uploadVMU">VMU 올리기</string>
|
||||||
|
<string name="downloadVMU">VMU 내려받기</string>
|
||||||
|
|
||||||
|
<string name="platform">Copying logcat content to clipboard\nPlease paste in the issue report</string>
|
||||||
|
<string name="log_saved">Log saved to \"Files Dir\" path</string>
|
||||||
|
|
||||||
|
<!-- Onscreen Menu -->
|
||||||
|
<string name="popup_button_back">뒤로</string>
|
||||||
|
<string name="popup_button_disk">Disk Swap</string>
|
||||||
|
<string name="popup_button_vmu_swap">VMU Swap</string>
|
||||||
|
<string name="popup_button_options">설정 메뉴</string>
|
||||||
|
<string name="popup_button_debugging">디버그 메뉴</string>
|
||||||
|
<string name="popup_button_screenshot">스크린샷</string>
|
||||||
|
<string name="popup_button_exit">종료</string>
|
||||||
|
<string name="popup_button_clear_cache">캐시 삭제</string>
|
||||||
|
<string name="popup_button_profiler_one">Profiler 1</string>
|
||||||
|
<string name="popup_button_profiler_two">Profiler 2</string>
|
||||||
|
<string name="popup_button_print_stats">Print Stats</string>
|
||||||
|
<string name="popup_button_widescreen">넓은화면</string>
|
||||||
|
<string name="popup_button_frames_down">프레임스킵 -</string>
|
||||||
|
<string name="popup_button_frames_up">프레임스킵 +</string>
|
||||||
|
<string name="popup_button_frame_limit">프레임 제한</string>
|
||||||
|
<string name="popup_button_audio">소리</string>
|
||||||
|
<string name="popup_button_turbo">가속</string>
|
||||||
|
|
||||||
|
<string name="git_broken">GitHub Native is unavailable!</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -2,9 +2,11 @@
|
||||||
|
|
||||||
<string name="menu_settings">Configurações</string>
|
<string name="menu_settings">Configurações</string>
|
||||||
|
|
||||||
<string name="system_path">Diretório do sistema (localização do diretório de dados com os arquivos dc_boot.bin / dc_flash.bin)</string>
|
<string name="system_path">Diretório da BIOS (local dos arquivos dc_boot.bin/dc_flash.bin)</string>
|
||||||
<string name="browser_path">Diretório padrão de jogos</string>
|
<string name="browser_path">Diretório padrão de jogos</string>
|
||||||
<string name="games_path">Caminho do armazenamento (local das imagens .gdi, .chd ou .cdi)</string>
|
<string name="games_path">Diretório dos jogos (local das imagens .gdi, .chd ou .cdi)</string>
|
||||||
|
<string name="button_theme">Tema dos botões na tela</string>
|
||||||
|
|
||||||
<string name="game_path">Diretório padrão de jogos</string>
|
<string name="game_path">Diretório padrão de jogos</string>
|
||||||
<string name="config_home">Por favor configure um diretório principal.</string>
|
<string name="config_home">Por favor configure um diretório principal.</string>
|
||||||
<string name="config_data">Por favor mova a BIOS para %1$s/data/</string>
|
<string name="config_data">Por favor mova a BIOS para %1$s/data/</string>
|
||||||
|
@ -27,6 +29,7 @@
|
||||||
|
|
||||||
<string name="optimization_opts">Opções de Otimização e Depuração</string>
|
<string name="optimization_opts">Opções de Otimização e Depuração</string>
|
||||||
<string name="experimental_opts">Experimental (Pode causar problemas)</string>
|
<string name="experimental_opts">Experimental (Pode causar problemas)</string>
|
||||||
|
<string name="select_reios">Usar reios BIOS</string>
|
||||||
<string name="select_bios">Região da BIOS (dc_flash[X].bin)</string>
|
<string name="select_bios">Região da BIOS (dc_flash[X].bin)</string>
|
||||||
<string name="select_details">Habilitar detalhes do jogo</string>
|
<string name="select_details">Habilitar detalhes do jogo</string>
|
||||||
<string name="select_native">Modo nativo [Sem OSD]</string>
|
<string name="select_native">Modo nativo [Sem OSD]</string>
|
||||||
|
@ -45,7 +48,7 @@
|
||||||
<string name="select_sound">Desabilitar Som do Emulador</string>
|
<string name="select_sound">Desabilitar Som do Emulador</string>
|
||||||
<string name="select_depth">Profundidade da Renderização</string>
|
<string name="select_depth">Profundidade da Renderização</string>
|
||||||
<string name="select_force_gpu">Forçar Configurações GPU v6</string>
|
<string name="select_force_gpu">Forçar Configurações GPU v6</string>
|
||||||
<string name="default_disk">Definir disco padrão</string>
|
<string name="default_disk">Disco padrão</string>
|
||||||
|
|
||||||
<string name="games_listing">Lista de jogos</string>
|
<string name="games_listing">Lista de jogos</string>
|
||||||
|
|
||||||
|
@ -54,7 +57,7 @@
|
||||||
<string name="disk_loading">Carregando Informações do Disco</string>
|
<string name="disk_loading">Carregando Informações do Disco</string>
|
||||||
|
|
||||||
<string name="report_issue">Falha Anterior Detectada</string>
|
<string name="report_issue">Falha Anterior Detectada</string>
|
||||||
<string name="bios_config">Falha ao Configurar!</string>
|
<string name="bios_config">Falha ao configurar!</string>
|
||||||
|
|
||||||
<string name="customize_touch_controls">Costumizar controles de toque</string>
|
<string name="customize_touch_controls">Costumizar controles de toque</string>
|
||||||
<string name="launch_editor">Iniciar editor</string>
|
<string name="launch_editor">Iniciar editor</string>
|
||||||
|
|
|
@ -22,8 +22,7 @@
|
||||||
<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="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="require_bios">You have to provide a Dreamcast BIOS.</string>
|
||||||
<string name="data_folder">The current data folder is assumed.</string>
|
<string name="data_folder">The current data folder is assumed.</string>
|
||||||
<string name="emu_crash">Emulator Error!</string>
|
<string name="emu_crash">Emulator Error:\n %1$s</string>
|
||||||
<string name="emu_toast">Emulator Error:\n %1$s</string>
|
|
||||||
|
|
||||||
<string name="folder_bios">Boot BIOS</string>
|
<string name="folder_bios">Boot BIOS</string>
|
||||||
<string name="folder_select">Select current folder</string>
|
<string name="folder_select">Select current folder</string>
|
||||||
|
|
|
@ -31,6 +31,9 @@ public class GenerateLogs extends AsyncTask<String, Integer, String> {
|
||||||
public static final String IC = "Ice Cream Sandwich";
|
public static final String IC = "Ice Cream Sandwich";
|
||||||
public static final String JB = "JellyBean";
|
public static final String JB = "JellyBean";
|
||||||
public static final String KK = "KitKat";
|
public static final String KK = "KitKat";
|
||||||
|
public static final String LP = "L Preview";
|
||||||
|
public static final String LL = "Lollipop";
|
||||||
|
public static final String NL = "New / No Label";
|
||||||
public static final String NF = "Not Found";
|
public static final String NF = "Not Found";
|
||||||
|
|
||||||
private String unHandledIOE;
|
private String unHandledIOE;
|
||||||
|
@ -56,7 +59,9 @@ public class GenerateLogs extends AsyncTask<String, Integer, String> {
|
||||||
s += "\r\n";
|
s += "\r\n";
|
||||||
if (String.valueOf(build_sdk) != null) {
|
if (String.valueOf(build_sdk) != null) {
|
||||||
String build_version = NF;
|
String build_version = NF;
|
||||||
if (build_sdk >= 4 && build_sdk < 7) {
|
if (String.valueOf(build_sdk).equals("L")) {
|
||||||
|
build_version = "LP";
|
||||||
|
} else if (build_sdk >= 4 && build_sdk < 7) {
|
||||||
build_version = DN;
|
build_version = DN;
|
||||||
} else if (build_sdk == 7) {
|
} else if (build_sdk == 7) {
|
||||||
build_version = EC;
|
build_version = EC;
|
||||||
|
@ -70,8 +75,12 @@ public class GenerateLogs extends AsyncTask<String, Integer, String> {
|
||||||
build_version = IC;
|
build_version = IC;
|
||||||
} else if (build_sdk >= 16 && build_sdk < 19) {
|
} else if (build_sdk >= 16 && build_sdk < 19) {
|
||||||
build_version = JB;
|
build_version = JB;
|
||||||
} else if (build_sdk >= 19) {
|
} else if (build_sdk >= 19 && build_sdk < 21) {
|
||||||
build_version = KK;
|
build_version = KK;
|
||||||
|
} else if (build_sdk >= 21 && build_sdk < 22) {
|
||||||
|
build_version = LL;
|
||||||
|
} else if (build_sdk >= 22) {
|
||||||
|
build_version = NL;
|
||||||
}
|
}
|
||||||
s += build_version + " (" + build_sdk + ")";
|
s += build_version + " (" + build_sdk + ")";
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -10,9 +10,7 @@ import javax.microedition.khronos.opengles.GL10;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Paint;
|
import android.graphics.Paint;
|
||||||
|
@ -694,22 +692,9 @@ public class GL2JNIView extends GLSurfaceView
|
||||||
handler.post(new Runnable() {
|
handler.post(new Runnable() {
|
||||||
public void run() {
|
public void run() {
|
||||||
Log.d(context.getApplicationContext().getPackageName(), msg);
|
Log.d(context.getApplicationContext().getPackageName(), msg);
|
||||||
// MainActivity.showToastMessage(context,
|
MainActivity.showToastMessage(context,
|
||||||
// context.getString(R.string.emu_toast, msg),
|
context.getString(R.string.emu_crash, msg),
|
||||||
// Toast.LENGTH_LONG);
|
Toast.LENGTH_LONG);
|
||||||
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
|
|
||||||
alertDialogBuilder.setTitle(context.getString(R.string.emu_crash));
|
|
||||||
alertDialogBuilder
|
|
||||||
.setMessage(msg)
|
|
||||||
.setCancelable(false)
|
|
||||||
.setPositiveButton("Okay...",new DialogInterface.OnClickListener() {
|
|
||||||
public void onClick(DialogInterface dialog,int id) {
|
|
||||||
// if this button is clicked, close current activity
|
|
||||||
// MainActivity.this.finish();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
AlertDialog alertDialog = alertDialogBuilder.create();
|
|
||||||
alertDialog.show();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue