diff --git a/genius/GNUmakefile b/genius/GNUmakefile index ced672cb..c9a14577 100644 --- a/genius/GNUmakefile +++ b/genius/GNUmakefile @@ -1,17 +1,22 @@ -build := stable -include ../nall/GNUmakefile -include ../hiro/GNUmakefile - name := genius +build := stable + +nall.path := ../nall +include $(nall.path)/GNUmakefile + +object.path := obj flags += -I.. -objects := obj/hiro.o -objects += obj/genius.o -objects += $(if $(call streq,$(platform),windows),obj/resource.o) +hiro.path := ../hiro +hiro.resource := data/$(name).rc +include $(hiro.path)/GNUmakefile -default: information $(objects) +objects := obj/hiro.o $(if $(call streq,$(platform),windows),obj/hiro-resource.o) +objects += obj/genius.o + +all: $(objects) $(info Linking out/$(name) ...) - +@$(strip $(compiler) -o out/$(name) $(objects) $(link) $(hirolink)) + +@$(strip $(compiler) -o out/$(name) $(objects) $(options) $(hiro.options)) ifeq ($(platform),macos) rm -rf out/$(name).app mkdir -p out/$(name).app/Contents/MacOS/ @@ -21,17 +26,9 @@ ifeq ($(platform),macos) sips -s format icns data/$(name).png --out out/$(name).app/Contents/Resources/$(name).icns endif -obj/hiro.o: ../hiro/hiro.cpp - $(info Compiling $< ...) - @$(compiler) $(hiroflags) -o obj/hiro.o -c ../hiro/hiro.cpp - obj/genius.o: genius.cpp genius.hpp $(info Compiling $< ...) - @$(compiler) $(cppflags) $(flags) -o obj/genius.o -c genius.cpp - -obj/resource.o: data/$(name).rc - $(info Compiling $< ...) - @$(windres) data/$(name).rc obj/resource.o + @$(compiler) $(flags.cpp) $(flags) -o obj/genius.o -c genius.cpp clean: ifeq ($(platform),macos) diff --git a/genius/genius.cpp b/genius/genius.cpp index 11983347..9fcf4718 100644 --- a/genius/genius.cpp +++ b/genius/genius.cpp @@ -42,7 +42,7 @@ ListWindow::ListWindow() { }).information(); }); - layout.setMargin(5); + layout.setPadding(5); gameList.onActivate([&] { modifyButton.doActivate(); }); gameList.onChange([&] { updateWindow(); }); appendButton.setText("Append").onActivate([&] { @@ -249,7 +249,7 @@ auto ListWindow::removeGame() -> void { GameWindow::GameWindow() { gameWindow = this; - layout.setMargin(5); + layout.setPadding(5); hashLabel.setText("SHA256:").setAlignment(1.0); hashEdit.setFont(Font().setFamily(Font::Mono)).onChange([&] { modified = true, updateWindow(); }); regionLabel.setText("Region:").setAlignment(1.0); @@ -451,7 +451,7 @@ auto GameWindow::removeComponent() -> void { MemoryWindow::MemoryWindow() { memoryWindow = this; - layout.setMargin(5); + layout.setPadding(5); typeLabel.setText("Type:").setAlignment(1.0); typeEdit.append(ComboEditItem().setText("ROM")); typeEdit.append(ComboEditItem().setText("EEPROM")); @@ -554,7 +554,7 @@ auto MemoryWindow::updateWindow() -> void { OscillatorWindow::OscillatorWindow() { oscillatorWindow = this; - layout.setMargin(5); + layout.setPadding(5); frequencyLabel.setText("Frequency:").setAlignment(1.0); frequencyEdit.onChange([&] { modified = true, updateWindow(); }); acceptButton.setText("Accept").onActivate([&] { accept(); }); diff --git a/higan/GNUmakefile b/higan/GNUmakefile index 6bc45eda..36accab4 100644 --- a/higan/GNUmakefile +++ b/higan/GNUmakefile @@ -1,11 +1,13 @@ build := performance openmp := true -include ../nall/GNUmakefile + +nall.path := ../nall +include $(nall.path)/GNUmakefile binary := application target := bsnes objects := libco emulator audio video resource - +object.path := obj flags += -I. -I.. ifeq ($(platform),windows) @@ -38,9 +40,9 @@ endif compile = \ $(strip \ $(if $(filter %.c,$<), \ - $(compiler) $(cflags) $(flags) $1 -c $< -o $@ -MMD -MP -MF $(@:.o=.d), \ + $(compiler) $(flags.c) $(flags) $1 -c $< -o $@ -MMD -MP -MF $(@:.o=.d), \ $(if $(filter %.cpp,$<), \ - $(compiler) $(cppflags) $(flags) $1 -c $< -o $@ -MMD -MP -MF $(@:.o=.d) \ + $(compiler) $(flags.cpp) $(flags) $1 -c $< -o $@ -MMD -MP -MF $(@:.o=.d) \ )) \ ) diff --git a/higan/audio/stream.cpp b/higan/audio/stream.cpp index 7bf23dc2..547db942 100644 --- a/higan/audio/stream.cpp +++ b/higan/audio/stream.cpp @@ -50,12 +50,12 @@ auto Stream::pending() const -> bool { } auto Stream::read(double samples[]) -> uint { - for(auto c : range(channels)) samples[c] = channels[c].resampler.read(); + for(auto c : range(channels.size())) samples[c] = channels[c].resampler.read(); return channels.size(); } auto Stream::write(const double samples[]) -> void { - for(auto c : range(channels)) { + for(auto c : range(channels.size())) { double sample = samples[c] + 1e-25; //constant offset used to suppress denormals for(auto& filter : channels[c].filters) { switch(filter.order) { diff --git a/higan/emulator/emulator.hpp b/higan/emulator/emulator.hpp index 5335d2a9..6ba1a263 100644 --- a/higan/emulator/emulator.hpp +++ b/higan/emulator/emulator.hpp @@ -13,7 +13,7 @@ using namespace nall; namespace Emulator { static const string Name = "higan"; - static const string Version = "106.46"; + static const string Version = "106.47"; static const string Author = "byuu"; static const string License = "GPLv3"; static const string Website = "https://byuu.org/"; diff --git a/higan/processor/v30mz/serialization.cpp b/higan/processor/v30mz/serialization.cpp index 9551a529..922324db 100644 --- a/higan/processor/v30mz/serialization.cpp +++ b/higan/processor/v30mz/serialization.cpp @@ -7,7 +7,7 @@ auto V30MZ::serialize(serializer& s) -> void { if(s.mode() == serializer::Save) { uint8 _prefixes[7] = {0}; uint8 _prefixCount = prefixes.size(); - for(auto n : range(prefixes)) _prefixes[n] = prefixes[n]; + for(auto n : range(_prefixCount)) _prefixes[n] = prefixes[n]; s.integer(_prefixCount); s.array(_prefixes); } else { @@ -16,7 +16,7 @@ auto V30MZ::serialize(serializer& s) -> void { s.integer(_prefixCount); s.array(_prefixes); prefixes.resize(_prefixCount); - for(auto n : range(prefixes)) prefixes[n] = _prefixes[n]; + for(auto n : range(_prefixCount)) prefixes[n] = _prefixes[n]; } s.integer(modrm.mod); diff --git a/higan/sfc/ppu-fast/object.cpp b/higan/sfc/ppu-fast/object.cpp index 25bc346f..1d144162 100644 --- a/higan/sfc/ppu-fast/object.cpp +++ b/higan/sfc/ppu-fast/object.cpp @@ -38,7 +38,7 @@ auto PPU::Line::renderObject(PPU::IO::Object& self) -> void { } } - for(int n : rrange(ppu.ItemLimit)) { + for(int n : reverse(range(ppu.ItemLimit))) { const auto& item = items[n]; if(!item.valid) continue; diff --git a/higan/target-bsnes/GNUmakefile b/higan/target-bsnes/GNUmakefile index 7b525c5b..0176ce2c 100644 --- a/higan/target-bsnes/GNUmakefile +++ b/higan/target-bsnes/GNUmakefile @@ -5,13 +5,11 @@ include sfc/GNUmakefile include gb/GNUmakefile include processor/GNUmakefile -objects := ruby hiro $(objects) +objects := ruby hiro $(if $(call streq,$(platform),windows),hiro-resource) $(objects) objects += ui-bsnes ui-program ui-input ui-presentation objects += ui-settings ui-tools ui-resource -objects += $(if $(call streq,$(platform),windows),ui-windows) objects := $(objects:%=obj/%.o) -# platform ifeq ($(platform),windows) ruby += video.wgl video.direct3d video.directdraw video.gdi ruby += audio.asio audio.wasapi audio.xaudio2 audio.directsound @@ -30,23 +28,13 @@ else ifeq ($(platform),bsd) ruby += input.sdl input.xlib endif -# ruby -include ../ruby/GNUmakefile -link += $(rubylink) +ruby.path := ../ruby +include $(ruby.path)/GNUmakefile -obj/ruby.o: ../ruby/ruby.cpp $(call rwildcard,../ruby/) - $(info Compiling $< ...) - @$(compiler) $(rubyflags) -c $< -o $@ +hiro.path := ../hiro +hiro.resource := $(ui)/resource/bsnes.rc +include $(hiro.path)/GNUmakefile -# hiro -include ../hiro/GNUmakefile -link += $(hirolink) - -obj/hiro.o: ../hiro/hiro.cpp $(call rwildcard,../hiro/) - $(info Compiling $< ...) - @$(compiler) $(hiroflags) -c $< -o $@ - -# rules obj/ui-bsnes.o: $(ui)/bsnes.cpp obj/ui-program.o: $(ui)/program/program.cpp obj/ui-input.o: $(ui)/input/input.cpp @@ -55,14 +43,10 @@ obj/ui-settings.o: $(ui)/settings/settings.cpp obj/ui-tools.o: $(ui)/tools/tools.cpp obj/ui-resource.o: $(ui)/resource/resource.cpp -obj/ui-windows.o: $(ui)/resource/bsnes.rc - $(info Compiling $< ...) - @$(windres) $(ui)/resource/bsnes.rc obj/ui-windows.o - # targets -default: information $(objects) +all: $(objects) $(info Linking out/$(name) ...) - +@$(strip $(compiler) -o out/$(name) $(objects) $(link)) + +@$(strip $(compiler) -o out/$(name) $(objects) $(options) $(ruby.options) $(hiro.options)) ifeq ($(platform),macos) rm -rf out/$(name).app mkdir -p out/$(name).app/Contents/MacOS/ @@ -84,7 +68,9 @@ else ifneq ($(filter $(platform),linux bsd),) mkdir -p $(prefix)/share/applications/ mkdir -p $(prefix)/share/icons/ mkdir -p $(prefix)/share/$(name)/ + mkdir -p $(prefix)/share/$(name)/locales/ cp out/$(name) $(prefix)/bin/$(name) + cp $(ui)/resource/locales/* $(prefix)/share/$(name)/locales/ cp $(ui)/resource/$(name).desktop $(prefix)/share/applications/$(name).desktop cp $(ui)/resource/$(name).png $(prefix)/share/icons/$(name).png endif diff --git a/higan/target-bsnes/bsnes.cpp b/higan/target-bsnes/bsnes.cpp index 665ca7ce..c09a3892 100644 --- a/higan/target-bsnes/bsnes.cpp +++ b/higan/target-bsnes/bsnes.cpp @@ -4,6 +4,7 @@ unique_pointer