A lot of updates

This commit is contained in:
pagefault
2003-03-16 23:40:07 +00:00
parent 2d67154926
commit 0480456f7d
25 changed files with 3225 additions and 3539 deletions

View File

@@ -55,7 +55,7 @@ WINDOSOBJ=${DOSDIR}/debug.o ${DOSDIR}/joy.o ${DOSDIR}/modemrtn.o ${DOSDIR}/vesa2
ZIPOBJ=${ZIPDIR}/zzip.o ${ZIPDIR}/unzip.o ${ZIPDIR}/zpng.o ZIPOBJ=${ZIPDIR}/zzip.o ${ZIPDIR}/unzip.o ${ZIPDIR}/zpng.o
MAINOBJ=cfgload.o endmem.o fixsin.o init.o ui.o vcache.o water.o smoke.o MAINOBJ=cfgload.o endmem.o fixsin.o init.o ui.o vcache.o water.o smoke.o burn.o
OBJS=${CHIPSOBJ} ${CPUOBJ} ${WINOBJ} ${WINDOSOBJ} ${GUIOBJ} ${VIDEOBJ} ${ZIPOBJ} ${MAINOBJ} OBJS=${CHIPSOBJ} ${CPUOBJ} ${WINOBJ} ${WINDOSOBJ} ${GUIOBJ} ${VIDEOBJ} ${ZIPOBJ} ${MAINOBJ}
@@ -78,6 +78,7 @@ ${ZIPDIR}/zzip.o: ${ZIPDIR}/zzip.c ${ZIPDIR}/zunzip.h
fixsin.o: fixsin.c fixsin.o: fixsin.c
water.o: water.c water.o: water.c
smoke.o: smoke.c smoke.o: smoke.c
burn.o: burn.c
${VIDEODIR}/procvid.o: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xsaimmx.inc ${VIDEODIR}/procvid.o: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xsaimmx.inc
${CHIPDIR}/dsp1proc.o: ${CHIPDIR}/dsp1proc.asm macros.mac ${CHIPDIR}/dsp1proc.o: ${CHIPDIR}/dsp1proc.asm macros.mac
${CHIPDIR}/sa1regs.o: ${CHIPDIR}/sa1regs.asm macros.mac\ ${CHIPDIR}/sa1regs.o: ${CHIPDIR}/sa1regs.asm macros.mac\

302
zsnes/src/burn.c Normal file
View File

@@ -0,0 +1,302 @@
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#ifndef M_PI
#ifndef PI
#define M_PI 3.1415926535897932384626433832795
#else
#define M_PI PI
#endif
#endif
/*
Hi guys, try this, use it in your code, but please credit
Frank Jan Sorensen Alias:Frank Patxi (fjs@lab.jt.dk) for the
fireroutine.
*/
/*
Hi again, guys!
If you use this code, please also credit me, Joachim Fenkes, 'cause I added
the following speedups:
-Replaced one tiny loop with a faster Move(...) (not much speedup)
-Wrote the main display loop in 100% assembler, including a faster random
number generator (the RNG is only a more or less optimized version of
Borland's generator (see MEGARAND.ASM), but with the advantage of the
ultimate crash if you call it normally :-)
-Changed version number into 1.10 (this isn't a speedup, but necessary :-)
*/
/*
Bcoz of the knowledge that reading from videocards is much slower than
writing to them, I changed some things to write and read from/to a pointer
and put the result with 32-Bit moves to the screen
Also I added now a much more faster randommer.
The result of this change is more than 3 times fast than before
Stefan Goehler
Please credit me!
...
to JF: your bug is fixed!
*/
/*
Oops, silly me, I removed all of the assembly code, so I can let the compiler
have at it. Also makes it more portable... even though I am doing this to add
to a project that is very non-portable.
*/
#define BUF_WIDTH 288
#define BUF_HEIGHT 224
const int rootrand = 20; /* Max/Min decrease of the root of the flames */
const int decay = 5; /* How far should the flames go up on the screen? */
/* This MUST be positive - JF */
const int miny = 0; /* Startingline of the flame routine.
(should be adjusted along with MinY above) */
const int smooth = 1; /* How descrete can the flames be?*/
const int minfire = 50; /* limit between the "starting to burn" and
the "is burning" routines */
const int xstart = 0; /* Startingpos on the screen, should be divideable by 4 without remain!*/
const int xend = 287; /* Guess! */
const int width = 1 + 287; /* +xend-xstart; Well- */
const int maxcolor = 110; /* Constant for the MakePal procedure */
const int fireincrease = 3; /*3 = Wood, 90 = Gazolin*/
typedef struct colorvalue
{
unsigned char r, g, b;
} colorvalue;
typedef colorvalue vgapalettetype[256];
void hsi2rgb(double h, double s, double i, struct colorvalue *c)
/*Convert (Hue, Saturation, Intensity) -> (RGB)*/
{
double t;
double rv, gv, bv;
t = h;
rv = 1 + s * sin(t - 2 * M_PI / 3);
gv = 1 + s * sin(t);
bv = 1 + s * sin(t + 2 * M_PI / 3);
t = 255.999 * i / 2;
{
c->r = floor(rv * t);
c->g = floor(gv * t);
c->b = floor(bv * t);
}
}
void genpal()
{
int i;
vgapalettetype pal;
memset(pal, 0, 3);
for( i=1; i <= maxcolor; i ++)
hsi2rgb(4.6-1.5*i/maxcolor,(double)(i)/maxcolor,(double)(i)/maxcolor,&pal[i]);
for( i=maxcolor; i <= 255; i ++)
{
pal[i]=pal[i-1];
{
struct colorvalue *with = &pal[i];
if (with->r<255) with->r += 1;
if (with->r<255) with->r += 1;
if ((~i & 1) && (with->g<215)) with->g += 1;
if ((~i & 1) && (with->b<255)) with->b += 1;
}
}
}
int started = 0;
#if 0 // emulating Turbo Pascal
unsigned int randseed;
const unsigned modulus = 2147483647;
const unsigned factor = 397204094;
void Randomize()
{
randseed = time(NULL);
}
unsigned int randint(unsigned range)
{
randseed = randseed * factor % modulus;
return range ? randseed % range : 0;
}
double randreal()
{
randseed = randseed * factor % modulus;
return (double)randseed / modulus;
}
int rand1(int r) /* Return a random number between -R And R*/
{
int result;
result=randint(r*2+1)-r;
return result;
}
#else
#define Randomize()
#define randint(a) (rand() % (a))
#define randreal() (((double)rand()) / ((double)RAND_MAX))
#define rand1(a) ((randint(a*2+1))-a)
#endif
unsigned char flamearray[BUF_WIDTH];
int morefire;
extern unsigned char *vidbuffer;
/* damn, this seems like such a waste */
static unsigned char pt[BUF_WIDTH * BUF_HEIGHT];
#if 0
int burn_init()
{
int i;
if (flamearray) return 1;
flamearray = (unsigned char *) malloc(BUF_WIDTH);
for( i=xstart; i <= xend; i++)
flamearray[i]=0;
Randomize();
morefire=1;
genpal();
return 0;
}
void burn_shutdown()
{
if (flamearray)
{
free(flamearray);
flamearray = NULL;
}
}
#endif
void DrawBurn()
{
int i,j;
int x,p;
int v;
if (!started)
{
started = 1;
for( i=xstart; i <= xend; i++)
flamearray[i]=0;
Randomize();
morefire=1;
memset(pt, 0, BUF_HEIGHT * BUF_WIDTH);
/* genpal(); */
}
/*
for (x=0; x < BUF_WIDTH*BUF_HEIGHT; x++)
{
i = pt[x];
j = vidbuffer[x] << 2;
if (i > j) pt[x] = i;
else pt[x] = (i + j) >> 1;
}
*/
/* Put the values from FlameArray on the bottom line of the screen */
memcpy(pt+((BUF_HEIGHT-1)*BUF_WIDTH)+xstart,flamearray, width);
/* This loop makes the actual flames */
for( i=xstart; i <= xend; i++)
for( j=miny; j <= (BUF_HEIGHT-1); j ++)
{
v = pt[j*BUF_WIDTH + i];
if ((v==0) ||
(v<decay) ||
(i<=xstart) ||
(i>=xend))
pt[(j-1)*BUF_WIDTH + i] = 0;
else
pt[((j-1)*BUF_WIDTH) + (i-(randint(3)-1))] = v - randint(decay);
}
/*Match?*/
if (randint(150)==0)
memset(flamearray + xstart + randint(xend-xstart-5),255,5);
/*This loop controls the "root" of the
flames ie. the values in FlameArray.*/
for( i=xstart; i <= xend; i++)
{
x=flamearray[i];
if (x<minfire) /* Increase by the "burnability"*/
{
/*Starting to burn:*/
if (x>10) x += randint(fireincrease);
}
else
/* Otherwise randomize and increase by intensity (is burning)*/
x += rand1(rootrand)+morefire;
if (x>255) x=255; /* X Too large ?*/
flamearray[i]=x;
}
/* Pour a little water on both sides of
the fire to make it look nice on the sides*/
/*
for( i=1; i <= width / 8; i ++)
{
x=floor(sqrt(randreal())*width/8);
flamearray[xstart+x]=0;
flamearray[xend-x]=0;
}
*/
/*Smoothen the values of FrameArray to avoid "descrete" flames*/
p=0;
for( i=xstart+smooth; i <= xend-smooth; i++)
{
x=0;
for( j=-smooth; j <= smooth; j++) x += flamearray[i+j];
flamearray[i] = x / ((smooth << 1) + 1);
}
for (x=0; x < BUF_WIDTH*BUF_HEIGHT; x++)
{
i = vidbuffer[x];
j = pt[x] >> 3;
if (j > i) vidbuffer[x] = j;
else vidbuffer[x] = ((i + j) >> 1) + 1;
}
}

View File

@@ -21,7 +21,7 @@ EXTSYM BRRPlace0,BRRPlace1,BRRPlace2,BRRPlace3,BRRPlace4,BRRPlace5,BRRPlace6
EXTSYM BRRPlace7,Decrease,DecreaseRateExp,EchoFB,EchoRate,EchoVL,EchoVR EXTSYM BRRPlace7,Decrease,DecreaseRateExp,EchoFB,EchoRate,EchoVL,EchoVR
EXTSYM FIRTAPVal0,FIRTAPVal1,FIRTAPVal2,FIRTAPVal3,FIRTAPVal4,FIRTAPVal5 EXTSYM FIRTAPVal0,FIRTAPVal1,FIRTAPVal2,FIRTAPVal3,FIRTAPVal4,FIRTAPVal5
EXTSYM FIRTAPVal6,FIRTAPVal7,GlobalVL,GlobalVR,Increase,IncreaseBent EXTSYM FIRTAPVal6,FIRTAPVal7,GlobalVL,GlobalVR,Increase,IncreaseBent
EXTSYM MaxEcho,MusicVol,NoiseInc,NoiseSpeeds,SBToSPC,Voice0End,Voice0EnvInc EXTSYM MaxEcho,MusicVol,NoiseInc,NoiseSpeeds,dspPAdj,Voice0End,Voice0EnvInc
EXTSYM Voice0IncNumber,Voice0Loop,Voice0Noise,Voice0Prev0,Voice0Prev1 EXTSYM Voice0IncNumber,Voice0Loop,Voice0Noise,Voice0Prev0,Voice0Prev1
EXTSYM Voice0Start,Voice0State,Voice0Status,Voice0Time,Voice1End,Voice1Noise EXTSYM Voice0Start,Voice0State,Voice0Status,Voice0Time,Voice1End,Voice1Noise
EXTSYM Voice1Prev0,Voice1Prev1,Voice1Start,Voice2End,Voice2Noise,Voice2Prev0 EXTSYM Voice1Prev0,Voice1Prev1,Voice1Start,Voice2End,Voice2Noise,Voice2Prev0
@@ -47,7 +47,9 @@ NEWSYM DspAsmStart
;none times 256 db 0 ;none times 256 db 0
SECTION .data
identcode db 255,1,78,78 identcode db 255,1,78,78
SECTION .text
;sardcode db 234,76,80,128,65,65 ; 6 ;sardcode db 234,76,80,128,65,65 ; 6
;efxcode db 17,47,62,97,26,126,98 ; 7 ;efxcode db 17,47,62,97,26,126,98 ; 7
;zopcode db 54,39,21,0,0,8,14,12,18 ; 9 ;zopcode db 54,39,21,0,0,8,14,12,18 ; 9
@@ -67,9 +69,10 @@ identcode db 255,1,78,78
mov [DSPMem+00h+%1],al mov [DSPMem+00h+%1],al
%endmacro %endmacro
ALIGN32 SECTION .bss ;ALIGN=32
alignb 32
NEWSYM DSPMem, times 256 db 0 NEWSYM DSPMem, resb 256
SECTION .text
;Read DSP Registers functions ;Read DSP Registers functions
@@ -1114,7 +1117,7 @@ NEWSYM RDSPRegFF ;
test byte [DSPMem+07h+%1*10h],40h test byte [DSPMem+07h+%1*10h],40h
jnz near %%Increase jnz near %%Increase
test byte [DSPMem+07h+%1*10h],20h test byte [DSPMem+07h+%1*10h],20h
jz near %%LinearDec jz %%LinearDec
xor eax,eax xor eax,eax
mov al,[DSPMem+07h+%1*10h] mov al,[DSPMem+07h+%1*10h]
and al,1Fh and al,1Fh
@@ -1216,7 +1219,7 @@ NEWSYM RDSPRegFF ;
test byte [DSPMem+07h+%1*10h],40h test byte [DSPMem+07h+%1*10h],40h
jnz near %%Increase jnz near %%Increase
test byte [DSPMem+07h+%1*10h],20h test byte [DSPMem+07h+%1*10h],20h
jz near %%LinearDec jz %%LinearDec
xor eax,eax xor eax,eax
mov al,[DSPMem+07h+%1*10h] mov al,[DSPMem+07h+%1*10h]
and al,1Fh and al,1Fh
@@ -1524,11 +1527,11 @@ NEWSYM RDSPRegFF ;
%macro VoiceGain 1 %macro VoiceGain 1
test byte[MuteVoiceF],1 << %1 test byte[MuteVoiceF],1 << %1
jnz near .nogain jnz .nogain
cmp byte[Voice0State+%1],200 cmp byte[Voice0State+%1],200
je near .nogain je .nogain
cmp [DSPMem+07h+%1*10h],al cmp [DSPMem+07h+%1*10h],al
je near .nogain je .nogain
mov [DSPMem+07h+%1*10h],al mov [DSPMem+07h+%1*10h],al
cmp byte[Voice0Status+%1],1 cmp byte[Voice0Status+%1],1
jne .nogain jne .nogain
@@ -1550,7 +1553,9 @@ NEWSYM RDSPRegFF ;
ProcessGain2 %1 ProcessGain2 %1
%endmacro %endmacro
NEWSYM ADSRGAINSwitch, db 0 SECTION .bss
NEWSYM ADSRGAINSwitch, resb 1
SECTION .text
;Write DSP Registers functions ;Write DSP Registers functions
@@ -1584,7 +1589,9 @@ NEWSYM WDSPReg04 ; Voice 0 SCRN
mov [DSPMem+04h],al mov [DSPMem+04h],al
ret ret
NEWSYM TempValueSnd, db 0 SECTION .bss
NEWSYM TempValueSnd, resb 1
SECTION .text
NEWSYM WDSPReg05 ; Voice 0 ADSR (1) NEWSYM WDSPReg05 ; Voice 0 ADSR (1)
inc byte[TempValueSnd] inc byte[TempValueSnd]
@@ -2231,7 +2238,9 @@ NEWSYM WDSPReg6B ; Voice 6
mov [DSPMem+06Bh],al mov [DSPMem+06Bh],al
ret ret
spcres db 0 SECTION .bss
spcres resb 1
SECTION .text
NEWSYM WDSPReg6C ; Voice 6 NEWSYM WDSPReg6C ; Voice 6
mov [DSPMem+06Ch],al mov [DSPMem+06Ch],al
@@ -2258,10 +2267,8 @@ NEWSYM WDSPReg6C ; Voice 6
and eax,1Fh and eax,1Fh
xor edx,edx xor edx,edx
mov eax,[NoiseSpeeds+eax*4] mov eax,[NoiseSpeeds+eax*4]
mov ebx,[SBToSPC] Mul dword [dspPAdj]
shl eax,16 ShrD EAX, EDX, 17
div ebx
shl eax,2
mov [NoiseInc],eax mov [NoiseInc],eax
pop edx pop edx
pop ecx pop ecx

File diff suppressed because it is too large Load Diff

View File

@@ -28,8 +28,8 @@ EXTSYM Op08X,Op18X,Op28X,Op0CA,Op02FX,Op0AVS,Op06X,Op0DX,Op03F,Op14Zr
EXTSYM Op0EH,DSP1Type,Op01m EXTSYM Op0EH,DSP1Type,Op01m
EXTSYM Voice0Status EXTSYM Voice0Status
EXTSYM UpdateDPage EXTSYM UpdateDPage
EXTSYM Interror,MessageOn,MsgCount,Msgptr,StartGUI,cbitmode,debuggeron,romdata EXTSYM MessageOn,MsgCount,Msgptr,StartGUI,cbitmode,debuggeron,romdata
EXTSYM frameskip,initvideo,newgfx16b,oldhandSBo,oldhandSBs,soundon,cvidmode EXTSYM frameskip,initvideo,newgfx16b,soundon,cvidmode
EXTSYM vidbuffer,vidbufferofsa,vidbufferofsb,disable65816sh,GUISaveVars,virqnodisable EXTSYM vidbuffer,vidbufferofsa,vidbufferofsb,disable65816sh,GUISaveVars,virqnodisable
EXTSYM KeySaveState,KeyLoadState,KeyQuickExit,KeyQuickLoad,KeyQuickRst,GUIDoReset EXTSYM KeySaveState,KeyLoadState,KeyQuickExit,KeyQuickLoad,KeyQuickRst,GUIDoReset
EXTSYM KeyOnStA,KeyOnStB,ProcessKeyOn,printnum,sramsavedis,DSPDisable,C4Enable EXTSYM KeyOnStA,KeyOnStB,ProcessKeyOn,printnum,sramsavedis,DSPDisable,C4Enable
@@ -39,8 +39,8 @@ EXTSYM csounddisable,videotroub,Open_File,Close_File,Read_File,ResetTripleBuf
EXTSYM Write_File,Output_Text,Create_File,Check_Key,Get_Key,Change_Dir,InitPreGame EXTSYM Write_File,Output_Text,Create_File,Check_Key,Get_Key,Change_Dir,InitPreGame
;EXTSYM OSPort ;EXTSYM OSPort
; EXTSYM tempblah,romdata ; EXTSYM tempblah,romdata
EXTSYM Curtableaddr,DeInitSPC,InitSB,PICMaskP,SBHandler,SBInt EXTSYM Curtableaddr
EXTSYM SBIrq,curcyc,debugdisble,dmadata,guioff,memtabler8,SetupPreGame EXTSYM curcyc,debugdisble,dmadata,guioff,memtabler8,SetupPreGame
EXTSYM memtablew8,regaccessbankr8,showmenu,snesmap2,snesmmap,DeInitPostGame EXTSYM memtablew8,regaccessbankr8,showmenu,snesmap2,snesmmap,DeInitPostGame
EXTSYM spcPCRam,startdebugger,xp,xpb,xpc,tablead,tableadb,tableadc EXTSYM spcPCRam,startdebugger,xp,xpb,xpc,tablead,tableadb,tableadc
; EXTSYM oamram ; EXTSYM oamram
@@ -53,8 +53,10 @@ EXTSYM OSExit,DosExit,InitDir,InitDrive,createnewcfg,fnames,gotoroot,previdmode
EXTSYM ramsize,sfxramdata,sram,SRAMDrive,SRAMDir,welcome EXTSYM ramsize,sfxramdata,sram,SRAMDrive,SRAMDir,welcome
; EXTSYM tempstore ; EXTSYM tempstore
EXTSYM printhex EXTSYM printhex
%ifdef __MSDOS__
EXTSYM ModemInitStat, DeInitModem EXTSYM ModemInitStat, DeInitModem
EXTSYM deinitipx EXTSYM deinitipx
%endif
EXTSYM deinitvideo EXTSYM deinitvideo
EXTSYM BRRBuffer,DSPMem,PrepareSaveState,ResetState,SFXEnable,PHdspsave EXTSYM BRRBuffer,DSPMem,PrepareSaveState,ResetState,SFXEnable,PHdspsave
EXTSYM fnamest,sndrot,spcRam,spcRamDP,tableA,unpackfunct,vram,wramdata EXTSYM fnamest,sndrot,spcRam,spcRamDP,tableA,unpackfunct,vram,wramdata
@@ -67,11 +69,10 @@ EXTSYM CapturePicture,PrevPicture,NoPictureSave
EXTSYM BRRPlace0,SfxCPB,SfxCROM,SfxLastRamAdr,SfxMemTable,Totalbyteloaded EXTSYM BRRPlace0,SfxCPB,SfxCROM,SfxLastRamAdr,SfxMemTable,Totalbyteloaded
EXTSYM SfxRAMBR,SfxRAMMem,SfxROMBR,SfxRomBuffer,Voice0Freq EXTSYM SfxRAMBR,SfxRAMMem,SfxROMBR,SfxRomBuffer,Voice0Freq
EXTSYM cycpbl,cycpbl2,cycpblt,cycpblt2,irqon,nexthdma EXTSYM cycpbl,cycpbl2,cycpblt,cycpblt2,irqon,nexthdma
EXTSYM repackfunct,spcnumread,spcon,versn,headerhack,initpitch EXTSYM repackfunct,spcnumread,spchalted,spcon,versn,headerhack,initpitch
EXTSYM SPCMultA,PHnum2writespc7110reg EXTSYM SPCMultA,PHnum2writespc7110reg
EXTSYM multchange,procexecloop,vidmemch2 EXTSYM multchange,procexecloop,vidmemch2
EXTSYM romispal EXTSYM romispal
EXTSYM dssel
EXTSYM scrndis,sprlefttot,sprleftpr,processsprites,cachesprites EXTSYM scrndis,sprlefttot,sprleftpr,processsprites,cachesprites
EXTSYM NextLineStart,FlipWait,LastLineStart EXTSYM NextLineStart,FlipWait,LastLineStart
EXTSYM opcjmptab EXTSYM opcjmptab
@@ -118,6 +119,14 @@ EXTSYM ReadSPC7110log,WriteSPC7110log
EXTSYM NetPlayNoMore EXTSYM NetPlayNoMore
EXTSYM statefileloc EXTSYM statefileloc
%ifdef OPENSPC
EXTSYM OSPC_Run, ospc_cycle_frac
%endif
%ifdef __MSDOS__
EXTSYM dssel
%endif
NEWSYM ExecuteAsmStart NEWSYM ExecuteAsmStart
%macro BackupCVMacM 2 %macro BackupCVMacM 2
@@ -130,7 +139,8 @@ NEWSYM ExecuteAsmStart
movq [ebx+8],mm1 movq [ebx+8],mm1
add edx,16 add edx,16
add ebx,16 add ebx,16
loop %%loop dec ecx
jnz %%loop
%endmacro %endmacro
%macro BackupCVMac 2 %macro BackupCVMac 2
@@ -141,7 +151,8 @@ NEWSYM ExecuteAsmStart
mov [ebx],eax mov [ebx],eax
add edx,4 add edx,4
add ebx,4 add ebx,4
loop %%loop dec ecx
jnz %%loop
%endmacro %endmacro
%macro BackupCVMacB 2 %macro BackupCVMacB 2
@@ -152,7 +163,8 @@ NEWSYM ExecuteAsmStart
mov [ebx],al mov [ebx],al
inc edx inc edx
inc ebx inc ebx
loop %%loop dec ecx
jnz %%loop
%endmacro %endmacro
%macro BackupCVRMacM 2 %macro BackupCVRMacM 2
@@ -165,7 +177,8 @@ NEWSYM ExecuteAsmStart
movq [edx+8],mm1 movq [edx+8],mm1
add edx,16 add edx,16
add ebx,16 add ebx,16
loop %%loop dec ecx
jnz %%loop
%endmacro %endmacro
%macro BackupCVRMac 2 %macro BackupCVRMac 2
@@ -176,7 +189,8 @@ NEWSYM ExecuteAsmStart
mov [edx],eax mov [edx],eax
add edx,4 add edx,4
add ebx,4 add ebx,4
loop %%loop dec ecx
jnz %%loop
%endmacro %endmacro
%macro BackupCVRMacB 2 %macro BackupCVRMacB 2
@@ -187,46 +201,57 @@ NEWSYM ExecuteAsmStart
mov [edx],al mov [edx],al
inc edx inc edx
inc ebx inc ebx
loop %%loop dec ecx
jnz %%loop
%endmacro %endmacro
NEWSYM CBackupPos, dd 0 SECTION .bss
NEWSYM StateBackup, dd 0 NEWSYM CBackupPos, resd 1
NEWSYM PBackupPos, dd 0 NEWSYM StateBackup, resd 1
NEWSYM PPValue, dd 0 ; Previous PValue NEWSYM PBackupPos, resd 1
NEWSYM DPValue, dd 0 ; Destination PValue NEWSYM PPValue, resd 1 ; Previous PValue
NEWSYM CurRecv, dd 0 ; Set to 1 if Recovery mode is on NEWSYM DPValue, resd 1 ; Destination PValue
NEWSYM CurRecv, resd 1 ; Set to 1 if Recovery mode is on
; if CurRecv=1, then do not send tcp/ip data, always frame skip, do not ; if CurRecv=1, then do not send tcp/ip data, always frame skip, do not
; draw to screen, do not key on, restore previous local key presses, ; draw to screen, do not key on, restore previous local key presses,
; when disabling key ons, divert dspmem write/read to a different ; when disabling key ons, divert dspmem write/read to a different
; array temporarly, then re-copy back in when finished ; array temporarly, then re-copy back in when finished
NEWSYM PPContrl, times 16 dd 0 ; Previous Controller 1 Data NEWSYM PPContrl, resd 16 ; Previous Controller 1 Data
NEWSYM PPContrl2, times 16 dd 0 ; Previous Controller 2 Data NEWSYM PPContrl2, resd 16 ; Previous Controller 2 Data
NEWSYM PPContrl3, times 16 dd 0 ; Previous Controller 3 Data NEWSYM PPContrl3, resd 16 ; Previous Controller 3 Data
NEWSYM PPContrl4, times 16 dd 0 ; Previous Controller 4 Data NEWSYM PPContrl4, resd 16 ; Previous Controller 4 Data
NEWSYM PPContrl5, times 16 dd 0 ; Previous Controller 5 Data NEWSYM PPContrl5, resd 16 ; Previous Controller 5 Data
NEWSYM tempedx, dd 0 NEWSYM tempedx, resd 1
NEWSYM NetSent2, dd 0 NEWSYM NetSent2, resd 1
NEWSYM NetQuitter, dd 0 NEWSYM NetQuitter, resd 1
NEWSYM QBackupPos, dd 0 NEWSYM QBackupPos, resd 1
NEWSYM LatencyV, times 256 db 0 NEWSYM LatencyV, resb 256
NEWSYM LatencyRecvPtr, dd 0 NEWSYM LatencyRecvPtr, resd 1
NEWSYM LatencySendPtr, dd 0 NEWSYM LatencySendPtr, resd 1
NEWSYM latencytimer, dd 0 NEWSYM latencytimer, resd 1
SECTION .data
NEWSYM BackState, db 1 NEWSYM BackState, db 1
NEWSYM BackStateSize, dd 6 NEWSYM BackStateSize, dd 6
NEWSYM nojoystickpoll, dd 0
NEWSYM RemoteLValue, db 0 SECTION .bss
NEWSYM LocalLValue, db 0 NEWSYM nojoystickpoll, resd 1
NEWSYM chatstrLt, times 15 db 0 NEWSYM RemoteLValue, resb 1
NEWSYM RewindOldPos, dd 0 NEWSYM LocalLValue, resb 1
NEWSYM RewindPos, dd 0 NEWSYM chatstrLt, resb 15
NEWSYM RewindTimer, dd 0 NEWSYM RewindOldPos, resd 1
NEWSYM RewindPos, resd 1
NEWSYM RewindTimer, resd 1
SECTION .data
NEWSYM ResendTimer, dd 60 NEWSYM ResendTimer, dd 60
NEWSYM valuea, dd 0
NEWSYM valueb, dd 0 SECTION .bss
NEWSYM valuet, dd 0 NEWSYM valuea, resd 1
BackupArray times 2000 dd 0 NEWSYM valueb, resd 1
NEWSYM valuet, resd 1
BackupArray resd 3000
SECTION .text
NEWSYM SplitStringChat NEWSYM SplitStringChat
push ebx push ebx
@@ -352,7 +377,9 @@ NEWSYM GenLatencyDisplay
mov [chatstrLt+4],dl mov [chatstrLt+4],dl
mov [chatstrLt+3],al mov [chatstrLt+3],al
ret ret
.temp dd 0 SECTION .bss
.temp resd 1
SECTION .text
NEWSYM ResetExecStuff NEWSYM ResetExecStuff
mov dword[soundcycleft],0 mov dword[soundcycleft],0
@@ -363,7 +390,8 @@ NEWSYM ResetExecStuff
mov dword[nmiprevline],224 mov dword[nmiprevline],224
mov dword[nmistatus],0 mov dword[nmistatus],0
mov byte[NextLineCache],0 mov byte[NextLineCache],0
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov dword[timer2upd],0 mov dword[timer2upd],0
mov dword[HIRQCycNext],0 mov dword[HIRQCycNext],0
mov byte[HIRQNextExe],0 mov byte[HIRQNextExe],0
@@ -465,7 +493,8 @@ NEWSYM BackupSystemVars
BackupCVMac spc700read,10 BackupCVMac spc700read,10
BackupCVMac timer2upd,1 BackupCVMac timer2upd,1
BackupCVMac xa,14 BackupCVMac xa,14
BackupCVMacB spcnumread,1 BackupCVMacB spcnumread,4
BackupCVMacB spchalted,4
BackupCVMac opcd,6 BackupCVMac opcd,6
BackupCVMacB HIRQCycNext,5 BackupCVMacB HIRQCycNext,5
BackupCVMac oamaddr,14 BackupCVMac oamaddr,14
@@ -487,7 +516,8 @@ NEWSYM RestoreSystemVars
BackupCVRMac spc700read,10 BackupCVRMac spc700read,10
BackupCVRMac timer2upd,1 BackupCVRMac timer2upd,1
BackupCVRMac xa,14 BackupCVRMac xa,14
BackupCVRMacB spcnumread,1 BackupCVRMacB spcnumread,4
BackupCVRMacB spchalted,4
BackupCVRMac opcd,6 BackupCVRMac opcd,6
BackupCVRMacB HIRQCycNext,5 BackupCVRMacB HIRQCycNext,5
BackupCVRMac oamaddr,14 BackupCVRMac oamaddr,14
@@ -560,7 +590,8 @@ NEWSYM BackupCVFrame
BackupCVMac spc700read,10 BackupCVMac spc700read,10
BackupCVMac timer2upd,1 BackupCVMac timer2upd,1
BackupCVMac xa,14 BackupCVMac xa,14
BackupCVMacB spcnumread,1 BackupCVMacB spcnumread,4
BackupCVMacB spchalted,4
BackupCVMac opcd,6 BackupCVMac opcd,6
BackupCVMacB HIRQCycNext,5 BackupCVMacB HIRQCycNext,5
BackupCVMac oamaddr,14 BackupCVMac oamaddr,14
@@ -654,7 +685,8 @@ NEWSYM RestoreCVFrame
BackupCVRMac spc700read,10 BackupCVRMac spc700read,10
BackupCVRMac timer2upd,1 BackupCVRMac timer2upd,1
BackupCVRMac xa,14 BackupCVRMac xa,14
BackupCVRMacB spcnumread,1 BackupCVRMacB spcnumread,4
BackupCVRMacB spchalted,4
BackupCVRMac opcd,6 BackupCVRMac opcd,6
BackupCVRMacB HIRQCycNext,5 BackupCVRMacB HIRQCycNext,5
BackupCVRMac oamaddr,14 BackupCVRMac oamaddr,14
@@ -689,7 +721,9 @@ NEWSYM RestoreCVFrame
emms emms
ret ret
NEWSYM MuteVoiceF, db 0 SECTION .bss
NEWSYM MuteVoiceF, resb 0
SECTION .text
VoiceEndMute: VoiceEndMute:
mov byte[MuteVoiceF],0 mov byte[MuteVoiceF],0
@@ -973,19 +1007,22 @@ NetSaveState:
; pexecs ; pexecs
; *** Copy to PC whenever a non-relative jump is executed ; *** Copy to PC whenever a non-relative jump is executed
NEWSYM romloadskip, db 0 SECTION .bss
NEWSYM abcdefg, dd 0 NEWSYM romloadskip, resb 1
NEWSYM abcdefg1, dd 0 NEWSYM abcdefg, resd 1
NEWSYM abcdefg2, dd 0 NEWSYM abcdefg1, resd 1
NEWSYM abcdefg3, dd 0 NEWSYM abcdefg2, resd 1
NEWSYM SSKeyPressed, dd 0 NEWSYM abcdefg3, resd 1
NEWSYM SPCKeyPressed, dd 0 NEWSYM SSKeyPressed, resd 1
NEWSYM NoSoundReinit, dd 0 NEWSYM SPCKeyPressed, resd 1
NEWSYM NextNGDisplay, db 0 NEWSYM NoSoundReinit, resd 1
NEWSYM TempVidInfo, dd 0 NEWSYM NextNGDisplay, resb 1
NEWSYM TempVidInfo, resd 1
NEWSYM tempdh, db 0 NEWSYM tempdh, resb 1
SECTION .text
NEWSYM start65816 NEWSYM start65816
@@ -1282,8 +1319,10 @@ reexecuteb2:
jnz near endprog jnz near endprog
jmp StartGUI jmp StartGUI
SECTION .data
NEWSYM EndMessage NEWSYM EndMessage
db ' ',13,10,0 db ' ',13,10,0
SECTION .text
NEWSYM endprog NEWSYM endprog
call deinitvideo call deinitvideo
@@ -1417,6 +1456,7 @@ NEWSYM endprog
mov ebx,InitDir mov ebx,InitDir
call Change_Dir call Change_Dir
%ifdef __MSDOS__
; Deinit modem if necessary ; Deinit modem if necessary
cmp byte[ModemInitStat],0 cmp byte[ModemInitStat],0
je .nodeinitmodem je .nodeinitmodem
@@ -1424,12 +1464,13 @@ NEWSYM endprog
.nodeinitmodem .nodeinitmodem
; cmp byte[OSPort],1 ; cmp byte[OSPort],1
; jae .nodeinitipx ; jae .nodeinitipx
%ifdef __MSDOS__
call deinitipx call deinitipx
%endif
;.nodeinitipx ;.nodeinitipx
%endif
jmp OSExit jmp OSExit
SECTION .data
NEWSYM sdd1fname, db 'sdd1dat.dat',0,0 NEWSYM sdd1fname, db 'sdd1dat.dat',0,0
SECTION .text
NEWSYM interror NEWSYM interror
stim stim
@@ -1439,31 +1480,38 @@ NEWSYM interror
call Output_Text ;to print a string call Output_Text ;to print a string
jmp DosExit jmp DosExit
SECTION .data
.nohand db 'Cannot process interrupt handler!',13,10,0 .nohand db 'Cannot process interrupt handler!',13,10,0
SECTION .bss
; global variables ; global variables
NEWSYM invalid, db 0 NEWSYM invalid, resb 1
NEWSYM invopcd, db 0 NEWSYM invopcd, resb 1
NEWSYM pressed, times 256+128+64 db 0 ; keyboard pressed keys in scancode NEWSYM pressed, resb 256+128+64 ; keyboard pressed keys in scancode
NEWSYM exiter, db 0 NEWSYM exiter, resb 1
NEWSYM oldhand9o, dd 0 NEWSYM oldhand9o, resd 1
NEWSYM oldhand9s, dw 0 NEWSYM oldhand9s, resw 1
NEWSYM oldhand8o, dd 0 NEWSYM oldhand8o, resd 1
NEWSYM oldhand8s, dw 0 NEWSYM oldhand8s, resw 1
NEWSYM opcd, dd 0 NEWSYM opcd, resd 1
NEWSYM pdh, dd 0 NEWSYM pdh, resd 1
NEWSYM pcury, dd 0 NEWSYM pcury, resd 1
NEWSYM timercount, dd 0 NEWSYM timercount, resd 1
NEWSYM initaddrl, dd 0 ; initial address location NEWSYM initaddrl, resd 1 ; initial address location
NEWSYM NetSent, dd 0 NEWSYM NetSent, resd 1
NEWSYM nextframe, dd 0 ; tick count for timer NEWSYM nextframe, resd 1 ; tick count for timer
NEWSYM curfps, db 0 ; frame/sec for current screen NEWSYM curfps, resb 1 ; frame/sec for current screen
NEWSYM SFXSRAM, db 0 NEWSYM SFXSRAM, resb 1
SECTION .data
NEWSYM newgfxerror, db 'NEED MEMORY FOR GFX ENGINE',0 NEWSYM newgfxerror, db 'NEED MEMORY FOR GFX ENGINE',0
NEWSYM newgfxerror2, db 'NEED 320x240 FOR NEW GFX 16B',0 NEWSYM newgfxerror2, db 'NEED 320x240 FOR NEW GFX 16B',0
;newgfxerror db 'NEW GFX IN 16BIT IS N/A',0 ;newgfxerror db 'NEW GFX IN 16BIT IS N/A',0
NEWSYM HIRQCycNext, dd 0
NEWSYM HIRQNextExe, db 0 SECTION .bss
NEWSYM HIRQCycNext, resd 1
NEWSYM HIRQNextExe, resb 1
SECTION .text
;******************************************************* ;*******************************************************
; Save/Load States ; Save/Load States
@@ -1496,10 +1544,13 @@ NEWSYM sramsave
mov [MessageOn],eax mov [MessageOn],eax
jmp reexecute jmp reexecute
SECTION .data
.savesrmmsg1 db 'SRAM DATA SAVED.',0 .savesrmmsg1 db 'SRAM DATA SAVED.',0
.savesrmmsg2 db 'NO SRAM DATA.',0 .savesrmmsg2 db 'NO SRAM DATA.',0
NEWSYM firstsaveinc, db 0 SECTION .bss
NEWSYM firstsaveinc, resb 1
SECTION .text
NEWSYM statesaver NEWSYM statesaver
clim clim
@@ -1671,8 +1722,10 @@ NEWSYM statesaver
mov [MessageOn],eax mov [MessageOn],eax
ret ret
SECTION .data
.savemsg db 'STATE - SAVED.',0 .savemsg db 'STATE - SAVED.',0
.savemsgfail db 'UNABLE TO SAVE.',0 .savemsgfail db 'UNABLE TO SAVE.',0
SECTION .text
NEWSYM savestate NEWSYM savestate
jmp .save jmp .save
@@ -1708,9 +1761,12 @@ NEWSYM savestate
call statesaver call statesaver
jmp reexecuteb jmp reexecuteb
SECTION .data
.fname2 db 9,'image.dat',0 .fname2 db 9,'image.dat',0
cycpblblah dd 0,0 SECTION .bss
cycpblblah resd 2
SECTION .text
; Load State ; Load State
NEWSYM stateloader NEWSYM stateloader
@@ -1835,7 +1891,8 @@ NEWSYM stateloader
.nosdd1 .nosdd1
call Close_File call Close_File
call repackfunct call repackfunct
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov byte[nexthdma],0 mov byte[nexthdma],0
; call headerhack ; call headerhack
@@ -1900,7 +1957,8 @@ NEWSYM stateloader
call Close_File call Close_File
call repackfunct call repackfunct
mov dword[cycpbl],0 mov dword[cycpbl],0
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov byte[nexthdma],0 mov byte[nexthdma],0
call headerhack call headerhack
call initpitch call initpitch
@@ -1964,9 +2022,11 @@ NEWSYM loadstate
stim stim
jmp reexecuteb jmp reexecuteb
SECTION .data
.loadmsg db 'STATE - LOADED.',0 .loadmsg db 'STATE - LOADED.',0
.convmsg db 'STATE - LOADED/CONVERTED',0 .convmsg db 'STATE - LOADED/CONVERTED',0
.nfndmsg db 'UNABLE TO LOAD STATE -.',0 .nfndmsg db 'UNABLE TO LOAD STATE -.',0
SECTION .text
NEWSYM loadstate2 NEWSYM loadstate2
mov edx,fnamest+1 mov edx,fnamest+1
@@ -2034,6 +2094,7 @@ NEWSYM Game60hzcall
inc byte[nextframe] inc byte[nextframe]
ret ret
%ifdef __MSDOS__
NEWSYM handler8h NEWSYM handler8h
cli cli
push ds push ds
@@ -2056,16 +2117,23 @@ NEWSYM handler8hseg
pop ds pop ds
sti sti
iretd iretd
%endif
SECTION .data
NEWSYM timeradj, dd 65536 NEWSYM timeradj, dd 65536
NEWSYM t1cc, dw 0 SECTION .bss
NEWSYM t1cc, resw 1
SECTION .text
;******************************************************* ;*******************************************************
; Int 09h vector ; Int 09h vector
;******************************************************* ;*******************************************************
NEWSYM skipnextkey42, db 0 SECTION .bss
NEWSYM skipnextkey42, resb 1
SECTION .text
%ifdef __MSDOS__
NEWSYM handler9h NEWSYM handler9h
cli cli
push ds push ds
@@ -2127,21 +2195,26 @@ NEWSYM handler9h
pop ds pop ds
sti sti
iretd iretd
%endif
ALIGN32 SECTION .bss ;ALIGN=32
NEWSYM soundcycleft, resd 1
NEWSYM curexecstate, resd 1
NEWSYM soundcycleft, dd 0 NEWSYM nmiprevaddrl, resd 1 ; observed address -5
NEWSYM curexecstate, dd 0 NEWSYM nmiprevaddrh, resd 1 ; observed address +5
NEWSYM nmirept, resd 1 ; NMI repeat check, if 6 then okay
NEWSYM nmiprevaddrl, dd 0 ; observed address -5 SECTION .data
NEWSYM nmiprevaddrh, dd 0 ; observed address +5
NEWSYM nmirept, dd 0 ; NMI repeat check, if 6 then okay
NEWSYM nmiprevline, dd 224 ; previous line NEWSYM nmiprevline, dd 224 ; previous line
NEWSYM nmistatus, dd 0 ; 0 = none, 1 = waiting for nmi location,
SECTION .bss
NEWSYM nmistatus, resd 1 ; 0 = none, 1 = waiting for nmi location,
; 2 = found, disable at next line ; 2 = found, disable at next line
NEWSYM joycontren, dd 0 ; joystick read control check NEWSYM joycontren, resd 1 ; joystick read control check
NEWSYM NextLineCache, db 0 NEWSYM NextLineCache, resb 1
NEWSYM NetQuit, db 0 NEWSYM NetQuit, resb 1
SECTION .text
Donextlinecache: Donextlinecache:
cmp word[curypos],0 cmp word[curypos],0
@@ -2235,6 +2308,8 @@ Donextlinecache:
; 65816 execution ; 65816 execution
;******************************************************* ;*******************************************************
SECTION .data
SpeedHackSafeTable SpeedHackSafeTable
db 1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0 db 1,0,1,0,0,0,1,0,1,0,1,1,0,0,0,0
db 0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0 db 0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0
@@ -2252,6 +2327,7 @@ SpeedHackSafeTable
db 0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0 db 0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0
db 0,1,0,1,0,1,1,1,1,1,0,0,0,1,1,1 db 0,1,0,1,0,1,1,1,1,1,0,0,0,1,1,1
db 0,1,1,1,0,1,1,1,0,1,0,0,0,1,1,1 db 0,1,1,1,0,1,1,1,0,1,0,0,0,1,1,1
SECTION .text
NEWSYM exitloop2 NEWSYM exitloop2
mov byte[ExecExitOkay],0 mov byte[ExecExitOkay],0
@@ -2316,7 +2392,6 @@ ALIGN16
%%noflip %%noflip
%endmacro %endmacro
NEWSYM execute NEWSYM execute
NEWSYM execloop NEWSYM execloop
mov bl,dl mov bl,dl
@@ -2333,6 +2408,17 @@ NEWSYM execloop
jmp cpuover jmp cpuover
.sound .sound
mov edi,[tableadc+ebx*4] mov edi,[tableadc+ebx*4]
%ifdef OPENSPC
pushad
mov bl,[esi]
movzx eax,byte[cpucycle+ebx]
mov ebx,0xC3A13DE6
mul ebx
add [ospc_cycle_frac],eax
adc [SPC_Cycles],edx
call OSPC_Run
popad
%else
sub dword[cycpbl],55 sub dword[cycpbl],55
jnc .skipallspc jnc .skipallspc
mov eax,[cycpblt] mov eax,[cycpblt]
@@ -2343,6 +2429,7 @@ NEWSYM execloop
call dword near [opcjmptab+ebx*4] call dword near [opcjmptab+ebx*4]
xor ebx,ebx xor ebx,ebx
.skipallspc .skipallspc
%endif
mov bl,[esi] mov bl,[esi]
inc esi inc esi
sub dh,[cpucycle+ebx] sub dh,[cpucycle+ebx]
@@ -2353,25 +2440,27 @@ NEWSYM execloop
SECTION .data SECTION .data ;ALIGN=32
ALIGN32 ALIGN32
NEWSYM ExecExitOkay, db 1 NEWSYM ExecExitOkay, db 1
NEWSYM JoyABack, dd 0
NEWSYM JoyBBack, dd 0 SECTION .bss ;ALIGN=32
NEWSYM JoyCBack, dd 0 NEWSYM JoyABack, resd 1
NEWSYM JoyDBack, dd 0 NEWSYM JoyBBack, resd 1
NEWSYM JoyEBack, dd 0 NEWSYM JoyCBack, resd 1
NEWSYM NetCommand, dd 0 NEWSYM JoyDBack, resd 1
NEWSYM spc700read, dd 0 NEWSYM JoyEBack, resd 1
NEWSYM lowestspc, dd 0 NEWSYM NetCommand, resd 1
NEWSYM highestspc, dd 0 NEWSYM spc700read, resd 1
NEWSYM SA1UBound, dd 0 NEWSYM lowestspc, resd 1
NEWSYM SA1LBound, dd 0 NEWSYM highestspc, resd 1
NEWSYM SA1SH, dd 0 NEWSYM SA1UBound, resd 1
NEWSYM SA1SHb, dd 0 NEWSYM SA1LBound, resd 1
NEWSYM NumberOfOpcodes2, dd 0 NEWSYM SA1SH, resd 1
NEWSYM ChangeOps, dd 0 NEWSYM SA1SHb, resd 1
NEWSYM SFXProc, dd 0 NEWSYM NumberOfOpcodes2, resd 1
NEWSYM ChangeOps, resd 1
NEWSYM SFXProc, resd 1
SECTION .text SECTION .text
@@ -2388,7 +2477,7 @@ NEWSYM cpuover
dec esi dec esi
cmp byte[HIRQNextExe],0 cmp byte[HIRQNextExe],0
je .nohirq je .nohirq
mov dh,[HIRQCycNext] add dh,[HIRQCycNext]
mov byte[HIRQCycNext],0 mov byte[HIRQCycNext],0
jmp .hirq jmp .hirq
.nohirq .nohirq
@@ -3974,7 +4063,9 @@ NEWSYM cpuover
pop eax pop eax
jmp .returncheat jmp .returncheat
.numcheat db 0 SECTION .bss ;ALIGN=32
.numcheat resb 1
SECTION .text ;ALIGN=32
ALIGN16 ALIGN16

View File

@@ -31,9 +31,6 @@ NEWSYM Spc700AsmStart
; SPC 700 Emulation by _Demo_ ; SPC 700 Emulation by _Demo_
; Version 2.0 ; Version 2.0
@@ -42,6 +39,7 @@ NEWSYM Spc700AsmStart
; Read byte : read al from [ebx] ; Read byte : read al from [ebx]
; update timer : update the timers, called every scanline ; update timer : update the timers, called every scanline
SECTION .data ;ALIGN=32
ALIGN32 ALIGN32
@@ -126,72 +124,81 @@ NEWSYM SPCROM
db 0CBh,0F4h,0D7h,000h,0FCh,0D0h,0F3h,0ABh,001h,010h,0EFh,07Eh,0F4h,010h,0EBh,0BAh db 0CBh,0F4h,0D7h,000h,0FCh,0D0h,0F3h,0ABh,001h,010h,0EFh,07Eh,0F4h,010h,0EBh,0BAh
db 0F6h,0DAh,000h,0BAh,0F4h,0C4h,0F4h,0DDh,05Dh,0D0h,0DBh,01Fh,000h,000h,0C0h,0FFh db 0F6h,0DAh,000h,0BAh,0F4h,0C4h,0F4h,0DDh,05Dh,0D0h,0DBh,01Fh,000h,000h,0C0h,0FFh
SECTION .text
%macro WriteByte 0 %macro WriteByte 0
cmp ebx,0ffh+spcRam cmp ebx,0ffh+spcRam
ja .extramem ja %%extramem
cmp ebx,0f0h+spcRam cmp ebx,0f0h+spcRam
jb .normalmem jb %%normalmem
sub ebx,spcRam sub ebx,spcRam
call dword near [spcWptr+ebx*4-0f0h*4] push dword %%finished
jmp .finished jmp dword near [spcWptr+ebx*4-0f0h*4]
.extramem ; call dword near [spcWptr+ebx*4-0f0h*4]
; jmp .finished
%%extramem
cmp ebx,0ffc0h+spcRam cmp ebx,0ffc0h+spcRam
jb .normalmem jb %%normalmem
mov [spcextraram+ebx-0FFC0h-spcRam],al mov [spcextraram+ebx-0FFC0h-spcRam],al
test byte[spcRam+0F1h],80h test byte[spcRam+0F1h],80h
jnz .finished jnz %%finished
; push ecx ; push ecx
; mov cl,[DSPMem+06Ch] ; mov cl,[DSPMem+06Ch]
; test cl,20h ; test cl,20h
; pop ecx ; pop ecx
; jz .finished ; jz .finished
.normalmem %%normalmem
mov [ebx],al mov [ebx],al
.finished %%finished
%endmacro %endmacro
%macro ReadByte 0 %macro ReadByte 0
cmp ebx,0f0h+spcRam cmp ebx,0f0h+spcRam
jb .rnormalmem2 jb %%normalmem2
cmp ebx,0ffh+spcRam cmp ebx,0ffh+spcRam
ja .rnormalmem ja %%normalmem
sub ebx,spcRam sub ebx,spcRam
call dword near [spcRptr+ebx*4-0f0h*4] push dword %%finished
jmp .rfinished jmp dword near [spcRptr+ebx*4-0f0h*4]
.rnormalmem ; call dword near [spcRptr+ebx*4-0f0h*4]
; jmp .rfinished
%%normalmem
; cmp ebx,0ffc0h+spcRam ; cmp ebx,0ffc0h+spcRam
; jb .rnormalmem2 ; jb .rnormalmem2
; test byte [DSPMem+6Ch],10h ; test byte [DSPMem+6Ch],10h
; jz .rnormalmem2 ; jz .rnormalmem2
; mov al,[spcextraram+ebx-0FFC0h-spcRam] ; mov al,[spcextraram+ebx-0FFC0h-spcRam]
; jmp .rfinished ; jmp .rfinished
.rnormalmem2 %%normalmem2
mov al,[ebx] mov al,[ebx]
.rfinished %%finished
%endmacro %endmacro
%macro ReadByte2 0 %macro ReadByte2 0
cmp ebx,0f0h+spcRam cmp ebx,0f0h+spcRam
jb .rnormalmem2 jb %%normalmem2
cmp ebx,0ffh+spcRam cmp ebx,0ffh+spcRam
ja .rnormalmem ja %%normalmem
sub ebx,spcRam sub ebx,spcRam
call dword near [spcRptr+ebx*4-0f0h*4] call dword near [spcRptr+ebx*4-0f0h*4]
add ebx,spcRam add ebx,spcRam
jmp .rfinished jmp %%finished
.rnormalmem %%normalmem
; cmp ebx,0ffc0h+spcRam ; cmp ebx,0ffc0h+spcRam
; jb .rnormalmem2 ; jb .rnormalmem2
; test byte [DSPMem+6Ch],10h ; test byte [DSPMem+6Ch],10h
; jz .rnormalmem2 ; jz .rnormalmem2
; mov al,[spcextraram+ebx-0FFC0h-spcRam] ; mov al,[spcextraram+ebx-0FFC0h-spcRam]
; jmp .rfinished ; jmp .rfinished
.rnormalmem2 %%normalmem2
mov al,[ebx] mov al,[ebx]
.rfinished %%finished
%endmacro %endmacro
NEWSYM timer2upd, dd 0 SECTION .bss
NEWSYM timer2upd, resd 1
SECTION .text
; This function is called every scanline (262*60 times/sec) ; This function is called every scanline (262*60 times/sec)
; Make it call 0.9825 times (393/400) (skip when divisible by 64) ; Make it call 0.9825 times (393/400) (skip when divisible by 64)
; 2 8khz, 1 64khz ; 2 8khz, 1 64khz
@@ -223,6 +230,8 @@ NEWSYM updatetimer
mov [timinl0],al mov [timinl0],al
cmp byte[spcRam+0FDh],1 cmp byte[spcRam+0FDh],1
jne .noin0 jne .noin0
cmp byte[spchalted],0
jz .noin0
reenablespc reenablespc
mov dword[cycpbl],0 mov dword[cycpbl],0
.noin0 .noin0
@@ -235,6 +244,8 @@ NEWSYM updatetimer
mov [timinl1],al mov [timinl1],al
cmp byte[spcRam+0FEh],1 cmp byte[spcRam+0FEh],1
jne .noin1 jne .noin1
cmp byte[spchalted+1],0
jz .noin1
reenablespc reenablespc
mov dword[cycpbl],0 mov dword[cycpbl],0
.noin1 .noin1
@@ -248,6 +259,8 @@ NEWSYM updatetimer
mov [timinl2],al mov [timinl2],al
cmp byte[spcRam+0FFh],1 cmp byte[spcRam+0FFh],1
jne .noin2 jne .noin2
cmp byte[spchalted+2],0
jz .noin2
reenablespc reenablespc
mov dword[cycpbl],0 mov dword[cycpbl],0
.noin2 .noin2
@@ -258,6 +271,8 @@ NEWSYM updatetimer
mov [timinl2],al mov [timinl2],al
cmp byte[spcRam+0FFh],1 cmp byte[spcRam+0FFh],1
jne .noin2b jne .noin2b
cmp byte[spchalted+2],0
jz .noin2b
reenablespc reenablespc
mov dword[cycpbl],0 mov dword[cycpbl],0
.noin2b .noin2b
@@ -268,6 +283,8 @@ NEWSYM updatetimer
mov [timinl2],al mov [timinl2],al
cmp byte[spcRam+0FFh],1 cmp byte[spcRam+0FFh],1
jne .noin2c jne .noin2c
cmp byte[spchalted+2],0
jz .noin2c
reenablespc reenablespc
mov dword[cycpbl],0 mov dword[cycpbl],0
.noin2c .noin2c
@@ -278,6 +295,8 @@ NEWSYM updatetimer
mov [timinl2],al mov [timinl2],al
cmp byte[spcRam+0FFh],1 cmp byte[spcRam+0FFh],1
jne .noin2d jne .noin2d
cmp byte[spchalted+2],0
jz .noin2d
reenablespc reenablespc
mov dword[cycpbl],0 mov dword[cycpbl],0
.noin2d .noin2d
@@ -438,17 +457,63 @@ NEWSYM RSPCRegF2
NEWSYM RSPCRegF3 NEWSYM RSPCRegF3
mov al,[spcRam+0f3h] mov al,[spcRam+0f3h]
ret ret
%ifdef SPCDUMP
SECTION .bss
ALIGNB 4
NEWSYM SPCSave_start, resd 2
NEWSYM SPCSave_buffer, resb 4
NEWSYM SPCSave_ports, resb 4
SECTION .text
EXTSYM SPCSave_dump, SPCSave_handle, Write_File
%macro spcdump 1
cmp byte[SPCSave_dump], 1
jne %%nodump
inc dword[SPCSave_buffer]
cmp [SPCSave_ports+%1], al
je %%nodump
mov [SPCSave_ports+%1], al
pushad
mov byte[SPCSave_buffer+2], %1
mov byte[SPCSave_buffer+3], al
mov ebx, [SPCSave_handle]
mov ecx, 4
mov edx, SPCSave_buffer
call Write_File
xor eax, eax
mov [SPCSave_buffer], eax
popad
%%nodump
%endmacro
%endif
NEWSYM RSPCRegF4 NEWSYM RSPCRegF4
mov al,[spcRam+0f4h] mov al,[spcRam+0f4h]
%ifdef SPCDUMP
spcdump 0
%endif
ret ret
NEWSYM RSPCRegF5 NEWSYM RSPCRegF5
mov al,[spcRam+0f5h] mov al,[spcRam+0f5h]
%ifdef SPCDUMP
spcdump 1
%endif
ret ret
NEWSYM RSPCRegF6 NEWSYM RSPCRegF6
mov al,[spcRam+0f6h] mov al,[spcRam+0f6h]
%ifdef SPCDUMP
spcdump 2
%endif
ret ret
NEWSYM RSPCRegF7 NEWSYM RSPCRegF7
mov al,[spcRam+0f7h] mov al,[spcRam+0f7h]
%ifdef SPCDUMP
spcdump 3
%endif
ret ret
NEWSYM RSPCRegF8 NEWSYM RSPCRegF8
mov al,0 ;[spcRam+0f8h] mov al,0 ;[spcRam+0f8h]
@@ -465,30 +530,74 @@ NEWSYM RSPCRegFB
NEWSYM RSPCRegFC NEWSYM RSPCRegFC
mov al,[spcRam+0fch] mov al,[spcRam+0fch]
ret ret
%macro skipmacro 1
.spcnextskip
test byte[timeron],1<<%1
je .ret
cmp byte[timincr0+%1],0
je .ret
;cmp byte[SpeedHack],0
;je .ret
inc byte[spcnumread+%1]
cmp byte[spcnumread+%1],8h
je near haltspc
.ret
ret
%endmacro
ALIGN16
NEWSYM haltspc
cmp byte[SPC700sh],1
je .nochangestate
mov dword[cycpbl],0FFFFFFFFh
test byte[curexecstate],02h
jz .nochangestate
and byte[curexecstate],0FDh
push ebx
mov ebx,[spcnumread]
mov [spchalted],ebx
xor ebx,ebx
mov bl,dl
mov edi,[tableadb+ebx*4]
pop ebx
.nochangestate
mov dword[spcnumread],0
ret
NEWSYM RSPCRegFD NEWSYM RSPCRegFD
mov al,[spcRam+0fdh] mov al,[spcRam+0fdh]
and al,0Fh and al,0Fh
cmp byte[spcRam+0fdh],0 cmp byte[spcRam+0fdh],0
je spcnextskip je .spcnextskip
mov byte [spcRam+0fdh],0 mov byte [spcRam+0fdh],0
mov byte [spcnumread],0 mov byte [spcnumread],0
ret ret
skipmacro 0
NEWSYM RSPCRegFE NEWSYM RSPCRegFE
mov al,[spcRam+0feh] mov al,[spcRam+0feh]
and al,0Fh and al,0Fh
cmp byte[spcRam+0feh],0 cmp byte[spcRam+0feh],0
je spcnextskip je .spcnextskip
mov byte [spcRam+0feh],0 mov byte [spcRam+0feh],0
mov byte [spcnumread],0 mov byte [spcnumread+1],0
ret ret
skipmacro 1
NEWSYM RSPCRegFF NEWSYM RSPCRegFF
mov al,[spcRam+0ffh] mov al,[spcRam+0ffh]
and al,0Fh and al,0Fh
cmp byte[spcRam+0ffh],0 cmp byte[spcRam+0ffh],0
je spcnextskip je .spcnextskip
mov byte [spcRam+0ffh],0 mov byte [spcRam+0ffh],0
mov byte [spcnumread],0 mov byte [spcnumread+2],0
ret ret
skipmacro 2
%if 0
NEWSYM spcnextskip NEWSYM spcnextskip
inc byte[spcnumread] inc byte[spcnumread]
cmp byte[spcnumread],5 cmp byte[spcnumread],5
@@ -510,9 +619,12 @@ NEWSYM haltspc
.nochangestate .nochangestate
mov byte[spcnumread],0 mov byte[spcnumread],0
ret ret
%endif
NEWSYM spcnumread, db 0 SECTION .data
NEWSYM spcnumread, dd 0
NEWSYM spchalted, dd 0
SECTION .text
%macro SPCSetFlagnzc 0 %macro SPCSetFlagnzc 0
js .setsignflag js .setsignflag

View File

@@ -18,11 +18,15 @@
%include "macros.mac" %include "macros.mac"
EXTSYM ComNum, ComIRQ, BaudRate EXTSYM ComNum, ComIRQ, BaudRate
EXTSYM dssel,FossilUse EXTSYM FossilUse
EXTSYM GUIinit18_2hz,GUIinit36_4hz EXTSYM GUIinit18_2hz,GUIinit36_4hz
EXTSYM GUIMenuItem EXTSYM GUIMenuItem
EXTSYM delay EXTSYM delay
%ifdef __MSDOS__
EXTSYM dssel
%endif
NEWSYM DosModemRTNAsmStart NEWSYM DosModemRTNAsmStart
@@ -30,20 +34,36 @@ NEWSYM DosModemRTNAsmStart
SECTION .bss
NEWSYM UartType, resb 1
NEWSYM UartType, db 0 SECTION .data
NEWSYM cantinitmodem, db 1 NEWSYM cantinitmodem, db 1
NEWSYM ModemInited, db 0
SECTION .bss
NEWSYM ModemInited, resb 1
SECTION .data
ComPort dw 2E8h ; 1=3F8,2=2F8,3=3E8,4=2E8 ComPort dw 2E8h ; 1=3F8,2=2F8,3=3E8,4=2E8
PortData dw 0,3F8h,2F8h,3E8h,2E8h PortData dw 0,3F8h,2F8h,3E8h,2E8h
ComInt db 0
SECTION .bss
ComInt resb 1
SECTION .data
BRateSel dw 000Ch,0008h,0006h,0004h,0003h,0002h,0001h BRateSel dw 000Ch,0008h,0006h,0004h,0003h,0002h,0001h
oldhandmodems dw 0
oldhandmodemo dd 0 SECTION .bss
oldhandmodems resw 1
oldhandmodemo resd 1
SECTION .data
PICMaskPm db 21h PICMaskPm db 21h
PortNum dw 0
CharStore db 0 SECTION .bss
PortNum resw 1
CharStore resb 1
SECTION .text
NEWSYM ModemGetChar NEWSYM ModemGetChar
cmp byte[UartType],2 cmp byte[UartType],2
@@ -165,7 +185,6 @@ FossilSendChar:
popad popad
ret ret
NEWSYM InitModem NEWSYM InitModem
mov byte[ModemInited],1 mov byte[ModemInited],1
cmp byte[FossilUse],0 cmp byte[FossilUse],0
@@ -302,7 +321,9 @@ InitFossil:
modemhandler: modemhandler:
push ds push ds
push eax push eax
%ifdef __MSDOS__
mov ax,[cs:dssel] mov ax,[cs:dssel]
%endif
mov ds,ax mov ds,ax
push edx push edx
mov dx,[ComPort] mov dx,[ComPort]
@@ -349,9 +370,11 @@ NEWSYM ModemClearBuffer
mov dword[modemtail],0 mov dword[modemtail],0
ret ret
NEWSYM modembuffer, times 2048 db 0 SECTION .bss
NEWSYM modemhead, dd 0 NEWSYM modembuffer, resb 2048
NEWSYM modemtail, dd 0 NEWSYM modemhead, resd 1
NEWSYM modemtail, resd 1
SECTION .text
NEWSYM DeInitModem NEWSYM DeInitModem
cmp byte[ModemInited],1 cmp byte[ModemInited],1

View File

@@ -64,9 +64,9 @@
%include "macros.mac" %include "macros.mac"
EXTSYM dssel, curblank, vidpastecopyscr, frameskip, newengen, vsyncon, cantinitmodem EXTSYM curblank, vidpastecopyscr, frameskip, newengen, vsyncon
EXTSYM cvidmode, antienab, smallscreenon, smallscreence,NetQuit EXTSYM cvidmode, antienab, smallscreenon, smallscreence,NetQuit
EXTSYM soundon, StereoSound, SoundCompD, SoundQuality, MusicRelVol,UartType EXTSYM soundon, StereoSound, SoundCompD, SoundQuality, MusicRelVol
EXTSYM endprog, continueprog, spcBuffera, spcRamcmp, cbitmode, makepal EXTSYM endprog, continueprog, spcBuffera, spcRamcmp, cbitmode, makepal
EXTSYM t1cc, LoadDir, SRAMDir, LoadDrive,SRAMDrive, initsnes, romloadskip EXTSYM t1cc, LoadDir, SRAMDir, LoadDrive,SRAMDrive, initsnes, romloadskip
EXTSYM fname, makeextension, sram, clearmem2, loadfileGUI, GUIloadfailed EXTSYM fname, makeextension, sram, clearmem2, loadfileGUI, GUIloadfailed
@@ -89,14 +89,12 @@ EXTSYM cfgdontsave,videotroub,Open_File,Read_File,Close_File,Write_File,Create_F
EXTSYM File_Seek,File_Seek_End,Open_File_Write,Get_Date,Check_Key,Get_Key EXTSYM File_Seek,File_Seek_End,Open_File_Write,Get_Date,Check_Key,Get_Key
EXTSYM Change_Drive,Change_Single_Dir,Change_Dir,Get_Dir,Get_First_Entry EXTSYM Change_Drive,Change_Single_Dir,Change_Dir,Get_Dir,Get_First_Entry
EXTSYM Get_Next_Entry,Set_DTA_Address,timer2upd,curexecstate,TripBufAvail EXTSYM Get_Next_Entry,Set_DTA_Address,timer2upd,curexecstate,TripBufAvail
EXTSYM nmiprevaddrl,nmiprevaddrh,nmirept,nmiprevline,nmistatus,spcnumread EXTSYM nmiprevaddrl,nmiprevaddrh,nmirept,nmiprevline,nmistatus,spcnumread,spchalted
EXTSYM NextLineCache,VidStartDraw,ResetTripleBuf,GUINGVID EXTSYM NextLineCache,VidStartDraw,ResetTripleBuf,GUINGVID
EXTSYM ScanCodeListing,AdjustFrequency,GUISaveVars,Init_Mouse EXTSYM ScanCodeListing,AdjustFrequency,GUISaveVars,Init_Mouse
EXTSYM Get_MouseData,Set_MouseXMax,Set_MouseYMax,Set_MousePosition,Get_MousePositionDisplacement EXTSYM Get_MouseData,Set_MouseXMax,Set_MouseYMax,Set_MousePosition,Get_MousePositionDisplacement
EXTSYM GUIInit,GUIDeInit,SpecialLine EXTSYM GUIInit,GUIDeInit,SpecialLine
EXTSYM DrawWater,DrawSmoke,RemoteDisconnect,loadstate3 EXTSYM DrawWater,DrawBurn,RemoteDisconnect,loadstate3
EXTSYM ModemClearBuffer,IPXSearchval
EXTSYM ipxlookforconnect
EXTSYM SA1Enable,SA1RAMArea EXTSYM SA1Enable,SA1RAMArea
EXTSYM GUIFName,GUICName EXTSYM GUIFName,GUICName
EXTSYM printnum EXTSYM printnum
@@ -108,7 +106,6 @@ EXTSYM showinfogui
EXTSYM BackupCVFrame EXTSYM BackupCVFrame
EXTSYM Wait1SecWin,ClearUDPStuff EXTSYM Wait1SecWin,ClearUDPStuff
EXTSYM DisableSUDPPacket,EnableSUDPPacket EXTSYM DisableSUDPPacket,EnableSUDPPacket
EXTSYM ModemGetChar
EXTSYM BackStateSize EXTSYM BackStateSize
EXTSYM ResetExecStuff EXTSYM ResetExecStuff
EXTSYM RestoreCVFrame EXTSYM RestoreCVFrame
@@ -141,11 +138,8 @@ EXTSYM Force8b,convertnum,converthex
EXTSYM per2exec EXTSYM per2exec
EXTSYM hostname EXTSYM hostname
EXTSYM UDPConfig EXTSYM UDPConfig
EXTSYM DeInitModem
EXTSYM snesmouse EXTSYM snesmouse
EXTSYM pl1upk,pl1downk,pl1leftk,pl1rightk,pl1Lk,pl1Rk,pl1Ak,pl1Bk EXTSYM pl1upk,pl1downk,pl1leftk,pl1rightk,pl1Lk,pl1Rk,pl1Ak,pl1Bk
EXTSYM deinitipx
EXTSYM InitModem
EXTSYM outofmemfix,yesoutofmemory EXTSYM outofmemfix,yesoutofmemory
EXTSYM CReadHead,ReadHead,CFWriteHead,CFWriteStart EXTSYM CReadHead,ReadHead,CFWriteHead,CFWriteStart
EXTSYM JoyX,JoyY,JoyMinX,JoyMinY,JoyMaxX,JoyMaxY,JoyMinX209,JoyMaxX209 EXTSYM JoyX,JoyY,JoyMinX,JoyMinY,JoyMaxX,JoyMaxY,JoyMinX209,JoyMaxX209
@@ -158,26 +152,29 @@ EXTSYM TCPIPWaitForConnection
EXTSYM tcperr EXTSYM tcperr
EXTSYM TCPIPConnectToServer EXTSYM TCPIPConnectToServer
EXTSYM TCPIPConnectToServerW EXTSYM TCPIPConnectToServerW
EXTSYM initipx
EXTSYM selc0040 EXTSYM selc0040
EXTSYM ModemCheckRing EXTSYM TCPIPPreparePacket
EXTSYM ModemCheckDCD EXTSYM TCPIPSendPacket,TCPIPSendPacketUDP
EXTSYM PreparePacketIPX,TCPIPPreparePacket
EXTSYM SendPacketIPX,TCPIPSendPacket,TCPIPSendPacketUDP
EXTSYM TCPIPDisconnect,TCPIPStatus EXTSYM TCPIPDisconnect,TCPIPStatus
EXTSYM DeInitModemC EXTSYM TCPIPStoreByte
EXTSYM ipxgetchar,ipxsendchar,TCPIPStoreByte
EXTSYM TCPIPGetByte,GUIBIFIL EXTSYM TCPIPGetByte,GUIBIFIL
EXTSYM ModemSendChar
EXTSYM firstsaveinc EXTSYM firstsaveinc
EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6 EXTSYM nssdip1,nssdip2,nssdip3,nssdip4,nssdip5,nssdip6
%ifndef __MSDOS__
EXTSYM GUIMBVID
%endif
%ifdef __LINUX__ %ifdef __LINUX__
EXTSYM numlockptr EXTSYM numlockptr
%endif %endif
%ifdef __WIN32__
EXTSYM initDirectDraw
EXTSYM reInitSound
%endif
%ifdef __MSDOS__
EXTSYM dssel, cantinitmodem, ModemClearBuffer, ModemGetChar
EXTSYM InitModem, DeInitModem, ModemCheckRing, ModemCheckDCD
EXTSYM DeInitModemC, ModemSendChar, UartType
EXTSYM deinitipx, IPXSearchval, ipxlookforconnect, initipx
EXTSYM PreparePacketIPX,SendPacketIPX,ipxgetchar,ipxsendchar
%endif
NEWSYM GuiAsmStart NEWSYM GuiAsmStart
@@ -193,6 +190,7 @@ NEWSYM GuiAsmStart
SECTION .data
; ProcessRemoteCommand ; ProcessRemoteCommand
@@ -597,33 +595,37 @@ NEWSYM KeyQuickClock, dd 0
NEWSYM KeyQuickSaveSPC, dd 0 NEWSYM KeyQuickSaveSPC, dd 0
NEWSYM AutoIncSaveSlot, db 0 NEWSYM AutoIncSaveSlot, db 0
NEWSYM TCPIPAddress, times 29 db 0 NEWSYM TCPIPAddress, times 29 db 0
NEWSYM SoundInterpType, db 1 NEWSYM SoundInterpType, db 2
NEWSYM KeyDisplayFPS, dd 0 NEWSYM KeyDisplayFPS, dd 0
NEWSYM KeyIncStateSlot, dd 0 NEWSYM KeyIncStateSlot, dd 0
NEWSYM KeyDecStateSlot, dd 0 NEWSYM KeyDecStateSlot, dd 0
NEWSYM MotionBlur, dd 0
GUIsave equ $-GUIRAdd GUIsave equ $-GUIRAdd
NEWSYM ForceROMTiming, db 0 section .bss
NEWSYM ForceHiLoROM, db 0
NEWSYM CombinDataGlob, times 3300 db 0 ; 20-name, 42-combo, 2-key#, 1-P#, 1-ff NEWSYM ForceROMTiming, resb 1
NEWSYM CombinDataLocl, times 3300 db 0 NEWSYM ForceHiLoROM, resb 1
NEWSYM CombinDataGlob, resb 3300 ; 20-name, 42-combo, 2-key#, 1-P#, 1-ff
NEWSYM CombinDataLocl, resb 3300
section .data
NEWSYM CmdLineNetPlay, db 0 NEWSYM CmdLineNetPlay, db 0
NEWSYM CmdLineTCPIPAddress, times 29 db 0 NEWSYM CmdLineTCPIPAddress, times 29 db 0
section .bss
GUIwinorder times 18 db 0 GUIwinorder resb 18
GUIwinpos times 18 db 0 GUIwinpos resb 18
GUIwinactiv times 18 db 0 GUIwinactiv resb 18
DialNumber times 40 db 0 DialNumber resb 40
ViewBuffer times 50*32 db 0 ViewBuffer resb 50*32
NEWSYM ModemInitStat, db 0 NEWSYM ModemInitStat, resb 1
ModemProcess db 0 ; Shows current dial/answer process ModemProcess resb 1 ; Shows current dial/answer process
ModemPTimer dd 0 ; Timer for modem process ModemPTimer resd 1 ; Timer for modem process
ModemOKStat db 0 ; OK is detected on modem status ModemOKStat resb 1 ; OK is detected on modem status
SECTION .data
; LOAD STAT INPT OPT VID SND CHT NET GMKEY GUIOP ABT RSET SRC STCN MOVE CMBO ADDO ; LOAD STAT INPT OPT VID SND CHT NET GMKEY GUIOP ABT RSET SRC STCN MOVE CMBO ADDO
GUIwinposxo dd 0,5 ,60 ,30 ,55 ,50 ,35 ,5 ,30 ,10 ,10 ,50 ,65 ,20 ,70 ,50 ,3 ,50 GUIwinposxo dd 0,5 ,60 ,30 ,55 ,50 ,35 ,5 ,30 ,10 ,10 ,50 ,65 ,20 ,70 ,50 ,3 ,50
GUIwinposyo dd 0,20 ,70 ,30 ,20 ,20 ,20 ,20 ,30 ,20 ,20 ,20 ,60 ,30 ,65 ,50 ,22 ,60 GUIwinposyo dd 0,20 ,70 ,30 ,20 ,20 ,20 ,20 ,30 ,20 ,20 ,20 ,60 ,30 ,65 ,50 ,22 ,60
@@ -631,125 +633,133 @@ GUIwinsizex dd 0,244 ,126 ,189 ,167 ,170 ,188 ,244 ,8*16,235 ,240 ,190 ,9*16,8
GUIwinsizey dd 0,190 ,3*16,166 ,190 ,192 ,188 ,191 ,40 ,189 ,150 ,190 ,42 ,40 ,42 ,70 ,190 ,100 GUIwinsizey dd 0,190 ,3*16,166 ,190 ,192 ,188 ,191 ,40 ,189 ,150 ,190 ,42 ,40 ,42 ,70 ,190 ,100
GUIwinptr db 0 GUIwinptr db 0
GUItextcolor db 0,0,0,0,0 section .bss
GUIcmenupos db 0 GUItextcolor resb 5
GUIescpress db 0 GUIcmenupos resb 1
GUIcwinpress db 0 GUIescpress resb 1
GUIpmenupos db 0 GUIcwinpress resb 1
GUIcrowpos dd 0 GUIpmenupos resb 1
GUIpclicked db 0 GUIcrowpos resd 1
GUImouseposx dd 0 GUIpclicked resb 1
GUImouseposy dd 0 GUImouseposx resd 1
GUICYLocPtr dd 0 GUImouseposy resd 1
GUIMenuL dd 0 GUICYLocPtr resd 1
GUIMenuR dd 0 GUIMenuL resd 1
GUIMenuD dd 0 GUIMenuR resd 1
GUIOnMenuItm db 0 GUIMenuD resd 1
NEWSYM GUIQuit, db 0 GUIOnMenuItm resb 1
GUIHold db 0 NEWSYM GUIQuit, resb 1
GUIHoldx dd 0 GUIHold resb 1
GUIHoldy dd 0 GUIHoldx resd 1
GUIHoldxm dd 0 GUIHoldy resd 1
GUIHoldym dd 0 GUIHoldxm resd 1
GUIcolscaleval dd 0 GUIHoldym resd 1
cwindrawn db 0 GUIcolscaleval resd 1
GUIWincol dd 0 cwindrawn resb 1
GUIWincoladd dd 0 GUIWincol resd 1
GUITemp dd 0 GUIWincoladd resd 1
GUIHoldXlimL dd 0 GUITemp resd 1
GUIHoldXlimR dd 0 GUIHoldXlimL resd 1
GUIHoldYlim dd 0 GUIHoldXlimR resd 1
GUIHoldYlimR dd 0 GUIHoldYlim resd 1
cloadnpos dd 0 GUIHoldYlimR resd 1
cloadnposb dd 0 cloadnpos resd 1
cloadmaxlen dd 0 cloadnposb resd 1
cloadnleft dd 0 cloadmaxlen resd 1
cplayernum db 0 cloadnleft resd 1
vbuflimtop dd 0 cplayernum resb 1
vbuflimbot dd 0 vbuflimtop resd 1
GUIScrolTim1 dd 0 vbuflimbot resd 1
GUIScrolTim2 dd 0 GUIScrolTim1 resd 1
GUICHold dd 0 GUIScrolTim2 resd 1
GUICBHold dd 0 GUICHold resd 1
GUICBHold2 dd 0 GUICBHold resd 1
GUIDClickTL dd 0 GUICBHold2 resd 1
GUIDClCWin dd 0 GUIDClickTL resd 1
GUIDClCEntry dd 0 GUIDClCWin resd 1
GUICResetPos dd 0 GUIDClCEntry resd 1
GUICStatePos dd 0 GUICResetPos resd 1
GUICCFlash db 0 GUICStatePos resd 1
GUILDFlash db 0 GUICCFlash resb 1
GUIPalConv dd 0 GUILDFlash resb 1
PrevResoln dw 0 GUIPalConv resd 1
SnowMover dd 0 PrevResoln resw 1
keycontrolval dd 0 SnowMover resd 1
NEWSYM CheatBDoor, db 0 keycontrolval resd 1
NEWSYM ShowTimer, db 0 NEWSYM CheatBDoor, resb 1
NEWSYM MousePRClick, db 0 NEWSYM ShowTimer, resb 1
NEWSYM MouseDis, db 0 NEWSYM MousePRClick, resb 1
NEWSYM NetPlayNoMore, db 0 NEWSYM MouseDis, resb 1
RestoreValues db 0 NEWSYM NetPlayNoMore, resb 1
NEWSYM NetChatFirst, db 0 RestoreValues resb 1
NEWSYM NetServer, db 0 NEWSYM NetChatFirst, resb 1
NEWSYM NetQuitAfter, db 0 NEWSYM NetServer, resb 1
NEWSYM NetNewNick, times 16 db 0 NEWSYM NetQuitAfter, resb 1
NEWSYM NetFilename, times 512 db 0 NEWSYM NetNewNick, resb 16
NEWSYM NetFilename, resb 512
NEWSYM CheatOn, dd 0 NEWSYM CheatOn, resd 1
NEWSYM NumCheats, dd 0 NEWSYM NumCheats, resd 1
NEWSYM cheatdataprev, times 28 db 0 ; leave contents blank NEWSYM cheatdataprev, resb 28 ; leave contents blank
NEWSYM cheatdata, times 28*255+56 db 0 ; toggle, value, address, pvalue, name(22) NEWSYM cheatdata, resb 28*255+56 ; toggle, value, address, pvalue, name(22)
NEWSYM GUIcurrentdir, times 131 db 0 NEWSYM GUIcurrentdir, resb 131
numdrives dd 26 curgsval resb 1
curgsval db 0
SECTION .data
NEWSYM numdrives, dd 26
SubPalTable times 256 db 1 ; Corresponding Gray Scale Color SubPalTable times 256 db 1 ; Corresponding Gray Scale Color
WhichRemote dd 0 ; Modem = 1, IPX = 2, TCP/IP = 4
Connected dd 0
IDCheckPos dd 0
NEWSYM pl1neten, db 0 SECTION .bss
NEWSYM pl2neten, db 0 WhichRemote resd 1 ; Modem = 1, IPX = 2, TCP/IP = 4
NEWSYM pl3neten, db 0 Connected resd 1
NEWSYM pl4neten, db 0 IDCheckPos resd 1
NEWSYM pl5neten, db 0
NEWSYM cnetplaybuf, times 512 db 0 NEWSYM pl1neten, resb 1
NEWSYM cnetptrhead, dd 0 NEWSYM pl2neten, resb 1
NEWSYM cnetptrtail, dd 0 NEWSYM pl3neten, resb 1
NEWSYM prevp1net, dd 0 NEWSYM pl4neten, resb 1
NEWSYM prevp2net, dd 0 NEWSYM pl5neten, resb 1
NEWSYM prevp3net, dd 0 NEWSYM cnetplaybuf, resb 512
NEWSYM prevp4net, dd 0 NEWSYM cnetptrhead, resd 1
NEWSYM prevp5net, dd 0 NEWSYM cnetptrtail, resd 1
NEWSYM netdelayed, db 0 NEWSYM prevp1net, resd 1
NEWSYM ChatProgress,dd 0 NEWSYM prevp2net, resd 1
NEWSYM RecvProgress,dd 0 NEWSYM prevp3net, resd 1
NEWSYM IPXInfoStr, dw 0 NEWSYM prevp4net, resd 1
NEWSYM IPXInfoStrR, dw 0 NEWSYM prevp5net, resd 1
NEWSYM GUICMessage, dd 0 NEWSYM netdelayed, resb 1
NEWSYM GUICTimer, dd 0 NEWSYM ChatProgress,resd 1
NEWSYM GUIOn, db 0 NEWSYM RecvProgress,resd 1
NEWSYM GUIOn2, db 0 NEWSYM IPXInfoStr, resw 1
NEWSYM GUIReset, db 0 NEWSYM IPXInfoStrR, resw 1
NEWSYM GUICMessage, resd 1
NEWSYM GUICTimer, resd 1
NEWSYM GUIOn, resb 1
NEWSYM GUIOn2, resb 1
NEWSYM GUIReset, resb 1
;GOSPort db 0 ;GOSPort db 0
NEWSYM CurPalSelect, db 0 NEWSYM CurPalSelect, resb 1
NEWSYM MotionBlur, resb 1
NEWSYM StartLL, dd 0 NEWSYM StartLL, resd 1
NEWSYM StartLR, dd 0 NEWSYM StartLR, resd 1
NEWSYM LatencyVal, times 32 db 0 NEWSYM LatencyVal, resb 32
NEWSYM NetLoadState, db 0 NEWSYM NetLoadState, resb 1
NEWSYM TRVal, dw 0 NEWSYM TRVal, resw 1
NEWSYM TGVal, dw 0 NEWSYM TGVal, resw 1
NEWSYM TBVal, dw 0 NEWSYM TBVal, resw 1
NEWSYM TRVali, dw 0 NEWSYM TRVali, resw 1
NEWSYM TGVali, dw 0 NEWSYM TGVali, resw 1
NEWSYM TBVali, dw 0 NEWSYM TBVali, resw 1
NEWSYM TRVal2, dw 0 NEWSYM TRVal2, resw 1
NEWSYM TGVal2, dw 0 NEWSYM TGVal2, resw 1
NEWSYM TBVal2, dw 0 NEWSYM TBVal2, resw 1
SECTION .text
%macro stim 0 %macro stim 0
%ifdef __MSDOS__ %ifdef __MSDOS__
@@ -1032,14 +1042,14 @@ NEWSYM ExecGUISaveVars
call GUIDeInit call GUIDeInit
%endmacro %endmacro
SECTION .data SECTION .bss
NEWSYM GUIoldhand9o, dd 0 NEWSYM GUIoldhand9o, resd 1
NEWSYM GUIoldhand9s, dw 0 NEWSYM GUIoldhand9s, resw 1
NEWSYM GUIoldhand8o, dd 0 NEWSYM GUIoldhand8o, resd 1
NEWSYM GUIoldhand8s, dw 0 NEWSYM GUIoldhand8s, resw 1
GUIt1cc dd 0 GUIt1cc resd 1
GUIt1ccSwap db 0 GUIt1ccSwap resb 1
GUIskipnextkey42 db 0 GUIskipnextkey42 resb 1
SECTION .text SECTION .text
NEWSYM GUIinit18_2hz NEWSYM GUIinit18_2hz
@@ -1099,6 +1109,7 @@ NEWSYM GUI36hzcall
and byte[GUINetTextm2+2],0Fh and byte[GUINetTextm2+2],0Fh
ret ret
%ifdef __MSDOS__
NEWSYM GUIhandler8h NEWSYM GUIhandler8h
cli cli
push ds push ds
@@ -1166,6 +1177,7 @@ NEWSYM GUIhandler9h
pop ds pop ds
sti sti
iretd iretd
%endif
%macro loadmenuopen 1 %macro loadmenuopen 1
mov al,[GUIcmenupos] mov al,[GUIcmenupos]
@@ -1211,7 +1223,9 @@ loadnetopen:
loadmenuopen 8 loadmenuopen 8
ret ret
MouseInitOkay db 0 SECTION .bss
MouseInitOkay resb 1
SECTION .text
LoadDetermine: LoadDetermine:
mov byte[GUIGameMenuData+14],1 mov byte[GUIGameMenuData+14],1
@@ -1333,7 +1347,9 @@ DrawSnow:
.nomore .nomore
ret ret
SECTION .data
.giftmsg db 'A GIFT TO YOU IN THE OPTIONS!',0 .giftmsg db 'A GIFT TO YOU IN THE OPTIONS!',0
SECTION .text
ProcessSnowVelocity: ProcessSnowVelocity:
cmp dword[MsgGiftLeft],0 cmp dword[MsgGiftLeft],0
@@ -1388,8 +1404,11 @@ ProcessSnowVelocity:
jnz .loop jnz .loop
ret ret
OkaySC db 0 SECTION .bss
OkaySC resb 1
SECTION .data
cstempfname db 'tmpchtsr.___',0 cstempfname db 'tmpchtsr.___',0
SECTION .text
NEWSYM SaveSramData NEWSYM SaveSramData
@@ -1465,7 +1484,9 @@ NEWSYM ProcRewind
mov dword[eax+8],0 mov dword[eax+8],0
.noteq .noteq
ret ret
.temp dd 0,0 section .bss
.temp resd 2
section .text
%macro ProcessOneDigit 1 %macro ProcessOneDigit 1
cmp dl,9 cmp dl,9
@@ -1500,7 +1521,9 @@ NEWSYM TestSent
mov dword[GUICMessage],.message mov dword[GUICMessage],.message
mov dword[GUICTimer],100000 mov dword[GUICTimer],100000
ret ret
SECTION .data
.message db 0,0,0,0,' ',0,0,0,0,0,0,0 .message db 0,0,0,0,' ',0,0,0,0,0,0,0
SECTION .text
NEWSYM StartGUI NEWSYM StartGUI
; cmp byte[OSPort],1 ; cmp byte[OSPort],1
@@ -1846,12 +1869,14 @@ NEWSYM StartGUI
mov byte[GUIcmenupos],0 mov byte[GUIcmenupos],0
mov byte[GUIcrowpos],0 mov byte[GUIcrowpos],0
call loadnetopen call loadnetopen
%ifdef __MSDOS__
cmp byte[WhichRemote],1 cmp byte[WhichRemote],1
jne .yesdcd jne .yesdcd
call ModemCheckDCD call ModemCheckDCD
cmp al,1 cmp al,1
jne near .nostat20 jne near .nostat20
.yesdcd .yesdcd
%endif
mov byte[RestoreValues],1 mov byte[RestoreValues],1
pushad pushad
@@ -2029,7 +2054,8 @@ NEWSYM StartGUI
.nowater2 .nowater2
cmp byte[GUIEffect],4 cmp byte[GUIEffect],4
jne .nosmoke jne .nosmoke
call DrawSmoke ; call DrawSmoke
call DrawBurn
.nosmoke .nosmoke
; call TestSent ; call TestSent
cmp byte[CNetType],20 cmp byte[CNetType],20
@@ -2087,6 +2113,7 @@ NEWSYM StartGUI
jne near .nomodem jne near .nomodem
.modem .modem
call ProcessModem call ProcessModem
%ifdef __MSDOS__
cmp byte[Connected],1 cmp byte[Connected],1
je near .nomodem je near .nomodem
call ModemGetChar call ModemGetChar
@@ -2121,6 +2148,7 @@ NEWSYM StartGUI
.skipstat .skipstat
mov dh,0 mov dh,0
call NetAddChar call NetAddChar
%endif
.nomodem .nomodem
cmp dword[GUIEditStringcWin],0 cmp dword[GUIEditStringcWin],0
@@ -2249,7 +2277,8 @@ NEWSYM StartGUI
mov dword[nmirept],0 mov dword[nmirept],0
mov dword[nmiprevline],224 mov dword[nmiprevline],224
mov dword[nmistatus],0 mov dword[nmistatus],0
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov byte[NextLineCache],0 mov byte[NextLineCache],0
mov byte[DSPMem+08h],0 mov byte[DSPMem+08h],0
mov byte[DSPMem+18h],0 mov byte[DSPMem+18h],0
@@ -2474,8 +2503,12 @@ NEWSYM StartGUI
call WinErrorB call WinErrorB
jmp continueprog jmp continueprog
CheckSumVal dd 0 SECTION .bss
CheckSumVal resd 1
SECTION .data
WrongCheckSum db 10,13,'ROM Data Mismatch',10,13,10,13,0 WrongCheckSum db 10,13,'ROM Data Mismatch',10,13,10,13,0
SECTION .text
SRAMDirc: SRAMDirc:
; get LoadDrive/LoadDir ; get LoadDrive/LoadDir
@@ -2550,6 +2583,7 @@ guifirsttimemsg:
.mousedis2 .mousedis2
ret ret
SECTION .data
guiftimemsg1 db 'ONE TIME USER REMINDER :',0 guiftimemsg1 db 'ONE TIME USER REMINDER :',0
guiftimemsg2 db 'PLEASE BE SURE TO READ',0 guiftimemsg2 db 'PLEASE BE SURE TO READ',0
guiftimemsg3 db 'GUINOTES.TXT FOR AN',0 guiftimemsg3 db 'GUINOTES.TXT FOR AN',0
@@ -2558,6 +2592,7 @@ guiftimemsg5 db 'ALSO, WHENEVER YOU HAVE',0
guiftimemsg6 db 'PROBLEMS, BE SURE TO READ',0 guiftimemsg6 db 'PROBLEMS, BE SURE TO READ',0
guiftimemsg7 db 'ZSNES.FAQ AND README.TXT',0 guiftimemsg7 db 'ZSNES.FAQ AND README.TXT',0
guiftimemsg8 db 'PRESS "Z" TO CONTINUE.',0 guiftimemsg8 db 'PRESS "Z" TO CONTINUE.',0
SECTION .text
guimustrestartmsg: guimustrestartmsg:
xor ebx,ebx xor ebx,ebx
@@ -2623,11 +2658,13 @@ guimustrestartmsg:
mov byte[GUIQuit],1 mov byte[GUIQuit],1
ret ret
SECTION .data
guiqtimemsg1 db 'ZSNES MUST BE RESTARTED',0 guiqtimemsg1 db 'ZSNES MUST BE RESTARTED',0
guiqtimemsg2 db 'TO USE THIS OPTION.',0 guiqtimemsg2 db 'TO USE THIS OPTION.',0
guiqtimemsg3 db 'THIS PROGRAM WILL NOW',0 guiqtimemsg3 db 'THIS PROGRAM WILL NOW',0
guiqtimemsg4 db 'EXIT.',0 guiqtimemsg4 db 'EXIT.',0
guiqtimemsg8 db 'PRESS ANY KEY.',0 guiqtimemsg8 db 'PRESS ANY KEY.',0
SECTION .text
guiprevideo: guiprevideo:
xor ebx,ebx xor ebx,ebx
@@ -2695,6 +2732,7 @@ guiprevideo:
.mousedis2 .mousedis2
ret ret
SECTION .data
guiprevidmsg1 db 'ZSNES WILL NOW ATTEMPT',0 guiprevidmsg1 db 'ZSNES WILL NOW ATTEMPT',0
guiprevidmsg2 db 'TO CHANGE YOUR VIDEO',0 guiprevidmsg2 db 'TO CHANGE YOUR VIDEO',0
guiprevidmsg3 db 'MODE. IF THE CHANGE',0 guiprevidmsg3 db 'MODE. IF THE CHANGE',0
@@ -2702,6 +2740,7 @@ guiprevidmsg4 db 'IS UNSUCCESSFUL, WAIT',0
guiprevidmsg5 db '10 SECONDS AND VIDEO',0 guiprevidmsg5 db '10 SECONDS AND VIDEO',0
guiprevidmsg6 db 'MODE WILL BE RESET',0 guiprevidmsg6 db 'MODE WILL BE RESET',0
guiprevidmsg7 db 'PRESS ANY KEY',0 guiprevidmsg7 db 'PRESS ANY KEY',0
SECTION .text
guipostvideo: guipostvideo:
mov ecx,255*144 mov ecx,255*144
@@ -2790,8 +2829,10 @@ guipostvideo:
mov byte[GUIpclicked],1 mov byte[GUIpclicked],1
ret ret
SECTION .data
guipostvidmsg1 db 'VIDEO MODE CHANGED.',0 guipostvidmsg1 db 'VIDEO MODE CHANGED.',0
guipostvidmsg2 db 'PRESS ANY KEY',0 guipostvidmsg2 db 'PRESS ANY KEY',0
SECTION .text
guipostvideofail: guipostvideofail:
mov dword[guipostvidptr],guipostvidmsg3b mov dword[guipostvidptr],guipostvidmsg3b
@@ -2883,13 +2924,16 @@ guipostvideofail:
%endif %endif
jmp guipostvideo.pressedfail jmp guipostvideo.pressedfail
SECTION .data
guipostvidmsg1b db 'VIDEO MODE CHANGE FAILED.',0 guipostvidmsg1b db 'VIDEO MODE CHANGE FAILED.',0
guipostvidmsg2b db 'UNABLE TO INIT VESA2:',0 guipostvidmsg2b db 'UNABLE TO INIT VESA2:',0
guipostvidmsg3b db 'AAAAAAAAAAAAAAAAAAAAAAAAA',0 guipostvidmsg3b db 'AAAAAAAAAAAAAAAAAAAAAAAAA',0
guipostvidmsg4b db 'AAAAAAAAAAAAAAAAAAAAAAAAA',0 guipostvidmsg4b db 'AAAAAAAAAAAAAAAAAAAAAAAAA',0
guipostvidmsg5b db 'AAAAAAAAAAAAAAAAAAAAAAAAA',0 guipostvidmsg5b db 'AAAAAAAAAAAAAAAAAAAAAAAAA',0
guipostvidmsg8b db 'PRESS ANY KEY',0 guipostvidmsg8b db 'PRESS ANY KEY',0
guipostvidptr dd 0 SECTION .bss
guipostvidptr resd 1
SECTION .text
GUILoadManualDir GUILoadManualDir
mov ebx,GUILoadTextA mov ebx,GUILoadTextA
@@ -2982,14 +3026,18 @@ GUILoadManualDir
.norefresh .norefresh
ret ret
ManualCPtr dd 0 SECTION .bss
ManualStatus db 0 ManualCPtr resd 1
ManualStatus resb 1
NEWSYM MovieCounter, dd 0 NEWSYM MovieCounter, resd 1
SECTION .data
UnableMovie2 db 'MUST PLAY WITH SOUND OFF',0 UnableMovie2 db 'MUST PLAY WITH SOUND OFF',0
UnableMovie3 db 'MUST PLAY WITH SOUND ON',0 UnableMovie3 db 'MUST PLAY WITH SOUND ON',0
SECTION .text
MoviePlay: MoviePlay:
cmp byte[CNetType],20 cmp byte[CNetType],20
je near .dontplay je near .dontplay
@@ -3029,7 +3077,8 @@ MoviePlay:
mov dword[nmirept],0 mov dword[nmirept],0
mov dword[nmiprevline],224 mov dword[nmiprevline],224
mov dword[nmistatus],0 mov dword[nmistatus],0
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov byte[NextLineCache],0 mov byte[NextLineCache],0
.noextra .noextra
mov al,[RecData] mov al,[RecData]
@@ -3077,12 +3126,15 @@ MoviePlay:
pop eax pop eax
ret ret
NEWSYM Totalbyteloaded, dd 0 SECTION .bss
NEWSYM sramsavedis, db 0 NEWSYM Totalbyteloaded, resd 1
NEWSYM sramsavedis, resb 1
SECTION .data
DevicePtr dd pl1selk,pl2selk,pl3selk,pl4selk,pl5selk DevicePtr dd pl1selk,pl2selk,pl3selk,pl4selk,pl5selk
SECTION .text
CheckMenuItemHelp: CheckMenuItemHelp:
mov al,[GUIcmenupos] mov al,[GUIcmenupos]
mov [GUIpmenupos],al mov [GUIpmenupos],al
@@ -3370,7 +3422,9 @@ GUITryMenuItem:
.nomisc .nomisc
ret ret
SECTION .data
.message1 db 'CONFIGURATION FILES SAVED.',0 .message1 db 'CONFIGURATION FILES SAVED.',0
SECTION .text
DisplayBoxes: DisplayBoxes:
xor esi,esi xor esi,esi
@@ -3585,8 +3639,9 @@ GUIProcReset:
dec byte[GUIwinptr] dec byte[GUIwinptr]
ret ret
LoadDuplicFound db 0 SECTION .bss
LoadDuplicFound resb 1
SECTION .text
%macro GUIDMHelp 4 %macro GUIDMHelp 4
mov byte[GUItextcolor],46 mov byte[GUItextcolor],46
@@ -4289,7 +4344,9 @@ GUISetPal:
jnz .next jnz .next
ret ret
NEWSYM GUICPC, times 256 dw 0 SECTION .bss ;ALIGN=32
NEWSYM GUICPC, resw 256
SECTION .text
%macro GUIPal16b 4 %macro GUIPal16b 4
mov ax,%2 mov ax,%2
@@ -4746,9 +4803,11 @@ GUISetPal16:
jnz .next jnz .next
ret ret
SECTION .data
.multab db 1,1,1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,11,12,12,13,14,14,15,16,16, .multab db 1,1,1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,11,12,12,13,14,14,15,16,16,
db 17,18,18,19,20,20,21,22,22,23,24,24,25,26,26,27,28,28,29,30,30, db 17,18,18,19,20,20,21,22,22,23,24,24,25,26,26,27,28,28,29,30,30,
db 31 db 31
SECTION .text
GUIBufferData: GUIBufferData:
mov ecx,16384 mov ecx,16384
@@ -4906,6 +4965,7 @@ GUIconvpal:
mov [cgram],ax mov [cgram],ax
ret ret
SECTION .data
GUIMousePtr db 50+88,47+88,45+88,43+88,42+88,00,00,00 GUIMousePtr db 50+88,47+88,45+88,43+88,42+88,00,00,00
db 53+88,52+88,46+88,42+88,00,00,00,00 db 53+88,52+88,46+88,42+88,00,00,00,00
db 55+88,54+88,54+88,44+88,00,00,00,00 db 55+88,54+88,54+88,44+88,00,00,00,00
@@ -5505,4 +5565,6 @@ db 57,103,110,236,113,118,203,200,22,87,251,7,138,37,12,84,221,171,51,209
db 242,37,89,73,151,162,139,189,131,209,221,96,107,144,175,79,199,123,98,138 db 242,37,89,73,151,162,139,189,131,209,221,96,107,144,175,79,199,123,98,138
db 226,86,221,254,72,14,126,180,200,171,85,94,120,124,196,225,150,57,219,158 db 226,86,221,254,72,14,126,180,200,171,85,94,120,124,196,225,150,57,219,158
SECTION .text
NEWSYM GuiAsmEnd NEWSYM GuiAsmEnd

View File

@@ -222,8 +222,10 @@ CheatCodeSearchProcess:
mov byte[CopyRamToggle],1 mov byte[CopyRamToggle],1
ret ret
CopyRamToggle db 0 SECTION .bss
FirstSearch db 0 CopyRamToggle resb 1
FirstSearch resb 1
SECTION .text
CheatCodeSearchInit: CheatCodeSearchInit:
mov byte[CSInputDisplay],'_' mov byte[CSInputDisplay],'_'
@@ -1189,7 +1191,9 @@ decodegg:
mov dword[GUIcurrentcheatviewloc],0 mov dword[GUIcurrentcheatviewloc],0
.noview .noview
ret ret
SECTION .data
.GG2Norm db 04h,06h,0Dh,0Eh,02h,07h,08h,03h,0Bh,05h,0Ch,09h,0Ah,00h,0Fh,01h .GG2Norm db 04h,06h,0Dh,0Eh,02h,07h,08h,03h,0Bh,05h,0Ch,09h,0Ah,00h,0Fh,01h
SECTION .text
decodepar: decodepar:
; convert code to number format ; convert code to number format
@@ -1344,10 +1348,12 @@ guicheaterror:
mov dword[GUIcurrentcheatwin],1 mov dword[GUIcurrentcheatwin],1
mov byte[GUIpclicked],1 mov byte[GUIpclicked],1
ret ret
SECTION .data
guicheaterror1 db 'INVALID CODE! YOU',0 guicheaterror1 db 'INVALID CODE! YOU',0
guicheaterror2 db 'MUST ENTER A VALID',0 guicheaterror2 db 'MUST ENTER A VALID',0
guicheaterror3 db 'GAME GENIE,PAR, OR',0 guicheaterror3 db 'GAME GENIE,PAR, OR',0
guicheaterror4 db 'GOLD FINGER CODE.',0 guicheaterror4 db 'GOLD FINGER CODE.',0
guicheaterror5 db 'PRESS ANY KEY.',0 guicheaterror5 db 'PRESS ANY KEY.',0
guicheatvalrep db 0 SECTION .bss
guicheatvalrep resb 1
SECTION .text

View File

@@ -122,14 +122,17 @@
%%noclick %%noclick
%endmacro %endmacro
GUIfirstkey dd 0 SECTION .bss
GUIlastkey dd 0 GUIfirstkey resd 1
NEWSYM GUIkeydelay, dd 0 GUIlastkey resd 1
NEWSYM GUIkeydelay2, dd 0 NEWSYM GUIkeydelay, resd 1
GUInextkeydelay dd 0 NEWSYM GUIkeydelay2, resd 1
GUIJoyPadnk db 0,0,0,0,0,0,0,0 GUInextkeydelay resd 1
NEWSYM GUIDelayB, db 0 GUIJoyPadnk resb 8
UseExtKey db 0 NEWSYM GUIDelayB, resb 1
UseExtKey resb 1
SECTION .text
GUIgetcurrentinput: GUIgetcurrentinput:
cmp byte[HoldCommand],2 cmp byte[HoldCommand],2
@@ -331,8 +334,10 @@ GUIgetcurrentinput:
cmp dh,32 cmp dh,32
jb .noprocess7 jb .noprocess7
.ret .ret
%ifdef __MSDOS__
mov al,dh mov al,dh
call ModemSendChar call ModemSendChar
%endif
ret ret
.noprocess7 .noprocess7
cmp dl,27 cmp dl,27
@@ -352,17 +357,21 @@ GUIgetcurrentinput:
jmp .nonetwin jmp .nonetwin
.yesnet15 .yesnet15
mov byte[CNetType],0 mov byte[CNetType],0
%ifdef __MSDOS__
; cmp byte[OSPort],1 ; cmp byte[OSPort],1
; je .nodeinitipx ; je .nodeinitipx
call deinitipx call deinitipx
.nodeinitipx .nodeinitipx
%endif
jmp .closewin jmp .closewin
.yesnetwin .yesnetwin
%ifdef __MSDOS__
cmp byte[ModemInitStat],0 cmp byte[ModemInitStat],0
je .nodeinitmodem je .nodeinitmodem
call DeInitModemC call DeInitModemC
mov byte[ModemInitStat],0 mov byte[ModemInitStat],0
.nodeinitmodem .nodeinitmodem
%endif
mov byte[CNetType],1 mov byte[CNetType],1
ret ret
.nonetwin .nonetwin
@@ -795,7 +804,9 @@ GUITCPIPKeys:
ret ret
SECTION .data
NEWSYM TCPIPPortNum, dd 7845 NEWSYM TCPIPPortNum, dd 7845
SECTION .text
GUIOptionKeys: GUIOptionKeys:
cmp dh,'a' cmp dh,'a'
@@ -1158,16 +1169,6 @@ GUIVideoKeys:
je .nohiresmode7 je .nohiresmode7
xor byte[Mode7HiRes16b],1 xor byte[Mode7HiRes16b],1
.nohiresmode7 .nohiresmode7
%ifndef __MSDOS__
cmp dh,'M'
jne .nomotionblur
xor ebx,ebx
mov bl,[cvidmode]
cmp byte[GUIMBVID+ebx],0
je .nomotionblur
xor byte[MotionBlur],1
.nomotionblur
%endif
cmp dh,'B' cmp dh,'B'
jne .nobilinearfilter jne .nobilinearfilter
xor ebx,ebx xor ebx,ebx
@@ -1176,6 +1177,7 @@ GUIVideoKeys:
je .nobilinearfilter je .nobilinearfilter
xor byte[BilinearFilter],1 xor byte[BilinearFilter],1
.nobilinearfilter .nobilinearfilter
%ifdef __WIN32__
cmp dh,'T' cmp dh,'T'
jne .notriplebufferwin jne .notriplebufferwin
xor eax,eax xor eax,eax
@@ -1183,9 +1185,12 @@ GUIVideoKeys:
cmp byte[GUITBWVID+eax],0 cmp byte[GUITBWVID+eax],0
je near .notriplebufferwin je near .notriplebufferwin
xor byte[TripleBufferWin],1 xor byte[TripleBufferWin],1
mov byte[vsyncon],0 ; mov byte[vsyncon],0
mov byte[cfgvsync],0 ; mov byte[cfgvsync],0
call initDirectDraw
.notriplebufferwin .notriplebufferwin
%endif
%ifdef __MSDOS__
cmp dh,'T' cmp dh,'T'
jne .notriplebuffer jne .notriplebuffer
xor ebx,ebx xor ebx,ebx
@@ -1193,9 +1198,10 @@ GUIVideoKeys:
cmp byte[GUITBVID+ebx],0 cmp byte[GUITBVID+ebx],0
je .notriplebuffer je .notriplebuffer
xor byte[Triplebufen],1 xor byte[Triplebufen],1
mov byte[vsyncon],0 ; mov byte[vsyncon],0
mov byte[cfgvsync],0 ; mov byte[cfgvsync],0
.notriplebuffer .notriplebuffer
%endif
cmp dh,'G' cmp dh,'G'
jne .nograyscale jne .nograyscale
xor byte[GrayscaleMode],1 xor byte[GrayscaleMode],1
@@ -1207,10 +1213,11 @@ GUIVideoKeys:
mov al,[vsyncon] mov al,[vsyncon]
mov [cfgvsync],al mov [cfgvsync],al
%ifdef __WIN32__ %ifdef __WIN32__
mov byte[TripleBufferWin],0 ; mov byte[TripleBufferWin],0
call initDirectDraw
%endif %endif
%ifdef __MSDOS__ %ifdef __MSDOS__
mov byte[Triplebufen],0 ; mov byte[Triplebufen],0
%endif %endif
.novsync .novsync
%endif %endif
@@ -1226,6 +1233,11 @@ GUISoundKeys:
cmp dh,'E' cmp dh,'E'
jne .notenablesound jne .notenablesound
xor byte[cfgsoundon],1 xor byte[cfgsoundon],1
%ifdef __WIN32__
pushad
call reInitSound
popad
%endif
.notenablesound .notenablesound
%ifdef __MSDOS__ %ifdef __MSDOS__
cmp dh,'F' cmp dh,'F'
@@ -1300,7 +1312,9 @@ GUISoundKeys:
%endif %endif
ret ret
SECTION .data
.sampratenext db 1,4,5,6,2,3,0,0,0,0 .sampratenext db 1,4,5,6,2,3,0,0,0,0
SECTION .text
GUINetMenuKeys1: GUINetMenuKeys1:
cmp dh,'a' cmp dh,'a'
@@ -1321,22 +1335,26 @@ GUINetMenuKeys1:
jne .notmanual jne .notmanual
mov byte[CNetType],12 mov byte[CNetType],12
mov byte[ModemProcess],0 mov byte[ModemProcess],0
%ifdef __MSDOS__
cmp byte[ModemInitStat],1 cmp byte[ModemInitStat],1
je .noinit je .noinit
call InitModem call InitModem
mov byte[ModemInitStat],1 mov byte[ModemInitStat],1
.noinit .noinit
%endif
ret ret
.notmanual .notmanual
cmp dh,'W' cmp dh,'W'
jne .notwait jne .notwait
mov byte[CNetType],10 mov byte[CNetType],10
mov byte[ModemProcess],0 mov byte[ModemProcess],0
%ifdef __MSDOS__
cmp byte[ModemInitStat],1 cmp byte[ModemInitStat],1
je .noinit2 je .noinit2
call InitModem call InitModem
mov byte[ModemInitStat],1 mov byte[ModemInitStat],1
.noinit2 .noinit2
%endif
ret ret
.notwait .notwait
ret ret
@@ -1357,10 +1375,12 @@ GUIGetInputLine:
jne .nodial jne .nodial
mov byte[CNetType],11 mov byte[CNetType],11
mov byte[ModemProcess],0 mov byte[ModemProcess],0
%ifdef __MSDOS__
cmp byte[ModemInitStat],1 cmp byte[ModemInitStat],1
je .noinit je .noinit
call InitModem call InitModem
mov byte[ModemInitStat],1 mov byte[ModemInitStat],1
%endif
.noedit .noedit
ret ret
.noinit .noinit
@@ -1409,12 +1429,14 @@ GUIGetInputLine:
mov [GUIEditStringcLen],eax mov [GUIEditStringcLen],eax
ret ret
GUIEditString dd 0 ; Pointer to string SECTION .bss
GUIEditStringcLen dd 0 ; Pointer to end of string (done in function) GUIEditString resd 1 ; Pointer to string
GUIEditStringmLen dd 0 ; Max length of string GUIEditStringcLen resd 1 ; Pointer to end of string (done in function)
GUIEditStringLTxt dd 0 ; blink value, should be set to 0 when box selected GUIEditStringmLen resd 1 ; Max length of string
GUIEditStringLstb dd 0 ; if cursor is placed (set in main function) GUIEditStringLTxt resd 1 ; blink value, should be set to 0 when box selected
GUIEditStringcWin dd 0 ; 0 = no text window selected GUIEditStringLstb resd 1 ; if cursor is placed (set in main function)
GUIEditStringcWin resd 1 ; 0 = no text window selected
SECTION .text
GUIComboKeys: GUIComboKeys:
; Calculate Position ; Calculate Position
@@ -1837,8 +1859,10 @@ InsertSearchCharacter:
pop edx pop edx
ret ret
CSOverValue db 0 SECTION .bss
CSCurValue dd 0 CSOverValue resb 1
CSCurValue resd 1
SECTION .text
InsertSearchDescription: InsertSearchDescription:
mov eax,CSDescDisplay mov eax,CSDescDisplay
@@ -2792,9 +2816,11 @@ GUILoadKeys:
call GUILoadData call GUILoadData
.notdirectload .notdirectload
ret ret
.foundval dd 0 SECTION .bss
.numfound dd 0 .foundval resd 1
.maxfound dd 0 .numfound resd 1
.maxfound resd 1
SECTION .text
.dirwin .dirwin
%ifdef __LINUX__ %ifdef __LINUX__

View File

@@ -166,7 +166,9 @@
;LGUI ;LGUI
netlastloaded db 0 SECTION .bss
netlastloaded resb 1
SECTION .text
GUIloadfilename: GUIloadfilename:
cmp byte[CNetType],15 cmp byte[CNetType],15
@@ -266,7 +268,8 @@ GUIloadfilename:
mov dword[nmirept],0 mov dword[nmirept],0
mov dword[nmiprevline],224 mov dword[nmiprevline],224
mov dword[nmistatus],0 mov dword[nmistatus],0
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov byte[NextLineCache],0 mov byte[NextLineCache],0
mov byte[curexecstate],1 mov byte[curexecstate],1
@@ -339,14 +342,12 @@ GUIloadfilename:
mov al,2 mov al,2
.nopal2 .nopal2
mov byte[romispal],0 mov byte[romispal],0
mov word[totlines],262 mov word[totlines],263
mov dword[MsgCount],120 mov dword[MsgCount],120
cmp al,1 cmp al,1
jbe .nopal jbe .nopal
cmp al,0Dh
je .nopal
mov byte[romispal],1 mov byte[romispal],1
mov word[totlines],314 mov word[totlines],313
mov dword[MsgCount],100 mov dword[MsgCount],100
.nopal .nopal
call showinfogui call showinfogui
@@ -565,7 +566,9 @@ GUILoadData:
mov byte[GUIwinorder+eax],0 mov byte[GUIwinorder+eax],0
dec byte[GUIwinptr] dec byte[GUIwinptr]
ret ret
SECTION .data
.drivefn db 'A:\temp.tmp',0 .drivefn db 'A:\temp.tmp',0
SECTION .text
GetNormalEntries2: GetNormalEntries2:
cmp byte[showallext],1 cmp byte[showallext],1
@@ -781,8 +784,10 @@ GetLoadLfn:
pop edi pop edi
ret ret
LFNData times 400 db 0 SECTION .bss
LFNHandle dw 0 LFNData resb 400
LFNHandle resw 1
SECTION .text
GetLoadNormal: GetLoadNormal:
call GetNormalEntries2 call GetNormalEntries2
@@ -1035,8 +1040,11 @@ GetLoadHeader:
jnz .loop3 jnz .loop3
ret ret
SECTION .data
.invfile db ' ** INVALID FILE **',0 .invfile db ' ** INVALID FILE **',0
fnameheadtemp times 22 db 0 SECTION .bss
fnameheadtemp resb 22
SECTION .text
GetNormalDirEntries2: GetNormalDirEntries2:
GUIGetDir2 GUIGetDir2
@@ -1090,7 +1098,9 @@ GetLoadDirNormallfn:
pop edi pop edi
ret ret
Win95Failed db 0 SECTION .bss
Win95Failed resb 1
SECTION .text
NEWSYM GetCurDir NEWSYM GetCurDir
; get Drive/Dir ; get Drive/Dir
@@ -1400,16 +1410,19 @@ GUIGetDirs:
%endif %endif
ret ret
BubbleSorted db 0 SECTION .bss
GUIcurrentfilewin dd 0 BubbleSorted resb 1
GUIcurrentviewloc dd 0 GUIcurrentfilewin resd 1
GUIcurrentcursloc dd 0 GUIcurrentviewloc resd 1
GUIcurrentdirviewloc dd 0 GUIcurrentcursloc resd 1
GUIcurrentdircursloc dd 0 GUIcurrentdirviewloc resd 1
GUIdirStartLoc dd 0 GUIcurrentdircursloc resd 1
GUInumentries dd 0 GUIdirStartLoc resd 1
GUIdirentries dd 0 GUInumentries resd 1
GUIfileentries dd 0 GUIdirentries resd 1
GUIfileentries resd 0
SECTION .data
%ifdef __LINUX__ %ifdef __LINUX__
NEWSYM GUIsmcfind, db '*.[sS][mM][cC]',0 NEWSYM GUIsmcfind, db '*.[sS][mM][cC]',0
NEWSYM GUIsfcfind, db '*.[sS][fF][cC]',0 NEWSYM GUIsfcfind, db '*.[sS][fF][cC]',0
@@ -1444,8 +1457,12 @@ NEWSYM GUIfindall, db '*',0
GUIfindDIR db '*.*',0 GUIfindDIR db '*.*',0
NEWSYM GUIfindall, db '*.*',0 NEWSYM GUIfindall, db '*.*',0
%endif %endif
SECTION .data
NEWSYM DTALoc, times 2048+32 db 0 NEWSYM DTALoc, times 2048+32 db 0
SECTION .text
; Routines to load from the Quick Menu ; Routines to load from the Quick Menu
loadquickfname: loadquickfname:
pushad pushad
@@ -1622,4 +1639,7 @@ loadquickfname:
.failed .failed
pop eax pop eax
ret ret
.temp times 256 dd 0
SECTION .bss
.temp resd 256
SECTION .text

View File

@@ -90,7 +90,8 @@ MovieRecord:
mov dword[nmirept],0 mov dword[nmirept],0
mov dword[nmiprevline],224 mov dword[nmiprevline],224
mov dword[nmistatus],0 mov dword[nmistatus],0
mov byte[spcnumread],0 mov dword[spcnumread],0
mov dword[spchalted],-1
mov byte[NextLineCache],0 mov byte[NextLineCache],0
mov dword[PJoyAOrig],0 mov dword[PJoyAOrig],0
mov dword[PJoyBOrig],0 mov dword[PJoyBOrig],0
@@ -114,12 +115,15 @@ MovieRecord:
.dontrecord .dontrecord
ret ret
MovieRecordWinVal db 0 SECTION .bss
NEWSYM MovieProcessing, db 0 MovieRecordWinVal resb 1
NEWSYM MovieFileHand, dw 0 NEWSYM MovieProcessing, resb 1
NEWSYM RepeatFrame, db 0 NEWSYM MovieFileHand, resw 1
NEWSYM RecData, times 16 db 0 NEWSYM RepeatFrame, resb 1
NEWSYM NoPictureSave, db 0 NEWSYM RecData, resb 16
NEWSYM NoPictureSave, resb 1
SECTION .text
SkipMovie: SkipMovie:
mov byte[MovieRecordWinVal],0 mov byte[MovieRecordWinVal],0
@@ -190,6 +194,7 @@ CalibrateDispB:
call WaitForKey call WaitForKey
ret ret
SECTION .data
guicalberror1 db 'PRESS THE TOP LEFT',0 guicalberror1 db 'PRESS THE TOP LEFT',0
guicalberror2 db 'CORNER AND PRESS A',0 guicalberror2 db 'CORNER AND PRESS A',0
guicalberror3 db 'BUTTON OR KEY',0 guicalberror3 db 'BUTTON OR KEY',0
@@ -197,6 +202,7 @@ guicalberror4 db 'PRESS THE BOTTOM',0
guicalberror5 db 'RIGHT CORNER AND',0 guicalberror5 db 'RIGHT CORNER AND',0
guicalberror6 db 'PRESS A BUTTON OR',0 guicalberror6 db 'PRESS A BUTTON OR',0
guicalberror7 db 'KEY',0 guicalberror7 db 'KEY',0
SECTION .text
SetAllKeys: SetAllKeys:
@@ -247,7 +253,9 @@ SetAllKeys:
dec ecx dec ecx
jnz .loop jnz .loop
ret ret
SECTION .data
.ordercalb dd 2,3,4,5,1,0,7,10,6,9,8,11 .ordercalb dd 2,3,4,5,1,0,7,10,6,9,8,11
SECTION .text
CalibrateDev1: CalibrateDev1:
xor eax,eax xor eax,eax
@@ -392,10 +400,12 @@ CalibrateDev1:
mov [JoyMaxY209],eax mov [JoyMaxY209],eax
mov [CalibYmax209],eax mov [CalibYmax209],eax
ret ret
.joyblx dd 0 SECTION .bss
.joybly dd 0 .joyblx resd 1
.joybcx dd 0 .joybly resd 1
.joybcy dd 0 .joybcx resd 1
.joybcy resd 1
SECTION .text
SetDevice: SetDevice:

View File

@@ -23,10 +23,12 @@ EXTSYM CheckScreenSaver
EXTSYM MinimizeWindow EXTSYM MinimizeWindow
%endif %endif
lastmouseholded db 0 SECTION .bss
mousebuttonstat dw 0 lastmouseholded resb 1
MouseMoveOkay db 0 mousebuttonstat resw 1
LastHoldEnable db 0 MouseMoveOkay resb 1
LastHoldEnable resb 1
SECTION .text
ProcessMouse: ProcessMouse:
; Process holds ; Process holds
@@ -832,6 +834,9 @@ GUIProcVideo:
je .failed2 je .failed2
mov dword[GUIkeydelay],0 mov dword[GUIkeydelay],0
ret ret
.fullsc
mov [PrevFSMode],al
ret
.failed .failed
mov byte[videotroub],0 mov byte[videotroub],0
mov al,[.prevvid] mov al,[.prevvid]
@@ -851,7 +856,9 @@ GUIProcVideo:
call GUISetPal call GUISetPal
mov dword[GUIkeydelay],0 mov dword[GUIkeydelay],0
ret ret
.prevvid db 0 SECTION .bss
.prevvid resb 1
SECTION .text
NEWSYM SwitchFullScreen NEWSYM SwitchFullScreen
pushad pushad
@@ -1007,6 +1014,43 @@ GUIWinClicked:
%%noclick %%noclick
%endmacro %endmacro
%macro GUIClickCButtonf 4
cmp eax,%1+1
jl %%noclick
cmp edx,%2+3
jl %%noclick
cmp eax,%1+6
jg %%noclick
cmp edx,%2+8
jg %%noclick
xor %3,1
%ifdef __WIN32__
pushad
call %4
popad
%endif
%%noclick
%endmacro
%macro GUIClickCButtonfT 5
cmp eax,%1+1
jl %%noclick
cmp edx,%2+3
jl %%noclick
cmp eax,%1+6
jg %%noclick
cmp edx,%2+8
jg %%noclick
xor %3,1
mov %4,0
%ifdef __WIN32__
pushad
call %5
popad
%endif
%%noclick
%endmacro
%macro GUIClickCButtonC 3 %macro GUIClickCButtonC 3
cmp eax,%1+1 cmp eax,%1+1
jl %%noclick jl %%noclick
@@ -1108,6 +1152,29 @@ GUIWinClicked:
%%noclick %%noclick
%endmacro %endmacro
%ifndef __LINUX__
%macro GUIClickCButton2r 5
cmp eax,%1+1
jl %%noclick
cmp edx,%2+3
jl %%noclick
cmp eax,%1+6
jg %%noclick
cmp edx,%2+8
jg %%noclick
xor %3,%5
mov al,%3
mov %4,al
%ifdef __WIN32__
pushad
call initDirectDraw
popad
%endif
ret
%%noclick
%endmacro
%endif
%macro GUIClickCButton3 5 %macro GUIClickCButton3 5
cmp eax,%1+1 cmp eax,%1+1
jl %%noclick jl %%noclick
@@ -1443,11 +1510,13 @@ GUIWinClicked:
%%nolower %%nolower
%endmacro %endmacro
GUIlastdispval dd 0 SECTION .bss
GUIdispmode dd 0 GUIlastdispval resd 1
GUIlastypos dd 0 GUIdispmode resd 1
GUIlastcpos dd 0 GUIlastypos resd 1
GUIlastvpos dd 0 GUIlastcpos resd 1
GUIlastvpos resd 1
SECTION .text
%macro GUISlidebarImpl 10 ; x1,y1,x2,y2,GUI?StA,ScrnSize,ViewLoc,CursLoc,Entries,win# %macro GUISlidebarImpl 10 ; x1,y1,x2,y2,GUI?StA,ScrnSize,ViewLoc,CursLoc,Entries,win#
mov dword[GUIdispmode],0 mov dword[GUIdispmode],0
@@ -2243,7 +2312,7 @@ DisplayGUIVideoClick:
.nocheckboxttb .nocheckboxttb
GUIClickCButton 11,183,byte[GrayscaleMode] GUIClickCButton 11,183,byte[GrayscaleMode]
%ifdef __WIN32__ %ifdef __WIN32__
GUIClickCButtonT 115,183,byte[vsyncon],byte[TripleBufferWin] GUIClickCButtonf 115,183,byte[vsyncon],initDirectDraw
%endif %endif
%ifdef __MSDOS__ %ifdef __MSDOS__
GUIClickCButtonT 115,183,byte[vsyncon],byte[Triplebufen] GUIClickCButtonT 115,183,byte[vsyncon],byte[Triplebufen]
@@ -2251,16 +2320,9 @@ DisplayGUIVideoClick:
xor ebx,ebx xor ebx,ebx
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUIM7VID+ebx],0 cmp byte[GUIM7VID+ebx],0
je .nocheckboxm7 je .nocheckboxtm7
GUIClickCButton5 11,173,byte[Mode7HiRes16b],1 GUIClickCButton5 11,173,byte[Mode7HiRes16b],1
.nocheckboxm7 .nocheckboxtm7
%ifndef __MSDOS__
mov bl,[cvidmode]
cmp byte[GUIMBVID+ebx],0
je .nocheckboxmb
GUIClickCButton5 11,173,byte[MotionBlur],1
.nocheckboxmb
%endif
xor ebx,ebx xor ebx,ebx
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUIHSVID+ebx],0 cmp byte[GUIHSVID+ebx],0
@@ -2273,7 +2335,7 @@ DisplayGUIVideoClick:
mov bl,[cvidmode] mov bl,[cvidmode]
cmp byte[GUITBWVID+ebx],0 cmp byte[GUITBWVID+ebx],0
je near .notriplebufferwin je near .notriplebufferwin
GUIClickCButtonT 11,123,byte[TripleBufferWin],byte[vsyncon] GUIClickCButtonf 11,123,byte[TripleBufferWin],initDirectDraw
.notriplebufferwin .notriplebufferwin
%endif %endif
xor ebx,ebx xor ebx,ebx
@@ -2320,15 +2382,17 @@ DisplayGUIVideoClick:
xor al,al xor al,al
ret ret
GUINumValue dd 0 SECTION .bss
GUIBlankVar dd 0 GUINumValue resd 1
GUIBlankVar resd 1
SECTION .text
DisplayGUISoundClick: DisplayGUISoundClick:
mov eax,[GUImouseposx] mov eax,[GUImouseposx]
sub eax,[GUIwinposx+6*4] sub eax,[GUIwinposx+6*4]
mov edx,[GUImouseposy] mov edx,[GUImouseposy]
sub edx,[GUIwinposy+6*4] sub edx,[GUIwinposy+6*4]
GUIClickCButton 11,21,byte[cfgsoundon] GUIClickCButtonf 11,21,byte[cfgsoundon],reInitSound
%ifdef __MSDOS__ %ifdef __MSDOS__
GUIClickCButton 102,21,byte[cfgforce8b] GUIClickCButton 102,21,byte[cfgforce8b]
%endif %endif
@@ -2404,7 +2468,9 @@ DisplayGUISoundClick:
.nomovebar .nomovebar
ret ret
SECTION .data
sampratenext db 1,4,5,6,2,3,0,0,0,0 sampratenext db 1,4,5,6,2,3,0,0,0,0
SECTION .text
%macro GUIBoxVar 6 %macro GUIBoxVar 6
cmp eax,%1 cmp eax,%1
@@ -2600,9 +2666,11 @@ guipresstest:
; pop ebx ; pop ebx
ret ret
SECTION .data
guipresstext1 db 'ENTER THE KEY',0 guipresstext1 db 'ENTER THE KEY',0
guipresstext2 db 'OR BUTTON TO USE',0 guipresstext2 db 'OR BUTTON TO USE',0
guipresstext3 db '(ESC TO CLEAR)',0 guipresstext3 db '(ESC TO CLEAR)',0
SECTION .text
guipresstestb: guipresstestb:
call GUIUnBuffer call GUIUnBuffer
@@ -2674,6 +2742,7 @@ guipresstestb:
; pop ebx ; pop ebx
ret ret
SECTION .data
guipresstext3b db '(ESC TO SKIP)',0 guipresstext3b db '(ESC TO SKIP)',0
guipresstext4b db 'FOR UP ',0 guipresstext4b db 'FOR UP ',0
db 'FOR DOWN ',0 db 'FOR DOWN ',0
@@ -2687,8 +2756,10 @@ db 'FOR X (TOP BUTTON) ',0
db 'FOR Y (LEFT BUTTON) ',0 db 'FOR Y (LEFT BUTTON) ',0
db 'FOR THE L BUTTON ',0 db 'FOR THE L BUTTON ',0
db 'FOR THE R BUTTON ',0 db 'FOR THE R BUTTON ',0
guipressptr dd 0 SECTION .bss
guicpressptr dd 0 guipressptr resd 1
guicpressptr resd 1
SECTION .text
DisplayGameOptnsClick: DisplayGameOptnsClick:
; Process boxes ; Process boxes

