| ... | ... |
@@ -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 |
|