use word for C64 loadAddr
This commit is contained in:
parent
34c9962e4d
commit
fd6e420008
@ -3115,10 +3115,10 @@ void Load_C64(T_IO_Context * context)
|
|||||||
*
|
*
|
||||||
* @param[in,out] saveFormat one of the C64 mode from @ref c64_format
|
* @param[in,out] saveFormat one of the C64 mode from @ref c64_format
|
||||||
* @param[in,out] saveWhat 0=All, 1=Only bitmap, 2=Only Screen RAM, 3=Only color RAM
|
* @param[in,out] saveWhat 0=All, 1=Only bitmap, 2=Only Screen RAM, 3=Only color RAM
|
||||||
* @param[in,out] loadAddr actual load address/0x2000 or 0 for "None"
|
* @param[in,out] loadAddr actual load address or 0 for "None"
|
||||||
* @return true to proceed, false to abort
|
* @return true to proceed, false to abort
|
||||||
*/
|
*/
|
||||||
static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, byte *loadAddr)
|
static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, word *loadAddr)
|
||||||
{
|
{
|
||||||
int button;
|
int button;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
@ -3140,6 +3140,10 @@ static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, byte *lo
|
|||||||
"$C000",
|
"$C000",
|
||||||
"$E000"
|
"$E000"
|
||||||
};
|
};
|
||||||
|
// default addresses :
|
||||||
|
// - FLI Fli Graph 2 (BlackMail) => $3b00
|
||||||
|
// - multicolor (Koala Painter) => $6000
|
||||||
|
// - hires (InterPaint) => $4000
|
||||||
|
|
||||||
Open_window(200,120,"C64 saving settings");
|
Open_window(200,120,"C64 saving settings");
|
||||||
Window_set_normal_button(110,100,80,15,"Save",1,1,KEY_RETURN); // 1
|
Window_set_normal_button(110,100,80,15,"Save",1,1,KEY_RETURN); // 1
|
||||||
@ -3152,7 +3156,7 @@ static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, byte *lo
|
|||||||
Window_dropdown_add_item(what,i,what_label[i]);
|
Window_dropdown_add_item(what,i,what_label[i]);
|
||||||
|
|
||||||
Print_in_window(113,18,"Address:",MC_Dark,MC_Light);
|
Print_in_window(113,18,"Address:",MC_Dark,MC_Light);
|
||||||
addr = Window_set_dropdown_button(110,28,70,15,70,address_label[*loadAddr/32],1, 0, 1, LEFT_SIDE,0); // 4
|
addr = Window_set_dropdown_button(110,28,70,15,70,address_label[*loadAddr/0x2000],1, 0, 1, LEFT_SIDE,0); // 4
|
||||||
Window_dropdown_clear_items(addr);
|
Window_dropdown_clear_items(addr);
|
||||||
for (i=0; i<sizeof(address_label)/sizeof(address_label[0]); i++)
|
for (i=0; i<sizeof(address_label)/sizeof(address_label[0]); i++)
|
||||||
Window_dropdown_add_item(addr,i,address_label[i]);
|
Window_dropdown_add_item(addr,i,address_label[i]);
|
||||||
@ -3189,8 +3193,8 @@ static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, byte *lo
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 4: // Load addr
|
case 4: // Load addr
|
||||||
*loadAddr = Window_attribute2*32;
|
*loadAddr = Window_attribute2*0x2000;
|
||||||
GFX2_Log(GFX2_DEBUG, "Save_C64_Window() : addr=$%02x00 (%d)\n",*loadAddr,Window_attribute2);
|
GFX2_Log(GFX2_DEBUG, "Save_C64_Window() : addr=$%04x (%d)\n",*loadAddr,Window_attribute2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
@ -3210,7 +3214,7 @@ static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, byte *lo
|
|||||||
/// Save a C64 hires picture
|
/// Save a C64 hires picture
|
||||||
///
|
///
|
||||||
/// c64 hires is 320x200 with only 2 colors per 8x8 block.
|
/// c64 hires is 320x200 with only 2 colors per 8x8 block.
|
||||||
static int Save_C64_hires(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
static int Save_C64_hires(T_IO_Context *context, byte saveWhat, word loadAddr)
|
||||||
{
|
{
|
||||||
int i, pos = 0;
|
int i, pos = 0;
|
||||||
word cx, cy, x, y;
|
word cx, cy, x, y;
|
||||||
@ -3303,10 +3307,8 @@ static int Save_C64_hires(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (loadAddr)
|
if (loadAddr)
|
||||||
{
|
Write_word_le(file,loadAddr);
|
||||||
Write_byte(file,0);
|
|
||||||
Write_byte(file,loadAddr);
|
|
||||||
}
|
|
||||||
if (saveWhat==0 || saveWhat==1)
|
if (saveWhat==0 || saveWhat==1)
|
||||||
Write_bytes(file,bitmap,8000);
|
Write_bytes(file,bitmap,8000);
|
||||||
if (saveWhat==0 || saveWhat==2)
|
if (saveWhat==0 || saveWhat==2)
|
||||||
@ -3335,7 +3337,7 @@ static int Save_C64_hires(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
|||||||
* @param saveWhat what part of the data to save
|
* @param saveWhat what part of the data to save
|
||||||
* @param loadAddr The load address
|
* @param loadAddr The load address
|
||||||
*/
|
*/
|
||||||
int Save_C64_fli_monolayer(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
int Save_C64_fli_monolayer(T_IO_Context *context, byte saveWhat, word loadAddr)
|
||||||
{
|
{
|
||||||
FILE * file;
|
FILE * file;
|
||||||
byte bitmap[8000],screen_ram[1024*8],color_ram[1024];
|
byte bitmap[8000],screen_ram[1024*8],color_ram[1024];
|
||||||
@ -3359,10 +3361,7 @@ int Save_C64_fli_monolayer(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (loadAddr)
|
if (loadAddr)
|
||||||
{
|
Write_word_le(file, loadAddr);
|
||||||
Write_byte(file, 0);
|
|
||||||
Write_byte(file, loadAddr);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (saveWhat==0)
|
if (saveWhat==0)
|
||||||
Write_bytes(file,background,256); // Background colors for lines 0-199 (+ 56bytes padding)
|
Write_bytes(file,background,256); // Background colors for lines 0-199 (+ 56bytes padding)
|
||||||
@ -3388,7 +3387,7 @@ int Save_C64_fli_monolayer(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
|||||||
* @param saveWhat what part of the data to save
|
* @param saveWhat what part of the data to save
|
||||||
* @param loadAddr The load address
|
* @param loadAddr The load address
|
||||||
*/
|
*/
|
||||||
int Save_C64_multi(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
int Save_C64_multi(T_IO_Context *context, byte saveWhat, word loadAddr)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
BITS COLOR INFORMATION COMES FROM
|
BITS COLOR INFORMATION COMES FROM
|
||||||
@ -3547,10 +3546,7 @@ int Save_C64_multi(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
|||||||
setvbuf(file, NULL, _IOFBF, 64*1024);
|
setvbuf(file, NULL, _IOFBF, 64*1024);
|
||||||
|
|
||||||
if (loadAddr)
|
if (loadAddr)
|
||||||
{
|
Write_word_le(file,loadAddr);
|
||||||
Write_byte(file,0);
|
|
||||||
Write_byte(file,loadAddr);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (saveWhat==0 || saveWhat==1)
|
if (saveWhat==0 || saveWhat==1)
|
||||||
Write_bytes(file,bitmap,8000);
|
Write_bytes(file,bitmap,8000);
|
||||||
@ -3580,7 +3576,7 @@ int Save_C64_multi(T_IO_Context *context, byte saveWhat, byte loadAddr)
|
|||||||
* @param saveWhat what part of the data to save
|
* @param saveWhat what part of the data to save
|
||||||
* @param loadAddr The load address
|
* @param loadAddr The load address
|
||||||
*/
|
*/
|
||||||
int Save_C64_fli(T_IO_Context * context, byte saveWhat, byte loadAddr)
|
int Save_C64_fli(T_IO_Context * context, byte saveWhat, word loadAddr)
|
||||||
{
|
{
|
||||||
FILE *file;
|
FILE *file;
|
||||||
byte file_buffer[17474];
|
byte file_buffer[17474];
|
||||||
@ -3614,11 +3610,7 @@ int Save_C64_fli(T_IO_Context * context, byte saveWhat, byte loadAddr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (loadAddr)
|
if (loadAddr)
|
||||||
{
|
Write_word_le(file, loadAddr);
|
||||||
file_buffer[0]=0;
|
|
||||||
file_buffer[1]=loadAddr;
|
|
||||||
Write_bytes(file,file_buffer,2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (saveWhat==0)
|
if (saveWhat==0)
|
||||||
Write_bytes(file,file_buffer+2,256); // Background colors for lines 0-199 (+ 56bytes padding)
|
Write_bytes(file,file_buffer+2,256); // Background colors for lines 0-199 (+ 56bytes padding)
|
||||||
@ -3649,7 +3641,8 @@ int Save_C64_fli(T_IO_Context * context, byte saveWhat, byte loadAddr)
|
|||||||
void Save_C64(T_IO_Context * context)
|
void Save_C64(T_IO_Context * context)
|
||||||
{
|
{
|
||||||
enum c64_format saveFormat = F_invalid;
|
enum c64_format saveFormat = F_invalid;
|
||||||
static byte saveWhat=0, loadAddr=0;
|
static byte saveWhat=0;
|
||||||
|
static word loadAddr=0;
|
||||||
|
|
||||||
if (((context->Width!=320) && (context->Width!=160)) || context->Height!=200)
|
if (((context->Width!=320) && (context->Width!=160)) || context->Height!=200)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user