⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui.asm

📁 linux下的任天堂模拟器代码。供大家参考。
💻 ASM
📖 第 1 页 / 共 5 页
字号:
  mov bl,0  out dx,al  inc dx.loope  mov al,bl  add al,[GUIRAdd]  mov ah,al  add al,al  add al,ah  shr al,2  out dx,al  mov al,bl  add al,[GUIGAdd]  mov ah,al  add al,al  add al,ah  shr al,2  out dx,al  mov al,bl  add al,[GUIBAdd]  mov ah,al  add al,al  add al,ah  shr al,2  out dx,al  inc bl  cmp bl,32  jne .loope  ; 0,10,31  mov al,[GUITRAdd]  mov [TRVal],al  mov al,[GUITGAdd]  mov [TGVal],al  mov al,[GUITBAdd]  mov [TBVal],al  mov ax,[TRVal]  inc ax  shr ax,3  mov [TRVali],ax  shl ax,3  add [TRVal],ax  mov ax,[TGVal]  inc ax  shr ax,3  mov [TGVali],ax  shl ax,3  add [TGVal],ax  mov ax,[TBVal]  inc ax  shr ax,3  mov [TBVali],ax  shl ax,3  add [TBVal],ax  GUIPal 64,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 65,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 66,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 67,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 68,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 69,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 70,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 71,[TRVal],[TGVal],[TBVal]  GUIPal 72,40,0,20  GUIPal 73,34,0,21  GUIPal 80,0,10,28  GUIPal 81,0,10,27  GUIPal 82,0,10,25  GUIPal 83,0,09,24  GUIPal 84,0,08,22  GUIPal 85,0,07,20  GUIPal 86,0,06,18  GUIPal 87,0,05,15  GUIPal 88,20,0,10  GUIPal 89,17,0,10  ; Orange Scale  mov dx,03C8h  mov al,128  mov cl,20  out dx,al  mov bh,0  mov ah,0  inc dx.loopf  add bh,2  inc ah  mov al,63  out dx,al  mov al,bh  out dx,al  mov al,ah  out dx,al  dec cl  jnz .loopf  ; Blue scale = 148 .. 167  mov al,[GUIWRAdd]  add al,al  mov [TRVal],al  mov al,[GUIWGAdd]  add al,al  mov [TGVal],al  mov al,[GUIWBAdd]  add al,al  mov [TBVal],al  mov byte[TRVali],4  mov byte[TGVali],4  mov byte[TBVali],4  GUIPal 152,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 151,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 150,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 149,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 148,[TRVal],[TGVal],[TBVal]  mov al,[GUIWRAdd]  add al,al  mov [TRVal],al  mov al,[GUIWGAdd]  add al,al  mov [TGVal],al  mov al,[GUIWBAdd]  add al,al  mov [TBVal],al  mov byte[TRVali],4  mov byte[TGVali],4  mov byte[TBVali],4  call DecPalVal  call DecPalVal  GUIPal 157,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 156,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 155,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 154,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 153,[TRVal],[TGVal],[TBVal]  mov al,[GUIWRAdd]  add al,al  mov [TRVal],al  mov al,[GUIWGAdd]  add al,al  mov [TGVal],al  mov al,[GUIWBAdd]  add al,al  mov [TBVal],al  mov byte[TRVali],4  mov byte[TGVali],4  mov byte[TBVali],4  call DecPalVal  call DecPalVal  call DecPalVal  call DecPalVal  GUIPal 162,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 161,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 160,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 159,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 158,[TRVal],[TGVal],[TBVal]  GUIPal 163,40,40,00  GUIPal 164,30,30,00  GUIPal 165,50,00,00  GUIPal 166,35,00,00  GUIPal 167,00,00,00  ; Blue scale shadow  mov al,[GUIWRAdd]  mov [TRVal],al  mov al,[GUIWGAdd]  mov [TGVal],al  mov al,[GUIWBAdd]  mov [TBVal],al  mov byte[TRVali],2  mov byte[TGVali],2  mov byte[TBVali],2  GUIPal 172,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 171,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 170,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 169,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 168,[TRVal],[TGVal],[TBVal]  mov al,[GUIWRAdd]  mov [TRVal],al  mov al,[GUIWGAdd]  mov [TGVal],al  mov al,[GUIWBAdd]  mov [TBVal],al  mov byte[TRVali],2  mov byte[TGVali],2  mov byte[TBVali],2  call DecPalVal  call DecPalVal  GUIPal 177,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 176,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 175,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 174,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 173,[TRVal],[TGVal],[TBVal]  mov al,[GUIWRAdd]  mov [TRVal],al  mov al,[GUIWGAdd]  mov [TGVal],al  mov al,[GUIWBAdd]  mov [TBVal],al  mov byte[TRVali],2  mov byte[TGVali],2  mov byte[TBVali],2  call DecPalVal  call DecPalVal  call DecPalVal  call DecPalVal  GUIPal 182,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 181,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 180,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 179,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal 178,[TRVal],[TGVal],[TBVal]  GUIPal 183,20,20,00  GUIPal 184,15,15,00  GUIPal 185,25,00,00  GUIPal 186,17,00,00  GUIPal 187,00,00,00  ; gray scale2 = 189 .. 220  mov dx,03C8h  mov al,189  mov bl,0  out dx,al  inc dx.loopi  mov al,bl  add al,al  mov ah,bl  shr ah,1  sub al,ah  out dx,al  out dx,al  add al,ah  out dx,al  inc bl  cmp bl,64  jne .loopi  GUIPal 221,00,55,00  GUIPal 222,00,45,00  GUIPal 223,00,25,00  GUIPal 224,40,0,20  GUIPal 225,32,0,15  GUIPal 226,20,0,10  GUIPal 227,16,0,07  GUIPal 228,45,45,50  GUIPal 229,40,40,45  GUIPal 230,35,35,40  GUIPal 231,30,30,35  GUIPal 232,35,15,15  GUIPal 233,50,12,60  GUIPal 234,30,14,60  cmp byte[GUIPalConv],0  je .convert  ret.convert  mov byte[GUIPalConv],1  ; Convert Image data to Gray Scale  ; Create Palette Table  call GUIconvpal  ; Convert Current Image in Buffer  mov esi,[vidbuffer]  mov ecx,288*240  xor eax,eax.next  mov al,[esi]  mov bl,[SubPalTable+eax]  mov [esi],bl  inc esi  dec ecx  jnz .next  retSECTION .bssNEWSYM GUICPC, resw 256SECTION .text%macro GUIPal16b 4  mov ax,%2  shr ax,1  shl ax,11  mov bx,%3  shl bx,5  or ax,bx  mov bx,%4  shr bx,1  or ax,bx  mov [GUICPC+%1*2],ax%endmacroDecPalVal:  mov ax,[TRVali]  sub word[TRVal],ax  mov ax,[TGVali]  sub word[TGVal],ax  mov ax,[TBVali]  sub word[TBVal],ax  test word[TRVal],8000h  jz .notnegr  mov word[TRVal],0.notnegr  test word[TGVal],8000h  jz .notnegg  mov word[TGVal],0.notnegg  test word[TBVal],8000h  jz .notnegb  mov word[TBVal],0.notnegb  retGUISetPal16:  ; set palette  ; Fixed Color Scale = 0 .. 31  mov word[GUICPC],0  inc al  xor ebx,ebx  mov bl,1.loopd  xor ecx,ecx  mov cl,bl  add cl,[GUIRAdd]  shr cl,1  shl ecx,11  xor eax,eax  mov al,bl  add al,[GUIGAdd]  shl eax,5  or ecx,eax  xor eax,eax  mov al,bl  add al,[GUIBAdd]  shr eax,1  or ecx,eax  mov [GUICPC+ebx*2],cx  inc bl  cmp bl,32  jne .loopd  ; gray scale = 32 .. 63  mov bl,32  mov al,32.loopc  mov al,bl  add al,al  xor ecx,ecx  mov cl,al  shr ecx,1  shl ecx,11  xor edx,edx  mov dl,al  shl edx,5  or ecx,edx  xor edx,edx  mov dl,al  shr edx,1  or ecx,edx  mov [GUICPC+ebx*2],cx  inc bl  cmp bl,64  jne .loopc  ; shadow = 96 .. 127  xor ebx,ebx.loope  xor ecx,ecx  mov al,bl  add al,[GUIRAdd]  mov ah,al  add al,al  add al,ah  shr al,2  shr al,1  or cl,al  shl ecx,6  mov al,bl  add al,[GUIGAdd]  mov ah,al  add al,al  add al,ah  shr al,2  or cl,al  shl ecx,5  mov al,bl  add al,[GUIBAdd]  mov ah,al  add al,al  add al,ah  shr al,2  shr al,1  or cl,al  mov [GUICPC+ebx*2+96*2],cx  inc bl  cmp bl,32  jne .loope  ; 0,10,31  mov al,[GUITRAdd]  mov [TRVal],al  mov al,[GUITGAdd]  mov [TGVal],al  mov al,[GUITBAdd]  mov [TBVal],al  mov ax,[TRVal]  inc ax  shr ax,3  mov [TRVali],ax  shl ax,3  add [TRVal],ax  mov ax,[TGVal]  inc ax  shr ax,3  mov [TGVali],ax  shl ax,3  add [TGVal],ax  mov ax,[TBVal]  inc ax  shr ax,3  mov [TBVali],ax  shl ax,3  add [TBVal],ax  GUIPal16b 64,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 65,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 66,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 67,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 68,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 69,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 70,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 71,[TRVal],[TGVal],[TBVal]  GUIPal16b 72,40,0,20  GUIPal16b 73,34,0,21  GUIPal16b 80,0,10,28  GUIPal16b 81,0,10,27  GUIPal16b 82,0,10,25  GUIPal16b 83,0,09,24  GUIPal16b 84,0,08,22  GUIPal16b 85,0,07,20  GUIPal16b 86,0,06,18  GUIPal16b 87,0,05,15  GUIPal16b 88,20,0,10  GUIPal16b 89,17,0,10  ; Orange Scale  mov cl,20  mov bh,0  mov ah,0  inc dx  mov esi,128.loopf  add bh,2  inc ah  mov edx,1Fh << 6  or dl,bh  shl edx,5  mov al,ah  shr al,1  or dl,al  mov [GUICPC+esi*2],dx  inc esi  dec cl  jnz .loopf  ; Blue scale = 148 .. 167  mov al,[GUIWRAdd]  add al,al  mov [TRVal],al  mov al,[GUIWGAdd]  add al,al  mov [TGVal],al  mov al,[GUIWBAdd]  add al,al  mov [TBVal],al  mov byte[TRVali],4  mov byte[TGVali],4  mov byte[TBVali],4  GUIPal16b 152,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 151,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 150,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 149,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 148,[TRVal],[TGVal],[TBVal]  mov al,[GUIWRAdd]  add al,al  mov [TRVal],al  mov al,[GUIWGAdd]  add al,al  mov [TGVal],al  mov al,[GUIWBAdd]  add al,al  mov [TBVal],al  mov byte[TRVali],4  mov byte[TGVali],4  mov byte[TBVali],4  mov al,[TRVal]  shr al,2  sub [TRVal],al  mov al,[TGVal]  shr al,2  sub [TGVal],al  mov al,[TBVal]  shr al,2  sub [TBVal],al  GUIPal16b 157,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 156,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 155,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 154,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 153,[TRVal],[TGVal],[TBVal]  mov al,[GUIWRAdd]  add al,al  mov [TRVal],al  mov al,[GUIWGAdd]  add al,al  mov [TGVal],al  mov al,[GUIWBAdd]  add al,al  mov [TBVal],al  mov byte[TRVali],4  mov byte[TGVali],4  mov byte[TBVali],4  mov al,[TRVal]  shr al,1  sub [TRVal],al  mov al,[TGVal]  shr al,1  sub [TGVal],al  mov al,[TBVal]  shr al,1  sub [TBVal],al  GUIPal16b 162,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 161,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 160,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 159,[TRVal],[TGVal],[TBVal]  call DecPalVal  GUIPal16b 158,[TRVal],[TGVal],[TBVal]  GUIPal16b 163,40,40,00  GUIPal16b 164,30,30,00  GUIPal16b 165,50

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -