Commit Graph

49 Commits

Author SHA1 Message Date
Jonas Kulla 5c3c73ee94 README: Remove erroneous line about cmake 2014-09-15 09:42:09 +02:00
Jonas Kulla 757a1d5e39 Load fluidsynth entrypoints dynamically (and make them optional)
This removes the static dependency on fluidsynth being present
at buildtime (even headers aren't needed anymore).

Even though midi is a default format for the RPG XP/VX series,
it has fallen more and more out of use, with VX Ace completely
abandoning it from the RTP and making ogg vorbis the de facto
standard. Midi support is kept for legacy reasons, but isn't
encouraged. On top of all this, fluidsynth together with glib
is a heavy dependency that often times won't even be used.
Making it optional at build time is an attempt to unify and
keep build config fragmentation low.

In RGSS3, fluidsynth / midi is not initialized at all by
default, but rather on demand when either a midi track is
played back or Audio.setup_midi is called.
2014-09-09 00:08:32 +02:00
Jonas Kulla 55f1542c76 Merge separate RGSS version build configs into one
Setup active RGSS version at runtime. Desired version can be
specified via config, or as default, auto detected from the game
files. This removes the need to build specifically for each
version, which should help packaging a lot.

This also greatly reduces the danger of introducing code that
wouldn't compile on all RGSS version paths (as certain code paths
were completely ifdef'd out).

This can be optimized more, eg. not compiling shaders that aren't
needed in the active version.
2014-08-28 23:22:05 +02:00
Jonas Kulla 10bfcb57b7 Config: Convert game title to valid UTF-8 (if it isn't already)
Removes the need to manually convert the Game.ini to UTF-8 every
time with eg. Japanese games. Also, setting the window title on
OSX with invalid UTF-8 crashes.

This functionality and the dependency on libiconv and libguess
are optional and can be enabled with `CONFIG+=INI_ENCODING`.
If turned off and invalid UTF-8 is encountered, the game title
is treated as being empty (ie. the folder name is used instead).
2014-08-20 23:32:18 +02:00
Jonas Kulla b0eeb6d1bd README: Add some info on experimental RGSS2/RGSS3 support 2014-08-17 04:07:23 +02:00
Jonas Kulla 59aed37d3e MidiSource: Improve pitch shifting accuracy
Also drop note events whose keys are shifted out of range
instead of clamping them.
2014-08-02 16:15:11 +02:00
Jonas Kulla dc43af3b6a README: Document command line option usage 2014-08-02 10:30:52 +02:00
Jonas Kulla 3bcf995832 Add option to turn off switching into executable dir on startup 2014-08-02 09:30:17 +02:00
Jonas Kulla 751fdc599e Audio: Add MIDI format playback support
This adds a new dependency with libfuildsynth. MIDI support
is built by default, but can be disabled if not desired.

All RTP songs should work well, but there are known problems
with other files (see README). Also, the pitch shift implementation
is somewhat poor and doesn't match RMXP (at least subjectively).

A soundfont is not included and must be provided by
the user themself.
2014-08-02 06:42:55 +02:00
Jonas Kulla 492be508da gl-fun.h: Allow to alternatively be compiled with GLES2 headers
Requires your typical "GLES2/{gl2,gl2ext,gl2platform}.h bundle.
Define "GLES2_HEADER" to use.
2014-07-21 01:49:06 +00:00
Jonas Kulla 6f17b6ff46 Hookup mkxp to run under a OpenGL ES 2.0 context 2014-07-19 14:26:42 +00:00
Jonas Kulla 902a5e8c76 README: Clarify SDL_sound version 2014-06-21 17:01:05 +02:00
Jonas Kulla 6c481e5eb8 Eliminate GLEW dependency
GL entrypoint resolution is now done manually. This has a couple
immediate benefits, such as not having to retrieve hundreds of
functions pointers that we'll never use. It's also nice to have
an exact overview of all the entrypoints used by mkxp.

This change allows mkxp to run fine with core contexts, not sure
how relevant that is going to be in the future.

What's noteworthy is that  _all_ entrypoints, even the ones core
in 1.1 and guaranteed to be in every libGL, are resolved
dynamically.
This has the added benefit of not having to link directly against
libGL anymore, which also cleans up the output of `ldd` quite
a bit (SDL2 loads most system deps dynamically at runtime).

GL headers are still required at build time.
2014-06-13 18:46:45 +02:00
Jonas Kulla 7b1f599dd6 mkxp.pro: Add 'BOOST_LIB_SUFFIX'
Boost being boost.
2014-05-30 23:13:58 +02:00
Jonas Kulla 53718d0428 README: Mention cmake and fix some wording 2014-01-25 09:30:05 +01:00
Jonas Kulla 9b92a7bc14 Documentation: Move mkxp.conf description into sample conf 2014-01-15 03:20:05 +01:00
Jonas Kulla 7a1dd2588d Bring sample conf up to date with boost changes 2014-01-01 07:14:40 +01:00
Jonas Kulla ce7bf97dd4 FileSystem: Make path caching optional via config
Because Windows has case insensitive paths, this should
be turned on (which it is by default) for maximum
compatibility. Can be turned off as an optimization
(this will speed up startup a little depending on the
number of game assets).
2014-01-01 07:13:35 +01:00
Jonas Kulla 5b736bcfd6 mkxp.pro: Shorten keyword lenght to choose binding
'BINDING=BINDING_MRI' => 'BINDING=MRI'

Also error out if multiple bindings are chosen.
2013-12-29 18:01:57 +01:00
Jonas Kulla 2adf8ab265 Transition from QtCore to stdc++ / STL / boost
This looks like a pretty major change, but in reality,
80% of it is just renames of types and corresponding
methods.

The config parsing code has been completely replaced
with a boost::program_options based version. This
means that the config file format slightly changed
(checkout the updated README).

I still expect there to be bugs / unforseen events.
Those should be fixed in follow up commits.

Also, finally reverted back to using pkg-config to
locate and link libruby. Yay for less hacks!
2013-12-29 13:59:26 +01:00
Jonas Kulla 0ea242755e README: Audio pitch is implemented 2013-12-21 23:02:42 +01:00
Jonas Kulla 2538ae4224 README: Typo 2013-12-21 23:01:31 +01:00
Jonas Kulla 8702afedfc README: Mention SDL_sound patches 2013-12-21 21:25:31 +01:00
Jonas Kulla 19bb6c924e Gaphics: Make frame skip a config option
When using something like Valgrind that will run
mkxp 20 times slower than normal, frame skip will
make the redraw loop completely grind to a halt.
Set 'frameSkip' to false in the config to
avert this.
2013-12-21 21:18:20 +01:00
Jonas Kulla e26d0366f1 Revert "Audio: Make cheap OpenAL pitch shifting a config option"
Making this an option makes no sense. It ought to
be the default behavior, as RMXP pitch shifts PCM
based audio files the exact same way.

This reverts commit ac35d4214e.
2013-12-04 13:39:39 +01:00
Jonas Kulla ac35d4214e Audio: Make cheap OpenAL pitch shifting a config option 2013-12-01 09:36:15 +01:00
Jonas Kulla 47d96bd21e README: Reflect recent audio changes 2013-11-30 16:35:37 +01:00
Jonas Kulla 210dcbbc3d mkxp is licensed under GPLv2 OR LATER 2013-11-23 12:43:32 +01:00
Jonas Kulla 6a6865cc48 Readme: Fix typo 2013-11-01 08:32:59 +01:00
Jonas Kulla 10b3e04dee Add config entry "allowSymlinks" 2013-10-20 22:38:46 +02:00
Jonas Kulla e14f3ef9db Readme: mention ruby patches 2013-10-19 19:59:18 +02:00
Jonas Kulla f5a178b9bb Add config option "fixedFramerate" 2013-10-17 02:18:16 +02:00
Jonas Kulla 0f4a9930de README: fix more inconsistencies 2013-10-12 15:59:52 +02:00
Jonas Kulla 95daa78ef7 Clarify points in readme 2013-10-11 22:28:54 +02:00
Jonas Kulla 8b53681e11 Turn on 'fixedAspectRatio' by default
This is more consistent with RMXP's behavior.
2013-10-09 14:17:21 +02:00
Jonas Kulla 4b28314433 Update config table and default values 2013-10-09 14:11:59 +02:00
Jonas Kulla 6a4fd804a7 Clarify point about latest library version 2013-10-09 04:16:00 +02:00
Jonas Kulla 082a9ae483 Fix style and add link to mattn's repo 2013-10-01 12:24:35 +02:00
Jonas Kulla a1c2a73006 Warn about mruby-onig-regexp 2013-10-01 12:21:30 +02:00
Jonas Kulla 080f9333a9 Clarify a couple README points 2013-09-27 19:44:16 +02:00
Jonas Kulla 32361e513a Track 'tainted' area of Bitmaps to optimize blit operations
The 'tainted' area of a Bitmap describes what parts are no
longer in a 'cleared' state. When we blit to a fully cleared
are of a Bitmap at full opacity, we can completely disregard
the existing pixels in the operation, meaning we can skip any
blending calculations and just blit / upload straight to the
texture. This greatly speeds up text message rendering.

In the process, pixman has become a new dependency for mkxp,
but the results of this optimization are well worth it!
2013-09-25 13:49:24 +02:00
Jonas Kulla fe557bca1d Implement "show_cursor" attribute in Graphics module
If false (the default), the system cursor is hidden
inside the game window.
2013-09-24 22:56:25 +02:00
Jonas Kulla 7f604e25ad Lower minimum OpenGL requirement 2013-09-23 10:42:23 +02:00
Jonas Kulla ef2ed2fb32 Fix wording 2013-09-06 15:29:00 +02:00
Jonas Kulla e8a9873125 Document nonstandard RGSS extensions 2013-09-04 18:43:40 +02:00
Jonas Kulla 774c9b7c8a Update config
Add a missing dependency and properly explain all values
in the config file
2013-09-03 19:24:41 +02:00
Jonas Kulla 7ba26ad796 Add license notice 2013-09-01 18:26:19 +02:00
Jonas Kulla 32fe03c731 Fix README wording 2013-09-01 16:43:26 +02:00
Jonas Kulla ff25887f41 Initial commit 2013-09-01 16:27:21 +02:00