Coder Social home page Coder Social logo

lowlander / siddecompiler Goto Github PK

View Code? Open in Web Editor NEW

This project forked from galfodo/siddecompiler

0.0 0.0 0.0 629 KB

Generate relocatable 6502 assembly source code from Commodore 64 .sid files

License: MIT License

Shell 0.01% C++ 79.02% Python 1.31% C 12.20% Assembly 6.09% Makefile 1.33% Batchfile 0.04%

siddecompiler's Introduction

SIDdecompiler

Generate relocatable 6502 assembly source code from Commodore 64 .sid files

If you're that special kind of nerd that likes to play with other people's music drivers, then this is the tool for you!

This program takes a SID file and runs it through a 6502 emulator to produce a relocatable assembler source file.

Rob Hubbard tunes will be slightly better documented than others, with non-generic label names for data of known purpose.

The output is very simple and should work with most assemblers. I have tested it with 64tass.

Known issues

  • The decompiler is very conservative when it comes to code and relocatable address operand generation. Data that looks like code in the disassembly has never been executed by the emulator and is left alone. Likewise, data that looks like address operands is also ignored if it has never been read.

  • Does not currently handle tunes with timer based sample playback

  • A lot of rips in HVSC consist of multiple music driver instances in a single file. Often, these are moved around in memory and are not very well handled by the address operand tracer.

  • SIDs that set up IRQs or never return from init, are currently not supported

  • Undocumented opcodes are only partially supported

Why???

This project started because I wanted to produce a Rob Hubbard plugin for the Prosonix SID tracker. The tracing emulator and address operand resolution became so effective that it works with a lot of other music drivers as well, so instead of HubbardDecompiler, it became SIDdecompiler. Hopefully others will find it useful too.

Thanks to

  • Geir Tjelta for encouragement and debugging assistance

  • Lasse Öörni for "siddump", from which my 6502 emulator is based

  • Groepaz for the initial gnu Makefile and Visual Studio project dumper script

Feedback and bug reports are welcome, either on csdb (https://csdb.dk/release/?id=159804) or [email protected]

siddecompiler's People

Contributors

galfodo 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.