1 #include "core/advdumper.hpp"
2 #include "core/audioapi.hpp"
3 #include "core/command.hpp"
4 #include "core/controllerframe.hpp"
5 #include "core/controller.hpp"
6 #include "core/debug.hpp"
7 #include "core/dispatch.hpp"
8 #include "core/emustatus.hpp"
9 #include "core/framebuffer.hpp"
10 #include "core/framerate.hpp"
11 #include "core/instance.hpp"
12 #include "core/inthread.hpp"
13 #include "core/keymapper.hpp"
14 #include "core/mbranch.hpp"
15 #include "core/memorymanip.hpp"
16 #include "core/memorywatch.hpp"
17 #include "core/messages.hpp"
18 #include "core/moviedata.hpp"
19 #include "core/movie.hpp"
20 #include "core/multitrack.hpp"
21 #include "core/project.hpp"
22 #include "core/queue.hpp"
23 #include "core/random.hpp"
24 #include "core/settings.hpp"
25 #include "library/command.hpp"
26 #include "library/keyboard.hpp"
27 #include "library/keyboard-mapper.hpp"
28 #include "library/lua-base.hpp"
29 #include "library/memoryspace.hpp"
30 #include "library/settingvar.hpp"
31 #include "lua/lua.hpp"
38 dtor_list::dtor_list()
43 dtor_list::~dtor_list()
48 void dtor_list::destroy()
50 dtor_list::entry
* e
= list
;
57 dtor_list::entry
* f
= e
;
65 emulator_instance::emulator_instance()
75 D
.init(iqueue
, *command
);
77 D
.init(slotcache
, *mlogic
);
80 D
.init(lua2
, *lua
, *command
);
81 D
.init(mwatch
, *memory
, *project
, *fbuf
);
83 D
.init(setcache
, *settings
);
85 D
.init(commentary
, *settings
, *dispatch
, *audio
);
86 D
.init(subtitles
, *mlogic
, *fbuf
, *dispatch
);
87 D
.init(mbranch
, *mlogic
, *dispatch
);
88 D
.init(controls
, *project
, *mlogic
, *buttons
, *dispatch
);
90 D
.init(mapper
, *keyboard
, *command
);
92 D
.init(fbuf
, *subtitles
, *settings
, *mwatch
, *keyboard
, *dispatch
, *lua2
, *rom
);
93 D
.init(buttons
, *controls
, *mapper
, *keyboard
, *fbuf
, *dispatch
, *lua2
);
94 D
.init(mteditor
, *mlogic
, *controls
, *dispatch
);
98 D
.init(status
, *status_A
, *status_B
, *status_C
);
99 D
.init(abindmanager
, *mapper
, *command
);
101 D
.init(cmapper
, *memory
, *mlogic
, *rom
);
102 D
.init(project
, *commentary
, *mwatch
, *command
, *controls
, *setcache
, *buttons
, *dispatch
, *iqueue
, *rom
);
103 D
.init(dbg
, *dispatch
, *rom
);
105 D
.init(mdumper
, *lua2
);
107 status_A
->valid
= false;
108 status_B
->valid
= false;
109 status_C
->valid
= false;
110 command
->add_set(lsnes_cmds
);
111 mapper
->add_invbind_set(lsnes_invbinds
);
112 settings
->add_set(lsnes_setgrp
);
113 dispatch
->set_error_streams(&messages
.getstream());
114 random_seed_value
= 0;
117 emulator_instance::~emulator_instance()
122 emulator_instance lsnes_instance
;
124 emulator_instance
& CORE()
126 if(threads::id() != lsnes_instance
.emu_thread
) {
127 std::cerr
<< "WARNING: CORE() called in wrong thread." << std::endl
;
130 backtrace_symbols_fd(arr
, 256, 2);
133 return lsnes_instance
;