regs.inc
来自「linux下的任天堂模拟器代码。供大家参考。」· INC 代码 · 共 1,261 行 · 第 1/3 页
INC
1,261 行
mov byte[ebx],0EAh mov byte[ebx+1],0EAh.notfound xor byte[sndrot],01h mov al,[xa+1] test byte[sndrot],01h jz .n mov al,[xa].n ret; Sound Reg #3reg2142r: cmp byte[spcon],0 je .nosound inc dword[SPC700read] mov al,[reg3read] mov byte[spcnumread],0 ret.nosound ; Find for D0 mov ebx,esi mov al,3.tryagain cmp byte[ebx],0D0h je .foundit inc ebx dec al jnz .tryagain jmp .notfound.foundit mov byte[ebx],0EAh mov byte[ebx+1],0EAh.notfound mov al,[xa] test byte[sndrot],01h jz .n mov al,[xa+1].n ret; Sound Reg #4reg2143r: cmp byte[spcon],0 je .nosound inc dword[SPC700read] mov al,[reg4read] mov byte[spcnumread],0 ret.nosound ; Find for D0 mov ebx,esi mov al,3.tryagain cmp byte[ebx],0D0h je .foundit inc ebx dec al jnz .tryagain jmp .notfound.foundit mov byte[ebx],0EAh mov byte[ebx+1],0EAh.notfound mov al,[xa+1] retreg2144r: xor al,al ret; WRAM Readreg2180r: mov ebx,[wramrwadr] add ebx,[wramdata] mov al,[ebx] inc dword[wramrwadr] and dword[wramrwadr],01FFFFh ret; Unknown register, used by test cartreg21C2r:reg21C3r: mov al,21h ret; Joystick Data for controller 1 and 2reg4016r: xor al,al test dword[JoyANow],80000000h jz .noal mov al,1.noal rol dword[JoyANow],1 retSECTION .bssNEWSYM MultiTap, resb 1SECTION .text; Joystick Data for controller 2 and 4reg4017r: mov al,28 cmp byte[device2],0 jne .nomultitap cmp byte[MultiTap],1 je .multitap.nomultitap; cmp byte[device2],1; je .mouse2; test byte[JoyBNow],0FFh; jnz .reset;.mouse2 test dword[JoyBNow],80000000h jz .noal;.reset or al,1.noal rol dword[JoyBNow],1 ret.multitap test byte[MultiTapStat],1 jz .no1 or al,3 ret.no1 test byte[MultiTapStat],80h jz .contr45 test dword[JoyBNow],80000000h jz .nojb or al,1.nojb test dword[JoyCNow],80000000h jz .nojc or al,2.nojc rol dword[JoyBNow],1 rol dword[JoyCNow],1 ret.contr45 test dword[JoyDNow],80000000h jz .nojd or al,1.nojd test dword[JoyENow],80000000h jz .noje or al,2.noje rol dword[JoyDNow],1 rol dword[JoyENow],1 retreg4100r: xor al,al cmp byte[nssdip1],1 jne .nodip1 mov al,1.nodip1 cmp byte[nssdip2],1 jne .nodip2 or al,02h.nodip2 cmp byte[nssdip3],1 jne .nodip3 or al,04h.nodip3 cmp byte[nssdip4],1 jne .nodip4 or al,08h.nodip4 cmp byte[nssdip5],1 jne .nodip5 or al,10h.nodip5 cmp byte[nssdip6],1 jne .nodip6 or al,20h.nodip6 retreg420Ar:reg420Br:reg420Cr:reg420Dr:reg420Er:reg420Fr: ;Should be Openbus xor al,al ret; NMI Check Registerreg4210r: mov al,[NMIEnab] cmp byte[curnmi],0 jne .nmi mov byte[NMIEnab],01h.nmi mov byte[curnmi],0 ret; Video IRQ Registerreg4211r: mov al,[irqon] mov byte[irqon],0 cmp dh,[cycphb] jae .nohblank or al,40h.nohblank retSECTION .bssNEWSYM hblank, resb 1SECTION .text; H/V Blank Flag & Joystick Controller Enable Flag; bit 7 = vblank, 0=out,1=in, bit 6 = hblank, 0=out,1=in, bit 0 = joystick onreg4212r: xor al,al cmp byte[joycontren],25 jb .nojoyc.yesjoy mov al,1.nojoyc inc byte[joycontren] cmp byte[joycontren],50 jne .n mov byte[joycontren],0.n%ifndef NO_DEBUGGER cmp byte[debuggeron],1 je .debugger%endif mov bx,[resolutn] cmp word[curypos],bx jne .notres cmp byte[nmistatus],2 je .vblank.notres inc bx cmp word[curypos],bx jb .novbl mov bx,[totlines] dec bx cmp word[curypos],bx jae .novbl.vblank or al,80h; jmp .nohblank.novbl mov byte[hblank],0 cmp dh,[cycphb] jae .nohblank mov byte[hblank],1 or al,40h.nohblank test byte[INTEnab],01h jz .nojoy mov bx,[resolutn] add bx,2 cmp word[curypos],bx jne .nojoy cmp dh,5 ja .nojoy ret.nojoy ret.debuggerdebblah2: push edx mov dh,[pdh] mov bx,[resolutn] cmp word[curypos],bx jne .notres cmp byte[nmistatus],2 je .vblank.notres inc bx cmp word[curypos],bx jb .novbl mov bx,[totlines] dec bx cmp word[curypos],bx jae .novbl.vblank or al,80h; jmp .nohblank.novbl cmp dh,[cycphb] jae .nohblank or al,40h.nohblank test byte[INTEnab],01h jz .nojoy mov bx,[resolutn] add bx,2 cmp word[curypos],bx jne .nojoy cmp dh,5 ja .nojoy pop edx ret.nojoy pop edx ret mov bx,[resolutn] inc bx cmp word[curypos],bx jb .novbl2 or al,80h jmp .nohblank2.novbl2 mov bl,[pdh] cmp bl,[cycphb] jae .nohblank2 or al,40h.nohblank2 test byte[INTEnab],01h jz .nojoy2 mov bx,[resolutn] add bx,2 cmp word[curypos],bx jne .nojoy2 cmp byte[pdh],5 ja .nojoy; or al,01h ret.nojoy2 ret; Programmable I/O portreg4213r: mov al,[ioportval] ret; Quotent of Divide Result (Low)reg4214r: mov al,[divres] ret; Quotent of Divide Result (High)reg4215r: mov al,[divres+1] ret; Product of Multiplication Result or Remainder of Divide Result (Low)reg4216r: mov al,[multres] ret; Product of Multiplication Result or Remainder of Divide Result (High)reg4217r: mov al,[multres+1] ret; Joystick 1 Low; bit7=X,bit6=Y,bit5=L,bit4=Rreg4218r: mov al,[JoyAOrig+2] ret; Joystick 1 High; bit7=A,bit6=B,bit5=Sel,bit4=Start,bit3=up,bit2=down,bit1=left,bit0=rightreg4219r: mov al,[JoyAOrig+3] ret; Joystick 2 Lowreg421Ar: mov al,[JoyBOrig+2] ret; Joystick 2 Highreg421Br: mov al,[JoyBOrig+3] ret; Joystick 3 Lowreg421Cr: mov al,[JoyDOrig+2] ret; Joystick 3 Highreg421Dr: mov al,[JoyDOrig+3] ret; Joystick 4 Lowreg421Er: mov al,[JoyCOrig+2] ret; Joystick 4 Highreg421Fr: mov al,[JoyCOrig+3] ret; DMA Readerreg43XXr: xor ebx,ebx mov bx,cx sub bx,4300h mov al,[dmadata+ebx] retregINVALID: ; Invalid Register cmp cx,2100h jb .cleared mov al,ch cmp byte[SPC7110Enable],0 je .nospc7110.cleared xor al,al.nospc7110; mov byte[debstop3],1 ret
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?