EmuSpeed setting saved in config file and bound to current code... fastmotion is a bit overpowered. -_-;
This commit is contained in:
@@ -111,7 +111,7 @@ extern unsigned int newengen;
|
||||
extern char SRAMDrive[2];
|
||||
extern unsigned char DontSavePath;
|
||||
extern unsigned char guioff;
|
||||
extern unsigned int frameskip;
|
||||
extern unsigned char frameskip;
|
||||
extern unsigned char enterpress;
|
||||
extern unsigned char cvidmode;
|
||||
extern unsigned char antienab;
|
||||
@@ -362,16 +362,16 @@ void DOScreatenewcfg()
|
||||
{
|
||||
char buffer[4096];
|
||||
FILE *fp = 0;
|
||||
|
||||
|
||||
if (cfgdontsave == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef __LINUX__
|
||||
#ifdef __LINUX__
|
||||
chdir(zcfgdir);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
fp = fopen(CMDLineStr, "wb");
|
||||
if (!fp)
|
||||
{
|
||||
@@ -490,7 +490,7 @@ void DOScreatenewcfg()
|
||||
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("; 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);
|
||||
SAVE_LINE(buffer);
|
||||
@@ -617,7 +617,7 @@ void getcfg()
|
||||
char temp;
|
||||
unsigned char no_save = 0;
|
||||
_forceauto = 0;
|
||||
|
||||
|
||||
//open file
|
||||
ZOpenFileName = CMDLineStr;
|
||||
ZOpenMode = 0;
|
||||
@@ -706,7 +706,7 @@ void getcfg()
|
||||
#ifndef __LINUX__
|
||||
if (temp >= 'a' && temp <= 'z')
|
||||
temp -= ('a' - 'A');
|
||||
#endif
|
||||
#endif
|
||||
_usespace = 1;
|
||||
_stringb[j] = temp;
|
||||
_strlenb++;
|
||||
@@ -1248,7 +1248,7 @@ void getcfg()
|
||||
{
|
||||
if (_strlenb >= 3)
|
||||
{
|
||||
#ifndef __LINUX__
|
||||
#ifndef __LINUX__
|
||||
if (_stringb[1] == ':' && _stringb[2] == '\\')
|
||||
{
|
||||
cfgloadgdir = 1;
|
||||
@@ -1262,7 +1262,7 @@ void getcfg()
|
||||
strncpy(LoadDir, _stringb, _strlenb);
|
||||
LoadDir[_strlenb] = '\0';
|
||||
|
||||
#endif
|
||||
#endif
|
||||
strcpy(LoadDirB, LoadDir);
|
||||
#ifndef __LINUX__
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ EXTSYM JoyMaxX209,JoyMinY209,JoyMaxY209,GetCoords,GetCoords3,MultiTap,SFXEnable
|
||||
EXTSYM RestoreSystemVars,GUIBIFIL,GUIHQ2X,GUIHQ3X,GUIHQ4X,firstsaveinc,nssdip1
|
||||
EXTSYM nssdip2,nssdip3,nssdip4,nssdip5,nssdip6,SkipMovie,MovieStop,MoviePlay
|
||||
EXTSYM MovieRecord,MovieInsertChapter,MovieSeekAhead,MovieSeekBehind
|
||||
EXTSYM ResetDuringMovie,MovieDumpRaw,EmuSpeed
|
||||
EXTSYM ResetDuringMovie,MovieDumpRaw
|
||||
|
||||
%ifdef __LINUX__
|
||||
EXTSYM numlockptr
|
||||
@@ -604,6 +604,7 @@ NEWSYM INCRFrameKey, dd 0
|
||||
NEWSYM PauseLoad, db 0
|
||||
NEWSYM PauseRewind, db 0
|
||||
NEWSYM KeyResetSpeed, dd 0
|
||||
NEWSYM EmuSpeed, db 29 ; 29 = 1x, 0 = /30 and 58 = 30x
|
||||
;end NEWSYM end
|
||||
|
||||
GUIsave equ $-GUIRAdd
|
||||
|
||||
@@ -3062,7 +3062,7 @@ DisplayGUISearch:
|
||||
; ret
|
||||
;; DrawGUIButton 13,197,30,239,41,GUICSrcText8+2,40,0,0
|
||||
; ret
|
||||
|
||||
|
||||
.startcheat ; Start
|
||||
cmp byte[CheatWinMode],1 ; Determine which CS window we're on
|
||||
je near Incheatmode
|
||||
@@ -3073,8 +3073,8 @@ DisplayGUISearch:
|
||||
mov dword[GUIwinsizex+13*4],170
|
||||
mov dword[GUIwinsizey+13*4],150
|
||||
call DrawWindowSearch
|
||||
|
||||
|
||||
|
||||
|
||||
mov al,[GUIWincol] ; Yellow Shadow
|
||||
mov byte[GUItextcolor],al
|
||||
GUIOuttextwin2 13,6,16,GUICSrcText1
|
||||
@@ -3101,28 +3101,28 @@ DisplayGUISearch:
|
||||
TextWindowMacro 13,25,85,GUICSrcText7
|
||||
TextWindowMacro 13,25,115,GUICSrcText9
|
||||
TextWindowMacro 13,25,125,GUICSrcTextA
|
||||
|
||||
|
||||
|
||||
|
||||
DrawGUIButton 13,95,140,140,152,GUICSrcTextB,50,0,1 ; Button
|
||||
|
||||
|
||||
|
||||
|
||||
GUIDisplayButtonHole 13,11,28,byte[CheatSrcByteSize],0 ; Ratio Buttons
|
||||
GUIDisplayButtonHole 13,11,38,byte[CheatSrcByteSize],1
|
||||
GUIDisplayButtonHole 13,11,48,byte[CheatSrcByteSize],2
|
||||
GUIDisplayButtonHole 13,11,58,byte[CheatSrcByteSize],3
|
||||
|
||||
|
||||
GUIDisplayButtonHole 13,11,73,byte[CheatSrcByteBase],0
|
||||
GUIDisplayButtonHole 13,11,83,byte[CheatSrcByteBase],1
|
||||
|
||||
|
||||
GUIDisplayButtonHole 13,11,113,byte[CheatSrcSearchType],0
|
||||
GUIDisplayButtonHole 13,11,123,byte[CheatSrcSearchType],1
|
||||
ret
|
||||
|
||||
|
||||
Incheatmode: ; Return and Re-search
|
||||
mov dword[GUIwinsizex+13*4],180
|
||||
mov dword[GUIwinsizey+13*4],150
|
||||
call DrawWindowSearch
|
||||
|
||||
|
||||
mov byte[GUItextcolor],217 ; Text And Shadow
|
||||
cmp byte[GUIWincoladd],0
|
||||
je .zero2
|
||||
@@ -3135,15 +3135,15 @@ Incheatmode: ; Return and Re-search
|
||||
TextWindowMacro 13,5,40,GUICSrcTextO
|
||||
TextWindowMacro 13,5,50,GUICSrcTextP
|
||||
jmp DisplayChtSrcRes.nosearch
|
||||
|
||||
|
||||
CheatSearching: ; Exact Value Search
|
||||
cmp byte[CheatSrcSearchType],1
|
||||
je near CheatSearchingComp
|
||||
|
||||
TextWindowMacro 13,5,20,GUICSrcTextD ; Text (setup?)
|
||||
|
||||
|
||||
DrawGUIWinBox 13,10,40,80,47,167 ; Input Box
|
||||
|
||||
|
||||
|
||||
mov dword[GUIWincol],148+10 ; Draw border
|
||||
cmp byte[cwindrawn],1
|
||||
@@ -3178,7 +3178,7 @@ CheatSearching: ; Exact Value Search
|
||||
mov byte[GUItextcolor],202 ; Alt Color
|
||||
.notdark
|
||||
GUIOuttextwin2 13,13,42,CSInputDisplay
|
||||
|
||||
|
||||
mov byte[GUItextcolor],221 ; Green Text
|
||||
cmp byte[GUIWincoladd],0
|
||||
je .zero4
|
||||
@@ -3189,7 +3189,7 @@ CheatSearching: ; Exact Value Search
|
||||
mov byte[GUItextcolor],207 ; Alt Color
|
||||
.notdark2
|
||||
GUIOuttextwin2 13,12,41,CSInputDisplay
|
||||
|
||||
|
||||
mov byte[GUItextcolor],217 ; More Text
|
||||
cmp byte[GUIWincoladd],0
|
||||
je .zero2
|
||||
@@ -6315,17 +6315,18 @@ DisplayGUISpeed: ;Speed Options
|
||||
mov dword[GUITemp],GUIIconDataCheckBoxC
|
||||
.nocheckbox
|
||||
GUIDisplayIconWin 21,11,165,[GUITemp]
|
||||
|
||||
|
||||
mov dword[GUITemp],GUIIconDataCheckBoxUC
|
||||
cmp byte[FastFwdToggle],0
|
||||
je .nocheckbox1
|
||||
mov dword[GUITemp],GUIIconDataCheckBoxC
|
||||
.nocheckbox1
|
||||
GUIDisplayIconWin 21,11,175,[GUITemp]
|
||||
GUIDisplayIconWin 21,11,175,[GUITemp]
|
||||
|
||||
|
||||
mov eax,dword[GUIwinposx+21*4] ;Slider
|
||||
mov ebx,dword[GUIwinposy+21*4]
|
||||
add eax,15
|
||||
add ebx,31
|
||||
mov ecx,eax
|
||||
add ecx,116
|
||||
@@ -6385,11 +6386,11 @@ DisplayGUISpeed: ;Speed Options
|
||||
mov byte[GUItextcolor],222
|
||||
.zero4
|
||||
GUIOuttextwin2 21,77,18,[GUITemp]
|
||||
|
||||
|
||||
|
||||
|
||||
cmp byte[frameskip],0 ; Determine if AutoFR is enabled
|
||||
je near .auto
|
||||
|
||||
|
||||
DrawGUIWinBox 21,75,42,93,49,167 ; Frameskip (if not AutoFR)
|
||||
mov al,[frameskip]
|
||||
add al,47
|
||||
@@ -6409,7 +6410,7 @@ DisplayGUISpeed: ;Speed Options
|
||||
.zero6
|
||||
DrawGUIButton 21,97,42,105,50,GUISpeedTextY,12,-2,-1
|
||||
DrawGUIButton 21,108,42,116,50,GUISpeedTextZ,13,-2,-1
|
||||
|
||||
|
||||
mov dword[GUIWincol],148+10 ; Draw borders
|
||||
cmp byte[cwindrawn],1
|
||||
jne .noone2
|
||||
@@ -6432,7 +6433,7 @@ DisplayGUISpeed: ;Speed Options
|
||||
DrawGUIWinBox 21,95,42,94,49,dl
|
||||
ret
|
||||
|
||||
|
||||
|
||||
.auto ; Max Frameskip (if AutoFR)
|
||||
DrawGUIWinBox 21,96,42,114,49,167
|
||||
mov al,[maxskip]
|
||||
@@ -6453,7 +6454,7 @@ DisplayGUISpeed: ;Speed Options
|
||||
.zero7
|
||||
DrawGUIButton 21,118,42,126,50,GUISpeedTextY,12,-2,-1
|
||||
DrawGUIButton 21,129,42,137,50,GUISpeedTextZ,13,-2,-1
|
||||
|
||||
|
||||
mov dword[GUIWincol],148+10 ; Draw borders
|
||||
cmp byte[cwindrawn],1
|
||||
jne .noone3
|
||||
|
||||
@@ -136,11 +136,10 @@ unsigned char DisplayS = 0;
|
||||
unsigned char SPC700sh = 0;
|
||||
unsigned char OffBy1Line = 0;
|
||||
unsigned char *spc7110romptr;
|
||||
|
||||
|
||||
unsigned char MusicRelVol = 75;
|
||||
unsigned char MusicVol = 0;
|
||||
unsigned char MMXextSupport = 0;
|
||||
unsigned char EmuSpeed = 29; // 29 = 1x, 0 = /30 and 58 = 30x
|
||||
|
||||
void outofmemory();
|
||||
void init();
|
||||
@@ -157,7 +156,7 @@ void *doMemAlloc(size_t size)
|
||||
void *ptr = NULL;
|
||||
ptr = malloc(size);
|
||||
if (!ptr)
|
||||
{
|
||||
{
|
||||
asm_call(outofmemory);
|
||||
}
|
||||
return(ptr);
|
||||
|
||||
@@ -49,7 +49,7 @@ EXTSYM oamram,objhipr,objptr,objptrn,objsize1,objsize2,spritetablea,sprleftpr
|
||||
EXTSYM sprlefttot,vcache4b,objadds1,objadds2,objmovs1,objmovs2,tltype4b
|
||||
EXTSYM vidmemch4,vram,bgptr,bgptrc,bgptrd,curtileptr,vcache2b,vcache8b,vidmemch8
|
||||
EXTSYM offsetmshl,NextLineCache,tltype2b,tltype8b,objwlrpos,snesinputdefault
|
||||
EXTSYM cycleinputdevice,Change_Dir,LoadDrive,LoadDir
|
||||
EXTSYM cycleinputdevice,Change_Dir,LoadDrive,LoadDir,EmuSpeed
|
||||
|
||||
; Process stuff & Cache sprites
|
||||
|
||||
@@ -303,6 +303,7 @@ NEWSYM cachevideo
|
||||
mov dword[sramb4save],0
|
||||
.nofocussave
|
||||
|
||||
; fast forward goes over all other throttles
|
||||
cmp byte[FastFwdToggle],0
|
||||
jne .ffmode2
|
||||
mov eax,[KeyFastFrwrd]
|
||||
@@ -319,7 +320,7 @@ NEWSYM cachevideo
|
||||
cmp byte[FastForwardLock],1
|
||||
je near .fastfor
|
||||
.ffskip
|
||||
|
||||
; next up, check for slowdown
|
||||
cmp byte[FastFwdToggle],0
|
||||
jne .sdmode2
|
||||
mov eax,[KeySlowDown]
|
||||
@@ -337,13 +338,25 @@ NEWSYM cachevideo
|
||||
je near .slowdwn
|
||||
jmp .sdskip
|
||||
.slowdwn
|
||||
mov byte[SloMo],1 ; hardcoded 50% slowdown
|
||||
jmp .skipnoslowdown
|
||||
mov byte[SloMo],1 ; hardcoded /2 slowdown (for now)
|
||||
jmp .throttleskip
|
||||
.sdskip
|
||||
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]
|
||||
inc ax ; total times frame is drawn
|
||||
inc ax ; total times frame is drawn
|
||||
|
||||
cmp byte[frameskip],0
|
||||
jne near .frameskip
|
||||
@@ -373,7 +386,7 @@ NEWSYM cachevideo
|
||||
.fastfor
|
||||
inc byte[frskipper]
|
||||
push ebx
|
||||
mov bl,10 ; hardcoded number of frames to skip
|
||||
mov bl,10 ; hardcoded 11x fastforward (for now)
|
||||
jmp .fastforb
|
||||
.frameskip
|
||||
inc byte[frskipper]
|
||||
|
||||
Reference in New Issue
Block a user