Comments (11)
Hello!
- How did you manage to rip all text dialogues?
Well, @Sanqui did that, and is much more skilled than me, so maybe they can explain better how they did :)
I think he got the data format from the ROM hacking community (there are some documentation about how LADX stores various data, like dialogs, maps or dungeons, used for level editors). He then used a python script to read the dialogs.
I guess the same thing could be done for maps, for instance: the data format is pretty well documented, and could be turned into an asm source file with a python script.
- I know some Game Boy ROMs that have compressed graphics. How do you guarantee that only converting ROM banks will give you all graphics data from the game?
Very few graphics are compressed in LADX – and the one that are (like photo pictures) are using a very basic compression scheme.
That said, I can be sure the disassembly produces the exact original ROM because every time it is build the digest is compared to the one of the original one – and they have to match. So we are sure the exact same binary is produced.
- Is there any plan on music and SFX? Maybe a tool or technique to rip that?
There are no tools for now, but that could be interesting! If you are interested, I would go to see how the pokered project disassembled the musics of Pokemon Red and Blue. Same thing, they have some python scripts to turn the data into assembly. Of course the data format is probably not the same, but it could be figured out.
from ladx-disassembly.
About music: I've dumped music from Oracle of Ages/Seasons, though the formatting is pretty rough compared to the pokemon projects. Need to polish that a bit.
Dumper: https://github.com/Drenn1/ages-disasm/blob/master/tools/dumpMusic.py
Ages music: https://github.com/Drenn1/ages-disasm/blob/master/audio/soundChannelData.s
I'm pretty sure Link's Awakening uses a different format, though I haven't looked very far into it.
from ladx-disassembly.
@Drenn1 oh, neat. How did you figure out the format? By disassembling the sound routines, I guess?
from ladx-disassembly.
What @kemenaran said is mostly right. Actually, I didn't even look up any documentation. I found the text in the intro ("What a relief!"), set a breakpoint on it, and traced back the relevant code to figure out where the pointer table is. From there I was ready to write a script to dump all the text. :)
from ladx-disassembly.
@kemenaran thank you for pointing that out! I'm interested in contributing to music, but I know it's hard to track this.
@Drenn1 interesting. Do you know if this sound format is somehow related to GBS (Gabe Boy Sound System)? I know that every Game Boy game has its own sound driver. Making things hard to understand. Can you explain how was the process of disassembly the music/sound a bit?
@Sanqui that's cool! So you made a dynamic analyze. I've checked your script. I'm not so good with Python (I'm JS guy) but it gives me many insights :)
from ladx-disassembly.
@raphaklaus GBS is not a format per se, it's essentially a stripped down ROM with only the sound driver and music.
The text.py
script isn't particularly good code. It's a one-off written to serve a purpose ("write once, read never"). Don't try to learn from it, really :)
from ladx-disassembly.
@raphaklaus you could have a look at pokemon red music disassembling script (in Python also) and the resulting output. (I'm not vouching for the quality of the Python code though)
from ladx-disassembly.
(@raphaklaus and here are the macros defined to make the audio files readable)
from ladx-disassembly.
@Sanqui You're right. GBS is more a GB Program than a format. Thanks for the clarification! About text.py
too late! 😂 I really don't care about beauty code, but what the logic can teach me :)
@kemenaran I'm kind familiar with PokeRed Disasm, but I didn't know about the macros! That's really good to make files readable and make sure it will compile back to binary format with the same SHA signature. Is there a Slack channel or something like that so we can chat about this project's contributions? I'd love to make some contributions in sound/music area.
Maybe I can write some tools to help the disassembly process. I wrote two in the past but it's in NodeJS. Is there a problem to be in this language or do you prefer Python only?
from ladx-disassembly.
@raphaklaus for me the tools language is secondary; it's more about the output anyway, so Node would be fine 👍
I just created a Discord chat for LADX; you can join here if you wish! https://discord.gg/sSHrwdB
from ladx-disassembly.
(The discussion has been inactive for a month; closing this issue.)
from ladx-disassembly.
Related Issues (20)
- Regarding tilemap and attrmap encoding HOT 1
- Name the few unamed tilemaps HOT 3
- Label palettes pointer tables
- Convert palettes to RGB format
- Rename `Velocity` to `Speed` HOT 5
- Find what `LINK_MOTION_UNKNOWN_0A` is used for HOT 2
- Make Octorock / Octorok spelling consistent HOT 1
- Make data formats friendlier to external editors HOT 2
- Label palettes data HOT 4
- Document entities helper functions
- Rename 'cyclop key' to 'slime key' HOT 1
- Make WRAM shiftable
- Rename hMapId HOT 1
- Label dialog constants
- `convert_background.py` fails on `menu_file_selection_commands.tilemap.encoded` HOT 5
- Makefile: add targets for Debug builds HOT 1
- convert_background should ignore filler byte for game_over.tilemap
- Some gfx need to be processed
- Some palettes need to be converted
- Consider removing the `; $ADDR: $BY $TE` comments? HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ladx-disassembly.