Disassemble the maps data
kemenaran opened this issue · 3 comments
Maps data location has been documented in other projects. It consists of:
- Three base maps (overworld, underworld, side-scrolling views) ;
- Room pointers tables (mapping rooms indices to actual room data) ;
- Room data, defining the base map template, the room objects, and several room metadatas.
The code for parsing and loading the map data has been partially reverse-engineered and documented to a good extend (see for instance CopyMapToTileMapLoop
in src/bank0.asm
).
However the map data is still in binary form. It could be mangled into a format similar to what pokered uses : a mix of self-described assembly for data-structures, and bin files for data.
How
This probably involves writing a Python script to parse the overworld and dungeon map data, and write:
- a readable output for data-structures ;
- bin files for actual data (like map objects).
Documentation
The best documentation available about the map data format probably lies in the source of the LALE Zelda Level Editor. Other fragments are available on various web pages:
- LALE : level editor, notes on maps data format
- Xkeeper's Link's Awakening depot: maps tilesets and save format infos
- Artemis251's Link's Awakening Cache: ROM map, maps data format
You can see some of the junk here, if you'd like:
https://github.com/Xkeeper0/links-awakening-junk
E: to be specific, check test.php
and neo/
@Xkeeper0 awesome! I actually wanted to contact you, and ask for the sources of your webpage. Thanks a lot!
I will read the code, and probably port part of it to Python. The plan is to write two separate modules:
- One for parsing the different kinds of map data;
- One for writing the map data back into assembly format.