mirror of
https://github.com/polpo/picogus.git
synced 2026-10-25 21:40:16 +00:00
Fix multifw build
This commit is contained in:
1 parent
7dcf583ff6
commit
29da06d8ea
6 files changed
+16
-31
No files matched your search
+13
-27
@@ -269,13 +269,12 @@ function(build_gus TARGET_NAME MULTIFW)
|
||||
target_link_libraries(${TARGET_NAME} rp2040-psram hardware_interp)
|
||||
endfunction()
|
||||
|
||||
option(SOUND_WSS "Build SB firmware with WSS (AD1848) support instead of SB16 DSP" OFF)
|
||||
################################################################################
|
||||
# Build SB firmware
|
||||
option(SOUND_WSS "Build SB firmware with WSS (AD1848) support instead of SB16 DSP" OFF)
|
||||
|
||||
function(build_sb TARGET_NAME MULTIFW)
|
||||
function(build_sb_8950 TARGET_NAME MULTIFW)
|
||||
set(USB_JOYSTICK TRUE)
|
||||
set(SOUND_MPU FALSE)
|
||||
set(SOUND_MPU TRUE)
|
||||
set(SOUND_OPL TRUE)
|
||||
set(CDROM TRUE)
|
||||
config_target(${TARGET_NAME} ${MULTIFW})
|
||||
@@ -305,11 +304,11 @@ function(build_sb TARGET_NAME MULTIFW)
|
||||
endfunction()
|
||||
|
||||
################################################################################
|
||||
# Build SB firmware — ymf262 OPL3 variant
|
||||
# Build SB firmware — ymfm ymf262 OPL3
|
||||
function(build_sb_ymf262 TARGET_NAME MULTIFW)
|
||||
set(USE_YMFM_OPL TRUE)
|
||||
set(USB_JOYSTICK TRUE)
|
||||
set(SOUND_MPU FALSE)
|
||||
set(SOUND_MPU TRUE)
|
||||
set(SOUND_OPL TRUE)
|
||||
set(CDROM TRUE)
|
||||
config_target(${TARGET_NAME} ${MULTIFW})
|
||||
@@ -544,11 +543,11 @@ if(PROJECT_TYPE STREQUAL "MULTIFW")
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# OPL variant for the adlib slot in the multifw bundle.
|
||||
# Uncomment exactly one of the three lines below:
|
||||
# Uncomment exactly one of the lines below:
|
||||
# set(MULTIFW_OPL_VARIANT "emu8950") # original emu8950 — OPL2, assembly-optimized
|
||||
# set(MULTIFW_OPL_VARIANT "ym3812") # ymfm ym3812 — OPL2, ymfm quality
|
||||
set(MULTIFW_OPL_VARIANT "ymf262") # ymfm ymf262 — OPL3, true stereo
|
||||
#set(MULTIFW_OPL_VARIANT "dbopl") # DOSBox OPL — OPL3, true stereo
|
||||
# set(MULTIFW_OPL_VARIANT "ymf262") # ymfm ymf262 — OPL3, true stereo - note not yet fast enough for RP2040
|
||||
set(MULTIFW_OPL_VARIANT "dbopl") # DOSBox OPL — OPL3, true stereo
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
if(MULTIFW_OPL_VARIANT STREQUAL "ymf262")
|
||||
@@ -621,19 +620,9 @@ if(PROJECT_TYPE STREQUAL "MULTIFW")
|
||||
build_psg(pg-psg FALSE)
|
||||
build_psg(pg-psg-multifw TRUE)
|
||||
add_dependencies(pg-psg-multifw pg-psg generate_flash_firmware_h)
|
||||
build_sb(pg-sb FALSE)
|
||||
build_sb(pg-sb-multifw TRUE)
|
||||
build_sb_dbopl3(pg-sb FALSE)
|
||||
build_sb_dbopl3(pg-sb-multifw TRUE)
|
||||
add_dependencies(pg-sb-multifw pg-sb generate_flash_firmware_h)
|
||||
# Standalone ymf262/ym3812 targets — always built, not in combined picogus.uf2
|
||||
# (skipped if already built above as the selected MULTIFW_OPL_VARIANT)
|
||||
if(NOT MULTIFW_OPL_VARIANT STREQUAL "ymf262")
|
||||
build_sb_ymf262(pg-sb-ymf262 FALSE)
|
||||
build_adlib_ymf262(pg-adlib-ymf262 FALSE)
|
||||
endif()
|
||||
if(NOT MULTIFW_OPL_VARIANT STREQUAL "ym3812")
|
||||
build_sb_ym3812(pg-sb-ym3812 FALSE)
|
||||
build_adlib_ym3812(pg-adlib-ym3812 FALSE)
|
||||
endif()
|
||||
build_usb(pg-usb FALSE)
|
||||
build_usb(pg-usb-multifw TRUE)
|
||||
add_dependencies(pg-usb-multifw pg-usb generate_flash_firmware_h)
|
||||
@@ -671,12 +660,9 @@ if(PROJECT_TYPE STREQUAL "MULTIFW")
|
||||
elseif(PROJECT_TYPE STREQUAL "GUS")
|
||||
set(FW_TARGET pg-gus)
|
||||
build_gus(pg-gus FALSE)
|
||||
elseif(PROJECT_TYPE STREQUAL "SB")
|
||||
set(FW_TARGET pg-sb)
|
||||
build_sb(pg-sb FALSE)
|
||||
elseif(PROJECT_TYPE STREQUAL "SB_YMFM")
|
||||
set(FW_TARGET pg-sb-ymf262)
|
||||
build_sb_ymf262(pg-sb-ymf262 FALSE)
|
||||
elseif(PROJECT_TYPE STREQUAL "SB_EMU8950")
|
||||
set(FW_TARGET pg-sb-emu8950)
|
||||
build_sb_emu8950(pg-sb-emu8950 FALSE)
|
||||
elseif(PROJECT_TYPE STREQUAL "SB_YMF262")
|
||||
set(FW_TARGET pg-sb-ymf262)
|
||||
build_sb_ymf262(pg-sb-ymf262 FALSE)
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "hardware/structs/timer.h"
|
||||
#include "audio/volctrl.h"
|
||||
|
||||
int32_t cd_audio_volume = (1 << VOLCTRL_FRACT_BITS);
|
||||
|
||||
/* The addresses sent from the guest are absolute, ie. a LBA of 0 corresponds to a MSF of 00:00:00. Otherwise, the counter displayed by the guest is wrong:
|
||||
there is a seeming 2 seconds in which audio plays but counter does not move, while a data track before audio jumps to 2 seconds before the actual start
|
||||
|
||||
@@ -136,9 +136,7 @@ typedef struct cdrom_fifo_t {
|
||||
} cdrom_fifo_t;
|
||||
|
||||
|
||||
#if USE_CD_AUDIO_FIFO
|
||||
#include "audio/audio_fifo.h"
|
||||
#endif
|
||||
|
||||
typedef struct cdrom {
|
||||
uint8_t id;
|
||||
|
||||
@@ -174,7 +174,6 @@ void play_psg() {
|
||||
while (!(buffer = take_audio_buffer(ap, false))) {
|
||||
#ifdef USB_STACK
|
||||
tuh_task();
|
||||
usb_hotplug_task();
|
||||
#endif
|
||||
}
|
||||
int16_t *samples = (int16_t *) buffer->buffer->bytes;
|
||||
|
||||
@@ -301,8 +301,10 @@ void play_adlib() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if SOUND_SB
|
||||
// Process DSP commands
|
||||
sbdsp_process();
|
||||
#endif
|
||||
|
||||
// Generate OPL stereo pairs and add to output FIFO.
|
||||
for (uint32_t opl_i = 0;
|
||||
|
||||
@@ -111,7 +111,6 @@ void play_usb() {
|
||||
struct audio_buffer *buffer;
|
||||
while (!(buffer = take_audio_buffer(ap, false))) {
|
||||
tuh_task();
|
||||
usb_hotplug_task();
|
||||
}
|
||||
int16_t *samples = (int16_t *) buffer->buffer->bytes;
|
||||
buffer->sample_count = cdrom_audio_callback_simple(&cdrom, samples, SAMPLES_PER_BUFFER << 1, false) >> 1;
|
||||
|
||||
Reference in new issue
Block a user