mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-05 06:47:45 -04:00
audio improvement wip
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@33 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
52d3dd5fe1
commit
4dfd9f4230
5 changed files with 32 additions and 9 deletions
|
@ -333,6 +333,16 @@ void sharedmem_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void sharedmem_deinit(void)
|
||||||
|
{
|
||||||
|
munmap(shared_mem, 0x210000);
|
||||||
|
munmap(mp3_mem, MP3_SIZE_MAX);
|
||||||
|
shared_mem = mp3_mem = NULL;
|
||||||
|
shared_data = NULL;
|
||||||
|
shared_ctl = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
extern char **g_argv;
|
extern char **g_argv;
|
||||||
|
|
||||||
/* none of the functions in this file should be called before this one */
|
/* none of the functions in this file should be called before this one */
|
||||||
|
@ -433,19 +443,17 @@ void YM2612ResetChip_940(void)
|
||||||
int YM2612UpdateOne_940(int *buffer, int length, int stereo, int is_buf_empty)
|
int YM2612UpdateOne_940(int *buffer, int length, int stereo, int is_buf_empty)
|
||||||
{
|
{
|
||||||
int *ym_buf = shared_data->ym_buffer;
|
int *ym_buf = shared_data->ym_buffer;
|
||||||
|
int ym_active_chs;
|
||||||
|
|
||||||
//printf("YM2612UpdateOne_940()\n");
|
//printf("YM2612UpdateOne_940()\n");
|
||||||
|
|
||||||
if (CHECK_BUSY(JOB940_YM2612UPDATEONE)) wait_busy_940(JOB940_YM2612UPDATEONE);
|
if (CHECK_BUSY(JOB940_YM2612UPDATEONE)) wait_busy_940(JOB940_YM2612UPDATEONE);
|
||||||
|
|
||||||
// mix in ym buffer
|
ym_active_chs = shared_ctl->ym_active_chs;
|
||||||
if (is_buf_empty) memcpy32(buffer, ym_buf, length<<stereo);
|
|
||||||
// else TODO
|
|
||||||
|
|
||||||
// for (len = length << stereo; len > 0; len--)
|
// mix in ym buffer. is_buf_empty means nobody mixed there anything yet and it may contain trash
|
||||||
// {
|
if (is_buf_empty && ym_active_chs) memcpy32(buffer, ym_buf, length<<stereo);
|
||||||
// *dest_buf++ += *ym_buf++;
|
else memset32(buffer, 0, length<<stereo);
|
||||||
// }
|
|
||||||
|
|
||||||
if (shared_ctl->writebuffsel == 1) {
|
if (shared_ctl->writebuffsel == 1) {
|
||||||
shared_ctl->writebuff0[writebuff_ptr] = 0xffff;
|
shared_ctl->writebuff0[writebuff_ptr] = 0xffff;
|
||||||
|
@ -467,7 +475,7 @@ int YM2612UpdateOne_940(int *buffer, int length, int stereo, int is_buf_empty)
|
||||||
|
|
||||||
add_job_940(JOB940_YM2612UPDATEONE);
|
add_job_940(JOB940_YM2612UPDATEONE);
|
||||||
|
|
||||||
return 1;
|
return ym_active_chs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
void sharedmem_init(void);
|
void sharedmem_init(void);
|
||||||
|
void sharedmem_deinit(void);
|
||||||
|
|
||||||
void YM2612Init_940(int baseclock, int rate);
|
void YM2612Init_940(int baseclock, int rate);
|
||||||
void YM2612ResetChip_940(void);
|
void YM2612ResetChip_940(void);
|
|
@ -34,7 +34,7 @@ OBJCOPY = $(CROSS)objcopy
|
||||||
# frontend
|
# frontend
|
||||||
OBJS += main.o menu.o gp2x.o usbjoy.o emu.o squidgehack.o asmutils.o cpuctrl.o
|
OBJS += main.o menu.o gp2x.o usbjoy.o emu.o squidgehack.o asmutils.o cpuctrl.o
|
||||||
# 940 core control
|
# 940 core control
|
||||||
OBJS += 940ctl_ym2612.o
|
OBJS += 940ctl.o
|
||||||
# Pico
|
# Pico
|
||||||
OBJS += ../../Pico/Area.o ../../Pico/Cart.o ../../Pico/Utils.o ../../Pico/Memory.o ../../Pico/Misc.o \
|
OBJS += ../../Pico/Area.o ../../Pico/Cart.o ../../Pico/Utils.o ../../Pico/Memory.o ../../Pico/Misc.o \
|
||||||
../../Pico/Pico.o ../../Pico/Sek.o ../../Pico/VideoPort.o ../../Pico/Draw2.o ../../Pico/Draw.o
|
../../Pico/Pico.o ../../Pico/Sek.o ../../Pico/VideoPort.o ../../Pico/Draw2.o ../../Pico/Draw.o
|
||||||
|
|
11
gp2x/gp2x.c
11
gp2x/gp2x.c
|
@ -52,6 +52,7 @@ void *gp2x_screen;
|
||||||
#define FRAMEBUFF_ADDR3 0x4000000-640*480*4
|
#define FRAMEBUFF_ADDR3 0x4000000-640*480*4
|
||||||
|
|
||||||
static const int gp2x_screenaddrs[] = { FRAMEBUFF_ADDR0, FRAMEBUFF_ADDR1, FRAMEBUFF_ADDR2, FRAMEBUFF_ADDR3 };
|
static const int gp2x_screenaddrs[] = { FRAMEBUFF_ADDR0, FRAMEBUFF_ADDR1, FRAMEBUFF_ADDR2, FRAMEBUFF_ADDR3 };
|
||||||
|
static unsigned short gp2x_screenaddr_old[4];
|
||||||
|
|
||||||
|
|
||||||
/* video stuff */
|
/* video stuff */
|
||||||
|
@ -269,6 +270,11 @@ void gp2x_init(void)
|
||||||
gp2x_screen = gp2x_screens[0];
|
gp2x_screen = gp2x_screens[0];
|
||||||
screensel = 0;
|
screensel = 0;
|
||||||
|
|
||||||
|
gp2x_screenaddr_old[0] = gp2x_memregs[0x290E>>1];
|
||||||
|
gp2x_screenaddr_old[1] = gp2x_memregs[0x2910>>1];
|
||||||
|
gp2x_screenaddr_old[2] = gp2x_memregs[0x2912>>1];
|
||||||
|
gp2x_screenaddr_old[3] = gp2x_memregs[0x2914>>1];
|
||||||
|
|
||||||
// snd
|
// snd
|
||||||
mixerdev = open("/dev/mixer", O_RDWR);
|
mixerdev = open("/dev/mixer", O_RDWR);
|
||||||
if (mixerdev == -1)
|
if (mixerdev == -1)
|
||||||
|
@ -288,6 +294,11 @@ void gp2x_deinit(void)
|
||||||
Pause940(1);
|
Pause940(1);
|
||||||
|
|
||||||
gp2x_video_changemode(15);
|
gp2x_video_changemode(15);
|
||||||
|
gp2x_memregs[0x290E>>1] = gp2x_screenaddr_old[0];
|
||||||
|
gp2x_memregs[0x2910>>1] = gp2x_screenaddr_old[1];
|
||||||
|
gp2x_memregs[0x2912>>1] = gp2x_screenaddr_old[2];
|
||||||
|
gp2x_memregs[0x2914>>1] = gp2x_screenaddr_old[3];
|
||||||
|
|
||||||
munmap(gp2x_screens[0], 640*480*4);
|
munmap(gp2x_screens[0], 640*480*4);
|
||||||
munmap((void *)gp2x_memregs, 0x10000);
|
munmap((void *)gp2x_memregs, 0x10000);
|
||||||
close(memdev);
|
close(memdev);
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "gp2x.h"
|
#include "gp2x.h"
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
|
#include "940ctl.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
#include "squidgehack.h"
|
#include "squidgehack.h"
|
||||||
|
@ -94,6 +95,7 @@ int main(int argc, char *argv[])
|
||||||
set_RAM_Timings(6, 4, 1, 1, 1, 2, 2);
|
set_RAM_Timings(6, 4, 1, 1, 1, 2, 2);
|
||||||
printf("done.\n"); fflush(stdout);
|
printf("done.\n"); fflush(stdout);
|
||||||
}
|
}
|
||||||
|
sharedmem_init();
|
||||||
emu_Init();
|
emu_Init();
|
||||||
|
|
||||||
engineState = PGS_Menu;
|
engineState = PGS_Menu;
|
||||||
|
@ -134,6 +136,7 @@ int main(int argc, char *argv[])
|
||||||
endloop:
|
endloop:
|
||||||
|
|
||||||
emu_Deinit();
|
emu_Deinit();
|
||||||
|
sharedmem_deinit();
|
||||||
cpuctrl_deinit();
|
cpuctrl_deinit();
|
||||||
gp2x_deinit();
|
gp2x_deinit();
|
||||||
if(mmuhack_status)
|
if(mmuhack_status)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue