digarok / gsplus Goto Github PK
View Code? Open in Web Editor NEWModern cross-platform Apple IIgs emulator and tools based on KEGS
Home Page: http://apple2.gs/plus
License: GNU General Public License v2.0
Modern cross-platform Apple IIgs emulator and tools based on KEGS
Home Page: http://apple2.gs/plus
License: GNU General Public License v2.0
Similar dynamic linking issues to Issue #2 ...
./gsplus
dyld: Library not loaded: /usr/local/opt/freetype/lib/libfreetype.6.dylib
Referenced from: /Users/dbrock/Google Drive/appleiigs/rwiii/./gsplus
Reason: image not found
Trace/BPT trap: 5
Can resolve, if brew is installed, using brew install freetype
.
On my MBP, if I type the '[' key, I get a ']' key on the screen. The same for ']' (gets '[') and the corresponding shifted curly braces.
If user doesn't have SDL2 libs installed in correct location the error occurs:
./gsplus
dyld: Library not loaded: /usr/local/lib/libSDL2-2.0.0.dylib
Referenced from: /Users/dbrock/Google Drive/appleiigs/rwiii/./gsplus
Reason: image not found
Trace/BPT trap: 5
Either switch to App Bundle (probably better in the long run, though I morally disagree with Apple's stance on static linking), or try to static link.
I've heard this is possible on OSX with:
sdl-config --static-libs
I was comparing the SDL2 builds for the GSPlus experimental branch, which is where you seem to be working at this point. Here's a diff of a couple of vars files:
--- vars_osx_sdl2 2016-12-28 12:03:39.187811433 -0800
+++ vars_x86linux_sdl2 2016-12-28 12:03:39.187811433 -0800
@@ -1,21 +1,21 @@
TARGET = gsplus
NAME = gsplus
PERL = perl
-CC = clang
-LD = clang++
+CC = gcc
+LD = gcc
AS = cc
OBJECTS = $(OBJECTS1) $(TFEOBJ) $(ATOBJ) $(PCAPOBJ) sdl2_driver.o sdl2snd_driver.o
-ARCHS = ppc, i386, ppc64, x86_64
-# OPTIONS FOR COMPILING C SOURCE
-CCOPTS = -O2 -Wall -fomit-frame-pointer -std=gnu99 -DHAVE_ICON -DHAVE_SDL -DTOGGLE_STATUS -I/usr/local/include/SDL2
-# OPTIONS FOR COMPILING C++ SOURCE
-CPPOPTS = -O2 -DHAVE_TFE -DHAVE_SDL -DTOGGLE_STATUS -I/usr/local/include/freetype2 -I/usr/local/include/SDL2
+# C Compiler Options
+CCOPTS = -O2 -Wall -fomit-frame-pointer -std=gnu99 -DHAVE_SDL -DHAVE_TFE -DHAVE_ATBRIDGE -DTOGGLE_STATUS -I/usr/include/SDL2 -I/usr/include/freetype2
+# C++ Compiler Options
+CPPOPTS = -O2 -DHAVE_TFE -DHAVE_SDL -DTOGGLE_STATUS -DHAVE_ATBRIDGE -I/usr/include/freetype2 -I/usr/include/SDL2
-EXTRA_LIBS = -lSDL2 -lSDL2_image -lfreetype
-OPTS = -DGSPLUS_LITTLE_ENDIAN -g -O0
+
+EXTRA_LIBS = -lfreetype -lSDL2 -lSDL2_image -ldl -lm -lstdc++
+OPTS = -DGSPLUS_LITTLE_ENDIAN
SUFFIX =
-LDFLAGS = `sdl2-config --static-libs` -L/usr/local/lib
+LDFLAGS =
LDOPTS = -I.
EXTRA_SPECIALS =
There's some genuine changes there, but there's also some superficial differences. And some of the changes are things resolved by the use of pkg-config --libs sdl2 SDL2_image
or pkg-config --static --libs sdl2 SDL2_image
on Mac.
My suggestion then is to make those changes (and branching out to make similar changes for other files if they're still expected to work) as a first step toward making the build system ... more conventional. I dunno if you wanna go full GNU autoconf--I think you said before you weren't opposed to that, but IMO that's best done as a somewhat incremental process anyway.
When you press shift-F5, it is suppose to take a screenshot. The screenshot filename is supposed to be based on the config name.
Example, command line is:
./gsplus -config loderunner.gsp
Should take screenshots like:
loderunner0001.png
loderunner0002.png
... etc.
But when you don't pass a config name (which is valid to do because it searches for default configs like "config.txt"), it segfaults in function:
void make_next_screenshot_filename()
Now that we have cmake I should try to get those builds under Gitlab CI.
Ref: e37e50a
gcc -O2 -DHAVE_TFE -DHAVE_SDL -DTOGGLE_STATUS -DHAVE_ATBRIDGE -I/usr/include/freetype2 -I/usr/include/SDL2 -c -DGSPLUS_LITTLE_ENDIAN -I. printer.cpp
In file included from printer.cpp:43:0:
printer.h:57:10: fatal error: ft2build.h: No such file or directory
#include <ft2build.h>
^~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:131: printer.o] Error 1
No freetype? I can fix that.
Wait.
#ifdef HAVE_SDL
#include "SDL.h"
#include <ft2build.h>
#include FT_FREETYPE_H
#endif // HAVE_SDL
I think that's not how you C. :) FT_FREETYPE_H isn't set as a macro anywhere or anything. (It's also in imagewriter.h.)
Using GSPlus on Windows 10, with a 4K display (3840x2160), in full screen mode works, however, mouse movement does not track the display, properly.
Also, in lieu of this, can we get a window that can be resized arbitrarily? :)
-Thom
After configuring ethernet to be on (Uthernet slot 3) in GSPlus config and in TCPIP control panel, I attempt to make a connection from the TCPIP control panel (Marinetti 3.0 b9 with Uthernet 1.01 LL) and the GSPlus process goes away.
I'm trying to hit OpenApple-Control-Escape to reach the GS's control panel, and in Windows 10 it doesn't seem possible.
According to the docs, both Alt and F1 are recognized as the OA key. So...
When I hit Alt(OA)-Control(Control)-Escape(Escape), it just moves the gsplus window to the back of my active windows.
When I hit F1(OA)-Control(Control)-Escape(Escape), it opens the Windows start menu.
Am I missing something obvious?
Hello,
I see version 0.14 has been released on the website. Can you create a release/tag her as well ?
Thanks.
Okay, so this is kind of oddly specific. If you play Lode Runner with joystick controls (Ctrl+J to turn them on), you can move left, right, and climb ladders with the analog stick, but as soon as you make a hole with the buttons you get stuck there until you're hit by an enemy (or hit Ctrl+A). That is to say, you're not in the hole but rather standing next to it, frozen.
It does work okay with keyboard controls (Ctrl+K).
This is not just in the SDL2 driver, even the X driver seems to be a bit out of spec here:
Line 265 in 7f14207
I think it'd be nice to just remove these? Otherwise we may have to consider only doing SDL2 dialogs for now. This brings up the larger issue of debug display lines and other built-in text UI rough spots.
hangs or stuck when bitsybye tabbing to volume after s3/ram to s7
booting p8 2.5a7
in bitsybye stick on tabbing to volume s7/ram when it is s7/sys6
Attention I am a beginner, but interested in the apple II Gs.
Gsplus works but not very good with Catalina on mac floppy disk management 3.5 so I can not install Gsplus with Raspbian "Buster" there is a problem with "make" or "cmake" and if I want to install the package it there is an error with the instaleur. A complete image for Raspberry would be a good idea for the neophytes. thank you
First, thanks for the hardwork.. This is my go to A2 emulator, on multi host OSes! (I dabble in Linux/Ubuntu).
Now to my feature enhancement request. I just found a thing called RetroPi for my RaspberryPi, and have been playing with it this weekend. In that project there is the LinApple emulator. And a huge drawback of LinApple is the fact it's an A2e emulator and not a A2gs emulator! Early A2 games are fun,, but the //gs being absent from a project like RetroPi, is a glaring oversight. Leading to my feature request here.
My feature request: Integrate your great emulator with the RetroArch/libretro project. Which is utilized by RetroPi.
Keep up the excellent work and attention.
Paul
With a laptop touchpad, it's far too easy to right-click and alter the system speed. I'd love an option to disable this feature.
It's in adb.c. Search for adb_increment_speed. If I figure out how the configuration system works, I'll do it myself. For now, I've just commented it out in my build. :-)
It would be awesome if there was a way to increase the screen size to something in between the 1x default size and full screen. Double size would be a great start.
After a few days of using ORCA/C inside GSPlus for development, I have now come across an odd repainting issue that only affects PRIZM, but makes the whole environment unusable:
https://www.youtube.com/watch?v=ZdgiWtSPL1w&feature=youtu.be
WTF?
I have reinstalled GSPlus
reinstalled System 6.0.1 and ORCA
zapped the PRAM
etc..etc..etc..
But this problem persists and does not change.
WTF????
-Thom
It seems like you can only launch in windowed mode and hit F11 to fullscreen after it starts.
There are a lot of cases where it would be nice to be able to launch it and explicitly tell the emulator whether you want it to start in full-screen or windowed mode.
(Note: Scanline simulator is also a potential candidate for this.)
It may not be "wrong", per se, but you can cause an interesting hang with the following steps:
-start gsplus
-go to basic monitor (call -151)
-type "uuu" and hit enter (u is toolbox call I think)
System hangs and console logs a ton of "MVP but not native m or x!"
Now that may be exactly what the GS is trying to do (MVP in 8-bit mode). But would like to verify that a real system doesn't behave differently here.
After trying to turn ethernet on and Host FST on and failing, I've now got to the point where starting GSPlus on Windows 10 and trying to enter config after booting into Finder is killing the GSPlus process and it instantly goes away.
The documentation recommends the read-only strategy (see: Modulae) for config files.
This causes the emulator to continually whine about not being able to write config file after it tries to eject the disk.
At the least, let it fail gracefully.
Using "816/Paint" art program, can't use keys normally. Seems as though Open-Apple key is depressed. Example, hit the "O" key and the Open File Dialog opens which is supposed to be "Open-Apple + O".
I think it is probably more widespread. I've seen another issue with GSBug where stepping is messed up that might be related.
I know of one other program that was having issues, but I can't remember which one right now.
Vertical stripes are visible when running the emulator on a modern display.
I understand this technique was used to simulate more colours on a CRT because of hardware limitations.
Would it be possible for the emulator to show the intended colors instead of using this striping technique?
Here's a related discussion: https://groups.google.com/forum/#!msg/comp.sys.apple2/gKY7cFB55GQ/T7S48V-WMbEJ
Thank you for your work on GSPlus!
Here is the issue I have run into.
I have set s5d1 and s5d2 as shown.
When it asks for another disk such as tools or program I have not been able to drag it into the emulator or change the setting via F4 to set the disk the GS installer needs to continue.
I read the GSPlus Manual and could not find anything to resolve the issue.
If I remember correctly for actual hardware, you could daisy chain unto 4 drives.
If I am correct is this something that could be added to the emulator and or the config.gsp file to fix what I am finding with multiple disks required for a hard drive install.
Thank you.
Leon Sargent
Currently the code that parses all of the command line flags is in sim65816.c
. I suppose the original reasoning is that this is where those flags need to be set when starting the simulation. However, it's a crazy bad code smell. I'm almost certain that it would be better to move all of the config parsing out and make those global flags better defined outside of the simulator code.
In Windows it's impossible to enter the Apple IIgs control panel, because the key combination Alt-Ctrl-Escape (=Open-Apple-Control-Escape) is used by Windows to switch focus to another window. F1-Ctrl-Escape doesn't work either because Ctrl-Escape opens the Start-menu. Same thing in GSPort and KEGS32.
While Deb is nice, there is a paradigm for releasing emulators as prebuilt IMG file for Raspberry Pi. This would be a nice addition for GSplus releases.
Does this game works for you? http://www.whatisthe2gs.apple2.org.za/immortal-the
For me, that wizard keeps going down-right when nothing is pressed. People tell me to calibrate my joystick, but I'm not sure how to do it on windows 7. Had the same thing with ActiveGS. My joystick is very simple, 4 direction buttons, no sticks, 10 other buttons. Seems to work somewhat okay in other (not ][gs related) games, so it looks like an emulator bug.
I also have very little idea what those parameters in F4 -> Joystick Configuration are supposed to mean.
Reported via twitter from Marco Verpelli
"Zaxxon is a great game, but why is always in 1st position? Note also two missing mousetext characters. TY!"
https://twitter.com/MarcoVerpelli/status/831899919300624385
Hi @digarok
I was testing your current master branch (0.14rc) and was pleasantly surprised. I live in a terminal so I was tickled when I saw the ascii logo and structured formatting. I also like the icons for disk drive access.
Thanks
Listed instructions from your documentation.
Could I not just apt-get this
sudo apt-get install libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev
This seems to install a good amount of the SDL Library or is the accelerated Graphics specific to RetroPie and not in the packages above?
Thank you.
Leon Sargent
There is a big gap in what is supported via CLI, keyboard shortcut, and config options.
Would like to get all options supported everywhere possible (some emulator options are probably only adjustable prior to starting engine.) Also want 100% documentation coverage on all options, including supported platforms.
Closing the GSplus window on my Ubuntu box does not kill the gsplus process. I have to kill -9 it.
As per this post: https://about.gitlab.com/2016/07/29/the-basics-of-gitlab-ci/
We should start adding some sanity testing, but also consider how we want to do larger automated testing of the emulation itself.
I think for completion of this one, it would be adequate to at least run a CLI version check or something simple for feedback from the finished executable on each platform.
This can probably easily be built for older versions. Look into building against earlier SDKs.
Hi There,
I've attached an Xbox One controller to my MacBook Pro running 10.14.6 (18G87) and launch gsplus which seems to recognize the joystick. However, any game I try will respond to the joystick up until the moment I press a joystick button. The button press is recognized, but then no further input from the joystick appears to be registered.
Please let me know if I can provide any needed information.
Thanks,
Levi
The config dialog for choosing a Host FST location on Windows 10 is not working properly.
Selecting ../ multiple times in a row creates a path with lots of ../../.. but the file display does not go up more than once so I can't actually go higher and then choose other directories to use from those higher levels.
If I do select a directory, it displays in the path but then there's no way that I can see to exit the dialog and keep the selection I have made. If I hit ESC i return to the config menu but the choice is not kept. And there's a spurious inverse block appearing in the directory tree area too.
On Linux, gsplus has a dependency on readline, but this dependency is not documented or checked by cmake
[ 5%] Building C object bin/CMakeFiles/partls.dir/partls.c.o
[ 7%] Linking C executable partls
[ 7%] Built target partls
Scanning dependencies of target x_readline
[ 8%] Building C object bin/CMakeFiles/x_readline.dir/readline.c.o
/home/cas/src/gsplus/src/readline.c:90:10: fatal error: readline/readline.h: No such file or directory
90 | #include <readline/readline.h>
| ^~~~~~~~~~~~~~~~~~~~~
From the GSPlus Manual.
This section is really not clear other than there are possibly 3 config files, I have found 2. One in the application package config.txt and the other at User called config.gsp.
The one in the apps package appears not to change only the config.gsp in my user account.
I would submit to you a clarification on the Default configuration files section on page 10 of the PDF if you explain their purpose and how they are used.
I would really like to understand the difference between the two and how they are used as compared to Multiple custom configuration files which is a very clear section page 10 of the PDF.
Thank you.
Leon Sargent
Shouldn't the aspect ratio of the picture be 4:3 (which it isn't if you don't run fullscreen in a 4:3 resolution without -fulldesk)?
I guess the IIgs doesn't have square pixels. But I have never used a real IIgs so I may be wrong.
It looks like you've got the version in the window title bar, and the github source code version is 0.10a but the github binary release version is 0.13a. So maybe we're missing some source code. The github source code version doesn't seem to support host-fst, and GSplus deletes the g_cfg_host_path line out of the conf file upon startup. The github binary release version works fine. Thank you!
I built GSPlus from source on my Fedora laptop and tried running ./gsplusx in it's own folder, but got a segmentation fault. Not sure if it's an issue on my system or in the code, but nothing I've Googled has helped. Any ideas what could be causing this?
Full output:
Trying 'config.txt'
Parsing configuration file
Read: 262144 bytes of ROM
Patching ROM 03 smartport bug
RAM size is 0 - 900000 (9.00MB)
Preparing X Windows graphics system
Visual 0
id: 00000020, screen: 0, depth: 24, class: 4
red: 00ff0000, green: 0000ff00, blue: 000000ff
cmap size: 256, bits_per_rgb: 8
Chose visual: 0, max_colors: -1
Will use shared memory for X
Segmentation fault (core dumped)
For the SDL and Linux joystick drivers, the button detection code is in joystick_update rather than joystick_update_buttons. At least on my machine, this results in buttons not actually working.
I didn't look too deeply into why that's the case because I saw the empty functions and just assumed that they hadn't been implemented yet. Throwing the SDL code at the top so it has precedence over the Linux code and implementing joystick_update_buttons fixed the issue for me.
For the SDL driver, you can just cut and paste the button code from joystick_update to get the same effect. Looking at the code, it doesn't look like multiple joysticks are supported in the Linux driver, and I wonder if there's any reason to keep it over the SDL driver?
Actually, it looks like supporting two gamepads in the SDL driver would be trivial, but I don't actually have a second gamepad to test. At that point, all that platform-specific code could be dropped, unless I'm missing something.
Reproduce, enter monitor from boot.
enter 1
enter m
Result:
UNIMP WRITE to addr 0000cffe, val: 0084
UNIMP WRITE to addr 0000cffd, val: 0000
UNIMP WRITE to addr 0000cffb, val: 0086
UNIMP WRITE to addr 0000cffc, val: 0002
UNIMP WRITE to addr 0000cffa, val: 0084
UNIMP WRITE to addr 0000cff9, val: 0000
UNIMP WRITE to addr 0000cff7, val: 0086
UNIMP WRITE to addr 0000cff8, val: 0002
UNIMP WRITE to addr 0000cff6, val: 0084
UNIMP WRITE to addr 0000cff5, val: 0000
UNIMP WRITE to addr 0000cff3, val: 0086
UNIMP WRITE to addr 0000cff4, val: 0002
UNIMP WRITE to addr 0000cff2, val: 0084
UNIMP WRITE to addr 0000cff1, val: 0000
UNIMP WRITE to addr 0000cfef, val: 0086
... trimmed ...
UNIMP WRITE to addr 0000c0c5, val: 0000
UNIMP WRITE to addr 0000c0c3, val: 0086
UNIMP WRITE to addr 0000c0c4, val: 0002
UNIMP WRITE to addr 0000c0c2, val: 0084
UNIMP WRITE to addr 0000c0c1, val: 0000
WRite loc: c0bf
$
This is reproducible in the original KEGS emulator also. If you load Paperboy, after the title screen appears, the next screen (the newspaper) will come up slowly, line-by-line. The music is also affected and becomes drawn-out beeps.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.