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>
|
#include <cstdlib>
|
||||||
|
|
||||||
#define STELLA_VERSION "3.4.2_svn"
|
#define STELLA_VERSION "3.5_svn_test1"
|
||||||
#define STELLA_BUILD atoi("$Rev$" + 6)
|
#define STELLA_BUILD atoi("$Rev$" + 6)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -291,11 +291,11 @@ uInt8 CartridgeDPCPlus::peek(uInt16 address)
|
||||||
// Update the music data fetchers (counter & flag)
|
// Update the music data fetchers (counter & flag)
|
||||||
updateMusicModeDataFetchers();
|
updateMusicModeDataFetchers();
|
||||||
|
|
||||||
// using myProgramImage[] instead of myDisplayImage[] because waveforms
|
// using myDisplayImage[] instead of myProgramImage[] because waveforms
|
||||||
// could also be in the 1K Frequency table.
|
// can be modified during runtime.
|
||||||
uInt32 i = myProgramImage[6*4096 + (myMusicWaveforms[0] << 5) + (myMusicCounters[0] >> 27)] +
|
uInt32 i = myDisplayImage[(myMusicWaveforms[0] << 5) + (myMusicCounters[0] >> 27)] +
|
||||||
myProgramImage[6*4096 + (myMusicWaveforms[1] << 5) + (myMusicCounters[1] >> 27)] +
|
myDisplayImage[(myMusicWaveforms[1] << 5) + (myMusicCounters[1] >> 27)] +
|
||||||
myProgramImage[6*4096 + (myMusicWaveforms[2] << 5) + (myMusicCounters[2] >> 27)];
|
myDisplayImage[(myMusicWaveforms[2] << 5) + (myMusicCounters[2] >> 27)];
|
||||||
|
|
||||||
result = (uInt8)i;
|
result = (uInt8)i;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -213,6 +213,13 @@ void Thumbulator::write16 ( uInt32 addr, uInt32 data )
|
||||||
ram[addr]=data&0xFFFF;
|
ram[addr]=data&0xFFFF;
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case 0xE0000000: //MAMCR
|
||||||
|
if(addr == 0xE01FC000)
|
||||||
|
{
|
||||||
|
mamcr = data;
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fatalError("write16", addr, data, "abort");
|
fatalError("write16", addr, data, "abort");
|
||||||
}
|
}
|
||||||
|
@ -298,6 +305,10 @@ uInt32 Thumbulator::read16 ( uInt32 addr )
|
||||||
if(DBUG)
|
if(DBUG)
|
||||||
statusMsg << HEX4 << data << endl;
|
statusMsg << HEX4 << data << endl;
|
||||||
return(data);
|
return(data);
|
||||||
|
|
||||||
|
case 0xE0000000: //MAMCR
|
||||||
|
if(addr == 0xE01FC000)
|
||||||
|
return mamcr;
|
||||||
}
|
}
|
||||||
return fatalError("read16", addr, "abort");
|
return fatalError("read16", addr, "abort");
|
||||||
}
|
}
|
||||||
|
@ -2072,6 +2083,7 @@ int Thumbulator::reset ( void )
|
||||||
reg_svc[14]=0x00000c00; //lr (duz this use odd addrs)
|
reg_svc[14]=0x00000c00; //lr (duz this use odd addrs)
|
||||||
reg_sys[15]=0x00000c0b; // entry point of 0xc09+2
|
reg_sys[15]=0x00000c0b; // entry point of 0xc09+2
|
||||||
// reg_sys[15]+=2;
|
// reg_sys[15]+=2;
|
||||||
|
mamcr = 0;
|
||||||
|
|
||||||
// fxq: don't care about below so much (maybe to guess timing???)
|
// fxq: don't care about below so much (maybe to guess timing???)
|
||||||
instructions=0;
|
instructions=0;
|
||||||
|
|
|
@ -118,6 +118,7 @@ class Thumbulator
|
||||||
//uInt32 reg_und[16]; //Undefined mode
|
//uInt32 reg_und[16]; //Undefined mode
|
||||||
uInt32 reg_irq[16]; //Interrupt mode
|
uInt32 reg_irq[16]; //Interrupt mode
|
||||||
//uInt32 reg_fiq[16]; //Fast Interrupt mode
|
//uInt32 reg_fiq[16]; //Fast Interrupt mode
|
||||||
|
uInt32 mamcr;
|
||||||
|
|
||||||
uInt64 instructions;
|
uInt64 instructions;
|
||||||
uInt64 fetches;
|
uInt64 fetches;
|
||||||
|
|
Loading…
Reference in New Issue