Facilitate the process of creating a decompilation project for a given Wii/Gamecube game

Overview

dadosod


Facilitate the process of creating a decompilation project for a given Wii/Gamecube game

Features

  • Disassembly DOL
    • Guess/Calculate common sections name
    • Divide each section into his own file
    • Divide the bss section appropriately (.bss, .sbss and .sbss2)
    • Partial Data Type Detection for Data Section (No .incbin)
    • Linker Script (With appropriate section alignment)

Usage

Command Line Options

Command Description
dadosod dol Disassembly a dol executable

Dol's command options

Command Description
Path of the dol file Required

Planned Features

  • Disassembly DOL
    • Detect .init's _rom_copy_info and _bss_init_info (Wii Only)
    • Automatic Output Shift-ability
    • Library Splitting
    • Symbol Map
  • Disassembly REL
  • Disassembly RSO

Special Thanks

From where the name comes

dadosod is disassembly in Gaelic

You might also like...
Wein2D.js bindings for creating browser games in Rust using WebAssembly.

Wein2D.js-WASM Wein2D.js bindings for creating browser games in Rust using WebAssembly. Wein2D.js-WASM requires Wein2d.js to be loaded in the same doc

A tool for creating optimised, platform specific glTF files.

Squisher What? squisher is a program that takes a glTF or .glb file with PNG/JPG textures and produces a .glb file where the textures have been replac

A bevy plugin for creating grids, for debugging purposes
A bevy plugin for creating grids, for debugging purposes

Bevy Debug Grid A plugin for creating debug mesh grids in the bevy game engine. The default_cube example Installation To install this plugin, add the

2-player game made with Rust and
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

2d Endless Runner Game made with Bevy Game Engine
2d Endless Runner Game made with Bevy Game Engine

Cute-runner A 2d Endless Runner Game made with Bevy Game Engine. Table of contents Project Infos Usage Screenshots Disclaimer Project Infos Date: Sept

A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it techinically works
A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it techinically works

rustetris A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it tech

A game for the game jam
A game for the game jam "1-Button Jam 2021"

One click ninja A game for the game jam "1-Button Jam 2021" written in Rust with the Bevy engine. A rhythm game, where you play a soldier that can def

A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

Wasm game of life - A Rust and WebAssembly tutorial implementing the Game of Life

wasm_game_of_life Conway's Game of Life in Rust and WebAssembly Contributing | Chat Built with 🦀 🕸 by The Rust and WebAssembly Working Group About T

Comments
  • Option to maintain source file structure and symbol names

    Option to maintain source file structure and symbol names

    Hi, in melee we are looking for a way to dump the binary we've built back to asm. However, with the current implementation of your disassembly, we lose our file splits and symbol names in the process. We would like to preserve the file tree of our source files in the output asm, and use our symbol names (which are present in the .elf) instead of symbols generated based on address.

    I see that "Library Splitting" is a planned feature in your README. What would be involved in implementing these features? I wouldn't mind writing them myself, but I'm not familiar with Rust or with your codebase so it would take me some time to adjust.

    Thanks for your consideration.

    opened by ribbanya 6
  • [Feature] Handle stmw instructions with non-existant lbl

    [Feature] Handle stmw instructions with non-existant lbl

    Failed to parse instruction at text.s line 1098614: stmw r4, lbl_805F96F0@sda21(r2)

    Sample

    /* 8039CAC8 00396388  7C 12 42 A6 */	mfspr r0, 274
    /* 8039CACC 0039638C  90 02 00 0C */	stw r0, lbl_805F96EC@sda21(r2)
    /* 8039CAD0 00396390  BC 82 00 10 */	stmw r4, lbl_805F96F0@sda21(r2)
    /* 8039CAD4 00396394  7F 7A 02 A6 */	mfspr r27, 26
    /* 8039CAD8 00396398  7F 88 02 A6 */	mflr r28
    

    lbl_805F96F0 does not exist within the text.s Only within sdata.s

    lbl_805ECD50:
    
    	# ROM: 0x575650
    	.4byte lbl_805F96F0
    	.4byte 0
    

    Proposal: add flag/support for skip/nop patching if the lbl does not exist

    opened by dreamsyntax 2
  • Update ppc750cl again for more updates

    Update ppc750cl again for more updates

    Branch prediction bits are now supported on conditional branch instructions. The +/- suffix will only appear when the branch prediction bit is overridden from the default.

    Adds more mnemonics for bd* and rlwinm. (Yay extrwi!)

    Fixes incorrect outputs for crmove/crnot.

    Changes can be viewed here: https://github.com/encounter/ppc750cl/commit/4d8e4733319312abf47cde193d7386e55744bdf8

    opened by encounter 0
  • Update ppc750cl for CR bit & SPR decoding

    Update ppc750cl for CR bit & SPR decoding

    This updates ppc750cl to use my fork, which includes better CR bit decoding: cror 2, 1, 2 => cror eq, gt, eq crclr 6 => crclr 4*cr1+eq

    SPR names & simplified mnemonics: mfspr r0, 0x397 => mfspr r0, GQR7 mtspr 0x110, r4 => mtsprg 0, r4 mfspr r3, 0x1a => mfsrr0 r3 ...and so on.

    This also includes additions to the generated macros.s to support the human-readable SPR names.

    opened by encounter 0
Releases(v1.0.1)
  • v1.0.1(Aug 9, 2022)

    Bug Fixing

    Protect against integer overflow when discovering new sections.

    SHA256: 2a84152b0b69e911fc6704d30d983f13dfeb3373121011e7a1a46b586e4787ac

    What's Changed

    • fix crash when loading dols that lack sbss2 by @ChrisNonyminus in https://github.com/InusualZ/dadosod/pull/2

    New Contributors

    • @ChrisNonyminus made their first contribution in https://github.com/InusualZ/dadosod/pull/2

    Full Changelog: https://github.com/InusualZ/dadosod/compare/v1.0.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
    dadosod.exe(360.50 KB)
    dadosod.sha256(77 bytes)
  • v1.0.0(Jun 11, 2022)

Owner
Wesley Moret
A noob programmer, who is learning about stuff
Wesley Moret
Creating a simple flappy bird game in Rust language

Creating a simple flappy bird game in Rust language The main goal of this project is to get my hands dirty with rust, while creating something fun. Ex

Sajidur Rahman 1 Feb 10, 2022
Utilities for creating strictly ordered execution graphs of systems for the Bevy game engine

bevy_system_graph This crate provides the utilities for creating strictly ordered execution graphs of systems for the Bevy game engine. Bevy Version S

Hourai Teahouse 19 Dec 2, 2022
Solana Game Server is a decentralized game server running on Solana, designed for game developers

Solana Game Server* is the first decentralized Game Server (aka web3 game server) designed for game devs. (Think web3 SDK for game developers as a ser

Tardigrade Life Sciences, Inc 16 Dec 1, 2022
My first Real-Time 3D Game Engine learning project written in Rust.

EyeEngine-Rust FOA, sry for my poor English. What is Eye Engine? Eye Engine is my first Real-Time 3D Game Engine learning project. There are two editi

F-seeeye 4 Jan 5, 2022
A hoptastic game. Joint project with Spicy Lobster.

Hoppy A Gamercade game. A WIP Game based on Jump 'n Bump and Super Mario War. The game rom .gcrom can be played using the Gamercade console The editor

null 4 Sep 21, 2022
a prototype crate for creating modular and performant 3D CPU particle systems, inspired by Unity's Shuriken Particle System.

bevy_prototype_particles This is a prototype crate for creating modular and performant 3D CPU particle systems, inspired by Unity's Shuriken Particle

James Liu 28 Sep 12, 2022
Engine / framework for creating highly customizable and user modable action RPG's

Rust RPG Toolkit PLEASE NOTE: this in early and very heavy development. API is subject to constant change, as it has newly transitioned from being a g

Ole A. Sjo Fasting 58 Dec 5, 2022
Bell is a work in progress programming language that compiles to MCfunction (Minecraft's language for creating datapacks).

Bell is a work in progress programming language that compiles to MCfunction (Minecraft's language for creating datapacks). It provides a higher level,

Yoav 17 Aug 25, 2022
Hotham is a framework for quickly and easily creating amazing standalone VR experiences.

?? Under construction! Please mind the mess! ?? Introduction G'day, and welcome to Hotham! ?? Hotham is an attempt to create a lightweight, high perfo

Let Eyes Equals Two 296 Dec 29, 2022
Abstreet - Transportation planning and traffic simulation software for creating cities friendlier to walking, biking, and public transit

A/B Street Ever been stuck in traffic on a bus, wondering why is there legal street parking instead of a dedicated bus lane? A/B Street is a project t

A/B Street 6.8k Jan 9, 2023