PSP text hooker in the works for VNR

Great news yet again my comrades! VNR now supports PSP games run on PPSSPP! This is amazing! Jichi is amazing~!

So I made a test drive on it and got Gekkan Ryouran Romance running as well as Diabolik Lovers but let me get this clear, it’s still in ALPHA stage which means this is not yet stable, the module sometimes crashes and there is work to be done. Currently I’m submitting bugs and suggestions for mostly Otome game psp engines.

The love club
Gekkan Ryouran Romance: test hook

Brocolli games certainly won’t work as of now but Otomate and CriEngine games do. The text hook engine isn’t stable and there is not yet an ISO detection implemented so I recommend not messing up with anything for now. You need to be have a good background with how text hooking works if you want to use this early stage module as well as knowledge on how regex if you’re gonna remove garbage in the dialogues.

Diabolik Lovers
Diabolik Lovers : text hooking test

I’m just here to tell you gals that this is really exciting~ If you want to thank Jiichi for his amazing program, why not drop a message at his website to cheer him on? [ VNR forum ]
If you want to know engines supported here’s the link to the wiki.

Tutorial | Notes | Otome Game compatibility

And in case you missed out on Jiichi’s notes about it:

7/13/2014:
Currently, translating PPSSPP games is not as convenient as PC games.
There are several limitations comparing to hooking to Windows games, as follows:

- Game settings cannot be saved based on per-game fashion.
For instance, you cannot have per-game Text Settings, Voice Settings, subtitles, dictionary terms, etc.
As a result, every time you switch the PSP ISO, you might have to re-adjust EVERYTHING.
I am going to change the VNR to be able to identify game by the PSP ISO in the future.

- The game engines will only work AFTER you have launched the ISO and entered the game!
If you directly launch PPSSPP in VNR, IT WON'T WORK.

- You MUST NOT close/change the current PSP ISO BEFORE closing VNR.
Otherwise, the behavior is undefined that either VNR or PPSSPP might crash.

- A large amount of PSP games will also need game-specific engines, such as 5pb games, Final Fantasy, etc.
But currently, only Alchemist games are supported.
It might take me at least half a year to add as many PSP game engines as the PC game engines.

Before that, I also plan to add a Memory Reader as an alternative of current ITH
and VNR's embed translation engine (vnragent.dll) for extracting text directly from memory.
It seems that most PSP games do have a stable address where the texts could be read.
Before I have time to add an engine for you, you can easily tell VNR the memory address of
the game texts you found using Cheat Engine or Ollydbg.
The memory address can also be saved online and shared among users.
I feel this approach might be even more stable for extracting texts from PPSSPP comparing
to using ITH, which might crash if the JIT-compiled code region is trashed.

I am going to put more information later here:
http://sakuradite.com/wiki/en/VNR/PSP
7/12/2014
* Add hooks to HLE functions in PPSSPP.
However, most games (such as Alchemist's games) still need game-specific engines.
If you have PPSSPP installed, you could give it a try.
If you don't, please hold a while until more game engines are added for popular makers.

The current hooked HLE functions are from PPSSPP 0.9.8 as follows.
UTF-8 functions are excluded as they are not supported by current ITH (need to modify vnrcli.dll).
If you have other requests, feel free to let me know!
Core/HLE/sceCcc.cpp
int sceCccStrlenSJIS(u32 strAddr)
int sceCccStrlenUTF16(u32 strAddr)
int sceCccSJIStoUTF8(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccSJIStoUTF16(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccUTF16toUTF8(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccUTF16toSJIS(u32 dstAddr, u32 dstSize, u32 srcAddr)
int sceCccStrlenSJIS(u32 strAddr)
Core/HLE/sceFont.cpp
int sceFontGetCharInfo(u32 fontHandle, u32 charCode, u32 charInfoPtr)
int sceFontGetShadowInfo(u32 fontHandle, u32 charCode, u32 charInfoPtr)
int sceFontGetCharImageRect(u32 fontHandle, u32 charCode, u32 charRectPtr)
int sceFontGetShadowImageRect(u32 fontHandle, u32 charCode, u32 charRectPtr)
int sceFontGetCharGlyphImage(u32 fontHandle, u32 charCode, u32 glyphImagePtr)
int sceFontGetCharGlyphImage_Clip(u32 fontHandle, u32 charCode, u32 glyphImagePtr, int clipXPos, int clipYPos, int clipWidth, int clipHeight)
int sceFontGetShadowGlyphImage(u32 fontHandle, u32 charCode, u32 glyphImagePtr)
int sceFontGetShadowGlyphImage_Clip(u32 fontHandle, u32 charCode, u32 glyphImagePtr, int clipXPos, int clipYPos, int clipWidth, int clipHeight)
Core/HLE/sceKernelInterrupt.cpp
u32 sysclib_strlen(u32 src)
u32 sysclib_strcat(u32 dst, u32 src)

14 thoughts on “PSP text hooker in the works for VNR

    1. Hahaha, well someone also proposed this system a couple of years ago but most talented devs just reply that they won’t work on something so tedious and time consuming. Then Jiichi game along and changed the VN scene with his awesome VNR. :)
      I’m really thankful he puts his time and effort into this and for free too.

      Like

      1. Yeah! BTW is it possible to disable the machine translations once I put my own translations in? I’m fairly new to VNR so I’m not completely familiar with the interface orz

        Like

      2. Yes you can disable them in Options.
        Just untick “Machine translation” in the Options sidebar.
        Also, it is not recommended to submit translations for PSP as of now. It’s still very alpha :)
        This is just a demonstration that hooking is quite possible :)

        Like

      3. Yeah I’m just asking about it in general XD BTW are you going to post this news in fuwanovel? Then I’d link your thread in the one I started along with some happy squeals XD

        Like

      4. Hahaha, as of now my internet is so slow. I can’t even access tumblr except via Tumblr Share in WordPress. feel free to post there first, I really don’t mind :))
        I’ll drop a reply on your thread if my bandwidth resets..haha :D

        Like

      5. Just managed make it work with HnKnA twin world…so happy! <3333 Is there any way to see the mecab kanji explanations like on translation aggragator, though? I downloaded the mecab dictionary but am confused what to do with it. As of now I'm shamelessly running both VNR and translation aggragator together to look up kanjis.

        Like

      6. Thanks! I tested a couple more quinrose games and they all worked, but the text hooking doesn’t work anymore if I keep testing different games, even in the text settings only one blank thread keeps showing. I guess this is part of the problem Jiichi was talking about…Restarting the PC gets rid of the problem, though. Basically I should stick to one game at a time XD

        Like

  1. Im really sorry, I dont mean to bother anyone with stupid questions but I’m really new to playing VN and all I have wanted to do for a few years now is play Heart no Kuni no Alice and now the new version is out so I downloaded it’s iso file and now I have it on PPSSPP emulator but I have no idea how to translate it. I’ve downloaded ATLAS and ITH and AGTH and God knows what else and I’ve looked up every tutorial under the sun but nothing is working and VNR isn’t working either it just has a load of gibberish. I know it’s my fault and not any of the programmes, so since you seem very knowledgeable on the subject would you be able to possibily give me any advice?
    Once again, sorry, I’m a complete novice but I’ve been trying to figure this out for a few days now and I’m not getting nowhere.
    >_<

    Like

Leave a comment :) This will make me happy~