DMA[0]: write Mode: 0 0xFD26AE->0x2122 Bytes: 512 (inc) V-Line:217 CGRAM: 00 (0)
Hmm... do note that you'll probably have to be able to expand the entire ROM to do that (unless you manage to make a re-compressor and like being restrained by the original data size). You'd likely run out of room, unless the ROM is made bigger and its data rearranged.LokiNova wrote:I'm going to do a level editor like Lunar Magic, simple interface with drag-drop of elements
The decompression lib is going to decompress resources to show terrain and sprites on the screen, without saving file, all the work done in memory
Yes, that is the pallet format.LokiNova wrote:Is the format : ?bbbbbgg gggrrrrr for each index like this document describe ?
Not a clue, I haven't dealt with splash screens yet.LokiNova wrote:I've got some questions about the palette format, here some infos I've got from tracing the rom :DMA[0]: write Mode: 0 0xFD26AE->0x2122 Bytes: 512 (inc) V-Line:217 CGRAM: 00 (0)
2. So that mean, the palette of the splash screen is 512 bytes non-compressed from the rom, thats right ?
Simion32 wrote:Hmm... do note that you'll probably have to be able to expand the entire ROM to do that (unless you manage to make a re-compressor and like being restrained by the original data size). You'd likely run out of room, unless the ROM is made bigger and its data rearranged.LokiNova wrote:I'm going to do a level editor like Lunar Magic, simple interface with drag-drop of elements
The decompression lib is going to decompress resources to show terrain and sprites on the screen, without saving file, all the work done in memory
Simion32 wrote:What does your decompressor code use to store the data? I've coded mine so far with a vector<char> to store extracted data in. I have about 20 functions done so far..
unsigned char dataOut[2000];
unsigned char *dataOut = (unsigned char*) HeapAlloc(GetProcessHeap(), NULL, 2000);
unsigned decompress(unsigned char *dataOut, unsigned dataOutSize, const unsigned char *dataIn, unsigned dataInSize);
switch (t)
{
case 0x08:
{
unsigned char byte = dataIn[indexIn++];
dataOut[indexOut++] = (byte / 0x10) | ((d % 0x10) << 4);
d = dataIn[indexIn++];
dataOut[indexOut++] = byte % 0x10 | (d / 0x10);
t = ((d & 0x0F) << 2) + 0x3F;
break ;
}
...
}
Simion32 wrote:Do you know if the tile data for DKC2 in tall levels (like brambles) are any different than DKC's? I assume there has to be some level dimensions because the levels in DKC2 are not always "16 x Length" or "Height x 64" in tile area.
The 8x8 tile graphics are assembled into 32x32 tiles, and these are then arranged into levels. At least that's how DKC does it, I'm quite sure DKC2 does the same (except of course, most of the data is compressed in DKC2 instead of just the graphics). Also DKC2 probably accesses its level data via RAM memory, not ROM like DKC does.LokiNova wrote:I haven't got into that currently, but it should be similar to Super Mario World, there may be some data to define the dimensions of the level, the music, etc. this need to be more investigate
Simion32 wrote:The 8x8 tile graphics are assembled into 32x32 tiles, and these are then arranged into levels. At least that's how DKC does it, I'm quite sure DKC2 does the same (except of course, most of the data is compressed in DKC2 instead of just the graphics). Also DKC2 probably accesses its level data via RAM memory, not ROM like DKC does.LokiNova wrote:I haven't got into that currently, but it should be similar to Super Mario World, there may be some data to define the dimensions of the level, the music, etc. this need to be more investigate
EDIT on 25th: Hey, I've got the routine done... time to give it a test-run!
Users browsing this forum: No registered users and 17 guests