Subversion Repositories NedoOS

Rev

Rev 941 | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
939 alone 1
//#include <evo.h>
2
#include "../_sdk/evo.h"
3
#include "functions.h"
4
//#include "startup.h"  //      startup.asm
5
 
6
void vsync(void) __naked
7
{
8
__asm
9
        halt
10
        ret
11
__endasm;
12
}
13
 
14
 
15
 
16
u8 joystick(void) __naked
17
{
18
__asm
19
        jp _JOYSTICK
20
__endasm;
21
}
22
 
23
 
24
void draw_tile(u8 x,u8 y,u16 tile) __naked
25
{
26
__asm
27
        ld hl,#2
28
        add hl,sp
29
        ld c,(hl)
30
        inc hl
31
        ld b,(hl)
32
        inc hl
33
        ld e,(hl)
34
        inc hl
35
        ld d,(hl)
36
        jp _DRAW_TILE
37
__endasm;
38
}
39
 
40
void draw_image(u8 x,u8 y,u8 id) __naked
41
{
42
__asm
43
        ld hl,#2
44
        add hl,sp
45
 
46
        ;push   ix
47
        ;ld     ix,#0
48
        ;add    ix,sp
49
 
50
        ld c,(hl)
51
        inc hl
52
        ld b,(hl)
53
        inc hl
54
        ld a,(hl)      
55
        call _DRAW_IMAGE
56
 
57
        ;pop ix
58
 
59
        ret
60
__endasm;
61
}
62
 
63
void draw_image_extra(u8 x,u8 y,u8 id,u8 width,u8 begx) __naked
64
{
65
__asm
66
        ld hl,#2
67
        add hl,sp ;cy=0
68
 
69
        ;push   ix
70
        ;ld     ix,#0
71
        ;add    ix,sp
72
 
73
        ;ld a,(_MEMSLOT2)
74
        ;push af
75
 
76
        ld c,(hl)
77
        inc hl
78
        ld b,(hl)
79
        inc hl
80
        ld a,(hl)
81
        inc hl
82
        ld e,(hl)
83
        inc hl
84
        ld d,(hl)
85
        scf
86
        call _DRAW_IMAGE
87
 
88
        ;pop af
89
        ;LD     BC, #0xbff7
90
    ;ld (_MEMSLOT2),a
91
    ;out (c),a
92
 
93
        ;pop ix
94
 
95
        ret
96
__endasm;
97
}
98
 
99
 
100
void memset(void* m,u8 b,u16 len) __naked
101
{
102
__asm
103
        ld hl,#2
104
        add hl,sp
105
        ld e,(hl)
106
        inc hl
107
        ld d,(hl)
108
        inc hl
109
        ld a,(hl)
110
        inc hl
111
        ld c,(hl)
112
        inc hl
113
        ld b,(hl)
114
 
115
        ex de,hl
116
        ld d,h
117
        ld e,l
118
        inc de
119
        dec bc
120
        ld (hl),a
121
        jp _FAST_LDIR
122
__endasm;
123
}
124
 
125
 
126
 
127
void memcpy(void* d,void* s,u16 len) __naked
128
{
129
__asm
130
        ld hl,#2
131
        add hl,sp
132
        ld e,(hl)
133
        inc hl
134
        ld d,(hl)
135
        push de
136
        inc hl
137
        ld e,(hl)
138
        inc hl
139
        ld d,(hl)
140
        inc hl
141
        ld c,(hl)
142
        inc hl
143
        ld b,(hl)
144
        ex de,hl
145
        pop de
146
        jp _FAST_LDIR
147
__endasm;
148
}
149
 
150
void pal_select(u8 id) __naked
151
{
152
__asm
153
        ld hl,#2
154
        add hl,sp
155
        ld a,(hl)
156
        jp _PAL_SELECT
157
__endasm;
158
}
159
 
160
 
161
 
162
void pal_bright(u8 bright) __naked
163
{
164
__asm
165
        ld hl,#2
166
        add hl,sp
167
        ld a,(hl)
168
        jp _PAL_BRIGHT
169
__endasm;
170
}
171
 
172
void pal_copy(u8 id,u8* pal) __naked
173
{
174
__asm
175
        ld hl,#2
176
        add hl,sp
177
        ld a,(hl)
178
        inc hl
179
        ld e,(hl)
180
        inc hl
181
        ld d,(hl)
182
        jp _PAL_COPY
183
__endasm;
184
}
185
 
186
 
187
 
188
void sfx_play(u8 sfx,i8 vol) __naked
189
{
190
__asm
191
        ld hl,#2
192
        add hl,sp
193
        ld b,(hl)
194
        inc hl
195
        ld c,(hl)
196
        jp _SFX_PLAY
197
__endasm;
198
}
199
 
200
 
201
 
202
void sfx_stop(void) __naked
203
{
204
__asm
205
        jp _SFX_STOP
206
__endasm;
207
}
208
 
