pser1 escribió:
Now we need to know the contents of $E000 table (screen maps) and $F600 (data to draw 4 rows)
<rant>
My head hurts
. Why it has to be so... weird?
</rant>
Anyway, back on topic.
I have progressed some more. $E000 is loaded directly from disk, by Z7F01 (read sector) throguth BLK 37.
Entering the cave, it loads at $E000 two sectors ($18/$7/$0 and $1a/$8/$0). Starting at $4C it contains the tile numbers to make the background, that is, 20x12 numbered 16x16 tiles ($01 is cave wall -brown- and $F0 is cave entrance floor, for example).
Speaking of which, the tile number is used fro drawing but also for behaviour (i.e. can't go "up" to a wall tile, and going "down" on a wall tile, you fall). This is true for both, the cave entrance and the game.
Entering the game, it loads at $E000 four sectors (from $1a/$9/$0 to $1a/$c/$0). Of which, starting at $15, it has the tile definition of ten game screens, with the same structure:
1) 10x4 byte tile number data (??¿¿), so $28 (40bytes) for each screen. Yes, i know.
2) Some extra data (aprox. 21h bytes , but it can be a litte byte more or less)
. And yes, seems that it's after the screen data.
Conclusions:
1)The definition of the screens is simple. There is no hierarchy (like screen definition and screen map), only the definition of the N screens, with clear duplicates and lack of efficiency.
2) I can't make out the variable "header" data (it seems to contain the screen number, and probably fixed objects on the screen)
3) There are more levels, so it seems to load them on demand.