lsnes rr2-β24
[lsnes.git] / src / emulation / sky / state.hpp
blob0c43a193d4d659296ca970a4805cd969190e5f2c
1 #ifndef _skycore__state__hpp__included__
2 #define _skycore__state__hpp__included__
4 #include <cstdlib>
5 #include <cstdint>
6 #include "physics.hpp"
7 #include "music.hpp"
8 #include "demo.hpp"
9 #include "level.hpp"
10 #include "sound.hpp"
11 #include "random.hpp"
13 namespace sky
15 const uint8_t state_menu_fadein = 0; //Menu fading in.
16 const uint8_t state_menu = 1; //In menu.
17 const uint8_t state_menu_fadeout = 2; //Menu fading out.
18 const uint8_t state_load_level = 3; //Level being loaded.
19 const uint8_t state_level_fadein = 4; //Level fading in.
20 const uint8_t state_level_play = 5; //Level being played.
21 const uint8_t state_level_complete = 6; //Level completed.
22 const uint8_t state_level_fadeout = 7; //Level fading out.
23 const uint8_t state_load_menu = 8; //Menu being loaded.
24 const uint8_t state_level_unavail = 9; //Level unavailable.
25 const uint8_t state_demo_unavail = 10; //Demo unavailable.
26 const uint8_t state_level_fadeout_retry = 11; //Level fading out for retry.
27 const uint8_t state_load_level_nomus = 12; //Level being loaded, without reloading music.
28 const uint8_t state_lockup = 13; //Game is locked up.
30 struct gstate
32 //DO NOT PUT POINTERS IN HERE!!!
33 //Also, be careful not to do anything undefined if there is a bad value.
34 demo curdemo;
35 level curlevel;
36 active_sfx_dma dma;
37 random rng;
38 music_player_memory music;
39 physics p;
40 uint64_t pcmpos; //PCM position in song.
41 uint64_t frames_ran; //Number of frames run.
42 uint32_t cursong; //Current song number.
43 uint16_t waited; //Menu wait / timeattack time.
44 uint8_t paused; //Paused flag.
45 uint8_t speedind; //Indicated speed.
46 uint8_t o2ind; //Indicated amount of oxygen.
47 uint8_t fuelind; //Indicated amount of fuel.
48 uint8_t distind; //Indicated distance.
49 uint8_t lockind; //Lock indicator flag.
50 uint8_t beep_phase; //Out of O2/Fuel flash phase.
51 uint8_t state; //State of game.
52 uint8_t fadecount; //Fade counter.
53 uint8_t stage; //Current stage.
54 uint8_t oldstage; //old stage (used in menu).
55 uint8_t savestage; //Saved stage (used over demo).
56 uint8_t demo_flag; //Set to 1 to load demo.
57 uint8_t lastkeys; //Last key state.
58 uint8_t secret; //Secret flag.
59 uint8_t timeattack; //Timeattack flag
60 uint8_t padC; //Padding.
61 uint8_t padD; //Padding.
62 uint8_t sram[32]; //SRAM.
63 void level_init(uint8_t _stage);
64 uint8_t simulate_frame(noise_maker& sfx, int lr, int ad, bool jump);
65 void change_state(uint8_t newstate);
66 std::pair<uint8_t*, size_t> as_ram();
70 #endif