Giter VIP home page Giter VIP logo

celestial's Introduction

Celeste Reverse Engineering

In the interest of sharing (which I wish I had done more of in my early ROM hacking days), I'm putting up my code/findings here in case anyone may find it useful. I might clean it up later, make things easier to use, more tools, documentation, but I don't have any real goals here.

There is already a whole Celeste modding community out there who have already done a lot and have formal tools. I just love the challenge of seeing what I can do from scratch!

Disclaimer: This was done very quickly (most of a Saturday) and without reference resources so it is very, very rough.

Map/level viewer demo

Learning through visualizations is fun. Lately, I've been playing around with p5.js as a quick and dirty web drawing tool. It made sense to try putting these two things together so I made a quick level viewer. You can see it in action here.

I only included the first two maps in the interest of not giving away the entire game's map data away. However, if the devs would rather I not put those two maps up I will happily take down the Codepen demo until I add a way to load .bin files locally. The viewer code is in this repository as well.

Each map starts off with the Overview (like what you see in debug mode), which shows all the levels stitched together. Arrow keys move around the map, Q/A control zoom.

Screenshot of Old Site Map overview

Screenshot of zoomed out Mirror Temple overview

If you right click on a level it takes you to the level view, where you will also see the various entities in that level. It's neat to put a name on the various things in the game! Arrow keys also move around in this view. You can right click adjoining areas to enter them. Esc will take you back to the overview.

Screenshot of Level view for one of the Badeline chase levels in Old Site

Screenshot of Level view for one of the Celestial Resort B-side levels

For this, I took the levels and used map2json.rb to convert them into JSON for easier JS manipulation and wrote a viewer in p5.js. Here's an example of what one of these looks like, which again might get taken down if requested.

Tools used

  • Turning on debug mode on Celeste and poking around. (Done by editing your save file and enabling the flag)
  • 010 Hex Editor for poking in the .bin
  • The rom.rb and binwriter.rb files that I've built up over the past few years for quick ROM Hacking / reverse engineering projects.
  • ILSpy .NET Decompiler Visual Code extension - when I realized this was a kind of tree structure I started digging into code. This was most useful for looking at BinaryPacker for the map files, and in general getting a feel for how things are structured. AreaData is a good birds eye view of all map data.
  • Codepen for quick JS sketches.

celestial's People

Contributors

maddievision avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.