If your file is 16 bytes longer than 24k, then as, there's likely a 16 byte header. Unless you know the format of the header, ignore it ! it's very unlikely to be part of the orignal game.
If you're expexting data from 2 chips one 8k for graphic definitions one 16k for the game code, then there's 2 options, 8k first or 16k first.
What you're interested in is the last bytes of the code rom, as they will be most likely be the 6502 hardware vectors.
If the 8k graphic one is first, then the last 6 bytes of the 16k rom will be the very last 6 bytes of the file.
Code:
Option 1 - file offsets
0000-000F - Header
0010-200F - Graphic data
2010-6009 - game code
600A-600F - 6502 Vectors
If the 16k rom is first, then the last 6 bytes of the 16k rom will be at offset 0x400A
Code:
Option 2 - file offsets
0000-000F - Header
0010-4009 - game code
400A-400F - 6502 Vectors
4010-600F - Graphic data
If all 3 vectors look sensible, then you could have the right spot. If they don't make sense, you could be looking at graphic data. Where the vecors jump too should give you clues as to where the rom expects to be run from.
For example reset or interrupt vector of 0xBXXX wouldn't be in a rom located at 0xC000 to 0xFFFF so the rom in that case would probably expect to be 0x8000 to 0xFFFF.