gocha / snes9x-rr Goto Github PK
View Code? Open in Web Editor NEWThis project forked from snes9xgit/snes9x
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator
Home Page: http://www.snes9x.com
License: Other
This project forked from snes9xgit/snes9x
Snes9x - Portable Super Nintendo Entertainment System (TM) emulator
Home Page: http://www.snes9x.com
License: Other
Lua scripts are always displayed on top of the emulator window, even when the script is minimized. At least for Archipelago, this can be frustrating to have displayed at all times.
I don't see a exe or jar file. How do I run it?
The hotkey for frame advance does nothing. I tried setting it to a variety of other keys with no success. Can still use frame advance if I go into the Emulation drop down menu and select it there.
This display is toggleable even while you're not doing anything movie related, so it'd be best to disassociate the name in the GUI from movies.
i Tried building the file from source on Linux Mint 20.1 but it won't build this is the error it's printing out:
`x11.cpp:57:3: error: ‘XvImage’ does not name a type; did you mean ‘XImage’?
57 | XvImage* xvimage;
| ^~~~~~~
| XImage
x11.cpp: In function ‘bool8 SetupXvideo()’:
x11.cpp:454:8: error: ‘XvQueryExtension’ was not declared in this scope; did you mean ‘XQueryExtension’?
454 | ret = XvQueryExtension(GUI.display,
| ^~~~~~~~~~~~~~~~
| XQueryExtension
x11.cpp:463:2: error: ‘XvAdaptorInfo’ was not declared in this scope
463 | XvAdaptorInfo* ai;
| ^~~~~~~~~~~~~
x11.cpp:463:17: error: ‘ai’ was not declared in this scope
463 | XvAdaptorInfo* ai;
| ^~
x11.cpp:464:8: error: ‘XvQueryAdaptors’ was not declared in this scope
464 | ret = XvQueryAdaptors(GUI.display, GUI.window, &p_num_adaptors, &ai);
| ^~~~~~~~~~~~~~~
x11.cpp:495:3: error: ‘XvEncodingInfo’ was not declared in this scope; did you mean ‘XvEncodingID’?
495 | XvEncodingInfo ei;
| ^~~~~~~~~~~~~~
| XvEncodingID
x11.cpp:495:19: error: ‘ei’ was not declared in this scope; did you mean ‘i’?
495 | XvEncodingInfo ei;
| ^~
| i
x11.cpp:496:9: error: ‘XvQueryEncodings’ was not declared in this scope; did you mean ‘XvBadEncoding’?
496 | ret = XvQueryEncodings(GUI.display, ai[i].base_id, &encodings, &ei);
| ^~~~~~~~~~~~~~~~
| XvBadEncoding
x11.cpp:514:3: error: ‘XvFreeEncodingInfo’ was not declared in this scope
514 | XvFreeEncodingInfo(ei);
| ^~~~~~~~~~~~~~~~~~
x11.cpp:525:10: error: ‘XvGrabPort’ was not declared in this scope; did you mean ‘XvBadPort’?
525 | ret = XvGrabPort(GUI.display, p, CurrentTime);
| ^~~~~~~~~~
| XvBadPort
x11.cpp:536:2: error: ‘XvFreeAdaptorInfo’ was not declared in this scope
536 | XvFreeAdaptorInfo(ai);
| ^~~~~~~~~~~~~~~~~
x11.cpp:549:2: error: ‘XvAttribute’ was not declared in this scope; did you mean ‘attribute’?
549 | XvAttribute port_attr;
| ^~~~~~~~~~~
| attribute
x11.cpp:549:15: error: ‘port_attr’ was not declared in this scope
549 | XvAttribute port_attr;
| ^~~~~~~~~
x11.cpp:550:14: error: ‘XvQueryPortAttributes’ was not declared in this scope
550 | port_attr = XvQueryPortAttributes (GUI.display, GUI.xv_port, &num_attrs);
| ^~~~~~~~~~~~~~~~~~~~~
x11.cpp:561:5: error: ‘XvSetPortAttribute’ was not declared in this scope; did you mean ‘XSetLineAttributes’?
561 | XvSetPortAttribute (GUI.display, GUI.xv_port, colorkey, 1);
| ^~~~~~~~~~~~~~~~~~
| XSetLineAttributes
x11.cpp:573:2: error: ‘XvImageFormatValues’ was not declared in this scope; did you mean ‘XPixmapFormatValues’?
573 | XvImageFormatValues* fo;
| ^~~~~~~~~~~~~~~~~~~
| XPixmapFormatValues
x11.cpp:573:23: error: ‘fo’ was not declared in this scope
573 | XvImageFormatValues* fo;
| ^~
x11.cpp:574:7: error: ‘XvListImageFormats’ was not declared in this scope; did you mean ‘XListPixmapFormats’?
574 | fo = XvListImageFormats(GUI.display, GUI.xv_port, &formats);
| ^~~~~~~~~~~~~~~~~~
| XListPixmapFormats
x11.cpp: In function ‘void S9xDeinitDisplay()’:
x11.cpp:902:4: error: ‘XvUngrabPort’ was not declared in this scope; did you mean ‘XUngrabPointer’?
902 | XvUngrabPort(GUI.display,GUI.xv_port,CurrentTime);
| ^~~~~~~~~~~~
| XUngrabPointer
x11.cpp: In function ‘void SetupXvImage()’:
x11.cpp:1112:14: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1112 | GUI.image->xvimage = NULL;
| ^~~~~~~
| Image
x11.cpp:1114:14: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1114 | GUI.image->xvimage = XvShmCreateImage(GUI.display, GUI.xv_port, GUI.xv_format, NULL, SNES_WIDTH * 2, SNES_HEIGHT_EXTENDED * 2, &GUI.sm_info);
| ^~~~~~~
| Image
x11.cpp:1114:24: error: ‘XvShmCreateImage’ was not declared in this scope; did you mean ‘XShmCreateImage’?
1114 | GUI.image->xvimage = XvShmCreateImage(GUI.display, GUI.xv_port, GUI.xv_format, NULL, SNES_WIDTH * 2, SNES_HEIGHT_EXTENDED * 2, &GUI.sm_info);
| ^~~~~~~~~~~~~~~~
| XShmCreateImage
x11.cpp:1116:18: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1116 | if (!GUI.image->xvimage)
| ^~~~~~~
| Image
x11.cpp:1121:37: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1121 | GUI.image->data_size = GUI.image->xvimage->data_size;
| ^~~~~~~
| Image
x11.cpp:1126:21: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1126 | XFree(GUI.image->xvimage);
| ^~~~~~~
| Image
x11.cpp:1131:15: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1131 | GUI.image->xvimage->data = GUI.sm_info.shmaddr = (char *) shmat(GUI.sm_info.shmid, 0, 0);
| ^~~~~~~
| Image
x11.cpp:1132:20: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1132 | if (!GUI.image->xvimage->data)
| ^~~~~~~
| Image
x11.cpp:1134:22: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1134 | XFree(GUI.image->xvimage);
| ^~~~~~~
| Image
x11.cpp:1149:23: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1149 | XFree(GUI.image->xvimage);
| ^~~~~~~
| Image
x11.cpp:1162:14: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1162 | GUI.image->xvimage = XvCreateImage(GUI.display, GUI.xv_port, GUI.xv_format, NULL, SNES_WIDTH * 2, SNES_HEIGHT_EXTENDED * 2);
| ^~~~~~~
| Image
x11.cpp:1162:24: error: ‘XvCreateImage’ was not declared in this scope; did you mean ‘XCreateImage’?
1162 | GUI.image->xvimage = XvCreateImage(GUI.display, GUI.xv_port, GUI.xv_format, NULL, SNES_WIDTH * 2, SNES_HEIGHT_EXTENDED * 2);
| ^~~~~~~~~~~~~
| XCreateImage
x11.cpp:1164:37: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1164 | GUI.image->data_size = GUI.image->xvimage->data_size;
| ^~~~~~~
| Image
x11.cpp:1167:14: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1167 | GUI.image->xvimage->data = (char ) malloc(GUI.image->data_size);
| ^~~~~~~
| Image
x11.cpp:1168:19: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1168 | if (!GUI.image->xvimage || !GUI.image->xvimage->data)
| ^~~~~~~
| Image
x11.cpp:1168:42: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1168 | if (!GUI.image->xvimage || !GUI.image->xvimage->data)
| ^~~~~~~
| Image
x11.cpp:1180:31: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1180 | GUI.image->data = GUI.image->xvimage->data;
| ^~~~~~~
| Image
x11.cpp: In function ‘void TakedownXvImage()’:
x11.cpp:1185:17: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1185 | if (GUI.image->xvimage)
| ^~~~~~~
| Image
x11.cpp:1191:15: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1191 | GUI.image->xvimage->data = NULL;
| ^~~~~~~
| Image
x11.cpp:1192:21: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1192 | XFree(GUI.image->xvimage);
| ^~~~~~~
| Image
x11.cpp:1197:15: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1197 | GUI.image->xvimage = NULL;
| ^~~~~~~
| Image
x11.cpp:1202:20: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1202 | free(GUI.image->xvimage->data);
| ^~~~~~~
| Image
x11.cpp:1204:21: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1204 | XFree(GUI.image->xvimage);
| ^~~~~~~
| Image
x11.cpp:1205:15: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1205 | GUI.image->xvimage = NULL;
| ^~~~~~~
| Image
x11.cpp: In function ‘void Repaint(bool8)’:
x11.cpp:1439:75: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1439 | XvShmPutImage(GUI.display, GUI.xv_port, GUI.window, GUI.gc, GUI.image->xvimage,
| ^~~~~~~
| Image
x11.cpp:1439:4: error: ‘XvShmPutImage’ was not declared in this scope; did you mean ‘XShmPutImage’?
1439 | XvShmPutImage(GUI.display, GUI.xv_port, GUI.window, GUI.gc, GUI.image->xvimage,
| ^~~~~~~~~~~~~
| XShmPutImage
x11.cpp:1445:71: error: ‘struct Image’ has no member named ‘xvimage’; did you mean ‘Image’?
1445 | XvPutImage(GUI.display, GUI.xv_port, GUI.window, GUI.gc, GUI.image->xvimage,
| ^~~~~~~
| Image
x11.cpp:1445:3: error: ‘XvPutImage’ was not declared in this scope; did you mean ‘XPutImage’?
1445 | XvPutImage(GUI.display, GUI.xv_port, GUI.window, GUI.gc, GUI.image->xvimage,
| ^~~~~~~~~~
| XPutImage
x11.cpp: In function ‘void S9xProcessEvents(bool8)’:
x11.cpp:1530:100: warning: ‘KeySym XKeycodeToKeysym(Display, KeyCode, int)’ is deprecated [-Wdeprecated-declarations]
1530 | .display, XKeycodeToKeysym(GUI.display, event.xkey.keycode, 0));
| ^
In file included from x11.cpp:19:
/usr/include/X11/Xlib.h:1687:15: note: declared here
1687 | extern KeySym XKeycodeToKeysym(
| ^~~~~~~~~~~~~~~~
x11.cpp:1530:100: warning: ‘KeySym XKeycodeToKeysym(Display*, KeyCode, int)’ is deprecated [-Wdeprecated-declarations]
1530 | .display, XKeycodeToKeysym(GUI.display, event.xkey.keycode, 0));
| ^
In file included from x11.cpp:19:
/usr/include/X11/Xlib.h:1687:15: note: declared here
1687 | extern KeySym XKeycodeToKeysym(
| ^~~~~~~~~~~~~~~~
x11.cpp: At global scope:
x11.cpp:424:12: warning: ‘int get_inv_shift(uint32, int)’ defined but not used [-Wunused-function]
424 | static int get_inv_shift (uint32 mask, int bpp)
| ^~~~~~~~~~~~~
make: *** [Makefile:77: x11.o] Error 1
`
if there is something wrong on my end please let me know!
Whenever I try to run the x64 build, with lua scripts that use local socket = require("socket")
, the error error loading module 'socket.core' from file '[path to snes9x x64]\socket\core.dll': %1 is not a valid Win32 application.
comes up. I have to explicitly use the x32 version to work around this issue, but I would much rather use the x64 version.
Mainly looking to use this with multibridge / emotracker, as I run multiworld randomizers
If a lua script is running, when the user reloads the same ROM via recent games, rather than using the reset menu option, the lua script will read garbage data from core memory.
There are so many resizing and filtering conditions. Moreover, SNES has some screen resolution conditions. It seems like that we sometimes fail to get the correct coordinates of the on-screen point in some cases.
Note: The official snes9x has the same problem.
ROM Information dialog doesn't display non-ASCII characters correctly.
TCHARify is required, I guess.
Having cloned the latest commit (at the moment - c7578b4) and the latest release, none seem to compile successfully. That's the output from make
after successfully running ./configure
:
g++ -I. -I.. -I../apu/ -I../apu/bapu -I../jma/ -I../filter/ -c -O3 -fomit-frame-pointer -fno-exceptions -fno-rtti -pedantic -Wall -W -Wno-unused-parameter -g -O2 -DJOYSTICK_SUPPORT -DZLIB -DUNZIP_SUPPORT -DSYSTEM_ZIP -DJMA_SUPPORT -DHAVE_LIBPNG -DHAVE_MKSTEMP -DHAVE_STRINGS_H -DHAVE_SYS_IOCTL_H -DHAVE_STDINT_H -DRIGHTSHIFT_IS_SAR -DUSE_XVIDEO -DUSE_XINERAMA -DUSE_THREADS -DMITSHM ../conffile.cpp -o ../conffile.o
In file included from /usr/include/c++/11.1.0/set:60,
from ../conffile.h:10,
from ../conffile.cpp:12:
/usr/include/c++/11.1.0/bits/stl_tree.h: In instantiation of ‘static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = ConfigFile::ConfigEntry; _Val = ConfigFile::ConfigEntry; _KeyOfValue = std::_Identity<ConfigFile::ConfigEntry>; _Compare = ConfigFile::ConfigEntry::section_then_key_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<ConfigFile::ConfigEntry>*]’:
/usr/include/c++/11.1.0/bits/stl_tree.h:2069:47: required from ‘std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_unique_pos(const key_type&) [with _Key = ConfigFile::ConfigEntry; _Val = ConfigFile::ConfigEntry; _KeyOfValue = std::_Identity<ConfigFile::ConfigEntry>; _Compare = ConfigFile::ConfigEntry::section_then_key_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = ConfigFile::ConfigEntry]’
/usr/include/c++/11.1.0/bits/stl_tree.h:2122:4: required from ‘std::pair<std::_Rb_tree_iterator<_Val>, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(_Arg&&) [with _Arg = const ConfigFile::ConfigEntry&; _Key = ConfigFile::ConfigEntry; _Val = ConfigFile::ConfigEntry; _KeyOfValue = std::_Identity<ConfigFile::ConfigEntry>; _Compare = ConfigFile::ConfigEntry::section_then_key_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>]’
/usr/include/c++/11.1.0/bits/stl_set.h:512:25: required from ‘std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = ConfigFile::ConfigEntry; _Compare = ConfigFile::ConfigEntry::section_then_key_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator = std::_Rb_tree<ConfigFile::ConfigEntry, ConfigFile::ConfigEntry, std::_Identity<ConfigFile::ConfigEntry>, ConfigFile::ConfigEntry::section_then_key_less, std::allocator<ConfigFile::ConfigEntry> >::const_iterator; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other = std::allocator<ConfigFile::ConfigEntry>; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key> = __gnu_cxx::__alloc_traits<std::allocator<ConfigFile::ConfigEntry>, ConfigFile::ConfigEntry>::rebind<ConfigFile::ConfigEntry>; typename _Alloc::value_type = ConfigFile::ConfigEntry; std::set<_Key, _Compare, _Alloc>::value_type = ConfigFile::ConfigEntry]’
../conffile.cpp:145:15: required from here
/usr/include/c++/11.1.0/bits/stl_tree.h:770:15: error: static assertion failed: comparison object must be invocable as const
770 | is_invocable_v<const _Compare&, const _Key&, const _Key&>,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11.1.0/bits/stl_tree.h:770:15: note: ‘std::is_invocable_v<const ConfigFile::ConfigEntry::section_then_key_less&, const ConfigFile::ConfigEntry&, const ConfigFile::ConfigEntry&>’ evaluates to false
/usr/include/c++/11.1.0/bits/stl_tree.h: In instantiation of ‘static const _Key& std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_S_key(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type) [with _Key = ConfigFile::ConfigEntry; _Val = ConfigFile::ConfigEntry; _KeyOfValue = std::_Identity<ConfigFile::ConfigEntry>; _Compare = ConfigFile::ConfigEntry::line_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Const_Link_type = const std::_Rb_tree_node<ConfigFile::ConfigEntry>*]’:
/usr/include/c++/11.1.0/bits/stl_tree.h:2069:47: required from ‘std::pair<std::_Rb_tree_node_base*, std::_Rb_tree_node_base*> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_get_insert_unique_pos(const key_type&) [with _Key = ConfigFile::ConfigEntry; _Val = ConfigFile::ConfigEntry; _KeyOfValue = std::_Identity<ConfigFile::ConfigEntry>; _Compare = ConfigFile::ConfigEntry::line_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>; std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::key_type = ConfigFile::ConfigEntry]’
/usr/include/c++/11.1.0/bits/stl_tree.h:2122:4: required from ‘std::pair<std::_Rb_tree_iterator<_Val>, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(_Arg&&) [with _Arg = const ConfigFile::ConfigEntry&; _Key = ConfigFile::ConfigEntry; _Val = ConfigFile::ConfigEntry; _KeyOfValue = std::_Identity<ConfigFile::ConfigEntry>; _Compare = ConfigFile::ConfigEntry::line_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>]’
/usr/include/c++/11.1.0/bits/stl_set.h:512:25: required from ‘std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = ConfigFile::ConfigEntry; _Compare = ConfigFile::ConfigEntry::line_less; _Alloc = std::allocator<ConfigFile::ConfigEntry>; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator = std::_Rb_tree<ConfigFile::ConfigEntry, ConfigFile::ConfigEntry, std::_Identity<ConfigFile::ConfigEntry>, ConfigFile::ConfigEntry::line_less, std::allocator<ConfigFile::ConfigEntry> >::const_iterator; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other = std::allocator<ConfigFile::ConfigEntry>; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key> = __gnu_cxx::__alloc_traits<std::allocator<ConfigFile::ConfigEntry>, ConfigFile::ConfigEntry>::rebind<ConfigFile::ConfigEntry>; typename _Alloc::value_type = ConfigFile::ConfigEntry; std::set<_Key, _Compare, _Alloc>::value_type = ConfigFile::ConfigEntry]’
../conffile.cpp:215:19: required from here
/usr/include/c++/11.1.0/bits/stl_tree.h:770:15: error: static assertion failed: comparison object must be invocable as const
/usr/include/c++/11.1.0/bits/stl_tree.h:770:15: note: ‘std::is_invocable_v<const ConfigFile::ConfigEntry::line_less&, const ConfigFile::ConfigEntry&, const ConfigFile::ConfigEntry&>’ evaluates to false
make: *** [Makefile:77: ../conffile.o] Error 1
When I try to launch it on Steam os all I get is a black screen I move my mouse a bit but there are no buttons to click at the top
I compiled snes9x-rr under Linux, and it appears that the "-rr" features are not available in the snes9x-gtk GUI.
frame-advance, lua, etc
Running the snes9x-rr exe under wine the options are available. Was there any intent to include them in the gtk GUI, or is snes9x-rr essentially "windows only"
Thanks!
Lua drawings doesn't display when NTSC filter is used.
This is probably because the drawing routine doesn't expect non-integer scale filter, so that the drawing routine rejects the input buffer as incorrect screen size. We should have a new intermediate buffer for Lua, so that we won't need to think about resizing.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.