... | ... |
@@ -6,7 +6,6 @@ |
6 | 6 |
|
7 | 7 |
;cursor { x 2 y 2 blink 1 } |
8 | 8 |
|
9 |
- |
|
10 | 9 |
|0100 ;Console { pad 8 char 1 byte 1 short 2 } |
11 | 10 |
|0110 ;Screen { width 2 height 2 pad 4 y 2 x 2 color 1 } |
12 | 11 |
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 } |
... | ... |
@@ -28,7 +27,7 @@ BRK |
28 | 27 |
( theme ) #0daf =System.r #02ff =System.g #035f =System.b |
29 | 28 |
|
30 | 29 |
( update cursor ) |
31 |
- #02 ~cursor.blink #01 EQU ADD =Sprite.color |
|
30 |
+ #02 =Sprite.color |
|
32 | 31 |
|
33 | 32 |
,cursor_icn =Sprite.addr |
34 | 33 |
~cursor.blink MOD2 #00 EQU =cursor.blink |
... | ... |
@@ -579,41 +579,34 @@ ppnil(Uxn *u, Uint16 ptr, Uint8 b0, Uint8 b1) |
579 | 579 |
|
580 | 580 |
#pragma mark - Generics |
581 | 581 |
|
582 |
-void |
|
583 |
-runevents(Uxn *u) |
|
584 |
-{ |
|
585 |
- SDL_Event event; |
|
586 |
- while(SDL_PollEvent(&event) != 0) { |
|
587 |
- switch(event.type) { |
|
588 |
- case SDL_QUIT: quit(); break; |
|
589 |
- case SDL_MOUSEBUTTONUP: |
|
590 |
- case SDL_MOUSEBUTTONDOWN: |
|
591 |
- case SDL_MOUSEMOTION: domouse(u, &event); break; |
|
592 |
- case SDL_TEXTINPUT: dotext(u, &event); break; |
|
593 |
- case SDL_KEYDOWN: doctrl(u, &event, 1); break; |
|
594 |
- case SDL_KEYUP: doctrl(u, &event, 0); break; |
|
595 |
- case SDL_WINDOWEVENT: |
|
596 |
- if(event.window.event == SDL_WINDOWEVENT_EXPOSED) |
|
597 |
- redraw(pixels, u); |
|
598 |
- break; |
|
599 |
- } |
|
600 |
- } |
|
601 |
-} |
|
602 |
- |
|
603 | 582 |
int |
604 | 583 |
start(Uxn *u) |
605 | 584 |
{ |
606 | 585 |
evaluxn(u, PAGE_VECTORS); |
607 | 586 |
redraw(pixels, u); |
608 | 587 |
while(1) { |
609 |
- float elapsed; |
|
610 |
- double start = SDL_GetPerformanceCounter(); |
|
611 |
- runevents(u); |
|
588 |
+ SDL_Event event; |
|
589 |
+ double elapsed, start = SDL_GetPerformanceCounter(); |
|
590 |
+ while(SDL_PollEvent(&event) != 0) { |
|
591 |
+ switch(event.type) { |
|
592 |
+ case SDL_QUIT: quit(); break; |
|
593 |
+ case SDL_MOUSEBUTTONUP: |
|
594 |
+ case SDL_MOUSEBUTTONDOWN: |
|
595 |
+ case SDL_MOUSEMOTION: domouse(u, &event); break; |
|
596 |
+ case SDL_TEXTINPUT: dotext(u, &event); break; |
|
597 |
+ case SDL_KEYDOWN: doctrl(u, &event, 1); break; |
|
598 |
+ case SDL_KEYUP: doctrl(u, &event, 0); break; |
|
599 |
+ case SDL_WINDOWEVENT: |
|
600 |
+ if(event.window.event == SDL_WINDOWEVENT_EXPOSED) |
|
601 |
+ redraw(pixels, u); |
|
602 |
+ break; |
|
603 |
+ } |
|
604 |
+ } |
|
612 | 605 |
evaluxn(u, PAGE_VECTORS + 0x08); |
613 | 606 |
if(screen.reqdraw) |
614 | 607 |
redraw(pixels, u); |
615 | 608 |
elapsed = (SDL_GetPerformanceCounter() - start) / (double)SDL_GetPerformanceFrequency() * 1000.0f; |
616 |
- SDL_Delay((int)(16.666f - elapsed)); |
|
609 |
+ SDL_Delay(clamp(16.666f - elapsed, 0, 1000)); |
|
617 | 610 |
} |
618 | 611 |
} |
619 | 612 |
|