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

📄 stable.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 SA1tableA,SA1tableB,SA1tableC,SA1tableD,SA1tableEEXTSYM SA1tableF,SA1tableG,SA1tableH,SA1tableadEXTSYM cpucycle,SA1UpdateDPage,intrset%include "cpu/s65816d.inc"%include "cpu/saddress.inc"%include "cpu/saddrni.inc"%include "cpu/se65816.inc"; global variables;tableA  times 256             ; Table addresses (M:0,X:0,D:0);tableB  times 256             ; Table addresses (M:1,X:0,D:0);tableC  times 256             ; Table addresses (M:0,X:1,D:0);tableD  times 256             ; Table addresses (M:1,X:1,D:0);tableE  times 256             ; Table addresses (M:0,X:0,D:1);tableF  times 256             ; Table addresses (M:1,X:0,D:1);tableG  times 256             ; Table addresses (M:0,X:1,D:1);tableH  times 256             ; Table addresses (M:1,X:1,D:1);tablead times 256             ; Table address location according to P;memtabler8 times 256          ; Memory Bank Locations for reading 8-bit;memtablew8 times 256          ; Memory Bank Locations for writing 8-bit;memtabler16 times 256          ; Memory Bank Locations for reading 16-bit;memtablew16 times 256          ; Memory Bank Locations for reading 16-bit;*******************************************************; Generate OpCode Table;*******************************************************SECTION .textNEWSYM SA1inittable    ; set tablead  (NVMXDIZC) (  MXD   )    push es    xor ecx,ecx    xor al,al    mov cx,256    mov edi,SA1tablead.loopa    test al,08h ; D flag    jnz .decon    test al,10h ; X flag    jnz .xon    test al,20h ; M flag    jnz .mon    mov esi,SA1tableA    jmp .done.mon    mov esi,SA1tableB    jmp .done.xon    test al,20h ; M flag    jnz .mon2    mov esi,SA1tableC    jmp .done.mon2    mov esi,SA1tableD    jmp .done.decon    test al,10h ; X flag    jnz .xon3    test al,20h ; M flag    jnz .mon3    mov esi,SA1tableE    jmp .done.mon3    mov esi,SA1tableF    jmp .done.xon3    test al,20h    jnz .mon4    mov esi,SA1tableG    jmp .done.mon4    mov esi,SA1tableH.done    inc al    push eax    mov eax,esi    stosd    pop eax    dec ecx    jnz .loopa    ; Set CPU addresses    mov edi,SA1tableA    call SA1settables    mov edi,SA1tableB    call SA1settables    mov edi,SA1tableC    call SA1settables    mov edi,SA1tableD    call SA1settables    mov edi,SA1tableE    call SA1settables    mov edi,SA1tableF    call SA1settables    mov edi,SA1tableG    call SA1settables    mov edi,SA1tableH    call SA1settables    ; set proper functions    mov edi,SA1tableA              ; Table addresses (M:0,X:0,D:0)    call SA1settablem16    mov edi,SA1tableA    call SA1settablex16    mov edi,SA1tableB              ; Table addresses (M:1,X:0,D:0)    call SA1settablex16    mov edi,SA1tableC              ; Table addresses (M:0,X:1,D:0)    call SA1settablem16    mov edi,SA1tableE              ; Table addresses (M:0,X:0,D:1)    call SA1settablem16    mov edi,SA1tableE    call SA1settableDm16    mov edi,SA1tableE    call SA1settablex16    mov edi,SA1tableF              ; Table addresses (M:1,X:0,D:1)    call SA1settablex16    mov edi,SA1tableF    call SA1settableDm8    mov edi,SA1tableG              ; Table addresses (M:0,X:1,D:1)    call SA1settablem16    mov edi,SA1tableG    call SA1settableDm16    mov edi,SA1tableH              ; Table addresses (M:1,X:1,D:1)    call SA1settableDm8    pop es    ret;*******************************************************; Set Tables     Sets the opcode tables according to EDI;*******************************************************; This function sets all the non-multiple entriesNEWSYM SA1settables    ;row 0    mov dword[edi+00h*4],SA1COp00    mov dword[edi+01h*4],SA1COp01m8    mov dword[edi+02h*4],SA1COp02    mov dword[edi+03h*4],SA1COp03m8    mov dword[edi+04h*4],SA1COp04m8    mov dword[edi+05h*4],SA1COp05m8    mov dword[edi+06h*4],SA1COp06m8    mov dword[edi+07h*4],SA1COp07m8    mov dword[edi+08h*4],SA1COp08    mov dword[edi+09h*4],SA1COp09m8    mov dword[edi+0Ah*4],SA1COp0Am8    mov dword[edi+0Bh*4],SA1COp0B    mov dword[edi+0Ch*4],SA1COp0Cm8    mov dword[edi+0Dh*4],SA1COp0Dm8    mov dword[edi+0Eh*4],SA1COp0Em8    mov dword[edi+0Fh*4],SA1COp0Fm8    mov dword[edi+10h*4],SA1COp10    mov dword[edi+11h*4],SA1COp11m8    mov dword[edi+12h*4],SA1COp12m8    mov dword[edi+13h*4],SA1COp13m8    mov dword[edi+14h*4],SA1COp14m8    mov dword[edi+15h*4],SA1COp15m8    mov dword[edi+16h*4],SA1COp16m8    mov dword[edi+17h*4],SA1COp17m8    mov dword[edi+18h*4],SA1COp18    mov dword[edi+19h*4],SA1COp19m8    mov dword[edi+1Ah*4],SA1COp1Am8    mov dword[edi+1Bh*4],SA1COp1B    mov dword[edi+1Ch*4],SA1COp1Cm8    mov dword[edi+1Dh*4],SA1COp1Dm8    mov dword[edi+1Eh*4],SA1COp1Em8    mov dword[edi+1Fh*4],SA1COp1Fm8    mov dword[edi+20h*4],SA1COp20    mov dword[edi+21h*4],SA1COp21m8    mov dword[edi+22h*4],SA1COp22    mov dword[edi+23h*4],SA1COp23m8    mov dword[edi+24h*4],SA1COp24m8    mov dword[edi+25h*4],SA1COp25m8    mov dword[edi+26h*4],SA1COp26m8    mov dword[edi+27h*4],SA1COp27m8    mov dword[edi+28h*4],SA1COp28    mov dword[edi+29h*4],SA1COp29m8    mov dword[edi+2Ah*4],SA1COp2Am8    mov dword[edi+2Bh*4],SA1COp2B    mov dword[edi+2Ch*4],SA1COp2Cm8    mov dword[edi+2Dh*4],SA1COp2Dm8    mov dword[edi+2Eh*4],SA1COp2Em8    mov dword[edi+2Fh*4],SA1COp2Fm8    mov dword[edi+30h*4],SA1COp30    mov dword[edi+31h*4],SA1COp31m8    mov dword[edi+32h*4],SA1COp32m8    mov dword[edi+33h*4],SA1COp33m8    mov dword[edi+34h*4],SA1COp34m8    mov dword[edi+35h*4],SA1COp35m8    mov dword[edi+36h*4],SA1COp36m8    mov dword[edi+37h*4],SA1COp37m8    mov dword[edi+38h*4],SA1COp38    mov dword[edi+39h*4],SA1COp39m8    mov dword[edi+3Ah*4],SA1COp3Am8    mov dword[edi+3Bh*4],SA1COp3B    mov dword[edi+3Ch*4],SA1COp3Cm8    mov dword[edi+3Dh*4],SA1COp3Dm8    mov dword[edi+3Eh*4],SA1COp3Em8    mov dword[edi+3Fh*4],SA1COp3Fm8    mov dword[edi+40h*4],SA1COp40    mov dword[edi+41h*4],SA1COp41m8    mov dword[edi+42h*4],SA1COp42    mov dword[edi+43h*4],SA1COp43m8    mov dword[edi+44h*4],SA1COp44    mov dword[edi+45h*4],SA1COp45m8    mov dword[edi+46h*4],SA1COp46m8    mov dword[edi+47h*4],SA1COp47m8    mov dword[edi+48h*4],SA1COp48m8    mov dword[edi+49h*4],SA1COp49m8    mov dword[edi+4Ah*4],SA1COp4Am8    mov dword[edi+4Bh*4],SA1COp4B    mov dword[edi+4Ch*4],SA1COp4C    mov dword[edi+4Dh*4],SA1COp4Dm8    mov dword[edi+4Eh*4],SA1COp4Em8    mov dword[edi+4Fh*4],SA1COp4Fm8    mov dword[edi+50h*4],SA1COp50    mov dword[edi+51h*4],SA1COp51m8    mov dword[edi+52h*4],SA1COp52m8    mov dword[edi+53h*4],SA1COp53m8    mov dword[edi+54h*4],SA1COp54    mov dword[edi+55h*4],SA1COp55m8    mov dword[edi+56h*4],SA1COp56m8    mov dword[edi+57h*4],SA1COp57m8    mov dword[edi+58h*4],SA1COp58    mov dword[edi+59h*4],SA1COp59m8    mov dword[edi+5Ah*4],SA1COp5Ax8    mov dword[edi+5Bh*4],SA1COp5B    mov dword[edi+5Ch*4],SA1COp5C    mov dword[edi+5Dh*4],SA1COp5Dm8    mov dword[edi+5Eh*4],SA1COp5Em8    mov dword[edi+5Fh*4],SA1COp5Fm8    mov dword[edi+60h*4],SA1COp60    mov dword[edi+61h*4],SA1COp61m8nd    mov dword[edi+62h*4],SA1COp62    mov dword[edi+63h*4],SA1COp63m8nd    mov dword[edi+64h*4],SA1COp64m8    mov dword[edi+65h*4],SA1COp65m8nd    mov dword[edi+66h*4],SA1COp66m8    mov dword[edi+67h*4],SA1COp67m8nd    mov dword[edi+68h*4],SA1COp68m8    mov dword[edi+69h*4],SA1COp69m8nd    mov dword[edi+6Ah*4],SA1COp6Am8    mov dword[edi+6Bh*4],SA1COp6B    mov dword[edi+6Ch*4],SA1COp6C    mov dword[edi+6Dh*4],SA1COp6Dm8nd    mov dword[edi+6Eh*4],SA1COp6Em8    mov dword[edi+6Fh*4],SA1COp6Fm8nd    mov dword[edi+70h*4],SA1COp70    mov dword[edi+71h*4],SA1COp71m8nd    mov dword[edi+72h*4],SA1COp72m8nd    mov dword[edi+73h*4],SA1COp73m8nd    mov dword[edi+74h*4],SA1COp74m8    mov dword[edi+75h*4],SA1COp75m8nd    mov dword[edi+76h*4],SA1COp76m8    mov dword[edi+77h*4],SA1COp77m8nd    mov dword[edi+78h*4],SA1COp78    mov dword[edi+79h*4],SA1COp79m8nd    mov dword[edi+7Ah*4],SA1COp7Ax8    mov dword[edi+7Bh*4],SA1COp7B    mov dword[edi+7Ch*4],SA1COp7C    mov dword[edi+7Dh*4],SA1COp7Dm8nd    mov dword[edi+7Eh*4],SA1COp7Em8    mov dword[edi+7Fh*4],SA1COp7Fm8nd    mov dword[edi+80h*4],SA1COp80    mov dword[edi+81h*4],SA1COp81m8    mov dword[edi+82h*4],SA1COp82    mov dword[edi+83h*4],SA1COp83m8    mov dword[edi+84h*4],SA1COp84x8    mov dword[edi+85h*4],SA1COp85m8    mov dword[edi+86h*4],SA1COp86x8    mov dword[edi+87h*4],SA1COp87m8    mov dword[edi+88h*4],SA1COp88x8    mov dword[edi+89h*4],SA1COp89m8    mov dword[edi+8Ah*4],SA1COp8Am8    mov dword[edi+8Bh*4],SA1COp8B    mov dword[edi+8Ch*4],SA1COp8Cx8    mov dword[edi+8Dh*4],SA1COp8Dm8    mov dword[edi+8Eh*4],SA1COp8Ex8    mov dword[edi+8Fh*4],SA1COp8Fm8    mov dword[edi+90h*4],SA1COp90    mov dword[edi+91h*4],SA1COp91m8    mov dword[edi+92h*4],SA1COp92m8    mov dword[edi+93h*4],SA1COp93m8    mov dword[edi+94h*4],SA1COp94x8    mov dword[edi+95h*4],SA1COp95m8    mov dword[edi+96h*4],SA1COp96x8    mov dword[edi+97h*4],SA1COp97m8    mov dword[edi+98h*4],SA1COp98m8    mov dword[edi+99h*4],SA1COp99m8    mov dword[edi+9Ah*4],SA1COp9A    mov dword[edi+9Bh*4],SA1COp9Bx8    mov dword[edi+9Ch*4],SA1COp9Cm8    mov dword[edi+9Dh*4],SA1COp9Dm8    mov dword[edi+9Eh*4],SA1COp9Em8    mov dword[edi+9Fh*4],SA1COp9Fm8    mov dword[edi+0A0h*4],SA1COpA0x8    mov dword[edi+0A1h*4],SA1COpA1m8    mov dword[edi+0A2h*4],SA1COpA2x8    mov dword[edi+0A3h*4],SA1COpA3m8    mov dword[edi+0A4h*4],SA1COpA4x8    mov dword[edi+0A5h*4],SA1COpA5m8    mov dword[edi+0A6h*4],SA1COpA6x8    mov dword[edi+0A7h*4],SA1COpA7m8    mov dword[edi+0A8h*4],SA1COpA8x8    mov dword[edi+0A9h*4],SA1COpA9m8    mov dword[edi+0AAh*4],SA1COpAAx8    mov dword[edi+0ABh*4],SA1COpAB    mov dword[edi+0ACh*4],SA1COpACx8    mov dword[edi+0ADh*4],SA1COpADm8    mov dword[edi+0AEh*4],SA1COpAEx8    mov dword[edi+0AFh*4],SA1COpAFm8    mov dword[edi+0B0h*4],SA1COpB0    mov dword[edi+0B1h*4],SA1COpB1m8    mov dword[edi+0B2h*4],SA1COpB2m8    mov dword[edi+0B3h*4],SA1COpB3m8    mov dword[edi+0B4h*4],SA1COpB4x8    mov dword[edi+0B5h*4],SA1COpB5m8    mov dword[edi+0B6h*4],SA1COpB6x8    mov dword[edi+0B7h*4],SA1COpB7m8

⌨️ 快捷键说明

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