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] 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
 | 
			
		||||
 */
 | 
			
		||||
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;
 | 
			
		||||
  unsigned int i;
 | 
			
		||||
@ -3140,6 +3140,10 @@ static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, byte *lo
 | 
			
		||||
    "$C000",
 | 
			
		||||
    "$E000"
 | 
			
		||||
  };
 | 
			
		||||
  // default addresses :
 | 
			
		||||
  //  - FLI Fli Graph 2 (BlackMail) => $3b00
 | 
			
		||||
  //  - multicolor (Koala Painter) => $6000
 | 
			
		||||
  //  - hires (InterPaint) => $4000
 | 
			
		||||
 | 
			
		||||
  Open_window(200,120,"C64 saving settings");
 | 
			
		||||
  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]);
 | 
			
		||||
 | 
			
		||||
  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);
 | 
			
		||||
  for (i=0; i<sizeof(address_label)/sizeof(address_label[0]); 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;
 | 
			
		||||
 | 
			
		||||
      case 4: // Load addr
 | 
			
		||||
        *loadAddr = Window_attribute2*32;
 | 
			
		||||
        GFX2_Log(GFX2_DEBUG, "Save_C64_Window() : addr=$%02x00 (%d)\n",*loadAddr,Window_attribute2);
 | 
			
		||||
        *loadAddr = Window_attribute2*0x2000;
 | 
			
		||||
        GFX2_Log(GFX2_DEBUG, "Save_C64_Window() : addr=$%04x (%d)\n",*loadAddr,Window_attribute2);
 | 
			
		||||
        break;
 | 
			
		||||
 | 
			
		||||
      case 5:
 | 
			
		||||
@ -3210,7 +3214,7 @@ static int Save_C64_window(enum c64_format *saveFormat, byte *saveWhat, byte *lo
 | 
			
		||||
/// Save a C64 hires picture
 | 
			
		||||
///
 | 
			
		||||
/// 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;
 | 
			
		||||
  word cx, cy, x, y;
 | 
			
		||||
@ -3303,10 +3307,8 @@ static int Save_C64_hires(T_IO_Context *context, byte saveWhat, byte loadAddr)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (loadAddr)
 | 
			
		||||
  {
 | 
			
		||||
    Write_byte(file,0);
 | 
			
		||||
    Write_byte(file,loadAddr);
 | 
			
		||||
  }
 | 
			
		||||
    Write_word_le(file,loadAddr);
 | 
			
		||||
 | 
			
		||||
  if (saveWhat==0 || saveWhat==1)
 | 
			
		||||
    Write_bytes(file,bitmap,8000);
 | 
			
		||||
  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 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;
 | 
			
		||||
  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)
 | 
			
		||||
  {
 | 
			
		||||
    Write_byte(file, 0);
 | 
			
		||||
    Write_byte(file, loadAddr);
 | 
			
		||||
  }
 | 
			
		||||
    Write_word_le(file, loadAddr);
 | 
			
		||||
 | 
			
		||||
  if (saveWhat==0)
 | 
			
		||||
    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 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
 | 
			
		||||
@ -3547,10 +3546,7 @@ int Save_C64_multi(T_IO_Context *context, byte saveWhat, byte loadAddr)
 | 
			
		||||
  setvbuf(file, NULL, _IOFBF, 64*1024);
 | 
			
		||||
 | 
			
		||||
  if (loadAddr)
 | 
			
		||||
  {
 | 
			
		||||
    Write_byte(file,0);
 | 
			
		||||
    Write_byte(file,loadAddr);
 | 
			
		||||
  }
 | 
			
		||||
    Write_word_le(file,loadAddr);
 | 
			
		||||
 | 
			
		||||
  if (saveWhat==0 || saveWhat==1)
 | 
			
		||||
    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 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;
 | 
			
		||||
  byte file_buffer[17474];
 | 
			
		||||
@ -3614,11 +3610,7 @@ int Save_C64_fli(T_IO_Context * context, byte saveWhat, byte loadAddr)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (loadAddr)
 | 
			
		||||
  {
 | 
			
		||||
    file_buffer[0]=0;
 | 
			
		||||
    file_buffer[1]=loadAddr;
 | 
			
		||||
    Write_bytes(file,file_buffer,2);
 | 
			
		||||
  }
 | 
			
		||||
    Write_word_le(file, loadAddr);
 | 
			
		||||
 | 
			
		||||
  if (saveWhat==0)
 | 
			
		||||
    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)
 | 
			
		||||
{
 | 
			
		||||
  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)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user