mirror of https://github.com/bsnes-emu/bsnes.git
Update to bsnes v063r03 release.
Extremely substantial code structure changes this time. Probably the most in four years. All of the SNES core now resides in src/snes, and the contents of system have been unrolled into this directory as well. This folder gets its own Makefile now, and some special build commands, "make library" and "make install-library". This creates static and dynamic link libraries of the core, completely devoid of Qt, ruby, the GUI, etc. There's a new module as well, src/snes/libsnes. This is a C interface that will let you initialize and control the bsnes core without the need for anything more than a 1KB header file. To test this, I've created a UI fork, ui_sdl. Very very simple, 2KB, nothing there at all really, it just boots up Zelda 3 and runs it directly with keyboard input support and video only. The important point here is that the ui_sdl project does not reference the core, or ruby, or Qt, or anything else, and is fully C++98 (though it could also be C89 if desired.) Now I'm being a bit lazy and using the compiled objects directly, but it'd be just as easy to replace them with a library include directive, or even dynamically link against the shared library and use an entirely different language. It's not actually my goal to make a C++ SDL port, what I really want to do is make a port using Ruby only. May not be so easy, we'll have to see how one accesses shared libraries in it. The main src/Makefile was also simplified for the sake of supporting non-Qt code. All of the Qt and ruby references were moved into the src/ui_qt/Makefile. I fixed up aDSP to compile again, but you still have to manually comment out sDSP and comment in aDSP. Doing so will net you a 6-12% speedup at the cost of some accuracy. Lastly, I added a workaround for the Battletech 3050 splash screen.
This commit is contained in:
parent
9995876bc5
commit
9614275b34
175
src/Makefile
175
src/Makefile
|
@ -1,17 +1,12 @@
|
|||
include lib/nall/Makefile
|
||||
|
||||
ui := ui_qt
|
||||
qtlibs := $(strip QtCore QtGui $(if $(findstring osx,$(platform)),QtOpenGL))
|
||||
include lib/nall/qt/Makefile
|
||||
|
||||
################
|
||||
### compiler ###
|
||||
################
|
||||
|
||||
c := $(compiler) --std=gnu99
|
||||
cpp := $(subst cc,++,$(compiler)) -std=gnu++0x
|
||||
flags := -O3 -fomit-frame-pointer -Ilib
|
||||
link :=
|
||||
# compiler
|
||||
c := $(compiler) --std=gnu99
|
||||
cpp := $(subst cc,++,$(compiler)) -std=gnu++0x
|
||||
flags := -O3 -fomit-frame-pointer -I. -Ilib
|
||||
link :=
|
||||
objects :=
|
||||
|
||||
# profile-guided instrumentation:
|
||||
# flags += -fprofile-generate
|
||||
|
@ -20,75 +15,20 @@ link :=
|
|||
# profile-guided optimization:
|
||||
# flags += -fprofile-use
|
||||
|
||||
################
|
||||
### platform ###
|
||||
################
|
||||
|
||||
# platform
|
||||
ifeq ($(platform),x)
|
||||
link += -s -ldl -lX11 -lXext
|
||||
|
||||
ruby := video.glx video.xv video.qtraster video.sdl
|
||||
ruby += audio.alsa audio.openal audio.oss audio.pulseaudio audio.pulseaudiosimple audio.ao
|
||||
ruby += input.sdl input.x
|
||||
|
||||
link += $(if $(findstring audio.openal,$(ruby)),-lopenal)
|
||||
else ifeq ($(platform),osx)
|
||||
ruby := video.qtopengl video.qtraster
|
||||
ruby += audio.openal
|
||||
ruby += input.carbon
|
||||
|
||||
link += $(if $(findstring audio.openal,$(ruby)),-framework OpenAL)
|
||||
else ifeq ($(platform),win)
|
||||
link += -mwindows -mthreads
|
||||
# link += -mconsole -mthreads
|
||||
link += -s -luuid -lkernel32 -luser32 -lgdi32 -lshell32
|
||||
link += -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
|
||||
|
||||
ruby := video.direct3d video.wgl video.directdraw video.gdi video.qtraster
|
||||
ruby += audio.directsound
|
||||
ruby += input.rawinput input.directinput
|
||||
|
||||
link += $(if $(findstring audio.openal,$(ruby)),-lopenal32)
|
||||
else
|
||||
unknown_platform: help;
|
||||
endif
|
||||
|
||||
############
|
||||
### ruby ###
|
||||
############
|
||||
|
||||
rubyflags := $(if $(finstring .sdl,$(ruby)),`sdl-config --cflags`)
|
||||
rubyflags += $(if $(findstring .qt,$(ruby)),$(qtinc))
|
||||
|
||||
link += $(if $(findstring .sdl,$(ruby)),`sdl-config --libs`)
|
||||
link += $(if $(findstring video.direct3d,$(ruby)),-ld3d9)
|
||||
link += $(if $(findstring video.directdraw,$(ruby)),-lddraw)
|
||||
link += $(if $(findstring video.glx,$(ruby)),-lGL)
|
||||
link += $(if $(findstring video.wgl,$(ruby)),-lopengl32)
|
||||
link += $(if $(findstring video.xv,$(ruby)),-lXv)
|
||||
link += $(if $(findstring audio.alsa,$(ruby)),-lasound)
|
||||
link += $(if $(findstring audio.ao,$(ruby)),-lao)
|
||||
link += $(if $(findstring audio.directsound,$(ruby)),-ldsound)
|
||||
link += $(if $(findstring audio.pulseaudio,$(ruby)),-lpulse)
|
||||
link += $(if $(findstring audio.pulseaudiosimple,$(ruby)),-lpulse-simple)
|
||||
link += $(if $(findstring input.directinput,$(ruby)),-ldinput8 -ldxguid)
|
||||
link += $(if $(findstring input.rawinput,$(ruby)),-ldinput8 -ldxguid)
|
||||
|
||||
###############
|
||||
### objects ###
|
||||
###############
|
||||
|
||||
objects := libco ruby
|
||||
objects += system cartridge cheat
|
||||
objects += memory smemory cpu cpucore scpu smp smpcore ssmp dsp sdsp ppu bppu
|
||||
objects += supergameboy superfx sa1
|
||||
objects += bsx srtc sdd1 spc7110 cx4 dsp1 dsp2 dsp3 dsp4 obc1 st0010 st0011 st0018
|
||||
objects += msu1
|
||||
|
||||
######################
|
||||
### implicit rules ###
|
||||
######################
|
||||
|
||||
# implicit rules
|
||||
compile = \
|
||||
$(strip \
|
||||
$(if $(filter %.c,$<), \
|
||||
|
@ -103,95 +43,12 @@ compile = \
|
|||
|
||||
all: build;
|
||||
|
||||
include snes/Makefile
|
||||
include $(ui)/Makefile
|
||||
|
||||
objects := $(patsubst %,obj/%.o,$(objects))
|
||||
rubydef := $(foreach c,$(subst .,_,$(call strupper,$(ruby))),-D$c)
|
||||
|
||||
#################
|
||||
### libraries ###
|
||||
#################
|
||||
|
||||
obj/ruby.o: lib/ruby/ruby.cpp $(call rwildcard,lib/ruby/*)
|
||||
$(call compile,$(rubydef) $(rubyflags))
|
||||
obj/libco.o: lib/libco/libco.c lib/libco/*
|
||||
|
||||
#################
|
||||
### utilities ###
|
||||
#################
|
||||
|
||||
obj/cartridge.o: cartridge/cartridge.cpp cartridge/*
|
||||
obj/cheat.o : cheat/cheat.cpp cheat/*
|
||||
|
||||
##############
|
||||
### memory ###
|
||||
##############
|
||||
|
||||
obj/memory.o : memory/memory.cpp memory/*
|
||||
obj/smemory.o: memory/smemory/smemory.cpp $(call rwildcard,memory/smemory/)
|
||||
|
||||
###########
|
||||
### cpu ###
|
||||
###########
|
||||
|
||||
obj/cpu.o : cpu/cpu.cpp cpu/*
|
||||
obj/cpucore.o: cpu/core/core.cpp $(call rwildcard,cpu/core/)
|
||||
obj/scpu.o : cpu/scpu/scpu.cpp $(call rwildcard,cpu/scpu/)
|
||||
|
||||
###########
|
||||
### smp ###
|
||||
###########
|
||||
|
||||
obj/smp.o : smp/smp.cpp smp/*
|
||||
obj/smpcore.o: smp/core/core.cpp $(call rwildcard,smp/core/)
|
||||
obj/ssmp.o : smp/ssmp/ssmp.cpp $(call rwildcard,smp/ssmp/)
|
||||
|
||||
###########
|
||||
### dsp ###
|
||||
###########
|
||||
|
||||
obj/dsp.o : dsp/dsp.cpp dsp/*
|
||||
obj/adsp.o: dsp/adsp/adsp.cpp dsp/adsp/*
|
||||
obj/sdsp.o: dsp/sdsp/sdsp.cpp dsp/sdsp/*
|
||||
|
||||
###########
|
||||
### ppu ###
|
||||
###########
|
||||
|
||||
obj/ppu.o : ppu/ppu.cpp ppu/*
|
||||
obj/bppu.o: ppu/bppu/bppu.cpp $(call rwildcard,ppu/bppu/)
|
||||
|
||||
##############
|
||||
### system ###
|
||||
##############
|
||||
|
||||
obj/system.o: system/system.cpp $(call rwildcard,system/)
|
||||
|
||||
#####################
|
||||
### special chips ###
|
||||
#####################
|
||||
|
||||
obj/supergameboy.o: chip/supergameboy/supergameboy.cpp $(call rwildcard,chip/supergameboy/)
|
||||
obj/superfx.o : chip/superfx/superfx.cpp $(call rwildcard,chip/superfx/)
|
||||
obj/sa1.o : chip/sa1/sa1.cpp $(call rwildcard,chip/sa1/)
|
||||
obj/bsx.o : chip/bsx/bsx.cpp chip/bsx/*
|
||||
obj/srtc.o : chip/srtc/srtc.cpp chip/srtc/*
|
||||
obj/sdd1.o : chip/sdd1/sdd1.cpp chip/sdd1/*
|
||||
obj/spc7110.o : chip/spc7110/spc7110.cpp chip/spc7110/*
|
||||
obj/cx4.o : chip/cx4/cx4.cpp chip/cx4/*
|
||||
obj/dsp1.o : chip/dsp1/dsp1.cpp chip/dsp1/*
|
||||
obj/dsp2.o : chip/dsp2/dsp2.cpp chip/dsp2/*
|
||||
obj/dsp3.o : chip/dsp3/dsp3.cpp chip/dsp3/*
|
||||
obj/dsp4.o : chip/dsp4/dsp4.cpp chip/dsp4/*
|
||||
obj/obc1.o : chip/obc1/obc1.cpp chip/obc1/*
|
||||
obj/st0010.o : chip/st0010/st0010.cpp chip/st0010/*
|
||||
obj/st0011.o : chip/st0011/st0011.cpp chip/st0011/*
|
||||
obj/st0018.o : chip/st0018/st0018.cpp chip/st0018/*
|
||||
obj/msu1.o : chip/msu1/msu1.cpp chip/msu1/*
|
||||
|
||||
###############
|
||||
### targets ###
|
||||
###############
|
||||
|
||||
# targets
|
||||
build: ui_build $(objects)
|
||||
ifeq ($(platform),osx)
|
||||
test -d ../bsnes.app || mkdir -p ../bsnes.app/Contents/MacOS
|
||||
|
@ -201,20 +58,30 @@ else
|
|||
endif
|
||||
|
||||
install:
|
||||
ifeq ($(platform),x)
|
||||
install -D -m 755 ../bsnes $(DESTDIR)$(prefix)/bin/bsnes
|
||||
install -D -m 644 data/bsnes.png $(DESTDIR)$(prefix)/share/pixmaps/bsnes.png
|
||||
install -D -m 644 data/bsnes.desktop $(DESTDIR)$(prefix)/share/applications/bsnes.desktop
|
||||
endif
|
||||
|
||||
uninstall:
|
||||
ifeq ($(platform),x)
|
||||
rm $(DESTDIR)$(prefix)/bin/bsnes
|
||||
rm $(DESTDIR)$(prefix)/share/pixmaps/bsnes.png
|
||||
rm $(DESTDIR)$(prefix)/share/applications/bsnes.desktop
|
||||
endif
|
||||
|
||||
clean: ui_clean
|
||||
-@$(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)
|
||||
|
||||
help:;
|
||||
|
|
38
src/base.hpp
38
src/base.hpp
|
@ -1,38 +0,0 @@
|
|||
static const char bsnesVersion[] = "063.02";
|
||||
static const char bsnesTitle[] = "bsnes";
|
||||
static const unsigned bsnesSerializerVersion = 9;
|
||||
|
||||
//S-DSP can be encapsulated into a state machine using #define magic
|
||||
//this avoids ~2.048m co_switch() calls per second (~5% speedup)
|
||||
#define DSP_STATE_MACHINE
|
||||
|
||||
//game genie + pro action replay code support (~2% speed hit)
|
||||
#define CHEAT_SYSTEM
|
||||
|
||||
//enable debugging extensions (~15% speed hit)
|
||||
//#define DEBUGGER
|
||||
|
||||
#include <libco/libco.h>
|
||||
|
||||
#include <nall/algorithm.hpp>
|
||||
#include <nall/any.hpp>
|
||||
#include <nall/array.hpp>
|
||||
#include <nall/bit.hpp>
|
||||
#include <nall/detect.hpp>
|
||||
#include <nall/dl.hpp>
|
||||
#include <nall/endian.hpp>
|
||||
#include <nall/file.hpp>
|
||||
#include <nall/foreach.hpp>
|
||||
#include <nall/function.hpp>
|
||||
#include <nall/moduloarray.hpp>
|
||||
#include <nall/platform.hpp>
|
||||
#include <nall/priorityqueue.hpp>
|
||||
#include <nall/property.hpp>
|
||||
#include <nall/serializer.hpp>
|
||||
#include <nall/stdint.hpp>
|
||||
#include <nall/string.hpp>
|
||||
#include <nall/utility.hpp>
|
||||
#include <nall/vector.hpp>
|
||||
using namespace nall;
|
||||
|
||||
#include "interface.hpp"
|
|
@ -1,17 +0,0 @@
|
|||
#include "supergameboy/supergameboy.hpp"
|
||||
#include "superfx/superfx.hpp"
|
||||
#include "sa1/sa1.hpp"
|
||||
#include "bsx/bsx.hpp"
|
||||
#include "srtc/srtc.hpp"
|
||||
#include "sdd1/sdd1.hpp"
|
||||
#include "spc7110/spc7110.hpp"
|
||||
#include "cx4/cx4.hpp"
|
||||
#include "dsp1/dsp1.hpp"
|
||||
#include "dsp2/dsp2.hpp"
|
||||
#include "dsp3/dsp3.hpp"
|
||||
#include "dsp4/dsp4.hpp"
|
||||
#include "obc1/obc1.hpp"
|
||||
#include "st0010/st0010.hpp"
|
||||
#include "st0011/st0011.hpp"
|
||||
#include "st0018/st0018.hpp"
|
||||
#include "msu1/msu1.hpp"
|
|
@ -1,174 +0,0 @@
|
|||
class aDSP : public DSP {
|
||||
private:
|
||||
uint8 dspram[128];
|
||||
uint8 *spcram;
|
||||
|
||||
uint32 dsp_counter;
|
||||
|
||||
enum { BRR_END = 1, BRR_LOOP = 2 };
|
||||
|
||||
uint8 readb (uint16 addr);
|
||||
uint16 readw (uint16 addr);
|
||||
void writeb(uint16 addr, uint8 data);
|
||||
void writew(uint16 addr, uint16 data);
|
||||
|
||||
public:
|
||||
static const uint16 rate_table[32];
|
||||
static const int16 gaussian_table[512];
|
||||
|
||||
enum EnvelopeStates {
|
||||
ATTACK,
|
||||
DECAY,
|
||||
SUSTAIN,
|
||||
RELEASE,
|
||||
SILENCE
|
||||
};
|
||||
|
||||
enum EnvelopeModes {
|
||||
DIRECT,
|
||||
LINEAR_DEC,
|
||||
EXP_DEC,
|
||||
LINEAR_INC,
|
||||
BENT_INC,
|
||||
|
||||
FAST_ATTACK,
|
||||
RELEASE_DEC
|
||||
};
|
||||
|
||||
private:
|
||||
struct Status {
|
||||
//$0c,$1c
|
||||
int8 MVOLL, MVOLR;
|
||||
//$2c,$3c
|
||||
int8 EVOLL, EVOLR;
|
||||
//$4c,$5c
|
||||
uint8 KON, KOFF;
|
||||
//$6c
|
||||
uint8 FLG;
|
||||
//$7c
|
||||
uint8 ENDX;
|
||||
//$0d
|
||||
int8 EFB;
|
||||
//$2d,$3d,$4d
|
||||
uint8 PMON, NON, EON;
|
||||
//$5d
|
||||
uint8 DIR;
|
||||
//$6d,$7d
|
||||
uint8 ESA, EDL;
|
||||
|
||||
//$xf
|
||||
int8 FIR[8];
|
||||
|
||||
//internal variables
|
||||
uint8 kon, esa;
|
||||
|
||||
int16 noise_ctr, noise_rate;
|
||||
uint16 noise_sample;
|
||||
|
||||
uint16 echo_index, echo_length;
|
||||
int16 fir_buffer[2][8];
|
||||
uint8 fir_buffer_index;
|
||||
|
||||
//functions
|
||||
bool soft_reset() { return !!(FLG & 0x80); }
|
||||
bool mute() { return !!(FLG & 0x40); }
|
||||
bool echo_write() { return !(FLG & 0x20); }
|
||||
} status;
|
||||
|
||||
struct Voice {
|
||||
//$x0-$x1
|
||||
int8 VOLL, VOLR;
|
||||
//$x2-$x3
|
||||
int16 PITCH;
|
||||
//$x4
|
||||
uint8 SRCN;
|
||||
//$x5-$x7
|
||||
uint8 ADSR1, ADSR2, GAIN;
|
||||
//$x8-$x9
|
||||
uint8 ENVX, OUTX;
|
||||
|
||||
//internal variables
|
||||
int16 pitch_ctr;
|
||||
|
||||
int8 brr_index;
|
||||
uint16 brr_ptr;
|
||||
uint8 brr_header;
|
||||
bool brr_looped;
|
||||
|
||||
int16 brr_data[4];
|
||||
uint8 brr_data_index;
|
||||
|
||||
int16 envx;
|
||||
uint16 env_ctr, env_rate, env_sustain;
|
||||
enum EnvelopeStates env_state;
|
||||
enum EnvelopeModes env_mode;
|
||||
|
||||
int16 outx;
|
||||
|
||||
//functions
|
||||
int16 pitch_rate() { return PITCH & 0x3fff; }
|
||||
|
||||
uint8 brr_header_shift() { return brr_header >> 4; }
|
||||
uint8 brr_header_filter() { return (brr_header >> 2) & 3; }
|
||||
uint8 brr_header_flags() { return brr_header & 3; }
|
||||
|
||||
bool ADSR_enabled() { return !!(ADSR1 & 0x80); }
|
||||
uint8 ADSR_decay() { return (ADSR1 >> 4) & 7; }
|
||||
uint8 ADSR_attack() { return ADSR1 & 15; }
|
||||
uint8 ADSR_sus_level() { return ADSR2 >> 5; }
|
||||
uint8 ADSR_sus_rate() { return ADSR2 & 31; }
|
||||
|
||||
void AdjustEnvelope() {
|
||||
if(env_state == SILENCE) {
|
||||
env_mode = DIRECT;
|
||||
env_rate = 0;
|
||||
envx = 0;
|
||||
} else if(env_state == RELEASE) {
|
||||
env_mode = RELEASE_DEC;
|
||||
env_rate = 0x7800;
|
||||
} else if(ADSR_enabled()) {
|
||||
switch(env_state) {
|
||||
case ATTACK:
|
||||
env_rate = rate_table[(ADSR_attack() << 1) + 1];
|
||||
env_mode = (env_rate == 0x7800) ? FAST_ATTACK : LINEAR_INC;
|
||||
break;
|
||||
case DECAY:
|
||||
env_rate = rate_table[(ADSR_decay() << 1) + 0x10];
|
||||
env_mode = EXP_DEC;
|
||||
break;
|
||||
case SUSTAIN:
|
||||
env_rate = rate_table[ADSR_sus_rate()];
|
||||
env_mode = (env_rate == 0) ? DIRECT : EXP_DEC;
|
||||
break;
|
||||
}
|
||||
} else if(GAIN & 0x80) {
|
||||
switch(GAIN & 0x60) {
|
||||
case 0x00: env_mode = LINEAR_DEC; break;
|
||||
case 0x20: env_mode = EXP_DEC; break;
|
||||
case 0x40: env_mode = LINEAR_INC; break;
|
||||
case 0x60: env_mode = BENT_INC; break;
|
||||
}
|
||||
env_rate = rate_table[GAIN & 0x1f];
|
||||
} else {
|
||||
env_mode = DIRECT;
|
||||
env_rate = 0;
|
||||
envx = (GAIN & 0x7f) << 4;
|
||||
}
|
||||
}
|
||||
} voice[8];
|
||||
|
||||
public:
|
||||
void enter();
|
||||
void run();
|
||||
|
||||
uint8 read (uint8 addr);
|
||||
void write(uint8 addr, uint8 data);
|
||||
|
||||
void power();
|
||||
void reset();
|
||||
|
||||
aDSP();
|
||||
~aDSP();
|
||||
};
|
||||
|
||||
extern aDSP dsp;
|
|
@ -1,53 +0,0 @@
|
|||
#ifdef DEBUGGER
|
||||
#define debugvirtual virtual
|
||||
#else
|
||||
#define debugvirtual
|
||||
#endif
|
||||
|
||||
namespace SNES {
|
||||
typedef int8_t int8;
|
||||
typedef int16_t int16;
|
||||
typedef int32_t int32;
|
||||
typedef int64_t int64;
|
||||
typedef uint8_t uint8;
|
||||
typedef uint16_t uint16;
|
||||
typedef uint32_t uint32;
|
||||
typedef uint64_t uint64;
|
||||
|
||||
struct ChipDebugger {
|
||||
virtual bool property(unsigned id, string &name, string &value) = 0;
|
||||
};
|
||||
|
||||
#include "memory/memory.hpp"
|
||||
#include "memory/smemory/smemory.hpp"
|
||||
|
||||
#include "ppu/ppu.hpp"
|
||||
#include "ppu/bppu/bppu.hpp"
|
||||
|
||||
#include "cpu/cpu.hpp"
|
||||
#include "cpu/core/core.hpp"
|
||||
#include "cpu/scpu/scpu.hpp"
|
||||
|
||||
#include "smp/smp.hpp"
|
||||
#include "smp/core/core.hpp"
|
||||
#include "smp/ssmp/ssmp.hpp"
|
||||
|
||||
#include "dsp/dsp.hpp"
|
||||
#include "dsp/sdsp/sdsp.hpp"
|
||||
|
||||
#include "system/system.hpp"
|
||||
#include "chip/chip.hpp"
|
||||
#include "cartridge/cartridge.hpp"
|
||||
#include "cheat/cheat.hpp"
|
||||
|
||||
#include "memory/memory-inline.hpp"
|
||||
#include "ppu/ppu-inline.hpp"
|
||||
#include "cheat/cheat-inline.hpp"
|
||||
}
|
||||
|
||||
namespace nall {
|
||||
template<> struct has_size<SNES::MappedRAM> { enum { value = true }; };
|
||||
template<> struct has_size<SNES::StaticRAM> { enum { value = true }; };
|
||||
}
|
||||
|
||||
#undef debugvirtual
|
|
@ -0,0 +1,87 @@
|
|||
snes_objects := libco
|
||||
snes_objects += snes-system
|
||||
snes_objects += snes-cartridge snes-cheat
|
||||
snes_objects += snes-cpu snes-cpucore snes-scpu
|
||||
snes_objects += snes-smp snes-smpcore snes-ssmp
|
||||
snes_objects += snes-dsp snes-sdsp snes-adsp
|
||||
snes_objects += snes-ppu snes-bppu
|
||||
snes_objects += snes-memory snes-smemory
|
||||
snes_objects += snes-supergameboy snes-superfx snes-sa1
|
||||
snes_objects += snes-bsx snes-srtc snes-sdd1 snes-spc7110
|
||||
snes_objects += snes-cx4 snes-dsp1 snes-dsp2 snes-dsp3 snes-dsp4
|
||||
snes_objects += snes-obc1 snes-st0010 snes-st0011 snes-st0018 snes-msu1
|
||||
objects += $(snes_objects)
|
||||
|
||||
# libco
|
||||
obj/libco.o: lib/libco/libco.c lib/libco/*
|
||||
|
||||
# system
|
||||
obj/snes-system.o: snes/system/system.cpp $(call rwildcard,snes/system/)
|
||||
|
||||
# cpu
|
||||
obj/snes-cpu.o : snes/cpu/cpu.cpp snes/cpu/*
|
||||
obj/snes-cpucore.o: snes/cpu/core/core.cpp $(call rwildcard,snes/cpu/core/)
|
||||
obj/snes-scpu.o : snes/cpu/scpu/scpu.cpp $(call rwildcard,snes/cpu/scpu/)
|
||||
|
||||
# smp
|
||||
obj/snes-smp.o : snes/smp/smp.cpp snes/smp/*
|
||||
obj/snes-smpcore.o: snes/smp/core/core.cpp $(call rwildcard,snes/smp/core/)
|
||||
obj/snes-ssmp.o : snes/smp/ssmp/ssmp.cpp $(call rwildcard,snes/smp/ssmp/)
|
||||
|
||||
# dsp
|
||||
obj/snes-dsp.o : snes/dsp/dsp.cpp snes/dsp/*
|
||||
obj/snes-sdsp.o: snes/dsp/sdsp/sdsp.cpp snes/dsp/sdsp/*
|
||||
obj/snes-adsp.o: snes/dsp/adsp/adsp.cpp snes/dsp/adsp/*
|
||||
|
||||
# ppu
|
||||
obj/snes-ppu.o : snes/ppu/ppu.cpp snes/ppu/*
|
||||
obj/snes-bppu.o: snes/ppu/bppu/bppu.cpp $(call rwildcard,snes/ppu/bppu/)
|
||||
|
||||
# utilities
|
||||
obj/snes-cartridge.o: snes/cartridge/cartridge.cpp snes/cartridge/*
|
||||
obj/snes-cheat.o : snes/cheat/cheat.cpp snes/cheat/*
|
||||
|
||||
# memory
|
||||
obj/snes-memory.o : snes/memory/memory.cpp snes/memory/*
|
||||
obj/snes-smemory.o: snes/memory/smemory/smemory.cpp $(call rwildcard,snes/memory/smemory/)
|
||||
|
||||
# special chips
|
||||
obj/snes-supergameboy.o: snes/chip/supergameboy/supergameboy.cpp $(call rwildcard,snes/chip/supergameboy/)
|
||||
obj/snes-superfx.o : snes/chip/superfx/superfx.cpp $(call rwildcard,snes/chip/superfx/)
|
||||
obj/snes-sa1.o : snes/chip/sa1/sa1.cpp $(call rwildcard,snes/chip/sa1/)
|
||||
obj/snes-bsx.o : snes/chip/bsx/bsx.cpp snes/chip/bsx/*
|
||||
obj/snes-srtc.o : snes/chip/srtc/srtc.cpp snes/chip/srtc/*
|
||||
obj/snes-sdd1.o : snes/chip/sdd1/sdd1.cpp snes/chip/sdd1/*
|
||||
obj/snes-spc7110.o : snes/chip/spc7110/spc7110.cpp snes/chip/spc7110/*
|
||||
obj/snes-cx4.o : snes/chip/cx4/cx4.cpp snes/chip/cx4/*
|
||||
obj/snes-dsp1.o : snes/chip/dsp1/dsp1.cpp snes/chip/dsp1/*
|
||||
obj/snes-dsp2.o : snes/chip/dsp2/dsp2.cpp snes/chip/dsp2/*
|
||||
obj/snes-dsp3.o : snes/chip/dsp3/dsp3.cpp snes/chip/dsp3/*
|
||||
obj/snes-dsp4.o : snes/chip/dsp4/dsp4.cpp snes/chip/dsp4/*
|
||||
obj/snes-obc1.o : snes/chip/obc1/obc1.cpp snes/chip/obc1/*
|
||||
obj/snes-st0010.o : snes/chip/st0010/st0010.cpp snes/chip/st0010/*
|
||||
obj/snes-st0011.o : snes/chip/st0011/st0011.cpp snes/chip/st0011/*
|
||||
obj/snes-st0018.o : snes/chip/st0018/st0018.cpp snes/chip/st0018/*
|
||||
obj/snes-msu1.o : snes/chip/msu1/msu1.cpp snes/chip/msu1/*
|
||||
|
||||
# library
|
||||
snes_objects := $(patsubst %,obj/%.o,$(snes_objects))
|
||||
library: $(snes_objects)
|
||||
ifeq ($(platform),x)
|
||||
ar rcs obj/libsnes.a $(snes_objects)
|
||||
$(cpp) -o obj/libsnes.so -shared -Wl,-soname,libsnes.so.1 $(snes_objects)
|
||||
else ifeq ($(platform),osx)
|
||||
ar rcs obj/libsnes.a $(snes_objects)
|
||||
$(cpp) -o obj/libsnes.dylib -shared -dynamiclib $(snes_objects)
|
||||
else ifeq ($(platform),win)
|
||||
$(cpp) -o obj/snes.dll -shared -Wl,--out-implib,libsnes.a $(snes_objects)
|
||||
endif
|
||||
|
||||
install-library:
|
||||
ifeq ($(platform),x)
|
||||
install -D -m 755 obj/libsnes.a $(DESTDIR)$(prefix)/lib
|
||||
install -D -m 755 obj/libsnes.so $(DESTDIR)$(prefix)/lib
|
||||
ldconfig -n $(DESTDIR)$(prefix)/lib
|
||||
else ifeq ($(platform),osx)
|
||||
cp obj/libsnes.dylib /usr/local/lib/libsnes.dylib
|
||||
endif
|
|
@ -1,4 +1,5 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#include <nall/crc32.hpp>
|
||||
#include <nall/sha256.hpp>
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define CHEAT_CPP
|
||||
namespace SNES {
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define BSX_CPP
|
||||
namespace SNES {
|
||||
|
@ -6,5 +6,5 @@ namespace SNES {
|
|||
#include "bsx_base.cpp"
|
||||
#include "bsx_cart.cpp"
|
||||
#include "bsx_flash.cpp"
|
||||
};
|
||||
|
||||
};
|
|
@ -0,0 +1,17 @@
|
|||
#include <snes/chip/supergameboy/supergameboy.hpp>
|
||||
#include <snes/chip/superfx/superfx.hpp>
|
||||
#include <snes/chip/sa1/sa1.hpp>
|
||||
#include <snes/chip/bsx/bsx.hpp>
|
||||
#include <snes/chip/srtc/srtc.hpp>
|
||||
#include <snes/chip/sdd1/sdd1.hpp>
|
||||
#include <snes/chip/spc7110/spc7110.hpp>
|
||||
#include <snes/chip/cx4/cx4.hpp>
|
||||
#include <snes/chip/dsp1/dsp1.hpp>
|
||||
#include <snes/chip/dsp2/dsp2.hpp>
|
||||
#include <snes/chip/dsp3/dsp3.hpp>
|
||||
#include <snes/chip/dsp4/dsp4.hpp>
|
||||
#include <snes/chip/obc1/obc1.hpp>
|
||||
#include <snes/chip/st0010/st0010.hpp>
|
||||
#include <snes/chip/st0011/st0011.hpp>
|
||||
#include <snes/chip/st0018/st0018.hpp>
|
||||
#include <snes/chip/msu1/msu1.hpp>
|
|
@ -4,7 +4,7 @@
|
|||
//Used in Rockman X2/X3 (Megaman X2/X3)
|
||||
//Portions (c) anomie, Overload, zsKnight, Nach, byuu
|
||||
|
||||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define CX4_CPP
|
||||
namespace SNES {
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define DSP1_CPP
|
||||
namespace SNES {
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define DSP2_CPP
|
||||
namespace SNES {
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define DSP3_CPP
|
||||
namespace SNES {
|
||||
|
@ -37,4 +37,4 @@ void DSP3::write(unsigned addr, uint8 data) {
|
|||
DSP3i::DSP3SetByte();
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define DSP4_CPP
|
||||
namespace SNES {
|
||||
|
@ -57,4 +57,4 @@ void DSP4::write(unsigned addr, uint8 data) {
|
|||
}
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define MSU1_CPP
|
||||
namespace SNES {
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define OBC1_CPP
|
||||
namespace SNES {
|
||||
|
@ -79,4 +79,4 @@ void OBC1::ram_write(unsigned addr, uint8 data) {
|
|||
OBC1::OBC1() {}
|
||||
OBC1::~OBC1() {}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define SA1_CPP
|
||||
namespace SNES {
|
||||
|
@ -323,4 +323,4 @@ void SA1::reset() {
|
|||
SA1::SA1() {
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define SDD1_CPP
|
||||
namespace SNES {
|
||||
|
@ -151,4 +151,4 @@ SDD1::SDD1() {
|
|||
SDD1::~SDD1() {
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define SPC7110_CPP
|
||||
namespace SNES {
|
||||
|
@ -679,4 +679,4 @@ void SPC7110RAM::write(unsigned addr, uint8 data) {
|
|||
if(spc7110.r4830 & 0x80) memory::cartram.write(addr & 0x1fff, data);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define SRTC_CPP
|
||||
namespace SNES {
|
||||
|
@ -228,4 +228,4 @@ void SRTC::mmio_write(unsigned addr, uint8 data) {
|
|||
SRTC::SRTC() {
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define ST0010_CPP
|
||||
namespace SNES {
|
||||
|
@ -90,4 +90,4 @@ void ST0010::write(unsigned addr, uint8 data) {
|
|||
}
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define ST0011_CPP
|
||||
namespace SNES {
|
||||
|
@ -17,4 +17,4 @@ void ST0011::power() {
|
|||
void ST0011::reset() {
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define ST0018_CPP
|
||||
namespace SNES {
|
||||
|
@ -120,4 +120,4 @@ void ST0018::op_query_chip() {
|
|||
regs.r3800 = 0x00;
|
||||
}
|
||||
|
||||
};
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
#include <../base.hpp>
|
||||
#include <snes/snes.hpp>
|
||||
|
||||
#define SUPERFX_CPP
|
||||
namespace SNES {
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue