Git Product home page Git Product logo

rlvm's Introduction

rlvm: A RealLive interpreter for Linux and OSX.

INTRODUCTION

rlvm is a Free Software reimplementation of the VisualArt's KK's RealLive interpreter. It is meant to provide Linux and Apple users with a compatible, portable interpreter to play VisualArts games, specifically those released under the Key label. It is licensed to you under version 3 or later of the GNU General Public License as published by the Free Software Foundation.

rlvm is meant to be a compatibility utility; it is not an excuse for copyright infringement. Please do not acquire games from BitTorrent / Share / {insert name of popular P2P app in your locale}.

Special thanks to Jagarl for the first work on reverse engineering the RealLive interpreter and for Free software licensed source code for decoding their file formats, to Richard 23 for figuring out features added to RealLive for Little Busters, to \{jyuichi} for help with Kud Wafter, and to Haeleth for creating rldev, along with answering all my dumb questions about the internal workings of the RealLive system.

STATUS

rlvm currently plays the following games to their completion:

Japanese Edition Games Status English Fan Patch Status
Kanon Standard Edition OK NDT's patch
Air Standard Edition OK (None)
CLANNAD OK (Not supported)
CLANNAD (Full Voice) OK Licensed
Planetarian CD OK Licensed
Tomoyo After OK (None)
Little Busters OK (Untested)
Kud Wafter OK (None)
US Edition Games Status
Planetarian Works; buy here

For more details, please read STATUS.TXT.

rlvm is now at the point where enough commands are implemented that other games may work. The above is only a list of what I've tested first hand or what I've been told.

rlvm has an implementation of rlBabel; English patches compiled with Haeleth's rlBabel should line break correctly. I've successfully tested it with the Kanon patch from NDT.

rlvm supports KOE, NWK and OVK archives for voices, along with ogg vorbis voice patches which follow the convention /z.ogg.

Fullscreen can be entered by pressing Alt+{F,Enter} on Linux and Command+{F,Enter} on Mac.

Please report bugs on the GitHub bug tracker.

USING RLVM

By default, rlvm is a GUI program. Start it by double clicking on the icon [OSX] or selecting it from your Applications menu [Linux]. You will then want to select the folder that contains the SEEN.TXT of the game you want to play.

If you are using Ubuntu or OSX, rlvm makes an effort to find a system Japanese Gothic font. If rlvm is complaining that it can't find a font, it will also look for the file "msgothic.ttc" in either the game directory nor your home directory. If you are using Linux, you can manually specify a font with the --font option.

On Linux, you can also manually start rlvm from the command line, optionally passing in the directory containing the SEEN.TXT file:

$ rlvm [/path/to/GameDirectory/]

The rlvm binary should be self contained and movable anywhere, though the build system does not have an install target.

If you don't have the file "msgothic.ttc" in either the game directory nor your home directory, please specify a Japanese font on the command line with --font.

COMPILING RLVM

You will need the following libraries/utilities:

  • The scons build system (Note: the scons in MacPorts has been reported to not work)
  • boost 1.40 or higher
  • SDL 1.2 (and optionally, SDL_image, and SDL_mixer, though there are copies included in the source distribution if you don't already have them installed.)
  • freetype
  • GNU gettext

COMPILING UNDER LINUX

Make sure that freetype-config and sdl-config are in your $PATH. The current SConscripts are fairly naive and may need editing to point to the correct location of some header files. Future versions will have the build system refined. You should be able to type:

$ scons --release

in the root and have a complete build. The unit tests will automatically be built and can be run by typing:

$ ./build/rlvm_unittests

They should all pass.

There is no convenient install feature (I am not sure how to do that in scons). rlvm will work (without icons or localization) in place. If you wish to use rlvm in place, the binary is in:

$ ./build/rlvm

For packagers, the debian/install file contains a mapping of where files should be copied to. I agree that there should be a better long term solution, though it currently escapes me.

COMPILING UNDER OSX

In addition to freetype-config and sdl-config needing to be in your $PATH, (like when compiling under Linux), the Sconscripts assume you use fink to manage your unix programs and that fink is installed at /sw/, though they also try to check for Darwin Ports. You may need to edit the SConscript files if using something else.

To build an OSX application, type:

$ scons --release --fullstatic

which will build rlvm.app in the build directory. The resulting OSX application will ask you for the location of the game with a native dialog.

To build a dmg file for distribution, type:

$ scons --release --fullstatic --dmgname="rlvm <version>"

KNOWN ISSUES

Little Busters' baseball doesn't work because it is implemented as a Windows DLL instead. For the same reason, the dungeon crawling minigame in Tomoyo After does not work.

GETTING INVOLVED

Little Buster's baseball minigame appears to be implemented by a DLL, not RealLive bytecode. Figuring out what its doing is the first step to getting it working.

DONATE

Have you found rlvm useful? I accept donations in bitcoin at the following address: 3Ee9s6BzmSZQK2yf4DU3p8vk1ttrsnFoQ2

rlvm's People

Contributors

amreo avatar cxong avatar eglaysher avatar grandpaul avatar jbeich avatar kroki avatar lurkmoar avatar marex avatar morlok8k avatar tuongnm avatar xtsm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rlvm's Issues

Support MPEG movies

RealLive has a set of commands that play MPEG movies. These should be supported somehow.

Previous attempts at using SMPEG to play the movies failed, since, IIRC, OpenGL support was broken. (The included glmovie didn't work, and I found some discussion online about how it didn't work for other people.) May be possible now that SDL2 is released, but that means I need to port rlvm to SDL2 as a prerequisite.

Scrollback gets confused when there's a gloss

  1. Lines of text that had a gloss in them that weren't clicked on are ignored and aren't placed in the scrollback record. (At least in Clannad FV)

  2. Scrollback gets messed up when the gloss is taken. (Or maybe just when gloss overfills the gloss window once?)

Tomoyo After - English patch v1.1 - Dungeons & Takafumis broken

Game: Tomoyo After - English patch v1.1 [Doki]
The Dungeons & Takafumis minigame is very broken.

  1. its really slow.
  2. no sprites show up on the checkerboard play area.
  3. values like exp are always shown as 0 or 999, etc.
  4. after starting a battle, i immediately get the cleared screen, and move to the next floor, without earning any exp or seeing any battle.

and other issues too...

Little Busters, skips over "character choice" dialogs

I'm playing Little Busters with the English patch. When I come to a dialog where I can choose one of the characters I've met (as in, "Who should I consider for this mission?"), the choices briefly appear then immediately disappear without letting me click on one.

I'm not sure if I've got a bad version of the English patch, or if RLVM isn't handling the options properly.

Blackness at the end of Mai's path in Kanon.

There's a sequence in SEEN8511 where rlvm just displays black during the end of Mai's sequence.

Things that are probably true, based on some preliminary logging:

  • This isn't a recent regression; went back to late 2012 and still happened.
  • The alpha is being set correctly. (Logging GraphicsObject::setAlpha() seems to be setting the correct value.)
  • The alpha is being used correctly. (Less sure, but at least the value is making it to Texture::renderToScreenAsObject() correctly.)
  • The object is being placed correctly. (By the logging triggered by F12).

Build fails with Boost 1.46

rlvm fails to build with Boost 1.46. Here's the full build output: https://gist.github.com/861490

Also fails when Boost is built with multithreaded libraries only (no -mt suffix on the libs), which is currently the case for the boost-libs package in Arch Linux.

Weird "#A00" in GraphicsTextObjects

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.

Auto Mode Sliders have no numbers

The time adjustment sliders for Auto Mode do not display the wait time in seconds, or the total wait time for 10 letters, as they would in the Windows version for Clannad FV.

Segfault on exit

For Clannad FV and Kanon, if the main game is entered (either via "New Game" or "Load"), quitting (either via the title menu or the in-game menu) leads to a segfault.

Segfault does not occur if you poke around the config and name change menus only.

Haven't tested galleries and jukeboxes yet (I still need to imported my old saved data)

Little Busters! EX Status

This is more of a status update on how Little Busters! EX runs.
Overall it runs well but there are a couple bugs I have noticed.
Skips selection dialogues. More accurately, it immediately selects a choice.
Some mini-games will not run. The scene where Rin is thrown, the power gauges are stuck at max, scene precedes as normal after mouse click with dialogue following the full power branch.
Mouse click can skip multiple texts. Using enter to proceed fixes the problem.

Named character lines skipped due to corrupted save data

This usually manifests silently in game, though an exception is printed on the console.

This is usually caused by a shiftjis string being interpreted as UTF8. These shiftjis strings either come from an original Gameexe.ini that wasn't replaced when an English patch was installed OR they come from the user running an unpatched Japanese version and then the patched English version (the Japanese strings are then written to global memory which persists).

Checking for this isn't trivial; because of how Haeleth wrote rlBabel, we'll need to scan all of the headers of the individual seens for an rlbabel header. If we find one, we can attempt interpreting each #NAME variable as a UTF-8 string, and if it fails, we know we're in the error condition.

If the user didn't install the patch correctly and there isn't global memory, we can direct the user to install the patch's Gameexe.ini.

If the user ran the unpatched Japanese version and then the English version on top of it, we'll have to prompt the user to either [Exit] or [Delete all save data] because we can't trust any of it.

Can I use it for my own galgame?

Hello
My friends and I are interesting in such games and we'd like to make one(with no reources from key). Can we use rlvm as our engine? Could there be any manual or hint for that?
Thank you.

GTK font hack for rlvm 12

Do a manual path hack like we do for OSX and manually make the rlvm debian package depend on a Japanese font.

Multiple issues with glosses

This happened in rlvm 0.09 (installed from the x86 Ubuntu package) while running an English version of Clannad FV. I reached the first hypertext gloss in the game ('kotatsu') and clicked on it, leading to the following:

  1. The textbox that appeared at the top of the screen was only tall enough for ~3.5 lines of text but rlvm tried to display 4 lines, so the text "spilled" across the bottom border.

  2. At that point, I couldn't advance the text anymore. The gloss text was too long to fit in the box so rlvm split it up, and the triangular "waiting for click" cursor was animating properly in the gloss textbox. However, my clicks were ignored.

I scrolled back a few lines in an attempt to get the text moving again. As I clicked through the previous dialogue, I noticed that:

  1. When I caught up to the 'kotatsu' line again, the beginning of the sentence was painted yellow (the correct colour for previous text), the hypertext 'kotatsu' was highlighted purple (the correct colour for highlights), but the words after 'kotatsu' were painted white (the colour for "current" text). [Reallive.exe gets around this by NOT highlighting hypertext in previous text.]

I then tried to continue by saving and loading.

  1. Unfortunately, the game remembered that the gloss textbox was open during my save. Upon loading, it displayed Tomoya's line in the GLOSS textbox. The main textbox didn't appear. The main text was short enough to fit in the gloss textbox, and the triangle was animating. However, clicking on 'kotatsu' didn't bring up the gloss text, and clicking everywhere else still didn't advance the text.

Finally, I started the game from the beginning and refused to click on the 'kotatsu'. That allowed me to proceed.

I made some screenshots, but didn't realize that github doesn't support attachments!

Voice clips are cut off in Auto Mode (Clannad FV)

When Auto Mode is running in rlvm, it advances messages based on a strict timer. This causes any voice clips which are longer than the wait time to be cut off. This differs from how Clannad's FV RealLive.exe works, which ALWAYS finishes playing the voice clips before advancing to the next message, regardless of wait time setting.

Main text window sometimes not cleared after gloss is clicked on

At Clannad FV's 1st gloss ('kotatsu'), clicking on the gloss will cause the next line to be appended to the old text, without clearing the main text box first. The indentation level is also set at the end of the old text.

This doesn't occur at Nagisa's first 'Anpan', or in Kanon's prologue.

Some possible causes:
i) The gloss window was overfilled
ii) The name window was called immediately after the gloss
iii) The player's first-name variable was called immediately after the gloss

