Merge branch 'master' of http://github.com/Themaister/RetroArch
Conflicts: qb/config.libs.sh
This commit is contained in:
commit
88144ba6d2
|
@ -6,17 +6,17 @@
|
|||
<XuiScene>
|
||||
<Properties>
|
||||
<Id>XuiScene1</Id>
|
||||
<Width>752.000061</Width>
|
||||
<Height>512.000122</Height>
|
||||
<Position>264.000031,88.000008,0.000000</Position>
|
||||
<Width>584.528076</Width>
|
||||
<Height>363.320007</Height>
|
||||
<Position>347.429474,184.843964,0.000000</Position>
|
||||
<ClassOverride>RetroArchMain</ClassOverride>
|
||||
</Properties>
|
||||
<XuiButton>
|
||||
<Properties>
|
||||
<Id>XuiBtnRomBrowser</Id>
|
||||
<Width>689.672302</Width>
|
||||
<Height>48.992096</Height>
|
||||
<Position>38.127724,73.215515,0.000000</Position>
|
||||
<Width>488.312012</Width>
|
||||
<Height>30.799988</Height>
|
||||
<Position>38.127724,64.215515,0.000000</Position>
|
||||
<Pivot>245.362122,102.247192,0.000000</Pivot>
|
||||
<NavUp>XuiBtnQuit</NavUp>
|
||||
<NavDown>XuiBtnQuickMenu</NavDown>
|
||||
|
@ -39,9 +39,9 @@
|
|||
<XuiButton>
|
||||
<Properties>
|
||||
<Id>XuiBtnSettings</Id>
|
||||
<Width>689.672302</Width>
|
||||
<Height>48.992096</Height>
|
||||
<Position>40.000000,263.960022,0.000000</Position>
|
||||
<Width>488.312012</Width>
|
||||
<Height>30.799988</Height>
|
||||
<Position>38.127960,196.615982,0.000000</Position>
|
||||
<NavUp>XuiBtnControls</NavUp>
|
||||
<NavDown>XuiBtnLibsnesCore</NavDown>
|
||||
<Text>Settings</Text>
|
||||
|
@ -50,9 +50,9 @@
|
|||
<XuiButton>
|
||||
<Properties>
|
||||
<Id>XuiBtnQuit</Id>
|
||||
<Width>689.672302</Width>
|
||||
<Height>48.992096</Height>
|
||||
<Position>40.199776,392.352020,0.000000</Position>
|
||||
<Width>488.312012</Width>
|
||||
<Height>30.799988</Height>
|
||||
<Position>38.327736,287.007996,0.000000</Position>
|
||||
<Pivot>245.162109,-84.153275,0.000000</Pivot>
|
||||
<NavUp>XuiBtnLibsnesCore</NavUp>
|
||||
<NavDown>XuiBtnRomBrowser</NavDown>
|
||||
|
@ -64,7 +64,7 @@
|
|||
<Id>XuiLblCore</Id>
|
||||
<Width>124.000000</Width>
|
||||
<Height>28.000000</Height>
|
||||
<Position>40.000000,448.400055,0.000000</Position>
|
||||
<Position>12.544006,324.792023,0.000000</Position>
|
||||
<Text>Libretro core:</Text>
|
||||
</Properties>
|
||||
</XuiLabel>
|
||||
|
@ -73,7 +73,7 @@
|
|||
<Id>XuiTxtCoreText</Id>
|
||||
<Width>224.399963</Width>
|
||||
<Height>34.000000</Height>
|
||||
<Position>162.400024,448.000031,0.000000</Position>
|
||||
<Position>134.944031,324.391998,0.000000</Position>
|
||||
<TextColor>0xff0f0f0f</TextColor>
|
||||
<DropShadowColor>0x800f0f0f</DropShadowColor>
|
||||
<Font>Arial Unicode MS</Font>
|
||||
|
@ -82,9 +82,9 @@
|
|||
<XuiButton>
|
||||
<Properties>
|
||||
<Id>XuiBtnQuickMenu</Id>
|
||||
<Width>689.672302</Width>
|
||||
<Height>48.992096</Height>
|
||||
<Position>39.999996,138.000000,0.000000</Position>
|
||||
<Width>488.312012</Width>
|
||||
<Height>30.799988</Height>
|
||||
<Position>38.130001,106.655991,0.000000</Position>
|
||||
<NavUp>XuiBtnRomBrowser</NavUp>
|
||||
<NavDown>XuiBtnControls</NavDown>
|
||||
<Text>Quick Menu</Text>
|
||||
|
@ -93,9 +93,9 @@
|
|||
<XuiButton>
|
||||
<Properties>
|
||||
<Id>XuiBtnControls</Id>
|
||||
<Width>689.672302</Width>
|
||||
<Height>48.992096</Height>
|
||||
<Position>40.002041,202.000015,0.000000</Position>
|
||||
<Width>488.312012</Width>
|
||||
<Height>30.799988</Height>
|
||||
<Position>38.130001,151.655991,0.000000</Position>
|
||||
<NavUp>XuiBtnQuickMenu</NavUp>
|
||||
<NavDown>XuiBtnSettings</NavDown>
|
||||
<Text>Controls</Text>
|
||||
|
@ -104,9 +104,9 @@
|
|||
<XuiButton>
|
||||
<Properties>
|
||||
<Id>XuiBtnLibsnesCore</Id>
|
||||
<Width>689.672302</Width>
|
||||
<Height>48.992096</Height>
|
||||
<Position>40.000000,328.959991,0.000000</Position>
|
||||
<Width>488.312012</Width>
|
||||
<Height>30.799988</Height>
|
||||
<Position>38.127960,241.615982,0.000000</Position>
|
||||
<NavUp>XuiBtnSettings</NavUp>
|
||||
<NavDown>XuiBtnQuit</NavDown>
|
||||
<Text>Change libretro core</Text>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiScene1</Id>
|
||||
<Width>824.000061</Width>
|
||||
<Height>496.000061</Height>
|
||||
<Position>182.000031,120.000023,0.000000</Position>
|
||||
<Position>32.029999,76.040001,0.000000</Position>
|
||||
<ClassOverride>RetroArchQuickMenu</ClassOverride>
|
||||
</Properties>
|
||||
<XuiText>
|
||||
|
@ -127,6 +127,18 @@ Return to Dashboard
|
|||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
<XuiListItem>
|
||||
<Properties>
|
||||
<Id>control_ListItem</Id>
|
||||
<Width>226.000000</Width>
|
||||
<Height>45.000000</Height>
|
||||
<Position>7.000000,22.000000,0.000000</Position>
|
||||
<Anchor>5</Anchor>
|
||||
<Show>false</Show>
|
||||
<Visual>XuiButton</Visual>
|
||||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
</XuiCommonList>
|
||||
<XuiBackButton>
|
||||
<Properties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiScene1</Id>
|
||||
<Width>584.528076</Width>
|
||||
<Height>363.320007</Height>
|
||||
<Position>344.000031,184.000015,0.000000</Position>
|
||||
<Position>32.029999,76.040001,0.000000</Position>
|
||||
<ClassOverride>RetroArchControls</ClassOverride>
|
||||
</Properties>
|
||||
<XuiText>
|
||||
|
@ -266,6 +266,18 @@ Reset all buttons to defaults
|
|||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
<XuiListItem>
|
||||
<Properties>
|
||||
<Id>control_ListItem</Id>
|
||||
<Width>226.000000</Width>
|
||||
<Height>45.000000</Height>
|
||||
<Position>7.000000,22.000000,0.000000</Position>
|
||||
<Anchor>5</Anchor>
|
||||
<Show>false</Show>
|
||||
<Visual>XuiButton</Visual>
|
||||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
</XuiCommonList>
|
||||
<XuiBackButton>
|
||||
<Properties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiSceneFileBrowser</Id>
|
||||
<Width>575.888062</Width>
|
||||
<Height>336.017609</Height>
|
||||
<Position>333.995880,209.035965,0.000000</Position>
|
||||
<Position>32.029999,76.040001,0.000000</Position>
|
||||
<ClassOverride>RetroArchFileBrowser</ClassOverride>
|
||||
</Properties>
|
||||
<XuiText>
|
||||
|
@ -129,6 +129,18 @@
|
|||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
<XuiListItem>
|
||||
<Properties>
|
||||
<Id>control_ListItem</Id>
|
||||
<Width>226.000000</Width>
|
||||
<Height>45.000000</Height>
|
||||
<Position>7.000000,22.000000,0.000000</Position>
|
||||
<Anchor>5</Anchor>
|
||||
<Show>false</Show>
|
||||
<Visual>XuiButton</Visual>
|
||||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
</XuiCommonList>
|
||||
<XuiBackButton>
|
||||
<Properties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiSceneCoreFileBrowser</Id>
|
||||
<Width>575.888062</Width>
|
||||
<Height>336.017609</Height>
|
||||
<Position>353.995880,209.035965,0.000000</Position>
|
||||
<Position>32.029999,76.040001,0.000000</Position>
|
||||
<ClassOverride>RetroArchCoreBrowser</ClassOverride>
|
||||
</Properties>
|
||||
<XuiText>
|
||||
|
@ -139,6 +139,18 @@
|
|||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
<XuiListItem>
|
||||
<Properties>
|
||||
<Id>control_ListItem</Id>
|
||||
<Width>226.000000</Width>
|
||||
<Height>45.000000</Height>
|
||||
<Position>7.000000,22.000000,0.000000</Position>
|
||||
<Anchor>5</Anchor>
|
||||
<Show>false</Show>
|
||||
<Visual>XuiButton</Visual>
|
||||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
</XuiCommonList>
|
||||
<XuiBackButton>
|
||||
<Properties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiScene1</Id>
|
||||
<Width>584.528076</Width>
|
||||
<Height>363.320007</Height>
|
||||
<Position>347.429474,184.843964,0.000000</Position>
|
||||
<Position>32.029472,76.043968,0.000000</Position>
|
||||
<ClassOverride>RetroArchMain</ClassOverride>
|
||||
</Properties>
|
||||
<XuiButton>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiScene1</Id>
|
||||
<Width>584.528076</Width>
|
||||
<Height>363.320007</Height>
|
||||
<Position>302.429474,184.843964,0.000000</Position>
|
||||
<Position>32.029999,76.040001,0.000000</Position>
|
||||
<ClassOverride>RetroArchQuickMenu</ClassOverride>
|
||||
</Properties>
|
||||
<XuiText>
|
||||
|
@ -115,6 +115,18 @@ Return to Dashboard
|
|||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
<XuiListItem>
|
||||
<Properties>
|
||||
<Id>control_ListItem</Id>
|
||||
<Width>226.000000</Width>
|
||||
<Height>45.000000</Height>
|
||||
<Position>7.000000,22.000000,0.000000</Position>
|
||||
<Anchor>5</Anchor>
|
||||
<Show>false</Show>
|
||||
<Visual>XuiButton</Visual>
|
||||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
</XuiCommonList>
|
||||
<XuiBackButton>
|
||||
<Properties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiScene1</Id>
|
||||
<Width>584.528076</Width>
|
||||
<Height>363.320007</Height>
|
||||
<Position>344.000031,184.000015,0.000000</Position>
|
||||
<Position>32.029999,76.040001,0.000000</Position>
|
||||
<ClassOverride>RetroArchSettings</ClassOverride>
|
||||
</Properties>
|
||||
<XuiText>
|
||||
|
@ -187,6 +187,18 @@ Cutom Scaling Factor:
|
|||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
<XuiListItem>
|
||||
<Properties>
|
||||
<Id>control_ListItem</Id>
|
||||
<Width>226.000000</Width>
|
||||
<Height>45.000000</Height>
|
||||
<Position>7.000000,22.000000,0.000000</Position>
|
||||
<Anchor>5</Anchor>
|
||||
<Show>false</Show>
|
||||
<Visual>XuiButton</Visual>
|
||||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
</XuiCommonList>
|
||||
<XuiBackButton>
|
||||
<Properties>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Id>XuiSceneCoreFileBrowser</Id>
|
||||
<Width>575.888062</Width>
|
||||
<Height>336.017609</Height>
|
||||
<Position>353.995880,209.035965,0.000000</Position>
|
||||
<Position>32.029999,76.040001,0.000000</Position>
|
||||
<ClassOverride>RetroArchShaderBrowser</ClassOverride>
|
||||
</Properties>
|
||||
<XuiText>
|
||||
|
@ -175,6 +175,18 @@
|
|||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
<XuiListItem>
|
||||
<Properties>
|
||||
<Id>control_ListItem</Id>
|
||||
<Width>226.000000</Width>
|
||||
<Height>45.000000</Height>
|
||||
<Position>7.000000,22.000000,0.000000</Position>
|
||||
<Anchor>5</Anchor>
|
||||
<Show>false</Show>
|
||||
<Visual>XuiButton</Visual>
|
||||
<InterItemSpacing>0.000000,10.000000,0.000000</InterItemSpacing>
|
||||
</Properties>
|
||||
</XuiListItem>
|
||||
</XuiCommonList>
|
||||
<XuiBackButton>
|
||||
<Properties>
|
||||
|
|
|
@ -798,6 +798,8 @@ int menu_init (void)
|
|||
|
||||
xdk360_video_t *vid = (xdk360_video_t*)driver.video_data;
|
||||
|
||||
bool hdmenus_allowed = g_console.menus_hd_enable;
|
||||
|
||||
hr = app.InitShared(vid->d3d_render_device, &vid->d3dpp, XuiPNGTextureLoader);
|
||||
|
||||
if (hr < 0)
|
||||
|
@ -821,7 +823,7 @@ int menu_init (void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
hr = XuiSceneCreate(L"file://game:/media/sd/", L"rarch_main.xur", NULL, &app.hMainScene);
|
||||
hr = XuiSceneCreate(hdmenus_allowed ? L"file://game:/media/hd/" : L"file://game:/media/sd/", L"rarch_main.xur", NULL, &app.hMainScene);
|
||||
if (hr < 0)
|
||||
{
|
||||
RARCH_ERR("Failed to create scene 'rarch_main.xur'.\n");
|
||||
|
|
3
AUTHORS
3
AUTHORS
|
@ -11,3 +11,6 @@ Daniel De Matteis - <autechre1024@hotmail.com>
|
|||
- PlayStation 3 port
|
||||
- XBox 360 XDK port
|
||||
|
||||
tukuyomi - <tukuyomi@free.fr>
|
||||
- Cleanups in quickbuild
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
RARCH_VERSION = "0.9.6-rc1"
|
||||
RARCH_VERSION = "0.9.6"
|
||||
|
||||
#which compiler to build with - GCC or SNC
|
||||
#set to GCC for debug builds for use with debugger
|
||||
|
@ -122,7 +122,7 @@ create-salamander:
|
|||
create-shaders:
|
||||
ifeq ($(DOWNLOAD_SHADERS),1)
|
||||
$(RM) -rf ps3/pkg/USRDIR/cores/shaders
|
||||
$(GIT) clone git://github.com/twinaphex/common-shaders.git ps3/pkg/USRDIR/cores/shaders
|
||||
$(GIT) clone git://github.com/libretro/common-shaders.git ps3/pkg/USRDIR/cores/shaders
|
||||
endif
|
||||
|
||||
pkg: $(PPU_TARGET) create-shaders create-npdrm-salamander create-npdrm-core
|
||||
|
|
|
@ -37,7 +37,7 @@ ifeq ($(HAVE_FILE_LOGGER), 1)
|
|||
CFLAGS += -DHAVE_FILE_LOGGER
|
||||
endif
|
||||
|
||||
CFLAGS += -std=gnu99 -DRARCH_CONSOLE -DHAVE_CONFIGFILE=1 -DGEKKO -DHW_RVL -DHAVE_ZLIB -DHAVE_RARCH_MAIN_WRAP -DHAVE_FREETYPE -DHAVE_GRIFFIN=1 -DPACKAGE_VERSION=\"0.9.6-rc1\" -Dmain=ssnes_main -Wno-char-subscripts -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)
|
||||
CFLAGS += -std=gnu99 -DRARCH_CONSOLE -DHAVE_CONFIGFILE=1 -DGEKKO -DHW_RVL -DHAVE_ZLIB -DHAVE_RARCH_MAIN_WRAP -DHAVE_FREETYPE -DHAVE_GRIFFIN=1 -DPACKAGE_VERSION=\"0.9.6\" -Dmain=ssnes_main -Wno-char-subscripts -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)
|
||||
|
||||
ifeq ($(DEBUG), 1)
|
||||
CFLAGS += -O0 -g
|
||||
|
|
|
@ -30,7 +30,7 @@ endif
|
|||
libretro ?= -lretro
|
||||
|
||||
LIBS = -lm
|
||||
DEFINES = -I. -DHAVE_CONFIGFILE -DHAVE_SDL -DHAVE_SCREENSHOTS -DHAVE_BSV_MOVIE -DPACKAGE_VERSION=\"0.9.6-rc1\"
|
||||
DEFINES = -I. -DHAVE_CONFIGFILE -DHAVE_SDL -DHAVE_SCREENSHOTS -DHAVE_BSV_MOVIE -DPACKAGE_VERSION=\"0.9.6\"
|
||||
LDFLAGS = -L. -static-libgcc
|
||||
LDCXXFLAGS = -s
|
||||
|
||||
|
@ -192,10 +192,10 @@ clean:
|
|||
rm -f tools/*.o
|
||||
|
||||
dist_x86: all
|
||||
zip -r retroarch-win32-0.9.6-rc1.zip $(TARGET) $(JTARGET) retroarch.cfg SDL.dll
|
||||
zip -r retroarch-win32-0.9.6.zip $(TARGET) $(JTARGET) retroarch.cfg SDL.dll
|
||||
|
||||
dist_x86_64: all
|
||||
zip -r retroarch-win64-0.9.6-rc1.zip $(TARGET) $(JTARGET) retroarch.cfg SDL.dll
|
||||
zip -r retroarch-win64-0.9.6.zip $(TARGET) $(JTARGET) retroarch.cfg SDL.dll
|
||||
|
||||
libs_x86:
|
||||
wget https://github.com/downloads/Themaister/RetroArch/RetroArch-win32-libs.zip --no-check-certificate
|
||||
|
|
|
@ -21,7 +21,7 @@ INCDIRS = -I. -I$(DEVKITXENON)/usr/include
|
|||
OBJ = fifo_buffer.o retroarch.o driver.o file.o file_path.o settings.o message.o rewind.o movie.o gfx/gfx_common.o patch.o compat/compat.o screenshot.o audio/hermite.o dynamic.o audio/utils.o conf/config_file.o xenon/main.o xenon/xenon360_audio.o xenon/xenon360_input.o xenon/xenon360_video.o
|
||||
|
||||
LIBS = -lretro -lxenon -lm -lc
|
||||
DEFINES = -std=gnu99 -DHAVE_CONFIGFILE=1 -DPACKAGE_VERSION=\"0.9.6-rc1\" -DRARCH_CONSOLE -DHAVE_GETOPT_LONG=1 -Dmain=rarch_main
|
||||
DEFINES = -std=gnu99 -DHAVE_CONFIGFILE=1 -DPACKAGE_VERSION=\"0.9.6\" -DRARCH_CONSOLE -DHAVE_GETOPT_LONG=1 -Dmain=rarch_main
|
||||
DEFINES += -maltivec -mhard-float -m32 -mpowerpc64 -mcpu=cell -mtune=cell -fno-pic -g -Wall -DXENON $(INCDIRS)
|
||||
DEFINES += -u read -u _start -u exc_base
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Latest Windows binaries are currently hosted on my [homepage](http://themaister.
|
|||
- GUI frontend for PC: [RetroArch-Phoenix](https://github.com/Themaister/RetroArch-Phoenix)
|
||||
- Cg/HLSL shaders: [common-shaders](https://github.com/twinaphex/common-shaders)
|
||||
- More Cg shaders: [Emulator-Shader-Pack](https://github.com/Themaister/Emulator-Shader-Pack)
|
||||
- Helper scripts to build libretro implementations: [libretro-super](https://github.com/Themaister/libretro-super)
|
||||
- Helper scripts to build libretro implementations: [libretro-super](https://github.com/libretro/libretro-super)
|
||||
|
||||
# Philosophy
|
||||
|
||||
|
|
|
@ -281,6 +281,11 @@ static const bool block_sram_overwrite = false;
|
|||
// When the ROM is loaded, state index will be set to the highest existing value.
|
||||
static const bool savestate_auto_index = false;
|
||||
|
||||
// Automatically saves a savestate at the end of RetroArch's lifetime.
|
||||
// The path is $SRAM_PATH.auto.
|
||||
// RetroArch will automatically load any savestate with this path on startup.
|
||||
static const bool savestate_auto_save = false;
|
||||
|
||||
// Slowmotion ratio.
|
||||
static const float slowmotion_ratio = 3.0;
|
||||
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
|
||||
echo ""
|
||||
|
||||
. qb/config.params.sh
|
||||
PACKAGE_NAME=retroarch
|
||||
PACKAGE_VERSION=0.9.6
|
||||
|
||||
parse_input "$@"
|
||||
. qb/qb.params.sh
|
||||
|
||||
. qb/qb.comp.sh
|
||||
. qb/config.libs.sh
|
||||
|
|
|
@ -31,6 +31,21 @@
|
|||
VIDEO
|
||||
============================================================ */
|
||||
|
||||
#define MIN_SCALING_FACTOR (1.0f)
|
||||
|
||||
#if defined(__CELLOS_LV2__)
|
||||
#define MAX_SCALING_FACTOR (5.0f)
|
||||
#else
|
||||
#define MAX_SCALING_FACTOR (2.0f)
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
FBO_DEINIT = 0,
|
||||
FBO_INIT,
|
||||
FBO_REINIT
|
||||
};
|
||||
|
||||
enum aspect_ratio
|
||||
{
|
||||
ASPECT_RATIO_1_1 = 0,
|
||||
|
|
|
@ -27,11 +27,11 @@ void rarch_settings_change(unsigned setting)
|
|||
switch(setting)
|
||||
{
|
||||
case S_ASPECT_RATIO_DECREMENT:
|
||||
if(g_console.aspect_ratio_index > 0)
|
||||
if(g_console.aspect_ratio_index > 0)
|
||||
g_console.aspect_ratio_index--;
|
||||
break;
|
||||
case S_ASPECT_RATIO_INCREMENT:
|
||||
if(g_console.aspect_ratio_index < LAST_ASPECT_RATIO)
|
||||
case S_ASPECT_RATIO_INCREMENT:
|
||||
if(g_console.aspect_ratio_index < LAST_ASPECT_RATIO)
|
||||
g_console.aspect_ratio_index++;
|
||||
break;
|
||||
case S_FRAME_ADVANCE:
|
||||
|
@ -57,6 +57,20 @@ void rarch_settings_change(unsigned setting)
|
|||
if(g_console.overscan_amount == 0.0f)
|
||||
g_console.overscan_enable = 0;
|
||||
break;
|
||||
case S_RESOLUTION_PREVIOUS:
|
||||
if (g_console.current_resolution_index)
|
||||
{
|
||||
g_console.current_resolution_index--;
|
||||
g_console.current_resolution_id = g_console.supported_resolutions[g_console.current_resolution_index];
|
||||
}
|
||||
break;
|
||||
case S_RESOLUTION_NEXT:
|
||||
if (g_console.current_resolution_index + 1 < g_console.supported_resolutions_count)
|
||||
{
|
||||
g_console.current_resolution_index++;
|
||||
g_console.current_resolution_id = g_console.supported_resolutions[g_console.current_resolution_index];
|
||||
}
|
||||
break;
|
||||
case S_QUIT:
|
||||
g_console.menu_enable = false;
|
||||
g_console.ingame_menu_enable = false;
|
||||
|
|
|
@ -33,6 +33,8 @@ enum
|
|||
S_OVERSCAN_DECREMENT,
|
||||
S_OVERSCAN_INCREMENT,
|
||||
S_QUIT,
|
||||
S_RESOLUTION_PREVIOUS,
|
||||
S_RESOLUTION_NEXT,
|
||||
S_RETURN_TO_DASHBOARD,
|
||||
S_RETURN_TO_GAME,
|
||||
S_RETURN_TO_LAUNCHER,
|
||||
|
|
|
@ -3398,3 +3398,36 @@ extern int unzSetOffset (unzFile file, unsigned long pos)
|
|||
s->current_file_ok = (err == UNZ_OK);
|
||||
return err;
|
||||
}
|
||||
|
||||
int uncompress (unsigned char *dest, unsigned int *destLen, const unsigned char *source, unsigned int sourceLen)
|
||||
{
|
||||
z_stream stream;
|
||||
int err;
|
||||
|
||||
stream.next_in = (unsigned char*)source;
|
||||
stream.avail_in = (unsigned int)sourceLen;
|
||||
/* Check for source > 64K on 16-bit machine: */
|
||||
if ((unsigned int)stream.avail_in != sourceLen) return Z_BUF_ERROR;
|
||||
|
||||
stream.next_out = dest;
|
||||
stream.avail_out = (unsigned int)*destLen;
|
||||
if ((unsigned int)stream.avail_out != *destLen) return Z_BUF_ERROR;
|
||||
|
||||
stream.zalloc = (alloc_func)0;
|
||||
stream.zfree = (free_func)0;
|
||||
|
||||
err = inflateInit(&stream);
|
||||
if (err != Z_OK) return err;
|
||||
|
||||
err = inflate(&stream, Z_FINISH);
|
||||
if (err != Z_STREAM_END) {
|
||||
inflateEnd(&stream);
|
||||
if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
|
||||
return Z_DATA_ERROR;
|
||||
return err;
|
||||
}
|
||||
*destLen = stream.total_out;
|
||||
|
||||
err = inflateEnd(&stream);
|
||||
return err;
|
||||
}
|
||||
|
|
|
@ -177,6 +177,16 @@ Clients can connect and disconnect at any time.
|
|||
Clients thus cannot interact as player 2.
|
||||
For spectating mode to work, both host and clients will need to use this flag.
|
||||
|
||||
.TP
|
||||
\fB--command CMD\fR
|
||||
Sends a command over UDP to an already running RetroArch application, and exit.
|
||||
The command is formatted as "COMMAND:HOST:PORT".
|
||||
HOST and PORT are both optional. "COMMAND:HOST" will set PORT to
|
||||
"network_cmd_port" default setting.
|
||||
If only "COMMAND" is used, HOST and PORT will be assumed to be "localhost" and "network_cmd_port" respectively.
|
||||
|
||||
The available commands are listed if "COMMAND" is invalid.
|
||||
|
||||
.TP
|
||||
\fB--nick NICK\fR
|
||||
Pick a nickname for use with netplay.
|
||||
|
|
|
@ -320,6 +320,10 @@ static bool environment_cb(unsigned cmd, void *data)
|
|||
g_extern.system.shutdown = true;
|
||||
break;
|
||||
|
||||
case RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL:
|
||||
g_extern.system.performance_level = *(const unsigned*)data;
|
||||
break;
|
||||
|
||||
default:
|
||||
RARCH_LOG("Environ UNSUPPORTED (#%u).\n", cmd);
|
||||
return false;
|
||||
|
|
|
@ -181,6 +181,7 @@ struct settings
|
|||
|
||||
bool block_sram_overwrite;
|
||||
bool savestate_auto_index;
|
||||
bool savestate_auto_save;
|
||||
|
||||
bool network_cmd_enable;
|
||||
uint16_t network_cmd_port;
|
||||
|
@ -329,6 +330,7 @@ struct global
|
|||
|
||||
unsigned rotation;
|
||||
bool shutdown;
|
||||
unsigned performance_level;
|
||||
} system;
|
||||
|
||||
struct
|
||||
|
|
|
@ -309,24 +309,6 @@ void gfx_ctx_get_available_resolutions (void)
|
|||
g_console.check_available_resolutions = true;
|
||||
}
|
||||
|
||||
void ps3_next_resolution (void)
|
||||
{
|
||||
if (g_console.current_resolution_index + 1 < g_console.supported_resolutions_count)
|
||||
{
|
||||
g_console.current_resolution_index++;
|
||||
g_console.current_resolution_id = g_console.supported_resolutions[g_console.current_resolution_index];
|
||||
}
|
||||
}
|
||||
|
||||
void ps3_previous_resolution (void)
|
||||
{
|
||||
if (g_console.current_resolution_index)
|
||||
{
|
||||
g_console.current_resolution_index--;
|
||||
g_console.current_resolution_id = g_console.supported_resolutions[g_console.current_resolution_index];
|
||||
}
|
||||
}
|
||||
|
||||
int gfx_ctx_check_resolution(unsigned resolution_id)
|
||||
{
|
||||
return cellVideoOutGetResolutionAvailability(CELL_VIDEO_OUT_PRIMARY, resolution_id, CELL_VIDEO_OUT_ASPECT_AUTO, 0);
|
||||
|
|
4
gfx/gl.c
4
gfx/gl.c
|
@ -338,7 +338,7 @@ error:
|
|||
return false;
|
||||
}
|
||||
|
||||
static void gl_deinit_fbo(gl_t *gl)
|
||||
void gl_deinit_fbo(gl_t *gl)
|
||||
{
|
||||
if (gl->fbo_inited)
|
||||
{
|
||||
|
@ -352,7 +352,7 @@ static void gl_deinit_fbo(gl_t *gl)
|
|||
}
|
||||
}
|
||||
|
||||
static void gl_init_fbo(gl_t *gl, unsigned width, unsigned height)
|
||||
void gl_init_fbo(gl_t *gl, unsigned width, unsigned height)
|
||||
{
|
||||
// No need to use FBOs.
|
||||
if (!g_settings.video.render_to_texture && gl_shader_num() == 0)
|
||||
|
|
|
@ -225,4 +225,7 @@ void gl_shader_use(unsigned index);
|
|||
void gl_set_projection(gl_t *gl, struct gl_ortho *ortho, bool allow_rotate);
|
||||
void gl_set_viewport(gl_t *gl, unsigned width, unsigned height, bool force_full, bool allow_rotate);
|
||||
|
||||
void gl_init_fbo(gl_t * gl, unsigned width, unsigned height);
|
||||
void gl_deinit_fbo(gl_t *gl);
|
||||
|
||||
#endif
|
||||
|
|
21
libretro.h
21
libretro.h
|
@ -122,6 +122,27 @@ extern "C" {
|
|||
// Should only be used if game has a specific
|
||||
// way to shutdown the game from a menu item or similar.
|
||||
|
||||
#define RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL 8
|
||||
// const unsigned * --
|
||||
// Gives a hint to the frontend how demanding this implementation
|
||||
// is on a system. E.g. reporting a level of 2 means
|
||||
// this implementation should run decently on all frontends
|
||||
// of level 2 and up.
|
||||
//
|
||||
// It can be used by the frontend to potentially warn
|
||||
// about too demanding implementations.
|
||||
//
|
||||
// The levels are "floating", but roughly defined as:
|
||||
// 1: Low-powered devices such as Raspberry Pi, smart phones, tablets, etc.
|
||||
// 2: Medium-spec consoles, such as PS3/360, with sub-par CPUs.
|
||||
// 3: Modern desktop/laptops with reasonably powerful CPUs.
|
||||
// 4: High-end desktops with very powerful CPUs.
|
||||
//
|
||||
// This function can be called on a per-game basis,
|
||||
// as certain games an implementation can play might be
|
||||
// particularily demanding.
|
||||
// If called, it should be called in retro_load_game().
|
||||
|
||||
struct retro_message
|
||||
{
|
||||
const char *msg; // Message to be displayed.
|
||||
|
|
|
@ -113,7 +113,7 @@
|
|||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>_DEBUG;_XBOX;PACKAGE_VERSION="0.9.6-rc1";%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS;main=rarch_main;RARCH_CONSOLE;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_XBOX;PACKAGE_VERSION="0.9.6";%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS;main=rarch_main;RARCH_CONSOLE;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
@ -151,7 +151,7 @@
|
|||
<PREfast>AnalyzeOnly</PREfast>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>_DEBUG;_XBOX;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6-rc1";_CRT_SECURE_NO_WARNINGS;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;RARCH_CONSOLE;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_XBOX;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6";_CRT_SECURE_NO_WARNINGS;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;RARCH_CONSOLE;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
@ -190,7 +190,7 @@
|
|||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6-rc1";_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6";_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<CallAttributedProfiling>Callcap</CallAttributedProfiling>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
|
@ -234,7 +234,7 @@
|
|||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;FASTCAP;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6-rc1";_CRT_SECURE_NO_WARNINGS;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;PROFILE;FASTCAP;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6";_CRT_SECURE_NO_WARNINGS;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
@ -275,7 +275,7 @@
|
|||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6-rc1";_CRT_SECURE_NO_WARNINGS;main=rarch_main;RARCH_CONSOLE=1;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6";_CRT_SECURE_NO_WARNINGS;main=rarch_main;RARCH_CONSOLE=1;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
@ -316,7 +316,7 @@
|
|||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;LTCG;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6-rc1";_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_XBOX;LTCG;%(PreprocessorDefinitions);PACKAGE_VERSION="0.9.6";_CRT_SECURE_NO_WARNINGS;RARCH_CONSOLE;main=rarch_main;HAVE_CONFIGFILE;HAVE_FILEBROWSER;HAVE_NETPLAY;HAVE_SOCKET_LEGACY;HAVE_ZLIB;HAVE_RARCH_MAIN_WRAP;HAVE_RARCH_EXEC;HAVE_LIBRETRO_MANAGEMENT;D3DCOMPILE_USEVOIDS;HAVE_GRIFFIN;HAVE_HLSL;HAVE_VID_CONTEXT;HAVE_D3D9</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<PropertyGroup />
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|PS3'">
|
||||
<ClCompile>
|
||||
<UserPreprocessorDefinitions>_DEBUG;__CELL_ASSERT__;HAVE_OPENGL=1;RARCH_CONSOLE;HAVE_CG=1;HAVE_CONFIGFILE=1;HAVE_NETPLAY=1;HAVE_SOCKET_LEGACY=1;PACKAGE_VERSION="0.9.6-rc1";HAVE_SCREENSHOTS_BUILTIN=1;main=rarch_main;%(UserPreprocessorDefinitions);HAVE_RARCH_MAIN_WRAP;HAVE_RSOUND;HAVE_RARCH_EXEC;HAVE_ZLIB=1;HAVE_LIBRETRO_MANAGEMENT</UserPreprocessorDefinitions>
|
||||
<UserPreprocessorDefinitions>_DEBUG;__CELL_ASSERT__;HAVE_OPENGL=1;RARCH_CONSOLE;HAVE_CG=1;HAVE_CONFIGFILE=1;HAVE_NETPLAY=1;HAVE_SOCKET_LEGACY=1;PACKAGE_VERSION="0.9.6";HAVE_SCREENSHOTS_BUILTIN=1;main=rarch_main;%(UserPreprocessorDefinitions);HAVE_RARCH_MAIN_WRAP;HAVE_RSOUND;HAVE_RARCH_EXEC;HAVE_ZLIB=1;HAVE_LIBRETRO_MANAGEMENT</UserPreprocessorDefinitions>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<PreprocessorDefinitions>%(UserPreprocessorDefinitions);$(BuiltInDefines);__INTELLISENSE__;%(PreprocessorDefinitions);</PreprocessorDefinitions>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
@ -60,7 +60,7 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|PS3'">
|
||||
<ClCompile>
|
||||
<UserPreprocessorDefinitions>NDEBUG;HAVE_OPENGL=1;RARCH_CONSOLE;HAVE_CG=1;HAVE_CONFIGFILE=1;HAVE_NETPLAY=1;HAVE_SOCKET_LEGACY=1;PACKAGE_VERSION="0.9.6-rc1";HAVE_SCREENSHOTS_BUILTIN=1;main="rarch_main";%(UserPreprocessorDefinitions);HAVE_RARCH_MAIN_WRAP;HAVE_RSOUND;HAVE_RARCH_EXEC;HAVE_ZLIB=1;HAVE_LIBRETRO_MANAGEMENT</UserPreprocessorDefinitions>
|
||||
<UserPreprocessorDefinitions>NDEBUG;HAVE_OPENGL=1;RARCH_CONSOLE;HAVE_CG=1;HAVE_CONFIGFILE=1;HAVE_NETPLAY=1;HAVE_SOCKET_LEGACY=1;PACKAGE_VERSION="0.9.6";HAVE_SCREENSHOTS_BUILTIN=1;main="rarch_main";%(UserPreprocessorDefinitions);HAVE_RARCH_MAIN_WRAP;HAVE_RSOUND;HAVE_RARCH_EXEC;HAVE_ZLIB=1;HAVE_LIBRETRO_MANAGEMENT</UserPreprocessorDefinitions>
|
||||
<OptimizationLevel>Level2</OptimizationLevel>
|
||||
<PreprocessorDefinitions>%(UserPreprocessorDefinitions);$(BuiltInDefines);__INTELLISENSE__;%(PreprocessorDefinitions);</PreprocessorDefinitions>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
|
|
151
netplay.c
151
netplay.c
|
@ -233,19 +233,86 @@ static void log_connection(const struct sockaddr_storage *their_addr,
|
|||
}
|
||||
#endif
|
||||
|
||||
static int init_tcp_connection(const struct addrinfo *res, bool server, bool spectate,
|
||||
struct sockaddr *other_addr, socklen_t addr_size)
|
||||
{
|
||||
bool ret = true;
|
||||
int fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
|
||||
if (fd < 0)
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (server)
|
||||
{
|
||||
if (connect(fd, res->ai_addr, res->ai_addrlen) < 0)
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else if (spectate)
|
||||
{
|
||||
int yes = 1;
|
||||
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, CONST_CAST &yes, sizeof(int));
|
||||
|
||||
if (bind(fd, res->ai_addr, res->ai_addrlen) < 0 ||
|
||||
listen(fd, MAX_SPECTATORS) < 0)
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int yes = 1;
|
||||
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, CONST_CAST &yes, sizeof(int));
|
||||
|
||||
if (bind(fd, res->ai_addr, res->ai_addrlen) < 0 ||
|
||||
listen(fd, 1) < 0)
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
|
||||
int new_fd = accept(fd, other_addr, &addr_size);
|
||||
if (new_fd < 0)
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
fd = new_fd;
|
||||
}
|
||||
|
||||
end:
|
||||
if (!ret && fd >= 0)
|
||||
{
|
||||
close(fd);
|
||||
fd = -1;
|
||||
}
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
static bool init_tcp_socket(netplay_t *handle, const char *server, uint16_t port, bool spectate)
|
||||
{
|
||||
struct addrinfo hints, *res = NULL;
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
|
||||
#if defined(_WIN32) || defined(HAVE_SOCKET_LEGACY)
|
||||
hints.ai_family = AF_INET;
|
||||
#else
|
||||
hints.ai_family = AF_UNSPEC;
|
||||
#endif
|
||||
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
if (!server)
|
||||
hints.ai_flags = AI_PASSIVE;
|
||||
|
||||
bool ret = false;
|
||||
char port_buf[16];
|
||||
snprintf(port_buf, sizeof(port_buf), "%hu", (unsigned short)port);
|
||||
if (getaddrinfo(server, port_buf, &hints, &res) < 0)
|
||||
|
@ -254,75 +321,29 @@ static bool init_tcp_socket(netplay_t *handle, const char *server, uint16_t port
|
|||
if (!res)
|
||||
return false;
|
||||
|
||||
handle->fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
|
||||
if (handle->fd < 0)
|
||||
// If "localhost" is used, it is important to check every possible address for ipv4/ipv6.
|
||||
const struct addrinfo *tmp_info = res;
|
||||
while (tmp_info)
|
||||
{
|
||||
RARCH_ERR("Failed to init socket...\n");
|
||||
|
||||
if (res)
|
||||
freeaddrinfo(res);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (server)
|
||||
{
|
||||
if (connect(handle->fd, res->ai_addr, res->ai_addrlen) < 0)
|
||||
int fd;
|
||||
if ((fd = init_tcp_connection(tmp_info, server, handle->spectate,
|
||||
(struct sockaddr*)&handle->other_addr, sizeof(handle->other_addr))) >= 0)
|
||||
{
|
||||
RARCH_ERR("Failed to connect to server.\n");
|
||||
close(handle->fd);
|
||||
handle->fd = -1;
|
||||
freeaddrinfo(res);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (handle->spectate)
|
||||
{
|
||||
int yes = 1;
|
||||
setsockopt(handle->fd, SOL_SOCKET, SO_REUSEADDR, CONST_CAST &yes, sizeof(int));
|
||||
|
||||
if (bind(handle->fd, res->ai_addr, res->ai_addrlen) < 0 ||
|
||||
listen(handle->fd, MAX_SPECTATORS) < 0)
|
||||
{
|
||||
RARCH_ERR("Failed to bind socket.\n");
|
||||
close(handle->fd);
|
||||
handle->fd = -1;
|
||||
freeaddrinfo(res);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int yes = 1;
|
||||
setsockopt(handle->fd, SOL_SOCKET, SO_REUSEADDR, CONST_CAST &yes, sizeof(int));
|
||||
|
||||
if (bind(handle->fd, res->ai_addr, res->ai_addrlen) < 0 ||
|
||||
listen(handle->fd, 1) < 0)
|
||||
{
|
||||
RARCH_ERR("Failed to bind socket.\n");
|
||||
close(handle->fd);
|
||||
handle->fd = -1;
|
||||
freeaddrinfo(res);
|
||||
return false;
|
||||
ret = true;
|
||||
handle->fd = fd;
|
||||
break;
|
||||
}
|
||||
|
||||
socklen_t addr_size = sizeof(handle->other_addr);
|
||||
int new_fd = accept(handle->fd,
|
||||
(struct sockaddr*)&handle->other_addr, &addr_size);
|
||||
if (new_fd < 0)
|
||||
{
|
||||
RARCH_ERR("Failed to accept socket.\n");
|
||||
close(handle->fd);
|
||||
handle->fd = -1;
|
||||
freeaddrinfo(res);
|
||||
return false;
|
||||
}
|
||||
close(handle->fd);
|
||||
handle->fd = new_fd;
|
||||
tmp_info = tmp_info->ai_next;
|
||||
}
|
||||
|
||||
freeaddrinfo(res);
|
||||
if (res)
|
||||
freeaddrinfo(res);
|
||||
|
||||
return true;
|
||||
if (!ret)
|
||||
RARCH_ERR("Failed to set up netplay sockets.\n");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool init_udp_socket(netplay_t *handle, const char *server, uint16_t port)
|
||||
|
@ -374,7 +395,7 @@ static bool init_udp_socket(netplay_t *handle, const char *server, uint16_t port
|
|||
}
|
||||
|
||||
// Platform specific socket library init.
|
||||
static bool init_network(void)
|
||||
bool netplay_init_network(void)
|
||||
{
|
||||
static bool inited = false;
|
||||
if (inited)
|
||||
|
@ -400,7 +421,7 @@ static bool init_network(void)
|
|||
|
||||
static bool init_socket(netplay_t *handle, const char *server, uint16_t port)
|
||||
{
|
||||
if (!init_network())
|
||||
if (!netplay_init_network())
|
||||
return false;
|
||||
|
||||
if (!init_tcp_socket(handle, server, port, handle->spectate))
|
||||
|
@ -717,8 +738,6 @@ netplay_t *netplay_new(const char *server, uint16_t port,
|
|||
bool spectate,
|
||||
const char *nick)
|
||||
{
|
||||
(void)spectate;
|
||||
|
||||
if (frames > UDP_FRAME_PACKETS)
|
||||
frames = UDP_FRAME_PACKETS;
|
||||
|
||||
|
|
|
@ -41,6 +41,8 @@ struct retro_callbacks
|
|||
retro_input_state_t state_cb;
|
||||
};
|
||||
|
||||
bool netplay_init_network(void);
|
||||
|
||||
// Creates a new netplay handle. A NULL host means we're hosting (player 1). :)
|
||||
netplay_t *netplay_new(const char *server,
|
||||
uint16_t port, unsigned frames,
|
||||
|
|
122
network_cmd.c
122
network_cmd.c
|
@ -14,12 +14,17 @@
|
|||
*/
|
||||
|
||||
#include "netplay_compat.h"
|
||||
#include "netplay.h"
|
||||
#include "network_cmd.h"
|
||||
#include "driver.h"
|
||||
#include "general.h"
|
||||
#include "compat/strl.h"
|
||||
#include "compat/posix_string.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DEFAULT_NETWORK_CMD_PORT 55355
|
||||
|
||||
struct network_cmd
|
||||
{
|
||||
int fd;
|
||||
|
@ -38,10 +43,15 @@ static bool socket_nonblock(int fd)
|
|||
|
||||
network_cmd_t *network_cmd_new(uint16_t port)
|
||||
{
|
||||
if (!netplay_init_network())
|
||||
return NULL;
|
||||
|
||||
network_cmd_t *handle = (network_cmd_t*)calloc(1, sizeof(*handle));
|
||||
if (!handle)
|
||||
return NULL;
|
||||
|
||||
RARCH_LOG("Bringing up command interface on port %hu.\n", (unsigned short)port);
|
||||
|
||||
handle->fd = -1;
|
||||
|
||||
struct addrinfo hints, *res = NULL;
|
||||
|
@ -76,7 +86,6 @@ network_cmd_t *network_cmd_new(uint16_t port)
|
|||
}
|
||||
|
||||
freeaddrinfo(res);
|
||||
|
||||
return handle;
|
||||
|
||||
error:
|
||||
|
@ -190,3 +199,114 @@ void network_cmd_pre_frame(network_cmd_t *handle)
|
|||
}
|
||||
}
|
||||
|
||||
static bool send_udp_packet(const char *host, uint16_t port, const char *msg)
|
||||
{
|
||||
struct addrinfo hints, *res = NULL;
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
#if defined(_WIN32) || defined(HAVE_SOCKET_LEGACY)
|
||||
hints.ai_family = AF_INET;
|
||||
#else
|
||||
hints.ai_family = AF_UNSPEC;
|
||||
#endif
|
||||
hints.ai_socktype = SOCK_DGRAM;
|
||||
|
||||
int fd = -1;
|
||||
bool ret = true;
|
||||
char port_buf[16];
|
||||
|
||||
snprintf(port_buf, sizeof(port_buf), "%hu", (unsigned short)port);
|
||||
if (getaddrinfo(host, port_buf, &hints, &res) < 0)
|
||||
return false;
|
||||
|
||||
// Send to all possible targets.
|
||||
// "localhost" might resolve to several different IPs.
|
||||
const struct addrinfo *tmp = res;
|
||||
while (tmp)
|
||||
{
|
||||
fd = socket(tmp->ai_family, tmp->ai_socktype, tmp->ai_protocol);
|
||||
if (fd < 0)
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
|
||||
ssize_t len = strlen(msg);
|
||||
ssize_t ret = sendto(fd, msg, len, 0, tmp->ai_addr, tmp->ai_addrlen);
|
||||
if (ret < len)
|
||||
{
|
||||
ret = false;
|
||||
goto end;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
fd = -1;
|
||||
tmp = tmp->ai_next;
|
||||
}
|
||||
|
||||
end:
|
||||
freeaddrinfo(res);
|
||||
if (fd >= 0)
|
||||
close(fd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static bool verify_command(const char *cmd)
|
||||
{
|
||||
for (unsigned i = 0; i < sizeof(map) / sizeof(map[0]); i++)
|
||||
{
|
||||
if (strcmp(map[i].str, cmd) == 0)
|
||||
return true;
|
||||
}
|
||||
|
||||
RARCH_ERR("Command \"%s\" is not recognized by RetroArch.\n", cmd);
|
||||
RARCH_ERR("\tValid commands:\n");
|
||||
for (unsigned i = 0; i < sizeof(map) / sizeof(map[0]); i++)
|
||||
RARCH_ERR("\t\t%s\n", map[i].str);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool network_cmd_send(const char *cmd_)
|
||||
{
|
||||
if (!netplay_init_network())
|
||||
return NULL;
|
||||
|
||||
char *command = strdup(cmd_);
|
||||
if (!command)
|
||||
return false;
|
||||
|
||||
bool old_verbose = g_extern.verbose;
|
||||
g_extern.verbose = true;
|
||||
|
||||
const char *cmd = NULL;
|
||||
const char *host = NULL;
|
||||
const char *port_ = NULL;
|
||||
uint16_t port = DEFAULT_NETWORK_CMD_PORT;
|
||||
|
||||
cmd = strtok(command, ":");
|
||||
if (cmd)
|
||||
host = strtok(NULL, ":");
|
||||
if (host)
|
||||
port_ = strtok(NULL, ":");
|
||||
|
||||
if (!host)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
host = "127.0.0.1";
|
||||
#else
|
||||
host = "localhost";
|
||||
#endif
|
||||
}
|
||||
|
||||
if (port_)
|
||||
port = strtoul(port_, NULL, 0);
|
||||
|
||||
RARCH_LOG("Sending command: \"%s\" to %s:%hu\n", cmd, host, (unsigned short)port);
|
||||
|
||||
bool ret = verify_command(cmd) && send_udp_packet(host, port, cmd);
|
||||
free(command);
|
||||
|
||||
g_extern.verbose = old_verbose;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,5 +28,7 @@ void network_cmd_pre_frame(network_cmd_t *handle);
|
|||
void network_cmd_set(network_cmd_t *handle, unsigned id);
|
||||
bool network_cmd_get(network_cmd_t *handle, unsigned id);
|
||||
|
||||
bool network_cmd_send(const char *cmd);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -40,7 +40,6 @@
|
|||
#include <np/drm.h>
|
||||
|
||||
#include "ps3_input.h"
|
||||
#include "ps3_video_psgl.h"
|
||||
|
||||
#include "../console/console_ext.h"
|
||||
#include "../conf/config_file.h"
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
|
||||
#include "../console/console_ext.h"
|
||||
|
||||
#include "ps3_video_psgl.h"
|
||||
#include "../gfx/gl_common.h"
|
||||
|
||||
#include "shared.h"
|
||||
|
@ -148,6 +147,9 @@ static menu menu_controlssettings = {
|
|||
items_generalsettings /* items */
|
||||
};
|
||||
|
||||
//forward decls
|
||||
extern const char *ps3_get_resolution_label(unsigned resolution);
|
||||
|
||||
static void display_menubar(uint32_t menu_enum)
|
||||
{
|
||||
gl_t *gl = driver.video_data;
|
||||
|
@ -1169,12 +1171,12 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
|
|||
case SETTING_CHANGE_RESOLUTION:
|
||||
if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) )
|
||||
{
|
||||
ps3_next_resolution();
|
||||
rarch_settings_change(S_RESOLUTION_NEXT);
|
||||
set_delay = DELAY_SMALL;
|
||||
}
|
||||
if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) )
|
||||
{
|
||||
ps3_previous_resolution();
|
||||
rarch_settings_change(S_RESOLUTION_PREVIOUS);
|
||||
set_delay = DELAY_SMALL;
|
||||
}
|
||||
if(CTRL_CROSS(state))
|
||||
|
|
|
@ -24,9 +24,8 @@
|
|||
#include <sysutil/sysutil_common.h>
|
||||
|
||||
#include "ps3_input.h"
|
||||
#include "ps3_video_psgl.h"
|
||||
#include "../driver.h"
|
||||
#include "../console/console_ext_input.h"
|
||||
#include "../console/console_ext.h"
|
||||
#include "../libretro.h"
|
||||
#include "../general.h"
|
||||
#include "shared.h"
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
/* RetroArch - A frontend for libretro.
|
||||
* Copyright (C) 2010-2012 - Hans-Kristian Arntzen
|
||||
* Copyright (C) 2011-2012 - Daniel De Matteis
|
||||
*
|
||||
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Found-
|
||||
* ation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with RetroArch.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _PS3_VIDEO_PSGL_H
|
||||
#define _PS3_VIDEO_PSGL_H
|
||||
|
||||
#include "../gfx/gl_common.h"
|
||||
#include "../gfx/gfx_common.h"
|
||||
#include "../gfx/image.h"
|
||||
#include "../console/console_ext.h"
|
||||
|
||||
enum
|
||||
{
|
||||
FBO_DEINIT = 0,
|
||||
FBO_INIT,
|
||||
FBO_REINIT
|
||||
};
|
||||
|
||||
#define MIN_SCALING_FACTOR (1.0f)
|
||||
#define MAX_SCALING_FACTOR (4.0f)
|
||||
|
||||
const char * ps3_get_resolution_label(uint32_t resolution);
|
||||
void ps3_previous_resolution (void);
|
||||
void ps3_next_resolution (void);
|
||||
|
||||
void gl_deinit_fbo(gl_t * gl);
|
||||
void gl_init_fbo(gl_t * gl, unsigned width, unsigned height);
|
||||
|
||||
bool gl_cg_reinit(const char *path);
|
||||
bool gl_cg_save_cgp(const char *path, const struct gl_cg_cgp_info *info);
|
||||
bool gl_cg_load_shader(unsigned index, const char *path);
|
||||
|
||||
unsigned gl_cg_get_lut_info(struct gl_cg_lut_info *info, unsigned elems);
|
||||
|
||||
#endif
|
|
@ -25,7 +25,7 @@ else
|
|||
HAVE_RPI=no
|
||||
fi
|
||||
|
||||
if [ $OS = BSD ]; then
|
||||
if [ "$OS" = BSD ]; then
|
||||
DYLIB=-lc
|
||||
else
|
||||
DYLIB=-ldl
|
||||
|
@ -38,7 +38,7 @@ else
|
|||
HAVE_DYNAMIC=no
|
||||
fi
|
||||
|
||||
if [ $HAVE_DYNAMIC != yes ]; then
|
||||
if [ "$HAVE_DYNAMIC" != yes ]; then
|
||||
check_lib_cxx RETRO $LIBRETRO retro_init $DYLIB
|
||||
check_critical RETRO "Cannot find libretro."
|
||||
add_define_make libretro $LIBRETRO
|
||||
|
@ -48,10 +48,10 @@ check_lib THREADS -lpthread pthread_create
|
|||
check_lib DYLIB $DYLIB dlopen
|
||||
|
||||
check_lib NETPLAY -lc socket
|
||||
if [ $HAVE_NETPLAY = yes ]; then
|
||||
if [ "$HAVE_NETPLAY" = yes ]; then
|
||||
HAVE_GETADDRINFO=auto
|
||||
check_lib GETADDRINFO -lc getaddrinfo
|
||||
if [ $HAVE_GETADDRINFO = yes ]; then
|
||||
if [ "$HAVE_GETADDRINFO" = yes ]; then
|
||||
HAVE_SOCKET_LEGACY=no
|
||||
else
|
||||
HAVE_SOCKET_LEGACY=yes
|
||||
|
@ -61,10 +61,9 @@ else
|
|||
HAVE_NETWORK_CMD=no
|
||||
fi
|
||||
|
||||
|
||||
check_lib GETOPT_LONG -lc getopt_long
|
||||
|
||||
if [ $HAVE_DYLIB = no ] && [ $HAVE_DYNAMIC = yes ]; then
|
||||
if [ "$HAVE_DYLIB" = no ] && [ "$HAVE_DYNAMIC" = yes ]; then
|
||||
echo "Dynamic loading of libsnes is enabled, but your platform does not appear to have dlopen(), use --disable-dynamic or --with-libsnes=\"-lsnes\"".
|
||||
exit 1
|
||||
fi
|
||||
|
@ -74,13 +73,13 @@ check_header OSS sys/soundcard.h
|
|||
check_header OSS_BSD soundcard.h
|
||||
check_lib OSS_LIB -lossaudio
|
||||
|
||||
if [ $OS = Darwin ]; then
|
||||
if [ "$OS" = Darwin ]; then
|
||||
check_lib AL "-framework OpenAL" alcOpenDevice
|
||||
else
|
||||
check_lib AL -lopenal alcOpenDevice
|
||||
fi
|
||||
|
||||
if [ $OS = Darwin ]; then
|
||||
if [ "$OS" = Darwin ]; then
|
||||
check_lib FBO "-framework OpenGL" glFramebufferTexture2D
|
||||
else
|
||||
check_lib FBO -lGL glFramebufferTexture2D
|
||||
|
@ -97,7 +96,7 @@ check_pkgconf SDL sdl 1.2.10
|
|||
check_critical SDL "Cannot find SDL library."
|
||||
|
||||
# On some distros, -lCg doesn't link against -lstdc++ it seems ...
|
||||
if [ $HAVE_OPENGL != no ]; then
|
||||
if [ "$HAVE_OPENGL" != no ]; then
|
||||
check_lib_cxx CG -lCg cgCreateContext
|
||||
else
|
||||
echo "Ignoring Cg. OpenGL is not enabled."
|
||||
|
@ -107,17 +106,17 @@ fi
|
|||
check_pkgconf XML libxml-2.0
|
||||
check_pkgconf SDL_IMAGE SDL_image
|
||||
|
||||
if [ $HAVE_THREADS != no ]; then
|
||||
if [ $HAVE_FFMPEG != no ]; then
|
||||
if [ "$HAVE_THREADS" != no ]; then
|
||||
if [ "$HAVE_FFMPEG" != no ]; then
|
||||
check_pkgconf AVCODEC libavcodec
|
||||
check_pkgconf AVFORMAT libavformat
|
||||
check_pkgconf AVUTIL libavutil
|
||||
check_pkgconf SWSCALE libswscale
|
||||
|
||||
( [ $HAVE_FFMPEG = auto ] && ( [ $HAVE_AVCODEC = no ] || [ $HAVE_AVFORMAT = no ] || [ $HAVE_AVUTIL = no ] || [ $HAVE_SWSCALE = no ] ) && HAVE_FFMPEG=no ) || HAVE_FFMPEG=yes
|
||||
( [ "$HAVE_FFMPEG" = auto ] && ( [ "$HAVE_AVCODEC" = no ] || [ "$HAVE_AVFORMAT" = no ] || [ "$HAVE_AVUTIL" = no ] || [ "$HAVE_SWSCALE" = no ] ) && HAVE_FFMPEG=no ) || HAVE_FFMPEG=yes
|
||||
fi
|
||||
|
||||
if [ $HAVE_FFMPEG = yes ]; then
|
||||
if [ "$HAVE_FFMPEG" = yes ]; then
|
||||
check_lib FFMPEG_ALLOC_CONTEXT3 "$AVCODEC_LIBS" avcodec_alloc_context3
|
||||
check_lib FFMPEG_AVCODEC_OPEN2 "$AVCODEC_LIBS" avcodec_open2
|
||||
check_lib FFMPEG_AVCODEC_ENCODE_AUDIO2 "$AVCODEC_LIBS" avcodec_encode_audio2
|
||||
|
@ -127,7 +126,7 @@ if [ $HAVE_THREADS != no ]; then
|
|||
check_lib FFMPEG_AVCODEC_ENCODE_VIDEO2 "$AVCODEC_LIBS" avcodec_encode_video2
|
||||
fi
|
||||
|
||||
if [ $HAVE_FFMPEG = no ] && [ $HAVE_X264RGB = yes ]; then
|
||||
if [ "$HAVE_FFMPEG" = no ] && [ "$HAVE_X264RGB" = yes ]; then
|
||||
echo "x264 RGB recording is enabled, but FFmpeg is not. --enable-x264rgb will not have any effect."
|
||||
fi
|
||||
else
|
||||
|
@ -140,7 +139,7 @@ check_lib DYNAMIC $DYLIB dlopen
|
|||
check_pkgconf FREETYPE freetype2
|
||||
check_pkgconf X11 x11
|
||||
check_pkgconf XEXT xext
|
||||
if [ $HAVE_X11 = yes ] && [ $HAVE_XEXT = yes ]; then
|
||||
if [ "$HAVE_X11" = yes ] && [ "$HAVE_XEXT" = yes ]; then
|
||||
check_pkgconf XVIDEO xv
|
||||
else
|
||||
echo "X11 or Xext not present. Skipping XVideo."
|
||||
|
|
|
@ -1,35 +1,26 @@
|
|||
. qb/qb.params.sh
|
||||
|
||||
PACKAGE_NAME=ssnes
|
||||
PACKAGE_VERSION=0.9.6-rc1
|
||||
|
||||
# Adds a command line opt to ./configure --help
|
||||
# $1: Variable (HAVE_ALSA, HAVE_OSS, etc)
|
||||
# $2: Comment
|
||||
# $3: Default arg. auto implies that HAVE_ALSA will be set according to library checks later on.
|
||||
add_command_line_enable DYNAMIC "Disable dynamic loading of libsnes library" yes
|
||||
add_command_line_string LIBRETRO "libretro library used" ""
|
||||
add_command_line_enable THREADS "Threading support" auto
|
||||
add_command_line_enable FFMPEG "Enable FFmpeg recording support" auto
|
||||
add_command_line_enable X264RGB "Enable lossless X264 RGB recording" no
|
||||
add_command_line_enable DYLIB "Enable dynamic loading support" auto
|
||||
add_command_line_enable NETPLAY "Enable netplay support" auto
|
||||
add_command_line_enable CONFIGFILE "Disable support for config file" yes
|
||||
add_command_line_enable OPENGL "Disable OpenGL support" yes
|
||||
add_command_line_enable CG "Enable Cg shader support" auto
|
||||
add_command_line_enable XML "Enable bSNES-style XML shader support" auto
|
||||
add_command_line_enable FBO "Enable render-to-texture (FBO) support" auto
|
||||
add_command_line_enable ALSA "Enable ALSA support" auto
|
||||
add_command_line_enable OSS "Enable OSS support" auto
|
||||
add_command_line_enable RSOUND "Enable RSound support" auto
|
||||
add_command_line_enable ROAR "Enable RoarAudio support" auto
|
||||
add_command_line_enable AL "Enable OpenAL support" auto
|
||||
add_command_line_enable JACK "Enable JACK support" auto
|
||||
add_command_line_enable COREAUDIO "Enable CoreAudio support" auto
|
||||
add_command_line_enable PULSE "Enable PulseAudio support" auto
|
||||
add_command_line_enable FREETYPE "Enable FreeType support" auto
|
||||
add_command_line_enable XVIDEO "Enable XVideo support" auto
|
||||
add_command_line_enable SDL_IMAGE "Enable SDL_image support" auto
|
||||
add_command_line_enable PYTHON "Enable Python 3 support for shaders" auto
|
||||
add_command_line_enable SINC "Disable SINC resampler" yes
|
||||
add_command_line_enable BSV_MOVIE "Disable BSV movie support" yes
|
||||
HAVE_DYNAMIC=yes # Disable dynamic loading of libsnes library
|
||||
HAVE_LIBRETRO= # libretro library used
|
||||
HAVE_THREADS=auto # Threading support
|
||||
HAVE_FFMPEG=auto # Enable FFmpeg recording support
|
||||
HAVE_X264RGB=no # Enable lossless X264 RGB recording
|
||||
HAVE_DYLIB=auto # Enable dynamic loading support
|
||||
HAVE_NETPLAY=auto # Enable netplay support
|
||||
HAVE_CONFIGFILE=yes # Disable support for config file
|
||||
HAVE_OPENGL=yes # Disable OpenGL support
|
||||
HAVE_CG=auto # Enable Cg shader support
|
||||
HAVE_XML=auto # Enable bSNES-style XML shader support
|
||||
HAVE_FBO=auto # Enable render-to-texture (FBO) support
|
||||
HAVE_ALSA=auto # Enable ALSA support
|
||||
HAVE_OSS=auto # Enable OSS support
|
||||
HAVE_RSOUND=auto # Enable RSound support
|
||||
HAVE_ROAR=auto # Enable RoarAudio support
|
||||
HAVE_AL=auto # Enable OpenAL support
|
||||
HAVE_JACK=auto # Enable JACK support
|
||||
HAVE_COREAUDIO=auto # Enable CoreAudio support
|
||||
HAVE_PULSE=auto # Enable PulseAudio support
|
||||
HAVE_FREETYPE=auto # Enable FreeType support
|
||||
HAVE_XVIDEO=auto # Enable XVideo support
|
||||
HAVE_SDL_IMAGE=auto # Enable SDL_image support
|
||||
HAVE_PYTHON=auto # Enable Python 3 support for shaders
|
||||
HAVE_SINC=yes # Disable SINC resampler
|
||||
HAVE_BSV_MOVIE=yes # Disable BSV movie support
|
||||
|
|
|
@ -41,7 +41,7 @@ if [ "$USE_LANG_C" = yes ]; then
|
|||
|
||||
rm -rf $TEMP_C $TEMP_EXE
|
||||
|
||||
[ $answer = no ] && echo "Can't find suitable C compiler. Exiting ..." && exit 1
|
||||
[ "$answer" = no ] && echo "Can't find suitable C compiler. Exiting ..." && exit 1
|
||||
fi
|
||||
|
||||
# Checking for working C++ compiler
|
||||
|
@ -64,6 +64,6 @@ if [ "$USE_LANG_CXX" = "yes" ]; then
|
|||
|
||||
rm -rf $TEMP_CXX $TEMP_EXE
|
||||
|
||||
[ $answer = no ] && echo "Can't find suitable C++ compiler. Exiting ..." && exit 1
|
||||
[ "$answer" = no ] && echo "Can't find suitable C++ compiler. Exiting ..." && exit 1
|
||||
fi
|
||||
|
||||
|
|
198
qb/qb.params.sh
198
qb/qb.params.sh
|
@ -1,153 +1,79 @@
|
|||
COMMAND_LINE_OPTS_ENABLE=""
|
||||
|
||||
add_command_line_enable()
|
||||
{
|
||||
COMMAND_LINE_OPTS_ENABLE="$COMMAND_LINE_OPTS_ENABLE:\"$1\" \"$2\" \"$3\":"
|
||||
eval HAVE_$1=$3
|
||||
}
|
||||
|
||||
add_command_line_string()
|
||||
{
|
||||
COMMAND_LINE_OPTS_STRINGS="$COMMAND_LINE_OPTS_STRINGS:\"$1\" \"$2\" \"$3\":"
|
||||
eval $1=$3
|
||||
}
|
||||
|
||||
## lvl. 43 regex dragon awaits thee.
|
||||
print_help()
|
||||
{
|
||||
echo "===================="
|
||||
echo " Quickbuild script"
|
||||
echo "===================="
|
||||
echo "Package: $PACKAGE_NAME"
|
||||
echo "Version: $PACKAGE_VERSION"
|
||||
echo ""
|
||||
echo "General environment variables:"
|
||||
echo "CC: C compiler"
|
||||
echo "CFLAGS: C compiler flags"
|
||||
echo "CXX: C++ compiler"
|
||||
echo "CXXFLAGS: C++ compiler flags"
|
||||
echo "LDFLAGS: Linker flags"
|
||||
echo ""
|
||||
echo "General options:"
|
||||
echo "--prefix=\$path: Install path prefix"
|
||||
echo "--help: Show this help"
|
||||
echo ""
|
||||
echo "Custom options:"
|
||||
{ cat << EOF
|
||||
====================
|
||||
Quickbuild script
|
||||
====================
|
||||
Package: $PACKAGE_NAME
|
||||
Version: $PACKAGE_VERSION
|
||||
|
||||
tmpopts="$COMMAND_LINE_OPTS_ENABLE"
|
||||
while [ ! -z "$tmpopts" ]
|
||||
do
|
||||
subopts="`echo $tmpopts | sed 's|^:"\([^"]*\)"."\([^"]*\)"."\([^"]*\)":.*$|"\1":"\2":"\3"|'`"
|
||||
tmpopts="`echo $tmpopts | sed 's|^\W*$||'`"
|
||||
tmpopts="`echo $tmpopts | sed 's|^:"[^"]*"."[^"]*"."[^"]*":||'`"
|
||||
print_sub_opt "$subopts"
|
||||
done
|
||||
General environment variables:
|
||||
CC: C compiler
|
||||
CFLAGS: C compiler flags
|
||||
CXX: C++ compiler
|
||||
CXXFLAGS: C++ compiler flags
|
||||
LDFLAGS: Linker flags
|
||||
|
||||
echo ""
|
||||
General options:
|
||||
--prefix=\$path: Install path prefix
|
||||
--help: Show this help
|
||||
|
||||
tmpopts="$COMMAND_LINE_OPTS_STRINGS"
|
||||
while [ ! -z "$tmpopts" ]
|
||||
do
|
||||
subopts="`echo $tmpopts | sed 's|^:"\([^"]*\)"."\([^"]*\)"."\([^"]*\)":.*$|"\1":"\2":"\3"|'`"
|
||||
tmpopts="`echo $tmpopts | sed 's|^\W*$||'`"
|
||||
tmpopts="`echo $tmpopts | sed 's|^:"[^"]*"."[^"]*"."[^"]*":||'`"
|
||||
print_sub_str_opt "$subopts"
|
||||
done
|
||||
Custom options:
|
||||
EOF
|
||||
while IFS='=#' read VAR VAL COMMENT; do
|
||||
VAR=$(echo "${VAR##HAVE_}" | tr '[A-Z]' '[a-z]')
|
||||
case "$VAL" in
|
||||
'yes'*) echo "--disable-$VAR: $COMMENT";;
|
||||
'no'*) echo "--enable-$VAR: $COMMENT";;
|
||||
'auto'*) echo "--enable-$VAR: $COMMENT"; echo "--disable-$VAR";;
|
||||
*) echo "--with-$VAR: $COMMENT";;
|
||||
esac
|
||||
done < 'qb/config.params.sh'
|
||||
}
|
||||
|
||||
print_sub_opt()
|
||||
opt_exists() # $opt is returned if exists in OPTS
|
||||
{
|
||||
arg1="`echo $1 | sed 's|^"\([^"]*\)":"\([^"]*\)":"\([^"]*\)"$|\1|'`"
|
||||
arg2="`echo $1 | sed 's|^"\([^"]*\)":"\([^"]*\)":"\([^"]*\)"$|\2|'`"
|
||||
arg3="`echo $1 | sed 's|^"\([^"]*\)":"\([^"]*\)":"\([^"]*\)"$|\3|'`"
|
||||
|
||||
lowertext="`echo $arg1 | tr '[A-Z]' '[a-z]'`"
|
||||
|
||||
if [ "$arg3" = "auto" ]; then
|
||||
echo "--enable-$lowertext: $arg2"
|
||||
echo "--disable-$lowertext"
|
||||
elif [ "$arg3" = "yes" ]; then
|
||||
echo "--disable-$lowertext: $arg2"
|
||||
elif [ "$arg3" = "no" ]; then
|
||||
echo "--enable-$lowertext: $arg2"
|
||||
fi
|
||||
opt=$(echo "$1" | tr '[a-z]' '[A-Z]')
|
||||
for OPT in $OPTS; do [ "$opt" = "$OPT" ] && return; done
|
||||
print_help; exit 1
|
||||
}
|
||||
|
||||
print_sub_str_opt()
|
||||
parse_input() # Parse stuff :V
|
||||
{
|
||||
arg1="`echo $1 | sed 's|^"\([^"]*\)":"\([^"]*\)":"\([^"]*\)"$|\1|'`"
|
||||
arg2="`echo $1 | sed 's|^"\([^"]*\)":"\([^"]*\)":"\([^"]*\)"$|\2|'`"
|
||||
arg3="`echo $1 | sed 's|^"\([^"]*\)":"\([^"]*\)":"\([^"]*\)"$|\3|'`"
|
||||
#OPTS contains all available options in config.params.sh
|
||||
while IFS='=' read VAR dummy; do OPTS="$OPTS ${VAR##HAVE_}"; done < 'qb/config.params.sh'
|
||||
|
||||
while [ "$1" ]; do
|
||||
case "$1" in
|
||||
--prefix=*) PREFIX=${1##--prefix=};;
|
||||
|
||||
lowertext="`echo $arg1 | tr '[A-Z]' '[a-z]'`"
|
||||
--enable-*)
|
||||
opt_exists "${1##--enable-}" "$OPTS"
|
||||
eval "HAVE_$opt=yes"
|
||||
;;
|
||||
|
||||
echo "--with-$lowertext: $arg2"
|
||||
--disable-*)
|
||||
opt_exists "${1##--disable-}" "$OPTS"
|
||||
eval "HAVE_$opt=no"
|
||||
;;
|
||||
|
||||
--with-*)
|
||||
arg=${1##--with-}
|
||||
val=${arg##*=}
|
||||
opt_exists "${arg%%=*}" "$OPTS"
|
||||
eval "$opt=$val"
|
||||
;;
|
||||
|
||||
-h|--help) print_help; exit 0;;
|
||||
|
||||
*) print_help; exit 1;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
}
|
||||
|
||||
parse_input()
|
||||
{
|
||||
### Parse stuff :V
|
||||
|
||||
while [ ! -z "$1" ]
|
||||
do
|
||||
|
||||
case "$1" in
|
||||
|
||||
--prefix=*)
|
||||
prefix="`echo $1 | sed -e 's|^--prefix=||' -e 's|^\(.*\)/$|\1|'`"
|
||||
|
||||
if [ "$prefix" != "$1" ]; then
|
||||
PREFIX="$prefix"
|
||||
fi
|
||||
;;
|
||||
|
||||
--enable-*)
|
||||
tmp="$1"
|
||||
enable="${tmp#--enable-}"
|
||||
if [ -z "`echo $COMMAND_LINE_OPTS_ENABLE | grep -i -- $enable`" ]; then
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
eval HAVE_`echo $enable | tr '[a-z]' '[A-Z]'`=yes
|
||||
;;
|
||||
|
||||
--disable-*)
|
||||
tmp="$1"
|
||||
disable="${tmp#--disable-}"
|
||||
if [ -z "`echo $COMMAND_LINE_OPTS_ENABLE | grep -i -- $disable`" ]; then
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
eval HAVE_`echo $disable | tr '[a-z]' '[A-Z]'`=no
|
||||
;;
|
||||
|
||||
--with-*)
|
||||
tmp="$1"
|
||||
arg="${tmp#--with-*=}"
|
||||
tmp="${tmp#--with-}"
|
||||
with="${tmp%%=*}"
|
||||
if [ -z "`echo $COMMAND_LINE_OPTS_STRINGS | grep -i -- $with`" ]; then
|
||||
print_help
|
||||
exit 1
|
||||
fi
|
||||
eval "`echo $with | tr '[a-z]' '[A-Z]'`=\"$arg\""
|
||||
;;
|
||||
|
||||
|
||||
-h|--help)
|
||||
print_help
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
print_help
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
shift
|
||||
|
||||
done
|
||||
}
|
||||
. qb/config.params.sh
|
||||
|
||||
parse_input "$@"
|
||||
|
||||
|
||||
|
|
38
retroarch.c
38
retroarch.c
|
@ -543,6 +543,10 @@ static void print_help(void)
|
|||
puts("\t\tHowever, the client will not be able to play. Multiple clients can connect to the host.");
|
||||
puts("\t--nick: Picks a nickname for use with netplay. Not mandatory.");
|
||||
#endif
|
||||
#ifdef HAVE_NETWORK_CMD
|
||||
puts("\t--command: Sends a command over UDP to an already running RetroArch process.");
|
||||
puts("\t\tAvailable commands are listed if command is invalid.");
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_FFMPEG
|
||||
puts("\t-r/--record: Path to record video file.\n\t\tUsing .mkv extension is recommended.");
|
||||
|
@ -699,6 +703,9 @@ static void parse_input(int argc, char *argv[])
|
|||
{ "port", 1, &val, 'p' },
|
||||
{ "spectate", 0, &val, 'S' },
|
||||
{ "nick", 1, &val, 'N' },
|
||||
#endif
|
||||
#ifdef HAVE_NETWORK_CMD
|
||||
{ "command", 1, &val, 'c' },
|
||||
#endif
|
||||
{ "ups", 1, NULL, 'U' },
|
||||
{ "bps", 1, &val, 'B' },
|
||||
|
@ -896,8 +903,6 @@ static void parse_input(int argc, char *argv[])
|
|||
|
||||
case 'F':
|
||||
g_extern.netplay_sync_frames = strtol(optarg, NULL, 0);
|
||||
if (g_extern.netplay_sync_frames > 16)
|
||||
g_extern.netplay_sync_frames = 16;
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
@ -933,6 +938,15 @@ static void parse_input(int argc, char *argv[])
|
|||
break;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_NETWORK_CMD
|
||||
case 'c':
|
||||
if (network_cmd_send(optarg))
|
||||
exit(0);
|
||||
else
|
||||
rarch_fail(1, "network_cmd_send()");
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 'B':
|
||||
strlcpy(g_extern.bps_name, optarg, sizeof(g_extern.bps_name));
|
||||
g_extern.bps_pref = true;
|
||||
|
@ -1624,14 +1638,28 @@ static void load_auto_state(void)
|
|||
if (path_file_exists(savestate_name_auto))
|
||||
{
|
||||
RARCH_LOG("Found auto savestate in: %s\n", savestate_name_auto);
|
||||
load_state(savestate_name_auto);
|
||||
bool ret = load_state(savestate_name_auto);
|
||||
|
||||
char msg[PATH_MAX];
|
||||
snprintf(msg, sizeof(msg), "Auto-loaded savestate from: \"%s\"", savestate_name_auto);
|
||||
snprintf(msg, sizeof(msg), "Auto-loading savestate from \"%s\" %s.", savestate_name_auto, ret ? "succeeded" : "failed");
|
||||
msg_queue_push(g_extern.msg_queue, msg, 1, 180);
|
||||
RARCH_LOG("%s\n", msg);
|
||||
}
|
||||
}
|
||||
|
||||
static void save_auto_state(void)
|
||||
{
|
||||
if (!g_settings.savestate_auto_save)
|
||||
return;
|
||||
|
||||
char savestate_name_auto[PATH_MAX];
|
||||
fill_pathname_noext(savestate_name_auto, g_extern.savestate_name,
|
||||
".auto", sizeof(savestate_name_auto));
|
||||
|
||||
bool ret = save_state(savestate_name_auto);
|
||||
RARCH_LOG("Auto save state to \"%s\" %s.\n", savestate_name_auto, ret ? "succeeded" : "failed");
|
||||
}
|
||||
|
||||
void rarch_load_state(void)
|
||||
{
|
||||
char load_path[PATH_MAX];
|
||||
|
@ -2548,6 +2576,8 @@ void rarch_main_deinit(void)
|
|||
deinit_movie();
|
||||
#endif
|
||||
|
||||
save_auto_state();
|
||||
|
||||
pretro_unload_game();
|
||||
pretro_deinit();
|
||||
uninit_drivers();
|
||||
|
|
|
@ -8,6 +8,11 @@
|
|||
# This will be overridden by explicit command line options.
|
||||
# savestate_directory =
|
||||
|
||||
# Automatically saves a savestate at the end of RetroArch's lifetime.
|
||||
# The path is $SRAM_PATH.auto.
|
||||
# RetroArch will automatically load any savestate with this path on startup.
|
||||
# savestate_auto_save = false
|
||||
|
||||
# Load libretro from a dynamic location for dynamically built RetroArch.
|
||||
# This option is mandatory.
|
||||
# libretro_path = "/path/to/libretro.so"
|
||||
|
|
|
@ -193,6 +193,7 @@ void config_set_defaults(void)
|
|||
|
||||
g_settings.block_sram_overwrite = block_sram_overwrite;
|
||||
g_settings.savestate_auto_index = savestate_auto_index;
|
||||
g_settings.savestate_auto_save = savestate_auto_save;
|
||||
g_settings.network_cmd_enable = network_cmd_enable;
|
||||
g_settings.network_cmd_port = network_cmd_port;
|
||||
|
||||
|
@ -462,6 +463,7 @@ bool config_load_file(const char *path)
|
|||
|
||||
CONFIG_GET_BOOL(block_sram_overwrite, "block_sram_overwrite");
|
||||
CONFIG_GET_BOOL(savestate_auto_index, "savestate_auto_index");
|
||||
CONFIG_GET_BOOL(savestate_auto_save, "savestate_auto_save");
|
||||
|
||||
CONFIG_GET_BOOL(network_cmd_enable, "network_cmd_enable");
|
||||
CONFIG_GET_INT(network_cmd_port, "network_cmd_port");
|
||||
|
|
|
@ -71,6 +71,10 @@ static struct bind binds[] = {
|
|||
BIND("Y button (left)", y)
|
||||
BIND("L button (left shoulder)", l)
|
||||
BIND("R button (right shoulder)", r)
|
||||
BIND("L2 button (left shoulder #2)", l2)
|
||||
BIND("R2 button (right shoulder #2)", r2)
|
||||
BIND("L3 button (left analog button)", l3)
|
||||
BIND("R3 button (right analog button)", r3)
|
||||
BIND("Start button", start)
|
||||
BIND("Select button", select)
|
||||
BIND("Left D-pad", left)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<app version="1">
|
||||
<name>RetroArch Wii</name>
|
||||
<coder>Themaister, Squarepusher2</coder>
|
||||
<version>0.9.6-rc1</version>
|
||||
<version>0.9.6</version>
|
||||
<release_date>2012</release_date>
|
||||
<short_description>Multi-system emulator</short_description>
|
||||
<long_description>A port of RetroArch to the Wii.</long_description>
|
||||
|
|
Loading…
Reference in New Issue