{"id":16092301,"url":"https://github.com/alecthomas/chrysalis","last_synced_at":"2025-03-18T06:30:59.952Z","repository":{"id":1085038,"uuid":"933339","full_name":"alecthomas/chrysalis","owner":"alecthomas","description":"Chrysalis - Source to a 2D Platformer from 1994","archived":false,"fork":false,"pushed_at":"2023-12-02T11:32:10.000Z","size":605,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T07:51:07.190Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://alecthomas.posterous.com/chrysalis-source-to-a-2d-platformer-from-1994","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"astaxie/build-web-application-with-golang","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alecthomas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2010-09-23T13:20:01.000Z","updated_at":"2024-01-22T14:00:14.000Z","dependencies_parsed_at":"2024-10-27T17:23:52.663Z","dependency_job_id":"3588b712-a3f8-412b-aa13-8c672613e17f","html_url":"https://github.com/alecthomas/chrysalis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecthomas%2Fchrysalis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecthomas%2Fchrysalis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecthomas%2Fchrysalis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alecthomas%2Fchrysalis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alecthomas","download_url":"https://codeload.github.com/alecthomas/chrysalis/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243909860,"owners_count":20367535,"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":[],"created_at":"2024-10-09T16:06:55.766Z","updated_at":"2025-03-18T06:30:59.328Z","avatar_url":"https://github.com/alecthomas.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chrysalis - Source to a 2D Platformer from 1994 #\n\n[Chrysalis](http://github.com/alecthomas/chrysalis) is a game a friend (Eric Sambach) and I wrote in 1994, just out of high school.\n\nWe sent this game to Epic MegaGames for consideration, but without success (and\nthey hadn't even seen the source). Ouch.\n\n## The Game ##\n\nI really thought the game itself could have been great. It centered around\nan amorphous blob of green slime (which wasn't as ugly as it sounds) that could assume the\nshape and powers of defeated opponents. Only a limited number of shapes could be stored, and the various powers had to be used to solve puzzles and bypass obstacles.\n\n## The Engine ##\n\nThe source is horrendous. Almost zero encapsulation. Globals everywhere. You get the picture.\n\nThere is C, C++, Objective-C, Intel-style assembler, and GNU-style assembler.\n\nThe game ran only on 320x200 256-bit indexed video surfaces, initially\nsupporting only DOS (using the Watcom C++ compiler and mode 13), and the Linux\nconsole (via svgalib). A friend (Brian Spilsbury) from #c on EFnet later wrote\nan X11 surface. We divided the 256 colour palette into a 6x6x6 RGB cube, which allowed us to easily compute fade transitions, though limited the fidelity of images somewhat.\n\nThe underlying graphics library was largely equivalent to SDL, but preceded its public release by about four years.\nIt supported full clipping, transparent images, virtual\npages, bitmapped text fonts, circle and line (Bresenham) primitives. It also\nincluded a full windowing system with transparency, used for the Chrysalis\nlevel editor.\n\nAssembler was used for the low-level rendering primitives. 16-bit and 8-bit\nfixed-point number classes were used for all coordinates.\n\nAs a sign of its vintage, the game implements nearly everything from scratch and has almost no external dependencies, primarily because there were very few available. The STL didn't exist, nor did SDL, or any number of other libraries that would have saved us a lot of time.\n\n## The Visuals ##\n\nThe art I created was quite nice too, I thought, though lost now, buried\ninside the proprietary packed file format we created.\n\nThe game itself used four-layer parallax scrolling. The play layer was the second from the front. Each layer faded off slightly more, to ensure it didn't intrude too much visually.\n\nEntities in the game could be animated, such as the water and vines in creature.cc.\n\n## Last Words ##\n\nIf anybody has an old Linux machine lying around and can run the binaries (which are included on GitHub), I'd love a screenshot.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falecthomas%2Fchrysalis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falecthomas%2Fchrysalis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falecthomas%2Fchrysalis/lists"}