Login

Subversion Repositories NedoOS

Rev

Rev 941 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

//#include <evo.h>
#include "../_sdk/evo.h"
#include "functions.h"
//#include "startup.h"  //¤ЄюЄ Їрщы ухэхЁшЁєхЄё  ртЄюьрЄшўхёъш яЁш ъюьяшы Ўшш startup.asm

void vsync(void) __naked
{
__asm
        halt
        ret
__endasm;
}



u8 joystick(void) __naked
{
__asm
        jp _JOYSTICK
__endasm;
}


void draw_tile(u8 x,u8 y,u16 tile) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld c,(hl)
        inc hl
        ld b,(hl)
        inc hl
        ld e,(hl)
        inc hl
        ld d,(hl)
        jp _DRAW_TILE
__endasm;
}

void draw_image(u8 x,u8 y,u8 id) __naked
{
__asm
        ld hl,#2
        add hl,sp
       
        ;push   ix
        ;ld     ix,#0
        ;add    ix,sp
       
        ld c,(hl)
        inc hl
        ld b,(hl)
        inc hl
        ld a,(hl)      
        call _DRAW_IMAGE
       
        ;pop ix
       
        ret
__endasm;
}

void draw_image_extra(u8 x,u8 y,u8 id,u8 width,u8 begx) __naked
{
__asm
        ld hl,#2
        add hl,sp ;cy=0
       
        ;push   ix
        ;ld     ix,#0
        ;add    ix,sp
       
        ;ld a,(_MEMSLOT2)
        ;push af
       
        ld c,(hl)
        inc hl
        ld b,(hl)
        inc hl
        ld a,(hl)
        inc hl
        ld e,(hl)
        inc hl
        ld d,(hl)
        scf
        call _DRAW_IMAGE
       
        ;pop af
        ;LD     BC, #0xbff7
    ;ld (_MEMSLOT2),a
    ;out (c),a
       
        ;pop ix
       
        ret
__endasm;
}


void memset(void* m,u8 b,u16 len) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld e,(hl)
        inc hl
        ld d,(hl)
        inc hl
        ld a,(hl)
        inc hl
        ld c,(hl)
        inc hl
        ld b,(hl)

        ex de,hl
        ld d,h
        ld e,l
        inc de
        dec bc
        ld (hl),a
        jp _FAST_LDIR
__endasm;
}



void memcpy(void* d,void* s,u16 len) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld e,(hl)
        inc hl
        ld d,(hl)
        push de
        inc hl
        ld e,(hl)
        inc hl
        ld d,(hl)
        inc hl
        ld c,(hl)
        inc hl
        ld b,(hl)
        ex de,hl
        pop de
        jp _FAST_LDIR
__endasm;
}

void pal_select(u8 id) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        jp _PAL_SELECT
__endasm;
}



void pal_bright(u8 bright) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        jp _PAL_BRIGHT
__endasm;
}

void pal_copy(u8 id,u8* pal) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        inc hl
        ld e,(hl)
        inc hl
        ld d,(hl)
        jp _PAL_COPY
__endasm;
}



void sfx_play(u8 sfx,i8 vol) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld b,(hl)
        inc hl
        ld c,(hl)
        jp _SFX_PLAY
__endasm;
}



void sfx_stop(void) __naked
{
__asm
        jp _SFX_STOP
__endasm;
}





void pal_clear(void) __naked
{
__asm
        ld hl,#_PALETTE
        ld bc,#0x1000
1$:
        ld (hl),c
        inc l
        djnz 1$
        ld a,h
        ld (_PALCHANGE),a
        ret
__endasm;
}





void pal_col(u8 id,u8 col) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        inc hl
        ld c,(hl)
        ld hl,#_PALETTE
        add a,l
        ld l,a
        ld a,c
        and #63
        ld (hl),a
        ld a,h
        ld (_PALCHANGE),a
        ret
__endasm;
}





void pal_custom(u8* pal) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        inc hl
        ld h,(hl)
        ld l,a
        ld de,#_PALETTE
        ld b,#16
1$:
        ld a,(hl)
        and #63
        ld (de),a
        inc hl
        inc e
        djnz 1$
        ld a,d
        ld (_PALCHANGE),a
        ret
__endasm;
}




void draw_tile_key(u8 x,u8 y,u16 tile) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld c,(hl)
        inc hl
        ld b,(hl)
        inc hl
        ld e,(hl)
        inc hl
        ld d,(hl)
        jp _DRAW_TILE_KEY
__endasm;
}




void clear_screen(u8 color) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        jp _CLEAR_SCREEN
__endasm;
}





void select_image(u8 id) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld l,(hl)
        jp _SELECT_IMAGE
