From 8170188f4224116ed421716433b4cbf6df637f9e Mon Sep 17 00:00:00 2001 From: zsknight <> Date: Wed, 16 May 2001 00:57:47 +0000 Subject: [PATCH] B&W mode fix --- zsnes/src/video/makev16b.asm | 10 ++++++- zsnes/src/video/newgfx16.asm | 10 ++++++- zsnes/src/video/procvid.asm | 53 +++++++++++++++++++++++++++++++----- 3 files changed, 64 insertions(+), 9 deletions(-) diff --git a/zsnes/src/video/makev16b.asm b/zsnes/src/video/makev16b.asm index 45202dd7..e7efd6f9 100644 --- a/zsnes/src/video/makev16b.asm +++ b/zsnes/src/video/makev16b.asm @@ -33,7 +33,7 @@ EXTSYM extbgdone EXTSYM FPUZero,coladdb,coladdg,coladdr,pal16b,vesa2_bpos EXTSYM V8Mode,doveg,pal16bcl,pal16bxcl,prevbright,prevpal,vesa2_clbit EXTSYM vesa2_gpos,vesa2_rpos,vesa2_usbit,vidbright -EXTSYM cgmod,cgram,gammalevel16b +EXTSYM cgmod,cgram,gammalevel16b,dovegrest EXTSYM winspdata EXTSYM csprbit,csprprlft,sprclprio,sprsingle,sprpriodata EXTSYM bgofwptr,bgsubby,bshifter,curmosaicsz,cwinptr,osm2dis,temp @@ -889,6 +889,10 @@ NEWSYM setpalall jnz near .loopa mov al,[vidbright] mov [prevbright],al + cmp byte[V8Mode],1 + jne .noveg2 + call dovegrest +.noveg2 ret NEWSYM colleft16b, db 0 @@ -964,6 +968,10 @@ NEWSYM setpalette16b inc byte[colleft16b] jnz near .loopa .skipall + cmp byte[V8Mode],1 + jne .noveg2 + call dovegrest +.noveg2 ret ;pal16b times 256 dw 0 diff --git a/zsnes/src/video/newgfx16.asm b/zsnes/src/video/newgfx16.asm index 28abb8b1..c8317f74 100644 --- a/zsnes/src/video/newgfx16.asm +++ b/zsnes/src/video/newgfx16.asm @@ -57,7 +57,7 @@ EXTSYM ofsmval,ofsmvalh,hdmaearlstart,ofsmvalh,cbgval,drawlinengom4b16b EXTSYM drawsprngw,ignor512,winbg1envals,FillSubScr,scanlines EXTSYM drawmode7win16bd,SpecialLine,vidmemch2s EXTSYM smallscreenon,ScreenScale,SA1Enable,drawlinengom16x164b16b -EXTSYM doveg,V8Mode +EXTSYM doveg,V8Mode,dovegrest EXTSYM bgallchange,bg1change,bg2change,bg3change,bg4change EXTSYM ngwinptr,objwlrpos,objwen,objclineptr,CSprWinPtr EXTSYM BuildWindow2 @@ -166,6 +166,10 @@ NEWSYM setpalallng pop eax pop esi xor ecx,ecx + cmp byte[V8Mode],1 + jne .noveg2 + call dovegrest +.noveg2 ret NEWSYM setpalette16bng @@ -264,6 +268,10 @@ NEWSYM setpalette16bng pop esi xor ecx,ecx .skipall + cmp byte[V8Mode],1 + jne .noveg2 + call dovegrest +.noveg2 ret prevpal2 times 256 dw 0F00Fh diff --git a/zsnes/src/video/procvid.asm b/zsnes/src/video/procvid.asm index 36ff2647..a0b140cf 100644 --- a/zsnes/src/video/procvid.asm +++ b/zsnes/src/video/procvid.asm @@ -2225,8 +2225,17 @@ NEWSYM testpressed8b ; MakePal Changes the entire palette ;******************************************************* ; set the brightness with [maxbr] +NEWSYM cgramback, times 256 dw 0 NEWSYM doveg pushad + ; backup cgram + mov ecx,128 + xor ebx,ebx +.loop + mov eax,[cgram+ebx] + mov [cgramback+ebx],eax + add ebx,4 + loop .loop xor eax,eax mov al,[coladdr] add al,[coladdg] @@ -2272,6 +2281,19 @@ NEWSYM doveg popad ret +NEWSYM dovegrest + pushad + ; backup cgram + mov ecx,128 + xor ebx,ebx +.loop + mov eax,[cgramback+ebx] + mov [cgram+ebx],eax + add ebx,4 + loop .loop + popad + ret + blahblahblah dw 0 NEWSYM dosmakepal @@ -2404,6 +2426,10 @@ NEWSYM makepalb out dx,al out dx,al .nochange128 + cmp byte[V8Mode],1 + jne .noveg2 + call dovegrest +.noveg2 ret NEWSYM tempco0, dw 0 @@ -2540,6 +2566,10 @@ NEWSYM doschangepal out dx,al out dx,al .nochange128 + cmp byte[V8Mode],1 + jne .noveg2 + call dovegrest +.noveg2 ret NEWSYM prevbright, db 0 ; previous brightness @@ -3019,42 +3049,51 @@ NEWSYM hextestoutput EXTSYM Op14Zr,Op14Xr,Op14Yr,Op14U,Op14F,Op14L EXTSYM Op02CX,Op02CY,bg1scrolx,bg1scroly EXTSYM TValDebug,TValDebug2,curhdma - mov al,[scaddset] + mov ebx,[C4Ram] + mov al,[ebx] call outputhex mov esi,216*288+32+16 add esi,[vidbuffer] xor eax,eax - mov al,[scaddtype] + mov ebx,[C4Ram] + mov al,[ebx+1] call outputhex mov esi,216*288+70 add esi,[vidbuffer] xor eax,eax - mov al,[scrnon] + mov ebx,[C4Ram] + mov al,[ebx+2] call outputhex mov esi,216*288+70+16 add esi,[vidbuffer] xor eax,eax - mov al,[scrnon+1] + mov ebx,[C4Ram] + mov al,[ebx+3] call outputhex mov esi,216*288+108 add esi,[vidbuffer] xor eax,eax - mov al,[bg1scrolx+1] + mov ebx,[C4Ram] + mov al,[ebx+4] call outputhex mov esi,216*288+108+16 add esi,[vidbuffer] xor eax,eax - mov al,[bg1scrolx] + mov ebx,[C4Ram] + mov al,[ebx+9] call outputhex mov esi,216*288+146 add esi,[vidbuffer] xor eax,eax - mov al,[bg1scroly+1] + mov ebx,[C4Ram] + mov al,[ebx+10] call outputhex xor eax,eax mov esi,216*288+146+16 add esi,[vidbuffer] or al,[bg1scroly] + mov ebx,[C4Ram] + mov al,[ebx+11] call outputhex ret