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

📄 regsw.inc

📁 linux下的任天堂模拟器代码。供大家参考。
💻 INC
📖 第 1 页 / 共 3 页
字号:
;Copyright (C) 1997-2007 ZSNES Team ( zsKnight, _Demo_, pagefault, Nach );;http://www.zsnes.com;http://sourceforge.net/projects/zsnes;https://zsnes.bountysource.com;;This program is free software; you can redistribute it and/or;modify it under the terms of the GNU General Public License;version 2 as published by the Free Software Foundation.;;This program is distributed in the hope that it will be useful,;but WITHOUT ANY WARRANTY; without even the implied warranty of;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the;GNU General Public License for more details.;;You should have received a copy of the GNU General Public License;along with this program; if not, write to the Free Software;Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.EXTSYM initsfxregsw,reg420Bw,reg420Cw,regptw,initSA1regsw,SDD1ResetEXTSYM SPC7110Reset,RTCReset2,NextLineCache,vidmemch2,vidmemch4EXTSYM vidmemch8,vrama,nmirept,SPCRAM,HIRQCycNext,HIRQNextExe,tableadcEXTSYM cycpb268,cycpb358,cycpbl,cycpblt,opexec268,opexec268cph,opexec358EXTSYM opexec358cph%ifndef NO_DEBUGGEREXTSYM sndwrit,debstop%endifSECTION .textNEWSYM initregw    ; Fill register pointer with invalid register accesses    mov edi,[regptw]    add edi,8000h    mov ecx,3000h    mov eax,regINVALIDw.loopa    mov [edi],eax    add edi,4    dec ecx    jnz .loopa    ; Set all valid register accesses    setregw 2100h*4,reg2100w    setregw 2101h*4,reg2101w    setregw 2102h*4,reg2102w    setregw 2103h*4,reg2103w    setregw 2104h*4,reg2104w    setregw 2105h*4,reg2105w    setregw 2106h*4,reg2106w    setregw 2107h*4,reg2107w    setregw 2108h*4,reg2108w    setregw 2109h*4,reg2109w    setregw 210Ah*4,reg210Aw    setregw 210Bh*4,reg210Bw    setregw 210Ch*4,reg210Cw    setregw 210Dh*4,reg210Dw    setregw 210Eh*4,reg210Ew    setregw 210Fh*4,reg210Fw    setregw 2110h*4,reg2110w    setregw 2111h*4,reg2111w    setregw 2112h*4,reg2112w    setregw 2113h*4,reg2113w    setregw 2114h*4,reg2114w    setregw 2115h*4,reg2115w    setregw 2116h*4,reg2116w    setregw 2117h*4,reg2117w    setregw 2118h*4,reg2118    setregw 2119h*4,reg2119inc    setregw 211Ah*4,reg211Aw    setregw 211Bh*4,reg211Bw    setregw 211Ch*4,reg211Cw    setregw 211Dh*4,reg211Dw    setregw 211Eh*4,reg211Ew    setregw 211Fh*4,reg211Fw    setregw 2120h*4,reg2120w    setregw 2121h*4,reg2121w    setregw 2122h*4,reg2122w    setregw 2123h*4,reg2123w    setregw 2124h*4,reg2124w    setregw 2125h*4,reg2125w    setregw 2126h*4,reg2126w    setregw 2127h*4,reg2127w    setregw 2128h*4,reg2128w    setregw 2129h*4,reg2129w    setregw 212Ah*4,reg212Aw    setregw 212Bh*4,reg212Bw    setregw 212Ch*4,reg212Cw    setregw 212Dh*4,reg212Dw    setregw 212Eh*4,reg212Ew    setregw 212Fh*4,reg212Fw    setregw 2130h*4,reg2130w    setregw 2131h*4,reg2131w    setregw 2132h*4,reg2132w    setregw 2133h*4,reg2133w    setregw 2140h*4,reg2140w    setregw 2141h*4,reg2141w    setregw 2142h*4,reg2142w    setregw 2143h*4,reg2143w    setregw 2144h*4,reg2140w    setregw 2145h*4,reg2141w    setregw 2146h*4,reg2142w    setregw 2147h*4,reg2143w    setregw 2148h*4,reg2140w    setregw 2149h*4,reg2141w    setregw 214Ah*4,reg2142w    setregw 214Bh*4,reg2143w    setregw 214Ch*4,reg2140w    setregw 214Dh*4,reg2141w    setregw 214Eh*4,reg2142w    setregw 214Fh*4,reg2143w    setregw 2150h*4,reg2140w    setregw 2151h*4,reg2141w    setregw 2152h*4,reg2142w    setregw 2153h*4,reg2143w    setregw 2154h*4,reg2140w    setregw 2155h*4,reg2141w    setregw 2156h*4,reg2142w    setregw 2157h*4,reg2143w    setregw 2158h*4,reg2140w    setregw 2159h*4,reg2141w    setregw 215Ah*4,reg2142w    setregw 215Bh*4,reg2143w    setregw 215Ch*4,reg2140w    setregw 215Dh*4,reg2141w    setregw 215Eh*4,reg2142w    setregw 215Fh*4,reg2143w    setregw 2160h*4,reg2140w    setregw 2161h*4,reg2141w    setregw 2162h*4,reg2142w    setregw 2163h*4,reg2143w    setregw 2164h*4,reg2140w    setregw 2165h*4,reg2141w    setregw 2166h*4,reg2142w    setregw 2167h*4,reg2143w    setregw 2168h*4,reg2140w    setregw 2169h*4,reg2141w    setregw 216Ah*4,reg2142w    setregw 216Bh*4,reg2143w    setregw 216Ch*4,reg2140w    setregw 216Dh*4,reg2141w    setregw 216Eh*4,reg2142w    setregw 216Fh*4,reg2143w    setregw 2170h*4,reg2140w    setregw 2171h*4,reg2141w    setregw 2172h*4,reg2142w    setregw 2173h*4,reg2143w    setregw 2174h*4,reg2140w    setregw 2175h*4,reg2141w    setregw 2176h*4,reg2142w    setregw 2177h*4,reg2143w    setregw 2178h*4,reg2140w    setregw 2179h*4,reg2141w    setregw 217Ah*4,reg2142w    setregw 217Bh*4,reg2143w    setregw 217Ch*4,reg2140w    setregw 217Dh*4,reg2141w    setregw 217Eh*4,reg2142w    setregw 217Fh*4,reg2143w    setregw 2180h*4,reg2180w    setregw 2181h*4,reg2181w    setregw 2182h*4,reg2182w    setregw 2183h*4,reg2183w    setregw 4016h*4,reg4016w    setregw 4200h*4,reg4200w    setregw 4201h*4,reg4201w    setregw 4202h*4,reg4202w    setregw 4203h*4,reg4203w    setregw 4204h*4,reg4204w    setregw 4205h*4,reg4205w    setregw 4206h*4,reg4206w    setregw 4207h*4,reg4207w    setregw 4208h*4,reg4208w    setregw 4209h*4,reg4209w    setregw 420Ah*4,reg420Aw    setregw 420Bh*4,reg420Bw    setregw 420Ch*4,reg420Cw    setregw 420Dh*4,reg420Dw    setregw 4300h*4,reg43X0w    setregw 4301h*4,reg43X1w    setregw 4302h*4,reg43x2w    setregw 4303h*4,reg43x3w    setregw 4304h*4,reg43x4w    setregw 4305h*4,reg43x5w    setregw 4306h*4,reg43x6w    setregw 4307h*4,reg43x7w    setregw 4308h*4,reg43x8w    setregw 4309h*4,reg43x9w    setregw 430Ah*4,reg43XAw    setregw 430Bh*4,reg43XBw    setregw 430Fh*4,reg43XBw    setregw 4310h*4,reg43X0w    setregw 4311h*4,reg43X1w    setregw 4312h*4,reg43x2w    setregw 4313h*4,reg43x3w    setregw 4314h*4,reg43x4w    setregw 4315h*4,reg43x5w    setregw 4316h*4,reg43x6w    setregw 4317h*4,reg43x7w    setregw 4318h*4,reg43x8w    setregw 4319h*4,reg43x9w    setregw 431Ah*4,reg43XAw    setregw 431Bh*4,reg43XBw    setregw 431Fh*4,reg43XBw    setregw 4320h*4,reg43X0w    setregw 4321h*4,reg43X1w    setregw 4322h*4,reg43x2w    setregw 4323h*4,reg43x3w    setregw 4324h*4,reg43x4w    setregw 4325h*4,reg43x5w    setregw 4326h*4,reg43x6w    setregw 4327h*4,reg43x7w    setregw 4328h*4,reg43x8w    setregw 4329h*4,reg43x9w    setregw 432Ah*4,reg43XAw    setregw 432Bh*4,reg43XBw    setregw 432Fh*4,reg43XBw    setregw 4330h*4,reg43X0w    setregw 4331h*4,reg43X1w    setregw 4332h*4,reg43x2w    setregw 4333h*4,reg43x3w    setregw 4334h*4,reg43x4w    setregw 4335h*4,reg43x5w    setregw 4336h*4,reg43x6w    setregw 4337h*4,reg43x7w    setregw 4338h*4,reg43x8w    setregw 4339h*4,reg43x9w    setregw 433Ah*4,reg43XAw    setregw 433Bh*4,reg43XBw    setregw 433Fh*4,reg43XBw    setregw 4340h*4,reg43X0w    setregw 4341h*4,reg43X1w    setregw 4342h*4,reg43x2w    setregw 4343h*4,reg43x3w    setregw 4344h*4,reg43x4w    setregw 4345h*4,reg43x5w    setregw 4346h*4,reg43x6w    setregw 4347h*4,reg43x7w    setregw 4348h*4,reg43x8w    setregw 4349h*4,reg43x9w    setregw 434Ah*4,reg43XAw    setregw 434Bh*4,reg43XBw    setregw 434Fh*4,reg43XBw    setregw 4350h*4,reg43X0w    setregw 4351h*4,reg43X1w    setregw 4352h*4,reg43x2w    setregw 4353h*4,reg43x3w    setregw 4354h*4,reg43x4w    setregw 4355h*4,reg43x5w    setregw 4356h*4,reg43x6w    setregw 4357h*4,reg43x7w    setregw 4358h*4,reg43x8w    setregw 4359h*4,reg43x9w    setregw 435Ah*4,reg43XAw    setregw 435Bh*4,reg43XBw    setregw 435Fh*4,reg43XBw    setregw 4360h*4,reg43X0w    setregw 4361h*4,reg43X1w    setregw 4362h*4,reg43x2w    setregw 4363h*4,reg43x3w    setregw 4364h*4,reg43x4w    setregw 4365h*4,reg43x5w    setregw 4366h*4,reg43x6w    setregw 4367h*4,reg43x7w    setregw 4368h*4,reg43x8w    setregw 4369h*4,reg43x9w    setregw 436Ah*4,reg43XAw    setregw 436Bh*4,reg43XBw    setregw 436Fh*4,reg43XBw    setregw 4370h*4,reg43X0w    setregw 4371h*4,reg43X1w    setregw 4372h*4,reg43x2w    setregw 4373h*4,reg43x3w    setregw 4374h*4,reg43x4w    setregw 4375h*4,reg43x5w    setregw 4376h*4,reg43x6w    setregw 4377h*4,reg43x7w    setregw 4378h*4,reg43x8w    setregw 4379h*4,reg43x9w    setregw 437Ah*4,reg43XAw    setregw 437Bh*4,reg43XBw    setregw 437Fh*4,reg43XBw    cmp byte[SFXEnable],0    je .nosfx    call initsfxregsw.nosfx    cmp byte[SA1Enable],0    je .nosa1    call initSA1regsw.nosa1    cmp byte[SDD1Enable],0    je .nosdd1    call SDD1Reset.nosdd1    cmp byte[SPC7110Enable],0    je .nospc7110    call SPC7110Reset.nospc7110    cmp byte[RTCEnable],0    je .nortc    call RTCReset2.nortc    ret; video memory change buffer for caching (65536/16=4096);vidmemch2, vidmemch4, vidmemch8. 4096 bytes each;*******************************************************; Registers    Note : restore AH, ECX, ESI, EDI, *S & DX;*******************************************************; Screen display registerreg2100w:    mov [vidbright],al    and byte[vidbright],0Fh    mov [forceblnk],al    and byte[forceblnk],80h    retSECTION .bssNEWSYM prevoamptr, resb 1SECTION .text; OAM size registerreg2101w:    cmp byte[prevoamptr],0FFh    je .noskip    cmp byte[prevoamptr],al    je near .noproc.noskip    mov [prevoamptr],al    xor ebx,ebx    mov bl,al    and bl,03h    shl bx,14    mov [objptr],bx    mov [objptrn],bx    xor ebx,ebx    mov bl,al    and bl,18h    shr bl,3    shl bx,13    add [objptrn],bx    xor ebx,ebx    mov bl,al    shr bl,5    push eax    mov byte[NextLineCache],1    mov al,[.objsize1+ebx]    mov [objsize1],al    mov al,[.objsize2+ebx]    mov [objsize2],al    mov al,[.objmovs1+ebx]    mov [objmovs1],al    mov al,[.objmovs2+ebx]    mov [objmovs2],al    mov ax,[.objadds1+ebx*2]    mov [objadds1],ax    mov ax,[.objadds2+ebx*2]    mov [objadds2],ax    pop eax.noproc    retSECTION .data.objsize1 db 1,1,1,4,4,16,1,1.objsize2 db 4,16,64,16,64,64,4,4.objmovs1 db 2,2,2,2,2,4,2,2.objmovs2 db 2,4,8,4,8,8,2,2.objadds1 dw 14,14,14,14,14,12,14,14.objadds2 dw 14,12,8,12,8,8,14,14SECTION .bssNEWSYM oamlow, resb 1SECTION .text; OAM address registerreg2102w:    mov byte[oamlow],1    mov word[oamaddr],0    shr word[oamaddr],1    mov [oamaddr],al    shl word[oamaddr],1;    or al,al;    jz .skipstore    mov bx,[oamaddrs]    mov [poamaddrs],bx    mov bx,[oamaddr]    mov [oamaddrs],bx.skipstore    cmp byte[nexthprior],1    je .priorset    mov byte[objhipr],0    jmp .cachespr.priorset    mov bx,[oamaddr]    shr bx,2    and bl,0x7F;    cmp bl,80h;    jae .noreset;    xor bl,bl.noreset    mov [objhipr],bl.cachespr    ret; OAM address registerreg2103w:    cmp byte[oamlow],1    jne .afteroamlow    mov byte[oamlow],0    mov bl,al    and bl,01h    shr word[oamaddr],1    mov [oamaddr+1],bl    shl word[oamaddr],1.afteroamlow    cmp word[poamaddrs],200h    jbe .notinvptr    cmp word[oamaddr],200h    jne .notinvptr    mov bx,[poamaddrs]    mov [oamaddr],bx    mov byte[nosprincr],1.notinvptr    mov bx,[oamaddr]    mov [oamaddrs],bx    test al,80h    jnz .hipri    test bl,0FFh    jz .lowpri    mov byte[nexthprior],0.lowpri    mov byte[NextLineCache],1    ret.hipri    mov byte[nexthprior],1    mov byte[NextLineCache],1    ret; OAM data registerreg2104w:    mov byte[NextLineCache],1    mov ebx,[oamaddr]    cmp byte[nosprincr],1    je .noinc    inc dword[oamaddr]    cmp ebx,544    jae .overflow.noinc    mov [oamram+ebx],al    ret.overflow    xor ebx,ebx    mov dword[oamaddr],1    mov [oamram+ebx],al    ret; Screen mode registerreg2105w:    mov bl,al    and bl,00000111b    mov [bgmode],bl    mov bl,al    shr bl,3    and bl,01h    mov [bg3highst],bl    mov bl,al    shr bl,4    mov [bgtilesz],bl    mov bl,al    mov dword[BG116x16t],0    add bl,bl    adc byte[BG416x16t],0    add bl,bl    adc byte[BG316x16t],0    add bl,bl    adc byte[BG216x16t],0    add bl,bl    adc byte[BG116x16t],0    ret; Screen pixelation registerreg2106w:    mov bl,al    and bl,0Fh    mov [mosaicon],bl    mov bl,al    shr bl,4    mov [mosaicsz],bl    ret; BG1 VRAM location registerreg2107w:    xor ebx,ebx    mov bl,al    shr bl,2    shl bx,11    mov [bg1ptr],bx    mov [bg1ptrb],bx    mov [bg1ptrc],bx    mov [bg1ptrd],bx    mov dword[bg1ptrx],0    mov dword[bg1ptry],0    mov bl,al    and bl,00000011b    mov [bg1scsize],bl    cmp bl,1    jne .skipa    add word[bg1ptrb],800h    add word[bg1ptrd],800h    mov dword[bg1ptrx],800h.skipa    cmp bl,2    jne .skipb    add word[bg1ptrc],800h    add word[bg1ptrd],800h    mov dword[bg1ptry],800h.skipb    cmp bl,3    jne .skipc    add word[bg1ptrb],800h    add word[bg1ptrc],1000h    add word[bg1ptrd],1800h    mov dword[bg1ptrx],800h    mov dword[bg1ptry],1000h.skipc    ret; BG2 VRAM location registerreg2108w:    xor ebx,ebx    mov bl,al    shr bl,2    shl bx,11    mov [bg2ptr],bx    mov [bg2ptrb],bx    mov [bg2ptrc],bx    mov [bg2ptrd],bx    mov dword[bg2ptrx],0    mov dword[bg2ptry],0    mov bl,al    and bl,00000011b    mov [bg2scsize],bl    cmp bl,1    jne .skipa    add word[bg2ptrb],800h    add word[bg2ptrd],800h    mov dword[bg2ptrx],800h.skipa    cmp bl,2    jne .skipb    add word[bg2ptrc],800h    add word[bg2ptrd],800h    mov dword[bg2ptry],800h.skipb    cmp bl,3    jne .skipc

⌨️ 快捷键说明

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