mirror of
https://github.com/RaySollium99/picodrive.git
synced 2025-09-04 23:07:46 -04:00
platform gp2x, fix compilation with original toolchain (gcc 4.1)
This commit is contained in:
parent
97232a47c9
commit
110a49ed2a
10 changed files with 59 additions and 53 deletions
|
@ -164,10 +164,10 @@ mix_16h_to_32_resample_stereo:
|
|||
|
||||
m16_32_rss_loop:
|
||||
ldmia r0, {r5-r8}
|
||||
lsr r9, r4, #16
|
||||
mov r9, r4, lsr #16
|
||||
ldr r12,[r1, r9, lsl #2]
|
||||
add r4, r4, r3
|
||||
lsr r9, r4, #16
|
||||
mov r9, r4, lsr #16
|
||||
ldr lr ,[r1, r9, lsl #2]
|
||||
add r4, r4, r3
|
||||
subs r2, r2, #2
|
||||
|
@ -183,7 +183,7 @@ m16_32_rss_loop:
|
|||
m16_32_rss_end:
|
||||
tst r2, #1
|
||||
ldmeqfd sp!, {r4-r9,pc}
|
||||
lsr r9, r4, #16
|
||||
mov r9, r4, lsr #16
|
||||
ldr lr ,[r1, r9, lsl #2]
|
||||
ldmia r0, {r5,r6}
|
||||
mov r12,lr, lsl #16
|
||||
|
@ -207,10 +207,10 @@ mix_16h_to_32_resample_mono:
|
|||
|
||||
m16_32_rsm_loop:
|
||||
ldmia r0, {r5-r6}
|
||||
lsr r9, r4, #16
|
||||
mov r9, r4, lsr #16
|
||||
ldr r12,[r1, r9, lsl #2]
|
||||
add r4, r4, r3
|
||||
lsr r9, r4, #16
|
||||
mov r9, r4, lsr #16
|
||||
ldr lr ,[r1, r9, lsl #2]
|
||||
add r4, r4, r3
|
||||
subs r2, r2, #2
|
||||
|
@ -226,7 +226,7 @@ m16_32_rsm_loop:
|
|||
m16_32_rsm_end:
|
||||
tst r2, #1
|
||||
ldmeqfd sp!, {r4-r6,r9,pc}
|
||||
lsr r9, r4, #16
|
||||
mov r9, r4, lsr #16
|
||||
ldr lr ,[r1, r9, lsl #2]
|
||||
ldr r5, [r0]
|
||||
mov r12,lr, lsl #16
|
||||
|
@ -272,11 +272,11 @@ m16_32_rsm_end:
|
|||
@ lowpass filter
|
||||
@ in=int_sample (max 20 bit), y=filter memory, r12=alpha(Q8), r8=tmp
|
||||
.macro LPfilt in y
|
||||
@ asr r8, \y, #8
|
||||
@ mov r8, \y, asr #8
|
||||
@ rsb r8, r8, \in, lsl #4 @ fixpoint 20.12
|
||||
sub r8, \in, \y, asr #12 @ fixpoint 20.12
|
||||
mla \y, r8, r12, \y
|
||||
asr \in, \y, #12
|
||||
mov \in, \y, asr #12
|
||||
.endm
|
||||
|
||||
|
||||
|
@ -551,8 +551,8 @@ m32_16l_st_l_no_unal2:
|
|||
mix_reset:
|
||||
ldr r2, =filter
|
||||
rsb r0, r0, #0x10000
|
||||
@ asr r0, r0, #8
|
||||
asr r0, r0, #4
|
||||
@ mov r0, r0, asr #8
|
||||
mov r0, r0, asr #4
|
||||
str r0, [r2], #4
|
||||
mov r1, #0
|
||||
str r1, [r2], #4
|
||||
|
|
|
@ -8,12 +8,12 @@
|
|||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include "../pico_int.h"
|
||||
#include "ym2612.h"
|
||||
#include "sn76496.h"
|
||||
#include "../pico_int.h"
|
||||
#include "mix.h"
|
||||
#include "emu2413/emu2413.h"
|
||||
#include "resampler.h"
|
||||
#include "mix.h"
|
||||
|
||||
void (*PsndMix_32_to_16l)(s16 *dest, s32 *src, int count) = mix_32_to_16l_stereo;
|
||||
|
||||
|
@ -89,7 +89,7 @@ static void YM2612Update(s32 *buffer, int length, int stereo)
|
|||
ymchans = YM2612UpdateOne(buffer, length, stereo, 1);
|
||||
}
|
||||
|
||||
int YM2612UpdateFIR(s32 *buffer, int length, int stereo, int is_buf_empty)
|
||||
static int YM2612UpdateFIR(s32 *buffer, int length, int stereo, int is_buf_empty)
|
||||
{
|
||||
resampler_update(fmresampler, buffer, length, YM2612Update);
|
||||
return ymchans;
|
||||
|
|
|
@ -114,6 +114,7 @@
|
|||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "../pico_int.h"
|
||||
#include "ym2612.h"
|
||||
|
||||
#ifndef EXTERNAL_YM2612
|
||||
|
|
|
@ -187,22 +187,23 @@ int YM2612PicoStateLoad2(int *tat, int *tbt);
|
|||
#else
|
||||
/* GP2X specific */
|
||||
#include <platform/gp2x/940ctl.h>
|
||||
#define YM2612Init(baseclock,rate,flags) do { \
|
||||
if (PicoIn.opt&POPT_EXT_FM) YM2612Init_940(baseclock, rate, flags); \
|
||||
else YM2612Init_(baseclock, rate, flags); \
|
||||
} while (0)
|
||||
#define YM2612ResetChip() do { \
|
||||
if (PicoIn.opt&POPT_EXT_FM) YM2612ResetChip_940(); \
|
||||
else YM2612ResetChip_(); \
|
||||
} while (0)
|
||||
#define YM2612UpdateOne(buffer,length,stereo,is_buf_empty) do { \
|
||||
(PicoIn.opt&POPT_EXT_FM) ? YM2612UpdateOne_940(buffer, length, stereo, is_buf_empty) : \
|
||||
YM2612UpdateOne_(buffer, length, stereo, is_buf_empty); \
|
||||
} while (0)
|
||||
#define YM2612PicoStateLoad() do { \
|
||||
if (PicoIn.opt&POPT_EXT_FM) YM2612PicoStateLoad_940(); \
|
||||
else YM2612PicoStateLoad_(); \
|
||||
} while (0)
|
||||
static inline void YM2612Init(int baseclock, int rate, int flags) {
|
||||
if (PicoIn.opt&POPT_EXT_FM) YM2612Init_940(baseclock, rate, flags);
|
||||
else YM2612Init_(baseclock, rate, flags);
|
||||
}
|
||||
|
||||
static inline void YM2612ResetChip(void) {
|
||||
if (PicoIn.opt&POPT_EXT_FM) YM2612ResetChip_940();
|
||||
else YM2612ResetChip_();
|
||||
}
|
||||
static inline int YM2612UpdateOne(s32 *buffer, int length, int stereo, int is_buf_empty) {
|
||||
return (PicoIn.opt&POPT_EXT_FM) ? YM2612UpdateOne_940(buffer, length, stereo, is_buf_empty) :
|
||||
YM2612UpdateOne_(buffer, length, stereo, is_buf_empty);
|
||||
}
|
||||
static inline void YM2612PicoStateLoad(void) {
|
||||
if (PicoIn.opt&POPT_EXT_FM) YM2612PicoStateLoad_940();
|
||||
else YM2612PicoStateLoad_();
|
||||
}
|
||||
#endif /* __GP2X__ */
|
||||
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@
|
|||
1: @ EG_REL
|
||||
cmp r0, #0x200 @ if ( volume >= 0x200 )
|
||||
movge r0, #1024
|
||||
subge r0, #1
|
||||
subge r0, r0, #1
|
||||
movge r3, #EG_OFF
|
||||
strgeb r3, [r5,#0x17] @ state
|
||||
|
||||
|
@ -180,8 +180,8 @@
|
|||
cmpge r3, #EG_REL+1
|
||||
ldrh r3, [r5,#0x18] @ tl
|
||||
rsbge r0, r0, #0x200 @ volume = (0x200-volume) & MAX_ATT
|
||||
lslge r0, r0, #22
|
||||
lsrge r0, r0, #22
|
||||
movge r0, r0, lsl #22
|
||||
movge r0, r0, lsr #22
|
||||
|
||||
11:
|
||||
#endif
|
||||
|
@ -207,7 +207,7 @@
|
|||
beq 1f
|
||||
|
||||
tst r0, #0x02
|
||||
eorne r0, r0, lsr #8 @ ssg ^= ssgn ^ 4
|
||||
eorne r0, r0, r0, lsr #8 @ ssg ^= ssgn ^ 4
|
||||
eorne r0, r0, #0x4
|
||||
orrne r0, r0, #0x400 @ ssgn = 4
|
||||
strneh r0, [r5,#0x30]
|
||||
|
@ -258,8 +258,8 @@
|
|||
cmpge r3, #EG_REL+1
|
||||
ldrh r3, [r5,#0x18] @ tl
|
||||
rsbge r0, r0, #0x200 @ volume = (0x200-volume) & MAX_ATT
|
||||
lslge r0, r0, #22
|
||||
lsrge r0, r0, #22
|
||||
movge r0, r0, lsl #22
|
||||
movge r0, r0, lsr #22
|
||||
|
||||
add r0, r0, r3 @ volume += tl
|
||||
strh r0, [r5,#0x34] @ vol_out
|
||||
|
@ -857,10 +857,10 @@ crl_smp_loop_end:
|
|||
tst r0, r0
|
||||
beq ctl_sample_skip
|
||||
orr r4, r4, #8 @ have_output
|
||||
lsr r1, r0, #31 @ clip (saturate) sample to 14 bit
|
||||
mov r1, r0, lsr #31 @ clip (saturate) sample to 14 bit
|
||||
cmn r1, r0, asr #13
|
||||
subne r0, r1, #0x80000001
|
||||
asrne r0, r0, #18
|
||||
movne r0, r0, asr #18
|
||||
tst r4, r1, lsl #7 @ (sample < 0) && dac?
|
||||
bicne r0, r0, #0x1f
|
||||
subne r0, r0, #7<<5
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue