lsnes rr2-β24
[lsnes.git] / src / emulation / sky / instance.hpp
blobb21a055f0dccde1cf62c46793552a6c51cd964dc
1 #ifndef _sky__instance__hpp__included__
2 #define _sky__instance__hpp__included__
4 #include "state.hpp"
5 #include "gauge.hpp"
6 #include "image.hpp"
7 #include "framebuffer.hpp"
9 namespace sky
11 const unsigned pipe_slices = 256;
12 struct pipe_cache
14 double min_h;
15 double min_v;
16 double max_h;
17 double max_v;
18 uint32_t colors[pipe_slices];
21 struct demoset_entry
23 uint8_t hash[32];
24 std::vector<char> demodata;
27 struct instance
29 instance()
30 : gsfx(soundfx, state.dma),
31 mplayer(state.music, state.rng)
33 memset(samplectr, 0, sizeof(samplectr));
35 gstate state;
36 song_buffer* bsong;
37 sound_noise_maker gsfx;
38 std::string rom_filename;
39 gauge speed_dat;
40 gauge oxydisp_dat;
41 gauge fueldisp_dat;
42 roads_lzs levels;
43 image ship;
44 image dashboard;
45 image levelselect;
46 image backgrounds[10];
47 sounds soundfx;
48 demo builtin_demo;
49 uint32_t dashpalette[16];
50 std::vector<demoset_entry> demos;
51 music_player mplayer;
52 struct pipe_cache pipecache[7];
53 uint32_t fadeffect_buffer[FB_WIDTH * FB_HEIGHT];
54 bool indirect_flag;
55 uint32_t origbuffer[65536];
56 uint32_t framebuffer[FB_WIDTH * FB_HEIGHT];
57 uint16_t overlap_start;
58 uint16_t overlap_end;
59 uint32_t samplectr[4];
60 uint32_t* get_framebuffer()
62 return indirect_flag ? fadeffect_buffer : framebuffer;
64 size_t extrasamples()
66 const static unsigned tcount[4] = {5, 7, 8, 25};
67 size_t extrasample = 0;
68 for(unsigned i = 0; i < sizeof(tcount)/sizeof(tcount[0]); i++) {
69 samplectr[i]++;
70 if(samplectr[i] == tcount[i]) {
71 samplectr[i] = 0;
72 extrasample = extrasample ? 0 : 1;
73 } else
74 break;
76 return extrasample;
81 #endif