Fix things for Android
This commit is contained in:
parent
085534ee72
commit
70bf373271
|
@ -1,3 +1,4 @@
|
|||
*.xxd
|
||||
*.o
|
||||
*.pro.*
|
||||
*.bak
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
LOCAL_PATH := $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE:= mkxp
|
||||
LOCAL_CPPFLAGS:=-DSHARED_FLUID -DGLES2_HEADER -DFULL_MKXP_PATH=\"/data/data/com.radial.exitfate/files/mkxp.conf\"
|
||||
|
||||
ifeq ($(TARGET_ARCH_ABI), armeabi)
|
||||
LOCAL_CPPFLAGS += -DARCH_32BIT
|
||||
else ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
|
||||
LOCAL_CPPFLAGS += -DARCH_32BIT
|
||||
else ifeq ($(TARGET_ARCH_ABI), x86)
|
||||
LOCAL_CPPFLAGS += -DARCH_32BIT
|
||||
else ifeq ($(TARGET_ARCH_ABI), mips)
|
||||
LOCAL_CPPFLAGS += -DARCH_32BIT
|
||||
endif
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../OpenAL $(LOCAL_PATH)/../SDL_sound \
|
||||
$(LOCAL_PATH)/../libsigc++ $(LOCAL_PATH) \
|
||||
$(LOCAL_PATH)/../boost_headers $(LOCAL_PATH)/../pixman/pixman/pixman \
|
||||
$(LOCAL_PATH)/../OpenAL/include/AL $(LOCAL_PATH)/../physfs/src \
|
||||
$(LOCAL_PATH)/../vorbis-include $(LOCAL_PATH)/src $(LOCAL_PATH)/shader \
|
||||
$(LOCAL_PATH)/assets $(LOCAL_PATH)/../ruby/include $(LOCAL_PATH)/../fluidsynth/include
|
||||
LOCAL_SRC_FILES := \
|
||||
$(LOCAL_PATH)/src/main.cpp \
|
||||
$(LOCAL_PATH)/src/audio.cpp \
|
||||
$(LOCAL_PATH)/src/bitmap.cpp \
|
||||
$(LOCAL_PATH)/src/eventthread.cpp \
|
||||
$(LOCAL_PATH)/src/filesystem.cpp \
|
||||
$(LOCAL_PATH)/src/font.cpp \
|
||||
$(LOCAL_PATH)/src/input.cpp \
|
||||
$(LOCAL_PATH)/src/plane.cpp \
|
||||
$(LOCAL_PATH)/src/scene.cpp \
|
||||
$(LOCAL_PATH)/src/sprite.cpp \
|
||||
$(LOCAL_PATH)/src/table.cpp \
|
||||
$(LOCAL_PATH)/src/tilequad.cpp \
|
||||
$(LOCAL_PATH)/src/viewport.cpp \
|
||||
$(LOCAL_PATH)/src/window.cpp \
|
||||
$(LOCAL_PATH)/src/texpool.cpp \
|
||||
$(LOCAL_PATH)/src/shader.cpp \
|
||||
$(LOCAL_PATH)/src/glstate.cpp \
|
||||
$(LOCAL_PATH)/src/tilemap.cpp \
|
||||
$(LOCAL_PATH)/src/autotiles.cpp \
|
||||
$(LOCAL_PATH)/src/graphics.cpp \
|
||||
$(LOCAL_PATH)/src/gl-debug.cpp \
|
||||
$(LOCAL_PATH)/src/etc.cpp \
|
||||
$(LOCAL_PATH)/src/config.cpp \
|
||||
$(LOCAL_PATH)/src/settingsmenu.cpp \
|
||||
$(LOCAL_PATH)/src/keybindings.cpp \
|
||||
$(LOCAL_PATH)/src/tileatlas.cpp \
|
||||
$(LOCAL_PATH)/src/sharedstate.cpp \
|
||||
$(LOCAL_PATH)/src/gl-fun.cpp \
|
||||
$(LOCAL_PATH)/src/gl-meta.cpp \
|
||||
$(LOCAL_PATH)/src/vertex.cpp \
|
||||
$(LOCAL_PATH)/src/soundemitter.cpp \
|
||||
$(LOCAL_PATH)/src/sdlsoundsource.cpp \
|
||||
$(LOCAL_PATH)/src/alstream.cpp \
|
||||
$(LOCAL_PATH)/src/audiostream.cpp \
|
||||
$(LOCAL_PATH)/src/rgssad.cpp \
|
||||
$(LOCAL_PATH)/src/bundledfont.cpp \
|
||||
$(LOCAL_PATH)/src/vorbissource.cpp \
|
||||
$(LOCAL_PATH)/src/windowvx.cpp \
|
||||
$(LOCAL_PATH)/src/tilemapvx.cpp \
|
||||
$(LOCAL_PATH)/src/tileatlasvx.cpp \
|
||||
$(LOCAL_PATH)/src/autotilesvx.cpp \
|
||||
$(LOCAL_PATH)/src/midisource.cpp \
|
||||
$(LOCAL_PATH)/src/fluid-fun.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/binding-mri.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/binding-util.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/bitmap-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/table-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/etc-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/font-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/graphics-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/input-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/sprite-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/viewport-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/plane-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/window-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/tilemap-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/audio-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/module_rpg.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/filesystem-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/windowvx-binding.cpp \
|
||||
$(LOCAL_PATH)/binding-mri/tilemapvx-binding.cpp \
|
||||
|
||||
LOCAL_STATIC_LIBRARIES:=vorbis physfs sigc++ pixman boost_program_options ruby SDL2_static SDL2_ttf SDL2_sound SDL2_image fluidsynth ogg OpenAL
|
||||
LOCAL_LDLIBS:=-lz -llog -ldl -lm -lOpenSLES
|
||||
include $(BUILD_SHARED_LIBRARY)
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
rm -f shader/*.xxd*
|
||||
for i in $(ls shader); do
|
||||
xxd -i "shader/$i" "shader/$i.xxd"
|
||||
done
|
||||
rm -f assets/*.xxd*
|
||||
for i in $(ls assets); do
|
||||
xxd -i "assets/$i" "assets/$i.xxd"
|
||||
done
|
|
@ -24,6 +24,8 @@
|
|||
#include <boost/program_options/options_description.hpp>
|
||||
#include <boost/program_options/parsers.hpp>
|
||||
#include <boost/program_options/variables_map.hpp>
|
||||
#include <boost/property_tree/ptree.hpp>
|
||||
#include <boost/property_tree/json_parser.hpp>
|
||||
|
||||
#include <SDL_filesystem.h>
|
||||
|
||||
|
@ -143,7 +145,7 @@ std::set<T> setFromVec(const std::vector<T> &vec)
|
|||
typedef std::vector<std::string> StringVec;
|
||||
namespace po = boost::program_options;
|
||||
|
||||
#define CONF_FILE "mkxp.conf"
|
||||
#define CONF_FILE FULL_MKXP_PATH
|
||||
|
||||
Config::Config()
|
||||
{}
|
||||
|
@ -175,14 +177,15 @@ void Config::read(int argc, char *argv[])
|
|||
PO_DESC(dataPathOrg, std::string, "") \
|
||||
PO_DESC(dataPathApp, std::string, "") \
|
||||
PO_DESC(iconPath, std::string, "") \
|
||||
PO_DESC(overlayPath, std::string, "") \
|
||||
PO_DESC(execName, std::string, "Game") \
|
||||
PO_DESC(titleLanguage, std::string, "") \
|
||||
PO_DESC(midi.soundFont, std::string, "") \
|
||||
PO_DESC(midi.chorus, bool, false) \
|
||||
PO_DESC(midi.reverb, bool, false) \
|
||||
PO_DESC(SE.sourceCount, int, 6) \
|
||||
PO_DESC(customScript, std::string, "") \
|
||||
PO_DESC(pathCache, bool, true) \
|
||||
PO_DESC(customScript, std::string, "") \
|
||||
PO_DESC(useScriptNames, bool, false)
|
||||
|
||||
// Not gonna take your shit boost
|
||||
|
@ -406,3 +409,83 @@ void Config::readGameINI()
|
|||
|
||||
setupScreenSize(*this);
|
||||
}
|
||||
|
||||
using namespace boost::property_tree;
|
||||
using namespace boost::property_tree::json_parser;
|
||||
static void
|
||||
parseOverlayButtonDesc(const ptree &pt, TouchOverlay::Button &out)
|
||||
{
|
||||
out.id = pt.get<std::string>("id");
|
||||
out.target = pt.get<std::string>("target");
|
||||
out.x = pt.get<int>("x");
|
||||
out.y = pt.get<int>("y");
|
||||
|
||||
const std::string &shape = pt.get<std::string>("shape");
|
||||
|
||||
if (shape == "rectangle")
|
||||
{
|
||||
out.shape = TouchOverlay::Button::Rectangle;
|
||||
out.u.r.width = pt.get<int>("width");
|
||||
out.u.r.height = pt.get<int>("height");
|
||||
}
|
||||
else if (shape == "circle")
|
||||
{
|
||||
out.shape = TouchOverlay::Button::Circle;
|
||||
out.u.c.radius = pt.get<int>("radius");
|
||||
}
|
||||
else if (shape == "triangle")
|
||||
{
|
||||
out.shape = TouchOverlay::Button::Triangle;
|
||||
out.u.t.x1 = pt.get<int>("x1");
|
||||
out.u.t.y1 = pt.get<int>("y1");
|
||||
out.u.t.x2 = pt.get<int>("x2");
|
||||
out.u.t.y2 = pt.get<int>("y2");
|
||||
}
|
||||
else
|
||||
{
|
||||
throw std::logic_error("unknown button shape: " + shape);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
parseOverlayDesc(const ptree &pt, TouchOverlay &out)
|
||||
{
|
||||
out.image = pt.get<std::string>("image");
|
||||
|
||||
const ptree &buttons = pt.get_child("buttons");
|
||||
for (ptree::const_iterator ci = buttons.begin(); ci != buttons.end(); ++ci)
|
||||
{
|
||||
const ptree &c = ci->second;
|
||||
TouchOverlay::Button button;
|
||||
|
||||
parseOverlayButtonDesc(c, button);
|
||||
out.buttons.push_back(button);
|
||||
}
|
||||
}
|
||||
|
||||
void Config::readOverlayDesc()
|
||||
{
|
||||
SDLRWStream descFile(overlayPath.c_str(), "r");
|
||||
|
||||
if (descFile)
|
||||
{
|
||||
try
|
||||
{
|
||||
ptree json;
|
||||
read_json(descFile.stream(), json);
|
||||
|
||||
TouchOverlay ol;
|
||||
parseOverlayDesc(json, ol);
|
||||
|
||||
touchOverlay = ol;
|
||||
}
|
||||
catch (const std::exception &e)
|
||||
{
|
||||
Debug() << "Error parsing overlay descrption: " << e.what();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug() << "Didn't parse overlay desc cuz no file";
|
||||
}
|
||||
}
|
||||
|
|
47
src/config.h
47
src/config.h
|
@ -26,6 +26,49 @@
|
|||
#include <vector>
|
||||
#include <set>
|
||||
|
||||
struct TouchOverlay
|
||||
{
|
||||
std::string image;
|
||||
|
||||
struct Button
|
||||
{
|
||||
enum Shape
|
||||
{
|
||||
Rectangle,
|
||||
Circle,
|
||||
Triangle
|
||||
};
|
||||
|
||||
std::string id;
|
||||
std::string target;
|
||||
Shape shape;
|
||||
|
||||
int x;
|
||||
int y;
|
||||
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
int width;
|
||||
int height;
|
||||
} r;
|
||||
|
||||
struct
|
||||
{
|
||||
int radius;
|
||||
} c;
|
||||
struct
|
||||
{
|
||||
int x1, y1;
|
||||
int x2, y2;
|
||||
} t;
|
||||
} u;
|
||||
};
|
||||
|
||||
std::vector<Button> buttons;
|
||||
};
|
||||
|
||||
struct Config
|
||||
{
|
||||
int rgssVersion;
|
||||
|
@ -62,6 +105,7 @@ struct Config
|
|||
std::string dataPathApp;
|
||||
|
||||
std::string iconPath;
|
||||
std::string overlayPath;
|
||||
std::string execName;
|
||||
std::string titleLanguage;
|
||||
|
||||
|
@ -97,10 +141,13 @@ struct Config
|
|||
std::string customDataPath;
|
||||
std::string commonDataPath;
|
||||
|
||||
TouchOverlay touchOverlay;
|
||||
|
||||
Config();
|
||||
|
||||
void read(int argc, char *argv[]);
|
||||
void readGameINI();
|
||||
void readOverlayDesc();
|
||||
};
|
||||
|
||||
#endif // CONFIG_H
|
||||
|
|
|
@ -267,6 +267,7 @@ void EventThread::process(RGSSThreadData &rtData)
|
|||
break;
|
||||
}
|
||||
|
||||
#ifndef __ANDROID__
|
||||
if (event.key.keysym.scancode == SDL_SCANCODE_F1)
|
||||
{
|
||||
if (!sMenu)
|
||||
|
@ -277,6 +278,7 @@ void EventThread::process(RGSSThreadData &rtData)
|
|||
|
||||
sMenu->raise();
|
||||
}
|
||||
#endif
|
||||
|
||||
if (event.key.keysym.scancode == SDL_SCANCODE_F2)
|
||||
{
|
||||
|
|
|
@ -476,6 +476,9 @@ struct GraphicsPrivate
|
|||
TEXFBO frozenScene;
|
||||
Quad screenQuad;
|
||||
|
||||
TEX::ID overlayTex;
|
||||
Vec2i overlayTexSize;
|
||||
|
||||
/* Global list of all live Disposables
|
||||
* (disposed on reset) */
|
||||
IntruList<Disposable> dispList;
|
||||
|
@ -504,6 +507,29 @@ struct GraphicsPrivate
|
|||
screenQuad.setTexPosRect(screenRect, screenRect);
|
||||
|
||||
fpsLimiter.resetFrameAdjust();
|
||||
|
||||
const std::string &olImage = rtData->config.touchOverlay.image;
|
||||
if (!olImage.empty())
|
||||
{
|
||||
SDL_RWops *ops = SDL_RWFromFile(olImage.c_str(), "rb");
|
||||
SDL_Surface *surf = IMG_Load_RW(ops, 1);
|
||||
|
||||
if (surf)
|
||||
{
|
||||
overlayTex = TEX::gen();
|
||||
|
||||
TEX::bind(overlayTex);
|
||||
TEX::setRepeat(false);
|
||||
TEX::setSmooth(true);
|
||||
TEX::uploadImage(surf->w, surf->h, surf->pixels, GL_RGBA);
|
||||
|
||||
overlayTexSize = Vec2i(surf->w, surf->h);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug() << "failed to load overlay image:" << SDL_GetError();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
~GraphicsPrivate()
|
||||
|
@ -598,9 +624,30 @@ struct GraphicsPrivate
|
|||
threadData->config.smoothScaling);
|
||||
}
|
||||
|
||||
void drawOverlay()
|
||||
{
|
||||
if (overlayTex == TEX::ID(0))
|
||||
return;
|
||||
|
||||
SimpleShader &shader = shState->shaders().simple;
|
||||
shader.bind();
|
||||
shader.applyViewportProj();
|
||||
shader.setTexSize(overlayTexSize);
|
||||
shader.setTranslation(Vec2i());
|
||||
|
||||
glState.blend.pushSet(true);
|
||||
|
||||
TEX::bind(overlayTex);
|
||||
screenQuad.draw();
|
||||
|
||||
glState.blend.pop();
|
||||
}
|
||||
|
||||
|
||||
void redrawScreen()
|
||||
{
|
||||
screen.composite();
|
||||
drawOverlay();
|
||||
|
||||
GLMeta::blitBeginScreen(winSize);
|
||||
GLMeta::blitSource(screen.getPP().frontBuffer());
|
||||
|
@ -787,6 +834,7 @@ void Graphics::transition(int duration,
|
|||
FBO::bind(transBuffer.fbo);
|
||||
FBO::clear();
|
||||
p->screenQuad.draw();
|
||||
p->drawOverlay();
|
||||
|
||||
p->checkResize();
|
||||
|
||||
|
|
118
src/input.cpp
118
src/input.cpp
|
@ -32,6 +32,7 @@
|
|||
#include <vector>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
|
||||
#define BUTTON_CODE_COUNT 24
|
||||
|
||||
|
@ -202,6 +203,114 @@ struct MsBinding : public Binding
|
|||
int index;
|
||||
};
|
||||
|
||||
static Input::ButtonCode bcFromString(const std::string &str)
|
||||
{
|
||||
#define BC_CASE(button) \
|
||||
else if (str == #button) \
|
||||
return Input:: button
|
||||
|
||||
if (false) {}
|
||||
BC_CASE(Down);
|
||||
BC_CASE(Left);
|
||||
BC_CASE(Right);
|
||||
BC_CASE(Up);
|
||||
BC_CASE(A);
|
||||
BC_CASE(B);
|
||||
BC_CASE(C);
|
||||
BC_CASE(X);
|
||||
BC_CASE(Y);
|
||||
BC_CASE(Z);
|
||||
BC_CASE(L);
|
||||
BC_CASE(R);
|
||||
|
||||
return Input::None;
|
||||
}
|
||||
|
||||
static TouchOverlay::Button dummyOlButton;
|
||||
|
||||
static int areaSign(int x0, int y0, int x1, int y1, int x2, int y2)
|
||||
{
|
||||
return (x0 - x2) * (y1 - y2) - (x1 - x2) * (y0 - y2);
|
||||
}
|
||||
|
||||
/* Touch overlay binding */
|
||||
struct OlBinding : public Binding
|
||||
{
|
||||
OlBinding()
|
||||
: olb(dummyOlButton)
|
||||
{}
|
||||
|
||||
OlBinding(const TouchOverlay::Button &b)
|
||||
: Binding(bcFromString(b.target)),
|
||||
olb(b)
|
||||
{}
|
||||
|
||||
bool sourceActive() const
|
||||
{
|
||||
const Vec2i &scOffset = shState->rtData().screenOffset;
|
||||
const Vec2 &resoRatio = shState->rtData().sizeResoRatio;
|
||||
|
||||
for (size_t i = 0; i < MAX_FINGERS; ++i)
|
||||
{
|
||||
EventThread::FingerState &f = EventThread::touchState.fingers[i];
|
||||
|
||||
if (!f.down)
|
||||
continue;
|
||||
|
||||
int x = (f.x - scOffset.x) * resoRatio.x;
|
||||
int y = (f.y - scOffset.y) * resoRatio.y;
|
||||
|
||||
switch (olb.shape)
|
||||
{
|
||||
case TouchOverlay::Button::Rectangle :
|
||||
{
|
||||
if ((x >= olb.x && x <= olb.x + olb.u.r.width)
|
||||
&& y >= olb.y && y <= olb.y + olb.u.r.height)
|
||||
return true;
|
||||
|
||||
break;
|
||||
}
|
||||
case TouchOverlay::Button::Circle :
|
||||
{
|
||||
int dx = x - olb.x;
|
||||
int dy = y - olb.y;
|
||||
int d = sqrt(dx*dx + dy*dy);
|
||||
|
||||
if (d <= olb.u.c.radius)
|
||||
return true;
|
||||
|
||||
break;
|
||||
}
|
||||
case TouchOverlay::Button::Triangle :
|
||||
{
|
||||
bool s0, s1, s2;
|
||||
|
||||
s0 = areaSign(x, y, olb.x, olb.y, olb.u.t.x1, olb.u.t.y1) < 0;
|
||||
s1 = areaSign(x, y, olb.u.t.x1, olb.u.t.y1, olb.u.t.x2, olb.u.t.y2) < 0;
|
||||
s2 = areaSign(x, y, olb.u.t.x2, olb.u.t.y2, olb.x, olb.y) < 0;
|
||||
|
||||
if ((s0 == s1) && (s1 == s2))
|
||||
return true;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool sourceRepeatable() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
TouchOverlay::Button olb;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
/* Not rebindable */
|
||||
static const KbBindingData staticKbBindings[] =
|
||||
{
|
||||
|
@ -272,6 +381,7 @@ struct InputPrivate
|
|||
std::vector<JsHatBinding> jsHBindings;
|
||||
std::vector<JsButtonBinding> jsBBindings;
|
||||
std::vector<MsBinding> msBindings;
|
||||
std::vector<OlBinding> olBindings;
|
||||
|
||||
/* Collective binding array */
|
||||
std::vector<Binding*> bindings;
|
||||
|
@ -300,6 +410,7 @@ struct InputPrivate
|
|||
{
|
||||
initStaticKbBindings();
|
||||
initMsBindings();
|
||||
initOlBindings(rtData.config.touchOverlay);
|
||||
|
||||
/* Main thread should have these posted by now */
|
||||
checkBindingChange(rtData);
|
||||
|
@ -439,6 +550,7 @@ struct InputPrivate
|
|||
|
||||
appendBindings(kbStatBindings);
|
||||
appendBindings(msBindings);
|
||||
appendBindings(olBindings);
|
||||
|
||||
appendBindings(kbBindings);
|
||||
appendBindings(jsABindings);
|
||||
|
@ -464,6 +576,12 @@ struct InputPrivate
|
|||
msBindings[i++] = MsBinding(SDL_BUTTON_RIGHT, Input::MouseRight);
|
||||
}
|
||||
|
||||
void initOlBindings(const TouchOverlay &ol)
|
||||
{
|
||||
for (size_t i = 0; i < ol.buttons.size(); ++i)
|
||||
olBindings.push_back(OlBinding(ol.buttons[i]));
|
||||
}
|
||||
|
||||
void pollBindings(Input::ButtonCode &repeatCand)
|
||||
{
|
||||
for (size_t i = 0; i < bindings.size(); ++i)
|
||||
|
|
|
@ -232,6 +232,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
conf.readGameINI();
|
||||
conf.readOverlayDesc();
|
||||
|
||||
assert(conf.rgssVersion >= 1 && conf.rgssVersion <= 3);
|
||||
printRgssVersion(conf.rgssVersion);
|
||||
|
|
|
@ -127,8 +127,9 @@ struct SharedStatePrivate
|
|||
fclose(tmp);
|
||||
}
|
||||
|
||||
#ifndef __ANDROID__
|
||||
fileSystem.addPath(".");
|
||||
|
||||
#endif
|
||||
for (size_t i = 0; i < config.rtps.size(); ++i)
|
||||
fileSystem.addPath(config.rtps[i].c_str());
|
||||
|
||||
|
@ -136,7 +137,6 @@ struct SharedStatePrivate
|
|||
fileSystem.createPathCache();
|
||||
|
||||
fileSystem.initFontSets(fontState);
|
||||
|
||||
globalTexW = 128;
|
||||
globalTexH = 64;
|
||||
|
||||
|
@ -154,6 +154,7 @@ struct SharedStatePrivate
|
|||
|
||||
/* RGSS3 games will call setup_midi, so there's
|
||||
* no need to do it on startup */
|
||||
|
||||
if (rgssVer <= 2)
|
||||
midiState.initIfNeeded(threadData->config);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue