Skip to content

Commit

Permalink
release15
Browse files Browse the repository at this point in the history
  • Loading branch information
jquesnelle committed Jan 5, 2013
1 parent 65aacf9 commit b7875aa
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 91 deletions.
4 changes: 2 additions & 2 deletions AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.opendoorstudios.ds4droid"
android:versionCode="14"
android:versionName="14" >
android:versionCode="15"
android:versionName="15" >

<uses-sdk
android:minSdkVersion="10"
Expand Down
99 changes: 10 additions & 89 deletions jni/desmume/src/NDSSystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,6 @@ int NDS_Init( void) {
cheats = new CHEATS();
cheatSearch = new CHEATSEARCH();

//arm7task.start(true);
//arm9task.start(true);

return 0;
}

Expand Down Expand Up @@ -1947,8 +1944,8 @@ FORCEINLINE void arm7log()
}

//these have not been tuned very well yet.
static const int kMaxWork = 5000;
static const int kIrqWait = 5000;
static const int kMaxWork = 4000;
static const int kIrqWait = 4000;


template<bool doarm9, bool doarm7>
Expand All @@ -1963,99 +1960,23 @@ static FORCEINLINE s32 minarmtime(s32 arm9, s32 arm7)
return arm7;
}

void* executearm9(void* param)
{
const s32 cycles = reinterpret_cast<s32>(param);
s32 ret = 0;
while(ret < cycles && !sequencer.reschedule)
{
if(!NDS_ARM9.waitIRQ&&!nds.freezeBus)
ret += armcpu_exec<ARMCPU_ARM9>();
else
{
s32 temp = ret;
ret = std::min(cycles, ret + kIrqWait);
nds.idleCycles[0] += ret-temp;
if (gxFIFO.size < 255) nds.freezeBus &= ~1;
}
}
return reinterpret_cast<void*>(ret);
}
void* executearm7(void* param)
{
const s32 cycles = reinterpret_cast<s32>(param);
s32 ret = 0;
while(ret < cycles && !sequencer.reschedule)
{
if(!NDS_ARM7.waitIRQ&&!nds.freezeBus)
ret += (armcpu_exec<ARMCPU_ARM7>()) << 1;
else
{
s32 temp = ret;
ret = min(cycles, ret + kIrqWait);
nds.idleCycles[1] += ret-temp;
}
}
return reinterpret_cast<void*>(ret);
}

template<bool doarm9, bool doarm7>
static /*donotinline*/ std::pair<s32,s32> armInnerLoopMulticore(
const u64 nds_timer_base, const s32 s32next, s32 arm9, s32 arm7)
{
//s32next is how many instructions we should execute
s32 timer = minarmtime<doarm9,doarm7>(arm9,arm7);
//printf("start: timer = %i, s32next = %i, arm9 = %i, arm7 = %i\n", s32next, arm9, arm7);

while(timer < s32next && !sequencer.reschedule && execute)
{
s32 arm9cycles = s32next;
s32 arm7cycles = s32next;
const bool arm7halted = !doarm7 || (arm7cycles <= 0);
const bool arm9halted = !doarm9 || (arm9cycles <= 0);
s32 arm9execed = 0;
s32 arm7execed = 0;
s32 timeradd = 0;

if(!arm9halted)
arm9task.execute(executearm9, reinterpret_cast<void*>(arm9cycles));

if(!arm7halted)
arm7task.execute(executearm7, reinterpret_cast<void*>(arm7cycles));

if(!arm9halted)
arm9execed = reinterpret_cast<s32>(arm9task.finish());

if(!arm7halted)
arm7execed = reinterpret_cast<s32>(arm7task.finish());

arm9 += arm9execed;
arm7 += arm7execed;

timer = minarmtime<doarm9,doarm7>(arm9,arm7);
nds_timer = nds_timer_base + timer;
}

//printf("finish: timer = %i, s32next = %i, arm9 = %i, arm7 = %i\n", timer, s32next, arm9, arm7);
return std::make_pair(arm9, arm7);
}
static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
const u64 nds_timer_base, const s32 s32next, s32 arm9, s32 arm7) HOT;

template<bool doarm9, bool doarm7>
static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
const u64 nds_timer_base, const s32 s32next, s32 arm9, s32 arm7)
{
//if(CommonSettings.num_cores > 1)
// return armInnerLoopMulticore<doarm9,doarm7>(nds_timer_base, s32next, arm9, arm7);
s32 timer = minarmtime<doarm9,doarm7>(arm9,arm7);
//printf("start: timer = %i, s32next = %i, arm9 = %i, arm7 = %i\n", timer, s32next, arm9, arm7);
while(timer < s32next && !sequencer.reschedule/* && execute*/)
while(timer < s32next && !sequencer.reschedule)
{
if(doarm9 /*&& (!doarm7 || arm9 <= timer)*/)
if(doarm9 && (!doarm7 || arm9 <= timer))
{
if(!(NDS_ARM9.waitIRQ||nds.freezeBus))
{
//arm9log();
//debug();
arm9log();
debug();
arm9 += armcpu_exec<ARMCPU_ARM9>();
#ifdef DEVELOPER
nds_debug_continuing[0] = false;
Expand All @@ -2069,11 +1990,11 @@ static /*donotinline*/ std::pair<s32,s32> armInnerLoop(
if (gxFIFO.size < 255) nds.freezeBus &= ~1;
}
}
if(doarm7 /*&& (!doarm9 || arm7 <= timer)*/)
if(doarm7 && (!doarm9 || arm7 <= timer))
{
if(!(NDS_ARM7.waitIRQ||nds.freezeBus))
{
//arm7log();
arm7log();
arm7 += (armcpu_exec<ARMCPU_ARM7>()<<1);
#ifdef DEVELOPER
nds_debug_continuing[1] = false;
Expand Down
Binary file removed libs/acra-4.2.3.jar
Binary file not shown.

0 comments on commit b7875aa

Please sign in to comment.