summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxSlendiX <slendi@socopon.com>2023-06-03 01:35:21 +0300
committerxSlendiX <slendi@socopon.com>2023-06-03 01:35:21 +0300
commit759c3bbdda03bf93fbe96884075fe9791fd796f9 (patch)
tree7a5f64338b8986fc3b205a24f303d952f9e2515a
parent1882d46a2854d959a76cf9c75bc59efa0be07f81 (diff)
Make 3Days headless.
Signed-off-by: xSlendiX <slendi@socopon.com>
-rw-r--r--Makefile4
-rw-r--r--main.c6
-rw-r--r--sdl_window.c762
-rw-r--r--sound.c42
4 files changed, 408 insertions, 406 deletions
diff --git a/Makefile b/Makefile
index 0f67349..fd67a5a 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/main.c b/main.c
index f15dc85..32e8a87 100644
--- a/main.c
+++ b/main.c
@@ -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() {
diff --git a/sound.c b/sound.c
index 526a406..3399567 100644
--- a/sound.c
+++ b/sound.c
@@ -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;