Giter VIP home page Giter VIP logo

drhelius / gearcoleco Goto Github PK

View Code? Open in Web Editor NEW
68.0 5.0 15.0 11.72 MB

ColecoVision emulator for macOS, Windows, Linux, BSD and RetroArch.

Home Page: https://x.com/drhelius

License: GNU General Public License v3.0

C++ 50.50% Makefile 0.15% C 45.99% Shell 0.01% Perl 0.01% CMake 0.07% Objective-C 0.12% HTML 2.98% CSS 0.03% Objective-C++ 0.17%
linux emulator raspberry-pi emulation bsd retroarch libretro coleco colecovision sgm

gearcoleco's People

Contributors

drhelius avatar msheehan79 avatar salvacam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gearcoleco's Issues

Not particularly issue but also suggestion

Hello good sir, I want to know if you are going to make a GBA(Game Boy Advanced) emulator for Raspberry pi. Would love to use it. Also, do your emulators support multiplayer like mGba?

Emulate TMS9928A on PAL mode

The "fixed" Defender ROM that makes the radar work on PAL ColecoVisions' relies on detecting the presence of the TMS9928A VDP. This "fixed" ROM fails to correct the faulty radar when the refresh rate is set to 50Hz.

Retain window size of last opened window

When opening the desktop version of the emulator the main window is resized to a default position/size.

Store the user customized size / position and retrieve it when booting.

Gearcoleco libretro linux-armhf platform

Thank you for your efforts on this app!
Is there a linux-armhf based libretro build?
This seems to be the only libretro CV app to support the purple & blue buttons, but I can't seem to find a build for linux-armhf, thank you!

BIOS File Missing?

Sorry if I am totally blind, but where is the bios file in the download? I can't find it anywhere. Thanks for all of your hard work.

Keypad numbers 9 and 0 not implemented

There's no way to map keypad numbers 9 or 0 from the standard controller. This should be a relatively simple matter, since there are already all the other controls available to map. This removes from playable games anything that uses two of the buttons on the main keypad, so I would suggest making this a higher priority.

In particular, I'm trying to play 2010: Graphical Action Game and I can't make the ship take off, because that's done by pressing 0 on the keypad.

Disassembler off? Not catching code?

In an instance it outputs as
RET
LD ($7148), HL
CALL $1FB2
Above this line is correct from the amount I checked, below is what occurred after.
CALL $1FA6
CALL $1FA6
CALL $1F8B
CALL $1F8B
CALL $1F8B
CALL $1F8B
CALL $1F8B
-------------------------this is where it corrected itself
CALL $1FA6

The actual code is after CALL $1FB2 is:
FD,85,48,71.........

Which translates to
FD85 ADD A, IYL
48 LD C, B
71 LD (HL), C
.............
I know this is not a whole lot to go on but is it my setting?
Am I missing something?
Could it be the undocumented Opcode IYL?

Super Action Controller buttons

I couldn't find the option to assign the two extra buttons from a Super Action Controller in your core. It only shows the left and right buttons from a standard controller. Games like SA Baseball, Football, Rocky, Frontline, and Star Trek use all 4 buttons during game play.

VDP Viewer: jump to memory location on tile click

If you feel it is a good feature to implement and if you find the time.

While viewing the pattern table, sprite or name table inside the VDP viewer.

That if you double click on a tile within the grid that it will jump to where it is stored in the VRAM.

Space Panic graphics corruption

In Space Panic the graphics can become corrupted after the 1st level. The top right corner of the blue border, yellow oxygen level, entire bottom blue border, and number of men disappear. Looking at the VDP viewer shows the patterns used for these elements turn all black when loading the next level.

Happens almost every time, though I've had this bug trigger on the 2nd or 3rd level on rare occasions.
Gearcoleco 1.0.1 on Android Retroarch and Gearcoleco 1.0.0 on Windows 10.

SpacePanic

Colecovision SGM Help

Hello.

How do you get Colecovision SGM files working on the Windows version of Gearcoleco? I downloaded the original coleco.rom bios file as well as the BIOS_XP.ROM which is supposed to be the SGM bios. When I try to load a SGM game I either get the typical insert a cartridge message or something like "This game requires the SGM module".

If anyone can help me sort this out I'd appreciate it.

Thanks,
John
PS: I'm hoping to use the libretro version eventually through RetroArch on a Windows PC so if there is anything different required to get SGM games running on the Gearcoleco libretro version, please let me know that as well..

Ubuntu 21.10 - No graphics, even with libglew and libsdl2 installed.

