diff options
author | xSlendiX <slendi@socopon.com> | 2023-06-03 01:35:21 +0300 |
---|---|---|
committer | xSlendiX <slendi@socopon.com> | 2023-06-03 01:35:21 +0300 |
commit | 759c3bbdda03bf93fbe96884075fe9791fd796f9 (patch) | |
tree | 7a5f64338b8986fc3b205a24f303d952f9e2515a | |
parent | 1882d46a2854d959a76cf9c75bc59efa0be07f81 (diff) |
Make 3Days headless.
Signed-off-by: xSlendiX <slendi@socopon.com>
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | main.c | 6 | ||||
-rw-r--r-- | sdl_window.c | 762 | ||||
-rw-r--r-- | sound.c | 42 |
4 files changed, 408 insertions, 406 deletions
@@ -1,11 +1,11 @@ CC=gcc -CFLAGS=$(shell pkg-config --cflags sdl2 portaudio-2.0) -Ofast -g3 -m64 -fno-omit-frame-pointer -DUSE_NETWORKING -Wno-int-conversion +CFLAGS=-Ofast -g3 -m64 -fno-omit-frame-pointer -DUSE_NETWORKING -Wno-int-conversion CFILES=ext/ln/linenoise.c sound.c main.c ext/dyad/src/dyad.c ext/vec/src/vec.c ext/map/src/map.c TOSPrint.c ext/C_Unescaper/escaper.c ext/argtable3/argtable3.c runtime.c poopalloc.c tos_aot.c sdl_window.c multic.c vfs.c dbg.c AFILES=FFI_SYSV.yasm COBJS=$(foreach o,$(CFILES),$(o).o) AOBJS=$(foreach o,$(AFILES),$(o).o) OBJS=$(COBJS) $(AOBJS) -LIBS= -lm -lpthread $(shell pkg-config --libs sdl2 portaudio-2.0) +LIBS= -lm -lpthread all: 3d_loader echo "done" 3days-0.6.00.pkg: FreeBSD_pkg.sh 3d_loader T @@ -193,9 +193,9 @@ int main(int argc,char **argv) InitSound(); if(1) { //Create the Window,there is 1 screen God willing. - if(!is_cmd_line) { - NewDrawWindow(); - } + //if(!is_cmd_line) { + // NewDrawWindow(); + //} int flags=0; #ifndef TARGET_WIN32 if(!bounds_check_enable->count) { diff --git a/sdl_window.c b/sdl_window.c index 5477bd3..a5ea5c4 100644 --- a/sdl_window.c +++ b/sdl_window.c @@ -1,14 +1,14 @@ #include "3d.h" #ifdef TARGET_WIN32 -#include "SDL2-mingw64/include/SDL2/SDL.h" +//#include "SDL2-mingw64/include/SDL2/SDL.h" #else -#include <SDL2/SDL.h> +//#include <SDL2/SDL.h> #endif typedef struct CDrawWindow { - SDL_Window *window; - SDL_Surface *surf; - SDL_Renderer *rend; +// SDL_Window *window; +// SDL_Surface *surf; +// SDL_Renderer *rend; int64_t sz_x,sz_y; int64_t margin_x,margin_y; } CDrawWindow; @@ -18,112 +18,114 @@ static int32_t buf[640*480]; static CDrawWindow *win; static void StartInputScanner(); void SetClipboard(char *text) { - SDL_SetClipboardText(text); +//SDL_SetClipboardText(text); } char *ClipboardText() { - char *sdl=SDL_GetClipboardText(),*r; - if(!sdl) return strdup(""); - r=strdup(sdl); - SDL_free(sdl); - return r; +// char *sdl=SDL_GetClipboardText(),*r; +// if(!sdl) return strdup(""); +// r=strdup(sdl); +// SDL_free(sdl); +// return r; + return strdup(""); } CDrawWindow *NewDrawWindow() { - if(!SDL_WasInit(SDL_INIT_EVERYTHING)) { - SDL_Init(SDL_INIT_EVERYTHING); - SDL_SetHintWithPriority(SDL_HINT_RENDER_SCALE_QUALITY,"linear",SDL_HINT_OVERRIDE); - } - if(!win) { - CDrawWindow *ret=TD_MALLOC(sizeof(CDrawWindow)); - ret->window=SDL_CreateWindow("3Days",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,640,480,SDL_WINDOW_RESIZABLE); - ret->surf=SDL_CreateRGBSurfaceWithFormat(0,640,480,32,SDL_PIXELFORMAT_RGB888); - SDL_SetWindowMinimumSize(ret->window,640,480); - ret->rend=SDL_CreateRenderer(ret->window,-1,SDL_RENDERER_ACCELERATED); - ret->margin_y=ret->margin_x=0; - ret->sz_x=640; - ret->sz_y=480; - //Let 3Days draw the mouse from HolyC - SDL_ShowCursor(SDL_DISABLE); - win=ret; - } - return win; +// if(!SDL_WasInit(SDL_INIT_EVERYTHING)) { +// SDL_Init(SDL_INIT_EVERYTHING); +// SDL_SetHintWithPriority(SDL_HINT_RENDER_SCALE_QUALITY,"linear",SDL_HINT_OVERRIDE); +// } +// if(!win) { +// CDrawWindow *ret=TD_MALLOC(sizeof(CDrawWindow)); +// ret->window=SDL_CreateWindow("3Days",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,640,480,SDL_WINDOW_RESIZABLE); +// ret->surf=SDL_CreateRGBSurfaceWithFormat(0,640,480,32,SDL_PIXELFORMAT_RGB888); +// SDL_SetWindowMinimumSize(ret->window,640,480); +// ret->rend=SDL_CreateRenderer(ret->window,-1,SDL_RENDERER_ACCELERATED); +// ret->margin_y=ret->margin_x=0; +// ret->sz_x=640; +// ret->sz_y=480; +// //Let 3Days draw the mouse from HolyC +// SDL_ShowCursor(SDL_DISABLE); +// win=ret; +// } +// return win; + return NULL; } void _3DaysScaleScrn() { } static void _DrawWindowUpdate(CDrawWindow *ul,int8_t *colors,int64_t internal_width,int64_t h) { - if(!SDL_WasInit(SDL_INIT_EVERYTHING)) - return NULL; - if(!win) return NULL; - SDL_Surface *s=win->surf; - int64_t x,y,c,i,i2; - uint32_t *src=colors; - uint32_t *dst=s->pixels; - SDL_LockSurface(s); - for(y=0;y!=h;y++) { - memcpy(dst,src,640*4); - src+=internal_width; - dst+=s->pitch/4; - } - SDL_UnlockSurface(s); - int ww,wh,w2,h2; - int64_t margin=0,margin2=0; - SDL_Rect rct; - SDL_GetWindowSize(win->window,&ww,&wh); - if(wh<ww) { - h2=wh; - w2=640./480*h2; - margin=(ww-w2)/2; - if(w2>ww) { - margin=0; - goto top_margin; - } - } else { -top_margin: - w2=ww; - h2=480/640.*w2; - margin2=(wh-h2)/2; - } - win->margin_x=margin; - win->margin_y=margin2; - win->sz_x=w2; - win->sz_y=h2; - rct.y=margin2;rct.x=margin;rct.w=w2;rct.h=h2; - SDL_Texture *t=SDL_CreateTextureFromSurface(win->rend,s); - SDL_RenderClear(win->rend); - SDL_RenderCopy(win->rend,t,NULL,&rct); - SDL_RenderPresent(win->rend); - SDL_DestroyTexture(t); +// if(!SDL_WasInit(SDL_INIT_EVERYTHING)) +// return NULL; +// if(!win) return NULL; +// SDL_Surface *s=win->surf; +// int64_t x,y,c,i,i2; +// uint32_t *src=colors; +// uint32_t *dst=s->pixels; +// SDL_LockSurface(s); +// for(y=0;y!=h;y++) { +// memcpy(dst,src,640*4); +// src+=internal_width; +// dst+=s->pitch/4; +// } +// SDL_UnlockSurface(s); +// int ww,wh,w2,h2; +// int64_t margin=0,margin2=0; +// SDL_Rect rct; +// SDL_GetWindowSize(win->window,&ww,&wh); +// if(wh<ww) { +// h2=wh; +// w2=640./480*h2; +// margin=(ww-w2)/2; +// if(w2>ww) { +// margin=0; +// goto top_margin; +// } +// } else { +//top_margin: +// w2=ww; +// h2=480/640.*w2; +// margin2=(wh-h2)/2; +// } +// win->margin_x=margin; +// win->margin_y=margin2; +// win->sz_x=w2; +// win->sz_y=h2; +// rct.y=margin2;rct.x=margin;rct.w=w2;rct.h=h2; +// SDL_Texture *t=SDL_CreateTextureFromSurface(win->rend,s); +// SDL_RenderClear(win->rend); +// SDL_RenderCopy(win->rend,t,NULL,&rct); +// SDL_RenderPresent(win->rend); +// SDL_DestroyTexture(t); } void DrawWindowUpdate(struct CDrawWindow *w,int8_t *colors,int64_t internal_width,int64_t h) { - //https://stackoverflow.com/questions/27414548/sdl-timers-and-waitevent - SDL_Event event; - SDL_UserEvent userevent; - - /* In this example, our callback pushes an SDL_USEREVENT event - into the queue, and causes our callback to be called again at the - same interval: */ - - userevent.type = SDL_USEREVENT; - userevent.code = 0; - userevent.data1 = colors; - userevent.data2 = internal_width; - - event.type = SDL_USEREVENT; - event.user = userevent; - - SDL_PushEvent(&event); - return; +// //https://stackoverflow.com/questions/27414548/sdl-timers-and-waitevent +// SDL_Event event; +// SDL_UserEvent userevent; +// +// /* In this example, our callback pushes an SDL_USEREVENT event +// into the queue, and causes our callback to be called again at the +// same interval: */ +// +// userevent.type = SDL_USEREVENT; +// userevent.code = 0; +// userevent.data1 = colors; +// userevent.data2 = internal_width; +// +// event.type = SDL_USEREVENT; +// event.user = userevent; +// +// SDL_PushEvent(&event); +// return; } -static DECLSPEC void UserEvHandler(void *a,SDL_UserEvent *ev) { - if(ev->type==SDL_USEREVENT) - _DrawWindowUpdate(NULL,ev->data1,ev->data2,480); -} +//static DECLSPEC void UserEvHandler(void *a,SDL_UserEvent *ev) { +// if(ev->type==SDL_USEREVENT) +// _DrawWindowUpdate(NULL,ev->data1,ev->data2,480); +//} void DrawWindowDel(CDrawWindow *win) { - SDL_FreeSurface(win->surf); - SDL_DestroyWindow(win->window); - TD_FREE(win); +// SDL_FreeSurface(win->surf); +// SDL_DestroyWindow(win->window); +// TD_FREE(win); } #define CH_CTRLA 0x01 #define CH_CTRLB 0x02 @@ -247,306 +249,306 @@ static int64_t K2SC(char ch) { if(keys[i]==ch) return i; } } -static int32_t __ScanKey(int64_t *ch,int64_t *sc,SDL_Event *_e) { - SDL_Event e=*_e; - int64_t mod=0,cond,dummy; - if(!ch) ch=&dummy; - if(!sc) sc=&dummy; - cond=1; - if(cond) { - if(e.type==SDL_KEYDOWN) { - ent: - *ch=*sc=0; - if(e.key.keysym.mod&(KMOD_LSHIFT|KMOD_RSHIFT)) - mod|=SCF_SHIFT; - else - mod|=SCF_NO_SHIFT; - if(e.key.keysym.mod&(KMOD_LCTRL|KMOD_RCTRL)) - mod|=SCF_CTRL; - if(e.key.keysym.mod&(KMOD_LALT|KMOD_RALT)) - mod|=SCF_ALT; - if(e.key.keysym.mod&(KMOD_CAPS)) - mod|=SCF_CAPS; - if(e.key.keysym.mod&(KMOD_NUM)) - mod|=SCF_NUM; - if(e.key.keysym.mod&KMOD_LGUI) - mod|=SCF_MS_L_DOWN; - if(e.key.keysym.mod&KMOD_RGUI) - mod|=SCF_MS_R_DOWN; - *sc=e.key.keysym.scancode; - switch(e.key.keysym.scancode) { - case SDL_SCANCODE_SPACE: - return *sc=K2SC(' ')|mod; - case SDL_SCANCODE_APOSTROPHE: - return *sc=K2SC('\'')|mod; - case SDL_SCANCODE_COMMA: - return *sc=K2SC(',')|mod; - case SDL_SCANCODE_MINUS: - return *sc=K2SC('-')|mod; - case SDL_SCANCODE_PERIOD: - return *sc=K2SC('.')|mod; - case SDL_SCANCODE_GRAVE: - return *sc=K2SC('`')|mod; - case SDL_SCANCODE_SLASH: - return *sc=K2SC('/')|mod; - case SDL_SCANCODE_0: - return *sc=K2SC('0')|mod; - case SDL_SCANCODE_1: - return *sc=K2SC('1')|mod; - case SDL_SCANCODE_2: - return *sc=K2SC('2')|mod; - case SDL_SCANCODE_3: - return *sc=K2SC('3')|mod; - case SDL_SCANCODE_4: - return *sc=K2SC('4')|mod; - case SDL_SCANCODE_5: - return *sc=K2SC('5')|mod; - case SDL_SCANCODE_6: - return *sc=K2SC('6')|mod; - case SDL_SCANCODE_7: - return *sc=K2SC('7')|mod; - case SDL_SCANCODE_8: - return *sc=K2SC('8')|mod; - case SDL_SCANCODE_9: - return *sc=K2SC('9')|mod; - case SDL_SCANCODE_SEMICOLON: - return *sc=K2SC(';')|mod; - case SDL_SCANCODE_EQUALS: - return *sc=K2SC('=')|mod; - case SDL_SCANCODE_LEFTBRACKET: - return *sc=K2SC('[')|mod; - case SDL_SCANCODE_RIGHTBRACKET: - return *sc=K2SC(']')|mod; - case SDL_SCANCODE_BACKSLASH: - return *sc=K2SC('\\')|mod; - case SDL_SCANCODE_Q: - return *sc=K2SC('q')|mod; - case SDL_SCANCODE_W: - return *sc=K2SC('w')|mod; - case SDL_SCANCODE_E: - return *sc=K2SC('e')|mod; - case SDL_SCANCODE_R: - return *sc=K2SC('r')|mod; - case SDL_SCANCODE_T: - return *sc=K2SC('t')|mod; - case SDL_SCANCODE_Y: - return *sc=K2SC('y')|mod; - case SDL_SCANCODE_U: - return *sc=K2SC('u')|mod; - case SDL_SCANCODE_I: - return *sc=K2SC('i')|mod; - case SDL_SCANCODE_O: - return *sc=K2SC('o')|mod; - case SDL_SCANCODE_P: - return *sc=K2SC('p')|mod; - case SDL_SCANCODE_A: - return *sc=K2SC('a')|mod; - case SDL_SCANCODE_S: - return *sc=K2SC('s')|mod; - case SDL_SCANCODE_D: - return *sc=K2SC('d')|mod; - case SDL_SCANCODE_F: - return *sc=K2SC('f')|mod; - case SDL_SCANCODE_G: - return *sc=K2SC('g')|mod; - case SDL_SCANCODE_H: - return *sc=K2SC('h')|mod; - case SDL_SCANCODE_J: - return *sc=K2SC('j')|mod; - case SDL_SCANCODE_K: - return *sc=K2SC('k')|mod; - case SDL_SCANCODE_L: - return *sc=K2SC('l')|mod; - case SDL_SCANCODE_Z: - return *sc=K2SC('z')|mod; - case SDL_SCANCODE_X: - return *sc=K2SC('x')|mod; - case SDL_SCANCODE_C: - return *sc=K2SC('c')|mod; - case SDL_SCANCODE_V: - return *sc=K2SC('v')|mod; - case SDL_SCANCODE_B: - return *sc=K2SC('b')|mod; - case SDL_SCANCODE_N: - return *sc=K2SC('n')|mod; - case SDL_SCANCODE_M: - return *sc=K2SC('m')|mod; - case SDL_SCANCODE_ESCAPE: - *sc=mod|SC_ESC; - return 1; - case SDL_SCANCODE_BACKSPACE: - *sc=mod|SC_BACKSPACE; - return 1; - case SDL_SCANCODE_TAB: - *sc=mod|SC_TAB; - return 1; - case SDL_SCANCODE_RETURN: - *sc=mod|SC_ENTER; - return 1; - case SDL_SCANCODE_LSHIFT: - case SDL_SCANCODE_RSHIFT: - *sc=mod|SC_SHIFT; - return 1; - case SDL_SCANCODE_LALT: - *sc=mod|SC_ALT; - return 1; - case SDL_SCANCODE_RALT: - *sc=mod|SC_ALT; - return 1; - case SDL_SCANCODE_LCTRL: - *sc=mod|SC_CTRL; - return 1; - case SDL_SCANCODE_RCTRL: - *sc=mod|SC_CTRL; - return 1; - case SDL_SCANCODE_CAPSLOCK: - *sc=mod|SC_CAPS; - return 1; - case SDL_SCANCODE_NUMLOCKCLEAR: - *sc=mod|SC_NUM; - return 1; - case SDL_SCANCODE_SCROLLLOCK: - *sc=mod|SC_SCROLL; - return 1; - case SDL_SCANCODE_DOWN: - *sc=mod|SC_CURSOR_DOWN; - return 1; - case SDL_SCANCODE_UP: - *sc=mod|SC_CURSOR_UP; - return 1; - case SDL_SCANCODE_RIGHT: - *sc=mod|SC_CURSOR_RIGHT; - return 1; - case SDL_SCANCODE_LEFT: - *sc=mod|SC_CURSOR_LEFT; - return 1; - case SDL_SCANCODE_PAGEDOWN: - *sc=mod|SC_PAGE_DOWN; - return 1; - case SDL_SCANCODE_PAGEUP: - *sc=mod|SC_PAGE_UP; - return 1; - case SDL_SCANCODE_HOME: - *sc=mod|SC_HOME; - return 1; - case SDL_SCANCODE_END: - *sc=mod|SC_END; - return 1; - case SDL_SCANCODE_INSERT: - *sc=mod|SC_INS; - return 1; - case SDL_SCANCODE_DELETE: - *sc=mod|SC_DELETE; - return 1; - case SC_GUI: - *sc=mod|SDL_SCANCODE_APPLICATION; - return 1; - case SDL_SCANCODE_PRINTSCREEN: - *sc=mod|SC_PRTSCRN1; - return 1; - case SDL_SCANCODE_PAUSE: - *sc=mod|SC_PAUSE; - return 1; - case SDL_SCANCODE_F1...SDL_SCANCODE_F12: - *sc=mod|(SC_F1+e.key.keysym.scancode-SDL_SCANCODE_F1); - return 1; - } - } else if(e.type==SDL_KEYUP) { - mod|=SCF_KEY_UP; - goto ent; - } - } - return -1; -} +//static int32_t __ScanKey(int64_t *ch,int64_t *sc,SDL_Event *_e) { +// SDL_Event e=*_e; +// int64_t mod=0,cond,dummy; +// if(!ch) ch=&dummy; +// if(!sc) sc=&dummy; +// cond=1; +// if(cond) { +// if(e.type==SDL_KEYDOWN) { +// ent: +// *ch=*sc=0; +// if(e.key.keysym.mod&(KMOD_LSHIFT|KMOD_RSHIFT)) +// mod|=SCF_SHIFT; +// else +// mod|=SCF_NO_SHIFT; +// if(e.key.keysym.mod&(KMOD_LCTRL|KMOD_RCTRL)) +// mod|=SCF_CTRL; +// if(e.key.keysym.mod&(KMOD_LALT|KMOD_RALT)) +// mod|=SCF_ALT; +// if(e.key.keysym.mod&(KMOD_CAPS)) +// mod|=SCF_CAPS; +// if(e.key.keysym.mod&(KMOD_NUM)) +// mod|=SCF_NUM; +// if(e.key.keysym.mod&KMOD_LGUI) +// mod|=SCF_MS_L_DOWN; +// if(e.key.keysym.mod&KMOD_RGUI) +// mod|=SCF_MS_R_DOWN; +// *sc=e.key.keysym.scancode; +// switch(e.key.keysym.scancode) { +// case SDL_SCANCODE_SPACE: +// return *sc=K2SC(' ')|mod; +// case SDL_SCANCODE_APOSTROPHE: +// return *sc=K2SC('\'')|mod; +// case SDL_SCANCODE_COMMA: +// return *sc=K2SC(',')|mod; +// case SDL_SCANCODE_MINUS: +// return *sc=K2SC('-')|mod; +// case SDL_SCANCODE_PERIOD: +// return *sc=K2SC('.')|mod; +// case SDL_SCANCODE_GRAVE: +// return *sc=K2SC('`')|mod; +// case SDL_SCANCODE_SLASH: +// return *sc=K2SC('/')|mod; +// case SDL_SCANCODE_0: +// return *sc=K2SC('0')|mod; +// case SDL_SCANCODE_1: +// return *sc=K2SC('1')|mod; +// case SDL_SCANCODE_2: +// return *sc=K2SC('2')|mod; +// case SDL_SCANCODE_3: +// return *sc=K2SC('3')|mod; +// case SDL_SCANCODE_4: +// return *sc=K2SC('4')|mod; +// case SDL_SCANCODE_5: +// return *sc=K2SC('5')|mod; +// case SDL_SCANCODE_6: +// return *sc=K2SC('6')|mod; +// case SDL_SCANCODE_7: +// return *sc=K2SC('7')|mod; +// case SDL_SCANCODE_8: +// return *sc=K2SC('8')|mod; +// case SDL_SCANCODE_9: +// return *sc=K2SC('9')|mod; +// case SDL_SCANCODE_SEMICOLON: +// return *sc=K2SC(';')|mod; +// case SDL_SCANCODE_EQUALS: +// return *sc=K2SC('=')|mod; +// case SDL_SCANCODE_LEFTBRACKET: +// return *sc=K2SC('[')|mod; +// case SDL_SCANCODE_RIGHTBRACKET: +// return *sc=K2SC(']')|mod; +// case SDL_SCANCODE_BACKSLASH: +// return *sc=K2SC('\\')|mod; +// case SDL_SCANCODE_Q: +// return *sc=K2SC('q')|mod; +// case SDL_SCANCODE_W: +// return *sc=K2SC('w')|mod; +// case SDL_SCANCODE_E: +// return *sc=K2SC('e')|mod; +// case SDL_SCANCODE_R: +// return *sc=K2SC('r')|mod; +// case SDL_SCANCODE_T: +// return *sc=K2SC('t')|mod; +// case SDL_SCANCODE_Y: +// return *sc=K2SC('y')|mod; +// case SDL_SCANCODE_U: +// return *sc=K2SC('u')|mod; +// case SDL_SCANCODE_I: +// return *sc=K2SC('i')|mod; +// case SDL_SCANCODE_O: +// return *sc=K2SC('o')|mod; +// case SDL_SCANCODE_P: +// return *sc=K2SC('p')|mod; +// case SDL_SCANCODE_A: +// return *sc=K2SC('a')|mod; +// case SDL_SCANCODE_S: +// return *sc=K2SC('s')|mod; +// case SDL_SCANCODE_D: +// return *sc=K2SC('d')|mod; +// case SDL_SCANCODE_F: +// return *sc=K2SC('f')|mod; +// case SDL_SCANCODE_G: +// return *sc=K2SC('g')|mod; +// case SDL_SCANCODE_H: +// return *sc=K2SC('h')|mod; +// case SDL_SCANCODE_J: +// return *sc=K2SC('j')|mod; +// case SDL_SCANCODE_K: +// return *sc=K2SC('k')|mod; +// case SDL_SCANCODE_L: +// return *sc=K2SC('l')|mod; +// case SDL_SCANCODE_Z: +// return *sc=K2SC('z')|mod; +// case SDL_SCANCODE_X: +// return *sc=K2SC('x')|mod; +// case SDL_SCANCODE_C: +// return *sc=K2SC('c')|mod; +// case SDL_SCANCODE_V: +// return *sc=K2SC('v')|mod; +// case SDL_SCANCODE_B: +// return *sc=K2SC('b')|mod; +// case SDL_SCANCODE_N: +// return *sc=K2SC('n')|mod; +// case SDL_SCANCODE_M: +// return *sc=K2SC('m')|mod; +// case SDL_SCANCODE_ESCAPE: +// *sc=mod|SC_ESC; +// return 1; +// case SDL_SCANCODE_BACKSPACE: +// *sc=mod|SC_BACKSPACE; +// return 1; +// case SDL_SCANCODE_TAB: +// *sc=mod|SC_TAB; +// return 1; +// case SDL_SCANCODE_RETURN: +// *sc=mod|SC_ENTER; +// return 1; +// case SDL_SCANCODE_LSHIFT: +// case SDL_SCANCODE_RSHIFT: +// *sc=mod|SC_SHIFT; +// return 1; +// case SDL_SCANCODE_LALT: +// *sc=mod|SC_ALT; +// return 1; +// case SDL_SCANCODE_RALT: +// *sc=mod|SC_ALT; +// return 1; +// case SDL_SCANCODE_LCTRL: +// *sc=mod|SC_CTRL; +// return 1; +// case SDL_SCANCODE_RCTRL: +// *sc=mod|SC_CTRL; +// return 1; +// case SDL_SCANCODE_CAPSLOCK: +// *sc=mod|SC_CAPS; +// return 1; +// case SDL_SCANCODE_NUMLOCKCLEAR: +// *sc=mod|SC_NUM; +// return 1; +// case SDL_SCANCODE_SCROLLLOCK: +// *sc=mod|SC_SCROLL; +// return 1; +// case SDL_SCANCODE_DOWN: +// *sc=mod|SC_CURSOR_DOWN; +// return 1; +// case SDL_SCANCODE_UP: +// *sc=mod|SC_CURSOR_UP; +// return 1; +// case SDL_SCANCODE_RIGHT: +// *sc=mod|SC_CURSOR_RIGHT; +// return 1; +// case SDL_SCANCODE_LEFT: +// *sc=mod|SC_CURSOR_LEFT; +// return 1; +// case SDL_SCANCODE_PAGEDOWN: +// *sc=mod|SC_PAGE_DOWN; +// return 1; +// case SDL_SCANCODE_PAGEUP: +// *sc=mod|SC_PAGE_UP; +// return 1; +// case SDL_SCANCODE_HOME: +// *sc=mod|SC_HOME; +// return 1; +// case SDL_SCANCODE_END: +// *sc=mod|SC_END; +// return 1; +// case SDL_SCANCODE_INSERT: +// *sc=mod|SC_INS; +// return 1; +// case SDL_SCANCODE_DELETE: +// *sc=mod|SC_DELETE; +// return 1; +// case SC_GUI: +// *sc=mod|SDL_SCANCODE_APPLICATION; +// return 1; +// case SDL_SCANCODE_PRINTSCREEN: +// *sc=mod|SC_PRTSCRN1; +// return 1; +// case SDL_SCANCODE_PAUSE: +// *sc=mod|SC_PAUSE; +// return 1; +// case SDL_SCANCODE_F1...SDL_SCANCODE_F12: +// *sc=mod|(SC_F1+e.key.keysym.scancode-SDL_SCANCODE_F1); +// return 1; +// } +// } else if(e.type==SDL_KEYUP) { +// mod|=SCF_KEY_UP; +// goto ent; +// } +// } +// return -1; +//} static int32_t TimerCb(int32_t interval,void *data) { FFI_CALL_TOS_1(data,interval); return interval; } void __AddTimer(int64_t interval,void (*tos_fptr)()) { - SDL_AddTimer(interval,&TimerCb,tos_fptr); + //SDL_AddTimer(interval,&TimerCb,tos_fptr); } static void (*kb_cb)(); static void *kb_cb_data; -static int SDLCALL KBCallback(void *d,SDL_Event *e) { - int64_t c,s; - if(kb_cb&&(-1!=__ScanKey(&c,&s,e))) - FFI_CALL_TOS_2(kb_cb,c,s); - return 0; -} +//static int SDLCALL KBCallback(void *d,SDL_Event *e) { +// int64_t c,s; +// if(kb_cb&&(-1!=__ScanKey(&c,&s,e))) +// FFI_CALL_TOS_2(kb_cb,c,s); +// return 0; +//} void SetKBCallback(void *fptr,void *data) { - kb_cb=fptr; - kb_cb_data=data; - static init; - if(!init) { - init=1; - SDL_AddEventWatch(KBCallback,data); - } +// kb_cb=fptr; +// kb_cb_data=data; +// static init; +// if(!init) { +// init=1; +// SDL_AddEventWatch(KBCallback,data); +// } } //x,y,z,(l<<1)|r static void(*ms_cb)(); -static int SDLCALL MSCallback(void *d,SDL_Event *e) { - static int64_t x,y; - static int state; - static int z; - int x2,y2; - if(ms_cb) - switch(e->type) { - case SDL_MOUSEBUTTONDOWN: - x=e->button.x,y=e->button.y; - if(e->button.button==SDL_BUTTON_LEFT) - state|=2; - else - state|=1; - goto ent; - case SDL_MOUSEBUTTONUP: - x=e->button.x,y=e->button.y; - if(e->button.button==SDL_BUTTON_LEFT) - state&=~2; - else - state&=~1; - goto ent; - case SDL_MOUSEWHEEL: - z-=e->wheel.y; //???,inverted otherwise - goto ent; - case SDL_MOUSEMOTION: - x=e->motion.x,y=e->motion.y; - ent:; - if(x<win->margin_x) x2=0; - else if(x>win->margin_x+win->sz_x) x2=640-1; - else { - x2=(x-win->margin_x)*640./win->sz_x; - } - if(y<win->margin_y) y2=0; - else if(y>win->margin_y+win->sz_y) y2=480-1; - else { - y2=(y-win->margin_y)*480./win->sz_y; - } - FFI_CALL_TOS_4(ms_cb,x2,y2,z,state); - } - return 0; -} +//static int SDLCALL MSCallback(void *d,SDL_Event *e) { +// static int64_t x,y; +// static int state; +// static int z; +// int x2,y2; +// if(ms_cb) +// switch(e->type) { +// case SDL_MOUSEBUTTONDOWN: +// x=e->button.x,y=e->button.y; +// if(e->button.button==SDL_BUTTON_LEFT) +// state|=2; +// else +// state|=1; +// goto ent; +// case SDL_MOUSEBUTTONUP: +// x=e->button.x,y=e->button.y; +// if(e->button.button==SDL_BUTTON_LEFT) +// state&=~2; +// else +// state&=~1; +// goto ent; +// case SDL_MOUSEWHEEL: +// z-=e->wheel.y; //???,inverted otherwise +// goto ent; +// case SDL_MOUSEMOTION: +// x=e->motion.x,y=e->motion.y; +// ent:; +// if(x<win->margin_x) x2=0; +// else if(x>win->margin_x+win->sz_x) x2=640-1; +// else { +// x2=(x-win->margin_x)*640./win->sz_x; +// } +// if(y<win->margin_y) y2=0; +// else if(y>win->margin_y+win->sz_y) y2=480-1; +// else { +// y2=(y-win->margin_y)*480./win->sz_y; +// } +// FFI_CALL_TOS_4(ms_cb,x2,y2,z,state); +// } +// return 0; +//} void SetMSCallback(void *fptr) { - ms_cb=fptr; - static init; - if(!init){ - init=1; - SDL_AddEventWatch(MSCallback,NULL); - } -} -static void ExitCb(void *shutdown,SDL_Event *event) { - if(event->type==SDL_QUIT) - *(int64_t*)shutdown=1; +// ms_cb=fptr; +// static init; +// if(!init){ +// init=1; +// SDL_AddEventWatch(MSCallback,NULL); +// } } +//static void ExitCb(void *shutdown,SDL_Event *event) { +// if(event->type==SDL_QUIT) +// *(int64_t*)shutdown=1; +//} void InputLoop(void *ul) { - SDL_Event e; - SDL_AddEventWatch(&ExitCb,ul); - for(;!*(int64_t*)ul;) { - if(SDL_WaitEvent(&e)) { - if(e.type==SDL_USEREVENT) - UserEvHandler(NULL,&e); - } - } +// SDL_Event e; +// SDL_AddEventWatch(&ExitCb,ul); +// for(;!*(int64_t*)ul;) { +// if(SDL_WaitEvent(&e)) { +// if(e.type==SDL_USEREVENT) +// UserEvHandler(NULL,&e); +// } +// } } int64_t __3DaysVGAMode() { @@ -1,8 +1,8 @@ #include "3d.h" #include <math.h> -#include <portaudio.h> +//#include <portaudio.h> #define SAMPLE_RATE (24000) -static PaStream *pa_stream; +//static PaStream *pa_stream; static int64_t freq=0,sample=0; static double vol=0.1; void SetVolume(double v) { @@ -11,26 +11,26 @@ void SetVolume(double v) { double GetVolume() { return vol; } -static int paCallback(const void *inp,void *_out,unsigned long fpb,const PaStreamCallbackTimeInfo* timeInfo, - PaStreamCallbackFlags statusFlags, - void *userData ) { - char *out = (char*)_out; - unsigned int i; - for( i=0; i<fpb; i++ ) { - double t=(double)++sample/SAMPLE_RATE; - double amp=-1.0+2.0*round(fmod(2.0*t*freq,1.0)); - char maxed=(amp>0)?127:-127; - maxed*=vol; - if(!freq) maxed=0; - out[2*i]=maxed; - out[2*i+1]=maxed; - } - return 0; -} +//static int paCallback(const void *inp,void *_out,unsigned long fpb,const PaStreamCallbackTimeInfo* timeInfo, +// PaStreamCallbackFlags statusFlags, +// void *userData ) { +// char *out = (char*)_out; +// unsigned int i; +// for( i=0; i<fpb; i++ ) { +// double t=(double)++sample/SAMPLE_RATE; +// double amp=-1.0+2.0*round(fmod(2.0*t*freq,1.0)); +// char maxed=(amp>0)?127:-127; +// maxed*=vol; +// if(!freq) maxed=0; +// out[2*i]=maxed; +// out[2*i+1]=maxed; +// } +// return 0; +//} void InitSound() { - int err=Pa_Initialize(); - err=Pa_OpenDefaultStream(&pa_stream,0,2,paInt8,SAMPLE_RATE,256,&paCallback,&freq); - Pa_StartStream(pa_stream); +// int err=Pa_Initialize(); +// err=Pa_OpenDefaultStream(&pa_stream,0,2,paInt8,SAMPLE_RATE,256,&paCallback,&freq); +// Pa_StartStream(pa_stream); } void SndFreq(int64_t f) { freq=f; |