eglaysher / rlvm

RealLive clone for Linux and OSX
http://rlvm.net
GNU General Public License v3.0
152 stars 26 forks source link

Weird "#A00" in GraphicsTextObjects #44

Closed eglaysher closed 10 years ago

eglaysher commented 11 years ago

In Little Busters, there periodically are "#A00" (note: fullwidth characters?) in the text passed to objOfText() commands. This wasn't documented in the rldev docs. Figure out what it is.

eglaysher commented 10 years ago

Here are two concrete examples:

"理樹は『#A00佐々美のオーデコロン』を使った!"

and

"鈴は『#A04カップゼリー』を食べた!"

eglaysher commented 10 years ago

I ran an experiment. Using the Reallive.exe that comes with CLANNAD_FV:

recFill(0, 128, 128, 128)
intA[0] = 50

objOfText(0, '理樹は『#A00佐々美のオデコロン』を使った!"')
objMove(0, 10, 10)
objShow(0, 1)

objOfText(1, "鈴は『#A04カップゼリ』を食べた!")
objMove(1, 10, 40)
objShow(1, 1)

pause()

Whatever those #A markers are, they are replaced with a space. I wanted to try this on a copy of Little Busters, but don't have a working rldev there.

eglaysher commented 10 years ago

Richard 23 is illuminating, as always:

Anyhow #Ann is the notation used to refer to an icon that is inserted into the text stream. I seem to recall that there is also #Bnn which I don't think is used in Little Busters. These icons appear in the mini battle games to represent whatever semi-random weapon a combatant ends up with.

The icons are located in one or more g00 files in the game's g00 directory, with the files specified (globally) in the gameexe.ini file. Reallive expects the two byte latin characters so you can't get away with using ascii and expect it to work.

Ah yes, GAMEEXE.INI:

#E_MOJI.000="bt_acc_icon001"
#E_MOJI.001="ii_emoji"
#E_MOJI_MSGBK_MOD=0
eglaysher commented 10 years ago

And it's a bit weirder than this. So the internal g00 pattno does correspond to the number. The letter, as you mentioned, seems to do something else. Using the CLANNAD_FV RealLive.exe, for which I do have a working rldev installation, I basically did:

objOfText(0, '理樹は『#A00佐々美のオデコロン』を使った!"')
objOfText(1, '理樹は『#B00佐々美のオデコロン』を使った!"')
objOfText(2, '理樹は『#C00佐々美のオデコロン』を使った!"')

and

#E_MOJI.001="bt_acc_icon001"
#E_MOJI_MSGBK_MOD=0

and got:

image

It looks like B turns it into a pure black and white image. C isn't anything.

The above works if the number in the gameexe #E_MOJI.00X is changed. X can be any number between 0 and 7 and it will still work! So I guess the algorithm is go through the E_MOJI keys and find the first valid one. Then use that in the #A icon substitution.