sudo apt-get install -y libglew-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libglew-dev is already the newest version (2.1.0-4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

sudo apt-get install -y libsdl2-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libsdl2-dev is already the newest version (2.0.14+dfsg2-3).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

image

error on "make"

g++ 4.9

git clone https://github.com/drhelius/Gearcoleco.git
Clonage dans 'Gearcoleco'...
remote: Enumerating objects: 616, done.
remote: Counting objects: 100% (616/616), done.
remote: Compressing objects: 100% (458/458), done.
remote: Total 616 (delta 295), reused 456 (delta 143), pack-reused 0
Réception d'objets: 100% (616/616), 5.00 MiB | 1.58 MiB/s, fait.
Résolution des deltas: 100% (295/295), fait.
Vérification de la connectivité... fait.
momo@momo:/dev$ cd Gearcoleco/
momo@momo:
/dev/Gearcoleco$ cd platforms/linux/
momo@momo:~/dev/Gearcoleco/platforms/linux$ make
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o main.o ../desktop-shared/main.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o emu.o ../desktop-shared/emu.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o gui.o ../desktop-shared/gui.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o gui_debug.o ../desktop-shared/gui_debug.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o application.o ../desktop-shared/application.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o config.o ../desktop-shared/config.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o renderer.o ../desktop-shared/renderer.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o imgui_impl_sdl.o ../desktop-shared/imgui/imgui_impl_sdl.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o imgui_impl_opengl2.o ../desktop-shared/imgui/imgui_impl_opengl2.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o imgui.o ../desktop-shared/imgui/imgui.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o imgui_demo.o ../desktop-shared/imgui/imgui_demo.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o imgui_draw.o ../desktop-shared/imgui/imgui_draw.cpp
../desktop-shared/imgui/imgui_draw.cpp: In function ‘bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas*)’:
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::user_allocator_context’ [-Wmissing-field-initializers]
stbtt_pack_context spc = {};
^
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::pack_info’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::width’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::height’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::stride_in_bytes’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::padding’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::skip_missing’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::h_oversample’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::v_oversample’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::pixels’ [-Wmissing-field-initializers]
../desktop-shared/imgui/imgui_draw.cpp:2103:31: warning: missing initializer for member ‘stbtt_pack_context::nodes’ [-Wmissing-field-initializers]
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o imgui_widgets.o ../desktop-shared/imgui/imgui_widgets.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o ImGuiFileBrowser.o ../desktop-shared/FileBrowser/ImGuiFileBrowser.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o Audio.o ../../src/Audio.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o Cartridge.o ../../src/Cartridge.cpp
In file included from ../../src/miniz/miniz.c:1:0,
from ../../src/Cartridge.cpp:24:
../../src/miniz/miniz.c: In function ‘mz_bool mz_zip_validate_file(mz_zip_archive*, mz_uint, mz_uint)’:
../../src/miniz/miniz.h:547:49: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
#define MZ_READ_LE32(p) *((const mz_uint32 *)(p))
^
../../src/miniz/miniz.c:5353:19: note: in expansion of macro ‘MZ_READ_LE32’
has_id = (MZ_READ_LE32(descriptor_buf) == MZ_ZIP_DATA_DESCRIPTOR_ID);
^
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o GearcolecoCore.o ../../src/GearcolecoCore.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o Input.o ../../src/Input.cpp
g++ -I../ -I../../ -Wall -Wextra -Wformat -std=c++11 -DEMULATOR_BUILD=""d341487"" -DNDEBUG -O3 -flto sdl2-config --cflags -c -o Memory.o ../../src/Memory.cpp
../../src/Memory.cpp:371:10: error: #elif with no expression
#elif
^
../desktop-shared/Makefile.common:93: recipe for target 'Memory.o' failed
make: *** [Memory.o] Error 1

Persistent NO BIOS

Hi there. I am very confused about how to get this working in RetroARCH. I have placed the correct BIOS from a recent bios pack with MD5 2c66f5911e5b42b8ebe113403548eee7 in the system folder. Even when I try Bruce's Controller Tester that is a downloadable ROM I cannot get it to work. It just has a black screen that says NO BIOS.

This is on MacOS Monterey 12.6.5 / intel mac. It's as high as I can go.

Super Game Module

Would be Great to have SGM to play latest games released for this system.

Audio: TI SN76489AN vs Sega PSG

The TI chip does not double the noise channel's volume, so removing * 2 here will make it more accurate:

int amp = (shifter & 1) ? 0 : volume * 2;

Tapped bits for ColecoVision (and SG-1000) are 0x0003, not 0x0009:

feedback = 0x0009;

LFSR is one bit shorter on the TI chip (same on SG-1000) vs the Sega PSG, this should be 15 rather than 16:

noise_width = 16;

There is also the issue of PCM samples having too high a pitch. In Sewer Sam and Squish'em Sam, you can see this exhibited. I have not truly figured out the answer to this entire question, but it does have to do with not flipping the waveform when the length counter reload value is 1, or in the case of Squish'em Sam, 16 seems to be the magic number. There is also the write delay to keep in mind when writing data to the PSG. Here are some references from JollyCV that explain a bit of this:
https://gitlab.com/jgemu/jollycv/-/blob/master/core/jcv_psg.c#L152
https://gitlab.com/jgemu/jollycv/-/blob/master/core/jcv_memio.c#L100

I think the SMS APU code you're using currently is doing PCM samples correctly, since I do hear the samples, but the pitch is wrong. I think you can get away with simply introducing a delay on writes to fix the pitch.

Hope this helps!

Red button won't register when using gamepad

I use ps3 wired controller to play games. When I start Congo Bongo, or Donkey Kong, the opening screen I need to press either number 1-8, but when I press 1 on my keyboard it does not select anything. I don't want to press a number from my joystick, as I don't know what buttons go to what numbers. In Colem emulator, I can use joystick, and press keyboard keys. Why disable keyboard when using a joystick in Gearcoleco? Or am I doing something wrong?

Memory comparison/search feature

In most emulators this is usually found near the "cheat" features, but something like (the NES emulator) FCEUX's Tools --> RAM Search window would be very helpful while tracking things down during decompiling work.

The essence of the feature is grabbing a snapshot of RAM (and maybe VRAM?) at the start of a search session, then, whenever one of the >, <, >=, <=, =, or != buttons are clicked, Gearcoleco would compare the current values in RAM to those from the snapshot and discard anything that doesn't match. There are a few more details (like data size and signed/unsigned comparisons) that FCEUX covers pretty well.

Implementation-wise, because all 1k of the Colecovision's RAM can fit on screen pretty easily, instead of having a separate window that lists the matches, the memory search feature could just change the text highlight in the RAM window. Maybe green if it still matches and ImGui's disabled color if it doesn't? (This would override the "Grey Out Zeroes" option.)

Copy / paste to and from memory

Maybe it's just a preference or something that I would find useful if you had the time.

To implement the ability to highlight, copy and paste directly to and from all the memory locations.

It would save a huge amount of time in patching or ripping screen data from VRAM

To and from the clipboard like most other windows applications.

Contacting you

GITHUB doesn't have PM that I could find and I am not on twitter

Some really nasty things have happened to my family within the last six months and I have been lashing out.
This emulator is not the forum for such things but here we are.

In any case.
How much of a one time contribution would it be to add ADAM support.
come up with a reasonable number and we can go from there.

It has to have all the features to include exchanging the BIOS, drives (ddp and disk), expansion ports and proper addressing.
Also for the Colecovision side, the ability to map in more than the 1k for up to 32k expansion boards.

Your latest release

The mouse pointer sits overtop the playfield, it doesn't disappear so it blocks everything.
Suggestion to have the mouse disappear and reappear with maybe the middle mouse button?
Even with the sensitivity in either end of the spectrum the mouse pointer does wander off screen and the onscreen player stutters.

The downside is that with CoolCV he overcame the mouse issue by locking the mouse to the emulator 100% which you have to press an F key to release or engage it. I'm thinking the suggestion above to have the middle mouse button do something similar while also turning off the mouse pointer.

Maybe the ability to map the Fire Buttons to the Roller Controller?

Other than, great work

Retroarch - Keypad buttons are not being released

When a keypad button is pressed, the button stays pressed and is not released until a different keypad button is pressed. For example, if you start "Mousetrap" at skill level 1 using the keypad, pressing the 1 button again to cycle the red doors doesn’t work. Pressing any other keypad button and then pressing 1 again will cycle the door just once.

This can also be observed using the "Final Test Cartridge" to check the controller inputs and this bug would also explain why "Cabbage Patch Kids" skips the options screen after a Game Over, because the 1 key isn't being released from the first time it was pressed at the start of the game.

Strange problem on macOS

Hi and, first of all, thanks for providing a macOS version! =)
I downloaded the latest version of Gearcoleco today and, quite strangely, the app just doesn't open. No errors, no crashes, nothing at all: it's just like that, I double-click it and nothing happens. Additional info: Intel CPU, macOS 10.15.7, already authorized Gearcoleco.
Any idea?
Thanks in advance! =)

No bios error

OS: EndeavorOS with latest Retroarch and updated core

I've searched for a couple hours but I can't seem to get the Gearcoleco core working; I keep getting the "no bios" screen. I have "colecovision.rom" with md5 checksum 2c66f5911e5b42b8ebe113403548eee7 in my retroarch --> system directory. I've tried placing the rom in system --> bios directory as well but no luck. The Retroarch desktop menu detects my bios and says it's correct so I don't know what else I can do.

