Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install Pillow
choco install -y directx-sdk zip --no-progress --yes
choco install -y directx-sdk zip ffmpeg-shared --no-progress --yes
shell: powershell

- name: Download and Extract VCE9 release
Expand Down Expand Up @@ -151,7 +151,7 @@ jobs:
- name: Install required libraries
run: |
sudo apt update
sudo apt install -y make pkgconf libsdl2-dev libasound2-plugins libjack-dev python3-pillow
sudo apt install -y make pkgconf libsdl2-dev libasound2-plugins libjack-dev python3-pillow libavcodec-dev libavformat-dev libavfilter-dev libavutil-dev libswresample-dev

- name: Build X64
working-directory: projects
Expand Down Expand Up @@ -319,7 +319,7 @@ jobs:
wget -qO ./debian-archive-keyring.deb "$BASE$LATEST"
dpkg -i ./debian-archive-keyring.deb

apt update && apt install -y python3 python3-pillow
apt update && apt install -y python3 python3-pillow
cd projects
make PLATFORM=GARLIC
'
Expand Down Expand Up @@ -358,7 +358,7 @@ jobs:
- name: Install Garlic Plus toolchain
run: |
sudo apt update && sudo apt install -y python3-pillow
wget -O /tmp/rg35xxplus-toolchain.tar.xz https://github.com/simotek/union-rg35xxplus-toolchain/releases/download/20240830/rg35xxplus-toolchain.tar.xz
wget -O /tmp/rg35xxplus-toolchain.tar.xz https://github.com/djdiskmachine/union-rg35xxplus-toolchain/releases/download/1.1/rg35xxplus-toolchain.tar.gz
mkdir /opt/rg35xxplus-toolchain
tar -xvf /tmp/rg35xxplus-toolchain.tar.xz -C /opt/rg35xxplus-toolchain --strip-components=1

Expand Down Expand Up @@ -439,6 +439,7 @@ jobs:
wget https://www.libsdl.org/release/SDL2-2.0.14.dmg
hdiutil attach SDL2-2.0.14.dmg
sudo cp -R /Volumes/SDL2/SDL2.framework /Library/Frameworks/
brew install ffmpeg

- name: Build Xcode project
run: |
Expand Down
18 changes: 12 additions & 6 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,12 @@ jobs:
uses: actions/checkout@v4.1.7

- name: Install build deps
run: choco install -y directx-sdk zip --no-progress --yes
run: choco install -y directx-sdk zip ffmpeg-shared --no-progress --yes
shell: powershell

- name: Install FFmpeg development libraries
run: vcpkg install ffmpeg[avcodec,avformat,avfilter]:x86-windows-static
shell: cmd

- name: Download and Extract VCE9 release
run: |
Expand Down Expand Up @@ -116,7 +120,7 @@ jobs:
run: |
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y make pkgconf gcc-multilib g++-multilib libsdl1.2-dev:i386 libasound2-plugins:i386 libjack-dev:i386 python3-pillow
sudo apt install -y make pkgconf gcc-multilib g++-multilib libsdl1.2-dev:i386 libasound2-plugins:i386 libjack-dev:i386 python3-pillow libavcodec-dev:i386 libavformat-dev:i386 libavfilter-dev:i386 libavutil-dev:i386 libswresample-dev:i386

- name: Build DEB
working-directory: projects
Expand Down Expand Up @@ -148,7 +152,7 @@ jobs:
run: |
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y make pkgconf gcc-multilib g++-multilib libsdl2-dev:i386 libasound2-plugins:i386 libjack-dev:i386 python3-pillow
sudo apt install -y make pkgconf gcc-multilib g++-multilib libsdl2-dev:i386 libasound2-plugins:i386 libjack-dev:i386 python3-pillow libavcodec-dev:i386 libavformat-dev:i386 libavfilter-dev:i386 libavutil-dev:i386 libswresample-dev:i386

- name: Build X86
working-directory: projects
Expand Down Expand Up @@ -292,7 +296,7 @@ jobs:
- name: Install Garlic Plus toolchain
run: |
sudo apt update && sudo apt install -y python3-pillow
wget -O /tmp/rg35xxplus-toolchain.tar.xz https://github.com/simotek/union-rg35xxplus-toolchain/releases/download/20240830/rg35xxplus-toolchain.tar.xz
wget -O /tmp/rg35xxplus-toolchain.tar.xz https://github.com/djdiskmachine/union-rg35xxplus-toolchain/releases/download/1.1/rg35xxplus-toolchain.tar.gz
mkdir /opt/rg35xxplus-toolchain
tar -xvf /tmp/rg35xxplus-toolchain.tar.xz -C /opt/rg35xxplus-toolchain --strip-components=1

Expand Down Expand Up @@ -360,7 +364,7 @@ jobs:
- name: Install Miyoo Mini toolchain
run: |
sudo apt update && sudo apt install -y python3-pillow
wget -O /tmp/miyoomini-toolchain.tar.xz https://github.com/djdiskmachine/miyoomini-toolchain-buildroot/releases/download/1.0.0/miyoomini-toolchain.tar.xz
wget -O /tmp/miyoomini-toolchain.tar.xz https://github.com/djdiskmachine/miyoomini-toolchain-buildroot/releases/download/1.1/miyoomini-toolchain.tar.xz
mkdir /opt/miyoomini-toolchain
tar -xvf /tmp/miyoomini-toolchain.tar.xz -C /opt/miyoomini-toolchain --strip-components=1

Expand Down Expand Up @@ -395,7 +399,8 @@ jobs:
- name: Install required libraries
run: |
sudo apt update
sudo apt install -y make pkgconf libsdl2-dev libasound2-plugins libjack-dev python3-pillow
sudo apt install -y make pkgconf libsdl2-dev libasound2-plugins libjack-dev python3-pillow libavcodec-dev libavformat-dev libavfilter-dev libavutil-dev libswresample-dev


- name: Build X64
working-directory: projects
Expand Down Expand Up @@ -429,6 +434,7 @@ jobs:
wget https://www.libsdl.org/release/SDL2-2.0.14.dmg
hdiutil attach SDL2-2.0.14.dmg
sudo cp -R /Volumes/SDL2/SDL2.framework /Library/Frameworks/
brew install ffmpeg

- name: Build Xcode project
run: |
Expand Down
35 changes: 17 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,25 +40,24 @@ Recommended reading to get you started:

## Features per platform

