Updated DPC+ code to latest changes from Spiceware for the Frantic ROM.

Specifically, the 3-voice audio routines read from ROM instead of RAM, and
the setting the ARM MAM register no longer causes the ARM emulation to crash.


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@2278 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2011-11-05 22:31:40 +00:00
parent 8fe6967fbd
commit 1d5ea6a9eb
4 changed files with 19 additions and 6 deletions

View File

@ -22,7 +22,7 @@
#include <cstdlib>
#define STELLA_VERSION "3.4.2_svn"
#define STELLA_VERSION "3.5_svn_test1"
#define STELLA_BUILD atoi("$Rev$" + 6)
#endif

View File

@ -291,11 +291,11 @@ uInt8 CartridgeDPCPlus::peek(uInt16 address)
// Update the music data fetchers (counter & flag)
updateMusicModeDataFetchers();
// using myProgramImage[] instead of myDisplayImage[] because waveforms
// could also be in the 1K Frequency table.
uInt32 i = myProgramImage[6*4096 + (myMusicWaveforms[0] << 5) + (myMusicCounters[0] >> 27)] +
myProgramImage[6*4096 + (myMusicWaveforms[1] << 5) + (myMusicCounters[1] >> 27)] +
myProgramImage[6*4096 + (myMusicWaveforms[2] << 5) + (myMusicCounters[2] >> 27)];
// using myDisplayImage[] instead of myProgramImage[] because waveforms
// can be modified during runtime.
uInt32 i = myDisplayImage[(myMusicWaveforms[0] << 5) + (myMusicCounters[0] >> 27)] +
myDisplayImage[(myMusicWaveforms[1] << 5) + (myMusicCounters[1] >> 27)] +
myDisplayImage[(myMusicWaveforms[2] << 5) + (myMusicCounters[2] >> 27)];
result = (uInt8)i;
break;

View File

@ -213,6 +213,13 @@ void Thumbulator::write16 ( uInt32 addr, uInt32 data )
ram[addr]=data&0xFFFF;
#endif
return;
case 0xE0000000: //MAMCR
if(addr == 0xE01FC000)
{
mamcr = data;
return;
}
}
fatalError("write16", addr, data, "abort");
}
@ -298,6 +305,10 @@ uInt32 Thumbulator::read16 ( uInt32 addr )
if(DBUG)
statusMsg << HEX4 << data << endl;
return(data);
case 0xE0000000: //MAMCR
if(addr == 0xE01FC000)
return mamcr;
}
return fatalError("read16", addr, "abort");
}
@ -2072,6 +2083,7 @@ int Thumbulator::reset ( void )
reg_svc[14]=0x00000c00; //lr (duz this use odd addrs)
reg_sys[15]=0x00000c0b; // entry point of 0xc09+2
// reg_sys[15]+=2;
mamcr = 0;
// fxq: don't care about below so much (maybe to guess timing???)
instructions=0;

View File

@ -118,6 +118,7 @@ class Thumbulator
//uInt32 reg_und[16]; //Undefined mode
uInt32 reg_irq[16]; //Interrupt mode
//uInt32 reg_fiq[16]; //Fast Interrupt mode
uInt32 mamcr;
uInt64 instructions;
uInt64 fetches;