mirror of
https://github.com/dborth/snes9xgx.git
synced 2024-12-18 07:11:50 +01:00
xbox 360 port: use full cpu speed, sleep unused cpu cores, add sound (which isn't that great yet)
This commit is contained in:
parent
1167aaf8a9
commit
e969ce7fad
@ -20,6 +20,8 @@
|
|||||||
#include <diskio/diskio.h>
|
#include <diskio/diskio.h>
|
||||||
#include <fat/fat.h>
|
#include <fat/fat.h>
|
||||||
#include <xenos/xenos.h>
|
#include <xenos/xenos.h>
|
||||||
|
#include <xenon_sound/sound.h>
|
||||||
|
#include <xenon_soc/xenon_power.h>
|
||||||
|
|
||||||
//#include "smc.h"
|
//#include "smc.h"
|
||||||
|
|
||||||
@ -48,6 +50,11 @@ extern "C" {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static inline uint32_t bswap_32(uint32_t t)
|
||||||
|
{
|
||||||
|
return ((t & 0xFF) << 24) | ((t & 0xFF00) << 8) | ((t & 0xFF0000) >> 8) | ((t & 0xFF000000) >> 24);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
emulate ()
|
emulate ()
|
||||||
{
|
{
|
||||||
@ -90,6 +97,40 @@ emulate ()
|
|||||||
ConfigRequested = 0;
|
ConfigRequested = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* this all isn't that great... */
|
||||||
|
int sample_rate = 48000 * 2;
|
||||||
|
int samples_per_frame = Settings.PAL ? sample_rate / 50 : sample_rate / 60;
|
||||||
|
|
||||||
|
int samples_guard = 16384;
|
||||||
|
|
||||||
|
if (xenon_sound_get_unplayed() < samples_guard)
|
||||||
|
{
|
||||||
|
so.samples_mixed_so_far = so.play_position = 0;
|
||||||
|
|
||||||
|
unsigned char buffer[2048];
|
||||||
|
unsigned char out[2048];
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int req_samples = xenon_sound_get_unplayed();
|
||||||
|
if ((req_samples + samples_per_frame) < samples_guard)
|
||||||
|
req_samples = samples_guard + samples_per_frame;
|
||||||
|
else
|
||||||
|
req_samples = samples_per_frame;
|
||||||
|
#endif
|
||||||
|
int req_samples = samples_per_frame;
|
||||||
|
|
||||||
|
S9xMixSamples(buffer, req_samples);
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < req_samples * 2; i += 4)
|
||||||
|
*(int*)(buffer + i) = bswap_32(*(int*)(buffer + i));
|
||||||
|
xenon_sound_submit(buffer, req_samples * 2);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // main loop
|
} // main loop
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,6 +251,15 @@ int main(void)
|
|||||||
extern void xenos_init();
|
extern void xenos_init();
|
||||||
xenos_init();
|
xenos_init();
|
||||||
console_init();
|
console_init();
|
||||||
|
|
||||||
|
xenon_thread_startup();
|
||||||
|
xenon_make_it_faster(XENON_SPEED_FULL);
|
||||||
|
xenon_sleep_thread(1);
|
||||||
|
xenon_sleep_thread(2);
|
||||||
|
xenon_sleep_thread(3);
|
||||||
|
xenon_sleep_thread(4);
|
||||||
|
xenon_sleep_thread(5);
|
||||||
|
|
||||||
printf("SNES9x GX\n");
|
printf("SNES9x GX\n");
|
||||||
|
|
||||||
kmem_init();
|
kmem_init();
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#include <time/time.h>
|
#include <time/time.h>
|
||||||
#include <ppc/timebase.h>
|
#include <ppc/timebase.h>
|
||||||
|
#include <xenon_sound/sound.h>
|
||||||
|
|
||||||
int FrameTimer, timerstyle = 1;
|
int FrameTimer, timerstyle = 1;
|
||||||
unsigned long long prev, now;
|
unsigned long long prev, now;
|
||||||
@ -105,7 +106,7 @@ void S9xToggleSoundChannel(int c)
|
|||||||
bool8 S9xOpenSoundDevice(int mode, bool8 stereo, int buffer_size)
|
bool8 S9xOpenSoundDevice(int mode, bool8 stereo, int buffer_size)
|
||||||
{
|
{
|
||||||
so.stereo = TRUE;
|
so.stereo = TRUE;
|
||||||
so.playback_rate = 32000;
|
so.playback_rate = 48000;
|
||||||
so.sixteen_bit = TRUE;
|
so.sixteen_bit = TRUE;
|
||||||
so.encoded = 0;
|
so.encoded = 0;
|
||||||
so.buffer_size = 4096;
|
so.buffer_size = 4096;
|
||||||
@ -113,6 +114,9 @@ bool8 S9xOpenSoundDevice(int mode, bool8 stereo, int buffer_size)
|
|||||||
S9xSetPlaybackRate(so.playback_rate);
|
S9xSetPlaybackRate(so.playback_rate);
|
||||||
|
|
||||||
// init audio
|
// init audio
|
||||||
|
|
||||||
|
xenon_sound_init();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user