notaz.gp2x.de
/
picodrive.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ym2612 full saves wip
[picodrive.git]
/
Pico
/
Memory.c
diff --git
a/Pico/Memory.c
b/Pico/Memory.c
index
dbf0118
..
e4a251b
100644
(file)
--- a/
Pico/Memory.c
+++ b/
Pico/Memory.c
@@
-796,7
+796,7
@@
int ym2612_write_local(u32 a, u32 d, int is_from_z80)
{
\r
//elprintf(EL_STATUS, "timer a set %i", TAnew);
\r
ym2612.OPN.ST.TA = TAnew;
\r
{
\r
//elprintf(EL_STATUS, "timer a set %i", TAnew);
\r
ym2612.OPN.ST.TA = TAnew;
\r
-
//
ym2612.OPN.ST.TAC = (1024-TAnew)*18;
\r
+ ym2612.OPN.ST.TAC = (1024-TAnew)*18;
\r
//ym2612.OPN.ST.TAT = 0;
\r
//
\r
timer_a_step = timer_a_offset = 16466 * (1024 - TAnew);
\r
//ym2612.OPN.ST.TAT = 0;
\r
//
\r
timer_a_step = timer_a_offset = 16466 * (1024 - TAnew);
\r
@@
-812,8
+812,7
@@
int ym2612_write_local(u32 a, u32 d, int is_from_z80)
if (ym2612.OPN.ST.TB != d) {
\r
//elprintf(EL_STATUS, "timer b set %i", d);
\r
ym2612.OPN.ST.TB = d;
\r
if (ym2612.OPN.ST.TB != d) {
\r
//elprintf(EL_STATUS, "timer b set %i", d);
\r
ym2612.OPN.ST.TB = d;
\r
- //ym2612.OPN.ST.TBC = (256-d)<<4;
\r
- //ym2612.OPN.ST.TBC *= 18;
\r
+ ym2612.OPN.ST.TBC = (256-d) * 288;
\r
//ym2612.OPN.ST.TBT = 0;
\r
timer_b_step = timer_b_offset = 262800 * (256 - d); // 262881
\r
if (ym2612.OPN.ST.mode & 2) {
\r
//ym2612.OPN.ST.TBT = 0;
\r
timer_b_step = timer_b_offset = 262800 * (256 - d); // 262881
\r
if (ym2612.OPN.ST.mode & 2) {
\r
@@
-912,21
+911,38
@@
u32 ym2612_read_local_68k(void)
return ym2612.OPN.ST.status;
\r
}
\r
\r
return ym2612.OPN.ST.status;
\r
}
\r
\r
-// TODO: new ym2612 savestates, also save timers
\r
+void ym2612_pack_state(void)
\r
+{
\r
+ // TODO timers
\r
+#ifdef __GP2X__
\r
+ if (PicoOpt & POPT_EXT_FM)
\r
+ /*YM2612PicoStateSave2_940(0, 0)*/;
\r
+ else
\r
+#endif
\r
+ YM2612PicoStateSave2(0, 0);
\r
+}
\r
+
\r
void ym2612_unpack_state(void)
\r
{
\r
void ym2612_unpack_state(void)
\r
{
\r
- int i;
\r
+ int i
, ret, tat, tbt
;
\r
YM2612PicoStateLoad();
\r
\r
// feed all the registers and update internal state
\r
YM2612PicoStateLoad();
\r
\r
// feed all the registers and update internal state
\r
- for (i = 0x20; i < 0x
C0
; i++) {
\r
+ for (i = 0x20; i < 0x
B8
; i++) {
\r
ym2612_write_local(0, i, 0);
\r
ym2612_write_local(1, ym2612.REGS[i], 0);
\r
}
\r
ym2612_write_local(0, i, 0);
\r
ym2612_write_local(1, ym2612.REGS[i], 0);
\r
}
\r
- for (i = 0x30; i < 0x
C0
; i++) {
\r
+ for (i = 0x30; i < 0x
B8
; i++) {
\r
ym2612_write_local(2, i, 0);
\r
ym2612_write_local(3, ym2612.REGS[i|0x100], 0);
\r
}
\r
ym2612_write_local(2, i, 0);
\r
ym2612_write_local(3, ym2612.REGS[i|0x100], 0);
\r
}
\r
+
\r
+#ifdef __GP2X__
\r
+ if (PicoOpt & POPT_EXT_FM)
\r
+ /*ret = YM2612PicoStateLoad2_940(&tat, &tbt)*/;
\r
+ else
\r
+#endif
\r
+ ret = YM2612PicoStateLoad2(&tat, &tbt);
\r
}
\r
\r
// -----------------------------------------------------------------
\r
}
\r
\r
// -----------------------------------------------------------------
\r