EmuSpeed setting saved in config file and bound to current code... fastmotion is a bit overpowered. -_-;

This commit is contained in:
grinvader
2005-05-18 00:36:00 +00:00
parent 9f4b0dc525
commit 190760d337
5 changed files with 59 additions and 45 deletions

View File

@@ -111,7 +111,7 @@ extern unsigned int newengen;
extern char SRAMDrive[2]; extern char SRAMDrive[2];
extern unsigned char DontSavePath; extern unsigned char DontSavePath;
extern unsigned char guioff; extern unsigned char guioff;
extern unsigned int frameskip; extern unsigned char frameskip;
extern unsigned char enterpress; extern unsigned char enterpress;
extern unsigned char cvidmode; extern unsigned char cvidmode;
extern unsigned char antienab; extern unsigned char antienab;
@@ -362,16 +362,16 @@ void DOScreatenewcfg()
{ {
char buffer[4096]; char buffer[4096];
FILE *fp = 0; FILE *fp = 0;
if (cfgdontsave == 1) if (cfgdontsave == 1)
{ {
return; return;
} }
#ifdef __LINUX__ #ifdef __LINUX__
chdir(zcfgdir); chdir(zcfgdir);
#endif #endif
fp = fopen(CMDLineStr, "wb"); fp = fopen(CMDLineStr, "wb");
if (!fp) if (!fp)
{ {
@@ -490,7 +490,7 @@ void DOScreatenewcfg()
WRITE_LINE("; Sound Sampling Rate\r\n"); WRITE_LINE("; Sound Sampling Rate\r\n");
WRITE_LINE("; 0 = 8,000 Hz, 1 = 11,025 Hz, 2 = 22,050 Hz\r\n"); WRITE_LINE("; 0 = 8,000 Hz, 1 = 11,025 Hz, 2 = 22,050 Hz\r\n");
WRITE_LINE("; 3 = 44,100 Hz, 4 = 16,000 Hz, 5 = 32,000 Hz\r\n"); WRITE_LINE("; 3 = 44,100 Hz, 4 = 16,000 Hz, 5 = 32,000 Hz\r\n");
WRITE_LINE("; 6 = 48,000 Hz\r\n\r\n"); WRITE_LINE("; 6 = 48,000 Hz\r\n\r\n");
sprintf(buffer, "SoundRate = %d\r\n\r\n", cfgSoundQuality); sprintf(buffer, "SoundRate = %d\r\n\r\n", cfgSoundQuality);
SAVE_LINE(buffer); SAVE_LINE(buffer);
@@ -617,7 +617,7 @@ void getcfg()
char temp; char temp;
unsigned char no_save = 0; unsigned char no_save = 0;
_forceauto = 0; _forceauto = 0;
//open file //open file
ZOpenFileName = CMDLineStr; ZOpenFileName = CMDLineStr;
ZOpenMode = 0; ZOpenMode = 0;
@@ -706,7 +706,7 @@ void getcfg()
#ifndef __LINUX__ #ifndef __LINUX__
if (temp >= 'a' && temp <= 'z') if (temp >= 'a' && temp <= 'z')
temp -= ('a' - 'A'); temp -= ('a' - 'A');
#endif #endif
_usespace = 1; _usespace = 1;
_stringb[j] = temp; _stringb[j] = temp;
_strlenb++; _strlenb++;
@@ -1248,7 +1248,7 @@ void getcfg()
{ {
if (_strlenb >= 3) if (_strlenb >= 3)
{ {
#ifndef __LINUX__ #ifndef __LINUX__
if (_stringb[1] == ':' && _stringb[2] == '\\') if (_stringb[1] == ':' && _stringb[2] == '\\')
{ {
cfgloadgdir = 1; cfgloadgdir = 1;
@@ -1262,7 +1262,7 @@ void getcfg()
strncpy(LoadDir, _stringb, _strlenb); strncpy(LoadDir, _stringb, _strlenb);
LoadDir[_strlenb] = '\0'; LoadDir[_strlenb] = '\0';
#endif #endif
strcpy(LoadDirB, LoadDir); strcpy(LoadDirB, LoadDir);
#ifndef __LINUX__ #ifndef __LINUX__
} }

View File

@@ -105,7 +105,7 @@ EXTSYM JoyMaxX209,JoyMinY209,JoyMaxY209,GetCoords,GetCoords3,MultiTap,SFXEnable
EXTSYM RestoreSystemVars,GUIBIFIL,GUIHQ2X,GUIHQ3X,GUIHQ4X,firstsaveinc,nssdip1 EXTSYM RestoreSystemVars,GUIBIFIL,GUIHQ2X,GUIHQ3X,GUIHQ4X,firstsaveinc,nssdip1
EXTSYM nssdip2,nssdip3,nssdip4,nssdip5,nssdip6,SkipMovie,MovieStop,MoviePlay EXTSYM nssdip2,nssdip3,nssdip4,nssdip5,nssdip6,SkipMovie,MovieStop,MoviePlay
EXTSYM MovieRecord,MovieInsertChapter,MovieSeekAhead,MovieSeekBehind EXTSYM MovieRecord,MovieInsertChapter,MovieSeekAhead,MovieSeekBehind
EXTSYM ResetDuringMovie,MovieDumpRaw,EmuSpeed EXTSYM ResetDuringMovie,MovieDumpRaw
%ifdef __LINUX__ %ifdef __LINUX__
EXTSYM numlockptr EXTSYM numlockptr
@@ -604,6 +604,7 @@ NEWSYM INCRFrameKey, dd 0
NEWSYM PauseLoad, db 0 NEWSYM PauseLoad, db 0
NEWSYM PauseRewind, db 0 NEWSYM PauseRewind, db 0
NEWSYM KeyResetSpeed, dd 0 NEWSYM KeyResetSpeed, dd 0
NEWSYM EmuSpeed, db 29 ; 29 = 1x, 0 = /30 and 58 = 30x
;end NEWSYM end ;end NEWSYM end
GUIsave equ $-GUIRAdd GUIsave equ $-GUIRAdd

View File

@@ -3062,7 +3062,7 @@ DisplayGUISearch:
; ret ; ret
;; DrawGUIButton 13,197,30,239,41,GUICSrcText8+2,40,0,0 ;; DrawGUIButton 13,197,30,239,41,GUICSrcText8+2,40,0,0
; ret ; ret
.startcheat ; Start .startcheat ; Start
cmp byte[CheatWinMode],1 ; Determine which CS window we're on cmp byte[CheatWinMode],1 ; Determine which CS window we're on
je near Incheatmode je near Incheatmode
@@ -3073,8 +3073,8 @@ DisplayGUISearch:
mov dword[GUIwinsizex+13*4],170 mov dword[GUIwinsizex+13*4],170
mov dword[GUIwinsizey+13*4],150 mov dword[GUIwinsizey+13*4],150
call DrawWindowSearch call DrawWindowSearch
mov al,[GUIWincol] ; Yellow Shadow mov al,[GUIWincol] ; Yellow Shadow
mov byte[GUItextcolor],al mov byte[GUItextcolor],al
GUIOuttextwin2 13,6,16,GUICSrcText1 GUIOuttextwin2 13,6,16,GUICSrcText1
@@ -3101,28 +3101,28 @@ DisplayGUISearch:
TextWindowMacro 13,25,85,GUICSrcText7 TextWindowMacro 13,25,85,GUICSrcText7
TextWindowMacro 13,25,115,GUICSrcText9 TextWindowMacro 13,25,115,GUICSrcText9
TextWindowMacro 13,25,125,GUICSrcTextA TextWindowMacro 13,25,125,GUICSrcTextA
DrawGUIButton 13,95,140,140,152,GUICSrcTextB,50,0,1 ; Button DrawGUIButton 13,95,140,140,152,GUICSrcTextB,50,0,1 ; Button
GUIDisplayButtonHole 13,11,28,byte[CheatSrcByteSize],0 ; Ratio Buttons GUIDisplayButtonHole 13,11,28,byte[CheatSrcByteSize],0 ; Ratio Buttons
GUIDisplayButtonHole 13,11,38,byte[CheatSrcByteSize],1 GUIDisplayButtonHole 13,11,38,byte[CheatSrcByteSize],1
GUIDisplayButtonHole 13,11,48,byte[CheatSrcByteSize],2 GUIDisplayButtonHole 13,11,48,byte[CheatSrcByteSize],2
GUIDisplayButtonHole 13,11,58,byte[CheatSrcByteSize],3 GUIDisplayButtonHole 13,11,58,byte[CheatSrcByteSize],3
GUIDisplayButtonHole 13,11,73,byte[CheatSrcByteBase],0 GUIDisplayButtonHole 13,11,73,byte[CheatSrcByteBase],0
GUIDisplayButtonHole 13,11,83,byte[CheatSrcByteBase],1 GUIDisplayButtonHole 13,11,83,byte[CheatSrcByteBase],1
GUIDisplayButtonHole 13,11,113,byte[CheatSrcSearchType],0 GUIDisplayButtonHole 13,11,113,byte[CheatSrcSearchType],0
GUIDisplayButtonHole 13,11,123,byte[CheatSrcSearchType],1 GUIDisplayButtonHole 13,11,123,byte[CheatSrcSearchType],1
ret ret
Incheatmode: ; Return and Re-search Incheatmode: ; Return and Re-search
mov dword[GUIwinsizex+13*4],180 mov dword[GUIwinsizex+13*4],180
mov dword[GUIwinsizey+13*4],150 mov dword[GUIwinsizey+13*4],150
call DrawWindowSearch call DrawWindowSearch
mov byte[GUItextcolor],217 ; Text And Shadow mov byte[GUItextcolor],217 ; Text And Shadow
cmp byte[GUIWincoladd],0 cmp byte[GUIWincoladd],0
je .zero2 je .zero2
@@ -3135,15 +3135,15 @@ Incheatmode: ; Return and Re-search
TextWindowMacro 13,5,40,GUICSrcTextO TextWindowMacro 13,5,40,GUICSrcTextO
TextWindowMacro 13,5,50,GUICSrcTextP TextWindowMacro 13,5,50,GUICSrcTextP
jmp DisplayChtSrcRes.nosearch jmp DisplayChtSrcRes.nosearch
CheatSearching: ; Exact Value Search CheatSearching: ; Exact Value Search
cmp byte[CheatSrcSearchType],1 cmp byte[CheatSrcSearchType],1
je near CheatSearchingComp je near CheatSearchingComp
TextWindowMacro 13,5,20,GUICSrcTextD ; Text (setup?) TextWindowMacro 13,5,20,GUICSrcTextD ; Text (setup?)
DrawGUIWinBox 13,10,40,80,47,167 ; Input Box DrawGUIWinBox 13,10,40,80,47,167 ; Input Box
mov dword[GUIWincol],148+10 ; Draw border mov dword[GUIWincol],148+10 ; Draw border
cmp byte[cwindrawn],1 cmp byte[cwindrawn],1
@@ -3178,7 +3178,7 @@ CheatSearching: ; Exact Value Search
mov byte[GUItextcolor],202 ; Alt Color mov byte[GUItextcolor],202 ; Alt Color
.notdark .notdark
GUIOuttextwin2 13,13,42,CSInputDisplay GUIOuttextwin2 13,13,42,CSInputDisplay
mov byte[GUItextcolor],221 ; Green Text mov byte[GUItextcolor],221 ; Green Text
cmp byte[GUIWincoladd],0 cmp byte[GUIWincoladd],0
je .zero4 je .zero4
@@ -3189,7 +3189,7 @@ CheatSearching: ; Exact Value Search
mov byte[GUItextcolor],207 ; Alt Color mov byte[GUItextcolor],207 ; Alt Color
.notdark2 .notdark2
GUIOuttextwin2 13,12,41,CSInputDisplay GUIOuttextwin2 13,12,41,CSInputDisplay
mov byte[GUItextcolor],217 ; More Text mov byte[GUItextcolor],217 ; More Text
cmp byte[GUIWincoladd],0 cmp byte[GUIWincoladd],0
je .zero2 je .zero2
@@ -6315,17 +6315,18 @@ DisplayGUISpeed: ;Speed Options
mov dword[GUITemp],GUIIconDataCheckBoxC mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox .nocheckbox
GUIDisplayIconWin 21,11,165,[GUITemp] GUIDisplayIconWin 21,11,165,[GUITemp]
mov dword[GUITemp],GUIIconDataCheckBoxUC mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[FastFwdToggle],0 cmp byte[FastFwdToggle],0
je .nocheckbox1 je .nocheckbox1
mov dword[GUITemp],GUIIconDataCheckBoxC mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckbox1 .nocheckbox1
GUIDisplayIconWin 21,11,175,[GUITemp] GUIDisplayIconWin 21,11,175,[GUITemp]
mov eax,dword[GUIwinposx+21*4] ;Slider mov eax,dword[GUIwinposx+21*4] ;Slider
mov ebx,dword[GUIwinposy+21*4] mov ebx,dword[GUIwinposy+21*4]
add eax,15
add ebx,31 add ebx,31
mov ecx,eax mov ecx,eax
add ecx,116 add ecx,116
@@ -6385,11 +6386,11 @@ DisplayGUISpeed: ;Speed Options
mov byte[GUItextcolor],222 mov byte[GUItextcolor],222
.zero4 .zero4
GUIOuttextwin2 21,77,18,[GUITemp] GUIOuttextwin2 21,77,18,[GUITemp]
cmp byte[frameskip],0 ; Determine if AutoFR is enabled cmp byte[frameskip],0 ; Determine if AutoFR is enabled
je near .auto je near .auto
DrawGUIWinBox 21,75,42,93,49,167 ; Frameskip (if not AutoFR) DrawGUIWinBox 21,75,42,93,49,167 ; Frameskip (if not AutoFR)
mov al,[frameskip] mov al,[frameskip]
add al,47 add al,47
@@ -6409,7 +6410,7 @@ DisplayGUISpeed: ;Speed Options
.zero6 .zero6
DrawGUIButton 21,97,42,105,50,GUISpeedTextY,12,-2,-1 DrawGUIButton 21,97,42,105,50,GUISpeedTextY,12,-2,-1
DrawGUIButton 21,108,42,116,50,GUISpeedTextZ,13,-2,-1 DrawGUIButton 21,108,42,116,50,GUISpeedTextZ,13,-2,-1
mov dword[GUIWincol],148+10 ; Draw borders mov dword[GUIWincol],148+10 ; Draw borders
cmp byte[cwindrawn],1 cmp byte[cwindrawn],1
jne .noone2 jne .noone2
@@ -6432,7 +6433,7 @@ DisplayGUISpeed: ;Speed Options
DrawGUIWinBox 21,95,42,94,49,dl DrawGUIWinBox 21,95,42,94,49,dl
ret ret
.auto ; Max Frameskip (if AutoFR) .auto ; Max Frameskip (if AutoFR)
DrawGUIWinBox 21,96,42,114,49,167 DrawGUIWinBox 21,96,42,114,49,167
mov al,[maxskip] mov al,[maxskip]
@@ -6453,7 +6454,7 @@ DisplayGUISpeed: ;Speed Options
.zero7 .zero7
DrawGUIButton 21,118,42,126,50,GUISpeedTextY,12,-2,-1 DrawGUIButton 21,118,42,126,50,GUISpeedTextY,12,-2,-1
DrawGUIButton 21,129,42,137,50,GUISpeedTextZ,13,-2,-1 DrawGUIButton 21,129,42,137,50,GUISpeedTextZ,13,-2,-1
mov dword[GUIWincol],148+10 ; Draw borders mov dword[GUIWincol],148+10 ; Draw borders
cmp byte[cwindrawn],1 cmp byte[cwindrawn],1
jne .noone3 jne .noone3

View File

@@ -136,11 +136,10 @@ unsigned char DisplayS = 0;
unsigned char SPC700sh = 0; unsigned char SPC700sh = 0;
unsigned char OffBy1Line = 0; unsigned char OffBy1Line = 0;
unsigned char *spc7110romptr; unsigned char *spc7110romptr;
unsigned char MusicRelVol = 75; unsigned char MusicRelVol = 75;
unsigned char MusicVol = 0; unsigned char MusicVol = 0;
unsigned char MMXextSupport = 0; unsigned char MMXextSupport = 0;
unsigned char EmuSpeed = 29; // 29 = 1x, 0 = /30 and 58 = 30x
void outofmemory(); void outofmemory();
void init(); void init();
@@ -157,7 +156,7 @@ void *doMemAlloc(size_t size)
void *ptr = NULL; void *ptr = NULL;
ptr = malloc(size); ptr = malloc(size);
if (!ptr) if (!ptr)
{ {
asm_call(outofmemory); asm_call(outofmemory);
} }
return(ptr); return(ptr);

View File

@@ -49,7 +49,7 @@ EXTSYM oamram,objhipr,objptr,objptrn,objsize1,objsize2,spritetablea,sprleftpr
EXTSYM sprlefttot,vcache4b,objadds1,objadds2,objmovs1,objmovs2,tltype4b EXTSYM sprlefttot,vcache4b,objadds1,objadds2,objmovs1,objmovs2,tltype4b
EXTSYM vidmemch4,vram,bgptr,bgptrc,bgptrd,curtileptr,vcache2b,vcache8b,vidmemch8 EXTSYM vidmemch4,vram,bgptr,bgptrc,bgptrd,curtileptr,vcache2b,vcache8b,vidmemch8
EXTSYM offsetmshl,NextLineCache,tltype2b,tltype8b,objwlrpos,snesinputdefault EXTSYM offsetmshl,NextLineCache,tltype2b,tltype8b,objwlrpos,snesinputdefault
EXTSYM cycleinputdevice,Change_Dir,LoadDrive,LoadDir EXTSYM cycleinputdevice,Change_Dir,LoadDrive,LoadDir,EmuSpeed
; Process stuff & Cache sprites ; Process stuff & Cache sprites
@@ -303,6 +303,7 @@ NEWSYM cachevideo
mov dword[sramb4save],0 mov dword[sramb4save],0
.nofocussave .nofocussave
; fast forward goes over all other throttles
cmp byte[FastFwdToggle],0 cmp byte[FastFwdToggle],0
jne .ffmode2 jne .ffmode2
mov eax,[KeyFastFrwrd] mov eax,[KeyFastFrwrd]
@@ -319,7 +320,7 @@ NEWSYM cachevideo
cmp byte[FastForwardLock],1 cmp byte[FastForwardLock],1
je near .fastfor je near .fastfor
.ffskip .ffskip
; next up, check for slowdown
cmp byte[FastFwdToggle],0 cmp byte[FastFwdToggle],0
jne .sdmode2 jne .sdmode2
mov eax,[KeySlowDown] mov eax,[KeySlowDown]
@@ -337,13 +338,25 @@ NEWSYM cachevideo
je near .slowdwn je near .slowdwn
jmp .sdskip jmp .sdskip
.slowdwn .slowdwn
mov byte[SloMo],1 ; hardcoded 50% slowdown mov byte[SloMo],1 ; hardcoded /2 slowdown (for now)
jmp .skipnoslowdown jmp .throttleskip
.sdskip .sdskip
mov byte[SloMo],0 mov byte[SloMo],0
.skipnoslowdown ; now we can look at emuspeed
cmp byte[EmuSpeed],30 ; 0-28 slow, 29 normal, 30-58 skip
jb .noskipping
inc byte[frskipper]
push ebx
mov bl,[EmuSpeed]
sub bl,29 ; 30-58 -> 1-29 frames to skip, 2x-30x speed
jmp .fastforb
.noskipping
mov byte[SloMo],29
mov al,[EmuSpeed]
sub byte[SloMo],al ; 0-29 -> repeat 29-0 times, /30-1x speed
.throttleskip
mov ax,[SloMo] mov ax,[SloMo]
inc ax ; total times frame is drawn inc ax ; total times frame is drawn
cmp byte[frameskip],0 cmp byte[frameskip],0
jne near .frameskip jne near .frameskip
@@ -373,7 +386,7 @@ NEWSYM cachevideo
.fastfor .fastfor
inc byte[frskipper] inc byte[frskipper]
push ebx push ebx
mov bl,10 ; hardcoded number of frames to skip mov bl,10 ; hardcoded 11x fastforward (for now)
jmp .fastforb jmp .fastforb
.frameskip .frameskip
inc byte[frskipper] inc byte[frskipper]