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

📄 table.asm

📁 linux下的任天堂模拟器代码。供大家参考。
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;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.%include "macros.mac"EXTSYM mosjmptab,mosdraw10,mosdraw11,mosdraw12,mosdraw13EXTSYM mosdraw14,mosdraw15,mosdraw16,mosdraw2,mosdraw3EXTSYM mosdraw4,mosdraw5,mosdraw6,mosdraw7,mosdraw8EXTSYM mosdraw9,ngpalcon2b,ngpalcon4bEXTSYM mosjmptab16b,mosdraw1016b,mosdraw1116b,mosdraw1216b,mosdraw1316bEXTSYM mosdraw1416b,mosdraw1516b,mosdraw1616b,mosdraw216b,mosdraw316bEXTSYM mosdraw416b,mosdraw516b,mosdraw616b,mosdraw716b,mosdraw816bEXTSYM mosdraw916bEXTSYM mosjmptab16bt,mosdraw1016bt,mosdraw1116bt,mosdraw1216bt,mosdraw1316btEXTSYM mosdraw1416bt,mosdraw1516bt,mosdraw1616bt,mosdraw216bt,mosdraw316btEXTSYM mosdraw416bt,mosdraw516bt,mosdraw616bt,mosdraw716bt,mosdraw816btEXTSYM mosdraw916btEXTSYM mosjmptab16btms,mosdraw1016btms,mosdraw1116btms,mosdraw1216btms,mosdraw1316btmsEXTSYM mosdraw1416btms,mosdraw1516btms,mosdraw1616btms,mosdraw216btms,mosdraw316btmsEXTSYM mosdraw416btms,mosdraw516btms,mosdraw616btms,mosdraw716btms,mosdraw816btmsEXTSYM mosdraw916btmsEXTSYM mosjmptab16bntms,mosdraw1016bntms,mosdraw1116bntms,mosdraw1216bntms,mosdraw1316bntmsEXTSYM mosdraw1416bntms,mosdraw1516bntms,mosdraw1616bntms,mosdraw216bntms,mosdraw316bntmsEXTSYM mosdraw416bntms,mosdraw516bntms,mosdraw616bntms,mosdraw716bntms,mosdraw816bntmsEXTSYM mosdraw916bntmsEXTSYM tableA,tableB,tableC,tableD,tableE,tableF,tableG,tableHEXTSYM DPageR8,DPageW8,DPageR16,DPageW16EXTSYM SDD1EnableEXTSYM JoyAOrig,JoyANow,JoyBOrig,JoyBNow,JoyCOrig,JoyCNow,JoyDOrig,JoyDNow%include "cpu/65816d.inc"%include "cpu/address.inc"%include "cpu/addrni.inc"%include "cpu/e65816.inc"%include "cpu/regs.mac"%include "cpu/regsw.mac"%include "cpu/regs.inc"     ; start problem here%include "cpu/regsw.inc"section .data; global variables;tableA  times 256 dd 0             ; Table addresses (M:0,X:0,D:0);tableB  times 256 dd 0             ; Table addresses (M:1,X:0,D:0);tableC  times 256 dd 0             ; Table addresses (M:0,X:1,D:0);tableD  times 256 dd 0             ; Table addresses (M:1,X:1,D:0);tableE  times 256 dd 0             ; Table addresses (M:0,X:0,D:1);tableF  times 256 dd 0             ; Table addresses (M:1,X:0,D:1);tableG  times 256 dd 0             ; Table addresses (M:0,X:1,D:1);tableH  times 256 dd 0             ; Table addresses (M:1,X:1,D:1)NEWSYM addrmdef, times 27 dd 0      ; Address modes;tablead times 256 dd 0             ; Table address location according to P;memtabler8 times 256 dd 0          ; Memory Bank Locations for reading 8-bit;memtablew8 times 256 dd 0          ; Memory Bank Locations for writing 8-bit;memtabler16 times 256 dd 0         ; Memory Bank Locations for reading 16-bit;memtablew16 times 256 dd 0         ; Memory Bank Locations for reading 16-bitsection .text;*******************************************************; Generate OpCode Table;*******************************************************NEWSYM inittable    ; set up mosaic    mov dword[mosjmptab],mosdraw2    mov dword[mosjmptab+4],mosdraw3    mov dword[mosjmptab+8],mosdraw4    mov dword[mosjmptab+12],mosdraw5    mov dword[mosjmptab+16],mosdraw6    mov dword[mosjmptab+20],mosdraw7    mov dword[mosjmptab+24],mosdraw8    mov dword[mosjmptab+28],mosdraw9    mov dword[mosjmptab+32],mosdraw10    mov dword[mosjmptab+36],mosdraw11    mov dword[mosjmptab+40],mosdraw12    mov dword[mosjmptab+44],mosdraw13    mov dword[mosjmptab+48],mosdraw14    mov dword[mosjmptab+52],mosdraw15    mov dword[mosjmptab+56],mosdraw16    mov dword[mosjmptab16b],mosdraw216b    mov dword[mosjmptab16b+4],mosdraw316b    mov dword[mosjmptab16b+8],mosdraw416b    mov dword[mosjmptab16b+12],mosdraw516b    mov dword[mosjmptab16b+16],mosdraw616b    mov dword[mosjmptab16b+20],mosdraw716b    mov dword[mosjmptab16b+24],mosdraw816b    mov dword[mosjmptab16b+28],mosdraw916b    mov dword[mosjmptab16b+32],mosdraw1016b    mov dword[mosjmptab16b+36],mosdraw1116b    mov dword[mosjmptab16b+40],mosdraw1216b    mov dword[mosjmptab16b+44],mosdraw1316b    mov dword[mosjmptab16b+48],mosdraw1416b    mov dword[mosjmptab16b+52],mosdraw1516b    mov dword[mosjmptab16b+56],mosdraw1616b    mov dword[mosjmptab16bt],mosdraw216bt    mov dword[mosjmptab16bt+4],mosdraw316bt    mov dword[mosjmptab16bt+8],mosdraw416bt    mov dword[mosjmptab16bt+12],mosdraw516bt    mov dword[mosjmptab16bt+16],mosdraw616bt    mov dword[mosjmptab16bt+20],mosdraw716bt    mov dword[mosjmptab16bt+24],mosdraw816bt    mov dword[mosjmptab16bt+28],mosdraw916bt    mov dword[mosjmptab16bt+32],mosdraw1016bt    mov dword[mosjmptab16bt+36],mosdraw1116bt    mov dword[mosjmptab16bt+40],mosdraw1216bt    mov dword[mosjmptab16bt+44],mosdraw1316bt    mov dword[mosjmptab16bt+48],mosdraw1416bt    mov dword[mosjmptab16bt+52],mosdraw1516bt    mov dword[mosjmptab16bt+56],mosdraw1616bt    mov dword[mosjmptab16btms],mosdraw216btms    mov dword[mosjmptab16btms+4],mosdraw316btms    mov dword[mosjmptab16btms+8],mosdraw416btms    mov dword[mosjmptab16btms+12],mosdraw516btms    mov dword[mosjmptab16btms+16],mosdraw616btms    mov dword[mosjmptab16btms+20],mosdraw716btms    mov dword[mosjmptab16btms+24],mosdraw816btms    mov dword[mosjmptab16btms+28],mosdraw916btms    mov dword[mosjmptab16btms+32],mosdraw1016btms    mov dword[mosjmptab16btms+36],mosdraw1116btms    mov dword[mosjmptab16btms+40],mosdraw1216btms    mov dword[mosjmptab16btms+44],mosdraw1316btms    mov dword[mosjmptab16btms+48],mosdraw1416btms    mov dword[mosjmptab16btms+52],mosdraw1516btms    mov dword[mosjmptab16btms+56],mosdraw1616btms    mov dword[mosjmptab16bntms],mosdraw216bntms    mov dword[mosjmptab16bntms+4],mosdraw316bntms    mov dword[mosjmptab16bntms+8],mosdraw416bntms    mov dword[mosjmptab16bntms+12],mosdraw516bntms    mov dword[mosjmptab16bntms+16],mosdraw616bntms    mov dword[mosjmptab16bntms+20],mosdraw716bntms    mov dword[mosjmptab16bntms+24],mosdraw816bntms    mov dword[mosjmptab16bntms+28],mosdraw916bntms    mov dword[mosjmptab16bntms+32],mosdraw1016bntms    mov dword[mosjmptab16bntms+36],mosdraw1116bntms    mov dword[mosjmptab16bntms+40],mosdraw1216bntms    mov dword[mosjmptab16bntms+44],mosdraw1316bntms    mov dword[mosjmptab16bntms+48],mosdraw1416bntms    mov dword[mosjmptab16bntms+52],mosdraw1516bntms    mov dword[mosjmptab16bntms+56],mosdraw1616bntms    ; set ngpalcon4b    mov ecx,20h    xor eax,eax.loopng    mov bl,al    shr bl,2    shl bl,4    mov dl,bl    mov dh,bl    shl edx,16    mov dl,bl    mov dh,bl    mov [ngpalcon4b+eax*4],edx    inc eax    dec ecx    jnz .loopng    ; set ngpalcon2b    mov ecx,20h    xor eax,eax.loopngb    mov bl,al    shr bl,2    shl bl,2    mov dl,bl    mov dh,bl    shl edx,16    mov dl,bl    mov dh,bl    mov [ngpalcon2b+eax*4],edx    inc eax    dec ecx    jnz .loopngb    ; set tablead  (NVMXDIZC) (  MXD   )    push es    xor ecx,ecx    xor al,al    mov cx,256    mov edi,tablead.loopa    test al,08h ; D flag    jnz .decon    test al,10h ; X flag    jnz .xon    test al,20h ; M flag    jnz .mon    mov esi,tableA    jmp .done.mon    mov esi,tableB    jmp .done.xon    test al,20h ; M flag    jnz .mon2    mov esi,tableC    jmp .done.mon2    mov esi,tableD    jmp .done.decon    test al,10h ; X flag    jnz .xon3    test al,20h ; M flag    jnz .mon3    mov esi,tableE    jmp .done.mon3    mov esi,tableF    jmp .done.xon3    test al,20h    jnz .mon4    mov esi,tableG    jmp .done.mon4    mov esi,tableH.done    inc al    push eax    mov eax,esi    stosd    pop eax    dec ecx    jnz .loopa    ; Set CPU addresses    ; First, set all addresses to invalid    mov eax,eopINVALID    mov edi,tableA    mov ecx,256    rep stosd    mov edi,tableB    mov ecx,256    rep stosd    mov edi,tableC    mov ecx,256    rep stosd    mov edi,tableD    mov ecx,256    rep stosd    mov edi,tableE    mov ecx,256    rep stosd    mov edi,tableF    mov ecx,256    rep stosd    mov edi,tableG    mov ecx,256    rep stosd    mov edi,tableH    mov ecx,256    rep stosd    mov edi,tableA    call settables    mov edi,tableB    call settables    mov edi,tableC    call settables    mov edi,tableD    call settables    mov edi,tableE    call settables    mov edi,tableF    call settables    mov edi,tableG    call settables    mov edi,tableH    call settables    ; set proper functions    mov edi,tableA              ; Table addresses (M:0,X:0,D:0)    call settablem16    mov edi,tableA    call settablex16    mov edi,tableB              ; Table addresses (M:1,X:0,D:0)    call settablex16    mov edi,tableC              ; Table addresses (M:0,X:1,D:0)    call settablem16    mov edi,tableE              ; Table addresses (M:0,X:0,D:1)    call settablem16    mov edi,tableE    call settableDm16    mov edi,tableE    call settablex16    mov edi,tableF              ; Table addresses (M:1,X:0,D:1)    call settablex16    mov edi,tableF    call settableDm8    mov edi,tableG              ; Table addresses (M:0,X:1,D:1)    call settablem16    mov edi,tableG    call settableDm16    mov edi,tableH              ; Table addresses (M:1,X:1,D:1)    call settableDm8    pop es    reteopINVALID    retsection .data;*******************************************************; Cpu Cycles                    Sets the CPU cycle table;*******************************************************NEWSYM cpucycle         db 8, 6, 8, 4, 5, 3, 5, 6, 3, 2, 2, 4, 6, 4, 6, 5         db 2, 5, 5, 7, 5, 4, 6, 6, 2, 4, 2, 2, 6, 4, 7, 5         db 6, 6, 8, 4, 3, 3, 5, 6, 4, 2, 2, 5, 4, 4, 6, 5         db 2, 5, 5, 7, 4, 4, 6, 6, 2, 4, 2, 2, 4, 4, 7, 5         db 7, 6, 2, 4, 7, 3, 5, 6, 3, 2, 2, 3, 3, 4, 6, 5         db 2, 5, 5, 7, 7, 4, 6, 6, 2, 4, 3, 2, 4, 4, 7, 5         db 6, 6, 6, 4, 3, 3, 5, 6, 4, 2, 2, 6, 5, 4, 6, 5         db 2, 5, 5, 7, 4, 4, 6, 6, 2, 4, 4, 2, 6, 4, 7, 5         db 2, 6, 3, 4, 3, 3, 3, 6, 2, 2, 2, 3, 4, 4, 4, 5         db 2, 6, 5, 7, 4, 4, 4, 6, 2, 5, 2, 2, 4, 5, 5, 5         db 2, 6, 2, 4, 3, 3, 3, 6, 2, 2, 2, 4, 4, 4, 4, 5         db 2, 5, 5, 7, 4, 4, 4, 6, 2, 4, 2, 2, 4, 4, 4, 5         db 2, 6, 3, 4, 3, 3, 5, 6, 2, 2, 2, 3, 4, 4, 4, 5         db 2, 5, 5, 7, 6, 4, 6, 6, 2, 4, 3, 3, 6, 4, 7, 5         db 2, 6, 3, 4, 3, 3, 5, 6, 2, 2, 2, 3, 4, 4, 6, 5         db 2, 5, 5, 7, 5, 4, 6, 6, 2, 4, 4, 2, 6, 4, 7, 5; 28 | 26 | 28 | 24 | 25 | 23 | 25 | 26 | 13 | 22 | 12 | 14 | 36 | 34 | 36 | 45; 22 | 25 | 25 | 27 | 25 | 24 | 26 | 26 | 12 | 34 | 12 | 12 | 36 | 34 | 37 | 45; 36 | 26 | 48 | 24 | 23 | 23 | 25 | 26 | 14 | 22 | 12 | 15 | 34 | 34 | 36 | 45; 22 | 25 | 25 | 27 | 24 | 24 | 26 | 26 | 12 | 34 | 12 | 12 | 34 | 34 | 37 | 45; 17 | 26 | 22 | 24 | 37 | 23 | 25 | 26 | 13 | 22 | 12 | 13 | 33 | 34 | 36 | 45; 22 | 25 | 25 | 27 | 37 | 24 | 26 | 26 | 12 | 34 | 13 | 12 | 44 | 34 | 37 | 45; 16 | 26 | 36 | 24 | 23 | 23 | 25 | 26 | 14 | 22 | 12 | 16 | 35 | 34 | 36 | 45; 22 | 25 | 25 | 27 | 24 | 24 | 26 | 26 | 12 | 34 | 14 | 12 | 36 | 34 | 37 | 45; 22 | 26 | 33 | 24 | 23 | 23 | 23 | 26 | 12 | 22 | 12 | 13 | 34 | 34 | 34 | 45; 22 | 26 | 25 | 27 | 24 | 24 | 24 | 26 | 12 | 35 | 12 | 12 | 34 | 35 | 35 | 45; 22 | 26 | 22 | 24 | 23 | 23 | 23 | 26 | 12 | 22 | 12 | 14 | 34 | 34 | 34 | 45; 22 | 25 | 25 | 27 | 24 | 24 | 24 | 26 | 12 | 34 | 12 | 12 | 34 | 34 | 34 | 45; 22 | 26 | 23 | 24 | 23 | 23 | 25 | 26 | 12 | 22 | 12 | 13 | 34 | 34 | 34 | 45; 22 | 25 | 25 | 27 | 26 | 24 | 26 | 26 | 12 | 34 | 13 | 13 | 36 | 34 | 37 | 45; 22 | 26 | 23 | 24 | 23 | 23 | 25 | 26 | 12 | 22 | 12 | 13 | 34 | 34 | 36 | 45; 22 | 25 | 25 | 27 | 35 | 24 | 26 | 26 | 12 | 34 | 14 | 12 | 36 | 34 | 37 | 45section .text;*******************************************************; Set Tables     Sets the opcode tables according to EDI;*******************************************************; This function sets all the non-multiple entriesNEWSYM settables    ;row 0    mov dword[edi+00h*4],COp00    mov dword[edi+01h*4],COp01m8    mov dword[edi+02h*4],COp02    mov dword[edi+03h*4],COp03m8    mov dword[edi+04h*4],COp04m8    mov dword[edi+05h*4],COp05m8    mov dword[edi+06h*4],COp06m8    mov dword[edi+07h*4],COp07m8    mov dword[edi+08h*4],COp08    mov dword[edi+09h*4],COp09m8    mov dword[edi+0Ah*4],COp0Am8    mov dword[edi+0Bh*4],COp0B    mov dword[edi+0Ch*4],COp0Cm8    mov dword[edi+0Dh*4],COp0Dm8    mov dword[edi+0Eh*4],COp0Em8    mov dword[edi+0Fh*4],COp0Fm8    mov dword[edi+10h*4],COp10    mov dword[edi+11h*4],COp11m8    mov dword[edi+12h*4],COp12m8    mov dword[edi+13h*4],COp13m8    mov dword[edi+14h*4],COp14m8    mov dword[edi+15h*4],COp15m8    mov dword[edi+16h*4],COp16m8    mov dword[edi+17h*4],COp17m8    mov dword[edi+18h*4],COp18    mov dword[edi+19h*4],COp19m8    mov dword[edi+1Ah*4],COp1Am8    mov dword[edi+1Bh*4],COp1B    mov dword[edi+1Ch*4],COp1Cm8    mov dword[edi+1Dh*4],COp1Dm8    mov dword[edi+1Eh*4],COp1Em8    mov dword[edi+1Fh*4],COp1Fm8    mov dword[edi+20h*4],COp20    mov dword[edi+21h*4],COp21m8    mov dword[edi+22h*4],COp22    mov dword[edi+23h*4],COp23m8    mov dword[edi+24h*4],COp24m8    mov dword[edi+25h*4],COp25m8    mov dword[edi+26h*4],COp26m8    mov dword[edi+27h*4],COp27m8    mov dword[edi+28h*4],COp28    mov dword[edi+29h*4],COp29m8    mov dword[edi+2Ah*4],COp2Am8    mov dword[edi+2Bh*4],COp2B    mov dword[edi+2Ch*4],COp2Cm8    mov dword[edi+2Dh*4],COp2Dm8    mov dword[edi+2Eh*4],COp2Em8    mov dword[edi+2Fh*4],COp2Fm8    mov dword[edi+30h*4],COp30    mov dword[edi+31h*4],COp31m8    mov dword[edi+32h*4],COp32m8    mov dword[edi+33h*4],COp33m8    mov dword[edi+34h*4],COp34m8    mov dword[edi+35h*4],COp35m8    mov dword[edi+36h*4],COp36m8    mov dword[edi+37h*4],COp37m8    mov dword[edi+38h*4],COp38    mov dword[edi+39h*4],COp39m8    mov dword[edi+3Ah*4],COp3Am8    mov dword[edi+3Bh*4],COp3B    mov dword[edi+3Ch*4],COp3Cm8    mov dword[edi+3Dh*4],COp3Dm8    mov dword[edi+3Eh*4],COp3Em8    mov dword[edi+3Fh*4],COp3Fm8    mov dword[edi+40h*4],COp40    mov dword[edi+41h*4],COp41m8    mov dword[edi+42h*4],COp42    mov dword[edi+43h*4],COp43m8    mov dword[edi+44h*4],COp44    mov dword[edi+45h*4],COp45m8    mov dword[edi+46h*4],COp46m8    mov dword[edi+47h*4],COp47m8    mov dword[edi+48h*4],COp48m8    mov dword[edi+49h*4],COp49m8    mov dword[edi+4Ah*4],COp4Am8    mov dword[edi+4Bh*4],COp4B    mov dword[edi+4Ch*4],COp4C    mov dword[edi+4Dh*4],COp4Dm8    mov dword[edi+4Eh*4],COp4Em8    mov dword[edi+4Fh*4],COp4Fm8

⌨️ 快捷键说明

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