notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
psp gfx scaling/etc stuff
[picodrive.git]
/
Pico
/
sound
/
ym2612.c
diff --git
a/Pico/sound/ym2612.c
b/Pico/sound/ym2612.c
index
75d5ad3
..
f626260
100644
(file)
--- a/
Pico/sound/ym2612.c
+++ b/
Pico/sound/ym2612.c
@@
-112,7
+112,6
@@
#include <math.h>
\r
\r
#include "ym2612.h"
\r
#include <math.h>
\r
\r
#include "ym2612.h"
\r
-#include "mix.h"
\r
\r
#ifndef EXTERNAL_YM2612
\r
#include <stdlib.h>
\r
\r
#ifndef EXTERNAL_YM2612
\r
#include <stdlib.h>
\r
@@
-125,6
+124,8
@@
extern YM2612 *ym2612_940;
\r
#endif
\r
\r
\r
#endif
\r
\r
+void memset32(int *dest, int c, int count);
\r
+
\r
\r
#ifndef __GNUC__
\r
#pragma warning (disable:4100) // unreferenced formal parameter
\r
\r
#ifndef __GNUC__
\r
#pragma warning (disable:4100) // unreferenced formal parameter
\r
@@
-1636,8
+1637,7
@@
void YM2612Init_(int clock, int rate)
ym2612_dacen = &ym2612.dacen;
\r
ym2612_dacout = &ym2612.dacout;
\r
\r
ym2612_dacen = &ym2612.dacen;
\r
ym2612_dacout = &ym2612.dacout;
\r
\r
- /* clear everything but the regs */
\r
- memset(ym2612.CH, 0, sizeof(ym2612)-sizeof(ym2612.REGS)-4);
\r
+ memset(&ym2612, 0, sizeof(ym2612));
\r
init_tables();
\r
\r
ym2612.OPN.ST.clock = clock;
\r
init_tables();
\r
\r
ym2612.OPN.ST.clock = clock;
\r
@@
-1653,8
+1653,11
@@
void YM2612ResetChip_(void)
{
\r
int i;
\r
\r
{
\r
int i;
\r
\r
+ memset(ym2612.REGS, 0, sizeof(ym2612.REGS));
\r
+
\r
OPNSetPres( 6*24 );
\r
set_timers( 0x30 ); /* mode 0 , timer reset */
\r
OPNSetPres( 6*24 );
\r
set_timers( 0x30 ); /* mode 0 , timer reset */
\r
+ ym2612.REGS[0x27] = 0x30;
\r
\r
ym2612.OPN.eg_timer = 0;
\r
ym2612.OPN.eg_cnt = 0;
\r
\r
ym2612.OPN.eg_timer = 0;
\r
ym2612.OPN.eg_cnt = 0;
\r
@@
-1665,6
+1668,8
@@
void YM2612ResetChip_(void)
{
\r
OPNWriteReg(i ,0xc0);
\r
OPNWriteReg(i|0x100,0xc0);
\r
{
\r
OPNWriteReg(i ,0xc0);
\r
OPNWriteReg(i|0x100,0xc0);
\r
+ ym2612.REGS[i ] = 0xc0;
\r
+ ym2612.REGS[i|0x100] = 0xc0;
\r
}
\r
for(i = 0xb2 ; i >= 0x30 ; i-- )
\r
{
\r
}
\r
for(i = 0xb2 ; i >= 0x30 ; i-- )
\r
{
\r
@@
-1674,6
+1679,7
@@
void YM2612ResetChip_(void)
for(i = 0x26 ; i >= 0x20 ; i-- ) OPNWriteReg(i,0);
\r
/* DAC mode clear */
\r
ym2612.dacen = 0;
\r
for(i = 0x26 ; i >= 0x20 ; i-- ) OPNWriteReg(i,0);
\r
/* DAC mode clear */
\r
ym2612.dacen = 0;
\r
+ ym2612.addr_A1 = 0;
\r
}
\r
\r
\r
}
\r
\r
\r
@@
-1701,7
+1707,9
@@
int YM2612Write_(unsigned int a, unsigned int v)
}
\r
\r
addr = ym2612.OPN.ST.address;
\r
}
\r
\r
addr = ym2612.OPN.ST.address;
\r
+#ifndef EXTERNAL_YM2612
\r
ym2612.REGS[addr] = v;
\r
ym2612.REGS[addr] = v;
\r
+#endif
\r
\r
switch( addr & 0xf0 )
\r
{
\r
\r
switch( addr & 0xf0 )
\r
{
\r
@@
-1799,7
+1807,9
@@
int YM2612Write_(unsigned int a, unsigned int v)
}
\r
\r
addr = ym2612.OPN.ST.address | 0x100;
\r
}
\r
\r
addr = ym2612.OPN.ST.address | 0x100;
\r
+#ifndef EXTERNAL_YM2612
\r
ym2612.REGS[addr] = v;
\r
ym2612.REGS[addr] = v;
\r
+#endif
\r
\r
ret = OPNWriteReg(addr, v);
\r
break;
\r
\r
ret = OPNWriteReg(addr, v);
\r
break;
\r
@@
-1847,7
+1857,7
@@
int YM2612PicoTick_(int n)
void YM2612PicoStateLoad_(void)
\r
{
\r
#ifndef EXTERNAL_YM2612
\r
void YM2612PicoStateLoad_(void)
\r
{
\r
#ifndef EXTERNAL_YM2612
\r
- int i,
old
_A1 = ym2612.addr_A1;
\r
+ int i,
real
_A1 = ym2612.addr_A1;
\r
\r
reset_channels( &ym2612.CH[0], 6 );
\r
\r
\r
reset_channels( &ym2612.CH[0], 6 );
\r
\r
@@
-1856,19
+1866,23
@@
void YM2612PicoStateLoad_(void)
YM2612Write_(0, i);
\r
YM2612Write_(1, ym2612.REGS[i]);
\r
}
\r
YM2612Write_(0, i);
\r
YM2612Write_(1, ym2612.REGS[i]);
\r
}
\r
+
\r
for(i = 0; i < 0x100; i++) {
\r
YM2612Write_(2, i);
\r
YM2612Write_(3, ym2612.REGS[i|0x100]);
\r
}
\r
\r
for(i = 0; i < 0x100; i++) {
\r
YM2612Write_(2, i);
\r
YM2612Write_(3, ym2612.REGS[i|0x100]);
\r
}
\r
\r
- ym2612.addr_A1 =
old
_A1;
\r
+ ym2612.addr_A1 =
real
_A1;
\r
#else
\r
reset_channels( &ym2612.CH[0], 6 );
\r
#endif
\r
}
\r
\r
\r
#else
\r
reset_channels( &ym2612.CH[0], 6 );
\r
#endif
\r
}
\r
\r
\r
+#ifndef EXTERNAL_YM2612
\r
void *YM2612GetRegs(void)
\r
{
\r
return ym2612.REGS;
\r
}
\r
void *YM2612GetRegs(void)
\r
{
\r
return ym2612.REGS;
\r
}
\r
+#endif
\r
+
\r