Giter Club home page Giter Club logo

hrydgard / ppsspp Goto Github PK

View Code? Open in Web Editor NEW
10.9K 514.0 2.1K 302.17 MB

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.

Home Page: https://www.ppsspp.org

License: Other

CMake 0.55% C++ 57.54% C 34.74% Objective-C 0.08% Objective-C++ 0.54% Shell 0.20% Makefile 0.23% Assembly 0.03% Java 0.53% Inno Setup 0.01% Python 0.08% Batchfile 0.04% DIGITAL Command Language 0.08% GLSL 0.18% Perl 0.01% Rust 0.06% Dockerfile 0.01% POV-Ray SDL 5.09%
ppsspp emulators psp

ppsspp's Issues

Compatibility Database

Instead of using the forums as listing compatibility for each game, I can create a small PHP-based application that tracks compatibility between PPSSPP svn commits.

Users would search for the game, create a new test, enter information (what version, platform, etc) and list what works / doesn't work.
As well as the option to include a screenshot.

This would be very similar in vein to WineHqs appdb http://appdb.winehq.org

I feel creating such a database will make it easier to keep track of test cases as well as regressions.

I will begin work on this and reply with a status update. If others feel this is a good idea, or have suggestions, please feel free to comment.

Build error on VS 2010 Express (and maybe others)

1>------ Build started: Project: PPSSPPWindows, Configuration: Release Win32 ------
2>------ Build started: Project: PPSSPPHeadless, Configuration: Release Win32 ------
1> Core.lib(SymbolMap.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
2> Creating library D:\PPSSPP\ppsspp\Windows\Release\PPSSPPHeadless.lib and object D:\PPSSPP\ppsspp\Windows\Release\PPSSPPHeadless.exp
1> Creating library ..\PPSSPPWindows.lib and object ..\PPSSPPWindows.exp
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPSaveDialog::Shutdown(void)" (?Shutdown@PSPSaveDialog@@UAEXXZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPSaveDialog::Update(void)" (?Update@PSPSaveDialog@@UAEXXZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPSaveDialog::Init(int)" (?Init@PSPSaveDialog@@UAEXH@Z)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual __thiscall PSPSaveDialog::~PSPSaveDialog(void)" (??1PSPSaveDialog@@UAE@XZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: __thiscall PSPSaveDialog::PSPSaveDialog(void)" (??0PSPSaveDialog@@QAE@XZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPPlaceholderDialog::Update(void)" (?Update@PSPPlaceholderDialog@@UAEXXZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPPlaceholderDialog::Init(void)" (?Init@PSPPlaceholderDialog@@UAEXXZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual __thiscall PSPPlaceholderDialog::~PSPPlaceholderDialog(void)" (??1PSPPlaceholderDialog@@UAE@XZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: __thiscall PSPPlaceholderDialog::PSPPlaceholderDialog(void)" (??0PSPPlaceholderDialog@@QAE@XZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl SavedataParam::Init(void)" (?Init@SavedataParam@@Saxxz)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPMsgDialog::Shutdown(void)" (?Shutdown@PSPMsgDialog@@UAEXXZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPMsgDialog::Update(void)" (?Update@PSPMsgDialog@@UAEXXZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPMsgDialog::Init(unsigned int)" (?Init@PSPMsgDialog@@uaexi@Z)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual __thiscall PSPMsgDialog::~PSPMsgDialog(void)" (??1PSPMsgDialog@@UAE@XZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: __thiscall PSPMsgDialog::PSPMsgDialog(void)" (??0PSPMsgDialog@@QAE@XZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: enum PSPDialog::DialogStatus __thiscall PSPDialog::GetStatus(void)" (?GetStatus@PSPDialog@@QAE?AW4DialogStatus@1@XZ)
2>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPDialog::Shutdown(void)" (?Shutdown@PSPDialog@@UAEXXZ)
2>D:\PPSSPP\ppsspp\Windows\Release\PPSSPPHeadless.exe : fatal error LNK1120: 17 unresolved externals
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPSaveDialog::Shutdown(void)" (?Shutdown@PSPSaveDialog@@UAEXXZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPSaveDialog::Update(void)" (?Update@PSPSaveDialog@@UAEXXZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPSaveDialog::Init(int)" (?Init@PSPSaveDialog@@UAEXH@Z)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual __thiscall PSPSaveDialog::~PSPSaveDialog(void)" (??1PSPSaveDialog@@UAE@XZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: __thiscall PSPSaveDialog::PSPSaveDialog(void)" (??0PSPSaveDialog@@QAE@XZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPPlaceholderDialog::Update(void)" (?Update@PSPPlaceholderDialog@@UAEXXZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPPlaceholderDialog::Init(void)" (?Init@PSPPlaceholderDialog@@UAEXXZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual __thiscall PSPPlaceholderDialog::~PSPPlaceholderDialog(void)" (??1PSPPlaceholderDialog@@UAE@XZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: __thiscall PSPPlaceholderDialog::PSPPlaceholderDialog(void)" (??0PSPPlaceholderDialog@@QAE@XZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: static void __cdecl SavedataParam::Init(void)" (?Init@SavedataParam@@Saxxz)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPMsgDialog::Shutdown(void)" (?Shutdown@PSPMsgDialog@@UAEXXZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPMsgDialog::Update(void)" (?Update@PSPMsgDialog@@UAEXXZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPMsgDialog::Init(unsigned int)" (?Init@PSPMsgDialog@@uaexi@Z)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual __thiscall PSPMsgDialog::~PSPMsgDialog(void)" (??1PSPMsgDialog@@UAE@XZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: __thiscall PSPMsgDialog::PSPMsgDialog(void)" (??0PSPMsgDialog@@QAE@XZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: enum PSPDialog::DialogStatus __thiscall PSPDialog::GetStatus(void)" (?GetStatus@PSPDialog@@QAE?AW4DialogStatus@1@XZ)
1>Core.lib(sceUtility.obj) : error LNK2001: unresolved external symbol "public: virtual void __thiscall PSPDialog::Shutdown(void)" (?Shutdown@PSPDialog@@UAEXXZ)
1>..\PPSSPPWindows.exe : fatal error LNK1120: 17 unresolved externals
========== Build: 0 succeeded, 2 failed, 6 up-to-date, 0 skipped ==========

ppsspp ARMJit

Downloaded and compiled ARMJit version today, compiling was successfull, but after installing the closes it self after opening.

I will check logs what could be went wrong.

device: Aurora 2

Save/Load is not implemented

Game save/load is handled by sceUtilitySaveLoadData on the PSP. These functions don't just handle the save/load UI but also ui-less saving and loading - the game gets to pass a buffer of data that gets filled or is written to the memory stick.

Saves are encrypted on the real PSP but we can save/load without encryption, unless we want compatibility with real saves eventually.

Android setting file and detect number of core

(I help my chinese freind to tell,hope not transate wrong)
1:Android version do not have setting file but PC version has the setting file.
2:Android version do not detect number of core.It only use one core.
Please help.Thanks

Sol Trigger graphics issues

Game : Last Ranker
CPU : Slightly faster interpreter

45:50:417 e:\download\ppsspp-umd-fixes\core\memmapfunctions.cpp:57 E[MM]: Unknown GetPointer 00000028 PC 089237e4 LR 089237e4
First-chance exception at 0x00fcd059 in PPSSPPDebug.exe: 0xC0000005: Access violation reading location 0x00000000.
Unhandled exception at 0x00fcd059 in PPSSPPDebug.exe: 0xC0000005: Access violation reading location 0x00000000.

breaks at VertexDecoder.cpp

    case GE_VTYPE_POS_FLOAT >> 7:
        {
            const float *fv = (const float*)(ptr + posoff);
            for (int j = 0; j < 3; j++)
                v[j] = fv[j];      **************breakpoint *******************
        }
        break;

SDL2 (OSX OpenGL issue)

SDL1.2 on OSX does not support creating OpenGL contexts higher than 2.1. We need more modern features so we'd really like to use SDL 2, which can do that.

Unfortunately SDL 2.0 has still not had a stable release so I don't know how to best handle the dependency.

Thread queue not "fair" and not rotated properly

From testing the PSP, I think it uses "fair" scheduling. That is, completely round-robin ignoring priority.

Here's what I've measured:

  • If I start a thread, it's executed immediately. This implies it is inserted into the next slot on the queue.
  • Order of thread creation does not matter.
  • 4 threads with a DelayThread will run about as often as each other, regardless of priority.
  • Priority can be between 8 and 119, inclusive (other values return errors.)
  • Adjusting the priority of a thread while it's running doesn't change how often it will run.
  • sceKernelRotateThreadReadyQueue() does some interesting/bizarre stuff.
  • I can't really tell if higher or lower is "better" as far as priority.

https://gist.github.com/4138761

Maybe my test is naive but I'm trying to count cycles, which should theoretically compare to some extent.

If you run it and compare, you'll see that sceKernelRotateThreadReadyQueue() (regardless of argument) basically causes threads with high priority values to almost never run. I'm not sure I understand what it's doing algorithmically. What's really interesting is this:

Rotate low spent: 0:2  1:4  2:1549  3:1560  
Rotate high spent: 0:1  1:4  2:1718  3:1725  

That is, if the argument is a high value, the lower valued threads actually run more. I assume this means that a low argument is doing a complete rotation and therefore wasting more time?

Anyway, I'm taking a stab at implementing this but idle threads are making it more annoying.

-[Unknown]

Linux compilation fails?

git clone https://github.com/hrydgard/ppsspp.git
cd ppsspp
git submodule init
git submodule native
cd SDL
./buildassets
./b.sh


In file included from /work/git/ppsspp/Common/CommonFuncs.h:40:0,
from /work/git/ppsspp/Common/Common.h:58,
from /work/git/ppsspp/Common/ConsoleListener.cpp:30:
/usr/lib/gcc/i486-linux-gnu/4.7/include/emmintrin.h:32:3: error: #error "SSE2 instruction set not enabled"
[ 31%] Built target image
In file included from /work/git/ppsspp/Common/Common.h:58:0,
from /work/git/ppsspp/Common/ColorUtil.cpp:18:
/work/git/ppsspp/Common/CommonFuncs.h:41:17: error: '__m128i' does not name a type


I'm using Debian GNU/Linux with GCC 4.7.1 and CMake 2.8.9.

log what is missing when running a game

hello,

is it possible to log in a file the errors the first time they happen when running a game?

error like : 35:40:686 HLE\HLE.cpp:198 E[HLE]: Unimplemented HLE function scePower_a85880d0

(when the appear in red in the log)

Version 0.4

ive compiled latest version from github, and figured out that now most of the games stopped working.

now i saw you released 0.4, but its still the same

f.e Final Fantasy Crisis Core, v 0.31 i saw intro and it was looping. v4 everything is black

No screen clear on Linux

I'm testing some of my personal homebrew on ppsspp.
First, and maybe only thing I notice on a basic game is that there is no screen clear...

Starting the game : http://image.noelshack.com/fichiers/2012/46/1353093175-capture-du-2012-11-16-20-08-22.png
After a while.. : http://image.noelshack.com/fichiers/2012/46/1353093175-capture-du-2012-11-16-20-08-09.png

This game uses my own graphics library : https://github.com/GeeckoDev/gLib2D/blob/master/glib2d.c#L292
I would like to fix this but I don't know where to start.

Linux 3.6.6 - Mesa 9.0 - Gnome 3.6.2

Cannot build on ArchLinux 64bit

Solution:

  • Directly #include <cstring> or #include <cstdio> into the offending files

or

  • Centralize the missing #includes into one file and include this file in the offending files

Error log:

$ ./b.sh 
-- Configuring done
-- Generating done
-- Build files have been written to: /media/data/Documents/Workplace/ppsspp/SDL/build
[  0%] [  0%] Building CXX object gfx/CMakeFiles/gfx.dir/texture_gen.cpp.o
Building CXX object base/CMakeFiles/base.dir/PCMain.cpp.o
Scanning dependencies of target core
/media/data/Documents/Workplace/ppsspp/native/gfx/texture_gen.cpp: In function ‘uint8_t* generateTexture(const char*, int&, int&, int&, bool&)’:
/media/data/Documents/Workplace/ppsspp/native/gfx/texture_gen.cpp:17:21: error: ‘strlen’ was not declared in this scope
/media/data/Documents/Workplace/ppsspp/native/gfx/texture_gen.cpp:22:41: error: ‘strcmp’ was not declared in this scope
make[2]: *** [gfx/CMakeFiles/gfx.dir/texture_gen.cpp.o] Error 1
make[1]: *** [gfx/CMakeFiles/gfx.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[  0%] [  1%] Building CXX object Core/CMakeFiles/core.dir/Debugger/Breakpoints.cpp.o
Building CXX object Core/CMakeFiles/core.dir/MIPS/MIPSDebugInterface.cpp.o
/media/data/Documents/Workplace/ppsspp/native/base/PCMain.cpp: In function ‘int main(int, char**)’:
/media/data/Documents/Workplace/ppsspp/native/base/PCMain.cpp:235:40: error: ‘getuid’ was not declared in this scope
make[2]: *** [base/CMakeFiles/base.dir/PCMain.cpp.o] Error 1
make[1]: *** [base/CMakeFiles/base.dir/all] Error 2
[  2%] Building CXX object Core/CMakeFiles/core.dir/MIPS/MIPSDisVFPU.cpp.o
/media/data/Documents/Workplace/ppsspp/Core/Debugger/Breakpoints.cpp: In member function ‘void MemCheck::Action(u32, u32, bool, int, u32)’:
/media/data/Documents/Workplace/ppsspp/Core/Debugger/Breakpoints.cpp:42:161: error: ‘printf’ was not declared in this scope
In file included from /media/data/Documents/Workplace/ppsspp/Core/Debugger/Breakpoints.cpp:21:0:
/media/data/Documents/Workplace/ppsspp/SDL/../Common/FixedSizeUnorderedSet.h: In instantiation of ‘bool FixedSizeUnorderedSet<T, maxCount>::insert(T) [with T = BreakPoint; long unsigned int maxCount = 16ul]’:
/media/data/Documents/Workplace/ppsspp/Core/Debugger/Breakpoints.cpp:124:27:   required from here
/media/data/Documents/Workplace/ppsspp/SDL/../Common/FixedSizeUnorderedSet.h:13:5: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
make[2]: *** [Core/CMakeFiles/core.dir/Debugger/Breakpoints.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /media/data/Documents/Workplace/ppsspp/Core/MIPS/MIPSDebugInterface.cpp:20:0:
/media/data/Documents/Workplace/ppsspp/Core/MIPS/../Debugger/DebugInterface.h: In member function ‘virtual void DebugInterface::DisAsm(u32, u32, int, char*)’:
/media/data/Documents/Workplace/ppsspp/Core/MIPS/../Debugger/DebugInterface.h:50:93: error: ‘sprintf’ was not declared in this scope
/media/data/Documents/Workplace/ppsspp/Core/MIPS/../Debugger/DebugInterface.h: In member function ‘virtual void DebugInterface::PrintRegValue(int, int, char*)’:
/media/data/Documents/Workplace/ppsspp/Core/MIPS/../Debugger/DebugInterface.h:58:42: error: ‘sprintf’ was not declared in this scope
make[2]: *** [Core/CMakeFiles/core.dir/MIPS/MIPSDebugInterface.cpp.o] Error 1
make[1]: *** [Core/CMakeFiles/core.dir/all] Error 2
make: *** [all] Error 2

Save State issues

EDIT: This is now an issue for reporting problems with save states. Below is the original text.

We should start thinking about how to implement save states. They are not only fun when playing games, but a tremendously useful debugging tool - for example, use the JIT to quickly get to a certain point, then save the state and start up the emulator again in debug mode to figure out what's going wrong.

I think a model similar to Dolphin, where each subsystem has a save/load function which are called by a central function would be best.

There can probably be no expectation of save states working across versions of PPSSPP (but crossing over between ports of the same version, such as PC and Android should be fine). So a simple version marker in the file (based on the git version tag or something like that) should be sufficient to prevent loading states from the wrong version.

Framebuffer needs better implementation

We should keep track of some mapping between frame buffer addresses and FBOs, and render and present the correct buffers. This will help games that run below 60hz and currently flicker.

Video playback implementation (Media Engine)

Many games use the "media engine" to play MPEG or PSMF video, nearly always consisting of H.264 video and ATRAC3plus audio.

We should be able to at least play back the H.264 video by integrating FFMPEG. The ATRAC audio is a real problem though because there's currently no open source codec.

I've started some work on implementing the basic functions in the branch mediaengine.

Unicode support for OpenGL GUI

The current text drawing system only supports 7bit ASCII, basically. Need to implement UTF-8 decoding in the font writer and add a lot more characters to the font. We might even need so many characters that we have to implement (or find) a proper dynamic font rendering system instead of the current texture atlas hack, and add libfreetype as a dependency (or, on Android, call up into Java for font rendering).

Duplicate sceAtracSetHalfwayBufferAndGetID

Spot a duplicate function in sceAtrac.cpp , the first one i think it is the correct one .

{0x0fae370e,0,"sceAtracSetHalfwayBufferAndGetID"},
{0x0eb8dc38,sceAtracSetHalfwayBufferAndGetID,"sceAtracSetHalfwayBufferAndGetID"},

Should we do a simple pull request for it ?

Crash with Unknown Get Pointer from memmapfunctions.cpp

Game : Sol Trigger
CPU : Slightly faster interpreter

51:21:029 e:\download\ppsspp-umd-fixes\core\memmapfunctions.cpp:57 E[MM]: Unknown GetPointer 00000498 PC 08979d28 LR 08979d28
First-chance exception at 0x00fccb31 in PPSSPPDebug.exe: 0xC0000005: Access violation reading location 0x00000000.
Unhandled exception at 0x00fccb31 in PPSSPPDebug.exe: 0xC0000005: Access violation reading location 0x00000000.

breaks at VertexDecoder.cpp

    case GE_VTYPE_TC_FLOAT:
        {
            const float *uvdata = (const float*)(ptr + tcoff);
            if (throughmode) {
                uv[0] = uvdata[0] / (float)(gstate_c.curTextureWidth);
                uv[1] = uvdata[1] / (float)(gstate_c.curTextureHeight);
            } else {
                uv[0] = uvdata[0];               ************* breakpoint ***************
                uv[1] = uvdata[1];
            }
        }
        break;
    }

Regression with recent changes in sceIo

The recent changes with sceIo breaks a lot of games for me (f.e. all Falcom games).

39:33:132 d:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 32 (00000020)
39:33:148 HLE\sceIo.cpp:864 E[HLE]: ERROR - sceIoPollAsync waiting for invalid id 32

If the problem is with the games then it's OK but if the problem is with the changes it should be fixed.

OSK ("On Screen Keyboard") implementation and character sets

Some games use the system On Screen Keyboard to let the player enter names, etc.

This is the sceUtilityOsk* functions. This can be implemented similarly to sceUtilityMsgDialog* , perhaps with system specific hacks so that on the PC one can enter text with the PC keyboard.

UPDATE: OSK has been implemented for a while. However, it doesn't support anything more than ASCII. While enough for most games, there are some where it matters.

Command-line support for Windows port

I would like to request a feature to support basic command-line support for the Windows port.

It could be used to integrate the emulator in any front-end, f.e. pspudb

For now only the basic functions are needed like:

--load, loads an ISO file without starting the emulator
--run, only valid when specified loading an ISO earlier and it just runs the game

So if I want to just open a ROM I do "PPSSPP --load some.iso" and if I want to run it too I do "PPSSPP --load some.iso --run"

A few (intro) games with decreased compatibility

Creature Defense (NPUH10034) - was showing more intros before (and hangs before menu), now only first intro
->d4932178260afef197f7813952dae82d0fb6ab22 - ok
->d06dfc36e072f1799f23fc04a55c3d816665a534 - ok
->e327eea732ea0a829deb55b15ab6567cc2bc252b - ok
->e1aa287ab7eb0306dc8afd731a7657e4570be3d1 - broken
->ef387dbd5194208c3b69d4ac41256c187a07d350 - broken

Logs:
e327eea
http://pastebin.com/4NQ09a7w

e1aa287
http://pastebin.com/8K090UqX

ef387db
http://pastebin.com/kBt04gXp


Patapon 2 (UCUS98732) - was showing two MemoryStick dialogs and one intro, now doesn't show anything
->d4932178260afef197f7813952dae82d0fb6ab22 - ok
->d06dfc36e072f1799f23fc04a55c3d816665a534 - broken
->ef387dbd5194208c3b69d4ac41256c187a07d350 - broken

Logs:
d493217
http://pastebin.com/mScAsx1y

d06dfc3
http://pastebin.com/XvQgHreZ

ef387db
http://pastebin.com/3GYpXCiV

Screen2x/3x/4x anisotropic filtering

I found when the renderwidth/Height not multipled to g_Config.iWindowZoom , 2x/3x/4x screen will be somehow filtered like applied anisotropic filtering , however , 3d polygon will be in very low resolution .

coreParameter.renderWidth = 480 * g_Config.iWindowZoom;
coreParameter.renderHeight = 272 * g_Config.iWindowZoom;

CreateFullPath use '/' in Windows build

The function CreateFullPath under Windows use DIR_SEP_CHR for split, but DIR_SEP_CHR is set to "/". So under windows where it's "", the function don't work and break the save which can't create the SAVE directory.

Don't know if simply changing DIR_SEP_CHR to "" for WIN32 build will break anything else.

.gz support

crystal defenders needs .gz support one day

XInputDevice.cpp undeclared identifier during Windows Build

Build failed using Microsoft Visual C++ Express 2010 due to undeclared identifier (XUSER_MAX_COUNT) found on Windows/XInputDevice.cpp:28 [https://github.com/hrydgard/ppsspp/blob/master/Windows/XinputDevice.cpp#L28]. No other similar identifiers found within the project.

Delayed threads wake late (`CoreTiming::ScheduleEvent()`)

So, after looking into this, I noticed this comment above ScheduleEvent():

// This must be run ONLY from within the cpu thread
// cyclesIntoFuture may be VERY inaccurate if called from anything else
// than Advance 

In fact, it is used outside Advance(), both for sceKernelDelayThread() and in mutexes/semaphores (my fault.)

Ultimately this means that anything scheduled for < 1.451ms (the frequency of the audio update) will run late even if the CPU is otherwise idle (e.g. even if all threads are delayed.) This is because the audio update is (when the first slice is calculated) the next event.

To match the hardware, one way would be to add this to the middle of CoreTiming::Idle():

    if (first && cyclesDown > 0)
    {
        int cyclesExecuted = slicelength - downcount;
        int cyclesNextEvent = (int) (first->time - globalTimer);

        if (cyclesNextEvent < cyclesExecuted + cyclesDown)
        {
            cyclesDown = cyclesNextEvent - cyclesExecuted;
            // Now, now... no time machines, please.
            if (cyclesDown < 0)
                cyclesDown = 0;
        }
    }

But I'm not sure if this wasn't done in Idle() for performance reasons. FWIW, the above makes the test at least match the hardware very well, at least while idle.

Edit: also, I'm not sure this affects any games. Things should still wake in the correct order and prior to vblank/audio/etc., and it's only detectable through sceRtc and *timeout params.

-[Unknown]

b.sh errors on Mac OS X

I'm running into errors when running b.sh, here is my build environment/error(s):

Mac OS X 10.8.2
Xcode 4.5.2 (4G2008a)
CMake 2.8.9_1 (as installed by MacPorts)

./b.sh
-- The C compiler identification is GNU 4.2.1
-- The CXX compiler identification is Clang 4.1.0
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Checking whether C compiler supports OSX deployment target flag
-- Checking whether C compiler supports OSX deployment target flag - yes
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Found PkgConfig: /opt/local/bin/pkg-config (found version "0.27.1")
-- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.5")
-- Found PNG: /opt/local/lib/libpng.dylib (found version "1.5.13")
-- checking for module 'sdl'
-- found sdl, version 1.2.15
-- Found OpenGL: /System/Library/Frameworks/OpenGL.framework
-- Found SDL: /Library/Frameworks/SDL.framework;-framework Cocoa
CMake Error at CMakeLists.txt:47 (add_subdirectory):
add_subdirectory given source "../native/base" which is not an existing
directory.

CMake Error at CMakeLists.txt:48 (add_subdirectory):
add_subdirectory given source "../native/gfx" which is not an existing
directory.

CMake Error at CMakeLists.txt:49 (add_subdirectory):
add_subdirectory given source "../native/profiler" which is not an existing
directory.

CMake Error at CMakeLists.txt:50 (add_subdirectory):
add_subdirectory given source "../native/gfx_es2" which is not an existing
directory.

CMake Error at CMakeLists.txt:51 (add_subdirectory):
add_subdirectory given source "../native/file" which is not an existing
directory.

CMake Error at CMakeLists.txt:52 (add_subdirectory):
add_subdirectory given source "../native/image" which is not an existing
directory.

CMake Error at CMakeLists.txt:53 (add_subdirectory):
add_subdirectory given source "../native/json" which is not an existing
directory.

CMake Error at CMakeLists.txt:54 (add_subdirectory):
add_subdirectory given source "../native/audio" which is not an existing
directory.

CMake Error at CMakeLists.txt:55 (add_subdirectory):
add_subdirectory given source "../native/math" which is not an existing
directory.

CMake Error at CMakeLists.txt:56 (add_subdirectory):
add_subdirectory given source "../native/net" which is not an existing
directory.

CMake Error at CMakeLists.txt:57 (add_subdirectory):
add_subdirectory given source "../native/ui" which is not an existing
directory.

CMake Error at CMakeLists.txt:58 (add_subdirectory):
add_subdirectory given source "../native/ext/libzip" which is not an
existing directory.

CMake Error at CMakeLists.txt:59 (add_subdirectory):
add_subdirectory given source "../native/ext/etcpack" which is not an
existing directory.

CMake Error at CMakeLists.txt:60 (add_subdirectory):
add_subdirectory given source "../native/ext/vjson" which is not an
existing directory.

CMake Error at CMakeLists.txt:61 (add_subdirectory):
add_subdirectory given source "../native/ext/stb_vorbis" which is not an
existing directory.

CMake Error at CMakeLists.txt:62 (add_subdirectory):
add_subdirectory given source "../native/ext/stb_image" which is not an
existing directory.

CMake Error at CMakeLists.txt:63 (add_subdirectory):
add_subdirectory given source "../native/ext/sha1" which is not an existing
directory.

Thanks!

compiling problems

Having problems while compiling with ant debug see log below

ant debug
Buildfile: D:\Cygwin\home\Aco\ppsspp\android\build.xml
Duplicated project name in import. Project PPSSPP defined first in D:\Cygwin\hom e\Aco\ppsspp\android\build.xml and again in D:\Cygwin\home\Aco\ppsspp\android\cu stom_rules.xml

-set-mode-check:

-set-debug-files:

-check-env:
[checkenv] Android SDK Tools Revision 20
[checkenv] Installed at D:\android-sdk

-setup:
[echo] Project Name: PPSSPP
[gettype] Project Type: Application
[echo] Switching between debug and non debug build: Deleting previous compi lation output...
[delete] Deleting directory D:\Cygwin\home\Aco\ppsspp\android\bin\classes

-set-debug-mode:

-debug-obfuscation-check:

-build-setup:
[echo] Resolving Build Target for PPSSPP...
[gettarget] Project Target: Android 2.3.3
[gettarget] API level: 10
[echo] ----------
[echo] Creating output directories if needed...
[mkdir] Created dir: D:\Cygwin\home\Aco\ppsspp\android\bin\classes
[echo] ----------
[echo] Resolving Dependencies for PPSSPP...
[dependency] Library dependencies:
[dependency]
[dependency] ------------------
[dependency] Ordered libraries:

BUILD FAILED
D:\android-sdk\tools\ant\build.xml:546: java.lang.NullPointerException
at com.android.sdklib.internal.project.ProjectProperties.parsePropertyFi le(ProjectProperties.java:444)
at com.android.sdklib.internal.project.ProjectProperties.load(ProjectPro perties.java:253)
at com.android.sdklib.internal.project.ProjectProperties.load(ProjectPro perties.java:239)
at com.android.ant.TaskHelper.getProperties(TaskHelper.java:135)
at com.android.ant.DependencyHelper$AdvancedLibraryProcessor.processLibr ary(DependencyHelper.java:67)
at com.android.ant.DependencyHelper.processLibraries(DependencyHelper.ja va:209)
at com.android.ant.GetLibraryPathTask.execute(GetLibraryPathTask.java:18 3)
at com.android.ant.GetLibraryPathTask.execute(GetLibraryPathTask.java:16 2)
at com.android.ant.ComputeDependencyTask.execute(ComputeDependencyTask.j ava:191)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav a:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExe cutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.Main.runBuild(Main.java:809)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 0 seconds

const int chanQueueMaxSizeFactor/MinSizeFactor

Tested the following two parameters in windows build and looks like Max=4/Min=2 looks better in terms of sound smoothness in windows platform .

-const int chanQueueMaxSizeFactor = 4;
-const int chanQueueMinSizeFactor = 2;

Should we make a pull request ?

io/directory tests

Could someone with a PSP please run the io/directory test on a real PSP and post or push the updated expected results? I can't tell if its failing because the file names are wrong in git or if the PSP makes all file names uppercase (which seems odd as a lot of games use different cases in the file loading routines)

Switch to GPLv2+

Switching from just GPLv2 to "GPL Version 2 or later" will allow Free Software projects under compatible licenses, such as GPLv3, to incorporate and build upon ppsspp code.

Regressions again with sceIo

Just detected this when testing. Has to be from a change made today.

21:39:116 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:116 HLE\sceIo.cpp:266 E[HLE]: sceIoRead ERROR: no file open
21:39:116 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:116 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:116 HLE\sceIo.cpp:791 E[HLE]: ERROR - sceIoPollAsync waiting for invalid id 308
21:39:116 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:116 HLE\sceIo.cpp:322 E[HLE]: sceIoLseek(308, 58320, 0) - ERROR: invalid file
21:39:116 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:116 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:116 HLE\sceIo.cpp:791 E[HLE]: ERROR - sceIoPollAsync waiting for invalid id 308
21:39:116 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:194 HLE\sceIo.cpp:266 E[HLE]: sceIoRead ERROR: no file open
21:39:194 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:194 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:210 HLE\sceIo.cpp:791 E[HLE]: ERROR - sceIoPollAsync waiting for invalid id 308
21:39:210 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:210 HLE\sceIo.cpp:322 E[HLE]: sceIoLseek(308, 58320, 0) - ERROR: invalid file
21:39:210 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:210 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)
21:39:210 HLE\sceIo.cpp:791 E[HLE]: ERROR - sceIoPollAsync waiting for invalid id 308
21:39:210 c:\ppsspp\ppsspp\core\hle\sceKernel.h:348 E[HLE]: Kernel: Bad object handle 308 (00000134)

ppsspp ui

please can you implement as much of the original psp ui as you can please

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.