{"id":15938554,"url":"https://github.com/ticky/crashstation","last_synced_at":"2026-06-11T23:31:05.241Z","repository":{"id":145549335,"uuid":"92561732","full_name":"ticky/crashstation","owner":"ticky","description":"📦 PocketStation GIF generator \u0026 Twitter bot","archived":false,"fork":false,"pushed_at":"2017-05-30T23:55:23.000Z","size":27,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-02-23T04:16:43.040Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://twitter.com/crashstation","language":"Lua","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/ticky.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":"2017-05-27T01:44:09.000Z","updated_at":"2024-06-14T03:23:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"37693560-5ee6-498b-a36e-bc5d9e8109de","html_url":"https://github.com/ticky/crashstation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ticky/crashstation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ticky%2Fcrashstation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ticky%2Fcrashstation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ticky%2Fcrashstation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ticky%2Fcrashstation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ticky","download_url":"https://codeload.github.com/ticky/crashstation/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ticky%2Fcrashstation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34222709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-10-07T05:40:44.596Z","updated_at":"2026-06-11T23:31:05.226Z","avatar_url":"https://github.com/ticky.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CrashStation!\n\nPocketStation GIF generator \u0026 Twitter bot\n\n## What?!\n\nCrashStation! is intended to launch the _Crash Bandicoot 3: Buttobi! Sekai Isshu_ PocketStation game, and return a GIF of the virtual pet portion of the game.\n\nYou can get the PocketStation game by loading up _Crash Bandicoot 3: Buttobi! Sekai Isshu_ in an emulator, choosing the third option at the main menu, followed by the first option (which is to download the PocketStation game), then the right-hand option (hai!). More information about this can be found in [this FAQ!](http://www.neoseeker.com/crash-bandicoot-3/faqs/27795-jp.html)\n\n## How?\n\nCrashStation! is made up of three parts;\n\n1. `crashstation.lua`, a LUA script to run within MAME, controlling the emulator's execution and outputting frame data\n2. `crashstation.rb`, a Ruby script which launches MAME, and preprocesses the frame data sent by `crashstation.lua` into a GIF\n3. `crashstationbot.rb`, a `twitter_ebooks` robot which interfaces the above with Twitter\n\nYou need a copy of the PocketStation game saved as `crash.gme`.\n\nRunning `./crashstation.rb` will generate a GIF in the current working directory.\n\nInformation on configuring the twitter bot can be found in the [`twitter_ebooks`](https://github.com/mispy/twitter_ebooks) repository.\n\n### No, but really, how?\n\nMAME includes LUA scripting functionality, through which it is possible to send keystrokes to the emulator, read the emulator's state and memory, and consequently to pull data out of it.\n\nThe included LUA script is run within MAME, alongside a PocketStation game loaded from a `.gme` PlayStation Memory Card image. It sets the clock to the current local time, then launches the first application found on the PocketStation.\n\nThen, once the game starts, it starts dumping frames and the time between frames from the PocketStation framebuffer to `STDOUT`. Framebuffer data is presented as 32 rows of 32-bit integers (as stored in the PocketStation's RAM!), as text, followed by a frame delay listed in seconds. An example of this frame data can be found in the `fixtures` directory.\n\n`crashstation.lua` will continue collecting frame data for 30 seconds, at which point it will exit MAME.\n\n`crashstation.rb` takes the frame data output by `crashstation.lua`, and converts it into a GIF using ImageMagick (via `rmagick`). It also accepts an optional time zone offset listed in seconds (i.e. UTC+10 is 36000, UTC-7 is -25200), which it will override the `TZ` variable to before launching MAME, effectively setting the PocketStation clock to any local time. If the time zone offset isn't set, it will choose a random offset.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fticky%2Fcrashstation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fticky%2Fcrashstation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fticky%2Fcrashstation/lists"}