Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alexbevi
GitHub Repository: alexbevi/BizHawk
Path: blob/master/lynx/cinterface.cpp
2 views
1
2
#include <cstdlib>
3
4
#include "system.h"
5
6
void *operator new(std::size_t n)
7
{
8
void *p = std::malloc(n);
9
std::memset(p, 0, n);
10
return p;
11
}
12
13
void operator delete(void *p)
14
{
15
std::free(p);
16
}
17
18
#define EXPORT extern "C" __declspec(dllexport)
19
20
EXPORT CSystem *Create(const uint8 *game, uint32 gamesize, const uint8 *bios, uint32 biossize, int pagesize0, int pagesize1, int lowpass)
21
{
22
return new CSystem(game, gamesize, bios, biossize, pagesize0, pagesize1, lowpass);
23
}
24
25
EXPORT void Destroy(CSystem *s)
26
{
27
delete s;
28
}
29
30
EXPORT void Reset(CSystem *s)
31
{
32
s->Reset();
33
}
34
35
EXPORT void SetRotation(CSystem *s, int value)
36
{
37
s->rotate = value;
38
}
39
40
EXPORT int Advance(CSystem *s, int buttons, uint32 *vbuff, int16 *sbuff, int *sbuffsize)
41
{
42
return s->Advance(buttons, vbuff, sbuff, *sbuffsize);
43
}
44
45
EXPORT int GetSaveRamPtr(CSystem *s, int *size, uint8 **data)
46
{
47
return s->GetSaveRamPtr(*size, *data);
48
}
49
50
EXPORT void GetReadOnlyCartPtrs(CSystem *s, int *s0, uint8 **p0, int *s1, uint8 **p1)
51
{
52
s->GetReadOnlyCartPtrs(*s0, *p0, *s1, *p1);
53
}
54
55
EXPORT int BinStateSize(CSystem *s)
56
{
57
NewStateDummy dummy;
58
s->SyncState<false>(&dummy);
59
return dummy.GetLength();
60
}
61
62
EXPORT int BinStateSave(CSystem *s, char *data, int length)
63
{
64
NewStateExternalBuffer saver(data, length);
65
s->SyncState<false>(&saver);
66
return !saver.Overflow() && saver.GetLength() == length;
67
}
68
69
EXPORT int BinStateLoad(CSystem *s, const char *data, int length)
70
{
71
NewStateExternalBuffer loader(const_cast<char *>(data), length);
72
s->SyncState<true>(&loader);
73
return !loader.Overflow() && loader.GetLength() == length;
74
}
75
76
EXPORT void TxtStateSave(CSystem *s, FPtrs *ff)
77
{
78
NewStateExternalFunctions saver(ff);
79
s->SyncState<false>(&saver);
80
}
81
82
EXPORT void TxtStateLoad(CSystem *s, FPtrs *ff)
83
{
84
NewStateExternalFunctions loader(ff);
85
s->SyncState<true>(&loader);
86
}
87
88
EXPORT void *GetRamPointer(CSystem *s)
89
{
90
return s->GetRamPointer();
91
}
92
93
94