mirror of https://github.com/stella-emu/stella.git
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:
parent
8fe6967fbd
commit
1d5ea6a9eb
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue