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

📄 tablec.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 tableAc,tableBc,tableCc,tableDc,tableEcEXTSYM tableFc,tableGc,tableHc,tableadc%include "cpu/65816dc.inc"%include "cpu/address.inc"%include "cpu/addrni.inc"%include "cpu/e65816c.inc"; global variables;*******************************************************; Generate OpCode Table;*******************************************************SECTION .textNEWSYM inittablec    ; set tablead  (NVMXDIZC) (  MXD   )    push es    xor ecx,ecx    xor al,al    mov cx,256    mov edi,tableadc.loopa    test al,08h ; D flag    jnz .decon    test al,10h ; X flag    jnz .xon    test al,20h ; M flag    jnz .mon    mov esi,tableAc    jmp .done.mon    mov esi,tableBc    jmp .done.xon    test al,20h ; M flag    jnz .mon2    mov esi,tableCc    jmp .done.mon2    mov esi,tableDc    jmp .done.decon    test al,10h ; X flag    jnz .xon3    test al,20h ; M flag    jnz .mon3    mov esi,tableEc    jmp .done.mon3    mov esi,tableFc    jmp .done.xon3    test al,20h    jnz .mon4    mov esi,tableGc    jmp .done.mon4    mov esi,tableHc.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,tableAc    mov ecx,256    rep stosd    mov edi,tableBc    mov ecx,256    rep stosd    mov edi,tableCc    mov ecx,256    rep stosd    mov edi,tableDc    mov ecx,256    rep stosd    mov edi,tableEc    mov ecx,256    rep stosd    mov edi,tableFc    mov ecx,256    rep stosd    mov edi,tableGc    mov ecx,256    rep stosd    mov edi,tableHc    mov ecx,256    rep stosd    mov edi,tableAc    call settables    mov edi,tableBc    call settables    mov edi,tableCc    call settables    mov edi,tableDc    call settables    mov edi,tableEc    call settables    mov edi,tableFc    call settables    mov edi,tableGc    call settables    mov edi,tableHc    call settables    ; set proper functions    mov edi,tableAc              ; Table addresses (M:0,X:0,D:0)    call settablem16    mov edi,tableAc    call settablex16    mov edi,tableBc              ; Table addresses (M:1,X:0,D:0)    call settablex16    mov edi,tableCc              ; Table addresses (M:0,X:1,D:0)    call settablem16    mov edi,tableEc              ; Table addresses (M:0,X:0,D:1)    call settablem16    mov edi,tableEc    call settableDm16    mov edi,tableEc    call settablex16    mov edi,tableFc              ; Table addresses (M:1,X:0,D:1)    call settablex16    mov edi,tableFc    call settableDm8    mov edi,tableGc              ; Table addresses (M:0,X:1,D:1)    call settablem16    mov edi,tableGc    call settableDm16    mov edi,tableHc              ; Table addresses (M:1,X:1,D:1)    call settableDm8    pop es    reteopINVALID    ret;*******************************************************; Set Tables     Sets the opcode tables according to EDI;*******************************************************; This function sets all the non-multiple entriessettables:    ;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    mov dword[edi+50h*4],COp50    mov dword[edi+51h*4],COp51m8    mov dword[edi+52h*4],COp52m8    mov dword[edi+53h*4],COp53m8    mov dword[edi+54h*4],COp54    mov dword[edi+55h*4],COp55m8    mov dword[edi+56h*4],COp56m8    mov dword[edi+57h*4],COp57m8    mov dword[edi+58h*4],COp58    mov dword[edi+59h*4],COp59m8    mov dword[edi+5Ah*4],COp5Ax8    mov dword[edi+5Bh*4],COp5B    mov dword[edi+5Ch*4],COp5C    mov dword[edi+5Dh*4],COp5Dm8    mov dword[edi+5Eh*4],COp5Em8    mov dword[edi+5Fh*4],COp5Fm8    mov dword[edi+60h*4],COp60    mov dword[edi+61h*4],COp61m8nd    mov dword[edi+62h*4],COp62    mov dword[edi+63h*4],COp63m8nd    mov dword[edi+64h*4],COp64m8    mov dword[edi+65h*4],COp65m8nd    mov dword[edi+66h*4],COp66m8    mov dword[edi+67h*4],COp67m8nd    mov dword[edi+68h*4],COp68m8    mov dword[edi+69h*4],COp69m8nd    mov dword[edi+6Ah*4],COp6Am8    mov dword[edi+6Bh*4],COp6B    mov dword[edi+6Ch*4],COp6C    mov dword[edi+6Dh*4],COp6Dm8nd    mov dword[edi+6Eh*4],COp6Em8    mov dword[edi+6Fh*4],COp6Fm8nd    mov dword[edi+70h*4],COp70    mov dword[edi+71h*4],COp71m8nd    mov dword[edi+72h*4],COp72m8nd    mov dword[edi+73h*4],COp73m8nd    mov dword[edi+74h*4],COp74m8    mov dword[edi+75h*4],COp75m8nd    mov dword[edi+76h*4],COp76m8    mov dword[edi+77h*4],COp77m8nd    mov dword[edi+78h*4],COp78    mov dword[edi+79h*4],COp79m8nd    mov dword[edi+7Ah*4],COp7Ax8    mov dword[edi+7Bh*4],COp7B    mov dword[edi+7Ch*4],COp7C    mov dword[edi+7Dh*4],COp7Dm8nd    mov dword[edi+7Eh*4],COp7Em8    mov dword[edi+7Fh*4],COp7Fm8nd    mov dword[edi+80h*4],COp80    mov dword[edi+81h*4],COp81m8    mov dword[edi+82h*4],COp82    mov dword[edi+83h*4],COp83m8    mov dword[edi+84h*4],COp84x8    mov dword[edi+85h*4],COp85m8    mov dword[edi+86h*4],COp86x8    mov dword[edi+87h*4],COp87m8    mov dword[edi+88h*4],COp88x8    mov dword[edi+89h*4],COp89m8    mov dword[edi+8Ah*4],COp8Am8    mov dword[edi+8Bh*4],COp8B    mov dword[edi+8Ch*4],COp8Cx8    mov dword[edi+8Dh*4],COp8Dm8    mov dword[edi+8Eh*4],COp8Ex8    mov dword[edi+8Fh*4],COp8Fm8    mov dword[edi+90h*4],COp90    mov dword[edi+91h*4],COp91m8    mov dword[edi+92h*4],COp92m8    mov dword[edi+93h*4],COp93m8    mov dword[edi+94h*4],COp94x8    mov dword[edi+95h*4],COp95m8    mov dword[edi+96h*4],COp96x8    mov dword[edi+97h*4],COp97m8    mov dword[edi+98h*4],COp98m8    mov dword[edi+99h*4],COp99m8    mov dword[edi+9Ah*4],COp9A    mov dword[edi+9Bh*4],COp9Bx8    mov dword[edi+9Ch*4],COp9Cm8    mov dword[edi+9Dh*4],COp9Dm8    mov dword[edi+9Eh*4],COp9Em8    mov dword[edi+9Fh*4],COp9Fm8    mov dword[edi+0A0h*4],COpA0x8    mov dword[edi+0A1h*4],COpA1m8    mov dword[edi+0A2h*4],COpA2x8    mov dword[edi+0A3h*4],COpA3m8    mov dword[edi+0A4h*4],COpA4x8    mov dword[edi+0A5h*4],COpA5m8    mov dword[edi+0A6h*4],COpA6x8    mov dword[edi+0A7h*4],COpA7m8    mov dword[edi+0A8h*4],COpA8x8    mov dword[edi+0A9h*4],COpA9m8    mov dword[edi+0AAh*4],COpAAx8    mov dword[edi+0ABh*4],COpAB    mov dword[edi+0ACh*4],COpACx8    mov dword[edi+0ADh*4],COpADm8    mov dword[edi+0AEh*4],COpAEx8    mov dword[edi+0AFh*4],COpAFm8

⌨️ 快捷键说明

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