make xm/mod loop working and sort files

This commit is contained in:
Nishi 2026-01-27 15:11:59 +09:00
commit f69a8b3132
Signed by: nishi
GPG key ID: 27EF69B208EB9343
26 changed files with 26798 additions and 6 deletions

View file

@ -78,7 +78,7 @@ int main(int argc, char** argv){
GSClientToggleSkybox(GSEngineGetClient(engine), GSTrue);
if((sound = GSSoundOpen(GSClientGetSoundEngine(GSEngineGetClient(engine)), "game:/fracture.mod")) != NULL){
if((sound = GSSoundOpen(GSClientGetSoundEngine(GSEngineGetClient(engine)), "game:/shanghai.mp3")) != NULL){
GSSoundToggleLoop(sound, 1);
GSSoundStart(sound);
}

View file

@ -20,8 +20,9 @@ add_subdirectory(external/ode)
include_directories(external/stb)
include_directories(external/jar)
include_directories(external/miniaudio)
include_directories(external/dr_libs)
file(GLOB GearSrc_SRC src/*.c)
file(GLOB GearSrc_SRC src/*.c src/gl/*.c src/sound/*.c src/external/*.c)
add_library(GearSrc SHARED ${GearSrc_SRC})
target_include_directories(GearSrc PUBLIC include)

12561
engine/external/dr_libs/dr_flac.h generated vendored Normal file

File diff suppressed because it is too large Load diff

5342
engine/external/dr_libs/dr_mp3.h generated vendored Normal file

File diff suppressed because it is too large Load diff

8878
engine/external/dr_libs/dr_wav.h generated vendored Normal file

File diff suppressed because it is too large Load diff

2
engine/src/external/dr_flac.c vendored Normal file
View file

@ -0,0 +1,2 @@
#define DR_FLAC_IMPLEMENTATION
#include <dr_flac.h>

2
engine/src/external/dr_mp3.c vendored Normal file
View file

@ -0,0 +1,2 @@
#define DR_MP3_IMPLEMENTATION
#include <dr_mp3.h>

2
engine/src/external/dr_wav.c vendored Normal file
View file

@ -0,0 +1,2 @@
#define DR_WAV_IMPLEMENTATION
#include <dr_wav.h>

View file

@ -12,11 +12,13 @@ static void snd_reset(GSSound sound) {
}
static int snd_read(GSSound sound, GSI16* out, int frame) {
if(((jar_mod_context_t*)sound->opaque1)->loopcount > 0) return 0;
int f = ((jar_mod_context_t*)sound->opaque1)->last;
if(f == -1) f = frame;
jar_mod_fillbuffer(sound->opaque1, out, frame, NULL);
return frame;
return f;
}
static void snd_close(GSSound sound) {

View file

@ -10,11 +10,13 @@ static void snd_reset(GSSound sound) {
}
static int snd_read(GSSound sound, GSI16* out, int frame) {
if(jar_xm_get_loop_count(sound->opaque1) == 1) return 0;
int f = jar_xm_get_last(sound->opaque1);
if(f == -1) f = frame;
jar_xm_generate_samples_16bit(sound->opaque1, out, frame);
return frame;
return f;
}
static void snd_close(GSSound sound) {