2010-08-09 13:28:56 +00:00
|
|
|
include nall/Makefile
|
Updated to 20100813 release.
byuu says:
Since we're now talking about three splits, that's getting a bit out of
hand.
This WIP combines everything back into one project again. Added the
src/fast folder that has all the speed-oriented cores.
A slight slowdown to csnes from what it was before, I'm using blargg's
accurate DSP. I just don't like the idea of releasing a less accurate
DSP core than Snes9X v1.52 has. Plus the fast DSP core doesn't serialize
yet.
I moved back to snes_spc 0.9.0 because I care more about Tales and Star
Ocean than I do about Earthworm Jim 2. So if you try EWJ2 on csnes,
expect it to sound like it does on Snes9X. In other words, don't wear
headphones if you value your hearing.
The middle-of-the-road bsnes core uses blargg's accurate DSP, because
it's about 3% faster than mine which removes all of blargg's
optimizations. There is absolutely no accuracy loss here. bsnes v067.20
that is included should be equal to v067 official.
Performance:
Code:
asnes = 58fps
bsnes = 172fps +2.97x
csnes = 274fps +1.59x +4.72x
The binaries are not profiled, so that's an additional 15% slower from
the previous builds.
Save states only work on asnes, as I don't know how to serialize
blargg's cores yet. The copy_func thing is very confusing to me for some
reason. The debugger won't work anywhere.
Outside of that, please go ahead and bug test. Once I get the debugger
and save states working, I'll build some profiled v1.0 releases for all
three, and we can test that for a bit and then release.
2010-10-20 11:20:39 +00:00
|
|
|
snes := snes
|
2010-12-28 01:53:15 +00:00
|
|
|
gameboy := gameboy
|
Update to v080r01 release.
byuu says:
There was one unfortunate aspect of the S-DD1 module: you had to give it
the DMA length and a target buffer, and it would do the entire
decompression at once. Real hardware would work by streaming the data
byte by byte. So with that, I went ahead and rewrote the code to handle
byte-based streaming.
This WIP is an important milestone for me personally. Up until now,
bsnes has always had code that was directly copy-pasted from other
authors. With all of the DSP and Cx4 chips rewritten in LLE, and the
SPC7110 algorithm already ported over from C, and archive decompression
code removed for a long time, the S-DD1 was the only module left like
this. It's obviously not that big of a deal. The code is basically still
a copy of the original. S-DD1 decomp from Andreas Naive, SPC7110 decomp
from neviksti, and S-DSP from blargg. And the rest of the emulator is of
course only possible because of code and research before it, although
everything else has no resemblance at all to code before it. The main
advantage, really, is absolute code consistency. I always use the same
variant of K&R, for instance. I dunno, I guess I just never really liked
the "Build-a-Bear Workshop" style of emulators, like is so prominent in
the Genesis scene: "My new Genesis emu (uses Starscream/Musashi 68K
core, Marat Fayzullin's Z80 core, YM2612 core from Game_Music_Emu, VDP
core from Gens, SVP core from picodrive)", sorry, but you wrote
a front-end, not an emulator :/
I also updated the SPC7110 decompression module: I merged the class
inside the SPC7110 class (not sure why it was separate before), and
replaced the morton lookup tables with for-loops. The morton tables were
added to be a tiny bit faster when I was more interested in speed than
code clarity. It may be a tiny bit slower (or faster due to less L2
cache usage), but you won't even notice an FPS drop, and it cuts out
a good chunk of code and some tables. Lastly, I added pinput_poll() to
video_refresh(). Forgot to remove Interface::input_poll() from the C++
side, will have to do that later.
2011-06-28 11:36:00 +00:00
|
|
|
profile := accuracy
|
2011-02-16 12:35:40 +00:00
|
|
|
ui := ui
|
2011-08-06 14:03:52 +00:00
|
|
|
# phoenix := gtk
|
2010-08-09 13:28:56 +00:00
|
|
|
|
2011-08-08 12:02:51 +00:00
|
|
|
# options += debugger
|
2011-02-28 23:45:31 +00:00
|
|
|
|
2010-08-09 13:28:56 +00:00
|
|
|
# compiler
|
|
|
|
c := $(compiler) -std=gnu99
|
|
|
|
cpp := $(subst cc,++,$(compiler)) -std=gnu++0x
|
2011-01-03 04:28:36 +00:00
|
|
|
flags := -O3 -fomit-frame-pointer -I.
|
2010-08-09 13:28:56 +00:00
|
|
|
link :=
|
2011-01-06 10:16:07 +00:00
|
|
|
objects := libco
|
2010-08-09 13:28:56 +00:00
|
|
|
|
|
|
|
# profile-guided instrumentation
|
|
|
|
# flags += -fprofile-generate
|
|
|
|
# link += -lgcov
|
|
|
|
|
|
|
|
# profile-guided optimization
|
|
|
|
# flags += -fprofile-use
|
|
|
|
|
2011-02-28 23:45:31 +00:00
|
|
|
flags := $(flags) $(foreach o,$(call strupper,$(options)),-D$o)
|
|
|
|
|
2010-08-09 13:28:56 +00:00
|
|
|
# platform
|
|
|
|
ifeq ($(platform),x)
|
2011-03-01 13:31:28 +00:00
|
|
|
link += -s -ldl -lX11 -lXext
|
2010-08-09 13:28:56 +00:00
|
|
|
else ifeq ($(platform),osx)
|
|
|
|
else ifeq ($(platform),win)
|
|
|
|
link += -mwindows
|
|
|
|
# link += -mconsole
|
2010-09-22 12:49:49 +00:00
|
|
|
link += -mthreads -s -luuid -lkernel32 -luser32 -lgdi32 -lcomctl32 -lcomdlg32 -lshell32 -lole32
|
2010-08-09 13:28:56 +00:00
|
|
|
link += -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
|
|
|
|
else
|
|
|
|
unknown_platform: help;
|
|
|
|
endif
|
|
|
|
|
|
|
|
# implicit rules
|
|
|
|
compile = \
|
|
|
|
$(strip \
|
|
|
|
$(if $(filter %.c,$<), \
|
|
|
|
$(c) $(flags) $1 -c $< -o $@, \
|
|
|
|
$(if $(filter %.cpp,$<), \
|
|
|
|
$(cpp) $(flags) $1 -c $< -o $@ \
|
|
|
|
) \
|
|
|
|
) \
|
|
|
|
)
|
|
|
|
|
|
|
|
%.o: $<; $(call compile)
|
|
|
|
|
|
|
|
all: build;
|
|
|
|
|
2011-01-06 10:16:07 +00:00
|
|
|
obj/libco.o: libco/libco.c libco/*
|
|
|
|
|
2010-08-09 13:28:56 +00:00
|
|
|
include $(ui)/Makefile
|
|
|
|
|
|
|
|
# targets
|
Update to v075 release.
byuu says:
This release brings improved Super Game Boy emulation, the final SHA256
hashes for the DSP-(1,1B,2,3,4) and ST-(0010,0011) coprocessors, user
interface improvements, and major internal code restructuring.
Changelog (since v074):
- completely rewrote memory sub-system to support 1-byte granularity in
XML mapping
- removed Memory inheritance and MMIO class completely, any address can
be mapped to any function now
- SuperFX: removed SuperFXBus : Bus, now implemented manually
- SA-1: removed SA1Bus : Bus, now implemented manually
- entire bus mapping is now static, happens once on cartridge load
- as a result, read/write handlers now handle MMC mapping; slower
average case, far faster worst case
- namespace memory is no more, RAM arrays are stored inside the chips
they are owned by now
- GameBoy: improved CPU HALT emulation, fixes Zelda: Link's Awakening
scrolling
- GameBoy: added serial emulation (cannot connect to another GB yet),
fixes Shin Megami Tensei - Devichil
- GameBoy: improved LCD STAT emulation, fixes Sagaia
- ui: added fullscreen support (F11 key), video settings allows for
three scale settings
- ui: fixed brightness, contrast, gamma, audio volume, input frequency
values on program startup
- ui: since Qt is dead, config file becomes bsnes.cfg once again
- Super Game Boy: you can now load the BIOS without a game inserted to
see a pretty white box
- ui-gameboy: can be built without SNES components now
- libsnes: now a UI target, compile with 'make ui=ui-libsnes'
- libsnes: added WRAM, APURAM, VRAM, OAM, CGRAM access (cheat search,
etc)
- source: removed launcher/, as the Qt port is now gone
- source: Makefile restructuring to better support new ui targets
- source: lots of other internal code cleanup work
2011-01-27 08:52:34 +00:00
|
|
|
clean:
|
2010-08-09 13:28:56 +00:00
|
|
|
-@$(call delete,obj/*.o)
|
|
|
|
-@$(call delete,obj/*.a)
|
|
|
|
-@$(call delete,obj/*.so)
|
|
|
|
-@$(call delete,obj/*.dylib)
|
|
|
|
-@$(call delete,obj/*.dll)
|
|
|
|
-@$(call delete,*.res)
|
|
|
|
-@$(call delete,*.pgd)
|
|
|
|
-@$(call delete,*.pgc)
|
|
|
|
-@$(call delete,*.ilk)
|
|
|
|
-@$(call delete,*.pdb)
|
|
|
|
-@$(call delete,*.manifest)
|
|
|
|
|
|
|
|
archive-all:
|
2011-02-02 10:33:35 +00:00
|
|
|
tar -cjf bsnes.tar.bz2 data gameboy libco nall obj out phoenix ruby snes ui ui-gameboy ui-libsnes Makefile cc.bat clean.bat sync.sh
|
2010-08-09 13:28:56 +00:00
|
|
|
|
|
|
|
help:;
|