State sizes now calculated on game load. Thumbnail only displayed if in the ZST.

This commit is contained in:
n-a-c-h
2005-02-01 13:38:19 +00:00
parent d7ccad2933
commit cc66b807b9
3 changed files with 52 additions and 18 deletions

View File

@@ -106,7 +106,7 @@ static unsigned int zst_version;
#define loading_old_state (!buffer && read && (zst_version == 60)) #define loading_old_state (!buffer && read && (zst_version == 60))
#define loading_state_no_sram (!buffer && read && !SRAMState) #define loading_state_no_sram (!buffer && read && !SRAMState)
void copy_state_data(unsigned char *buffer, void (*copy_func)(unsigned char **, void *, size_t), bool read) static void copy_state_data(unsigned char *buffer, void (*copy_func)(unsigned char **, void *, size_t), bool read)
{ {
copy_snes_data(&buffer, copy_func); copy_snes_data(&buffer, copy_func);
@@ -226,6 +226,7 @@ void RestoreCVFrame()
extern unsigned int RewindPos, RewindOldPos, RewindTimer; extern unsigned int RewindPos, RewindOldPos, RewindTimer;
void InitRewindVars() void InitRewindVars()
{ {
RewindPos = 0; RewindPos = 0;
@@ -545,6 +546,37 @@ static void write_save_state_data(unsigned char **dest, void *data, size_t len)
static const char zst_header_old[] = "ZSNES Save State File V0.6\x1a\x3c"; static const char zst_header_old[] = "ZSNES Save State File V0.6\x1a\x3c";
static const char zst_header_cur[] = "ZSNES Save State File V143\x1a\x3c"; static const char zst_header_cur[] = "ZSNES Save State File V143\x1a\x3c";
static size_t state_size;
static void state_size_tally(unsigned char **dest, void *src, size_t len)
{
state_size += len;
}
size_t rewind_state_size, cur_zst_size, old_zst_size;
void calculate_state_sizes()
{
state_size = 0;
copy_state_data(StateBackup, state_size_tally, false);
rewind_state_size = state_size;
state_size = 0;
zst_version = 143;
copy_state_data(0, state_size_tally, false);
cur_zst_size = state_size + sizeof(zst_header_cur)-1;
state_size = 0;
zst_version = 60;
copy_state_data(0, state_size_tally, true);
old_zst_size = state_size + sizeof(zst_header_old)-1;
/*
printf("Rewind size: %u; ZST v1.43 size: %u; ZST v0.60 size: %u\n"
"ZST sizes with thumbnails. v1.43 size: %u; v0.60 size: %u\n",
rewind_state_size, cur_zst_size, old_zst_size,
cur_zst_size + 64*56*sizeof(unsigned short), old_zst_size + 64*56*sizeof(unsigned short));
*/
}
void PrepareOffset() void PrepareOffset()
{ {
Curtableaddr -= (unsigned int)tableA; Curtableaddr -= (unsigned int)tableA;
@@ -623,10 +655,10 @@ void statesaver()
if (cbitmode && !NoPictureSave) if (cbitmode && !NoPictureSave)
{ {
CapturePicture(); CapturePicture();
fwrite(PrevPicture, 1, 64*56*2, fhandle); fwrite(PrevPicture, 1, 64*56*sizeof(unsigned short), fhandle);
} }
fclose (fhandle); fclose(fhandle);
//Display message on the screen, 'STATE X SAVED.' //Display message on the screen, 'STATE X SAVED.'
if (fnamest[statefileloc] == 't') if (fnamest[statefileloc] == 't')

View File

@@ -132,6 +132,8 @@ EXTSYM IntlEHi
EXTSYM CHIPBATT,SFXEnable,C4Enable,SPC7110Enable,RTCEnable,SA1Enable,SDD1Enable,OBCEnable EXTSYM CHIPBATT,SFXEnable,C4Enable,SPC7110Enable,RTCEnable,SA1Enable,SDD1Enable,OBCEnable
EXTSYM SETAEnable,ST18Enable,SGBEnable,DSP1Enable,DSP2Enable,DSP3Enable,DSP4Enable,BSEnable EXTSYM SETAEnable,ST18Enable,SGBEnable,DSP1Enable,DSP2Enable,DSP3Enable,DSP4Enable,BSEnable
EXTSYM calculate_state_sizes
EXTSYM SetaCmdEnable,setaramdata EXTSYM SetaCmdEnable,setaramdata
EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a EXTSYM setaaccessbankr8,setaaccessbankw8,setaaccessbankr8a,setaaccessbankw8a
EXTSYM setaaccessbankr16,setaaccessbankw16,setaaccessbankr16a,setaaccessbankw16a EXTSYM setaaccessbankr16,setaaccessbankw16,setaaccessbankr16a,setaaccessbankw16a
@@ -3166,6 +3168,7 @@ NEWSYM SetupROM
mov [curromsize],cl mov [curromsize],cl
pushad pushad
call SetupSramSize call SetupSramSize
call calculate_state_sizes
popad popad
; get pal/ntsc ; get pal/ntsc
@@ -3200,9 +3203,6 @@ NEWSYM SetupROM
NEWSYM CheckROMType NEWSYM CheckROMType
pushad pushad
call BankCheck call BankCheck
popad
pushad
call MirrorROM call MirrorROM
popad popad

View File

@@ -67,6 +67,8 @@ EXTSYM vidbufferofsb
;EXTSYM Super2xSaI ;EXTSYM Super2xSaI
EXTSYM HalfTransB,HalfTransC EXTSYM HalfTransB,HalfTransC
EXTSYM cur_zst_size,old_zst_size
%ifdef __MSDOS__ %ifdef __MSDOS__
EXTSYM SB_blank EXTSYM SB_blank
%endif %endif
@@ -1306,18 +1308,18 @@ GetPicture:
call File_Seek_End call File_Seek_End
shl edx,16 shl edx,16
mov dx,ax mov dx,ax
;Just draw! - If you want to make it exact, you set all the sizes push eax
;cmp edx,266879+64*56*2 sub edx,64*56*2 ;Size of thumbnail
;je .draw mov eax,[cur_zst_size]
;cmp edx,398643+64*56*2 cmp edx,eax
;je .draw je .draw
;cmp edx,400692+64*56*2 mov eax,[old_zst_size]
;je .draw cmp edx,eax
;cmp edx,275071+64*56*2 je .draw
;je .draw pop eax
;jmp .nodraw jmp .nodraw
;.draw .draw
sub edx,64*56*2 pop eax
mov ax,dx mov ax,dx
shr edx,16 shr edx,16
mov cx,dx mov cx,dx