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.43k stars 2.19k forks source link

Support for inserting multiple data in a row with the PSP On Screen Keyboard #15357

Open ghost opened 2 years ago

ghost commented 2 years ago

Game or games this happens in

UCUS-98601 - Twisted Metal Head-On and maybe other games

What area of the game / PPSSPP

The issue could affect other homebrew/games but i only know it so far from the infrastructure mode of Twisted Metal Head On When you log in into infrastructure mode on the game (on JPCSP for example) it asks you to insert multiple data in a row but it didn't work well before the following change on JPCSP: https://github.com/jpcsp/jpcsp/commit/d1dff2b66a444888051f50f3c2630ea50d330e51 Previously, only the insertion of the username was possible and not the password.

What should happen

The game should lets you enter all data required before passing on.

Logs

No response

Platform

Linux / BSD

Mobile phone model or graphics card

AMD Radeon 530

PPSSPP version affected

v1.12.3-733-gc9dee44cf

Last working version

No response

Graphics backend (3D API)

Vulkan

Checklist

unknownbrackets commented 2 years ago

Is there a way to reproduce this in a demo or single player at all?

-[Unknown]

unknownbrackets commented 2 years ago

Alternatively if you could use the artifacts here: https://github.com/unknownbrackets/ppsspp/actions/runs/1716841960

Or the matching code here: https://github.com/unknownbrackets/ppsspp/tree/test/log-osk

To log the OSK parameters the game is using, that would be helpful.

-[Unknown]

ghost commented 2 years ago

I will need @ANR2ME to update his infrastructure build with that change though as I don't know any single player game or homebrew currently that does it. Can't you use the jpcsp fix here as a reference tho? https://github.com/jpcsp/jpcsp/commit/d1dff2b66a444888051f50f3c2630ea50d330e51

unknownbrackets commented 2 years ago

Some may be surprised, but it turns out PPSSPP is not a JPCSP emulator. What I want is to run some code on my PSP that prompts this, so I want to know what parameters it's using so I can test the range of inputs, etc., and then create a pspautotest if possible. I've shown gid15 bugs in JPCSP before, based on creating pspautotests.

Just guessing what maybe happens only gets you so far with compatibility.

-[Unknown]

ghost commented 2 years ago

Here are the logs @unknownbrackets :

27:40:186 user_main    W[SCEUTIL]: Dialog\PSPOskDialog.cpp:309 sceUtilityOskInitStart: unsupported field count 2
27:40:186 user_main    I[SCEUTIL]: Dialog\PSPOskDialog.cpp:332 OSK params: sz=64, fields=2, state=0, unk=00000000
27:40:186 user_main    I[SCEUTIL]: Dialog\PSPOskDialog.cpp:333 OSK fields: unk00=00000004, unk04=00000000, lang=0, unk_12=00000000
27:40:186 user_main    I[SCEUTIL]: Dialog\PSPOskDialog.cpp:334 OSK fields: type=3, lines=1, unk_24=00000001, outlen=16/0
27:40:202 user_main    I[SCEUTIL]: HLE\sceUtility.cpp:608 00000000=sceUtilityOskInitStart(09e64fac)
27:40:220 user_main    D[SCEUTIL]: HLE\sceUtility.cpp:637 1=sceUtilityOskGetStatus()
27:40:486 ScePafJob    D[SCEUTIL]: HLE\sceUtility.cpp:394 0=__UtilityInitDialog(3)
27:40:486 user_main    D[SCEUTIL]: HLE\sceUtility.cpp:637 2=sceUtilityOskGetStatus()
27:40:498 user_main    D[SCEUTIL]: HLE\sceUtility.cpp:625 00000000=sceUtilityOskUpdate(2)
ghost commented 2 years ago

Trying to see what happens on the latest build I could try and got this:

01:11:949 user_main    W[SCEUTIL]: Dialog/PSPOskDialog.cpp:326 sceUtilityOskInitStart: unsupported field count 2
01:11:949 user_main    I[SCEUTIL]: HLE/sceUtility.cpp:610 00000000=sceUtilityOskInitStart(09e64fac)
01:11:982 user_main    D[SCEUTIL]: HLE/sceUtility.cpp:639 1=sceUtilityOskGetStatus()
01:12:249 ScePafJob    D[SCEUTIL]: HLE/sceUtility.cpp:396 0=__UtilityInitDialog(3)
01:12:249 user_main    D[SCEUTIL]: HLE/sceUtility.cpp:639 2=sceUtilityOskGetStatus()
01:12:249 user_main    D[SCEUTIL]: HLE/sceUtility.cpp:627 00000000=sceUtilityOskUpdate(2)
anr2me commented 2 years ago

I don't think anyone is working on it yet, so it's still the same, minus the OSK logging which is not included on master branch i think

ghost commented 2 years ago

I don't think anyone is working on it yet, so it's still the same, minus the OSK logging which is not included on master branch i think

I noticed some OSK related commits recently so I thought something got changed. Also your previous build did have the OSK logging commits but I guess you removed them later on