You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.0KB

  1. #include "../src/ChipSym.hpp"
  2. #include "standalone_helpers.hpp"
  3. template <typename T>
  4. struct NESGen : StepHandler
  5. {
  6. T ngen;
  7. NESGen() : ngen( -0.2, 0.2, 44100 ) {}
  8. virtual int dostep( void *outputBuffer, void *inputBuffer, unsigned int nBufferFrames,
  9. double streamTime, RtAudioStreamStatus status ) override
  10. {
  11. unsigned int i, j;
  12. double *buffer = (double *) outputBuffer;
  13. for ( i=0; i<nBufferFrames; i++ ) {
  14. *buffer++ = ngen.step();
  15. }
  16. return 0;
  17. }
  18. };
  19. int main( int argc, char** argv )
  20. {
  21. ChipSym::CPUStepper cp( 44100, 1.789773 );
  22. std::cout << "Do some NES CPU Tick pulls at 44.1k\n";
  23. for( uint i=0; i<5; ++i )
  24. {
  25. std::cout << i * 10 << "\t";
  26. for( uint j=0; j<10; ++j )
  27. {
  28. std::cout << cp.nextStepCPUTicks() << " ";
  29. }
  30. std::cout << "\n";
  31. }
  32. #if 0
  33. std::cout << "Running the NES tri gen\n";
  34. NESGen< ChipSym::NESTriangle > triGen;
  35. int df = 2<<8;
  36. triGen.ngen.setDigWavelength( df );
  37. triGen.playAudioUntilEnterPressed();
  38. triGen.ngen.setDigWavelength( df / 2 );
  39. triGen.playAudioUntilEnterPressed();
  40. NESGen< ChipSym::NESPulse > pulsGen;
  41. df = 2<<9;
  42. pulsGen.ngen.setDigWavelength( df );
  43. pulsGen.playAudioUntilEnterPressed();
  44. pulsGen.ngen.setDigWavelength( df / 2 );
  45. pulsGen.playAudioUntilEnterPressed();
  46. NESGen< ChipSym::NESNoise > noiseGen;
  47. noiseGen.playAudioUntilEnterPressed();
  48. noiseGen.ngen.setModeFlag( true );
  49. noiseGen.playAudioUntilEnterPressed();
  50. noiseGen.ngen.setModeFlag( false );
  51. noiseGen.ngen.setPeriod( 3 );
  52. noiseGen.playAudioUntilEnterPressed();
  53. noiseGen.ngen.setModeFlag( false );
  54. noiseGen.ngen.setPeriod( 11 );
  55. noiseGen.playAudioUntilEnterPressed();
  56. #endif
  57. NESGen< ChipSym::NESArbitraryWaveform > arbGen;
  58. int df = 2<<7;
  59. arbGen.ngen.setDigWavelength( df );
  60. arbGen.playAudioUntilEnterPressed();
  61. for( uint i=0; i<32; ++i )
  62. {
  63. arbGen.ngen.setWaveformPoint( i, 7 * ( sin ( 2 * 3.14159 * i / 32 ) + 1 ) );
  64. }
  65. arbGen.playAudioUntilEnterPressed();
  66. return 0;
  67. }