.data castTestObject CityProp3D <16*FP_1,16*FP_1,CAST_WIDTH,CAST_HEIGHT,0,OFFSET characterCast3D> castTestActions dd CAST_IDLE,CAST_WALK,CAST_WALK,CAST_SEAT_DRINK,CAST_PICK_UP,CAST_THROW castTestClocks dd 0,FP_1*9/32,FP_1*9/32,360,700,1800 castPath0_0 db "build\hall-expansion\cast-0-0.bmp",0 castPath0_1 db "build\hall-expansion\cast-0-1.bmp",0 castPath0_2 db "build\hall-expansion\cast-0-2.bmp",0 castPath0_3 db "build\hall-expansion\cast-0-3.bmp",0 castPath0_4 db "build\hall-expansion\cast-0-4.bmp",0 castPath0_5 db "build\hall-expansion\cast-0-5.bmp",0 castPath1_0 db "build\hall-expansion\cast-1-0.bmp",0 castPath1_1 db "build\hall-expansion\cast-1-1.bmp",0 castPath1_2 db "build\hall-expansion\cast-1-2.bmp",0 castPath1_3 db "build\hall-expansion\cast-1-3.bmp",0 castPath1_4 db "build\hall-expansion\cast-1-4.bmp",0 castPath1_5 db "build\hall-expansion\cast-1-5.bmp",0 castPath2_0 db "build\hall-expansion\cast-2-0.bmp",0 castPath2_1 db "build\hall-expansion\cast-2-1.bmp",0 castPath2_2 db "build\hall-expansion\cast-2-2.bmp",0 castPath2_3 db "build\hall-expansion\cast-2-3.bmp",0 castPath2_4 db "build\hall-expansion\cast-2-4.bmp",0 castPath2_5 db "build\hall-expansion\cast-2-5.bmp",0 castPath3_0 db "build\hall-expansion\cast-3-0.bmp",0 castPath3_1 db "build\hall-expansion\cast-3-1.bmp",0 castPath3_2 db "build\hall-expansion\cast-3-2.bmp",0 castPath3_3 db "build\hall-expansion\cast-3-3.bmp",0 castPath3_4 db "build\hall-expansion\cast-3-4.bmp",0 castPath3_5 db "build\hall-expansion\cast-3-5.bmp",0 castPath4_0 db "build\hall-expansion\cast-4-0.bmp",0 castPath4_1 db "build\hall-expansion\cast-4-1.bmp",0 castPath4_2 db "build\hall-expansion\cast-4-2.bmp",0 castPath4_3 db "build\hall-expansion\cast-4-3.bmp",0 castPath4_4 db "build\hall-expansion\cast-4-4.bmp",0 castPath4_5 db "build\hall-expansion\cast-4-5.bmp",0 castPath5_0 db "build\hall-expansion\cast-5-0.bmp",0 castPath5_1 db "build\hall-expansion\cast-5-1.bmp",0 castPath5_2 db "build\hall-expansion\cast-5-2.bmp",0 castPath5_3 db "build\hall-expansion\cast-5-3.bmp",0 castPath5_4 db "build\hall-expansion\cast-5-4.bmp",0 castPath5_5 db "build\hall-expansion\cast-5-5.bmp",0 castPath6_0 db "build\hall-expansion\cast-6-0.bmp",0 castPath6_1 db "build\hall-expansion\cast-6-1.bmp",0 castPath6_2 db "build\hall-expansion\cast-6-2.bmp",0 castPath6_3 db "build\hall-expansion\cast-6-3.bmp",0 castPath6_4 db "build\hall-expansion\cast-6-4.bmp",0 castPath6_5 db "build\hall-expansion\cast-6-5.bmp",0 castPath7_0 db "build\hall-expansion\cast-7-0.bmp",0 castPath7_1 db "build\hall-expansion\cast-7-1.bmp",0 castPath7_2 db "build\hall-expansion\cast-7-2.bmp",0 castPath7_3 db "build\hall-expansion\cast-7-3.bmp",0 castPath7_4 db "build\hall-expansion\cast-7-4.bmp",0 castPath7_5 db "build\hall-expansion\cast-7-5.bmp",0 castPath8_0 db "build\hall-expansion\cast-8-0.bmp",0 castPath8_1 db "build\hall-expansion\cast-8-1.bmp",0 castPath8_2 db "build\hall-expansion\cast-8-2.bmp",0 castPath8_3 db "build\hall-expansion\cast-8-3.bmp",0 castPath8_4 db "build\hall-expansion\cast-8-4.bmp",0 castPath8_5 db "build\hall-expansion\cast-8-5.bmp",0 castPath9_0 db "build\hall-expansion\cast-9-0.bmp",0 castPath9_1 db "build\hall-expansion\cast-9-1.bmp",0 castPath9_2 db "build\hall-expansion\cast-9-2.bmp",0 castPath9_3 db "build\hall-expansion\cast-9-3.bmp",0 castPath9_4 db "build\hall-expansion\cast-9-4.bmp",0 castPath9_5 db "build\hall-expansion\cast-9-5.bmp",0 castTestPaths LABEL DWORD dd OFFSET castPath0_0,OFFSET castPath0_1,OFFSET castPath0_2,OFFSET castPath0_3,OFFSET castPath0_4,OFFSET castPath0_5 dd OFFSET castPath1_0,OFFSET castPath1_1,OFFSET castPath1_2,OFFSET castPath1_3,OFFSET castPath1_4,OFFSET castPath1_5 dd OFFSET castPath2_0,OFFSET castPath2_1,OFFSET castPath2_2,OFFSET castPath2_3,OFFSET castPath2_4,OFFSET castPath2_5 dd OFFSET castPath3_0,OFFSET castPath3_1,OFFSET castPath3_2,OFFSET castPath3_3,OFFSET castPath3_4,OFFSET castPath3_5 dd OFFSET castPath4_0,OFFSET castPath4_1,OFFSET castPath4_2,OFFSET castPath4_3,OFFSET castPath4_4,OFFSET castPath4_5 dd OFFSET castPath5_0,OFFSET castPath5_1,OFFSET castPath5_2,OFFSET castPath5_3,OFFSET castPath5_4,OFFSET castPath5_5 dd OFFSET castPath6_0,OFFSET castPath6_1,OFFSET castPath6_2,OFFSET castPath6_3,OFFSET castPath6_4,OFFSET castPath6_5 dd OFFSET castPath7_0,OFFSET castPath7_1,OFFSET castPath7_2,OFFSET castPath7_3,OFFSET castPath7_4,OFFSET castPath7_5 dd OFFSET castPath8_0,OFFSET castPath8_1,OFFSET castPath8_2,OFFSET castPath8_3,OFFSET castPath8_4,OFFSET castPath8_5 dd OFFSET castPath9_0,OFFSET castPath9_1,OFFSET castPath9_2,OFFSET castPath9_3,OFFSET castPath9_4,OFFSET castPath9_5 castWalk0_0 db "build\hall-expansion\cast-walk-0-0.bmp",0 castWalk0_1 db "build\hall-expansion\cast-walk-0-1.bmp",0 castWalk0_2 db "build\hall-expansion\cast-walk-0-2.bmp",0 castWalk0_3 db "build\hall-expansion\cast-walk-0-3.bmp",0 castWalk0_4 db "build\hall-expansion\cast-walk-0-4.bmp",0 castWalk0_5 db "build\hall-expansion\cast-walk-0-5.bmp",0 castWalk0_6 db "build\hall-expansion\cast-walk-0-6.bmp",0 castWalk0_7 db "build\hall-expansion\cast-walk-0-7.bmp",0 castWalk1_0 db "build\hall-expansion\cast-walk-1-0.bmp",0 castWalk1_1 db "build\hall-expansion\cast-walk-1-1.bmp",0 castWalk1_2 db "build\hall-expansion\cast-walk-1-2.bmp",0 castWalk1_3 db "build\hall-expansion\cast-walk-1-3.bmp",0 castWalk1_4 db "build\hall-expansion\cast-walk-1-4.bmp",0 castWalk1_5 db "build\hall-expansion\cast-walk-1-5.bmp",0 castWalk1_6 db "build\hall-expansion\cast-walk-1-6.bmp",0 castWalk1_7 db "build\hall-expansion\cast-walk-1-7.bmp",0 castWalk2_0 db "build\hall-expansion\cast-walk-2-0.bmp",0 castWalk2_1 db "build\hall-expansion\cast-walk-2-1.bmp",0 castWalk2_2 db "build\hall-expansion\cast-walk-2-2.bmp",0 castWalk2_3 db "build\hall-expansion\cast-walk-2-3.bmp",0 castWalk2_4 db "build\hall-expansion\cast-walk-2-4.bmp",0 castWalk2_5 db "build\hall-expansion\cast-walk-2-5.bmp",0 castWalk2_6 db "build\hall-expansion\cast-walk-2-6.bmp",0 castWalk2_7 db "build\hall-expansion\cast-walk-2-7.bmp",0 castWalk3_0 db "build\hall-expansion\cast-walk-3-0.bmp",0 castWalk3_1 db "build\hall-expansion\cast-walk-3-1.bmp",0 castWalk3_2 db "build\hall-expansion\cast-walk-3-2.bmp",0 castWalk3_3 db "build\hall-expansion\cast-walk-3-3.bmp",0 castWalk3_4 db "build\hall-expansion\cast-walk-3-4.bmp",0 castWalk3_5 db "build\hall-expansion\cast-walk-3-5.bmp",0 castWalk3_6 db "build\hall-expansion\cast-walk-3-6.bmp",0 castWalk3_7 db "build\hall-expansion\cast-walk-3-7.bmp",0 castWalk4_0 db "build\hall-expansion\cast-walk-4-0.bmp",0 castWalk4_1 db "build\hall-expansion\cast-walk-4-1.bmp",0 castWalk4_2 db "build\hall-expansion\cast-walk-4-2.bmp",0 castWalk4_3 db "build\hall-expansion\cast-walk-4-3.bmp",0 castWalk4_4 db "build\hall-expansion\cast-walk-4-4.bmp",0 castWalk4_5 db "build\hall-expansion\cast-walk-4-5.bmp",0 castWalk4_6 db "build\hall-expansion\cast-walk-4-6.bmp",0 castWalk4_7 db "build\hall-expansion\cast-walk-4-7.bmp",0 castWalk5_0 db "build\hall-expansion\cast-walk-5-0.bmp",0 castWalk5_1 db "build\hall-expansion\cast-walk-5-1.bmp",0 castWalk5_2 db "build\hall-expansion\cast-walk-5-2.bmp",0 castWalk5_3 db "build\hall-expansion\cast-walk-5-3.bmp",0 castWalk5_4 db "build\hall-expansion\cast-walk-5-4.bmp",0 castWalk5_5 db "build\hall-expansion\cast-walk-5-5.bmp",0 castWalk5_6 db "build\hall-expansion\cast-walk-5-6.bmp",0 castWalk5_7 db "build\hall-expansion\cast-walk-5-7.bmp",0 castWalk6_0 db "build\hall-expansion\cast-walk-6-0.bmp",0 castWalk6_1 db "build\hall-expansion\cast-walk-6-1.bmp",0 castWalk6_2 db "build\hall-expansion\cast-walk-6-2.bmp",0 castWalk6_3 db "build\hall-expansion\cast-walk-6-3.bmp",0 castWalk6_4 db "build\hall-expansion\cast-walk-6-4.bmp",0 castWalk6_5 db "build\hall-expansion\cast-walk-6-5.bmp",0 castWalk6_6 db "build\hall-expansion\cast-walk-6-6.bmp",0 castWalk6_7 db "build\hall-expansion\cast-walk-6-7.bmp",0 castWalk7_0 db "build\hall-expansion\cast-walk-7-0.bmp",0 castWalk7_1 db "build\hall-expansion\cast-walk-7-1.bmp",0 castWalk7_2 db "build\hall-expansion\cast-walk-7-2.bmp",0 castWalk7_3 db "build\hall-expansion\cast-walk-7-3.bmp",0 castWalk7_4 db "build\hall-expansion\cast-walk-7-4.bmp",0 castWalk7_5 db "build\hall-expansion\cast-walk-7-5.bmp",0 castWalk7_6 db "build\hall-expansion\cast-walk-7-6.bmp",0 castWalk7_7 db "build\hall-expansion\cast-walk-7-7.bmp",0 castWalk8_0 db "build\hall-expansion\cast-walk-8-0.bmp",0 castWalk8_1 db "build\hall-expansion\cast-walk-8-1.bmp",0 castWalk8_2 db "build\hall-expansion\cast-walk-8-2.bmp",0 castWalk8_3 db "build\hall-expansion\cast-walk-8-3.bmp",0 castWalk8_4 db "build\hall-expansion\cast-walk-8-4.bmp",0 castWalk8_5 db "build\hall-expansion\cast-walk-8-5.bmp",0 castWalk8_6 db "build\hall-expansion\cast-walk-8-6.bmp",0 castWalk8_7 db "build\hall-expansion\cast-walk-8-7.bmp",0 castWalk9_0 db "build\hall-expansion\cast-walk-9-0.bmp",0 castWalk9_1 db "build\hall-expansion\cast-walk-9-1.bmp",0 castWalk9_2 db "build\hall-expansion\cast-walk-9-2.bmp",0 castWalk9_3 db "build\hall-expansion\cast-walk-9-3.bmp",0 castWalk9_4 db "build\hall-expansion\cast-walk-9-4.bmp",0 castWalk9_5 db "build\hall-expansion\cast-walk-9-5.bmp",0 castWalk9_6 db "build\hall-expansion\cast-walk-9-6.bmp",0 castWalk9_7 db "build\hall-expansion\cast-walk-9-7.bmp",0 castWalkPaths LABEL DWORD dd OFFSET castWalk0_0,OFFSET castWalk0_1,OFFSET castWalk0_2,OFFSET castWalk0_3,OFFSET castWalk0_4,OFFSET castWalk0_5,OFFSET castWalk0_6,OFFSET castWalk0_7 dd OFFSET castWalk1_0,OFFSET castWalk1_1,OFFSET castWalk1_2,OFFSET castWalk1_3,OFFSET castWalk1_4,OFFSET castWalk1_5,OFFSET castWalk1_6,OFFSET castWalk1_7 dd OFFSET castWalk2_0,OFFSET castWalk2_1,OFFSET castWalk2_2,OFFSET castWalk2_3,OFFSET castWalk2_4,OFFSET castWalk2_5,OFFSET castWalk2_6,OFFSET castWalk2_7 dd OFFSET castWalk3_0,OFFSET castWalk3_1,OFFSET castWalk3_2,OFFSET castWalk3_3,OFFSET castWalk3_4,OFFSET castWalk3_5,OFFSET castWalk3_6,OFFSET castWalk3_7 dd OFFSET castWalk4_0,OFFSET castWalk4_1,OFFSET castWalk4_2,OFFSET castWalk4_3,OFFSET castWalk4_4,OFFSET castWalk4_5,OFFSET castWalk4_6,OFFSET castWalk4_7 dd OFFSET castWalk5_0,OFFSET castWalk5_1,OFFSET castWalk5_2,OFFSET castWalk5_3,OFFSET castWalk5_4,OFFSET castWalk5_5,OFFSET castWalk5_6,OFFSET castWalk5_7 dd OFFSET castWalk6_0,OFFSET castWalk6_1,OFFSET castWalk6_2,OFFSET castWalk6_3,OFFSET castWalk6_4,OFFSET castWalk6_5,OFFSET castWalk6_6,OFFSET castWalk6_7 dd OFFSET castWalk7_0,OFFSET castWalk7_1,OFFSET castWalk7_2,OFFSET castWalk7_3,OFFSET castWalk7_4,OFFSET castWalk7_5,OFFSET castWalk7_6,OFFSET castWalk7_7 dd OFFSET castWalk8_0,OFFSET castWalk8_1,OFFSET castWalk8_2,OFFSET castWalk8_3,OFFSET castWalk8_4,OFFSET castWalk8_5,OFFSET castWalk8_6,OFFSET castWalk8_7 dd OFFSET castWalk9_0,OFFSET castWalk9_1,OFFSET castWalk9_2,OFFSET castWalk9_3,OFFSET castWalk9_4,OFFSET castWalk9_5,OFFSET castWalk9_6,OFFSET castWalk9_7 .code CharacterCastNativeTests PROC uses ebx esi edi local phase:DWORD,time:DWORD,vx:DWORD,vy:DWORD mov expansionStage,130 call LoadCharacterCast3D cmp characterCast3D.frames,CAST_COUNT*CAST_STRIDE jne cast_test_fail cmp npcGuestArt3D.pixels,0 jne cast_test_fail cmp npcWalkArt3D.pixels,0 jne cast_test_fail cmp npcWalkLeftArt3D.pixels,0 jne cast_test_fail cmp bwMotionArt3D.pixels,0 jne cast_test_fail cmp bwSeatedArt3D.pixels,0 jne cast_test_fail mov playerX,16*FP_1 mov playerY,20*FP_1 mov playerAngle,384 mov viewEye3D,HALL_STANDING_EYE mov viewHorizon3D,HALF_H call UpdateCamera3D xor esi,esi mov phase,0 cast_test_identity: xor edi,edi cast_test_action: invoke ConfigureCharacter3D,OFFSET castTestObject,esi,edi,99999,FP_1,0 mov eax,castTestObject.frame xor edx,edx mov ecx,CAST_STRIDE div ecx cmp eax,esi jne cast_test_fail cmp castTestObject.asset,OFFSET characterCast3D jne cast_test_fail cmp castTestObject.worldH,CAST_HEIGHT jne cast_test_fail inc edi cmp edi,12 jb cast_test_action xor edi,edi cast_test_picture: invoke DrawBox,0,0,SCREEN_W,SCREEN_H,001C2228h lea edi,zBuffer mov eax,7FFFFFFFh mov ecx,SCREEN_W rep stosd lea edi,cityDepthBuffer3D mov ecx,SCREEN_SIZE rep stosd mov edi,phase mov eax,castTestActions[edi*4] mov time,eax mov vx,0 mov vy,0 cmp edi,1 jne @F mov vy,-FP_1 @@: cmp edi,2 jne @F mov vx,FP_1 @@: invoke ConfigureCharacter3D,OFFSET castTestObject,esi,time,castTestClocks[edi*4],vx,vy invoke DrawCityObject3D,OFFSET castTestObject,0 imul ebx,esi,6 add ebx,phase invoke ExpansionSnapshot,castTestPaths[ebx*4] inc phase cmp phase,6 jb cast_test_picture mov phase,0 cast_test_walking: invoke DrawBox,0,0,SCREEN_W,SCREEN_H,001C2228h lea edi,zBuffer mov eax,7FFFFFFFh mov ecx,SCREEN_W rep stosd lea edi,cityDepthBuffer3D mov ecx,SCREEN_SIZE rep stosd imul eax,phase,FP_1*3/32 invoke ConfigureCharacter3D,OFFSET castTestObject,esi,CAST_WALK,eax,FP_1,0 invoke DrawCityObject3D,OFFSET castTestObject,0 imul ebx,esi,8 add ebx,phase invoke ExpansionSnapshot,castWalkPaths[ebx*4] inc phase cmp phase,8 jb cast_test_walking inc esi mov phase,0 cmp esi,CAST_COUNT jb cast_test_identity call RoofCharacterScaleNativeTests ret cast_test_fail: invoke ExitProcess,expansionStage ret CharacterCastNativeTests ENDP include tools/tests/roof_character_scale_test.inc