{"id":13829864,"url":"https://github.com/Xkeeper0/smb2","last_synced_at":"2025-07-09T10:32:00.204Z","repository":{"id":37390992,"uuid":"123884484","full_name":"Xkeeper0/smb2","owner":"Xkeeper0","description":"Super Mario Bros. 2, discombobulated","archived":false,"fork":false,"pushed_at":"2023-02-21T04:56:37.000Z","size":3276,"stargazers_count":77,"open_issues_count":2,"forks_count":18,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-08-05T10:09:26.054Z","etag":null,"topics":["6502-assembly","assembly-6502","mario-bros","nes","reverse-engineering"],"latest_commit_sha":null,"homepage":"https://discord.gg/TsWMMeV","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xkeeper0.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":"2018-03-05T07:55:44.000Z","updated_at":"2024-07-12T15:26:02.000Z","dependencies_parsed_at":"2024-05-27T18:59:32.007Z","dependency_job_id":"0df1fd9f-bd9a-4bdc-aa2a-8b8d216c0f2f","html_url":"https://github.com/Xkeeper0/smb2","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/Xkeeper0%2Fsmb2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xkeeper0%2Fsmb2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xkeeper0%2Fsmb2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xkeeper0%2Fsmb2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xkeeper0","download_url":"https://codeload.github.com/Xkeeper0/smb2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225533025,"owners_count":17484181,"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":["6502-assembly","assembly-6502","mario-bros","nes","reverse-engineering"],"created_at":"2024-08-04T10:00:47.889Z","updated_at":"2025-07-09T10:32:00.198Z","avatar_url":"https://github.com/Xkeeper0.png","language":"Assembly","funding_links":[],"categories":["Assembly"],"sub_categories":[],"readme":"# Super Mario Bros. 2, Discombobulated\n[![Logo](tools/logo.png \"Logo\")](https://xkeeper0.github.io/smb2)\\\nA disassembly of Super Mario Bros. 2.\n\nThis project is intended to fully disassemble, comment, and understand\neverything about the game *Super Mario Bros. 2* on the NES. In addition to the\ndisassembly, there is also [documentation about the game's formats](https://xkeeper0.github.io/smb2),\nthough those are more of a work in progress than the disassembly.\n\nAs an added bonus, a fully understood disassembly will also make modifying and\nchanging the game easier!\n\n----\n\n## Building\n\nThis is designed for use with [asm6f](https://github.com/freem/asm6f/).\nFor your convenience, binaries of that have been included. (Windows/Linux)\n\n[![Build Status](https://travis-ci.com/Xkeeper0/smb2.svg?branch=asm6)](https://travis-ci.com/Xkeeper0/smb2)\n\n### Windows\nOpen a command prompt window and run:\n\n    build           (builds PRG0)\n    build -dREV_A   (builds PRG1)\n    build -dSM_USA  (builds Super Mario USA)\n\nThis will build the ROM from the assembly, and print any errors in the process.\nIt will then output the SHA-256 hashes of PRG0 and PRG1, as well as the SHA-256\nhash of the assembled ROM, useful if you intend to keep a one-to-one build.\n\n### Linux, etc\nA version of `asm6f` built under Ubuntu has been included under `tools/`.\nTo build, run the following command:\n\n\t./build.sh           (builds PRG0)\n\t./build.sh -dREV_A   (builds PRG1)\n\t./build.sh -dSM_USA  (builds Super Mario USA)\n\t./build.sh test      (builds both PRG0 and PRG1, verifying they match)\n\nThe build script will also display a message if the built ROM's SHA-256 hash\nmatches either PRG0 or PRG1.\n\n### Output\nThe build process will generate a few files:\n\n* `bin/smb2.nes`, your assembled ROM.\n* `bin/smb2.lst`, the assembler listing. Use this to see how the code assembled.\n* `bin/assembler.txt`, the log from the assembler\n* `bin/smb2.*.nl`, name-listing files for FCEUX's debugger.\n* Some other cruft, probably. welp\n\n**By default, the build script will create a byte-for-byte copy of the game**,\nmatching these two SHA-256 hashes:\n\n* PRG0: `47ba60fad332fdea5ae44b7979fe1ee78de1d316ee027fea2ad5fe3c0d86f25a`\n* PRG1: `6ca47e9da206914730895e45fef4f7393e59772c1c80e9b9befc1a01d7ecf724`\n\nYou can edit `config.asm` to change some build options; see that file for details.\n\n## Assembly\nThe \"source\" lives in the `src` directory:\n\n* `prg-x-x.asm` are the program banks. They are grouped in pairs, as that is how\n  SMB2 loads them. If you want to change this, you will need to split them apart again.\n* `defs.asm` defines various enums and identifiers.\n* `ram.asm` contains labels and definitions for RAM addresses.\n* `extras/` contains some additional fun things (see `config.asm`).\n* `levels/` contains level and enemy data.\n* `music/` contains music and sound data.\n* This list is growing as we split the disassembly into smaller parts.\n\n\n## Contributing\n* Fork the repository.\n* Make changes.\n* Submit a pull request!\n* You are also encouraged to visit the [Discord server](https://discord.gg/TsWMMeV)\n  if you have any questions.\n\n\n## See Also\n* [Data Crystal's SMB2 page](http://datacrystal.romhacking.net/wiki/Super_Mario_Bros._2)\n* [CaptainSouthbird's SMB3 disassembly](https://github.com/Drakim/smb3) and [Drakim's asm6f version](https://github.com/Drakim/smb3)\n* [Our Discord server](https://discord.gg/TsWMMeV)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FXkeeper0%2Fsmb2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FXkeeper0%2Fsmb2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FXkeeper0%2Fsmb2/lists"}