Code Monkey home page Code Monkey logo

puae's Introduction

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.


puae's People

Contributors

rofl0r avatar tonioni avatar gn0st1c avatar deplinenoise avatar

Stargazers

Pierre Scotney avatar  avatar Michael Heltne avatar feos avatar Rok Krajnc avatar

Watchers

 avatar James Cloos avatar Michael Heltne avatar  avatar

puae's Issues

backport winUAE changes.

i'm not happy at all with FS-UAE:

  • usage of C++ even though the entire WinUAE codebase is pure C (just with a .cpp file extension)
  • usage of glib for custom additions
  • and finally, a hard requirement for openGL.

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.

integrate my Makefile.

#
# 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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.