1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// // package main
// // import "container/ring"
// // import "github.com/pnegre/gomsx/z80"
// // import "log"
// pub struct stateDataT {
// cpuBackup *z80.Z80
// memory *Memory
// vdp *Vdp
// }
// func newStateData() *stateDataT {
// sd := new(stateDataT)
// sd.cpuBackup = new(z80.Z80)
// return sd
// }
// const NSTATEDATA = 15
// var state_ring *ring.Ring
// func state_init() {
// state_ring = ring.New(NSTATEDATA)
// for i := 0; i < NSTATEDATA; i++ {
// state_ring.Value = nil
// state_ring = state_ring.Next()
// }
// }
// func state_save(msx *MSX) {
// var data *stateDataT
// data = newStateData()
// state_ring.Value = data
// state_ring = state_ring.Next()
// // Save CPU state
// msx.cpuz80.SaveState(data.cpuBackup)
// // Save RAM
// data.memory = msx.memory.saveState()
// // Save VDP
// data.vdp = msx.vdp.saveState()
// }
// func get_revert_data() *stateDataT {
// state_ring = state_ring.Prev()
// count := 0
// for state_ring.Value == nil && count < NSTATEDATA {
// state_ring = state_ring.Prev()
// count++
// }
// if count >= NSTATEDATA {
// return nil
// }
// return state_ring.Value.(*stateDataT)
// }
// func state_revert(msx *MSX) {
// data := get_revert_data()
// if data == nil {
// return
// }
// log.Println("Reverting state...")
// // Restore CPU state
// msx.cpuz80.RestoreState(data.cpuBackup)
// // Restore RAM
// msx.memory.restoreState(data.memory)
// // Restore VDP
// msx.vdp.restoreState(data.vdp)
// }