Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. --- a/src/hardware/dbopl.cpp
  2. +++ b/src/hardware/dbopl.cpp
  3. @@ -1086,14 +1086,14 @@ void Chip::WriteBD( Bit8u val ) {
  4. #define REGOP( _FUNC_ ) \
  5. index = ( ( reg >> 3) & 0x20 ) | ( reg & 0x1f ); \
  6. if ( OpOffsetTable[ index ] ) { \
  7. - Operator* regOp = (Operator*)( ((char *)this ) + OpOffsetTable[ index ] ); \
  8. + Operator* regOp = (Operator*)( ((char *)this ) + OpOffsetTable[ index ]-1 ); \
  9. regOp->_FUNC_( this, val ); \
  10. }
  11.  
  12. #define REGCHAN( _FUNC_ ) \
  13. index = ( ( reg >> 4) & 0x10 ) | ( reg & 0xf ); \
  14. if ( ChanOffsetTable[ index ] ) { \
  15. - Channel* regChan = (Channel*)( ((char *)this ) + ChanOffsetTable[ index ] ); \
  16. + Channel* regChan = (Channel*)( ((char *)this ) + ChanOffsetTable[ index ]-1 ); \
  17. regChan->_FUNC_( this, val ); \
  18. }
  19.  
  20. @@ -1444,7 +1444,7 @@ void InitTables( void ) {
  21. //Add back the bits for highest ones
  22. if ( i >= 16 )
  23. index += 9;
  24. - ChanOffsetTable[i] = (Bit16u)(index*sizeof(DBOPL::Channel));
  25. + ChanOffsetTable[i] = 1+(Bit16u)(index*sizeof(DBOPL::Channel));
  26. }
  27. //Same for operators
  28. for ( Bitu i = 0; i < 64; i++ ) {
  29. @@ -1460,11 +1460,12 @@ void InitTables( void ) {
  30. OpOffsetTable[i] = ChanOffsetTable[chNum]+(Bit16u)(opNum*sizeof(DBOPL::Operator));
  31. }
  32. #if 0
  33. + DBOPL::Chip* chip = 0;
  34. //Stupid checks if table's are correct
  35. for ( Bitu i = 0; i < 18; i++ ) {
  36. Bit32u find = (Bit16u)( &(chip->chan[ i ]) );
  37. for ( Bitu c = 0; c < 32; c++ ) {
  38. - if ( ChanOffsetTable[c] == find ) {
  39. + if ( ChanOffsetTable[c] == find+1 ) {
  40. find = 0;
  41. break;
  42. }
  43. @@ -1476,7 +1477,7 @@ void InitTables( void ) {
  44. for ( Bitu i = 0; i < 36; i++ ) {
  45. Bit32u find = (Bit16u)( &(chip->chan[ i / 2 ].op[i % 2]) );
  46. for ( Bitu c = 0; c < 64; c++ ) {
  47. - if ( OpOffsetTable[c] == find ) {
  48. + if ( OpOffsetTable[c] == find+1 ) {
  49. find = 0;
  50. break;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement