hrydgard / ppsspp

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.
https://www.ppsspp.org
Other
11.18k stars 2.17k forks source link

Bullet Butlers ULJM05941 crash in-game #8850

Closed sum2012 closed 8 years ago

sum2012 commented 8 years ago

ppsspp forum link: http://forums.ppsspp.org/showthread.php?tid=5637&pid=118323

Fast test last good: v1.0.1-394-g6deb4d3 first bad: v1.0.1-421-ga1f5c53

v1.0.1-394-g6deb4d3 good log: https://drive.google.com/file/d/0B3OaSdeV0L8kR25SR1dINnBsMTQ/view?usp=sharing v1.0.1-421-ga1f5c53 bad log: https://drive.google.com/file/d/0B3OaSdeV0L8kZUp0c1lxaEF2MWM/view?usp=sharing v1.2.2-759-ge0845b8 bad log: https://drive.google.com/file/d/0B3OaSdeV0L8kQUJQUUJrZ0ZtaGc/view?usp=sharing

edit:change: https://github.com/hrydgard/ppsspp/compare/v1.0.1-394-g6deb4d3...v1.0.1-421-ga1f5c53

Bullet Butlers - JP 1.05

sum2012 commented 8 years ago

@unknownbrackets v1.2.2-761-gc6d4966 crash truce 1

PPSSPPDebug64.exe!TextureCacheCommon::LoadClut(unsigned int clutAddr=167771136, unsigned int loadBytes=1024) Line 368   C++
PPSSPPDebug64.exe!GPU_GLES::Execute_LoadClut(unsigned int op=3288334368, unsigned int diff=0) Line 1270 C++
PPSSPPDebug64.exe!GPU_GLES::FastRunLoop(DisplayList & list={...}) Line 870  C++
PPSSPPDebug64.exe!GPUCommon::InterpretList(DisplayList & list={...}) Line 546   C++
PPSSPPDebug64.exe!GPUCommon::ProcessDLQueueInternal() Line 717  C++
PPSSPPDebug64.exe!GPUCommon::ProcessEvent(GPUEvent ev={...}) Line 674   C++
PPSSPPDebug64.exe!GPU_GLES::ProcessEvent(GPUEvent ev={...}) Line 919    C++
PPSSPPDebug64.exe!ThreadEventQueue<GPUInterface,GPUEvent,enum GPUEventType,0,8,7>::ProcessEventIfApplicable(GPUEvent & ev={...}, unsigned __int64 & globalticks=0) Line 193 C++
PPSSPPDebug64.exe!ThreadEventQueue<GPUInterface,GPUEvent,enum GPUEventType,0,8,7>::RunEventsUntil(unsigned __int64 globalticks=0) Line 94   C++
PPSSPPDebug64.exe!ThreadEventQueue<GPUInterface,GPUEvent,enum GPUEventType,0,8,7>::ScheduleEvent(GPUEvent ev={...}) Line 50 C++
PPSSPPDebug64.exe!GPUCommon::ProcessDLQueue() Line 697  C++
PPSSPPDebug64.exe!GPUCommon::UpdateStall(int listid=60, unsigned int newstall=1217586380) Line 371  C++
PPSSPPDebug64.exe!sceGeListUpdateStallAddr(unsigned int displayListID=889192508, unsigned int stallAddress=1217586380) Line 401 C++
PPSSPPDebug64.exe!WrapI_UU<&sceGeListUpdateStallAddr>() Line 195    C++
PPSSPPDebug64.exe!CallSyscallWithoutFlags(const HLEFunction * info=0x0000000142167040) Line 477 C++
[External Code] 
hrydgard commented 8 years ago

Looks like numBlocks is too big, and it's loading too much CLUT data? Hm, or not... never mind

clutaddr is 9FFFC00 which is 0x400 = 1024 bytes below the top .. should be just enough data.

What ever it is, this has got to be where it started: https://github.com/hrydgard/ppsspp/commit/1b0a9a48ae733a0016b6cc14afe777f02e414a56

@unknownbrackets any ideas?

unknownbrackets commented 8 years ago

Hmm. Looking carefully at that loop, I must've forgotten somewhere to make it load at 16 bytes? Anyway, that probably fixes it.

Can tell since source and clutAddr would normally have the last 3 hex digits synchronized, but it's already gotten to 000 half way through the loop.

-[Unknown]

hrydgard commented 8 years ago

Ah yeah, indeed. I thought the math seemed off...

sum2012 commented 8 years ago

Yes,fixed. Closing