1 ;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» 2 ;º Filename: GIANT.ASM º 3 ;ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹ 4 ;º Source Codes for GIANT. The Ultimate 4KB-Intro! [:)] v. 1.1 º 5 ;º º 6 ;º Written by: Sigma of Star Team Productions, (ä, STP) º 7 ;º alias Jari Kyt”joki º 8 ;º º 9 ;º Snail-Mail: Jari Kyt”joki º 10 ;º Puolukkakatu 5 º 11 ;º 44200 Suolahti º 12 ;º Finland, Europe, Earth º 13 ;º º 14 ;º E-Mail: jari.kytojoki@hut.fi º 15 ;º º 16 ;º Please, send me a Postcard!!! º 17 ;º Send me your source codes! (or at least some technical info, etc...) ;) º 18 ;º Don't hesitate to contact me! º 19 ;º º 20 ;º Copyright (C) 1994, 1995 Jari Kyt”joki. All Rights Reserved. º 21 ;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ 22 23 ; After many inquiries for sources I decided to release this 24 ; source code. It is released as public domain. You can do it 25 ; whatever you want or like. But remember, if you are just 26 ; planning to make a new intro only by adding, removing or any 27 ; other way changing a few lines of this code, you are entering 28 ; worldwide lamers' club. But if you are reading this file just 29 ; because you want to learn something new, go on it! This is 30 ; the most biggest reason why I released this code. However, 31 ; I cannot promise there's anything new that you haven't known 32 ; before. (It's always worth studying new sources...) If you find 33 ; this file very helpful, please send me a postcard or at least 34 ; write me some E-Mail. 35 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 36 ; You can compile this file with TASM, I included MAKE.BAT 37 ; to help you. You'll notice that resulting COM-file will be 38 ; much larger than the released version. This is due to 39 ; the original COM-file has been compressed to fit in those 40 ; specified limits. If you are just compiling, testing and 41 ; debugging this source file there's no harm of it. You'll 42 ; have to compress the COM-file with your own compressor if 43 ; you want the new COM-file to be as small as the original 44 ; one. ;-) 45 ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 46 ; The code was optimized mainly for size and some parts seem to 47 ; be coded quite weirdly. In some time critical parts I repeated 48 ; the source code and I trusted the compressor would do the rest, 49 ; so that the file would be less than 4KB. There is still some 50 ; "extra" dummy bytes which could easily be removed. 51 ; My opinion of making a small intro is not hard. I had quite a 52 ; many ideas to put in this intro within the limits I had set, but 53 ; soon all 4KB was used and I had to think all over again. Many of 54 ; my plans finished undone. The size limit was reached too quickly. 55 ; I hope you enjoy my intro and learn something new. 56 ; 57 ;Last words: I'm sorry there isn't too many comments in this file. 58 ; Just try to figure it out. 59 ;ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ 60 61 ; NASM version: Erdogan Tan, 19/09/2016 62 63 [BITS 16] 64 65 section .text 66 67 Temp0 Equ _10A2h 68 Temp1 Equ _10A4h 69 Temp2 Equ _10A6h 70 Temp4 Equ 0100h 71 Sin2T Equ 0D000h 72 Cos2T Equ 0D200h 73 SinT Equ 0E000h 74 CosT Equ 0E200h 75 Temp_PAL3 Equ 0DF00h 76 Temp_PAL2 Equ 0DC00h 77 Temp_PAL1 Equ 0EC00h 78 Row256T Equ 0CE00h 79 CharP Equ 0106h 80 CharColor Equ 010Ah 81 TextSeg Equ Temp0 82 XMin Equ 010Ch 83 YMax Equ 010Eh 84 XStep Equ 0110h 85 YStep Equ 0112h 86 ScreenX Equ 0114h 87 ScreenY Equ 0116h 88 NMax Equ 0118h 89 x Equ 011Ah 90 y Equ 011Ch 91 zi Equ 011Eh 92 zr Equ 0120h 93 cr Equ 0122h 94 ci Equ 0124h 95 d2x Equ zi 96 d2y Equ zr 97 i Equ ScreenX 98 j Equ ScreenY 99 TempPAL1 Equ 0E000h 100 TempPAL2 Equ 0E400h 101 102 [ORG 100h] 103 104 Start: 105 00000000 FB sti 106 00000001 8EC1 mov es, cx ; preparations for some nice settings 107 00000003 BF7204 mov di, 0472h ; you'll know it for sure 108 00000006 3EA10200 mov ax, [ds:0002h] 109 0000000A 8CCA mov dx, cs 110 0000000C 29D0 sub ax, dx 111 0000000E 3D0050 cmp ax, 5000h ; This Intro needs 320K mem. 112 00000011 7205 jb short @OutOfMemory 113 00000013 83FCF8 cmp sp, 0FFF8h 114 00000016 7306 jae short @CheckFPU ; if Enough Memory, continue 115 @OutOfMemory: 116 00000018 B001 mov al, 01h 117 0000001A B44C mov ah, 4Ch 118 0000001C CD21 int 21h 119 @CheckFPU: ; check the existence of the Floating Point Unit 120 0000001E 9BDBE3 finit 121 00000021 31C0 xor ax, ax 122 00000023 AB stosw ; Use Cold Boot if necessary :) 123 00000024 8EC2 mov es, dx 124 00000026 890E0001 mov [Temp4], cx 125 0000002A 9BD93E0001 fstcw [Temp4] 126 0000002F 9B wait 127 00000030 803E010103 cmp byte [Temp4+1], 03h ; Check for Floating Point Unit 128 00000035 7406 je short @FPUFound 129 00000037 B003 mov al, 03h 130 00000039 B44C mov ah, 4Ch 131 0000003B CD21 int 21h 132 @FPUFound: 133 0000003D 9C pushf ; Check for 80286 134 0000003E 51 push cx 135 0000003F 9D popf 136 00000040 9C pushf 137 00000041 58 pop ax 138 00000042 9D popf 139 00000043 2500F0 and ax, 0F000h 140 00000046 3D00F0 cmp ax, 0F000h 141 00000049 740E je short @CPUBelow286 142 0000004B B900F0 mov cx, 0F000h 143 0000004E 9C pushf ; Check for 80386 144 0000004F 51 push cx 145 00000050 9D popf 146 00000051 9C pushf 147 00000052 58 pop ax 148 00000053 9D popf 149 00000054 2500F0 and ax, 0F000h 150 00000057 7506 jne short @CPU386Plus 151 @CPUBelow286: 152 00000059 B002 mov al, 02h 153 0000005B B44C mov ah, 4Ch 154 0000005D CD21 int 21h 155 @CPU386Plus: 156 0000005F B41A mov ah, 1Ah 157 00000061 B000 mov al, 00h 158 00000063 CD10 int 10h ; Check for VGA 159 00000065 80FB07 cmp bl, 07h 160 00000068 7204 jb short @NoVGA 161 0000006A 3C1A cmp al, 1Ah 162 0000006C 7406 je short @VGAFound 163 @NoVGA: 164 0000006E B004 mov al, 04h 165 00000070 B44C mov ah, 4Ch 166 00000072 CD21 int 21h 167 @VGAFound: 168 00000074 B430 mov ah, 30h 169 00000076 CD21 int 21h ; Get DOS Version 170 00000078 3C03 cmp al, 03h 171 0000007A 7306 jae short @DOSOkay 172 0000007C B005 mov al, 05h 173 0000007E B44C mov ah, 4Ch 174 00000080 CD21 int 21h 175 @DOSOkay: 176 00000082 B332 mov bl, 32h 177 00000084 B000 mov al, 00h 178 00000086 B412 mov ah, 12h 179 00000088 CD10 int 10h 180 0000008A BACC03 mov dx, 03CCh ; set your VGA to 181 0000008D EC in al, dx ; correct mode... 182 0000008E 0C01 or al, 01h ; B/W -> COLOR 183 00000090 BAC203 mov dx, 03C2h 184 00000093 EE out dx, al 185 00000094 B900FF mov cx, 0FF00h 186 00000097 B401 mov ah, 01h 187 00000099 CD10 int 10h 188 0000009B B001 mov al, 01h 189 0000009D B435 mov ah, 35h 190 0000009F CD21 int 21h ; Get BreakPoints Handler 191 000000A1 06 push es 192 000000A2 53 push bx 193 000000A3 B003 mov al, 03h 194 000000A5 B435 mov ah, 35h 195 000000A7 CD21 int 21h ; Get Single Step Handler 196 000000A9 06 push es 197 000000AA 53 push bx 198 000000AB FA cli 199 000000AC B003 mov al, 03h 200 000000AE B425 mov ah, 25h 201 000000B0 BAF0F0 mov dx, 0F0F0h 202 000000B3 8EDA mov ds, dx 203 000000B5 CD21 int 21h ; Disable Breakpoints 204 000000B7 B001 mov al, 01h 205 000000B9 B425 mov ah, 25h 206 000000BB BAF0F0 mov dx, 0F0F0h 207 000000BE 8EDA mov ds, dx 208 000000C0 CD21 int 21h ; Disable Single Step 209 000000C2 FB sti 210 000000C3 8CC8 mov ax, cs 211 000000C5 057002 add ax, ((Last_Word-Start)+0100h)/16 212 000000C8 8ED8 mov ds, ax 213 000000CA 8CC8 mov ax, cs 214 000000CC 050010 add ax, 1000h 215 000000CF 8EC0 mov es, ax 216 000000D1 B92900 mov cx, ((W_Divider-Data_Seg)/4)+2 217 000000D4 BE0000 mov si, Data_Seg 218 000000D7 89F7 mov di, si 219 000000D9 F366A5 rep movsd 220 @KeyPressed1: 221 000000DC B401 mov ah, 01h 222 000000DE CD16 int 16h 223 000000E0 7406 jz short @KeyBufferCleared 224 000000E2 31C0 xor ax, ax 225 000000E4 CD16 int 16h 226 000000E6 EBF4 jmp short @KeyPressed1 227 @KeyBufferCleared: 228 000000E8 9BDBE3 finit ; Make Sin and Cos Tables 229 000000EB 31F6 xor si, si 230 000000ED 8CC8 mov ax, cs 231 000000EF 8EC0 mov es, ax 232 000000F1 8ED8 mov ds, ax 233 000000F3 B94101 mov cx, 321 234 000000F6 DF06[9A1E] fild word [YY] 235 000000FA D9EB fldpi 236 000000FC DF06[981E] fild word [XX] 237 00000100 DEF9 fdivp st1, st0 238 @MakeSINCOS: 239 00000102 8936[981E] mov [XX], si 240 00000106 DF06[981E] fild word [XX] 241 0000010A D8C9 fmul st0, st1 242 0000010C D9FE fsin 243 0000010E D8CA fmul st0, st2 244 00000110 DF9C[101D] fistp word [si+SinTable] 245 00000114 46 inc si 246 00000115 E2EB loop @MakeSINCOS 247 00000117 BA00E0 mov dx, TempPAL1 248 0000011A 31DB xor bx, bx 249 0000011C B90001 mov cx, 256 250 0000011F B017 mov al, 17h 251 00000121 B410 mov ah, 10h 252 00000123 CD10 int 10h 253 ;M_FadeOUT TempPAL1, TempPAL2 254 00000125 BE00E0 mov si, TempPAL1 ; SourcePAL 255 00000128 BF00E4 mov di, TempPAL2 ; DestPAL 256 0000012B E88A0C call M_FadeOUT 257 0000012E 9B wait 258 ;M_KeyPressed 259 0000012F B401 mov ah, 01h 260 00000131 CD16 int 16h 261 00000133 0F857B0B jnz @KeyDownOut 262 00000137 B013 mov al, 13h 263 00000139 B400 mov ah, 00h 264 0000013B CD10 int 10h 265 0000013D BA00E0 mov dx, TempPAL1 266 00000140 31DB xor bx, bx 267 00000142 B90001 mov cx, 256 268 00000145 B017 mov al, 17h 269 00000147 B410 mov ah, 10h 270 00000149 CD10 int 10h 271 0000014B E8590C call M_ClearPAL 272 0000014E BA[DB1C] mov dx, Text2String 273 00000151 B409 mov ah, 9 274 00000153 CD21 int 21h 275 00000155 8CC8 mov ax, cs 276 00000157 050020 add ax, 2000h 277 0000015A 8EC0 mov es, ax 278 0000015C 8EE0 mov fs, ax 279 0000015E B800A0 mov ax, 0A000h 280 00000161 8EE8 mov gs, ax 281 00000163 31F6 xor si, si 282 00000165 31FF xor di, di 283 284 00000167 B108 mov cl, 8 285 rept_8_1: 286 00000169 51 push cx 287 0000016A B90A00 mov cx, 5*8/4 288 0000016D F3 rep 289 0000016E 65 db 65h ; GS segment override prefix 290 0000016F 66A5 movsd 291 00000171 81C61801 add si, (320-5*8) 292 00000175 59 pop cx 293 00000176 E2F1 loop rept_8_1 294 00000178 B108 mov cl, 8 295 rept_8_2: 296 0000017A 51 push cx 297 0000017B B91800 mov cx, 12*8/4 298 0000017E F3 rep 299 0000017F 65 db 65h ; GS segment override prefix 300 00000180 66A5 movsd 301 00000182 81C6E000 add si, (320-12*8) 302 00000186 59 pop cx 303 00000187 E2F1 loop rept_8_2 304 00000189 B108 mov cl, 8 305 rept_8_3: 306 0000018B 51 push cx 307 0000018C B91200 mov cx, 9*8/4 308 0000018F F3 rep 309 00000190 65 db 65h ; GS segment override prefix 310 00000191 66A5 movsd 311 00000193 81C6F800 add si, (320-9*8) 312 00000197 59 pop cx 313 00000198 E2F1 loop rept_8_3 314 315 0000019A B800A0 mov ax, 0A000h 316 0000019D 8EC0 mov es, ax 317 0000019F B900C7 mov cx, 199*256 318 @BG1: 319 000001A2 BA3F01 mov dx, 319 320 @BG2: 321 000001A5 89CF mov di, cx 322 000001A7 C1EF02 shr di, 2 323 000001AA 01CF add di, cx 324 000001AC 01D7 add di, dx 325 000001AE 88D0 mov al, dl 326 000001B0 30E8 xor al, ch 327 000001B2 241F and al, 1Fh 328 000001B4 3430 xor al, 30h 329 000001B6 AA stosb 330 000001B7 4A dec dx 331 000001B8 7DEB jge short @BG2 332 000001BA 80ED01 sub ch, 1 333 000001BD 73E3 jnc short @BG1 334 000001BF B80707 mov ax, 0707h 335 000001C2 31F6 xor si, si 336 337 ; M_WriteText 1 338 ; di = (60+TextXYMove)*320+120+TextXYMove 339 ; bx = (92+TextXYMove)*320+64+TextXYMove 340 ; dx = (124+TextXYMove)*320+88+TextXYMove 341 000001C4 BFB94C mov di, ((60+1)*320)+120+1 342 000001C7 BB8174 mov bx, ((92+1)*320)+64+1 343 000001CA BA999C mov dx, ((124+1)*320)+88+1 344 000001CD E8600B call M_WriteText 345 346 000001D0 31C0 xor ax, ax 347 000001D2 31F6 xor si, si 348 349 ; M_WriteText -1 350 ; di = (60+TextXYMove)*320+120+TextXYMove 351 ; bx = (92+TextXYMove)*320+64+TextXYMove 352 ; dx = (124+TextXYMove)*320+88+TextXYMove 353 000001D4 BF374A mov di, ((60-1)*320)+120-1 354 000001D7 BBFF71 mov bx, ((92-1)*320)+64-1 355 000001DA BA179A mov dx, ((124-1)*320)+88-1 356 000001DD E8500B call M_WriteText 357 358 000001E0 8CC8 mov ax, cs 359 000001E2 8ED8 mov ds, ax 360 000001E4 8EC0 mov es, ax 361 ;M_FadeIN TempPAL1, TempPAL2 362 000001E6 BE00E0 mov si, TempPAL1 ; SourcePAL 363 000001E9 BF00E4 mov di, TempPAL2 ; DestPAL 364 000001EC E8FC0B call M_FadeIN 365 000001EF B9FA00 mov cx, 250 366 @wv1: 367 000001F2 E8A40B call M_WaitVRT_DX 368 000001F5 E2FB loop @wv1 369 ;M_FadeOUT TempPAL1, TempPAL2 370 000001F7 BE00E0 mov si, TempPAL1 ; SourcePAL 371 000001FA BF00E4 mov di, TempPAL2 ; DestPAL 372 000001FD E8B80B call M_FadeOUT 373 ;M_KeyPressed 374 00000200 B401 mov ah, 01h 375 00000202 CD16 int 16h 376 00000204 0F85AA0A jnz @KeyDownOut 377 378 00000208 B012 mov al, 12h 379 0000020A B400 mov ah, 00h 380 0000020C CD10 int 10h 381 0000020E B92000 mov cx, 20h 382 @wv2: 383 00000211 E8850B call M_WaitVRT_DX 384 00000214 E2FB loop @wv2 385 00000216 B703 mov bh, 03h 386 00000218 B030 mov al, 30h 387 0000021A B411 mov ah, 11h 388 0000021C CD10 int 10h 389 0000021E 892E[561E] mov [CharGen], bp 390 00000222 06 push es 391 00000223 0FA1 pop fs 392 00000225 50 push ax 393 00000226 B30F mov bl, 15 394 @SetNextPAL: 395 00000228 88DF mov bh, bl 396 0000022A B000 mov al, 00h 397 0000022C B410 mov ah, 10h 398 0000022E CD10 int 10h 399 00000230 83C104 add cx, 4 400 00000233 FECB dec bl 401 00000235 79F1 jns short @SetNextPAL 402 00000237 E85F0B call M_WaitVRT_DX 403 0000023A BAD403 mov dx, 3D4h 404 0000023D B80C6A mov ax, 6A0Ch 405 00000240 EF out dx, ax 406 00000241 BAC803 mov dx, 03C8h 407 00000244 30C0 xor al, al 408 00000246 EE out dx, al 409 00000247 42 inc dx 410 00000248 B93000 mov cx, 16*3 411 0000024B 31C0 xor ax, ax 412 @SetPal: 413 0000024D 30C0 xor al, al 414 0000024F EE out dx, al 415 00000250 EE out dx, al 416 00000251 88E0 mov al, ah 417 00000253 EE out dx, al 418 00000254 80C404 add ah, 4 419 00000257 E2F4 loop @SetPal 420 00000259 BACE03 mov dx, 03CEh 421 0000025C B80502 mov ax, 0205h 422 0000025F EF out dx, ax 423 00000260 9BDBE3 finit 424 00000263 B800A0 mov ax, 0A000h 425 00000266 8EC0 mov es, ax 426 00000268 31F6 xor si, si 427 0000026A 31C0 xor ax, ax 428 0000026C 31FF xor di, di 429 0000026E B90080 mov cx, 65536/2 430 00000271 F3AB rep stosw 431 @CCPopAX: 432 00000273 58 pop ax 433 @CC: 434 00000274 8B2E[561E] mov bp, [CharGen] 435 00000278 6631DB xor ebx, ebx 436 0000027B 8A9C[BB1C] mov bl, [si+Text1String] 437 0000027F 66678D6CDD07 lea ebp, [ebp+8*ebx+7] 438 00000285 46 inc si 439 00000286 83E61F and si, 1Fh 440 00000289 D906[741E] fld dword [Const1] 441 0000028D D80E[8C1E] fmul dword [CosBB] 442 00000291 D806[701E] fadd dword [BB] 443 00000295 D816[7C1E] fcom dword [Const3] 444 00000299 9BDFE0 fstsw ax 445 0000029C 9B wait 446 0000029D 9E sahf 447 0000029E 777A ja short @GlobeOut 448 000002A0 D916[701E] fst dword [BB] 449 000002A4 D9FF fcos 450 000002A6 D9E8 fld1 451 000002A8 DEF1 fdivrp st1, st0 452 000002AA D916[8C1E] fst dword [CosBB] 453 000002AE D906[801E] fld dword [Const4] 454 000002B2 D8C9 fmul st0, st1 455 000002B4 D91E[681E] fstp dword [IIAdd] 456 000002B8 D80E[781E] fmul dword [Const2] 457 000002BC D806[6C1E] fadd dword [LL] 458 000002C0 D91E[6C1E] fstp dword [LL] 459 000002C4 D9EE fldz 460 000002C6 D91E[641E] fstp dword [JJ] 461 000002CA B320 mov bl, 32 462 @BB: 463 000002CC D9EE fldz 464 000002CE D91E[601E] fstp dword [II] 465 000002D2 D906[641E] fld dword [JJ] ; B := ... 466 000002D6 D806[701E] fadd dword [BB] 467 000002DA D9FB fsincos 468 000002DC D91E[5C1E] fstp dword [CosB] 469 000002E0 D91E[581E] fstp dword [SinB] 470 000002E4 F6C303 test bl, 3 471 000002E7 7501 jnz short @BPOK 472 000002E9 4D dec bp 473 @BPOK: 474 000002EA 55 push bp 475 000002EB 648B6E00 mov bp, [fs:bp+0] 476 477 %rep 8 478 call CalcPixel 479 %endrep 480 000002EF E8300C <1> call CalcPixel 481 000002F2 E82D0C <1> call CalcPixel 482 000002F5 E82A0C <1> call CalcPixel 483 000002F8 E8270C <1> call CalcPixel 484 000002FB E8240C <1> call CalcPixel 485 000002FE E8210C <1> call CalcPixel 486 00000301 E81E0C <1> call CalcPixel 487 00000304 E81B0C <1> call CalcPixel 488 489 00000307 5D pop bp 490 00000308 D906[641E] fld dword [JJ] 491 0000030C D806[801E] fadd dword [Const4] 492 00000310 D91E[641E] fstp dword [JJ] 493 00000314 4B dec bx 494 00000315 75B5 jnz short @BB 495 00000317 E95AFF jmp @CC 496 @GlobeOut: 497 0000031A 0E push cs 498 0000031B 07 pop es 499 0000031C BA00E0 mov dx, TempPAL1 500 0000031F 31DB xor bx, bx 501 00000321 B90001 mov cx, 256 502 00000324 B017 mov al, 17h 503 00000326 B410 mov ah, 10h 504 00000328 CD10 int 10h 505 0000032A B9FA00 mov cx, 250 506 @wv3: 507 0000032D E8690A call M_WaitVRT_DX 508 00000330 E2FB loop @wv3 509 ;M_KeyPressed 510 00000332 B401 mov ah, 01h 511 00000334 CD16 int 16h 512 00000336 0F857809 jnz @KeyDownOut 513 0000033A BACE03 mov dx, 03CEh 514 0000033D B808FF mov ax, 0FF08h 515 00000340 EF out dx, ax 516 00000341 BB006A mov bx, 6A00h 517 @ScrollDown: 518 00000344 E8520A call M_WaitVRT_DX 519 00000347 BAD403 mov dx, 3D4h 520 0000034A B00D mov al, 0Dh 521 0000034C 88DC mov ah, bl 522 0000034E EF out dx, ax 523 0000034F 48 dec ax 524 00000350 88FC mov ah, bh 525 00000352 EF out dx, ax 526 00000353 81EBA000 sub bx, 80*2 527 00000357 09DB or bx, bx 528 00000359 79E9 jns short @ScrollDown 529 ;M_FadeOUT TempPAL1, TempPAL2 530 0000035B BE00E0 mov si, TempPAL1 ; SourcePAL 531 0000035E BF00E4 mov di, TempPAL2 ; DestPAL 532 00000361 E8540A call M_FadeOUT 533 00000364 FA cli 534 00000365 B003 mov al, 03h 535 00000367 B425 mov ah, 25h 536 00000369 BAF0F0 mov dx, 0F0F0h 537 0000036C 8EDA mov ds, dx 538 0000036E CD21 int 21h ; Disable Breakpoints 539 00000370 B001 mov al, 01h 540 00000372 B425 mov ah, 25h 541 00000374 BAF0F0 mov dx, 0F0F0h 542 00000377 8EDA mov ds, dx 543 00000379 CD21 int 21h ; Disable Single Step 544 0000037B 8CC8 mov ax, cs 545 0000037D 8ED8 mov ds, ax 546 0000037F 8EC0 mov es, ax 547 00000381 FB sti 548 ;M_KeyPressed 549 00000382 B401 mov ah, 01h 550 00000384 CD16 int 16h 551 00000386 0F852809 jnz @KeyDownOut 552 553 Add_Items Equ LastBopAdd - BopAddTab 554 BopPts Equ Add_Items 555 TimeOut Equ 8192 556 TimeOut2 Equ 150 557 MaxWidth Equ 320 558 CenterX Equ 160 559 CenterY Equ 100 560 MaxBops Equ 350 561 RadiusX Equ 144 562 RadiusY Equ 176 563 PhInc1 Equ 2 564 PhInc2 Equ 3 565 566 0000038A B013 mov al, 13h 567 0000038C B400 mov ah, 00h 568 0000038E CD10 int 10h 569 570 00000390 B92000 mov cx, 20h 571 @wv4: 572 00000393 E8030A call M_WaitVRT_DX 573 00000396 E2FB loop @wv4 574 575 00000398 B94002 mov cx, Add_Items 576 0000039B BE[BB23] mov si, LastBopAdd - 1 577 0000039E BF[FA25] mov di, LastBopAdd + Add_Items - 2 578 000003A1 31C0 xor ax, ax 579 000003A3 FD std 580 @Expand0: 581 000003A4 AC lodsb 582 000003A5 AB stosw 583 000003A6 E2FC loop @Expand0 584 000003A8 FC cld 585 586 000003A9 BA2001 mov dx, Add_Items/2 587 000003AC BE[6521] mov si, BopADDLengths - 1 588 000003AF BF[5C29] mov di, LastBopAdd + Add_Items + 3*Add_Items/2 589 000003B2 B8000F mov ax, 12*320 590 @Expand1: 591 000003B5 46 inc si 592 000003B6 81EF6003 sub di, 3*Add_Items/2 593 000003BA 89FD mov bp, di 594 000003BC 8A0C mov cl, [si] 595 000003BE F7D8 neg ax 596 000003C0 29C8 sub ax, cx 597 @Expand2: 598 000003C2 40 inc ax 599 000003C3 AB stosw 600 000003C4 E2FC loop @Expand2 601 000003C6 01D5 add bp, dx 602 000003C8 89EF mov di, bp 603 000003CA 8A0C mov cl, [si] 604 000003CC 01C8 add ax, cx 605 @Expand3: 606 000003CE AB stosw 607 000003CF 48 dec ax 608 000003D0 E2FC loop @Expand3 609 000003D2 01D5 add bp, dx 610 000003D4 89EF mov di, bp 611 000003D6 8A0C mov cl, [si] 612 000003D8 054001 add ax, 320 613 000003DB F7D8 neg ax 614 000003DD 29C8 sub ax, cx 615 @Expand4: 616 000003DF 40 inc ax 617 000003E0 AB stosw 618 000003E1 E2FC loop @Expand4 619 000003E3 01D5 add bp, dx 620 000003E5 89EF mov di, bp 621 000003E7 8A0C mov cl, [si] 622 000003E9 01C8 add ax, cx 623 @Expand5: 624 000003EB AB stosw 625 000003EC 48 dec ax 626 000003ED E2FC loop @Expand5 627 000003EF 75C4 jnz short @Expand1 628 000003F1 B800A0 mov ax, 0A000h 629 000003F4 8EC0 mov es, ax 630 631 ;M_ShadeBOBs TimeOut 632 000003F6 E82A0A call M_ShadeBOBs_1 633 ;M_KeyPressed 634 000003F9 B401 mov ah, 01h 635 000003FB CD16 int 16h 636 000003FD 0F85B108 jnz @KeyDownOut 637 00000401 B91E00 mov cx, 30 638 @FlashBOBs: 639 00000404 51 push cx 640 ;M_ShadeBOBs TimeOut2 641 00000405 E8160A call M_ShadeBOBs_2 642 00000408 59 pop cx 643 00000409 E2F9 loop @FlashBOBs 644 0000040B EB6B jmp short @BOBs_Out 645 ShadesLoop: 646 0000040D BE1811 mov si, 2*2188 647 00000410 A1[6221] mov ax, [Phase1] 648 00000413 83C002 add ax, PhInc1 649 00000416 99 cwd 650 00000417 F7F6 div si 651 00000419 8916[6221] mov [Phase1], dx 652 0000041D A1[6021] mov ax, [Angle] 653 00000420 83C020 add ax, 20h 654 00000423 A3[6021] mov [Angle], ax 655 00000426 F7E2 mul dx 656 00000428 30FF xor bh, bh 657 0000042A 88D3 mov bl, dl 658 0000042C 8AA7[501D] mov ah, [bx+CosTable] 659 00000430 B090 mov al, RadiusX 660 00000432 F6EC imul ah 661 00000434 C1F806 sar ax, 6 662 00000437 05A000 add ax, CenterX 663 0000043A 89C7 mov di, ax 664 0000043C A1[6421] mov ax, [Phase2] 665 0000043F 83C003 add ax, PhInc2 666 00000442 99 cwd 667 00000443 F7F6 div si 668 00000445 8916[6421] mov [Phase2], dx 669 00000449 A1[6021] mov ax, [Angle] 670 0000044C F7E2 mul dx 671 0000044E 88D3 mov bl, dl 672 00000450 8AA7[101D] mov ah, [bx+SinTable] 673 00000454 B0B0 mov al, RadiusY 674 00000456 F6EC imul ah 675 00000458 C1F806 sar ax, 6 676 0000045B 83C064 add ax, CenterY 677 0000045E 69D04001 imul dx, ax, MaxWidth 678 00000462 E8390A call PutBop 679 00000465 FF0E[521E] dec word [Frames] 680 00000469 75A2 jne short ShadesLoop 681 0000046B BA5E01 mov dx, MaxBops 682 @HideBOBsLoop: 683 0000046E BFFFFF mov di, -1 684 00000471 E8620A call HideBop 685 00000474 4A dec dx 686 00000475 75F7 jnz short @HideBOBsLoop 687 00000477 C3 retn 688 @BOBs_Out: 689 00000478 FA cli 690 00000479 B003 mov al, 03h 691 0000047B B425 mov ah, 25h 692 0000047D BAF0F0 mov dx, 0F0F0h 693 00000480 8EDA mov ds, dx 694 00000482 CD21 int 21h ; Disable Breakpoints 695 00000484 B001 mov al, 01h 696 00000486 B425 mov ah, 25h 697 00000488 BAF0F0 mov dx, 0F0F0h 698 0000048B 8EDA mov ds, dx 699 0000048D CD21 int 21h ; Disable Single Step 700 0000048F 8CC8 mov ax, cs 701 00000491 8ED8 mov ds, ax 702 00000493 8EC0 mov es, ax 703 00000495 FB sti 704 00000496 9BDBE3 finit ; Make Sin and Cos Tables 705 00000499 31F6 xor si, si 706 ;mov ax, cs 707 ;mov ds, ax 708 ;mov es, ax 709 0000049B 050020 add ax, 2000h 710 0000049E 8EE0 mov fs, ax 711 000004A0 B90105 mov cx, 2*5*128+1 712 000004A3 D906[901E] fld dword [Mult1] 713 000004A7 DF06[0C1D] fild word [Temp1] 714 000004AB D9EB fldpi 715 000004AD DF06[0A1D] fild word [Temp0] 716 000004B1 DEF9 fdivp st1, st0 717 @Make2SINCOS: 718 000004B3 DF06[0E1D] fild word [Temp2] 719 000004B7 D8C9 fmul st0, st1 720 000004B9 D9FB fsincos 721 000004BB D8CC fmul st0, st4 722 000004BD DF9C00D0 fistp word [si+Sin2T] 723 000004C1 D8CA fmul st0, st2 724 000004C3 DF9C00E0 fistp word [si+SinT] 725 000004C7 FF06[0E1D] inc word [Temp2] 726 000004CB 46 inc si 727 000004CC 46 inc si 728 000004CD E2E4 loop @Make2SINCOS 729 000004CF 9B wait 730 000004D0 31C0 xor ax, ax 731 000004D2 B9C800 mov cx, 200 732 000004D5 BF00CE mov di, Row256T 733 @MakeRow256: 734 000004D8 AB stosw 735 000004D9 050001 add ax, 256 736 000004DC E2FA loop @MakeRow256 737 000004DE B703 mov bh, 03h 738 000004E0 B030 mov al, 30h 739 000004E2 B411 mov ah, 11h 740 000004E4 CD10 int 10h 741 000004E6 892E0601 mov [CharP+0], bp 742 000004EA 8C060801 mov [CharP+2], es 743 000004EE 8CCA mov dx, cs 744 000004F0 8EC2 mov es, dx 745 ;M_KeyPressed 746 000004F2 B401 mov ah, 01h 747 000004F4 CD16 int 16h 748 000004F6 0F85B807 jnz @KeyDownOut 749 000004FA E89C08 call M_WaitVRT_DX 750 000004FD B013 mov al, 13h 751 000004FF B400 mov ah, 00h 752 00000501 CD10 int 10h 753 00000503 BA00DC mov dx, Temp_PAL2 754 00000506 31DB xor bx, bx 755 00000508 B90001 mov cx, 256 756 0000050B B017 mov al, 17h 757 0000050D B410 mov ah, 10h 758 0000050F CD10 int 10h 759 00000511 FA cli 760 00000512 BE60DC mov si, Temp_PAL2+3*20h 761 00000515 BF00DF mov di, Temp_PAL3 762 00000518 B93000 mov cx, 3*10h 763 0000051B F3A5 rep movsw 764 0000051D E88708 call M_ClearPAL 765 00000520 FB sti 766 00000521 0FA0 push fs 767 00000523 07 pop es 768 00000524 31FF xor di, di 769 00000526 89F8 mov ax, di 770 00000528 B90020 mov cx, 32*100h 771 0000052B F3AB rep stosw 772 0000052D 8C06[0A1D] mov [TextSeg], es 773 00000531 C7060A01090F mov word [CharColor], 0F09h 774 00000537 BF0804 mov di, 4*100h+8 775 0000053A BE[041C] mov si, Gfx1Text 776 0000053D E8AC0C call GfxWrite 777 00000540 0FA0 push fs 778 00000542 07 pop es 779 00000543 BE0000 mov si, 0*100h 780 00000546 BF0020 mov di, 4*8*100h 781 00000549 B90070 mov cx, 7*4*8*128 782 0000054C F3 rep 783 0000054D 26 db 26h ; ES segment override prefix 784 0000054E A5 movsw 785 0000054F C7061A01007A mov word [x], 7A00h 786 00000555 C7061C018008 mov word [y], 2176 787 0000055B 31DB xor bx, bx 788 0000055D BF2800 mov di, 40 789 00000560 E8910B call RotateMap2 790 00000563 0E push cs 791 00000564 07 pop es 792 ;M_FadeIN Temp_PAL2, Temp_PAL1 793 00000565 BE00DC mov si, Temp_PAL2 ; SourcePAL 794 00000568 BF00EC mov di, Temp_PAL1 ; DestPAL 795 0000056B E87D08 call M_FadeIN 796 0000056E 31DB xor bx, bx 797 00000570 BF2800 mov di, 40 798 @Rotate1Map: 799 00000573 53 push bx 800 00000574 57 push di 801 00000575 E87C0B call RotateMap2 802 00000578 E81E08 call M_WaitVRT_DX 803 0000057B 5F pop di 804 0000057C 5B pop bx 805 0000057D 83061A0110 add word [x], 16 806 00000582 83061C0110 add word [y], 16 807 00000587 83C730 add di, 30h 808 0000058A 83EB04 sub bx, 4 809 0000058D 81FFD20A cmp di, 2*1385 810 00000591 72E0 jb short @Rotate1Map 811 812 00000593 0E push cs 813 00000594 07 pop es 814 ;M_KeyPressed 815 00000595 B401 mov ah, 01h 816 00000597 CD16 int 16h 817 00000599 0F851507 jnz @KeyDownOut 818 0000059D C7060C0184EA mov word [XMin], -5500 819 000005A3 C7060E010000 mov word [YMax], 0 820 000005A9 C70618010002 mov word [NMax], 512 ;256 821 000005AF C70622013408 mov word [cr], 2100 822 000005B5 C70624010000 mov word [ci], 0 823 000005BB C70610010A00 mov word [XStep], 10 824 000005C1 C70612010A00 mov word [YStep], 10 825 000005C7 0FA0 push fs 826 000005C9 07 pop es 827 000005CA E8340A call CalcFractal 828 000005CD C7060E010005 mov word [YMax], 1280+0 829 000005D3 8CC0 mov ax, es 830 000005D5 80C408 add ah, 08h 831 000005D8 8EC0 mov es, ax 832 000005DA E8240A call CalcFractal 833 000005DD 8CC8 mov ax, cs 834 000005DF 8EC0 mov es, ax 835 ;M_FadeOUT Temp_PAL2, Temp_PAL1 836 000005E1 BE00DC mov si, Temp_PAL2 ; SourcePAL 837 000005E4 BF00EC mov di, Temp_PAL1 ; DestPAL 838 000005E7 E8CE07 call M_FadeOUT 839 ;M_KeyPressed 840 000005EA B401 mov ah, 01h 841 000005EC CD16 int 16h 842 000005EE 0F85C006 jnz @KeyDownOut 843 000005F2 BE00E4 mov si, TempPAL2 844 000005F5 B90003 mov cx, 3*256 845 000005F8 E89E07 call M_WaitVRT_DX 846 000005FB BAC803 mov dx, 03C8h 847 000005FE B000 mov al, 00h 848 00000600 EE out dx, al 849 00000601 42 inc dx 850 00000602 F36E rep outsb 851 00000604 FB sti 852 00000605 E8B90B call RotatePAL20 853 00000608 C7061A010080 mov word [x], 32768 854 0000060E C7061C010000 mov word [y], 0 855 00000614 31DB xor bx, bx 856 00000616 BF0078 mov di, 7800h 857 @Rotate2Map: 858 00000619 53 push bx 859 0000061A 57 push di 860 0000061B E8D60A call RotateMap2 861 0000061E E87807 call M_WaitVRT_DX 862 00000621 5F pop di 863 00000622 5B pop bx 864 00000623 83C308 add bx, 8 865 00000626 81EF8000 sub di, 2*40h 866 0000062A 73ED jnc short @Rotate2Map 867 ;M_KeyPressed 868 0000062C B401 mov ah, 01h 869 0000062E CD16 int 16h 870 00000630 0F857E06 jnz @KeyDownOut 871 00000634 B90A00 mov cx, 10 872 @wv5: 873 00000637 E85F07 call M_WaitVRT_DX 874 0000063A E2FB loop @wv5 875 0000063C B9D803 mov cx, 984 876 0000063F BA6400 mov dx, 2*50 877 00000642 31DB xor bx, bx 878 00000644 BF0000 mov di, 0 879 @Rotate3Map: 880 00000647 60 pusha 881 00000648 E8A40A call RotateMap 882 0000064B E8730B call RotatePAL20 883 0000064E 61 popa 884 0000064F 832E1A0110 sub word [x], 16 885 00000654 832E1C0110 sub word [y], 16 886 00000659 01D7 add di, dx 887 0000065B 81FF0060 cmp di, 6000h 888 0000065F 7602 jna short @ZoomDIR 889 00000661 F7DA neg dx 890 @ZoomDIR: 891 00000663 83EB04 sub bx, 4 892 00000666 E2DF loop @Rotate3Map 893 ;M_FadeOUT Temp_PAL2, Temp_PAL1 894 00000668 BE00DC mov si, Temp_PAL2 ; SourcePAL 895 0000066B BF00EC mov di, Temp_PAL1 ; DestPAL 896 0000066E E84707 call M_FadeOUT 897 ;M_KeyPressed 898 00000671 B401 mov ah, 01h 899 00000673 CD16 int 16h 900 00000675 0F853906 jnz @KeyDownOut 901 ;M_WaitVRT_DX 902 00000679 E81D07 call M_WaitVRT_DX 903 0000067C B013 mov al, 13h 904 0000067E B400 mov ah, 00h 905 00000680 CD10 int 10h 906 00000682 0FA0 push fs 907 00000684 07 pop es 908 00000685 31FF xor di, di 909 00000687 89F8 mov ax, di 910 00000689 B90080 mov cx, 10000h/2 911 0000068C F3AB rep stosw 912 0000068E 8C06[0A1D] mov [TextSeg], es 913 00000692 C7060A01000C mov word [CharColor], 0C00h 914 00000698 BF5000 mov di, 80 915 0000069B BE[621C] mov si, Gfx2Text 916 0000069E E84B0B call GfxWrite 917 000006A1 C7061A010080 mov word [x], 8000h 918 000006A7 C7061C010004 mov word [y], 400h 919 000006AD BB0004 mov bx, 2*512 920 000006B0 BF0012 mov di, 1200h 921 @Rotate4Map: 922 000006B3 53 push bx 923 000006B4 57 push di 924 000006B5 E83C0A call RotateMap2 925 ;M_WaitVRT_DX 926 000006B8 E8DE06 call M_WaitVRT_DX 927 000006BB 5F pop di 928 000006BC 5B pop bx 929 000006BD 83EB08 sub bx, 2*4 930 000006C0 7902 jns short @BXOkay 931 000006C2 31DB xor bx, bx 932 @BXOkay: 933 000006C4 83EF18 sub di, 18h 934 000006C7 73EA jnc short @Rotate4Map 935 ;M_KeyPressed 936 000006C9 B401 mov ah, 01h 937 000006CB CD16 int 16h 938 000006CD 0F85E105 jnz @KeyDownOut 939 000006D1 0FA0 push fs 940 000006D3 07 pop es 941 000006D4 31FF xor di, di 942 000006D6 89F8 mov ax, di 943 000006D8 B90080 mov cx, 10000h/2 944 000006DB F3AB rep stosw 945 000006DD 8C06[0A1D] mov [TextSeg], es 946 000006E1 C7060A01000A mov word [CharColor], 0A00h 947 000006E7 BF7400 mov di, 116 948 000006EA BE[701C] mov si, Gfx3Text 949 000006ED E8FC0A call GfxWrite 950 000006F0 31DB xor bx, bx 951 000006F2 BF0000 mov di, 0 952 @Rotate5Map: 953 000006F5 53 push bx 954 000006F6 57 push di 955 000006F7 E8FA09 call RotateMap2 956 ;M_WaitVRT_DX 957 000006FA E89C06 call M_WaitVRT_DX 958 000006FD 5F pop di 959 000006FE 5B pop bx 960 000006FF 83C718 add di, 18h 961 00000702 81FF0012 cmp di, 1200h 962 00000706 76ED jbe short @Rotate5Map 963 ;M_FadeOUT Temp_PAL2, Temp_PAL1 964 00000708 BE00DC mov si, Temp_PAL2 ; SourcePAL 965 0000070B BF00EC mov di, Temp_PAL1 ; DestPAL 966 0000070E E8A706 call M_FadeOUT 967 ;M_KeyPressed 968 00000711 B401 mov ah, 01h 969 00000713 CD16 int 16h 970 00000715 0F859905 jnz @KeyDownOut 971 972 FreeSpace Equ W_Divider 973 _TempR32A Equ FreeSpace+00h 974 _TempR32B Equ FreeSpace+04h 975 _TempR32C Equ FreeSpace+08h 976 _TempReg Equ FreeSpace+0Ch 977 MountHeight Equ FreeSpace+10h 978 Map_X Equ FreeSpace+12h 979 Map_Y Equ FreeSpace+14h 980 RandomSeed Equ FreeSpace+16h 981 _TempR16A Equ FreeSpace+18h 982 _TempR16B Equ FreeSpace+1Ah 983 _TempR16C Equ FreeSpace+1Ch 984 Count_Loop Equ FreeSpace+1Eh 985 Table_A Equ 0200h 986 Table_B Equ 0400h 987 Table_C Equ 0600h 988 989 00000719 8CC8 mov ax, cs 990 0000071B 050010 add ax, 1000h 991 0000071E 8ED8 mov ds, ax 992 00000720 8EC0 mov es, ax 993 00000722 BF0000 mov di, Data_Seg ; 0 994 00000725 AB stosw 995 00000726 050010 add ax, 1000h 996 00000729 AB stosw 997 0000072A 050010 add ax, 1000h 998 0000072D AB stosw 999 0000072E 050010 add ax, 1000h 1000 00000731 AB stosw 1001 00000732 F9 stc 1002 00000733 6619C0 sbb eax, eax 1003 00000736 B93D00 mov cx, ((LastMake_-MapMakeTable)/2)+1 ; 3Dh 1004 @Decompress2: 1005 00000739 0305 add ax, [di] 1006 0000073B 40 inc ax 1007 0000073C AB stosw 1008 0000073D E2FA loop @Decompress2 1009 0000073F 31C0 xor ax, ax 1010 00000741 CD1A int 1Ah 1011 00000743 80E67F and dh, 7Fh 1012 ; mov dx, 7FFFh ; just guess why used in here... 1013 00000746 8916B400 mov [RandomSeed], dx 1014 0000074A B81300 mov ax, 0013h 1015 0000074D CD10 int 10h 1016 0000074F FA cli 1017 00000750 BAC803 mov dx, 03C8h 1018 00000753 30C0 xor al, al 1019 00000755 EE out dx, al 1020 00000756 42 inc dx 1021 00000757 B140 mov cl, 64 1022 @SetPal1: 1023 00000759 EE out dx, al 1024 0000075A EE out dx, al 1025 0000075B EE out dx, al 1026 0000075C FEC0 inc al 1027 0000075E E2F9 loop @SetPal1 1028 00000760 B140 mov cl, 64 1029 ;xor ah, ah 1030 @SetPal2: 1031 00000762 30C0 xor al, al 1032 00000764 EE out dx, al 1033 00000765 EE out dx, al 1034 00000766 88E0 mov al, ah 1035 00000768 EE out dx, al 1036 00000769 FEC4 inc ah 1037 0000076B E2F5 loop @SetPal2 1038 0000076D B140 mov cl, 64 1039 0000076F 31C0 xor ax, ax 1040 @SetPal3: 1041 00000771 EE out dx, al 1042 00000772 88E0 mov al, ah 1043 00000774 EE out dx, al 1044 00000775 30C0 xor al, al 1045 00000777 EE out dx, al 1046 00000778 FEC4 inc ah 1047 0000077A E2F5 loop @SetPal3 1048 0000077C B140 mov cl, 64 1049 @SetPal4: 1050 0000077E EE out dx, al 1051 0000077F EE out dx, al 1052 00000780 EE out dx, al 1053 00000781 E2FB loop @SetPal4 1054 00000783 FB sti 1055 00000784 BA00DC mov dx, Temp_PAL2 1056 00000787 31DB xor bx, bx 1057 00000789 B90001 mov cx, 256 1058 0000078C B017 mov al, 17h 1059 0000078E B410 mov ah, 10h 1060 00000790 CD10 int 10h 1061 00000792 FA cli 1062 00000793 E81106 call M_ClearPAL 1063 00000796 FB sti 1064 00000797 E88F00 call CalcSky 1065 0000079A C706BC000004 mov word [Count_Loop], 1024 1066 000007A0 C706B0000004 mov word [Map_X], 1024 1067 000007A6 C706B2000004 mov word [Map_Y], 1024 1068 000007AC E8F401 call UpdateView 1069 000007AF 8E060000 mov es, [Data_Seg] 1070 000007B3 E88502 call UpdateSky 1071 000007B6 E84103 call UpdateMap 1072 000007B9 E8DD05 call M_WaitVRT_DX 1073 000007BC 8E069C00 mov es, [VRAM_Seg] 1074 000007C0 BE0006 mov si, Table_C 1075 000007C3 BF2000 mov di, (320-256)/2 1076 000007C6 B3C8 mov bl, 200 1077 @Copy2VRAM: 1078 000007C8 B94000 mov cx, 256/4 1079 000007CB F366A5 rep movsd 1080 000007CE 83C740 add di, (320-256) 1081 000007D1 FECB dec bl 1082 000007D3 75F3 jnz short @Copy2VRAM 1083 000007D5 8E060000 mov es, [Data_Seg] 1084 ;M_FadeIN Temp_PAL2, Temp_PAL1 1085 000007D9 BE00DC mov si, Temp_PAL2 ; SourcePAL 1086 000007DC BF00EC mov di, Temp_PAL1 ; DestPAL 1087 000007DF E80906 call M_FadeIN 1088 000007E2 B9FA00 mov cx, 250 1089 @wv6: 1090 000007E5 E8B105 call M_WaitVRT_DX 1091 000007E8 E2FB loop @wv6 1092 @DrawAgain: 1093 000007EA E8B601 call UpdateView 1094 000007ED 8E060000 mov es, [Data_Seg] 1095 000007F1 E84702 call UpdateSky 1096 000007F4 E80303 call UpdateMap 1097 000007F7 E89F05 call M_WaitVRT_DX 1098 000007FA 8E069C00 mov es, [VRAM_Seg] 1099 000007FE BE0006 mov si, Table_C 1100 00000801 BF2000 mov di, (320-256)/2 1101 00000804 B3C8 mov bl, 200 1102 @CopyToVRAM: 1103 00000806 B94000 mov cx, 256/4 1104 00000809 F366A5 rep movsd 1105 0000080C 83C740 add di, (320-256) 1106 0000080F FECB dec bl 1107 00000811 75F3 jnz short @CopyToVRAM 1108 00000813 FF0EBC00 dec word [Count_Loop] 1109 00000817 75D1 jnz short @DrawAgain 1110 00000819 8E060000 mov es, [Data_Seg] 1111 ;M_FadeOUT Temp_PAL2, Temp_PAL1 1112 0000081D BE00DC mov si, Temp_PAL2 ; SourcePAL 1113 00000820 BF00EC mov di, Temp_PAL1 ; DestPAL 1114 00000823 E89205 call M_FadeOUT 1115 00000826 E91104 jmp @TheEND 1116 CalcSky: ; sub_244E 1117 00000829 31FF xor di, di 1118 0000082B 8E060600 mov es, [Sky_Seg] 1119 0000082F 8E260400 mov fs, [MapB_Seg] 1120 00000833 F9 stc 1121 00000834 6619C0 sbb eax, eax 1122 00000837 B90040 mov cx, 4000h 1123 0000083A F366AB rep stosd 1124 0000083D 8B36B400 mov si, [RandomSeed] 1125 1126 00000841 E8750E call M_MakeMUL 1127 00000844 8916B400 mov [RandomSeed], dx 1128 00000848 31DB xor bx, bx 1129 0000084A B90001 mov cx, 0100h 1130 0000084D 26C6068000FE mov byte [es:0080h], -2 1131 00000853 26C6060080FE mov byte [es:8000h], -2 1132 00000859 26880E0000 mov byte [es:0000h], cl 1133 0000085E 26880E8080 mov byte [es:8080h], cl 1134 00000863 E8AB00 call CalcFrac 1135 00000866 31FF xor di, di 1136 CalcSky1: 1137 00000868 B401 mov ah, 01h 1138 0000086A 268A05 mov al, [es:di] 1139 0000086D C1E802 shr ax, 2 1140 00000870 AA stosb 1141 00000871 09FF or di, di 1142 00000873 75F3 jnz short CalcSky1 1143 ; CalcMap: 1144 00000875 8E060200 mov es, [MapA_Seg] 1145 00000879 8E260400 mov fs, [MapB_Seg] 1146 0000087D F9 stc 1147 0000087E 6619C0 sbb eax, eax 1148 00000881 B90040 mov cx, 4000h 1149 00000884 F366AB rep stosd 1150 00000887 8B36B400 mov si, [RandomSeed] 1151 0000088B E82B0E call M_MakeMUL 1152 0000088E 8916B400 mov [RandomSeed], dx 1153 00000892 31DB xor bx, bx 1154 00000894 B90001 mov cx, 0100h 1155 00000897 B028 mov al, 40 1156 00000899 AA stosb 1157 0000089A E87400 call CalcFrac 1158 0000089D 31FF xor di, di 1159 CalcMap1: 1160 0000089F 31C0 xor ax, ax 1161 000008A1 BE9400 mov si, MapCoord_ 1162 000008A4 8B1C mov bx, [si] 1163 000008A6 260201 add al, [es:bx+di] 1164 000008A9 10EC adc ah, ch 1165 000008AB 46 inc si 1166 000008AC 46 inc si 1167 000008AD 8B1C mov bx, [si] 1168 000008AF 260201 add al, [es:bx+di] 1169 000008B2 10EC adc ah, ch 1170 000008B4 46 inc si 1171 000008B5 46 inc si 1172 000008B6 8B1C mov bx, [si] 1173 000008B8 260201 add al, [es:bx+di] 1174 000008BB 10EC adc ah, ch 1175 000008BD 46 inc si 1176 000008BE 46 inc si 1177 000008BF 8B1C mov bx, [si] 1178 000008C1 260201 add al, [es:bx+di] 1179 000008C4 10EC adc ah, ch 1180 000008C6 C1E802 shr ax, 2 1181 000008C9 AA stosb 1182 000008CA 09FF or di, di 1183 000008CC 75D1 jnz short CalcMap1 1184 000008CE 31F6 xor si,si 1185 CalcMap2: 1186 000008D0 268A04 mov al, [es:si] 1187 000008D3 262A4403 sub al, [es:si+3] 1188 000008D7 18E4 sbb ah, ah 1189 000008D9 83C020 add ax, 20h 1190 000008DC 7902 jns short CalcMap3 1191 000008DE 31C0 xor ax, ax 1192 CalcMap3: 1193 000008E0 3C3F cmp al, 3Fh 1194 000008E2 7602 jbe short CalcMap4 1195 000008E4 B03F mov al, 3Fh 1196 CalcMap4: 1197 000008E6 648804 mov [fs:si],al 1198 000008E9 46 inc si 1199 000008EA 75E4 jnz short CalcMap2 1200 CalcMap5: 1201 000008EC 31C0 xor ax, ax 1202 000008EE 260205 add al, [es:di] 1203 000008F1 10EC adc ah, ch 1204 000008F3 2602850001 add al, [es:di+0100h] 1205 000008F8 10EC adc ah, ch 1206 000008FA 47 inc di 1207 000008FB 260205 add al, [es:di] 1208 000008FE 10EC adc ah, ch 1209 00000900 2602850001 add al, [es:di+0100h] 1210 00000905 10EC adc ah, ch 1211 00000907 4F dec di 1212 00000908 C1E802 shr ax, 2 1213 0000090B AA stosb 1214 0000090C 09FF or di, di 1215 0000090E 75DC jnz short CalcMap5 1216 OutCalcFrac: 1217 00000910 C3 retn 1218 1219 CalcFrac: ; sub_2552 1220 00000911 D1E9 shr cx, 1 1221 00000913 74FB jz short OutCalcFrac 1222 00000915 31C0 xor ax, ax 1223 00000917 260207 add al, [es:bx] 1224 0000091A 10EC adc ah, ch 1225 0000091C 00CB add bl, cl 1226 0000091E 89DF mov di, bx 1227 00000920 00CB add bl, cl 1228 ;M_CalcSquare 1229 00000922 E8C90D call M_CalcSquare 1230 00000925 31C0 xor ax, ax 1231 00000927 260207 add al, [es:bx] 1232 0000092A 10EC adc ah, ch 1233 0000092C 00CF add bh, cl 1234 0000092E 89DF mov di, bx 1235 00000930 00CF add bh, cl 1236 ;M_CalcSquare 1237 00000932 E8B90D call M_CalcSquare 1238 00000935 31C0 xor ax, ax 1239 00000937 260207 add al, [es:bx] 1240 0000093A 10EC adc ah, ch 1241 0000093C 28CB sub bl, cl 1242 0000093E 89DF mov di, bx 1243 00000940 28CB sub bl, cl 1244 ;M_CalcSquare 1245 00000942 E8A90D call M_CalcSquare 1246 00000945 31C0 xor ax, ax 1247 00000947 260207 add al, [es:bx] 1248 0000094A 10EC adc ah, ch 1249 0000094C 28CF sub bh, cl 1250 0000094E 89DF mov di, bx 1251 00000950 28CF sub bh, cl 1252 ;M_CalcSquare 1253 00000952 E8990D call M_CalcSquare 1254 00000955 31C0 xor ax, ax 1255 00000957 260207 add al, [es:bx] 1256 0000095A 10EC adc ah, ch 1257 0000095C 00CB add bl, cl 1258 0000095E 00CB add bl, cl 1259 00000960 260207 add al, [es:bx] 1260 00000963 10EC adc ah, ch 1261 00000965 00CF add bh, cl 1262 00000967 00CF add bh, cl 1263 00000969 260207 add al, [es:bx] 1264 0000096C 10EC adc ah, ch 1265 0000096E 28CB sub bl, cl 1266 00000970 28CB sub bl, cl 1267 00000972 260207 add al, [es:bx] 1268 00000975 10EC adc ah, ch 1269 00000977 C1E802 shr ax, 2 1270 ;M_Calc2Square 1271 0000097A E84E0D call M_Calc2Square 1272 0000097D 00CB add bl, cl 1273 0000097F 28CF sub bh, cl 1274 00000981 268807 mov [es:bx], al 1275 00000984 53 push bx 1276 00000985 51 push cx 1277 00000986 E888FF call CalcFrac 1278 00000989 59 pop cx 1279 0000098A 5B pop bx 1280 0000098B 28CB sub bl, cl 1281 0000098D 53 push bx 1282 0000098E 51 push cx 1283 0000098F E87FFF call CalcFrac 1284 00000992 59 pop cx 1285 00000993 5B pop bx 1286 00000994 28CF sub bh, cl 1287 00000996 53 push bx 1288 00000997 51 push cx 1289 00000998 E876FF call CalcFrac 1290 0000099B 59 pop cx 1291 0000099C 5B pop bx 1292 0000099D 00CB add bl, cl 1293 0000099F E86FFF call CalcFrac 1294 000009A2 C3 retn 1295 UpdateView: ; sub_26FD 1296 000009A3 8B0EB000 mov cx, [Map_X] 1297 000009A7 8B16B200 mov dx, [Map_Y] 1298 000009AB 8B1EBC00 mov bx, [Count_Loop] 1299 000009AF 4B dec bx 1300 000009B0 C1EB08 shr bx, 8 1301 000009B3 D1E3 shl bx, 1 1302 000009B5 038F8400 add cx, [bx+AddCXTable] 1303 000009B9 03978C00 add dx, [bx+AddDXTable] 1304 000009BD 890EB000 mov [Map_X], cx 1305 000009C1 8916B200 mov [Map_Y], dx 1306 ; Calculate New Points 1307 000009C5 8E060200 mov es, [MapA_Seg] 1308 000009C9 C1C904 ror cx, 4 1309 000009CC C1CA04 ror dx, 4 1310 000009CF 88CB mov bl, cl 1311 000009D1 88D7 mov bh, dl 1312 000009D3 C1E90C shr cx, 0Ch 1313 000009D6 C1EA0C shr dx, 0Ch 1314 000009D9 52 push dx 1315 000009DA FEC3 inc bl 1316 000009DC 31C0 xor ax, ax 1317 000009DE 260207 add al, [es:bx] 1318 000009E1 FECB dec bl 1319 000009E3 262A07 sub al, [es:bx] 1320 000009E6 18E4 sbb ah, ah 1321 000009E8 F7E9 imul cx 1322 000009EA 89C2 mov dx, ax 1323 000009EC 31C0 xor ax, ax 1324 000009EE 260207 add al, [es:bx] 1325 000009F1 C1E004 shl ax, 4 1326 000009F4 01D0 add ax, dx 1327 000009F6 96 xchg si, ax 1328 000009F7 FEC7 inc bh 1329 000009F9 FEC3 inc bl 1330 000009FB 31C0 xor ax, ax 1331 000009FD 260207 add al, [es:bx] 1332 00000A00 FECB dec bl 1333 00000A02 262A07 sub al, [es:bx] 1334 00000A05 18E4 sbb ah, ah 1335 00000A07 F7E9 imul cx 1336 00000A09 89C2 mov dx, ax 1337 00000A0B 31C0 xor ax, ax 1338 00000A0D 260207 add al, [es:bx] 1339 00000A10 C1E004 shl ax, 4 1340 00000A13 01D0 add ax, dx 1341 00000A15 5A pop dx 1342 00000A16 29F0 sub ax, si 1343 00000A18 F7EA imul dx 1344 00000A1A C1E604 shl si, 4 1345 00000A1D 01F0 add ax, si 1346 00000A1F 80C41A add ah, 1Ah 1347 00000A22 7303 jnc short CalcNew1 1348 00000A24 B8FFFF mov ax, 0FFFFh 1349 CalcNew1: 1350 00000A27 A3AE00 mov [MountHeight], ax 1351 00000A2A B401 mov ah, 01h 1352 00000A2C CD16 int 16h 1353 00000A2E 740A jz short CalcNew2 1354 00000A30 C706BC000100 mov word [Count_Loop], 1 1355 00000A36 31C0 xor ax, ax 1356 00000A38 CD16 int 16h 1357 CalcNew2: 1358 00000A3A C3 retn 1359 UpdateSky: ; sub_2795 1360 00000A3B BEAE00 mov si, MountHeight 1361 00000A3E BF9E00 mov di, _TempR32A 1362 00000A41 6631C0 xor eax, eax 1363 00000A44 AD lodsw 1364 00000A45 F7D8 neg ax 1365 00000A47 C1E803 shr ax, 3 1366 00000A4A 80C440 add ah, 40h 1367 00000A4D 66C1E004 shl eax, 4 1368 00000A51 66C1E009 shl eax, 9 1369 00000A55 66AB stosd 1370 00000A57 6631C0 xor eax, eax 1371 00000A5A AD lodsw 1372 00000A5B 66C1E009 shl eax, 9 1373 00000A5F 66AB stosd 1374 00000A61 6631C0 xor eax, eax 1375 00000A64 AD lodsw 1376 00000A65 66C1E009 shl eax, 9 1377 00000A69 66AB stosd 1378 00000A6B 8E2E0600 mov gs, [Sky_Seg] 1379 00000A6F 668D4CAF lea ecx, [si-(MountHeight-Data_Seg)-6+63h] 1380 00000A73 BF0006 mov di, Table_C 1381 @UpdateSky1: 1382 00000A76 BE9E00 mov si, _TempR32A 1383 00000A79 668B04 mov eax, [si] 1384 00000A7C 6631D2 xor edx, edx 1385 00000A7F 66F7F1 div ecx 1386 00000A82 668B5C04 mov ebx, [si+4] 1387 00000A86 668B7408 mov esi, [si+8] 1388 00000A8A 6629C6 sub esi, eax 1389 00000A8D 6601C3 add ebx, eax 1390 00000A90 66C1E807 shr eax, 7 1391 00000A94 89F5 mov bp, si 1392 00000A96 66C1EE10 shr esi, 10h 1393 00000A9A 81E6FF00 and si, 0FFh 1394 00000A9E 66C1EB08 shr ebx, 8 1395 00000AA2 30DB xor bl, bl 1396 00000AA4 09DE or si, bx 1397 00000AA6 6689C3 mov ebx, eax 1398 00000AA9 66C1EB10 shr ebx, 10h 1399 00000AAD 4B dec bx 1400 1401 00000AAE 51 push cx 1402 00000AAF B9FF00 mov cx, 255 1403 _UpdateSky0: 1404 00000AB2 65 db 65h ; GS segment override prefix 1405 00000AB3 A4 movsb 1406 00000AB4 01C5 add bp, ax 1407 00000AB6 11DE adc si, bx 1408 00000AB8 E2F8 loop _UpdateSky0 1409 00000ABA 59 pop cx 1410 1411 00000ABB 65 db 65h ; GS segment override prefix 1412 00000ABC A4 movsb 1413 00000ABD 49 dec cx 1414 00000ABE 75B6 jnz short @UpdateSky1 1415 00000AC0 66B850505050 mov eax, 50505050h 1416 00000AC6 B94000 mov cx, 40h 1417 00000AC9 F366AB rep stosd 1418 00000ACC 8B36AE00 mov si, [MountHeight] 1419 00000AD0 BB0400 mov bx, 04 1420 @UpdateSky2: 1421 00000AD3 89F0 mov ax, si 1422 00000AD5 31D2 xor dx, dx 1423 00000AD7 F7F3 div bx 1424 00000AD9 C1E807 shr ax, 7 1425 00000ADC 3C3F cmp al, 3Fh 1426 00000ADE 7602 jbe short @UpdateSky3 1427 00000AE0 B03F mov al, 3Fh 1428 @UpdateSky3: 1429 00000AE2 0C80 or al, 80h 1430 00000AE4 88C4 mov ah, al 1431 00000AE6 89C2 mov dx, ax 1432 00000AE8 66C1E010 shl eax, 10h 1433 00000AEC 92 xchg ax, dx 1434 00000AED B94000 mov cx, 40h 1435 00000AF0 F366AB rep stosd 1436 00000AF3 43 inc bx 1437 00000AF4 83FB2C cmp bx, 2Ch 1438 00000AF7 75DA jne short @UpdateSky2 1439 00000AF9 C3 retn 1440 UpdateMap: ; sub_2E43 1441 00000AFA 8E260200 mov fs, [MapA_Seg] 1442 00000AFE 8E2E0400 mov gs, [MapB_Seg] 1443 00000B02 66B8007D007D mov eax, 7D007D00h 1444 00000B08 BF0002 mov di, Table_A 1445 00000B0B B94000 mov cx, 40h 1446 00000B0E F366AB rep stosd 1447 00000B11 B94000 mov cx, 40h 1448 00000B14 F366AB rep stosd 1449 00000B17 6631C0 xor eax, eax 1450 00000B1A BF0004 mov di, Table_B 1451 00000B1D B94000 mov cx, 40h 1452 00000B20 F366AB rep stosd 1453 00000B23 B94000 mov cx, 40h 1454 00000B26 F366AB rep stosd 1455 00000B29 C706B6007800 mov word [_TempR16A], 78h 1456 @UpdateMap1: 1457 00000B2F 8B36B600 mov si, [_TempR16A] 1458 00000B33 8B7408 mov si, [si+MapMakeTable] 1459 00000B36 C1E604 shl si, 4 1460 00000B39 A1B200 mov ax, [Map_Y] 1461 00000B3C 83E00F and ax, 0Fh 1462 00000B3F 340F xor al, 0Fh 1463 00000B41 01C6 add si, ax 1464 00000B43 A1AE00 mov ax, [MountHeight] 1465 00000B46 31D2 xor dx, dx 1466 00000B48 F7F6 div si 1467 00000B4A 83C064 add ax, 64h 1468 00000B4D A3B800 mov [_TempR16B], ax 1469 00000B50 668D04 lea eax, [si] 1470 00000B53 66C1E006 shl eax, 6 1471 00000B57 66A3AA00 mov [_TempReg], eax 1472 00000B5B 833EB60002 cmp word [_TempR16A], 2 1473 00000B60 750E jne short @UpdateMap2 1474 00000B62 C706B800007D mov word [_TempR16B], 7D00h 1475 00000B68 C706BA000000 mov word [_TempR16C], 0000h 1476 00000B6E EB0A jmp short @UpdateMap3 1477 @UpdateMap2: 1478 00000B70 31C0 xor ax, ax 1479 00000B72 BA0100 mov dx, 1 1480 00000B75 F7F6 div si 1481 00000B77 A3BA00 mov [_TempR16C], ax 1482 @UpdateMap3: 1483 00000B7A 6631C9 xor ecx, ecx 1484 00000B7D 8B0EB000 mov cx, [Map_X] 1485 00000B81 66C1E10C shl ecx, 0Ch 1486 00000B85 66A1AA00 mov eax, [_TempReg] 1487 00000B89 66C1E007 shl eax, 7 1488 00000B8D 6629C1 sub ecx, eax 1489 00000B90 A1B200 mov ax, [Map_Y] 1490 00000B93 C1E004 shl ax, 4 1491 00000B96 6689CB mov ebx, ecx 1492 00000B99 66C1EB10 shr ebx, 10h 1493 00000B9D 88E7 mov bh, ah 1494 00000B9F 89F0 mov ax, si 1495 00000BA1 C1E004 shl ax, 4 1496 00000BA4 00E7 add bh, ah 1497 00000BA6 BEFE01 mov si, 1FEh 1498 00000BA9 C706A2000006 mov word [_TempR32B], Table_C 1499 00000BAF D1E9 shr cx, 1 1500 @UpdateMap4: 1501 00000BB1 D1E1 shl cx, 1 1502 00000BB3 030EAA00 add cx, word [_TempReg] 1503 00000BB7 121EAC00 adc bl, byte [_TempReg+2] 1504 00000BBB D1E9 shr cx, 1 1505 00000BBD 648A4701 mov al, [fs:bx+1] 1506 00000BC1 642A07 sub al, [fs:bx] 1507 00000BC4 18E4 sbb ah, ah 1508 00000BC6 F7E9 imul cx 1509 00000BC8 0FACD007 shrd ax, dx, 7 1510 00000BCC 640227 add ah, [fs:bx] 1511 00000BCF F726BA00 mul word [_TempR16C] 1512 00000BD3 8B3EB800 mov di, [_TempR16B] 1513 00000BD7 29D7 sub di, dx 1514 00000BD9 7903 jns short @UpdateMap5 1515 00000BDB BFFFFF mov di, 0FFFFh 1516 @UpdateMap5: 1517 00000BDE 81FFC800 cmp di, 0C8h 1518 00000BE2 7C03 jl short @UpdateMap6 1519 00000BE4 BFC700 mov di, 0C7h 1520 @UpdateMap6: 1521 00000BE7 658A4701 mov al, [gs:bx+1] 1522 00000BEB 652A07 sub al, [gs:bx] 1523 00000BEE F6ED imul ch 1524 00000BF0 D1E0 shl ax, 1 1525 00000BF2 650227 add ah, [gs:bx] 1526 00000BF5 89C2 mov dx, ax 1527 00000BF7 87840004 xchg ax, [si+Table_B] 1528 00000BFB 89FD mov bp, di 1529 00000BFD 87AC0002 xchg bp, [si+Table_A] 1530 00000C01 29FD sub bp, di 1531 00000C03 7923 jns short @UpdateMap7 1532 00000C05 C1E708 shl di, 8 1533 00000C08 033EA200 add di, word [_TempR32B] 1534 00000C0C 50 push ax 1535 00000C0D 29D0 sub ax, dx 1536 00000C0F 99 cwd 1537 00000C10 F7FD idiv bp 1538 00000C12 5A pop dx 1539 00000C13 53 push bx 1540 00000C14 8D5E01 lea bx, [bp+1] 1541 00000C17 D1E5 shl bp, 1 1542 00000C19 C1E308 shl bx, 8 1543 00000C1C 678D6C6D00 lea bp, [ebp+ebp*2+0] 1544 00000C21 81C5[BC16] add bp, @UpdateMap8+06h 1545 00000C25 FFD5 call bp 1546 00000C27 5B pop bx 1547 @UpdateMap7: 1548 00000C28 FF06A200 inc word [_TempR32B] 1549 00000C2C 4E dec si 1550 00000C2D 4E dec si 1551 00000C2E 7981 jns short @UpdateMap4 1552 00000C30 832EB60002 sub word [_TempR16A], 2 1553 00000C35 0F85F6FE jnz @UpdateMap1 1554 00000C39 C3 retn 1555 1556 @TheEND: 1557 ;M_KeyPressed 1558 00000C3A B401 mov ah, 01h 1559 00000C3C CD16 int 16h 1560 00000C3E 7572 jnz short @KeyDownOut 1561 00000C40 8CC8 mov ax, cs 1562 00000C42 8ED8 mov ds, ax 1563 00000C44 8EC0 mov es, ax 1564 00000C46 050020 add ax, 2000h 1565 00000C49 8EE0 mov fs, ax 1566 00000C4B E84B01 call M_WaitVRT_DX 1567 00000C4E B013 mov al, 13h 1568 00000C50 B400 mov ah, 00h 1569 00000C52 CD10 int 10h 1570 00000C54 BA00DC mov dx, Temp_PAL2 1571 00000C57 31DB xor bx, bx 1572 00000C59 B90001 mov cx, 256 1573 00000C5C B017 mov al, 17h 1574 00000C5E B410 mov ah, 10h 1575 00000C60 CD10 int 10h 1576 00000C62 0FA0 push fs 1577 00000C64 07 pop es 1578 00000C65 31FF xor di, di 1579 00000C67 89F8 mov ax, di 1580 00000C69 B90080 mov cx, 10000h/2 1581 00000C6C F3AB rep stosw 1582 00000C6E 8C06[0A1D] mov [TextSeg], es 1583 00000C72 C7060A01030E mov word [CharColor], 0E03h 1584 00000C78 BF2C00 mov di, 44 1585 00000C7B BE[751C] mov si, Gfx4Text 1586 00000C7E E86B05 call GfxWrite 1587 00000C81 C7061A010080 mov word [x], 8000h 1588 00000C87 C7061C010008 mov word [y], 0800h 1589 00000C8D 31DB xor bx, bx 1590 00000C8F BF0810 mov di, 1008h 1591 @Rotate6Map: 1592 00000C92 53 push bx 1593 00000C93 57 push di 1594 00000C94 E85D04 call RotateMap2 1595 00000C97 E8FF00 call M_WaitVRT_DX 1596 00000C9A 5F pop di 1597 00000C9B 5B pop bx 1598 00000C9C 83EF18 sub di, 18h 1599 00000C9F 73F1 jnc short @Rotate6Map 1600 00000CA1 8CC8 mov ax, cs 1601 00000CA3 8EC0 mov es, ax 1602 00000CA5 8ED8 mov ds, ax 1603 ;M_FadeOUT Temp_PAL2, Temp_PAL1 1604 00000CA7 BE00DC mov si, Temp_PAL2 ; SourcePAL 1605 00000CAA BF00EC mov di, Temp_PAL1 ; DestPAL 1606 00000CAD E80801 call M_FadeOUT 1607 00000CB0 EB15 jmp @NoKeyPressed 1608 @KeyDownOut: 1609 00000CB2 E8E400 call M_WaitVRT_DX 1610 00000CB5 B013 mov al, 13h 1611 00000CB7 B400 mov ah, 00h 1612 00000CB9 CD10 int 10h 1613 00000CBB B92000 mov cx, 20h 1614 @wv7: 1615 00000CBE E8D800 call M_WaitVRT_DX 1616 00000CC1 E2FB loop @wv7 1617 00000CC3 31C0 xor ax, ax 1618 00000CC5 CD16 int 16h 1619 @NoKeyPressed: 1620 00000CC7 E8CF00 call M_WaitVRT_DX 1621 00000CCA B003 mov al, 03h 1622 00000CCC B400 mov ah, 00h 1623 00000CCE CD10 int 10h ; Switch Back to Char Mode 1624 00000CD0 FA cli 1625 00000CD1 BB4F41 mov bx, 414Fh 1626 00000CD4 E8C200 call M_WaitVRT_DX 1627 00000CD7 E8C200 call M_WaitVRT 1628 00000CDA 88FC mov ah, bh 1629 00000CDC BAD403 mov dx, 03D4h 1630 00000CDF B009 mov al, 09h 1631 00000CE1 EF out dx, ax 1632 00000CE2 B98002 mov cx, (EndPicCol-EndPic) 1633 00000CE5 BA00B8 mov dx, 0B800h 1634 00000CE8 8EC2 mov es, dx 1635 00000CEA 31FF xor di, di 1636 00000CEC BE[0017] mov si, EndPic 1637 @PutPage: 1638 00000CEF 8AA48002 mov ah, [si+(EndPicCol-EndPic)] 1639 00000CF3 AC lodsb 1640 00000CF4 AB stosw 1641 00000CF5 E2F8 loop @PutPage 1642 00000CF7 FB sti 1643 00000CF8 BA0007 mov dx, 0700h 1644 00000CFB B700 mov bh, 00h 1645 00000CFD B402 mov ah, 02h 1646 00000CFF CD10 int 10h 1647 00000D01 FA cli 1648 00000D02 BB4F42 mov bx, 424Fh 1649 @IncCharHeight: 1650 00000D05 E89100 call M_WaitVRT_DX 1651 00000D08 E89100 call M_WaitVRT 1652 00000D0B 88FC mov ah, bh 1653 00000D0D BAD403 mov dx, 03D4h 1654 00000D10 B009 mov al, 09h 1655 00000D12 EF out dx, ax 1656 00000D13 FEC7 inc bh 1657 00000D15 38DF cmp bh, bl 1658 00000D17 76EC jbe short @IncCharHeight 1659 00000D19 FB sti 1660 00000D1A B003 mov al, 03h 1661 00000D1C B425 mov ah, 25h 1662 00000D1E 5A pop dx 1663 00000D1F 1F pop ds 1664 00000D20 CD21 int 21h ; Enable Breakpoints 1665 00000D22 B001 mov al, 01h 1666 00000D24 B425 mov ah, 25h 1667 00000D26 5A pop dx 1668 00000D27 1F pop ds 1669 00000D28 CD21 int 21h ; Enable Single Step 1670 00000D2A B000 mov al, 00h 1671 00000D2C B44C mov ah, 4Ch 1672 00000D2E CD21 int 21h 1673 1674 M_WriteText: 1675 ; di = (60+TextXYMove)*320+120+TextXYMove 1676 ; bx = (92+TextXYMove)*320+64+TextXYMove 1677 ; dx = (124+TextXYMove)*320+88+TextXYMove 1678 1679 00000D30 B90800 mov cx, 8 1680 M_WTxt_1: 1681 00000D33 51 push cx 1682 00000D34 B92800 mov cx, 5*8 1683 _wt1_1: 1684 00000D37 64803C00 cmp byte [fs:si], 0 1685 00000D3B 7408 jz short _wt2_1 1686 00000D3D 268905 mov [es:di], ax 1687 00000D40 2689854001 mov [es:di+320], ax 1688 _wt2_1: 1689 00000D45 83C702 add di, 2 1690 00000D48 46 inc si 1691 00000D49 E2EC loop _wt1_1 1692 00000D4B 81C73002 add di, 240+320 1693 00000D4F 59 pop cx 1694 00000D50 E2E1 loop M_WTxt_1 1695 1696 00000D52 89DF mov di, bx 1697 1698 00000D54 B108 mov cl, 8 1699 M_WTxt_2: 1700 00000D56 51 push cx 1701 00000D57 B96000 mov cx, 12*8 1702 _wt1_2: 1703 00000D5A 64803C00 cmp byte [fs:si], 0 1704 00000D5E 7408 jz short _wt2_2 1705 00000D60 268905 mov [es:di], ax 1706 00000D63 2689854001 mov [es:di+320], ax 1707 _wt2_2: 1708 00000D68 83C702 add di, 2 1709 00000D6B 46 inc si 1710 00000D6C E2EC loop _wt1_2 1711 00000D6E 81C7C001 add di, 128+320 1712 00000D72 59 pop cx 1713 00000D73 E2E1 loop M_WTxt_2 1714 1715 00000D75 89D7 mov di, dx 1716 1717 00000D77 B108 mov cl, 8 1718 M_WTxt_3: 1719 00000D79 51 push cx 1720 00000D7A B94800 mov cx, 9*8 1721 _wt1_3: 1722 00000D7D 64803C00 cmp byte [fs:si], 0 1723 00000D81 7408 jz short _wt2_3 1724 00000D83 268905 mov [es:di], ax 1725 00000D86 2689854001 mov [es:di+320], ax 1726 _wt2_3: 1727 00000D8B 83C702 add di, 2 1728 00000D8E 46 inc si 1729 00000D8F E2EC loop _wt1_3 1730 00000D91 81C7F001 add di, 176+320 1731 00000D95 59 pop cx 1732 00000D96 E2E1 loop M_WTxt_3 1733 00000D98 C3 retn 1734 1735 M_WaitVRT_DX: 1736 00000D99 BADA03 mov dx, 03DAh 1737 M_WaitVRT: 1738 _wv1: 1739 00000D9C EC in al, dx 1740 00000D9D A808 test al, 8 1741 00000D9F 74FB jz short _wv1 1742 _wv2: 1743 00000DA1 EC in al, dx 1744 00000DA2 A808 test al, 8 1745 00000DA4 75FB jnz short _wv2 1746 00000DA6 C3 retn 1747 1748 M_ClearPAL: 1749 00000DA7 E8EFFF call M_WaitVRT_DX 1750 00000DAA B90003 mov cx, 768 1751 00000DAD BAC803 mov dx, 03C8h 1752 00000DB0 31C0 xor ax, ax 1753 00000DB2 EE out dx, al 1754 00000DB3 42 inc dx 1755 _cpal: 1756 00000DB4 EE out dx, al 1757 00000DB5 E2FD loop _cpal 1758 00000DB7 C3 retn 1759 1760 M_FadeOUT: 1761 ; si = SourcePAL 1762 ; di = DestPAL 1763 00000DB8 FA cli 1764 ; M_FadePAL_Out SrcPAL, DstPAL 1765 00000DB9 BB0002 mov bx, 0200h 1766 _fo1: 1767 00000DBC 56 push si 1768 00000DBD 57 push di 1769 00000DBE B90003 mov cx, 3*256 1770 _fo2: 1771 00000DC1 AC lodsb 1772 00000DC2 28D8 sub al, bl 1773 00000DC4 F5 cmc 1774 00000DC5 18E4 sbb ah, ah 1775 00000DC7 20E0 and al, ah 1776 00000DC9 AA stosb 1777 00000DCA E2F5 loop _fo2 1778 00000DCC 5E pop si ; DestPAL 1779 00000DCD 56 push si 1780 00000DCE B90003 mov cx, 3*256 1781 00000DD1 E8C5FF call M_WaitVRT_DX 1782 00000DD4 BAC803 mov dx, 03C8h 1783 00000DD7 B000 mov al, 00h 1784 00000DD9 EE out dx, al 1785 00000DDA 42 inc dx 1786 00000DDB F36E rep outsb 1787 00000DDD E8B9FF call M_WaitVRT_DX 1788 00000DE0 5F pop di 1789 00000DE1 5E pop si 1790 00000DE2 00FB add bl, bh 1791 00000DE4 F6C33F test bl, 3Fh 1792 00000DE7 75D3 jnz short _fo1 1793 00000DE9 FB sti 1794 00000DEA C3 retn 1795 1796 M_FadeIN: 1797 ; si = SourcePAL 1798 ; di = DestPAL 1799 00000DEB FA cli 1800 ; M_FadePAL_In SrcPAL, DstPAL 1801 00000DEC BB40FE mov bx, 0FE40h 1802 _fi1: 1803 00000DEF 56 push si 1804 00000DF0 57 push di 1805 00000DF1 B90003 mov cx, 3*256 1806 _fi2: 1807 00000DF4 AC lodsb 1808 00000DF5 28D8 sub al, bl 1809 00000DF7 F5 cmc 1810 00000DF8 18E4 sbb ah, ah 1811 00000DFA 20E0 and al, ah 1812 00000DFC AA stosb 1813 00000DFD E2F5 loop _fi2 1814 00000DFF 5E pop si ; DestPAL 1815 00000E00 56 push si 1816 00000E01 B90003 mov cx, 3*256 1817 00000E04 E892FF call M_WaitVRT_DX 1818 00000E07 BAC803 mov dx, 03C8h 1819 00000E0A B000 mov al, 00h 1820 00000E0C EE out dx, al 1821 00000E0D 42 inc dx 1822 00000E0E F36E rep outsb 1823 00000E10 E886FF call M_WaitVRT_DX 1824 00000E13 5F pop di 1825 00000E14 5E pop si 1826 00000E15 00FB add bl, bh 1827 00000E17 F6C33F test bl, 3Fh 1828 00000E1A 75D3 jnz short _fi1 1829 00000E1C FB sti 1830 00000E1D C3 retn 1831 1832 1833 M_ShadeBOBs_2: 1834 00000E1E B89600 mov ax, TimeOut2 1835 00000E21 EB03 jmp short M_ShadeBOBs 1836 M_ShadeBOBs_1: 1837 00000E23 B80020 mov ax, TimeOut 1838 M_ShadeBOBs: 1839 00000E26 50 push ax 1840 00000E27 E86FFF call M_WaitVRT_DX 1841 00000E2A BAC803 mov dx, 03C8h 1842 00000E2D 30C0 xor al, al 1843 00000E2F EE out dx, al 1844 00000E30 42 inc dx 1845 00000E31 B90001 mov cx, 256 1846 00000E34 30E4 xor ah, ah 1847 _Set1Pal: 1848 00000E36 EE out dx, al 1849 00000E37 88E0 mov al, ah 1850 00000E39 EE out dx, al 1851 00000E3A 30C0 xor al, al 1852 00000E3C EE out dx, al 1853 00000E3D 80FC3E cmp ah, 62 1854 00000E40 7302 jae short _Set1Brk 1855 00000E42 FEC4 inc ah 1856 _Set1Brk: 1857 00000E44 E2F0 loop _Set1Pal 1858 00000E46 31ED xor bp, bp 1859 00000E48 58 pop ax 1860 00000E49 50 push ax 1861 00000E4A A3[521E] mov [Frames], ax ; @Time 1862 00000E4D E8BDF5 call ShadesLoop 1863 00000E50 E846FF call M_WaitVRT_DX 1864 00000E53 BAC803 mov dx, 03C8h 1865 00000E56 31C0 xor ax, ax 1866 00000E58 EE out dx, al 1867 00000E59 42 inc dx 1868 00000E5A B90001 mov cx, 256 1869 _Set2Pal: 1870 00000E5D 88E0 mov al, ah 1871 00000E5F EE out dx, al 1872 00000E60 30C0 xor al, al 1873 00000E62 EE out dx, al 1874 00000E63 EE out dx, al 1875 00000E64 80FC3E cmp ah, 62 1876 00000E67 7302 jae short _Set2Brk 1877 00000E69 FEC4 inc ah 1878 _Set2Brk: 1879 00000E6B E2F0 loop _Set2Pal 1880 00000E6D 31ED xor bp, bp 1881 00000E6F 58 pop ax 1882 00000E70 50 push ax 1883 00000E71 A3[521E] mov [Frames], ax ; @Time 1884 00000E74 E896F5 call ShadesLoop 1885 00000E77 E81FFF call M_WaitVRT_DX 1886 00000E7A BAC803 mov dx, 03C8h 1887 00000E7D 31C0 xor ax, ax 1888 00000E7F EE out dx, al 1889 00000E80 42 inc dx 1890 00000E81 B90001 mov cx, 256 1891 _Set3Pal: 1892 00000E84 EE out dx, al 1893 00000E85 EE out dx, al 1894 00000E86 88E0 mov al, ah 1895 00000E88 EE out dx, al 1896 00000E89 80FC3E cmp ah, 62 1897 00000E8C 7302 jae short _Set3Brk 1898 00000E8E FEC4 inc ah 1899 _Set3Brk: 1900 00000E90 30C0 xor al, al 1901 00000E92 E2F0 loop _Set3Pal 1902 00000E94 31ED xor bp, bp 1903 00000E96 58 pop ax 1904 00000E97 A3[521E] mov [Frames], ax ; @Time 1905 00000E9A E870F5 call ShadesLoop 1906 00000E9D C3 retn 1907 1908 PutBop: ; sub_3116 1909 00000E9E 01D7 add di, dx 1910 00000EA0 31F6 xor si, si 1911 00000EA2 B99000 mov cx, BopPts/4 1912 @PutLoop: 1913 00000EA5 8B84[7C21] mov ax, [si+BopAddTab] 1914 00000EA9 8B9C[FC25] mov bx, [si+BopTab] 1915 00000EAD 260001 add [es:bx+di], al 1916 00000EB0 8B84[7E21] mov ax, [si+BopAddTab+2] 1917 00000EB4 8B9C[FE25] mov bx, [si+BopTab+2] 1918 00000EB8 260001 add [es:bx+di], al 1919 00000EBB 8B84[8021] mov ax, [si+BopAddTab+4] 1920 00000EBF 8B9C[0026] mov bx, [si+BopTab+4] 1921 00000EC3 260001 add [es:bx+di], al 1922 00000EC6 8B84[8221] mov ax, [si+BopAddTab+6] 1923 00000ECA 8B9C[0226] mov bx, [si+BopTab+6] 1924 00000ECE 260001 add [es:bx+di], al 1925 00000ED1 83C608 add si, 8 1926 00000ED4 E2CF loop @PutLoop 1927 HideBop: ; sub_314E 1928 00000ED6 3E87BE[A41E] xchg [ds:bp+BopQueue], di 1929 00000EDB 83FFFF cmp di, -1 1930 00000EDE 7336 jae short @SkipHide 1931 00000EE0 31F6 xor si, si 1932 00000EE2 B99000 mov cx, BopPts/4 1933 @HideLoop: 1934 00000EE5 8B84[7C21] mov ax, [si+BopAddTab] 1935 00000EE9 8B9C[FC25] mov bx, [si+BopTab] 1936 00000EED 262801 sub [es:bx+di], al 1937 00000EF0 8B84[7E21] mov ax, [si+BopAddTab+2] 1938 00000EF4 8B9C[FE25] mov bx, [si+BopTab+2] 1939 00000EF8 262801 sub [es:bx+di], al 1940 00000EFB 8B84[8021] mov ax, [si+BopAddTab+4] 1941 00000EFF 8B9C[0026] mov bx, [si+BopTab+4] 1942 00000F03 262801 sub [es:bx+di], al 1943 00000F06 8B84[8221] mov ax, [si+BopAddTab+6] 1944 00000F0A 8B9C[0226] mov bx, [si+BopTab+6] 1945 00000F0E 262801 sub [es:bx+di], al 1946 00000F11 83C608 add si, 8 1947 00000F14 E2CF loop @HideLoop 1948 @SkipHide: 1949 00000F16 83C502 add bp, 2 1950 00000F19 81FDBC02 cmp bp, 2*MaxBops 1951 00000F1D 19DB sbb bx, bx 1952 00000F1F 21DD and bp, bx 1953 00000F21 C3 ret 1954 1955 CalcPixel: ; sub_319A 1956 00000F22 B704 mov bh, 4 1957 @CalcPixel: 1958 00000F24 09ED or bp, bp 1959 00000F26 0F898C00 jns @NoPixel 1960 00000F2A D906[601E] fld dword [II] ; L := ... 1961 00000F2E D806[6C1E] fadd dword [LL] 1962 00000F32 D9FB fsincos 1963 00000F34 D80E[5C1E] fmul dword [CosB] 1964 00000F38 D906[881E] fld dword [Cos1] 1965 00000F3C D8C9 fmul st0, st1 1966 00000F3E D906[581E] fld dword [SinB] 1967 00000F42 D80E[841E] fmul dword [Sin1] 1968 00000F46 DEC1 faddp st1, st0 1969 00000F48 DE0E[941E] fimul word [Ker1] 1970 00000F4C DF1E[541E] fistp word [U] 1971 00000F50 9B fwait 1972 00000F51 A1[541E] mov ax, [U] 1973 00000F54 D80E[841E] fmul dword [Sin1] 1974 00000F58 D906[881E] fld dword [Cos1] 1975 00000F5C D80E[581E] fmul dword [SinB] 1976 00000F60 DEE1 fsubrp st1, st0 1977 00000F62 DE0E[961E] fimul word [Ker2] 1978 00000F66 DF1E[9A1E] fistp word [YY] 1979 00000F6A D80E[5C1E] fmul dword [CosB] 1980 00000F6E DE0E[961E] fimul word [Ker2] 1981 00000F72 DF1E[981E] fistp word [XX] 1982 00000F76 09C0 or ax, ax 1983 00000F78 0F88F7F2 js @CCPopAX 1984 00000F7C 40 inc ax 1985 00000F7D 240F and al, 0Fh 1986 00000F7F B94001 mov cx, 320 1987 00000F82 9B wait 1988 00000F83 030E[981E] add cx, [XX] 1989 00000F87 89CF mov di, cx 1990 00000F89 83E707 and di, 7 1991 00000F8C BACE03 mov dx, 03CEh 1992 00000F8F 8AA5[9C1E] mov ah, [di+MaskTable] 1993 00000F93 89C7 mov di, ax 1994 00000F95 B008 mov al, 08h 1995 00000F97 EF out dx, ax 1996 00000F98 89F8 mov ax, di 1997 00000F9A BFF000 mov di, 240 1998 00000F9D 2B3E[9A1E] sub di, [YY] 1999 00000FA1 C1E903 shr cx, 3 2000 00000FA4 C1E704 shl di, 4 2001 00000FA7 01F9 add cx, di 2002 00000FA9 C1E702 shl di, 2 2003 00000FAC 01CF add di, cx 2004 00000FAE 81C7006A add di, 6A00h 2005 00000FB2 268A25 mov ah, [es:di] 2006 00000FB5 AA stosb 2007 @NoPixel: 2008 00000FB6 D906[601E] fld dword [II] 2009 00000FBA D806[681E] fadd dword [IIAdd] 2010 00000FBE D91E[601E] fstp dword [II] 2011 00000FC2 FECF dec bh 2012 00000FC4 0F855CFF jnz @CalcPixel 2013 00000FC8 D1E5 shl bp, 1 2014 00000FCA C3 retn 2015 2016 PrintChar: ; sub_3243 ; si = Char Number, di = Place. 2017 00000FCB FA cli 2018 00000FCC 89C6 mov si, ax 2019 00000FCE C1E603 shl si, 3 2020 00000FD1 03360601 add si, [CharP] 2021 00000FD5 B208 mov dl, 08h 2022 _MC1: 2023 00000FD7 8E060801 mov es, [CharP+2] 2024 00000FDB 26 db 26h ; ES segment override prefix 2025 00000FDC AC lodsb 2026 00000FDD 88C6 mov dh, al 2027 00000FDF 8E06[0A1D] mov es, [TextSeg] 2028 2029 00000FE3 B90800 mov cx, 8 2030 _MC2: 2031 00000FE6 31DB xor bx, bx 2032 00000FE8 D0E6 shl dh, 1 2033 00000FEA 81D30A01 adc bx, CharColor 2034 00000FEE 8A07 mov al, [bx] 2035 00000FF0 AA stosb 2036 00000FF1 E2F3 loop _MC2 2037 2038 00000FF3 81C7F800 add di, 256-8 ;320-8 2039 00000FF7 FECA dec dl 2040 00000FF9 75DC jnz short _MC1 2041 _MCOUT: 2042 00000FFB 81EFF807 sub di, 8*256-8 ;8*320-8 2043 00000FFF FB sti 2044 00001000 C3 retn 2045 2046 CalcFractal: ; sub_32C6 2047 00001001 FA cli 2048 00001002 A10E01 mov ax, [YMax] 2049 00001005 A31C01 mov [y], ax 2050 00001008 C70616010000 mov word [ScreenY], 0 2051 @RepeatY: 2052 0000100E A10C01 mov ax, [XMin] 2053 00001011 A31A01 mov [x], ax 2054 00001014 C70614010000 mov word [ScreenX], 0 2055 @RepeatX: 2056 0000101A 31C9 xor cx, cx 2057 0000101C A11C01 mov ax, [y] 2058 0000101F A31E01 mov [zi], ax 2059 00001022 89C7 mov di, ax 2060 00001024 F7EF imul di 2061 ;M_ShlDXAX 3 2062 00001026 E8B900 call M_ShlDXAX_3 2063 00001029 89D7 mov di, dx 2064 0000102B A11A01 mov ax, [x] 2065 0000102E A32001 mov [zr], ax 2066 00001031 89C6 mov si, ax 2067 00001033 F7EE imul si 2068 ;M_ShlDXAX 3 2069 00001035 E8AA00 call M_ShlDXAX_3 2070 00001038 89D6 mov si, dx 2071 @RepeatCount: 2072 0000103A 89F0 mov ax, si 2073 0000103C 29F8 sub ax, di 2074 0000103E 03062201 add ax, [cr] 2075 00001042 89C6 mov si, ax 2076 00001044 A12001 mov ax, [zr] 2077 00001047 F72E1E01 imul word [zi] 2078 ;M_ShlDXAX 4 2079 0000104B E89000 call M_ShlDXAX_4 2080 0000104E 03162401 add dx, [ci] 2081 00001052 89D7 mov di, dx 2082 00001054 89161E01 mov [zi], dx 2083 00001058 89362001 mov [zr], si 2084 0000105C 89F0 mov ax, si 2085 0000105E F7EE imul si 2086 ;M_ShlDXAX 3 2087 00001060 E87F00 call M_ShlDXAX_3 2088 00001063 89D6 mov si, dx 2089 00001065 89F8 mov ax, di 2090 00001067 F7EF imul di 2091 ;M_ShlDXAX 3 2092 00001069 E87600 call M_ShlDXAX_3 2093 0000106C 89D7 mov di, dx 2094 0000106E 01F2 add dx, si 2095 00001070 720D jc short @CountOut 2096 00001072 780B js short @CountOut 2097 00001074 41 inc cx 2098 00001075 3B0E1801 cmp cx, [NMax] 2099 00001079 76BF jna short @RepeatCount 2100 0000107B 31C0 xor ax, ax 2101 0000107D EB0A jmp short @Plot 2102 @CountOut: 2103 0000107F 89C8 mov ax, cx 2104 00001081 B11F mov cl, 31 2105 00001083 F6F1 div cl 2106 00001085 88E0 mov al, ah 2107 00001087 FEC0 inc al 2108 @Plot: 2109 00001089 241F and al, 1Fh 2110 0000108B 0420 add al, 20h 2111 0000108D 8B361401 mov si, [ScreenX] 2112 00001091 8B3E1601 mov di, [ScreenY] 2113 00001095 89F9 mov cx, di 2114 00001097 8BBD00CE mov di, [di+Row256T] 2115 0000109B 01F7 add di, si 2116 0000109D AA stosb 2117 0000109E FF061401 inc word [ScreenX] 2118 000010A2 A11A01 mov ax, [x] 2119 000010A5 03061001 add ax, [XStep] 2120 000010A9 A31A01 mov [x], ax 2121 000010AC 81FE2001 cmp si, 288 2122 000010B0 0F8266FF jb @RepeatX 2123 @OutM1: 2124 000010B4 BADA03 mov dx, 3DAh 2125 000010B7 EC in al, dx 2126 000010B8 BAC003 mov dx, 3C0h 2127 000010BB B031 mov al, 11h+32 2128 000010BD EE out dx, al 2129 000010BE 88C8 mov al, cl 2130 000010C0 D0E8 shr al, 1 2131 000010C2 240F and al, 0Fh 2132 000010C4 EE out dx, al 2133 000010C5 8306160102 add word [ScreenY], 2 2134 000010CA A11C01 mov ax, [y] 2135 000010CD 03061201 add ax, [YStep] 2136 000010D1 A31C01 mov [y], ax 2137 000010D4 81F90001 cmp cx, 256 2138 000010D8 0F8232FF jb @RepeatY 2139 @OutM2: 2140 000010DC FB sti 2141 000010DD C3 retn 2142 2143 M_ShlDXAX_4: 2144 000010DE D1E0 shl ax, 1 2145 000010E0 D1D2 rcl dx, 1 2146 M_ShlDXAX_3: 2147 000010E2 D1E0 shl ax, 1 2148 000010E4 D1D2 rcl dx, 1 2149 000010E6 D1E0 shl ax, 1 2150 000010E8 D1D2 rcl dx, 1 2151 000010EA D1E0 shl ax, 1 2152 000010EC D1D2 rcl dx, 1 2153 000010EE C3 retn 2154 2155 RotateMap: ; sub_3497 2156 ;M_Init_Rotate 1 2157 000010EF B80100 mov ax, 1 2158 000010F2 EB02 jmp short M_Init_Rotate 2159 RotateMap2: ; sub_33D6 2160 ;M_Init_Rotate 0 2161 000010F4 29C0 sub ax, ax ; 0 2162 ;jmp short M_Init_Rotate 2163 M_Init_Rotate: ; sub_3497, sub_33D6 2164 000010F6 50 push ax ; Method 2165 000010F7 B800A0 mov ax, 0A000h 2166 000010FA 8EC0 mov es, ax 2167 000010FC 80E707 and bh, 7 2168 000010FF 8B8700E0 mov ax, [bx+SinT] 2169 00001103 F7EF imul di 2170 00001105 D1FA sar dx, 1 2171 00001107 83D200 adc dx, 0 2172 0000110A 89D5 mov bp, dx 2173 0000110C 8B8700E2 mov ax, [bx+CosT] 2174 00001110 F7EF imul di 2175 00001112 D1FA sar dx, 1 2176 00001114 83D200 adc dx, 0 2177 00001117 89D6 mov si, dx 2178 00001119 8B8700D0 mov ax, [bx+Sin2T] 2179 0000111D F7EF imul di 2180 0000111F D1FA sar dx, 1 2181 00001121 83D200 adc dx, 0 2182 00001124 89162001 mov [d2y], dx 2183 00001128 6BCA64 imul cx, dx, 100 2184 0000112B 8B8700D2 mov ax, [bx+Cos2T] 2185 0000112F F7EF imul di 2186 00001131 D1FA sar dx, 1 2187 00001133 83D200 adc dx, 0 2188 00001136 89161E01 mov [d2x], dx 2189 0000113A 6BD264 imul dx, 100 2190 0000113D 69DEA000 imul bx, si, 160 2191 00001141 01D3 add bx, dx 2192 00001143 A11A01 mov ax, [x] 2193 00001146 29D8 sub ax, bx 2194 00001148 69DDA000 imul bx, bp, 160 2195 0000114C 01CB add bx, cx 2196 0000114E 8B161C01 mov dx, [y] 2197 00001152 29DA sub dx, bx 2198 00001154 31FF xor di, di 2199 _ir1: 2200 00001156 A31401 mov [i], ax 2201 00001159 89161601 mov [j], dx 2202 0000115D B95000 mov cx, 320/4 2203 _ir2: 2204 %rep 4 2205 add ax, si 2206 add dx, bp 2207 mov bl, ah 2208 mov bh, dh 2209 mov bl, [fs:bx] 2210 mov [es:di], bl 2211 inc di 2212 %endrep 2213 00001160 01F0 <1> add ax, si 2214 00001162 01EA <1> add dx, bp 2215 00001164 88E3 <1> mov bl, ah 2216 00001166 88F7 <1> mov bh, dh 2217 00001168 648A1F <1> mov bl, [fs:bx] 2218 0000116B 26881D <1> mov [es:di], bl 2219 0000116E 47 <1> inc di 2220 0000116F 01F0 <1> add ax, si 2221 00001171 01EA <1> add dx, bp 2222 00001173 88E3 <1> mov bl, ah 2223 00001175 88F7 <1> mov bh, dh 2224 00001177 648A1F <1> mov bl, [fs:bx] 2225 0000117A 26881D <1> mov [es:di], bl 2226 0000117D 47 <1> inc di 2227 0000117E 01F0 <1> add ax, si 2228 00001180 01EA <1> add dx, bp 2229 00001182 88E3 <1> mov bl, ah 2230 00001184 88F7 <1> mov bh, dh 2231 00001186 648A1F <1> mov bl, [fs:bx] 2232 00001189 26881D <1> mov [es:di], bl 2233 0000118C 47 <1> inc di 2234 0000118D 01F0 <1> add ax, si 2235 0000118F 01EA <1> add dx, bp 2236 00001191 88E3 <1> mov bl, ah 2237 00001193 88F7 <1> mov bh, dh 2238 00001195 648A1F <1> mov bl, [fs:bx] 2239 00001198 26881D <1> mov [es:di], bl 2240 0000119B 47 <1> inc di 2241 0000119C E2C2 loop _ir2 2242 2243 0000119E 58 pop ax ; Method 2244 0000119F 50 push ax 2245 000011A0 09C0 or ax, ax 2246 000011A2 7402 jz short _ir3 2247 000011A4 46 inc si 2248 000011A5 45 inc bp 2249 _ir3: 2250 000011A6 A11E01 mov ax, [d2x] 2251 000011A9 8B162001 mov dx, [d2y] 2252 000011AD 03061401 add ax, [i] 2253 000011B1 03161601 add dx, [j] 2254 000011B5 81FF00FA cmp di, 4*16000 2255 000011B9 729B jb short _ir1 2256 000011BB 58 pop ax ; Method 2257 000011BC 8CC8 mov ax, cs 2258 000011BE 8EC0 mov es, ax 2259 000011C0 C3 retn 2260 2261 RotatePAL20: ; sub_355A 2262 000011C1 FA cli 2263 000011C2 FD std 2264 000011C3 BE5BDF mov si, Temp_PAL3+3*1Fh-2 2265 000011C6 BF5EDF mov di, Temp_PAL3+3*20h-2 2266 000011C9 8B05 mov ax, [di] 2267 000011CB 8A5DFF mov bl, [di-1] 2268 000011CE B92F00 mov cx, 47 2269 000011D1 F3A5 rep movsw 2270 000011D3 894501 mov [di+1], ax 2271 000011D6 881D mov [di], bl 2272 000011D8 FC cld 2273 000011D9 89FE mov si, di 2274 000011DB B96000 mov cx, 3*20h 2275 000011DE E8B8FB call M_WaitVRT_DX 2276 000011E1 BAC803 mov dx, 03C8h 2277 000011E4 B020 mov al, 20h 2278 000011E6 EE out dx, al 2279 000011E7 42 inc dx 2280 000011E8 F36E rep outsb 2281 000011EA FB sti 2282 000011EB C3 retn 2283 2284 GfxWrite: ; sub_3592 2285 000011EC 31C0 xor ax, ax 2286 @WriteFPush: 2287 000011EE 57 push di 2288 @WriteF: 2289 000011EF AC lodsb 2290 000011F0 08C0 or al, al 2291 000011F2 740B jz short @WriteFLN 2292 000011F4 3CFF cmp al, 0FFh 2293 000011F6 740E je short @WriteFOut 2294 000011F8 56 push si 2295 000011F9 E8CFFD call PrintChar 2296 000011FC 5E pop si 2297 000011FD EBF0 jmp short @WriteF 2298 @WriteFLN: 2299 000011FF 5F pop di 2300 00001200 81C70008 add di, 8*256 ; 800h 2301 00001204 EBE8 jmp short @WriteFPush 2302 @WriteFOut: 2303 00001206 5F pop di 2304 00001207 8CCA mov dx, cs 2305 00001209 8EC2 mov es, dx 2306 0000120B C3 retn 2307 2308 %rep 199 2309 mov [bx+di], dh 2310 add dx, ax 2311 inc bh 2312 %endrep 2313 0000120C 8831 <1> mov [bx+di], dh 2314 0000120E 01C2 <1> add dx, ax 2315 00001210 FEC7 <1> inc bh 2316 00001212 8831 <1> mov [bx+di], dh 2317 00001214 01C2 <1> add dx, ax 2318 00001216 FEC7 <1> inc bh 2319 00001218 8831 <1> mov [bx+di], dh 2320 0000121A 01C2 <1> add dx, ax 2321 0000121C FEC7 <1> inc bh 2322 0000121E 8831 <1> mov [bx+di], dh 2323 00001220 01C2 <1> add dx, ax 2324 00001222 FEC7 <1> inc bh 2325 00001224 8831 <1> mov [bx+di], dh 2326 00001226 01C2 <1> add dx, ax 2327 00001228 FEC7 <1> inc bh 2328 0000122A 8831 <1> mov [bx+di], dh 2329 0000122C 01C2 <1> add dx, ax 2330 0000122E FEC7 <1> inc bh 2331 00001230 8831 <1> mov [bx+di], dh 2332 00001232 01C2 <1> add dx, ax 2333 00001234 FEC7 <1> inc bh 2334 00001236 8831 <1> mov [bx+di], dh 2335 00001238 01C2 <1> add dx, ax 2336 0000123A FEC7 <1> inc bh 2337 0000123C 8831 <1> mov [bx+di], dh 2338 0000123E 01C2 <1> add dx, ax 2339 00001240 FEC7 <1> inc bh 2340 00001242 8831 <1> mov [bx+di], dh 2341 00001244 01C2 <1> add dx, ax 2342 00001246 FEC7 <1> inc bh 2343 00001248 8831 <1> mov [bx+di], dh 2344 0000124A 01C2 <1> add dx, ax 2345 0000124C FEC7 <1> inc bh 2346 0000124E 8831 <1> mov [bx+di], dh 2347 00001250 01C2 <1> add dx, ax 2348 00001252 FEC7 <1> inc bh 2349 00001254 8831 <1> mov [bx+di], dh 2350 00001256 01C2 <1> add dx, ax 2351 00001258 FEC7 <1> inc bh 2352 0000125A 8831 <1> mov [bx+di], dh 2353 0000125C 01C2 <1> add dx, ax 2354 0000125E FEC7 <1> inc bh 2355 00001260 8831 <1> mov [bx+di], dh 2356 00001262 01C2 <1> add dx, ax 2357 00001264 FEC7 <1> inc bh 2358 00001266 8831 <1> mov [bx+di], dh 2359 00001268 01C2 <1> add dx, ax 2360 0000126A FEC7 <1> inc bh 2361 0000126C 8831 <1> mov [bx+di], dh 2362 0000126E 01C2 <1> add dx, ax 2363 00001270 FEC7 <1> inc bh 2364 00001272 8831 <1> mov [bx+di], dh 2365 00001274 01C2 <1> add dx, ax 2366 00001276 FEC7 <1> inc bh 2367 00001278 8831 <1> mov [bx+di], dh 2368 0000127A 01C2 <1> add dx, ax 2369 0000127C FEC7 <1> inc bh 2370 0000127E 8831 <1> mov [bx+di], dh 2371 00001280 01C2 <1> add dx, ax 2372 00001282 FEC7 <1> inc bh 2373 00001284 8831 <1> mov [bx+di], dh 2374 00001286 01C2 <1> add dx, ax 2375 00001288 FEC7 <1> inc bh 2376 0000128A 8831 <1> mov [bx+di], dh 2377 0000128C 01C2 <1> add dx, ax 2378 0000128E FEC7 <1> inc bh 2379 00001290 8831 <1> mov [bx+di], dh 2380 00001292 01C2 <1> add dx, ax 2381 00001294 FEC7 <1> inc bh 2382 00001296 8831 <1> mov [bx+di], dh 2383 00001298 01C2 <1> add dx, ax 2384 0000129A FEC7 <1> inc bh 2385 0000129C 8831 <1> mov [bx+di], dh 2386 0000129E 01C2 <1> add dx, ax 2387 000012A0 FEC7 <1> inc bh 2388 000012A2 8831 <1> mov [bx+di], dh 2389 000012A4 01C2 <1> add dx, ax 2390 000012A6 FEC7 <1> inc bh 2391 000012A8 8831 <1> mov [bx+di], dh 2392 000012AA 01C2 <1> add dx, ax 2393 000012AC FEC7 <1> inc bh 2394 000012AE 8831 <1> mov [bx+di], dh 2395 000012B0 01C2 <1> add dx, ax 2396 000012B2 FEC7 <1> inc bh 2397 000012B4 8831 <1> mov [bx+di], dh 2398 000012B6 01C2 <1> add dx, ax 2399 000012B8 FEC7 <1> inc bh 2400 000012BA 8831 <1> mov [bx+di], dh 2401 000012BC 01C2 <1> add dx, ax 2402 000012BE FEC7 <1> inc bh 2403 000012C0 8831 <1> mov [bx+di], dh 2404 000012C2 01C2 <1> add dx, ax 2405 000012C4 FEC7 <1> inc bh 2406 000012C6 8831 <1> mov [bx+di], dh 2407 000012C8 01C2 <1> add dx, ax 2408 000012CA FEC7 <1> inc bh 2409 000012CC 8831 <1> mov [bx+di], dh 2410 000012CE 01C2 <1> add dx, ax 2411 000012D0 FEC7 <1> inc bh 2412 000012D2 8831 <1> mov [bx+di], dh 2413 000012D4 01C2 <1> add dx, ax 2414 000012D6 FEC7 <1> inc bh 2415 000012D8 8831 <1> mov [bx+di], dh 2416 000012DA 01C2 <1> add dx, ax 2417 000012DC FEC7 <1> inc bh 2418 000012DE 8831 <1> mov [bx+di], dh 2419 000012E0 01C2 <1> add dx, ax 2420 000012E2 FEC7 <1> inc bh 2421 000012E4 8831 <1> mov [bx+di], dh 2422 000012E6 01C2 <1> add dx, ax 2423 000012E8 FEC7 <1> inc bh 2424 000012EA 8831 <1> mov [bx+di], dh 2425 000012EC 01C2 <1> add dx, ax 2426 000012EE FEC7 <1> inc bh 2427 000012F0 8831 <1> mov [bx+di], dh 2428 000012F2 01C2 <1> add dx, ax 2429 000012F4 FEC7 <1> inc bh 2430 000012F6 8831 <1> mov [bx+di], dh 2431 000012F8 01C2 <1> add dx, ax 2432 000012FA FEC7 <1> inc bh 2433 000012FC 8831 <1> mov [bx+di], dh 2434 000012FE 01C2 <1> add dx, ax 2435 00001300 FEC7 <1> inc bh 2436 00001302 8831 <1> mov [bx+di], dh 2437 00001304 01C2 <1> add dx, ax 2438 00001306 FEC7 <1> inc bh 2439 00001308 8831 <1> mov [bx+di], dh 2440 0000130A 01C2 <1> add dx, ax 2441 0000130C FEC7 <1> inc bh 2442 0000130E 8831 <1> mov [bx+di], dh 2443 00001310 01C2 <1> add dx, ax 2444 00001312 FEC7 <1> inc bh 2445 00001314 8831 <1> mov [bx+di], dh 2446 00001316 01C2 <1> add dx, ax 2447 00001318 FEC7 <1> inc bh 2448 0000131A 8831 <1> mov [bx+di], dh 2449 0000131C 01C2 <1> add dx, ax 2450 0000131E FEC7 <1> inc bh 2451 00001320 8831 <1> mov [bx+di], dh 2452 00001322 01C2 <1> add dx, ax 2453 00001324 FEC7 <1> inc bh 2454 00001326 8831 <1> mov [bx+di], dh 2455 00001328 01C2 <1> add dx, ax 2456 0000132A FEC7 <1> inc bh 2457 0000132C 8831 <1> mov [bx+di], dh 2458 0000132E 01C2 <1> add dx, ax 2459 00001330 FEC7 <1> inc bh 2460 00001332 8831 <1> mov [bx+di], dh 2461 00001334 01C2 <1> add dx, ax 2462 00001336 FEC7 <1> inc bh 2463 00001338 8831 <1> mov [bx+di], dh 2464 0000133A 01C2 <1> add dx, ax 2465 0000133C FEC7 <1> inc bh 2466 0000133E 8831 <1> mov [bx+di], dh 2467 00001340 01C2 <1> add dx, ax 2468 00001342 FEC7 <1> inc bh 2469 00001344 8831 <1> mov [bx+di], dh 2470 00001346 01C2 <1> add dx, ax 2471 00001348 FEC7 <1> inc bh 2472 0000134A 8831 <1> mov [bx+di], dh 2473 0000134C 01C2 <1> add dx, ax 2474 0000134E FEC7 <1> inc bh 2475 00001350 8831 <1> mov [bx+di], dh 2476 00001352 01C2 <1> add dx, ax 2477 00001354 FEC7 <1> inc bh 2478 00001356 8831 <1> mov [bx+di], dh 2479 00001358 01C2 <1> add dx, ax 2480 0000135A FEC7 <1> inc bh 2481 0000135C 8831 <1> mov [bx+di], dh 2482 0000135E 01C2 <1> add dx, ax 2483 00001360 FEC7 <1> inc bh 2484 00001362 8831 <1> mov [bx+di], dh 2485 00001364 01C2 <1> add dx, ax 2486 00001366 FEC7 <1> inc bh 2487 00001368 8831 <1> mov [bx+di], dh 2488 0000136A 01C2 <1> add dx, ax 2489 0000136C FEC7 <1> inc bh 2490 0000136E 8831 <1> mov [bx+di], dh 2491 00001370 01C2 <1> add dx, ax 2492 00001372 FEC7 <1> inc bh 2493 00001374 8831 <1> mov [bx+di], dh 2494 00001376 01C2 <1> add dx, ax 2495 00001378 FEC7 <1> inc bh 2496 0000137A 8831 <1> mov [bx+di], dh 2497 0000137C 01C2 <1> add dx, ax 2498 0000137E FEC7 <1> inc bh 2499 00001380 8831 <1> mov [bx+di], dh 2500 00001382 01C2 <1> add dx, ax 2501 00001384 FEC7 <1> inc bh 2502 00001386 8831 <1> mov [bx+di], dh 2503 00001388 01C2 <1> add dx, ax 2504 0000138A FEC7 <1> inc bh 2505 0000138C 8831 <1> mov [bx+di], dh 2506 0000138E 01C2 <1> add dx, ax 2507 00001390 FEC7 <1> inc bh 2508 00001392 8831 <1> mov [bx+di], dh 2509 00001394 01C2 <1> add dx, ax 2510 00001396 FEC7 <1> inc bh 2511 00001398 8831 <1> mov [bx+di], dh 2512 0000139A 01C2 <1> add dx, ax 2513 0000139C FEC7 <1> inc bh 2514 0000139E 8831 <1> mov [bx+di], dh 2515 000013A0 01C2 <1> add dx, ax 2516 000013A2 FEC7 <1> inc bh 2517 000013A4 8831 <1> mov [bx+di], dh 2518 000013A6 01C2 <1> add dx, ax 2519 000013A8 FEC7 <1> inc bh 2520 000013AA 8831 <1> mov [bx+di], dh 2521 000013AC 01C2 <1> add dx, ax 2522 000013AE FEC7 <1> inc bh 2523 000013B0 8831 <1> mov [bx+di], dh 2524 000013B2 01C2 <1> add dx, ax 2525 000013B4 FEC7 <1> inc bh 2526 000013B6 8831 <1> mov [bx+di], dh 2527 000013B8 01C2 <1> add dx, ax 2528 000013BA FEC7 <1> inc bh 2529 000013BC 8831 <1> mov [bx+di], dh 2530 000013BE 01C2 <1> add dx, ax 2531 000013C0 FEC7 <1> inc bh 2532 000013C2 8831 <1> mov [bx+di], dh 2533 000013C4 01C2 <1> add dx, ax 2534 000013C6 FEC7 <1> inc bh 2535 000013C8 8831 <1> mov [bx+di], dh 2536 000013CA 01C2 <1> add dx, ax 2537 000013CC FEC7 <1> inc bh 2538 000013CE 8831 <1> mov [bx+di], dh 2539 000013D0 01C2 <1> add dx, ax 2540 000013D2 FEC7 <1> inc bh 2541 000013D4 8831 <1> mov [bx+di], dh 2542 000013D6 01C2 <1> add dx, ax 2543 000013D8 FEC7 <1> inc bh 2544 000013DA 8831 <1> mov [bx+di], dh 2545 000013DC 01C2 <1> add dx, ax 2546 000013DE FEC7 <1> inc bh 2547 000013E0 8831 <1> mov [bx+di], dh 2548 000013E2 01C2 <1> add dx, ax 2549 000013E4 FEC7 <1> inc bh 2550 000013E6 8831 <1> mov [bx+di], dh 2551 000013E8 01C2 <1> add dx, ax 2552 000013EA FEC7 <1> inc bh 2553 000013EC 8831 <1> mov [bx+di], dh 2554 000013EE 01C2 <1> add dx, ax 2555 000013F0 FEC7 <1> inc bh 2556 000013F2 8831 <1> mov [bx+di], dh 2557 000013F4 01C2 <1> add dx, ax 2558 000013F6 FEC7 <1> inc bh 2559 000013F8 8831 <1> mov [bx+di], dh 2560 000013FA 01C2 <1> add dx, ax 2561 000013FC FEC7 <1> inc bh 2562 000013FE 8831 <1> mov [bx+di], dh 2563 00001400 01C2 <1> add dx, ax 2564 00001402 FEC7 <1> inc bh 2565 00001404 8831 <1> mov [bx+di], dh 2566 00001406 01C2 <1> add dx, ax 2567 00001408 FEC7 <1> inc bh 2568 0000140A 8831 <1> mov [bx+di], dh 2569 0000140C 01C2 <1> add dx, ax 2570 0000140E FEC7 <1> inc bh 2571 00001410 8831 <1> mov [bx+di], dh 2572 00001412 01C2 <1> add dx, ax 2573 00001414 FEC7 <1> inc bh 2574 00001416 8831 <1> mov [bx+di], dh 2575 00001418 01C2 <1> add dx, ax 2576 0000141A FEC7 <1> inc bh 2577 0000141C 8831 <1> mov [bx+di], dh 2578 0000141E 01C2 <1> add dx, ax 2579 00001420 FEC7 <1> inc bh 2580 00001422 8831 <1> mov [bx+di], dh 2581 00001424 01C2 <1> add dx, ax 2582 00001426 FEC7 <1> inc bh 2583 00001428 8831 <1> mov [bx+di], dh 2584 0000142A 01C2 <1> add dx, ax 2585 0000142C FEC7 <1> inc bh 2586 0000142E 8831 <1> mov [bx+di], dh 2587 00001430 01C2 <1> add dx, ax 2588 00001432 FEC7 <1> inc bh 2589 00001434 8831 <1> mov [bx+di], dh 2590 00001436 01C2 <1> add dx, ax 2591 00001438 FEC7 <1> inc bh 2592 0000143A 8831 <1> mov [bx+di], dh 2593 0000143C 01C2 <1> add dx, ax 2594 0000143E FEC7 <1> inc bh 2595 00001440 8831 <1> mov [bx+di], dh 2596 00001442 01C2 <1> add dx, ax 2597 00001444 FEC7 <1> inc bh 2598 00001446 8831 <1> mov [bx+di], dh 2599 00001448 01C2 <1> add dx, ax 2600 0000144A FEC7 <1> inc bh 2601 0000144C 8831 <1> mov [bx+di], dh 2602 0000144E 01C2 <1> add dx, ax 2603 00001450 FEC7 <1> inc bh 2604 00001452 8831 <1> mov [bx+di], dh 2605 00001454 01C2 <1> add dx, ax 2606 00001456 FEC7 <1> inc bh 2607 00001458 8831 <1> mov [bx+di], dh 2608 0000145A 01C2 <1> add dx, ax 2609 0000145C FEC7 <1> inc bh 2610 0000145E 8831 <1> mov [bx+di], dh 2611 00001460 01C2 <1> add dx, ax 2612 00001462 FEC7 <1> inc bh 2613 00001464 8831 <1> mov [bx+di], dh 2614 00001466 01C2 <1> add dx, ax 2615 00001468 FEC7 <1> inc bh 2616 0000146A 8831 <1> mov [bx+di], dh 2617 0000146C 01C2 <1> add dx, ax 2618 0000146E FEC7 <1> inc bh 2619 00001470 8831 <1> mov [bx+di], dh 2620 00001472 01C2 <1> add dx, ax 2621 00001474 FEC7 <1> inc bh 2622 00001476 8831 <1> mov [bx+di], dh 2623 00001478 01C2 <1> add dx, ax 2624 0000147A FEC7 <1> inc bh 2625 0000147C 8831 <1> mov [bx+di], dh 2626 0000147E 01C2 <1> add dx, ax 2627 00001480 FEC7 <1> inc bh 2628 00001482 8831 <1> mov [bx+di], dh 2629 00001484 01C2 <1> add dx, ax 2630 00001486 FEC7 <1> inc bh 2631 00001488 8831 <1> mov [bx+di], dh 2632 0000148A 01C2 <1> add dx, ax 2633 0000148C FEC7 <1> inc bh 2634 0000148E 8831 <1> mov [bx+di], dh 2635 00001490 01C2 <1> add dx, ax 2636 00001492 FEC7 <1> inc bh 2637 00001494 8831 <1> mov [bx+di], dh 2638 00001496 01C2 <1> add dx, ax 2639 00001498 FEC7 <1> inc bh 2640 0000149A 8831 <1> mov [bx+di], dh 2641 0000149C 01C2 <1> add dx, ax 2642 0000149E FEC7 <1> inc bh 2643 000014A0 8831 <1> mov [bx+di], dh 2644 000014A2 01C2 <1> add dx, ax 2645 000014A4 FEC7 <1> inc bh 2646 000014A6 8831 <1> mov [bx+di], dh 2647 000014A8 01C2 <1> add dx, ax 2648 000014AA FEC7 <1> inc bh 2649 000014AC 8831 <1> mov [bx+di], dh 2650 000014AE 01C2 <1> add dx, ax 2651 000014B0 FEC7 <1> inc bh 2652 000014B2 8831 <1> mov [bx+di], dh 2653 000014B4 01C2 <1> add dx, ax 2654 000014B6 FEC7 <1> inc bh 2655 000014B8 8831 <1> mov [bx+di], dh 2656 000014BA 01C2 <1> add dx, ax 2657 000014BC FEC7 <1> inc bh 2658 000014BE 8831 <1> mov [bx+di], dh 2659 000014C0 01C2 <1> add dx, ax 2660 000014C2 FEC7 <1> inc bh 2661 000014C4 8831 <1> mov [bx+di], dh 2662 000014C6 01C2 <1> add dx, ax 2663 000014C8 FEC7 <1> inc bh 2664 000014CA 8831 <1> mov [bx+di], dh 2665 000014CC 01C2 <1> add dx, ax 2666 000014CE FEC7 <1> inc bh 2667 000014D0 8831 <1> mov [bx+di], dh 2668 000014D2 01C2 <1> add dx, ax 2669 000014D4 FEC7 <1> inc bh 2670 000014D6 8831 <1> mov [bx+di], dh 2671 000014D8 01C2 <1> add dx, ax 2672 000014DA FEC7 <1> inc bh 2673 000014DC 8831 <1> mov [bx+di], dh 2674 000014DE 01C2 <1> add dx, ax 2675 000014E0 FEC7 <1> inc bh 2676 000014E2 8831 <1> mov [bx+di], dh 2677 000014E4 01C2 <1> add dx, ax 2678 000014E6 FEC7 <1> inc bh 2679 000014E8 8831 <1> mov [bx+di], dh 2680 000014EA 01C2 <1> add dx, ax 2681 000014EC FEC7 <1> inc bh 2682 000014EE 8831 <1> mov [bx+di], dh 2683 000014F0 01C2 <1> add dx, ax 2684 000014F2 FEC7 <1> inc bh 2685 000014F4 8831 <1> mov [bx+di], dh 2686 000014F6 01C2 <1> add dx, ax 2687 000014F8 FEC7 <1> inc bh 2688 000014FA 8831 <1> mov [bx+di], dh 2689 000014FC 01C2 <1> add dx, ax 2690 000014FE FEC7 <1> inc bh 2691 00001500 8831 <1> mov [bx+di], dh 2692 00001502 01C2 <1> add dx, ax 2693 00001504 FEC7 <1> inc bh 2694 00001506 8831 <1> mov [bx+di], dh 2695 00001508 01C2 <1> add dx, ax 2696 0000150A FEC7 <1> inc bh 2697 0000150C 8831 <1> mov [bx+di], dh 2698 0000150E 01C2 <1> add dx, ax 2699 00001510 FEC7 <1> inc bh 2700 00001512 8831 <1> mov [bx+di], dh 2701 00001514 01C2 <1> add dx, ax 2702 00001516 FEC7 <1> inc bh 2703 00001518 8831 <1> mov [bx+di], dh 2704 0000151A 01C2 <1> add dx, ax 2705 0000151C FEC7 <1> inc bh 2706 0000151E 8831 <1> mov [bx+di], dh 2707 00001520 01C2 <1> add dx, ax 2708 00001522 FEC7 <1> inc bh 2709 00001524 8831 <1> mov [bx+di], dh 2710 00001526 01C2 <1> add dx, ax 2711 00001528 FEC7 <1> inc bh 2712 0000152A 8831 <1> mov [bx+di], dh 2713 0000152C 01C2 <1> add dx, ax 2714 0000152E FEC7 <1> inc bh 2715 00001530 8831 <1> mov [bx+di], dh 2716 00001532 01C2 <1> add dx, ax 2717 00001534 FEC7 <1> inc bh 2718 00001536 8831 <1> mov [bx+di], dh 2719 00001538 01C2 <1> add dx, ax 2720 0000153A FEC7 <1> inc bh 2721 0000153C 8831 <1> mov [bx+di], dh 2722 0000153E 01C2 <1> add dx, ax 2723 00001540 FEC7 <1> inc bh 2724 00001542 8831 <1> mov [bx+di], dh 2725 00001544 01C2 <1> add dx, ax 2726 00001546 FEC7 <1> inc bh 2727 00001548 8831 <1> mov [bx+di], dh 2728 0000154A 01C2 <1> add dx, ax 2729 0000154C FEC7 <1> inc bh 2730 0000154E 8831 <1> mov [bx+di], dh 2731 00001550 01C2 <1> add dx, ax 2732 00001552 FEC7 <1> inc bh 2733 00001554 8831 <1> mov [bx+di], dh 2734 00001556 01C2 <1> add dx, ax 2735 00001558 FEC7 <1> inc bh 2736 0000155A 8831 <1> mov [bx+di], dh 2737 0000155C 01C2 <1> add dx, ax 2738 0000155E FEC7 <1> inc bh 2739 00001560 8831 <1> mov [bx+di], dh 2740 00001562 01C2 <1> add dx, ax 2741 00001564 FEC7 <1> inc bh 2742 00001566 8831 <1> mov [bx+di], dh 2743 00001568 01C2 <1> add dx, ax 2744 0000156A FEC7 <1> inc bh 2745 0000156C 8831 <1> mov [bx+di], dh 2746 0000156E 01C2 <1> add dx, ax 2747 00001570 FEC7 <1> inc bh 2748 00001572 8831 <1> mov [bx+di], dh 2749 00001574 01C2 <1> add dx, ax 2750 00001576 FEC7 <1> inc bh 2751 00001578 8831 <1> mov [bx+di], dh 2752 0000157A 01C2 <1> add dx, ax 2753 0000157C FEC7 <1> inc bh 2754 0000157E 8831 <1> mov [bx+di], dh 2755 00001580 01C2 <1> add dx, ax 2756 00001582 FEC7 <1> inc bh 2757 00001584 8831 <1> mov [bx+di], dh 2758 00001586 01C2 <1> add dx, ax 2759 00001588 FEC7 <1> inc bh 2760 0000158A 8831 <1> mov [bx+di], dh 2761 0000158C 01C2 <1> add dx, ax 2762 0000158E FEC7 <1> inc bh 2763 00001590 8831 <1> mov [bx+di], dh 2764 00001592 01C2 <1> add dx, ax 2765 00001594 FEC7 <1> inc bh 2766 00001596 8831 <1> mov [bx+di], dh 2767 00001598 01C2 <1> add dx, ax 2768 0000159A FEC7 <1> inc bh 2769 0000159C 8831 <1> mov [bx+di], dh 2770 0000159E 01C2 <1> add dx, ax 2771 000015A0 FEC7 <1> inc bh 2772 000015A2 8831 <1> mov [bx+di], dh 2773 000015A4 01C2 <1> add dx, ax 2774 000015A6 FEC7 <1> inc bh 2775 000015A8 8831 <1> mov [bx+di], dh 2776 000015AA 01C2 <1> add dx, ax 2777 000015AC FEC7 <1> inc bh 2778 000015AE 8831 <1> mov [bx+di], dh 2779 000015B0 01C2 <1> add dx, ax 2780 000015B2 FEC7 <1> inc bh 2781 000015B4 8831 <1> mov [bx+di], dh 2782 000015B6 01C2 <1> add dx, ax 2783 000015B8 FEC7 <1> inc bh 2784 000015BA 8831 <1> mov [bx+di], dh 2785 000015BC 01C2 <1> add dx, ax 2786 000015BE FEC7 <1> inc bh 2787 000015C0 8831 <1> mov [bx+di], dh 2788 000015C2 01C2 <1> add dx, ax 2789 000015C4 FEC7 <1> inc bh 2790 000015C6 8831 <1> mov [bx+di], dh 2791 000015C8 01C2 <1> add dx, ax 2792 000015CA FEC7 <1> inc bh 2793 000015CC 8831 <1> mov [bx+di], dh 2794 000015CE 01C2 <1> add dx, ax 2795 000015D0 FEC7 <1> inc bh 2796 000015D2 8831 <1> mov [bx+di], dh 2797 000015D4 01C2 <1> add dx, ax 2798 000015D6 FEC7 <1> inc bh 2799 000015D8 8831 <1> mov [bx+di], dh 2800 000015DA 01C2 <1> add dx, ax 2801 000015DC FEC7 <1> inc bh 2802 000015DE 8831 <1> mov [bx+di], dh 2803 000015E0 01C2 <1> add dx, ax 2804 000015E2 FEC7 <1> inc bh 2805 000015E4 8831 <1> mov [bx+di], dh 2806 000015E6 01C2 <1> add dx, ax 2807 000015E8 FEC7 <1> inc bh 2808 000015EA 8831 <1> mov [bx+di], dh 2809 000015EC 01C2 <1> add dx, ax 2810 000015EE FEC7 <1> inc bh 2811 000015F0 8831 <1> mov [bx+di], dh 2812 000015F2 01C2 <1> add dx, ax 2813 000015F4 FEC7 <1> inc bh 2814 000015F6 8831 <1> mov [bx+di], dh 2815 000015F8 01C2 <1> add dx, ax 2816 000015FA FEC7 <1> inc bh 2817 000015FC 8831 <1> mov [bx+di], dh 2818 000015FE 01C2 <1> add dx, ax 2819 00001600 FEC7 <1> inc bh 2820 00001602 8831 <1> mov [bx+di], dh 2821 00001604 01C2 <1> add dx, ax 2822 00001606 FEC7 <1> inc bh 2823 00001608 8831 <1> mov [bx+di], dh 2824 0000160A 01C2 <1> add dx, ax 2825 0000160C FEC7 <1> inc bh 2826 0000160E 8831 <1> mov [bx+di], dh 2827 00001610 01C2 <1> add dx, ax 2828 00001612 FEC7 <1> inc bh 2829 00001614 8831 <1> mov [bx+di], dh 2830 00001616 01C2 <1> add dx, ax 2831 00001618 FEC7 <1> inc bh 2832 0000161A 8831 <1> mov [bx+di], dh 2833 0000161C 01C2 <1> add dx, ax 2834 0000161E FEC7 <1> inc bh 2835 00001620 8831 <1> mov [bx+di], dh 2836 00001622 01C2 <1> add dx, ax 2837 00001624 FEC7 <1> inc bh 2838 00001626 8831 <1> mov [bx+di], dh 2839 00001628 01C2 <1> add dx, ax 2840 0000162A FEC7 <1> inc bh 2841 0000162C 8831 <1> mov [bx+di], dh 2842 0000162E 01C2 <1> add dx, ax 2843 00001630 FEC7 <1> inc bh 2844 00001632 8831 <1> mov [bx+di], dh 2845 00001634 01C2 <1> add dx, ax 2846 00001636 FEC7 <1> inc bh 2847 00001638 8831 <1> mov [bx+di], dh 2848 0000163A 01C2 <1> add dx, ax 2849 0000163C FEC7 <1> inc bh 2850 0000163E 8831 <1> mov [bx+di], dh 2851 00001640 01C2 <1> add dx, ax 2852 00001642 FEC7 <1> inc bh 2853 00001644 8831 <1> mov [bx+di], dh 2854 00001646 01C2 <1> add dx, ax 2855 00001648 FEC7 <1> inc bh 2856 0000164A 8831 <1> mov [bx+di], dh 2857 0000164C 01C2 <1> add dx, ax 2858 0000164E FEC7 <1> inc bh 2859 00001650 8831 <1> mov [bx+di], dh 2860 00001652 01C2 <1> add dx, ax 2861 00001654 FEC7 <1> inc bh 2862 00001656 8831 <1> mov [bx+di], dh 2863 00001658 01C2 <1> add dx, ax 2864 0000165A FEC7 <1> inc bh 2865 0000165C 8831 <1> mov [bx+di], dh 2866 0000165E 01C2 <1> add dx, ax 2867 00001660 FEC7 <1> inc bh 2868 00001662 8831 <1> mov [bx+di], dh 2869 00001664 01C2 <1> add dx, ax 2870 00001666 FEC7 <1> inc bh 2871 00001668 8831 <1> mov [bx+di], dh 2872 0000166A 01C2 <1> add dx, ax 2873 0000166C FEC7 <1> inc bh 2874 0000166E 8831 <1> mov [bx+di], dh 2875 00001670 01C2 <1> add dx, ax 2876 00001672 FEC7 <1> inc bh 2877 00001674 8831 <1> mov [bx+di], dh 2878 00001676 01C2 <1> add dx, ax 2879 00001678 FEC7 <1> inc bh 2880 0000167A 8831 <1> mov [bx+di], dh 2881 0000167C 01C2 <1> add dx, ax 2882 0000167E FEC7 <1> inc bh 2883 00001680 8831 <1> mov [bx+di], dh 2884 00001682 01C2 <1> add dx, ax 2885 00001684 FEC7 <1> inc bh 2886 00001686 8831 <1> mov [bx+di], dh 2887 00001688 01C2 <1> add dx, ax 2888 0000168A FEC7 <1> inc bh 2889 0000168C 8831 <1> mov [bx+di], dh 2890 0000168E 01C2 <1> add dx, ax 2891 00001690 FEC7 <1> inc bh 2892 00001692 8831 <1> mov [bx+di], dh 2893 00001694 01C2 <1> add dx, ax 2894 00001696 FEC7 <1> inc bh 2895 00001698 8831 <1> mov [bx+di], dh 2896 0000169A 01C2 <1> add dx, ax 2897 0000169C FEC7 <1> inc bh 2898 0000169E 8831 <1> mov [bx+di], dh 2899 000016A0 01C2 <1> add dx, ax 2900 000016A2 FEC7 <1> inc bh 2901 000016A4 8831 <1> mov [bx+di], dh 2902 000016A6 01C2 <1> add dx, ax 2903 000016A8 FEC7 <1> inc bh 2904 000016AA 8831 <1> mov [bx+di], dh 2905 000016AC 01C2 <1> add dx, ax 2906 000016AE FEC7 <1> inc bh 2907 000016B0 8831 <1> mov [bx+di], dh 2908 000016B2 01C2 <1> add dx, ax 2909 000016B4 FEC7 <1> inc bh 2910 @UpdateMap8: 2911 000016B6 8831 mov [bx+di], dh 2912 000016B8 C3 retn 2913 2914 M_MakeMUL: 2915 000016B9 B8AF00 mov ax, 0AFh 2916 000016BC F7E6 mul si 2917 000016BE 05C02B add ax, 2BC0h 2918 000016C1 83D200 adc dx, 0 2919 000016C4 F7369E00 div word [W_Divider] 2920 000016C8 89D6 mov si, dx 2921 000016CA C3 retn 2922 2923 M_Calc2Square: 2924 000016CB 88C5 mov ch, al 2925 000016CD E8E9FF call M_MakeMUL 2926 000016D0 81EAE867 sub dx, 67E8h 2927 000016D4 31C0 xor ax, ax 2928 000016D6 88C8 mov al, cl 2929 000016D8 C1E003 shl ax, 3 2930 000016DB F7EA imul dx 2931 000016DD 31C0 xor ax, ax 2932 000016DF 00EA add dl, ch 2933 000016E1 88C5 mov ch, al 2934 000016E3 10EE adc dh, ch 2935 000016E5 7806 js short @@CS2 2936 000016E7 7402 jz short @@CS1 2937 000016E9 B2FE mov dl, 0FEh 2938 @@CS1: 2939 000016EB 88D0 mov al, dl 2940 @@CS2: 2941 000016ED C3 retn 2942 2943 M_CalcSquare: 2944 000016EE 26803DFF cmp byte [es:di], 0FFh 2945 000016F2 750B jne short @@CS3 2946 000016F4 260207 add al, [es:bx] 2947 000016F7 10EC adc ah, ch 2948 000016F9 D1E8 shr ax, 1 2949 ;M_Calc2Square 2950 000016FB E8CDFF call M_Calc2Square 2951 000016FE AA stosb 2952 @@CS3: 2953 000016FF C3 retn 2954 2955 00001700 2020C9CDCDCDCDCDCD- EndPic: db ' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ' 2956 00001709 CDCDCDCDCDCDCDCDCD- 2957 00001712 CDCDCDCDCDCDCDCDCD- 2958 0000171B CDCDCDCDCDCDCDCDCD- 2959 00001724 CDCDCDCDCDCDCDCDCD- 2960 0000172D CDCDCDCDCDCDCDCDCD- 2961 00001736 CDCDCDCDCDCDCDCDCD- 2962 0000173F CDCDCDCDCDCDCDCDCD- 2963 00001748 CDCDCDCDCDBB2020 2964 00001750 C9CDBC202020202020- db 'Éͼ ÈÍ»' 2965 00001759 202020202020202020- 2966 00001762 202020202020202020- 2967 0000176B 202020202020202020- 2968 00001774 202020202020202020- 2969 0000177D 202020202020202020- 2970 00001786 202020202020202020- 2971 0000178F 202020202020202020- 2972 00001798 2020202020C8CDBB 2973 000017A0 BA20DC20DCDCDC2020- db 'º Ü ÜÜÜ ÉÍÍ» º º ÍËÍ ÉÍÍ» ÉÍÍ ÉÍËÍ» ÉÍÍ ÉÍËÍ» ÉÍÍ» ÉÍÍ» º º º Ü ÜÜÜ º' 2974 000017A9 C9CDCDBB20BA2020BA- 2975 000017B2 20CDCBCD20202020C9- 2976 000017BB CDCDBB20C9CDCD2020- 2977 000017C4 2020C9CDCBCDBB20C9- 2978 000017CD CDCD20C9CDCBCDBB20- 2979 000017D6 C9CDCDBB20C9CDCDBB- 2980 000017DF 20BA20BA2020BA2020- 2981 000017E8 20DC20DCDCDC20BA 2982 000017F0 BA20DC20DCDCDC2020- db 'º Ü ÜÜÜ º º º º º º º ÌÍ º º º ÌÍ º º º º º ÌÍ˼ È˼ º Ü ÜÜÜ º' 2983 000017F9 BA2020BA20BA2020BA- 2984 00001802 2020BA2020202020BA- 2985 0000180B 2020BA20CCCD202020- 2986 00001814 2020BA20BA20BA20CC- 2987 0000181D CD2020BA20BA20BA20- 2988 00001826 BA2020BA20CCCDCBBC- 2989 0000182F 20C8CBBC2020BA2020- 2990 00001838 20DC20DCDCDC20BA 2991 00001840 BA2020202020202020- db 'º ÈÍͼ ÈÍͼ º ÈÍͼ º º º º ÈÍÍ º º º ÈÍͼ º È» º þ º' 2992 00001849 C8CDCDBC20C8CDCDBC- 2993 00001852 2020BA2020202020C8- 2994 0000185B CDCDBC20BA20202020- 2995 00001864 2020BA20BA20BA20C8- 2996 0000186D CDCD20BA20BA20BA20- 2997 00001876 C8CDCDBC20BA20C8BB- 2998 0000187F 2020BA202020FE2020- 2999 00001888 20202020202020BA 3000 ; db 'º Released at Assembly 94 in Finland, (C) 1994 º' 3001 00001890 BA2020202020202020- db 'º Released at Assembly 94 in Finland, (C) 1994 ä, STP º' 3002 00001899 202020202020202020- 3003 000018A2 202020202020202020- 3004 000018AB 52656C656173656420- 3005 000018B4 617420417373656D62- 3006 000018BD 6C7920393420696E20- 3007 000018C6 46696E6C616E642C20- 3008 000018CF 284329203139393420- 3009 000018D8 E42C2053545020BA 3010 000018E0 C8CDCDCDCDCDCDCDCD- db 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ' 3011 000018E9 CDCDCDCDCDCDCDCDCD- 3012 000018F2 CDCDCDCDCDCDCDCDCD- 3013 000018FB CDCDCDCDCDCDCDCDCD- 3014 00001904 CDCDCDCDCDCDCDCDCD- 3015 0000190D CDCDCDCDCDCDCDCDCD- 3016 00001916 CDCDCDCDCDCDCDCDCD- 3017 0000191F CDCDCDCDCDCDCDCDCD- 3018 00001928 CDCDCDCDCDCDCDBC 3019 00001930 DBDBDBDBDBDBDBDBDB- db 'ÛÛÛÛÛÛÛÛÛ±±±±±±±±°°°°°°°GIANT - the Ultimate 4KB-Intro!°°°°°°°°±±±±±±±±ÛÛÛÛÛÛÛÛÛ' 3020 00001939 B1B1B1B1B1B1B1B1B0- 3021 00001942 B0B0B0B0B0B0474941- 3022 0000194B 4E54202D2074686520- 3023 00001954 556C74696D61746520- 3024 0000195D 344B422D496E74726F- 3025 00001966 21B0B0B0B0B0B0B0B0- 3026 0000196F B1B1B1B1B1B1B1B1DB- 3027 00001978 DBDBDBDBDBDBDBDB 3028 00001980 1F EndPicCol: times 80 db 1Fh 3029 000019D0 1F times 80 db 1Fh 3030 00001A20 1F times 3 db 1Fh 3031 00001A23 11 db 11h 3032 00001A24 1F times 3 db 1Fh 3033 00001A27 1C times 66 db 1Ch 3034 00001A69 1F11 db 1Fh, 11h 3035 00001A6B 1F times 5 db 1Fh 3036 00001A70 1F times 3 db 1Fh 3037 00001A73 11 db 11h, 3038 00001A74 1F times 3 db 1Fh 3039 00001A77 1E times 66 db 1Eh 3040 00001AB9 1F11 db 1Fh, 11h 3041 00001ABB 1F times 5 db 1Fh 3042 00001AC0 1F times 9 db 1Fh 3043 00001AC9 1A times 62 db 1Ah 3044 00001B07 1F times 9 db 1Fh 3045 00001B10 1F times 80 db 1Fh 3046 00001B60 1F times 80 db 1Fh 3047 00001BB0 19 times 24 db 19h 3048 00001BC8 9E times 5 db 9Eh 3049 00001BCD 15 times 3 db 15h 3050 00001BD0 1A times 4 db 1Ah 3051 00001BD4 1D times 9 db 1Dh 3052 00001BDD 1F171714 db 1Fh, 17h, 17h, 14h 3053 00001BE1 131C times 5 db 13h, 1Ch 3054 00001BEB 19 times 25 db 19h 3055 00001C04 C9CDCDCDCDCDCDCDCD- Gfx1Text: db 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»', 0 3056 00001C0D CDCDCDCDCDCDCDCDCD- 3057 00001C16 CDCDCDCDCDCDCDCDCD- 3058 00001C1F CDCDBB00 3059 00001C23 BA506C656173652077- db 'ºPlease wait while Computing!º', 0 3060 00001C2C 616974207768696C65- 3061 00001C35 20436F6D707574696E- 3062 00001C3E 6721BA00 3063 00001C42 C8CDCDCDCDCDCDCDCD- db 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ', 0, -1 3064 00001C4B CDCDCDCDCDCDCDCDCD- 3065 00001C54 CDCDCDCDCDCDCDCDCD- 3066 00001C5D CDCDBC00FF 3067 00001C62 497320746861742061- Gfx2Text: db 'Is that all?', 0, -1 3068 00001C6B 6C6C3F00FF 3069 00001C70 4E4F2100FF Gfx3Text: db 'NO!', 0, -1 3070 00001C75 C9CDCDCDCDCDCDCDCD- Gfx4Text: db 'ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»', 0 3071 00001C7E CDCDCDCDCDCDCDCDCD- 3072 00001C87 CDCDCDBB00 3073 00001C8C BA2054686174206973- db 'º That is all Folks! º', 0 3074 00001C95 20616C6C20466F6C6B- 3075 00001C9E 732120BA00 3076 00001CA3 C8CDCDCDCDCDCDCDCD- db 'ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ', 0, -1 3077 00001CAC CDCDCDCDCDCDCDCDCD- 3078 00001CB5 CDCDCDBC00FF 3079 00001CBB 20417373656D626C79- Text1String: db ' Assembly 1994 *' 3080 00001CC4 2031393934202A 3081 00001CCB 204749414E5420344B- db ' GIANT 4KB-Intro' 3082 00001CD4 422D496E74726F 3083 00001CDB 4749414E540D0A Text2String: db 'GIANT', 13, 10 3084 00001CE2 74686520556C74696D- db 'the Ultimate', 13, 10 3085 00001CEB 6174650D0A 3086 00001CF0 344B422D496E74726F- db '4KB-Intro$' 3087 00001CF9 24 3088 00001CFA 00 times 2 db 0 3089 3090 00001CFC 4554414E2031392F39- db "ETAN 19/9/2016" ; 14 bytes sign (*) 3091 00001D05 2F32303136 3092 3093 _10A2h: 3094 00001D0A 0002 dw 512 ; 1024 shr 1 3095 _10A4h: 3096 00001D0C 0020 dw 8192 3097 _10A6h: 3098 00001D0E 0000 dw 0 3099 3100 SinTable: 3101 00001D10 00 times 64 db 0 3102 CosTable: 3103 00001D50 00 times 258 db 0 3104 00001E52 0000 Frames dw 0000h 3105 00001E54 0000 U dw 0 3106 00001E56 0000 CharGen dw 0 3107 00001E58 00000000 SinB dd 0 3108 00001E5C 00000000 CosB dd 0 3109 00001E60 00000000 II dd 0 3110 00001E64 00000000 JJ dd 0 3111 00001E68 00000000 IIAdd dd 0 3112 00001E6C 00000000 LL dd 0.0e00 3113 00001E70 000080BF BB dd -1.0e00 3114 00001E74 6F12033B Const1 dd 2e-03 3115 00001E78 EC51B83D Const2 dd 0.09e00 3116 00001E7C D7A3A03F Const3 dd 1.255e00 3117 00001E80 0AD7233B Const4 dd 0.0025e00 3118 00001E84 A46A573F Sin1 dd 0.84147098480791e00 3119 00001E88 40510A3F Cos1 dd 0.54030230586814e00 3120 00001E8C 88E7EC3F CosBB dd 1.8508157176809e00 3121 00001E90 9A991946 Mult1 dd 9830.4 3122 00001E94 0E00 Ker1 dw 14 3123 00001E96 F000 Ker2 dw 240 3124 00001E98 8000 XX dw 80h 3125 00001E9A 4000 YY dw 40h 3126 00001E9C 8040201008040201 MaskTable db 80h, 40h, 20h, 10h, 08h, 04h, 02h, 01h 3127 00001EA4 FFFF BopQueue: times MaxBops dw -1 3128 00002160 C0FF Angle dw -1 & 0FFC0h 3129 00002162 FE07 Phase1 dw 2*1024-PhInc1 3130 00002164 FD07 Phase2 dw 2*1024-PhInc2 3131 00002166 0508090B0C0D0D0E0E- BopADDLengths db 5, 8, 9, 11, 12, 13, 13, 14, 14, 15, 15, 15 3132 0000216F 0F0F0F 3133 00002172 01 times 10 db 1 3134 BopAddTab: 3135 %rep 4 3136 db 1,1,1,1,1 3137 db 1,1,1,2,2,2,2,2 3138 db 1,1,2,2,2,3,3,3,3 3139 db 1,1,2,2,3,3,3,3,3,3,3 3140 db 1,1,2,2,3,3,3,3,4,4,4,4 3141 db 1,1,2,2,3,3,3,4,4,4,4,4,4 3142 db 1,2,2,3,3,3,4,4,4,5,5,5,5 3143 db 1,2,2,3,3,3,4,4,4,5,5,6,6,6 3144 db 1,2,2,3,3,4,4,5,5,5,6,6,6,6 3145 db 1,2,2,3,3,4,4,4,5,5,6,6,7,7,7 3146 db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3147 db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3148 %endrep 3149 0000217C 0101010101 <1> db 1,1,1,1,1 3150 00002181 0101010202020202 <1> db 1,1,1,2,2,2,2,2 3151 00002189 010102020203030303 <1> db 1,1,2,2,2,3,3,3,3 3152 00002192 010102020303030303- <1> db 1,1,2,2,3,3,3,3,3,3,3 3153 0000219B 0303 <1> 3154 0000219D 010102020303030304- <1> db 1,1,2,2,3,3,3,3,4,4,4,4 3155 000021A6 040404 <1> 3156 000021A9 010102020303030404- <1> db 1,1,2,2,3,3,3,4,4,4,4,4,4 3157 000021B2 04040404 <1> 3158 000021B6 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,5,5 3159 000021BF 05050505 <1> 3160 000021C3 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,6,6,6 3161 000021CC 0505060606 <1> 3162 000021D1 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,5,6,6,6,6 3163 000021DA 0506060606 <1> 3164 000021DF 010202030304040405- <1> db 1,2,2,3,3,4,4,4,5,5,6,6,7,7,7 3165 000021E8 050606070707 <1> 3166 000021EE 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3167 000021F7 060607070707 <1> 3168 000021FD 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3169 00002206 060607070707 <1> 3170 0000220C 0101010101 <1> db 1,1,1,1,1 3171 00002211 0101010202020202 <1> db 1,1,1,2,2,2,2,2 3172 00002219 010102020203030303 <1> db 1,1,2,2,2,3,3,3,3 3173 00002222 010102020303030303- <1> db 1,1,2,2,3,3,3,3,3,3,3 3174 0000222B 0303 <1> 3175 0000222D 010102020303030304- <1> db 1,1,2,2,3,3,3,3,4,4,4,4 3176 00002236 040404 <1> 3177 00002239 010102020303030404- <1> db 1,1,2,2,3,3,3,4,4,4,4,4,4 3178 00002242 04040404 <1> 3179 00002246 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,5,5 3180 0000224F 05050505 <1> 3181 00002253 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,6,6,6 3182 0000225C 0505060606 <1> 3183 00002261 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,5,6,6,6,6 3184 0000226A 0506060606 <1> 3185 0000226F 010202030304040405- <1> db 1,2,2,3,3,4,4,4,5,5,6,6,7,7,7 3186 00002278 050606070707 <1> 3187 0000227E 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3188 00002287 060607070707 <1> 3189 0000228D 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3190 00002296 060607070707 <1> 3191 0000229C 0101010101 <1> db 1,1,1,1,1 3192 000022A1 0101010202020202 <1> db 1,1,1,2,2,2,2,2 3193 000022A9 010102020203030303 <1> db 1,1,2,2,2,3,3,3,3 3194 000022B2 010102020303030303- <1> db 1,1,2,2,3,3,3,3,3,3,3 3195 000022BB 0303 <1> 3196 000022BD 010102020303030304- <1> db 1,1,2,2,3,3,3,3,4,4,4,4 3197 000022C6 040404 <1> 3198 000022C9 010102020303030404- <1> db 1,1,2,2,3,3,3,4,4,4,4,4,4 3199 000022D2 04040404 <1> 3200 000022D6 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,5,5 3201 000022DF 05050505 <1> 3202 000022E3 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,6,6,6 3203 000022EC 0505060606 <1> 3204 000022F1 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,5,6,6,6,6 3205 000022FA 0506060606 <1> 3206 000022FF 010202030304040405- <1> db 1,2,2,3,3,4,4,4,5,5,6,6,7,7,7 3207 00002308 050606070707 <1> 3208 0000230E 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3209 00002317 060607070707 <1> 3210 0000231D 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3211 00002326 060607070707 <1> 3212 0000232C 0101010101 <1> db 1,1,1,1,1 3213 00002331 0101010202020202 <1> db 1,1,1,2,2,2,2,2 3214 00002339 010102020203030303 <1> db 1,1,2,2,2,3,3,3,3 3215 00002342 010102020303030303- <1> db 1,1,2,2,3,3,3,3,3,3,3 3216 0000234B 0303 <1> 3217 0000234D 010102020303030304- <1> db 1,1,2,2,3,3,3,3,4,4,4,4 3218 00002356 040404 <1> 3219 00002359 010102020303030404- <1> db 1,1,2,2,3,3,3,4,4,4,4,4,4 3220 00002362 04040404 <1> 3221 00002366 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,5,5 3222 0000236F 05050505 <1> 3223 00002373 010202030303040404- <1> db 1,2,2,3,3,3,4,4,4,5,5,6,6,6 3224 0000237C 0505060606 <1> 3225 00002381 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,5,6,6,6,6 3226 0000238A 0506060606 <1> 3227 0000238F 010202030304040405- <1> db 1,2,2,3,3,4,4,4,5,5,6,6,7,7,7 3228 00002398 050606070707 <1> 3229 0000239E 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3230 000023A7 060607070707 <1> 3231 000023AD 010202030304040505- <1> db 1,2,2,3,3,4,4,5,5,6,6,7,7,7,7 3232 000023B6 060607070707 <1> 3233 LastBopAdd: 3234 000023BC 00 times 4*144 db 0 3235 BopTab: ; (*) 3236 ; times 10 db 0 ; in reserve for correct alignment 3237 ; times 4 db 0 3238 000025FC 90 align 16 3239 3240 Last_Word: 3241 3242 Data_Seg Equ 0 3243 MapA_Seg Equ 2 3244 MapB_Seg Equ 4 3245 Sky_Seg Equ 6 3246 MapMakeTable Equ 8 3247 LastMake_ Equ 128 ; 80h 3248 AddCXTable Equ 132 ; 84h 3249 AddDXTable Equ 140 ; 8Ch 3250 MapCoord_ Equ 148 ; 94h 3251 VRAM_Seg Equ 156 ; 9Ch 3252 W_Divider Equ 158 ; 9Eh 3253 3254 section .data ;align=16 3255 3256 00000000 0000 _Data_Seg: dw 0000h 3257 00000002 0000 _MapA_Seg: dw 0000h 3258 00000004 0000 _MapB_Seg: dw 0000h 3259 00000006 0000 _Sky_Seg: dw 0000h 3260 00000008 0000 _MapMakeTable: times 41 dw 0 3261 0000005A 0100 times 10 dw 1 3262 0000006E 0300 times 9 dw 3 3263 00000080 03000000 _LastMake_: dw 0003h, 0000h 3264 00000084 2000F0FFF8FF0800 _AddCXTable: dw 32, -16, -8, 8 3265 0000008C E0FFF8FF10000800 _AddDXTable: dw -32, -8, 16, 8 3266 00000094 000004000202FFFE _MapCoord_: dw 0000h, 0004h, 0202h, 0FEFFh 3267 0000009C 00A0 _VRAM_Seg: dw 0A000h 3268 0000009E 97DB _W_Divider: dw 0DB97h 3269 3270 _end: