Important information: this site is currently scheduled to go offline indefinitely by end of the year.

MECC Opening Night Bitmap Files

Get your graphics formats figures out here! Got details for others? Post here!
User avatar
piken
beginner
Posts: 22
Joined: Sat Dec 25, 2021 2:55 pm
Has thanked: 4 times
Been thanked: 11 times

Re: MECC Opening Night Bitmap Files

Post by piken »

It looks like an 8x8 tilemap like used in so many older 2D consoles (NES, SMS, SNES...), where indices point to graphic 8x8 tiles. If you mess with the graphics of 1 tile, all the other tiles of the same index are also affected. Don't rule out RLE compression quite yet though, as most games would apply RLE compression to their graphics too. I can't tell exactly the size because there's some blurry DPI scaling applied to the posted image, but 8x8 is common, and assuming 0xDF (223) is the width, then 223/8 looks like about how many 8x8 chunks I see. You can probably find the tilemap and graphics by messing with more bytes afterward. Otherwise, OllyDbg and IDA it is :b...
jawharp
advanced
Posts: 53
Joined: Wed Sep 23, 2009 5:16 pm
Been thanked: 3 times

Re: MECC Opening Night Bitmap Files

Post by jawharp »

Hey!

Thanks for your reply. The size is indeed 8x8!

Do you have any info on references or examples of this tiling method you could reccommend? Maybe if I can look at another example I can piece together how they were doing it. Randomly changing bytes has led to some weird stuff and a whole lot of crashes.

How would you go about using Ollydbg and IDA to figure this out? I've used them in the past for simple stuff, but not really reverse engineering something like this. Any help is appreciated. I understand you can't post a detailed tutorial on using Ollydbg or anything, I am just wondering what the broad strokes would be.

Thanks!
:twisted: jawharp :twisted:
User avatar
piken
beginner
Posts: 22
Joined: Sat Dec 25, 2021 2:55 pm
Has thanked: 4 times
Been thanked: 11 times

Re: MECC Opening Night Bitmap Files

Post by piken »

> Do you have any info on references or examples of this tiling method you could recommend?

Look up how the SNES or Sega Genesis worked (e.g. https://en.wikibooks.org/wiki/Super_NES ... s_tutorial) where each tilemap element in the 2D array pointed to an 8x8 graphic tile (0-1023 on the SNES, 0-2047 on the Sega Genesis, 0-255 on the Gameboy), but this case is probably much simpler than those were, probably just a 2D array of uint8 tile indices (and no consideration of tile flipping or subpalette indices).

> How would you go about using Ollydbg and IDA to figure this out?

I haven't used Ollydbg since ~2004, but like any debugger, if you set a breakpoint on the function of interest (e.g. CreateFile in kernel32.dll when the .cbmp file is opened), you can follow how it's moving data around from input to expanded output. Assembly is hard to follow the bigger picture, but it's actually really easy (as a language) to understand what's happening on a per-instruction basis since it's (typically) only a single value being moved or modified by math operation, not a whole complex equation on a line. There are loads of free resources (e.g. https://en.wikibooks.org/wiki/X86_Assem ... structions).
Post Reply