mirror of
https://github.com/bsnes-emu/bsnes.git
synced 2025-02-23 22:52:34 +01:00
byuu says: Changelog: - ruby: ported all remaining drivers to new API¹ - ruby/wasapi: fix for dropping one sample per period [SuperMikeMan] - gb: emulated most of the TAMA RTC; but RTC state is still volatile² ¹: the new ports are: - audio/{directsound, alsa, pulseaudio, pulseaudiosimple, ao} - input/{udev, quartz, carbon} It's pretty much guaranteed many of them will have compilation errors. Please paste the error logs and I'll try to fix them up. It may take a WIP or two to get there. It's also possible things broke from the updates. If so, I could use help comparing the old file to the new file, looking for mistakes, since I can't test on these platforms apart from audio/directsound. Please report working drivers in this list, so we can mark them off the list. I'll need both macOS and Linux testers. audio/directsound.cpp:112: if(DirectSoundCreate(0, &_interface, 0) != DS_OK) return terminate(), false; ²: once I get this working, I'll add load/save support for the RTC values. For now, the RTC data will be lost when you close the emulator. Right now, you can set the date/time in real-time mode, and when you start the game, the time will be correct, and the time will tick forward. Note that it runs off emulated time instead of actual real time, so if you fast-forward to 300%, one minute will be 20 seconds. The really big limitation right now is that when you exit the game, and restart it, and resume a new game, the hour spot gets corrupted, and this seems to instantly kill your pet. Fun. This is crazy because the commands the game sends to the TAMA interface are identical between starting a new game and getting in-game versus loading a game. It's likely going to require disassembling the game's code and seeing what in the hell it's doing, but I am extremely bad at LR35092 assembly. Hopefully endrift can help here :|
111 lines
3.8 KiB
Makefile
111 lines
3.8 KiB
Makefile
name := higan
|
|
flags += -DSFC_SUPERGAMEBOY
|
|
|
|
include fc/GNUmakefile
|
|
include sfc/GNUmakefile
|
|
include ms/GNUmakefile
|
|
include md/GNUmakefile
|
|
include pce/GNUmakefile
|
|
include gb/GNUmakefile
|
|
include gba/GNUmakefile
|
|
include ws/GNUmakefile
|
|
include processor/GNUmakefile
|
|
|
|
ui_objects := ui-tomoko ui-program ui-configuration ui-input
|
|
ui_objects += ui-settings ui-tools ui-presentation
|
|
ui_objects += ruby hiro
|
|
ui_objects += $(if $(call streq,$(platform),windows),ui-resource)
|
|
|
|
# platform
|
|
ifeq ($(platform),windows)
|
|
ruby += video.wgl video.direct3d video.directdraw video.gdi
|
|
ruby += audio.asio audio.wasapi audio.xaudio2 audio.directsound
|
|
ruby += input.windows
|
|
else ifeq ($(platform),macosx)
|
|
ruby += video.cgl
|
|
ruby += audio.openal
|
|
ruby += input.quartz input.carbon
|
|
else ifeq ($(platform),linux)
|
|
ruby += video.glx video.xvideo video.xshm video.sdl
|
|
ruby += audio.oss audio.alsa audio.openal audio.pulseaudio audio.pulseaudiosimple audio.ao
|
|
ruby += input.sdl input.xlib input.udev
|
|
else ifeq ($(platform),bsd)
|
|
ruby += video.glx video.xvideo video.xshm video.sdl
|
|
ruby += audio.oss audio.openal
|
|
ruby += input.sdl input.xlib
|
|
endif
|
|
|
|
# ruby
|
|
include ../ruby/GNUmakefile
|
|
link += $(rubylink)
|
|
|
|
# hiro
|
|
include ../hiro/GNUmakefile
|
|
link += $(hirolink)
|
|
|
|
# rules
|
|
objects := $(ui_objects) $(objects)
|
|
objects := $(patsubst %,obj/%.o,$(objects))
|
|
|
|
obj/ruby.o: ../ruby/ruby.cpp $(call rwildcard,../ruby/)
|
|
$(compiler) $(rubyflags) -c $< -o $@
|
|
|
|
obj/hiro.o: ../hiro/hiro.cpp $(call rwildcard,../hiro/)
|
|
$(compiler) $(hiroflags) -c $< -o $@
|
|
|
|
obj/ui-tomoko.o: $(ui)/tomoko.cpp $(call rwildcard,$(ui)/)
|
|
obj/ui-program.o: $(ui)/program/program.cpp $(call rwildcard,$(ui)/)
|
|
obj/ui-configuration.o: $(ui)/configuration/configuration.cpp $(call rwildcard,$(ui)/)
|
|
obj/ui-input.o: $(ui)/input/input.cpp $(call rwildcard,$(ui)/)
|
|
obj/ui-library.o: $(ui)/library/library.cpp $(call rwildcard,$(ui)/)
|
|
obj/ui-settings.o: $(ui)/settings/settings.cpp $(call rwildcard,$(ui)/)
|
|
obj/ui-tools.o: $(ui)/tools/tools.cpp $(call rwildcard,$(ui)/)
|
|
obj/ui-presentation.o: $(ui)/presentation/presentation.cpp $(call rwildcard,$(ui)/)
|
|
|
|
obj/ui-resource.o:
|
|
$(windres) data/resource.rc obj/ui-resource.o
|
|
|
|
# targets
|
|
build: $(objects)
|
|
$(strip $(compiler) -o out/$(name) $(objects) $(link))
|
|
ifeq ($(platform),macosx)
|
|
@if [ -d out/$(name).app ]; then rm -r out/$(name).app; fi
|
|
mkdir -p out/$(name).app/Contents/MacOS/
|
|
mkdir -p out/$(name).app/Contents/Resources/
|
|
mv out/$(name) out/$(name).app/Contents/MacOS/$(name)
|
|
cp data/$(name).plist out/$(name).app/Contents/Info.plist
|
|
sips -s format icns data/$(name).png --out out/$(name).app/Contents/Resources/$(name).icns
|
|
endif
|
|
|
|
install:
|
|
ifeq ($(shell id -un),root)
|
|
$(error "make install should not be run as root")
|
|
else ifeq ($(platform),windows)
|
|
else ifeq ($(platform),macosx)
|
|
mkdir -p ~/Library/Application\ Support/$(name)/
|
|
mkdir -p ~/Emulation/System/
|
|
cp -R out/$(name).app /Applications/$(name).app
|
|
cp -R systems/* ~/Library/Application\ Support/$(name)/
|
|
else ifneq ($(filter $(platform),linux bsd),)
|
|
mkdir -p $(prefix)/bin/
|
|
mkdir -p $(prefix)/share/$(name)/
|
|
mkdir -p $(prefix)/share/applications/
|
|
mkdir -p $(prefix)/share/icons/
|
|
cp out/$(name) $(prefix)/bin/$(name)
|
|
cp -R systems/* $(prefix)/share/$(name)/
|
|
cp data/$(name).desktop $(prefix)/share/applications/$(name).desktop
|
|
cp data/$(name).png $(prefix)/share/icons/$(name).png
|
|
endif
|
|
|
|
uninstall:
|
|
ifeq ($(shell id -un),root)
|
|
$(error "make uninstall should not be run as root")
|
|
else ifeq ($(platform),windows)
|
|
else ifeq ($(platform),macosx)
|
|
if [ -d /Applications/$(name).app ]; then rm -r /Applications/$(name).app; fi
|
|
else ifneq ($(filter $(platform),linux bsd),)
|
|
if [ -f $(prefix)/bin/$(name) ]; then rm $(prefix)/bin/$(name); fi
|
|
if [ -f $(prefix)/share/applications/$(name).desktop ]; then rm $(prefix)/share/applications/$(name).desktop; fi
|
|
if [ -f $(prefix)/share/icons/$(name).png ]; then rm $(prefix)/share/icons/$(name).png; fi
|
|
endif
|