Commit Graph

645 Commits

Author SHA1 Message Date
retro-wertz 0c579b20a1 Revert to a default audio api (SDL) when config is invalid
Prevents crash when an invalid or a non existing api is used in
vbam.conf
2018-12-23 09:29:48 +08:00
ZachBacon 4361c45b16 Fixed a few things, still have lots to fix though before it's a usable state. 2018-12-18 10:46:45 -05:00
ZachBacon 99795b270d cmake hookup is done, there are some issues that I'll be trying to fix within faudio.cpp before it's ready for mainstream 2018-12-18 10:24:39 -05:00
ZachBacon eab039cd78 This should allow faudio to be supported in vba-m, next is to further modify cmake to find faudio 2018-12-18 08:59:11 -05:00
ZachBacon e00aca18df Initial work on switching to faudio, WIP 2018-12-17 23:20:29 -05:00
Scott Knight a52eddb5b4 Handle debugger disconnect and reconnect properly
When connecting the debugger the debugger variable was
being set to true before setting up the dbgMain and other related
function pointers. This caused the idle loop to attempt to call dbgMain
which was still NULL. This change makes sure that debugger isn't
set to true until all function pointers are set and that when disconnecting
the remotePort variable is reset back to 0 so we can reconnect properly.
2018-12-05 14:17:52 -08:00
Zach Bacon 5e58e4c3e6 when it comes to cross compiling, Most unices like linux are case sensitive 2018-10-23 22:06:18 -04:00
Rafael Kitover 9cb9ce86bd fix Windows XP Compatibility #315
Use the IsWindowsVistaOrGreater() function from VersionHelpers.h, which
fortunately is part of mingw, to check for the availability of the
comctl32 LoadIconWithScaleDown API, which we use to fix issues with the
app icon, like the icon being too big in the volume mixer.
2018-10-23 06:19:34 -07:00
ZachBacon 58083d9d4a Gonna use universaldxsdk for xaudio 2018-09-16 15:20:06 -04:00
Rafael Kitover e67b513e94 rename mac-localizations to mac-translations.cmake
Rename cmake script to copy .gmo files into the .app introduced in
bf4606fc from mac-localizations.cmake to mac-translations.cmake since
these are really translations and not localizations.
2018-08-11 15:05:12 -07:00
Rafael Kitover bf4606fc18 install translations into mac .app
Add a POST_BUILD hook to run a cmake script to install translations into
the .app.

Tested to work correctly, when system language is different a
translation is loaded.
2018-08-11 14:52:18 -07:00
Rafael Kitover 6cbad61f36 fix cmake regression introduced in bfe21aee
Before calling list(REMOVE_ITEM ...) check if the variable exists, if it
doesn't cmake throws an error.
2018-08-10 09:37:55 -07:00
Rafael Kitover bfe21aee3e remove -fpermissive compiler flag
Remove -fpermissive from the list of flags passed to gcc and clang.

Remove -fpermissive from the cxxflags from wxWidgets config as well.

When checking wxWidgets ABI compatibility version, temporarily add
-fpermissive to compiler flags on Win32 because minhook requires it.
2018-08-10 06:46:51 -07:00
Rafael Kitover be508eb2fd simplify check for renamed wx-config, fix gentoo
Use find_program() to check for the existance of wx-config-gtk4, then
wx-config-gtk3 and finally wx-config, instead of calling find_package()
for each separately, FindwxWidgets module does not like being called
multiple times, it screws up some cache variables.
2018-08-05 21:16:33 -07:00
Rafael Kitover 3b44a29948 cmake: fix wrong unset syntax #295 from f78d45c0
unset(VAR PARENT_SCOPE CACHE FORCE)

seemed to work on my version of cmake on gentoo, but does not work on
other versions.

Rewrite the function as a macro and use the syntax:

unset(VAR CACHE)

instead.
2018-08-04 13:13:37 -07:00
Rafael Kitover f78d45c038 cmake: fix regression in finding wx from 2efcb620
Clear FindwxWidgets module variables from the cache after each
unsuccessful try with WX_CONFIG_EXECUTABLE set, otherwise the succeeding
find_package(wxWidgets) call with WX_CONFIG_EXECUTABLE unset will fail,
as it does with cmake on gentoo.
2018-08-04 04:34:24 -07:00
Zach Bacon eb20bb4aad
We don't have a forum anymore
Please kindly use github issues
2018-07-24 17:42:55 -04:00
retro-wertz 0e60c34ab9
Fix this 2018-07-12 16:23:59 +08:00
Rafael Kitover a8d0508cf2 use GetWindow()->Refresh() in Wayland only
Some people are reporting stuttering, and @retro-wertz tested both
DrawArea() and Refresh() on wxgtk3 under xorg and found that the
Refresh() method produces more stuttering.

Change the compile check for wxgtk2 to a runtime check for wayland, and
use Refresh() under Wayland only.
2018-07-02 18:32:18 -07:00
Rafael Kitover 498019a39b support older 32 bit macs running 10.7, fix build
Make mac builder use -m32 in CFLAGS etc. to produce a 32 bit binary
targetting 10.7 (Lion.) This provides the greatest backward
compatibility for older macs, and also allows for asm filters.

Fix an issue with m4 on 10.13 using a patch from macports.

Support `-pX` patch level args in DIST_PATCHES in builder.

Fix an issue with bison on 10.13 by bumping the version to 3.0.5.

Build libxslt `--without-crypto` so that it doesn't try to link the brew
libgcrypt.

Invoke cmake for dists with -DCMAKE_C_COMPILER_LAUNCHER=ccache and
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache to use ccache, and set
CMAKE_C_COMPILER and CMAKE_CXX_COMPILER to the actual compilers not
prefixed by ccache.

When checking for ccache in vbam cmake code, check that
CMAKE_CXX_COMPILER_LAUNCHER and CMAKE_C_COMPILER_LAUNCHER were not
already defined (generally on the command line.)

Remove align attributes from sections in 2xSaImmx.asm, macho format on
mac does not support this and the filter works fine without them.

In the Quartz2D renderer, pass the NSRect view.bounds through
NSRectToCGRect when calling CGContextDrawImage(), this is necessary for
the 32 bit API.

Bump openssl to 1.0.2o.

Bump libxml2 to 2.9.8.

Update URL for urw fonts, and improve the dist downloading/unpacking
code to handle URLs that do not contain the filename (for .tar.gz and
.zip as identified by `file`.)

Change post-build for harfbuzz from `rebuild_dist freetype;` to
`rebuild_dist freetype --with-harfbuzz=yes;` as it was supposed to have
been.

Build cmake itself with --parallel and --enable-ccache.

Silence errors from killed jobs due to tmp directory being gone.

Write a couple of string functions, rtrim() and gsub().

Make path_exists() handle globs with spaces in them, by escaping the
space.

Use --host and --build args to autoconf configure to "cross-compile" for
32 bits, this is necessary for some dists, and does not work for others,
remove it for dists where it does not work.

Add COMMAND_MODE=unix2003 to the build environment, this is necessary to
fix some build errors, why I have no clue, found it on stackoverflow.

Pass -Wl,-no_compact_unwind in LDFLAGS to openssl, this is necessary for
32 bits.

Force sfml to compile as 32 bit, it normally does not allow this.

Remove shared-mime-info from this build, it's not necessary for anything
and there are issues XML::Parser linked to our expat and brew perl that
need to be resolved.
2018-06-30 03:40:47 -07:00
Rafael Kitover 6b4862581e fix some ELF parsing vulnerabilities #255
Implement the recommendations described in issue #255 by @zzazzdzz:

- Check bounds when reading ELF program header sections.

- Skip reading ELF section headers if the string table pointer is NULL.

- Increase the buffer size for dissassembled instructions in the
  dissassembly view and pass the buffer size to the disArm() and
  disThumb() functions so that rudimentary bounds checking can be done.

Also add the constants WORK_RAM_SIZE and ROM_SIZE to reduce incidence of
magic numbers and make the code a bit cleaner.
2018-06-29 08:17:13 -07:00
Rafael Kitover e4923e7267 fix save dialogs on Mac #268
In MainFrame::ShowModal, which is used as a wrapper for
wxDialog::ShowModal to also pause emulation, add the current window
style flags to the additional CAPTION and RESIZE_BORDER flags being set
with SetWindowStyle(), otherwise the other style flags of the window are
reset causing erroneous behavior such as save dialogs appearing as open
dialogs on Mac.
2018-06-26 04:38:38 -07:00
Rafael Kitover ed00dc77a9 use GetWindow()->Refresh() on non-GTK too #260
Default to GetWindow()->Refresh() to draw the game area on non-GTK
platforms as well, and only use the DrawArea(dc) method in GTK2 and
lower.
2018-06-18 10:20:29 -07:00
Rafael Kitover 89228b0697 fix high CPU usage under wxgtk2 #260
When using GTK2, call DrawArea(dc) instead of GetWindow()->Refresh(),
this prevents glib from using huge amounts of CPU (as discovered by
@retro-wertz .)

Switching video drivers sometimes crashes the app, the DrawArea() call
is as safe as possible, the problem is elsewhere.
2018-06-18 10:11:14 -07:00
Rafael Kitover d160321811 fix $ENV{WX_CONFIG} check yet again
The expansion must be quoted as "$ENV{WX_CONFIG}" when passed as a
parameter e.g. to if() otherwise it expands to no parameter when empty.
2018-06-18 08:29:14 -07:00
Rafael Kitover 0489756d4c fix $ENV{WX_CONFIG} check in 46f52941
Apparently in cmake empty env vars do not evaluate to false, use
explicit STREQUAL "".
2018-06-18 04:11:35 -07:00
Rafael Kitover 46f5294129 do not prefer wxgtk3 if $ENV{WX_CONFIG} is set
Skip the check for wx-config-gtk3 if the WX_CONFIG environment variable
is set, indicating that the user wants to override the version of wx to
build against.
2018-06-18 04:04:47 -07:00
Rafael Kitover 437b366e39 clean up wxgtk3 finding cmake code
Use a loop to check for wx-config-gtk4 then wx-config-gtk3 and unset the
config executable variable otherwise.

Also remove gl from the initial wx libraries list.
2018-06-18 03:46:30 -07:00
Rafael Kitover 2efcb620bd support and default to wxgtk3 not gtk2 on arch
Change installdeps to install wxgtk3 on arch instead of the wxgtk
package which uses gtk2.

Update the cmake code to check for the renamed wx-config executable
wx-config-gtk3 on arch, first checking for wx-config-gtk4 for the
future.
2018-06-18 02:44:19 -07:00
retro-wertz 50e91f7973 Remove unrelated function during rom load 2018-06-15 13:07:22 -04:00
retro-wertz bdb164bd1c
Set mirroringEnable to false
Set mirroring to false when rom loaded is not found in database. Making this true all the time causes some issue, for one with soft-patching some games.

Fix this https://github.com/visualboyadvance-m/visualboyadvance-m/issues/182
2018-06-14 20:04:20 +08:00
ZachBacon 037e3771b1
let's place these in the correct spot shall we? 2018-06-10 12:37:28 -04:00
ZachBacon 90d2f5c808 Added retro-wertz for his contributions in bringing in libretro back to speed and other things
Signed-off-by: ZachBacon <zachbacon@budgiemedia.rocks>
2018-06-09 12:04:42 -04:00
retro-wertz 991fc74922 Do this for GBA sound enhancements too 2018-06-09 21:42:04 +08:00
retro-wertz 4e4424e806 GB: Fix sound options not working
Fix crash when adjusting echo/stereo sliders.

Fix enhancements not working when selected

Fix settings not loaded at startup

Reviews and/or modifications are welcome. Obviously, im trying out if I understand how options are linked in WX so I am not quite sure if this is the right thing to do this.
2018-06-09 21:08:20 +08:00
Rafael Kitover abb62df6f3 pause on menu pulldown on windows only (FIXED)
Previous commit had an #ifndef when what was needed was an #ifdef.
2018-06-08 17:24:23 -04:00
Rafael Kitover cb3e9e3252 pause on menu pulldown on windows only
On Windows we still need to pause on menu pulldown until we figure out
how to keep the game running, with the code disabled it still pauses and
the audio loops.
2018-06-08 13:58:19 -04:00
Rafael Kitover 7a194fb224 do not pause games when menus are pulled down
Previously I disabled this for mac because of bugs in keyboard handling,
but it turns out most people don't like the game pausing on menu
pulldown anyway, so now I disable it for all platforms.

TODO: the game still pauses for modal dialogs.
2018-06-08 04:14:34 -04:00
ZachBacon 6e18c3c2d4 exclude headers for now 2018-06-06 07:05:18 -04:00
Rafael Kitover 947cd10e2f minor OSD code cleanup
Use strdup instead of a stack variable + strncpy to convert the osd
wxString message to a C string, hopefully fixes an MSVC incompatiblity.
2018-06-06 06:57:34 -04:00
Zach Bacon a5e717a284
add brace so it doesn't break compilation
Phone editing is a no, but I didn't want to break compilation.
2018-06-05 11:14:47 -04:00
ZachBacon 4a615ab395 Gonna take my time and actually work on a D3D9 panel. Documentation here I come. 2018-06-05 10:13:41 -04:00
Rafael Kitover 85dea8a57b add cygwin cross build support
Put shared code for linux cross builds and cygwin cross builds into
builder/mingw-cross.sh .

Call wxrc when the build platform is cygwin with files resolved via
`cygpath -m` in case the wxrc is a native binary.

Add -fpermissive to CXX/OBJCXX flags.

Reenable libzvbi support for ffmpeg.

Stop building ffmpeg and related dists by default until we fix game
recording.

Set CMAKE_PREFIX_PATH in cmake args as a FILEPATH type variable.

Support xml catalog made with native libxml2 using cygpath in related
commands, make cygpath a noop on non-cygwin platforms.

Remove gdb and zip from msys2 deps.

Add a cygwin installdeps routine using a copy of cyg-apt that it
fetches.

When creating symlinks in install_dist() fully resolve all symlinks in
path parts for the source file, so that host and target binaries are
correctly linked.

When cp -af fails to preserve permission related data, fall back to cp
-rf.

When installing libs with a cross suffix, make a symlink for the lib
without the cross suffix.

Make sure cygwin runs with CYGWIN=winsymlinks:native .

Add paths to host gettext executables to cmake args, otherwise it tries
to use the target executables and fails on paths.

For the pkgconfig bundled glib, turn off win32 platform for the cygwin
host build.

For gettext, remove --disable-auto-import from link flags.

Compile target freetype on cygwin with cmake and manually install the
pkgconfig .pc file using sed.

Add a relocation type 'aggressive', when a dist is marked with this
type, rewrite all '/usr' prefixes to the build root. By default only
files that exist in the dist are matched and rewritten.

Fix regression in linux build by adding some iconv related flags to the
cmake invocation for doxygen and disabling -Werror for xorg dists.

When relocating scripts, use the actual resolved root path for host or
target.

Build libxslt --without-python so that it doesn't try to pick up the
msys2 python.

Other misc. minor tweaks and cleanups.
2018-05-01 04:11:57 -04:00
Rafael Kitover 8638c76923 require pkg-config in cmake for gtk checks #227
cmake reconfigure was failing for the gtk2 case because the pkg-config
cmake code was not being loaded.

Load pkg-config cmake code before any gtk checks.
2018-04-26 17:09:21 -04:00
Rafael Kitover 70c8dee8bf cmake: default ENABLE_OPENAL to OFF
Since the SDL sound driver is now the default on all platforms, change
the ENABLE_OPENAL default in cmake to OFF.
2018-04-13 12:31:07 -04:00
Eleuin d992cfa214 Finalize vertical draw fixes and code cleanup
Fix shenanigans
2018-04-04 14:33:20 -04:00
Eleuin 80bcdab924 Fix draw height across rendering modes 2018-03-22 21:00:11 -04:00
Eleuin d7a4eddb3c Fixed filter draw bounds 2018-03-15 10:00:26 -04:00
Rafael Kitover d5c9c6bac7 change default audio driver to SDL
A Linux user (Eleuin) has reported menu lockups with the default OpenAL
(probably thread related) and no lockups with SDL.

A Windows user has reported popping noises with all audio drivers except
SDL (#178).

Change the audio driver default to SDL for the time being until these
issues can be looked into.
2018-02-28 17:53:55 -05:00
Eleuin 480541a205 Modify max_threads sanity check to better handle erroneous values 2018-02-28 17:18:52 -05:00
ZachBacon c7c6ad6a87
implemented the fix from nhdailey, should resolve #153. Will put up a
test build soon.
2018-02-25 13:38:25 -05:00
Rafael Kitover 66980934b2 add multi-platform build system
under `tools/` add some scripts to invoke the build system to build all
deps for vbam and vbam itself:

- `tools/linux/builder`

This builds a mostly static linux binary with a few dynamic deps for
xorg and wayland. Using gtk3. This will run on just about any dist.

- `tools/osx/builder`

Builds a static mac app targetting 10.7.

- `tools/win/linux-cross-builder`

Builds a static windows binary using the mingw-w64 toolchain.

- `tools/win/msys2-builder`

Builds a static windows binary in the MSYS2 environment, this may be
suffering from a few regressions.

Change some cmake code to support the build system, refactor a few
things in it.
2018-02-24 14:39:29 -05:00
orbea 3e052c943d cmake: Fix -DENABLE_FFMPEG=OFF 2018-01-18 13:18:35 -08:00
Rafael Kitover 420450255c mac build/builder improvements
Improve, refactor and clean up `tools/osx/builder` to build a relatively
full-featured ffmpeg as well. This requires lots of other dists. It's
kind of like a mini port system now. Will generalize it shortly to a
sourced library for using with both the mac and the mingw builds. Will
hopefully become a separate repo on github at some point.

Add perl dist support to the builder.

Add an `--env` flag to the builder to print the build environment
variables so that they can be read in with `eval` for debugging
purposes.

Also add the `FFMPEG_STATIC` cmake option to link static ffmpeg
libraries correctly.

Move the codesigning and zipping of the `.app` bundle to the builder
script and out of cmake, as this is something most users don't need.
2017-10-22 15:35:56 -07:00
Rafael Kitover afb1cd3dfc automate codesign/zip for mac build, add xz dep
Add POST_BUILD commands on Mac to codesign the `.app` and make a zip
file from it.

Also add xz/liblzma dist to `tools/osx/builder` because something
apparently wants liblzma.
2017-10-12 14:56:21 -07:00
Rafael Kitover 1fc0966384 minor code cleanup
Change one instance of a dummy local variable to a C++11 temporary via
CLASS{param}.
2017-09-23 15:29:35 -07:00
Rafael Kitover 3d792457b2 fix huge app icon in Win volume settings #149 #121
We were setting the app icon based on the 256x256 xpm icon in the xrc,
and this triggered a bug where the app-specific icon in Windows volume
settings was huge:

https://stackoverflow.com/questions/17949693/windows-volume-mixer-icon-size-is-too-large/46310786#46310786

Adapt the code from that SO question to use Windows-specific code to
load and scale the icon appropriately using a Vista+ API, and fall back
to the normal Wx icon loading mechanism on XP.

Also generate a nice new `vbam.ico` Windows icon file based on the
`.svg` using the app from:

https://iconverticons.com
2017-09-19 16:28:23 -07:00
Rafael Kitover 268c638456 improve win32 dependencies git submodule handling
Use `git submodule update --remote --recursive` instead of `git
submodule update --init --recursive` so that the latest version of the
repo is always installed.

Run the command from cmake instead of throwing an error if the submodule
is not checked out. Only throw an error if the checkout failed or the
source tree is not a git checkout.

Don't add the `mingw-xaudio` include directory if using MSVC.

Remove the submodule check from src/wx/CMakeLists.txt, having it in the
main CMakeLists.txt is enough.
2017-09-19 06:11:41 -07:00
Rafael Kitover 7f1fec88af work around gcc lto wrappers bug with gcc 7.x
gcc lto wrapper commands such as `gcc-ar` will segfault with some
versions of gcc 7.x when called via an absolute path, see:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80717

Generalize the mechanism for compiling a small C program on the host
(currently used for bin2c for Wx resources) and use it to wrap the gcc
wrappers in a little executable that prepends their dirname to PATH and
runs them with `execvp()`.

Make LTO default to ON again, except on win32 with gcc < 7, because
those toolchains produce broken binaries with LTO enabled.

Also add `-ffat-lto-objects` to compiler flags for gcc when LTO is
enabled, this will increase the chances that the LTO build will succeed
even if there are issues with the binutils wrappers. Clang does not
support this.
2017-09-16 19:47:39 -07:00
Rafael Kitover 02b3defcd0 restore wx 2.8 compat, improve string processing
Fix building with wx 2.8 by rewriting some more string related code.

Replace all calls to .c_str() with .mb_str().

Remove some of the .c_str()/.mb_str() calls where the target is already
wxString.

Move the split()/enum_idx() functions from opts.cpp into
str_split()/vec_find() in strutils.h/strutils.cpp for use in other
files.

Replace the C-style string parsing code in a couple of places in
wxvbam.cpp for processing possible command line options by splitting on
'='.

Also replace a couple of places that use pointer arithmetic in
widgets/joyedit.cpp and widgets/keyedit.cpp with wxString methods.
2017-09-13 05:32:44 -07:00
Rafael Kitover fa9afa4e18 cmake: wx and cross compiling fixes
When calling find_package(wxWidgets ...) allow the first call to fail
because the OpenGL library may not be found. A subsequent call without
listing the OpenGL library is done with REQUIRED.

And if the OpenGL library is not found, skip the OpenGL compile test.

When cross-compiling (e.g. with mxe or other mingw packages) skip the wx
ABI compatibility run tests.

When choosing which minhook lib to link to the wx ABI compat run test
program, check for 64 bit but fallback to 32 bit just in case.
2017-09-12 15:31:49 -07:00
Rafael Kitover f5cb7b2b40 support Wx built with --enable-stl #134
When Wx is built with --enable-stl, wxString to wxChar*/char* implicit
conversions and vice-versa no longer work.

Change all wxChar* data members to wxString and change all pointer
arithmetic code (mostly in opts.cpp, cmdevents.cpp and
widgets/joyedit.cpp) to use wxString methods instead.

Also make mostly minor changes in various other files for all of this to
work.
2017-09-10 15:44:18 -07:00
Rafael Kitover 142dbc0aca cmake: use arch specific minhook trampoline libs
Use either the 32 bit or 64 bit MinHook trampoline static lib for the Wx
ABI tests, depending on the detected arch of the host/target.
2017-09-10 12:24:36 -07:00
Rafael Kitover de95c70547 fix Wx ABI check for Win32/MinGW
Fix error dialog boxes popping up when the Wx ABI compat tests are run
from cmake.

Wx 3.x is hardcoded to use MessageBox for wxLogFatalError(), even in a
console app, so use the minhook trampoline lib (added to dependencies)
to hook the Win32 API MessageBoxW and MessageBoxA (the second just in
case) so that no error dialogs pop up.

Details here:

https://www.codeproject.com/Articles/44326/MinHook-The-Minimalistic-x-x-API-Hooking-Libra
2017-09-10 11:00:24 -07:00
Rafael Kitover 42f6c446ea minor improvements for Wx compile tests
Include `wx/wxprec.h` (precompiled header first in test programs to
possibly make the tests slightly faster.

For the ABI compat check, set a variable for the test program instead of
listing it twice.
2017-09-08 08:59:19 -07:00
Rafael Kitover ceef480e70 improve wx GCC ABI check #142
Following some suggestions from @ArtiiP, first check if there are no
issues without an -fabi-version flag, and then instead of incrementing
from 0, decrement from 15 to find the highest working ABI version.

This is very slow if the needed ABI version is 2 for example, but not
much to do about that for the time being.
2017-09-04 12:28:24 -07:00
Rafael Kitover b1937fe9cb improve Wx GCC ABI check #142
Start checking the ABI version at -fabi-version=0, which is the default,
and if that succeeds don't set the flag at all.

This will allow the code to work properly if and when Wx removes the ABI
check alltogether.
2017-09-02 18:52:01 -07:00
Rafael Kitover 2ad204619b compile/run test to detect Wx ABI version #142
In 4e665ae I hardcoded -fabi-version=2 for g++ flags, and @ArtiiP
pointed out that this is wrong, because Wx may be compiled with other
ABI versions.

Add cmake check_cxx_source_runs() tests to determine the correct ABI
version flag to use with Wx.
2017-09-01 21:51:24 -07:00
Zach Bacon 350619be93 Merge branch 'master' of https://github.com/visualboyadvance-m/visualboyadvance-m 2017-08-27 22:02:03 -04:00
Zach Bacon c6d8939304 Made a tiny, itty bitty, little accident. Forgot to remove cairo option
from the xrc.
2017-08-27 22:01:19 -04:00
Rafael Kitover 2179215a8b fix rebuilds on git changes
Use cmake to generate the version.h from version.h.in which is a cleaned
up version of the old version.h with the git short sha into the build
directory, and include the version.h from there.

Continue to use the GetGitRevisionDescription plugin to make the cmake
configuration state depend on the current sha of HEAD, but throw away
the results (for the time being.)

This makes rebuilds after git changes such as a commit only recompile a
couple of files instead of the whole tree.
2017-08-27 13:20:17 -07:00
Zach Bacon 1583a226f4 *Removal of the cairo renderer, it never performed well to begin with. 2017-08-27 13:11:34 -04:00
Rafael Kitover 1a8f2f9886 "no throttle" fixes/cleanups
`throttle == 0` is supposed to emulate at full speed and drop audio
data, this is different from `throttle == 100` which is emulation
throttled at normal speed, the default setting.

Fix the recently rewritten SoundSDL sound driver to make `throttle == 0`
work, and make some minor changes to clean up the relevant code in the
XAudio2 sound driver.
2017-08-27 07:21:27 -07:00
Rafael Kitover 4d7e102e26 hopefully fix resize artifacts on game panel #138
Paint the whole GameArea (containing the emulator graphics panel) black
on size events for both the GameArea and the panel.

This will hopefully fix reports of garbage around the panel when going
full screen with the OpenGL driver on Linux.
2017-08-16 04:02:12 -07:00
Rafael Kitover 346d97a760 remove default F11 keybinding for save state #137
Remove F11 as the default key for save state (GS=) in the defkeys array
in opts.cpp and leave it unmapped by default, because it conflicts with
the menu XRC mapping for full screen which is also F11 on non-macOS
platforms.
2017-08-16 03:36:18 -07:00
Rafael Kitover fb15aed223 fix memory viewer xrc on wx 3.1+ #127
Remove the wxALIGN_CENTRE_VERTICAL flag from items that have the
wxEXPAND flag in the MemViewer.xrc because wx 3.1+ warns about the flags
being incompatible.
2017-08-09 03:03:56 -07:00
Avindra Goolcharan 0bdbcf3188 SUSE Lint: fix a few classes of warnings #136
- drop unused variables

- unused-but-set-variable

- stray trailing comments

- in viewsupt.cpp replace redundant expression with variable that holds the same value
2017-08-08 20:05:38 -07:00
Avindra Goolcharan dd91abf72e fix errors reported by SUSE's post-build linter
In StartRFUSocket() in gba/GBALink.cpp move a postincrement out of an
expression to a following statement, because the evaluation order is
undefined.

In GetDevices() in wx/openal.cpp replace an #else with an #endif so that
the function has a default return statement visible to the linter.

In FilterThread::Entry() add a `return 0;` (ExitCode) statement at the
end even though it is probably never reached.

In the TransferToWindow() for the positive double validator widget in
wx/widgets/wxmisc.cpp add a default `return true;`, for the rare case
there is no double value, in which case the string representation would
be displayed (since it is a subclass of wxGenericValidator(wxString&) .)
2017-08-07 20:31:08 -07:00
Rafael Kitover 783475bf39 switch to cmake module GNUInstallDirs #116
See:

https://cmake.org/cmake/help/v2.8.12/cmake.html#module:GNUInstallDirs

Use these variables to set all installation paths.

Add link and note about module to README.md .
2017-05-24 04:25:45 -07:00
kwkam 7405efef5f wx/wxvbam: fix GetAbsolutePath
Makes battery/state directory setting work when set as relative path
2017-05-12 20:40:37 +08:00
Rafael Kitover fed6f2389e Add #include <cmath> for std::ceil() #113
A couple files that use the std::ceil() math ceiling function were not
including the required header <cmath> and this seemed to have been
causing build errors on some Linux distributions.

Add the necessary #include <cmath> statement to both files.
2017-05-05 10:21:03 -07:00
Rafael Kitover 247e584fe0 better fix for clipped video in GL fullscreen #89
In d1918c12 I manually sent a SIZE event to the DrawingPanel after
calling Layout() in the setup code in OnIdle().

But the obvious problem is that the ->Connect() calls to set up the
event handlers, including SIZE, are after all the setup code including
the Layout().

Move the ->Connect() calls to the top of the setup code and remove the
manual SIZE event sending. This is a much better solution that for some
reason I didn't notice at the time.

Tested to also fix the problem.
2017-04-04 13:30:56 -07:00
Rafael Kitover 41ead88dcb 32 bit cross compiling support on Linux
Add the `m32` parameter to ./installdeps to fetch 32 bit multilib
dependencies on Fedora, Arch and Solus linuxes and add a cmake toolchain
file to build with them.

For MSYS2 support both an `m32` and an `m64` to choose deps for 32 bit
or 64 bit mingw targets.

Adjust build instructions from ./installdeps to support both usages.

Other changes:

- use --nogpgcheck --best --allowerasing for dnf invocations for Fedora,
  the --nogpgcheck is necessary when Rawhide is confused about which
  keys it has, and the latter two are needed for upgrades that remove
  unneeded deps etc

- when finding GTK2, first try using pkg-config, and only fall back to
  the cmake script when that fails, pkg-config works better for cross
  builds

- add cairo to dep lists in ./installdeps for the time being

- for arch, list individual packages from base-devel instead of
  base-devel that do not require gcc-libs because of potential conflicts
  between gcc and gcc-multilib
2017-03-23 14:09:17 -07:00
Rafael Kitover 82c8a1e3fa fix linux build broken in 687c08a
Stop saving and restoring the CMAKE_REQUIRED_* variables for the compile
test, because the subsequent Wx header symbol tests need them set up for
Wx support as well.

Also --param foo=bar needs to be a single string in the list of compiler
flags, or cmake can misinterpret the second part as a library when it is
passed to libraries/link-options.
2017-03-10 06:38:50 -08:00
Rafael Kitover 687c08a051 pass all compiler/linker flags for compile test
When determining gcc/clang flags, save resulting C flags as MY_C_FLAGS,
C++ flags as MY_CXX_FLAGS, and linker flags as MY_C_LINKER_FLAGS, then
use them in the Wx OpenGL compile test.

This fixes the test erroneously failing on git mxe on mac.

Also, don't use -fPIC on Win32, set Wx defines separately from the test,
and save all CMAKE_REQUIRED_* variables before the test and restore them
afterwards.
2017-03-07 16:15:02 -08:00
Rafael Kitover 05610d84f6 fix linking OpenAL statically on Win32/MXE
Add the necessary AL_LIBTYPE_STATIC define for MXE and non-msys2 win32
builds so that OpenAL can be linked statically without errors.
2017-03-05 11:47:32 -08:00
Rafael Kitover 7b85964eb6 full throttle support + snd driver improvements
Support throttle in all sound drivers: SDL, openal, dsound and xaudio.

Link OpenAL at compile time instead of runtime.

Minor improvement on 891f17d6, which added throttle support to SoundSDL
and made it actually work more often and crash less: check that throttle
is non-zero before scaling the frequency.

For dsound, add the CTRLFREQUENCY capability to buffers and call
SetFrequency on the secondary buffer in setThrottle().

For OpenAL, set AL_PITCH on the source to throttle / 100.0 in
setThrottle() and remove all dynamic library loading stuff.

For xaudio, 441e6c9e allows throttle to work, and is also necessary for
these changes to dsound and openal.
2017-03-05 08:43:25 -08:00
Zach Bacon 8fcc32eeeb Merge pull request #93 from Mystro256/master
Fix incorrect bug tracker link
2017-03-05 03:16:53 -05:00
Mystro256 093bc40074 Fix incorrect bug tracker link
Clicking "Report Bugs" goes to SF instead of github
2017-03-05 01:56:31 -05:00
Rafael Kitover 441e6c9e0e fix setting throttle on LoadGame()
Move the soundSetThrottle() calls after the soundSetSampleRate() calls
in LoadGame(), because the core calls soundInit() again after
soundSetSampleRate() wiping out the throttle value. This allows the
throttle setting to work with xaudio on startup and game loads.

TODO: the throttle config setting only works correctly for the xaudio
driver at the moment, it needs to be implemented for other sound drivers
and eventually moved out of the sound drivers altogether.
2017-03-04 21:53:35 -08:00
Rafael Kitover 88d15c6ec8 partial fix for disabling pausing when linked #83
Check if link mode is active in GameArea::Pause() and refuse to pause if
it is.

Remove the check for the app not having focus with pauseWhenInactive
enabled in GameArea::OnIdle() as this is now handled in
MainFrame::OnActivate() (which receives focus events) since f10e2e99.

Revert 13f5afa9 which tried to check for link status in
MainFrame::MenuPopped() because it was completely wrong and the link
check is better done in GameArea::Pause().
2017-03-04 21:16:14 -08:00
Rafael Kitover d1918c12f4 fix clipped game area in GL fullscreen #89
Trigger OnSize in the drawing panel after setting the geometry and
calling Layout(). I'm not sure what exactly broke but this seems to fix
the issue for the time being.

Also do a bit of very minor refactoring, change some calls to GetSize()
to GetClientSize() and simplify GLDrawingPanel::OnSize(ev&), tested to
work fine in wx 2.8.
2017-02-28 17:16:46 -08:00
Mystro256 fa1e13e606 Use prefix add operator for non-prim types
Typically yields better or equal performance. Sometimes compilers don't
optimizer out keeping the previous values (not needed for only adding 1)
2017-02-28 15:04:56 -08:00
Mystro256 7c06968557 Typo, only 10 recent accels 2017-02-28 15:04:56 -08:00
Rafael Kitover 4d12fcda10 fix Mac linker script for @rpath libs (like SFML)
Homebrew SFML links itself with @rpath/ instead of the dylib path,
update the mac linking and bundling script to handle that case, also
move it from src/wx/tools/osx to tools/osx now that wx is the primary
port.

This fix is temporary and I will write a better one that takes
DYLD_LIBRARY_PATH and such into account, but will suffice for linking
Homebrew libs for now. The script needs more work in general.
2017-02-24 12:24:20 -08:00
Rafael Kitover 095b48aabf minor fix for Ubuntu 14 (cmake)
Check that the CMAKE_VERSION is 3.0 or greater when setting the CMP0043
policy to NEW. The Ubuntu 14 cmake which is 2.8.12 throws an unknown
policy error otherwise.
2017-02-21 16:47:31 -08:00
Rafael Kitover 6a7d49419c initial Wayland support #72 #76
Disable OpenGL support under Wayland because wxGLCanvas segfaults, and
fix an issue with drawn frames not appearing.

If the user has opengl as the render method in their config, it will not
be changed, but at runtime will be set to simple under Wayland.

To fix the issue with frames not being drawn, Call Refresh() to queue a
PaintEv from DrawArea(data) instead of calling DrawArea(device_context)
directly.

Also remove the DrawOSD() call from PaintEv, this was causing the OSD to
sometimes show up twice in one frame, because DrawArea(data) draws the
OSD directly on the frame data.

Add new files wayland.cpp and wayland.h with a bool IsItWayland() global
function. This uses a GDK (part of GTK) call to detect Wayland.  This
unfortunately requires linking GTK libs separately.

Add cmake code to detect the version of GTK used by the wx being linked
and link it as well. Add gtk2 and gtk3 dev packages to the code for the
supported linux dists in ./installdeps.
2017-02-20 13:20:09 -08:00
Rafael Kitover 13f5afa9c5 don't pause on menu open when link active #83
In the MenuPopped method (which received MENU_OPEN, MENU_CLOSE and
MENU_HIGHLIGHT) check that gba_joybus_active is not true before pausing
the emulator, so that if Link mode is on it will not pause.
2017-02-19 10:39:46 -08:00
Rafael Kitover 99c6c4f938 Merge pull request #74 from Mystro256/gccwarnings
- fix C++ only flags being used for C

- check if cheats/patches files load correctly
2017-02-13 01:26:22 -08:00
Mystro256 611bbd6707 Re-add missing installed icons (for linux) 2017-02-12 06:50:54 -08:00
Rafael Kitover 27d4f09fb4 add Mystro256 to developer list in About box 2017-02-12 04:49:06 -08:00
Rafael Kitover a493e0f85a remove updater code #71
Remove the "check for updates" and "Update ROM database" menu entries,
as well as the automatic update checking and all supporting code.

This fixes the issue with the emulator hanging without access to the
internet.

Updating code will be reimplemented in the future using something like
Sparkle. wxHTTP does not support redirects or https so is pretty much
useless now.

Also update the About box to bump copyright year to 2017 and change my
name to "rkitover", which is what I use on github, and mention other
contributors.
2017-02-12 03:47:29 -08:00
edorax fee89f1967 Fix build for MSVC. 2017-02-11 23:11:32 +08:00
Rafael Kitover b4ba9d9d65 set -std=gnu++11 globally for C++ only
Add -std=gnu+11 to CMAKE_CXX_COMPILE_OBJECT in the main CMakeLists.txt
to force the option for all C++ sources.

The right way to do this is to use a generator expression with
ADD_COMPILE_OPTIONS, but this is only available in cmake 3.3 and we must
maintain 2.8.12 compatibility to support Ubuntu 14.

This fixes the mac build (clang.)
2017-02-11 05:33:10 -08:00
edorax 2dc673c753 Fix the options of cl. 2017-02-11 15:48:19 +08:00
edorax 95e1a35d4c Use cl(the MS C/C++ compiler) instead of cc for MSVC build. 2017-02-11 14:55:45 +08:00
edorax f7186a6493 Move 'dependencies/msvc' inclusion to the CMakeLists.txt in top level. 2017-02-11 13:39:50 +08:00
Su Yong 4e096c127c Some fixes for MSVC. 2017-02-11 10:57:35 +08:00
Rafael Kitover 8754a8f6d8 fix cmake -G Ninja support
Use an explicit list of Wx XRC sources instead of a GLOB so that cmake
generators for other build systems such as Ninja work.
2017-02-10 08:22:58 -08:00
Rafael Kitover f10e2e9904 fix directsound loop on unfocus #45
Call GameArea::Pause and ::Resume in MainFrame::OnActivate based on
focus state if the pauseWhenInactive config option is set.

Also stop/play the primary dsound buffer in pause()/resume() in
dsound.cpp, not onlyu the secondary, this may not be necessary but it
doesn't hurt.
2017-02-09 07:30:54 -08:00
Rafael Kitover 6ecab805e0 fix game freezing on kbd input #54
Apparently in some configurations, holding a key on the keyboard makes
Wx stop processing Idle events, so the emulator does not run until the
key is released, freezing the game and ignoring the key.

Hopefully fix this by calling wxWakeUpIdle() from OnKeyDown() and
OnKeyUp().

Other Misc. Improvements:

- refactor process_key_press() to only return true if the system is in a
  pressed key state on key presses or a game key was released on
  releases and always true on double releases.

- call ev.StopPropagation() from OnKey* events for game keys, this may
  not actually do anything, but just in case.

- remove static OnKeyUp and OnKeyDown events from GameArea, these are
  connected to the DrawingPanel dynamically now.

- remove the dynamic_cast<>s from PaintEv/EraseBackground/OnSize event
  forwarders, since there is already a panel member to use.

TODO:

The state returned by process_key_press() is still not entirely correct,
if a joystick button is pressed, it will return true for a non-game
keyboard press, and it needs to return the correct state for double
releases.
2017-02-02 07:13:39 -08:00
Rafael Kitover 44382a71c5 fix openal.so loading issues on some dists #69
As suggested by @Mystro256, try:

wxDynamicLibrary::CanonicalizeName(wxT("openal"))+wxT(".1")

before just the canonical name for "openal" when trying to load the
library.

Also add a utility method to quietly try loading the library, because on
wx 2.8 wxDL_QUIET does not work.
2017-01-30 20:11:07 -08:00
Rafael Kitover 34e408ccb7 fix Debian 8 Jessie and Ubuntu 14 Trusty compat
Fix some porting issues to make everything work on Debian 8 "Jessie"
and Ubuntu 14 "Trusty":

- set cmake minimum version to 2.8.12, this is the Ubuntu 14 version

- combine C and C++ flags and add all of them using
  ADD_COMPILE_OPTIONS() without using generator expressions, which is a
  cmake 3.2 or so feature

- add -fpermissive to force some non-const type casts to compile on
  older versions of gcc

- add -std=c++11 for gcc to enable support on older versions of gcc

- check that the compiler supports -fstack-protector-strong before
  adding it, older versions of gcc do not

- fix the debian section of ./installdeps to include libpng-dev instead
  of libpng16-dev and add gettext for msginit etc.

- fix compat checks in src/common/ffmpeg.cpp and src/wx/cmdevents.cpp to
  check for libavcodec >= 56 instead of > 56, the Debian Jessie version
  is exactly version 56 . With the one exception of
  AV_CODEC_FLAG_GLOBAL_HEADER which is defined in later versions.
2017-01-29 10:14:34 -08:00
Rafael Kitover fdc389c280 fix wx 2.8 compat, debug logging works everywhere
Fix backcompat with wx 2.8. This involved writing
wxPositiveDoubleValidator and rewiring the DrawingPanel inheritance tree
and event handling mechanisms (because 2.8 does not have ->Bind, only
->Connect which is less flexible.) As a result all the event handling
has been gathered into GameArea and the affected code is somewhat
cleaner. 2.8 support is untested on Mac because it requires 32 bit libs
and Carbon.

Add support for cross-compiling for windows using the Fedora MinGW
packages in ./installdeps.

Check for OpenGL support in the wx library being linked, this was
necessary because the Fedora MinGW wx library does not have OpenGL
support.

Remove vbamDebug() in favor of wxLogDebug(), and add an override for it
so that it works in non-debug builds of wx as well as on Windows. Turn
off buffering on stdout and stderr on startup so that debug logging
works in msys2/cygwin mintty as well.

On Windows, build a console binary for debug builds.

Update README.md to reflect Fedora MinGW support and debug logging
support.

Add -Wextra to cflags for debug builds.
2017-01-25 10:53:05 -08:00
Mystro256 e451ce09dd Missing include, fixes gcc warning 2016-12-30 10:48:05 -05:00
Rafael Kitover e2e4105dcd remove src/wx/VBA.ico, dup for src/wx/icons/VBA.ico 2016-12-21 17:10:03 -08:00
Rafael Kitover d06e7afceb full support for cross-compiling to win32 with mxe
Fix all cmake issues related to building for win32 with mxe.

Add support for ./installdeps win32 on Debian/Ubuntu using the mxe apt
repository.

Details:

* default to ENABLE_LTO=OFF on mxe

* set SFML_STATIC_LIBRARIES=TRUE on mxe

* fix the libintl/gettext checking logic

* fix the git dependencies submodule checking logic, and check that it
  triggers for mxe

* revert FindSFML.cmake to upstream version, works fine with mxe

* make 'win32' an alias for the 'MinGW-w64-i686' target for
  ./installdeps, add support for mxe apt repository for Debian/Ubuntu

* change bin2c related cmake code to compile the tool on the host always
  even when cross-compiling

* copy src/win32/res/VBA.ico to src/wx/icons since src/win32 has been
  removed

TODO: generic mxe installer for other unix-likes
2016-12-21 13:02:55 -08:00
Mystro256 774719ddf6 Appdata fixes
Note that metadata_license is the license of this specific file, apparently
it's not allowed to be GPL, CC-BY-SA-3.0 is close enough.
2016-12-21 09:14:10 -05:00
DoctorWho11 33febfb4ba add old resources that were in the win32 folder that the wxwidgets interface uses on windows 2016-12-20 17:56:05 -05:00
Rafael Kitover dea31e52e9 fix SDL2 include in 534c4da
For SDL2 includes are specified as:

```cpp
```

rather than as:

```cpp
```

without the `SDL/` prefix, this was causing a compile error.
2016-12-19 02:15:44 -08:00
drysyle 534c4da649 Rewrote joystick hat code to fix diagonal issues 2016-12-18 15:25:18 -08:00
Zach Bacon f7f67ff6f9 Fixed compiling without sfml. 2016-12-14 16:52:45 -05:00
Rafael Kitover c2a23a9ffe check for RAW_CONTROL only on macs in switch stmts
On e.g. Windows WXK_RAW_CONTROL == WXK_CONTROL so having both in a
switch statement is compile-time error, so wrap the checks for
WXK_RAW_CONTROL in an #ifdef __WXMAC__ .
2016-12-14 06:23:02 -08:00
Rafael Kitover 8c309eaaf4 fix modifier-only game keys
Fix using modifier keys such as SHIFT or CONTROL by themselves as game
keys.

Modifier keys are sent as a special keycode e.g. WXK_CTRL along with the
modifier flag, however on key release the keycode is sent but the
modifier flag is not. So check for modifier keys in process_key_press()
and always set the modifier flag so that release events are recognized
correctly.

Fix support for RAW_CTRL on Mac (which is the real control, while the
Command key is mapped to CTRL.)

Also disable the debug message emitted by wX when our modifier-only key
parsing code runs.

TODO: map modifier key names on Mac to the actual keys rather than the
wX names such as RAWCTRL.
2016-12-14 00:26:54 -08:00
Rafael Kitover a60d24e91a workaround wX 3.1+ key accel string parsing bug
In wX 3.1+ the behavior of wxAcceleratorEntry::ToString() and
wxAcceleratorEntry::FromString() has changed and the resulting string
can no longer round-trip through these methods.

Use a lookup table based on an internal data structure from the wX
source code to translate the "display name" of some keys to the regular
"name" as a workaround for now.

This allows at least the default keybindings to work and not throw an
error on startup.

TODO: standalone modifiers as game keys are still broken.
2016-12-13 15:08:55 -08:00
Rafael Kitover d5020b905c fix wX XRC for wX 3.2
Some sizeritems in horizontal box sizers had the wxALIGN_RIGHT flag,
which makes no sense in horizontal sizers, since they allow only
aligning things vertically. This was throwing XRC errors on startup.

Remove the erroneous wxALIGN_RIGHT flags from the XRC.
2016-12-13 10:03:38 -08:00
Zach Bacon 0e9fb98393 Merge pull request #52 from Mystro256/master
Various fixes
2016-12-10 19:50:19 -05:00
Mystro256 1af42f486c Use full name for wx appdata 2016-12-10 19:34:16 -05:00
Mystro256 8baa415848 Add linux appdata and fixes
Desktop files aren't installed for linux by default
2016-12-10 19:05:30 -05:00
Rafael Kitover 0e6c1b66e3 Quartz2D display rendering driver for Mac
Implement a Quartz 2D (aka Core Graphics) output renderer for the Wx
interface as a subclass of BasicDrawingPanel called
Quartz2DDrawingPanel.

Split BasicDrawingPanel's DrawArea() into DrawArea() and DrawImage(),
with DrawImage() receiving both the wxPaintDC and the wxImage, the
wxImage is created with a direct pointer to the frame buffer when
possible (24bpp).

Implement Quartz2DDrawingPanel in macsupport.mm based on the code here:

http://www.cocoabuilder.com/archive/cocoa/309165-how-to-quickly-paint-to-cocoa-view-from-bitmap-in-memory.html

and here:

http://stackoverflow.com/questions/2261177/cgimage-from-byte-array

the GetData() method of wxImage is used to avoid copying the frame
buffer.

Add RND_QUARTZ2D to the renderers enum and update all config stuff and
the XRC to support it. As well as the DrawingPanel instantiation code in
GameArea::OnIdle().
2016-12-09 13:06:59 -08:00
Zach Bacon d35d00f650 Added Caelum to the list 2016-12-03 09:01:36 -05:00
Rafael Kitover 7f6374356d rename 'Fullscreen filter' to 'Display filter'
Since filters apply to both window and fullscreen mode, rename the
config option 'Fullscreen filter' to 'Display filter'.
2016-11-23 03:56:30 -08:00
Rafael Kitover 3af0c7ff51 reorganize display config panel
Rename "Advanced" page to "Basic" and move to the first page instead of
last.
2016-11-23 03:49:07 -08:00
Rafael Kitover 790c9e13bd update mac link script to 1.0
This version is roughly twice as fast.
2016-11-23 03:07:44 -08:00
Rafael Kitover 55f6e17f0d compile/link flags improvements
* Bump minimum cmake required to 3.3.2, to make sure generator
  expressions work.

* Force CMAKE_BUILD_TYPE to "Release" if unset, not sure if this
  actually works.

* Merge the older compile flags block with the new one and use generator
  expressions to make sure the relevant flags apply only to C, C++ or
  nasm.

* Add -lssp to the end of the link commands for the -fstack-protector*
  options, this is only needed/done for gcc.

* Add -lversion and -limm32 to SDL2_LIBRARY (Zach asked for this.)

* Builds on msys2 again!
2016-11-20 11:11:52 -08:00
Zach Bacon 0ba8166467 Moved all filters into interframe.cpp file, original code by EmporerArthur 2016-11-19 20:43:07 -05:00
Rafael Kitover 13196c0748 update to latest version of bin2c.c
I maintain it here:

https://github.com/rkitover/bin2c

In terms of functionality, this version is pretty much the same as the
original, just nicer argument handling, a usage screen, etc.
2016-11-18 09:08:09 -08:00
Rafael Kitover 3c30d59aba msys2 build improvements
* Enable ffmpeg by default only on linux and msys2, it will be disabled
for normal windows builds and on mac.

* Set SFML_STATIC_LIBRARIES only for normal non-msys2 windows builds,
because msys2 does not currently have static versions of the SFML
sub-libraries, e.g. system, network, etc.. Dynamic linking works fine
for now.

* Fix quoting for -DLOCALEDIR, on windows spaces were causing errors in
make on msys2.

* Update to upstream FindSFML.cmake .

* Add an ./installdeps-msys2 script to install all necessary tools and
libraries on msys2 for building both 64 and 32 bit windows Wx binaries.

* Add the dependencies/mingw-xaudio/include directory to
INCLUDE_DIRECTORIES so that XAudio compiles on msys2, as mingw-w64 does
not currently have XAudio headers. Also check that the user pulled the
git submodule in the process (the ./installdeps-msys2 script does this
for you.)

TODO:

* Generalize ./installdeps to work on more platforms.

* Make console Wx app in debug mode so that debug prints will work.

* Fix game keyboard input for msys2 builds.

* Add HiDPI support for Windows.

* Fix the -D*DIR defines to have the correct paths on windows.
2016-11-14 10:56:50 -08:00
Rafael Kitover 10fd7f926e enormous speedup for compiling Wx resources
Replace bin2c.cmake script with one written in C and compiled as an
intermediate target.

The C version is roughly 12000 times faster.

On msys2, the cmake version takes 7.5 minutes on this system, while the
C version takes 0.037 seconds.
2016-11-13 14:31:34 -08:00
Zach Bacon 9e0c8cec8b Fix compiling d3d 2016-11-08 09:15:52 -05:00
Rafael Kitover 30f80ab22b fix wx GL viewport + build improvements
Add GetRealPixelClientSize() method to HiDPIAware and implement using
wx GetClientSize() in panel.cpp for the generic version, and using
convertSizeToBacking: in macsupport.mm .

Add an AdjustViewport() method to GLDrawingPanel that sets glViewport()
using GetRealPixelClientSize(), and call it for the SIZE event. Debug
print the viewport size here instead of in DrawingPanelInit().

Build improvements:

* default to Cairo off for all platforms, currently libcairo2-dev does
  not install on Ubuntu

* default to ON for ENABLE_LINK and ENABLE_FFMPEG (for game recording),
  this will allow for more fully-featured default builds

* do not set SFML_STATIC_LIBRARIES on Mac because this is currently
  broken

* fix the Mac bundling/linking script to deal with links in dependent
  libs that already use @rpath (very minor change.)
2016-11-08 04:51:26 -08:00
Christopher Snowhill 63b086af20 Merge pull request #37 from rkitover/wx_accels_with_modifiers_fix
fix wx kbd accels that are game key + modifier
2016-11-06 15:42:29 -08:00
Rafael Kitover 491cef4872 fix wx kbd accels that are game key + modifier
Pass the keyboard modifiers to process_key_press so that it only
registers a game key if the modifiers match. That is, if e.g. ENTER is a
game key, then ALT+ENTER gets passed to other Wx controls and does not
register as a game key.
2016-11-06 14:48:05 -08:00
Rafael Kitover 981026dc80 fix Xcode project generation via cmake
Move Objective-C++ Mac code for Wx into macsupport.mm with stub methods
in panel.cpp, and stop compiling all C++ as Objective-C++.

cmake -G Xcode # now works fine
2016-11-06 14:09:50 -08:00
Zach Bacon ecc6f7c3c6 Default to OpenAL and OpenGL on linux 2016-11-03 19:47:00 -04:00
Rafael Kitover 01200fadbd Mac OS X 10.7 (Lion) build and runtime support
Make a custom cstdint.h header file that includes <tr1/cstdint> if
<cstdint> is not available, because the clang 3.x used on Lion does not
have it. Change all references to <cstdint> to use it instead.

Add missing OpenGL header for older OS X in sdl/SDL.cpp .

When calling HiDPI methods, use respondsToSelector: to check if the
methods are available first.

Fix the bundling/linking script to support multiple copies of the same
dylib with different versions. Necessary to include both the Lion system
libpng and the brew libpng. Including the system libpng is necessary
because it is removed in later versions of OS X.
2016-11-03 10:49:13 -07:00
Rafael Kitover ba043f4f97 fix Mac post-build bundle/link broken in a775cc4
Instead of checking if CMAKE_BUILD_TYPE is "Release", check that it is
**NOT** "Debug", because by default CMAKE_BUILD_TYPE is empty.
2016-11-02 19:05:18 -07:00
Rafael Kitover a775cc409f fix kbd controls on Mac + misc.
After creating the drawing panel, call SetFocus() on it and use
Connect() to bind keyboard events from it. Add the wxWANTS_CHARS flag to
all DrawingArea subclasses so that wxEVT_CHAR_HOOK can be used instead
of wxEVT_KEY_DOWN, because it is more general and catches more keys.

Change the process_key_press function to return a bool indicating
whether a game control is currently pressed or not, this is used in the
key events to determine whether the event should be propagated or not.
If in a game key, do not propagate the event, otherwise it hits one of
the other controls and generates a beep sound.

The menu open/closed/highlighted events had to be turned off for Mac,
because the menubar is catching all keyboard events for some reason even
before they reach the drawing panel event handler. So on Mac the game
will not be paused when the menu is being used, this is not really a big
deal and can be fixed later.

Other improvements:

* do not bundle and link dylibs when CMAKE_BUILD_TYPE is not "Release",
  this makes for quicker debug builds

* finally make a generic PaintEv for the DrawingPanel abstract base
  class using dynamic_cast<> and Bind(), unfortunately this is not wx
  2.8 compatible

* set the default audio_buffers to 10 instead of 5, this completely or
  almost completely fixes sound stuttering during normal game play on
  Mac with OpenAL

* spew path info on startup only once
2016-11-02 18:14:58 -07:00
Rafael Kitover d18afb982f support for fully independent .app build on Mac
The resulting Mac wX .app build is now completely independent and
redistributable, only needs to be codesigned.

Necessary dylibs are bundled and linked in a POST_BUILD step using
third_party_libs_tool (included) for which I created a separate repo
here as well:

http://github.com/rkitover/mac-third-party-libs-tool

Turn off Cairo on Mac because it does not work for now.

Set RPATH on the executable to @loader_path/../Frameworks, the bundling
tool also does this.

Update .gitignore for Finder .DS_Store files.

TOOD:

* write a ./quickbuild for Mac and other platforms such as msys2 and
  linux
2016-10-27 22:06:06 -07:00
Rafael Kitover 2d9ec99c11 Mac build improvements
Move closer to allowing an "out of the box" distributable build for Mac:

* fix the icon for the .app

* link SDL2 statically, a PR has been sent to the original repo here:
  https://github.com/tcbrindle/sdl2-cmake-scripts/pull/9

* link SFML statically

TODO:

For a releasable build on OS X, system libs must be linked
dynamically while third party libs are linked statically or bundled. The
goal is to link them statically.

The two remaining libs that need static linking are PNG and wX.

For PNG a similar approach to the one used for SDL2 using pkg-config
should work fine and be simple to implement.

For wX things are more complicated. The default build of wX does not
include static libs, I will need to submit a PR for Homebrew to change
the default build to include both dynamic and static versions.
2016-10-26 16:58:21 -07:00
Rafael Kitover d075bacf94 fix DisplayConfig panel brkn in 7a7a72f
Change the Scale control in the DisplayConfig dialog from a SpinCtrl to
a TextCtrl (for a simple text field) because GenericValidator does not
support using a double* with a SpinCtrl.

Also force adjustment on minimum size and resize the window when
necessary on panel creation, so that when the user sets the value
higher, the window size automatically adjusts.
2016-10-24 10:02:44 -07:00
Rafael Kitover 0192d9a362 simplify DrawingPanel classes w. dynamic_cast<>
Use dynamic_cast<wxWindow*>(this) in the DrawingPanel abstract class to
implement GetWindow() and Delete() so that all concrete classes do not
have to duplicate the code.
2016-10-23 11:38:54 -07:00
Rafael Kitover d543217f6a fix backcompat on unix for config brkn in 7a7a72f
Only load config files with the app name set to "visualboyadvance-m" on
Windows and Mac, on unix keep the default of "vbam" for now so that
users' ~/.vbam directories are found correctly.

TODO:

* migrate all of this properly to XDG paths on unix, giving users the
  option to move their config
2016-10-22 17:26:05 -07:00
Rafael Kitover 7a7a72f2bd Mac OS X HiDPI fixes + other misc
Use a high-res surface on HiDPI (e.g. retina) Macs for the OpenGL
renderer, and scale window accordingly. Also fix fullscreen toggle not
working in HiDPI mode. And some other stuff.

Aside from the .app not being linked statically, the app is now fully
functional on Mac and ready to ship.

Full change details:

* add -DDEBUG or -DNDEBUG based on CMAKE_BUILD_TYPE (-DNDEBUG for
  Release and -DDEBUG for Debug)

* properly search for homebrew/macports/fink directories, and only add
  them if they exist

* fix building with wx debug support, when available

* use explicit OpenGL context on Mac too for new versions of wx

* add main_frame pointer in GameArea back to MainFrame, and a
  SetMainFrame(MainFrame* parent) public method to set it in guinit

* add full support for reading and writing double value config options
  (the GUI still needs to be updated for options that can take doubles,
  such as video_scale)

* change video_scale option (Display/Scale) to a double, putting a
  double value such as 3.6 in the config file works correctly

* add a HiDPIAware mixin class for GameArea and DrawingPanel, with the
  method HiDPIScaleFactor which returns the current window's
  backingScaleFactor

* change the GameArea sizing methods (DelBorder(), AdjustMinSize() and
  AdjustSize()) to divide the window size by the
  HiDPIAware::HiDPIScaleFactor so that the window is scaled properly

* change GameArea::ShowFullScreen to ignore fullscreen events for a
  maximized window on Mac, because maximized windows on OS X are
  actually native fullscreen windows

* change scale variables to double from int, and use std::ceil() to
  round scaled pixel or memory size values

* make a default base class DrawingPane::DrawingPanelInit() virtual
  method, call by all concrete class constructors based on the did_init
  flag

* call setWantsBestResolutionOpenGLSurface:YES on the view backing the
  wxGLCanvas for the OpenGL renderer (GLDrawingPanel) to get a high res
  OpenGL surface in HiDPI mode

* remove GLDrawingPanel::OnSize event, the OpenGL viewport resizes
  automatically without the need to call glViewport()

* do not hide the mouse pointer if the main frame has menus or dialogs
  open

* add variadic vbamDebug(const char* format, ...) function, active only
  #ifdef DEBUG, which sets the wx log target to STDERR and logs a
  message to it

* use full name of app "visualboyadvance-m" instead of "vbam" when
  getting configuration paths, this way the config is saved to
  ~/Library/Application Support/visualboyadvance-m rather than
  ~/Library/Application Support/vbam

* listen to the MENU_HIGHLIGHT_ALL event as well, as an extra way to
  check when the menus are open

* add public MainFrame::SetMenusOpened(bool state) method to force the
  main frame to change the internal menus_opened state, this is
  necessary because in HiDPI mode on Mac the keyboard accelerator for
  toggle fullscreen sends a menu open event, but not a menu close event,
  so on switch to fullscreen the state is changed to menus closed and
  the emu is unpaused

TODO:

* GUI option to change toggle fullscreen behavior between native and
  non-native fullscreen on Mac

* GUI support for double config values like Display/Scale

* add HiDPI support to simple renderer

* fix SDL sound, or disable the option

* fix Cairo suport on Mac, or disable the option

* use dynamic_cast<> to implement GetWindow() for DrawingPanel instead
  of pure virtual method, likewise for Delete()

* link .app statically by default so it can be shipped

* add Homebrew formula
2016-10-22 05:47:27 -07:00
Rafael Kitover 61b1af9e16 rebind toggle fullscreen on mac
On OS X, the F11 key is by default bound to "show desktop", so is a poor
choice for the "ToggleFullscreen" accelerator.

The default key combo to take apps fullscreen should be Ctrl+Cmd+F
according to:

https://support.apple.com/kb/PH18744?locale=en_US

Fortunately, this was very easy to fix by using the "platform" attribute
in MainMenu.xrc .

NOTE: this does not give us "real" OS X fullscreen yet, where the app is
on its own space, like native fullscreen apps. In the future it would be
nice to add an option to do this.
2016-10-18 07:02:47 -07:00
Rafael Kitover 98e82247fc make OpenGL default render method on OS X
Currently the "simple" render method is way too slow on OS X, while
Cairo is completely broken. The OpenGL renderer, on the other hand, runs
with almost no stuttering.

Also fix dangling icon file after OS X build.
2016-09-22 11:00:47 -07:00
Rafael Kitover cc7394f730 improve OpenAL support on Mac and make it default
Fix the dynamic library path for OpenAL to the framework included with
OS X.

Make option initialization set the AudioAPI to OpenAL on mac by default,
since SDL sound is currently completely broken.

There is a lot of stuttering, will have to look at that next.
2016-09-20 05:24:25 -07:00
Zach Bacon 03655a465f
Fix some compile issues and desktop launcher issues 2016-09-03 17:07:30 -04:00
Zach Bacon be25a2155b
This should fix the update issue, I'll release a test binary soon. 2016-07-31 09:30:16 -04:00
EoD 6612d34ddf Fix SDL.h includes
See comment in FindSDL2.cmake:
 Note that the header path has changed from SDL2/SDL.h to just SDL.h
 This needed to change because "proper" SDL convention
 is #include "SDL.h", not <SDL2/SDL.h>. This is done for portability
 reasons because not all systems place things in SDL2/ (see FreeBSD).
2016-07-31 00:11:21 +02:00
EoD 645be4522c Add missing wxWidget includes 2016-07-30 23:56:17 +02:00
EoD 6ce43f90b9 Fixes build issue if VERSION has not been defined 2016-07-30 23:55:57 +02:00
Dorian Wouters 31391e090c
Kill common/Types.h, replace its old typedefs w/ standard types
Fix includes in files using standard int types
Fix wxWidgets UI includes
Silence some unused variable warnings in GBA-arm.cpp macros
2016-07-29 11:07:11 +02:00
Dorian Wouters 37f0e75c45
Fix standard int types, prefix gb {C,H,N,Z}_FLAG with GB_ 2016-07-29 09:45:38 +02:00
Zach Bacon 1944613131
gb folder is done, next up gba, once this is all up I'm going to look at enhancing the cores 2016-07-09 11:41:31 -04:00
Zach Bacon 5bf44d19be
updated standards to webkit standard 2016-07-08 19:59:29 -04:00
Markus Kitsinger (SwooshyCueb) 57c619ca13 Add some header and resource files to CMakeLists.txts (Core+WX)
This makes these files show up in generated CodeBlocks projects, which
makes life easier for folks who import into QtCreator.
2016-06-07 15:26:53 -05:00
Markus Kitsinger (SwooshyCueb) 3f3c3859c1 Add some defines for ffmpeg 3.0 compatibility 2016-04-26 21:32:38 -05:00
Zach Bacon 7ed85a8c6f Finish committing the remaining gtk3 patch (wip) 2015-12-12 23:23:34 -05:00
Rafael Kitover 3d679c1469 more minor improvements for OS X build
Add Homebrew and MacPorts paths for findings headers and libraries.

Add -x objective-c++ to the C++ compile command so that conditionally
compiled ObjectiveC code for OS X can be supported.

Throw a fatal error if the user tries to enable ENABLE_ASM_CORE,
ENABLE_ASM_SCALERS or ENABLE_MMX on AMD64, as this is not supported yet.

If ENABLE_ASM_SCALERS is enabled, try to find a Homebrew or MacPorts
nasm before using the outdated XCode nasm.

For the future, if the user has only the old XCode nasm which does not
support 64 bit objects and the build is 64 bit, throw a fatal error.

For 32 bit builds with the old XCode nasm, use -f macho instead of -f
macho32, which is used if the version of nasm is > 2.0 .

Pass -DMACHO instead of -DELF and, on AMD64 (for the future) -D__AMD64__
for nasm on OS X.

Pass -D__AMD64__ to C++ compilation as well on AMD64, this will help
when we support AMD64 inline assembly.

Add support for automatically linking Homebrew keg-only gettext from
/usr/local/opt/gettext for ENABLE_NLS.

Fix copying Info.plist and vbam.icns to the .app bundle.

Add a key to the Info.plist to support sharp text on retina displays, as
per:
https://wiki.wxwidgets.org/WxMac-specific_topics#Retina_display_support

Set wxWidgets_USE_DEBUG to ON if CMAKE_BUILD_TYPE is "Debug". I'm not
sure this does anything or if I'm doing this correctly though.

Also set wxWidgets_USE_UNICODE to ON. Again, I'm not sure this does
anything or is in the right place.

Fix a bug in the config dir finding code in
wxvbamApp::GetConfigurationPath() updated in 8b8f2f7 to only use the
more top level dirs if there is a vbam.ini in them, not if they are
writable as well, and use the reverse order (starting with user local
dirs) to check for writable dirs and their writable parents. This fixes
a problem with the vbam.ini being written to the Plugins directory of
the .app bundle if it's writable instead of ~/Library/Application
Support/vbam as was intended.
2015-11-16 21:56:23 -05:00
Rafael Kitover 8b8f2f7a14 fix configuration directory on OSX
Write vbam.ini to ~/Library/Application Support/vbam on OSX.

Do not create ~/.vbam on OSX in common/ConfigManager.cpp .

Make get_config_path and wxvbamApp::GetConfigurationPath return
directories with a writable parent in reverse search order when no
writable directories in the current search order are available since the
directory is created in OnInit.

This prefers to create the user-local directory and write the vbam.ini
there.
2015-11-09 02:11:18 -05:00
DoctorWho11 3fac31acb5 Actually display the commit version. However may shorten it since it displays the full string. 2015-10-23 22:21:39 -04:00
DoctorWho11 1e1b1cc35c This should fix the issue of when users on linux run the install command and make not finding the proper binary. 2015-09-29 23:49:15 -04:00
DoctorWho11 68e67b7269 added xbrz 6x support to the wxwidgets interface, will take care of the gtk end shortly. 2015-09-19 04:08:13 -04:00
skidau 023d28a9cc OSX build fix by Juha Laukkanen. This one works with wxWidgets 3.0 and Cairo 1.14.2. 2015-07-11 10:34:27 +10:00
skidau 9f463f3850 Fixed the GBA sound filter options which were not getting applied. 2015-06-23 22:10:07 +10:00
DoctorWho11 2baea1b8cf hopefully this fixes things for cpack 2015-06-15 09:42:40 -04:00
DoctorWho11 65f7546798 rename exe and added more cpack stuff. 2015-06-15 09:00:47 -04:00
DoctorWho11 f5600cef71 setting the exe name and git hash 2015-06-15 08:21:44 -04:00
skidau e6231e9ef5 Switch to fullscreen after the game starts so that the GUI does not fall over. 2015-06-15 21:36:11 +10:00
DoctorWho11 6ad134c501 Enable Xaudio2 support by default 2015-06-12 08:56:20 -04:00
DoctorWho11 e67315c7f8 more build fixes 2015-06-12 08:45:19 -04:00
DoctorWho11 7ea54ecbf0 yet more changes to git (incomplete) 2015-06-12 08:39:47 -04:00
skidau 4d1310032e Clean up and dependency path fixes 2015-06-11 11:26:35 +10:00
skidau 0d4cfaf056 Readjust the window size if the status bar is hidden.
Show the OSD if the status bar is hidden.
2015-06-10 06:48:21 +00:00
skidau 8e57e850a4 Added an option to show/hide the status bar. 2015-06-10 03:11:34 +00:00
skidau e973e59666 Added an auto-update option (Windows only) 2015-06-08 06:25:19 +00:00
skidau 1dc399839c Added a "Check for updates" option to the Help menu. 2015-06-05 13:48:37 +00:00
skidau 811fc9a872 Fixed the crash that would occur if "Use BIOS file" was selected without a BIOS file specified. 2015-06-04 02:44:07 +00:00
skidau b410bc0314 Added portable mode. The emulator will attempt to use portable mode initially. If that fails, it will use the local user directories. The Directories settings now accept relative and absolute paths. Leave the directory blank to use the ROM directory.
Changed the logging to print to the status bar as well as the log file.
2015-06-03 13:36:54 +00:00
skidau 18d429c2c0 Fixed the joystick mapping getting converted to unicode in the conf file when they should not have been. 2015-05-30 06:02:23 +00:00
skidau 56a42ec50f Fix some lintian warnings. Patch by sergio-br2. 2015-05-29 22:11:38 +00:00
wowzaman12 5a6ed061a4 removed the cmake toolchain file, modified the cmakelists files to include an additional library to properly link with sfml and for linking statically with libgcc and stdc++ libs via mingw 2015-05-28 15:12:31 +00:00
wowzaman12 6a5cfd1073 merp, I goofed up somewhere... 2015-05-28 14:58:11 +00:00
wowzaman12 12a9c921c0 svn string shouldn't be translatable 2015-05-28 14:56:45 +00:00
wowzaman12 01d776b9e8 updates to version string for final builds 2015-05-28 14:36:05 +00:00
wowzaman12 df3e3b5e22 should fix compiling on debian based distros by forcing them to use wxwidgets 3.0 2015-05-27 23:04:20 +00:00
skidau 811893c250 Made the dialogs resizeable. 2015-05-26 02:09:28 +00:00
skidau 3f325573f5 Fixed the Game Boy system type selection not matching what was emulated. 2015-05-25 00:41:50 +00:00
skidau 2ec24487c3 Fixed the "Solar Sensor is broken" message that appeared in "Boktai - The Sun Is in Your Hand". Cleaned and formatted the code. Fixed a mistake where the RTC was not getting updated. 2015-05-24 13:30:31 +00:00
skidau fc197be2f0 Automatically disabled the OSD if there is a status bar visible. 2015-05-23 11:58:29 +00:00
skidau bca162d761 Fixed the child windows appearing under the parent window with "Keep window on top" enabled. 2015-05-23 01:56:33 +00:00
skidau d9e705d39a Relabelled the full screen menu items to be clearer in what they do. 2015-05-23 01:20:48 +00:00
skidau f2e6d4544f Added separate "Open GB" and "Open GBC" menu items. 2015-05-23 01:01:43 +00:00
skidau 8508f7aab6 Used the battery file size as an indicator of the save type unless overridden. 2015-05-22 15:11:28 +00:00
skidau e202a3994f Added mime types to wxvbam.desktop. Thanks to alucryd and sergio-br2. 2015-05-21 13:49:46 +00:00
skidau 759cf30a19 Moved the trace.log to the local config directory. 2015-05-21 13:31:34 +00:00
skidau 3f9d927103 Create the default config path on start-up and renamed the app "vbam" to be consistent with the sdl build. 2015-05-21 13:06:15 +00:00
skidau 5c6ef13d8c Changed the app name from wxvbam to VBA-M 2015-05-21 12:20:19 +00:00
skidau 5e562ca4b6 Fixed the "scrolled" assertion. 2015-05-21 12:16:20 +00:00
skidau 9340762719 Fixed the crash on boot that would occur with FFMPEG enabled. 2015-05-21 11:29:31 +00:00
bgk ead03a559a WX: Some strings were mistakenly marked as translatable 2015-05-20 18:46:54 +00:00
skidau 17282fd988 Fixed the crash that would occur if the audio backend is switched before a game is loaded. 2015-05-20 14:57:58 +00:00
wowzaman12 e4959e111f missed the aboutbox 2015-05-20 14:34:51 +00:00
wowzaman12 37d5e9e91c just changed a define to an existing one, when FINAL_VERSION is not defined it'll show svn string and when defined it will not show. 2015-05-20 14:29:53 +00:00
skidau 90249184a3 Resized some of the dialogs. Fixed the Cancel button on the GDB configuration dialog. 2015-05-20 14:11:53 +00:00
skidau cd6a2bd014 Updated the OSX icon and removed the extraneous .app suffix 2015-05-20 03:56:27 +00:00
skidau a79f006cf4 Reset the sound subsystem if the audio backend is changed. Fixed an array out of bounds error in the sound device selection. 2015-05-19 11:50:56 +00:00
skidau c39716f183 Used Sergio Benjamim's icon for the wx build. 2015-05-19 11:01:45 +00:00
skidau e287fb43c8 Removed the CR's from wxvbam.desktop. Thanks to Sergio Benjamim. 2015-05-19 10:07:22 +00:00
skidau cd47885083 Made the configuration dialogs stay on top so that they would not be covered by the main window. 2015-05-18 13:52:29 +00:00
skidau e8dddc9147 Added a "Keep window on top" option. 2015-05-18 13:11:58 +00:00
skidau 6020b6728c Added version to the About box. 2015-05-18 12:10:07 +00:00
skidau 77de248b71 Raised the maximum number of cheats allowed from 100 to 16384. 2015-05-18 05:37:37 +00:00
wowzaman12 fb83452291 merged sergio's icon patch for additional sizes. 2015-05-18 03:44:19 +00:00
skidau 4fdbbefe9b Made the Flash save type detection stricter. Made the SRAM detection override the EEPROM detection. Fixes the save type detection for Rockman EXE 4.5 - Real Operation (Japan), Breath of Fire - Ryuu no Senshi (Japan) and maintains the correct detection of the save type for Saibara Rieko no Dendou Mahjong (Japan).
Changed the wx save type detection to use the core version.
2015-05-18 03:35:37 +00:00
skidau 4116a72ae7 Added rewind feature to GTK version. Patch by Juha Laukkanen.
There are two config params:

rewind_count_max => how many blocks are reserved maximum, higher value leads to greater memory usage naturally but longer rewind log
rewind_interval => default interval is 165ms and higher value leads to more inaccurate rewind but longer rewind log

Also fixes memtell() telling incorrect size because data is not flushed.
wxWidgets front end having too small buffer for rewinds resulting overflows.
2015-05-18 00:58:16 +00:00
skidau 8d6f10107c Fixed auto-patch extension setting. Patch by Mook.
It appears that SetExt() doesn't require a leading period in the extension. This makes auto-loading of ups patches work (at least, for the one I tried).

Updated the comment too, for grepablility.
2015-05-18 00:26:21 +00:00
skidau a5592566c5 Added CHT cheat format parsing and file import.
Currently, this is in the wx front-end code.  Moving this logic into the core will bring this functionality to all front-ends.
2015-05-18 00:23:30 +00:00
skidau 303a326ddd Added the Official No-Intro Nintendo Gameboy Advance Number (Date) file for the release numbering. 2015-05-16 07:48:02 +00:00
skidau 5b61aace22 Added a "Update ROM databases" command to the Help menu which downloads and updates the No-Intro dat files. 2015-05-16 04:04:09 +00:00
skidau 516b819143 Added GBA ROM information parsed from No-Intro dat files. The No-Intro dats (Standard and Scene) are to be unzipped into the directory where the vbam.ini file is. 2015-05-15 14:53:52 +00:00
skidau f2274347ae Added AStyle 2.05.1 to the wx pre-build events and formatted the wx gui code.
Options used:
--style=allman --indent=tab=4 --align-pointer=type --align-reference=name --break-blocks --pad-oper --pad-header --unpad-paren --delete-empty-lines --break-closing-brackets --keep-one-line-blocks --keep-one-line-statements --convert-tabs --remove-comment-prefix --mode=c
2015-05-15 02:16:18 +00:00
skidau 3f0a5adf94 Added project files for the Windows wx gui build. Requires CMake in the path. 2015-05-14 12:37:15 +00:00
skidau 5da5feaac2 Ported the Game Boy Game Link code to TCP sockets. 2015-05-14 03:05:25 +00:00
skidau f0568f9945 Added a Transifex link in the Help menu.
http://www.transifex.com/projects/p/vba-m/
2015-05-12 14:24:17 +00:00
skidau 427c63aa3d Fixed an array out of bounds access in the debugger. Fixed a path problem with the wx vbam xpm icon. Patch by Mook. 2015-05-11 07:27:42 +00:00
skidau ef62b19775 Fixed the throttle selection on the SDL and XAudio2 backends. On the other backends, the throttle is a switch (selects between no throttle and throttling at 100% speed). Sync game to audio is now always enabled and the menu option has been removed. 2015-05-11 07:21:02 +00:00
wowzaman12 88dfc964a6 Good catch from Mook on irc. Thanks man. 2015-05-10 23:00:56 +00:00
wowzaman12 96788892c4 Fixed cmake to use find the proper xpm file in the xrc folder, also made the vbam core and fex library static to help with building on some platforms. 2015-05-10 22:54:19 +00:00
skidau 12b030cced Sorted the array of opts so that none of the options get invalidated by the option loader. Fixes the audio volume option which was not getting loaded from the ini. 2015-05-10 06:46:29 +00:00
skidau 011028ff7e Updated the .po files and fixed the icon path in the wx CMakeLists.txt 2015-05-10 04:27:13 +00:00
wowzaman12 03f96b800c added skidau and myself to the about dialog 2015-05-10 02:41:14 +00:00
wowzaman12 c9120d0da2 make it load the xpm icon instead, solves the iCCP profile issue 2015-05-10 02:35:55 +00:00
skidau df42b279ed Removed an extraneous include and added a SDL build check in the CMakeLists.txt 2015-05-09 14:09:29 +00:00
skidau 532a17a696 Combined the GBA and GB frameskip settings to go under Video Options. 2015-05-09 12:32:42 +00:00
skidau fd14110045 Removed the GBA washed colors option as it did not do anything.
Removed the broken full screen resolution selection.
Added some separators in the menu.
Fixed a path problem in the wx CMakeLists.txt
2015-05-08 14:39:54 +00:00
skidau 11c7949672 Fixed the wx CMakeLists.txt so that it can be built from a directory other than trunk 2015-05-08 08:25:54 +00:00
skidau 575d35b2c5 Relabelled the AGP Printer to Debug print 2015-05-08 07:18:31 +00:00
skidau 535bf04f58 Fixed the battery saving in Pokemon FireRed 2015-05-08 05:06:13 +00:00
skidau 590b59c92c Updated copyright year 2015-05-08 01:44:13 +00:00
skidau 88f21433b3 Hooked up the GB Printer option in the wx menu 2015-05-08 01:26:21 +00:00
skidau d3146f3011 Hooked up the GBA tilt sensor to the wx gui 2015-05-07 14:45:25 +00:00
skidau 5a2c4ba1d6 Fixed the SDL Joystick Hat diagonals in the wx gui 2015-05-06 13:40:03 +00:00
skidau 1818d34eb6 Fixed the GB and GBC BIOS options.
Moved the Skip BIOS option to the Emulation menu.
2015-05-06 12:04:21 +00:00
skidau ed3be72c5a Moved the Load State and Save State menus to the File menu.
Removed the "Welcome to wxVBAM!" status message.
2015-05-06 10:38:10 +00:00
skidau f7e352d5a4 Fixed the "Could not set current working directory" log that would appear on boot when there was no xrc sub-directory present. 2015-05-06 10:10:04 +00:00
skidau ebb31c25da Changed the range of the flashSize to be 0 to 1 2015-05-06 07:45:56 +00:00
skidau 12eac48ea3 Fixed the typos in the .desktop files 2015-05-06 07:21:27 +00:00
skidau c673cceaf7 NO_LINK wx build fixes 2015-05-05 13:37:56 +00:00
skidau e7fe42c555 Added the icon and rearranged the GB menu 2015-05-04 14:04:26 +00:00
skidau 54a768e6bc Removed most of the checkboxes from the dialogs.
Replaced wxvbam.xrc with the individual xrc files.
2015-05-04 13:45:52 +00:00
skidau 23c1096934 First cut of the rearranged wx gui menu to be more like the MFC menu 2015-05-04 06:37:34 +00:00
skidau a66ff4d552 Changed the core enum options to ints to make them consistent with the MFC gui; allowing the ini file to be shared between the two gui's. 2015-05-03 07:44:58 +00:00
skidau 710307479c Created a NO$GBA style OAM Viewer for the wx gui 2015-05-02 15:35:42 +00:00
skidau a42eac7f91 Moved the link functions to their own menu 2015-05-01 15:15:32 +00:00
skidau def2c61993 Round up the rom size to the nearest power of two before mirroring. 2015-05-01 13:27:07 +00:00
skidau d505399566 Converted the update_check macros to functions 2015-05-01 01:08:57 +00:00
skidau 9717255819 Added a separately configured directory for Game Boy Color games 2015-04-30 12:33:12 +00:00
skidau 0a5f44357e Made the wx GDB menus consistent with the MFC version. 2015-04-30 10:35:04 +00:00
skidau d1fe815f0c Added the e-Reader Load/Save commands to the wx gui menu. 2015-04-30 04:10:00 +00:00
skidau 171d29a16c Default the Open dialog to the directory of the currently emulated system. Made opening "Archives" the default in the File Dialog. 2015-04-30 00:30:07 +00:00
skidau 3f9d3fe4ca Copied the checkbox options from the dialogs into a temporary menu, Configure. 2015-04-29 13:48:04 +00:00
skidau cec028e05f Added the SVN rev to the window title. Used GBA resolution as the default window size. 2015-04-29 01:30:31 +00:00
wowzaman12 542d204a9c wxvbam prefers gnu++11 rather than c++11, should fix compiling on mingw. 2015-04-28 14:53:26 +00:00
wowzaman12 33be071615 wxvbam.xrc was missed in regards to xbrz filter support. 2015-04-28 13:32:25 +00:00
skidau 003a67e17d Fixed the HQ3x and HQ4x filters by forcing 32bit output. Hooked up the zBRZ filter in the wx build. 2015-04-28 12:19:15 +00:00
skidau d9a87f7a3d Fixed some of the filters in the wx build. Disabled multi-threaded filtering. 2015-04-28 10:23:54 +00:00
skidau 8d7be915e1 Rearranged the preferences alphabetically and a few other config fixes. 2015-04-28 04:15:26 +00:00
wowzaman12 27dc43c434 fix include for dsound.cpp 2015-04-28 01:00:19 +00:00
skidau 8e90ea0199 Missed TileViewer.xrc from the last commit 2015-04-27 22:56:45 +00:00
skidau f74f8e8e41 Split out and optionally load the xrc files if they are found in a "xrc" sub-directory. Changed the PropertySheetDialogs to NoteBooks in the split xrc files. 2015-04-27 10:53:18 +00:00
skidau 103d90d3f3 Moved the core parameters from the wx gui to ConfigManager 2015-04-27 08:32:03 +00:00
skidau b729a75012 Fixed the throttle in the wx build 2015-04-23 13:56:22 +00:00
skidau c30ce554ef Build fix for wx2.x 2015-04-23 10:00:14 +00:00
skidau 69c7f79e92 Fixed the wxDialogs on wx3.0.2 due to a change in behaviour with FindWindow. 2015-04-22 13:54:27 +00:00
skidau ad60e2cd67 Initial changes for compiling the wx build under Visual Studio 2015-04-22 00:02:29 +00:00
skidau dcfeb517dc Added a command line option to load e-Reader dotcode files 2015-04-18 15:35:46 +00:00
skidau 97d2f385d2 Separate the configured saveType from the runtime saveType 2015-04-18 14:52:58 +00:00
skidau 5a9015b3f0 Created a common configuration system. 2015-04-18 06:53:55 +00:00
wowzaman12 0cabbade12 Fix an operator precedence issue clang complained about. 2015-04-06 17:33:32 +00:00
wowzaman12 dc22721bac So, this fixes compiling using clang, fixed some tabulation issues, and allow the sdljoy pad compile against SDL2. Also fixed a small compiling issue when compiled against wx3 with the dsound driver. Seems we need the Wx c string to work, it's still not exactly wx3 primetime but it's a small start. 2015-04-06 17:31:18 +00:00
wowzaman12 6385359d6a keeps spitting out the wrong flags. 2015-04-06 01:28:26 +00:00
wowzaman12 3be56f6dbc re-added color depth checks. 2015-04-05 22:25:07 +00:00
wowzaman12 bcfd5ce4ce So yeah... seems -stdc++11 work for xaudio2.cpp 2015-04-05 14:56:03 +00:00
wowzaman12 80db6fc884 Getting close to fixing the xaudio2 driver for the wxwidgets frontend. 2015-04-05 14:12:26 +00:00
wowzaman12 6edf950d00 Again with the bracer issue. -_- But this should fix compiling. (Got to stop committing before testing.) 2015-04-05 13:53:25 +00:00
wowzaman12 a051754bf4 read kega fusion plugins in the wxwidgets interface and also started some work on xbrz support in the interface, will complete that later though. 2015-04-05 13:32:12 +00:00
skidau 55e1dad514 Integrated the VBA-SDL-H2 code into the GDB function.
This allows breakpoints, memory views and watches to be controlled from the GDB interface.  The VBA-SDL-H2 commands can be entered via the GDB monitor (type "help" into the monitor for a list of commands).  Made minor changes to the GDB interface so that the GDB port does not need to be entered every session.  A "Break on Load" option has been added allowing GDB to be connected before the ROM starts executing.

VBA-SDL-H2 credits: Labmaster, kenobi, DevZ, richq, JPAN, Griever
2015-04-02 05:53:57 +00:00
wowzaman12 7722a59670 Fixed a small issue (brace in a place where it wasn't needed) Next up XAudio2 interface in wxwidgets! 2015-03-28 19:46:27 +00:00
wowzaman12 4a0350260d Removed external filter plugins. In the future, just update the binary/library. 2015-03-28 18:31:09 +00:00
wowzaman12 6f3699c7aa Removed unneeded color depth checks and fixed some spacing 2015-03-28 17:48:38 +00:00
wowzaman12 843a90632f missed something that caused it to not properly load the xrc interface. 2015-03-28 16:15:25 +00:00
wowzaman12 025e466bff Removed yet another unneeded #define in wx/guiinit.cpp 2015-03-28 16:02:10 +00:00
wowzaman12 96f1de8ec9 Remove even more unneeded complex if statements 2015-03-28 14:47:33 +00:00
wowzaman12 c812fd6344 Got rid of a few huge if statements, just recreate the game panel every time after Display Properties closes. 2015-03-28 14:45:40 +00:00
wowzaman12 4b2ed80a4a Replaced another macro with a templated function. Should be able to use this function to replace a few more macros as well. 2015-03-28 14:41:25 +00:00
wowzaman12 f273c878b6 Removed yet another macro from src/wx/guiinit.cpp 2015-03-28 14:34:44 +00:00
wowzaman12 4257ae5be1 Fixed improperly sized dialog boxes 2015-03-28 14:11:03 +00:00
wowzaman12 ad13e1fb45 Try to be more informative than the default wx exception handler before terminating 2015-03-28 13:56:33 +00:00
wowzaman12 b07e5c63bf Make sure that all loaded xrc dialogs have the correct parent. This might be overkill, but shouldn't hurt. 2015-03-28 13:54:49 +00:00
wowzaman12 2d5c702a7f Another switch from wxDynamicCast to the normal c++ dynamic_cast 2015-03-28 13:44:47 +00:00
wowzaman12 535acbb240 Change a macro from using a special wx funciton to the regular c++ one 2015-03-28 13:43:40 +00:00
wowzaman12 13b97ac102 More work on trying to remove C macros 2015-03-28 13:41:45 +00:00
skidau 2b663259d8 wx build fix 2015-03-28 05:01:39 +00:00
wowzaman12 750fd8a6b4 oops should be copying those files into source dir not binary dir 2015-03-28 04:30:24 +00:00
skidau d42582090e Linux build fix 2015-03-28 04:08:30 +00:00
wowzaman12 00f630949c just missed a parameter. 2015-03-28 04:02:37 +00:00
wowzaman12 bf8098874a JoypadConfig is now working as it's own separate entity
Previously it was using macros that were hardcoded to look for a certain variable
2015-03-28 03:53:07 +00:00
wowzaman12 e97c32f5da Got rid of two unneeded C macros 2015-03-28 03:50:49 +00:00
wowzaman12 d858e35d01 Created a single template that does the same thing as several of the C macros 2015-03-28 01:52:20 +00:00
wowzaman12 432b296af1 Used a regex replace so at least some of the C Macros aren't hiding variables
Also renamed their inputs so it's easier to understand what's going on
2015-03-28 01:46:44 +00:00
wowzaman12 e8d55b2c06 Added more pointer error checking to the wxvbam build. 2015-03-28 01:33:12 +00:00
wowzaman12 1c76277272 Load dialogs the proper way 2015-03-28 01:30:36 +00:00
wowzaman12 07eb6564e0 Now fully use the error checking function instead of the C macro 2015-03-28 01:20:41 +00:00
wowzaman12 76ef5906a0 Move XRC pointer checking/error throwing to a templated function (More backporting from Arthur, next few commits will be importing his improvements) 2015-03-28 01:12:57 +00:00
wowzaman12 54eac49a59 WX: Changed some of the xrc loading handling and error handling (Courtesy of Arthur on github) 2015-03-28 01:08:52 +00:00
wowzaman12 5b26c209e9 missed a minor change. 2015-03-27 19:53:35 +00:00
wowzaman12 15d1ae5e3a changed the panel to have a black background when a rom isn't loaded. Also fixed compiling dsound driver in the wxwidgets interface via mingw-w64 2015-03-27 17:54:45 +00:00
wowzaman12 df505a78dd forgot the wxwidgets interface icons. 2015-03-27 17:49:26 +00:00
wowzaman12 dc3b921700 cmakelists changes, wxwidgets interface build fix to follow. 2015-03-27 17:48:42 +00:00
squall-leonhart ae88acca57 bgklink merged to trunk. 2015-03-20 14:23:14 +00:00
squall-leonhart 05794ee3e8 another tom harder patch, fixing some warnings in the gvbam and wxvbam 2013-06-17 04:17:12 +00:00
bgk 00791f6801 WX: Somewhat fix lan link. Advance wars won't link properly whereas it is working with mem link. 2012-09-02 14:26:22 +00:00
bgk cf02712b34 WX: Fix build with LINK enabled 2012-09-01 17:59:13 +00:00
kode54 4178854b85 Fixed a crash on Windows XP and older systems 2012-08-26 07:44:19 +00:00
bgk 41d22899e3 WX: Fix build on non-win32 2012-08-08 19:09:37 +00:00
kode54 d2e00a0085 Added device change notifier to XAudio2 outputs 2012-08-04 22:15:46 +00:00
thibeaz 2273a18e59 added shuffles patch for fixing wxwidgets interface build, unfortunetly still fails building on link enabling. but if disabled it will build and run. 2012-01-23 03:46:47 +00:00
squall-leonhart 2908c33111 shuffles magic mush...... trunk MSVC2010 buildfix 2012-01-20 22:03:27 +00:00
thibeaz 113f7c1f81 added the option to disable/enable xaudio2 support in the cmakelist since it was neglected the first time around, also going to be looking into expanding the sound settings dialog and enhancing it some as soon as I figure out some xrc specifics for wxPropertySheetDialog. 2012-01-16 18:44:25 +00:00
thibeaz 273bf93b7d in the EXECUTE_PROCESS command in the CmakeLists.txt file for the wxwidgets gui was missing the end bracket, this should fix it, next on the list is work on using ffmpeg as an external dependency and not need it as a requirement (hopefully), if it doesn't work, you can shoot me Squall 2011-06-30 01:54:32 +00:00
squall-leonhart c08726589d wx about box fix from darktjm 2011-06-14 13:38:10 +00:00
squall-leonhart a236fff312 apply the vba config file rename to the trunk, this has come about because older versions use some values slightly differently which would cause those versions to fail to work or have the wrong settings. 2011-06-13 15:46:20 +00:00
squall-leonhart 8e6a51211e all current vba-m Wx patches applied to trunk. 2011-05-25 11:55:46 +00:00