fxtable.asm
来自「十七种模拟器源代码 非常有用的作课程设计不可缺少的」· 汇编 代码 · 共 1,838 行 · 第 1/5 页
ASM
1,838 行
.colors256z2
test bl,20h
jnz .lowercheckz2
mov ebx,FxOpd4C1288bz
jmp .end2
.lowercheckz2
mov ebx,FxOpd4C1288bzl
jmp .end2
.ditherz2
cmp dl,0
je .colors4dz2
cmp dl,3
je .colors256dz2
mov ebx,FxOpd4C1284bzd
jmp .end2
.colors4dz2
mov ebx,FxOpd4C1282bzd
jmp .end2
.colors256dz2
test bl,20h
jnz .lowercheckdz2
mov ebx,FxOpd4C1288bzd
jmp .end2
.lowercheckdz2
mov ebx,FxOpd4C1288bzdl
.end2
mov [eax],ebx
pop ebx
inc ebx
add eax,4
dec ecx
jnz near .ploop2
; Initiate AND and bit tables
mov eax,fxxand
mov ecx,256
xor ebx,ebx
.loopat
push ecx
mov ecx,ebx
and ecx,07h
xor ecx,07h
mov edx,0101h
shl edx,cl
xor edx,0FFFFFFFFh
pop ecx
mov [eax],edx
inc ebx
add eax,4
loop .loopat
; bit tables
mov eax,fxbit01
mov ecx,256
xor ebx,ebx
.loopb01
xor edx,edx
test ebx,01h
jz .nob0
or edx,0FFh
.nob0
test ebx,02h
jz .nob1
or edx,0FF00h
.nob1
mov [eax],edx
xor edx,edx
test ebx,04h
jz .nob2
or edx,0FFh
.nob2
test ebx,08h
jz .nob3
or edx,0FF00h
.nob3
mov [eax+256*4],edx
xor edx,edx
test ebx,10h
jz .nob4
or edx,0FFh
.nob4
test ebx,20h
jz .nob5
or edx,0FF00h
.nob5
mov [eax+256*8],edx
xor edx,edx
test ebx,40h
jz .nob6
or edx,0FFh
.nob6
test ebx,80h
jz .nob7
or edx,0FF00h
.nob7
mov [eax+256*12],edx
add eax,4
inc ebx
dec ecx
jnz near .loopb01
; Initialize PLOT tables
mov esi,[sfxramdata]
add esi,1024*1024
; Create 4 * 256k plot tables
; 128 line mode
mov [sfx128lineloc],esi
xor eax,eax
xor ebx,ebx
.nexty
.nextx
cmp eax,128
jae .over
push eax
push ebx
shr eax,3
shr ebx,3
shl ebx,4
add ebx,eax
mov [esi],ebx
add esi,4
pop ebx
pop eax
jmp .notover
.over
mov dword[esi],0FFFFFFFFh
add esi,4
.notover
inc al
jnz .nextx
inc bl
jnz .nexty
; 160 line mode
mov [sfx160lineloc],esi
.nexty2
.nextx2
cmp eax,160
jae .over2
push eax
push ebx
shr eax,3
shr ebx,3
mov edx,ebx
shl ebx,4
shl edx,2
add ebx,eax
add ebx,edx
mov [esi],ebx
add esi,4
pop ebx
pop eax
jmp .notover2
.over2
mov dword[esi],0FFFFFFFFh
add esi,4
.notover2
inc al
jnz .nextx2
inc bl
jnz .nexty2
; 192 line mode
mov [sfx192lineloc],esi
.nexty3
.nextx3
cmp eax,192
jae .over3
push eax
push ebx
shr eax,3
shr ebx,3
mov edx,ebx
shl ebx,4
shl edx,3
add ebx,eax
add ebx,edx
mov [esi],ebx
add esi,4
pop ebx
pop eax
jmp .notover3
.over3
mov dword[esi],0FFFFFFFFh
add esi,4
.notover3
inc al
jnz .nextx3
inc bl
jnz .nexty3
; obj mode
mov [sfxobjlineloc],esi
.nexty4
.nextx4
push eax
push ebx
and ebx,80h
and eax,80h
shl ebx,1
shl eax,2
add ebx,eax
mov edx,ebx
pop ebx
pop eax
push eax
push ebx
and ebx,78h
and eax,78h
shr ebx,3
shl eax,1
add ebx,eax
add edx,ebx
pop ebx
pop eax
mov [esi],edx
add esi,4
inc al
jnz .nextx4
inc bl
jnz .nexty4
mov eax,[romdata]
xor ebx,ebx
mov ecx,256
.loopc
mov [SfxMemTable+ebx*4],eax
inc ebx
dec ecx
jnz .loopc
mov eax,[romdata]
; sub eax,32768
xor ebx,ebx
mov ecx,64
.loop
mov [SfxMemTable+ebx*4],eax
add eax,65536
inc ebx
dec ecx
jnz .loop
mov eax,[romdata]
add eax,32768
mov ecx,32
.loop2
mov [SfxMemTable+ebx*4],eax
add eax,65536*2
inc ebx
dec ecx
jnz .loop2
mov eax,[sfxramdata]
mov [SfxMemTable+70h*4],eax
add eax,65536
mov [SfxMemTable+71h*4],eax
add eax,65536
mov [SfxMemTable+72h*4],eax
add eax,65536
mov [SfxMemTable+73h*4],eax
mov eax,[romdata]
; sub eax,32768
xor ebx,ebx
mov ebx,80h
mov ecx,64
.loops
mov [SfxMemTable+ebx*4],eax
add eax,65536
inc ebx
dec ecx
jnz .loops
mov eax,[romdata]
add eax,32768
mov ecx,32
.loop2s
mov [SfxMemTable+ebx*4],eax
add eax,65536*2
inc ebx
dec ecx
jnz .loop2s
mov eax,[sfxramdata]
mov [SfxMemTable+0F0h*4],eax
add eax,65536
mov [SfxMemTable+0F1h*4],eax
add eax,65536
mov [SfxMemTable+0F2h*4],eax
add eax,65536
mov [SfxMemTable+0F3h*4],eax
mov dword [FxTable+00h*4],FxOp00
mov dword [FxTable+01h*4],FxOp01
mov dword [FxTable+02h*4],FxOp02
mov dword [FxTable+03h*4],FxOp03
mov dword [FxTable+04h*4],FxOp04
mov dword [FxTable+05h*4],FxOp05
mov dword [FxTable+06h*4],FxOp06
mov dword [FxTable+07h*4],FxOp07
mov dword [FxTable+08h*4],FxOp08
mov dword [FxTable+09h*4],FxOp09
mov dword [FxTable+0Ah*4],FxOp0A
mov dword [FxTable+0Bh*4],FxOp0B
mov dword [FxTable+0Ch*4],FxOp0C
mov dword [FxTable+0Dh*4],FxOp0D
mov dword [FxTable+0Eh*4],FxOp0E
mov dword [FxTable+0Fh*4],FxOp0F
mov dword [FxTable+10h*4],FxOp10
mov dword [FxTable+11h*4],FxOp11
mov dword [FxTable+12h*4],FxOp12
mov dword [FxTable+13h*4],FxOp13
mov dword [FxTable+14h*4],FxOp14
mov dword [FxTable+15h*4],FxOp15
mov dword [FxTable+16h*4],FxOp16
mov dword [FxTable+17h*4],FxOp17
mov dword [FxTable+18h*4],FxOp18
mov dword [FxTable+19h*4],FxOp19
mov dword [FxTable+1Ah*4],FxOp1A
mov dword [FxTable+1Bh*4],FxOp1B
mov dword [FxTable+1Ch*4],FxOp1C
mov dword [FxTable+1Dh*4],FxOp1D
mov dword [FxTable+1Eh*4],FxOp1E
mov dword [FxTable+1Fh*4],FxOp1F
mov dword [FxTable+20h*4],FxOp20
mov dword [FxTable+21h*4],FxOp21
mov dword [FxTable+22h*4],FxOp22
mov dword [FxTable+23h*4],FxOp23
mov dword [FxTable+24h*4],FxOp24
mov dword [FxTable+25h*4],FxOp25
mov dword [FxTable+26h*4],FxOp26
mov dword [FxTable+27h*4],FxOp27
mov dword [FxTable+28h*4],FxOp28
mov dword [FxTable+29h*4],FxOp29
mov dword [FxTable+2Ah*4],FxOp2A
mov dword [FxTable+2Bh*4],FxOp2B
mov dword [FxTable+2Ch*4],FxOp2C
mov dword [FxTable+2Dh*4],FxOp2D
mov dword [FxTable+2Eh*4],FxOp2E
mov dword [FxTable+2Fh*4],FxOp2F
mov dword [FxTable+30h*4],FxOp30
mov dword [FxTable+31h*4],FxOp31
mov dword [FxTable+32h*4],FxOp32
mov dword [FxTable+33h*4],FxOp33
mov dword [FxTable+34h*4],FxOp34
mov dword [FxTable+35h*4],FxOp35
mov dword [FxTable+36h*4],FxOp36
mov dword [FxTable+37h*4],FxOp37
mov dword [FxTable+38h*4],FxOp38
mov dword [FxTable+39h*4],FxOp39
mov dword [FxTable+3Ah*4],FxOp3A
mov dword [FxTable+3Bh*4],FxOp3B
mov dword [FxTable+3Ch*4],FxOp3C
mov dword [FxTable+3Dh*4],FxOp3D
mov dword [FxTable+3Eh*4],FxOp3E
mov dword [FxTable+3Fh*4],FxOp3F
mov dword [FxTable+40h*4],FxOp40
mov dword [FxTable+41h*4],FxOp41
mov dword [FxTable+42h*4],FxOp42
mov dword [FxTable+43h*4],FxOp43
mov dword [FxTable+44h*4],FxOp44
mov dword [FxTable+45h*4],FxOp45
mov dword [FxTable+46h*4],FxOp46
mov dword [FxTable+47h*4],FxOp47
mov dword [FxTable+48h*4],FxOp48
mov dword [FxTable+49h*4],FxOp49
mov dword [FxTable+4Ah*4],FxOp4A
mov dword [FxTable+4Bh*4],FxOp4B
mov dword [FxTable+4Ch*4],FxOp4C
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?