{"id":20425275,"url":"https://github.com/catseye/bubble-escape","last_synced_at":"2026-04-21T13:31:49.636Z","repository":{"id":2611170,"uuid":"3594838","full_name":"catseye/Bubble-Escape","owner":"catseye","description":"MIRROR of https://codeberg.org/catseye/Bubble-Escape : A maze-exploration minigame (2K) for the Commodore 64","archived":false,"fork":false,"pushed_at":"2023-12-11T17:18:21.000Z","size":62,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-15T15:11:53.080Z","etag":null,"topics":["c64","c64-game","commodore-64","minigame","retrogame","retrogaming","video-game"],"latest_commit_sha":null,"homepage":"https://catseye.tc/node/Bubble_Escape","language":"Assembly","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/catseye.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2012-03-01T18:46:18.000Z","updated_at":"2023-10-25T19:18:37.000Z","dependencies_parsed_at":"2023-12-11T18:42:18.081Z","dependency_job_id":null,"html_url":"https://github.com/catseye/Bubble-Escape","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FBubble-Escape","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FBubble-Escape/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FBubble-Escape/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/catseye%2FBubble-Escape/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/catseye","download_url":"https://codeload.github.com/catseye/Bubble-Escape/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241966977,"owners_count":20050324,"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":["c64","c64-game","commodore-64","minigame","retrogame","retrogaming","video-game"],"created_at":"2024-11-15T07:12:45.564Z","updated_at":"2026-04-21T13:31:44.615Z","avatar_url":"https://github.com/catseye.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"Bubble Escape\n=============\n\n_Try it online_ [@ catseye.tc](https://catseye.tc/installation/Bubble%20Escape)\n| _See also:_ [Dungeons of Ekileugor](https://codeberg.org/catseye/Dungeons-of-Ekileugor#dungeons-of-ekileugor)\n∘ [SixtyPical](https://codeberg.org/catseye/SixtyPical#sixtypical)\n∘ [yucca](https://codeberg.org/catseye/yucca#yucca)\n\n- - - -\n\n(c)2009-2021 Cat's Eye Technologies.  All rights reserved.  \nCovered under a BSD-style license; see the file LICENSE for the full text.\n\n![Screenshot of Bubble Escape 2K](images/bubble%20escape%202k.png?raw=true)\n\nWhat is it?\n-----------\n\nBubble Escape is a video game for the Commodore 64 computer.\n\nPremise\n-------\n\nYou, a sentient soap bubble, have been arrested for your political beliefs\nby the ruling class of your society, an ancient race of dragons.  You find\nyourself imprisoned in a maze-like dungeon from which you must escape.\nThere is but a single exit, and it will require five different keys to open.\nYou will find these keys randomly deposited throughout the dungeon, but each\nroom presents its own hazards: moving walls, fireballs, hovering sentry\nrobots, and dragon officials.  Being a soap bubble, you must be very careful\nto avoid touching any of these hazards, and the dungeon walls as well,\notherwise you will pop.  Fortunately, bubbles, like cats, have nine lives.\n\nControls\n--------\n\nTo start the game, mount the \"bubble escape 2k.d64\" disk image and type\n\n    load\"*\",8\n    run\n\nPlug your joystick into port 2.  Pushing in any direction will accelerate\nthe bubble in that direction.  The fire button is not used except to start\na new game after you've lost all 9 lives.\n\nIf you are playing this game in the VICE emulator, make sure you have sound\nplayback enabled, as the random number generator relies on it.\n\nThis is all you need to know to begin playing the game, but some extra\nhints/spoilers are given at the bottom of this readme.\n\nHistory\n-------\n\nIf you're not interested in how this game came to be, you can skip these\ntwo sections.\n\nThe Original - 198?\n-------------------\n\nI wrote the original version of this game in the 1980's, when I was a\nteenager.  It was written in BASIC, and was thus very slow.  I tried to\nmake it seem faster by calling the movement subroutine twice in quick\nsuccession inside the main game loop, but that only made it choppier.\n\nThis was one of my earliest games, and one of the few that actually got\nfinished -- although it fell a bit short of the original vision, which\nincluded having the dragon elders shoot fireballs at you, and something\nmore exciting happening in the rooms with three fireballs in them.\n\nThe idea was doubtless influenced by StarQuake -- a large, multi-screen,\nnon-scrolling maze (with a couple of teleporters) in which you must locate\nand collect a number of crucial items and deposit them in a certain place.\n\nThe sprites were designed by hand on graph paper, manually translated into\ndecimal numbers and transcribed into DATA statements.  There were some\nerrors in this process, and the bubble and the dragon didn't look quite\nright.\n\nThe BASIC source code of the original is included for historical and\ncomparative purposes, or if you prefer, for larfs.\n\nThe Remake - 2009\n-----------------\n\nThe remake was written entirely in 6502 assembly language, using the P65\nportable 6502 assembler.  (The P65 assembler has since been superceded by\nthe Ophis assembler, which is now used in the build process -- in fact,\nOphis version 2.0 is assumed.)  The memories of my disappointment at the\npoor performance of the original game had hung heavily on my mind (well,\nmaybe not *that* heavily,) hence I endeavoured to make the remake as fast\nand as smooth as I could.\n\nThis was largely accomplished by the use of a raster interrupt which is\ntriggered at the very bottom of the screen.  This interrupt runs a routine\nwhich updates the positions of all the sprites.  It then calculates what the\nnext positions should be, based on velocity and acceleration of the sprites,\nthe direction the joystick is being pressed, the \"AI\" of the bad guys, etc.\n\nThe remake is more or less faithful to the original.  The maze is the same\nand the hazards are essentially the same.  The degree to which the game is\nstill unfinished is the same; the dragon elders still do not shoot\nfireballs, and the three-fireball rooms are still just three fireballs.\n\nBut some changes are significant:\n\n* Full screen.  The original used only the leftmost 256 pixel positions to\n  avoid messy multi-byte POKEs.  The remake uses the entire screen.  For this\n  reason, the display is slightly different as well: lives are shown in the\n  upper left corner, keys are shown in the upper right.  The walls are also\n  thinner.\n* Sentry robots move with acceleration.  In the remake, I initially tried to\n  duplicate the constant-velocity motion in the original, but I found it more\n  straightforward to apply the same physics to the sentries as to the bubble,\n  and once I got this to work, I liked it and kept it.\n* The sprites were fixed up a bit.  They look less wrong now.\n* The title screen, game over screen, and game won screens are not nearly\n  as nice to look at.\n\nThe assembly code for this version was pretty painful because it was largely\na direct translation of the BASIC to assembly language.  I can think of many\nways for it to be much cleaner (more jump tables come to mind.)\n\nThe Mini Game Compo Entry\n-------------------------\n\nSince my remake was a mere ~3K in size, and since I had not too long after-\nwards discovered the Mini Game Compo (via The New Dimension's website), I\nthought it would be fun to enter Bubble Escape into it.\n\nThen I had to decide -- should I enter it as a 4K game (I'd probably have\nto add more features,) or should I try to squeeze it down into 2K?  Well,\ngiven the nature of the contest and my history of space optimization (see\nShelta!), the choice was easy.\n\nI optimized away a lot of the bulky logic and debugging-assistance code, and\ngot it down to around ~2300 bytes.  After that I started chipping away at\nthe game itself, getting rid of the title/game over screens, sound effects,\nand one sprite image, bringing it down to ~2175 bytes.\n\nI then looked for a cruncher that would take me the rest of the way.  After\na few false starts, I eventually found \"Cruncher AB+\" which exceeded my\nexpectations.  In fact, I was able to restore the sound effects and sprite,\nand add one more feature to make the game harder (the more keys you have,\nthe shorter the delay before a sentry starts moving after you enter its\nroom.)\n\nThe end result was 2043 bytes, so I christened it \"Bubble Escape 2K\" and\nhere you have it.\n\nThe Mini Game Compo Winner\n--------------------------\n\nMuch to my surprise, submitting Bubble Escape 2K to the 2009 Mini Game\nCompetition was a good move -- it won first place in the 2K category!\n\nUnfortunately, the website hosting the rules and entries went down soon\nafterwards, and I did not think fast enough about saving a copy of the\nresults page for posterity, so I have no hard evidence of this.  I'm sure\nif you could find and ask the judges, they'd back up my story, though :)\n\nThe 8K Cartridge Version -- 2011 \u0026 2012\n---------------------------------------\n\nAfter writing the remake, I had a great, and I think perfectly reasonable,\ndesire to play it on a real, physical Commodore 64.  Through a series of\nmoves, I lost my original C64 in 2009; acquiring another one was not too\ndifficult, but the burning question was, what was the best way to get that\n2K of code onto the new machine?\n\nThere are several ways, ranging in ease and expense, to transfer files from\nmodern PC's to C64's and back.  I decided that the most interesting, though,\nwas to get an EPROM burner, a bit of Flash memory in a DIP, and an old\nCommodore 64 cartridge that no one really wanted; and to modify the game to\nrun from a cartridge ROM, burn that ROM image onto the Flash chip, take apart\nthe cartridge, remove the existing ROM, wire the Flash chip up to the right\naddress and data lines on the cartridge's PCB, stick it into the cartridge\nport and turn on the C64.\n\nWell, some of those things transpired, and some didn't -- I did sacrifice a\n\"Frog Master\" cartridge for the project, but I never did get to the point of\nremoving the ROM from its PCB.  (There's an outside chance I will someday,\nbut I wouldn't bank on it.  Ha!  Ha!  \"Bank\", get it?)\n\nI did, however, modify the game to build as an 8K ROM image in 2011, and,\nafter fixing some bugs in 2012, it does boot as a fully playable ROM image\nin VICE.\n\nBeing an 8K ROM image based on a ~2K game, there is a lot of room there\nthat is currently just zero bytes, but which could be used for all kinds of\nenhancements: maybe a title screen with music, maybe better game over and\ngame won sequences, maybe random maze generation, maybe nastier nasties.\nMaybe someday.\n\nLicense\n-------\n\nAll three versions of Bubble Escape are now covered under a BSD-style\nlicense, which means you can deal quite freely with the source code and\ncompiled binaries as long as you keep the license text intact.  See the\nfile LICENSE for complete information.\n\nThe full title of the game is \"Cat's Eye Technologies' Bubble Escape\", to\ndistinguish it from the handful of other games of the same name (many of\nwhich are online Flash-based dealies) which have appeared since the\noriginal was written.\n\nHints\n-----\n\n* The maze is 20 rooms wide by 10 rooms tall, 200 rooms in total.\n* The maze is static and hardcoded, not randomly generated.\n* You start in the top left corner.\n* The exit is in the bottom right corner.\n* There are teleporters in the bottom left and top right corners; each one\n  will teleport you to the other corner.\n\nHave fun!\n\nChris Pressey  \nJuly 7, 2009  \nBellevue, WA\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fbubble-escape","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcatseye%2Fbubble-escape","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcatseye%2Fbubble-escape/lists"}