diff options
Diffstat (limited to 'games-emulation/zsnes/files/zsnes-1.35-cvs.patch')
-rw-r--r-- | games-emulation/zsnes/files/zsnes-1.35-cvs.patch | 855 |
1 files changed, 855 insertions, 0 deletions
diff --git a/games-emulation/zsnes/files/zsnes-1.35-cvs.patch b/games-emulation/zsnes/files/zsnes-1.35-cvs.patch new file mode 100644 index 000000000000..88e356ebe4af --- /dev/null +++ b/games-emulation/zsnes/files/zsnes-1.35-cvs.patch @@ -0,0 +1,855 @@ +diff -ru zsnes-1.35/authors.txt zsnes/authors.txt +--- zsnes-1.35/authors.txt 2002-06-24 07:34:32.000000000 +0200 ++++ zsnes/authors.txt 2002-07-07 05:12:02.000000000 +0200 +@@ -1,6 +1,30 @@ +-ZSNES Open Source Authors: +--------------------------- ++-------------- ++The ZSNES Team ++-------------- + + zsKnight <zsknight@zsnes.com> + _Demo_ <z_demo_z@users.sourceforge.net> ++pagefault + ++------------------ ++Additional Authors ++------------------ ++ ++stainless ++pharos ++teuf ++relnev ++prometheus ++theoddone33 ++EvilTypeGuy ++hpsolo ++aaronl ++Diablo-D3 ++ ++------------- ++Miscellaneous ++------------- ++ ++Wilbern Cobb - initial OpenBSD work ++Thorsten "mirabile" Glaser - more OpenBSD integration ++Mitchell "The Khan Artist" Mebane - manpage +diff -ru zsnes-1.35/src/aclocal.m4 zsnes/src/aclocal.m4 +--- zsnes-1.35/src/aclocal.m4 2002-06-24 07:34:43.000000000 +0200 ++++ zsnes/src/aclocal.m4 2002-07-08 19:13:13.000000000 +0200 +@@ -1,6 +1,6 @@ +-dnl aclocal.m4 generated automatically by aclocal 1.4 ++dnl aclocal.m4 generated automatically by aclocal 1.4-p5 + +-dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. ++dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. + dnl This file is free software; the Free Software Foundation + dnl gives unlimited permission to copy and/or distribute it, + dnl with or without modifications, as long as this notice is preserved. +Only in zsnes-1.35/src: config.cache +diff -ru zsnes-1.35/src/cpu/dma.asm zsnes/src/cpu/dma.asm +--- zsnes-1.35/src/cpu/dma.asm 2002-06-24 07:34:32.000000000 +0200 ++++ zsnes/src/cpu/dma.asm 2002-06-28 00:04:57.000000000 +0200 +@@ -88,7 +88,7 @@ + and al,00000111b + cmp al,5 + jne .notmode5dma +- mov al,1 ++ sub al,4 + .notmode5dma + mov bl,al + shl bl,3 +@@ -475,6 +475,10 @@ + xor ecx,ecx + mov al,[esi] + and al,00000111b ++ cmp al,5 ++ jb .notmode567dma ++ sub al,4 ++.notmode567dma + mov ah,[.addrnumt+eax] + mov [edx+16],ah + mov bl,al +@@ -575,6 +579,10 @@ + xor ecx,ecx + mov al,[esi] + and al,00000111b ++ cmp al,5 ++ jb .notmode567dma ++ sub al,4 ++.notmode567dma + mov ah,[.addrnumt+eax] + mov [edx+16],ah + mov bl,al +@@ -677,6 +685,10 @@ + xor ecx,ecx + mov al,[esi] + and al,00000111b ++ cmp al,5 ++ jb .notmode567dma ++ sub al,4 ++.notmode567dma + mov ah,[.addrnumt+eax] + mov [edx+16],ah + mov bl,al +diff -ru zsnes-1.35/src/cpu/dspproc.asm zsnes/src/cpu/dspproc.asm +--- zsnes-1.35/src/cpu/dspproc.asm 2002-06-24 07:34:32.000000000 +0200 ++++ zsnes/src/cpu/dspproc.asm 2002-07-04 05:13:27.000000000 +0200 +@@ -1746,22 +1746,33 @@ + sar eax,8 + add edx,eax + ++ cmp dword [filter0],488 ++ jne %%notfilter2 ++ ++ mov eax,[prev0] ++ movsx eax,ax ++ mov [prev1],eax ++ mov eax,edx ++ and eax,0fffffffch ++ mov [prev0],eax ++ ++ jmp %%skipclamp ++%%notfilter2 + mov eax,[prev0] + mov [prev1],eax + cmp edx,-32768 + jnl %%notless +- mov dx,0 +-; mov edx,-32768 ++ mov edx,-32768 + mov byte[filteron],1 + %%notless + cmp edx,32767 + jng %%notgreater +- mov dx,0 +-; mov edx,32767 ++ mov edx,32767 + mov byte[filteron],1 + %%notgreater + movsx edx,dx + mov [prev0],edx ++%%skipclamp + %endmacro + + %macro ProcessDynamicLowPass 0 +diff -ru zsnes-1.35/src/cpu/regs.inc zsnes/src/cpu/regs.inc +--- zsnes-1.35/src/cpu/regs.inc 2002-06-24 07:34:33.000000000 +0200 ++++ zsnes/src/cpu/regs.inc 2002-06-29 18:01:27.000000000 +0200 +@@ -64,7 +64,7 @@ + setreg 2141h*4,reg2141r + setreg 2142h*4,reg2142r + setreg 2143h*4,reg2143r +- setreg 2144h*4,reg2144r ++ setreg 2144h*4,reg2140r + setreg 2180h*4,reg2180r + + setreg 2A00h*4,reg2Axxr +@@ -948,6 +948,8 @@ + + ; V counter data by external or software latch + reg213Dr: ++ cmp byte[latchyr],2 ; hack for games that don't read 213F ++ je .noreset + cmp byte[latchyr],1 + je .highv + mov al,byte[latchy] +@@ -959,7 +961,11 @@ + or al,byte[latchy+1] + mov byte[latchyr],0 + ret +- ++.noreset ++ mov al,byte[latchy] ++ and al,0FEh ++ or al,byte[latchy+1] ++ ret + ; PPU Status Flag & Version number (OBJ over flags) + reg213Er: + mov al,01h +@@ -1426,7 +1432,7 @@ + ret + + regINVALID: ; Invalid Register +- cmp cx,2050h ++ cmp cx,2100h + jb .cleared + mov al,ch + cmp byte[SPC7110Enable],0 +diff -ru zsnes-1.35/src/cpu/regsw.inc zsnes/src/cpu/regsw.inc +--- zsnes-1.35/src/cpu/regsw.inc 2002-06-24 07:34:33.000000000 +0200 ++++ zsnes/src/cpu/regsw.inc 2002-06-27 20:13:35.000000000 +0200 +@@ -109,6 +109,7 @@ + setregw 2141h*4,reg2141w + setregw 2142h*4,reg2142w + setregw 2143h*4,reg2143w ++ setregw 2144h*4,reg2140w + setregw 2180h*4,reg2180w + setregw 2181h*4,reg2181w + setregw 2182h*4,reg2182w +diff -ru zsnes-1.35/src/gui/gui.asm zsnes/src/gui/gui.asm +--- zsnes-1.35/src/gui/gui.asm 2002-06-24 07:34:33.000000000 +0200 ++++ zsnes/src/gui/gui.asm 2002-06-29 02:54:35.000000000 +0200 +@@ -606,6 +606,9 @@ + NEWSYM CombinDataGlob, times 3300 db 0 ; 20-name, 42-combo, 2-key#, 1-P#, 1-ff + NEWSYM CombinDataLocl, times 3300 db 0 + ++NEWSYM CmdLineNetPlay, db 0 ++NEWSYM CmdLineTCPIPAddress, times 29 db 0 ++ + GUIwinorder times 18 db 0 + GUIwinpos times 18 db 0 + GUIwinactiv times 18 db 0 +@@ -892,9 +895,6 @@ + or bl,80h + ret + +-NEWSYM CmdLineNetPlay, db 0 +-NEWSYM CmdLineTCPIPAddress, 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 +- + NEWSYM GUIRestoreVars + mov edx,GUIFName + call Open_File +diff -ru zsnes-1.35/src/init.asm zsnes/src/init.asm +--- zsnes-1.35/src/init.asm 2002-06-24 07:34:32.000000000 +0200 ++++ zsnes/src/init.asm 2002-07-04 19:13:59.000000000 +0200 +@@ -1451,6 +1451,7 @@ + .mmx2head db 50,58,56,62,50,62,49,95,39,77,95,95,95,95,95,95,95,95,95,95 + + EXTSYM ewj2hack ++EXTSYM latchyr + + NEWSYM headerhack + mov byte[disablehdma],0 +@@ -1465,6 +1466,103 @@ + mov byte[MMXSRAMFix],0 + + mov esi,[romdata] ++ add esi,0FFC0h ++ cmp dword[esi],'SAMU' ++ jne .notsamuraishodown ++ cmp dword[esi+4],'RAI ' ++ jne .notsamuraishodown ++ cmp dword[esi+8],'SHOD' ++ jne .notsamuraishodown ++ cmp dword[esi+12],'OWN ' ++ jne .notsamuraishodown ++ mov word [IRQHack],1 ++.notsamuraishodown ++ ++ mov esi,[romdata] ++ add esi,07FC0h ++ cmp dword[esi],0DFCAB0BDh ++ jne .notfamista1 ++ cmp dword[esi+4],0D0A7CCB0h ++ jne .notfamista1 ++ cmp dword[esi+8],02020C0BDh ++ jne .notfamista1 ++ cmp dword[esi+12],20202020h ++ jne .notfamista1 ++ mov esi,[romdata] ++ add esi,2762Fh ++ mov word [esi],0EAEAh ; Skip a check for value FF at 2140 when spc not ++ ; initialized yet?!? ++.notfamista1 ++ ++ mov esi,[romdata] ++ add esi,07FC0h ++ cmp dword[esi],0DFCAB0BDh ++ jne .notfamista2 ++ cmp dword[esi+4],0D0A7CCB0h ++ jne .notfamista2 ++ cmp dword[esi+8],03220C0BDh ++ jne .notfamista2 ++ cmp dword[esi+12],20202020h ++ jne .notfamista2 ++ mov esi,[romdata] ++ add esi,6CEDh ++ mov word [esi],0EAEAh ; Skip a check for value FF at 2140 when spc not ++ ; initialized yet?!? ++ mov esi,[romdata] ++ add esi,6CF9h ++ mov word [esi],0EAEAh ; Skip a check for value FF at 2140 when spc not ++ ; initialized yet?!? ++.notfamista2 ++ ++ mov esi,[romdata] ++ add esi,07FC0h ++ cmp dword[esi],20434653h ++ jne .notkamenrider ++ cmp dword[esi+4],0D7DDD2B6h ++ jne .notkamenrider ++ cmp dword[esi+8],0B0DEC0B2h ++ jne .notkamenrider ++ cmp dword[esi+12],20202020h ++ jne .notkamenrider ++ mov byte[latchyr],2 ++.notkamenrider ++ ++ mov esi,[romdata] ++ add esi,07FC0h ++ cmp dword[esi],'EURO' ++ jne .noteuropeanprimegoal ++ cmp dword[esi+4],'PEAN' ++ jne .noteuropeanprimegoal ++ cmp dword[esi+8],' PRI' ++ jne .noteuropeanprimegoal ++ cmp dword[esi+12],'ME G' ++ jne .noteuropeanprimegoal ++ mov al,0h ++ mov edi,spcRam ++ mov ecx,65472 ++ rep stosb ++ ret ++.noteuropeanprimegoal ++ ++ mov esi,[romdata] ++ add esi,07FC0h ++ cmp dword[esi],'CYBE' ++ jne .notcyberknight2 ++ cmp dword[esi+4],'R KN' ++ jne .notcyberknight2 ++ cmp dword[esi+8],'IGHT' ++ jne .notcyberknight2 ++ cmp dword[esi+12],' 2 ' ++ jne .notcyberknight2 ++ mov byte[cycpb268],75 ++ mov byte[cycpb358],77 ++ mov byte[cycpbl2],75 ++ mov byte[cycpblt2],75 ++ mov byte[cycpbl],75 ++ mov byte[cycpblt],75 ++.notcyberknight2 ++ ++ mov esi,[romdata] + add esi,07FC0h + cmp dword[esi],0B4B1DEC3h + jne .notdeasomething +@@ -6047,6 +6145,8 @@ + and al,0F0h + cmp al,10h + je .yessfx ++ cmp al,20h ++ je .yesobc + cmp al,30h + je near .yessa1 + cmp al,40h +@@ -6071,6 +6171,7 @@ + add esi,32704 + cmp dword[esi],'META' + jne .notsfx ++.yesobc + mov byte[OBCEnable],1 + jmp .nosfx + .notsfx +diff -ru zsnes-1.35/src/linux/copyvwin.asm zsnes/src/linux/copyvwin.asm +--- zsnes-1.35/src/linux/copyvwin.asm 2002-06-24 07:34:33.000000000 +0200 ++++ zsnes/src/linux/copyvwin.asm 2002-06-28 08:50:20.000000000 +0200 +@@ -38,12 +38,11 @@ + SECTION .text + + NEWSYM copy640x480x16bwin +- pushad + cmp byte[curblank],40h + jne .startcopy +- popad + ret + .startcopy ++ pushad + mov esi,[vidbuffer] + mov edi,[WinVidMemStart] + add esi,16*2+256*2+32*2 +@@ -120,14 +119,13 @@ + inc ebx + dec dl + jnz near .loopa ++ popad + xor byte[res512switch],1 + cmp byte[MMXSupport],1 + je .mmx2 +- popad + ret + .mmx2 + emms +- popad + ret + .yeshires + mov byte[ebx],0 +@@ -231,7 +229,7 @@ + .loopab + mov ecx,256 + cmp byte[ebx],1 +- je .yeshiresb ++ je near .yeshiresb + cmp byte[ebx],1 + jbe .ignorehrb + call HighResProc +@@ -261,10 +259,10 @@ + inc ebx + dec dl + jnz .loopab ++ popad + xor byte[res512switch],1 + cmp byte[MMXSupport],1 + je near .mmx2 +- popad + ret + .yeshiresb + mov byte[ebx],0 +@@ -348,9 +346,9 @@ + inc ebx + dec dl + jnz near .loopabh ++ popad + cmp byte[MMXSupport],1 + je near .mmx2 +- popad + ret + .mmxslh + mov eax,[spritetablea] +@@ -448,9 +446,9 @@ + inc ebx + dec byte[lineleft] + jnz near .loopabh2 ++ popad + cmp byte[MMXSupport],1 + je near .mmx2 +- popad + ret + .mmxslh2 + mov eax,[spritetablea] +@@ -529,7 +527,6 @@ + jnz .nofielde + add edi,[NumBytesPerLine] + .nofielde +- popad + ret + .hiresmode7 + cmp byte[MMXSupport],1 +@@ -557,7 +554,6 @@ + dec ecx + jnz .a2b + sub esi,75036*4 +- popad + ret + .yeshiresngmmxmode7 + mov ecx,64 +@@ -590,7 +586,6 @@ + dec ecx + jnz .mmxrb + sub esi,75036*4 +- popad + ret + .hires + cmp byte[MMXSupport],1 +@@ -611,7 +606,6 @@ + jnz .lowerfield + add edi,[NumBytesPerLine] + .lowerfield +- popad + ret + .nofieldb + cmp byte[scanlines],1 +@@ -631,10 +625,8 @@ + add edi,4 + dec ecx + jnz .bngb +- popad + ret + .scanlines +- popad + ret + .yeshiresngmmx + mov eax,[spritetablea] +@@ -663,7 +655,6 @@ + jnz .lowerfieldb + add edi,[NumBytesPerLine] + .lowerfieldb +- popad + ret + .nofieldc + cmp byte[scanlines],1 +@@ -696,7 +687,6 @@ + add edi,32 + dec ecx + jnz .mmxr2 +- popad + ret + .antialias + add edi,[AddEndBytes] +@@ -730,7 +720,6 @@ + add esi,8 + dec ecx + jnz .mmxr2aa +- popad + ret + .halfscanlines + add edi,[AddEndBytes] +@@ -747,7 +736,6 @@ + add edi,4 + dec ecx + jnz .abhs +- popad + ret + .quartscanlines + add edi,[AddEndBytes] +@@ -767,7 +755,6 @@ + add edi,4 + dec ecx + jnz .abhs2 +- popad + ret + .halfscanlinesmmx + mov eax,[spritetablea] +@@ -796,7 +783,6 @@ + add edi,32 + dec ecx + jnz .mmxr2h +- popad + ret + .quartscanlinesmmx + mov eax,[spritetablea] +@@ -1383,7 +1369,7 @@ + jmp .returninterps + .ignorehrs + cmp byte[ebx],1 +- je .yeshiresb ++ je near .yeshiresb + .ignorehrb + push ebx + .ab +diff -ru zsnes-1.35/src/linux/sdlintrf.asm zsnes/src/linux/sdlintrf.asm +--- zsnes-1.35/src/linux/sdlintrf.asm 2002-06-24 07:34:33.000000000 +0200 ++++ zsnes/src/linux/sdlintrf.asm 2002-06-29 01:46:14.000000000 +0200 +@@ -170,6 +170,10 @@ + mov byte[esi+11+256],'t' + mov byte[esi+12+256],0 + ++ mov byte[spcon],1 ++ mov byte[soundon],1 ++ mov byte[cfgsoundon],1 ++ + ; Get and set the initial directory + %ifdef __LINUX__ + call obtaindir +diff -ru zsnes-1.35/src/linux/sdllink.c zsnes/src/linux/sdllink.c +--- zsnes-1.35/src/linux/sdllink.c 2002-06-24 07:34:33.000000000 +0200 ++++ zsnes/src/linux/sdllink.c 2002-07-07 05:45:40.000000000 +0200 +@@ -580,6 +580,22 @@ + return TRUE; + } + ++int saybitdepth() ++{ ++ int MyBitsPerPixel; ++ const SDL_VideoInfo *info; ++ SDL_Init(SDL_INIT_VIDEO); ++ info = SDL_GetVideoInfo(); ++ MyBitsPerPixel = info->vfmt->BitsPerPixel; ++ switch (MyBitsPerPixel) ++ { ++ case 0: printf("Cannot detect bitdepth. On fbcon and svgalib this is normal.\nTrying to force 16 bpp.\n\n"); break; ++ case 16: break; ++ default: printf("You are running in %d bpp, but ZSNES is forcing 16 bpp.\nYou may experience poor performance and/or crashing.\n\n", MyBitsPerPixel); break; ++ } ++ return 0; ++} ++ + int startgame(void) + { + int status; +@@ -598,7 +614,7 @@ + if (sdl_state == vid_soft) sw_end(); + #ifdef __OPENGL__ + else if (sdl_state == vid_gl) gl_end(); +- ++ saybitdepth(); + if (UseOpenGL) + { + status = gl_start(WindowWidth, WindowHeight, BitDepth, FullScreen); +diff -ru zsnes-1.35/src/linux/sw_draw.c zsnes/src/linux/sw_draw.c +--- zsnes-1.35/src/linux/sw_draw.c 2002-06-24 07:34:33.000000000 +0200 ++++ zsnes/src/linux/sw_draw.c 2002-07-07 04:51:19.000000000 +0200 +@@ -41,9 +41,7 @@ + { + unsigned int color32, p; + int i; +- Uint32 flags = SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE | SDL_ANYFORMAT +- +-; ++ Uint32 flags = SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_HWPALETTE; + DWORD GBitMask; + + p = BitConv32Ptr; +diff -ru zsnes-1.35/src/ui.asm zsnes/src/ui.asm +--- zsnes-1.35/src/ui.asm 2002-06-24 07:34:32.000000000 +0200 ++++ zsnes/src/ui.asm 2002-07-07 05:12:02.000000000 +0200 +@@ -21,7 +21,7 @@ + EXTSYM ConvertJoyMap,ConvertJoyMap1,ConvertJoyMap2,printhex,InitSPC + EXTSYM StartUp,PrintStr,WaitForKey,PrintChar,ZFileSystemInit + EXTSYM SPCDisable,SystemInit,allocmem +-EXTSYM FPSOn,FPSAtStart,cfgsoundon,FirstTimeData ++EXTSYM FPSOn,FPSAtStart,cfgsoundon + EXTSYM xa + EXTSYM SBPort,SBInt,SBIrq,SBDMA,SBDMAPage,SBHDMAPage,getenv,vibracard + EXTSYM ram7fa,wramdataa +@@ -69,14 +69,6 @@ + + cld ;clear direction flag + +-%ifndef __MSDOS__ +- cmp byte[FirstTimeData],1 +- je .nofirsttime +- mov byte[soundon],1 +- mov byte[cfgsoundon],1 +-.nofirsttime +-%endif +- + call setnoise + call InitSPC + call allocmem ;allocate memory +@@ -151,8 +143,7 @@ + db 'ZSNES v',ZVERSION,' (c) 1997-2002, ZSNES Team (zsKnight & _Demo_)',13,10,13,10 + db 'Be sure to check http://www.zsnes.com/ for the latest version.',13,10 + db 'Please report crashes to zsnes-devel@lists.sourceforge.net.',13,10,13,10 +- db ' Main Coders : zsKnight, _Demo_, and pagefault',13,10 +- db ' Assistant Coders : Pharos, teuf, theoddone33, and stainless',13,10,13,10 ++ db 'ZSNES is written by the ZSNES Team (See AUTHORS.TXT)',13,10 + db 'ZSNES comes with ABSOLUTELY NO WARRANTY. This is free software,',10,13 + db 'and you are welcome to redistribute it under certain conditions;',10,13 + %ifdef __LINUX__ +diff -ru zsnes-1.35/src/video/newgfx16.mac zsnes/src/video/newgfx16.mac +--- zsnes-1.35/src/video/newgfx16.mac 2002-06-24 07:34:34.000000000 +0200 ++++ zsnes/src/video/newgfx16.mac 2002-06-29 20:07:04.000000000 +0200 +@@ -2832,12 +2832,15 @@ + je near .offsetm + cmp byte[t16x161+ebx+%1*256],1 + je near .tiles16x16 +- cmp byte[BGMA+ebx],4 +- je near .offsetm + .nooffsetm + mov eax,[BGPT1+ebx*2+%1*512] + test ecx,100h + jz .noyinc ++ cmp byte[osm2dis],1 ++ je .nooffsetm4 ++ cmp byte[BGMA+ebx],4 ++ je near .offsetm ++.nooffsetm4 + add eax,[BGPT1Y+ebx*2+%1*512] + .noyinc + lea ecx,[ecx*8] +@@ -3131,10 +3134,7 @@ + shl edx,6 + xor eax,eax + mov ax,[BGPT3+ebx*2] +- cmp dx,0 +- jl .isneg1 + add ax,dx +-.isneg1 + xor edx,edx + mov dx,[BG3SXl+ebx*2] + and dx,0F8h +@@ -3303,10 +3303,7 @@ + shl edx,6 + xor eax,eax + mov ax,[BGPT3+ebx*2] +- cmp dx,0 +- jl .isneg2 + add ax,dx +-.isneg2 + xor edx,edx + mov dx,[BG3SXl+ebx*2] + and dx,0F8h +@@ -3709,10 +3706,7 @@ + shl edx,6 + xor eax,eax + mov ax,[BGPT3+ebx*2] +- cmp dx,0 +- jl .isneg3 + add ax,dx +-.isneg3 + xor edx,edx + mov dx,[BG3SXl+ebx*2] + and dx,0F8h +diff -ru zsnes-1.35/src/video/newgfx.mac zsnes/src/video/newgfx.mac +--- zsnes-1.35/src/video/newgfx.mac 2002-06-24 07:34:34.000000000 +0200 ++++ zsnes/src/video/newgfx.mac 2002-06-29 20:25:36.000000000 +0200 +@@ -2611,20 +2611,24 @@ + add ecx,ebx + jmp %%yesmosaic + %%nomosaic +- + cmp byte[BGMA+ebx],5 + jae near .tiles16x8 + %%yesmosaic +- + cmp byte[t16x161+ebx+%1*256],1 + je near .tiles16x16 ++ cmp byte[osm2dis],1 ++ je .nooffsetm + cmp byte[BGMA+ebx],2 + je near .offsetm +- cmp byte[BGMA+ebx],4 +- je near .offsetm ++.nooffsetm + mov eax,[BGPT1+ebx*2+%1*512] + test ecx,100h + jz .noyinc ++ cmp byte[osm2dis],1 ++ je .nooffsetm4 ++ cmp byte[BGMA+ebx],4 ++ je near .offsetm ++.nooffsetm4 + add eax,[BGPT1Y+ebx*2+%1*512] + .noyinc + lea ecx,[ecx*8] +@@ -2888,10 +2892,7 @@ + shl edx,6 + xor eax,eax + mov ax,[BGPT3+ebx*2] +- cmp dx,0 +- jl .isneg + add ax,dx +-.isneg + xor edx,edx + mov dx,[BG3SXl+ebx*2] + and dx,0F8h +@@ -2955,6 +2956,21 @@ + add eax,ecx + add [ofsmtptr],ecx + mov [ofsmmptr],eax ++ ++ mov word[bgtxadd2],0 ++ cmp word[BGPT3X+ebx*2],0 ++ je .yesoverfl ++ mov cx,word[BG3SXl+ebx*2] ++ add cx,16 ++ test cx,100h ++ jz .notoverfl ++ add dword[ofsmcptr],800h ++ sub word[bgtxadd2],800h ++ jmp .yesoverfl ++.notoverfl ++ add word[bgtxadd2],800h ++.yesoverfl ++ + mov dword[ofshvaladd],0 + mov ecx,[BGOPT1+ebx*2+%1*512] + mov edx,[BGMA+ebx] +@@ -3066,10 +3082,13 @@ + %%yesmosaic + cmp byte[t16x161+ebx+%1*256],1 + je near .tiles16x16 ++ cmp byte[osm2dis],1 ++ je .nooffsetm + cmp byte[BGMA+ebx],2 + je near .offsetm +- cmp byte[BGMA+ebx],4 +- je near .offsetm ++; cmp byte[BGMA+ebx],4 ++; je near .offsetm ++.nooffsetm + mov eax,[BG1SYl+ebx*2+%1*512] + and eax,0FFFFh + add eax,ebx +@@ -3240,10 +3259,7 @@ + shl edx,6 + xor eax,eax + mov ax,[BGPT3+ebx*2] +- cmp dx,0 +- jl .isneg + add ax,dx +-.isneg + xor edx,edx + mov dx,[BG3SXl+ebx*2] + and dx,0F8h +@@ -3275,6 +3291,21 @@ + mov eax,[BGPT1+ebx*2+%1*512] + mov [ofsmtptr],eax + mov [ofsmtptrs],eax ++ ++ mov word[bgtxadd2],0 ++ cmp word[BGPT3X+ebx*2],0 ++ je .yesoverfl ++ mov cx,word[BG3SXl+ebx*2] ++ add cx,16 ++ test cx,100h ++ jz .notoverfl ++ add dword[ofsmcptr],800h ++ sub word[bgtxadd2],800h ++ jmp .yesoverfl ++.notoverfl ++ add word[bgtxadd2],800h ++.yesoverfl ++ + mov ecx,[BG1SXl+ebx*2+%1*512] + mov edx,[BGPT1X+ebx*2+%1*512] + test ecx,100h +diff -ru zsnes-1.35/src/win/winintrf.asm zsnes/src/win/winintrf.asm +--- zsnes-1.35/src/win/winintrf.asm 2002-06-24 07:34:34.000000000 +0200 ++++ zsnes/src/win/winintrf.asm 2002-06-29 01:46:14.000000000 +0200 +@@ -189,6 +189,10 @@ + mov byte[esi+11+256],'t' + mov byte[esi+12+256],0 + ++ mov byte[spcon],1 ++ mov byte[soundon],1 ++ mov byte[cfgsoundon],1 ++ + ; Get and set the initial directory + mov ebx,InitDir + mov edx,InitDrive +diff -ru zsnes-1.35/src/win/zloaderw.c zsnes/src/win/zloaderw.c +--- zsnes-1.35/src/win/zloaderw.c 2002-06-24 07:34:34.000000000 +0200 ++++ zsnes/src/win/zloaderw.c 2002-06-29 01:39:53.000000000 +0200 +@@ -40,7 +40,8 @@ + romtype, scanlines, showallext, smallscreenon, soundon, + spcon, vsyncon, DisplayS, fname, filefound, SnowOn, + NetChatFirst,NetServer,NetNewNick, +- NetFilename,TCPIPAddress,NetQuitAfter,UDPConfig; ++ NetFilename,CmdLineTCPIPAddress,NetQuitAfter,UDPConfig, ++ CmdLineNetPlay; + + void ccmdline(void); + +@@ -178,7 +179,8 @@ + if (strptr<4) { + NetServer=0; + } else { +- strp=&TCPIPAddress; ++ CmdLineNetPlay = 1; ++ strp=&CmdLineTCPIPAddress; + strncpy(strp,ExtA[3],28); + } + } +@@ -670,10 +672,17 @@ + } + else + { +- if(gfnm > 0) ++ if(gfnm > 0) // Quick fix to allow spaces, might produce strange names ++ // if there are unrecognized options + { +- printf("Limit yourself to one filename\n"); +- return 2; ++ char *fvar, *fvar2; ++ fvar=&fname; ++ fvar2=&fname+fvar[0]+1; ++ if(fvar[0]+3>127) return(2); ++ fvar2[0]=' '; ++ strncpy(&fvar2[1],argv[p],127-fvar[0]-1); ++ fvar[0] += strlen(argv[p])+1; ++ gfnm++; + } + else + { +@@ -685,7 +694,7 @@ + } + } + } +- if(gfnm == 1) ++ if(gfnm > 0) + { + filefound=0; + makeextension(); |