mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-05 15:27:46 -04:00
core, chd support
This commit is contained in:
parent
37631374df
commit
4bb0b70ec8
9 changed files with 57 additions and 28 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -7,6 +7,9 @@
|
||||||
[submodule "pico/sound/emu2413"]
|
[submodule "pico/sound/emu2413"]
|
||||||
path = pico/sound/emu2413
|
path = pico/sound/emu2413
|
||||||
url = https://github.com/digital-sound-antiques/emu2413.git
|
url = https://github.com/digital-sound-antiques/emu2413.git
|
||||||
|
[submodule "pico/cd/libchdr"]
|
||||||
|
path = pico/cd/libchdr
|
||||||
|
url = https://github.com/rtissera/libchdr
|
||||||
[submodule "platform/common/minimp3"]
|
[submodule "platform/common/minimp3"]
|
||||||
path = platform/common/minimp3
|
path = platform/common/minimp3
|
||||||
url = https://github.com/lieff/minimp3
|
url = https://github.com/lieff/minimp3
|
||||||
|
|
34
Makefile
34
Makefile
|
@ -57,6 +57,7 @@ CFLAGS += -fno-common -fno-stack-protector -fno-guess-branch-probability -fno-ca
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# default settings
|
# default settings
|
||||||
|
use_libchdr ?= 1
|
||||||
ifeq "$(ARCH)" "arm"
|
ifeq "$(ARCH)" "arm"
|
||||||
use_cyclone ?= 1
|
use_cyclone ?= 1
|
||||||
use_drz80 ?= 1
|
use_drz80 ?= 1
|
||||||
|
@ -236,8 +237,39 @@ OBJS += platform/common/mp3_minimp3.o
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(HAVE_LIBCHDR))
|
ifeq (1,$(use_libchdr))
|
||||||
|
# yuck, cmake looks like a nightmare to embed in a multi-platform make env :-/
|
||||||
|
# Moreover, static library linking isn't working.
|
||||||
|
# Reference all source files directly and hope for the best. Tested on linux,
|
||||||
|
# might not work on other platforms, and misses autodetected optimizations.
|
||||||
CFLAGS += -DUSE_LIBCHDR
|
CFLAGS += -DUSE_LIBCHDR
|
||||||
|
|
||||||
|
# chdr
|
||||||
|
CHDR = pico/cd/libchdr
|
||||||
|
CHDR_OBJS += $(CHDR)/src/libchdr_chd.o $(CHDR)/src/libchdr_cdrom.o
|
||||||
|
CHDR_OBJS += $(CHDR)/src/libchdr_flac.o
|
||||||
|
CHDR_OBJS += $(CHDR)/src/libchdr_bitstream.o $(CHDR)/src/libchdr_huffman.o
|
||||||
|
|
||||||
|
# flac
|
||||||
|
FLAC = $(CHDR)/deps/flac-1.3.3
|
||||||
|
FLAC_OBJS += $(FLAC)/src/format.o $(FLAC)/src/lpc.o $(FLAC)/src/cpu.o
|
||||||
|
FLAC_OBJS += $(FLAC)/src/metadata_object.o $(FLAC)/src/metadata_iterators.o
|
||||||
|
FLAC_OBJS += $(FLAC)/src/bitmath.o $(FLAC)/src/bitreader.o $(FLAC)/src/md5.o
|
||||||
|
FLAC_OBJS += $(FLAC)/src/memory.o $(FLAC)/src/fixed.o $(FLAC)/src/crc.o
|
||||||
|
FLAC_OBJS += $(FLAC)/src/window.o $(FLAC)/src/stream_decoder.o
|
||||||
|
$(FLAC_OBJS): CFLAGS += -DPACKAGE_VERSION=\"1.3.3\" -DFLAC__HAS_OGG=0
|
||||||
|
$(FLAC_OBJS): CFLAGS += -DHAVE_LROUND -DHAVE_STDINT_H -DHAVE_STDLIB_H # ugh...
|
||||||
|
|
||||||
|
# lzma
|
||||||
|
LZMA = $(CHDR)/deps/lzma-19.00
|
||||||
|
LZMA_OBJS += $(LZMA)/src/CpuArch.o $(LZMA)/src/Alloc.o $(LZMA)/src/LzmaEnc.o
|
||||||
|
LZMA_OBJS += $(LZMA)/src/Sort.o $(LZMA)/src/LzmaDec.o $(LZMA)/src/LzFind.o
|
||||||
|
LZMA_OBJS += $(LZMA)/src/Delta.o
|
||||||
|
$(LZMA_OBJS): CFLAGS += -D_7ZIP_ST
|
||||||
|
|
||||||
|
OBJS += $(CHDR_OBJS) $(FLAC_OBJS) $(LZMA_OBJS)
|
||||||
|
CHDR_I = $(shell find $(CHDR) -name 'include')
|
||||||
|
CFLAGS += $(patsubst %, -I%, $(CHDR_I)) # tsk...
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq "$(PLATFORM_ZLIB)" "1"
|
ifeq "$(PLATFORM_ZLIB)" "1"
|
||||||
|
|
|
@ -564,8 +564,6 @@ asm_32xdraw = 0
|
||||||
asm_32xmemory = 0
|
asm_32xmemory = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
#HAVE_LIBCHDR = 1
|
|
||||||
|
|
||||||
CFLAGS += $(fpic)
|
CFLAGS += $(fpic)
|
||||||
|
|
||||||
ifeq ($(findstring Haiku,$(shell uname -a)),)
|
ifeq ($(findstring Haiku,$(shell uname -a)),)
|
||||||
|
|
9
configure
vendored
9
configure
vendored
|
@ -372,9 +372,10 @@ if check_libavcodec; then
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_libchdr; then
|
#if check_libchdr; then
|
||||||
have_libchdr="yes"
|
# have_libchdr="yes"
|
||||||
fi
|
# MAIN_LDLIBS="-lchdr $MAIN_LDLIBS"
|
||||||
|
#fi
|
||||||
|
|
||||||
# find what audio support we can compile
|
# find what audio support we can compile
|
||||||
if [ "x$sound_drivers" = "x" ]; then
|
if [ "x$sound_drivers" = "x" ]; then
|
||||||
|
@ -426,7 +427,7 @@ echo "C compiler flags $CFLAGS"
|
||||||
echo "libraries $MAIN_LDLIBS"
|
echo "libraries $MAIN_LDLIBS"
|
||||||
echo "linker flags $LDFLAGS"
|
echo "linker flags $LDFLAGS"
|
||||||
echo "libavcodec (mp3) $have_libavcodec"
|
echo "libavcodec (mp3) $have_libavcodec"
|
||||||
echo "libchdr $have_libchdr"
|
#echo "libchdr $have_libchdr"
|
||||||
# echo "ARMv7 optimizations $have_armv7"
|
# echo "ARMv7 optimizations $have_armv7"
|
||||||
|
|
||||||
echo "# Automatically generated by configure" > $config_mak
|
echo "# Automatically generated by configure" > $config_mak
|
||||||
|
|
|
@ -9,8 +9,6 @@
|
||||||
|
|
||||||
#include "pico_int.h"
|
#include "pico_int.h"
|
||||||
#include <cpu/debug.h>
|
#include <cpu/debug.h>
|
||||||
#include <unzip/unzip.h>
|
|
||||||
#include <zlib.h>
|
|
||||||
|
|
||||||
#ifdef USE_LIBRETRO_VFS
|
#ifdef USE_LIBRETRO_VFS
|
||||||
#include "file_stream_transforms.h"
|
#include "file_stream_transforms.h"
|
||||||
|
@ -21,6 +19,9 @@
|
||||||
#include "libchdr/cdrom.h"
|
#include "libchdr/cdrom.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <unzip/unzip.h>
|
||||||
|
#include <zlib.h>
|
||||||
|
|
||||||
static int rom_alloc_size;
|
static int rom_alloc_size;
|
||||||
static const char *rom_exts[] = { "bin", "gen", "smd", "iso", "sms", "gg", "sg" };
|
static const char *rom_exts[] = { "bin", "gen", "smd", "iso", "sms", "gg", "sg" };
|
||||||
|
|
||||||
|
|
1
pico/cd/libchdr
Submodule
1
pico/cd/libchdr
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit cecbe84eb7ee1b0e5e558d15c2882a9d9be37794
|
|
@ -754,7 +754,7 @@ void emu_handle_resume(void)
|
||||||
mp3_reopen_file();
|
mp3_reopen_file();
|
||||||
|
|
||||||
#if 0 // TODO
|
#if 0 // TODO
|
||||||
if (!(Pico_mcd->s68k_regs[0x36] & 1)/* && (Pico_mcd->scd.Status_CDC & 1)*/)
|
if (!(Pico_mcd->s68k_regs[0x36] & 1))
|
||||||
cdd_change_track(cdd.index, cdd.lba);
|
cdd_change_track(cdd.index, cdd.lba);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -452,24 +452,6 @@ void mp3_update(int *buffer, int length, int stereo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int mp3_get_offset(void) // 0-1023
|
|
||||||
{
|
|
||||||
unsigned int offs1024 = 0;
|
|
||||||
int cdda_on;
|
|
||||||
|
|
||||||
cdda_on = (PicoIn.AHW & PAHW_MCD) && (PicoIn.opt & POPT_EN_MCD_CDDA) && !(Pico_mcd->s68k_regs[0x36] & 1) &&
|
|
||||||
/* TODO (Pico_mcd->scd.Status_CDC & 1) &&*/ mp3_handle >= 0;
|
|
||||||
|
|
||||||
if (cdda_on) {
|
|
||||||
offs1024 = mp3_src_pos << 7;
|
|
||||||
offs1024 /= mp3_src_size >> 3;
|
|
||||||
}
|
|
||||||
lprintf("offs1024=%u (%i/%i)\n", offs1024, mp3_src_pos, mp3_src_size);
|
|
||||||
|
|
||||||
return offs1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void mp3_reopen_file(void)
|
void mp3_reopen_file(void)
|
||||||
{
|
{
|
||||||
if (mp3_fname == NULL) return;
|
if (mp3_fname == NULL) return;
|
||||||
|
|
|
@ -326,3 +326,14 @@ int _flush_cache (char *addr, const int size, const int op)
|
||||||
sceKernelIcacheInvalidateRange(addr, size);
|
sceKernelIcacheInvalidateRange(addr, size);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* stubs for libflac (embedded in libchdr) */
|
||||||
|
int chown(const char *pathname, uid_t owner, gid_t group) { return -1; }
|
||||||
|
int chmod(const char *pathname, mode_t mode) { return -1; }
|
||||||
|
int utime(const char *filename, const struct utimbuf *times) { return -1; }
|
||||||
|
int fseeko64(FILE *stream, _off64_t offset, int whence)
|
||||||
|
{ return fseeko(stream, offset, whence); }
|
||||||
|
_off64_t ftello64(FILE *stream)
|
||||||
|
{ return ftello(stream); }
|
||||||
|
int posix_memalign(void **memptr, size_t alignment, size_t size)
|
||||||
|
{ *memptr = memalign(alignment, size); return 0; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue