I wasn't able to find any work done on this game before, so I'd like to post what I found.
981A: Pointers to level exit data. Uncertain format. (destination dest-height animation x-coordinate ??? y-coordinate)
A1A9: Pointers related to starting coordinates when entering a level. Always a multiple of 5.
A291: Pointers to level screen data. One of the first two bytes is number of bytes to read. (?) Each byte is one 16x16 screen. Screens are tiled horizontally along the top of the level first, then the next row, etc. After the entire level is tiled, the next screens are used in the background. Fewer screens are needed for background data because of the parallax scrolling. (?)
A6D8: Pointers to some kind of general level information. First two bytes are level dimensions (width x height, in number of screens)
B2F3: Level layer order byte (is Firebrand in the background/foreground, etc.)
C874: Pointers to enemy and object data! (3 bytes per pointer) First byte is number of objects to read. Each object is 6 bytes. Format: 2 bytes object type, 2 bytes x coordinate, 2 bytes y coordinate. Objects can be placed anywhere in the level, regardless of screen. The 1st byte (low-order byte) of object type is more important. The 2nd byte is things like object's facing direction. (?) 84D031 -> 25031 (The first level's object data)
7C800: Level screen tile data (128 bytes per screen). Each screen is 16x16 tiles. Every 2 bytes is a 2x2 tile square. 128 bytes total. 2x2 tile squares are tiled horizontally. Each row is 8 2x2 tile squares. There are 8 rows.
There's more info at my Github. https://github.com/abyssonym/demons_crest_hacking
I'm not sure if I'll continue working on this game, but there's enough information here to completely change the level layout. If someone else already found this or other valuable information for this game, I'd like to see their work, so please let me know!