More audio stuff

This commit is contained in:
meepingsnesroms
2018-09-24 18:58:44 -07:00
parent 9be2e02752
commit 7212d18b02
3 changed files with 23 additions and 8 deletions

View File

@@ -40,7 +40,8 @@ sd_card_t palmSdCard;
misc_hw_t palmMisc;
uint16_t palmFramebuffer[160 * (160 + 60)];//really 160*160, the extra pixels are the silkscreened digitizer area
uint16_t* palmExtendedFramebuffer;
uint16_t palmAudio[AUDIO_SAMPLES];
int16_t palmAudio[AUDIO_SAMPLES];
uint32_t palmAudioSampleIndex;
uint32_t palmSpecialFeatures;
double palmCrystalCycles;//how many cycles before toggling the 32.768 kHz crystal
double palmCycleCounter;//can be greater then 0 if too many cycles where run
@@ -94,6 +95,7 @@ uint32_t emulatorInit(buffer_t palmRomDump, buffer_t palmBootDump, uint32_t spec
memset(palmExtendedFramebuffer, 0x00, 320 * 320 * sizeof(uint16_t));
//add 320*320 silkscreen image later, 2xBRZ should be able to make 320*320 version of the 160*160 silkscreen
}
memset(palmAudio, 0x00, AUDIO_SAMPLES * sizeof(int16_t));
m68328Reset();
sed1376Reset();
ads7846Reset();
@@ -493,6 +495,7 @@ uint32_t emulatorInstallPrcPdb(buffer_t file){
void emulateFrame(){
refreshInputState();
palmAudioSampleIndex = 0;
while(palmCycleCounter < CRYSTAL_FREQUENCY / EMU_FPS){
if(palmCrystalCycles != 0.0){

View File

@@ -127,7 +127,8 @@ extern sd_card_t palmSdCard;//dont touch
extern misc_hw_t palmMisc;//read/write allowed
extern uint16_t palmFramebuffer[];//read allowed if FEATURE_320x320 is off, or else invalid data will be displayed
extern uint16_t* palmExtendedFramebuffer;//read allowed if FEATURE_320x320 is on, or else SIGSEGV
extern uint16_t palmAudio[];//read allowed
extern int16_t palmAudio[];//read allowed
extern uint32_t palmAudioSampleIndex;//dont touch
extern uint32_t palmSpecialFeatures;//read allowed
extern double palmCrystalCycles;//dont touch
extern double palmCycleCounter;//dont touch

View File

@@ -621,8 +621,16 @@ void setHwRegister8(uint32_t address, uint8_t value){
break;
case PWMS1 + 1:
if(pwm1FifoEntrys() < 5)
pwm1FifoWrite(value);
//write only if PWM1 enabled
if(registerArrayRead16(PWMC1) & 0x0010)
if(pwm1FifoEntrys() < 5)
pwm1FifoWrite(value);
break;
case PWMP1:
//write only if PWM1 enabled
if(registerArrayRead16(PWMC1) & 0x0010)
registerArrayWrite8(address, value);
break;
case PCTLR:
@@ -988,10 +996,13 @@ void setHwRegister16(uint32_t address, uint16_t value){
break;
case PWMS1:
if(pwm1FifoEntrys() < 5)
pwm1FifoWrite(value >> 8);
if(pwm1FifoEntrys() < 5)
pwm1FifoWrite(value & 0xFF);
//write only if PWM1 enabled
if(registerArrayRead16(PWMC1) & 0x0010){
if(pwm1FifoEntrys() < 5)
pwm1FifoWrite(value >> 8);
if(pwm1FifoEntrys() < 5)
pwm1FifoWrite(value & 0xFF);
}
break;
case SPISPC: