#pragma disable_warning 85
//юяЁхфхыхэш Єшяют яхЁхьхээ√ї
typedef unsigned char u8;
typedef signed char i8;
typedef unsigned int u16;
typedef signed int i16;
typedef unsigned long u32;
typedef signed long i32;
#define TRUE 1
#define FALSE 0
//Їыруш ъэюяюъ фцющёЄшър
#define JOY_RIGHT 0x01
#define JOY_LEFT 0x02
#define JOY_DOWN 0x04
#define JOY_UP 0x08
#define JOY_FIRE 0x10
//ёьх∙хэш т ьрёёштх ъыртш° фы юяЁюёр ъыртшрЄєЁ√
#define KEY_SPACE 0x23
#define KEY_ENTER 0x1e
#define KEY_SYMBOL 0x24
#define KEY_CAPS 0x00
#define KEY_0 0x14
#define KEY_1 0x0f
#define KEY_2 0x10
#define KEY_3 0x11
#define KEY_4 0x12
#define KEY_5 0x13
#define KEY_6 0x18
#define KEY_7 0x17
#define KEY_8 0x16
#define KEY_9 0x15
#define KEY_A 0x05
#define KEY_B 0x27
#define KEY_C 0x03
#define KEY_D 0x07
#define KEY_E 0x0c
#define KEY_F 0x08
#define KEY_G 0x09
#define KEY_H 0x22
#define KEY_I 0x1b
#define KEY_J 0x21
#define KEY_K 0x20
#define KEY_L 0x1f
#define KEY_M 0x25
#define KEY_N 0x26
#define KEY_O 0x1a
#define KEY_P 0x19
#define KEY_Q 0x0a
#define KEY_R 0x0d
#define KEY_S 0x06
#define KEY_T 0x0e
#define KEY_U 0x1c
#define KEY_V 0x04
#define KEY_W 0x0b
#define KEY_X 0x02
#define KEY_Y 0x1d
#define KEY_Z 0x01
//Їыруш ёюёЄю эш ъыртш°
#define KEY_DOWN 0x01 //ъэюяър єфхЁцштрхЄё
#define KEY_PRESS 0x02 //ъэюяър эрцрЄр, Їыру ёсЁрё√трхЄё яюёых т√чютр keyboard
//Їыруш ъэюяюъ ь√°ш
#define MOUSE_LBTN 0x01
#define MOUSE_RBTN 0x02
#define MOUSE_MBTN 0x04
//яюыєўхэшх ъюфр ЎтхЄр шч RGB ё фтєїсшЄэ√ьш чэрўхэш ьш ърэрыют
#define RGB222(r,g,b) (((b)&3)|(((g)&3)<<2)|(((r)&3)<<4))
//ъЁрщэшх ш ёЁхфэшщ єЁютэш ЁъюёЄш
#define BRIGHT_MIN 0
#define BRIGHT_MID 3
#define BRIGHT_MAX 6
//ъюф ъюэЎр ёяшёър ёяЁрщЄют
#define SPRITE_END 0xff00
//чряюыэхэшх ярь Єш чрфрээ√ь чэрўхэшхь
void memset(void* m,u8 b,u16 len) __naked;
//ъюяшЁютрэшх ярь Єш, юсырёЄш эх фюыцэ√ яхЁхёхърЄ№ё
void memcpy(void* d,void* s,u16 len) __naked;
//ухэхЁрЎш 16-сшЄэюую яёхтфюёыєўрщэюую ўшёыр
u16 rand16(void) __naked;
//єёЄрэютър ЎтхЄр сюЁф■Ёр, 0..15
void border(u8 n) __naked;
//юцшфрэшх ёыхфє■∙хую ╥┬ ърфЁр
void vsync(void) __naked;
//юяЁюё kempston фцющёЄшър ш ъєЁёюЁэ√ї ъыртш° ё яЁюсхыюь
//фы юяЁюёр ъэюяюъ хёЄ№ ъюэёЄрэЄ√ JOY_
u8 joystick(void) __naked;
//юяЁюё ъыртшрЄєЁ√, тючтЁр∙рхЄ ёюёЄю эшх ъыртш° т 40-срщЄэ√щ ьрёёшт
//фы юяЁюёр ъыртш° хёЄ№ ъюэёЄрэЄ√ KEY_
void keyboard(u8* keys) __naked;
//яюыєўхэшх Єхъє∙хщ яючшЎшш єърчрЄхы ь√°ш, ЁрчЁх°хэшх яю x яюэшцхэю тфтюх, ъръ фы ёяЁрщЄют
//ь√°№ яхЁхьх∙рхЄё т чрфрээющ чюэх ъышяяшэур
u8 mouse_pos(u8* x,u8* y) __naked;
//єёЄрэютър Єхъє∙хщ яючшЎшш єърчрЄхы ь√°ш
void mouse_set(u8 x,u8 y) __naked;
//єёЄрэютър чюэ√ ъышяяшэур фы єърчрЄхы ь√°ш, яю єьюыўрэш■ 0..160, 0..200
void mouse_clip(u8 xmin,u8 ymin,u8 xmax,u8 ymax) __naked;
//яюыєўхэшх фхы№Є√ яхЁхьх∙хэш ь√°ш, схч яюэшцхэш ЁрчЁх°хэш яю x
u8 mouse_delta(i8* x,i8* y) __naked;
//яЁюшуЁ√трэшх чтєъютюую ¤ЇЇхъЄр ё єърчрээ√ь эюьхЁюь ш юЄэюёшЄхы№эющ уЁюьъюёЄ№■ -8..8
void sfx_play(u8 sfx,i8 vol) __naked;
//юёЄрэют тёхї яЁюшуЁ√трхь√ї чтєъют√ї ¤ЇЇхъЄют
void sfx_stop(void) __naked;
//яЁюшуЁ√трэшх ьєч√ъш ё єърчрээ√ь эюьхЁюь
void music_play(u8 mus) __naked;
//яЁхъЁр∙хэшх яЁюшуЁ√трэш ьєч√ъш
void music_stop(void) __naked;
//яЁюшуЁ√трэшх ё¤ьяыр ё єърчрээ√ь эюьхЁюь ўхЁхч Covox
//тю тЁхь яЁюшуЁ√трэш яЁюуЁрььр цф╕Є ш яЁхЁ√трэш чряЁх∙хэ√
void sample_play(u8 sample) __naked;
//єёЄрэютър тёхї чэрўхэшщ т ярышЄЁх т 0 (ў╕Ёэ√щ ЎтхЄ)
void pal_clear(void) __naked;
//єёЄрэютър ЁъюёЄш ¤ъЁрэр BRIGHT_MIN..BRIGHT_MID..BRIGHT_MAX (0..3..6)
//юЄ яюыэюёЄ№■ ў╕Ёэюую ¤ъЁрэр фю эюЁьры№эющ ЁъюёЄш фю яюыэюёЄ№■ схыюую ¤ъЁрэр
void pal_bright(u8 bright) __naked;
//т√сюЁ яЁхфюяЁхфхы╕ээющ ярышЄЁ√ яю эюьхЁє
void pal_select(u8 id) __naked;
//ъюяшЁютрэшх яЁхфюяЁхфхы╕ээющ ярышЄЁ√ т ьрёёшт (16 срщЄ)
void pal_copy(u8 id,u8* pal) __naked;
//єёЄрэютър ЎтхЄр т ярышЄЁх, id 0..15, col т ЇюЁьрЄх R2G2B2
void pal_col(u8 id,u8 col) __naked;
//єёЄрэютър тёхї 16 ЎтхЄют т ярышЄЁх чэрўхэш ьш R2G2B2 шч ьрёёштр
void pal_custom(u8* pal) __naked;
//т√сюЁ шчюсЁрцхэш фы ЇєэъЎшщ draw_tile
void select_image(u8 id) __naked;
//т√сюЁ яЁючЁрўэюую ЎтхЄр 0..15 фы ЇєэъЎшш draw_tile_key
void color_key(u8 col) __naked;
//юЄЁшёютър Єрщыр шч Єхъє∙хую т√сЁрээюую шчюсЁрцхэш
//т юфэюь шчюсЁрцхэшш ьюцхЄ с√Є№ фю 65536 Єрщыют
void draw_tile(u8 x,u8 y,u16 tile) __naked;
//юЄЁшёютър Єрщыр ё ьрёъющ, чрфрээющ эюьхЁюь яЁючЁрўэюую ЎтхЄр
void draw_tile_key(u8 x,u8 y,u16 tile) __naked;
//юЄЁшёютър шчюсЁрцхэш Ўхышъюь
void draw_image(u8 x,u8 y,u8 id) __naked;
void draw_image_extra(u8 x,u8 y,u8 id,u8 width,u8 begx) __naked;
//юўшёЄър Єхэхтюую ¤ъЁрэр эєцэ√ь ЎтхЄюь 0..15
void clear_screen(u8 color) __naked;
//яхЁхъы■ўхэшх ¤ъЁрэют, Єхэхтющ ёЄрэютшЄё тшфшь√ь
//юцшфрэшх ърфЁр т√яюыэ хЄё ртЄюьрЄшўхёъш, vsync яхЁхф т√чютюь ¤Єющ ЇєэъЎшш эх эєцхэ
//ЇєэъЎш Єръцх юсэюты хЄ ёяЁрщЄ√, хёыш юэш тъы■ўхэ√
void swap_screen(void) __naked;
//чряєёъ ёшёЄхь√ т√тюфр ёяЁрщЄют
//эр тшфшьюь ¤ъЁрэх фюыцэю с√Є№ шчюсЁрцхэшх, яютхЁї ъюЄюЁюую сєфєЄ т√тхфхэ√ ёяЁрщЄ√
//¤Єр ЇєэъЎш т√яюыэ хЄё ьхфыхээю, яЁюшёїюфшЄ ъюяшЁютрэшх сюы№°юую юс·╕ьр фрээ√ї
//яюёых Єюую ъръ ёяЁрщЄ√ ЁрчЁх°хэ√, юэш сєфєЄ ртЄюьрЄшўхёъш т√тюфшЄ№ё яЁш swap_screen
void sprites_start(void) __naked;
//юёЄрэют ёшёЄхь√ т√тюфр ёяЁрщЄют
void sprites_stop(void) __naked;
//єёЄрэютър яюыюцхэш ёяЁрщЄр
//id эюьхЁ т ёяшёъх 0..63
//x ъююЁфшэрЄр 0..152 (ЄюўэюёЄ№ т√тюфр яю уюЁшчюэЄрыш фтр ¤ъЁрээ√ї яшъёхы )
//y ъююЁфшэрЄр 0..184
//spr эюьхЁ шчюсЁрцхэш ёяЁрщЄр, хёыш SPRITE_END, Єю т√тюф ёяшёър яЁхъЁр∙рхЄё
//тэшьрэшх: ъышяяшэу яЁш т√тюфх юЄёєЄёЄтєхЄ, ёяЁрщЄ эх ьюцхЄ ўрёЄшўэю чрїюфшЄ№
//чр уЁрэшЎє ¤ъЁрэр
void set_sprite(u8 id,u8 x,u8 y,u16 spr) __naked;
//тЁхь ё ьюьхэЄр чряєёър яЁюуЁрьь√ т ърфЁрї
u32 time(void) __naked;
//чрфхЁцър, чэрўхэшх т ърфЁрї (1/50 ёхъєэф√)
void delay(u16 time) __naked;