Game unsoported...

Beamider 1983 (activision): the controllers stop working after the selection of player, in android.
In "windows" the entire core crashes immediately by priced a selection number.

core 1.0.1
Retroarch 1.12.0
Android 8.1.0
Windows 10

(BlueMSX runs the beamrider well)

[libretro] Audio is distorted when using Runahead single-instance mode

When the runahead feature is enabled in RetroArch for this core, the audio becomes distorted and requires you to enable the second instance mode to render audio properly.

Ideally, if the audio information can be serialized fully in the save state, this should allow runahead to work in single-instance mode without distortion.

I found during some testing my side that if I added m_pApu and m_pBuffer to the save state in Audio.cpp, and removed the reset + clear functions from the load state that audio was clear with runahead enabled. But I'm not sure if there is any negative impacts to this, apart from the obvious impact to compatibility of existing states.

RetroArch pause button bug

Pac-Man (USA) (Proto)
#is pause button
but i pressed it again nothing happened
and right button became the pause button
I tried FBNeo and blueMSX
so you made a button bug

Feature Request: No Sprite Limit Option

Would be a nice optional feature to provide a means to bypass the 4 sprite per line limit to reduce or remove sprite flicker.

I know this is not accurate behavior but it is one quality of life feature that is offered on many other emulators that I would love to see included here (including blueMSX, the libretro core I was using for CV prior to trying out gearcoleco).

@drhelius not sure if you are open to introducing this since I didn't see many emulation-altering options in the current core. If it is a feature you would be OK implementing I do have a change in my fork that adds this for the libretro core only as a core option, I could submit it for your review.

Bilinear filtering causes undesired texture wrapping

(You've done great work! This debugger is amazing.)

Just a small rendering artifact: when bilinear filtering is enabled and you've got the screen large enough that it's being scaled up, the bottom/top row of pixels can bleed onto each other.

Fixing it should just take changing the wrap mode for the output screen texture from "repeat" to "clamp-to-edge".

Unsupported games

  • Destructor (1984) (Coleco)
    • 50% (2.8.1) Controls: Driving Controller emulation required
    • Size: 32768, MD5: ec72a0e3bebe07ba631a8dcb750c1591,
    • SH1: 35283c51f448d877625049266c0c4687bf57ab42
  • Donkey Kong Arcade (Oct 25) (2005) (Eduardo Mello)
    • 50% (2.8.1) Other: Requires Opcode Memory Extension emulation
    • Size: 32768, MD5: e602e72072766ec2159cf13469e7ef15,
    • SH1: 6a754455ec9f6f9811f2fb947c5ac750474dc8e8
  • Dukes of Hazzard, The (1984) (Warner Bros) [!]
    • 50% (2.8.1) Controls: Steering wheel emulation required
    • Size: 32768, MD5: dbd4f21702be17775e84b2fb6c534c94,
    • SH1: 162c7ad3266e02aa88983fa4ece7a77bc1cb9c7a
  • Pac-Man Collection Demo by Opcode (2006) (PD)
    • 10% (2.8.1) Stuck: Stuck on home screen
    • Size: 32768, MD5: 0021c6f3f52cc6a55a3c14bab8a6339e,
    • SH1: d6b67e8f43afe666cdd79a718ddf808e27d6512d
  • Slither (1983) (Century II)
    • 50% (2.8.1) Controls: Requires Roller Controller emulation
    • Size: 16384, MD5: 7cdc148dff40389fa1ad012d4734ceed,
    • SH1: b11de2476f867c7c4efb2977777e12fcb454f10b
  • Super Action Controller Test Cartridge (1983) (Nuvatec)
    • 50% (2.8.1) Controls: Requires Super Action Controller emulation
    • Size: 16384, MD5: 1210396cb9af270285d25c66fa9c6f6a,
    • SH1: 0c6840b7bc24a36529f0a80ccef85ee9f409a972
  • Turbo (1982) (Sega)
    • 50% (2.8.1) Controls: Steering wheel emulation required
    • Size: 16384, MD5: f042ba432716b58d2f5858abcce81b9f,
    • SH1: 732d1f3b2f24895a1f79d15d830aa989ea12fe5e
  • Yolk's on You, The (1983) (20th Century Fox) (Prototype)
    • 50% (2.8.1) Controls: Steering wheel emulation required
    • Size: 16384, MD5: c10aaca46d063771339d3e5a0582baad,
    • SH1: 9b5bfb69d37042d131a5c9576f927e09f44f9666

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.