View File

@@ -19,6 +19,7 @@
; GUI NetPlay Routines (Modem,IPX,UDP+TCP/IP) ; GUI NetPlay Routines (Modem,IPX,UDP+TCP/IP)
ProcessModem: ProcessModem:
%ifdef __WIN32__
cmp byte[ModemProcess],40 cmp byte[ModemProcess],40
jne near .noprocess40 jne near .noprocess40
cmp byte[maxskip],3 cmp byte[maxskip],3
@@ -28,7 +29,7 @@ ProcessModem:
mov byte[frameskip],0 mov byte[frameskip],0
mov byte[Latencytochange],3 mov byte[Latencytochange],3
mov byte[Latency],3 mov byte[Latency],3
mov byte[IPXSearchval],0 ; mov byte[IPXSearchval],0
mov byte[RemoteDisconnect],0 mov byte[RemoteDisconnect],0
mov byte[HoldCommand],1 mov byte[HoldCommand],1
mov byte[RemoteCommand],1 mov byte[RemoteCommand],1
@@ -63,6 +64,7 @@ ProcessModem:
call .writestr call .writestr
mov byte[ModemProcess],42 mov byte[ModemProcess],42
ret ret
SECTION .data
.tcpipdones db 'DONE',13,10,13,10,'WAITING FOR CLIENT...',0 .tcpipdones db 'DONE',13,10,13,10,'WAITING FOR CLIENT...',0
.tcpipdonec db 'DONE',13,10,13,10,'CONNECTING TO SERVER...',0 .tcpipdonec db 'DONE',13,10,13,10,'CONNECTING TO SERVER...',0
.tcpipdones2 db 13,10,13,10,'FOUND CLIENT.',0 .tcpipdones2 db 13,10,13,10,'FOUND CLIENT.',0
@@ -77,6 +79,8 @@ ProcessModem:
.errorinit db 'FAILED NET INIT',0 .errorinit db 'FAILED NET INIT',0
.errorinit2 db 'CANNOT START SERVER',0 .errorinit2 db 'CANNOT START SERVER',0
.errorinit3 db 'CANNOT CONNECT',0 .errorinit3 db 'CANNOT CONNECT',0
SECTION .text
.noprocess40 .noprocess40
cmp byte[ModemProcess],41 cmp byte[ModemProcess],41
jne near .noprocess41 jne near .noprocess41
@@ -87,7 +91,7 @@ ProcessModem:
mov byte[frameskip],0 mov byte[frameskip],0
mov byte[Latencytochange],3 mov byte[Latencytochange],3
mov byte[Latency],3 mov byte[Latency],3
mov byte[IPXSearchval],0 ; mov byte[IPXSearchval],0
mov byte[RemoteDisconnect],0 mov byte[RemoteDisconnect],0
mov byte[HoldCommand],1 mov byte[HoldCommand],1
mov byte[RemoteCommand],1 mov byte[RemoteCommand],1
@@ -226,6 +230,8 @@ ProcessModem:
mov byte[ModemProcess],66 mov byte[ModemProcess],66
ret ret
.noprocess47 .noprocess47
%endif
%ifdef __MSDOS__
cmp byte[ModemProcess],30 cmp byte[ModemProcess],30
jne near .noprocess30 jne near .noprocess30
mov byte[Latencytochange],2 mov byte[Latencytochange],2
@@ -477,6 +483,7 @@ ProcessModem:
.nocdc7 .nocdc7
ret ret
.noprocess7 .noprocess7
%endif
; Connect initialization ; Connect initialization
cmp byte[ModemProcess],64 cmp byte[ModemProcess],64
@@ -746,7 +753,9 @@ ProcessModem:
mov dl,[.hexval+edx] mov dl,[.hexval+edx]
call NetAddChar call NetAddChar
ret ret
SECTION .data
.hexval db '0123456789ABCDEF' .hexval db '0123456789ABCDEF'
%ifdef __MSDOS__
.unableinit db 'CANNOT INIT DRIVER!',13,10,0 .unableinit db 'CANNOT INIT DRIVER!',13,10,0
.init db 'ZSNES MODEM TERMINAL',13,10,0 .init db 'ZSNES MODEM TERMINAL',13,10,0
.initb db 13,10,'INITIALIZING MODEM :',13,10,13,10,0 .initb db 13,10,'INITIALIZING MODEM :',13,10,13,10,0
@@ -757,21 +766,28 @@ ProcessModem:
.tout db 'MODEM RESPONSE TIMEOUT',13,10,0 .tout db 'MODEM RESPONSE TIMEOUT',13,10,0
.ata db 'ATA',13,0 .ata db 'ATA',13,0
.cdet db 'CARRIER DETECTED',13,10,0 .cdet db 'CARRIER DETECTED',13,10,0
.invver db 13,10,'INCOMPATIBLE VERSION!',13,10,0
.rdet db 'WAITING FOR RING...',13,10,0 .rdet db 'WAITING FOR RING...',13,10,0
.invsnd db 'INVALID SOUND SETTING!',13,10,0
.noipx db 13,10,13,10,'UNABLE TO INIT IPX!',13,10,0 .noipx db 13,10,13,10,'UNABLE TO INIT IPX!',13,10,0
.yesipx db 13,10,13,10,'IPX INITIALIZED.',13,10,13,10,'WAITING FOR REMOTE',13,10,0 .yesipx db 13,10,13,10,'IPX INITIALIZED.',13,10,13,10,'WAITING FOR REMOTE',13,10,0
.localid db 'LOCAL ID : ',0 .localid db 'LOCAL ID : ',0
.remoteid db 'REMOTE ID : ',0 .remoteid db 'REMOTE ID : ',0
.connectest db 'CONNECTION ESTABLISHED',13,10,0 .connectest db 'CONNECTION ESTABLISHED',13,10,0
%endif
.invver db 13,10,'INCOMPATIBLE VERSION!',13,10,0
.invsnd db 'INVALID SOUND SETTING!',13,10,0
%ifdef __WIN32__
.tcpipinit db 'ZSNES NET INTERFACE',13,10,13,10,0 .tcpipinit db 'ZSNES NET INTERFACE',13,10,13,10,0
.tcpipserv db 'INIT SERVER ... ',0 .tcpipserv db 'INIT SERVER ... ',0
.tcpipclie db 'INIT CLIENT ... ',0 .tcpipclie db 'INIT CLIENT ... ',0
InitStr1Done db 0 %endif
SECTION .bss
InitStr1Done resb 1
SECTION .text
NEWSYM PreparePacket NEWSYM PreparePacket
%ifdef __MSDOS__
call PreparePacketIPX call PreparePacketIPX
%endif
cmp byte[WhichRemote],4 cmp byte[WhichRemote],4
jne .nottcpip jne .nottcpip
call TCPIPPreparePacket call TCPIPPreparePacket
@@ -779,7 +795,9 @@ NEWSYM PreparePacket
ret ret
NEWSYM SendPacket NEWSYM SendPacket
%ifdef __MSDOS__
call SendPacketIPX call SendPacketIPX
%endif
cmp byte[WhichRemote],4 cmp byte[WhichRemote],4
jne .nottcpip jne .nottcpip
call TCPIPSendPacket call TCPIPSendPacket
@@ -787,7 +805,9 @@ NEWSYM SendPacket
ret ret
NEWSYM SendPacketUDP NEWSYM SendPacketUDP
%ifdef __MSDOS__
call SendPacketIPX call SendPacketIPX
%endif
cmp byte[WhichRemote],4 cmp byte[WhichRemote],4
jne .nottcpip jne .nottcpip
call TCPIPSendPacketUDP call TCPIPSendPacketUDP
@@ -807,15 +827,19 @@ NEWSYM WritetochatBuffer
.nomore .nomore
ret ret
NEWSYM RemoteCommand, db 0 SECTION .bss
HoldCommand db 0 NEWSYM RemoteCommand, resb 1
HoldCommand resb 1
SECTION .text
RemoteDeInit: RemoteDeInit:
%ifdef __MSDOS__
cmp byte[ModemInitStat],0 cmp byte[ModemInitStat],0
je .nodeinitmodem je .nodeinitmodem
call DeInitModemC call DeInitModemC
mov byte[ModemInitStat],0 mov byte[ModemInitStat],0
.nodeinitmodem .nodeinitmodem
%endif
mov byte[CNetType],1 mov byte[CNetType],1
cmp byte[WhichRemote],2 cmp byte[WhichRemote],2
jne .noipx jne .noipx
@@ -850,9 +874,12 @@ Checkfileexist:
.failed .failed
mov eax,1 mov eax,1
ret ret
.temp db 0 SECTION .bss
.temp resb 1
SECTION .text
ProcessRemoteCommand: ProcessRemoteCommand:
%ifdef __MSDOS__
cmp byte[WhichRemote],1 cmp byte[WhichRemote],1
jne .notmodem jne .notmodem
push edx push edx
@@ -861,6 +888,7 @@ ProcessRemoteCommand:
cmp al,1 cmp al,1
jne near .nomulti jne near .nomulti
.notmodem .notmodem
%endif
cmp byte[RemoteDisconnect],1 cmp byte[RemoteDisconnect],1
je near .nomulti je near .nomulti
call ProcRewind call ProcRewind
@@ -1379,6 +1407,7 @@ ProcessRemoteCommand:
mov byte[RemoteCommand],1 mov byte[RemoteCommand],1
ret ret
SECTION .data
.chatinitial db '>',0 .chatinitial db '>',0
.actinitial db '*',0 .actinitial db '*',0
.actinitial2 db ' ',0 .actinitial2 db ' ',0
@@ -1390,6 +1419,7 @@ ProcessRemoteCommand:
.strinvalid db '** INVALID NICK **',13,10,0 .strinvalid db '** INVALID NICK **',13,10,0
.strtoolong db '** NICK IS TOO LONG **',13,10,0 .strtoolong db '** NICK IS TOO LONG **',13,10,0
.nickchangeb db ' IS NOW KNOWN AS ',0 .nickchangeb db ' IS NOW KNOWN AS ',0
SECTION .text
transfersram: transfersram:
cmp byte[SFXSRAM],0 cmp byte[SFXSRAM],0
@@ -1528,6 +1558,7 @@ NEWSYM RemoteGetEAX
NEWSYM RemoteSendChar NEWSYM RemoteSendChar
%ifdef __MSDOS__
cmp byte[WhichRemote],1 cmp byte[WhichRemote],1
jne .nomodem jne .nomodem
call ModemSendChar call ModemSendChar
@@ -1536,6 +1567,7 @@ NEWSYM RemoteSendChar
jne .noipx jne .noipx
call ipxsendchar call ipxsendchar
.noipx .noipx
%endif
cmp byte[WhichRemote],4 cmp byte[WhichRemote],4
jne .notcpip jne .notcpip
call TCPIPStoreByte call TCPIPStoreByte
@@ -1543,6 +1575,7 @@ NEWSYM RemoteSendChar
ret ret
NEWSYM RemoteGetChar NEWSYM RemoteGetChar
%ifdef __MSDOS
cmp byte[WhichRemote],1 cmp byte[WhichRemote],1
jne .nomodem jne .nomodem
call ModemGetChar call ModemGetChar
@@ -1551,12 +1584,14 @@ NEWSYM RemoteGetChar
jne .noipx jne .noipx
call ipxgetchar call ipxgetchar
.noipx .noipx
%endif
cmp byte[WhichRemote],4 cmp byte[WhichRemote],4
jne .notcpip jne .notcpip
call TCPIPGetByte call TCPIPGetByte
.notcpip .notcpip
ret ret
%ifdef __MSDOS__
ModemSendStr: ModemSendStr:
.loop .loop
mov al,[esi] mov al,[esi]
@@ -1567,13 +1602,17 @@ ModemSendStr:
jmp .loop jmp .loop
.nomore .nomore
ret ret
%endif
NetLoadHandle dw 0 SECTION .bss
NetStateSize dd 0 NetLoadHandle resw 1
NetStateTotal dd 0 NetStateSize resd 1
NetStateQuit db 0 NetStateTotal resd 1
NetStateBuffer times 2048 db 0 NetStateQuit resb 1
NetStateBuffer resb 2048
SECTION .data
Netfname db 'nettemp.zst',0 Netfname db 'nettemp.zst',0
SECTION .text
NetLoadStuff: NetLoadStuff:
call loadnetopen call loadnetopen
@@ -1783,6 +1822,7 @@ loadstaterecv:
.notzero .notzero
ret ret
SECTION .data
StateLoadedOk db 10,13,'STATE LOADED.',10,13,10,13,0 StateLoadedOk db 10,13,'STATE LOADED.',10,13,10,13,0
StateLoadedFail db 10,13,'LOAD FAILED.',10,13,10,13,0 StateLoadedFail db 10,13,'LOAD FAILED.',10,13,10,13,0
SECTION .text

View File

@@ -804,6 +804,7 @@ DisplayGUILoad:
DrawGUIWinBox 1,229,144,228,152,dl DrawGUIWinBox 1,229,144,228,152,dl
ret ret
SECTION .data
GUILoadText1 db 'SELECT FILE TO LOAD :',0 GUILoadText1 db 'SELECT FILE TO LOAD :',0
GUILoadText2 db 'DISPLAY TYPE :',0 GUILoadText2 db 'DISPLAY TYPE :',0
GUILoadText3 db 'NORMAL 8.3 FORMAT',0 GUILoadText3 db 'NORMAL 8.3 FORMAT',0
@@ -819,9 +820,12 @@ GUILoadTextC db 'NTSC',0
GUILoadTextD db 'PAL',0 GUILoadTextD db 'PAL',0
GUILoadTextE db 'LOROM',0 GUILoadTextE db 'LOROM',0
GUILoadTextF db 'HIROM',0 GUILoadTextF db 'HIROM',0
GUILStA dd 0,0,0
GUILStB dd 0,0,0 SECTION .bss
GUILoadPos db 0 GUILStA resd 3
GUILStB resd 3
GUILoadPos resb 1
SECTION .text
DisplayGUIReset: DisplayGUIReset:
GUIDrawWindowBox 12,GUIResetDisp GUIDrawWindowBox 12,GUIResetDisp
@@ -854,9 +858,11 @@ DisplayGUIReset:
GUIOuttextwin2 12,5,15,GUIResetText1 GUIOuttextwin2 12,5,15,GUIResetText1
ret ret
SECTION .data
GUIResetText1 db 'RESET : ARE YOU SURE ?',0 GUIResetText1 db 'RESET : ARE YOU SURE ?',0
GUIResetText2 db 'YES',0 GUIResetText2 db 'YES',0
GUIResetText3 db 'NO',0 GUIResetText3 db 'NO',0
SECTION .text
DisplayGUIStates: DisplayGUIStates:
GUIDrawWindowBox 14,GUIStatesDisp GUIDrawWindowBox 14,GUIStatesDisp
@@ -901,11 +907,13 @@ DisplayGUIStates:
.save2 .save2
ret ret
SECTION .data
GUIStatesText1 db 'OKAY TO SAVE STATE?',0 GUIStatesText1 db 'OKAY TO SAVE STATE?',0
GUIStatesText2 db 'OKAY TO LOAD STATE?',0 GUIStatesText2 db 'OKAY TO LOAD STATE?',0
GUIStatesText3 db 'YES',0 GUIStatesText3 db 'YES',0
GUIStatesText4 db 'NO',0 GUIStatesText4 db 'NO',0
GUIStatesText5 db 0 GUIStatesText5 db 0
SECTION .text
DisplayGUIChoseSave: DisplayGUIChoseSave:
GUIDrawWindowBox 2,GUIStateSelDisp GUIDrawWindowBox 2,GUIStateSelDisp
@@ -980,8 +988,10 @@ DisplayGUIChoseSave:
GUIDisplayButtonHole 2,90,43,byte[GUIChoseSaveText2],'9' GUIDisplayButtonHole 2,90,43,byte[GUIChoseSaveText2],'9'
ret ret
SECTION .data
GUIChoseSaveText1 db 'SELECT SAVE SLOT :',0 GUIChoseSaveText1 db 'SELECT SAVE SLOT :',0
GUIChoseSaveText2 db '-',0 GUIChoseSaveText2 db '-',0
SECTION .text
%macro DGOptnsDrawBox 3 %macro DGOptnsDrawBox 3
mov eax,dword[GUIwinposx+9*4] mov eax,dword[GUIwinposx+9*4]
@@ -1333,6 +1343,7 @@ DisplayGUIInput:
DrawGUIWinBox 3,5,78,107,78,dl DrawGUIWinBox 3,5,78,107,78,dl
ret ret
SECTION .data
GUIInputRefF db 0,1,2,3,5,18,6,7,8,9,10,11,14,15,16,17 GUIInputRefF db 0,1,2,3,5,18,6,7,8,9,10,11,14,15,16,17
GUIInputRefB db 0,1,2,3,3,4,6,7,8,9,10,11,11,11,12,13,14,15,5 GUIInputRefB db 0,1,2,3,3,4,6,7,8,9,10,11,11,11,12,13,14,15,5
GUIInputRefP dd pl1contrl,pl2contrl,pl3contrl,pl4contrl,pl5contrl GUIInputRefP dd pl1contrl,pl2contrl,pl3contrl,pl4contrl,pl5contrl
@@ -1363,10 +1374,13 @@ GUIInputTextd db 'UL',0
GUIInputTexte db 'UR',0 GUIInputTexte db 'UR',0
GUIInputTextf db 'DL',0 GUIInputTextf db 'DL',0
GUIInputTextg db 'DR',0 GUIInputTextg db 'DR',0
GUIIStA dd 0,0,0
GUIcurrentinputviewloc dd 0 SECTION .bss
GUIcurrentinputcursloc dd 0 GUIIStA resd 3
GUIcurrentinputviewloc resd 1
GUIcurrentinputcursloc resd 1
SECTION .text
DisplayGUIOption: DisplayGUIOption:
; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engine/Save Confirm ; Frame Rate/Auto Frame Rate/Max Frame Skip/New Gfx Engine/Save Confirm
@@ -1591,6 +1605,7 @@ DisplayGUIOption:
DrawGUIButton 4,129,12,137,22,GUIOptionText10,13,-2,0 DrawGUIButton 4,129,12,137,22,GUIOptionText10,13,-2,0
ret ret
SECTION .data
GUIOptionText1 db 'FRAME RATE',0 GUIOptionText1 db 'FRAME RATE',0
GUIOptionText2 db 'AUTO FRAME RATE',0 GUIOptionText2 db 'AUTO FRAME RATE',0
GUIOptionText3 db 'MAX FRAME SKIP',0 GUIOptionText3 db 'MAX FRAME SKIP',0
@@ -1614,6 +1629,7 @@ GUIOptionTextL db 'USE ALTERNATE TIMER',0
GUIOptionText8 db '-',0 GUIOptionText8 db '-',0
GUIOptionText9 db '+',0 GUIOptionText9 db '+',0
GUIOptionText10 db '-',0 GUIOptionText10 db '-',0
SECTION .text
DisplayGUIVideo: DisplayGUIVideo:
cmp byte[TripBufAvail],0 cmp byte[TripBufAvail],0
@@ -1742,13 +1758,6 @@ DisplayGUIVideo:
je .notext8 je .notext8
GUIOuttextwin2u 5,26,178,GUIVideoText8b,0 GUIOuttextwin2u 5,26,178,GUIVideoText8b,0
.notext8 .notext8
%ifndef __MSDOS__
mov al,[cvidmode]
cmp byte[GUIMBVID+eax],0
je .notext82
GUIOuttextwin2u 5,26,178,GUIVideoText8b2,0
.notext82
%endif
GUIOuttextwin2u 5,26,188,GUIVideoText8c,0 GUIOuttextwin2u 5,26,188,GUIVideoText8c,0
%ifndef __LINUX__ %ifndef __LINUX__
GUIOuttextwin2u 5,130,188,GUIVideoText9,0 GUIOuttextwin2u 5,130,188,GUIVideoText9,0
@@ -1850,13 +1859,6 @@ DisplayGUIVideo:
je .notext8b je .notext8b
GUIOuttextwin2 5,25,177,GUIVideoText8b GUIOuttextwin2 5,25,177,GUIVideoText8b
.notext8b .notext8b
%ifndef __MSDOS__
mov al,[cvidmode]
cmp byte[GUIMBVID+eax],0
je .notext8b2
GUIOuttextwin2 5,25,177,GUIVideoText8b2
.notext8b2
%endif
GUIOuttextwin2 5,25,187,GUIVideoText8c GUIOuttextwin2 5,25,187,GUIVideoText8c
%ifndef __LINUX__ %ifndef __LINUX__
GUIOuttextwin2 5,129,187,GUIVideoText9 GUIOuttextwin2 5,129,187,GUIVideoText9
@@ -1982,18 +1984,6 @@ DisplayGUIVideo:
.nocheckbox1m72 .nocheckbox1m72
GUIDisplayIconWin 5,11,173,[GUITemp] GUIDisplayIconWin 5,11,173,[GUITemp]
.nocheckboxm72 .nocheckboxm72
%ifndef __MSDOS__
mov al,[cvidmode]
cmp byte[GUIMBVID+eax],0
je .nocheckboxmb2
mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[MotionBlur],0
je .nocheckboxmb
mov dword[GUITemp],GUIIconDataCheckBoxC
.nocheckboxmb
GUIDisplayIconWin 5,11,173,[GUITemp]
.nocheckboxmb2
%endif
mov dword[GUITemp],GUIIconDataCheckBoxUC mov dword[GUITemp],GUIIconDataCheckBoxUC
cmp byte[GrayscaleMode],0 cmp byte[GrayscaleMode],0
je .nocheckboxm73 je .nocheckboxm73
@@ -2147,6 +2137,7 @@ DisplayGUIVideo:
GUIOuttextwin2 5,48,195,[GUITemp] GUIOuttextwin2 5,48,195,[GUITemp]
ret ret
SECTION .data
GUIVideoText1 db 'VIDEO MODES :',0 GUIVideoText1 db 'VIDEO MODES :',0
GUIVideoText2 db 'FULL SCANLINES',0 GUIVideoText2 db 'FULL SCANLINES',0
GUIVideoTextb db 'SCANLINES:',0 GUIVideoTextb db 'SCANLINES:',0
@@ -2164,7 +2155,6 @@ GUIVideoText5b db 'WIDE SCREEN',0 ; -c
GUIVideoText6 db 'SMALL SCREEN',0 ; -c GUIVideoText6 db 'SMALL SCREEN',0 ; -c
GUIVideoText7 db 'TRIPLE BUFFERING',0 ; -c GUIVideoText7 db 'TRIPLE BUFFERING',0 ; -c
GUIVideoText8b db 'HI-RESOLUTION MODE7',0 ; -c GUIVideoText8b db 'HI-RESOLUTION MODE7',0 ; -c
GUIVideoText8b2 db 'MOTION BLUR',0 ; -c
GUIVideoText8c db 'GRAYSCALE MODE',0 ; -c GUIVideoText8c db 'GRAYSCALE MODE',0 ; -c
GUIVideoText8 db 'SET',0 ; set button GUIVideoText8 db 'SET',0 ; set button
GUIVideoText9 db 'VSYNC',0 ; -c GUIVideoText9 db 'VSYNC',0 ; -c
@@ -2173,10 +2163,14 @@ GUIVideoTextw0 db 'LEGEND:',0
GUIVideoTextw1 db ' S = SCALED TO FIT SCREEN',0 GUIVideoTextw1 db ' S = SCALED TO FIT SCREEN',0
GUIVideoTextw2 db ' R = MATCHED SCREEN RATIO',0 GUIVideoTextw2 db ' R = MATCHED SCREEN RATIO',0
GUIVideoTextw3 db ' D = ALLOW 2XSAI,HIRES,ETC',0 GUIVideoTextw3 db ' D = ALLOW 2XSAI,HIRES,ETC',0
GUIVStA dd 0,0,0
GUIcurrentvideoviewloc dd 0 SECTION .bss
GUIcurrentvideocursloc dd 0 GUIVStA resd 3
GUIcurrentvideoviewloc resd 1
GUIcurrentvideocursloc resd 1
SECTION .text
DisplayGUISound: DisplayGUISound:
@@ -2433,6 +2427,7 @@ DisplayGUISound:
GUIOuttextwin2 6,118,88,[GUITemp] GUIOuttextwin2 6,118,88,[GUITemp]
ret ret
SECTION .data
GUISoundText1 db 'ENABLE SOUND',0 GUISoundText1 db 'ENABLE SOUND',0
GUISoundText1b db 'FORCE 8-BIT',0 GUISoundText1b db 'FORCE 8-BIT',0
GUISoundText2 db 'SAMPLING RATE :',0 GUISoundText2 db 'SAMPLING RATE :',0
@@ -2461,7 +2456,7 @@ GUISoundTextT db 'LOWPASS :',0
GUISoundTextU db 'SIMPLE',0 GUISoundTextU db 'SIMPLE',0
GUISoundTextV db 'DYNAMIC',0 GUISoundTextV db 'DYNAMIC',0
GUISoundTextW db 'HI QUALITY',0 GUISoundTextW db 'HI QUALITY',0
SECTION .text
DisplayGUICheatConv: DisplayGUICheatConv:
@@ -2775,6 +2770,7 @@ DisplayGUICheat:
GUIDisplayIconWin 7,11,186,[GUITemp] GUIDisplayIconWin 7,11,186,[GUITemp]
ret ret
SECTION .data
GUICheatText1 db 'ENTER CODE :',0 GUICheatText1 db 'ENTER CODE :',0
GUICheatText2 db 'DESCRIPTION:',0 GUICheatText2 db 'DESCRIPTION:',0
GUICheatText3 db 'ADDRESS CV PV TGL DESCRIPTION',0 GUICheatText3 db 'ADDRESS CV PV TGL DESCRIPTION',0
@@ -2793,14 +2789,16 @@ GUICheatTextE db 'NOTE : YOU MAY HAVE TO RESET THE GAME',0
GUICheatTextF db ' AFTER ENTERING THE CODE. REMEMBER TO',0 GUICheatTextF db ' AFTER ENTERING THE CODE. REMEMBER TO',0
GUICheatTextG db ' INSERT THE "-" FOR GAME GENIE CODES',0 GUICheatTextG db ' INSERT THE "-" FOR GAME GENIE CODES',0
GUICheatTextJ db 'AUTO-LOAD .CHT FILE AT GAME LOAD',0 GUICheatTextJ db 'AUTO-LOAD .CHT FILE AT GAME LOAD',0
GUICheatPosA db 0 SECTION .bss
GUICheatPosB db 0 GUICheatPosA resb 1
GUICStA dd 0,0,0 GUICheatPosB resb 1
GUIcurrentcheatviewloc dd 0 GUICStA resd 3
GUIcurrentcheatcursloc dd 0 GUIcurrentcheatviewloc resd 1
GUIcurrentcheatwin dd 0 GUIcurrentcheatcursloc resd 1
ccheatnpos dd 0 GUIcurrentcheatwin resd 1
ccheatnleft dd 0 ccheatnpos resd 1
ccheatnleft resd 1
SECTION .text
DrawWindowSearch: DrawWindowSearch:
GUIDrawWindowBox 13,GUISearchDisp GUIDrawWindowBox 13,GUISearchDisp
@@ -3440,29 +3438,35 @@ Cheatmodeadd:
;CheatSrcByteSize db 0 ;CheatSrcByteSize db 0
;CheatSrcByteBase db 0 ;CheatSrcByteBase db 0
;CheatSrcSearchType db 0 ;CheatSrcSearchType db 0
CheatWinMode db 0 SECTION .bss
CheatSearchStatus db 0 CheatWinMode resb 1
CheatCompareValue dd 0 CheatSearchStatus resb 1
NumCheatSrc dd 0 CheatCompareValue resd 1
GUIcurrentchtsrcviewloc dd 0 NumCheatSrc resd 1
GUIcurrentchtsrccursloc dd 0 GUIcurrentchtsrcviewloc resd 1
CSStartEntry dd 0 GUIcurrentchtsrccursloc resd 1
CSCurEntry dd 0 CSStartEntry resd 1
CheatSearchXPos dd 0 CSCurEntry resd 1
CheatSearchYPos dd 0 CheatSearchXPos resd 1
CheatLooped dd 0 CheatSearchYPos resd 1
ccheatnleftb dd 0 CheatLooped resd 1
CurCStextpos dd 0 ccheatnleftb resd 1
CurCStextpos resd 1
SECTION .data
SrcMask dd 0FFh,0FFFFh,0FFFFFFh,0FFFFFFFFh SrcMask dd 0FFh,0FFFFh,0FFFFFFh,0FFFFFFFFh
CSInputDisplay db '_',0,' ',0 CSInputDisplay db '_',0,' ',0
CSDescDisplay db ' ',0,0 CSDescDisplay db ' ',0,0
curentryval dd 0
curentryleft dd 0
curaddrvalcs dd 0
curvaluecs dd 0
GUICSStA dd 0,0,0 SECTION .bss
curentryval resd 1
curentryleft resd 1
curaddrvalcs resd 1
curvaluecs resd 1
GUICSStA resd 3
SECTION .data
GUISrcText1 db 'CHEAT SEARCH',0 GUISrcText1 db 'CHEAT SEARCH',0
GUISrcText2 db 'HAS NOT BEEN',0 GUISrcText2 db 'HAS NOT BEEN',0
GUISrcText3 db 'IMPLEMENTED YET',0 GUISrcText3 db 'IMPLEMENTED YET',0
@@ -3500,6 +3504,7 @@ GUICSrcTextV db 'ENTER NEW VALUE:',0
GUICSrcTextW db 'ENTER CHEAT DESCRIPTION:',0 GUICSrcTextW db 'ENTER CHEAT DESCRIPTION:',0
GUICSrcTextX db 'PAR CODE EQUIVALENT:',0 GUICSrcTextX db 'PAR CODE EQUIVALENT:',0
GUICSrcTextY db 'USE ONLY UPPER BYTE',0 GUICSrcTextY db 'USE ONLY UPPER BYTE',0
SECTION .text
NEWSYM NetAddChar ; dl = color, dh = char NEWSYM NetAddChar ; dl = color, dh = char
@@ -3621,13 +3626,16 @@ NEWSYM NetAddChar ; dl = color, dh = char
ret ret
CCursLoc dd 0 section .bss
CViewLoc dd 0 CCursLoc resd 1
NViewLoc dd 0 CViewLoc resd 1
TViewLoc dd 0 NViewLoc resd 1
TViewLoc resd 1
section .text
DisplayNetOptns: DisplayNetOptns:
mov dword[GUIwinsizex+8*4],7*16 mov dword[GUIwinsizex+8*4],7*16
mov dword[GUIwinsizey+8*4],57 mov dword[GUIwinsizey+8*4],57
mov dword[GUINetDisp],'IPX ' mov dword[GUINetDisp],'IPX '
@@ -3641,6 +3649,7 @@ DisplayNetOptns:
mov dword[GUINetDisp+4],'R! ' mov dword[GUINetDisp+4],'R! '
jmp .nomodem jmp .nomodem
.netokay .netokay
%ifdef __MSDOS__
cmp byte[CNetType],8 cmp byte[CNetType],8
jne .noipxinvalid jne .noipxinvalid
mov dword[GUIwinsizex+8*4],7*16 mov dword[GUIwinsizex+8*4],7*16
@@ -3648,6 +3657,7 @@ DisplayNetOptns:
mov dword[GUINetDisp],'ERRO' mov dword[GUINetDisp],'ERRO'
mov dword[GUINetDisp+4],'R! ' mov dword[GUINetDisp+4],'R! '
.noipxinvalid .noipxinvalid
%endif
cmp byte[CNetType],22 cmp byte[CNetType],22
je .yesstate je .yesstate
@@ -3703,6 +3713,7 @@ DisplayNetOptns:
mov dword[GUIwinsizex+8*4],201 mov dword[GUIwinsizex+8*4],201
mov dword[GUIwinsizey+8*4],48 mov dword[GUIwinsizey+8*4],48
.notcpip .notcpip
%ifdef __MSDOS__
cmp byte[CNetType],3 cmp byte[CNetType],3
je .yesmodem je .yesmodem
cmp byte[CNetType],1 cmp byte[CNetType],1
@@ -3729,6 +3740,7 @@ DisplayNetOptns:
mov dword[GUINetDisp+8],'TTIN' mov dword[GUINetDisp+8],'TTIN'
mov word[GUINetDisp+12],'GS' mov word[GUINetDisp+12],'GS'
mov byte[GUINetDisp+14],0 mov byte[GUINetDisp+14],0
%endif
.nomodem .nomodem
GUIDrawWindowBox 8,GUINetDisp GUIDrawWindowBox 8,GUINetDisp
cmp byte[per2exec],99 cmp byte[per2exec],99
@@ -3739,12 +3751,14 @@ DisplayNetOptns:
cmp byte[CNetType],21 cmp byte[CNetType],21
je near DisplayNetTCPIPState je near DisplayNetTCPIPState
%ifdef __MSDOS__
cmp byte[CNetType],1 cmp byte[CNetType],1
je near DisplayNetOptnsModem je near DisplayNetOptnsModem
cmp byte[CNetType],2 cmp byte[CNetType],2
je near DisplayNetOptnsModemConfig je near DisplayNetOptnsModemConfig
cmp byte[CNetType],3 cmp byte[CNetType],3
je near DisplayNetOptnsModemDial je near DisplayNetOptnsModemDial
%endif
cmp byte[CNetType],4 cmp byte[CNetType],4
je near DisplayNetOptnsTCPIP je near DisplayNetOptnsTCPIP
cmp byte[CNetType],10 cmp byte[CNetType],10
@@ -3757,6 +3771,7 @@ DisplayNetOptns:
je near DisplayNetOptnsModemTerm je near DisplayNetOptnsModemTerm
cmp byte[CNetType],20 cmp byte[CNetType],20
je near DisplayNetOptnsChatWindow je near DisplayNetOptnsChatWindow
%ifdef __MSDOS__
cmp byte[CNetType],7 cmp byte[CNetType],7
je near DisplayNetIPXStart je near DisplayNetIPXStart
cmp byte[CNetType],8 cmp byte[CNetType],8
@@ -3785,6 +3800,7 @@ DisplayNetOptns:
GUIOuttextwin2 8,5,15,GUINetText1 GUIOuttextwin2 8,5,15,GUINetText1
GUIOuttextwin2 8,5,25,GUINetText2 GUIOuttextwin2 8,5,25,GUINetText2
ret ret
%endif
DisplayNetTCPIPState: DisplayNetTCPIPState:
DrawGUIButton 8,73,48,127,59,GUITCPStateText3,64,0,0 DrawGUIButton 8,73,48,127,59,GUITCPStateText3,64,0,0
@@ -3833,10 +3849,13 @@ DisplayNetTCPIPState:
DrawGUIWinBox 8,122,30,121,40,dl ; 2,0,1,0 DrawGUIWinBox 8,122,30,121,40,dl ; 2,0,1,0
ret ret
SECTION .data
GUITCPStateText1 db 'SENDING STATUS',0 GUITCPStateText1 db 'SENDING STATUS',0
GUITCPStateText2 db 'RECEIVING STATUS',0 GUITCPStateText2 db 'RECEIVING STATUS',0
GUITCPStateText3 db 'CANCEL',0 GUITCPStateText3 db 'CANCEL',0
SECTION .text
%ifdef __MSDOS
DisplayNetIPXStart: DisplayNetIPXStart:
DrawGUIButton 8,53,48,87,59,GUINetTextZ,34,0,0 DrawGUIButton 8,53,48,87,59,GUINetTextZ,34,0,0
sub byte[GUItextcolor],15 sub byte[GUItextcolor],15
@@ -3851,6 +3870,7 @@ DisplayNetIPXStart:
DisplayNetIPXInvalid: DisplayNetIPXInvalid:
ret ret
%endif
DisplayNetOptnsTCPIP: DisplayNetOptnsTCPIP:
; Your IP: ; Your IP:
@@ -3973,6 +3993,7 @@ DisplayNetOptnsInvalid:
GUIOuttextwin2 8,5,25,GUINetText2b GUIOuttextwin2 8,5,25,GUINetText2b
GUIOuttextwin2 8,5,35,GUINetText3b GUIOuttextwin2 8,5,35,GUINetText3b
ret ret
%ifdef __MSDOS__
DisplayNetOptnsModem: DisplayNetOptnsModem:
mov dword[GUIEditStringcWin],0 mov dword[GUIEditStringcWin],0
DrawGUIButton 8,5,15,89,26,GUINetTextG,21,0,0 DrawGUIButton 8,5,15,89,26,GUINetTextG,21,0,0
@@ -4101,6 +4122,7 @@ DisplayNetOptnsModemDial:
; mov dword[GUIEditStringmLenM],27 ; mov dword[GUIEditStringmLenM],27
mov dword[GUIEditStringcWin],1 mov dword[GUIEditStringcWin],1
ret ret
%endif
DisplayNetOptnsModemTerm: DisplayNetOptnsModemTerm:
DrawGUIWinBox 8,6,15,181,127,167 DrawGUIWinBox 8,6,15,181,127,167
; draw borders ; draw borders
@@ -4378,23 +4400,30 @@ DisplayNetOptnsChatWindow:
; DrawSlideBarWin 8,181,15,[NViewLoc],[TViewLoc],12,97,GUINCStA ; DrawSlideBarWin 8,181,15,[NViewLoc],[TViewLoc],12,97,GUINCStA
ret ret
NEWSYM GUINCStA, dd 0,0,0 SECTION .bss
NEWSYM CNetType, db 0 NEWSYM GUINCStA, resd 3
NEWSYM CNetType, resb 1
SECTION .data
NEWSYM Latency, db 2 NEWSYM Latency, db 2
NEWSYM Latencytochange, db 2 NEWSYM Latencytochange, db 2
NEWSYM LatencyLeft, db 2 NEWSYM LatencyLeft, db 2
NEWSYM NetSwap, db 0 SECTION .bss
RemCNetType db 0 NEWSYM NetSwap, resb 1
UseRemoteSRAMData db 0 RemCNetType resb 1
ChatString times 276 db 0 UseRemoteSRAMData resb 1
FileNameMod times 512 db 0 ChatString resb 276
CurCStringPos dd 0 FileNameMod resb 512
CurCStringPos resd 1
SECTION .data
%ifdef __MSDOS__
GUINetText1 db 'IPX HAS NOT BEEN',0 GUINetText1 db 'IPX HAS NOT BEEN',0
GUINetText2 db 'IMPLEMENTED YET',0 GUINetText2 db 'IMPLEMENTED YET',0
%endif
GUINetText1b db 'PLEASE SET THE',0 GUINetText1b db 'PLEASE SET THE',0
GUINetText2b db 'PERCENTAGE OF',0 GUINetText2b db 'PERCENTAGE OF',0
GUINetText3b db 'EXECUTION TO 100',0 GUINetText3b db 'EXECUTION TO 100',0
%ifdef __MSDOS__
GUINetText1c db 'IPX IS IN BETA',0 GUINetText1c db 'IPX IS IN BETA',0
GUINetText2c db 'STAGES. IT MAY',0 GUINetText2c db 'STAGES. IT MAY',0
GUINetText3c db 'NOT WORK RIGHT!',0 GUINetText3c db 'NOT WORK RIGHT!',0
@@ -4403,9 +4432,11 @@ GUINetText4 db 'COM2 (2F8)',0
GUINetText5 db 'COM3 (3E8)',0 GUINetText5 db 'COM3 (3E8)',0
GUINetText6 db 'COM4 (2E8)',0 GUINetText6 db 'COM4 (2E8)',0
GUINetText7 db 'IRQ ',0 GUINetText7 db 'IRQ ',0
%endif
GUINetText8 db '00',0 GUINetText8 db '00',0
GUINetText9 db '+',0 GUINetText9 db '+',0
GUINetTextA db '-',0 GUINetTextA db '-',0
%ifdef __MSDOS__
GUINetTextC db 'TONE (ATDT)',0 GUINetTextC db 'TONE (ATDT)',0
GUINetTextD db 'PULSE (ATDP)',0 GUINetTextD db 'PULSE (ATDP)',0
GUINetTextE db 'INIT STRINGS :',0 GUINetTextE db 'INIT STRINGS :',0
@@ -4425,12 +4456,17 @@ GUINetTextO db '57600',0
GUINetTextP db '115200',0 GUINetTextP db '115200',0
GUINetTextQ db 'BAUDRATE (BPS) :',0 GUINetTextQ db 'BAUDRATE (BPS) :',0
GUINetTextR db 'COMPORT :',0 GUINetTextR db 'COMPORT :',0
%endif
GUINetTextS db 'CANCEL',0 GUINetTextS db 'CANCEL',0
%ifdef __MSDOS__
GUINetTextT db 'DIAL',0 GUINetTextT db 'DIAL',0
%endif
GUINetTextU db 'DISCONNECT',0 GUINetTextU db 'DISCONNECT',0
GUINetTextV db 'PLAYER SELECT :',0 GUINetTextV db 'PLAYER SELECT :',0
GUINetTextW db '1',0,'2',0,'3',0,'4',0,'5',0 GUINetTextW db '1',0,'2',0,'3',0,'4',0,'5',0
%ifdef __MSDOS__
GUINetTextX db 'USE FOSSIL DRIVER',0 GUINetTextX db 'USE FOSSIL DRIVER',0
%endif
GUINetTextY db 'LATENCY',0 GUINetTextY db 'LATENCY',0
GUINetTextZ db 'OKAY',0 GUINetTextZ db 'OKAY',0
GUINetTexta db 'SAVE DATA :',0 GUINetTexta db 'SAVE DATA :',0
@@ -4453,7 +4489,11 @@ GUINetTextr1 db 'PLEASE RESTART ZSNESW',0
GUINetTextr2 db 'BEFORE STARTING A NEW',0 GUINetTextr2 db 'BEFORE STARTING A NEW',0
GUINetTextr3 db 'NETPLAY SESSION',0 GUINetTextr3 db 'NETPLAY SESSION',0
%ifdef __MSDOS__
BaudVal dd 9600,14400,19200,28800,38400,57600,115200 BaudVal dd 9600,14400,19200,28800,38400,57600,115200
%endif
SECTION .text
DisplayGameOptns: DisplayGameOptns:
; Key redefinition for : ; Key redefinition for :
@@ -4735,9 +4775,12 @@ DisplayGameOptns:
DGOptnsDrawBox 8+108+70,188,[KeyQuickSaveSPC] DGOptnsDrawBox 8+108+70,188,[KeyQuickSaveSPC]
ret ret
GUIGameOptnsColA db 0 SECTION .bss
GUIGameOptnsColB db 0 GUIGameOptnsColA resb 1
GUIGameDisplayKy dd 0 GUIGameOptnsColB resb 1
GUIGameDisplayKy resd 1
SECTION .data
GUIGameOptnsText1 db 'SOUND DISABLES :',0 GUIGameOptnsText1 db 'SOUND DISABLES :',0
GUIGameOptnsText2 db 'CH#',0 GUIGameOptnsText2 db 'CH#',0
GUIGameOptnsText3 db 'BG DISABLES :',0 GUIGameOptnsText3 db 'BG DISABLES :',0
@@ -4772,6 +4815,7 @@ GUIGameOptnsTextV db 'SAVE SPC',0
GUIGameOptnsTextX db 'DISPLAY FPS',0 GUIGameOptnsTextX db 'DISPLAY FPS',0
GUIGameOptnsTextY db 'ST+',0 GUIGameOptnsTextY db 'ST+',0
GUIGameOptnsTextZ db 'ST-',0 GUIGameOptnsTextZ db 'ST-',0
SECTION .text
DisplayGUIOptns: DisplayGUIOptns:
%ifdef __WIN32__ %ifdef __WIN32__
@@ -5101,6 +5145,7 @@ DisplayGUIOptns:
;lastcursres db 0 ; 0 = go to load, 1 = go to previous menu, 2 = no menu ;lastcursres db 0 ; 0 = go to load, 1 = go to previous menu, 2 = no menu
;resetposn db 1 ; 0 = no window reset, 1 = window reset ;resetposn db 1 ; 0 = no window reset, 1 = window reset
SECTION .data
GUIGUIOptnsText1 db 'COLOR:',0 GUIGUIOptnsText1 db 'COLOR:',0
GUIGUIOptnsText2 db 'MOUSE WRAP',0 GUIGUIOptnsText2 db 'MOUSE WRAP',0
GUIGUIOptnsText3 db 'MOUSE SHADOW',0 GUIGUIOptnsText3 db 'MOUSE SHADOW',0
@@ -5112,7 +5157,7 @@ GUIGUIOptnsText8 db 'CLICK ENTERS GUI',0
GUIGUIOptnsText9 dd 0 GUIGUIOptnsText9 dd 0
GUIGUIOptnsTextA db 'USE JOYPAD1',0 GUIGUIOptnsTextA db 'USE JOYPAD1',0
GUIGUIOptnsTextB dd 'SNOW EFFECT',0 GUIGUIOptnsTextB dd 'SNOW EFFECT',0
GUIGUIOptnsTextBb dd 'SMOKE EFFECT',0 GUIGUIOptnsTextBb dd 'BURNING EFFECT',0
GUIGUIOptnsTextC dd 'WATER EFFECT A',0 GUIGUIOptnsTextC dd 'WATER EFFECT A',0
GUIGUIOptnsTextCb dd 'WATER EFFECT B',0 GUIGUIOptnsTextCb dd 'WATER EFFECT B',0
GUIGUIOptnsTextD dd 'MAIN WINDOW OPTIONS :',0 GUIGUIOptnsTextD dd 'MAIN WINDOW OPTIONS :',0
@@ -5126,6 +5171,7 @@ GUIGUIOptnsTextK db 'WHEEL MOUSE',0
GUIGUIOptnsTextL db 'ALLOW MULTIPLE INSTANCES',0 GUIGUIOptnsTextL db 'ALLOW MULTIPLE INSTANCES',0
GUIGUIOptnsTextM db 'FILTERED GUI',0 GUIGUIOptnsTextM db 'FILTERED GUI',0
GUIGUIOptnsTextN db 'TRAP MOUSE CURSOR',0 GUIGUIOptnsTextN db 'TRAP MOUSE CURSOR',0
SECTION .text
DisplayGUIAbout: DisplayGUIAbout:
GUIDrawWindowBox 11,GUIAboutDisp GUIDrawWindowBox 11,GUIAboutDisp
@@ -5184,6 +5230,7 @@ DisplayGUIAbout:
GUIOuttextwin2 11,5,75,GUIGUIAboutText5 GUIOuttextwin2 11,5,75,GUIGUIAboutText5
ret ret
SECTION .data
GUIGUIAboutText1 db 'ZSNES V',ZVERSION,0 GUIGUIAboutText1 db 'ZSNES V',ZVERSION,0
GUIGUIAboutText2 db 'CODED BY : ',0 GUIGUIAboutText2 db 'CODED BY : ',0
GUIGUIAboutText3 db ' ZSKNIGHT',0 GUIGUIAboutText3 db ' ZSKNIGHT',0
@@ -5212,6 +5259,8 @@ GUIGUIAboutTextE db 'certain conditions; please',0
GUIGUIAboutTextF db 'please read ',39,'LICENSE',39,0 GUIGUIAboutTextF db 'please read ',39,'LICENSE',39,0
GUIGUIAboutTextG db 'thoroughly before using it.',0 GUIGUIAboutTextG db 'thoroughly before using it.',0
SECTION .text
DisplayGUIMovies: DisplayGUIMovies:
GUIDrawWindowBox 15,GUIMovieDisp GUIDrawWindowBox 15,GUIMovieDisp
cmp byte[MovieRecordWinVal],0 cmp byte[MovieRecordWinVal],0
@@ -5312,6 +5361,7 @@ DisplayGUIMovies:
GUIDisplayButtonHole 15,80,55,byte[CMovieExt],'9' GUIDisplayButtonHole 15,80,55,byte[CMovieExt],'9'
ret ret
SECTION .data
GUIMovieText1 db 'PLAY',0 GUIMovieText1 db 'PLAY',0
GUIMovieText2 db 'RECORD',0 GUIMovieText2 db 'RECORD',0
GUIMovieText3 db 'STOP',0 GUIMovieText3 db 'STOP',0
@@ -5324,6 +5374,8 @@ GUIMovieText9 db 'NO',0
GUIMovieTextA db 'STATUS : ',0 GUIMovieTextA db 'STATUS : ',0
CMovieExt db 'v' CMovieExt db 'v'
SECTION .text
; Key types: Up, Down, Left, Right, A, B, X, Y, L, R (Press/Relase/P+R) ; Key types: Up, Down, Left, Right, A, B, X, Y, L, R (Press/Relase/P+R)
; Frame delays: 1 frame, 2, 3, 4, 5, 1 sec., 2, 3 ,4 ,5 ; Frame delays: 1 frame, 2, 3, 4, 5, 1 sec., 2, 3 ,4 ,5
@@ -5712,6 +5764,15 @@ DisplayGUICombo:
mov byte[GUIGameDisplayKy+3],0 mov byte[GUIGameDisplayKy+3],0
GUIOuttextwin2c 16,139,94,GUIGameDisplayKy GUIOuttextwin2c 16,139,94,GUIGameDisplayKy
; Buttons
mov al,[TextColorSp+2]
add al,15
mov byte[GUItextcolor],al
DrawGUIButton 16,202,20,246,31,GUIComboTextA,60,-1,0
DrawGUIButton 16,202,35,246,46,GUIComboTextB,61,-1,0
DrawGUIButton 16,202,50,246,61,GUIComboTextC,62,-1,0
DrawGUIButton 16,202,65,246,76,GUIComboTextD,63,-1,0
; Hole Switches ; Hole Switches
GUIDisplayButtonHole 16,178,82,byte[GUIComboPNum],0 GUIDisplayButtonHole 16,178,82,byte[GUIComboPNum],0
GUIDisplayButtonHole 16,196,82,byte[GUIComboPNum],1 GUIDisplayButtonHole 16,196,82,byte[GUIComboPNum],1
@@ -5921,27 +5982,28 @@ DisplayGUICombo:
.noscrolldisplay .noscrolldisplay
ret ret
SECTION .bss
GUIccombviewloc dd 0 GUIccombviewloc resd 1
GUIccombcursloc dd 0 GUIccombcursloc resd 1
GUIccomblcursloc dd 0 GUIccomblcursloc resd 1
NEWSYM NumCombo, dd 0 NEWSYM NumCombo, resd 1
NumComboGlob dd 0 NumComboGlob resd 1
NEWSYM NumComboLocl, dd 0 NEWSYM NumComboLocl, resd 1
GUICSStC dd 0,0,0 GUICSStC resd 3
GUIComboKey dd 0 GUIComboKey resd 1
GUIComboPos db 0 GUIComboPos resb 1
GUIComboPNum db 0 GUIComboPNum resb 1
GUIComboLHorz db 0 GUIComboLHorz resb 1
NEWSYM GUINumCombo, db 0 NEWSYM GUINumCombo, resb 1
GUIComboData times 50 db 0 GUIComboData resb 50
GUIScrolBufA times 21 db 0 GUIScrolBufA resb 21
GUIScrolBufB times 10 db 0 GUIScrolBufB resb 10
;CombinDataGlob times 3300 db 0 ; 20-name, 42-combo, 2-key#, 1-P#, 1-ff ;CombinDataGlob times 3300 db 0 ; 20-name, 42-combo, 2-key#, 1-P#, 1-ff
;CombinDataLocl times 3300 db 0 ;CombinDataLocl times 3300 db 0
SECTION .data
GUIComboText1 db 'DESCRIPTION',0 GUIComboText1 db 'DESCRIPTION',0
GUIComboText2 db 'KEY P# LH',0 GUIComboText2 db 'KEY P# LH',0
GUIComboText3 db ' ',0 GUIComboText3 db ' ',0
@@ -6024,6 +6086,8 @@ GUIIconDataComboSecond:
db 0 ,48 ,46 ,44 ,42 ,0 ,0 ,0 ,0 ,0 db 0 ,48 ,46 ,44 ,42 ,0 ,0 ,0 ,0 ,0
db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 db 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0
SECTION .text
DisplayGUIAddOns: DisplayGUIAddOns:
GUIDrawWindowBox 17,GUIAddOnsDisp GUIDrawWindowBox 17,GUIAddOnsDisp
sub byte[GUItextcolor],15 sub byte[GUItextcolor],15
@@ -6095,6 +6159,7 @@ DisplayGUIAddOns:
GUIDisplayIconWin 17,109,93,[GUITemp] GUIDisplayIconWin 17,109,93,[GUITemp]
ret ret
SECTION .data
GUIAddOnText1 db 'NONE',0 GUIAddOnText1 db 'NONE',0
GUIAddOnText2 db 'SNES MOUSE AT PORT #1',0 GUIAddOnText2 db 'SNES MOUSE AT PORT #1',0
GUIAddOnText3 db 'SNES MOUSE AT PORT #2',0 GUIAddOnText3 db 'SNES MOUSE AT PORT #2',0
@@ -6126,9 +6191,11 @@ GUIStatesDisp db 'STATE CONFIRM',0
GUIComboDisp db 'KEY COMBINATION EDITOR',0 GUIComboDisp db 'KEY COMBINATION EDITOR',0
GUIAddOnsDisp db 'ADD-ON SELECTOR',0 GUIAddOnsDisp db 'ADD-ON SELECTOR',0
GUIItemBoxColor dd 0 SECTION .bss
TextColorSp dd 0 GUIItemBoxColor resd 1
TextColorSp resd 1
SECTION .data
NEWSYM GUIMenuItem, db 'GAME ',0 NEWSYM GUIMenuItem, db 'GAME ',0
db 'CONFIG',0 db 'CONFIG',0
db 'CHEAT ',0 db 'CHEAT ',0
@@ -6136,3 +6203,4 @@ NEWSYM GUIMenuItem, db 'GAME ',0
db 'MISC ',0 db 'MISC ',0
db 25,0 db 25,0
SECTION .text

View File

@@ -85,14 +85,25 @@ GUIUnBuffer:
jnz .loop jnz .loop
ret ret
SECTION .bss
NEWSYM nextmenupopup, resb 1
NEWSYM NoInputRead, resb 1
NEWSYM PrevMenuPos, resb 1
NEWSYM MenuDisplace, resd 1
NEWSYM MenuDisplace16, resd 1
NEWSYM MenuNoExit, resb 1
NEWSYM SPCSave, resb 1
NEWSYM nextmenupopup, db 0 %ifdef SPCDUMP
NEWSYM NoInputRead, db 0 SECTION .data
NEWSYM PrevMenuPos, db 0 NEWSYM SPCSave_dump, db 0
NEWSYM MenuDisplace, dd 0 SECTION .bss
NEWSYM MenuDisplace16, dd 0
NEWSYM MenuNoExit, db 0 EXTSYM SPCSave_buffer, SPCSave_ports
NEWSYM SPCSave, db 0 NEWSYM SPCSave_handle, resd 1
%endif
SECTION .text
NEWSYM showmenu NEWSYM showmenu
mov byte[ForceNonTransp],1 mov byte[ForceNonTransp],1
@@ -160,13 +171,13 @@ NEWSYM showmenu
call savepcx call savepcx
jmp .nopalwrite jmp .nopalwrite
.nosskey .nosskey
cmp byte[SPCKeyPressed],1
je near .savespckey
test byte[pressed+14],1 test byte[pressed+14],1
jz .nof12 jz .nof12
call savepcx call savepcx
jmp .nopalwrite jmp .nopalwrite
.nof12 .nof12
cmp byte[SPCKeyPressed],1
je near .savespckey
mov dword[menucloc],0 mov dword[menucloc],0
cmp byte[nextmenupopup],0 cmp byte[nextmenupopup],0
je .nomenuinc2 je .nomenuinc2
@@ -237,10 +248,10 @@ NEWSYM showmenu
.nogoup .nogoup
sub dword[menucloc],10*288 sub dword[menucloc],10*288
call menudrawbox8b call menudrawbox8b
mov al,[newengen] ; mov al,[newengen] ; WTF?
mov byte[newengen],0 ; mov byte[newengen],0
mov [newengen],al ; mov [newengen],al
jmp .nextkey jmp .nextkey
.noup .noup
cmp al,80 cmp al,80
@@ -251,12 +262,12 @@ NEWSYM showmenu
.nogodown .nogodown
add dword[menucloc],10*288 add dword[menucloc],10*288
call menudrawbox8b call menudrawbox8b
mov al,[newengen] ; mov al,[newengen]
mov byte[newengen],0 ; mov byte[newengen],0
push eax ; push eax
call copyvid call copyvid
pop eax ; pop eax
mov [newengen],al ; mov [newengen],al
jmp .nextkey jmp .nextkey
.nodown .nodown
jmp .nextkey jmp .nextkey
@@ -268,12 +279,12 @@ NEWSYM showmenu
jmp .nextkey jmp .nextkey
.done .done
call GUIUnBuffer call GUIUnBuffer
mov al,[newengen] ; mov al,[newengen]
mov byte[newengen],0 ; mov byte[newengen],0
push eax ; push eax
call copyvid call copyvid
pop eax ; pop eax
mov [newengen],al ; mov [newengen],al
cmp dword[menucloc],0 cmp dword[menucloc],0
jne .nosavepcx jne .nosavepcx
call savepcx call savepcx
@@ -340,17 +351,34 @@ NEWSYM showmenu
.savespckey .savespckey
cmp byte[spcon],0 cmp byte[spcon],0
je .nospc je .nospc
cmp byte[newengen],1
%ifdef SPCDUMP
cmp byte[SPCSave_dump], 1
jne .start_dump
mov ebx, [SPCSave_handle]
mov eax, -1
mov [SPCSave_buffer], eax
mov ecx, 4
mov edx, SPCSave_buffer
call Write_File
call Close_File
mov byte[SPCSave_dump], 0
jmp .nospcsave
.start_dump
%endif
; cmp byte[newengen],1
; je .unablespc ; je .unablespc
mov dword[Msgptr],.search mov dword[Msgptr],.search
mov eax,[MsgCount] mov eax,[MsgCount]
mov [MessageOn],eax mov [MessageOn],eax
mov al,[newengen] ; mov al,[newengen]
mov byte[newengen],0 ; mov byte[newengen],0
push eax ; push eax
call copyvid call copyvid
pop eax ; pop eax
mov [newengen],al ; mov [newengen],al
; call breakatsignc ; call breakatsignc
; cmp byte[prbreak],1 ; cmp byte[prbreak],1
; je .yesesc ; je .yesesc
@@ -360,6 +388,7 @@ NEWSYM showmenu
; cmp byte[prbreak],1 ; cmp byte[prbreak],1
; je .yesesc ; je .yesesc
call savespcdata call savespcdata
mov byte[curblank],40h mov byte[curblank],40h
mov dword[Msgptr],.saved mov dword[Msgptr],.saved
mov eax,[MsgCount] mov eax,[MsgCount]
@@ -393,12 +422,12 @@ NEWSYM showmenu
jmp .nopalwrite jmp .nopalwrite
.exitloop .exitloop
call GUIUnBuffer call GUIUnBuffer
mov al,[newengen] ; mov al,[newengen]
mov byte[newengen],0 ; mov byte[newengen],0
push eax ; push eax
call copyvid call copyvid
pop eax ; pop eax
mov [newengen],al ; mov [newengen],al
cmp byte[cbitmode],1 cmp byte[cbitmode],1
je near .nopalwrite je near .nopalwrite
mov edi,[vidbuffer] mov edi,[vidbuffer]
@@ -447,6 +476,7 @@ NEWSYM showmenu
mov byte[MenuNoExit],0 mov byte[MenuNoExit],0
jmp showmenu jmp showmenu
SECTION .data
.unablefps db 'NEED AUTO FRAMERATE ON',0 .unablefps db 'NEED AUTO FRAMERATE ON',0
.sndbufsav db 'BUFFER SAVED AS SOUNDDMP.RAW',0 .sndbufsav db 'BUFFER SAVED AS SOUNDDMP.RAW',0
.search db 'SEARCHING FOR SONG START.',0 .search db 'SEARCHING FOR SONG START.',0
@@ -454,6 +484,7 @@ NEWSYM showmenu
.unable db 'CANNOT USE IN NEW GFX ENGINE.',0 .unable db 'CANNOT USE IN NEW GFX ENGINE.',0
.escpress db 'ESC TERMINATED SEARCH.',0 .escpress db 'ESC TERMINATED SEARCH.',0
.saved db '.SPC FILE SAVED.',0 .saved db '.SPC FILE SAVED.',0
SECTION .text
NEWSYM menudrawbox8b NEWSYM menudrawbox8b
cmp byte[cbitmode],1 cmp byte[cbitmode],1
@@ -551,14 +582,15 @@ NEWSYM menudrawbox8b
add esi,[MenuDisplace] add esi,[MenuDisplace]
mov edi,.stringi mov edi,.stringi
call OutputGraphicString call OutputGraphicString
mov al,[newengen] ; mov al,[newengen]
mov byte[newengen],0 ; mov byte[newengen],0
push eax ; push eax
call copyvid call copyvid
pop eax ; pop eax
mov [newengen],al ; mov [newengen],al
ret ret
SECTION .data
.string db 'MISC OPTIONS',0 .string db 'MISC OPTIONS',0
.stringa db 'SAVE SNAPSHOT',0 .stringa db 'SAVE SNAPSHOT',0
.stringb db 'SHOW FPS',0 .stringb db 'SHOW FPS',0
@@ -569,6 +601,7 @@ NEWSYM menudrawbox8b
.stringg db 'INCR FRAME ONLY',0 .stringg db 'INCR FRAME ONLY',0
.stringh db 'MOVE THIS WINDOW',0 .stringh db 'MOVE THIS WINDOW',0
.stringi db 'IMAGE FORMAT: ---',0 .stringi db 'IMAGE FORMAT: ---',0
SECTION .text
NEWSYM menudrawcursor8b NEWSYM menudrawcursor8b
cmp byte[cbitmode],1 cmp byte[cbitmode],1
@@ -592,7 +625,9 @@ NEWSYM menudrawcursor8b
mov al,128 mov al,128
ret ret
NEWSYM menucloc, dd 0 SECTION .bss ;ALIGN=32
NEWSYM menucloc, resd 1
SECTION .text
NEWSYM menudrawbox16b NEWSYM menudrawbox16b
; draw shadow behind box ; draw shadow behind box
@@ -736,19 +771,22 @@ NEWSYM menudrawbox16b
add esi,[MenuDisplace16] add esi,[MenuDisplace16]
mov edi,menudrawbox8b.stringi mov edi,menudrawbox8b.stringi
call OutputGraphicString16b call OutputGraphicString16b
mov al,[newengen] ; mov al,[newengen]
mov byte[newengen],0 ; mov byte[newengen],0
push eax ; push eax
call copyvid call copyvid
pop eax ; pop eax
mov [newengen],al ; mov [newengen],al
ret ret
.allred dw 0 SECTION .bss
.blue dw 0 .allred resw 1
.stepb dw 0 .blue resw 1
.stepb resw 1
NEWSYM menu16btrans, db 0 NEWSYM menu16btrans, resb 1
SECTION .text
NEWSYM menudrawcursor16b NEWSYM menudrawcursor16b
; draw a small red box ; draw a small red box
@@ -944,13 +982,38 @@ NEWSYM savespcdata
mov ecx,256 mov ecx,256
mov edx,DSPMem mov edx,DSPMem
call Write_File call Write_File
%ifdef SPCDUMP
mov [SPCSave_handle], ebx
%else
call Close_File call Close_File
%endif
add dword[spcPCRam],spcRam add dword[spcPCRam],spcRam
add dword[spcRamDP],spcRam add dword[spcRamDP],spcRam
call ResetState call ResetState
%ifdef SPCDUMP
; w00t, reg dump crapola
; using a time reference because I don't feel like adding
; cycle counting to the SPC emulation just for this
mov byte[SPCSave_dump],1
mov eax, [spcRam+0F4h]
mov [SPCSave_ports], eax
xor eax, eax
mov [SPCSave_buffer], eax
%endif
ret ret
.spcfname times 128 db 0 SECTION .bss
.spcfname resb 128
SECTION .data
;.SPC File Format ;.SPC File Format
;Offset 00000h - File Header : SNES-SPC700 Sound File Data v0.10 ;Offset 00000h - File Header : SNES-SPC700 Sound File Data v0.10
@@ -1016,6 +1079,8 @@ NEWSYM ssdatst
; SPCRAM (offset 256), 64k ; SPCRAM (offset 256), 64k
; DSPRAM (offset 256+65536), 256 bytes ; DSPRAM (offset 256+65536), 256 bytes
SECTION .text
NEWSYM dumpsound NEWSYM dumpsound
mov cx,0 mov cx,0
mov edx,.filename mov edx,.filename
@@ -1058,6 +1123,7 @@ NEWSYM dumpsound
xor esi,esi xor esi,esi
jmp .return jmp .return
SECTION .data
.filename db 'SOUNDDMP.RAW',0 .filename db 'SOUNDDMP.RAW',0
NEWSYM pcxheader NEWSYM pcxheader
@@ -1069,7 +1135,11 @@ NEWSYM pcxheader
.bpline dw 256 .bpline dw 256
times 128-68 db 0 times 128-68 db 0
NEWSYM picnum, dw 0 SECTION .bss
NEWSYM picnum, resw 1
SECTION .data
NEWSYM savepcx NEWSYM savepcx
%ifndef NO_PNG %ifndef NO_PNG
@@ -1370,12 +1440,15 @@ NEWSYM savepcx
call restore16b call restore16b
ret ret
SECTION .data
.pcxsaved db 'SNAPSHOT SAVED TO ' .pcxsaved db 'SNAPSHOT SAVED TO '
.filename db 'image.pcx',0,0,0,0 .filename db 'image.pcx',0,0,0,0
.rawsaved db 'SNAPSHOT SAVED TO ' .rawsaved db 'SNAPSHOT SAVED TO '
.filename2 db 'image.bmp',0,0,0,0 .filename2 db 'image.bmp',0,0,0,0
.rowsleft db 0 SECTION .bss
.curdptr dd 0 .rowsleft resb 1
.curdptr resd 1
SECTION .text
NEWSYM save16b2 NEWSYM save16b2
call prepare16b call prepare16b
@@ -1517,10 +1590,13 @@ NEWSYM save16b2
call restore16b call restore16b
ret ret
SECTION .data
.rawsaved db 'SNAPSHOT SAVED TO ' .rawsaved db 'SNAPSHOT SAVED TO '
.filename2 db 'image.bmp',0,0,0,0 .filename2 db 'image.bmp',0,0,0,0
.rowsleft dd 0 SECTION .bss
.curdptr dd 0 .rowsleft resd 1
.curdptr resd 1
SECTION .text
prepare16b: prepare16b:
cmp byte[vesa2red10],1 cmp byte[vesa2red10],1