209
 
210
 
211
 
212
 
213
void pal_clear(void) __naked
214
{
215
__asm
216
        ld hl,#_PALETTE
217
        ld bc,#0x1000
218
1$:
219
        ld (hl),c
220
        inc l
221
        djnz 1$
222
        ld a,h
223
        ld (_PALCHANGE),a
224
        ret
225
__endasm;
226
}
227
 
228
 
229
 
230
 
231
 
232
void pal_col(u8 id,u8 col) __naked
233
{
234
__asm
235
        ld hl,#2
236
        add hl,sp
237
        ld a,(hl)
238
        inc hl
239
        ld c,(hl)
240
        ld hl,#_PALETTE
241
        add a,l
242
        ld l,a
243
        ld a,c
244
        and #63
245
        ld (hl),a
246
        ld a,h
247
        ld (_PALCHANGE),a
248
        ret
249
__endasm;
250
}
251
 
252
 
253
 
254
 
255
 
256
void pal_custom(u8* pal) __naked
257
{
258
__asm
259
        ld hl,#2
260
        add hl,sp
261
        ld a,(hl)
262
        inc hl
263
        ld h,(hl)
264
        ld l,a
265
        ld de,#_PALETTE
266
        ld b,#16
267
1$:
268
        ld a,(hl)
269
        and #63
270
        ld (de),a
271
        inc hl
272
        inc e
273
        djnz 1$
274
        ld a,d
275
        ld (_PALCHANGE),a
276
        ret
277
__endasm;
278
}
279
 
280
 
281
 
282
 
283
void draw_tile_key(u8 x,u8 y,u16 tile) __naked
284
{
285
__asm
286
        ld hl,#2
287
        add hl,sp
288
        ld c,(hl)
289
        inc hl
290
        ld b,(hl)
291
        inc hl
292
        ld e,(hl)
293
        inc hl
294
        ld d,(hl)
295
        jp _DRAW_TILE_KEY
296
__endasm;
297
}
298
 
299
 
300
 
301
 
302
void clear_screen(u8 color) __naked
303
{
304
__asm
305
        ld hl,#2
306
        add hl,sp
307
        ld a,(hl)
308
        jp _CLEAR_SCREEN
309
__endasm;
310
}
311
 
312
 
313
 
314
 
315
 
316
void select_image(u8 id) __naked
317
{
318
__asm
319
        ld hl,#2
320
        add hl,sp
321
        ld l,(hl)
322
        jp _SELECT_IMAGE
323
__endasm;
324
}
325
 
326
 
327
 
328
void color_key(u8 col) __naked
329
{
330
__asm
331
        ld hl,#2
332
        add hl,sp
333
        ld c,(hl)
334
        jp _COLOR_KEY
335
__endasm;
336
}
337
 
338
 
339
 
340
 
341
u32 time(void) __naked
342
{
343
__asm
344
        ld hl,#_TIME+3
345
        ld d,(hl)
346
        dec hl
347
        ld e,(hl)
348
        dec hl
349
        ld a,(hl)
350
        dec hl
351
        ld l,(hl)
352
        ld h,a
353
        ret
354
__endasm;
355
}
356
 
357
 
358
 
359
void delay(u16 time) __naked
360
{
361
__asm
362
 
363
 
364
        ld hl,#2
365
        add hl,sp
366
        ld c,(hl)
367
        inc hl
368
        ld b,(hl)
369
        ld a,b
370
        or c
371
        ret z
372
1$:
373
        halt
374
        dec bc
375
        ld a,b
376
        or c
377
        jr nz,1$
378
 
379
        ret
380
__endasm;
381
}
382
 
383
void swap_screen(void) __naked
384
{
385
__asm
386
 
387
 
388
        jp _SWAP_SCREEN
389
 
390
__endasm;
391
}
392
 
393
 
394
 
395
 
396
void border(u8 n) __naked
397
{
398
__asm
399
        ld hl,#2
400
        add hl,sp
401
        ld a,(hl)
402
        ld (_BORDERCOL),a
403
        ;ld c,a
404
        ;and #7
405
        ;bit 3,c
406
        ;jr nz,1$
407
        ;out (0xfe),a
408
        ;ret
409
;1$:
410
        ;out (0xf6),a
411
        ret
412
__endasm;
413
}
414
 
415
 
416
 
417
 
418
 
419
 
420
void keyboard(u8* keys) __naked
421
{
422
__asm
423
        ld hl,#2
424
        add hl,sp
425
        ld e,(hl)
426
        inc hl
427
        ld d,(hl)
428
        jp _KEYBOARD
429
__endasm;
430
}
431
 
432
 
433
void music_play(u8 mus) __naked
434
{
435
__asm
436
        ld hl,#2
437
        add hl,sp
438
        ld a,(hl)
439
        jp _MUSIC_PLAY
440
__endasm;
441
}
442
 
443
 
444
 
445
void music_stop(void) __naked
446
{
447
__asm
448
        jp _MUSIC_STOP
449
__endasm;
450
}
451
 
452
 
453
 
454
void sample_play(u8 sample) __naked
455
{
456
__asm
457
        ld hl,#2
458
        add hl,sp
459
        ld l,(hl)
460
        jp _SAMPLE_PLAY
461
__endasm;
462
}
463
 
464
 
465
 
466
u16 rand16(void) __naked
467
{
468
__asm
469
        ld hl,(1$)
470
        push hl
471
        srl h
472
        rr l
473
        ex de,hl
474
        ld hl,(2$)
475
        add hl,de
476
        ld (2$),hl
477
        ld a,l
478
        xor #15
479
        ld l,a
480
        ex de,hl
481
        pop hl
482
        sbc hl,de
483
        ld (1$),hl
484
        ret
485
 
486
1$:     .dw 1
487
2$:     .dw 5
488
 
489
__endasm;
490
}
491
 
492
 
493
/*
494
 
495
u8 mouse_pos(u8* x,u8* y) __naked
496
{
497
__asm
498
        ld hl,#2
499
        add hl,sp
500
        ld c,(hl)
501
        inc hl
502
        ld b,(hl)
503
        inc hl
504
        ld e,(hl)
505
        inc hl
506
        ld d,(hl)
507
        ld a,(_MOUSE_X)
508
        ld (bc),a
509
        ld a,(_MOUSE_Y)
510
        ld (de),a
511
        ld a,(_MOUSE_BTN)
512
        ld l,a
513
        ret
514
__endasm;
515
}
516
 
517
 
518
 
519
void mouse_set(u8 x,u8 y) __naked
520
{
521
__asm
522
        ld hl,#2
523
        add hl,sp
524
        ld a,(hl)
525
        ld (_MOUSE_X),a
526
        inc hl
527
        ld a,(hl)
528
        ld (_MOUSE_Y),a
529
        jp _MOUSE_APPLY_CLIP
530
__endasm;
531
}
532
 
533
 
534
 
535
void mouse_clip(u8 xmin,u8 ymin,u8 xmax,u8 ymax) __naked
536
{
537
__asm
538
        ld hl,#2
539
        add hl,sp
540
        ld a,(hl)
541
        ld (_MOUSE_CX1),a
542
        inc hl
543
        ld a,(hl)
544
        ld (_MOUSE_CY1),a
545
        inc hl
546
        ld a,(hl)
547
        ld (_MOUSE_CX2),a
548
        inc hl
549
        ld a,(hl)
550
        ld (_MOUSE_CY2),a
551
        jp _MOUSE_APPLY_CLIP
552
__endasm;
553
}
554
 
555
 
556
 
557
u8 mouse_delta(i8* x,i8* y) __naked
558
{
559
__asm
560
        ld hl,#2
561
        add hl,sp
562
        ld c,(hl)
563
        inc hl
564
        ld b,(hl)
565
        inc hl
566
        ld e,(hl)
567
        inc hl
568
        ld d,(hl)
569
        ld a,(_MOUSE_DX)
570
        ld (bc),a
571
        ld a,(_MOUSE_DY)
572
        ld (bc),a
573
        ld a,(_MOUSE_BTN)
574
        ld l,a
575
        ret
576
__endasm;
577
}
578
 
579
 
941 alone 580
*/
939 alone 581
 
582
void set_sprite(u8 id,u8 x,u8 y,u16 spr) __naked
583
{
584
__asm
585
        ld hl,#2
586
        add hl,sp
587
        ld a,(hl)       ;id
588
        inc hl
589
        ld c,(hl)       ;x
590
        inc hl
591
        ld b,(hl)       ;y
592
        inc hl
593
        ld e,(hl)       ;sprl
594
        inc hl
595
        ld d,(hl)       ;sprh
596
 
597
        add a,a
598
        add a,a
599
        ld l,a
600
        ld h,#_SPRQUEUE/256
601
 
602
        ld a,d          ;  
603
        cp #255
604
        jr z,1$
605
        add a,a
606
        add a,d
607
        ld d,a
608
1$:
609
        ld a,(_SCREENACTIVE)
610
        and #2
611
        jr nz,2$
612
        inc h
613
2$:
614
        ld (hl),d
615
        inc l
616
        ld (hl),e
617
        inc l
618
        ld (hl),b
619
        inc l
620
        ld (hl),c
621
        ret
622
__endasm;
623
}
624
 
625
 
626
 
627
void sprites_start(void) __naked
628
{
629
__asm
630
        jp _SPRITES_START
631
__endasm;
632
}
633
 
634
 
635
 
636
void sprites_stop(void) __naked
637
{
638
__asm
639
        jp _SPRITES_STOP
640
__endasm;
641
}
642