Commit graph

73 commits

Author SHA1 Message Date
Mathew Velasquez
78c4c3b9bf Niko/Journal for windows 2016-11-03 18:37:14 -04:00
Mathew Velasquez
99c9a27f2a Wallpaper functionality restored for windows 2016-10-13 20:26:01 -04:00
Mathew Velasquez
0dc872bcea Journal screen stuff 2016-10-13 20:26:01 -04:00
Mathew Velasquez
302ec6dd02 I stopped making commits for a good while. Here's the latest junk. 2016-09-19 13:54:38 -04:00
Mathew Velasquez
79fc639b83 Build portability fixes and name input issue fix 2016-03-07 17:14:48 -05:00
Mathew Velasquez
1fd808d0af Gutted more unused features 2016-02-29 15:40:10 -05:00
Mathew Velasquez
a4de9d9f10 integrated steamshim 2016-02-29 01:22:55 -05:00
Mathew Velasquez
882856c8d8 Fixed windows debug build 2016-02-26 18:13:32 -05:00
Mathew Velasquez
4be6c0d592 Gutted midi system 2016-02-26 17:03:01 -05:00
Mathew Velasquez
91862d8bce Cleaned up project file for cross compile 2016-02-25 01:10:52 -05:00
Mathew Velasquez
4d18909386 Fixed build on Windows 2016-02-17 19:01:58 -05:00
Mathew Velasquez
21fcc9e19c Basic Steamworks API support 2016-02-17 17:16:22 -05:00
Mathew Velasquez
ba0203169e Added obscured/scratched window puzzle 2016-02-17 17:14:16 -05:00
Mathew Velasquez
97368dd79c Added paths for OpenAL on unix 2016-01-05 14:50:18 -05:00
Mathew Velasquez
c9e41621ed Fixed up mkxp.pro for OS X 2016-01-05 14:50:18 -05:00
Mathew Velasquez
f4b33ad5bf Changed c++11 to gnu11 to fix windows build 2016-01-05 14:50:18 -05:00
Mathew Velasquez
e0548d1d3c Added C++11 to project 2016-01-05 14:50:18 -05:00
Mathew Velasquez
d84c534af8 updated windows build 2016-01-05 14:50:18 -05:00
Mathew Velasquez
1deef29c1a removed all traces of INI_ENCODING 2016-01-05 14:50:17 -05:00
Mathew Velasquez
10e0aaabd1 fixed OS X build 2016-01-05 14:50:17 -05:00
Mathew Velasquez
1c5d4c2645 added SDL controller support 2016-01-05 14:50:17 -05:00
Mathew Velasquez
3d2d1a9150 Manually rebased over latest mkxp commit. Some features, such as lighting, are not reimplemented yet. 2016-01-05 14:50:17 -05:00
Jonas Kulla
373b90af00 Graphics: Optimize Viewport effect rendering
Using the kitchen sink plane shader for viewport effects, even
if only a small part of them are active, incurs great performance
loss on mobile, so split the rendering into multiple optional
passes which additionally use the blending hardware for faster
mixing (lerping).
Also, don't mirror the PingPong textures if the viewport effect
covers the entire screen area anyway.
2014-12-31 18:52:19 +01:00
Jonas Kulla
3c0a530eba Sprite: Add special case shader for translucent effect
Translucent sprites (opacity < 255) are very common,
so using a custom shader instead of the full blown effect one
helps a lot, especially on mobile.
2014-12-31 18:52:19 +01:00
Jonas Kulla
a53163660f Shader: Refine preprocessing on GLES platform
Don't globally set float precision to mediump, only fragment
shaders need that and defining it for vertex shaders causes
tilemap cracks.

Also manually define low precision for variables that hold
color / alpha values.
2014-12-31 18:52:19 +01:00
Jonas Kulla
60f101f2e6 Tilemap(VX): Factor out common code into tilemap-common.h
Renamed flashmap.h to tilemap-common.h as it already contained
shared functions.
2014-11-30 17:46:28 +01:00
Jonas Kulla
c1aab96454 Rename src/debuglogger -> src/gl-debug 2014-11-29 17:51:37 +01:00
Jonas Kulla
5979c5f778 Add placeholder application icon 2014-11-29 17:30:53 +01:00
Jonas Kulla
577f606dac Tilemap: Factor out flash tile code
This will be reused later in TilemapVX.
2014-10-26 20:00:56 +01:00
Jonas Kulla
dd73db2e9d Introduce F1 menu to reconfigure key bindings at runtime 2014-10-11 20:48:44 +02:00
Jonas Kulla
af145c3a01 mkxp.pro: Make MRI version a qmake config option
Example: qmake MRIVERSION=2.2
2014-10-11 15:36:21 +02:00
Jonas Kulla
51a0f3903c Audio: Clean up threading and add AudioStream fadein (RGSS3) 2014-09-30 09:13:12 +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
858c40591b mkxp.pro: Add proper method to define RGSS version
Eg. `qmake RGSS_VER=3` for VX Ace. Default is 1 (XP).
2014-08-17 00:27:08 +02:00
Jonas Kulla
4daff93e29 Put bundled font into its own translation unit 2014-08-17 00:26:35 +02:00
Jonas Kulla
29995bee7f mkxp.pro: sharedmidistate.h is a header 2014-08-15 22:33:22 +02:00
Jonas Kulla
7790bd6c2c Implement RGSS2 Tilemap class (TilemapVX) 2014-08-15 15:20:32 +02:00
Jonas Kulla
91d19d0a73 Implement RGSS2 Window class (WindowVX) 2014-08-15 15:20:15 +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
1ecdd9f980 filesystem.cpp: Split out RGSSAD parts 2014-07-23 22:57:39 +02:00
Jonas Kulla
f73b0ba4b5 audio.cpp: Split up into smaller parts 2014-07-23 17:28:20 +02:00
Jonas Kulla
efb2fd2695 GLMeta: Add vertex array object support 2014-07-13 14:05:12 +02:00
Jonas Kulla
b73461721c Add meta path with fallback for EXT_unpack_subimage parameters 2014-07-13 05:51:04 +02:00
Jonas Kulla
56226c40c6 Tilemap: Use vertex shader based autotile animation strategy
Previously, we would just stuff the entire tilemap vertex data
four times into the buffers, with only the autotile vertices
offset according to the animation frame. This meant we could
prepare the buffers once, and then just bind a different offset
for each animation frame without any shader changes, but it also
lead to a huge amount of data being duplicated (and blowing up
the buffer sizes).

The new method only requires one buffer, and instead animates by
recognizing vertices belonging to autotiles in a custom vertex
shader, which offsets them on the fly according to the animation
index.

With giant tilemaps, this method would turn out to be a little
less efficient, but considering the Tilemap is planned to be
rewritten to only hold the range of tiles visible on the screen
in its buffers, the on the fly offsetting will become neglient,
while at the same time the amount of data we have to send to the
GPU everytime the tilemap is updated is greatly reduced; so a
net win in the end.
2014-07-06 19:44:19 +02:00
Jonas Kulla
282d547ad4 Remove Perftimer classes
Performance can still be crudely measured by turning off
the framelimit and observing the FPS count. For everything
else, there's always callgrind / apitrace.
2014-06-13 19:01:15 +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
70279f0fdc mkxp.pro: Remove stray linker parameter 2014-05-24 18:24:10 +02:00