From f58be1fe97104159249d14c2ed40e743fcd348e6 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Mon, 10 Sep 2018 20:47:45 +0000 Subject: [PATCH] Add mos3de demo, fix 3dspiral window height, return 3dcube2 to img git-svn-id: svn://kolibrios.org@7350 a494cfbc-eb01-0410-851d-a64ba20cac60 --- data/Tupfile.lua | 1 + programs/demos/3dspiral/trunk/3dspiral.asm | 31 +- programs/demos/mos3de/Tupfile.lua | 2 + programs/demos/mos3de/build.bat | 2 + programs/demos/mos3de/cube.inc | 51 + programs/demos/mos3de/mos3d.bb | 360 ++++ programs/demos/mos3de/mos3de.asm | 2168 ++++++++++++++++++++ programs/demos/mos3de/wall3.inc | 64 + 8 files changed, 2666 insertions(+), 13 deletions(-) create mode 100644 programs/demos/mos3de/Tupfile.lua create mode 100644 programs/demos/mos3de/build.bat create mode 100644 programs/demos/mos3de/cube.inc create mode 100644 programs/demos/mos3de/mos3d.bb create mode 100644 programs/demos/mos3de/mos3de.asm create mode 100644 programs/demos/mos3de/wall3.inc diff --git a/data/Tupfile.lua b/data/Tupfile.lua index 57a1edcacd..670ddbf80c 100644 --- a/data/Tupfile.lua +++ b/data/Tupfile.lua @@ -365,6 +365,7 @@ tup.append_table(img_files, { {"ZKEY", PROGS .. "/system/zkey/trunk/ZKEY"}, {"3D/3DWAV", PROGS .. "/demos/3dwav/trunk/3dwav"}, {"3D/CROWNSCR", PROGS .. "/demos/crownscr/trunk/crownscr"}, + {"3D/3DCUBE2", PROGS .. "/demos/3dcube2/trunk/3DCUBE2"}, {"3D/FREE3D04", PROGS .. "/demos/free3d04/trunk/free3d04"}, {"3D/GEARS", PROGS .. "/develop/libraries/TinyGL/asm_fork/examples/gears"}, {"3D/RAY", PROGS .. "/demos/ray/ray"}, diff --git a/programs/demos/3dspiral/trunk/3dspiral.asm b/programs/demos/3dspiral/trunk/3dspiral.asm index afd0bd2ca2..0f52a1eac5 100644 --- a/programs/demos/3dspiral/trunk/3dspiral.asm +++ b/programs/demos/3dspiral/trunk/3dspiral.asm @@ -365,23 +365,28 @@ ret ; ********************************************* draw_window: - mov eax,12 ; function 12:tell os about windowdraw - mov ebx,1 ; 1, start of draw + mov eax,12 ; function 12:tell os about windowdraw + mov ebx,1 ; 1, start of draw; 2 - end int 0x40 - ; DRAW WINDOW - mov eax,0 ; function 0 : define and draw window - mov ebx,100*65536+maxx+9 ; [x start] *65536 + [x size] - mov ecx,100*65536+maxy+25 ; [y start] *65536 + [y size] - mov edx,0x74000000 ; color of work area RRGGBB,8->color gl - mov edi,labelt - int 0x40 - ; WINDOW LABEL - mov eax,12 ; function 12:tell os about windowdraw - mov ebx,2 ; 2, end of draw + + mov eax, 48 ; get skin height + mov ebx, 4 + int 0x40 + + lea ecx,[eax + (100 shl 16) + maxy + 4] + mov ebx,100*65536+maxx+9 ; [x start] *65536 + [x size] + mov edx,0x74000000 ; skinned window, not resizable + mov edi,labelt ; window title + mov eax,0 ; function 0 : define and draw window int 0x40 + mov eax,12 + mov ebx,2 + int 0x40 + ret - + + x_resolution dd 800 vector_x dd 200 vector_y dd 200 diff --git a/programs/demos/mos3de/Tupfile.lua b/programs/demos/mos3de/Tupfile.lua new file mode 100644 index 0000000000..1482fec3e3 --- /dev/null +++ b/programs/demos/mos3de/Tupfile.lua @@ -0,0 +1,2 @@ +if tup.getconfig("NO_FASM") ~= "" then return end +tup.rule("mos3de.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "mos3de") diff --git a/programs/demos/mos3de/build.bat b/programs/demos/mos3de/build.bat new file mode 100644 index 0000000000..c53825e721 --- /dev/null +++ b/programs/demos/mos3de/build.bat @@ -0,0 +1,2 @@ +@fasm MOS3DE01.ASM MOS3DE01 +@pause \ No newline at end of file diff --git a/programs/demos/mos3de/cube.inc b/programs/demos/mos3de/cube.inc new file mode 100644 index 0000000000..2ba8e199b6 --- /dev/null +++ b/programs/demos/mos3de/cube.inc @@ -0,0 +1,51 @@ +; cube model +anz: +dd 23 ; number of pts -1 +; x y z + +dd -100,-100,-100 +dd -100,100,-100 +dd -100,100,100 +dd -100,-100,100 + +dd -100,-100,-100 +dd -100,-100,100 +dd 100,-100, 100 +dd 100,-100, -100 + +dd -100,100,-100 +dd 100,100,-100 +dd 100,100, 100 +dd -100,100, 100 + +dd 100,-100,-100 +dd 100,-100,100 +dd 100,100,100 +dd 100,100,-100 + +dd -100,100,100 +dd 100,100,100 +dd 100,-100,100 +dd -100,-100,100 + +dd -100,100,-100 +dd -100,-100,-100 +dd 100,-100,-100 +dd 100,100,-100 +eo_mesh: +dd 0,0,0 +silly: +dd 55,55,55 +a_xwww: +times 24 dd 0 +a_ywww: +times 24 dd 0 +a_zwww: +times 24 dd 0 +a_xw: +times 24 dd 0 +a_yw: +times 24 dd 0 +a_zw: +times 24 dd 0 + \ No newline at end of file diff --git a/programs/demos/mos3de/mos3d.bb b/programs/demos/mos3de/mos3d.bb new file mode 100644 index 0000000000..d34b3ea9d2 --- /dev/null +++ b/programs/demos/mos3de/mos3d.bb @@ -0,0 +1,360 @@ +AppTitle "3D Cube Demo","hasta la vista" +While f$<>"1" And f$<>"2" + f$=Input("Fullscreen (1) or Windowed? (2)") + If f$="1" + Graphics 320,240,16,1 + EndIf + If f$="2" + Graphics 320,240,16,2 + EndIf +Wend + +SetBuffer BackBuffer() + +; -- init texturemapper +texturefile$="wall3.bmp" +If FileType(texturefile$)=1 Then ; if it exists then load it... + txt=LoadImage(texturefile$); use any 256*256 pixel texture +Else + txt=CreateImage(256,256) ; else create one on the fly + SetBuffer ImageBuffer(txt) + For i=0 To 255 + Color i,255-i,0 + Line 255-i,0,255,i + Color 255,255-i,255-i + Line 0,255-i,i,255 + Next + SetBuffer BackBuffer() +EndIf +Global imgtxt=ImageBuffer(txt) + +Dim Lefttable%(480, 2), Righttable%(480, 2) ;Scan converter tables (make shure to reserve enough) +Dim Polypoints%(3, 1) ; Array for polygon co-ords, 4 pairs(x,y) co -ords +Global Miny%, Maxy% +Global Pwidth%, Pheight% + + +Pwidth = 63 Shl 16 ;original picture width in pixels -1 shl 16 +Pheight = 63 Shl 16 ;original picture height in pixels -1 shl 16 + +; eo init texturemapper + +Dim zbuffer(10000) ; maximum of 10k Quads (don't worry, would be too slow anyway :) ) + +; Read in a mesh +Restore building +Read anz +Dim xwww(anz),ywww(anz),zwww(anz) +Dim xw(anz),yw(anz),zw(anz) + +For i=0 To anz + Read xwww(i) + Read ywww(i) + Read zwww(i) +Next + +a=0 + +alpha=1 +beta=1 +gamma=1 + +zoom=-500 + +; MMMMMMMMMMMMMMMMMMMMMMMMMmmmmmain + +While KeyDown(1)=0 + + Miny% = 32767 + Maxy% = 0 + + Color 0,0,0 + Rect 0,0,320,240,1 + + a=a+1.0 ; automatic rotation... + If a>359.9 Then a=0 + alpha=a + beta=a + gamma=a+a Mod 360 + + mausy#=0.1+(MouseY()/50.0) + ;mausy#=2.0 + For i=0 To anz + xl1#=zwww(i)*Sin(gamma)+xwww(i)*Cos(gamma) + yl1#=ywww(i) + zl1#=zwww(i)*Cos(gamma)-xwww(i)*Sin(gamma) + + xl2#=xl1 + yl2#=yl1*Cos(beta)-zl1*Sin(beta) + zl2#=yl1*Sin(beta)+zl1*Cos(beta) + + xl3#=(yl2*Sin(alpha)+xl2*Cos(alpha)) + yl3#=(yl2*Cos(alpha)-xl2*Sin(alpha)) + zl3#=(zl2) + +; xl3#=xwww(i) +; yl3#=ywww(i) +; zl3#=zwww(i) + + If yloc# - Zoom <> 0 Then yloc = Int(yl3 ) * 200 / (zl3 - Zoom) + If xloc# - Zoom <> 0 Then xloc = Int(xl3 ) * 200 / (zl3 - Zoom) + + xw(i)=((mausy#)*xloc) +160 + yw(i)=((mausy#)*yloc) +120 + zw(i)=(zl3+256) + Next + + ; z-sorting... + For i=0 To 10000 + zbuffer(i)=-1 + Next + For i=0 To anz-3 Step 4 + If zw(i)>=0 ; clip Quads behind Camera + zwmax=zw(i) + If zwmax-1 And zwmax<10000 + zwmax=zwmax+1 + Wend + zbuffer(zwmax)=i + EndIf + Next + + LockBuffer ImageBuffer(txt) + LockBuffer BackBuffer() + + For i2=10000 To 0 Step -1 ; reading quads in z-order from far to near + i=zbuffer(i2) + + If i>-1 And i< anz-2 ; if it isn't -1 then it's a Quad Point 1 ID + ; Mapping... + GetPolygonPoints(i) + FindSmallLargeY() + X1% = Polypoints%(0, 0) + Y1% = Polypoints%(0, 1) + X2% = Polypoints%(1, 0) + Y2% = Polypoints%(1, 1) + ScanConvert(X1%, Y1%, X2%, Y2%, 1) ;scan top of picture + X1% = Polypoints%(1, 0) + Y1% = Polypoints%(1, 1) + X2% = Polypoints%(2, 0) + Y2% = Polypoints%(2, 1) + ScanConvert(X1%, Y1%, X2%, Y2%, 2) ;scan Right of picture + X1% = Polypoints%(2, 0) + Y1% = Polypoints%(2, 1) + X2% = Polypoints%(3, 0) + Y2% = Polypoints%(3, 1) + ScanConvert(X1%, Y1%, X2%, Y2%, 3) ;scan bottom of picture + X1% = Polypoints%(3, 0) + Y1% = Polypoints%(3, 1) + X2% = Polypoints%(0, 0) + Y2% = Polypoints%(0, 1) + ScanConvert(X1%, Y1%, X2%, Y2%, 4) ;scan Left of picture + + TextureMap() + EndIf + Next + + UnlockBuffer BackBuffer() + UnlockBuffer ImageBuffer(txt) + + Color 0,255,0 + Text 20,20,"Move Mouse" + + Flip 0 +Wend + +End + + + + + + +; --- texture mapping functions + +Function GetPolygonPoints(ilocal%) ; initially read in a rectangle + For Count% = 0 To 3 + Polypoints%(Count%, 0) = xw(ilocal%+Count%) + Polypoints%(Count%, 1) = yw(ilocal%+Count%) + Next +End Function + +Function FindSmallLargeY() + For Count% = 0 To 3 + Ycoord% = Polypoints%(Count%, 1) + If Ycoord% < Miny% Then ; is this the New lowest y co-ord? + Miny% = Ycoord% ; Yes... + End If + If Ycoord% > Maxy% Then ; is this the New highest y co-ord? + Maxy% = Ycoord% ; Yes... + End If + Next +End Function + +Function ScanConvert (X1%, Y1%, X2%, Y2%, Pside) + If Y2% < Y1% Then + temp%=X1% : X1%=X2% : X2%=temp% + temp%=Y1% : Y1%=Y2% : Y2%=temp% + Lineheight% = (Y2% - Y1%) + ScanLeftSide(X1%, X2%, Y1%, Lineheight%, Pside) + Else + Lineheight% = (Y2% - Y1%) + ScanRightSide(X1%, X2%, Y1%, Lineheight%, Pside) + End If +End Function + +Function ScanLeftSide (X1%, X2%, Ytop%, Lineheight%, Pside) + Lineheight% = Lineheight% + 1 ; prevent divide by zero + Xadd = (X2% - X1%) Shl 16 + Xadd = Xadd / Lineheight% + + + If Pside = 1 Then + Px = Pwidth% - 1 + Py = 0 + Pxadd = -Pwidth% / Lineheight% + Pyadd = 0 + End If + If Pside = 2 Then + Px = Pwidth% + Py = Pheight% + Pxadd = 0 + Pyadd = -Pheight% / Lineheight% + End If + If Pside = 3 Then + Px = 0 + Py = Pheight% + Pxadd = Pwidth% / Lineheight% + Pyadd = 0 + End If + If Pside = 4 Then + Px = 0 + Py = 0 + Pxadd = 0 + Pyadd = Pheight% / Lineheight% + End If + + x = X1% Shl 16 + For y% = 0 To Lineheight% + Ytopy%=Ytop%+y% + If Ytopy%<0 Then Ytopy%=0 + Lefttable(Ytopy%, 0) = x Sar 16 ;polygon x + Lefttable(Ytopy%, 1) = Px ;picture x + Lefttable(Ytopy%, 2) = Py ;picture y + x = x + Xadd ;Next polygon x + Px = Px + Pxadd ;Next picture x + Py = Py + Pyadd ;Next picture y + Next +End Function + +Function ScanRightSide (X1%, X2%, Ytop%, Lineheight%, Pside) + Lineheight% = Lineheight% + 1 ; No divide by zero + Xadd = (X2% - X1%) Shl 16 + Xadd = Xadd / Lineheight% + + If Pside = 1 Then + Px = 0 + Py = 0 + Pxadd = Pwidth% / Lineheight% + Pyadd = 0 + End If + If Pside = 2 Then + Px = Pwidth% + Py = 0 + Pxadd = 0 + Pyadd = Pheight% / Lineheight% + End If + If Pside = 3 Then + Px = Pwidth% + Py = Pheight% + Pxadd = -Pwidth% / Lineheight% + Pyadd = 0 + End If + If Pside = 4 Then + Px = 0 + Py = Pheight% + Pxadd = 0 + Pyadd = -Pheight% / Lineheight% + End If + + x = X1% Shl 16 + For y% = 0 To Lineheight% + Ytopy%=Ytop%+y% + If Ytopy%<0 Then Ytopy%=0 + Righttable(Ytopy%, 0) = x Sar 16 ;polygon x + Righttable(Ytopy%, 1) = Px ;picture x + Righttable(Ytopy%, 2) = Py ;picture y + x = x + Xadd ;Next polygon x + Px = Px + Pxadd ;Next picture x + Py = Py + Pyadd ;Next picture y + Next +End Function + + + + + +Function TextureMap() + For y% = Miny% To Maxy% + If y>0 And y<=239 + Polyx1% = Lefttable((y%), 0) + Px1 = Lefttable(y%, 1) + Py1 = Lefttable(y%, 2) + + Polyx2% = Righttable((y%), 0) + Px2 = Righttable(y%, 1) + Py2 = Righttable(y%, 2) + Linewidth% = Polyx2% - Polyx1% + Linewidth%=Linewidth% Or 1 + Pxadd = ((Px2 - Px1)) / Linewidth% + Pyadd = ((Py2 - Py1)) / Linewidth% + + For x% = Polyx1% To Polyx2% + If x>0 And x<=319 + Col%=ReadPixelFast((Px1 Shr 16),(Py1 Shr 16),imgtxt) + WritePixelFast x%,y%,Col% + EndIf + Px1 = Px1 + Pxadd + Py1 = Py1 + Pyadd + Next + EndIf + Next +End Function + + + +.building +Data 23 ; number of pts -1 +; x y z + +Data -100,-100,-100 +Data -100,100,-100 +Data -100,100,100 +Data -100,-100,100 + +Data -100,-100,-100 +Data -100,-100,100 +Data 100,-100, 100 +Data 100,-100, -100 + +Data -100,100,-100 +Data 100,100,-100 +Data 100,100, 100 +Data -100,100, 100 + +Data 100,-100,-100 +Data 100,-100,100 +Data 100,100,100 +Data 100,100,-100 + +Data -100,100,100 +Data 100,100,100 +Data 100,-100,100 +Data -100,-100,100 + +Data -100,100,-100 +Data -100,-100,-100 +Data 100,-100,-100 +Data 100,100,-100 \ No newline at end of file diff --git a/programs/demos/mos3de/mos3de.asm b/programs/demos/mos3de/mos3de.asm new file mode 100644 index 0000000000..567d2b26c5 --- /dev/null +++ b/programs/demos/mos3de/mos3de.asm @@ -0,0 +1,2168 @@ +;MOS3DE V 0.1 - MENUETOS 3D Engine V 0.1 + +; Compile with FASM for MENUET + +; this is a very early Version: I'm so happy that it runs at all. +; Of course it's a bad ASM style and it can be optimized a lot. + +; anyway - I have thought I uploap this so other PPL might optimize it +; as well or transform it to something completely diffrent. + +; There are some Mouse- and Keyboardhandling Subs and Constructs. They are here +; because I will probably use them for the Navigation in a First Person +; Perspective Game - which is the goal of this project. +; http://www.melog.ch/mos_pub/ dietermarfurt@angelfire.com + +; of course you can remove or replace them. It has only linear Texturemapping. +; Perspective Correction is a future option. +; a flag for multiple Textures selection should be implemented in the +; Meshfile Format. As I said - it's a very erarly version. + +use32 + + org 0x0 + + db 'MENUET01' ; 8 byte id + dd 0x01 ; header version + dd START ; start of code + dd I_END ; size of image + dd 0x200000 ; memory for app + dd 0x7fff0 ; esp + dd 0x0 , 0x0 ; I_Param , I_Icon + +IMAGE_W = 320 +IMAGE_H = 240 + +START: ; start of execution + + call init_gfx + call draw_window ; at first, draw the window + +gamestart: +; ******* MOUSE CHECK ******* + mov eax,37 + mov ebx,1 ; check mouseposition + int 0x40 + + mov ebx,eax + shr eax,16 + and eax,0x0000FFFF ; mousex + and ebx,0x0000FFFF ; mousey + mov [mousex],eax + mov [mousey],ebx + cmp eax,5 ; mouse out of window ? + jb check_refresh ; it will prevent an app-crash + cmp ebx,22 + jb check_refresh + cmp eax, IMAGE_W + jg check_refresh + cmp ebx,221 + jg check_refresh + + cmp eax,160 ; navigating? + jb m_left + cmp eax,170 ; + jg m_right +continue: + cmp ebx,100 ; + jb s_up + cmp ebx,144 ; + jg s_down +; ******* END OF MOUSE CHECK ******* +check_refresh: + + mov eax,23 ; wait for system event with 10 ms timeout + mov ebx,1 ; wait 10 ms, then continue + int 0x40 +; mov eax,11 ; or use this for full speed instead +; int 0x40 + + cmp eax,1 ; window redraw request ? + je red2 + cmp eax,2 ; key in buffer ? + je key2 + cmp eax,3 ; button in buffer ? + je button2 + + call clear_screen + call updateworld + call put_screen + ;call log ; used for debugging + + mov edi,[mouseya] ; check flag if a refresh has to be done + cmp edi,1 + jne gamestart + mov [mouseya],dword 0 + + jmp gamestart + +; END OF MAINLOOP + +red2: ; redraw + call draw_window +; call draw_stuff + jmp gamestart + +key2: ; key + mov eax,2 + int 0x40 + cmp al,1 + je gamestart ; keybuffer empty + + cmp ah,27 ; esc=End App + je finish + + cmp ah,178 ; up + je s_up + cmp ah,177 ; down + je s_down + cmp ah,176 ; left + je s_left + cmp ah,179 ; right + je s_right + + jmp gamestart ; was any other key + + +s_up: ; walk forward (key or mouse) + mov eax,[vpx] + mov ebx,[vpy] + + + mov ecx,[vheading] + imul ecx,4 + add ecx,sinus + mov edi,[ecx] + + mov edx,[vheading] + imul edx,4 + add edx,sinus + add edx,3600 + cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 + jb ok200 + sub edx,14400 + ok200: + mov esi,[edx] +; sal esi,1 ; edit walking speed here +; sal edi,1 + + add eax,edi ; newPx + add ebx,esi ; newPy + mov edi,eax ; newPx / ffff + mov esi,ebx ; newPy / ffff + sar edi,16 + sar esi,16 + mov ecx,esi + sal ecx,5 ; equal *32 + add ecx,edi + add ecx,grid + cmp [ecx],byte 0 ; collision check + jne cannotwalk0 + mov [vpx],eax + mov [vpy],ebx + mov [mouseya],dword 1 ; set refresh flag +cannotwalk0: + jmp check_refresh + +s_down: ; walk backward + mov eax,[vpx] + mov ebx,[vpy] + + mov ecx,[vheading] + imul ecx,4 + add ecx,sinus + mov edi,[ecx] + + mov edx,[vheading] + imul edx,4 + add edx,sinus + add edx,3600 + cmp edx,eosinus ;cosinus taken from (sinus plus 900) mod 3600 + jb ok201 + sub edx,14400 + ok201: + + mov esi,[edx] +; sal esi,1 ; edit walking speed here +; sal edi,1 + + sub eax,edi ; newPx + sub ebx,esi ; newPy + mov edi,eax ; newPx / ffff + mov esi,ebx ; newPy / ffff + sar edi,16 + sar esi,16 + mov ecx,esi + sal ecx,5 + add ecx,edi + add ecx,grid + cmp [ecx],byte 0 + jne cannotwalk1 + mov [vpx],eax + mov [vpy],ebx + mov [mouseya],dword 1 +cannotwalk1: + jmp check_refresh + +s_left: ; turn left (key) + mov edi,[vheading] ; heading + add edi,50 + cmp edi,1800 + jb ok_heading0 + sub edi,1800 + ok_heading0: + mov [vheading],edi + mov [mouseya],dword 1 + jmp check_refresh + +s_right: ; turn right + mov edi,[vheading] + sub edi,50 + cmp edi,-1 + jg ok_heading1 + add edi,1800 + ok_heading1: + mov [vheading],edi + mov [mouseya],dword 1 + jmp check_refresh + +m_left: ; turn left (mouse) + mov edi,[vheading] ; heading + mov ecx,160 + sub ecx,eax + sar ecx,2 + add edi,ecx + cmp edi,1800 + jb ok_heading2 + sub edi,1800 + ok_heading2: + mov [vheading],edi + mov [mouseya],dword 1 + jmp continue ; allow both: walk and rotate + +m_right: ; turn right + mov edi,[vheading] + sub eax,170 + sar eax,2 + sub edi,eax + cmp edi,-1 + jg ok_heading3 + add edi,1800 + ok_heading3: + mov [vheading],edi + mov [mouseya],dword 1 + jmp continue + + + + button2: ; button + mov eax,17 ; get id + int 0x40 + cmp ah,1 ; button id=1 ? + jne gamestart + +; eo GAME mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm +finish: + mov eax,-1 ; close this program + int 0x40 + + +; ********************************************* +; ******* WINDOW DEFINITIONS AND DRAW ******** +; ********************************************* + + +draw_window: + + mov eax,12 ; function 12:tell os about windowdraw + mov ebx,1 ; 1, start of draw; 2 - end + int 0x40 + + mov eax, 48 ; get skin height + mov ebx, 4 + int 0x40 + + lea ecx,[eax + (119 shl 16) + IMAGE_H + 4] + mov ebx,192*65536+IMAGE_W+9 ; [x start] *65536 + [x size] + mov edx,0x74000000 ; skinned window, not resizable + mov edi,labelt ; window title + mov eax,0 ; function 0 : define and draw window + int 0x40 + + mov eax,12 + mov ebx,2 + int 0x40 + + ret + + +; --------------------------------------------------------------------- +init_gfx: + +; Pwidth = 63 Shl 16 ;original texture width in pixels -1 shl 16 +; Pheight = 63 Shl 16 ;original texture height in pixels -1 shl 16 + + mov [pwidth],dword 63 + shl dword[pwidth],16 + mov [pheight],dword 63 + shl dword[pheight],16 + +;; Read in a mesh + mov eax,0 ; tex1+4 + mov edi,anz + add edi,4 ; beginning of mesh data + +;using a copy will allow inverse kinematic transformations (future option) + + readmesh: + mov edx,eax + add edx,a_xwww ; desti + mov ecx,[edi] ; value in ecx + mov [edx],ecx + add edi,4 + ;--- + mov edx,eax + add edx,a_ywww ; desti + mov ecx,[edi] ; value in ecx + mov [edx],ecx + add edi,4 + ;--- + mov edx,eax + add edx,a_zwww ; desti + mov ecx,[edi] ; value in ecx + mov [edx],ecx + add edi,4 + ;--- + + add eax,4 + cmp edi,eo_mesh + jl readmesh + +; zoom=-500 + mov [zoom],dword -500 + +ret +;------------------------------------------------------------------ + + + +log: +;write some Variable info to screen (used for debugging) + pusha + mov edi,wonder ;a_xwww + ;add edi,200 + mov [remecx], dword 24 + print: + mov eax,47 + mov ebx,0x000f0000 + ;mov ebx,0x000f0100 ; hex + mov ecx,[edi] + mov edx,[remecx] + or edx,0x000C0000 + mov esi,0x00ff0000 + int 0x40 + add [remecx],dword 8 + add edi,dword 4 + cmp [remecx], dword 250 + jl print + popa +ret + + +; --------------------------------------------------------------------- +; UPDATE WORLD +; --------------------------------------------------------------------- + + updateworld: + + mov edx,[a_xw] + +; Miny% = 32767 +; Maxy% = 0 + mov [miny],dword 32737 + mov [maxy],dword 0 + +; Color 0,0,0 ; clear screen - l8er +; Rect 0,0,320,240,1 + +; a=a+1.0 ; automatic rotation... + add [a],dword 10 + cmp [a],dword 3598 + jl ok360 + mov [a],dword 0 + ok360: + +; If a>359.9 Then a=0 +; alpha=a +; beta=a +; gamma=a+a Mod 360 + + mov eax,[a] + mov [alpha],eax + mov [beta], eax + mov [gamma],eax + add [gamma],eax + cmp [gamma],dword 3599 + jl ok360_2 + sub [gamma],dword 3600 + ok360_2: + +; mausy#=0.1+(MouseY()/50.0) ; >>>>>>l8er + + mov eax,[alpha] + mov [alphacopy],eax + mov eax,[beta] + mov [betacopy],eax + mov eax,[gamma] + mov [gammacopy],eax + +; For i=0 To anz ; do rotation and projection etc + mov esi,0 + for_i: + +; ***************************** +; ROTATE pitch jaw roll... +; ***************************** + +;; xl1#=zwww(i)*Sin(gamma)+xwww(i)*Cos(gamma) + mov eax,esi + imul eax,4 + add eax,a_zwww + mov ebx,[eax] + mov eax,[gammacopy] + call get_sinus + imul ebx,[eax] + mov [tempdiv],ebx ; is zwww(i)*sin(gamma) + + mov eax,esi + imul eax,4 + add eax,a_xwww + mov ebx,[eax] + + mov eax,[gammacopy] + call get_cosinus + imul ebx,[eax] ; is xwww*cos(gamma + + add ebx,[tempdiv] + mov eax,ebx + ;or eax,1 + cdq + mov ecx,6553 + idiv ecx + mov [xl1],eax + + +;; yl1#=ywww(i) + mov eax,esi + imul eax,4 + add eax,a_ywww + mov ebx,[eax] + mov [yl1],ebx + + +;; zl1#=zwww(i)*Cos(gamma)-xwww(i)*Sin(gamma) + mov eax,esi + imul eax,4 + add eax,a_zwww + mov ebx,[eax] + mov eax,[gammacopy] + call get_cosinus + imul ebx,[eax] + mov [tempdiv],ebx ; is zwww(i)*cos(gamma) + + mov eax,esi + imul eax,4 + add eax,a_xwww + mov ebx,[eax] + + mov eax,[gammacopy] + call get_sinus + imul ebx,[eax] ; is xwww*sin(gamma + + sub [tempdiv],ebx + mov eax,[tempdiv] + ;or eax,1 + cdq + mov ecx,6553 ; once 6500 + idiv ecx + mov [zl1],eax + + + +; +;----------------------------------------------------------------------- +;; xl2#=xl1 + mov eax,[xl1] + mov [xl2],eax + +;; yl2#=yl1*Cos(beta)-zl1*Sin(beta) + mov ebx,[yl1] + mov eax,[betacopy] + call get_cosinus + imul ebx,[eax] + mov [tempdiv],ebx ; is yl1*cos(beta) + + mov ebx,[zl1] ; zl1 + + mov eax,[betacopy] + call get_sinus + imul ebx,[eax] ; is zl1*sin(beta + + sub [tempdiv],ebx + mov eax,[tempdiv] + ;or eax,1 + cdq + mov ecx,6553 + idiv ecx + mov [yl2],eax + + + +;; zl2#=yl1*Sin(beta)+zl1*Cos(beta) + mov ebx,[yl1] + mov eax,[betacopy] + call get_sinus + imul ebx,[eax] + mov [tempdiv],ebx ; is yl1*sin(beta) + + mov ebx,[zl1] ; zl1 + + mov eax,[betacopy] + call get_cosinus + imul ebx,[eax] ; is zl1*cos(beta + + add ebx,[tempdiv] + mov eax,ebx + ;or eax,1 + cdq + mov ecx,6553 + idiv ecx + mov [zl2],eax + + +;----------------------------------------------------------------------- +;; xl3#=(yl2*Sin(alpha)+xl2*Cos(alpha)) + mov ebx,[yl2] + mov eax,[alphacopy] + call get_sinus + imul ebx,[eax] + mov [tempdiv],ebx ; is yl2*sin(alpha) + + mov ebx,[xl2] ; xl2 + mov eax,[alphacopy] + call get_cosinus + imul ebx,[eax] ; is xl2*cos(alpha + + add ebx,[tempdiv] + mov eax,ebx + ;or eax,1 + cdq + mov ecx,6553 + idiv ecx + mov [xl3],eax + + +;; yl3#=(yl2*Cos(alpha)-xl2*Sin(alpha)) + mov ebx,[yl2] + mov eax,[alphacopy] + call get_cosinus + imul ebx,[eax] + mov [tempdiv],ebx ; is yl2*cos(alpha) + + mov ebx,[xl2] ; xl2 + mov eax,[alphacopy] + call get_sinus + imul ebx,[eax] ; is xl2*sin(alpha + + sub [tempdiv],ebx + mov eax,[tempdiv] + ;or eax,1 + cdq + mov ecx,6553 + idiv ecx + mov [yl3],eax + + +;; zl3#=(zl2) + mov eax,[zl2] + mov [zl3],eax + +;----------------------------------------------------------------------- + +; ********************* +; PROJECTING 3D to 2D + +; If yloc# - Zoom <> 0 Then yloc = Int(yl3 ) * 200 / (zl3 - Zoom) + ;------- + mov ecx,[zl3] + sub ecx,[zoom] + mov eax,[yl3] + imul eax,200 + or eax,1 + cdq + idiv ecx + ;mov eax,[yl3] ; no perpective + mov [yloc],eax + ;------ + + ; If xloc# - Zoom <> 0 Then xloc = Int(xl3 ) * 200 / (zl3 - Zoom) + + ;------ + mov ecx,[zl3] + sub ecx,[zoom] + mov eax,[xl3] + imul eax,200 + or eax,1 + cdq + idiv ecx + ;mov eax,[xl3] ; no perspective + mov [xloc],eax + ;------ + +; xw(i)=((mausy#)*xloc) +160 +; yw(i)=((mausy#)*yloc) +120 +; zw(i)=(zl3+256) + + mov eax,[mousey] ; define scaling + mov [factor],eax + cmp eax,32000 + jl positivemousey + mov [factor],dword 10 + jmp less220 + positivemousey: + cmp eax,10 + jg more20 + mov [factor],dword 10 + jmp less220 + more20: + cmp eax,220 + jl less220 + mov [factor],dword 220 + less220: + + mov eax,esi ; i... + imul eax,4 + + mov ecx,[xloc] + mov eax,esi + imul eax,4 + mov ebx,a_xw + add ebx,eax + imul ecx,[factor] + sar ecx,5 + mov [ebx],ecx + add [ebx],dword 160 + + mov ecx,[yloc] +; mov eax,esi +; imul eax,4 + mov ebx,a_yw + add ebx,eax + imul ecx,[factor] + sar ecx,5 + mov [ebx],ecx + add [ebx],dword 120 + + mov ecx,[zl3] ; used for z sorting + mov ebx,a_zw + add ebx,eax + mov [ebx],ecx + add [ebx],dword 256 + +; Next + inc esi + cmp esi,[anz] + jle for_i +;--------------- + + + mov [sorted_quads],dword 0 + + +; ; z-sorting... +; For i=0 To 10000 ; clear old info +; zbuffer(i)=-1 +; Next + mov eax,zbuffer + mov ebx,eax + add ebx,40000 + clear_zbuffer: + mov [eax],dword 1000000 + add eax,4 + cmp eax,ebx + jle clear_zbuffer + + + +; For i=0 To anz-3 Step 4 + mov eax,0 + mov ebx,[anz] + for_i_0_to_anz: + +; If zw(i)>=0 ; clip Quads behind Camera + mov ecx,eax + imul ecx,4 + add ecx,a_zw + mov edx,[ecx] + cmp edx,0 + jle behindcamera + +; zwmax=zw(i) + mov esi,edx + +; ;find quads internal most far point +; If zwmax-1 And zwmax<10000 +; zwmax=zwmax+1 +; Wend + mov eax,esi ; is actual z/poititon of point (used for z-order) + imul eax,4 + + findslot: + mov ebx,eax + add ebx,zbuffer + cmp [ebx],dword 1000000 + je found_empty_slot + add eax,4 + cmp eax,40000 + jl findslot + found_empty_slot: + +; zbuffer(zwmax)=i + inc dword[sorted_quads] ; check slot writing + + mov ecx,[i] + mov [ebx],ecx + + pop ebx + pop eax + +; EndIf + behindcamera: +; Next + add eax,4 + cmp eax,[anz] ;ebx + jl for_i_0_to_anz + ;---------------- + + ;mov [rendered_quads],dword 0 ; debugging... + +; For i2=10000 To 0 Step -1 ; reading quads in z-order from far to near + mov eax,40000 + mov ebx,0 + for_i_0_to_10000: + + +; i=zbuffer(i2) + mov edx,eax + add edx,zbuffer + mov ecx,[edx] ; i... + +; If i>-1 And i< anz-2 ; if it isn't -1 then it's a Quad Point 1 ID + cmp ecx,1000000 + je is_empty_slot + + ;inc dword[rendered_quads] ; used for debugging + +; ;***Mapping*** + +; ;GetPolygonPoints(i) +; ;FindSmallLargeY() + + mov [ilocal],ecx + call get_polygon_points + call find_small_large_y + +; X1% = Polypoints%(0, 0) + mov edi,[polypoints] + mov [x1],edi +; Y1% = Polypoints%(0, 1) + mov edi,[polypoints+4] + mov [y1],edi +; X2% = Polypoints%(1, 0) + mov edi,[polypoints+8] + mov [x2],edi +; Y2% = Polypoints%(1, 1) + mov edi,[polypoints+12] + mov [y2],edi + +; ScanConvert(X1%, Y1%, X2%, Y2%, 1) ;scan top of picture + mov [pside],dword 1 + call scan_convert + +; X1% = Polypoints%(1, 0) + mov edi,[polypoints+8] + mov [x1],edi +; Y1% = Polypoints%(1, 1) + mov edi,[polypoints+12] + mov [y1],edi +; X2% = Polypoints%(2, 0) + mov edi,[polypoints+16] + mov [x2],edi +; Y2% = Polypoints%(2, 1) + mov edi,[polypoints+20] + mov [y2],edi + +; ScanConvert(X1%, Y1%, X2%, Y2%, 2) ;scan Right of picture + mov [pside],dword 2 + call scan_convert + +; X1% = Polypoints%(2, 0) + mov edi,[polypoints+16] + mov [x1],edi +; Y1% = Polypoints%(2, 1) + mov edi,[polypoints+20] + mov [y1],edi +; X2% = Polypoints%(3, 0) + mov edi,[polypoints+24] + mov [x2],edi +; Y2% = Polypoints%(3, 1) + mov edi,[polypoints+28] + mov [y2],edi + +; ScanConvert(X1%, Y1%, X2%, Y2%, 3) ;scan bottom of picture + mov [pside],dword 3 + call scan_convert + +; X1% = Polypoints%(3, 0) + mov edi,[polypoints+24] + mov [x1],edi +; Y1% = Polypoints%(3, 1) + mov edi,[polypoints+28] + mov [y1],edi +; X2% = Polypoints%(0, 0) + mov edi,[polypoints] + mov [x2],edi +; Y2% = Polypoints%(0, 1) + mov edi,[polypoints+4] + mov [y2],edi + +; ScanConvert(X1%, Y1%, X2%, Y2%, 4) ;scan Left of picture + mov [pside],dword 4 + call scan_convert + +; TextureMap() + call texture_map + +; EndIf + is_empty_slot: + +; Next + sub eax,4 + cmp eax,0 ;ebx + jge for_i_0_to_10000 + +;Wend +ret + +;End + + + + +; --------------------------------------------------------------------- + +get_sinus: + imul eax,4 ; expects degree*10 + add eax,sinus +ret + +get_cosinus: + imul eax,4 ; expects degree*10 + add eax,sinus + add eax,10804 + cmp eax,eosinus + jl ok3600sub + sub eax,14400 + ok3600sub: +ret + + + + + + +;; ------------------ texture mapping functions----------------------------- + +;Function GetPolygonPoints(ilocal%) ; initially read in a rectangle +get_polygon_points: +pusha +; For Count% = 0 To 3 +; Polypoints%(Count%, 0) = xw(ilocal%+Count%) +; Polypoints%(Count%, 1) = yw(ilocal%+Count%) +; Next + mov eax,0 +; --- + count_0_3: + + mov ebx,eax + imul ebx,8 ; count + add ebx,polypoints ; desti adr + mov ecx,eax + add ecx,[ilocal] + imul ecx,4 + add ecx,a_xw ; src adr + mov edx,[ecx] + mov [ebx],edx + ; ---- + add ebx,4 ; desti 2 + mov ecx,eax + add ecx,[ilocal] + imul ecx,4 + add ecx,a_yw ; src 2 + mov edx,[ecx] + mov [ebx],edx + ; ---- + inc eax + cmp eax,4 + jl count_0_3 + +;End Function + popa +ret + +; ------------------------------------------------------------------------- + +;Function FindSmallLargeY() +find_small_large_y: + pusha +; For Count% = 0 To 3 + mov eax,0 + for03b: + +; Ycoord% = Polypoints%(Count%, 1) + mov ebx,eax + imul ebx,8 + add ebx,4 + add ebx,polypoints + mov ecx,[ebx] + +; If Ycoord% < Miny% Then ; is this the New lowest y co-ord? +; Miny% = Ycoord% ; Yes... +; End If + cmp ecx,[miny] + jge isge0 + mov [miny],ecx + isge0: + +; If Ycoord% > Maxy% Then ; is this the New highest y co-ord? +; Maxy% = Ycoord% ; Yes... +; End If + cmp ecx,[maxy] + jle isge1 + mov [maxy],ecx + isge1: + +; Next + inc eax + cmp eax,4 + jl for03b + +;End Function + popa +ret + +; ------------------------------------------------------------------------- + + +;Function ScanConvert (X1%, Y1%, X2%, Y2%, Pside) +scan_convert: + pusha +; If Y2% < Y1% Then + mov eax,[y1] + mov ebx,[y2] + cmp eax,ebx + jl l_else0 + +; temp%=X1% : X1%=X2% : X2%=temp% +; temp%=Y1% : Y1%=Y2% : Y2%=temp% +; Lineheight% = (Y2% - Y1%) +; ScanLeftSide(X1%, X2%, Y1%, Lineheight%, Pside) + mov [y1],ebx ; swap y,x + mov [y2],eax + mov eax,[x1] + mov ebx,[x2] + mov [x1],ebx + mov [x2],eax + mov eax,[y1] + mov ebx,[y2] + ; eo swap + sub ebx,eax + mov [lineheight],ebx + call scan_left_side + jmp l_endif0 + +; Else + l_else0: + +; Lineheight% = (Y2% - Y1%) +; ScanRightSide(X1%, X2%, Y1%, Lineheight%, Pside) + sub ebx,eax + mov [lineheight],ebx + call scan_right_side + +; End If + l_endif0: +;End Function + popa +ret +; ------------------------------------------------------------------------- + + +;Function ScanLeftSide (X1%, X2%, Ytop%, Lineheight%, Pside) + scan_left_side: + pusha + + mov eax,[y1] + mov [ytop],eax + +; Lineheight% = Lineheight% + 1 ; prevent divide by zero + inc dword[lineheight] +; Xadd = (X2% - X1%) Shl 16 + mov edi,[x2] + sub edi,[x1] + sal edi,16 + +; Xadd = Xadd / Lineheight% + mov eax,edi ; whole + cdq + mov ebx,[lineheight] ; divisor +; or ebx,1 + idiv ebx ; result now in eax + mov [v_xadd],eax + +; ------------ +; If Pside = 1 Then + cmp [pside],dword 1 + jne psidenot10 + +; Px = Pwidth% - 1 +; Py = 0 + mov edi,[pwidth] + mov esi,edi + sub esi,1 + mov [px],esi + mov [py],dword 0 +; Pxadd = -Pwidth% / Lineheight% +; Pyadd = 0 + mov eax,0 + sub eax,[pwidth] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx ; result now in eax + mov [pxadd],eax + mov [pyadd],dword 0 +; End If + psidenot10: + +; ------------ +; If Pside = 2 Then + cmp [pside],dword 2 + jne psidenot20 + +; Px = Pwidth% +; Py = Pheight% + mov edi,[pwidth] + mov esi,[pheight] + mov [px],edi + mov [py],esi +; Pxadd = 0 +; Pyadd = -Pheight% / Lineheight% + mov [pxadd],dword 0 + mov eax,0 + sub eax,[pheight] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx ; result now in eax + mov [pyadd],eax +; End If + psidenot20: + +; ------------ +; If Pside = 3 Then + cmp [pside],dword 3 + jne psidenot30 +; Px = 0 +; Py = Pheight% + mov [px],dword 0 + mov edi,[pheight] + mov [py],edi +; Pxadd = Pwidth% / Lineheight% +; Pyadd = 0 + mov eax,[pwidth] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx ; result now in eax + mov [pxadd],eax + mov [pyadd],dword 0 +; End If + psidenot30: + +; ------------ +; If Pside = 4 Then + cmp [pside],dword 4 + jne psidenot40 ; jne +; Px = 0 +; Py = 0 + mov [px],dword 0 + mov [py],dword 0 +; Pxadd = 0 +; Pyadd = Pheight% / Lineheight% + mov [pxadd],dword 0 + mov eax,[pheight] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx + mov [pyadd],eax +; End If + psidenot40: +; ------------ +; x = X1% Shl 16 + mov edx,[x1] ; used for x + mov edi,[px] ; used for px + mov esi,[py] ; used for py + sal edx,16 + ;mov [x],edx +;------ +; For y% = 0 To Lineheight% + mov eax,0 + for0lineheight0: + +; Ytopy%=Ytop%+y% + mov ebx,[ytop] + mov [ytopy],ebx + add [ytopy],eax + +; If Ytopy%<0 Then Ytopy%=0 ; prevent read pre array + cmp [ytopy], dword 0 + jge isnot00 + mov [ytopy],dword 0 + isnot00: + +; Lefttable(Ytopy%, 0) = x Sar 16 ;polygon x + mov ecx,[ytopy] + imul ecx,16 + add ecx,lefttable + mov [ecx],edx + sar dword[ecx],16 + +; Lefttable(Ytopy%, 1) = Px ;picture x + add ecx,4 + mov [ecx],edi + +; Lefttable(Ytopy%, 2) = Py ;picture y + add ecx,4 + mov [ecx],esi + +; x = x + Xadd ;Next polygon x +; Px = Px + Pxadd ;Next picture x +; Py = Py + Pyadd ;Next picture y + add edx,[v_xadd] + add edi,[pxadd] + add esi,[pyadd] + +;------ +; Next + inc eax + cmp eax,[lineheight] + jl for0lineheight0 + + +;End Function + popa +ret + +; ------------------------------------------------------------------------- + +; ------------------------------------------------------------------------- + +;Function ScanRightSide (X1%, X2%, Ytop%, Lineheight%, Pside) + scan_right_side: + pusha + mov eax,[y1] + mov [ytop],eax + +; Lineheight% = Lineheight% + 1 ; prevent divide by zero + inc dword[lineheight] + +; Xadd = (X2% - X1%) Shl 16 + mov edi,[x2] + sub edi,[x1] + sal edi,16 +; Xadd = Xadd / Lineheight% + mov eax,edi ; whole + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx ; result now in eax + mov [v_xadd],eax + + + + ; ------------ +; If Pside = 1 Then + cmp [pside],dword 1 + jne psidenot11 +; Px = 0 +; Py = 0 + mov [px],dword 0 + mov [py],dword 0 +; Pxadd = Pwidth% / Lineheight% +; Pyadd = 0 + mov eax,[pwidth] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx ; result now in eax + mov [pxadd],eax + mov [pyadd],dword 0 +; End If + psidenot11: +; ------------ + +; If Pside = 2 Then + cmp [pside],dword 2 + jne psidenot21 +; Px = Pwidth% +; Py = 0 + mov edi,[pwidth] + mov [px],edi + mov [py],dword 0 +; Pxadd = 0 +; Pyadd = Pheight% / Lineheight% + mov [pxadd],dword 0 + mov eax,[pheight] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx ; result now in eax + mov [pyadd],eax +; End If + psidenot21: +; ------------ + +; If Pside = 3 Then + cmp [pside],dword 3 + jne psidenot31 +; Px = Pwidth% +; Py = Pheight% + mov edi,[pwidth] + mov [px],edi + mov esi,[pheight] + mov [py],esi +; Pxadd = -Pwidth% / Lineheight% +; Pyadd = 0 + mov eax,0 + sub eax,[pwidth] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,3 ; prevent div 0 + idiv ebx ; result now in eax + mov [pxadd],eax + mov [pyadd],dword 0 +; End If + psidenot31: + +; ------------ +; If Pside = 4 Then + cmp [pside],dword 4 + jne psidenot41 ; jne +; Px = 0 +; Py = Pheight% + mov [px],dword 0 + mov esi,[pheight] + mov [py],esi +; Pxadd = 0 +; Pyadd = -Pheight% / Lineheight% + mov [pxadd],dword 0 + mov eax,0 + sub eax,[pheight] + cdq + mov ebx,[lineheight] ; divisor + ;or ebx,1 + idiv ebx + mov [pyadd],eax +; End If + psidenot41: + push edx + push edi + push esi +; ------------ +; x = X1% Shl 16 + mov edx,[x1] ; used for x + mov edi,[px] ; used for px + mov esi,[py] ; used for py + sal edx,16 + +cmp [lineheight],dword 100 ; lineheight is up to 33 mio ??? +jle okok +mov eax,[lineheight] +mov [wonder+4],eax +okok: + +;------ +; For y% = 0 To Lineheight% + mov eax,0 + for0lineheight1b: +; Ytopy%=Ytop%+y% + mov ebx,[ytop] + mov [ytopy],ebx + add [ytopy],eax + +; If Ytopy%<0 Then Ytopy%=0 ; prevent read pre array + cmp [ytopy], dword 0 + jg isnot01 + mov [ytopy],dword 0 + isnot01: +; righttable(Ytopy%, 0) = x Sar 16 ;polygon x + mov ecx,[ytopy] + imul ecx,16 + add ecx,righttable + mov [ecx],edx + sar dword[ecx],16 + +; righttable(Ytopy%, 1) = Px ;picture x + add ecx,4 + mov [ecx],edi +; righttable(Ytopy%, 2) = Py ;picture y + add ecx,4 + mov [ecx],esi +; x = x + Xadd ;Next polygon x +; Px = Px + Pxadd ;Next picture x +; Py = Py + Pyadd ;Next picture y + add edx,[v_xadd] + add edi,[pxadd] + add esi,[pyadd] +;------ +; Next + inc eax + cmp eax,[lineheight] + jl for0lineheight1b +dbg2: + pop esi + pop edi + pop edx + +;End Function + popa +ret + + +; ------------------------------------------------------------------------- + +; well I'm shure the following Sub CAN and SHOULD be optimized a LOT. + + +;Function TextureMap() +texture_map: + pusha + +; For y% = Miny% To Maxy% + mov eax,[miny] + for_miny_maxy: + +; If y>0 And y<=239 + cmp eax,0 + jle clipy + cmp eax,239 + jg clipy + + mov [y],eax + +; Polyx1% = Lefttable((y%), 0) + mov ebx,eax + sal ebx,4 + add ebx,lefttable + mov ecx,[ebx] + mov [polyx1],ecx +; Px1 = Lefttable(y%, 1) + add ebx,4 + mov ecx,[ebx] + mov [px1],ecx +; Py1 = Lefttable(y%, 2) + add ebx,4 + mov ecx,[ebx] + mov [py1],ecx + + +; Polyx2% = Righttable((y%), 0) + mov ebx,eax + sal ebx,4 + add ebx,righttable + mov ecx,[ebx] + mov [polyx2],ecx +; Px2 = Righttable(y%, 1) + add ebx,4 + mov ecx,[ebx] + mov [px2],ecx +; Py2 = Righttable(y%, 2) + add ebx,4 + mov ecx,[ebx] + mov [py2],ecx + + +; Linewidth% = Polyx2% - Polyx1% + mov ecx,[polyx2] + sub ecx,[polyx1] + +; Linewidth%=Linewidth% Or 1 + or ecx,1 + mov [linewidth],ecx + +; Pxadd = ((Px2 - Px1)) / Linewidth% + mov eax,[px2] + sub eax,[px1] + cdq + mov ebx,[linewidth] ; divisor + or ebx,1 + idiv ebx ; should be idiv ... probs + mov [pxadd],eax + +; Pyadd = ((Py2 - Py1)) / Linewidth% + mov eax,[py2] + sub eax,[py1] + cdq + mov ebx,[linewidth] ; divisor + or ebx,1 + idiv ebx ; should be idiv ...probs + mov [pyadd],eax + + mov edi,[px1] + mov esi,[py1] + + +; For x% = Polyx1% To Polyx2% + mov eax,[polyx1] + cmp eax,[polyx2] + jge clipxfully + for_polyx1_polyx2: + +; If x>0 And x<=319 + cmp eax,0 + jl clipx + cmp eax,319 + jg clipx + +; Col%=ReadPixelFast((Px1 Shr 16),(Py1 Shr 16),imgtxt) + + mov ebx,edi + sar ebx,16 ; is eq (px1 shr 16)*64 + and ebx,63 + sal ebx,2 ; is x + + mov ecx,esi + sar ecx,16 + and ecx,63 + sal ecx,8 ; y + add ecx,ebx + add ecx,tex1 ; adr of texturepixel now in ecx + + mov edx,[ecx]; rgb now in edx + +; WritePixelFast x%,y%,Col% + mov ebx,[y] + mov [tempdiv],ebx + shl dword [tempdiv],6 + shl ebx,10 + sub ebx,[tempdiv] + ;this was imul ebx,960 ; *1024 - *64 + add ebx,eax + add ebx,eax + add ebx,eax + add ebx,0x80000 + or [ebx],edx +; EndIf + clipx: + +; Px1 = Px1 + Pxadd +; Py1 = Py1 + Pyadd + add edi,dword [pxadd] + add esi,dword [pyadd] + +; Next x + inc eax + cmp eax,[polyx2] + jl for_polyx1_polyx2 + clipxfully: + mov eax,[y] + +; EndIf + clipy: +; Next y + inc eax + cmp eax,[maxy] + jl for_miny_maxy + +;End Function + + +popa +ret +; ------------------------------------------------------------------------- + + + +put_screen: +pusha +mov eax,7 +mov ebx,0x80000 +mov ecx,IMAGE_W*65536+IMAGE_H +mov edx,0 +int 0x40 +popa +ret + + +clear_screen: +push ebx +mov ebx,0x80000 +cls: +mov [ebx],dword 0 +add ebx,4 +cmp ebx,0x80000+(IMAGE_W*IMAGE_H*3) +jl cls +pop ebx +ret + +; ------------------------------------------------------------------------- + +; DATA AREA + + +; cube.inc includes the mesh 3D Data, in this case a simple cube. Any Model +; is theoreticly possible. Check the File, the Format is trivial. +; The Quads should not intersect for a bearable z-sorting. The Quads must be +; clockwise. + +include "CUBE.INC" + +;;------------------------------ + +grid: ; 32*32 Blocks, Map: 0 = Air, 1 to 5 = Wall +; this is a relict from an other program. I leave it here to keep +; the Navigation Subs compatible (planning to recycle them) +db 2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8 +db 1,0,0,0,1,0,0,0,0,0,0,3,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8 +db 5,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8 +db 1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,1,0,0,0,0,3,3,3,3,0,0,0,0,0,0,8 +db 5,0,1,2,3,4,5,6,7,8,2,1,3,3,3,0,5,0,2,1,2,3,0,0,0,0,0,0,0,0,0,8 +db 1,0,0,0,0,0,0,0,0,0,2,3,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,0,0,0,8 +db 5,0,0,0,1,0,0,4,0,0,0,1,0,0,0,0,5,0,0,0,0,3,3,0,3,3,0,0,0,0,0,8 +db 1,1,0,1,1,1,1,4,1,0,1,3,0,0,0,0,5,2,1,2,0,3,0,0,0,3,0,0,0,0,0,8 +db 5,0,0,0,1,0,0,0,0,0,0,1,0,3,3,3,5,0,0,0,0,3,0,0,0,3,0,0,0,0,0,8 +db 1,0,0,0,1,0,0,5,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3,0,0,0,0,0,8 +db 5,0,0,0,0,0,0,5,0,0,0,1,0,0,0,0,5,0,0,0,0,3,0,0,0,0,0,0,0,0,0,8 +db 1,4,4,4,4,4,4,4,4,4,4,3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,8,8 +db 2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,0,0,0,6,6,0,7,7,7,7,7,7,7,7,7,8,8 +db 1,0,0,0,1,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1 +db 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,2,2,2,2,0,0,0,0,3,3,3,3,3,1 +db 1,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,6,0,0,0,0,2,0,0,0,0,3,0,0,0,0,1 +db 5,0,2,3,2,3,2,3,2,3,2,1,0,0,0,0,6,0,2,2,0,2,0,0,0,0,3,0,5,5,0,1 +db 1,0,0,0,0,0,0,4,0,0,0,3,0,0,0,0,6,0,0,2,0,2,0,2,0,0,3,0,0,0,0,1 +db 5,0,0,0,1,0,0,4,0,0,0,1,0,0,0,0,6,0,0,2,2,2,0,2,0,0,3,3,3,3,0,1 +db 1,1,0,1,1,1,1,4,1,0,1,3,7,7,7,0,6,0,0,0,0,0,0,2,0,0,0,0,0,3,0,1 +db 5,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,6,0,0,0,0,2,2,2,0,0,0,0,0,3,0,1 +db 1,0,0,0,1,0,0,5,0,0,0,3,0,0,0,0,6,0,0,0,0,2,0,0,0,0,0,0,0,0,0,1 +db 5,0,0,0,0,0,0,5,0,0,0,1,0,0,0,0,6,0,5,1,0,2,0,0,4,4,0,4,4,0,0,1 +db 1,4,1,4,1,4,1,4,1,4,1,3,0,0,0,0,6,0,0,5,0,2,0,0,0,4,0,4,0,0,0,1 +db 1,0,0,0,0,0,0,4,0,0,0,3,0,3,3,3,6,0,0,1,0,1,0,0,4,4,0,4,4,0,0,1 +db 5,0,0,0,1,0,0,4,0,0,0,1,0,0,0,0,6,0,0,5,0,1,0,4,4,0,0,0,4,4,0,1 +db 1,1,0,1,1,1,1,4,1,0,1,3,0,0,0,0,6,0,0,1,0,1,0,4,0,0,0,0,0,4,0,1 +db 5,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,6,0,0,5,0,1,0,4,0,0,0,0,0,4,0,1 +db 1,0,0,0,1,0,0,5,0,0,0,3,0,0,0,0,6,1,5,1,0,1,0,4,4,0,0,0,4,4,0,1 +db 5,0,0,0,0,0,0,5,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,4,4,4,4,4,0,0,1 +db 1,4,1,4,1,4,1,4,1,4,1,3,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1 +db 2,1,2,1,2,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 + +sinus: +dd 0,11,22,34,45,57,68,80,91,102 +dd 114,125,137,148,160,171,182,194,205,217 +dd 228,240,251,263,274,285,297,308,320,331 +dd 342,354,365,377,388,400,411,422,434,445 +dd 457,468,479,491,502,514,525,536,548,559 +dd 571,582,593,605,616,628,639,650,662,673 +dd 685,696,707,719,730,741,753,764,775,787 +dd 798,810,821,832,844,855,866,878,889,900 +dd 912,923,934,946,957,968,979,991,1002,1013 +dd 1025,1036,1047,1059,1070,1081,1092,1104,1115,1126 +dd 1138,1149,1160,1171,1183,1194,1205,1216,1228,1239 +dd 1250,1261,1272,1284,1295,1306,1317,1328,1340,1351 +dd 1362,1373,1384,1396,1407,1418,1429,1440,1451,1463 +dd 1474,1485,1496,1507,1518,1529,1541,1552,1563,1574 +dd 1585,1596,1607,1618,1629,1640,1651,1663,1674,1685 +dd 1696,1707,1718,1729,1740,1751,1762,1773,1784,1795 +dd 1806,1817,1828,1839,1850,1861,1872,1883,1894,1905 +dd 1916,1926,1937,1948,1959,1970,1981,1992,2003,2014 +dd 2025,2036,2046,2057,2068,2079,2090,2101,2111,2122 +dd 2133,2144,2155,2166,2176,2187,2198,2209,2219,2230 +dd 2241,2252,2262,2273,2284,2295,2305,2316,2327,2337 +dd 2348,2359,2369,2380,2391,2401,2412,2423,2433,2444 +dd 2454,2465,2476,2486,2497,2507,2518,2529,2539,2550 +dd 2560,2571,2581,2592,2602,2613,2623,2634,2644,2655 +dd 2665,2675,2686,2696,2707,2717,2728,2738,2748,2759 +dd 2769,2779,2790,2800,2811,2821,2831,2841,2852,2862 +dd 2872,2883,2893,2903,2913,2924,2934,2944,2954,2965 +dd 2975,2985,2995,3005,3015,3026,3036,3046,3056,3066 +dd 3076,3086,3096,3106,3117,3127,3137,3147,3157,3167 +dd 3177,3187,3197,3207,3217,3227,3237,3246,3256,3266 +dd 3276,3286,3296,3306,3316,3326,3336,3345,3355,3365 +dd 3375,3385,3394,3404,3414,3424,3433,3443,3453,3463 +dd 3472,3482,3492,3501,3511,3521,3530,3540,3550,3559 +dd 3569,3578,3588,3598,3607,3617,3626,3636,3645,3655 +dd 3664,3674,3683,3693,3702,3711,3721,3730,3740,3749 +dd 3758,3768,3777,3786,3796,3805,3814,3824,3833,3842 +dd 3852,3861,3870,3879,3888,3898,3907,3916,3925,3934 +dd 3943,3953,3962,3971,3980,3989,3998,4007,4016,4025 +dd 4034,4043,4052,4061,4070,4079,4088,4097,4106,4115 +dd 4124,4133,4142,4150,4159,4168,4177,4186,4194,4203 +dd 4212,4221,4230,4238,4247,4256,4264,4273,4282,4290 +dd 4299,4308,4316,4325,4333,4342,4351,4359,4368,4376 +dd 4385,4393,4402,4410,4419,4427,4435,4444,4452,4461 +dd 4469,4477,4486,4494,4502,4511,4519,4527,4535,4544 +dd 4552,4560,4568,4577,4585,4593,4601,4609,4617,4625 +dd 4634,4642,4650,4658,4666,4674,4682,4690,4698,4706 +dd 4714,4722,4730,4737,4745,4753,4761,4769,4777,4785 +dd 4792,4800,4808,4816,4824,4831,4839,4847,4854,4862 +dd 4870,4877,4885,4893,4900,4908,4915,4923,4930,4938 +dd 4945,4953,4960,4968,4975,4983,4990,4998,5005,5012 +dd 5020,5027,5034,5042,5049,5056,5064,5071,5078,5085 +dd 5093,5100,5107,5114,5121,5128,5135,5143,5150,5157 +dd 5164,5171,5178,5185,5192,5199,5206,5213,5220,5226 +dd 5233,5240,5247,5254,5261,5268,5274,5281,5288,5295 +dd 5301,5308,5315,5321,5328,5335,5341,5348,5355,5361 +dd 5368,5374,5381,5387,5394,5400,5407,5413,5420,5426 +dd 5433,5439,5445,5452,5458,5464,5471,5477,5483,5489 +dd 5496,5502,5508,5514,5521,5527,5533,5539,5545,5551 +dd 5557,5563,5569,5575,5581,5587,5593,5599,5605,5611 +dd 5617,5623,5629,5635,5640,5646,5652,5658,5664,5669 +dd 5675,5681,5686,5692,5698,5703,5709,5715,5720,5726 +dd 5731,5737,5742,5748,5753,5759,5764,5770,5775,5781 +dd 5786,5791,5797,5802,5807,5813,5818,5823,5828,5834 +dd 5839,5844,5849,5854,5859,5864,5870,5875,5880,5885 +dd 5890,5895,5900,5905,5910,5915,5920,5924,5929,5934 +dd 5939,5944,5949,5953,5958,5963,5968,5972,5977,5982 +dd 5986,5991,5996,6000,6005,6009,6014,6019,6023,6028 +dd 6032,6036,6041,6045,6050,6054,6059,6063,6067,6072 +dd 6076,6080,6084,6089,6093,6097,6101,6105,6109,6114 +dd 6118,6122,6126,6130,6134,6138,6142,6146,6150,6154 +dd 6158,6162,6166,6169,6173,6177,6181,6185,6188,6192 +dd 6196,6200,6203,6207,6211,6214,6218,6222,6225,6229 +dd 6232,6236,6239,6243,6246,6250,6253,6257,6260,6263 +dd 6267,6270,6273,6277,6280,6283,6286,6290,6293,6296 +dd 6299,6302,6305,6309,6312,6315,6318,6321,6324,6327 +dd 6330,6333,6336,6338,6341,6344,6347,6350,6353,6356 +dd 6358,6361,6364,6367,6369,6372,6375,6377,6380,6382 +dd 6385,6388,6390,6393,6395,6398,6400,6403,6405,6407 +dd 6410,6412,6415,6417,6419,6421,6424,6426,6428,6430 +dd 6433,6435,6437,6439,6441,6443,6445,6447,6449,6451 +dd 6453,6455,6457,6459,6461,6463,6465,6467,6469,6471 +dd 6472,6474,6476,6478,6479,6481,6483,6484,6486,6488 +dd 6489,6491,6492,6494,6495,6497,6498,6500,6501,6503 +dd 6504,6506,6507,6508,6510,6511,6512,6513,6515,6516 +dd 6517,6518,6519,6521,6522,6523,6524,6525,6526,6527 +dd 6528,6529,6530,6531,6532,6533,6534,6535,6535,6536 +dd 6537,6538,6539,6539,6540,6541,6541,6542,6543,6543 +dd 6544,6545,6545,6546,6546,6547,6547,6548,6548,6549 +dd 6549,6549,6550,6550,6550,6551,6551,6551,6552,6552 +dd 6552,6552,6552,6553,6553,6553,6553,6553,6553,6553 +dd 6553,6553,6553,6553,6553,6553,6553,6553,6552,6552 +dd 6552,6552,6552,6551,6551,6551,6550,6550,6550,6549 +dd 6549,6549,6548,6548,6547,6547,6546,6546,6545,6545 +dd 6544,6543,6543,6542,6541,6541,6540,6539,6539,6538 +dd 6537,6536,6535,6535,6534,6533,6532,6531,6530,6529 +dd 6528,6527,6526,6525,6524,6523,6522,6521,6519,6518 +dd 6517,6516,6515,6513,6512,6511,6510,6508,6507,6506 +dd 6504,6503,6501,6500,6498,6497,6495,6494,6492,6491 +dd 6489,6488,6486,6484,6483,6481,6479,6478,6476,6474 +dd 6472,6471,6469,6467,6465,6463,6461,6459,6457,6455 +dd 6453,6451,6449,6447,6445,6443,6441,6439,6437,6435 +dd 6433,6430,6428,6426,6424,6421,6419,6417,6415,6412 +dd 6410,6407,6405,6403,6400,6398,6395,6393,6390,6388 +dd 6385,6382,6380,6377,6375,6372,6369,6367,6364,6361 +dd 6358,6356,6353,6350,6347,6344,6341,6338,6336,6333 +dd 6330,6327,6324,6321,6318,6315,6312,6309,6305,6302 +dd 6299,6296,6293,6290,6286,6283,6280,6277,6273,6270 +dd 6267,6263,6260,6257,6253,6250,6246,6243,6239,6236 +dd 6232,6229,6225,6222,6218,6214,6211,6207,6203,6200 +dd 6196,6192,6188,6185,6181,6177,6173,6169,6166,6162 +dd 6158,6154,6150,6146,6142,6138,6134,6130,6126,6122 +dd 6118,6114,6109,6105,6101,6097,6093,6089,6084,6080 +dd 6076,6072,6067,6063,6059,6054,6050,6045,6041,6036 +dd 6032,6028,6023,6019,6014,6009,6005,6000,5996,5991 +dd 5986,5982,5977,5972,5968,5963,5958,5953,5949,5944 +dd 5939,5934,5929,5924,5920,5915,5910,5905,5900,5895 +dd 5890,5885,5880,5875,5870,5864,5859,5854,5849,5844 +dd 5839,5834,5828,5823,5818,5813,5807,5802,5797,5791 +dd 5786,5781,5775,5770,5764,5759,5753,5748,5742,5737 +dd 5731,5726,5720,5715,5709,5703,5698,5692,5686,5681 +dd 5675,5669,5664,5658,5652,5646,5640,5635,5629,5623 +dd 5617,5611,5605,5599,5593,5587,5581,5575,5569,5563 +dd 5557,5551,5545,5539,5533,5527,5521,5514,5508,5502 +dd 5496,5489,5483,5477,5471,5464,5458,5452,5445,5439 +dd 5433,5426,5420,5413,5407,5400,5394,5387,5381,5374 +dd 5368,5361,5355,5348,5341,5335,5328,5321,5315,5308 +dd 5301,5295,5288,5281,5274,5268,5261,5254,5247,5240 +dd 5233,5226,5220,5213,5206,5199,5192,5185,5178,5171 +dd 5164,5157,5150,5143,5135,5128,5121,5114,5107,5100 +dd 5093,5085,5078,5071,5064,5056,5049,5042,5034,5027 +dd 5020,5012,5005,4998,4990,4983,4975,4968,4960,4953 +dd 4945,4938,4930,4923,4915,4908,4900,4893,4885,4877 +dd 4870,4862,4854,4847,4839,4831,4824,4816,4808,4800 +dd 4792,4785,4777,4769,4761,4753,4745,4737,4730,4722 +dd 4714,4706,4698,4690,4682,4674,4666,4658,4650,4642 +dd 4634,4625,4617,4609,4601,4593,4585,4577,4568,4560 +dd 4552,4544,4535,4527,4519,4511,4502,4494,4486,4477 +dd 4469,4461,4452,4444,4435,4427,4419,4410,4402,4393 +dd 4385,4376,4368,4359,4351,4342,4333,4325,4316,4308 +dd 4299,4290,4282,4273,4264,4256,4247,4238,4230,4221 +dd 4212,4203,4194,4186,4177,4168,4159,4150,4142,4133 +dd 4124,4115,4106,4097,4088,4079,4070,4061,4052,4043 +dd 4034,4025,4016,4007,3998,3989,3980,3971,3962,3953 +dd 3943,3934,3925,3916,3907,3898,3888,3879,3870,3861 +dd 3852,3842,3833,3824,3814,3805,3796,3786,3777,3768 +dd 3758,3749,3740,3730,3721,3711,3702,3693,3683,3674 +dd 3664,3655,3645,3636,3626,3617,3607,3598,3588,3578 +dd 3569,3559,3550,3540,3530,3521,3511,3501,3492,3482 +dd 3472,3463,3453,3443,3433,3424,3414,3404,3394,3385 +dd 3375,3365,3355,3345,3336,3326,3316,3306,3296,3286 +dd 3276,3266,3256,3246,3237,3227,3217,3207,3197,3187 +dd 3177,3167,3157,3147,3137,3127,3117,3106,3096,3086 +dd 3076,3066,3056,3046,3036,3026,3015,3005,2995,2985 +dd 2975,2965,2954,2944,2934,2924,2913,2903,2893,2883 +dd 2872,2862,2852,2841,2831,2821,2811,2800,2790,2779 +dd 2769,2759,2748,2738,2728,2717,2707,2696,2686,2675 +dd 2665,2655,2644,2634,2623,2613,2602,2592,2581,2571 +dd 2560,2550,2539,2529,2518,2507,2497,2486,2476,2465 +dd 2454,2444,2433,2423,2412,2401,2391,2380,2369,2359 +dd 2348,2337,2327,2316,2305,2295,2284,2273,2262,2252 +dd 2241,2230,2219,2209,2198,2187,2176,2166,2155,2144 +dd 2133,2122,2111,2101,2090,2079,2068,2057,2046,2036 +dd 2025,2014,2003,1992,1981,1970,1959,1948,1937,1926 +dd 1916,1905,1894,1883,1872,1861,1850,1839,1828,1817 +dd 1806,1795,1784,1773,1762,1751,1740,1729,1718,1707 +dd 1696,1685,1674,1663,1651,1640,1629,1618,1607,1596 +dd 1585,1574,1563,1552,1541,1529,1518,1507,1496,1485 +dd 1474,1463,1451,1440,1429,1418,1407,1396,1384,1373 +dd 1362,1351,1340,1328,1317,1306,1295,1284,1272,1261 +dd 1250,1239,1228,1216,1205,1194,1183,1171,1160,1149 +dd 1138,1126,1115,1104,1092,1081,1070,1059,1047,1036 +dd 1025,1013,1002,991,979,968,957,946,934,923 +dd 912,900,889,878,866,855,844,832,821,810 +dd 798,787,775,764,753,741,730,719,707,696 +dd 685,673,662,650,639,628,616,605,593,582 +dd 571,559,548,536,525,514,502,491,479,468 +dd 457,445,434,422,411,400,388,377,365,354 +dd 342,331,320,308,297,285,274,263,251,240 +dd 228,217,205,194,182,171,160,148,137,125 +dd 114,102,91,80,68,57,45,34,22,11 +dd 0,-12,-23,-35,-46,-58,-69,-81,-92,-103 +dd -115,-126,-138,-149,-161,-172,-183,-195,-206,-218 +dd -229,-241,-252,-264,-275,-286,-298,-309,-321,-332 +dd -343,-355,-366,-378,-389,-401,-412,-423,-435,-446 +dd -458,-469,-480,-492,-503,-515,-526,-537,-549,-560 +dd -572,-583,-594,-606,-617,-629,-640,-651,-663,-674 +dd -686,-697,-708,-720,-731,-742,-754,-765,-776,-788 +dd -799,-811,-822,-833,-845,-856,-867,-879,-890,-901 +dd -913,-924,-935,-947,-958,-969,-980,-992,-1003,-1014 +dd -1026,-1037,-1048,-1060,-1071,-1082,-1093,-1105,-1116,-1127 +dd -1139,-1150,-1161,-1172,-1184,-1195,-1206,-1217,-1229,-1240 +dd -1251,-1262,-1273,-1285,-1296,-1307,-1318,-1329,-1341,-1352 +dd -1363,-1374,-1385,-1397,-1408,-1419,-1430,-1441,-1452,-1464 +dd -1475,-1486,-1497,-1508,-1519,-1530,-1542,-1553,-1564,-1575 +dd -1586,-1597,-1608,-1619,-1630,-1641,-1652,-1664,-1675,-1686 +dd -1697,-1708,-1719,-1730,-1741,-1752,-1763,-1774,-1785,-1796 +dd -1807,-1818,-1829,-1840,-1851,-1862,-1873,-1884,-1895,-1906 +dd -1917,-1927,-1938,-1949,-1960,-1971,-1982,-1993,-2004,-2015 +dd -2026,-2037,-2047,-2058,-2069,-2080,-2091,-2102,-2112,-2123 +dd -2134,-2145,-2156,-2167,-2177,-2188,-2199,-2210,-2220,-2231 +dd -2242,-2253,-2263,-2274,-2285,-2296,-2306,-2317,-2328,-2338 +dd -2349,-2360,-2370,-2381,-2392,-2402,-2413,-2424,-2434,-2445 +dd -2455,-2466,-2477,-2487,-2498,-2508,-2519,-2530,-2540,-2551 +dd -2561,-2572,-2582,-2593,-2603,-2614,-2624,-2635,-2645,-2656 +dd -2666,-2676,-2687,-2697,-2708,-2718,-2729,-2739,-2749,-2760 +dd -2770,-2780,-2791,-2801,-2812,-2822,-2832,-2842,-2853,-2863 +dd -2873,-2884,-2894,-2904,-2914,-2925,-2935,-2945,-2955,-2966 +dd -2976,-2986,-2996,-3006,-3016,-3027,-3037,-3047,-3057,-3067 +dd -3077,-3087,-3097,-3107,-3118,-3128,-3138,-3148,-3158,-3168 +dd -3178,-3188,-3198,-3208,-3218,-3228,-3238,-3247,-3257,-3267 +dd -3277,-3287,-3297,-3307,-3317,-3327,-3337,-3346,-3356,-3366 +dd -3376,-3386,-3395,-3405,-3415,-3425,-3434,-3444,-3454,-3464 +dd -3473,-3483,-3493,-3502,-3512,-3522,-3531,-3541,-3551,-3560 +dd -3570,-3579,-3589,-3599,-3608,-3618,-3627,-3637,-3646,-3656 +dd -3665,-3675,-3684,-3694,-3703,-3712,-3722,-3731,-3741,-3750 +dd -3759,-3769,-3778,-3787,-3797,-3806,-3815,-3825,-3834,-3843 +dd -3853,-3862,-3871,-3880,-3889,-3899,-3908,-3917,-3926,-3935 +dd -3944,-3954,-3963,-3972,-3981,-3990,-3999,-4008,-4017,-4026 +dd -4035,-4044,-4053,-4062,-4071,-4080,-4089,-4098,-4107,-4116 +dd -4125,-4134,-4143,-4151,-4160,-4169,-4178,-4187,-4195,-4204 +dd -4213,-4222,-4231,-4239,-4248,-4257,-4265,-4274,-4283,-4291 +dd -4300,-4309,-4317,-4326,-4334,-4343,-4352,-4360,-4369,-4377 +dd -4386,-4394,-4403,-4411,-4420,-4428,-4436,-4445,-4453,-4462 +dd -4470,-4478,-4487,-4495,-4503,-4512,-4520,-4528,-4536,-4545 +dd -4553,-4561,-4569,-4578,-4586,-4594,-4602,-4610,-4618,-4626 +dd -4635,-4643,-4651,-4659,-4667,-4675,-4683,-4691,-4699,-4707 +dd -4715,-4723,-4731,-4738,-4746,-4754,-4762,-4770,-4778,-4786 +dd -4793,-4801,-4809,-4817,-4825,-4832,-4840,-4848,-4855,-4863 +dd -4871,-4878,-4886,-4894,-4901,-4909,-4916,-4924,-4931,-4939 +dd -4946,-4954,-4961,-4969,-4976,-4984,-4991,-4999,-5006,-5013 +dd -5021,-5028,-5035,-5043,-5050,-5057,-5065,-5072,-5079,-5086 +dd -5094,-5101,-5108,-5115,-5122,-5129,-5136,-5144,-5151,-5158 +dd -5165,-5172,-5179,-5186,-5193,-5200,-5207,-5214,-5221,-5227 +dd -5234,-5241,-5248,-5255,-5262,-5269,-5275,-5282,-5289,-5296 +dd -5302,-5309,-5316,-5322,-5329,-5336,-5342,-5349,-5356,-5362 +dd -5369,-5375,-5382,-5388,-5395,-5401,-5408,-5414,-5421,-5427 +dd -5434,-5440,-5446,-5453,-5459,-5465,-5472,-5478,-5484,-5490 +dd -5497,-5503,-5509,-5515,-5522,-5528,-5534,-5540,-5546,-5552 +dd -5558,-5564,-5570,-5576,-5582,-5588,-5594,-5600,-5606,-5612 +dd -5618,-5624,-5630,-5636,-5641,-5647,-5653,-5659,-5665,-5670 +dd -5676,-5682,-5687,-5693,-5699,-5704,-5710,-5716,-5721,-5727 +dd -5732,-5738,-5743,-5749,-5754,-5760,-5765,-5771,-5776,-5782 +dd -5787,-5792,-5798,-5803,-5808,-5814,-5819,-5824,-5829,-5835 +dd -5840,-5845,-5850,-5855,-5860,-5865,-5871,-5876,-5881,-5886 +dd -5891,-5896,-5901,-5906,-5911,-5916,-5921,-5925,-5930,-5935 +dd -5940,-5945,-5950,-5954,-5959,-5964,-5969,-5973,-5978,-5983 +dd -5987,-5992,-5997,-6001,-6006,-6010,-6015,-6020,-6024,-6029 +dd -6033,-6037,-6042,-6046,-6051,-6055,-6060,-6064,-6068,-6073 +dd -6077,-6081,-6085,-6090,-6094,-6098,-6102,-6106,-6110,-6115 +dd -6119,-6123,-6127,-6131,-6135,-6139,-6143,-6147,-6151,-6155 +dd -6159,-6163,-6167,-6170,-6174,-6178,-6182,-6186,-6189,-6193 +dd -6197,-6201,-6204,-6208,-6212,-6215,-6219,-6223,-6226,-6230 +dd -6233,-6237,-6240,-6244,-6247,-6251,-6254,-6258,-6261,-6264 +dd -6268,-6271,-6274,-6278,-6281,-6284,-6287,-6291,-6294,-6297 +dd -6300,-6303,-6306,-6310,-6313,-6316,-6319,-6322,-6325,-6328 +dd -6331,-6334,-6337,-6339,-6342,-6345,-6348,-6351,-6354,-6357 +dd -6359,-6362,-6365,-6368,-6370,-6373,-6376,-6378,-6381,-6383 +dd -6386,-6389,-6391,-6394,-6396,-6399,-6401,-6404,-6406,-6408 +dd -6411,-6413,-6416,-6418,-6420,-6422,-6425,-6427,-6429,-6431 +dd -6434,-6436,-6438,-6440,-6442,-6444,-6446,-6448,-6450,-6452 +dd -6454,-6456,-6458,-6460,-6462,-6464,-6466,-6468,-6470,-6472 +dd -6473,-6475,-6477,-6479,-6480,-6482,-6484,-6485,-6487,-6489 +dd -6490,-6492,-6493,-6495,-6496,-6498,-6499,-6501,-6502,-6504 +dd -6505,-6507,-6508,-6509,-6511,-6512,-6513,-6514,-6516,-6517 +dd -6518,-6519,-6520,-6522,-6523,-6524,-6525,-6526,-6527,-6528 +dd -6529,-6530,-6531,-6532,-6533,-6534,-6535,-6536,-6536,-6537 +dd -6538,-6539,-6540,-6540,-6541,-6542,-6542,-6543,-6544,-6544 +dd -6545,-6546,-6546,-6547,-6547,-6548,-6548,-6549,-6549,-6550 +dd -6550,-6550,-6551,-6551,-6551,-6552,-6552,-6552,-6553,-6553 +dd -6553,-6553,-6553,-6554,-6554,-6554,-6554,-6554,-6554,-6554 +dd -6554,-6554,-6554,-6554,-6554,-6554,-6554,-6554,-6553,-6553 +dd -6553,-6553,-6553,-6552,-6552,-6552,-6551,-6551,-6551,-6550 +dd -6550,-6550,-6549,-6549,-6548,-6548,-6547,-6547,-6546,-6546 +dd -6545,-6544,-6544,-6543,-6542,-6542,-6541,-6540,-6540,-6539 +dd -6538,-6537,-6536,-6536,-6535,-6534,-6533,-6532,-6531,-6530 +dd -6529,-6528,-6527,-6526,-6525,-6524,-6523,-6522,-6520,-6519 +dd -6518,-6517,-6516,-6514,-6513,-6512,-6511,-6509,-6508,-6507 +dd -6505,-6504,-6502,-6501,-6499,-6498,-6496,-6495,-6493,-6492 +dd -6490,-6489,-6487,-6485,-6484,-6482,-6480,-6479,-6477,-6475 +dd -6473,-6472,-6470,-6468,-6466,-6464,-6462,-6460,-6458,-6456 +dd -6454,-6452,-6450,-6448,-6446,-6444,-6442,-6440,-6438,-6436 +dd -6434,-6431,-6429,-6427,-6425,-6422,-6420,-6418,-6416,-6413 +dd -6411,-6408,-6406,-6404,-6401,-6399,-6396,-6394,-6391,-6389 +dd -6386,-6383,-6381,-6378,-6376,-6373,-6370,-6368,-6365,-6362 +dd -6359,-6357,-6354,-6351,-6348,-6345,-6342,-6339,-6337,-6334 +dd -6331,-6328,-6325,-6322,-6319,-6316,-6313,-6309,-6306,-6303 +dd -6300,-6297,-6294,-6291,-6287,-6284,-6281,-6278,-6274,-6271 +dd -6268,-6264,-6261,-6258,-6254,-6251,-6247,-6244,-6240,-6237 +dd -6233,-6230,-6226,-6223,-6219,-6215,-6212,-6208,-6204,-6201 +dd -6197,-6193,-6189,-6186,-6182,-6178,-6174,-6170,-6167,-6163 +dd -6159,-6155,-6151,-6147,-6143,-6139,-6135,-6131,-6127,-6123 +dd -6119,-6115,-6110,-6106,-6102,-6098,-6094,-6090,-6085,-6081 +dd -6077,-6073,-6068,-6064,-6060,-6055,-6051,-6046,-6042,-6037 +dd -6033,-6029,-6024,-6020,-6015,-6010,-6006,-6001,-5997,-5992 +dd -5987,-5983,-5978,-5973,-5969,-5964,-5959,-5954,-5950,-5945 +dd -5940,-5935,-5930,-5925,-5921,-5916,-5911,-5906,-5901,-5896 +dd -5891,-5886,-5881,-5876,-5871,-5865,-5860,-5855,-5850,-5845 +dd -5840,-5835,-5829,-5824,-5819,-5814,-5808,-5803,-5798,-5792 +dd -5787,-5782,-5776,-5771,-5765,-5760,-5754,-5749,-5743,-5738 +dd -5732,-5727,-5721,-5716,-5710,-5704,-5699,-5693,-5687,-5682 +dd -5676,-5670,-5665,-5659,-5653,-5647,-5641,-5636,-5630,-5624 +dd -5618,-5612,-5606,-5600,-5594,-5588,-5582,-5576,-5570,-5564 +dd -5558,-5552,-5546,-5540,-5534,-5528,-5522,-5515,-5509,-5503 +dd -5497,-5490,-5484,-5478,-5472,-5465,-5459,-5453,-5446,-5440 +dd -5434,-5427,-5421,-5414,-5408,-5401,-5395,-5388,-5382,-5375 +dd -5369,-5362,-5356,-5349,-5342,-5336,-5329,-5322,-5316,-5309 +dd -5302,-5296,-5289,-5282,-5275,-5269,-5262,-5255,-5248,-5241 +dd -5234,-5227,-5221,-5214,-5207,-5200,-5193,-5186,-5179,-5172 +dd -5165,-5158,-5151,-5144,-5136,-5129,-5122,-5115,-5108,-5101 +dd -5094,-5086,-5079,-5072,-5065,-5057,-5050,-5043,-5035,-5028 +dd -5021,-5013,-5006,-4999,-4991,-4984,-4976,-4969,-4961,-4954 +dd -4946,-4939,-4931,-4924,-4916,-4909,-4901,-4894,-4886,-4878 +dd -4871,-4863,-4855,-4848,-4840,-4832,-4825,-4817,-4809,-4801 +dd -4793,-4786,-4778,-4770,-4762,-4754,-4746,-4738,-4731,-4723 +dd -4715,-4707,-4699,-4691,-4683,-4675,-4667,-4659,-4651,-4643 +dd -4635,-4626,-4618,-4610,-4602,-4594,-4586,-4578,-4569,-4561 +dd -4553,-4545,-4536,-4528,-4520,-4512,-4503,-4495,-4487,-4478 +dd -4470,-4462,-4453,-4445,-4436,-4428,-4420,-4411,-4403,-4394 +dd -4386,-4377,-4369,-4360,-4352,-4343,-4334,-4326,-4317,-4309 +dd -4300,-4291,-4283,-4274,-4265,-4257,-4248,-4239,-4231,-4222 +dd -4213,-4204,-4195,-4187,-4178,-4169,-4160,-4151,-4143,-4134 +dd -4125,-4116,-4107,-4098,-4089,-4080,-4071,-4062,-4053,-4044 +dd -4035,-4026,-4017,-4008,-3999,-3990,-3981,-3972,-3963,-3954 +dd -3944,-3935,-3926,-3917,-3908,-3899,-3889,-3880,-3871,-3862 +dd -3853,-3843,-3834,-3825,-3815,-3806,-3797,-3787,-3778,-3769 +dd -3759,-3750,-3741,-3731,-3722,-3712,-3703,-3694,-3684,-3675 +dd -3665,-3656,-3646,-3637,-3627,-3618,-3608,-3599,-3589,-3579 +dd -3570,-3560,-3551,-3541,-3531,-3522,-3512,-3502,-3493,-3483 +dd -3473,-3464,-3454,-3444,-3434,-3425,-3415,-3405,-3395,-3386 +dd -3376,-3366,-3356,-3346,-3337,-3327,-3317,-3307,-3297,-3287 +dd -3277,-3267,-3257,-3247,-3238,-3228,-3218,-3208,-3198,-3188 +dd -3178,-3168,-3158,-3148,-3138,-3128,-3118,-3107,-3097,-3087 +dd -3077,-3067,-3057,-3047,-3037,-3027,-3016,-3006,-2996,-2986 +dd -2976,-2966,-2955,-2945,-2935,-2925,-2914,-2904,-2894,-2884 +dd -2873,-2863,-2853,-2842,-2832,-2822,-2812,-2801,-2791,-2780 +dd -2770,-2760,-2749,-2739,-2729,-2718,-2708,-2697,-2687,-2676 +dd -2666,-2656,-2645,-2635,-2624,-2614,-2603,-2593,-2582,-2572 +dd -2561,-2551,-2540,-2530,-2519,-2508,-2498,-2487,-2477,-2466 +dd -2455,-2445,-2434,-2424,-2413,-2402,-2392,-2381,-2370,-2360 +dd -2349,-2338,-2328,-2317,-2306,-2296,-2285,-2274,-2263,-2253 +dd -2242,-2231,-2220,-2210,-2199,-2188,-2177,-2167,-2156,-2145 +dd -2134,-2123,-2112,-2102,-2091,-2080,-2069,-2058,-2047,-2037 +dd -2026,-2015,-2004,-1993,-1982,-1971,-1960,-1949,-1938,-1927 +dd -1917,-1906,-1895,-1884,-1873,-1862,-1851,-1840,-1829,-1818 +dd -1807,-1796,-1785,-1774,-1763,-1752,-1741,-1730,-1719,-1708 +dd -1697,-1686,-1675,-1664,-1652,-1641,-1630,-1619,-1608,-1597 +dd -1586,-1575,-1564,-1553,-1542,-1530,-1519,-1508,-1497,-1486 +dd -1475,-1464,-1452,-1441,-1430,-1419,-1408,-1397,-1385,-1374 +dd -1363,-1352,-1341,-1329,-1318,-1307,-1296,-1285,-1273,-1262 +dd -1251,-1240,-1229,-1217,-1206,-1195,-1184,-1172,-1161,-1150 +dd -1139,-1127,-1116,-1105,-1093,-1082,-1071,-1060,-1048,-1037 +dd -1026,-1014,-1003,-992,-980,-969,-958,-947,-935,-924 +dd -913,-901,-890,-879,-867,-856,-845,-833,-822,-811 +dd -799,-788,-776,-765,-754,-742,-731,-720,-708,-697 +dd -686,-674,-663,-651,-640,-629,-617,-606,-594,-583 +dd -572,-560,-549,-537,-526,-515,-503,-492,-480,-469 +dd -458,-446,-435,-423,-412,-401,-389,-378,-366,-355 +dd -343,-332,-321,-309,-298,-286,-275,-264,-252,-241 +dd -229,-218,-206,-195,-183,-172,-161,-149,-138,-126 +dd -115,-103,-92,-81,-69,-58,-46,-35,-23,-12 + +eosinus: + +; misc vars for mouse / keys: +wonder: + dd 7777 +dududu: + dd 0 +rendered_quads: + dd 0 +sorted_quads: + dd 0 +vxx: + dd 0 +mouseya: + dd 0 +vpx: + dd 0 +vpy: + dd 0 +vheading: + dd 0 + +wtolong: + dw 0,0 + +; misc Engine Vars -------------------------- +imgtxt: + dd 0 +mousex: + dd 0 +mousey: + dd 0 +factor: + dd 0 +i: + dd 0 +miny: + dd 0 +maxy: + dd 0 +pwidth: + dd 0 +pheight: + dd 0 +;anz: +; dd 0 +a: + dd 0 +alpha: + dd 0 +beta: + dd 0 +gamma: + dd 0 +zoom: + dd 0 +zwmax: + dd 0 +i2: + dd 0 +x1: + dd 0 +y1: + dd 0 +x2: + dd 0 +y2: + dd 0 + +count: + dd 0 +ilocal: + dd 0 +ycoord: + dd 0 +pside: + dd 0 +temp: + dd 0 +lineheight: + dd 0 +linewidth: + dd 0 +v_xadd: + dd 0 +pxadd: + dd 0 +pyadd: + dd 0 +ytop: + dd 0 +ytopy: + dd 0 +px: + dd 0 +py: + dd 0 +x: + dd 0 +y: + dd 0 +polyx1: + dd 0 +polyx2: + dd 0 +px1: + dd 0 +py1: + dd 0 +px2: + dd 0 +py2: + dd 0 +remeax: + dd 0 +remebx: + dd 0 +remecx: + dd 0 +remedx: + dd 0 +remedi: + dd 0 +remesi: + dd 0 +singamma: + dd 0 +sinbeta: + dd 0 +sinalpha: + dd 0 +alphacopy: + dd 0 +betacopy: + dd 0 +gammacopy: + dd 0 + + +;;fixed size arrays -------------------- +lefttable: + times 1920*2 dd 0 ; 1440 +righttable: + times 1920*2 dd 0 +polypoints: + times 12 dd 0 ; 8 +zbuffer: + times 10010 dd 0 ; 10000 + +; floating vars ------------------------ + +twohundred: + dd 200 +mausy: + dd 0 + +xl1: + dd 0 +yl1: + dd 0 +zl1: + dd 0 + +xl2: + dd 0 +yl2: + dd 0 +zl2: + dd 0 + +xl3: + dd 0 +yl3: + dd 0 +zl3: + dd 0 + +xloc: + dd 0 +yloc: + dd 0 + +tempdiv: + dd 0 + + +tex1: +; the texture ( dd 0xRRGGBB,0xRRGGBB... 64*64*32 Bit) +include "wall3.inc" + + +labelt: + db 'MOS3DE',0 + +labellen: + +I_END: + + + + \ No newline at end of file diff --git a/programs/demos/mos3de/wall3.inc b/programs/demos/mos3de/wall3.inc new file mode 100644 index 0000000000..174953378b --- /dev/null +++ b/programs/demos/mos3de/wall3.inc @@ -0,0 +1,64 @@ +dd 0x00485D5E,0x0073837F,0x00707D79,0x00798682,0x00929F9C,0x00899693,0x007C8885,0x008A9793,0x008E9B97,0x007A8783,0x00687570,0x007D8A86,0x0076837F,0x00626F6B,0x006D7370,0x00747474,0x00616161,0x00636463,0x006E6D6D,0x00717071,0x006D6D6D,0x007A7A7A,0x007F7F7E,0x00767675,0x00717171,0x007D7C7D,0x00818080,0x00737473,0x00717371,0x007C7D7C,0x00777777,0x00737373,0x007D7D7D,0x007F7F7F,0x00777777,0x00888888,0x008C8C8C,0x00717171,0x006C6C6C,0x007E7E7E,0x00838383,0x006F6F6F,0x00727272,0x00767676,0x006E6E6E,0x00686968,0x007C7D7D,0x00838383,0x00737373,0x006D6D6D,0x00838483,0x00777B79,0x005B6662,0x006A7773,0x00707E7B,0x00596568,0x0066727A,0x007A858E,0x00636E77,0x00616C75,0x007E8992,0x007A858E,0x0066717A,0x00455259 +dd 0x005C7070,0x007E908B,0x00768680,0x007E8F8A,0x0096A6A1,0x008B9B96,0x007D8D88,0x00909C98,0x00939A98,0x007C8381,0x006B716D,0x0080867F,0x007C847B,0x00697068,0x00737773,0x00797A7A,0x006A6B6B,0x006B6C6B,0x007B7979,0x007E7A7B,0x00726E6F,0x007A7776,0x00878481,0x007E7D7A,0x007D7B7A,0x00898787,0x008F8C8D,0x00848282,0x00838282,0x00868485,0x007B797A,0x007D7B7C,0x00858383,0x00848283,0x007B7A7A,0x00878887,0x008A8B8B,0x00747575,0x00737473,0x00868786,0x008C8D8C,0x007C7E7C,0x00848584,0x00868686,0x00797979,0x00757474,0x00878585,0x008F8D8D,0x00858383,0x00817F80,0x00989798,0x008F9291,0x0078807D,0x00919B97,0x009AA4A2,0x007D8A8C,0x008A979D,0x009DAAB0,0x008A959D,0x0087919A,0x00A4AEB7,0x0098A2AB,0x0077818B,0x005D6770 +dd 0x00586965,0x006D817A,0x005D726B,0x0060756E,0x00758982,0x006C8179,0x0061746D,0x007B827F,0x00878183,0x00787072,0x006C6361,0x007E776D,0x00817B6D,0x00726D5F,0x007B7A73,0x00818482,0x00737775,0x00656564,0x0081797B,0x008F8488,0x00817779,0x00786F6C,0x008F8880,0x00928B84,0x00877F7C,0x008B8284,0x00A1989A,0x009E9597,0x00928A8C,0x008E8589,0x00898083,0x00857D80,0x0081797C,0x00888183,0x00837E7F,0x00797A79,0x00797C7A,0x00767A78,0x00717573,0x006D716F,0x00767A78,0x00797C7A,0x00777A78,0x00717472,0x007A7A7A,0x00827C7D,0x007E7578,0x007F7679,0x0080787A,0x00756D6F,0x00837B7D,0x00888284,0x007C7778,0x00888586,0x00959697,0x00869392,0x008DA09E,0x0095A7A6,0x008A9699,0x00848893,0x009C9FAA,0x00999CA9,0x00797B8E,0x00656678 +dd 0x00687671,0x0083948E,0x00768881,0x00748680,0x008E9F98,0x00879892,0x00798983,0x00949896,0x00A59B9D,0x00998C90,0x008E8181,0x00A0958C,0x009E9488,0x008C8277,0x0093908A,0x009A9C9B,0x008E918F,0x00777575,0x00948A8C,0x00AA9EA2,0x00A5989B,0x00918480,0x00A1968D,0x00AA9F96,0x009F938F,0x00978B8E,0x00B0A3A8,0x00B8ABAF,0x00AA9DA2,0x00A2959A,0x00A6989D,0x009E9195,0x0093878B,0x00A4989C,0x00A59D9F,0x008F8F8E,0x00919391,0x009B9E9C,0x00919593,0x007C7F7D,0x00868886,0x00969997,0x008E918E,0x00808380,0x00939292,0x00A0979A,0x008F8186,0x008C8084,0x009B8F93,0x008B7F83,0x00908388,0x00A4979C,0x009B8E93,0x0084777C,0x00938C8E,0x009BA4A2,0x0097A9A3,0x0090A39D,0x008F9A9B,0x0084848F,0x008D8B98,0x009B99AA,0x0086829C,0x007A768C +dd 0x0066716C,0x00757F7B,0x0068716E,0x005C6461,0x00707875,0x006F7875,0x00606866,0x00656464,0x0072676A,0x00716367,0x00635558,0x00756965,0x007E736D,0x00726661,0x00635B59,0x00615C5D,0x00625C5E,0x00564E51,0x005F5356,0x0075676C,0x007F7174,0x0070635F,0x0072675E,0x007F746C,0x00837874,0x00786B6F,0x00817478,0x0096898D,0x00918488,0x00796B70,0x00776A6E,0x00776A6E,0x0075686D,0x00807277,0x007F7578,0x00746F6F,0x00797676,0x007B7979,0x00737172,0x00656364,0x006A6868,0x00716F6F,0x00757172,0x006E6A6B,0x006C6668,0x00716569,0x006C5E63,0x006C5F63,0x00776A6F,0x0074676B,0x0074666B,0x007B6D72,0x007F7177,0x00706267,0x00746A6D,0x00747876,0x00717D78,0x00727F7B,0x007C8286,0x007A7984,0x00757280,0x00807D8E,0x0077728D,0x00736F85 +dd 0x003E4543,0x003B3D3C,0x003B3A3A,0x002B2B2B,0x00333132,0x003B393A,0x00393739,0x002E282B,0x003C3034,0x004A3D41,0x003D2F34,0x003C2F33,0x0045383C,0x004C3F43,0x003A2E31,0x00382B2F,0x00423439,0x0045373C,0x003A2C31,0x0046393D,0x0056494C,0x004F433F,0x00433830,0x004E423A,0x005F5450,0x005C4F53,0x00524549,0x0064575B,0x006B5E62,0x0056494D,0x0054474B,0x00594C51,0x00605358,0x0063545A,0x005A4D51,0x005D5356,0x00675E60,0x0061585B,0x005E5558,0x005A5154,0x00574D50,0x0051474A,0x005E5457,0x0063585C,0x00594E52,0x005E5256,0x00695B5F,0x0066595D,0x00605357,0x0066595D,0x0066595D,0x005C4F53,0x00615358,0x0063555A,0x00605558,0x00575555,0x005E615F,0x00656766,0x0065666C,0x006D6C78,0x00615F6C,0x00605D6F,0x005F5B75,0x00565268 +dd 0x001F2422,0x001B1919,0x00292123,0x00191012,0x00160C0F,0x00201519,0x002C2125,0x0023171C,0x002C1F23,0x00392C30,0x0031232A,0x002C1E29,0x00332533,0x0041303E,0x002F1B26,0x002C151E,0x00382129,0x00442F36,0x00312126,0x00322529,0x00413437,0x00413532,0x0030251C,0x0032271F,0x00443935,0x004B3E41,0x003D3034,0x0045383D,0x00514448,0x0046393D,0x0045383C,0x004A3C41,0x00504248,0x0054454B,0x0049393F,0x00503D44,0x005D4A50,0x00544248,0x00503E44,0x00523F45,0x00523E45,0x004B373E,0x00513D44,0x00564149,0x004E3C43,0x00514348,0x005A4D51,0x00574A4E,0x004D4044,0x0052454A,0x0055484D,0x00514449,0x00514348,0x0054474B,0x0053474A,0x004B4244,0x00534D4E,0x00585053,0x004C484F,0x0051505C,0x004C4A57,0x00484557,0x004D4963,0x00444157 +dd 0x00101311,0x00140D0F,0x002A1A1F,0x001F0D12,0x001E0C11,0x0028161B,0x00322126,0x002D1E23,0x0034262B,0x003A2D32,0x0032252D,0x00322335,0x003A2A3F,0x00453247,0x00371E2F,0x00371926,0x0041232E,0x004D333C,0x003D2C32,0x00382B30,0x00403336,0x00443936,0x00342921,0x00342920,0x003D312D,0x00413436,0x00372A2E,0x003C2F34,0x00493C40,0x0046393D,0x0044363B,0x0047393E,0x0047393E,0x00493B40,0x00402E34,0x00493139,0x00573D46,0x00523840,0x004B3038,0x0051353F,0x005B3E49,0x00593D47,0x00553841,0x00583C45,0x00574048,0x0054464B,0x0054474B,0x0055484C,0x0055484C,0x00594C50,0x00594C51,0x00594C51,0x0057494E,0x0054474B,0x0054464A,0x004D3F43,0x00514247,0x0053434A,0x00433942,0x003C3946,0x0044414E,0x00454254,0x004A4660,0x00454358 +dd 0x00161613,0x001E1415,0x002F2022,0x00241418,0x0027171A,0x00312223,0x00352528,0x002D2023,0x00362C2D,0x003B3132,0x002F242A,0x00332534,0x003D2D40,0x004A374A,0x00412837,0x0040212C,0x0045252E,0x004F343C,0x0045353A,0x003D3134,0x00403436,0x004B403C,0x0042372E,0x0041362E,0x00473B36,0x004E4141,0x004B3D40,0x004A3C41,0x00504347,0x00524448,0x004D3F44,0x00514448,0x00504346,0x00524348,0x004B373E,0x00573A44,0x0060404B,0x0062424C,0x005D3C46,0x0062414C,0x006C4C57,0x006E4D58,0x0066454E,0x0066464F,0x00684F56,0x0067585C,0x005C4F53,0x005A4D51,0x005E5155,0x0064565B,0x005C4E53,0x0056494E,0x005D4F54,0x00605358,0x005E4F54,0x0059484D,0x00634F54,0x00675459,0x00574B52,0x0047444E,0x00524F5B,0x00555161,0x00534F67,0x004C495D +dd 0x0023261B,0x002A2822,0x002B2722,0x001B1714,0x0025221E,0x0034322A,0x0035322A,0x00282620,0x00313028,0x0036342D,0x002C2825,0x00322829,0x003C2F30,0x00534446,0x004F3E3F,0x00432F2F,0x003E2928,0x00473735,0x00403A35,0x00302D26,0x00312C26,0x00453D36,0x0042382F,0x003B3028,0x0040342E,0x004F423F,0x004E4140,0x00453838,0x00463A39,0x00463938,0x00423534,0x00483B3A,0x00463938,0x00493C3B,0x00473536,0x00563C41,0x00573C41,0x005A3E43,0x00583C41,0x0053373C,0x00593E42,0x005D4045,0x00593B3F,0x005D3F43,0x005D4549,0x005E4F53,0x0055484C,0x00524549,0x0057494E,0x00594B50,0x0056484D,0x004D4045,0x004E4145,0x00594C51,0x005D5054,0x00564747,0x0060504E,0x0060504E,0x00574E4B,0x004E4D4B,0x00494947,0x00504E50,0x00544C58,0x0050474E +dd 0x005E6053,0x00696B60,0x005A5B4F,0x004C4D42,0x0065675C,0x00838678,0x007F8274,0x00616357,0x005C5F52,0x00686B5E,0x00747368,0x007D756C,0x007A6F67,0x00968A82,0x009C9089,0x008A7E76,0x007A6F66,0x00847B72,0x00797A6E,0x00585C4E,0x00515246,0x006B665B,0x0072685E,0x006D6259,0x007D726A,0x0090857D,0x00877C75,0x00796E66,0x007A6F67,0x006B5F58,0x00695D55,0x006F635B,0x0060554E,0x00635851,0x006A5E57,0x00877873,0x0083746E,0x0072635E,0x0070615B,0x00655751,0x006B5C56,0x00735F5B,0x007C6360,0x00987E7C,0x00998585,0x00928387,0x008F8186,0x0095888C,0x0094868B,0x0085777C,0x00928489,0x008E8186,0x00796C70,0x007E7075,0x00908385,0x00948883,0x00AB9F98,0x00A0948D,0x00999289,0x00A1A197,0x0084857A,0x008A8981,0x008B8283,0x00786D6A +dd 0x007A7C6F,0x00898B7E,0x00787A6D,0x007F8174,0x008A8C7F,0x00989A8D,0x00949689,0x007C7E71,0x0075776A,0x008E9083,0x00AEAEA2,0x00B4ADA3,0x00A3988F,0x00B5AAA1,0x00C1B6AE,0x00B5AAA1,0x00A99E95,0x00B7AEA5,0x00B3B0A5,0x00949387,0x00918F84,0x009D978C,0x00978D83,0x008F847B,0x00ADA299,0x00C2B7AE,0x00B5AAA1,0x00A79C93,0x00A89D94,0x0092877E,0x008E837A,0x00958A81,0x00978C83,0x00A3988F,0x009F948B,0x00B6ABA3,0x00B2A89F,0x0091867D,0x008E837A,0x00A1968D,0x00B9ADA4,0x00B6A39E,0x00AB938F,0x00D3BBB7,0x00DAC6C6,0x00C3B5B9,0x00C4B7BB,0x00D5C8CC,0x00CEC0C5,0x00AFA2A6,0x00CBBEC2,0x00D1C4C8,0x00A5989C,0x008A7D81,0x0096898A,0x00A29690,0x00BFB4AB,0x00B7ABA2,0x00BBB6AC,0x00CFCFC6,0x00A8A99E,0x00AFAFA5,0x00B4ABAB,0x00918681 +dd 0x008E9083,0x00A3A598,0x008B8D80,0x00909285,0x007E8173,0x006E7063,0x0085877A,0x009C9E91,0x009A9C8F,0x009C9F91,0x00B4B4A7,0x00B6AFA5,0x00A2978F,0x00A89D94,0x00B0A59D,0x00A3988F,0x009B9087,0x00B0A69D,0x00B4ACA2,0x00A39B91,0x00B4ACA1,0x00C7BDB4,0x00BEB3AA,0x00998E85,0x009A8F86,0x00A69B92,0x00A2978E,0x009E938A,0x00ACA098,0x00AFA49B,0x00A59A91,0x00A0948C,0x00BCB1A8,0x00C5BAB1,0x00A59A91,0x00A1968D,0x00ACA198,0x00A49990,0x009F948B,0x00B8ADA4,0x00D7CBC3,0x00CEBCB6,0x00AE9792,0x00CEB5B1,0x00D6C2C2,0x00B3A5A8,0x00B3A5AA,0x00C6B9BD,0x00C1B3B8,0x00AA9CA1,0x00CDBFC4,0x00D5C8CC,0x00B4A6AB,0x00B4A7AB,0x00D0C3C5,0x00CDC2BD,0x00B4A9A1,0x0092867D,0x00A49E94,0x00C6C6BD,0x00A7A99D,0x00A09F97,0x00A99FA0,0x00908480 +dd 0x008D8F82,0x009FA194,0x007C7E71,0x007E8073,0x007F8274,0x00787A6D,0x0095978A,0x00B5B7AA,0x00ACAEA1,0x008F9184,0x008D8D81,0x00898379,0x00796F66,0x00766C63,0x007B7067,0x006E635A,0x006D6259,0x00867B72,0x00968780,0x0096857F,0x00B3A29B,0x00C8BAB2,0x00C1B5AC,0x00A89D94,0x00B5AAA1,0x00B3A79F,0x00988D84,0x008E837A,0x00AEA29A,0x00CABFB6,0x00BFB4AB,0x00AA9E96,0x00C0B5AC,0x00BBAFA7,0x009B9087,0x009B9087,0x00C2B7AE,0x00CEC3BA,0x00B9AEA5,0x00B8ADA4,0x00D4C8C0,0x00C8B8B2,0x0098817D,0x0099807D,0x00A08B8B,0x00857579,0x00796B70,0x00807277,0x0086797E,0x0086787D,0x00A19398,0x00A79A9E,0x009D9095,0x00BBAEB2,0x00DFD3D5,0x00E1D8D2,0x00BFB5AD,0x00A49990,0x00A7A298,0x00ACADA2,0x00989A8D,0x00929189,0x00988E8F,0x00857A76 +dd 0x007E8073,0x007E8073,0x00636558,0x00808376,0x00A1A497,0x009EA092,0x00949588,0x00999B8E,0x00898B7E,0x0064665A,0x00525347,0x004A443A,0x0041362E,0x00433932,0x0051473E,0x00483D35,0x0041362E,0x0050433B,0x005E4944,0x0069504B,0x0088706B,0x009F8D86,0x009F938A,0x00A99E95,0x00D1C6BD,0x00D5CAC1,0x00B4A9A0,0x009E938A,0x00ABA097,0x00BCB1A8,0x00ACA198,0x0092877E,0x00968B82,0x00A69B92,0x00AA9F96,0x00ACA198,0x00CDC2B9,0x00DBD0C7,0x00BFB4AB,0x009B9087,0x009E9289,0x008E7C76,0x006C5551,0x00624946,0x006C5756,0x0068585C,0x005F5156,0x005A4D51,0x00675A5F,0x006D6065,0x0075676C,0x0076696D,0x007D7074,0x0095888C,0x00AB9FA0,0x00B7ADA7,0x00B4AAA2,0x00CEC3BB,0x00D2CFC5,0x00AEB0A3,0x008C8F81,0x009F9E96,0x00B1A8A9,0x00988C88 +dd 0x008A8C7E,0x00777A6C,0x00696C5E,0x008F9184,0x00B0B0A3,0x00ACAB9E,0x00807F72,0x005E5D51,0x00454639,0x00343529,0x00353429,0x00342D24,0x002A201B,0x00342C27,0x004B423A,0x00443A32,0x00332820,0x003C2E26,0x00422924,0x00442522,0x00563A35,0x00634E48,0x00675952,0x00887C74,0x00B8ACA3,0x00C8BCB4,0x00C3B7AF,0x00C4B7AF,0x00B4A89F,0x0092877E,0x00756960,0x006D6159,0x007B6F67,0x00AFA39B,0x00CEC2B9,0x00BAAEA5,0x00B8ACA3,0x00BEB3AA,0x00A0948C,0x006F645B,0x00675B53,0x0063504A,0x005F4742,0x00563D39,0x0054403F,0x00534447,0x00534649,0x004F4244,0x00574A4D,0x00625558,0x00685B5E,0x00635659,0x0065595D,0x006A5D61,0x00695D5E,0x00776C67,0x0090857E,0x00C9BEB7,0x00DCD6CE,0x00BABAAE,0x008C8D81,0x00908D86,0x00A99FA0,0x00A19591 +dd 0x0095988A,0x0085887A,0x0086897B,0x00909184,0x00969186,0x008C847A,0x00625A50,0x00433B31,0x00352E24,0x00302A20,0x0040392F,0x0052493F,0x00564C43,0x00736961,0x00897E73,0x007E7465,0x00655B4B,0x006D6251,0x00665346,0x004B3328,0x00462F25,0x0046312C,0x00473434,0x005D4A4B,0x007E6B6A,0x009D8C86,0x00C3B2AB,0x00DACAC2,0x00C4B3AD,0x0085746E,0x005D4C46,0x00594945,0x00685855,0x00A08F8C,0x00D4C2BE,0x00C4B3AC,0x0096867E,0x007F6F68,0x00695A53,0x0054443D,0x0056453E,0x0057423A,0x0061493F,0x00674F45,0x00655249,0x0061554E,0x00756A63,0x00746760,0x00675852,0x0075655F,0x00776861,0x005C4F4B,0x004D423F,0x00534746,0x00534746,0x005F5452,0x006F6462,0x008F8382,0x009D9492,0x00AAA3A0,0x00AFA9A6,0x00A59E9B,0x009C918E,0x00928680 +dd 0x008C8F81,0x008B8E80,0x00A6A99B,0x009E9E92,0x00797268,0x00554A41,0x00352A22,0x0031261D,0x00443930,0x005E544B,0x0082776F,0x00978C83,0x0090867C,0x00ABA096,0x00BFB5A6,0x00B5AC96,0x00A39A82,0x00BCB39B,0x00B7AD95,0x00887D66,0x00746854,0x00625049,0x004C343C,0x00452B36,0x00563C43,0x00765F5D,0x00A8918C,0x00BFA8A3,0x00AF9894,0x00755E59,0x00553E3A,0x00543C3D,0x00584045,0x0081686E,0x00AD9496,0x00A38C89,0x007A635E,0x00644E48,0x005D4642,0x00634C46,0x00735D56,0x007C6558,0x0097806F,0x00BAA592,0x00BBAA96,0x00A89E89,0x00C6BCA7,0x00C6B9A6,0x00AD9A88,0x00C0AB99,0x00C1AD9C,0x00918377,0x0073675F,0x0071665F,0x005F534F,0x0056494B,0x00594C50,0x0064575B,0x00716468,0x00AC9FA3,0x00DCCFD3,0x00D1C5C5,0x00A69B95,0x00877D74 +dd 0x007D7F72,0x007F8174,0x00909385,0x007E7F71,0x00595249,0x003C3129,0x00291E18,0x003B3028,0x0063584F,0x00897E76,0x00AFA49B,0x00B6ABA2,0x009D9289,0x00A0958A,0x00B3A99A,0x00ADA48D,0x00A19880,0x00BFB69D,0x00BCB39B,0x00A29980,0x00B0A68F,0x00AD9B91,0x008A7075,0x00583D46,0x004C3035,0x00573D3B,0x0078605B,0x00987F7B,0x00AC948F,0x00816964,0x00583F3C,0x005C4245,0x006B5159,0x0091787F,0x008D7578,0x006E5552,0x005C433F,0x005F4742,0x006E5551,0x0098807C,0x00C0A8A2,0x00BDA798,0x00C0AB97,0x00DECAB6,0x00D7C8B2,0x00B8AE96,0x00CFC6AE,0x00D0C4AE,0x00BFAB97,0x00D8C2AD,0x00DDC8B4,0x00B7A89B,0x00B9ADA4,0x00C0B5AD,0x00998C89,0x00645759,0x004C3E43,0x004D4044,0x005B4E52,0x00928489,0x00C5B7BC,0x00C8BCBD,0x00A59A93,0x00857A71 +dd 0x008E9082,0x00939588,0x00828477,0x004F4F43,0x00332D25,0x00382D25,0x004D4139,0x00756A61,0x0092877E,0x0093887F,0x00A2978E,0x00A99E95,0x0090857C,0x0083786E,0x00948A7B,0x00918871,0x00877E65,0x00A0977F,0x00A19880,0x009C937B,0x00BDB39C,0x00CBBBAC,0x00BBA2A0,0x008F7576,0x006D5352,0x004E3531,0x00523A35,0x00745C57,0x00A18884,0x00917874,0x005B4340,0x00573D41,0x00775C65,0x0090767D,0x00785F62,0x005C4441,0x0058403B,0x00715955,0x00937B77,0x00C0A8A5,0x00E5CEC8,0x00D7C0B1,0x00BCA692,0x00C9B4A0,0x00C1B29C,0x00A29880,0x00AA9F88,0x00AFA28B,0x00AA9682,0x00BEA894,0x00C8B4A0,0x00B5A699,0x00D1C5BB,0x00E2D7CF,0x00C8BBB8,0x00988B8F,0x006D6065,0x00504347,0x0053464A,0x00685B5F,0x0085787C,0x00A49899,0x009F948E,0x008A7F76 +dd 0x009A9C8F,0x00A4A798,0x007E8173,0x0038392E,0x001D1912,0x003A3129,0x00776C64,0x00A69B92,0x00ADA299,0x008F847B,0x00857A71,0x0091857D,0x008A7E76,0x0090847A,0x00ADA294,0x00ACA38D,0x00978F76,0x00A0977E,0x009B937A,0x00958C74,0x00B0A68E,0x00BCAC9A,0x00B19A90,0x00B69D94,0x00AF958E,0x00775E58,0x004C342F,0x00513935,0x0079615C,0x00967D79,0x00806764,0x00755B5F,0x00947A82,0x007B6068,0x005D4447,0x005A413F,0x00775F5A,0x00AD9691,0x00C9B2AD,0x00CAB2AE,0x00D6C0BA,0x00C9B3A4,0x00A8927E,0x00B39F8A,0x00C1B39C,0x00AFA58D,0x00A79D85,0x00BDB09A,0x00BCA894,0x00AD9884,0x00B19D8A,0x00AD9E92,0x00C3B7AE,0x00CEC2BA,0x00C1B4B1,0x00C0B3B7,0x00ADA2A6,0x006E6165,0x004F4246,0x0054474C,0x006F6166,0x00AC9FA0,0x00B3A8A2,0x0090857C +dd 0x008C8E80,0x008F9283,0x00717366,0x0048493D,0x003A352D,0x005B5148,0x0092877E,0x00A99E95,0x009E938A,0x008A7F76,0x0090857C,0x00A79C93,0x009F948B,0x009C9188,0x00B7AEA0,0x00B6AD98,0x00A79F86,0x00BEB59C,0x00BDB49B,0x009E957C,0x009B9179,0x009E8F79,0x009E8876,0x00C5AD9C,0x00D6BFB1,0x00B29B93,0x00755D59,0x00553D39,0x00654D48,0x008E7671,0x009D8482,0x00998082,0x00A1868E,0x006C5159,0x00593F42,0x006A524F,0x009E8783,0x00DAC5C0,0x00E2CBC6,0x00BDA5A1,0x00B8A099,0x00BEA898,0x00B59F8C,0x00C9B5A0,0x00DFD1BA,0x00C9C0A8,0x00BCB39B,0x00DCD1BA,0x00D2BFAA,0x00BCA692,0x00CEBAA7,0x00BEB0A4,0x009E9389,0x008F847B,0x00998D8A,0x00C5BABC,0x00D2C9CC,0x00918689,0x005B4E52,0x00605358,0x0076696E,0x00A99C9D,0x00B1A59F,0x00897E76 +dd 0x006F7063,0x0068685B,0x0056554A,0x0058564B,0x00686158,0x008E847B,0x009F948B,0x008D827A,0x00786C65,0x007F746D,0x00A0948E,0x00B5AAA1,0x00A59A8F,0x008C8177,0x00978D7F,0x00978E79,0x00968D75,0x00B3AA92,0x00BAB198,0x00AAA289,0x00B5AC93,0x00B0A289,0x009D8970,0x00B9A38C,0x00CDB6A4,0x00C3ABA2,0x009C837E,0x006A514C,0x00573F3B,0x006B534F,0x008D7472,0x00987E82,0x007D626A,0x00533840,0x00593F42,0x00816966,0x00AC9591,0x00CDB6B2,0x00CDB6B1,0x00B9A19C,0x00C8B0A9,0x00DAC4B5,0x00C7B19E,0x00C8B4A0,0x00DBCDB7,0x00C8BFA7,0x00BEB69E,0x00D6CCB5,0x00C2AF9A,0x00C3AD9A,0x00DCC8B7,0x00BDAFA4,0x00847870,0x00665A53,0x00736664,0x00A09497,0x00BDB2B5,0x00A4979B,0x007C6F72,0x007E7175,0x007F7275,0x00857878,0x00867A73,0x00655A52 +dd 0x0047453A,0x00463F36,0x00302820,0x003D352C,0x00685E55,0x00A0958D,0x009A8F87,0x006C615A,0x00514543,0x005A4E4E,0x00796D6B,0x0091877D,0x00968C7B,0x00897F6D,0x00847B67,0x008A816A,0x00988F77,0x009C937A,0x00968F75,0x009D977D,0x00B9B298,0x00B6A98E,0x00A08C72,0x00A69077,0x00A9937D,0x00B7A08F,0x00BBA495,0x008C746A,0x005A4140,0x00604748,0x008A7073,0x009D7E86,0x006E4D57,0x005B3A43,0x00785B5F,0x00B89F9C,0x00CBB3AF,0x00BAA29D,0x00B29A95,0x00B9A09C,0x00CBB3AD,0x00DBC4B9,0x00C1AB9D,0x00B19B8E,0x00C2AFA1,0x00BBAB9C,0x00AF9F8F,0x00BBAA98,0x00AF9B86,0x00C3AE9A,0x00C5B0A0,0x00917D78,0x006B5958,0x005F4D4D,0x005D4C4E,0x006C5E62,0x00908387,0x00AFA2A4,0x008C807F,0x00726664,0x006C605D,0x00615551,0x0062574E,0x004D4239 +dd 0x004D4A3E,0x0051483E,0x003D3229,0x00463B32,0x0062564E,0x008A7F76,0x00756960,0x00483D37,0x003C3031,0x00403337,0x00504446,0x00766B61,0x00A49B85,0x00B5AC95,0x00A69D86,0x009F967E,0x00BBB199,0x00B1A88F,0x00958E74,0x00959076,0x009D967C,0x009B8D73,0x00B09B83,0x00BDA790,0x00B39D86,0x00CFB9A3,0x00E1CBB6,0x00B39C8E,0x00664C4C,0x00553B41,0x0070535B,0x007C5964,0x005F3743,0x00653D48,0x00937377,0x00D7BDBB,0x00E1CAC6,0x00C5ADA9,0x00C3ABA6,0x00CBB3AE,0x00C1A8A3,0x00C9B2AB,0x00BEA6A0,0x00B59D97,0x00CEB6B0,0x00CFB9B3,0x00B59E98,0x00B9A297,0x00B49E8C,0x00B8A28F,0x00998374,0x00664F4E,0x0060474D,0x005F464D,0x00533F45,0x0058494E,0x0086797D,0x00BFB4B5,0x00908480,0x00635951,0x0062574F,0x005F544C,0x0062574D,0x004B4037 +dd 0x00817D71,0x00877D74,0x006E635A,0x00665B52,0x0070645C,0x0092877E,0x006F645B,0x003F3430,0x00403435,0x003D3034,0x003F3234,0x00695E53,0x00A79E88,0x00BEB59D,0x00ABA28A,0x00968D75,0x00B1A88F,0x00AEA48C,0x00A59A82,0x00B7AA94,0x00A99B83,0x008B7862,0x00A08976,0x00B29B89,0x00AF9886,0x00CCB4A2,0x00E0C9B6,0x00C0A99B,0x00715758,0x00533941,0x0060434C,0x0068434F,0x00623947,0x006D4450,0x0097757A,0x00C7ADAA,0x00C6AEAA,0x00AF9793,0x00B09893,0x00BBA29E,0x00B9A19C,0x00D0B8B3,0x00CEB6B1,0x00C2A9A4,0x00D8BFBB,0x00DBC3BF,0x00C9B0AB,0x00DBC4B9,0x00DFC9B7,0x00D2BCA9,0x00957F70,0x00614849,0x00624851,0x005E454E,0x00513D44,0x0056474C,0x00897D81,0x00C4BBBC,0x00958B86,0x00776D64,0x007E746B,0x00958A82,0x00A1958C,0x00786D64 +dd 0x00827E72,0x0092887F,0x00685C54,0x00433830,0x0052473E,0x0080756C,0x006C625A,0x00473E3B,0x00423639,0x0036292E,0x002F2223,0x004E4338,0x00837A63,0x008D856C,0x00887F67,0x007F765E,0x00887F66,0x00867B63,0x009A8974,0x00BCA693,0x00A58F7C,0x00755D4E,0x006C5249,0x007A6159,0x0090786F,0x00A48A82,0x00B89F97,0x00A78E88,0x00674D4F,0x004F343C,0x005A3D46,0x0066414D,0x006A404E,0x00754B58,0x009B7A7E,0x00BEA7A3,0x00B69E99,0x00A8908C,0x00927A76,0x00876F6A,0x00927A75,0x00AF9793,0x00BBA39F,0x00B69E99,0x00BFA7A2,0x00BDA5A0,0x00BCA39E,0x00D9C1B6,0x00DDC7B5,0x00CEB8A4,0x008D7568,0x0063494A,0x006F555D,0x00765D65,0x0078666C,0x007D6F74,0x0095888C,0x00AB9FA1,0x00796E69,0x00695E55,0x007D7269,0x00AA9F96,0x00B7ACA3,0x0080756C +dd 0x00716D63,0x00938880,0x006E635B,0x00362C25,0x00332820,0x00534840,0x006A5F57,0x00726762,0x005D5152,0x00413439,0x003B2E30,0x005C5147,0x008D836E,0x008D846C,0x009C937B,0x00A9A088,0x00978E76,0x008C7F68,0x009F8874,0x00A0816F,0x007A5B4A,0x00583B31,0x00513535,0x006A4F50,0x00A28888,0x00AF9596,0x00C0A6A7,0x00A3898A,0x0060464C,0x004A2F37,0x0051343D,0x005E3A45,0x00613644,0x006F4652,0x009F7F84,0x00CAB4B0,0x00C3ADA8,0x00CAB3AF,0x00A18984,0x006F5752,0x006F5752,0x00876F6B,0x00AA928E,0x00CDB6B2,0x00CEB7B2,0x00B29994,0x00A18983,0x00B59C92,0x00BFA997,0x00BDA693,0x00897164,0x005A3F41,0x00674C54,0x00826A72,0x009B898F,0x009A8D91,0x0083777A,0x00746768,0x00524641,0x005B5047,0x0083786F,0x00AA9F96,0x00A99E95,0x0070655C +dd 0x00625D52,0x008B8178,0x00887C74,0x00554A42,0x0032281F,0x00372C25,0x004C4139,0x00574B45,0x00413435,0x0036292D,0x004B3E41,0x007F746B,0x00ADA58F,0x00A0977F,0x00ACA38B,0x00BCB39A,0x00A29981,0x00AB9E88,0x00CAB09F,0x00AC8778,0x006E483A,0x0055332F,0x0051353B,0x00674B54,0x00A58992,0x00B0949E,0x00BCA0A9,0x00957982,0x005D424B,0x004E323C,0x0053363F,0x005F3A46,0x00643946,0x006C424D,0x0089686C,0x00B09895,0x00BAA49F,0x00CDB8B3,0x00A58E89,0x006C544F,0x00644C47,0x00765E59,0x009D8682,0x00D4BFBA,0x00D6BFBA,0x00BEA6A1,0x00AD958F,0x00B9A196,0x00D8C2B0,0x00DFC9B6,0x00AC9589,0x00654B4E,0x0060454E,0x00755B64,0x00806C73,0x0073646A,0x0064575B,0x005E5253,0x00584D48,0x00776C64,0x00B8ADA4,0x00CBC0B7,0x00A69B92,0x005F554C +dd 0x00514E42,0x007B7268,0x009B9087,0x0082776F,0x00483D35,0x002E231E,0x002E231D,0x00372C25,0x002B1F1E,0x00322728,0x005A4E4E,0x008B8077,0x00A49B87,0x00908671,0x00968D76,0x00A29980,0x00888067,0x009C917A,0x00BFA796,0x009E776C,0x005C342B,0x004E2C2B,0x00563942,0x005D414E,0x007B5F6B,0x007E6370,0x00826673,0x006C505C,0x005A3F49,0x00614650,0x00664953,0x0066434F,0x00663E4B,0x00633C47,0x006B4A4E,0x00846968,0x00957B79,0x00A08884,0x0088706D,0x00684F4C,0x005D4441,0x00684F4B,0x00836B67,0x00B19A95,0x00BFA7A3,0x00C9B1AD,0x00CAB2AE,0x00C0A89F,0x00E0C9B9,0x00E6D0BE,0x00C1AA9F,0x008A7274,0x006A5058,0x005F464D,0x00644F55,0x0059494E,0x00534548,0x005D4F50,0x00766B65,0x009B9087,0x00D0C5BB,0x00D0C4BB,0x009E938B,0x0060554D +dd 0x0038342D,0x005C534A,0x00897E76,0x00948980,0x00766B62,0x00564B44,0x0040352F,0x004E433C,0x0051453F,0x00695E57,0x0091867F,0x00998E85,0x008B8074,0x007C7165,0x00817868,0x008B826B,0x007A7159,0x00887D67,0x008C786A,0x006C4E47,0x00442520,0x003D211F,0x00492F30,0x004B3134,0x0053383E,0x005A404A,0x00614651,0x005B404B,0x00543943,0x005B4049,0x0060454E,0x0060424C,0x005A3A44,0x0053333D,0x005D3C45,0x00704E54,0x00745258,0x00715156,0x006E5356,0x0063494C,0x00573C3F,0x00624946,0x007B625E,0x00A48C87,0x00C3ABA6,0x00CBB3AF,0x00C6AFAB,0x00B29A94,0x00C7AFA6,0x00CAB3A8,0x00CAB5AC,0x00C8B4B3,0x009D8588,0x00705758,0x00725B5C,0x006F5C5C,0x006A5756,0x00887572,0x00B1A39B,0x00B6A59B,0x00B2A196,0x009A8A83,0x00766966,0x00544847 +dd 0x0025211D,0x004D443C,0x00796E65,0x008C8178,0x00998E85,0x00968B83,0x00887D75,0x00998E86,0x00968B83,0x009A8F86,0x00B3A89F,0x00ABA098,0x009E938A,0x00978C83,0x00A49A8D,0x00AFA690,0x00A29A81,0x00B6AC96,0x009C8A7E,0x005D4540,0x00422925,0x003E2421,0x00422925,0x00402723,0x00412829,0x00442A31,0x004A3039,0x00543942,0x00583E46,0x00583D46,0x00593E47,0x00634851,0x005D424B,0x0052363F,0x005C3C45,0x006D4551,0x0068404B,0x005B3842,0x005E414A,0x0060454E,0x005D4248,0x006A5150,0x007C6360,0x009A817D,0x00C6AFAA,0x00C2ABA6,0x00A78E8A,0x009C847F,0x00AC9791,0x00B09892,0x00CAB3AD,0x00E1CCC8,0x00C0A8A5,0x00AC9490,0x00C4ADAA,0x00C5B0AB,0x00A8928D,0x00BCA7A2,0x00D7C7C0,0x00BBA79E,0x008F7871,0x00675551,0x005D4F51,0x0054484B +dd 0x002D2724,0x0060564E,0x008C8178,0x00887D74,0x008D8279,0x00978C83,0x00A0958D,0x00B1A69D,0x00A99E95,0x0093887F,0x009A8F86,0x009D9289,0x00A89D94,0x009A8F85,0x00A79C8E,0x00AEA690,0x00A19980,0x00BDB49D,0x00AD9B8F,0x00644D48,0x00442C28,0x00462D29,0x004A312C,0x00472F2B,0x00482F2F,0x0042272E,0x00422831,0x004D323B,0x00593E47,0x005F444D,0x0060454E,0x0061464F,0x005F454E,0x00593E47,0x005B3944,0x00683F4C,0x00663D4A,0x005F3A45,0x00644650,0x006B4F58,0x00654A50,0x00644B4A,0x0069514D,0x00846B67,0x00AF9893,0x00B49C98,0x00AB938F,0x00B6A19D,0x00C8B8B4,0x00B6A09C,0x00B49C98,0x00C1AAA6,0x00AF9692,0x00C0A7A3,0x00DEC6C1,0x00DCC5C0,0x00B59D98,0x00AF9793,0x00B49F9C,0x00A28B88,0x00957D7A,0x006D5A59,0x00635558,0x005E5255 +dd 0x002B2825,0x006A6159,0x008C8279,0x0071665F,0x00675C54,0x007A6F66,0x00968B82,0x00A0958C,0x00948980,0x007D7269,0x00847970,0x008E837A,0x009B9087,0x00887D74,0x00887C6F,0x00867D67,0x00817960,0x00958B74,0x00968578,0x0077605B,0x00543C37,0x003E2621,0x003C231F,0x00412824,0x004C3332,0x004D3239,0x00482D36,0x00432932,0x00482E37,0x00583E47,0x0060454E,0x0051363F,0x004C323B,0x00573B45,0x005E3B46,0x0069404D,0x00643A48,0x005A3642,0x005E414B,0x00634851,0x005E4349,0x005D4443,0x006D5551,0x00957D78,0x00AD9692,0x00A48C88,0x00BAA29E,0x00C1AAA6,0x00C2ACA8,0x00B59D99,0x00B29B97,0x00AE9793,0x00907874,0x00A38B86,0x00BCA49F,0x00BBA49F,0x00967D79,0x007D6462,0x007B6165,0x00866B71,0x009E858A,0x00766266,0x0056474C,0x00524549 +dd 0x004A4541,0x00756B63,0x0071675F,0x00403731,0x00392E28,0x005C5149,0x00847970,0x0091867D,0x00897E75,0x0082776E,0x00988D84,0x0091857D,0x008B7F77,0x00968A82,0x0093887B,0x00887E69,0x00999078,0x00998E78,0x008F7E71,0x00A68F89,0x0098807B,0x00634A46,0x004F3732,0x004F3632,0x005F4646,0x00654A51,0x00543942,0x00412730,0x003F242D,0x004C323B,0x00593F48,0x00523740,0x00492E37,0x00533740,0x005A3742,0x00663D4A,0x00673D4B,0x0065414D,0x006B4F59,0x00654B54,0x006B5056,0x007F6664,0x00977F7B,0x00B09994,0x00C0AAA5,0x00AD9591,0x00CAB2AE,0x00CEB7B3,0x00B29B97,0x00AD9692,0x00CCB8B4,0x00CFBCB7,0x00A18A86,0x00A58E89,0x00B5A19C,0x00AC9793,0x00775F5B,0x00563C3D,0x005B3F4B,0x006B4E5F,0x00876C7C,0x007A646F,0x005E4E55,0x0053454A +dd 0x00625B57,0x00675D55,0x00574C45,0x00392F29,0x00342923,0x005D524A,0x00998E85,0x00B2A79F,0x00A2978E,0x00887E75,0x00A39990,0x00A2978E,0x00998D84,0x00B1A59B,0x00A89E90,0x00948B74,0x00AEA58C,0x00A59A84,0x008F7E71,0x00B9A29C,0x00C6ADA9,0x009F8581,0x009F8681,0x00947B77,0x00816968,0x006B5158,0x00553A43,0x00492E37,0x00422730,0x00422831,0x004C313A,0x0050353E,0x004E333C,0x005B3E47,0x00603E48,0x00653D49,0x00714754,0x0084606B,0x00957982,0x008C727B,0x00A1868C,0x00C3A9A8,0x00C2AAA5,0x00A28985,0x00A68E8A,0x00A68E89,0x00BAA29E,0x00C7B2AD,0x00B19A95,0x00A78F8B,0x00BBA4A0,0x00BFA8A4,0x00A68E8A,0x00C5B0AB,0x00DACDC9,0x00C6B9B6,0x007E6865,0x004A3033,0x00523548,0x005E4058,0x0073556D,0x00866E7F,0x008A7981,0x00706267 +dd 0x005C5651,0x00413831,0x00302622,0x003D322C,0x0050453D,0x0070655C,0x00998E85,0x00A89F98,0x009A928D,0x00817974,0x00948C86,0x0093897F,0x00897E72,0x009C9183,0x00918776,0x007C735A,0x0090876C,0x008B7F68,0x006E5B4F,0x0088716C,0x009E8580,0x008E736F,0x009F827E,0x008E726E,0x00694E4E,0x004C3239,0x00472D36,0x004B3039,0x004C2D38,0x00492A34,0x004D2E38,0x0053343F,0x0050313C,0x00573742,0x00613E4A,0x005F3744,0x00673A49,0x00754C59,0x0081616B,0x007E606A,0x0094777F,0x00AD9193,0x00A28686,0x00826565,0x009E8481,0x00C3ABA3,0x00BBA59B,0x00A89289,0x00AC958E,0x00BFA9A2,0x00B29A93,0x009E8780,0x00977F78,0x00AE9790,0x00BDAAA3,0x00B7A39D,0x008D7671,0x005D4446,0x00573B4E,0x00583C55,0x00634760,0x00816B7C,0x00A3939C,0x0083767B +dd 0x0059534E,0x00483F38,0x002D2622,0x00332A25,0x005E534C,0x0082776E,0x00867C74,0x0087807A,0x007E7C7B,0x007A7979,0x008A8886,0x00868174,0x00837A66,0x00998F7A,0x008B826B,0x007E765A,0x00999073,0x009F947A,0x006D5A4D,0x00563E38,0x005C423E,0x00593A38,0x006B4745,0x006B4645,0x00573639,0x0042262F,0x00432932,0x004C2E39,0x00542F3B,0x0056303C,0x00552F3B,0x005B3442,0x005B3440,0x0059333F,0x00603E49,0x005E3846,0x00613141,0x00643242,0x006A404D,0x006D4653,0x0076505B,0x0076515A,0x006F4A53,0x00755158,0x00AF9290,0x00E1CABC,0x00CEBCA5,0x00A39079,0x00A89483,0x00CDB9AA,0x00BEA89A,0x00B8A193,0x00BDA798,0x00A68F80,0x00A38D7E,0x00BAA496,0x00BBA597,0x008B756C,0x00574345,0x004C3A41,0x005F4D55,0x00847379,0x00A7989D,0x007F7176 +dd 0x004F4742,0x00685D56,0x00655C54,0x005A5049,0x007E736A,0x009D9289,0x00958A82,0x00968E88,0x00888685,0x00919091,0x00A3A19E,0x009B9587,0x00938A74,0x00A59C84,0x00918870,0x0090876E,0x00B9B097,0x00C1B6A0,0x00847166,0x00503833,0x00422824,0x00472825,0x00583231,0x005D3537,0x00573439,0x004A2E37,0x00442A34,0x004B2C37,0x00512A37,0x00542B38,0x00542A38,0x00552C39,0x00552C39,0x00512936,0x0055333E,0x005D3845,0x006C3C4C,0x00713C4D,0x006C3F4C,0x00653B48,0x00643A48,0x005D3341,0x005E3541,0x00724B56,0x00A68889,0x00CBB4A6,0x00C2AE94,0x00AC987C,0x00AB9580,0x00B7A18E,0x00B49E8B,0x00CCB7A5,0x00DBC8B5,0x00BDA794,0x00BAA591,0x00DBC6B3,0x00DFCAB8,0x00B09D8C,0x0065564C,0x00564B43,0x007B6F68,0x00918582,0x0096898C,0x00726469 +dd 0x00332C27,0x006A6058,0x008E837A,0x00887E75,0x008F847B,0x0090847C,0x0082776E,0x00857C74,0x00767069,0x00847E79,0x009A948D,0x00908978,0x007D745D,0x008F866E,0x00958C76,0x00978D7B,0x00ACA290,0x009F9383,0x006D5A50,0x00503733,0x003F2522,0x00462624,0x00552F2F,0x00552E2F,0x00502C31,0x0050343C,0x004D333D,0x005A3C46,0x00633D4A,0x005A313E,0x00532937,0x00542A38,0x00582E3B,0x00532A37,0x0053303C,0x00532F3C,0x00663646,0x00713C4E,0x006E424F,0x00673D4A,0x00633846,0x005F3542,0x00643B48,0x00724A56,0x0088686E,0x00A0877F,0x00BAA58D,0x00D1BCA1,0x00C7B19B,0x00A38D79,0x009C8672,0x00C0AA96,0x00CCB7A3,0x00B7A18D,0x00B49E8A,0x00CBB5A1,0x00C1AC98,0x00AF9B89,0x008B7D71,0x0080756B,0x009A8F87,0x008E837F,0x0073666A,0x005D4F54 +dd 0x00231D19,0x005B5149,0x0092877E,0x0090857C,0x00867B72,0x007D7269,0x00867A71,0x0094887E,0x00807367,0x00817468,0x00998D81,0x00928775,0x00726A52,0x00857D65,0x00AEA593,0x00ABA095,0x00897E75,0x0061544C,0x0045312A,0x00462E2A,0x00422824,0x00422220,0x00502929,0x00532C2D,0x004D2A2D,0x0053373F,0x00634851,0x0080626B,0x0089636E,0x006F4552,0x00603644,0x005A303D,0x00623845,0x00714855,0x00805B68,0x00643F4D,0x005D2C3E,0x00602C3D,0x00623643,0x00633946,0x005C323F,0x00592F3C,0x005F3542,0x00643C49,0x006D4C58,0x00826868,0x00B19A89,0x00D5BFA8,0x00C6B09A,0x009D8773,0x0099836F,0x00B4A08C,0x00B19C88,0x009A8470,0x009D8774,0x00AE9A87,0x00A08B76,0x00B8A592,0x00C4B8AB,0x00A2978E,0x0082776E,0x00655A56,0x00594D50,0x0055484D +dd 0x00231D1A,0x00534942,0x00968B82,0x00A2978E,0x009A8F86,0x0092877E,0x00A3988D,0x00B6A79A,0x009F8C7A,0x00998573,0x00B7A492,0x00AFA18C,0x0080765E,0x00847B64,0x00A89E8F,0x00AC9F9D,0x00766968,0x00433533,0x00331F1B,0x003B241F,0x00442A26,0x0041201E,0x004D2727,0x00563030,0x00502C30,0x004D3139,0x00644A53,0x008B6D77,0x0086606B,0x00633946,0x005A2F3D,0x00552A38,0x005E3441,0x007D5662,0x00A3808C,0x00835E6C,0x00653245,0x00612C3E,0x00653746,0x006D4350,0x00643A47,0x005C313F,0x00572E3A,0x00562E3C,0x005B394A,0x00664B54,0x0089716B,0x00B29B8A,0x00BCA691,0x00AF9985,0x00B19C88,0x00D8C6B2,0x00D6C3AF,0x00B09B87,0x00B8A491,0x00C4B4A2,0x00A6937F,0x00BCAA98,0x00D7CCC0,0x00B6ABA2,0x00786C64,0x00514541,0x00584B4E,0x00594C50 +dd 0x0025211E,0x00544A43,0x008E837A,0x00978C83,0x008F847B,0x008D8279,0x009E9388,0x00B1A192,0x00A08874,0x00A18772,0x00BBA38D,0x00AB9B84,0x008B8068,0x009A907A,0x00958A7E,0x00817578,0x005A4D53,0x003C2E30,0x0036211F,0x003B221E,0x00432926,0x003F1F1D,0x00462120,0x00522D2D,0x004E2C2F,0x00563940,0x00765A63,0x00846570,0x006C4653,0x00532937,0x00532937,0x00582E3B,0x005D3440,0x00744D59,0x0094727D,0x00835E6B,0x00653546,0x00612E3F,0x00613442,0x00663D4A,0x00683E4B,0x00663C49,0x00603743,0x005A3341,0x0058364C,0x005E4052,0x007E6366,0x00B39C91,0x00DBC7B3,0x00D6C0AC,0x00BCA793,0x00D7C4B0,0x00D8C8B4,0x00A99481,0x00AA9480,0x00B29E8B,0x00927C68,0x009B8775,0x00B0A296,0x00A0958B,0x008C8077,0x00665A56,0x00544749,0x004A3D41 +dd 0x004A4540,0x006D635B,0x008F847B,0x0090857C,0x00867B72,0x007C7168,0x0083786D,0x00928374,0x0087715B,0x008B745D,0x009C8770,0x008B7D68,0x00827764,0x00A39888,0x00897E75,0x00594E4E,0x00463A3C,0x00473939,0x00442F2D,0x00412825,0x00422A25,0x00422824,0x00412622,0x004C312D,0x00513632,0x006F5453,0x00997D82,0x00846670,0x005D3B48,0x004E2936,0x004E2936,0x0055323E,0x00502D38,0x0057343F,0x0073515A,0x0086636A,0x0078535B,0x005D363F,0x0058333B,0x005C3841,0x0058343C,0x0057333B,0x00603C43,0x0063404A,0x005E3E51,0x005C3E51,0x0073575F,0x00A38A83,0x00D7C2AF,0x00E0CAB6,0x00BAA490,0x00B49F8B,0x00B9A591,0x009B8571,0x00AC9682,0x00BFAC97,0x00A48F7A,0x00AA9784,0x00BDAEA1,0x00A69A90,0x00B8ADA2,0x009A8F89,0x005D5151,0x00433739 +dd 0x0059524A,0x00766B62,0x0093877E,0x009D9289,0x009A8F86,0x00857A71,0x00867C71,0x008F8373,0x007E715A,0x007C7057,0x00887B65,0x00817565,0x0071665A,0x00877C72,0x00776B63,0x00463B35,0x00382C27,0x00443630,0x003F2925,0x0039201C,0x003D2621,0x0043302A,0x00372820,0x0043352C,0x00625244,0x00887165,0x00987F7E,0x006D525C,0x00543843,0x00553843,0x0050333D,0x0050343D,0x004B2E37,0x00492A33,0x00664148,0x009B787A,0x00B09895,0x007B6562,0x00593E3E,0x005C3F41,0x00604444,0x00553939,0x004F3532,0x00553A3B,0x00573B46,0x00573A4A,0x00624651,0x00846B68,0x00B59F8E,0x00C9B39F,0x00B09A86,0x00A9937F,0x00BBA692,0x00A8927E,0x00B9A793,0x00CEC2AB,0x00ADA089,0x00AEA28B,0x00C3B7A4,0x00A39987,0x00C0B6A5,0x00C1B8A9,0x0083786D,0x00554A40 +dd 0x00544C43,0x006D6259,0x00887D73,0x0092877E,0x00968B82,0x00897E75,0x00988E83,0x00A39989,0x00938972,0x009D937B,0x00ADA38F,0x00A79D8F,0x00897D74,0x009C9188,0x00A1968D,0x0071665E,0x00554941,0x0061514A,0x0057403B,0x00513834,0x006B544F,0x0076645D,0x005B4F46,0x006B5F55,0x009B8C7C,0x00A89384,0x00836A69,0x00513741,0x00452B36,0x0050363F,0x00513740,0x00533942,0x005A3F48,0x00563942,0x00654047,0x00916D6E,0x00BAA59F,0x00A2918A,0x007C655F,0x00775D59,0x00927974,0x00907773,0x00715954,0x006E5553,0x00694E53,0x00775A65,0x0081656D,0x00977E7A,0x00C0AC9A,0x00BDA792,0x0097816D,0x009E8874,0x00B49E8A,0x009D8974,0x009C8D77,0x00B4AA93,0x00958C74,0x008E866D,0x00A49C84,0x008D846C,0x00A69D86,0x00BBB39C,0x009B927C,0x00645B45 +dd 0x004E473C,0x006A6056,0x00847A70,0x00877C73,0x008D8279,0x007F746B,0x00867B70,0x008D8372,0x00867D65,0x009A9178,0x00A9A18C,0x009E9488,0x007F746B,0x009A8F86,0x00B2A79E,0x00948980,0x008A7E75,0x00A5968D,0x009A847E,0x008C746F,0x00AD9691,0x00AD9D95,0x00887D75,0x0092867D,0x00BBAB9C,0x00BEA99A,0x00836B69,0x00553B44,0x00492F39,0x004E333C,0x00533841,0x00563C45,0x005D434C,0x00553841,0x00563237,0x006D4B4B,0x0098837C,0x00BAAA9F,0x00C1AC9F,0x00B59D91,0x00BEA59C,0x00C4ACA5,0x00AE9691,0x00BAA19E,0x00AC9291,0x00C4AAAC,0x00C1A7A8,0x00B09A92,0x00D6C4B2,0x00D6C1AC,0x00A8927D,0x00B6A08C,0x00C6B09C,0x00AC9782,0x0094836D,0x00ADA38B,0x009A9279,0x00948B73,0x00ABA38B,0x008E856D,0x00968D75,0x00AFA78E,0x00A89F87,0x006F674F +dd 0x005A5448,0x00786E64,0x0092887E,0x0092877E,0x009D9289,0x0093887F,0x00968B81,0x00978E7D,0x007F775F,0x007E765D,0x00857D68,0x007A6F63,0x0061564D,0x007F746B,0x0091867D,0x007A6F66,0x007E736A,0x0096877F,0x00917A75,0x00866D68,0x00A48E88,0x00A3948B,0x00887C73,0x008E8378,0x00A09181,0x00998374,0x00664D4B,0x00523841,0x00543A44,0x004F353E,0x004E333C,0x004E333C,0x00513740,0x004A2E36,0x00482429,0x00603E3E,0x0097827B,0x00D4C6B7,0x00E9D6C1,0x00D2BCA7,0x00C0A998,0x00C4ACA4,0x00B39B96,0x00C3AAA5,0x00AF9690,0x00CBB2AB,0x00CCB4AC,0x00AB9488,0x00C5B09E,0x00D4BEA9,0x00AF9884,0x00C8B29E,0x00DAC4B0,0x00C3AE99,0x00A2917B,0x00BDB29B,0x00B0A88F,0x00AAA28A,0x00C4BEA7,0x00A09880,0x00B0A78F,0x00D2CAB2,0x00C9C2AA,0x00817961 +dd 0x005B544B,0x00766B62,0x008D8279,0x0092877E,0x009E938A,0x00958A81,0x00A59990,0x00ADA393,0x008D856E,0x008A8169,0x0099907B,0x008F8478,0x00786D64,0x00998D85,0x00978C83,0x007D7269,0x008E837B,0x009D8E87,0x0098827C,0x00977E79,0x00BEA6A1,0x00BDADA5,0x009D9289,0x00A89D92,0x00AC9D8D,0x008A7464,0x00513836,0x00462A34,0x004D323D,0x004D323C,0x004F353D,0x004F343D,0x004F353D,0x004B3038,0x00472329,0x005D3B3A,0x00917C75,0x00CABBA9,0x00DAC7A9,0x00C0AB8C,0x00A79179,0x00AD958A,0x009E8681,0x00A68D87,0x009D8479,0x00B49D8D,0x00BAA492,0x009C8573,0x009F8975,0x00B29C88,0x009F8975,0x00B8A18D,0x00CBB4A1,0x00B8A28E,0x00978670,0x00A89D85,0x00A49B83,0x009D957D,0x00B2AA93,0x00938A72,0x00B2A991,0x00D2CAB1,0x00C2BAA1,0x007A725A +dd 0x005D564C,0x00776D64,0x00887E75,0x00877D74,0x00887D74,0x007A6F66,0x00897F74,0x00938978,0x007C735C,0x00867D65,0x009C937E,0x0092877B,0x007C7068,0x009C9188,0x00998D84,0x0083776F,0x00998E86,0x00A79891,0x009A857F,0x008D7470,0x00AA938F,0x00A99892,0x00877B73,0x0093877D,0x00A59686,0x008D7667,0x005A403D,0x004C3038,0x004D313B,0x00523740,0x005B4149,0x00593F47,0x00573C43,0x005C4046,0x00563337,0x00603F3D,0x00836E64,0x00A99985,0x00B29F7F,0x009F8B67,0x00988266,0x00AC9588,0x00A28A84,0x009A827A,0x00A58E7F,0x00AB9580,0x00A8927C,0x00937D68,0x00937D69,0x00A8927E,0x00A08975,0x009B8471,0x00A8917D,0x00A48E7A,0x008D7C67,0x00837961,0x008F876E,0x00948B73,0x00948C73,0x00736A51,0x00938A71,0x00AAA188,0x009B9279,0x00685F46 +dd 0x005A554A,0x007E766C,0x00948C82,0x008F867C,0x008E8378,0x0080756B,0x00877D70,0x008A806D,0x00736A54,0x007D755D,0x008B826C,0x00827868,0x006A6052,0x00847A6B,0x00887D6F,0x00736A5B,0x00807669,0x0096897D,0x00907F73,0x007D6A5F,0x00917F74,0x008E8174,0x007B7062,0x00948879,0x00AF9F8E,0x009A8373,0x0060473E,0x00503634,0x004F3537,0x004D3336,0x0052393B,0x004F3638,0x004B3133,0x00553A3B,0x004E2F2C,0x00593C34,0x008A7567,0x00BFAE98,0x00CBB79A,0x00B49F80,0x00AE997E,0x00CDB6A7,0x00C3ABA2,0x00AF988C,0x00CBB5A3,0x00D2BCA6,0x00C7B19A,0x00AB957E,0x00B19B87,0x00CCB6A2,0x00C7B19D,0x00AB9682,0x00BDA894,0x00CAB6A2,0x00B9A993,0x00998D76,0x00B4AA93,0x00CAC1AA,0x00BCB39B,0x008C836A,0x00A49B82,0x00B9B097,0x00AAA189,0x00726950 +dd 0x004C4C40,0x006C6C60,0x00828175,0x00888577,0x009B9381,0x00928976,0x009B927D,0x00A39A83,0x008F866E,0x00A19880,0x00AAA189,0x009E957F,0x00837B64,0x009E957F,0x00ABA28B,0x00958C76,0x009B927C,0x00B5AC96,0x00A79D87,0x00938973,0x00B1A691,0x00AEA58F,0x00948A74,0x00ADA38C,0x00C9B9A3,0x00AA9580,0x005D4633,0x00462F22,0x00462D28,0x00452D29,0x004C3430,0x0049312D,0x00412924,0x00472F28,0x00472E22,0x00563E2D,0x0088735F,0x00C1AC98,0x00CFBAA5,0x00B7A18B,0x00A58F79,0x00BDA694,0x00B29C8A,0x00A28B79,0x00C1AB97,0x00D4BEA9,0x00CCB6A1,0x00AA947F,0x00B6A08C,0x00D0BAA6,0x00C8B49F,0x00A89782,0x00BEB099,0x00D1C4AE,0x00C0B4A0,0x009A8F7F,0x00B6AB9C,0x00D1C6B5,0x00C6BDA8,0x00A0977E,0x00BEB59D,0x00CFC6AE,0x00C1B8A0,0x0081785F +dd 0x00484A3D,0x005E6153,0x006E7063,0x007A7969,0x00918A74,0x008A816A,0x00938A72,0x009E957D,0x008B826A,0x009C937B,0x00A59C84,0x009E957D,0x00857C64,0x009B9279,0x00A79E86,0x00928970,0x00948B72,0x00A9A087,0x00999078,0x008B826A,0x00AFA68F,0x00AFA68E,0x00887F67,0x00938971,0x00AF9F89,0x00A18C78,0x006F5945,0x00685143,0x00523A33,0x00432B26,0x004C342F,0x00513834,0x004C342F,0x00513933,0x00614A3D,0x00705947,0x007F6955,0x009C8672,0x00AE9884,0x00A48E7A,0x008E7864,0x00A08A76,0x00A38D79,0x00957F6B,0x009E8874,0x00B09A86,0x00AE9884,0x00937D69,0x00A18B77,0x00BBA490,0x00B19C87,0x008F806A,0x009A9078,0x00AFA58E,0x00A89F8C,0x008C8276,0x00A1968D,0x00B9AEA3,0x00B2A996,0x00988F77,0x00BDB49C,0x00CDC4AC,0x00C0B79F,0x00867D64 +dd 0x004F5245,0x00616356,0x006B6D60,0x007A7968,0x00857E68,0x00827961,0x00857C64,0x00867D65,0x00736A52,0x007B725A,0x00827961,0x00837A61,0x00736A51,0x00847B62,0x008C836B,0x00797057,0x007D745B,0x008C836A,0x007F765E,0x00726951,0x008F866E,0x00958C74,0x00756D55,0x00786E56,0x0093836C,0x0096816C,0x00917B67,0x00A58E80,0x00705851,0x0049302C,0x00523A35,0x0059403C,0x00543C37,0x00604842,0x008E786A,0x00B29B88,0x00A48D79,0x00A18A76,0x00BAA390,0x00BFA995,0x00A7907D,0x00B49E8A,0x00C5AF9B,0x00B49E8A,0x00AB9581,0x00C2AC98,0x00C3AD99,0x009F8975,0x009B8471,0x00B19A86,0x00AB9681,0x008C7E67,0x00938971,0x00A79E86,0x00A79E8B,0x008F8479,0x00938880,0x00A69B91,0x00A29886,0x00897F68,0x00A29981,0x00B3AA92,0x00A59C83,0x00766D54 +dd 0x00484B3D,0x00646759,0x006D7062,0x00868574,0x008A856E,0x00928A72,0x00A29981,0x009C937A,0x00857C64,0x008D846C,0x008F866D,0x008E856C,0x00898068,0x00A19880,0x00A79E86,0x008F866D,0x009C947B,0x00ADA48B,0x009F967D,0x008E856D,0x00ABA38A,0x00B3AA92,0x00958C74,0x009B9079,0x00BBAB94,0x00B7A18D,0x00B09986,0x00C6AFA1,0x00836B65,0x00422925,0x00462D29,0x004C332F,0x004B332F,0x0068504A,0x00AA9385,0x00D0B9A6,0x00B7A18D,0x00AE9884,0x00CAB4A0,0x00D0B9A5,0x00B39D89,0x00B7A08C,0x00CBB5A1,0x00B9A38F,0x00B09A86,0x00CCB6A2,0x00D0B9A6,0x00AD9683,0x00AA9380,0x00CCB6A2,0x00CEB9A4,0x00AE9F88,0x00B3A990,0x00CAC1A8,0x00CAC1AD,0x00ABA095,0x00A49990,0x00BCB1A6,0x00BFB5A2,0x00978E76,0x00999178,0x00B5AC94,0x00AFA68D,0x0080775F +dd 0x003E4032,0x00585A4C,0x005E6052,0x00807F6F,0x008D8670,0x00958D74,0x00ABA289,0x00AAA189,0x00978E76,0x00A59C83,0x00A29981,0x009B927A,0x00999078,0x00B2AA91,0x00B5AD95,0x00999078,0x00A89F87,0x00B5AC94,0x00A49B82,0x00938B72,0x00B6AE95,0x00BEB59C,0x00A29980,0x00A59B83,0x00C1B19B,0x00BBA591,0x00B19B88,0x00C9B2A3,0x009A827B,0x004F3632,0x00432B26,0x00432A26,0x00412924,0x006A534C,0x00AD9688,0x00C5AF9C,0x00AD9783,0x00A8917D,0x00C2AC98,0x00CAB39F,0x00B39C88,0x00AE9784,0x00C3AD99,0x00B39D89,0x00AA9480,0x00C7B19D,0x00CAB39F,0x00A7907C,0x00A48E7A,0x00CAB4A0,0x00D1BBA6,0x00AF9F88,0x00B1A78D,0x00CBC2A9,0x00CBC2AD,0x00ABA094,0x00A2978E,0x00BBB0A5,0x00C0B6A3,0x00A19880,0x00AAA189,0x00C8BFA7,0x00C0B79E,0x00898067 +dd 0x00484A3D,0x00595B4D,0x0057594C,0x00747463,0x008F8771,0x008A8169,0x008D846C,0x00938A71,0x008C836B,0x00978E76,0x00999076,0x00968D74,0x00968D75,0x00A29A81,0x00A39B82,0x0090886F,0x00958D74,0x00958C73,0x00877E65,0x0080775F,0x00999078,0x009C937A,0x0091876E,0x00928870,0x00A4937D,0x00A48E7A,0x009F8975,0x00AC9486,0x00A08881,0x00735B56,0x0058403B,0x00503833,0x00503833,0x00765E57,0x009C8577,0x00A38C78,0x00957F6B,0x009B8571,0x00A9937F,0x00AF9985,0x009E8874,0x00998370,0x00A6907C,0x009B8571,0x0097816C,0x00B19B86,0x00B39C88,0x00917B67,0x00907A66,0x00B09A86,0x00B19C88,0x0092836D,0x0091876E,0x00AEA58C,0x00AFA591,0x0094897D,0x0092877E,0x00A89E93,0x00A69C8A,0x008E856D,0x00A39A82,0x00BDB49C,0x00B5AC93,0x007F765E +dd 0x0055584D,0x00696C5F,0x006A6D5F,0x00787968,0x00938D75,0x00857D62,0x0080785E,0x00938A72,0x00948B75,0x008F8670,0x00978E77,0x00A1987F,0x009F967D,0x008E866B,0x00898167,0x00938B70,0x00958D73,0x00877E65,0x00857D62,0x008E856B,0x0091876E,0x008C7E66,0x00A09078,0x009F8E75,0x00927E65,0x00A38A71,0x00B19980,0x00A38C7A,0x00958078,0x008D7973,0x00614C45,0x00503932,0x006F584F,0x00A79085,0x00B9A292,0x00A8927D,0x009D8773,0x00BCA692,0x00C1AB97,0x00B59F8C,0x00A48E7B,0x00B09B89,0x00B39F8D,0x00A28E7C,0x00A08B78,0x00B9A28E,0x00B7A18D,0x0097816D,0x0099836F,0x00B19B87,0x00B19B87,0x00998973,0x0091866E,0x00AEA48D,0x00B1A693,0x00968C7F,0x00988D83,0x00B0A69A,0x00A9A08D,0x008B826A,0x00958C74,0x00ABA289,0x00A79E86,0x00736A52 +dd 0x0041473E,0x005C6053,0x006E7163,0x0080806E,0x009A947A,0x008B8366,0x0092896F,0x00ADA390,0x00B0A698,0x00A59C8D,0x00ADA48F,0x00B5AD92,0x00B3AC8F,0x009C9477,0x00989073,0x00B4AC8F,0x00B4AC8F,0x009B9376,0x009D9678,0x00B3AA8D,0x00AA9E83,0x009F8871,0x00C5AB94,0x00C5AA91,0x00A4896C,0x00BBA07F,0x00D2B897,0x00B6A088,0x009A8B7F,0x00AB9F97,0x00807269,0x005E4A40,0x008A7565,0x00C4AE9C,0x00CDB6A3,0x00B49D89,0x009F8975,0x00CAB39F,0x00D3BDA9,0x00C4AE9A,0x00AF9988,0x00C6B6A8,0x00C9BBAE,0x00B0A194,0x00AF9D8D,0x00D3BEA9,0x00D5BFAB,0x00B09A86,0x00B49E8A,0x00D0BAA6,0x00D4BDA9,0x00B7A38E,0x00A79680,0x00C5B59E,0x00C6B7A3,0x00A69B89,0x00A99F8E,0x00C2B8A7,0x00BCB39E,0x009E957D,0x00ACA38B,0x00C9C0A8,0x00C3BAA1,0x007F765D +dd 0x00383A31,0x004C4E42,0x00626456,0x00757463,0x008B846C,0x007D745A,0x00877D67,0x00A19688,0x00A69B92,0x009E9389,0x00A29887,0x00A69D84,0x00A59D82,0x00978F73,0x00968C71,0x00B2A98E,0x00B2A98E,0x00968E73,0x00978E73,0x00ACA489,0x00A0937A,0x00967E69,0x00C1A691,0x00C2A891,0x00A1886B,0x00B59D7B,0x00C7B08F,0x00AF9D84,0x0093867B,0x00B4A9A1,0x00AB9E94,0x00877464,0x009F8A76,0x00C3AD99,0x00C5AF9B,0x00B29C88,0x009B8470,0x00C2AB97,0x00D0B9A5,0x00C3AD99,0x00AF9B89,0x00C8B9AD,0x00CBC0B6,0x00ADA197,0x00AB9A8C,0x00D7C3AE,0x00DBC5B1,0x00B39D89,0x00B59F8B,0x00CFB9A5,0x00D2BCA8,0x00B7A18D,0x00AA9480,0x00C4AE99,0x00C2AF9A,0x009F947C,0x00A59C84,0x00BFB69E,0x00BFB69E,0x00A29A81,0x00B8AF96,0x00D5CCB4,0x00C6BDA5,0x007A7158 +dd 0x00373428,0x003E3F33,0x004E5043,0x005A5849,0x006B6350,0x00665C48,0x006F6453,0x0084796D,0x0090857D,0x0090847B,0x00958B7D,0x00918873,0x00867D68,0x007A725C,0x00736954,0x00837A65,0x0089806B,0x007C735E,0x00796F5A,0x007D735E,0x00746854,0x00776452,0x009B8674,0x009A8672,0x00826F55,0x00907E61,0x009A896C,0x008C7D68,0x00776B60,0x008F847C,0x0094877C,0x007F6C5B,0x0089735F,0x009E8874,0x009B8571,0x00907A66,0x00826C58,0x00A38C78,0x00B19B87,0x00A9927F,0x009B8674,0x00A89A8D,0x00ABA097,0x00978C83,0x0097877A,0x00BFAA96,0x00C2AC98,0x009F8975,0x00A58F7B,0x00BAA490,0x00BCA692,0x00A58F7B,0x009F8975,0x00B7A08C,0x00B3A08B,0x008E836B,0x008F866E,0x00AAA189,0x00B3AA92,0x009A9279,0x00ADA48B,0x00C0B89F,0x00ADA48B,0x006A6149 +dd 0x002E281E,0x002F3024,0x003C3E32,0x00424034,0x004E463B,0x00554A3F,0x005A4F44,0x0060544B,0x006A5E55,0x0071655D,0x0083786F,0x00786D62,0x00665B4F,0x005F5548,0x00594E42,0x005B5044,0x00655B4F,0x00655A4F,0x005F5449,0x0051463A,0x00584D41,0x006C5E52,0x007C6E62,0x006F6254,0x00635642,0x006E634C,0x00736850,0x006A5F4D,0x005F5349,0x006F645C,0x0076695E,0x006C5848,0x0068523E,0x0077614D,0x0079634F,0x00735D49,0x006F5945,0x00856F5B,0x008E7764,0x00866F5B,0x007B6754,0x007E7063,0x0080746B,0x0074685F,0x00766759,0x00907B68,0x00927C68,0x0079634F,0x00816B57,0x00907A66,0x008F7965,0x00816B57,0x007C6652,0x008C7662,0x008C7A65,0x0071664F,0x006E654D,0x0081785F,0x00898067,0x00746B53,0x007B725A,0x00877E66,0x007D745C,0x00534A32 +dd 0x001D1913,0x001D1F14,0x002D3023,0x00353329,0x00352B27,0x003A2E2B,0x00453834,0x00433730,0x0043372E,0x0051453D,0x006F645E,0x005F5350,0x004C3F3D,0x004B3E3B,0x00504440,0x00483C38,0x00524643,0x005A4E4B,0x005E524F,0x00514642,0x00534944,0x005F5852,0x00625C56,0x00554F47,0x00504B3D,0x005C5846,0x00605B49,0x005F5749,0x005B5047,0x00665B52,0x006B5E54,0x006B5846,0x005F4A36,0x006B5440,0x00725C48,0x006F5945,0x006C5542,0x007A6350,0x00806956,0x0079634F,0x00715D4B,0x00756659,0x0074685F,0x00675B53,0x006C5C4F,0x00816C5A,0x00856E5A,0x00725C48,0x007E6854,0x008D7763,0x008B7561,0x007F6955,0x0076604C,0x007F6955,0x007C6A56,0x00695E46,0x006B634A,0x007F765D,0x00827961,0x006D644C,0x0070674F,0x0080785F,0x007B725A,0x00524931 +dd 0x00121211,0x000F110C,0x0023251A,0x002F2C24,0x0023191A,0x00271B1E,0x00413335,0x003F332D,0x002F2219,0x003C3027,0x00635654,0x004E4144,0x0037292D,0x0035282B,0x0046393C,0x003C2E32,0x0046383C,0x00514447,0x005B4F52,0x0054494A,0x00483F3F,0x004A4847,0x004D4B4B,0x00454442,0x003F4136,0x0046483A,0x00494A3B,0x004F4A3E,0x004F453C,0x0053483F,0x005A4D42,0x00655140,0x0059432F,0x005F4935,0x006C5642,0x006B5541,0x00644E3A,0x006F5945,0x00735D49,0x006D5744,0x00655140,0x006B5B50,0x006D6159,0x0062564E,0x00665649,0x00786351,0x007B6551,0x006C5642,0x0078614D,0x00846E5A,0x00856E5A,0x007C6551,0x00705845,0x00755E4B,0x0073604C,0x00675B44,0x006E654D,0x00837A61,0x00827960,0x006B634A,0x006D644C,0x007E755C,0x007B7259,0x00534A32