__endasm;
}



void color_key(u8 col) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld c,(hl)
        jp _COLOR_KEY
__endasm;
}




u32 time(void) __naked
{
__asm
        ld hl,#_TIME+3
        ld d,(hl)
        dec hl
        ld e,(hl)
        dec hl
        ld a,(hl)
        dec hl
        ld l,(hl)
        ld h,a
        ret
__endasm;
}



void delay(u16 time) __naked
{
__asm
       
       
        ld hl,#2
        add hl,sp
        ld c,(hl)
        inc hl
        ld b,(hl)
        ld a,b
        or c
        ret z
1$:
        halt
        dec bc
        ld a,b
        or c
        jr nz,1$
       
        ret
__endasm;
}

void swap_screen(void) __naked
{
__asm

       
        jp _SWAP_SCREEN
       
__endasm;
}




void border(u8 n) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        ld (_BORDERCOL),a
        ;ld c,a
        ;and #7
        ;bit 3,c
        ;jr nz,1$
        ;out (0xfe),a
        ;ret
;1$:
        ;out (0xf6),a
        ret
__endasm;
}






void keyboard(u8* keys) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld e,(hl)
        inc hl
        ld d,(hl)
        jp _KEYBOARD
__endasm;
}


void music_play(u8 mus) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        jp _MUSIC_PLAY
__endasm;
}



void music_stop(void) __naked
{
__asm
        jp _MUSIC_STOP
__endasm;
}



void sample_play(u8 sample) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld l,(hl)
        jp _SAMPLE_PLAY
__endasm;
}



u16 rand16(void) __naked
{
__asm
        ld hl,(1$)
        push hl
        srl h
        rr l
        ex de,hl
        ld hl,(2$)
        add hl,de
        ld (2$),hl
        ld a,l
        xor #15
        ld l,a
        ex de,hl
        pop hl
        sbc hl,de
        ld (1$),hl
        ret

1$:     .dw 1
2$:     .dw 5

__endasm;
}


/*

u8 mouse_pos(u8* x,u8* y) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld c,(hl)
        inc hl
        ld b,(hl)
        inc hl
        ld e,(hl)
        inc hl
        ld d,(hl)
        ld a,(_MOUSE_X)
        ld (bc),a
        ld a,(_MOUSE_Y)
        ld (de),a
        ld a,(_MOUSE_BTN)
        ld l,a
        ret
__endasm;
}



void mouse_set(u8 x,u8 y) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        ld (_MOUSE_X),a
        inc hl
        ld a,(hl)
        ld (_MOUSE_Y),a
        jp _MOUSE_APPLY_CLIP
__endasm;
}



void mouse_clip(u8 xmin,u8 ymin,u8 xmax,u8 ymax) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)
        ld (_MOUSE_CX1),a
        inc hl
        ld a,(hl)
        ld (_MOUSE_CY1),a
        inc hl
        ld a,(hl)
        ld (_MOUSE_CX2),a
        inc hl
        ld a,(hl)
        ld (_MOUSE_CY2),a
        jp _MOUSE_APPLY_CLIP
__endasm;
}



u8 mouse_delta(i8* x,i8* y) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld c,(hl)
        inc hl
        ld b,(hl)
        inc hl
        ld e,(hl)
        inc hl
        ld d,(hl)
        ld a,(_MOUSE_DX)
        ld (bc),a
        ld a,(_MOUSE_DY)
        ld (bc),a
        ld a,(_MOUSE_BTN)
        ld l,a
        ret
__endasm;
}


*/


void set_sprite(u8 id,u8 x,u8 y,u16 spr) __naked
{
__asm
        ld hl,#2
        add hl,sp
        ld a,(hl)       ;id
        inc hl
        ld c,(hl)       ;x
        inc hl
        ld b,(hl)       ;y
        inc hl
        ld e,(hl)       ;sprl
        inc hl
        ld d,(hl)       ;sprh
       
        add a,a
        add a,a
        ld l,a
        ld h,#_SPRQUEUE/256

        ld a,d          ;яхЁхёў╕Є эюьхЁр ёяЁрщЄр
        cp #255
        jr z,1$
        add a,a
        add a,d
        ld d,a
1$:
        ld a,(_SCREENACTIVE)
        and #2
        jr nz,2$
        inc h
2$:
        ld (hl),d
        inc l
        ld (hl),e
        inc l
        ld (hl),b
        inc l
        ld (hl),c
        ret
__endasm;
}



void sprites_start(void) __naked
{
__asm
        jp _SPRITES_START
__endasm;
}



void sprites_stop(void) __naked
{
__asm
        jp _SPRITES_STOP
__endasm;
}