1 #include "lua/internal.hpp"
2 #include "core/instance.hpp"
3 #include "core/moviedata.hpp"
4 #include "library/serialization.hpp"
5 #include "library/int24.hpp"
10 int do_read(lua::state
& L
, lua::parameters
& P
)
16 auto& h
= CORE().mlogic
->get_mfile().host_memory
;
17 if(address
+ sizeof(S
) > h
.size()) {
21 L
.pushnumber(serialization::read_endian
<S
>(&h
[address
], 1));
26 int do_write(lua::state
& L
, lua::parameters
& P
)
33 auto& h
= CORE().mlogic
->get_mfile().host_memory
;
34 if(address
+ sizeof(S
) > h
.size())
35 h
.resize(address
+ sizeof(S
));
36 serialization::write_endian
<S
>(&h
[address
], value
, 1);
40 lua::functions
LUA_hostops_fns(lua_func_misc
, "hostmemory", {
41 {"read", do_read
<uint8_t>},
42 {"write", do_write
<uint8_t>},
43 {"readbyte", do_read
<uint8_t>},
44 {"writebyte", do_write
<uint8_t>},
45 {"readsbyte", do_read
<int8_t>},
46 {"writesbyte", do_write
<int8_t>},
47 {"readword", do_read
<uint16_t>},
48 {"writeword", do_write
<uint16_t>},
49 {"readsword", do_read
<int16_t>},
50 {"writesword", do_write
<int16_t>},
51 {"readhword", do_read
<ss_uint24_t
>},
52 {"writehword", do_write
<ss_uint24_t
>},
53 {"readshword", do_read
<ss_int24_t
>},
54 {"writeshword", do_write
<ss_int24_t
>},
55 {"readdword", do_read
<uint32_t>},
56 {"writedword", do_write
<uint32_t>},
57 {"readsdword", do_read
<int32_t>},
58 {"writesdword", do_write
<int32_t>},
59 {"readqword", do_read
<uint64_t>},
60 {"writeqword", do_write
<uint64_t>},
61 {"readsqword", do_read
<int64_t>},
62 {"writesqword", do_write
<int64_t>},
63 {"readfloat", do_read
<float>},
64 {"writefloat", do_write
<float>},
65 {"readdouble", do_read
<double>},
66 {"writedouble", do_write
<double>},