no message
This commit is contained in:
parent
1c8e5b2945
commit
ab46e65c42
122
src/console.c
122
src/console.c
|
@ -1619,6 +1619,124 @@ static void onConsoleExportCommand(Console* console, const char* param)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(TIC80_PRO)
|
||||||
|
|
||||||
|
static void buf2str(const void* data, s32 size, char* ptr, bool flip)
|
||||||
|
{
|
||||||
|
enum {Len = 2};
|
||||||
|
|
||||||
|
for(s32 i = 0; i < size; i++, ptr+=Len)
|
||||||
|
{
|
||||||
|
sprintf(ptr, "%02x", ((u8*)data)[i]);
|
||||||
|
|
||||||
|
if(flip)
|
||||||
|
{
|
||||||
|
char tmp = ptr[0];
|
||||||
|
ptr[0] = ptr[1];
|
||||||
|
ptr[1] = tmp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static char* printBuf(char* ptr, const void* data, s32 size)
|
||||||
|
{
|
||||||
|
sprintf(ptr, "-- ");
|
||||||
|
ptr += strlen(ptr);
|
||||||
|
|
||||||
|
buf2str(data, size, ptr, true);
|
||||||
|
ptr += strlen(ptr);
|
||||||
|
|
||||||
|
sprintf(ptr, "\n");
|
||||||
|
ptr += strlen(ptr);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static char* printTag(char* ptr, const char* tag)
|
||||||
|
{
|
||||||
|
sprintf(ptr, "\n-- %s:\n", tag);
|
||||||
|
ptr += strlen(ptr);
|
||||||
|
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static CartSaveResult saveProject(Console* console, const char* name)
|
||||||
|
{
|
||||||
|
tic_mem* tic = console->tic;
|
||||||
|
|
||||||
|
char* stream = (char*)SDL_malloc(sizeof(tic_cartridge) * 3);
|
||||||
|
|
||||||
|
if(stream)
|
||||||
|
{
|
||||||
|
char* ptr = stream;
|
||||||
|
|
||||||
|
strcpy(ptr, tic->cart.code.data);
|
||||||
|
ptr += strlen(ptr);
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "PALETTE");
|
||||||
|
ptr = printBuf(ptr, tic->cart.palette.data, sizeof tic->cart.palette.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "TILES");
|
||||||
|
|
||||||
|
for(s32 i = 0; i < TIC_BANK_SPRITES; i+=16)
|
||||||
|
ptr = printBuf(ptr, tic->cart.gfx.tiles[i].data, sizeof tic->cart.gfx.tiles / 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "SPRITES");
|
||||||
|
|
||||||
|
for(s32 i = 0; i < TIC_BANK_SPRITES; i+=16)
|
||||||
|
ptr = printBuf(ptr, tic->cart.gfx.sprites[i].data, sizeof tic->cart.gfx.sprites / 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "MAP");
|
||||||
|
|
||||||
|
for(s32 i = 0; i < TIC_MAP_WIDTH * TIC_MAP_HEIGHT; i += TIC_MAP_WIDTH)
|
||||||
|
ptr = printBuf(ptr, &tic->cart.gfx.map.data[i], sizeof tic->cart.gfx.map / TIC_MAP_HEIGHT);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "WAVES");
|
||||||
|
|
||||||
|
for(s32 i = 0; i < ENVELOPES_COUNT; i++)
|
||||||
|
ptr = printBuf(ptr, tic->cart.sound.sfx.waveform.envelopes[i].data, sizeof(tic_waveform));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "SFX");
|
||||||
|
|
||||||
|
for(s32 i = 0; i < SFX_COUNT; i++)
|
||||||
|
ptr = printBuf(ptr, &tic->cart.sound.sfx.data[i], sizeof(tic_sound_effect));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "PATTERNS");
|
||||||
|
|
||||||
|
for(s32 i = 0; i < MUSIC_PATTERNS; i++)
|
||||||
|
ptr = printBuf(ptr, &tic->cart.sound.music.patterns.data[i], sizeof(tic_track_pattern));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
ptr = printTag(ptr, "TRACKS");
|
||||||
|
|
||||||
|
for(s32 i = 0; i < MUSIC_TRACKS; i++)
|
||||||
|
ptr = printBuf(ptr, &tic->cart.sound.music.tracks.data[i], sizeof(tic_track));
|
||||||
|
}
|
||||||
|
|
||||||
|
fsWriteFile(name, stream, strlen(stream));
|
||||||
|
|
||||||
|
SDL_free(stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
return CART_SAVE_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static CartSaveResult saveCartName(Console* console, const char* name)
|
static CartSaveResult saveCartName(Console* console, const char* name)
|
||||||
{
|
{
|
||||||
tic_mem* tic = console->tic;
|
tic_mem* tic = console->tic;
|
||||||
|
@ -1672,7 +1790,11 @@ static CartSaveResult saveCart(Console* console)
|
||||||
|
|
||||||
static void onConsoleSaveCommandConfirmed(Console* console, const char* param)
|
static void onConsoleSaveCommandConfirmed(Console* console, const char* param)
|
||||||
{
|
{
|
||||||
|
#if defined(TIC80_PRO)
|
||||||
|
CartSaveResult rom = saveProject(console, param);
|
||||||
|
#else
|
||||||
CartSaveResult rom = saveCartName(console, param);
|
CartSaveResult rom = saveCartName(console, param);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(rom == CART_SAVE_OK)
|
if(rom == CART_SAVE_OK)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue