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

📄 regs.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 SFXEnable,regptr,initsfxregsr,initSA1regs,SA1Enable,initSDD1regsEXTSYM SPC7110Enable,initSPC7110regs,RTCEnable,RTCReset,curypos,cycplEXTSYM pdh,vram,romispal,reg1read,spcnumread,spcon,reg2read,reg3readEXTSYM reg4read,JoyEOrig,JoyENow,device2,cycphb,joycontren,totlines%ifndef NO_DEBUGGEREXTSYM debuggeron%endifSECTION .textNEWSYM initregr    ; Fill register pointer with invalid register accesses    mov edi,[regptr]    add edi,8000h    mov ecx,3000h    mov eax,regINVALID.loopa    mov [edi],eax    add edi,4    dec ecx    jnz .loopa    ; Set all valid register accesses    setreg 2100h*4,reg2100r    setreg 2134h*4,reg2134r    setreg 2135h*4,reg2135r    setreg 2136h*4,reg2136r    setreg 2137h*4,reg2137r    setreg 2138h*4,reg2138r    setreg 2139h*4,reg2139r    setreg 213Ah*4,reg213Ar    setreg 213Bh*4,reg213Br    setreg 213Ch*4,reg213Cr    setreg 213Dh*4,reg213Dr    setreg 213Eh*4,reg213Er    setreg 213Fh*4,reg213Fr    setreg 2140h*4,reg2140r    setreg 2141h*4,reg2141r    setreg 2142h*4,reg2142r    setreg 2143h*4,reg2143r    setreg 2144h*4,reg2140r    setreg 2145h*4,reg2141r    setreg 2146h*4,reg2142r    setreg 2147h*4,reg2143r    setreg 2148h*4,reg2140r    setreg 2149h*4,reg2141r    setreg 214Ah*4,reg2142r    setreg 214Bh*4,reg2143r    setreg 214Ch*4,reg2140r    setreg 214Dh*4,reg2141r    setreg 214Eh*4,reg2142r    setreg 214Fh*4,reg2143r    setreg 2150h*4,reg2140r    setreg 2151h*4,reg2141r    setreg 2152h*4,reg2142r    setreg 2153h*4,reg2143r    setreg 2154h*4,reg2140r    setreg 2155h*4,reg2141r    setreg 2156h*4,reg2142r    setreg 2157h*4,reg2143r    setreg 2158h*4,reg2140r    setreg 2159h*4,reg2141r    setreg 215Ah*4,reg2142r    setreg 215Bh*4,reg2143r    setreg 215Ch*4,reg2140r    setreg 215Dh*4,reg2141r    setreg 215Eh*4,reg2142r    setreg 215Fh*4,reg2143r    setreg 2160h*4,reg2140r    setreg 2161h*4,reg2141r    setreg 2162h*4,reg2142r    setreg 2163h*4,reg2143r    setreg 2164h*4,reg2140r    setreg 2165h*4,reg2141r    setreg 2166h*4,reg2142r    setreg 2167h*4,reg2143r    setreg 2168h*4,reg2140r    setreg 2169h*4,reg2141r    setreg 216Ah*4,reg2142r    setreg 216Bh*4,reg2143r    setreg 216Ch*4,reg2140r    setreg 216Dh*4,reg2141r    setreg 216Eh*4,reg2142r    setreg 216Fh*4,reg2143r    setreg 2170h*4,reg2140r    setreg 2171h*4,reg2141r    setreg 2172h*4,reg2142r    setreg 2173h*4,reg2143r    setreg 2174h*4,reg2140r    setreg 2175h*4,reg2141r    setreg 2176h*4,reg2142r    setreg 2177h*4,reg2143r    setreg 2178h*4,reg2140r    setreg 2179h*4,reg2141r    setreg 217Ah*4,reg2142r    setreg 217Bh*4,reg2143r    setreg 217Ch*4,reg2140r    setreg 217Dh*4,reg2141r    setreg 217Eh*4,reg2142r    setreg 217Fh*4,reg2143r    setreg 2180h*4,reg2180r    setreg 21C2h*4,reg21C2r    setreg 21C3h*4,reg21C3r    setreg 4016h*4,reg4016r    setreg 4017h*4,reg4017r    setreg 4100h*4,reg4100r    setreg 420Ah*4,reg420Ar    setreg 420Bh*4,reg420Br    setreg 420Ch*4,reg420Cr    setreg 420Dh*4,reg420Dr    setreg 420Eh*4,reg420Er    setreg 420Fh*4,reg420Fr    setreg 4210h*4,reg4210r    setreg 4211h*4,reg4211r    setreg 4212h*4,reg4212r    setreg 4213h*4,reg4213r    setreg 4214h*4,reg4214r    setreg 4215h*4,reg4215r    setreg 4216h*4,reg4216r    setreg 4217h*4,reg4217r    setreg 4218h*4,reg4218r    setreg 4219h*4,reg4219r    setreg 421Ah*4,reg421Ar    setreg 421Bh*4,reg421Br    setreg 421Ch*4,reg421Cr    setreg 421Dh*4,reg421Dr    setreg 421Eh*4,reg421Er    setreg 421Fh*4,reg421Fr    setreg 4300h*4,reg43XXr    setreg 4301h*4,reg43XXr    setreg 4302h*4,reg43XXr    setreg 4303h*4,reg43XXr    setreg 4304h*4,reg43XXr    setreg 4305h*4,reg43XXr    setreg 4306h*4,reg43XXr    setreg 4307h*4,reg43XXr    setreg 4308h*4,reg43XXr    setreg 4309h*4,reg43XXr    setreg 430Ah*4,reg43XXr    setreg 430Bh*4,reg43XXr    setreg 430Fh*4,reg43XXr    setreg 4310h*4,reg43XXr    setreg 4311h*4,reg43XXr    setreg 4312h*4,reg43XXr    setreg 4313h*4,reg43XXr    setreg 4314h*4,reg43XXr    setreg 4315h*4,reg43XXr    setreg 4316h*4,reg43XXr    setreg 4317h*4,reg43XXr    setreg 4318h*4,reg43XXr    setreg 4319h*4,reg43XXr    setreg 431Ah*4,reg43XXr    setreg 431Bh*4,reg43XXr    setreg 431Fh*4,reg43XXr    setreg 4320h*4,reg43XXr    setreg 4321h*4,reg43XXr    setreg 4322h*4,reg43XXr    setreg 4323h*4,reg43XXr    setreg 4324h*4,reg43XXr    setreg 4325h*4,reg43XXr    setreg 4326h*4,reg43XXr    setreg 4327h*4,reg43XXr    setreg 4328h*4,reg43XXr    setreg 4329h*4,reg43XXr    setreg 432Ah*4,reg43XXr    setreg 432Bh*4,reg43XXr    setreg 432Fh*4,reg43XXr    setreg 4330h*4,reg43XXr    setreg 4331h*4,reg43XXr    setreg 4332h*4,reg43XXr    setreg 4333h*4,reg43XXr    setreg 4334h*4,reg43XXr    setreg 4335h*4,reg43XXr    setreg 4336h*4,reg43XXr    setreg 4337h*4,reg43XXr    setreg 4338h*4,reg43XXr    setreg 4339h*4,reg43XXr    setreg 433Ah*4,reg43XXr    setreg 433Bh*4,reg43XXr    setreg 433Fh*4,reg43XXr    setreg 4340h*4,reg43XXr    setreg 4341h*4,reg43XXr    setreg 4342h*4,reg43XXr    setreg 4343h*4,reg43XXr    setreg 4344h*4,reg43XXr    setreg 4345h*4,reg43XXr    setreg 4346h*4,reg43XXr    setreg 4347h*4,reg43XXr    setreg 4348h*4,reg43XXr    setreg 4349h*4,reg43XXr    setreg 434Ah*4,reg43XXr    setreg 434Bh*4,reg43XXr    setreg 434Fh*4,reg43XXr    setreg 4350h*4,reg43XXr    setreg 4351h*4,reg43XXr    setreg 4352h*4,reg43XXr    setreg 4353h*4,reg43XXr    setreg 4354h*4,reg43XXr    setreg 4355h*4,reg43XXr    setreg 4356h*4,reg43XXr    setreg 4357h*4,reg43XXr    setreg 4358h*4,reg43XXr    setreg 4359h*4,reg43XXr    setreg 435Ah*4,reg43XXr    setreg 435Bh*4,reg43XXr    setreg 435Fh*4,reg43XXr    setreg 4360h*4,reg43XXr    setreg 4361h*4,reg43XXr    setreg 4362h*4,reg43XXr    setreg 4363h*4,reg43XXr    setreg 4364h*4,reg43XXr    setreg 4365h*4,reg43XXr    setreg 4366h*4,reg43XXr    setreg 4367h*4,reg43XXr    setreg 4368h*4,reg43XXr    setreg 4369h*4,reg43XXr    setreg 436Ah*4,reg43XXr    setreg 436Bh*4,reg43XXr    setreg 436Fh*4,reg43XXr    setreg 4370h*4,reg43XXr    setreg 4371h*4,reg43XXr    setreg 4372h*4,reg43XXr    setreg 4373h*4,reg43XXr    setreg 4374h*4,reg43XXr    setreg 4375h*4,reg43XXr    setreg 4376h*4,reg43XXr    setreg 4377h*4,reg43XXr    setreg 4378h*4,reg43XXr    setreg 4379h*4,reg43XXr    setreg 437Ah*4,reg43XXr    setreg 437Bh*4,reg43XXr    setreg 437Fh*4,reg43XXr    cmp byte[SFXEnable],0    je .nosfx    call initsfxregsr.nosfx    cmp byte[SA1Enable],0    je .nosa1    call initSA1regs.nosa1    cmp byte[SDD1Enable],0    je .nosdd1    call initSDD1regs.nosdd1    cmp byte[SPC7110Enable],0    je .nospc7110    call initSPC7110regs.nospc7110    cmp byte[RTCEnable],0    je .noRTC    call RTCReset.noRTC    ret; global variablesSECTION .dataNEWSYM invreg,    dw 0NEWSYM sndrot,    db 0             ; rotates to use A,X or Y for sound skipNEWSYM sndrot2,   db 0             ; rotates a random value for sound skipNEWSYM INTEnab,   db 0             ; enables NMI(7)/VIRQ(5)/HIRQ(4)/JOY(0)NEWSYM NMIEnab,   db 1             ; controlled in e65816 loop.  Sets to 81hNEWSYM VIRQLoc,   dw 0             ; VIRQ Y locationNEWSYM vidbright, db 0             ; screen brightness (0 .. 15)NEWSYM previdbr,  db 0             ; previous screen brightnessNEWSYM forceblnk, db 80h           ; force blanking on/off ($80=on)NEWSYM objptr,    dd 0             ; pointer to object data in VRAMNEWSYM objptrn,   dd 0             ; pointer2 to object data in VRAMNEWSYM objsize1,  db 1             ; 1 = 8dot, 4=16 dot, 16=32 dot, 64=64dotNEWSYM objsize2,  db 4             ; large object sizeNEWSYM objmovs1,  db 2             ; number of bytes to move/paragraphNEWSYM objadds1,  dw 14            ; number of bytes to add/paragraphNEWSYM objmovs2,  db 2             ; number of bytes to move/paragraphNEWSYM objadds2,  dw 14            ; number of bytes to add/paragraphNEWSYM oamaddrt,  dw 0             ; oam addressNEWSYM oamaddrs,  dw 0             ; oam address at beginning of vblankNEWSYM objhipr,   db 0             ; highest priority object #NEWSYM bgmode,    db 0             ; graphics mode ( 0 .. 7 )NEWSYM bg3highst, db 0             ; is 1 if background 3 has the highest priorityNEWSYM bgtilesz,  db 0             ; 0 = 8x8, 1 = 16x16, bit 0=bg1,bit1=bg2,etcNEWSYM mosaicon,  db 0             ; mosaic on, bit 0=bg1,bit1=bg2, etcNEWSYM mosaicsz,  db 0             ; mosaic size in pixelsNEWSYM bg1ptr,    dw 0             ; pointer to background1NEWSYM bg2ptr,    dw 0             ; pointer to background2NEWSYM bg3ptr,    dw 0             ; pointer to background3NEWSYM bg4ptr,    dw 0             ; pointer to background4NEWSYM bg1ptrb,   dw 0             ; pointer to background1NEWSYM bg2ptrb,   dw 0             ; pointer to background2NEWSYM bg3ptrb,   dw 0             ; pointer to background3NEWSYM bg4ptrb,   dw 0             ; pointer to background4NEWSYM bg1ptrc,   dw 0             ; pointer to background1NEWSYM bg2ptrc,   dw 0             ; pointer to background2NEWSYM bg3ptrc,   dw 0             ; pointer to background3NEWSYM bg4ptrc,   dw 0             ; pointer to background4NEWSYM bg1ptrd,   dw 0             ; pointer to background1NEWSYM bg2ptrd,   dw 0             ; pointer to background2NEWSYM bg3ptrd,   dw 0             ; pointer to background3NEWSYM bg4ptrd,   dw 0             ; pointer to background4NEWSYM bg1scsize, db 0             ; bg #1 screen size (0=1x1,1=1x2,2=2x1,3=2x2)NEWSYM bg2scsize, db 0             ; bg #2 screen size (0=1x1,1=1x2,2=2x1,3=2x2)NEWSYM bg3scsize, db 0             ; bg #3 screen size (0=1x1,1=1x2,2=2x1,3=2x2)NEWSYM bg4scsize, db 0             ; bg #4 screen size (0=1x1,1=1x2,2=2x1,3=2x2)NEWSYM bg1objptr, dw 0             ; pointer to tiles in background1NEWSYM bg2objptr, dw 0             ; pointer to tiles in background2NEWSYM bg3objptr, dw 0             ; pointer to tiles in background3NEWSYM bg4objptr, dw 0             ; pointer to tiles in background4NEWSYM bg1scrolx, dw 0             ; background 1 x positionNEWSYM bg2scrolx, dw 0             ; background 2 x positionNEWSYM bg3scrolx, dw 0             ; background 3 x positionNEWSYM bg4scrolx, dw 0             ; background 4 x positionNEWSYM bg1sx,     dw 0             ; Temporary Variable for Debugging purposesNEWSYM bg1scroly, dw 0             ; background 1 y positionNEWSYM bg2scroly, dw 0             ; background 2 y positionNEWSYM bg3scroly, dw 0             ; background 3 y positionNEWSYM bg4scroly, dw 0             ; background 4 y positionNEWSYM addrincr,  dw 2             ; vram increment (2,64,128,256)NEWSYM vramincr,  db 0             ; 0 = inrement at 2118/2139, 1 = 2119,213ANEWSYM vramread,  db 0             ; previous character for vram readNEWSYM vramaddr,  dd 0             ; vram addressNEWSYM cgaddr,    dw 0             ; cg (palette) addressNEWSYM cgmod,     db 0             ; if cgram is modified or notNEWSYM scrnon,    dw 0             ; main & sub screen onNEWSYM scrndist,  db 0             ; which background is disabledNEWSYM resolutn,  dw 224           ; screen resolutionNEWSYM multa,     db 0             ; multiplier ANEWSYM diva,      dw 0             ; divisor CNEWSYM divres,    dw 0             ; quotent of divc/divbNEWSYM multres,   dw 0             ; result of multa * multb/remainder of divc/divbNEWSYM latchx,    dw 0             ; latched x valueNEWSYM latchy,    dw 0             ; latched y valueNEWSYM latchxr,   db 0             ; low or high byte read for x valueNEWSYM latchyr,   db 0             ; low or high byte read for y valueNEWSYM frskipper, db 0             ; used to control frame skippingNEWSYM winl1,     db 0             ; window 1 left positionNEWSYM winr1,     db 0             ; window 1 right positionNEWSYM winl2,     db 0             ; window 2 left positionNEWSYM winr2,     db 0             ; window 2 right positionNEWSYM winbg1en,  db 0             ; Win1 on (IN/OUT) or Win2 on (IN/OUT) on BG1NEWSYM winbg2en,  db 0             ; Win1 on (IN/OUT) or Win2 on (IN/OUT) on BG2NEWSYM winbg3en,  db 0             ; Win1 on (IN/OUT) or Win2 on (IN/OUT) on BG3NEWSYM winbg4en,  db 0             ; Win1 on (IN/OUT) or Win2 on (IN/OUT) on BG4NEWSYM winobjen,  db 0             ; Win1 on (IN/OUT) or Win2 on (IN/OUT) on spritesNEWSYM wincolen,  db 0             ; Win1 on (IN/OUT) or Win2 on (IN/OUT) on backareaNEWSYM winlogica, db 0             ; Window logic type for BG1 to 4NEWSYM winlogicb, db 0             ; Window logic type for Sprites and BackareaNEWSYM winenabm,  db 0             ; Window logic enable for main screenNEWSYM winenabs,  db 0             ; Window logic enable for sub screenNEWSYM mode7set,  db 0             ; mode 7 settingsNEWSYM mode7A,    dw 0             ; A value for Mode 7NEWSYM mode7B,    dw 0             ; B value for Mode 7NEWSYM mode7C,    dw 0             ; C value for Mode 7NEWSYM mode7D,    dw 0             ; D value for Mode 7NEWSYM mode7X0,   dw 0             ; Center X for Mode 7NEWSYM mode7Y0,   dw 0             ; Center Y for Mode 7NEWSYM JoyAPos,   db 0             ; Old-Style Joystick Read Position for Joy 1 & 3NEWSYM JoyBPos,   db 0             ; Old-Style Joystick Read Position for Joy 2 & 4NEWSYM compmult,  dd 0             ; Complement Multiplication for Mode 7NEWSYM joyalt,    db 0             ; temporary joystick alternationNEWSYM wramrwadr, dd 0             ; continuous read/write to wram addressNEWSYM dmadata, times 129 db 0FFh  ; dma data (written from ports 43xx)NEWSYM irqon,     db 0             ; if IRQ has been called (80h) or not (0)NEWSYM nexthdma,  db 0             ; HDMA data to execute once vblank endsNEWSYM curhdma,   db 0             ; Currently executed hdmaNEWSYM hdmadata, times 8*19 db 0   ; 4 dword register addresses, # of bytes to                           ; transfer/line, address increment (word)NEWSYM hdmatype,  db 0             ; if first time executing hdma or notNEWSYM coladdr,   db 0             ; red value of color to addNEWSYM coladdg,   db 0             ; green value of color to addNEWSYM coladdb,   db 0             ; blue value of color to addNEWSYM colnull,   db 0             ; keep this 0 (when accessing colors by dword)NEWSYM scaddset,  db 0             ; screen/fixed color addition settingsNEWSYM scaddtype, db 0             ; which screen to add/subNEWSYM Voice0Disabl2, db 1         ; Disable Voice 0NEWSYM Voice1Disabl2, db 1         ; Disable Voice 1NEWSYM Voice2Disabl2, db 1         ; Disable Voice 2NEWSYM Voice3Disabl2, db 1         ; Disable Voice 3NEWSYM Voice4Disabl2, db 1         ; Disable Voice 4NEWSYM Voice5Disabl2, db 1         ; Disable Voice 5NEWSYM Voice6Disabl2, db 1         ; Disable Voice 6NEWSYM Voice7Disabl2, db 1         ; Disable Voice 7NEWSYM oamram,  times 1024 db 0    ; OAMRAM (544 bytes)NEWSYM cgram,   times 512 db 0     ; CGRAMNEWSYM pcgram,  times 512 db 0     ; Previous CGRAMNEWSYM vraminctype,  db 0; New variablesNEWSYM vramincby8on,   db 0        ; if increment by 8 is onNEWSYM vramincby8left, db 0        ; how many leftNEWSYM vramincby8totl, db 0        ; how many in total (32,64,128)NEWSYM vramincby8rowl, db 0        ; how many left in that row (start at 8)NEWSYM vramincby8ptri, dw 0        ; increment by how many when rowl = 0

⌨️ 快捷键说明

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