Font metrics sometimes broken in Text rendering

renderGlyphOnto().x will sometimes return a different value than charWidth(). This means that the

Practical example: the charWidth (using TTF_GlyphMetrics()) for 't' is 6 pixels, while the character width rendered through renderGlyphOnto() (using TTF_RenderUTF8_Blended()) returns 7 pixels in the font TakaoPGothic.ttf, which is the default Japanese font on my Ubuntu install.

Auto Mode does not stop for Mouse movement (Clannad FV)

In Windows, Clannad FV's RealLive.exe allows temporary interruption of Auto Mode by moving the mouse, then resumes Auto Mode a short time after the mouse stops moving. rlvm does not do this, which makes interrupting Auto Mode much harder (you have to rapidly click on the Right Mouse Button to interrupt it with a menu, and that only works during the pause time at the end of a message.)

Implement ReturnPrevSelect

We currently don't make a temporary save at each decision point which is what we'd do if we wanted to implement ReturnPrevSelect.

Gettextize rlvm

Will require odd hacks for strings normally provided through the Gameexe.ini.

if (locale_is_japanese_)
UseGameexeString();
else
gettext(blah);

Natsuyume Nagisa Demo doesn't work

As reported by "ayumu":

Using the 0.12 release on Linux Mint, Natsuyume Nagisa is unplayable due to something funky with the opening butterfly animation - nothing happens and the logo just appears in its final position on a white screen. The buttons needed to start the game won't show up (they don't work even if you click or hover around where they should be). The following pops up on the console:

(SEEN1)(Line 24)[grpBuffer]: Invalid DC number in SDLGrpahicsSystem::allocate_dc
Doesn't deal with fade_in properly yet...

I tried the full version, but the demo version on the Saga Planets website uses the same animation if you're willing to download it and take a look at it.

support for Kanon (18+) variant missing/not working

Okay so now that I'm in Japan I thought I'd give rlvm a try and bought the first Key/VisualArts game in the local Sofmap shop that I could find. This happened to be Kanon in its 18+ version.

of course it didn't work straight ahead in rlvm, but as you noted you only tested/developed rlvm with the standard version, so this didn't suprise me.
What did suprise me was that the 18+ version seems vastly different from the "normal" version. First, the SEEN.TXT file is compressed and packed as PACL file instead of the "simple" archive format that libReallive::Archive::readToc() expects. After some fiddling around I managed to unpack the archive (using the visarc tool from xclannad) into separate seenXXX.txt files (3 digits). When I renamed them to the expected format (seenXXXX.txt, 4 digits) they were apparently read in successfully by rlvm. However, I still got an error about "unsupported compiler version 50", and after I patched out this check as well I got "invalid bytecode version 860049492". At that point I gave up.

Have you ever tried/checked the 18+ version of Kanon? Any idea of what needs to be implemented to make it work in rlvm?

For the record, here are the md5 sums of some files on the Kanon CD:
07dc0fede760d4ee1af12ac3d7c0627b /media/cdrom/avg3216m.exe
2b8c0cf0192582ac63ba866c3b2b9d30 /media/cdrom/gameexe.ini
8af94c8e382c2ea26ec85e1f9a9f2bc6 /media/cdrom/dat/allanm.anl
6166e09793f5c6a50cfe17a91661fb7d /media/cdrom/dat/seen.txt

and here's the start of the SEEN.TXT file as dumped by od(1):
000000 50 41 43 4c 00 00 00 00 00 00 00 00 00 00 00 00 >PACL............<
000010 52 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >R...............<
000020 53 45 45 4e 30 30 31 2e 54 58 54 00 00 00 00 00 >SEEN001.TXT.....<
000030 60 0a 00 00 e7 02 00 00 e8 03 00 00 01 00 00 00 >`...............<
000040 53 45 45 4e 30 30 32 2e 54 58 54 00 00 00 00 00 >SEEN002.TXT.....<
000050 47 0d 00 00 9d 02 00 00 b2 03 00 00 01 00 00 00 >G...............<
000060 53 45 45 4e 30 30 33 2e 54 58 54 00 00 00 00 00 >SEEN003.TXT.....<
000070 e4 0f 00 00 f7 01 00 00 e7 02 00 00 01 00 00 00 >................<
000080 53 45 45 4e 30 30 34 2e 54 58 54 00 00 00 00 00 >SEEN004.TXT.....<
000090 db 11 00 00 fc 01 00 00 f5 02 00 00 01 00 00 00 >................<
0000a0 53 45 45 4e 30 30 35 2e 54 58 54 00 00 00 00 00 >SEEN005.TXT.....<
0000b0 d7 13 00 00 b7 01 00 00 79 02 00 00 01 00 00 00 >........y.......<
0000c0 53 45 45 4e 30 30 36 2e 54 58 54 00 00 00 00 00 >SEEN006.TXT.....<
0000d0 8e 15 00 00 54 04 00 00 db 07 00 00 01 00 00 00 >....T...........<
0000e0 53 45 45 4e 30 30 37 2e 54 58 54 00 00 00 00 00 >SEEN007.TXT.....<
0000f0 e2 19 00 00 c2 13 00 00 a0 29 00 00 01 00 00 00 >.........)......<
000100 53 45 45 4e 30 35 30 2e 54 58 54 00 00 00 00 00 >SEEN050.TXT.....<
000110 a4 2d 00 00 62 07 00 00 ed 0b 00 00 01 00 00 00 >.-..b...........<
000120 53 45 45 4e 30 37 30 2e 54 58 54 00 00 00 00 00 >SEEN070.TXT.....<
000130 06 35 00 00 5b b0 00 00 d2 e6 01 00 01 00 00 00 >.5..[...........<

Graphics in the LB ending aren't read correctly

Some g00 Type 2 bitmaps have a weird structure where each of the regions in the file are as large as the main width/height and then write over the data from other regions. The majority of graphical glitches in the LB Refrain ending appear to be caused by this.

(Neither Haeleth's vaconv nor Jagarl's xclannad code load these g00 files correctly; if you use vaconv on these files, you'll find that they draw exactly like rlvm is drawing them.)

After looking at the xclannad source code, the only place I can think of there being additional information I'm not reading is 29 shorts which I'll print out in dumps of various files.

Little Busters' NYED_CT04_01 is representative of a lot of these files. It's a three region g00 file of Masato lying on top of the van, alternating the three regions to animate his clothes.

Width: 296, Height: 78
Region deal: 3
Region deal 2: 3
  Region: 0
    <<x1: 0, y1: 0, x2: 295, y2: 77, OriginX: 147, OriginY: 38 >>
    (1, 8, 8, 288, 64, 147, 38, 296, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  Region: 1
    <<x1: 0, y1: 0, x2: 295, y2: 77, OriginX: 147, OriginY: 38 >>
    (1, 0, 8, 296, 70, 147, 38, 296, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  Region: 2
    <<x1: 0, y1: 0, x2: 295, y2: 77, OriginX: 147, OriginY: 38 >>
    (1, 0, 8, 296, 70, 147, 38, 296, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

All three regions are equivalent and are the size of the canvas.

In contrast, let's look at CLANNAD_FV's MN_AT_SB03, which is a component of the preferences pane(?).

Width: 111, Height: 72
Region deal: 5
Region deal 2: 5
  Region: 0
    <<x1: 0, y1: 0, x2: 110, y2: 17, OriginX: 0, OriginY: 0 >>
    (1, 0, 0, 111, 18, 0, 0, 111, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  Region: 1
    <<x1: 0, y1: 18, x2: 110, y2: 35, OriginX: 0, OriginY: 0 >>
    (1, 0, 0, 111, 18, 0, 0, 111, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  Region: 2
    <<x1: 0, y1: 36, x2: 110, y2: 53, OriginX: 0, OriginY: 0 >>
    (1, 0, 0, 111, 18, 0, 0, 111, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  Region: 3
    <<x1: 0, y1: 54, x2: 110, y2: 71, OriginX: 0, OriginY: 0 >>
    (1, 0, 0, 111, 18, 0, 0, 111, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  Region: 4
    <<x1: 0, y1: 0, x2: 110, y2: 17, OriginX: 0, OriginY: 0 >>
    (1, 0, 0, 111, 18, 0, 0, 111, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

All the regions in the region table are different and fit within the canvas.

(SEEN414)(Line 0): Invalid UTF-8

In Clannad FV, with the English translation patch applied, whenever Tomoya speaks (actual speech, not his thoughts), it doesn't show up, and "(SEENxxx)(Line 0): Invalid UTF-8" is printed to the console. I've tried both 0.12, and building from git, and that hasn't changed anything. I'm running Arch Linux x64, and I've not had the chance to have anyone else on Linux test this out, so I'm not sure if I'm the only one with the issue.

Build Failed: Missing <sstream> in test/ScriptMachine/ScriptWorld.cpp

Hi,

When building rlvm I found that in test/ScriptMachine/ScriptWorld.cpp there's ostringstream but it doesn't #include which causes build fail.
Please consider including the patch as following.

Many Thanks,
Paul

Index: rlvm-0.10/test/ScriptMachine/ScriptWorld.cpp
===================================================================
--- rlvm-0.10.orig/test/ScriptMachine/ScriptWorld.cpp   2011-02-06 17:16:19.223986175 +0800
+++ rlvm-0.10/test/ScriptMachine/ScriptWorld.cpp        2011-02-06 17:16:41.807994774 +0800
@@ -29,6 +29,7 @@
 #include <iostream>
 #include <typeinfo>
 #include <string>
+#include <sstream>
 #include <boost/filesystem/operations.hpp>
 #include <boost/filesystem/path.hpp>

OpenGL Error: invalid operation when trying to load/save. rlvm 0.13(OSX)

After updating rlvm to v0.13 on OSX Mavericks (10.9), I can't load/save on any game I have (tried Tomoyo After, Little Busters and Little Busters EX). All this games have an english patch applied.

When I'm going to save or load a savedata, rlvm crashes, showing a dialog with title "Fatal local system error" that says "OpenGL Error: invalid operation".

rlvm 0.12 works fine, and the savedata doesn't seem corrupt. Anyway, I tried with a fresh install of Little Busters, and it still crashes.

Unfortunately, I can't test it on OSX Mountain Lion (10.8), so I can't tell if it's Mavericks related.

Log generated by OS X: http://pastebin.com/6jPdQqyf

Sorry about my english, I'm Spanish.

Rin throwing scene doesn't really work

As copied from #36:

Some mini-games will not run. The scene where Rin is thrown, the power gauges are stuck at max, scene precedes as normal after mouse click with dialogue following the full power branch.

I suspect that this is caused by opcode 1:4:810. I suspect that this is some sort of newer variant of opcode 1:4:800, index_series. Except that it appears to introduce an entirely new way of encoding its parameters.

(Add raw hex dump here.)

rlvm confused about sound Volumes

In almost all cases, I've hooked methods like SetKoeVolMod() and koeSetVolume() to the same underlying values. This is wrong!

XXXVolMod() is a knob the player can turn to adjust the volume of a class of channels against another. xxxSetVolume() is a programmatic control the game programmer can tweak for sounds to be loud relative to each other.

10% of runtime is spent in findFile on a normal rlvm run.

findFile is completely bogus. It is pathologically bad.

The outer loop in findFile iterates every listed directory with a #FOLDNAME. Multiply that by then testing every candidate file extension. And then performing a complex case sensitive matching algorithm on every candidate path. (boost::to_upper takes up 3% of runtime!)

So run an expensive algorithm over a naive search that looks at /.. This is a recipe for SLOW.

Action plan:

  1. Nobody should use or call ALL_FILETYPES. Ugh. Obvious bad idea in retrospect.
  2. If the script is looking for GAN files, perhaps we should only try to look in the GAN/ directory first.
  3. If still needed, we could probably do something about the correctPathCase(), which takes up the vast majority of time in findFile(), but only because findFile() keeps calling it over and over again.

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.