View File

@@ -1 +1 @@
/Fezsnesw.exe chips\dsp1proc.obj dos\sw.obj dos\gppro.obj dos\vesa12.obj dos\zsipx.obj dos\modemrtn.obj dos\joy.obj dos\debug.obj dos\vesa2.obj dos\initvid.obj cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj smoke.obj video\procvid.obj win\copyvwin.obj win\winintrf.obj win\winlink.obj win\zloaderw.obj win\ztcp.obj win\zfilew.obj win\zipxw.obj video\makev16b.obj video\makev16t.obj video\makevid.obj video\mode716.obj video\mode716b.obj video\mode716d.obj video\mode716e.obj video\mode716t.obj video\mode7.obj video\mode7ext.obj video\mv16tms.obj video\newg162.obj video\newgfx16.obj video\newgfx2.obj video\newgfx.obj video\m716text.obj video\2xsaiw.obj video\sw_draw.obj gui\gui.obj gui\menu.obj cpu\addrni.obj cpu\dma.obj cpu\dsp.obj cpu\dspproc.obj cpu\execute.obj cpu\irq.obj cpu\memory.obj cpu\spc700.obj cpu\stable.obj cpu\table.obj cpu\tableb.obj cpu\tablec.obj chips\dsp1emu.obj chips\fxemu2.obj chips\fxemu2b.obj chips\fxemu2c.obj chips\fxtable.obj chips\sa1proc.obj chips\sa1regs.obj chips\sfxproc.obj zip\unzip.obj zip\zzip.obj zip\zpng.obj zlib.lib libpng.lib wsock32.lib user32.lib gdi32.lib shell32.lib winmm.lib ddraw.lib dsound.lib dinput8.lib d3dx.lib /link /section:.text,erw /Fezsnesw.exe chips\dsp1proc.obj dos\sw.obj dos\gppro.obj dos\vesa12.obj dos\zsipx.obj dos\modemrtn.obj dos\joy.obj dos\debug.obj dos\vesa2.obj dos\initvid.obj cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj smoke.obj burn.obj video\procvid.obj win\copyvwin.obj win\winintrf.obj win\winlink.obj win\zloaderw.obj win\ztcp.obj win\zfilew.obj win\zipxw.obj video\makev16b.obj video\makev16t.obj video\makevid.obj video\mode716.obj video\mode716b.obj video\mode716d.obj video\mode716e.obj video\mode716t.obj video\mode7.obj video\mode7ext.obj video\mv16tms.obj video\newg162.obj video\newgfx16.obj video\newgfx2.obj video\newgfx.obj video\m716text.obj video\2xsaiw.obj video\sw_draw.obj gui\gui.obj gui\menu.obj cpu\addrni.obj cpu\dma.obj cpu\dsp.obj cpu\dspproc.obj cpu\execute.obj cpu\irq.obj cpu\memory.obj cpu\spc700.obj cpu\stable.obj cpu\table.obj cpu\tableb.obj cpu\tablec.obj chips\dsp1emu.obj chips\fxemu2.obj chips\fxemu2b.obj chips\fxemu2c.obj chips\fxtable.obj chips\sa1proc.obj chips\sa1regs.obj chips\sfxproc.obj zip\unzip.obj zip\zzip.obj zip\zpng.obj zlib.lib libpng.lib wsock32.lib user32.lib gdi32.lib shell32.lib winmm.lib ddraw.lib dsound.lib dinput8.lib d3dx.lib /link /section:.text,erw

View File

@@ -44,8 +44,9 @@ VIDEOBJ=${VIDEODIR}/makev16b.o ${VIDEODIR}/makev16t.o ${VIDEODIR}/makevid.o\
DOSOBJ= ${DOSDIR}/dosintrf.o ${DOSDIR}/gppro.o ${DOSDIR}/debug.o\ DOSOBJ= ${DOSDIR}/dosintrf.o ${DOSDIR}/gppro.o ${DOSDIR}/debug.o\
${DOSDIR}/initvid.o ${DOSDIR}/modemrtn.o ${DOSDIR}/sw32.o\ ${DOSDIR}/initvid.o ${DOSDIR}/modemrtn.o ${DOSDIR}/sw32.o\
${DOSDIR}/joy.o ${DOSDIR}/sw.o ${DOSDIR}/vesa12.o ${DOSDIR}/vesa2.o\ ${DOSDIR}/joy.o ${DOSDIR}/sound.o ${DOSDIR}/sw.o ${DOSDIR}/vesa12.o\
${DOSDIR}/zloader.o ${DOSDIR}/zsipx.o ${DOSDIR}/zfile.o ${DOSDIR}/vesa2.o ${DOSDIR}/zloader.o ${DOSDIR}/zsipx.o\
${DOSDIR}/zfile.o
WINOBJ=${WINDIR}/copywin.o ${WINDIR}/winintrf.o ${WINDIR}/winlink.o\ WINOBJ=${WINDIR}/copywin.o ${WINDIR}/winintrf.o ${WINDIR}/winlink.o\
${WINDIR}/zloaderw.o ${WINDIR}/ztcp.o ${WINDIR}/zipxw.o ${WINDIR}/zloaderw.o ${WINDIR}/ztcp.o ${WINDIR}/zipxw.o
@@ -60,7 +61,7 @@ MAINOBJ=cfgload.o endmem.o fixsin.o init.o ui.o vcache.o water.o smoke.o
OBJS=${CHIPSOBJ} ${CPUOBJ} ${DOSOBJ} ${GUIOBJ} ${VIDEOBJ} ${PREOBJ} ${MAINOBJ} ${ZIPOBJ} OBJS=${CHIPSOBJ} ${CPUOBJ} ${DOSOBJ} ${GUIOBJ} ${VIDEOBJ} ${PREOBJ} ${MAINOBJ} ${ZIPOBJ}
LIBS=-lz -lm -lpng LIBS=-lz -lm -lpng
#CFLAGS=-O2 -Wall -Wno-unused -D__MSDOS__ #CFLAGS=-O2 -Wall -Wno-unused -D__MSDOS__
CFLAGS=-O3 -march=i486 -fno-rtti -fno-exceptions -ffast-math\ CFLAGS=-O3 -march=i586 -fno-rtti -fno-exceptions -ffast-math\
-fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -D__MSDOS__ -fomit-frame-pointer -fno-unroll-loops -Wall -Wno-unused -D__MSDOS__
ASM=nasm ASM=nasm
ASMFLAGS=-f coff -D__MSDOS__ ASMFLAGS=-f coff -D__MSDOS__

View File

@@ -63,7 +63,7 @@ PREOBJ=
ZIPOBJ=${ZIPDIR}/zzip.obj ${ZIPDIR}/unzip.obj ${ZIPDIR}/zpng.obj ZIPOBJ=${ZIPDIR}/zzip.obj ${ZIPDIR}/unzip.obj ${ZIPDIR}/zpng.obj
MAINOBJ=cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj smoke.obj MAINOBJ=cfgload.obj endmem.obj fixsin.obj init.obj ui.obj vcache.obj water.obj smoke.obj burn.obj
OBJS=${CHIPSOBJ} ${CPUOBJ} ${WINOBJ} ${GUIOBJ} ${VIDEOBJ} ${ZIPOBJ} ${MAINOBJ} ${WINDOSOBJ} OBJS=${CHIPSOBJ} ${CPUOBJ} ${WINOBJ} ${GUIOBJ} ${VIDEOBJ} ${ZIPOBJ} ${MAINOBJ} ${WINDOSOBJ}
LIBS= LIBS=
@@ -112,6 +112,7 @@ ${DOSDIR}/vesa12.o: ${DOSDIR}/vesa12.asm macros.mac
fixsin.obj: fixsin.c fixsin.obj: fixsin.c
water.obj: water.c water.obj: water.c
smoke.obj: smoke.c smoke.obj: smoke.c
burn.obj: burn.c
${VIDEODIR}/2xsaiw.obj: ${VIDEODIR}/2xsaiw.asm macros.mac ${VIDEODIR}/2xsaiw.obj: ${VIDEODIR}/2xsaiw.asm macros.mac
${VIDEODIR}/procvid.obj: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xSaImmx.inc ${VIDEODIR}/procvid.obj: ${VIDEODIR}/procvid.asm macros.mac ${VIDEODIR}/copyvid.inc ${VIDEODIR}/2xSaImmx.inc
${CHIPDIR}/sa1regs.obj: ${CHIPDIR}/sa1regs.asm macros.mac\ ${CHIPDIR}/sa1regs.obj: ${CHIPDIR}/sa1regs.asm macros.mac\

View File

@@ -1,12 +1,8 @@
#ifdef __LINUX__
# include "gblhdr.h"
#else
# include <stdlib.h> # include <stdlib.h>
# include <string.h> # include <string.h>
# include <time.h> # include <time.h>
#endif
/* /*

View File

@@ -23,7 +23,6 @@ EXTSYM StartUp,PrintStr,WaitForKey,PrintChar,ZFileSystemInit
EXTSYM SPCDisable,SystemInit,allocmem EXTSYM SPCDisable,SystemInit,allocmem
EXTSYM FPSOn,FPSAtStart,cfgsoundon EXTSYM FPSOn,FPSAtStart,cfgsoundon
EXTSYM xa EXTSYM xa
EXTSYM SBPort,SBInt,SBIrq,SBDMA,SBDMAPage,SBHDMAPage,getenv,vibracard
EXTSYM ram7fa,wramdataa EXTSYM ram7fa,wramdataa
EXTSYM malloc,free EXTSYM malloc,free
EXTSYM StateBackup EXTSYM StateBackup
@@ -42,6 +41,10 @@ EXTSYM LinuxExit
EXTSYM GetFilename EXTSYM GetFilename
%endif %endif
%ifdef OPENSPC
EXTSYM OSPC_Init
%endif
NEWSYM UIAsmStart NEWSYM UIAsmStart
@@ -69,8 +72,12 @@ NEWSYM zstart
cld ;clear direction flag cld ;clear direction flag
%ifdef OPENSPC
call OSPC_Init
%else
call setnoise call setnoise
call InitSPC call InitSPC
%endif
call allocmem ;allocate memory call allocmem ;allocate memory
cmp byte[soundon],0 cmp byte[soundon],0
@@ -131,12 +138,6 @@ SECTION .data
NEWSYM mydebug, db '',13,10,0 NEWSYM mydebug, db '',13,10,0
NEWSYM outofmem, db 'You don',39,'t have enough memory to run this program!',13,10,0 NEWSYM outofmem, db 'You don',39,'t have enough memory to run this program!',13,10,0
; Line added by Peter Santing
NEWSYM vibradetect
db 'Creative ViBRA16X PnP card detected (support coded by Peter Santing)', 13, 10
db 'High-DMA is below dma #4', 13, 10
db 13,10, 'you have now full 16-bit stereo sound with the surround option!', 13, 10, 0
NEWSYM welcome NEWSYM welcome
@@ -243,7 +244,6 @@ NEWSYM SecondPort, db 0 ; Secondary Joystick Port Enabled (209h)
; New Variables ; New Variables
NEWSYM ForcePal, db 0 ; 1 = NTSC, 2 = PAL NEWSYM ForcePal, db 0 ; 1 = NTSC, 2 = PAL
NEWSYM Force8b, db 0 ; Force 8-bit sound on NEWSYM Force8b, db 0 ; Force 8-bit sound on
NEWSYM dssel, dw 0
NEWSYM Doublevbuf, db 1 ; Double video buffer NEWSYM Doublevbuf, db 1 ; Double video buffer
NEWSYM V8Mode, db 0 ; Vegetable mode! =) NEWSYM V8Mode, db 0 ; Vegetable mode! =)
NEWSYM fastmemptr, db 0 NEWSYM fastmemptr, db 0
@@ -323,11 +323,23 @@ NEWSYM AllocMem
; Get Command Line Locates SET CMDLINE environment ; Get Command Line Locates SET CMDLINE environment
;******************************************************* ;*******************************************************
%ifdef __WIN32__
EXTSYM _imp__GetModuleFileNameA@12
EXTSYM memcpy
%elifdef __MSDOS__
EXTSYM argv
%endif
NEWSYM getcmdline NEWSYM getcmdline
%ifdef __MSDOS__
%if 0
mov edx,.string2s mov edx,.string2s
push edx push edx
call getenv call getenv
pop edx pop edx
%else
mov eax,[argv]
%endif
cmp eax,0 cmp eax,0
je near .nfound je near .nfound
mov esi,eax mov esi,eax
@@ -344,6 +356,7 @@ NEWSYM getcmdline
.nocap .nocap
mov [edi],dl mov [edi],dl
mov [edi+256],dl mov [edi+256],dl
mov [edi+512],dl
inc esi inc esi
inc edi inc edi
cmp dl,32 cmp dl,32
@@ -351,8 +364,31 @@ NEWSYM getcmdline
cmp dl,0 cmp dl,0
jne .a jne .a
.b .b
%elifdef __WIN32__
push dword 256
push dword CMDLineStr
push byte +0
call [_imp__GetModuleFileNameA@12]
push eax
push eax
push dword CMDLineStr
push dword GUIFName
call memcpy
add esp,+12
mov eax,[esp]
push eax
push dword CMDLineStr
push dword GUICName
call memcpy
add esp,+12
pop edi
add edi,CMDLineStr
%else
mov esi,CMDLineStr mov esi,CMDLineStr
mov eax,CMDLineStr ret ; *sigh*
%endif
mov esi,CMDLineStr
mov eax,esi
.next2 .next2
cmp eax,edi cmp eax,edi
je .nomore je .nomore
@@ -402,7 +438,7 @@ NEWSYM getcmdline
mov byte[esi+5+512],'c' mov byte[esi+5+512],'c'
mov byte[esi+6+512],'m' mov byte[esi+6+512],'m'
mov byte[esi+7+512],'b' mov byte[esi+7+512],'b'
mov byte[esI+8+512],0 mov byte[esi+8+512],0
ret ret
.nfound .nfound
mov edx,.stringnf mov edx,.stringnf
@@ -439,7 +475,7 @@ NEWSYM getcmdline
mov byte[esi+5+512],'c' mov byte[esi+5+512],'c'
mov byte[esi+6+512],'m' mov byte[esi+6+512],'m'
mov byte[esi+7+512],'b' mov byte[esi+7+512],'b'
mov byte[esI+8+512],0 mov byte[esi+8+512],0
ret ret
SECTION .data SECTION .data
@@ -452,249 +488,6 @@ NEWSYM GUIFName, resb 256
NEWSYM GUICName, resb 256 NEWSYM GUICName, resb 256
NEWSYM FilenameStart, resd 1 NEWSYM FilenameStart, resd 1
SECTION .text
;*******************************************************
; Get Blaster Locates SET BLASTER environment
;*******************************************************
NEWSYM getblaster
%ifndef __LINUX__
mov edx,.string2s
push edx
call getenv
pop edx
cmp eax,0
je near .nfound
mov esi,eax
mov byte[.cursetting],0
.a
mov dl,[esi]
cmp dl,'a'
jb .nocap
cmp dl,'z'
ja .nocap
sub dl,'a'-'A'
.nocap
inc esi
mov byte[.blfound],1
cmp dl,'A'
jne .afound
mov byte[.cursetting],1
mov word[SBPort],0
jmp .src
.afound
cmp dl,'I'
jne .ifound
mov byte[.cursetting],2
mov byte[SBIrq],0
jmp .src
.ifound
cmp dl,'D'
jne .dfound
mov byte[.cursetting],3
mov byte[SBDMA],0
jmp .src
.dfound
cmp dl,'H'
jne .hfound
mov byte[.cursetting],4
mov byte[SBHDMA],0
jmp .src
.hfound
cmp dl,' '
je .src2
cmp dl,0
je .src2
jmp .src3
.src2
mov byte[.cursetting],0
jmp .src
.src3
cmp byte[.cursetting],1
jne .nproca
shl word[SBPort],4
sub dl,48
add byte[SBPort],dl
add dl,48
.nproca
cmp byte[.cursetting],2
jne .nproci
cmp byte[SBIrq],1
jne .no1
mov byte[SBIrq],10
.no1
sub dl,48
add [SBIrq],dl
add dl,48
.nproci
cmp byte[.cursetting],3
jne .nprocd
sub dl,48
mov [SBDMA],dl
add dl,48
.nprocd
cmp byte[.cursetting],4
jne .nproch
sub dl,48
mov [SBHDMA],dl
add dl,48
.nproch
.src
cmp dl,0
jne near .a
cmp byte[.blfound],0
je near .nfound
cmp byte[SBIrq],2
jne .noirq9
mov byte[SBIrq],9
.noirq9
mov al,[SBIrq]
add al,08h
cmp byte[SBIrq],7
jbe .nohighirq
add al,60h
add byte[PICRotateP],80h
add byte[PICMaskP],80h
.nohighirq
mov [SBInt],al
cmp byte[SBDMA],0
jne .dma0
mov byte[SBDMAPage],87h
.dma0
cmp byte[SBDMA],1
jne .dma1
mov byte[SBDMAPage],83h
.dma1
cmp byte[SBDMA],2
jne .dma2
mov byte[SBDMAPage],81h
.dma2
cmp byte[SBDMA],3
jne .dma3
mov byte[SBDMAPage],82h
.dma3
; ******************************************************
; **** this piece of code is added by Peter Santing ****
; **** it will enable ZSNES to use the full STEREO ****
; **** capability of the ViBRA16X line of creative ****
; **** instead of playing 8-bit MONOURAL sound ****
; ******************************************************
; cmp byte [SBHDMA], 0
; jne .vibradma0
; mov byte [SBDMAPage], 87h
; mov byte [vibracard], 1 ; set ViBRA16X mode
.vibradma0
cmp byte [SBHDMA], 1
jne .vibradma1
mov byte [SBDMAPage], 83h
mov byte [vibracard], 1 ; set ViBRA16X mode
.vibradma1
cmp byte [SBHDMA], 2
jne .vibradma2
mov byte [SBDMAPage], 81h
mov byte [vibracard], 1 ; set ViBRA16X mode
.vibradma2
cmp byte [SBHDMA], 3
jne .vibradma3
mov byte [SBDMAPage], 82h
mov byte [vibracard], 1 ; set ViBRA16X mode
.vibradma3
cmp byte [vibracard], 1
jne .vibrafix
push ax
mov al, [SBHDMA]
mov [SBDMA], al
pop ax
.vibrafix
cmp byte [SBHDMA],4
jae .hdma
; vibra implementation (make sure that zSNES doesn't go back
; to eight-bit-mode mono)
mov byte [SBHDMA],0
cmp byte[vibracard], 1
jne .hdma
push edx
mov edx, vibradetect
call PrintStr
;call WaitForKey
pop edx
; ********** END OF ViBRA16X implementation code **********
.hdma
cmp byte[SBHDMA],4
jne .hdma4
mov byte[SBHDMAPage],8Fh
.hdma4
cmp byte[SBHDMA],5
jne .hdma5
mov byte[SBHDMAPage],8Bh
.hdma5
cmp byte[SBHDMA],6
jne .hdma6
mov byte[SBHDMAPage],89h
.hdma6
cmp byte[SBHDMA],7
jne .hdma7
mov byte[SBHDMAPage],8Ah
.hdma7
cmp byte[DisplayS],1
je .displaysoundstuff
ret
.nfound
cmp byte[soundon],0
je .nosound
mov byte[soundon],0
mov edx, .blasterstr
call PrintStr
call WaitForKey
.nosound
ret
.displaysoundstuff
mov edx,.blasterinfo
call PrintStr
xor eax,eax
mov ax,[SBPort]
call printhex
mov edx,.blinfob
call PrintStr
xor eax,eax
mov al,[SBIrq]
call printnum
mov edx,.blinfoc
call PrintStr
xor eax,eax
mov al,[SBDMA]
call printnum
mov edx,.blinfod
call PrintStr
xor eax,eax
mov al,[SBHDMA]
call printnum
mov edx,.blasterstr2b
call PrintStr
call WaitForKey
%endif
ret
SECTION .bss
.blfound resb 1
.cursetting resb 1
SECTION .data
.string2s db 'BLASTER',0
.blasterstr db 'ERROR : SET BLASTER environment NOT found!',10,13
.blasterstr2 db 'Unable to enable sound.'
.blasterstr2b db 10,13,10,13
.blasterstr3 db 'Press any key to continue.',0
.blasterinfo db 'Sound Blaster Detection Values : ',10,13,10,13
.blinfoa db 'PORT : ',0
.blinfob db 13,10,'IRQ : ',0
.blinfoc db 13,10,'DMA : ',0
.blinfod db 13,10,'HDMA : ',0
NEWSYM PICRotateP, db 20h
NEWSYM PICMaskP, db 21h
;SECTION .text ;SECTION .text
;******************************************************* ;*******************************************************
; Variable section ; Variable section

View File

@@ -22,7 +22,7 @@ EXTSYM ccud,cfield,cgfxmod,cgram,coladdb,coladdg,coladdr,cpalval,curblank
EXTSYM curfps,cvidmode,delay,draw16bnng,extlatch,fnamest,fulladdtab,En2xSaI EXTSYM curfps,cvidmode,delay,draw16bnng,extlatch,fnamest,fulladdtab,En2xSaI
EXTSYM gammalevel,hirestiledat,ignor512,latchx,latchy,maxbr,ForceNewGfxOff EXTSYM gammalevel,hirestiledat,ignor512,latchx,latchy,maxbr,ForceNewGfxOff
EXTSYM newengen,nextframe,objptr,pressed,prevpal,res512switch,res640 EXTSYM newengen,nextframe,objptr,pressed,prevpal,res512switch,res640
EXTSYM resolutn,romispal,sbpmofs,sbselec,scaddtype,scadtng,scanlines EXTSYM resolutn,romispal,scaddtype,scadtng,scanlines
EXTSYM scbcong,selcA000,snesmouse,t1cc,vcache4b,vesa2_bpos,spritetablea EXTSYM scbcong,selcA000,snesmouse,t1cc,vcache4b,vesa2_bpos,spritetablea
EXTSYM vesa2_clbit,vesa2_gpos,vesa2_rpos,vesa2red10,vesa2selec,vidbuffer EXTSYM vesa2_clbit,vesa2_gpos,vesa2_rpos,vesa2red10,vesa2selec,vidbuffer
EXTSYM vidbufferm,vram,vsyncon,vbufdptr,KeyStateSelct,forceblnk,soundon EXTSYM vidbufferm,vram,vsyncon,vbufdptr,KeyStateSelct,forceblnk,soundon
@@ -64,11 +64,17 @@ EXTSYM vidbufferofsb
;EXTSYM Super2xSaI ;EXTSYM Super2xSaI
EXTSYM HalfTransB,HalfTransC EXTSYM HalfTransB,HalfTransC
%ifdef __MSDOS__
EXTSYM SB_blank
%endif
NEWSYM ProcVidAsmStart NEWSYM ProcVidAsmStart
NEWSYM ScreenScale, db 0 ; If horizontal is scaled or not SECTION .bss
NEWSYM TempDebugV, dw 0 ; Temporary Debugging variable NEWSYM ScreenScale, resb 1 ; If horizontal is scaled or not
NEWSYM TempDebugV, resw 1 ; Temporary Debugging variable
SECTION .text
%macro MMXStuff 0 %macro MMXStuff 0
@@ -98,6 +104,9 @@ NEWSYM TempDebugV, dw 0 ; Temporary Debugging variable
SECTION .text SECTION .text
NEWSYM FPUZero NEWSYM FPUZero
%if 0
; omg this is lame ;P
mov [.Zero],eax mov [.Zero],eax
mov [.Zero+4],eax mov [.Zero+4],eax
mov [.Zero2],eax mov [.Zero2],eax
@@ -111,10 +120,25 @@ NEWSYM FPUZero
ADD EDI,16 ADD EDI,16
DEC ECX DEC ECX
JNZ .TopOfLoop JNZ .TopOfLoop
%else
fld1
fsub st0,st0
.TopOfLoop
fst qword [edi]
fst qword [edi+8]
add edi,16
dec ecx
jnz .TopOfLoop
fstp st0
%endif
ret ret
.Zero dd 0,0 %if 0
.Zero2 dd 0,0 SECTION .bss
.Zero resd 2
.Zero2 resd 2
SECTION .text
%endif
;******************************************************* ;*******************************************************
; ShowVideo Processes & displays video ; ShowVideo Processes & displays video
@@ -240,20 +264,25 @@ NEWSYM processmouse
pop esi pop esi
ret ret
SECTION .data
.ssautoen db 'AUTOFIRE ENABLED.',0 .ssautoen db 'AUTOFIRE ENABLED.',0
.ssautodi db 'AUTOFIRE DISABLED.',0 .ssautodi db 'AUTOFIRE DISABLED.',0
NEWSYM ssautosw, db 20h NEWSYM ssautosw, db 20h
NEWSYM ssautoswb, db 0
NEWSYM mousebuttons, dw 0
NEWSYM mousexpos, dw 0
NEWSYM mousexdir, db 0
NEWSYM mouseypos, dw 0
NEWSYM mouseydir, db 0
NEWSYM mousechan, db 0
NEWSYM mousexloc, dw 128 NEWSYM mousexloc, dw 128
NEWSYM mouseyloc, dw 112 NEWSYM mouseyloc, dw 112
SECTION .bss
NEWSYM ssautoswb, resb 1
NEWSYM mousebuttons, resw 1
NEWSYM mousexpos, resw 1
NEWSYM mousexdir, resb 1
NEWSYM mouseypos, resw 1
NEWSYM mouseydir, resb 1
NEWSYM mousechan, resb 1
SECTION .text
;******************************************************* ;*******************************************************
; Output Hex Outputs the hex in al @ esi ; Output Hex Outputs the hex in al @ esi
;******************************************************* ;*******************************************************
@@ -464,6 +493,7 @@ NEWSYM outputhex16
pop edi pop edi
ret ret
SECTION .data
NEWSYM ASCII2Font NEWSYM ASCII2Font
db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h
db 00h,00h,00h,00h,00h,00h,00h,00h,00h,30h,00h,00h,00h,00h,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h,00h,30h,00h,00h,00h,00h,00h,00h
@@ -595,6 +625,8 @@ NEWSYM FontData
; +, 38 `, 41 .5,4A ; +, 38 `, 41 .5,4A
; ,, 39 ^, 42 ; ,, 39 ^, 42
SECTION .text
;******************************************************* ;*******************************************************
; Output Char Outputs char in al @ esi ; Output Char Outputs char in al @ esi
;******************************************************* ;*******************************************************
@@ -657,8 +689,10 @@ NEWSYM outputchar16b
pop edi pop edi
ret ret
SECTION .data
NEWSYM textcolor, db 128 NEWSYM textcolor, db 128
NEWSYM textcolor16b, dw 0FFFFh NEWSYM textcolor16b, dw 0FFFFh
SECTION .text
NEWSYM outputchar5x5 NEWSYM outputchar5x5
push edi push edi
@@ -1155,13 +1189,15 @@ NEWSYM OutputGraphicString16bb
;******************************************************* ;*******************************************************
; For Save State ; For Save State
NEWSYM csounddisable, db 0 SECTION .bss
NEWSYM statefileloc, dd 0 NEWSYM csounddisable, resb 1
newestfileloc db 0 NEWSYM statefileloc, resd 1
newestfiledate dd 0 newestfileloc resb 1
f3menuen db 0 newestfiledate resd 1
PrevPictureVal db 0 f3menuen resb 1
CurPictureVal db 0 PrevPictureVal resb 1
CurPictureVal resb 1
SECTION .text
NEWSYM drawhline NEWSYM drawhline
.loop .loop
@@ -1591,16 +1627,7 @@ NEWSYM saveselect
;cmp byte[OSPort],1 ;cmp byte[OSPort],1
;ja .nosound ;ja .nosound
%ifdef __MSDOS__ %ifdef __MSDOS__
push es call SB_blank
mov es,[sbselec]
mov edi,[sbpmofs]
mov ecx,320
.loopa
mov dword[es:edi],0
add edi,4
dec ecx
jnz .loopa
pop es
%endif %endif
.nosound .nosound
cmp byte[cbitmode],1 cmp byte[cbitmode],1
@@ -1805,11 +1832,13 @@ NEWSYM saveselect
mov byte[ForceNonTransp],0 mov byte[ForceNonTransp],0
ret ret
.allred dw 0 SECTION .bss ;ALIGN=32
.allgrn dw 0 .allred resw 1
.allgrnb dw 0 .allgrn resw 1
.blue dw 0 .allgrnb resw 1
.stepb dw 0 .blue resw 1
.stepb resw 1
SECTION .text
; Start 16-bit stuff here ; Start 16-bit stuff here
.16b .16b
@@ -2110,13 +2139,17 @@ NEWSYM saveselect
call Clear2xSaIBuffer call Clear2xSaIBuffer
ret ret
SECTION .data
.stringa db 'PLEASE SELECT',0 .stringa db 'PLEASE SELECT',0
.stringb db 'SAVE STATE SLOT',0 .stringb db 'SAVE STATE SLOT',0
.stringc db 'USE CURSOR KEYS',0 .stringc db 'USE CURSOR KEYS',0
.stringd db 'TO MOVE AND',0 .stringd db 'TO MOVE AND',0
.stringe db 'ENTER TO SELECT',0 .stringe db 'ENTER TO SELECT',0
NEWSYM ForceNonTransp, db 0 SECTION .bss
NEWSYM ForceNonTransp, resb 1
SECTION .text
NEWSYM testpressed8b NEWSYM testpressed8b
test byte[pressed+2],1 test byte[pressed+2],1
@@ -2214,7 +2247,10 @@ NEWSYM testpressed8b
; MakePal Changes the entire palette ; MakePal Changes the entire palette
;******************************************************* ;*******************************************************
; set the brightness with [maxbr] ; set the brightness with [maxbr]
NEWSYM cgramback, times 256 dw 0 SECTION .bss ;ALIGN=32
NEWSYM cgramback, resw 256
SECTION .text
NEWSYM doveg NEWSYM doveg
pushad pushad
; backup cgram ; backup cgram
@@ -2285,7 +2321,9 @@ NEWSYM dovegrest
popad popad
ret ret
blahblahblah dw 0 SECTION .bss ;ALIGN=32
blahblahblah resw 1
SECTION .text
NEWSYM dosmakepal NEWSYM dosmakepal
cmp byte[V8Mode],1 cmp byte[V8Mode],1
@@ -2422,7 +2460,9 @@ NEWSYM makepalb
call dovegrest call dovegrest
.noveg2 .noveg2
ret ret
NEWSYM tempco0, dw 0 SECTION .bss ;ALIGN=32
NEWSYM tempco0, resw 1
SECTION .text
;******************************************************* ;*******************************************************
; ChangePal Sets up the palette ; ChangePal Sets up the palette
@@ -2563,7 +2603,9 @@ NEWSYM doschangepal
.noveg2 .noveg2
ret ret
NEWSYM prevbright, db 0 ; previous brightness SECTION .bss
NEWSYM prevbright, resb 1 ; previous brightness
SECTION .text
;******************************************************* ;*******************************************************
; CopyVid Copies buffer into video ; CopyVid Copies buffer into video
@@ -2686,10 +2728,12 @@ NEWSYM showfps
call outputhex call outputhex
ret ret
NEWSYM spcdebugaddr, dd 0 SECTION .bss ;ALIGN=32
NEWSYM tempoffset, dw 0 NEWSYM spcdebugaddr, resd 1
NEWSYM tempoffset, resw 1
NEWSYM Testval, dd 0 NEWSYM Testval, resd 1
SECTION .text
NEWSYM ClockOutput NEWSYM ClockOutput
@@ -2989,13 +3033,16 @@ NEWSYM ClockOutputB
popad popad
ret ret
SECTION .data
hextestfilen db 'DSP1DUMP.DAT',0 hextestfilen db 'DSP1DUMP.DAT',0
NEWSYM SoundTest, db 0 SECTION .bss
NEWSYM SoundTest, resb 1
blahrnr dw 0 blahrnr resw 1
SECTION .text
NEWSYM hextestoutput NEWSYM hextestoutput
@@ -3106,15 +3153,17 @@ NEWSYM hextestoutput
call outputhex call outputhex
ret ret
NEWSYM SoundPlayed0, db 0 SECTION .bss
NEWSYM SoundPlayed1, db 0 NEWSYM SoundPlayed0, resb 1
NEWSYM SoundPlayed2, db 0 NEWSYM SoundPlayed1, resb 1
NEWSYM SoundPlayed3, db 0 NEWSYM SoundPlayed2, resb 1
NEWSYM SoundPlayed4, db 0 NEWSYM SoundPlayed3, resb 1
NEWSYM SoundPlayed5, db 0 NEWSYM SoundPlayed4, resb 1
NEWSYM SoundPlayed6, db 0 NEWSYM SoundPlayed5, resb 1
NEWSYM SoundPlayed7, db 0 NEWSYM SoundPlayed6, resb 1
NEWSYM ngfont, db 0 NEWSYM SoundPlayed7, resb 1
NEWSYM ngfont, resb 1
SECTION .text
NEWSYM ShowSound NEWSYM ShowSound
add esi,[vidbuffer] add esi,[vidbuffer]
@@ -3207,21 +3256,26 @@ NEWSYM waitvsync
jz .loop2 ;updating the screen jz .loop2 ;updating the screen
ret ret
SECTION .data
NEWSYM prevengval, db 10 NEWSYM prevengval, db 10
NEWSYM chaton, db 0
NEWSYM chatstrL, times 140 db 0 SECTION .bss
NEWSYM chatLpos, dd 0 NEWSYM chaton, resb 1
NEWSYM chatstrR, times 140 db 0 NEWSYM chatstrL, resb 140
NEWSYM chatstrR2, times 140 db 0 NEWSYM chatLpos, resd 1
NEWSYM chatstrR3, times 140 db 0 NEWSYM chatstrR, resb 140
NEWSYM chatstrR4, times 140 db 0 NEWSYM chatstrR2, resb 140
NEWSYM chatstrR5, times 140 db 0 NEWSYM chatstrR3, resb 140
NEWSYM chatRTL, dd 0 NEWSYM chatstrR4, resb 140
NEWSYM chatRTL2, dd 0 NEWSYM chatstrR5, resb 140
NEWSYM chatRTL3, dd 0 NEWSYM chatRTL, resd 1
NEWSYM chatRTL4, dd 0 NEWSYM chatRTL2, resd 1
NEWSYM chatRTL5, dd 0 NEWSYM chatRTL3, resd 1
NEWSYM chatTL, dd 0 NEWSYM chatRTL4, resd 1
NEWSYM chatRTL5, resd 1
NEWSYM chatTL, resd 1
SECTION .data
NEWSYM chatreqtable NEWSYM chatreqtable
db 0 ,2 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,0 db 0 ,2 ,'1','2','3','4','5','6','7','8','9','0','-','=',8 ,0
db 'Q','W','E','R','T','Y','U','I','O','P','[',']',13 ,0 ,'A','S' db 'Q','W','E','R','T','Y','U','I','O','P','[',']',13 ,0 ,'A','S'
@@ -3233,6 +3287,7 @@ NEWSYM chatreqtable
db 'D','F','G','H','J','K','L',':','"','~',1 ,'|','Z','X','C','V' db 'D','F','G','H','J','K','L',':','"','~',1 ,'|','Z','X','C','V'
db 'B','N','M','<','>','?',1 ,0 ,0 ,' ',0 ,0 ,0 ,0 ,0 ,0 db 'B','N','M','<','>','?',1 ,0 ,0 ,' ',0 ,0 ,0 ,0 ,0 ,0
SECTION .text
; Letters transferred & string cleared when chatstrL[0]!=0 and chaton=0 ; Letters transferred & string cleared when chatstrL[0]!=0 and chaton=0
; Disable all transfers when chaton=1 (except joysticks and upper keyboard ; Disable all transfers when chaton=1 (except joysticks and upper keyboard
@@ -3542,7 +3597,9 @@ NEWSYM copyvid
dec dword[MessageOn] dec dword[MessageOn]
.nomsg .nomsg
jmp vidpaste jmp vidpaste
.sdrawptr dd 0 SECTION .bss ;ALIGN=32
.sdrawptr resd 1
SECTION .text
NEWSYM vidpaste NEWSYM vidpaste
cmp byte[vsyncon],0 cmp byte[vsyncon],0
@@ -3664,7 +3721,9 @@ NEWSYM vidpaste
jnz .ssloopb jnz .ssloopb
jmp .returnfromdraw jmp .returnfromdraw
.SSRedCo dw 0 SECTION .bss ;ALIGN=32
.SSRedCo resw 1
SECTION .text
NEWSYM Clear2xSaIBuffer NEWSYM Clear2xSaIBuffer
@@ -3678,14 +3737,18 @@ NEWSYM Clear2xSaIBuffer
jnz .nextb jnz .nextb
ret ret
SECTION .data
NEWSYM lastfps, db 0 ; stores the last fps encountered
NEWSYM lastfps2, db 0 ; stores the last fps encountered
NEWSYM curfps2, db 0 ; current video refresh fps
NEWSYM Msgptr, dd 0 ; Pointer to message
NEWSYM MessageOn, dd 0 ; Message On Countdown
NEWSYM MsgCount, dd 120 ; How long message will stay (PAL = 100) NEWSYM MsgCount, dd 120 ; How long message will stay (PAL = 100)
NEWSYM FPSOn, db 0
SECTION .bss
NEWSYM lastfps, resb 1 ; stores the last fps encountered
NEWSYM lastfps2, resb 1 ; stores the last fps encountered
NEWSYM curfps2, resb 1 ; current video refresh fps
NEWSYM Msgptr, resd 1 ; Pointer to message
NEWSYM MessageOn, resd 1 ; Message On Countdown
NEWSYM FPSOn, resb 1
SECTION .data
prevresolutn dd 224 prevresolutn dd 224
NEWSYM SScopeCursor NEWSYM SScopeCursor
@@ -3710,4 +3773,6 @@ db 0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
SECTION .text
NEWSYM ProcVidAsmEnd NEWSYM ProcVidAsmEnd

View File

@@ -346,7 +346,7 @@ void SineBlob(int x, int y, int radius, int height, int page)
int left,top,right,bottom; int left,top,right,bottom;
int square, dist; int square, dist;
int radsquare = radius * radius; int radsquare = radius * radius;
float length = (1024.0/(float)radius)*(1024.0/(float)radius); float length = (1024.0f/(float)radius)*(1024.0f/(float)radius);
if(x<0) x = 1+radius+ rand()%(SCRW-2*radius-1); if(x<0) x = 1+radius+ rand()%(SCRW-2*radius-1);
if(y<0) y = 1+radius+ rand()%(SCRH-2*radius-1); if(y<0) y = 1+radius+ rand()%(SCRH-2*radius-1);

View File

@@ -17,9 +17,9 @@
%include "macros.mac" %include "macros.mac"
EXTSYM dssel,selcA000,selcB800,selc0040,previdmode,DosExit,ZFileSystemInit EXTSYM previdmode,DosExit,ZFileSystemInit
EXTSYM getcmdline,GUIRestoreVars,getcfg,obtaindir,ConvertJoyMap,tparms EXTSYM getcmdline,GUIRestoreVars,getcfg,obtaindir,ConvertJoyMap,tparms
EXTSYM preparedir,getblaster,Force8b,SBHDMA EXTSYM preparedir,SBHDMA
EXTSYM ccmdline EXTSYM ccmdline
EXTSYM FilenameStart EXTSYM FilenameStart
EXTSYM spcon EXTSYM spcon
@@ -51,9 +51,8 @@ EXTSYM ZFileMKDir,ZFileCHDir,ZFileRMDir,CHPath,MKPath,RMPath
EXTSYM ZFileGetDir,DriveNumber,DirName EXTSYM ZFileGetDir,DriveNumber,DirName
EXTSYM _getdrive EXTSYM _getdrive
EXTSYM DTALoc,DTALocPos,ZFileFindATTRIB,ZFileFindFirst,ZFileFindNext,ZFileFindPATH EXTSYM DTALoc,DTALocPos,ZFileFindATTRIB,ZFileFindFirst,ZFileFindNext,ZFileFindPATH
EXTSYM oldhand9s,oldhand9o,interror,oldhand8s,oldhand8o,oldhandSBs,oldhandSBo EXTSYM NoSoundReinit,soundon,DSPDisable,NoSoundReinit
EXTSYM NoSoundReinit,soundon,DSPDisable,SBInt,NoSoundReinit,PICMaskP,SBIrq EXTSYM init60hz,init18_2hz
EXTSYM SBHandler,InitSB,handler8h,handler9h,init60hz,Interror,init18_2hz,DeInitSPC
EXTSYM Start60HZ EXTSYM Start60HZ
EXTSYM pressed EXTSYM pressed
EXTSYM RaisePitch,AdjustFrequency EXTSYM RaisePitch,AdjustFrequency
@@ -104,7 +103,7 @@ EXTSYM SetMouseX,SetMouseY
EXTSYM T36HZEnabled EXTSYM T36HZEnabled
EXTSYM MouseButton EXTSYM MouseButton
EXTSYM GUIinit36_4hz,GUIoldhand9s,GUIoldhand9o,GUIoldhand8s,GUIoldhand8o EXTSYM GUIinit36_4hz,GUIoldhand9s,GUIoldhand9o,GUIoldhand8s,GUIoldhand8o
EXTSYM GUIhandler9h,GUIhandler8h,GUIinit18_2hz EXTSYM GUIinit18_2hz
EXTSYM Start36HZ EXTSYM Start36HZ
EXTSYM Stop36HZ EXTSYM Stop36HZ
EXTSYM BufferSizeW,BufferSizeB,ProcessSoundBuffer EXTSYM BufferSizeW,BufferSizeB,ProcessSoundBuffer
@@ -134,6 +133,7 @@ EXTSYM V8Mode,GrayscaleMode
EXTSYM PrevWinMode,PrevFSMode EXTSYM PrevWinMode,PrevFSMode
EXTSYM _imp__GetLocalTime@4 EXTSYM _imp__GetLocalTime@4
;EXTSYM FrameSemaphore
%ifdef __MINGW__ %ifdef __MINGW__
NEWSYM WinIntRFAsmStart NEWSYM WinIntRFAsmStart
@@ -269,7 +269,9 @@ NEWSYM PrintStr ; Print ASCIIZ string
ret ret
NEWSYM wfkey, db 0 SECTION .bss
NEWSYM wfkey, resb 1
SECTION .text
NEWSYM WaitForKey ; Wait for a key to be pressed NEWSYM WaitForKey ; Wait for a key to be pressed
pushad pushad
@@ -288,7 +290,9 @@ NEWSYM OSExit
call exit call exit
jmp DosExit jmp DosExit
NEWSYM TempHandle, dd 0 SECTION .bss
NEWSYM TempHandle, resd 1
SECTION .text
NEWSYM Open_File NEWSYM Open_File
pushad pushad
@@ -310,10 +314,10 @@ NEWSYM Open_File
popad popad
stc stc
ret ret
mov ax,3D00h ; mov ax,3D00h
int 21h ; int 21h
; return bx = file handle, carry = error ; return bx = file handle, carry = error
ret ; ret
NEWSYM Open_File_Write NEWSYM Open_File_Write
pushad pushad
@@ -335,10 +339,10 @@ NEWSYM Open_File_Write
popad popad
stc stc
ret ret
mov ax,3D01h ; mov ax,3D01h
int 21h ; int 21h
; return bx = file handle, carry = error ; return bx = file handle, carry = error
ret ; ret
NEWSYM Create_File NEWSYM Create_File
pushad pushad
@@ -356,11 +360,11 @@ NEWSYM Create_File
popad popad
stc stc
ret ret
mov ah,3Ch ; mov ah,3Ch
mov cx,0 ; mov cx,0
int 21h ; int 21h
; return bx = file handle ; return bx = file handle
ret ; ret
NEWSYM Write_File NEWSYM Write_File
mov dword[ZFileWriteHandle],0 mov dword[ZFileWriteHandle],0
@@ -380,9 +384,9 @@ NEWSYM Write_File
mov eax,0 mov eax,0
stc stc
ret ret
mov ah,40h ; mov ah,40h
int 21h ; int 21h
ret ; ret
NEWSYM Read_File NEWSYM Read_File
mov dword[ZFileReadHandle],0 mov dword[ZFileReadHandle],0
@@ -396,9 +400,9 @@ NEWSYM Read_File
mov eax,[TempVarSeek] mov eax,[TempVarSeek]
clc clc
ret ret
mov ah,3Fh ; mov ah,3Fh
int 21h ; int 21h
ret ; ret
NEWSYM Delete_File NEWSYM Delete_File
mov [ZFileDelFName],edx mov [ZFileDelFName],edx
@@ -406,9 +410,9 @@ NEWSYM Delete_File
call ZFileDelete call ZFileDelete
popad popad
ret ret
mov ah,41h ; mov ah,41h
int 21h ; int 21h
ret ; ret
NEWSYM Close_File NEWSYM Close_File
mov dword[ZCloseFileHandle],0 mov dword[ZCloseFileHandle],0
@@ -418,9 +422,9 @@ NEWSYM Close_File
popad popad
clc clc
ret ret
mov ah,3Eh ; mov ah,3Eh
int 21h ; int 21h
ret ; ret
NEWSYM File_Seek NEWSYM File_Seek
mov word[ZFileSeekPos+2],cx mov word[ZFileSeekPos+2],cx
@@ -435,9 +439,9 @@ NEWSYM File_Seek
mov dx,cx mov dx,cx
ret ret
; seek to cx:dx from 0 position, return carry as error ; seek to cx:dx from 0 position, return carry as error
mov ax,4200h ; mov ax,4200h
int 21h ; int 21h
ret ; ret
NEWSYM File_Seek_End NEWSYM File_Seek_End
mov word[ZFileSeekPos+2],cx mov word[ZFileSeekPos+2],cx
@@ -456,9 +460,9 @@ NEWSYM File_Seek_End
mov dx,[TempVarSeek+2] mov dx,[TempVarSeek+2]
ret ret
; seek to cx:dx from end position, and return file location in dx:ax ; seek to cx:dx from end position, and return file location in dx:ax
mov ax,4202h ; mov ax,4202h
int 21h ; int 21h
ret ; ret
NEWSYM Get_Time NEWSYM Get_Time
pushad pushad
@@ -493,10 +497,10 @@ NEWSYM Get_File_Date
mov ecx,[ZFTime] mov ecx,[ZFTime]
ret ret
; return packed date in dx:cx ; return packed date in dx:cx
mov ah,57h ; mov ah,57h
mov al,00h ; mov al,00h
int 21h ; int 21h
ret ; ret
RefreshKeybBuffer: RefreshKeybBuffer:
@@ -542,7 +546,7 @@ RefreshKeybBuffer:
mov ebx,[HoldKey] mov ebx,[HoldKey]
cmp ebx,0A8h cmp ebx,0A8h
jb .skipdecval jb .skipdecval
sub ebx,80h add ebx,-80h
.skipdecval .skipdecval
cmp ebx,58h cmp ebx,58h
jae .none jae .none
@@ -567,15 +571,18 @@ RefreshKeybBuffer:
mov [Keybtail],al mov [Keybtail],al
.none .none
ret ret
Keybhead db 0
Keybtail db 0
HoldKey dd 0
HoldKeyBuf times 16 db 0
PKeyBuf times 100h db 0
NEWSYM CurKeyPos, dd 0 SECTION .bss
NEWSYM CurKeyReadPos, dd 0 Keybhead resb 1
NEWSYM KeyBuffer, times 16 dd 0 Keybtail resb 1
HoldKey resd 1
HoldKeyBuf resb 16
PKeyBuf resb 100h
NEWSYM CurKeyPos, resd 1
NEWSYM CurKeyReadPos, resd 1
NEWSYM KeyBuffer, resd 16
SECTION .text
NEWSYM Check_Key NEWSYM Check_Key
mov al,[CurKeyPos] mov al,[CurKeyPos]
@@ -618,7 +625,7 @@ NEWSYM Get_Key
and dword[CurKeyReadPos],0Fh and dword[CurKeyReadPos],0Fh
ret ret
.upper .upper
sub word[KeyBuffer+eax*4],100h add word[KeyBuffer+eax*4],-100h
xor al,al xor al,al
ret ret
@@ -633,7 +640,7 @@ NEWSYM Get_Key
test bl,80h test bl,80h
jz .notupperkey jz .notupperkey
xor bl,bl xor bl,bl
sub byte[HoldKeyBuf+eax],80h add byte[HoldKeyBuf+eax],-80h
jmp .yesupperkey jmp .yesupperkey
.notupperkey .notupperkey
inc al inc al
@@ -649,6 +656,7 @@ NEWSYM Get_Key
; return key in al ; return key in al
ret ret
SECTION .data
KeyConvTable KeyConvTable
db 255,27 ,'1','2','3','4','5','6' ; 00h db 255,27 ,'1','2','3','4','5','6' ; 00h
db '7','8','9','0','-','=',8 ,9 db '7','8','9','0','-','=',8 ,9
@@ -673,6 +681,7 @@ KeyConvTableS
db 255,255,255,255,255,255,255,255 ; 40h db 255,255,255,255,255,255,255,255 ; 40h
db 200,201,202,203,204,205,206,207 db 200,201,202,203,204,205,206,207
db 208,209,210,211,255,255,255,255 ; 50h db 208,209,210,211,255,255,255,255 ; 50h
SECTION .text
; mov dl,[SRAMDrive] ; mov dl,[SRAMDrive]
; mov ebx,SRAMDir ; mov ebx,SRAMDir
@@ -703,9 +712,9 @@ NEWSYM Change_Single_Dir
stc stc
ret ret
; Dir in edx, return error in carry flag ; Dir in edx, return error in carry flag
mov ah,3Bh ; mov ah,3Bh
int 21h ; int 21h
ret ; ret
NEWSYM Create_Dir NEWSYM Create_Dir
; change to dir in edx ; change to dir in edx
@@ -721,9 +730,9 @@ NEWSYM Create_Dir
popad popad
stc stc
ret ret
mov ah,39h ; mov ah,39h
int 21h ; int 21h
ret ; ret
NEWSYM Remove_Dir NEWSYM Remove_Dir
; remove dir in edx ; remove dir in edx
@@ -739,9 +748,9 @@ NEWSYM Remove_Dir
popad popad
stc stc
ret ret
mov ah,3Ah ; mov ah,3Ah
int 21h ; int 21h
ret ; ret
; mov dl,[LoadDrive] ; mov dl,[LoadDrive]
; mov ebx,LoadDir ; mov ebx,LoadDir
@@ -780,20 +789,20 @@ NEWSYM Change_Dir
ret ret
; dl = drive, ebx = dir ; dl = drive, ebx = dir
push ebx ; push ebx
mov ah,0Eh ; mov ah,0Eh
int 21h ; int 21h
mov ah,3Bh ; mov ah,3Bh
mov edx,gotoroot ; mov edx,gotoroot
int 21h ; int 21h
pop ebx ; pop ebx
mov edx,ebx ; mov edx,ebx
cmp byte[edx],0 ; cmp byte[edx],0
je .nodir ; je .nodir
mov ah,3Bh ; mov ah,3Bh
int 21h ; int 21h
.nodir ;.nodir
ret ; ret
; mov ebx,LoadDir ; mov ebx,LoadDir
; mov edx,LoadDrive ; mov edx,LoadDrive
@@ -820,21 +829,21 @@ NEWSYM Get_Dir
call _getdrive call _getdrive
; mov ah,19h ; mov ah,19h
; int 21h ; int 21h
sub al,1 add al,-1
pop edx pop edx
mov [edx],al mov [edx],al
ret ret
push edx ; push edx
mov ah,47h ; mov ah,47h
mov dl,0 ; mov dl,0
mov esi,ebx ; mov esi,ebx
int 21h ; int 21h
mov ah,19h ; mov ah,19h
int 21h ; int 21h
pop edx ; pop edx
mov [edx],al ; mov [edx],al
ret ; ret
NEWSYM Get_First_Entry NEWSYM Get_First_Entry
; cx = attributes, edx = pointer to wildcard ; cx = attributes, edx = pointer to wildcard
@@ -855,10 +864,10 @@ NEWSYM Get_First_Entry
popad popad
stc stc
ret ret
mov ah,4Eh ; mov ah,4Eh
mov al,0 ; mov al,0
int 21h ; int 21h
ret ; ret
NEWSYM Get_Next_Entry NEWSYM Get_Next_Entry
mov dword[DTALocPos],DTALoc mov dword[DTALocPos],DTALoc
@@ -873,9 +882,9 @@ NEWSYM Get_Next_Entry
popad popad
stc stc
ret ret
mov ah,04Fh ; mov ah,04Fh
int 21h ; int 21h
ret ; ret
NEWSYM Set_DTA_Address NEWSYM Set_DTA_Address
; Only needed for dos stuff ; Only needed for dos stuff
@@ -980,91 +989,93 @@ NEWSYM changepal ; 8-bit palette set (changes only)
NEWSYM displayfpspal NEWSYM displayfpspal
ret ret
mov al,128 ; mov al,128
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,63 ; mov al,63
out dx,al ; out dx,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,128+64 ; mov al,128+64
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,0 ; mov al,0
out dx,al ; out dx,al
out dx,al ; out dx,al
out dx,al ; out dx,al
ret ; ret
NEWSYM superscopepal NEWSYM superscopepal
ret ret
mov al,128+16 ; mov al,128+16
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,63 ; mov al,63
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
ret ; ret
NEWSYM saveselectpal NEWSYM saveselectpal
ret ret
; set palette of colors 128,144, and 160 to white, blue, and red ; set palette of colors 128,144, and 160 to white, blue, and red
mov al,128 ; mov al,128
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,63 ; mov al,63
out dx,al ; out dx,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,144 ; mov al,144
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,50 ; mov al,50
out dx,al ; out dx,al
mov al,160 ; mov al,160
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,45 ; mov al,45
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,176 ; mov al,176
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,47 ; mov al,47
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,208 ; mov al,208
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,50 ; mov al,50
out dx,al ; out dx,al
mov al,25 ; mov al,25
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
ret ; ret
; ** init video mode functions ** ; ** init video mode functions **
SECTION .data
NEWSYM firstvideo, dd 1 NEWSYM firstvideo, dd 1
SECTION .text
NEWSYM initvideo ; Returns 1 in videotroub if trouble occurs NEWSYM initvideo ; Returns 1 in videotroub if trouble occurs
@@ -1131,7 +1142,10 @@ NEWSYM deinitvideo
ret ret
; ** copy video mode functions ** ; ** copy video mode functions **
NEWSYM converta, dd 0 SECTION .bss
NEWSYM converta, resd 1
SECTION .text
NEWSYM DrawScreen ; In-game screen render w/ triple buffer check NEWSYM DrawScreen ; In-game screen render w/ triple buffer check
cmp dword [converta],1 cmp dword [converta],1
jne near .skipconv jne near .skipconv
@@ -1171,7 +1185,7 @@ NEWSYM vidpastecopyscr ; GUI screen render
mov eax,[vidbuffer] mov eax,[vidbuffer]
mov ecx,224*288 mov ecx,224*288
mov edx,ecx mov edx,ecx
sub ecx,288 add ecx,-288
dec edx dec edx
.loop .loop
xor ebx,ebx xor ebx,ebx
@@ -1257,7 +1271,6 @@ NEWSYM GUIBIFIL, db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
NEWSYM GUITBWVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1 ; Triple Buffering (Win) NEWSYM GUITBWVID, db 0,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1 ; Triple Buffering (Win)
NEWSYM GUISMODE, db 0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0 NEWSYM GUISMODE, db 0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,0
NEWSYM GUIDSMODE, db 0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1 NEWSYM GUIDSMODE, db 0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1
NEWSYM GUIMBVID, db 1,1,1,0,1,0,0,0,1,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0
SECTION .text SECTION .text
@@ -1391,12 +1404,11 @@ NEWSYM ScanCodeListing
db 'P2B','P2Y','P2S','P2T','P2U','P2D','P2L','P2R' db 'P2B','P2Y','P2S','P2T','P2U','P2D','P2L','P2R'
db 'P2A','P2X','P2L','P2R',' ',' ',' ',' ' db 'P2A','P2X','P2L','P2R',' ',' ',' ',' '
SECTION .text
SECTION .data
NEWSYM ZSNESBase, dd 0
TempVarSeek dd 0
gotoroot db '\',0 gotoroot db '\',0
SECTION .bss
NEWSYM ZSNESBase, resd 1
TempVarSeek resd 1
SECTION .text SECTION .text
; **************************** ; ****************************
@@ -1408,13 +1420,14 @@ NEWSYM Init_Mouse
mov eax,01h mov eax,01h
ret ret
NEWSYM WMouseX, dd 0 SECTION .bss
NEWSYM WMouseY, dd 0 NEWSYM WMouseX, resd 1
NEWSYM WMouseMoveX, dd 0 NEWSYM WMouseY, resd 1
NEWSYM WMouseMoveY, dd 0 NEWSYM WMouseMoveX, resd 1
NEWSYM WMouseButton, dd 0 NEWSYM WMouseMoveY, resd 1
NEWSYM WMouseButton, resd 1
SECTION .text
NEWSYM Get_MouseData ; Returns both pressed and coordinates NEWSYM Get_MouseData ; Returns both pressed and coordinates
@@ -1543,15 +1556,18 @@ NEWSYM Check60hz
; Call the timer update function here ; Call the timer update function here
pushad pushad
call CheckTimers call CheckTimers
; call FrameSemaphore
popad popad
ret ret
SECTION .data
BitPosR db 11 BitPosR db 11
BitPosG db 5 BitPosG db 5
BitPosB db 0 BitPosB db 0
BitSizeR db 5 BitSizeR db 5
BitSizeG db 6 BitSizeG db 6
BitSizeB db 5 BitSizeB db 5
SECTION .text
InitializeGfxStuff: InitializeGfxStuff:
@@ -1714,19 +1730,22 @@ NEWSYM SetInputDevice
mov dword[eax+44],46 mov dword[eax+44],46
ret ret
SECTION .bss
; **************************** ; ****************************
; TCP/IP Stuff ; TCP/IP Stuff
; **************************** ; ****************************
; TCPIPPortNum ; TCPIPPortNum
NEWSYM TCPIPStatus, db 0 NEWSYM TCPIPStatus, resb 1
NEWSYM PacketSendSize, dd 0 NEWSYM PacketSendSize, resd 1
NEWSYM PacketRecvSize, dd 0 NEWSYM PacketRecvSize, resd 1
NEWSYM PacketRecvPtr, dd 0 NEWSYM PacketRecvPtr, resd 1
NEWSYM PacketSendArray, times 2048+256 db 0 NEWSYM PacketSendArray, resb 2048+256
NEWSYM PacketRecvArray, times 2048+256 db 0 NEWSYM PacketRecvArray, resb 2048+256
NEWSYM IPAddrStr, times 20 db 0 NEWSYM IPAddrStr, resb 20
NEWSYM RemoteDisconnect, db 0 NEWSYM RemoteDisconnect, resb 1
SECTION .text
NEWSYM TCPIPStartServer NEWSYM TCPIPStartServer
mov byte[RemoteDisconnect],0 mov byte[RemoteDisconnect],0
@@ -1772,7 +1791,9 @@ NEWSYM TCPIPWaitForConnection
popad popad
mov eax,-1 mov eax,-1
ret ret
.temp dd 0 SECTION .bss
.temp resd 1
SECTION .text
NEWSYM TCPIPInitConnectToServer NEWSYM TCPIPInitConnectToServer
pushad pushad
@@ -1825,7 +1846,9 @@ NEWSYM TCPIPConnectToServer
popad popad
mov eax,[.temp] mov eax,[.temp]
ret ret
.temp dd 0 SECTION .bss
.temp resd 1
SECTION .text
NEWSYM TCPIPConnectToServerW NEWSYM TCPIPConnectToServerW
; int ConnectServer(char *servername, unsigned short port) ; int ConnectServer(char *servername, unsigned short port)
@@ -1843,7 +1866,9 @@ NEWSYM TCPIPConnectToServerW
popad popad
mov eax,[.temp] mov eax,[.temp]
ret ret
.temp dd 0 SECTION .bss
.temp resd 0
SECTION .text
NEWSYM TCPIPStoreByte NEWSYM TCPIPStoreByte
; Store al into the array ; Store al into the array
@@ -2025,17 +2050,93 @@ NEWSYM GetTimeInSeconds
add eax,ebx add eax,ebx
ret ret
SECTION .bss
SystemTime: SystemTime:
.wYear dw 0 .wYear resw 1
.wMonth dw 0 .wMonth resw 1
.wDayOfWeek dw 0 .wDayOfWeek resw 1
.wDay dw 0 .wDay resw 1
.wHour dw 0 .wHour resw 1
.wMinute dw 0 .wMinute resw 1
.wSecond dw 0 .wSecond resw 1
.wMilliseconds dw 0 .wMilliseconds resw 1
SECTION .text
%ifdef __MINGW__ %ifdef __MINGW__
NEWSYM WinIntRFAsmEnd NEWSYM WinIntRFAsmEnd
%endif %endif
%if 0
; here's some code to blur a 512x448 region inside a 640x wide buffer
; code "borrowed" from KEGA 0.04b
%macro blurcrap 0
mov eax,ebx
mov ebx,ecx
mov ecx,dword [edi+4]
shr ecx,1
and ecx,ebp
mov edx,ecx
add edx,eax
shr edx,1
and edx,ebp
add edx,ebx
mov word [edi+2],dx
push edx
shr edx,1
shr esi,1
and edx,ebp
and esi,ebp
add edx,esi
mov word [edi],dx
pop esi
add edi,4
%endmacro
NEWSYM fastblur
push ebx
push ecx
push edx
push esi
push edi
push ebp
mov ebp, 0111101111101111b
cmp dword [converta], 1
jne .565
mov ebp, 0011110111101111b
.565
mov edi, [esp+1Ch]
mov ecx, 448
.loop
push ecx
xor ebx, ebx
mov ecx, dword [edi]
xor esi, esi
shr ecx, 1
and ecx, ebp
%rep 256
blurcrap
%endrep
pop ecx
add edi, 256
dec ecx
jne .loop
pop ebp
pop edi
pop esi
pop edx
pop ecx
pop ebx
ret
%endif

View File

@@ -241,6 +241,16 @@ extern "C"
void drawscreenwin(void); void drawscreenwin(void);
DWORD LastUsedPos=0; DWORD LastUsedPos=0;
DWORD CurMode=-1; DWORD CurMode=-1;
int InitDirectDraw();
int ReInitSound();
void initDirectDraw()
{
InitDirectDraw();
}
void reInitSound()
{
ReInitSound();
}
} }
void DDrawError(){ void DDrawError(){