{"id":19572651,"url":"https://github.com/const-void/doom-fire-zig","last_synced_at":"2025-04-04T21:06:37.990Z","repository":{"id":44823664,"uuid":"448409478","full_name":"const-void/DOOM-fire-zig","owner":"const-void","description":"DOOM's fire algo, in zig, for 256 color terminals w/no dependencies","archived":false,"fork":false,"pushed_at":"2025-03-09T13:45:29.000Z","size":87,"stargazers_count":184,"open_issues_count":1,"forks_count":21,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-28T20:08:06.933Z","etag":null,"topics":["256-color","doom","xterm","zig"],"latest_commit_sha":null,"homepage":"","language":"Zig","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/const-void.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-15T22:56:25.000Z","updated_at":"2025-03-21T00:15:33.000Z","dependencies_parsed_at":"2024-12-31T10:13:04.792Z","dependency_job_id":"afe83c49-5594-485a-aaec-ef22115adf34","html_url":"https://github.com/const-void/DOOM-fire-zig","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/const-void%2FDOOM-fire-zig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/const-void%2FDOOM-fire-zig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/const-void%2FDOOM-fire-zig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/const-void%2FDOOM-fire-zig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/const-void","download_url":"https://codeload.github.com/const-void/DOOM-fire-zig/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247249524,"owners_count":20908212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["256-color","doom","xterm","zig"],"created_at":"2024-11-11T06:27:54.909Z","updated_at":"2025-04-04T21:06:37.974Z","avatar_url":"https://github.com/const-void.png","language":"Zig","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DOOMFIRE\n## Test your TTY's might!\n\nhttps://user-images.githubusercontent.com/76228776/149635702-a331f892-7799-4f7f-a4a6-7048d3529dcf.mp4\n\nThe doom-fire algo can push upwards of 180k a frame - results may vary!  It is, to my surprise, a nice TTY stress test.\n\nAs a comparison, this is the younger sibling of a node variant ( https://github.com/const-void/DOOM-fire-node ).\n\n# INSTALL\n```\n$ git clone https://github.com/const-void/DOOM-fire-zig/\n$ cd DOOM-fire-zig\n$ zig build run\n...\n```\nBuild Requirements:\n* all platforms - libc\n* all platforms - x64 (for now)\n* windows - kernel32\n\nMerge Request (MR) Validation:\n* Each MR tested on MacOS Sequia 15.3 / M1 w/zig 0.14 on MacOS Kitty, VS Code, Alacritty.\n* Many MR tested on Windows 10 / Intel, with Microsoft Terminal, CMD.EXE, PowerShell.\n* Linux tests are c/o the wonderful community who help identify...and repair...cross platform issues!\n\n\n# Results\nStart your favorite terminal, maximize it, then launch DOOM-fire-zig! Test your terminal's might. \n\n| Terminal           | Linux  | MacOS        | Windows          |\n| ------------------ | ------ | ------------ | ---------------- |\n| Alacritty          | great? | great        | very poor (4pfs) |\n| Apple Terminal.app | -      | poor (? fps) | -                |\n| CMD.EXE            | -      | -            | poor (20fps)     |\n| iterm.app          | -      | ok           | -                |\n| kitty.app          | -      | great        | -                |\n| Microsoft Terminal | -      | -            | great            |\n| Powershell         | -      | -            | poor (20fps)     |\n| VS Code            | great  | great        | poor (20fps)     |\n| Warp               | great? | great        | -                |\n| WezTerm            | ?      | ?            | ok               |\n\n### Definitions\n```\n\u003c=   5 avg fps = very poor\n\u003c=  24 avg fps = poor\n   ... avg fps = ok\n\u003e= 100 avg fps = great\n```\n\n### Microsoft Note\nIt appears Windows terminal performance is a function of the underlying console; when a terminal is using the default Microsoft console, such as used by CMD.EXE, Windows fps appears to be gated.\n\n### MacOS / Apple Note\nThe default MacOS / Apple terminal reports an avg 30-40 fps, however visually, it appears to be drop frames, resulting in a very choppy effect.\n \n## Results are for fun\nAs our approach is unscientific, we only indicate avg fps for underpeformers, to set expectations; results will vary based on - os+platform, GPU, terminal size (function of font size, monitor resolution, zoom %, etc), specific terminal configuration, terminal version -- even zig itself is a factor. \n\nWe don't test every terminal with each merge request; the majority come from the community. One report is enough! This is for fun, to encourage terminals to be great out-of-the-box, and us to learn - to explore what our terminals can do, and share configuration that gives fps a boost (at potential cost elsewhere...).\n\n180kb a frame at 100+fps is...great!!! Amazing.\n\n\n# Inspiration / Credits\n* Thanks to contributors for your support!\n \n* doom fire    - https://github.com/filipedeschamps/doom-fire-algorithm,  https://github.com/fabiensanglard/DoomFirePSX/blob/master/flames.html\n* color layout - https://en.wikipedia.org/wiki/ANSI_escape_code\n* ansi codes   - http://xfree86.org/current/ctlseqs.html\n* str, zig     - https://www.huy.rocks/everyday/01-04-2022-zig-strings-in-5-minutes\n* emit         - https://zig.news/kristoff/where-is-print-in-zig-57e9\n* term sz, zig - https://github.com/jessrud/zbox/blob/master/src/prim.zig\n* osx term sz  - https://github.com/sindresorhus/macos-term-size/blob/main/term-size.c\n* px char      - https://github.com/cronvel/terminal-kit\n\n# Repo Guidance\nFind the list of releases here: https://github.com/const-void/DOOM-fire-zig/releases\n* YYYY.\u003c#\u003e Zig #.## \u003cFeature\u003e\n\nFind the list of branches here:  https://github.com/const-void/DOOM-fire-zig/branches\n* master -- the most recent 'working' code base; tries to be compatible with latest released stable zig version.\n* zig-#.##  --  compatible with specific zig release (two active - current and future)...historical zig versions will be stale.\n* \u003cissue#\u003e-zig-#.##-\u003cissue\u003e -- branches associated with resolving a reported issue.\n\n## Branch and Merge Request Detail\nRepository guidance is a bit like the Pirate's Code.  More akin to a set of guidelines, really.\n\nThis repo has been around since 2022, and as zig has changed, so has repository philosophy, from YOLO/anything goes, to a bit more discipline, primarily for clarity for contributions; over the years we have learned that the precise version of zig version is *everything*.  \n\nFrom build, to std, to language feature.\n\nLater zig versions tend to break compatibility vs prior zig versions; as a result, the precise zig version becomes very important, as the most recent zig version often requires code that simply won't build in prior versions \n\n### IMPACT: Repository branching is to tied to zig version.\nRepository intention is for compatibility with two zig versions - one branch for current \"stable\" zig version, as well as a branch for future development version of zig.  \n\nBack porting updates from DOOM-fire-zig / zig.current to zig.prior is too time consuming, the juice isn't worth the squeeze.   However, starting with zig-0.13,  repository philosophy will enable adventurers into this domain!   \n\nBranches are as follows:\n* zig-0.13: historical\n* zig-0.14: zig current version\n* zig-0.15: zig dev version\n\n### Ultimately, the time and attention of a contributor is most important.\nAlways, submit a merge request and the particulars can be sorted out at the point of merge.  This whole repository is for fun, so the intention is to keep guidance light-weight and easy.\n\n### How to submit a merge request\nEach zig version has it's own branch; the stable version of zig will be merged with main aka master; once a given merge with main has proven it's stability, it will get released to mark the commits as a point in time. \n\nTo fix an issue or add enhancement, in github, please fork the home repository into your own github identity.  From there, checkout the relevant zig branch from your fork, make your updates, commit back to your repo.  When you are happy, please submit your merge request back to this repository, requesting a merge with the relevant zig version.\n\n```zsh\n$ git clone https://github.com/\u003cyour-github-id\u003e/DOOM-fire-zig/\n$ cd DOOM-fire-zig\n$ zig build run\n$ git checkout zig-0.##\n$ ... code ...\n$ git commit -m \"\u003csemantic commit\u003e\"\n```\n\n### zig.current to zig.future\nAfter a merge to zig.current branch, after some testing, I will periodically merge with main and zig.future.  At some point in the next ten+ years, main and zig.future will be more similar than not!\n\n## Github Releases Detail\nReleases are used to identify a 'moment in time' snapshot. Release tags are tied to the year so you can compare your local workstation file timestamps to the release tag and have a general picture of how long it has been since you have cloned/fetched/pulled etc.\n\nReleases are created for the current version of zig, for clarity.\n\n* DOOM-Fire-zig endeavors to be updated at least annually, usually around a holiday when I have time.\n* Releases and tags are \"snapshots\" in time of the code base/repo, a way to plumb the history and depths of time, as DOOM-Fire-zig iterates and evolves across zig updates. \n* Each annual update will have a tag of YYYY.1, with subsequent tags incrementing the \"minor\" indicator -\u003e YYYY.2, YYYY.3.  \n* Each tag will have a release associated with it.  The release name will be YYYY.x Zig #.## - Major Feature\n\n\n# License\nCopyright 2022-2025, const-void, released under GPL3.\n\nDOOM-fire-zig is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconst-void%2Fdoom-fire-zig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconst-void%2Fdoom-fire-zig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconst-void%2Fdoom-fire-zig/lists"}