| Platform | MIDI_Possible | MIDI_enabled | Soundfonts | Note |
|-------------|---------------|--------------|------------|--------------------------------------|
| PSP | NO | NO | YES | [See notes](projects/resources/PSP/INSTALL_HOW_TO.txt) |
| DEB | YES | YES | YES | |
| X64 | YES | YES | NO | |
| X86 | YES | YES | YES | |
| STEAM | YES | YES | NO | |
| MIYOO | NO | NO | YES | Port by [Nine-H](https://ninethehacker.xyz) |
| W32 | YES | YES | YES | Built in VS2008 with love |
| RASPI | YES | YES | YES | Versatile platform |
| CHIP | YES | YES | YES | [See notes](projects/resources/CHIP/INSTALL_HOW_TO.txt) |
| BITTBOY | MAYBE | NO | YES | |
| GARLIC | MAYBE | NO | YES | Port by [Simotek](http://simotek.net)|
| GARLICPLUS | MAYBE | NO | YES | Port by [Simotek](http://simotek.net)|
| RG35XXPLUS | MAYBE | NO | YES | Port by [Simotek](http://simotek.net)|
| MACOS | YES | YES | NO | Port by [clsource](https://genserver.social/clsource) |

| Platform | MIDI_Possible | MIDI_enabled | Soundfonts | PrintFX | Note |
|-------------|---------------|--------------|------------|---------|--------------------------------------|
| PSP | NO | NO | YES | NO | [See notes](projects/resources/PSP/INSTALL_HOW_TO.txt) |
| DEB | YES | YES | YES | YES | |
| X64 | YES | YES | NO | YES | |
| X86 | YES | YES | YES | YES | |
| STEAM | YES | YES | NO | YES | |
| MIYOO | NO | NO | YES | NO | Port by [Nine-H](https://ninethehacker.xyz) |
| W32 | YES | YES | YES | YES | Built in VS2008 with love |
| RASPI | YES | YES | YES | YES | Versatile platform |
| CHIP | YES | YES | YES | YES | [See notes](projects/resources/CHIP/INSTALL_HOW_TO.txt) |
| BITTBOY | MAYBE | NO | YES | YES | |
| GARLIC | MAYBE | NO | YES | YES | Port by [Simotek](http://simotek.net)|
| GARLICPLUS | MAYBE | NO | YES | YES | Port by [Simotek](http://simotek.net)|
| RG35XXPLUS | MAYBE | NO | YES | NO | Port by [Simotek](http://simotek.net)|
| MACOS | YES | YES | NO | NO | Port by [clsource](https://genserver.social/clsource) |

* **Soundfont library is currently not ported for 64bit OS**
* **MIDI functionality __greatly__ depends on kernel support, please feature request your favourite OS maintainer =)**
* **Install ffmpeg by following install instructions for your platform [here](https://www.ffmpeg.org/download.html)**
* **PrintFX requires full ffmpeg. If marked as TBA, it requires a redesign using [libav](https://trac.ffmpeg.org/wiki/Using%20libav*)**
* **PrintFX requires toolchain support of ffmpeg libs, for all targets marked maybe contact the maintainer of your consoles toolchain**
9 changes: 8 additions & 1 deletion projects/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,8 @@ COMMONFILES := \
char.o n_assert.o fixed.o wildcard.o \
SyncMaster.o TablePlayback.o Player.o \
Table.o TableView.o\
InstrumentBank.o WavFileWriter.o WavFile.o MidiInstrument.o Filters.o SampleVariable.o SampleInstrument.o SamplePool.o CommandList.o FxPrinter.o\
InstrumentBank.o WavFileWriter.o WavFile.o MidiInstrument.o Filters.o \
SampleVariable.o SampleInstrument.o SamplePool.o CommandList.o FxPrinter.o\
PersistencyService.o Persistent.o \
Observable.o SingletonRegistry.o \
Audio.o AudioMixer.o AudioOutDriver.o AudioDriver.o \
Expand All @@ -274,6 +275,12 @@ COMMONFILES := \
HexBuffers.o lz.o \
tinyxmlparser.o tinyxml.o tinyxmlerror.o tinystr.o Tiny2NosStub.o

ifneq ($(FFMPEG_ENABLED), 0)
ifneq ($(strip $(FFMPEG_LIBS)),)
COMMONFILES += LibavProcessor.o
endif
endif

#---------------------------------------------------------------------------------
# Linux
#---------------------------------------------------------------------------------
Expand Down
11 changes: 8 additions & 3 deletions projects/Makefile.BITTBOY
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
-include $(PWD)/rules_base

STRIP = $(CROSS_COMPILE)strip

DEFINES := \
Expand All @@ -8,6 +9,8 @@ DEFINES := \
-DHAVE_STDINT_H \
-D_NDEBUG \
-D__LINUX_ALSA__ \
-DFFMPEG_ENABLED \
-DFFMPEG_LEGACY_API \
-D_NO_JACK_

DEVKIT=/opt/arm-buildroot-linux-musleabi_sdk-buildroot
Expand All @@ -19,15 +22,17 @@ SDL_CFLAGS := $(shell $(SYSROOT)/usr/bin/sdl-config --cflags)
SDL_LIBS := $(shell $(SYSROOT)/usr/bin/sdl-config --libs)
SDL_BASE = $(DEVKIT)/arm-buildroot-linux-musleabi/sysroot/usr/bin/

-include $(PWD)/rules_libav

TOOLPATH=$(DEVKIT)/usr/bin
PREFIX := arm-linux-

OPT_FLAGS = -O3 -Ofast
INCLUDES = -I$(PWD)/../sources -Iinclude $(SDL_CFLAGS)
INCLUDES = -I$(PWD)/../sources -Iinclude $(SDL_CFLAGS) $(FFMPEG_CFLAGS)
CFLAGS := $(DEFINES) $(INCLUDES) $(OPT_FLAGS) $(SDL_CFLAGS) -Wall -DRS97
CXXFLAGS:= $(CFLAGS) -std=gnu++03
LIBS := $(SDL_LIBS) -lSDL -lSDL_mixer -lasound -lpthread
LIBDIRS := $(DEKVIT)/usr/lib
LIBS := $(SDL_LIBS) -lSDL -lSDL_mixer -lasound -lpthread $(FFMPEG_LIBS)
LIBDIRS := $(SYSROOT)/usr/lib
OUTPUT = ../lgpt-bittboy
EXTENSION:= elf

Expand Down
8 changes: 6 additions & 2 deletions projects/Makefile.GARLIC
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ DEFINES := \
-DCPP_MEMORY \
-D_NDEBUG \
-DHAVE_STDINT_H \
-DFFMPEG_ENABLED \
-DFFMPEG_LEGACY_API \
-D_NO_JACK_

DEVKIT = /opt/miyoo/
Expand All @@ -19,13 +21,15 @@ SYSROOT := $(shell $(CROSS_COMPILE)gcc --print-sysroot)
SDL_CFLAGS := $(shell $(SYSROOT)/usr/bin/sdl-config --cflags)
SDL_LIBS := $(shell $(SYSROOT)/usr/bin/sdl-config --libs)

-include $(PWD)/rules_libav

# optimization
OPT_FLAGS = -O3 -Ofast -fdata-sections -fdata-sections -fno-common -fno-PIC -flto -marm -mtune=cortex-a53 -mfpu=neon-vfpv4 -mfloat-abi=hard
PREFIX := arm-linux-gnueabihf-
INCLUDES:= -Iinclude $(SDL_CFLAGS) -I$(PWD)/../sources
INCLUDES:= -Iinclude $(SDL_CFLAGS) $(FFMPEG_CFLAGS) -I$(PWD)/../sources
CFLAGS := $(DEFINES) $(INCLUDES) $(OPT_FLAGS) -Wall
CXXFLAGS:= $(CFLAGS) -std=gnu++03
LIBS := $(SDL_LIBS) -lpthread
LIBS := $(SDL_LIBS) $(FFMPEG_LIBS) -lpthread
LIBDIRS := $(DEKVIT)/usr/lib
LIBDIRS += $(DEKVIT)/usr/include
OUTPUT := ../lgpt-garlic
Expand Down
20 changes: 17 additions & 3 deletions projects/Makefile.GARLICPLUS
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ DEFINES := \
-DCPP_MEMORY \
-D_NDEBUG \
-DHAVE_STDINT_H \
-D_NO_JACK_
-D_NO_JACK_ \
-DFFMPEG_ENABLED \
-DFFMPEG_LEGACY_API


# compiled using the https://github.com/shauninman/union-rg35xxplus-toolchain

Expand All @@ -23,13 +26,24 @@ SYSROOT := $(shell $(CROSS_COMPILE)gcc --print-sysroot)
SDL_CFLAGS := $(shell $(SYSROOT)/usr/bin/sdl-config --cflags)
SDL_LIBS := $(shell $(SYSROOT)/usr/bin/sdl-config --libs)

FFMPEG_INCL= libavformat \
libavfilter \
libavcodec \
libavutil \

FFMPEG_CFLAGS := $(shell $(DEVKIT)/usr/bin/pkg-config --cflags $(FFMPEG_INCL))
FFMPEG_LIBS := $(shell $(DEVKIT)/usr/bin/pkg-config --libs $(FFMPEG_INCL))

$(info FFMPEG_CFLAGS: $(FFMPEG_CFLAGS))
$(info FFMPEG_LIBS: $(FFMPEG_LIBS))

# optimization
OPT_FLAGS = -O3 -Ofast -fdata-sections -fdata-sections -fno-common -fno-PIC -flto -marm -mtune=cortex-a53 -mfpu=neon-vfpv4 -mfloat-abi=hard
PREFIX := arm-linux-gnueabihf-
INCLUDES = -Iinclude $(SDL_CFLAGS) -I$(PWD)/../sources
INCLUDES = -Iinclude $(SDL_CFLAGS) $(FFMPEG_CFLAGS) -I$(PWD)/../sources
CFLAGS := $(DEFINES) $(INCLUDES) $(OPT_FLAGS) -Wall
CXXFLAGS:= $(CFLAGS) -std=gnu++03
LIBS := -lSDL -lpthread
LIBS := -lSDL -lpthread $(FFMPEG_LIBS)
LIBDIRS := $(DEKVIT)/usr/lib
LIBDIRS += $(DEKVIT)/usr/include
OUTPUT = ../lgpt-garlicplus
Expand Down
22 changes: 17 additions & 5 deletions projects/Makefile.MIYOO
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ DEFINES := \
-DCPP_MEMORY \
-DHAVE_STDINT_H \
-D_NDEBUG \
-DFFMPEG_ENABLED \
-DFFMPEG_LEGACY_API \
-D_NO_JACK_

DEVKIT = /opt/miyoomini-toolchain/
Expand All @@ -18,18 +20,28 @@ SYSROOT := $(shell $(CROSS_COMPILE)gcc --print-sysroot)
SDL_CFLAGS := $(shell $(SYSROOT)/usr/bin/sdl-config --cflags)
SDL_LIBS := $(shell $(SYSROOT)/usr/bin/sdl-config --libs)

INCLUDES = -Iinclude $(SDL_CFLAGS) -I$(PWD)/../sources
OPT_FLAGS = -O3 -Ofast -fdata-sections -fdata-sections -fno-common -fno-PIC -flto -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7ve+simd
LIBAV_PATH := arm-linux-gnueabihf/libc/usr/include
FFMPEG_CFLAGS := -I$(DEVKIT)/$(LIBAV_PATH)/libavformat \
-I$(DEVKIT)/$(LIBAV_PATH)/libavfilter \
-I$(DEVKIT)/$(LIBAV_PATH)/libavcodec \
-I$(DEVKIT)/$(LIBAV_PATH)/libavutil \

FFMPEG_LIBS := -lavformat -lavfilter -lavcodec -lavutil

$(info FFMPEG_CFLAGS: $(FFMPEG_CFLAGS))
$(info FFMPEG_LIBS: $(FFMPEG_LIBS))

INCLUDES = -Iinclude $(SDL_CFLAGS) $(FFMPEG_CFLAGS) -I$(PWD)/../sources
OPT_FLAGS = -O3 -Ofast -fdata-sections -fdata-sections -fno-common -fno-PIC -flto -marm -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7ve+simd

TOOLPATH=$(DEVKIT)/usr/bin
PREFIX := arm-linux-gnueabihf-

CFLAGS := $(DEFINES) $(INCLUDES) $(SDL_CFLAGS) $(OPT_FLAGS) -Wall
CXXFLAGS:= $(CFLAGS) -std=gnu++03
LIBS := -lSDL -lSDL_mixer -lpthread $(SDL_LIBS)
LIBDIRS := $(DEKVIT)/usr/lib
LIBDIRS += $(DEKVIT)/usr/include
LIBS := -lSDL -lSDL_mixer -lpthread $(SDL_LIBS) $(FFMPEG_LIBS)
LIBDIRS := $(DEVKIT)/usr/lib
LIBDIRS += $(DEVKIT)/usr/include
OUTPUT = ../lgpt-miyoo
EXTENSION:= elf

Expand Down
16 changes: 14 additions & 2 deletions projects/Makefile.RG35XXPLUS
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,23 @@ TOOLPATH=$(DEVKIT)/usr/bin
SDL_CFLAGS := -I/$(SYSROOT)/include -D_REENTRANT
SDL_LIBS := -lSDL2

FFMPEG_INCL= libavformat \
libavfilter \
libavcodec \
libavutil \

LIBAV_PATH := aarch64-linux-gnu/include
FFMPEG_CFLAGS := -I$(DEVKIT)/$(LIBAV_PATH)/libavformat -I$(DEVKIT)/$(LIBAV_PATH)/libavfilter -I$(DEVKIT)/$(LIBAV_PATH)/libavcodec -I$(SYSROOT)/$(LIBAV_PATH)/libavutil
FFMPEG_LIBS := -lavformat -lavfilter -lavcodec -lavutil

$(info FFMPEG_CFLAGS: $(FFMPEG_CFLAGS))
$(info FFMPEG_LIBS: $(FFMPEG_LIBS))

OPT_FLAGS = -O3 -mlittle-endian -mabi=lp64 -march=armv8-a+crypto+crc -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -dumpbase
INCLUDES = -Iinclude $(SDL_CFLAGS) -I$(DEVKIT)/$(TRIPLET)/include -I$(DEVKIT)/$(TRIPLET)/include/c++/11/ -I$(PWD)/../sources
INCLUDES = -Iinclude $(SDL_CFLAGS) $(FFMPEG_CFLAGS) -I$(DEVKIT)/$(TRIPLET)/include -I$(DEVKIT)/$(TRIPLET)/include/c++/11/ -I$(PWD)/../sources
CFLAGS := $(DEFINES) $(INCLUDES) $(OPT_FLAGS) -Wall
CXXFLAGS:= $(CFLAGS) -std=gnu++03
LIBS := -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib/pulseaudio $(SDL_LIBS) -lpthread
LIBS := -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib -Wl,-rpath-link,$(DEVKIT)/$(TRIPLET)/lib/pulseaudio $(SDL_LIBS) $(FFMPEG_LIBS) -lpthread
OUTPUT = ../lgpt-rg35xxplus
EXTENSION:= elf

Expand Down
5 changes: 3 additions & 2 deletions projects/Makefile.X64
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
-include $(PWD)/rules_base
-include $(PWD)/rules_libav

# config
DEFINES := \
Expand All @@ -24,10 +25,10 @@ SDL_LIBS := $(shell pkg-config sdl2 --libs)
OPT_FLAGS := -O3
#For debugging
OPT_FLAGS := -g
INCLUDES := $(ALSA_CFLAGS) $(JACK_CFLAGS) $(SDL_CFLAGS) -I$(PWD)/../sources
INCLUDES := $(ALSA_CFLAGS) $(JACK_CFLAGS) $(SDL_CFLAGS) $(FFMPEG_CFLAGS) -I$(PWD)/../sources
CFLAGS := $(OPT_FLAGS) $(DEFINES) $(INCLUDES) -Wall
CXXFLAGS := $(CFLAGS) -std=gnu++11
LIBS := $(ALSA_LIBS) $(JACK_LIBS) $(SDL_LIBS)
LIBS := $(ALSA_LIBS) $(JACK_LIBS) $(SDL_LIBS) $(FFMPEG_LIBS)
OUTPUT := ../lgpt
EXTENSION := x64

Expand Down
Loading
Loading