rofl0r / puae Goto Github PK
View Code? Open in Web Editor NEWThis project forked from voorhees1979/puae
Amiga Emulator for *nix Systems
License: GNU General Public License v2.0
This project forked from voorhees1979/puae
Amiga Emulator for *nix Systems
License: GNU General Public License v2.0
PUAE --------------------------------------------------- PUAE tries to continue where E-UAE left off.. PUAE versioning is based on the merged WinUAE version.. Work until 2.8.1 was done by: Mustafa 'GnoStiC' TUFAN ([email protected]) GnoStiC disappeared from github a couple years ago, so I (rofl0r) am maintaining it now. GIT --------------------------------------------------- http://github.com/rofl0r/PUAE PUAE Binaries --------------------------------------------------- I don't supply binaries for any OS. You should also check FS-UAE: http://fengestad.no/wp/fs-uae and WinUAE: http://www.winuae.net PUAE Ports (those i'm aware of) --------------------------------------------------- Pandora : http://apps.openpandora.org/cgi-bin/viewapp.pl?/Emulator/puae.inf XBOX360 : http://lantus360.com Android : http://droidpuae.blogspot.com : https://github.com/pelya/commandergenius/tree/sdl_android/project/jni/application/puae PS3 : http://metaneutrons.blogspot.com/2011/07/porting-puae-to-playstation-3.html Raspberry : http://www.valvers.com/raspberry-pi#toc-amiga-emulation-puae PNaCl : http://pnacl-amiga-emulator.appspot.com AROS : http://aminet.net/package/misc/emu/p-uae.i386-aros Retroarch : https://github.com/libretro/libretro-uae About PUAE --------------------------------------------------- PUAE (and EUAE) traditionally offered tons of configuration options, which resulted in a maintenance nightmare, with most of the untested combinations broken. recently the build system was refactored to allow only a minimal set of configurable options, in the hope that this will ease the situation. At this time, only a GTK+2 and SDL frontend are supported, as well as a subset of host operating systems and machines. Development is mainly focused on linux and SDL 1.2. Since SDL2 was supported at some point it should be possible to make it work again with some minor tweaks. File a PR if you're interested. See also the docs directory (might be partially outdated). Difference to FS-UAE --------------------------------------------------- UAE was originally written in C, and WinUAE basically continued using only the C subset of C++ but renamed files to .cc so MSVC's C++ compiler could be used instead of its crippled C compiler which produces abysmally bad code. When merging changes from WinUAE, PUAE renames the files to .c before diffing and compiles everything as C. FS-UAE otoh embraces C++ and its new features which leads to a lot longer compile times. Additonally it makes heavy use of OpenGL and 3D effects for its UI, so if your GPU isn't that great or you don't have OpenGL at all, it's unusable. Additionally FS-UAE introduced a dependency on GLib. PUAE works just fine without OpenGL. Compiling PUAE --------------------------------------------------- check out the sources from git, then run `autoreconf -i` to generate the configure script. run `./configure --help` to read which `--with-...` options are available. then run `./configure` with the options you require, followed by `make -jN` where N is the number of CPU cores. See also docs/compiling.txt (which may be outdated). Tested environment: Linux, x86_64, GCC 6.5.0. Using PUAE ---------- after build, cd to src, and put your kickstart roms into `roms` and your adf files into `disks`. then run `./uae`. in the SDL gui you may now select a ROM (confirm selection with `b` button either on keyboard or joypad), and an adf file. using button b will put the file into DF0, while button a will put it into DF1. you can get back into the menu using `F12` key - while inside the menu you can save/load savestates and toggle fullscreen mode with (right)ALT-enter. Note that PUAE sometimes gets stuck when selecting `exit` - therefore it's a good idea to quit fullscreen mode before doing that. About the JIT --------------------------------------------------- The JIT featured by {P/FS/Win}UAE is mostly useless - unless you want to run an Amiga Workbench. Even though very fast, due to timing issues it's not very compatible to games, and it requires to use a CPU >= 68030 and is only implemented for x86[_64] archs. Also compiling support for it increases build time by about 2x - so you are probably better off not enabling it. Bug Reports/Contact --------------------------------------------------- Open an issue here on github.
i'm not happy at all with FS-UAE:
the last bullet point is a complete showstopper. makes it impossible to use FS-UAE on embedded systems, or systems with poor 3D acceleration.
since @gnostic disappeared from github and deleted his repo, it seems the onus is now on me to keep PUAE alive.
#
# Makefile for PUAE (C) rofl0r
#
# Use config.mak to override any of the following variables.
# Do not make changes here.
#
prefix = /usr/local
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
includedir = $(prefix)/include
libdir = $(prefix)/lib
#UAE_VERSION = 260
#UAE_VERSION = 270
UAE_VERSION = 270b8
GFX_BACKEND = gfx-sdl
GUI_BACKEND = gui-sdl
#GUI_BACKEND = gui-gtk
THREAD_BACKEND = td-posix
#MACHINE_BACKEND = md-x86-gcc
MACHINE_BACKEND = md-amd64-gcc
OS_BACKEND = od-linux
SOUND_BACKEND = sd-alsa
JOYSTICK_BACKEND = jd-sdl
TARGET = unix
ARCHIVERS = dms
GENH = src/target.h
LINKEDH = src/machdep/machdep.h src/gfxdep/gfx.h src/osdep/memory_uae.h \
src/threaddep/thread.h src/sounddep/sound.h src/md-fpp.h
BACKENDS = src/$(GFX_BACKEND)/*.c src/$(GUI_BACKEND)/*.c src/$(THREAD_BACKEND)/*.c src/$(MACHINE_BACKEND)/*.c \
src/$(SOUND_BACKEND)/*.c src/$(OS_BACKEND)/*.c src/$(JOYSTICK_BACKEND)/*.c
MAIN_OBJS = main.o \
newcpu.o \
memory.o \
rommgr.o \
custom.o \
serial.o \
dongle.o \
cia.o \
blitter.o \
autoconf.o \
traps.o \
keybuf.o \
expansion.o \
inputrecord.o \
diskutil.o \
zfile.o \
zfile_archive.o \
cfgfile.o \
picasso96.o \
inputdevice.o \
gfxutil.o \
audio.o \
sinctable.o \
statusline.o \
drawing.o \
consolehook.o \
native2amiga.o \
disk.o \
crc32.o \
savestate.o \
arcadia.o \
cdtv.o \
cd32_fmv.o \
uaeexe.o \
uaelib.o \
uaeresource.o \
uaeserial.o \
fdi2raw.o \
hotkeys.o \
amax.o \
ar.o \
driveclick.o \
enforcer.o \
misc.o \
uaenet.o \
a2065.o \
gayle.o \
blkdev.o \
blkdev_cdimage.o \
scsi.o \
ncr_scsi.o \
missing.o \
readcpu.o \
hrtmon.rom.o \
events.o \
calc.o \
aros.rom.o \
specialmonitors.o \
writelog.o \
filesys.o \
fsdb.o \
fsusage.o \
hardfile.o \
filesys_unix.o \
fsdb_unix.o \
hardfile_unix.o \
bsdsocket-posix-new.o \
bsdsocket.o \
scsiemul.o \
a2091.o \
cdrom.o \
akiko.o \
debug.o \
identify.o
ifneq ($(UAE_VERSION), 260)
MAIN_OBJS += scsitape.o sana2.o gfxboard.o
SRCDIRS = src/qemuvga/*.c
CPU_12_OR_13 = 13
ifneq ($(UAE_VERSION), 270)
MAIN_OBJS += newcpu_common.o
endif
else
CPU_12_OR_13 = 12
endif
CPUGEN_HDRS = src/cputbl.h
CPUGEN_SRCS = src/cpustbl.c src/cpuemu_0.c src/cpuemu_11.c src/cpuemu_$(CPU_12_OR_13).c src/cpuemu_20.c src/cpuemu_21.c \
src/cpuemu_22.c src/cpuemu_31.c src/cpuemu_32.c src/cpuemu_33.c
CPU_SRCS = $(CPUGEN_SRCS) src/cpummu.c src/cpummu30.c src/fpp.c
TOOLGEN_SRCS = src/blitfunc.c src/blittable.c src/tools/cpudefs.c
OBJCFLAGS = -DCPUEMU_0 -DCPUEMU_11 -DCPUEMU_$(CPU_12_OR_13) -DCPUEMU_20 -DCPUEMU_21 -DCPUEMU_22 \
-DCPUEMU_31 -DCPUEMU_32 -DCPUEMU_33 -DMMUEMU -DFULLMMU -DFPUEMU -DAMAX \
-DGAYLE -DNCR -DAGA -DAUTOCONFIG -DFILESYS -DSCSIEMU -DSCSIEMU_LINUX_IOCTL \
-DA2091 -DCDTV -DCD32 -DBSDSOCKET -DSUPPORT_THREADS -DUSE_SDL -DFDI2RAW \
-DDEBUGGER -DSAVESTATE -DENFORCER -DACTION_REPLAY -DXARCADE -DDRIVESOUND \
-DSERIAL_PORT
ifeq (dms,$(findstring dms,$(ARCHIVERS)))
OBJCFLAGS += -DA_DMS
endif
ARCHIVERS_SRCS = $(sort $(wildcard $(ARCHIVERS:%=src/archivers/%/*.c)))
ARCHVIERS_OBJS = $(ARCHIVERS_SRCS:.c=.o)
MAIN_SRCS = $(MAIN_OBJS:.o=.c)
TOOLS_SRCS = $(sort $(wildcard src/tools/*.c))
SRCDIRS += $(BACKENDS) $(MAIN_SRCS:%=src/%) src/keymap/*.c src/qemuvga/*.c
SRCS = $(sort $(wildcard $(SRCDIRS))) $(CPU_SRCS) $(TOOLGEN_SRCS) $(ARCHIVERS_SRCS)
OBJS = $(SRCS:.c=.o)
GUI_SRCS = src/$(GUI_BACKEND)/*.c
GUI_OBJS = $(GUI_SRCS:.c=.o)
ifeq ($(GUI_BACKEND),gui-gtk)
GUI_CFLAGS = `pkg-config --cflags gtk+-2.0`
GUI_LDFLAGS = `pkg-config --libs gtk+-2.0`
endif
INC = -Isrc/include -Isrc
TOOLS = src/tools/genblitter src/tools/genlinetoscr src/tools/build68k src/tools/gencomp src/tools/gencpu
PROGS = uae $(TOOLS)
GENFILES = src/blit.h src/blitfunc.h $(TOOLGEN_SRCS) $(CPUGEN_SRCS) $(CPUGEN_HDRS) \
src/linetoscr.c cpugen.stamp $(GENH)
CFLAGS += -Wall -std=gnu99 -D_GNU_SOURCE -pipe -Wno-unused-variable -Wno-unused-but-set-variable -O0 -g3
LDFLAGS = -lz -lSDL -lSDL_ttf -lasound
AR = $(CROSS_COMPILE)ar
RANLIB = $(CROSS_COMPILE)ranlib
-include config.mak
all: src/uae
src/target.h: src/targets/t-$(TARGET).h
cp $< $@
src/machdep/machdep.h: src/$(MACHINE_BACKEND)/machdep.h
ln -sf $(MACHINE_BACKEND) src/machdep
src/gfxdep/gfx.h: src/$(GFX_BACKEND)/gfx.h
ln -sf $(GFX_BACKEND) src/gfxdep
src/osdep/memory_uae.h: src/$(OS_BACKEND)/memory_uae.h
ln -sf $(OS_BACKEND) src/osdep
src/threaddep/thread.h: src/$(THREAD_BACKEND)/thread.h
ln -sf $(THREAD_BACKEND) src/threaddep
src/sounddep/sound.h: src/$(SOUND_BACKEND)/sound.h
ln -sf $(SOUND_BACKEND) src/sounddep
src/md-fpp.h: src/include/fpp-ieee.h
ln -sf include/fpp-ieee.h $@
src/blit.h: src/tools/genblitter
src/tools/genblitter i > src/blit.h
src/blitfunc.h: src/tools/genblitter
src/tools/genblitter h > src/blitfunc.h
src/blitfunc.c: src/tools/genblitter src/blitfunc.h
src/tools/genblitter f > src/blitfunc.c
src/blittable.c: src/tools/genblitter src/blitfunc.h
src/tools/genblitter t > src/blittable.c
src/linetoscr.c: src/tools/genlinetoscr
src/tools/genlinetoscr > src/linetoscr.c
src/tools/cpudefs.c: src/tools/build68k src/table68k
src/tools/build68k < src/table68k > src/tools/cpudefs.c
src/blitter.c: src/blit.h
src/drawing.o: src/linetoscr.c
src/tools/genblitter.c: src/genblitter.c
ln -sf ../genblitter.c src/tools/
src/tools/blitops.c: src/blitops.c
ln -sf ../blitops.c src/tools/
src/tools/writelog.c: src/writelog.c
ln -sf ../writelog.c src/tools/
src/tools/missing.c: src/missing.c
ln -sf ../missing.c src/tools/
src/tools/genlinetoscr.c: src/genlinetoscr.c
ln -sf ../genlinetoscr.c src/tools/
src/tools/gencpu.c: src/gencpu.c
ln -sf ../gencpu.c src/tools/
src/tools/readcpu.c: src/readcpu.c
ln -sf ../readcpu.c src/tools/
src/tools/build68k.c: src/build68k.c
ln -sf ../build68k.c src/tools/
src/tools/genblitter: src/tools/genblitter.o src/tools/blitops.o src/tools/writelog.o
$(CC) -O0 -g0 $^ -o $@
src/tools/build68k: src/tools/build68k.o src/tools/writelog.o
$(CC) -O0 -g0 $^ -o $@
src/tools/genlinetoscr: src/tools/genlinetoscr.o
$(CC) -O0 -g0 $^ -o $@
src/tools/gencomp: src/tools/gencomp.o src/tools/readcpu.o src/tools/missing.o src/tools/cpudefs.o src/tools/writelog.o
$(CC) -O0 -g0 $^ -o $@
src/tools/gencpu: src/tools/gencpu.o src/tools/readcpu.o src/tools/cpudefs.o src/tools/missing.o src/tools/writelog.o
$(CC) -O0 -g0 $^ -o $@
src/comptbl.h: src/tools/gencomp
src/compstbl.c: src/tools/gencomp
src/tools/gencomp
src/compemu.c: src/tools/gencomp
$(CPUGEN_HDRS) $(CPUGEN_SRCS): cpugen.stamp
cpugen.stamp: src/tools/gencpu
cd src && ./tools/gencpu && touch ../cpugen.stamp && cd ..
$(SRCS): $(GENH) $(LINKEDH)
src/uae: $(OBJS) $(CPUGEN_SRCS)
$(CC) -o $@ $(OBJS) $(GUI_LDFLAGS) $(LDFLAGS)
foo:
@echo $(OBJCFLAGS) #$(GUI_OBJS)
tools: $(TOOLS)
install: $(PROGS:src%=$(DESTDIR)$(bindir)/%)
$(DESTDIR)$(bindir)/%: $(PROGS)
install -D -m 755 $< $@
clean:
rm -f $(OBJS)
rm -f src/*.o src/tools/*.o
rm -f $(PROGS)
rm -f $(GENFILES)
src/$(GUI_BACKEND)/%.o: src/$(GUI_BACKEND)/%.c
$(CC) $(INC) $(CPPFLAGS) $(OBJCFLAGS) $(CFLAGS) $(GUI_CFLAGS) -c -o $@ $<
%.o: %.c
$(CC) $(INC) $(OBJCFLAGS) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
.PHONY: all clean install
or raw http://sprunge.us/fjNh
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.