mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-18 10:20:41 +00:00
WII: Update port for the current versions of the base libraries. Enable DVD access for the GameCube port.
svn-id: r52074
This commit is contained in:
parent
185da18926
commit
c58e2707ff
@ -29,6 +29,7 @@
|
||||
|
||||
#ifdef USE_WII_DI
|
||||
#include <di/di.h>
|
||||
#include <iso9660.h>
|
||||
#endif
|
||||
|
||||
#ifdef USE_WII_SMB
|
||||
@ -125,24 +126,11 @@ void WiiFilesystemFactory::mount(FileSystemType type) {
|
||||
break;
|
||||
|
||||
printf("mount dvd\n");
|
||||
DI_Mount();
|
||||
|
||||
while (DI_GetStatus() & DVD_INIT)
|
||||
usleep(20 * 1000);
|
||||
|
||||
if (!(DI_GetStatus() & DVD_READY)) {
|
||||
DI_StopMotor();
|
||||
printf("error mounting dvd\n");
|
||||
break;
|
||||
}
|
||||
|
||||
printf("mount ISO9660\n");
|
||||
if (ISO9660_Mount()) {
|
||||
_dvdMounted = true;
|
||||
_dvdError = false;
|
||||
printf("ISO9660 mounted\n");
|
||||
} else {
|
||||
DI_StopMotor();
|
||||
_dvdError = true;
|
||||
printf("ISO9660 mount failed\n");
|
||||
}
|
||||
@ -185,7 +173,6 @@ void WiiFilesystemFactory::umount(FileSystemType type) {
|
||||
printf("umount dvd\n");
|
||||
|
||||
ISO9660_Unmount();
|
||||
DI_StopMotor();
|
||||
|
||||
_dvdMounted = false;
|
||||
_dvdError = false;
|
||||
@ -199,10 +186,7 @@ void WiiFilesystemFactory::umount(FileSystemType type) {
|
||||
|
||||
printf("umount smb\n");
|
||||
|
||||
if (smbClose("smb:"))
|
||||
printf("smb umounted\n");
|
||||
else
|
||||
printf("error umounting smb\n");
|
||||
smbClose("smb:");
|
||||
|
||||
_smbMounted = false;
|
||||
_smbError = false;
|
||||
|
@ -37,8 +37,7 @@
|
||||
#ifdef DEBUG_WII_GDB
|
||||
#include <debug.h>
|
||||
#endif
|
||||
#include <gfx/gfx.h>
|
||||
#include <gfx/gfx_con.h>
|
||||
#include <gxflux/gfx_con.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -51,7 +50,6 @@ void reset_cb(void) {
|
||||
#ifdef DEBUG_WII_GDB
|
||||
printf("attach gdb now\n");
|
||||
_break();
|
||||
SYS_SetResetCallback(reset_cb);
|
||||
#else
|
||||
reset_btn_pressed = true;
|
||||
#endif
|
||||
@ -78,6 +76,11 @@ static void show_console(int code) {
|
||||
for (i = 0; i < 60 * 3; ++i)
|
||||
VIDEO_WaitVSync();
|
||||
|
||||
#ifdef DEBUG_WII_GDB
|
||||
printf("attach gdb now\n");
|
||||
_break();
|
||||
#endif
|
||||
|
||||
printf("Press any key to continue.\n");
|
||||
|
||||
if (!gfx_frame_start())
|
||||
@ -157,12 +160,13 @@ void wii_memstats(void) {
|
||||
int main(int argc, char *argv[]) {
|
||||
s32 res;
|
||||
|
||||
#ifdef USE_WII_DI
|
||||
#if defined(USE_WII_DI) && !defined(GAMECUBE)
|
||||
DI_Init();
|
||||
#endif
|
||||
|
||||
VIDEO_Init();
|
||||
PAD_Init();
|
||||
DSP_Init();
|
||||
AUDIO_Init(NULL);
|
||||
|
||||
gfx_video_init(NULL);
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <network.h>
|
||||
#include <gfx/gfx.h>
|
||||
#include <gxflux/gfx.h>
|
||||
|
||||
#include "common/config-manager.h"
|
||||
#include "gui/dialog.h"
|
||||
@ -133,11 +133,9 @@ WiiOptionsDialog::~WiiOptionsDialog() {
|
||||
}
|
||||
|
||||
void WiiOptionsDialog::handleTickle() {
|
||||
#ifndef GAMECUBE
|
||||
WiiFilesystemFactory &fsf = WiiFilesystemFactory::instance();
|
||||
|
||||
int tab = _tab->getActiveTab();
|
||||
#endif
|
||||
|
||||
#ifdef USE_WII_DI
|
||||
if (tab == _tabDVD) {
|
||||
@ -198,9 +196,7 @@ void WiiOptionsDialog::handleTickle() {
|
||||
|
||||
void WiiOptionsDialog::handleCommand(CommandSender *sender, uint32 cmd,
|
||||
uint32 data) {
|
||||
#ifndef GAMECUBE
|
||||
WiiFilesystemFactory &fsf = WiiFilesystemFactory::instance();
|
||||
#endif
|
||||
|
||||
switch (cmd) {
|
||||
case 'x':
|
||||
|
@ -26,7 +26,7 @@
|
||||
#include <gccore.h>
|
||||
#include <ogcsys.h>
|
||||
|
||||
#include <gfx/gfx.h>
|
||||
#include <gxflux/gfx.h>
|
||||
|
||||
#include "base/main.h"
|
||||
#include "common/fs.h"
|
||||
|
@ -21,8 +21,7 @@
|
||||
|
||||
#include <malloc.h>
|
||||
|
||||
#include <gfx/gfx.h>
|
||||
#include <gfx/gfx_con.h>
|
||||
#include <gxflux/gfx_con.h>
|
||||
|
||||
#include "common/config-manager.h"
|
||||
#include "graphics/conversion.h"
|
||||
|
@ -25,7 +25,8 @@
|
||||
|
||||
#define SFX_THREAD_STACKSIZE (1024 * 128)
|
||||
#define SFX_THREAD_PRIO 80
|
||||
#define SFX_THREAD_FRAG_SIZE 4096
|
||||
#define SFX_THREAD_FRAG_SIZE 2048
|
||||
#define SFX_BUFFERS 3
|
||||
|
||||
static lwpq_t sfx_queue;
|
||||
static lwp_t sfx_thread;
|
||||
@ -33,20 +34,18 @@ static u8 *sfx_stack;
|
||||
static bool sfx_thread_running = false;
|
||||
static bool sfx_thread_quit = false;
|
||||
|
||||
static u8 sb = 0;
|
||||
static u8 *sound_buffer[2];
|
||||
static u32 sb_hw;
|
||||
static u8 *sound_buffer[SFX_BUFFERS];
|
||||
|
||||
static void audio_switch_buffers() {
|
||||
AUDIO_StopDMA();
|
||||
AUDIO_InitDMA((u32) sound_buffer[sb], SFX_THREAD_FRAG_SIZE);
|
||||
AUDIO_StartDMA();
|
||||
|
||||
sb_hw = (sb_hw + 1) % SFX_BUFFERS;
|
||||
AUDIO_InitDMA((u32) sound_buffer[sb_hw], SFX_THREAD_FRAG_SIZE);
|
||||
LWP_ThreadSignal(sfx_queue);
|
||||
}
|
||||
|
||||
static void * sfx_thread_func(void *arg) {
|
||||
Audio::MixerImpl *mixer = (Audio::MixerImpl *) arg;
|
||||
u8 next_sb;
|
||||
u8 sb_sw;
|
||||
|
||||
while (true) {
|
||||
LWP_ThreadSleep(sfx_queue);
|
||||
@ -54,11 +53,15 @@ static void * sfx_thread_func(void *arg) {
|
||||
if (sfx_thread_quit)
|
||||
break;
|
||||
|
||||
next_sb = sb ^ 1;
|
||||
mixer->mixCallback(sound_buffer[next_sb], SFX_THREAD_FRAG_SIZE);
|
||||
DCFlushRange(sound_buffer[next_sb], SFX_THREAD_FRAG_SIZE);
|
||||
|
||||
sb = next_sb;
|
||||
// the hardware uses two buffers: a front and a back buffer
|
||||
// we use 3 buffers here: two are beeing pushed to the DSP,
|
||||
// and the free one is where our mixer writes to
|
||||
// thus the latency of our steam is:
|
||||
// 2048 [frag size] / 48000 / 2 [16bit] / 2 [stereo] * 2 [hw buffers]
|
||||
// -> 21.3ms
|
||||
sb_sw = (sb_hw + 1) % SFX_BUFFERS;
|
||||
mixer->mixCallback(sound_buffer[sb_sw], SFX_THREAD_FRAG_SIZE);
|
||||
DCFlushRange(sound_buffer[sb_sw], SFX_THREAD_FRAG_SIZE);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
@ -89,21 +92,20 @@ void OSystem_Wii::initSfx() {
|
||||
sfx_thread_running = true;
|
||||
}
|
||||
|
||||
sound_buffer[0] = (u8 *) memalign(32, SFX_THREAD_FRAG_SIZE);
|
||||
sound_buffer[1] = (u8 *) memalign(32, SFX_THREAD_FRAG_SIZE);
|
||||
|
||||
memset(sound_buffer[0], 0, SFX_THREAD_FRAG_SIZE);
|
||||
memset(sound_buffer[1], 0, SFX_THREAD_FRAG_SIZE);
|
||||
|
||||
DCFlushRange(sound_buffer[0], SFX_THREAD_FRAG_SIZE);
|
||||
DCFlushRange(sound_buffer[1], SFX_THREAD_FRAG_SIZE);
|
||||
for (u32 i = 0; i < SFX_BUFFERS; ++i) {
|
||||
sound_buffer[i] = (u8 *) memalign(32, SFX_THREAD_FRAG_SIZE);
|
||||
memset(sound_buffer[i], 0, SFX_THREAD_FRAG_SIZE);
|
||||
DCFlushRange(sound_buffer[i], SFX_THREAD_FRAG_SIZE);
|
||||
}
|
||||
|
||||
_mixer->setReady(true);
|
||||
|
||||
sb_hw = 0;
|
||||
|
||||
AUDIO_SetDSPSampleRate(AI_SAMPLERATE_48KHZ);
|
||||
AUDIO_RegisterDMACallback(audio_switch_buffers);
|
||||
|
||||
audio_switch_buffers();
|
||||
AUDIO_InitDMA((u32) sound_buffer[sb_hw], SFX_THREAD_FRAG_SIZE);
|
||||
AUDIO_StartDMA();
|
||||
}
|
||||
|
||||
void OSystem_Wii::deinitSfx() {
|
||||
@ -123,8 +125,8 @@ void OSystem_Wii::deinitSfx() {
|
||||
free(sfx_stack);
|
||||
sfx_thread_running = false;
|
||||
|
||||
free(sound_buffer[0]);
|
||||
free(sound_buffer[1]);
|
||||
for (u32 i = 0; i < SFX_BUFFERS; ++i)
|
||||
free(sound_buffer[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
13
configure
vendored
13
configure
vendored
@ -1410,9 +1410,9 @@ case $_host_os in
|
||||
gamecube)
|
||||
CXXFLAGS="$CXXFLAGS -Os -mogc -mcpu=750 -meabi -mhard-float"
|
||||
CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections -fmodulo-sched"
|
||||
CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include -I$DEVKITPRO/cube/include"
|
||||
CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include"
|
||||
# libogc is required to link the cc tests (includes _start())
|
||||
LDFLAGS="$LDFLAGS -mogc -mcpu=750 -L$DEVKITPRO/libogc/lib/cube -L$DEVKITPRO/cube/lib -logc"
|
||||
LDFLAGS="$LDFLAGS -mogc -mcpu=750 -L$DEVKITPRO/libogc/lib/cube -logc"
|
||||
;;
|
||||
haiku*)
|
||||
DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE"
|
||||
@ -1470,9 +1470,9 @@ case $_host_os in
|
||||
wii)
|
||||
CXXFLAGS="$CXXFLAGS -Os -mrvl -mcpu=750 -meabi -mhard-float"
|
||||
CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections -fmodulo-sched"
|
||||
CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include -I$DEVKITPRO/wii/include"
|
||||
CXXFLAGS="$CXXFLAGS -I$DEVKITPRO/libogc/include"
|
||||
# libogc is required to link the cc tests (includes _start())
|
||||
LDFLAGS="$LDFLAGS -mrvl -mcpu=750 -L$DEVKITPRO/libogc/lib/wii -L$DEVKITPRO/wii/lib -logc"
|
||||
LDFLAGS="$LDFLAGS -mrvl -mcpu=750 -L$DEVKITPRO/libogc/lib/wii -logc"
|
||||
;;
|
||||
wince)
|
||||
CXXFLAGS="$CXXFLAGS -O3 -march=armv4 -mtune=xscale"
|
||||
@ -1565,6 +1565,7 @@ if test -n "$_host"; then
|
||||
add_line_to_config_h "/* #define DEBUG_WII_USBGECKO */"
|
||||
add_line_to_config_h "/* #define DEBUG_WII_MEMSTATS */"
|
||||
add_line_to_config_h "/* #define DEBUG_WII_GDB */"
|
||||
add_line_to_config_h "#define USE_WII_DI"
|
||||
;;
|
||||
gp2x)
|
||||
DEFINES="$DEFINES -DGP2X -DNDEBUG"
|
||||
@ -2583,10 +2584,10 @@ case $_backend in
|
||||
DEFINES="$DEFINES -D__WII__ -DGEKKO"
|
||||
case $_host_os in
|
||||
gamecube)
|
||||
LIBS="$LIBS -lgxflux -lfat -logc -ldb"
|
||||
LIBS="$LIBS -lgxflux -liso9660 -lfat -logc -ldb"
|
||||
;;
|
||||
*)
|
||||
LIBS="$LIBS -lgxflux -ldi -ltinysmb -lfat -lwiiuse -lbte -logc -lwiikeyboard -ldb"
|
||||
LIBS="$LIBS -lgxflux -ldi -liso9660 -ltinysmb -lfat -lwiiuse -lbte -logc -lwiikeyboard -ldb"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
@ -8,5 +8,6 @@
|
||||
<long_description>ScummVM is a program which allows you to run certain classic graphical point-and-click adventure games, provided you already have their data files. The clever part about this: ScummVM just replaces the executables shipped with the games, allowing you to play them on systems for which they were never designed!
|
||||
|
||||
Some of the adventures ScummVM supports include Adventure Soft's Simon the Sorcerer 1 and 2; Revolution's Beneath A Steel Sky and Broken Sword I & II; Flight of the Amazon Queen; Wyrmkeep's Inherit the Earth; Coktel Vision's Gobliiins; Westwood Studios' The Legend of Kyrandia and games based on LucasArts' SCUMM (Script Creation Utility for Maniac Mansion) system such as Monkey Island, Day of the Tentacle, Sam and Max and more.</long_description>
|
||||
<no_ios_reload/>
|
||||
</app>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user