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 + -
显示快捷键?