{"id":42421000,"url":"https://github.com/0xcafed00d/tac08","last_synced_at":"2026-01-28T02:57:19.835Z","repository":{"id":43889699,"uuid":"149282146","full_name":"0xcafed00d/tac08","owner":"0xcafed00d","description":"tac08 is an an emulation of the runtime part of the Pico-8 fantasy console. It takes a .p8 (text format) pico-8 cart file and runs it as closely posible","archived":false,"fork":false,"pushed_at":"2020-05-14T02:04:34.000Z","size":2041,"stargazers_count":183,"open_issues_count":4,"forks_count":19,"subscribers_count":13,"default_branch":"master","last_synced_at":"2023-11-07T16:16:06.766Z","etag":null,"topics":["c-plus-plus","emulator","game-engine","lua","pico-8","pico8"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xcafed00d.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-18T12:08:22.000Z","updated_at":"2023-10-28T23:19:58.000Z","dependencies_parsed_at":"2022-08-28T16:04:04.852Z","dependency_job_id":null,"html_url":"https://github.com/0xcafed00d/tac08","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/0xcafed00d/tac08","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcafed00d%2Ftac08","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcafed00d%2Ftac08/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcafed00d%2Ftac08/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcafed00d%2Ftac08/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xcafed00d","download_url":"https://codeload.github.com/0xcafed00d/tac08/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xcafed00d%2Ftac08/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28835538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T02:10:51.810Z","status":"ssl_error","status_checked_at":"2026-01-28T02:10:50.806Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","emulator","game-engine","lua","pico-8","pico8"],"created_at":"2026-01-28T02:57:19.248Z","updated_at":"2026-01-28T02:57:19.825Z","avatar_url":"https://github.com/0xcafed00d.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tac08\n\n## What is tac08?\ntac08 is an emulation of the runtime part of the Pico-8 fantasy console. It takes a .p8 (text format) Pico-8 cart file and runs it closely as possible to the real Pico-8 software.\n\n## What isn't tac08?\ntac08 is not a replacement for Pico-8, it provides none of the content creation components of Pico-8, such as code editing, sprite and map creation and music tools. You will still require a copy of Pico-8 to make games. Also if you just want to run Pico-8 games you will have a much better experience with Pico-8 than tac08\n\n## Why was tac08 written? \ntac08's target audience are developers that want to do one or more of the following: \n1. To enable Pico-8 games to be run on platforms that Pico-8 itself does not run on.\n2. To embed Pico-8 games within other game engines. \n3. To make it possible to extend the Pico-8 api and allow games to use features not currently supported by Pico-8\n\ntac08 was written for my own personal use (specifically for items 1 \u0026 3 above) but I have decided to open source it as others may find it useful. \n\n## Is it a 100% emulation?\nNo. tac08 is still in development, however in my testing, I have found that a large number of the most popular games work correctly. \n\nThis is a list of the most significant compatibility issues:\n1. Not all peek and poke addresses are implemented, notably the current draw state values\n2. Only one joystick is currently supported and it cannot be configured.\n3. Saving screen shots and recording gif videos are not implemented.  \n4. The flip() api function is not implemented. So no tweet carts and such will work. Only games that use _init, _update or _update60, _draw will work correctly.\n5. Pico-8's sound synthesizer is not implemented, however you can still play sound effects (see below)\n6. The music() api function is not currently implemented (but I plan to implement it). \n7. There are probably more things i can add to this list and will update as needed. \n\n## How do I get sound working then?\nThe way sound is implemented in tac08 is not ideal, but given current my current work loads and complexity of the Pico-8 sound system I feel it is a reasonable compromise.\nIn order to have tac08 play sound you need to export your sound effects from Pico-8 as wav files. I have found that sound effects do not export completely if they have loops within them. \n\nExporting the sound effects is a two stage process. First paste the following code into the Pico-8 command prompt: \n```\nfor a=0x3200,0x42ff,68 do poke(a+66,0) poke(a+67,0) end cstore(0x3100,0x3100,0x1200,\"audio.p8\")\n```\nThis will save out a cart called \"audio.p8\" containing only the unlooped sfx data. \n\nNext load the audio.p8 cart and export the actual sfx as wav files:\n```\nload \"audio.p8\"\nexport \"cart%d.wav\"\n```\n\nwhere \"cart\" is the name of your original cartridge file. You need to have these wav files in the same folder as you cart. You can delete any wav files that your cart does not need. \n\n**note that if the game creates sound at runtime then it is not currently possible to play these**\n\n\n## How do I build tac08\n\n### Windows\n\nA Visual Studio 2017 solution is provided in the tac08\\win-tac08 directory. A copy of Visual Studio 2017 Community with C++ components installed is sufficient to build tac08.\n\nA copy of the libSDL2 header files, libraries and DLLs are included with the solution and do not need to be downloaded separately. \n\n1. first clone tac08 from github: \n```\ngit clone --recurse-submodules https://github.com/0xcafed00d/tac08.git\n```\n\n2. Simply open the solution file (tac08\\win-tac08\\win-tac08.sln) with VS2017, and select Build Solution. Binaries will be place in either the Release or Debug directories, depending on which build mode is selected. \n\n### Linux \u0026 Mac\n\nA makefile is supplied that will build tac08 for linux systems \u0026 Mac OSX. It has been tested on Ubuntu 16.04 \u0026 18.04, Rasbian on a Raspberry Pi 3, a Crostini hosted debian install on a chromebook, and a Mac. \n\nBuild scripts for other environments are not currently provided (because I have not written them yet :-). tac08 is written in standard c++11. The lua interpreter is a version of lua 5.2 modified to support the syntax changes Pico-8 requires, while the lua interpreter is written in C, the modifications require it to be compiled as C++. This modification was performed by Sam Hocevar https://github.com/samhocevar/z8lua\n\nThe only external dependency tac08 is the core SDL2.0 library, so it should be possible to build tac08 from the provided code for any platform that has SDL2.0 ported to it. \n\n1. first clone tac08 from github: \n```\ngit clone --recurse-submodules https://github.com/0xcafed00d/tac08.git\n```\n\n2. install sdl2.0 development libraries:\n\nFor Debian based Linux distributions use apt. \n```\nsudo apt install libsdl2-dev\n```\nOther distributions and the Mac will have other mechanisms for installing libraries.\n\nYou may need to modify the SDL_PATH_LIB \u0026 SDL_PATH_INC variables in the makefile if your SDL libraries are not installed in a standard location. \n\n3. build lua interpreter:\n```\ncd tac08/src/z8lua\nmake a\ncd ../..\n```\n\n4. build tac08:\n``` \nmake\n```\nAfter this you **should** be left with a tac08 executable with you can run with:\n```\n./tac08 mygame.p8\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xcafed00d%2Ftac08","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xcafed00d%2Ftac08","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xcafed00d%2Ftac08/lists"}