/nwinter/copies.def |
---|
File deleted |
/nwinter/sprites.def |
---|
File deleted |
/nwinter/skyboxes.def |
---|
File deleted |
/nwinter/screen.def |
---|
File deleted |
/nwinter/textures/3758.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3695.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3646_3669_n.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3666_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3769.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3646_3669_s.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3610.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3646_3669.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3611.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3720.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3612.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3721.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3613.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3740.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3722.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3741.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3606.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3607.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3670.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3661.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3608.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3770.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3726.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3609.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3790.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3791.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3729.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3666.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3594.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures/3739.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/textures.def |
---|
File deleted |
/nwinter/sprites/monsters.def |
---|
File deleted |
/nwinter/sprites/decals.def |
---|
File deleted |
/nwinter/sprites/decals/3672.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/decals/3774.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/decals/3830.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters.def |
---|
File deleted |
\ No newline at end of file |
/nwinter/sprites/ice.def |
---|
File deleted |
/nwinter/sprites/firstperson/2521_santaboot.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario_eye1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario_eye2.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario_eye3.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario_eye4.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3603.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario_eye5.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3604.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3605.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/characters/3598_nwmario_mouth.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/signs.def |
---|
File deleted |
/nwinter/sprites/props.def |
---|
File deleted |
/nwinter/sprites/gibs.def |
---|
File deleted |
/nwinter/sprites/signs/3660.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/signs/3671.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/signs/3827.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/signs/3658.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/signs/3659.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/signs/3686.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3728.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3782_present.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3689_meter.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3595.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3662_3757.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3795.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3786_present.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3600_fence.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3601_fence.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3782_3786_present.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3602_fence.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/1055.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/1056.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3690_meter.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/props/3656_doorshock.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/sprites/gibs/1536_santaleg.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/menu/3838.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/menu/3240_3245.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/menu/3839.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/menu/2502.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/menu/2503.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/menu/2492.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts.def |
---|
File deleted |
/nwinter/screen/fonts/redfont/2947.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2929.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2965.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2948.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2949.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3002.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3003.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3004.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3022.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3005.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3006.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3007.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3008.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/3009.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2930.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2931.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2950.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2932.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2951.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2933.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2952.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2934.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2953.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2935.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2954.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2936.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2955.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2937.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2956.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2938.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2957.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2939.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2958.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2959.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2940.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2941.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2942.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2960.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2943.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2961.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2944.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2962.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2945.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2963.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2946.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/fonts/redfont/2964.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/screen/menu.def |
---|
File deleted |
/nwinter/extra/3827_ice.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/nwhrp.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/present.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/3293_wip.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/_downloads_snimki_wall_Winter-Wonderland,-British-Columbia,-Canada.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/3591_fixed.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/3671_KayWhy_Sample.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/frame1.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/8bit.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/frame2.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/frame3.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/512px/frame1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/512px/frame2.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/512px/frame3.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/800px/frame1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/800px/frame2.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/800px/frame3.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/3603roadway.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/3603sprite.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/road.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/road.blend |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/mariojoke/road.blend1 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/3785_fixed.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/sources/3293_NW_Duke_Pose.psd |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/music/Pistonsoft Direct MIDI to MP3 Converter/nw1.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/music/Pistonsoft Direct MIDI to MP3 Converter/nw2.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/music/Pistonsoft Direct MIDI to MP3 Converter/nw3.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/music/Pistonsoft Direct MIDI to MP3 Converter/nw4.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/music/Pistonsoft Direct MIDI to MP3 Converter/nw5.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/music/Pistonsoft Direct MIDI to MP3 Converter/nw7.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/music/Jerry Goldsmith - The Gremlin Rag.mp3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/soybox64.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/pitcher.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/tableleg1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/shakers.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/lamp2050.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/barbell.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/toys 4 us truck.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/soylentbox.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/Candle1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/Candle2.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/Candle3.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/Candle4.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/arrow sign.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/linguiniland.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/toys 4 us truck flip.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/Sleigh runway.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/railingreverse.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/forgottentoys.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/gimp128.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/gimp256.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/billboard.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/corpse.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra/betaart/soylogo.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/extra |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nwinter/voxels.def |
---|
0,0 → 1,10 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
// Gift Boxes (3782, 3786) |
voxel "nwinter/voxels/3782_gift.kvx" { scale 1 tile 3782 } |
voxel "nwinter/voxels/3786_gift.kvx" { scale 1 tile 3786 } |
/nwinter/voxels/3782_gift.kvx |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/voxels/3786_gift.kvx |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/8bit/nwsanta/1400.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/8bit/nwsanta/1401.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/8bit/nwsanta/1402.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/8bit/nwsanta/1403.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/8bit/nwsanta |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nwinter/8bit/3714.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/8bit |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nwinter/music/gremlin.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nwinter/music/gremlins.flac |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/music/gremlins.ogg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nwinter/music |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nwinter/music.def |
---|
15,10 → 15,17 |
// nw*.ogg recorded by Brandon Blume (shine62@gmail.com) from the |
// Roland Sound Canvas SC-55 GS module as they were meant to be heard back in 1996 |
music { id "intro" file "nwinter/music/gremlin.ogg" } |
music { id "intro" file "nwinter/music/gremlins.ogg" } |
music { id "briefing" file "nwinter/sounds/blank.ogg" } |
music { id "E1L1" file "nwinter/music/nw1.ogg" } |
music { id "E1L2" file "nwinter/music/nw2.ogg" } |
music { id "E1L3" file "nwinter/music/nw3.ogg" } |
music { id "E1L4" file "nwinter/music/nw4.ogg" } |
music { id "E1L5" file "nwinter/music/nw5.ogg" } |
music { id "E1L6" file "nwinter/music/nw2.ogg" } |
music { id "E1L7" file "nwinter/music/nw7.ogg" } |
music { id "E2L1" file "nwinter/music/nw1.ogg" } |
music { id "E2L2" file "nwinter/music/nw2.ogg" } |
27,7 → 34,11 |
music { id "E2L5" file "nwinter/music/nw5.ogg" } |
music { id "E2L6" file "nwinter/music/nw2.ogg" } // nw6 = nw2 |
music { id "E2L7" file "nwinter/music/nw7.ogg" } |
music { id "E2L8" file "nwinter/music/nw7.ogg" } |
music { id "E1L9" file "nwinter/music/nw1.ogg" } |
music { id "E1L10" file "nwinter/music/nw2.ogg" } |
music { id "E1L11" file "nwinter/music/nw3.ogg" } |
music { id "E1L12" file "nwinter/music/nw4.ogg" } |
music { id "E2L13" file "nwinter/music/doom.ogg" } |
music { id "E2L14" file "nwinter/music/smk-07.ogg" } |
/nwinter/8bit.def |
---|
5,7 → 5,7 |
-------------------------------------------------------------------------------- |
*/ |
// Snowman Missing Death Frame |
// Flying Frosty Missing Death Frame |
tilefromtexture 1956 { file "nwinter/8bit/1956.png" } |
// digitalfont |
25,7 → 25,8 |
tilefromtexture 2505 { file "nwinter/8bit/2456.png" } |
tilefromtexture 2506 { file "nwinter/8bit/2456.png" } |
// redfont |
/* |
// redfont -> white |
tilefromtexture 2929 { file "nwinter/8bit/2929.png" } |
tilefromtexture 2930 { file "nwinter/8bit/2930.png" yoffset 5 } |
tilefromtexture 2931 { file "nwinter/8bit/2931.png" yoffset 5 } |
72,6 → 73,7 |
tilefromtexture 3008 { file "nwinter/8bit/3008.png" } |
tilefromtexture 3009 { file "nwinter/8bit/3009.png" } |
tilefromtexture 3022 { file "nwinter/8bit/3022.png" } |
*/ |
// Episode 1, 3-7 end of level screen |
tilefromtexture 3240 { file "nwinter/8bit/3245.png" } |
101,6 → 103,13 |
// "Clause Residence" Typo Fix |
tilefromtexture 3591 { file "nwinter/8bit/3591.png" } |
// 3714_cloudy_hills Skybox Fix |
tilefromtexture 3714 { file "nwinter/8bit/3714.png" } |
tilefromtexture 3715 { file "nwinter/8bit/3714.png" } |
tilefromtexture 3716 { file "nwinter/8bit/3714.png" } |
tilefromtexture 3717 { file "nwinter/8bit/3714.png" } |
tilefromtexture 3718 { file "nwinter/8bit/3714.png" } |
// special |
dummytile 3831 12 13 |
/nwinter/undef.def |
---|
83,12 → 83,15 |
undeftexturerange 2190 2197 |
// tiles009.art - digitalfont (white, NW+ native), Atomic Signs\Nuclear Winter Insignia, NW Credits |
/* |
undefmodelrange 2472 2481 |
undeftexturerange 2472 2481 |
*/ |
undefmodelrange 2502 2504 |
undeftexturerange 2502 2504 |
/* |
// tiles011.art - redfont (white, NW+ native) |
undefmodelrange 2929 2965 |
undeftexturerange 2929 2965 |
96,6 → 99,7 |
undeftexturerange 3002 3009 |
undefmodel 3022 |
undeftexture 3022 |
*/ |
// tiles012.art - End of Level Screen, End of Episode 2 Screen |
undefmodelrange 3240 3249 |
/nwinter/dp |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nwinter/sounds |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nwinter |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/nwl1.mhk |
---|
File deleted |
/nw_plus/nwl2.mhk |
---|
File deleted |
/nw_plus/nwl3.mhk |
---|
File deleted |
/nw_plus/nwl4.mhk |
---|
File deleted |
/nw_plus/nwl5.mhk |
---|
File deleted |
/nw_plus/nwl6.mhk |
---|
File deleted |
/nw_plus/nwl7.mhk |
---|
File deleted |
/nw_plus/nwl8.mhk |
---|
File deleted |
/nw_plus/NWinter+_License.txt |
---|
File deleted |
/nw_plus/nwl1.ips |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl2.ips |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl3.ips |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl4.ips |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl5.ips |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl6.ips |
---|
File deleted |
\ No newline at end of file |
/nw_plus/nwl7.ips |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl8.ips |
---|
File deleted |
\ No newline at end of file |
/nw_plus/nwl1demo.mhk |
---|
File deleted |
/nw_plus/NW_Mapster32.bat |
---|
File deleted |
\ No newline at end of file |
/nw_plus/_nwzoo.mhk |
---|
File deleted |
/nw_plus/NWinter+_Linux_MacOSX.txt |
---|
File deleted |
/nw_plus/NWinter.bat |
---|
1,51 → 1,105 |
@echo off |
@color 0C |
color 0C |
setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION |
pushd "%~dp0" |
set startdir=%cd% |
:restart |
title Duke: Nuclear Winter Plus Batch Launcher |
title Duke: Nuclear Winter Plus Launcher |
if "%editor%"=="1" title Duke: Nuclear Winter Plus Editor Launcher |
set dir=%cd% |
set nwver=30 |
set hrp= |
set hrpu= |
set exedir=%startdir% |
set addondir=%startdir% |
set addonhrpdir=%startdir% |
set exename=eduke32 |
set exeproper=EDuke32 |
set action=playing |
if "%editor%"=="1" ( |
set exename=mapster32 |
set exeproper=Mapster32 |
set action=editing |
) |
set addonver=r005 |
:title |
echo. |
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» |
echo º Duke: Nuclear Winter Plus Batch Launcher º |
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍͼ |
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» |
echo º Duke: Nuclear Winter Plus º |
echo ÈÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍͼ |
echo ³ By Hendricks266 ³ |
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ |
echo. |
echo You are playing Simply Silly Software's Duke: Nuclear Winter with the various |
echo You are %action% Simply Silly Software's Duke: Nuclear Winter with the various |
echo enhancements of Duke: Nuclear Winter Plus, maintained by Hendricks266. |
echo. |
if "%xxx%"=="1" echo Using XXX mode. |
if "%dp%"=="1" echo Using Duke Plus by DeeperThought. |
if "%debug%"=="1" echo Using debug mode. |
if "%debug%"=="1" echo DEBUG: Command Line Input: %* |
:recheck |
if not exist eduke32.exe goto eduke32check |
:eduke32check_done |
if exist NWDuke.rt_ del /f /q NWDuke.rt_ |
if exist NWSanta.grp del /f /q NWSanta.grp |
if not exist %exename%.exe goto execheck |
:execheck_done |
set exedir=%cd% |
if "%debug%"=="1" echo DEBUG: %exeproper% Directory: "%exedir%" |
if not exist nw_plus\ goto nodir |
if not exist duke3d.grp Warning: You don't have Duke3D.grp in your directory. |
if exist NWINTER.GRP move NWINTER.GRP nw_plus\ |
cd nw_plus |
if not exist NWINTER.GRP goto nonwgrp |
:nonwgrp_done |
if not exist nwflag%nwver%.h266 goto extract |
if not exist nwl1.map goto extract |
if not exist nwl2.map goto extract |
if not exist nwl3.map goto extract |
if not exist nwl4.map goto extract |
if not exist nwl5.map goto extract |
if not exist nwl6.map goto extract |
if not exist nwl7.map goto extract |
if not exist nwl8.map goto extract |
cd .. |
if not exist duke3d.grp echo Warning: You don't have Duke3D.grp in your directory. |
if exist nwinter\ set addonhrpdir=%cd% |
:addondircheck |
chdir nw_plus |
set addondir=%cd% |
if exist nwinter\ set addonhrpdir=%cd% |
if exist nw_plus\ goto addondircheck |
if "%debug%"=="1" echo DEBUG: NW+ Directory: "%addondir%". |
if "%debug%"=="1" echo DEBUG: NWHRP Directory: "%addonhrpdir%". |
set kextract=%addondir%\utils\windows\win32\kextract.exe |
if "%debug%"=="1" set kextract=%addondir%\utils\windows\win32\kextract.debug.exe |
set bspatch=%addondir%\utils\windows\win32\bspatch.exe |
set sha1sum=%addondir%\utils\windows\win32\sha1sum.exe |
if "%nwgrpname%"=="" set nwgrpname=nwinter.grp |
if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" if exist "%exedir%\nwinter_demo.grp" set nwgrpname=nwinter_demo.grp |
if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" if exist "%addondir%\nwinter_demo.grp" set nwgrpname=nwinter_demo.grp |
if not exist "%exedir%\%nwgrpname%" if not exist "%addondir%\%nwgrpname%" goto nonwgrp |
if exist nwinter.grp ren nwinter.grp nwinter.grp |
call :grpchecksum |
:nonwgrp_return |
if not "%version%"=="demo" ( |
if not exist nwl1.map goto mapextract |
if not exist nwl2.map goto mapextract |
if not exist nwl3.map goto mapextract |
if not exist nwl4.map goto mapextract |
if not exist nwl5.map goto mapextract |
if not exist nwl6.map goto mapextract |
if not exist nwl7.map goto mapextract |
if not exist nwl8.map goto mapextract |
if not exist nwflag_%addonver%.h266 goto updateextract |
) |
chdir /d "%exedir%" |
echo. |
echo To switch your character, open the console (~) and type one of the following: |
echo Duke: "setvar skin 0". |
echo Santa: "setvar skin 1". |
echo. |
echo. |
echo. |
echo. |
echo. |
echo. |
:init |
pause |
54,27 → 108,98 |
:check |
if exist duke3d_hrp.zip set hrp=/gduke3d_hrp.zip |
if exist hrp_update.zip set hrpu=/ghrp_update.zip |
echo. |
echo Launching Duke Nukem 3D . . . |
echo Thanks for playing! |
echo Thanks for %action%! |
echo. |
echo Please leave this window open for the entire duration of your game. |
echo It will close automatically. |
::if exist *.art ren *.art *.abk |
if "%editor%"=="1" ( |
type "%exedir%\names.h" > "%exedir%\NWNames.h" |
echo. >> "%exedir%\NWNames.h" |
type "%addondir%\NWNames.def" >> "%exedir%\NWNames.h" |
) |
eduke32 /xNWEDuke.con /hnwinter.def /jnw_plus /gNWINTER.GRP %hrp% %hrpu% %* |
:arguments |
set args= |
if exist "%exedir%\HRP\" set args=%args% -j HRP |
if exist "%exedir%\polymer_hrp\" set args=%args% -j polymer_hrp |
if exist "%exedir%\duke3d_voxel.zip" set args=%args% -g duke3d_voxel.zip |
if exist "%exedir%\duke3d_hrp.zip" set args=%args% -g duke3d_hrp.zip |
if exist "%exedir%\hrp_update.zip" set args=%args% -g hrp_update.zip |
if exist "%exedir%\maphacks.zip" set args=%args% -g maphacks.zip |
if exist "%exedir%\eduke32_mus.zip" set args=%args% -g eduke32_mus.zip |
if exist "%addondir%" if not "%addondir%"=="%exedir%" set args=%args% -j "%addondir:\=/%" |
if exist "%addonhrpdir%" if not "%addonhrpdir%"=="%exedir%" if not "%addonhrpdir%"=="%addondir%" set args=%args% -j "%addonhrpdir:\=/%" |
set args=%args% -g %nwgrpname% -h nwinter.def -x NWEDuke.con |
if "%editor%"=="1" set args=%args% -namesfile NWNames.h |
if "%dp%"=="1" set args=%args% -h nw_dp.def -x NWDP.con |
if "%xxx%"=="1" if exist "%exedir%\xxx_lite.zip" set args=%args% -g xxx_lite.zip |
if "%xxx%"=="1" if exist "%exedir%\xxx_lite\" set args=%args% -j xxx_lite |
if "%xxx%"=="1" if exist "%exedir%\xxx_pack.zip" set args=%args% -g xxx_pack.zip |
if "%xxx%"=="1" if exist "%exedir%\xxx_pack\" set args=%args% -j xxx_pack |
if "%xxx%"=="1" set args=%args% -h nw_xxx.def |
if "%xxx%"=="1" if "%dp%"=="1" set args=%args% -h nw_dp_xxx.def -x NWDPXXX.con |
set args=%args% %* |
if "%dp%"=="1" set args=%args% -j DukePlus |
::if exist *.abk ren *.abk *.art |
set exe=%exename% |
if "%debug%"=="1" set exe=%exename%.debug |
if exist %exe%.bat ( |
if "%debug%"=="1" echo DEBUG: Final Command Line: call %exe%.bat %args% |
call %exe%.bat %args% |
) else ( |
if "%debug%"=="1" echo DEBUG: Final Command Line: start %exe%.exe %args% |
start %exe%.exe %args% |
) |
set svnpath=0 |
if "%svnpath%"=="0" if exist "%startdir%\svn\bin\svn.exe" set svnpath=%startdir%\svn\bin |
if "%svnpath%"=="0" if exist "%exedir%\svn\bin\svn.exe" set svnpath=%exedir%\svn\bin |
if "%svnpath%"=="0" if exist "%ProgramFiles%\SlikSvn\bin\svn.exe" set svnpath=%ProgramFiles%\SlikSvn\bin |
if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\SlikSvn\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\SlikSvn\bin |
if "%svnpath%"=="0" if exist "%ProgramFiles%\Subversion\bin\svn.exe" set svnpath=%ProgramFiles%\Subversion\bin |
if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\Subversion\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\Subversion\bin |
if "%svnpath%"=="0" if exist "%ProgramFiles%\TortoiseSVN\bin\svn.exe" set svnpath=%ProgramFiles%\TortoiseSVN\bin |
if "%svnpath%"=="0" if exist "%ProgramFiles(x86)%\TortoiseSVN\bin\svn.exe" set svnpath=%ProgramFiles(x86)%\TortoiseSVN\bin |
if "%svnpath%"=="0" for %%S in (svn.exe) do if exist "%%~dp$PATH:S" set svnpath=%%~dp$PATH:S |
chdir /d "%addondir%" |
if not "%svnpath%"=="0" call :svn_action |
chdir /d "%addonhrpdir%" |
if not "%svnpath%"=="0" call :svn_action |
goto end |
:svn_action |
set PATH=%PATH%;%svnpath% |
for /f "delims=" %%a in ('svnversion.exe .') do @set oldrev=%%a |
if "%oldrev%"=="exported" goto :eof |
if "%oldrev%"=="Unversioned directory" goto :eof |
"svn.exe" update |
for /f "delims=" %%a in ('svnversion.exe .') do @set rev=%%a |
set oldrev=%oldrev:M=% |
set oldrev=%oldrev:S=% |
set oldrev=%oldrev:P=% |
set rev=%rev:M=% |
set rev=%rev:S=% |
set rev=%rev:P=% |
if %rev% EQU %oldrev% goto :eof |
set /a oldrev=%oldrev% + 1 |
echo. |
"svn.exe" log -r %oldrev%:%rev% |
echo. |
pause |
goto :eof |
:nonwgrp |
set megaton=Steam\SteamApps\common\Duke Nukem 3D\gameroot\addons\nwinter.grp |
if exist "%ProgramFiles%\%megaton%" copy "%ProgramFiles%\%megaton%" .\ && call :conprotect && goto nonwgrp_done |
if exist "%ProgramFiles(x86)%\%megaton%" copy "%ProgramFiles(x86)%\%megaton%" .\ && call :conprotect && goto nonwgrp_done |
echo. |
echo Error: You don't have NWINTER.GRP in your directory. |
:retry |
echo. |
set cddrive= |
84,42 → 209,92 |
if '%cddrive%'=='' goto cdno |
if not exist %cddrive%:\ goto cdno |
if not exist %cddrive%:\* goto cdno |
if not exist %cddrive%:\GAMEDATA\NWINTER.GRP goto cdw |
copy %cddrive%:GAMEDATA\NWINTER.GRP .\ |
pause |
if exist %cddrive%:\GAMEDATA\NWINTER.GRP copy %cddrive%:\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done |
if exist %cddrive%:\NWINTER\GAMEDATA\NWINTER.GRP copy %cddrive%:\NWINTER\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done |
if exist %cddrive%:\NW\GAMEDATA\NWINTER.GRP copy %cddrive%:\NW\GAMEDATA\NWINTER.GRP .\nwinter.grp && goto nonwgrp_done |
goto cdwrong |
:nonwgrp_done |
echo. |
if exist nwinter.grp ( |
type NWINTRO.TXT |
echo. |
pause |
goto nonwgrp_done |
call :grpchecksum |
call :grpchecksum_results |
goto nonwgrp_return |
) |
if not exist nwinter.grp ( |
echo Installation Error! |
echo Contact Hendricks266 for help. |
echo. |
pause |
goto end |
) |
:grpchecksum |
if not exist "%sha1sum%" ( |
echo "%sha1sum%" not found. |
goto :eof |
) |
pushd . |
if exist "%addondir%\%nwgrpname%" chdir /d %addondir% |
if exist "%exedir%\%nwgrpname%" chdir /d %exedir% |
echo a6728f621f121f9db02ee67c39efdbb5eea95711 *%nwgrpname% | "%sha1sum%" --status --check - |
if "%ERRORLEVEL%"=="0" set version=full&& popd && goto :eof |
if "%ERRORLEVEL%"=="1" echo 1b33b2cbb7101b5b18b15855392f55575413ecc3 *%nwgrpname% | "%sha1sum%" --status --check - |
if "%ERRORLEVEL%"=="0" set version=demo&& popd && goto :eof |
if "%ERRORLEVEL%"=="1" set version=unknown |
popd |
goto :eof |
:grpchecksum_results |
if "%version%"=="full" echo NWINTER.GRP checksum verified. |
if "%version%"=="demo" echo NWINTER.GRP (demo version) checksum verified. |
if "%version%"=="unknown" echo NWINTER.GRP checksum does not match. You may have a bad copy. |
echo. |
goto :eof |
:cdno |
echo '%cddrive%' is not valid. Please try again. |
goto retry |
:cdw |
:cdwrong |
echo '%cddrive%' is not the correct disc. Please try again. |
goto retry |
:mapextract |
echo Extracted maps not found or patched. Proceeding to installation. |
goto extract |
:updateextract |
echo Map patch update required. Proceeding to installation. |
goto extract |
:extract |
echo. |
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» |
echo º Duke: Nuclear Winter Plus Installation º |
echo ÈÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍͼ |
echo ³ By Hendricks266 ³ |
echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ |
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» |
echo º Installation º |
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ |
echo. |
if not exist nwl1.ips goto noips |
if not exist nwl2.ips goto noips |
if not exist nwl3.ips goto noips |
if not exist nwl4.ips goto noips |
if not exist nwl5.ips goto noips |
if not exist nwl6.ips goto noips |
if not exist nwl7.ips goto noips |
if not exist nwl8.ips goto noips |
if exist nwl*.map del /f /q nwl*.map |
if exist ..\nwl*.map del /f /q ..\nwl*.map |
utils\windows\win32\kextract.exe NWINTER.GRP E2L*.MAP |
call :grpchecksum |
call :grpchecksum_results |
if not exist nwl1.patch goto nopatch |
if not exist nwl2.patch goto nopatch |
if not exist nwl3.patch goto nopatch |
if not exist nwl4.patch goto nopatch |
if not exist nwl5.patch goto nopatch |
if not exist nwl6.patch goto nopatch |
if not exist nwl7.patch goto nopatch |
if not exist nwl8.patch goto nopatch |
mkdir nw_preserve |
if exist nwl*.map move /y nwl*.map nw_preserve\ |
if exist "%exedir%\nwl*.map" move /y "%exedir%\nwl*.map" nw_preserve\ |
:: TODO: eliminate the need for the if exist checks; tighten up path handling |
set grp=nwinter.grp |
if exist "%addondir%\%nwgrpname%" set grp=%addondir%\%nwgrpname% |
if exist "%exedir%\%nwgrpname%" set grp=%exedir%\%nwgrpname% |
"%kextract%" "%grp%" E2L*.MAP |
ren E2L1.MAP nwl1.map |
ren E2L2.MAP nwl2.map |
ren E2L3.MAP nwl3.map |
134,31 → 309,23 |
echo Map patching will now begin. |
echo. |
pause |
echo |
utils\windows\win32\uips.exe a nwl1.ips nwl1.map |
utils\windows\win32\uips.exe a nwl2.ips nwl2.map |
utils\windows\win32\uips.exe a nwl3.ips nwl3.map |
utils\windows\win32\uips.exe a nwl4.ips nwl4.map |
utils\windows\win32\uips.exe a nwl5.ips nwl5.map |
utils\windows\win32\uips.exe a nwl6.ips nwl6.map |
utils\windows\win32\uips.exe a nwl7.ips nwl7.map |
utils\windows\win32\uips.exe a nwl8.ips nwl8.map |
echo. |
"%bspatch%" nwl1.map nwl1.map nwl1.patch |
"%bspatch%" nwl2.map nwl2.map nwl2.patch |
"%bspatch%" nwl3.map nwl3.map nwl3.patch |
"%bspatch%" nwl4.map nwl4.map nwl4.patch |
"%bspatch%" nwl5.map nwl5.map nwl5.patch |
"%bspatch%" nwl6.map nwl6.map nwl6.patch |
"%bspatch%" nwl7.map nwl7.map nwl7.patch |
"%bspatch%" nwl8.map nwl8.map nwl8.patch |
if exist nwpatch*.h266 del /f /q nwpatch*.h266 |
if exist nwflag*.h266 del /f /q nwflag*.h266 |
echo Do not delete this file! You will be force to reinstall NW+ and repatch the maps. >nwflag%nwver%.h266 |
attrib +r nwflag%nwver%.h266 |
del /f /q nwl1.ips |
del /f /q nwl2.ips |
del /f /q nwl3.ips |
del /f /q nwl4.ips |
del /f /q nwl5.ips |
del /f /q nwl6.ips |
del /f /q nwl7.ips |
del /f /q nwl8.ips |
echo Do not delete this file! You will be forced to reinstall NW+ and repatch the maps. >nwflag_%addonver%.h266 |
attrib +r nwflag_%addonver%.h266 |
echo. |
echo Patching complete! |
:scanning |
cd .. |
chdir "%exedir%" |
echo. |
echo Scanning directory for potential problems. |
if exist nwl1.mhk goto mhkfound |
182,6 → 349,11 |
if exist TILES014.ART goto artfound |
if exist TILES015.ART goto artfound |
:artfound_done |
call :checksum c6b8ca33ea6a2ec46b8dfeca4f9a3d5e078d0789 NWACTOR.CON "NWINTER file detected and neutralized:" |
call :checksum fdb91aa2912f16232ed9020a7d8ec35834ef58c8 NWDEFS.CON "NWINTER file detected and neutralized:" |
call :checksum 2bb2ddc7319e0935569b724f3c67cb953fdb79d6 NWINTER.CON "NWINTER file detected and neutralized:" |
call :checksum 5ae347733be1f87f35d1930186de1ed764f4682f NWSNOW.CON "NWINTER file detected and neutralized:" |
call :checksum 5df8b3b4216dcfdb8bc0adf6241f8a893eacfd98 NWUSER.CON "NWINTER file detected and neutralized:" |
if exist NWinter.con goto confound |
if exist NWActor.con goto confound |
if exist NWDefs.con goto confound |
192,13 → 364,36 |
if exist NWSnow.con goto confound |
if exist NWUser.con goto confound |
:confound_done |
call :conprotect |
chdir /d "%addondir%" |
echo. |
pause |
goto restart |
:noips |
:conprotect |
pushd "%exedir%" |
if not exist GAME.CON "%kextract%" DUKE3D.GRP GAME.CON |
if not exist DEFS.CON "%kextract%" DUKE3D.GRP DEFS.CON |
if not exist USER.CON "%kextract%" DUKE3D.GRP USER.CON |
popd |
goto :eof |
:checksum |
if not exist "%sha1sum%" ( |
echo "%sha1sum%" not found. |
goto :eof |
) |
if not exist "%~2" goto :eof |
echo %~1 *%~2 | "%sha1sum%" --status --check - |
if "%ERRORLEVEL%"=="0" ( |
ren "%~2" "NWOld_%addonver%_%~nx2" |
echo %~3 %~nx2 |
) |
goto :eof |
:nopatch |
echo. |
echo Error: You don't have all the *.ips files in your directory. |
echo Error: You don't have all the *.patch files in your directory. |
echo Aborting installation. |
echo Map patching is required for NW+ to function correctly. |
echo. |
209,7 → 404,7 |
echo. |
echo Problematic .mhk files have been found in your directory. |
echo Unless you have knowingly made a modification to NW's map hacks, |
echo the presence of these files in your EDuke32 directory will |
echo the presence of these files in your %exeproper% directory will |
echo cause NW+ to function incorrectly. |
echo. |
echo nwl1.mhk |
228,7 → 423,7 |
echo. |
echo Problematic .art files have been found in your directory. |
echo Unless you have knowingly made a modification to NW's art, |
echo the presence of these files in your EDuke32 directory will |
echo the presence of these files in your %exeproper% directory will |
echo cause NW+ to function incorrectly. |
echo. |
echo TILES005.ART |
246,7 → 441,7 |
echo. |
echo Problematic .con files have been found in your directory. |
echo Unless you have knowingly made a modification to NW's programming, |
echo the presence of these files in your EDuke32 directory will |
echo the presence of these files in your %exeproper% directory will |
echo cause NW+ to function incorrectly. |
echo. |
echo NWinter.con |
260,7 → 455,7 |
echo NWSnow.con |
echo. |
echo IF THESE ARE THE ORIGINAL NUCLEAR WINTER CON FILES, OR THEY COME FROM |
echo AN OUTDATED VERSION OF NW+, REMOVE THEM FROM YOUR EDUKE32 DIRECTORY |
echo AN OUTDATED VERSION OF NW+, REMOVE THEM FROM YOUR %exeproper% DIRECTORY |
echo IMMEDIATELY! |
echo NW+ uses modified .con files to fix programming errors created by |
echo the original programmers. Due to improvements made to the levels, |
267,34 → 462,15 |
echo NW+ will have major errors if the included .con files are not used. |
goto confound_done |
:eduke32check |
if exist eduke32.bat goto eduke32check_done |
if exist ..\eduke32.exe ( |
cd .. |
goto recheck |
) |
if exist ..\..\eduke32.exe ( |
cd ..\.. |
goto recheck |
) |
if exist ..\..\..\eduke32.exe ( |
cd ..\..\.. |
goto recheck |
) |
if exist ..\eduke32.bat ( |
cd .. |
goto eduke32check_done |
) |
if exist ..\..\eduke32.bat ( |
cd ..\.. |
goto eduke32check_done |
) |
if exist ..\..\..\eduke32.bat ( |
cd ..\..\.. |
goto eduke32check_done |
) |
echo Warning: You don't have EDuke32 in your directory. |
goto eduke32check_done |
:execheck |
if exist %exename%.bat goto execheck_done |
if exist %exename%.exe goto recheck |
set prevdir=%cd% |
if not "%cd%"=="%cd:~0,3%" chdir .. |
if not "%cd%"=="%prevdir%" goto execheck |
echo Warning: You don't have %exeproper% in your directory. |
chdir /d "%startdir%" |
goto execheck_done |
:nodir |
echo. |
305,11 → 481,10 |
goto end |
:end |
set hrp= |
set hrpu= |
if "%debug%"=="1" echo. |
if "%debug%"=="1" pause |
echo. |
@color 07 |
@title %ComSpec% |
cd %dir% |
@echo on |
goto :eof |
popd |
endlocal |
title %ComSpec% |
color 07 |
/nw_plus/nwuninst.bat |
---|
1,3 → 1,5 |
@echo off |
echo You are about to delete all files relevant to NW+. |
echo Continue? |
echo. |
/nw_plus/NWinter.con |
---|
9,29 → 9,33 |
-------------------------------------------------------------------------------- |
*/ |
definecheat 14 endepisode |
definecheat 15 endlevel |
definecheat 25 endvolume |
include NWDefs.con |
include NWUser.con |
setgamename Duke: Nuclear Winter |
gamevar owner 0 2 |
gamevar temp2 0 2 |
gamevar temp3 0 2 |
gamevar temp4 0 2 |
gamevar ptemp 0 1 |
gamevar musicchange 0 1 |
gamevar skin 0 1 |
gamevar nw_picnum 0 2 |
gamevar nw_temp 0 2 |
gamevar nw_tempb 0 2 |
gamevar nw_x 0 2 |
gamevar nw_y 0 2 |
gamevar nw_z 0 2 |
gamevar nw_owner 0 2 |
gamevar nw_temp2 0 2 |
gamevar nw_temp3 0 2 |
// gamevar nw_temp4 0 0 |
// gamevar nw_ptemp 0 1 |
gamevar nw_holodukeid 0 1 |
gamevar nw_musicchange 0 1 |
gamevar skin DUKE 132097 // do not reset flag enabled |
gamevar LOGO_FLAGS 767 0 // default; TEN screen reenabled |
state cutsceneambience |
getactor[THISACTOR].lotag temp |
getactor[THISACTOR].lotag nw_temp |
switch temp |
switch nw_temp |
case WIND_AMBIENCE |
case WIND_REPEAT |
46,8 → 50,8 |
ends |
onevent EVENT_LOADACTOR |
getactor[THISACTOR].picnum picnum |
switch picnum |
getactor[THISACTOR].picnum nw_picnum |
switch nw_picnum |
case SNOWYDOORSHOCK |
spritepal 30 |
71,7 → 75,7 |
break |
case JETPACK |
ifspritepal 21 setvar temp 1 |
ifspritepal 21 setvar nw_temp 1 |
spritepal 0 |
break |
84,7 → 88,7 |
case XMASPRESENT |
case XMASPRESENT2 |
getactor[THISACTOR].hitag temp |
getactor[THISACTOR].hitag nw_temp |
setactor[THISACTOR].hitag 0 |
break |
91,7 → 95,14 |
endswitch |
endevent |
onevent EVENT_SPAWN |
getactor[THISACTOR].owner nw_owner |
getactor[THISACTOR].picnum nw_picnum |
endevent |
onevent EVENT_EGS |
getactor[THISACTOR].picnum nw_picnum |
ifactor APLAYER setactor[THISACTOR].mdflags 16 |
ifactor DUKETORSO setactor[THISACTOR].mdflags 16 |
ifactor DUKEGUN setactor[THISACTOR].mdflags 16 |
102,18 → 113,18 |
{ |
sizeat 8 8 |
setvar temp3 0 |
randvar temp3 2047 |
setactor[THISACTOR].ang temp3 |
setvar nw_temp3 0 |
randvar nw_temp3 2047 |
setactor[THISACTOR].ang nw_temp3 |
setvar temp2 -2047 |
randvar temp2 2047 |
setvar nw_temp2 -2047 |
randvar nw_temp2 2047 |
/* |
setvar temp3 0 |
ifrnd 128 addvar temp3 4 |
ifrnd 128 addvar temp3 8 |
setactor[THISACTOR].cstat temp3 |
setvar nw_temp3 0 |
ifrnd 128 addvar nw_temp3 4 |
ifrnd 128 addvar nw_temp3 8 |
setactor[THISACTOR].cstat nw_temp3 |
*/ |
} |
endevent |
193,6 → 204,15 |
killit |
} |
else |
ifactor CHANDELIER |
{ |
sound GLASS_BREAKING |
debris SCRAP3 3 |
debris SCRAP4 4 |
lotsofglass 10 |
killit |
} |
else |
ifactor TREEWITHSOMETHING |
{ |
sound GLASS_HEAVYBREAK |
233,6 → 253,8 |
useractor notenemy SNOWGIB WEAK state nwbreakobject enda |
useractor notenemy CHANDELIER WEAK state nwbreakobject enda |
useractor notenemy TREEWITHSOMETHING TOUGH state nwbreakobject enda |
actor JETPACK |
248,10 → 270,11 |
ifpinventory GET_JETPACK JETPACK_AMOUNT |
ifcanseetarget |
{ |
ifvare temp 1 |
ifvare nw_temp 1 |
{ |
addinventory GET_JETPACK JETPACK_NEAR_EMPTY |
quote 125 |
redefinequote 122 This jetpack is almost empty! |
quote 122 |
} |
else |
{ |
272,22 → 295,22 |
state nwbabecode |
getactor[THISACTOR].cstat temp |
ifvarand temp 1 nullop else addvar temp 1 |
ifactor HALFBITCH { ifvarand temp 128 nullop else addvar temp 128 } |
ifvarand temp 256 nullop else addvar temp 256 |
getactor[THISACTOR].cstat nw_temp |
ifvarand nw_temp 1 nullop else addvar nw_temp 1 |
ifactor HALFBITCH { ifvarand nw_temp 128 nullop else addvar nw_temp 128 } |
ifvarand nw_temp 256 nullop else addvar nw_temp 256 |
getuserdef .lockout temp2 |
ifvare temp2 1 |
getuserdef .lockout nw_temp2 |
ifvare nw_temp2 1 |
{ |
ifvarand temp 32768 nullop else addvar temp 32768 |
ifvarand nw_temp 32768 nullop else addvar nw_temp 32768 |
} |
else |
// { |
ifvarand temp 32768 subvar temp 32768 |
ifvarand nw_temp 32768 subvar nw_temp 32768 |
// } |
setactor[THISACTOR].cstat temp |
setactor[THISACTOR].cstat nw_temp |
530,28 → 553,28 |
{ |
ifvare LEVEL 2 |
{ |
getactor[THISACTOR].sectnum temp |
switch temp |
getactor[THISACTOR].sectnum nw_temp |
switch nw_temp |
case 220 case 221 |
ifvarn musicchange 1 |
ifvarn nw_musicchange 1 |
{ |
starttrack 12 // doom |
setvar musicchange 1 |
setvar nw_musicchange 1 |
} |
break |
case 563 case 564 case 565 case 566 case 567 |
ifvarn musicchange 2 |
ifvarn nw_musicchange 2 |
{ |
starttrack 13 // mario |
setvar musicchange 2 |
setvar nw_musicchange 2 |
} |
break |
case 192 case 193 case 194 case 195 case 196 case 197 case 198 case 237 case 238 case 239 case 240 |
case 166 case 167 case 172 case 173 case 174 case 176 case 179 |
ifvarn musicchange 0 |
ifvarn nw_musicchange 0 |
{ |
starttrack 2 // level music |
setvar musicchange 0 |
starttrackvar LEVEL // level music |
setvar nw_musicchange 0 |
} |
break |
endswitch |
559,9 → 582,44 |
} |
ends |
// Flying Frosty |
/* |
action ACOMMBREETH 0 3 5 1 40 |
action ACOMMFROZEN 0 1 5 |
action ACOMMSPIN -5 1 5 1 12 |
action ACOMMGET 0 3 5 1 30 |
action ACOMMSHOOT 20 1 5 1 35 |
action ACOMMABOUTTOSHOOT 20 1 5 1 30 |
action ACOMMDYING 30 8 1 1 12 |
action ACOMMDEAD 38 1 1 1 1 |
move COMMGETUPVELS 128 -64 |
move COMMGETVELS 128 64 |
move COMMSLOW 64 24 |
move COMMSTOPPED |
ai AICOMMWAIT ACOMMBREETH COMMSTOPPED faceplayerslow |
ai AICOMMGET ACOMMGET COMMGETVELS seekplayer |
ai AICOMMSHOOT ACOMMSHOOT COMMSTOPPED faceplayerslow |
ai AICOMMABOUTTOSHOOT ACOMMABOUTTOSHOOT COMMSTOPPED faceplayerslow |
ai AICOMMSPIN ACOMMSPIN COMMGETVELS spin |
ai AICOMMDYING ACOMMDYING COMMSTOPPED faceplayer |
ai AICOMMSHRUNK ACOMMGET COMMSLOW furthestdir |
ai AICOMMGROW ACOMMGET COMMSTOPPED furthestdir |
*/ |
move COMMGETUPVELSNW 128 -64 |
move COMMGETVELSNW 128 64 |
move COMMSLOWNW 64 24 |
move COMMSTOPPEDNW |
action ACOMMSPINNW 0 1 5 1 12 |
action ACOMMSHOOTNW 20 1 5 1 16 // this is custom to shorten the delay between firing freezeblasts |
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELS spin |
ai AICOMMSPINNW ACOMMSPINNW COMMGETVELSNW spin |
ai AICOMMSHOOTNW ACOMMSHOOTNW COMMSTOPPEDNW faceplayerslow |
state checkcommhitstate |
670,7 → 728,7 |
break |
} |
ifai 0 |
ai AICOMMSHOOT |
ai AICOMMSHOOTNW |
else |
ifai AICOMMWAIT |
{ |
696,7 → 754,7 |
ifactioncount 2 |
{ |
ifcansee |
ai AICOMMSHOOT |
ai AICOMMSHOOTNW |
else |
{ |
ai AICOMMGET |
706,7 → 764,7 |
ifrnd 32 soundonce COMM_ATTACK |
} |
else |
ifai AICOMMSHOOT |
ifai AICOMMSHOOTNW |
{ |
ifcanshoottarget |
{ |
713,6 → 771,7 |
ifcount 12 |
ifrnd 16 |
ai AICOMMWAIT |
ifactioncount 1 |
{ |
shoot FREEZEBLAST |
719,6 → 778,10 |
resetactioncount |
} |
getplayer[THISACTOR].i nw_temp |
getactor[nw_temp].pal nw_temp |
ifvare nw_temp 1 // if player is frozen |
ai AICOMMGET |
} |
else |
ai AICOMMGET |
744,13 → 807,24 |
ifrnd 4 |
operate |
ifpdistl 1024 |
{ |
ifp palive |
{ |
// sound COMM_SPIN |
sound COMM_SPIN |
ai AICOMMSPINNW |
break |
} |
getplayer[THISACTOR].i nw_temp |
getactor[nw_temp].pal nw_temp |
ifvare nw_temp 1 // if player is frozen |
{ |
sound COMM_SPIN |
ai AICOMMSPINNW |
break |
} |
} |
ifcansee |
{ |
ifp phigher |
770,10 → 844,17 |
{ |
ifpdistl 1280 |
{ |
addphealth CAPTSPINNINGPLAYER |
sound DUKE_GRUNT |
palfrom 32 |
16 resetcount |
setvar nw_tempb CAPTSPINNINGPLAYER |
mulvar nw_tempb -1 |
// addphealth CAPTSPINNINGPLAYER |
getplayer[THISACTOR].i nw_temp |
setactor[nw_temp].htextra nw_tempb |
setactor[nw_temp].htpicnum KNEE |
setactor[nw_temp].htowner THISACTOR |
globalsound DUKE_GRUNT |
palfrom 32 16 |
resetcount |
} |
else |
ifpdistg 2300 |
818,6 → 899,8 |
} |
enda |
// Frosted Battle Mobile |
move TANKSTOPNW |
useractor enemy TANK TANKSTRENGTH |
946,22 → 1029,35 |
// ----------------------------------------------------------------------------- |
onevent EVENT_GAME |
ifactor APLAYER state nwl3surprise |
ifactor APLAYER |
{ |
state nwl3surprise |
getplayer[THISACTOR].holoduke_on nw_holodukeid |
ifvarg nw_holodukeid -1 |
setactor[nw_holodukeid].mdflags 16 |
// addlogvar skin |
} |
ifactor FRAMEEFFECT1 |
ifspawnedby APLAYER |
setactor[THISACTOR].mdflags 16 |
/* |
ifactor MONEY |
{ |
setactor[THISACTOR].mdflags 16 |
getactor[THISACTOR].owner owner |
switch owner |
// getactor[THISACTOR].owner nw_owner |
switch nw_owner |
case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE |
getactor[THISACTOR].x x |
getactor[THISACTOR].y y |
getactor[THISACTOR].z z |
getactor[THISACTOR].x nw_x |
getactor[THISACTOR].y nw_y |
getactor[THISACTOR].z nw_z |
updatesectorz x y z temp |
ifvarn temp -1 getflorzofslope temp x y temp2 else killit |
updatesectorz nw_x nw_y nw_z nw_temp |
ifvarn nw_temp -1 getflorzofslope nw_temp nw_x nw_y nw_temp2 else killit |
ifvarvare z temp2 killit |
ifvarvare nw_z nw_temp2 killit |
break |
endswitch |
} |
968,17 → 1064,15 |
*/ |
endevent |
onevent EVENT_ANIMATESPRITES // This is a hell of a mess because putting get/settspr in states throws warnings, and I don't want that. |
getactor[THISACTOR].picnum picnum |
getactor[THISACTOR].owner owner |
onevent EVENT_ANIMATESPRITES |
ifvare picnum DOORSHOCK |
ifvare nw_picnum DOORSHOCK |
{ |
ifspritepal 30 settspr[THISACTOR].tsprpicnum 3656 |
ifvare VOLUME 1 ifvare LEVEL 2 settspr[THISACTOR].tsprpicnum 3656 |
break |
} |
ifvare picnum SNOWFLAKE |
ifvare nw_picnum SNOWFLAKE |
{ |
settspr[THISACTOR].tsprpicnum SNOW |
settspr[THISACTOR].tsprxrepeat 4 |
986,9 → 1080,9 |
break |
} |
/* |
ifvare picnum MONEY |
ifvare nw_picnum MONEY |
{ |
switch owner |
switch nw_owner |
case SNOW case SNOWFLAKE case SNOWMAKER case SNOWMAKERNOMOVE |
settspr[THISACTOR].tsprpicnum SNOW |
break |
995,95 → 1089,75 |
endswitch |
} |
*/ |
getplayervar[THISACTOR].skin temp |
ifvare temp 1 |
switch nw_picnum |
case APLAYER |
ifvare skin SANTA |
{ |
getplayer[THISACTOR].i temp2 |
gettspr[temp2].tsprpicnum temp3 |
ifvarl temp3 1544 addvar temp3 4096 |
settspr[temp2].tsprpicnum temp3 |
settspr[temp2].tsprpal 10 |
gettspr[THISACTOR].tsprpicnum nw_temp3 |
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096 |
settspr[THISACTOR].tsprpicnum nw_temp3 |
ifvare picnum DUKETORSO |
ifvarg nw_holodukeid -1 |
{ |
getactor[owner].picnum temp2 |
ifvare temp2 APLAYER |
{ |
gettspr[THISACTOR].tsprpicnum temp3 |
addvar temp3 2456 |
settspr[THISACTOR].tsprpicnum temp3 |
break |
gettspr[nw_holodukeid].tsprpicnum nw_temp3 |
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096 |
settspr[nw_holodukeid].tsprpicnum nw_temp3 |
} |
} |
ifvare picnum DUKEGUN |
break |
case FRAMEEFFECT1 |
ifvare skin SANTA |
ifspawnedby APLAYER |
{ |
getactor[owner].picnum temp2 |
ifvare temp2 APLAYER |
{ |
gettspr[THISACTOR].tsprpicnum temp3 |
addvar temp3 2456 |
settspr[THISACTOR].tsprpicnum temp3 |
break |
gettspr[THISACTOR].tsprpicnum nw_temp3 |
ifvarg nw_temp3 1399 ifvarl nw_temp3 1544 addvar nw_temp3 4096 |
settspr[THISACTOR].tsprpicnum nw_temp3 |
} |
} |
ifvare picnum DUKELEG |
{ |
getactor[owner].picnum temp2 |
ifvare temp2 APLAYER settspr[THISACTOR].tsprpal 30 |
break |
} |
} |
ifvare picnum DUKETORSO |
case DUKETORSO |
case DUKEGUN |
getactor[nw_owner].picnum nw_temp2 |
ifvare nw_temp2 SOBBOTWALK |
{ |
getactor[owner].picnum temp2 |
ifvare temp2 SOBBOTWALK |
{ |
gettspr[THISACTOR].tsprpicnum temp3 |
addvar temp3 2456 |
settspr[THISACTOR].tsprpicnum temp3 |
break |
gettspr[THISACTOR].tsprpicnum nw_temp3 |
addvar nw_temp3 2456 |
settspr[THISACTOR].tsprpicnum nw_temp3 |
} |
ifvare temp2 SOBBOTFLY |
ifvare nw_temp2 SOBBOTFLY |
{ |
gettspr[THISACTOR].tsprpicnum temp3 |
addvar temp3 2456 |
settspr[THISACTOR].tsprpicnum temp3 |
break |
gettspr[THISACTOR].tsprpicnum nw_temp3 |
addvar nw_temp3 2456 |
settspr[THISACTOR].tsprpicnum nw_temp3 |
} |
} |
ifvare picnum DUKEGUN |
ifvare nw_temp2 APLAYER |
{ |
getactor[owner].picnum temp2 |
ifvare temp2 SOBBOTWALK |
ifvare skin SANTA |
{ |
gettspr[THISACTOR].tsprpicnum temp3 |
addvar temp3 2456 |
settspr[THISACTOR].tsprpicnum temp3 |
break |
gettspr[THISACTOR].tsprpicnum nw_temp3 |
addvar nw_temp3 2456 |
settspr[THISACTOR].tsprpicnum nw_temp3 |
} |
ifvare temp2 SOBBOTFLY |
{ |
gettspr[THISACTOR].tsprpicnum temp3 |
addvar temp3 2456 |
settspr[THISACTOR].tsprpicnum temp3 |
break |
} |
} |
ifvare picnum DUKELEG |
{ |
getactor[owner].picnum temp2 |
ifvare temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30 |
ifvare temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30 |
break |
} |
ifvare picnum APLAYER |
case DUKELEG |
getactor[nw_owner].picnum nw_temp2 |
ifvare nw_temp2 SOBBOTWALK settspr[THISACTOR].tsprpal 30 |
ifvare nw_temp2 SOBBOTFLY settspr[THISACTOR].tsprpal 30 |
ifvare nw_temp2 APLAYER ifvare skin SANTA settspr[THISACTOR].tsprpal 30 |
break |
endswitch |
ifvare nw_picnum APLAYER // this fixes the bug with the misplaced TV screen tiles |
{ |
gettspr[THISACTOR].tsprpicnum temp |
switch temp |
gettspr[THISACTOR].tsprpicnum nw_temp |
switch nw_temp |
case 1470 case 1471 case 1472 case 1473 case 1474 |
subvar temp 5 |
settspr[THISACTOR].tsprpicnum temp |
subvar nw_temp 5 |
settspr[THISACTOR].tsprpicnum nw_temp |
break |
endswitch |
} |
1096,10 → 1170,11 |
cstat 32768 |
// sizeat 1 1 |
ifspritepal 31 |
ifspritepal 31 // phone ringing effect |
{ |
getplayer[THISACTOR].cursectnum temp3 |
switch temp3 |
/* |
getplayer[THISACTOR].cursectnum nw_temp3 |
switch nw_temp3 |
case 60 case 61 case 62 case 63 |
case 86 case 87 |
case 299 case 300 case 301 case 302 case 303 case 304 case 305 case 306 case 307 case 308 case 309 |
1106,50 → 1181,84 |
case 310 case 311 case 312 case 313 case 314 case 315 case 316 case 317 |
soundonce PHONE_RING |
break |
default |
stopsound PHONE_RING |
break |
endswitch |
*/ |
ifpdistl 8192 // 4096 |
soundonce PHONE_RING |
ifpdistg 16384 |
stopsound PHONE_RING |
ifpdistl RETRIEVEDISTANCE |
ifp pfacing |
ifhitspace |
ifvare temp2 0 |
ifvare nw_temp2 0 |
{ |
setvar temp 0 |
setvar temp2 1 |
setvar nw_temp 0 |
setvar nw_temp2 1 |
setvar nw_temp3 0 |
setvar nw_tempb 0 |
} |
ifvare temp2 1 |
ifvare nw_temp2 1 |
{ |
addvar temp 1 |
addvar nw_temp 1 |
stopsound PHONE_RING |
ifvare temp 1 sound PHONE_PICKUP |
else ifvare temp 39 |
ifvare nw_temp 1 |
sound PHONE_PICKUP |
else ifvare nw_temp 30 |
{ |
setvar tempb 0 |
randvar tempb 3 |
switch tempb |
case 0 sound LOWANG1 break |
case 1 sound LOWANG2 break |
case 2 sound LOWANG3 break |
case 3 sound LOWANG4 break |
setvar nw_tempb 0 |
randvar nw_tempb 3 |
switch nw_tempb |
case 0 |
sound LOWANG1 |
setvar nw_temp3 57 |
break |
case 1 |
sound LOWANG2 |
setvar nw_temp3 124 |
break |
case 2 |
sound LOWANG3 |
setvar nw_temp3 121 |
break |
case 3 |
sound LOWANG4 |
setvar nw_temp3 156 |
break |
endswitch |
addvar nw_temp3 60 |
setvar nw_tempb 0 |
} |
else ifvare temp 195 sound PHONE_HANGUP |
else ifvare temp 247 |
else ifvarvare nw_temp nw_temp3 |
{ |
setvar temp2 0 |
setvar temp 0 |
sound PHONE_HANGUP |
setvarvar nw_tempb nw_temp3 |
addvar nw_tempb 150 |
} |
else ifvarvare nw_temp nw_tempb |
{ |
setvar nw_temp2 0 |
setvar nw_temp 0 |
} |
} |
} |
enda |
useractor notenemy 3831 0 |
// cstat 32768 |
sizeat 12 13 |
getactor[THISACTOR].sectnum temp |
getplayer[THISACTOR].cursectnum temp2 |
ifvarvare temp temp2 |
getactor[THISACTOR].sectnum nw_temp |
getplayer[THISACTOR].cursectnum nw_temp2 |
ifvarvare nw_temp nw_temp2 |
{ |
setuserdef[THISACTOR].volume_number 1 |
endofgame 13 |
1184,19 → 1293,10 |
define title_zoom 32768 |
onevent EVENT_DISPLAYMENU |
// getplayer[THISACTOR].gm temp |
// ifvarand temp 4 nullop else |
// getplayer[THISACTOR].gm nw_temp |
// ifvarand nw_temp 4 nullop else |
// { |
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim |
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim |
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 256 0 0 xdim ydim |
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 512 0 0 xdim ydim |
// } |
endevent |
/* |
onevent EVENT_DISPLAYTITLE |
rotatesprite title_x1 title_y title_zoom 0 3838 0 0 0 0 0 xdim ydim |
rotatesprite title_x2 title_y title_zoom 0 3839 0 0 0 0 0 xdim ydim |
endevent |
*/ |
/nw_plus/NWUser.con |
---|
19,7 → 19,6 |
define JETPACK_NEAR_EMPTY 160 |
definequote 125 This jetpack is almost empty! |
definevolumename 0 Nuclear Winter Demo |
definevolumename 1 Nuclear Winter |
54,6 → 53,8 |
music 3 NW1.MID NW2.MID NW3.MID NW4.MID NW5.MID NW2.MID NW7.MID |
definesound BONUSMUSIC bonus.voc 0 0 255 3 0 // needs bit 2 for NWL7 |
definesound FLY_BY flyby.voc 0 0 0 0 0 |
definesound DUKETALKTOBOSS nwinter/sounds/blank.ogg 0 0 255 12 0 |
definesound BOSSTALKTODUKE nwinter/sounds/blank.ogg 0 0 255 12 0 |
118,7 → 119,7 |
definesound SANTA_TRASH9 422.voc 0 0 254 20 100 |
definesound PHONE_RING fonering.voc 0 0 100 3 0 |
definesound RIP_PAPER rippaper.voc 0 0 255 20 100 |
definesound RIP_PAPER rippaper.voc -64 64 250 20 0 |
definesound SQUISH2 squish.voc -128 0 2 0 0 |
definesound WIND2 wind2.voc 0 0 0 2 0 |
132,10 → 133,10 |
definesound FEMALECAROL jingle2.voc 0 0 0 0 0 |
definesound FEMALECAROL_DEAD scream2.voc 0 0 0 0 0 |
definesound LOWANG1 nwinter/sounds/jg41075.voc 0 0 253 0 -2048 |
definesound LOWANG2 nwinter/sounds/jg42004.voc 0 0 253 0 -2048 |
definesound LOWANG3 nwinter/sounds/jg42019.voc 0 0 253 0 -2048 |
definesound LOWANG4 nwinter/sounds/jg42021.voc 0 0 253 0 -2048 |
definesound LOWANG1 nwinter/sounds/jg41075.voc 0 0 253 0 -2048 // 1.887 sec, 57 tics |
definesound LOWANG2 nwinter/sounds/jg42004.voc 0 0 253 0 -2048 // 4.124 sec, 124 tics |
definesound LOWANG3 nwinter/sounds/jg42019.voc 0 0 253 0 -2048 // 4.013 sec, 121 tics |
definesound LOWANG4 nwinter/sounds/jg42021.voc 0 0 253 0 -2048 // 5.173 sec, 156 tics |
definesound PHONE_PICKUP nwinter/sounds/phone-pick-up-1.wav 0 0 100 2 0 |
definesound PHONE_HANGUP nwinter/sounds/phone-hang-up-1.wav 0 0 100 2 0 |
/nw_plus/nwl2.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/kextract.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/nw_plus/utils/windows/win32/kgroup.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/nw_plus/utils/windows/win32/kextract.debug.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/kgroup.debug.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/wget.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/sha384sum.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/sha1sum.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/sha224sum.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/sha512sum.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/md5sum.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/sha256sum.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/bspatch.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32/bsdiff.exe |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/utils/windows/win32 |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils/windows |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils/source/kextract/compile.sh |
---|
File deleted |
/nw_plus/utils/source/kextract/get.sh |
---|
File deleted |
/nw_plus/utils/source/buildtools/get.sh |
---|
0,0 → 1,4 |
#!/bin/bash |
echo "The source for the buildtools is part of EDuke32." |
echo "This script will check out EDuke32 from its SVN." |
svn co http://svn.eduke32.com/eduke32 |
/nw_plus/utils/source/buildtools/compile.sh |
---|
0,0 → 1,8 |
#!/bin/bash |
echo "Before compiling the utilities, you must follow the directions to compile EDuke32." |
echo "http://wiki.eduke32.com/wiki/Building_EDuke32_on_Linux" |
echo "After that is all done, you must make EDuke32, then change to the build directory and make that too." |
echo "This script will do that here." |
cd polymer/eduke32/build/ |
make |
ls |
/nw_plus/utils/source/wget/links.txt |
---|
0,0 → 1,0 |
http://users.ugent.be/~bpuype/wget/ |
/nw_plus/utils/source/wget |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/nw_plus/utils/source/sums611/COPYING |
---|
0,0 → 1,674 |
GNU GENERAL PUBLIC LICENSE |
Version 3, 29 June 2007 |
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The GNU General Public License is a free, copyleft license for |
software and other kinds of works. |
The licenses for most software and other practical works are designed |
to take away your freedom to share and change the works. By contrast, |
the GNU General Public License is intended to guarantee your freedom to |
share and change all versions of a program--to make sure it remains free |
software for all its users. We, the Free Software Foundation, use the |
GNU General Public License for most of our software; it applies also to |
any other work released this way by its authors. You can apply it to |
your programs, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
them if you wish), that you receive source code or can get it if you |
want it, that you can change the software or use pieces of it in new |
free programs, and that you know you can do these things. |
To protect your rights, we need to prevent others from denying you |
these rights or asking you to surrender the rights. Therefore, you have |
certain responsibilities if you distribute copies of the software, or if |
you modify it: responsibilities to respect the freedom of others. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must pass on to the recipients the same |
freedoms that you received. You must make sure that they, too, receive |
or can get the source code. And you must show them these terms so they |
know their rights. |
Developers that use the GNU GPL protect your rights with two steps: |
(1) assert copyright on the software, and (2) offer you this License |
giving you legal permission to copy, distribute and/or modify it. |
For the developers' and authors' protection, the GPL clearly explains |
that there is no warranty for this free software. For both users' and |
authors' sake, the GPL requires that modified versions be marked as |
changed, so that their problems will not be attributed erroneously to |
authors of previous versions. |
Some devices are designed to deny users access to install or run |
modified versions of the software inside them, although the manufacturer |
can do so. This is fundamentally incompatible with the aim of |
protecting users' freedom to change the software. The systematic |
pattern of such abuse occurs in the area of products for individuals to |
use, which is precisely where it is most unacceptable. Therefore, we |
have designed this version of the GPL to prohibit the practice for those |
products. If such problems arise substantially in other domains, we |
stand ready to extend this provision to those domains in future versions |
of the GPL, as needed to protect the freedom of users. |
Finally, every program is threatened constantly by software patents. |
States should not allow patents to restrict development and use of |
software on general-purpose computers, but in those that do, we wish to |
avoid the special danger that patents applied to a free program could |
make it effectively proprietary. To prevent this, the GPL assures that |
patents cannot be used to render the program non-free. |
The precise terms and conditions for copying, distribution and |
modification follow. |
TERMS AND CONDITIONS |
0. Definitions. |
"This License" refers to version 3 of the GNU General Public License. |
"Copyright" also means copyright-like laws that apply to other kinds of |
works, such as semiconductor masks. |
"The Program" refers to any copyrightable work licensed under this |
License. Each licensee is addressed as "you". "Licensees" and |
"recipients" may be individuals or organizations. |
To "modify" a work means to copy from or adapt all or part of the work |
in a fashion requiring copyright permission, other than the making of an |
exact copy. The resulting work is called a "modified version" of the |
earlier work or a work "based on" the earlier work. |
A "covered work" means either the unmodified Program or a work based |
on the Program. |
To "propagate" a work means to do anything with it that, without |
permission, would make you directly or secondarily liable for |
infringement under applicable copyright law, except executing it on a |
computer or modifying a private copy. Propagation includes copying, |
distribution (with or without modification), making available to the |
public, and in some countries other activities as well. |
To "convey" a work means any kind of propagation that enables other |
parties to make or receive copies. Mere interaction with a user through |
a computer network, with no transfer of a copy, is not conveying. |
An interactive user interface displays "Appropriate Legal Notices" |
to the extent that it includes a convenient and prominently visible |
feature that (1) displays an appropriate copyright notice, and (2) |
tells the user that there is no warranty for the work (except to the |
extent that warranties are provided), that licensees may convey the |
work under this License, and how to view a copy of this License. If |
the interface presents a list of user commands or options, such as a |
menu, a prominent item in the list meets this criterion. |
1. Source Code. |
The "source code" for a work means the preferred form of the work |
for making modifications to it. "Object code" means any non-source |
form of a work. |
A "Standard Interface" means an interface that either is an official |
standard defined by a recognized standards body, or, in the case of |
interfaces specified for a particular programming language, one that |
is widely used among developers working in that language. |
The "System Libraries" of an executable work include anything, other |
than the work as a whole, that (a) is included in the normal form of |
packaging a Major Component, but which is not part of that Major |
Component, and (b) serves only to enable use of the work with that |
Major Component, or to implement a Standard Interface for which an |
implementation is available to the public in source code form. A |
"Major Component", in this context, means a major essential component |
(kernel, window system, and so on) of the specific operating system |
(if any) on which the executable work runs, or a compiler used to |
produce the work, or an object code interpreter used to run it. |
The "Corresponding Source" for a work in object code form means all |
the source code needed to generate, install, and (for an executable |
work) run the object code and to modify the work, including scripts to |
control those activities. However, it does not include the work's |
System Libraries, or general-purpose tools or generally available free |
programs which are used unmodified in performing those activities but |
which are not part of the work. For example, Corresponding Source |
includes interface definition files associated with source files for |
the work, and the source code for shared libraries and dynamically |
linked subprograms that the work is specifically designed to require, |
such as by intimate data communication or control flow between those |
subprograms and other parts of the work. |
The Corresponding Source need not include anything that users |
can regenerate automatically from other parts of the Corresponding |
Source. |
The Corresponding Source for a work in source code form is that |
same work. |
2. Basic Permissions. |
All rights granted under this License are granted for the term of |
copyright on the Program, and are irrevocable provided the stated |
conditions are met. This License explicitly affirms your unlimited |
permission to run the unmodified Program. The output from running a |
covered work is covered by this License only if the output, given its |
content, constitutes a covered work. This License acknowledges your |
rights of fair use or other equivalent, as provided by copyright law. |
You may make, run and propagate covered works that you do not |
convey, without conditions so long as your license otherwise remains |
in force. You may convey covered works to others for the sole purpose |
of having them make modifications exclusively for you, or provide you |
with facilities for running those works, provided that you comply with |
the terms of this License in conveying all material for which you do |
not control copyright. Those thus making or running the covered works |
for you must do so exclusively on your behalf, under your direction |
and control, on terms that prohibit them from making any copies of |
your copyrighted material outside their relationship with you. |
Conveying under any other circumstances is permitted solely under |
the conditions stated below. Sublicensing is not allowed; section 10 |
makes it unnecessary. |
3. Protecting Users' Legal Rights From Anti-Circumvention Law. |
No covered work shall be deemed part of an effective technological |
measure under any applicable law fulfilling obligations under article |
11 of the WIPO copyright treaty adopted on 20 December 1996, or |
similar laws prohibiting or restricting circumvention of such |
measures. |
When you convey a covered work, you waive any legal power to forbid |
circumvention of technological measures to the extent such circumvention |
is effected by exercising rights under this License with respect to |
the covered work, and you disclaim any intention to limit operation or |
modification of the work as a means of enforcing, against the work's |
users, your or third parties' legal rights to forbid circumvention of |
technological measures. |
4. Conveying Verbatim Copies. |
You may convey verbatim copies of the Program's source code as you |
receive it, in any medium, provided that you conspicuously and |
appropriately publish on each copy an appropriate copyright notice; |
keep intact all notices stating that this License and any |
non-permissive terms added in accord with section 7 apply to the code; |
keep intact all notices of the absence of any warranty; and give all |
recipients a copy of this License along with the Program. |
You may charge any price or no price for each copy that you convey, |
and you may offer support or warranty protection for a fee. |
5. Conveying Modified Source Versions. |
You may convey a work based on the Program, or the modifications to |
produce it from the Program, in the form of source code under the |
terms of section 4, provided that you also meet all of these conditions: |
a) The work must carry prominent notices stating that you modified |
it, and giving a relevant date. |
b) The work must carry prominent notices stating that it is |
released under this License and any conditions added under section |
7. This requirement modifies the requirement in section 4 to |
"keep intact all notices". |
c) You must license the entire work, as a whole, under this |
License to anyone who comes into possession of a copy. This |
License will therefore apply, along with any applicable section 7 |
additional terms, to the whole of the work, and all its parts, |
regardless of how they are packaged. This License gives no |
permission to license the work in any other way, but it does not |
invalidate such permission if you have separately received it. |
d) If the work has interactive user interfaces, each must display |
Appropriate Legal Notices; however, if the Program has interactive |
interfaces that do not display Appropriate Legal Notices, your |
work need not make them do so. |
A compilation of a covered work with other separate and independent |
works, which are not by their nature extensions of the covered work, |
and which are not combined with it such as to form a larger program, |
in or on a volume of a storage or distribution medium, is called an |
"aggregate" if the compilation and its resulting copyright are not |
used to limit the access or legal rights of the compilation's users |
beyond what the individual works permit. Inclusion of a covered work |
in an aggregate does not cause this License to apply to the other |
parts of the aggregate. |
6. Conveying Non-Source Forms. |
You may convey a covered work in object code form under the terms |
of sections 4 and 5, provided that you also convey the |
machine-readable Corresponding Source under the terms of this License, |
in one of these ways: |
a) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by the |
Corresponding Source fixed on a durable physical medium |
customarily used for software interchange. |
b) Convey the object code in, or embodied in, a physical product |
(including a physical distribution medium), accompanied by a |
written offer, valid for at least three years and valid for as |
long as you offer spare parts or customer support for that product |
model, to give anyone who possesses the object code either (1) a |
copy of the Corresponding Source for all the software in the |
product that is covered by this License, on a durable physical |
medium customarily used for software interchange, for a price no |
more than your reasonable cost of physically performing this |
conveying of source, or (2) access to copy the |
Corresponding Source from a network server at no charge. |
c) Convey individual copies of the object code with a copy of the |
written offer to provide the Corresponding Source. This |
alternative is allowed only occasionally and noncommercially, and |
only if you received the object code with such an offer, in accord |
with subsection 6b. |
d) Convey the object code by offering access from a designated |
place (gratis or for a charge), and offer equivalent access to the |
Corresponding Source in the same way through the same place at no |
further charge. You need not require recipients to copy the |
Corresponding Source along with the object code. If the place to |
copy the object code is a network server, the Corresponding Source |
may be on a different server (operated by you or a third party) |
that supports equivalent copying facilities, provided you maintain |
clear directions next to the object code saying where to find the |
Corresponding Source. Regardless of what server hosts the |
Corresponding Source, you remain obligated to ensure that it is |
available for as long as needed to satisfy these requirements. |
e) Convey the object code using peer-to-peer transmission, provided |
you inform other peers where the object code and Corresponding |
Source of the work are being offered to the general public at no |
charge under subsection 6d. |
A separable portion of the object code, whose source code is excluded |
from the Corresponding Source as a System Library, need not be |
included in conveying the object code work. |
A "User Product" is either (1) a "consumer product", which means any |
tangible personal property which is normally used for personal, family, |
or household purposes, or (2) anything designed or sold for incorporation |
into a dwelling. In determining whether a product is a consumer product, |
doubtful cases shall be resolved in favor of coverage. For a particular |
product received by a particular user, "normally used" refers to a |
typical or common use of that class of product, regardless of the status |
of the particular user or of the way in which the particular user |
actually uses, or expects or is expected to use, the product. A product |
is a consumer product regardless of whether the product has substantial |
commercial, industrial or non-consumer uses, unless such uses represent |
the only significant mode of use of the product. |
"Installation Information" for a User Product means any methods, |
procedures, authorization keys, or other information required to install |
and execute modified versions of a covered work in that User Product from |
a modified version of its Corresponding Source. The information must |
suffice to ensure that the continued functioning of the modified object |
code is in no case prevented or interfered with solely because |
modification has been made. |
If you convey an object code work under this section in, or with, or |
specifically for use in, a User Product, and the conveying occurs as |
part of a transaction in which the right of possession and use of the |
User Product is transferred to the recipient in perpetuity or for a |
fixed term (regardless of how the transaction is characterized), the |
Corresponding Source conveyed under this section must be accompanied |
by the Installation Information. But this requirement does not apply |
if neither you nor any third party retains the ability to install |
modified object code on the User Product (for example, the work has |
been installed in ROM). |
The requirement to provide Installation Information does not include a |
requirement to continue to provide support service, warranty, or updates |
for a work that has been modified or installed by the recipient, or for |
the User Product in which it has been modified or installed. Access to a |
network may be denied when the modification itself materially and |
adversely affects the operation of the network or violates the rules and |
protocols for communication across the network. |
Corresponding Source conveyed, and Installation Information provided, |
in accord with this section must be in a format that is publicly |
documented (and with an implementation available to the public in |
source code form), and must require no special password or key for |
unpacking, reading or copying. |
7. Additional Terms. |
"Additional permissions" are terms that supplement the terms of this |
License by making exceptions from one or more of its conditions. |
Additional permissions that are applicable to the entire Program shall |
be treated as though they were included in this License, to the extent |
that they are valid under applicable law. If additional permissions |
apply only to part of the Program, that part may be used separately |
under those permissions, but the entire Program remains governed by |
this License without regard to the additional permissions. |
When you convey a copy of a covered work, you may at your option |
remove any additional permissions from that copy, or from any part of |
it. (Additional permissions may be written to require their own |
removal in certain cases when you modify the work.) You may place |
additional permissions on material, added by you to a covered work, |
for which you have or can give appropriate copyright permission. |
Notwithstanding any other provision of this License, for material you |
add to a covered work, you may (if authorized by the copyright holders of |
that material) supplement the terms of this License with terms: |
a) Disclaiming warranty or limiting liability differently from the |
terms of sections 15 and 16 of this License; or |
b) Requiring preservation of specified reasonable legal notices or |
author attributions in that material or in the Appropriate Legal |
Notices displayed by works containing it; or |
c) Prohibiting misrepresentation of the origin of that material, or |
requiring that modified versions of such material be marked in |
reasonable ways as different from the original version; or |
d) Limiting the use for publicity purposes of names of licensors or |
authors of the material; or |
e) Declining to grant rights under trademark law for use of some |
trade names, trademarks, or service marks; or |
f) Requiring indemnification of licensors and authors of that |
material by anyone who conveys the material (or modified versions of |
it) with contractual assumptions of liability to the recipient, for |
any liability that these contractual assumptions directly impose on |
those licensors and authors. |
All other non-permissive additional terms are considered "further |
restrictions" within the meaning of section 10. If the Program as you |
received it, or any part of it, contains a notice stating that it is |
governed by this License along with a term that is a further |
restriction, you may remove that term. If a license document contains |
a further restriction but permits relicensing or conveying under this |
License, you may add to a covered work material governed by the terms |
of that license document, provided that the further restriction does |
not survive such relicensing or conveying. |
If you add terms to a covered work in accord with this section, you |
must place, in the relevant source files, a statement of the |
additional terms that apply to those files, or a notice indicating |
where to find the applicable terms. |
Additional terms, permissive or non-permissive, may be stated in the |
form of a separately written license, or stated as exceptions; |
the above requirements apply either way. |
8. Termination. |
You may not propagate or modify a covered work except as expressly |
provided under this License. Any attempt otherwise to propagate or |
modify it is void, and will automatically terminate your rights under |
this License (including any patent licenses granted under the third |
paragraph of section 11). |
However, if you cease all violation of this License, then your |
license from a particular copyright holder is reinstated (a) |
provisionally, unless and until the copyright holder explicitly and |
finally terminates your license, and (b) permanently, if the copyright |
holder fails to notify you of the violation by some reasonable means |
prior to 60 days after the cessation. |
Moreover, your license from a particular copyright holder is |
reinstated permanently if the copyright holder notifies you of the |
violation by some reasonable means, this is the first time you have |
received notice of violation of this License (for any work) from that |
copyright holder, and you cure the violation prior to 30 days after |
your receipt of the notice. |
Termination of your rights under this section does not terminate the |
licenses of parties who have received copies or rights from you under |
this License. If your rights have been terminated and not permanently |
reinstated, you do not qualify to receive new licenses for the same |
material under section 10. |
9. Acceptance Not Required for Having Copies. |
You are not required to accept this License in order to receive or |
run a copy of the Program. Ancillary propagation of a covered work |
occurring solely as a consequence of using peer-to-peer transmission |
to receive a copy likewise does not require acceptance. However, |
nothing other than this License grants you permission to propagate or |
modify any covered work. These actions infringe copyright if you do |
not accept this License. Therefore, by modifying or propagating a |
covered work, you indicate your acceptance of this License to do so. |
10. Automatic Licensing of Downstream Recipients. |
Each time you convey a covered work, the recipient automatically |
receives a license from the original licensors, to run, modify and |
propagate that work, subject to this License. You are not responsible |
for enforcing compliance by third parties with this License. |
An "entity transaction" is a transaction transferring control of an |
organization, or substantially all assets of one, or subdividing an |
organization, or merging organizations. If propagation of a covered |
work results from an entity transaction, each party to that |
transaction who receives a copy of the work also receives whatever |
licenses to the work the party's predecessor in interest had or could |
give under the previous paragraph, plus a right to possession of the |
Corresponding Source of the work from the predecessor in interest, if |
the predecessor has it or can get it with reasonable efforts. |
You may not impose any further restrictions on the exercise of the |
rights granted or affirmed under this License. For example, you may |
not impose a license fee, royalty, or other charge for exercise of |
rights granted under this License, and you may not initiate litigation |
(including a cross-claim or counterclaim in a lawsuit) alleging that |
any patent claim is infringed by making, using, selling, offering for |
sale, or importing the Program or any portion of it. |
11. Patents. |
A "contributor" is a copyright holder who authorizes use under this |
License of the Program or a work on which the Program is based. The |
work thus licensed is called the contributor's "contributor version". |
A contributor's "essential patent claims" are all patent claims |
owned or controlled by the contributor, whether already acquired or |
hereafter acquired, that would be infringed by some manner, permitted |
by this License, of making, using, or selling its contributor version, |
but do not include claims that would be infringed only as a |
consequence of further modification of the contributor version. For |
purposes of this definition, "control" includes the right to grant |
patent sublicenses in a manner consistent with the requirements of |
this License. |
Each contributor grants you a non-exclusive, worldwide, royalty-free |
patent license under the contributor's essential patent claims, to |
make, use, sell, offer for sale, import and otherwise run, modify and |
propagate the contents of its contributor version. |
In the following three paragraphs, a "patent license" is any express |
agreement or commitment, however denominated, not to enforce a patent |
(such as an express permission to practice a patent or covenant not to |
sue for patent infringement). To "grant" such a patent license to a |
party means to make such an agreement or commitment not to enforce a |
patent against the party. |
If you convey a covered work, knowingly relying on a patent license, |
and the Corresponding Source of the work is not available for anyone |
to copy, free of charge and under the terms of this License, through a |
publicly available network server or other readily accessible means, |
then you must either (1) cause the Corresponding Source to be so |
available, or (2) arrange to deprive yourself of the benefit of the |
patent license for this particular work, or (3) arrange, in a manner |
consistent with the requirements of this License, to extend the patent |
license to downstream recipients. "Knowingly relying" means you have |
actual knowledge that, but for the patent license, your conveying the |
covered work in a country, or your recipient's use of the covered work |
in a country, would infringe one or more identifiable patents in that |
country that you have reason to believe are valid. |
If, pursuant to or in connection with a single transaction or |
arrangement, you convey, or propagate by procuring conveyance of, a |
covered work, and grant a patent license to some of the parties |
receiving the covered work authorizing them to use, propagate, modify |
or convey a specific copy of the covered work, then the patent license |
you grant is automatically extended to all recipients of the covered |
work and works based on it. |
A patent license is "discriminatory" if it does not include within |
the scope of its coverage, prohibits the exercise of, or is |
conditioned on the non-exercise of one or more of the rights that are |
specifically granted under this License. You may not convey a covered |
work if you are a party to an arrangement with a third party that is |
in the business of distributing software, under which you make payment |
to the third party based on the extent of your activity of conveying |
the work, and under which the third party grants, to any of the |
parties who would receive the covered work from you, a discriminatory |
patent license (a) in connection with copies of the covered work |
conveyed by you (or copies made from those copies), or (b) primarily |
for and in connection with specific products or compilations that |
contain the covered work, unless you entered into that arrangement, |
or that patent license was granted, prior to 28 March 2007. |
Nothing in this License shall be construed as excluding or limiting |
any implied license or other defenses to infringement that may |
otherwise be available to you under applicable patent law. |
12. No Surrender of Others' Freedom. |
If conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot convey a |
covered work so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you may |
not convey it at all. For example, if you agree to terms that obligate you |
to collect a royalty for further conveying from those to whom you convey |
the Program, the only way you could satisfy both those terms and this |
License would be to refrain entirely from conveying the Program. |
13. Use with the GNU Affero General Public License. |
Notwithstanding any other provision of this License, you have |
permission to link or combine any covered work with a work licensed |
under version 3 of the GNU Affero General Public License into a single |
combined work, and to convey the resulting work. The terms of this |
License will continue to apply to the part which is the covered work, |
but the special requirements of the GNU Affero General Public License, |
section 13, concerning interaction through a network will apply to the |
combination as such. |
14. Revised Versions of this License. |
The Free Software Foundation may publish revised and/or new versions of |
the GNU General Public License from time to time. Such new versions will |
be similar in spirit to the present version, but may differ in detail to |
address new problems or concerns. |
Each version is given a distinguishing version number. If the |
Program specifies that a certain numbered version of the GNU General |
Public License "or any later version" applies to it, you have the |
option of following the terms and conditions either of that numbered |
version or of any later version published by the Free Software |
Foundation. If the Program does not specify a version number of the |
GNU General Public License, you may choose any version ever published |
by the Free Software Foundation. |
If the Program specifies that a proxy can decide which future |
versions of the GNU General Public License can be used, that proxy's |
public statement of acceptance of a version permanently authorizes you |
to choose that version for the Program. |
Later license versions may give you additional or different |
permissions. However, no additional obligations are imposed on any |
author or copyright holder as a result of your choosing to follow a |
later version. |
15. Disclaimer of Warranty. |
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY |
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT |
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY |
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, |
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM |
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF |
ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
16. Limitation of Liability. |
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS |
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY |
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE |
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF |
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD |
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), |
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF |
SUCH DAMAGES. |
17. Interpretation of Sections 15 and 16. |
If the disclaimer of warranty and limitation of liability provided |
above cannot be given local legal effect according to their terms, |
reviewing courts shall apply local law that most closely approximates |
an absolute waiver of all civil liability in connection with the |
Program, unless a warranty or assumption of liability accompanies a |
copy of the Program in return for a fee. |
END OF TERMS AND CONDITIONS |
How to Apply These Terms to Your New Programs |
If you develop a new program, and you want it to be of the greatest |
possible use to the public, the best way to achieve this is to make it |
free software which everyone can redistribute and change under these terms. |
To do so, attach the following notices to the program. It is safest |
to attach them to the start of each source file to most effectively |
state the exclusion of warranty; and each file should have at least |
the "copyright" line and a pointer to where the full notice is found. |
<one line to give the program's name and a brief idea of what it does.> |
Copyright (C) <year> <name of author> |
This program is free software: you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation, either version 3 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
Also add information on how to contact you by electronic and paper mail. |
If the program does terminal interaction, make it output a short |
notice like this when it starts in an interactive mode: |
<program> Copyright (C) <year> <name of author> |
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
This is free software, and you are welcome to redistribute it |
under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate |
parts of the General Public License. Of course, your program's commands |
might be different; for a GUI interface, you would use an "about box". |
You should also get your employer (if you work as a programmer) or school, |
if any, to sign a "copyright disclaimer" for the program, if necessary. |
For more information on this, and how to apply and follow the GNU GPL, see |
<http://www.gnu.org/licenses/>. |
The GNU General Public License does not permit incorporating your program |
into proprietary programs. If your program is a subroutine library, you |
may consider it more useful to permit linking proprietary applications with |
the library. If this is what you want to do, use the GNU Lesser General |
Public License instead of this License. But first, please read |
<http://www.gnu.org/philosophy/why-not-lgpl.html>. |
/nw_plus/utils/source/sums611/README |
---|
0,0 → 1,0 |
Files compiled by Nagy Ferenc László (nfl at nfllab dot com) from GNU coreutils 6.11 source, fetched from http://gd.tuwien.ac.at/gnu/gnusrc/coreutils/coreutils-6.11.tar.gz. |
/nw_plus/utils/source/sums611/links.txt |
---|
0,0 → 1,3 |
http://blog.nfllab.com/archives/152-Win32-native-md5sum,-sha1sum,-sha256sum-etc..html |
http://www.nfllab.com/sums/coreutils-6.11.tar.gz |
http://www.nfllab.com/sums/sums611.zip |
/nw_plus/utils/source/sums611 |
---|
Property changes: |
Added: bugtraq:number |
+true |
\ No newline at end of property |
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.dsp |
---|
0,0 → 1,136 |
# Microsoft Developer Studio Project File - Name="bsdiff" - Package Owner=<4> |
# Microsoft Developer Studio Generated Build File, Format Version 6.00 |
# ** DO NOT EDIT ** |
# TARGTYPE "Win32 (x86) Console Application" 0x0103 |
CFG=bsdiff - Win32 Debug |
!MESSAGE This is not a valid makefile. To build this project using NMAKE, |
!MESSAGE use the Export Makefile command and run |
!MESSAGE |
!MESSAGE NMAKE /f "bsdiff.mak". |
!MESSAGE |
!MESSAGE You can specify a configuration when running NMAKE |
!MESSAGE by defining the macro CFG on the command line. For example: |
!MESSAGE |
!MESSAGE NMAKE /f "bsdiff.mak" CFG="bsdiff - Win32 Debug" |
!MESSAGE |
!MESSAGE Possible choices for configuration are: |
!MESSAGE |
!MESSAGE "bsdiff - Win32 Release" (based on "Win32 (x86) Console Application") |
!MESSAGE "bsdiff - Win32 Debug" (based on "Win32 (x86) Console Application") |
!MESSAGE |
# Begin Project |
# PROP AllowPerConfigDependencies 0 |
# PROP Scc_ProjName "" |
# PROP Scc_LocalPath "" |
CPP=cl.exe |
RSC=rc.exe |
!IF "$(CFG)" == "bsdiff - Win32 Release" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 0 |
# PROP BASE Output_Dir "Release" |
# PROP BASE Intermediate_Dir "Release" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 0 |
# PROP Output_Dir "Release" |
# PROP Intermediate_Dir "Release" |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c |
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c |
# ADD BASE RSC /l 0x407 /d "NDEBUG" |
# ADD RSC /l 0x407 /d "NDEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 |
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 |
!ELSEIF "$(CFG)" == "bsdiff - Win32 Debug" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 1 |
# PROP BASE Output_Dir "Debug" |
# PROP BASE Intermediate_Dir "Debug" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 1 |
# PROP Output_Dir "Debug" |
# PROP Intermediate_Dir "Debug" |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c |
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c |
# ADD BASE RSC /l 0x407 /d "_DEBUG" |
# ADD RSC /l 0x407 /d "_DEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept |
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept |
!ENDIF |
# Begin Target |
# Name "bsdiff - Win32 Release" |
# Name "bsdiff - Win32 Debug" |
# Begin Group "Source Files" |
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" |
# Begin Source File |
SOURCE=.\blocksort.c |
# End Source File |
# Begin Source File |
SOURCE=.\bsdiff.cpp |
# End Source File |
# Begin Source File |
SOURCE=.\bzlib.c |
# End Source File |
# Begin Source File |
SOURCE=.\compress.c |
# End Source File |
# Begin Source File |
SOURCE=.\crctable.c |
# End Source File |
# Begin Source File |
SOURCE=.\decompress.c |
# End Source File |
# Begin Source File |
SOURCE=.\huffman.c |
# End Source File |
# Begin Source File |
SOURCE=.\randtable.c |
# End Source File |
# End Group |
# Begin Group "Header Files" |
# PROP Default_Filter "h;hpp;hxx;hm;inl" |
# Begin Source File |
SOURCE=.\bzlib.h |
# End Source File |
# Begin Source File |
SOURCE=.\bzlib_private.h |
# End Source File |
# End Group |
# Begin Group "Resource Files" |
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" |
# End Group |
# End Target |
# End Project |
/nw_plus/utils/source/bsdiff-4.3/win32/LICENSE |
---|
0,0 → 1,121 |
BSD Protection License |
February 2002 |
Preamble |
-------- |
The Berkeley Software Distribution ("BSD") license has proven very effective |
over the years at allowing for a wide spread of work throughout both |
commercial and non-commercial products. For programmers whose primary |
intention is to improve the general quality of available software, it is |
arguable that there is no better license than the BSD license, as it |
permits improvements to be used wherever they will help, without idealogical |
or metallic constraint. |
This is of particular value to those who produce reference implementations |
of proposed standards: The case of TCP/IP clearly illustrates that freely |
and universally available implementations leads the rapid acceptance of |
standards -- often even being used instead of a de jure standard (eg, OSI |
network models). |
With the rapid proliferation of software licensed under the GNU General |
Public License, however, the continued success of this role is called into |
question. Given that the inclusion of a few lines of "GPL-tainted" work |
into a larger body of work will result in restricted distribution -- and |
given that further work will likely build upon the "tainted" portions, |
making them difficult to remove at a future date -- there are inevitable |
circumstances where authors would, in order to protect their goal of |
providing for the widespread usage of their work, wish to guard against |
such "GPL-taint". |
In addition, one can imagine that companies which operate by producing and |
selling (possibly closed-source) code would wish to protect themselves |
against the rise of a GPL-licensed competitor. While under existing |
licenses this would mean not releasing their code under any form of open |
license, if a license existed under which they could incorporate any |
improvements back into their own (commercial) products then they might be |
far more willing to provide for non-closed distribution. |
For the above reasons, we put forth this "BSD Protection License": A |
license designed to retain the freedom granted by the BSD license to use |
licensed works in a wide variety of settings, both non-commercial and |
commercial, while protecting the work from having future contributors |
restrict that freedom. |
The precise terms and conditions for copying, distribution, and |
modification follow. |
BSD PROTECTION LICENSE |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION |
---------------------------------------------------------------- |
0. Definitions. |
a) "Program", below, refers to any program or work distributed under |
the terms of this license. |
b) A "work based on the Program", below, refers to either the Program |
or any derivative work under copyright law. |
c) "Modification", below, refers to the act of creating derivative works. |
d) "You", below, refers to each licensee. |
1. Scope. |
This license governs the copying, distribution, and modification of the |
Program. Other activities are outside the scope of this license; The |
act of running the Program is not restricted, and the output from the |
Program is covered only if its contents constitute a work based on the |
Program. |
2. Verbatim copies. |
You may copy and distribute verbatim copies of the Program as you |
receive it, in any medium, provided that you conspicuously and |
appropriately publish on each copy an appropriate copyright notice; keep |
intact all the notices that refer to this License and to the absence of |
any warranty; and give any other recipients of the Program a copy of this |
License along with the Program. |
3. Modification and redistribution under closed license. |
You may modify your copy or copies of the Program, and distribute |
the resulting derivative works, provided that you meet the |
following conditions: |
a) The copyright notice and disclaimer on the Program must be reproduced |
and included in the source code, documentation, and/or other materials |
provided in a manner in which such notices are normally distributed. |
b) The derivative work must be clearly identified as such, in order that |
it may not be confused with the original work. |
c) The license under which the derivative work is distributed must |
expressly prohibit the distribution of further derivative works. |
4. Modification and redistribution under open license. |
You may modify your copy or copies of the Program, and distribute |
the resulting derivative works, provided that you meet the |
following conditions: |
a) The copyright notice and disclaimer on the Program must be reproduced |
and included in the source code, documentation, and/or other materials |
provided in a manner in which such notices are normally distributed. |
b) You must clearly indicate the nature and date of any changes made |
to the Program. The full details need not necessarily be included in |
the individual modified files, provided that each modified file is |
clearly marked as such and instructions are included on where the |
full details of the modifications may be found. |
c) You must cause any work that you distribute or publish, that in whole |
or in part contains or is derived from the Program or any part |
thereof, to be licensed as a whole at no charge to all third |
parties under the terms of this License. |
5. Implied acceptance. |
You may not copy or distribute the Program or any derivative works except |
as expressly provided under this license. Consequently, any such action |
will be taken as implied acceptance of the terms of this license. |
6. NO WARRANTY. |
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, |
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY |
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL |
THE COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT, |
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING, BUT |
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR |
TORT, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGES. |
/nw_plus/utils/source/bsdiff-4.3/win32/bzlib_private.h |
---|
0,0 → 1,503 |
/*-------------------------------------------------------------*/ |
/*--- Private header file for the library. ---*/ |
/*--- bzlib_private.h ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
#ifndef _BZLIB_PRIVATE_H |
#define _BZLIB_PRIVATE_H |
#include <stdlib.h> |
#ifndef BZ_NO_STDIO |
#include <stdio.h> |
#include <ctype.h> |
#include <string.h> |
#endif |
#include "bzlib.h" |
/*-- General stuff. --*/ |
#define BZ_VERSION "1.0.4, 20-Dec-2006" |
typedef char Char; |
typedef unsigned char Bool; |
typedef unsigned char UChar; |
typedef int Int32; |
typedef unsigned int UInt32; |
typedef short Int16; |
typedef unsigned short UInt16; |
#define True ((Bool)1) |
#define False ((Bool)0) |
#ifndef __GNUC__ |
#define __inline__ /* */ |
#endif |
#ifndef BZ_NO_STDIO |
extern void BZ2_bz__AssertH__fail ( int errcode ); |
#define AssertH(cond,errcode) \ |
{ if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } |
#if BZ_DEBUG |
#define AssertD(cond,msg) \ |
{ if (!(cond)) { \ |
fprintf ( stderr, \ |
"\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ |
exit(1); \ |
}} |
#else |
#define AssertD(cond,msg) /* */ |
#endif |
#define VPrintf0(zf) \ |
fprintf(stderr,zf) |
#define VPrintf1(zf,za1) \ |
fprintf(stderr,zf,za1) |
#define VPrintf2(zf,za1,za2) \ |
fprintf(stderr,zf,za1,za2) |
#define VPrintf3(zf,za1,za2,za3) \ |
fprintf(stderr,zf,za1,za2,za3) |
#define VPrintf4(zf,za1,za2,za3,za4) \ |
fprintf(stderr,zf,za1,za2,za3,za4) |
#define VPrintf5(zf,za1,za2,za3,za4,za5) \ |
fprintf(stderr,zf,za1,za2,za3,za4,za5) |
#else |
extern void bz_internal_error ( int errcode ); |
#define AssertH(cond,errcode) \ |
{ if (!(cond)) bz_internal_error ( errcode ); } |
#define AssertD(cond,msg) do { } while (0) |
#define VPrintf0(zf) do { } while (0) |
#define VPrintf1(zf,za1) do { } while (0) |
#define VPrintf2(zf,za1,za2) do { } while (0) |
#define VPrintf3(zf,za1,za2,za3) do { } while (0) |
#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) |
#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) |
#endif |
#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) |
#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) |
/*-- Header bytes. --*/ |
#define BZ_HDR_B 0x42 /* 'B' */ |
#define BZ_HDR_Z 0x5a /* 'Z' */ |
#define BZ_HDR_h 0x68 /* 'h' */ |
#define BZ_HDR_0 0x30 /* '0' */ |
/*-- Constants for the back end. --*/ |
#define BZ_MAX_ALPHA_SIZE 258 |
#define BZ_MAX_CODE_LEN 23 |
#define BZ_RUNA 0 |
#define BZ_RUNB 1 |
#define BZ_N_GROUPS 6 |
#define BZ_G_SIZE 50 |
#define BZ_N_ITERS 4 |
#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) |
/*-- Stuff for randomising repetitive blocks. --*/ |
extern Int32 BZ2_rNums[512]; |
#define BZ_RAND_DECLS \ |
Int32 rNToGo; \ |
Int32 rTPos \ |
#define BZ_RAND_INIT_MASK \ |
s->rNToGo = 0; \ |
s->rTPos = 0 \ |
#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) |
#define BZ_RAND_UPD_MASK \ |
if (s->rNToGo == 0) { \ |
s->rNToGo = BZ2_rNums[s->rTPos]; \ |
s->rTPos++; \ |
if (s->rTPos == 512) s->rTPos = 0; \ |
} \ |
s->rNToGo--; |
/*-- Stuff for doing CRCs. --*/ |
extern UInt32 BZ2_crc32Table[256]; |
#define BZ_INITIALISE_CRC(crcVar) \ |
{ \ |
crcVar = 0xffffffffL; \ |
} |
#define BZ_FINALISE_CRC(crcVar) \ |
{ \ |
crcVar = ~(crcVar); \ |
} |
#define BZ_UPDATE_CRC(crcVar,cha) \ |
{ \ |
crcVar = (crcVar << 8) ^ \ |
BZ2_crc32Table[(crcVar >> 24) ^ \ |
((UChar)cha)]; \ |
} |
/*-- States and modes for compression. --*/ |
#define BZ_M_IDLE 1 |
#define BZ_M_RUNNING 2 |
#define BZ_M_FLUSHING 3 |
#define BZ_M_FINISHING 4 |
#define BZ_S_OUTPUT 1 |
#define BZ_S_INPUT 2 |
#define BZ_N_RADIX 2 |
#define BZ_N_QSORT 12 |
#define BZ_N_SHELL 18 |
#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) |
/*-- Structure holding all the compression-side stuff. --*/ |
typedef |
struct { |
/* pointer back to the struct bz_stream */ |
bz_stream* strm; |
/* mode this stream is in, and whether inputting */ |
/* or outputting data */ |
Int32 mode; |
Int32 state; |
/* remembers avail_in when flush/finish requested */ |
UInt32 avail_in_expect; |
/* for doing the block sorting */ |
UInt32* arr1; |
UInt32* arr2; |
UInt32* ftab; |
Int32 origPtr; |
/* aliases for arr1 and arr2 */ |
UInt32* ptr; |
UChar* block; |
UInt16* mtfv; |
UChar* zbits; |
/* for deciding when to use the fallback sorting algorithm */ |
Int32 workFactor; |
/* run-length-encoding of the input */ |
UInt32 state_in_ch; |
Int32 state_in_len; |
BZ_RAND_DECLS; |
/* input and output limits and current posns */ |
Int32 nblock; |
Int32 nblockMAX; |
Int32 numZ; |
Int32 state_out_pos; |
/* map of bytes used in block */ |
Int32 nInUse; |
Bool inUse[256]; |
UChar unseqToSeq[256]; |
/* the buffer for bit stream creation */ |
UInt32 bsBuff; |
Int32 bsLive; |
/* block and combined CRCs */ |
UInt32 blockCRC; |
UInt32 combinedCRC; |
/* misc administratium */ |
Int32 verbosity; |
Int32 blockNo; |
Int32 blockSize100k; |
/* stuff for coding the MTF values */ |
Int32 nMTF; |
Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; |
UChar selector [BZ_MAX_SELECTORS]; |
UChar selectorMtf[BZ_MAX_SELECTORS]; |
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
/* second dimension: only 3 needed; 4 makes index calculations faster */ |
UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; |
} |
EState; |
/*-- externs for compression. --*/ |
extern void |
BZ2_blockSort ( EState* ); |
extern void |
BZ2_compressBlock ( EState*, Bool ); |
extern void |
BZ2_bsInitWrite ( EState* ); |
extern void |
BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); |
extern void |
BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); |
/*-- states for decompression. --*/ |
#define BZ_X_IDLE 1 |
#define BZ_X_OUTPUT 2 |
#define BZ_X_MAGIC_1 10 |
#define BZ_X_MAGIC_2 11 |
#define BZ_X_MAGIC_3 12 |
#define BZ_X_MAGIC_4 13 |
#define BZ_X_BLKHDR_1 14 |
#define BZ_X_BLKHDR_2 15 |
#define BZ_X_BLKHDR_3 16 |
#define BZ_X_BLKHDR_4 17 |
#define BZ_X_BLKHDR_5 18 |
#define BZ_X_BLKHDR_6 19 |
#define BZ_X_BCRC_1 20 |
#define BZ_X_BCRC_2 21 |
#define BZ_X_BCRC_3 22 |
#define BZ_X_BCRC_4 23 |
#define BZ_X_RANDBIT 24 |
#define BZ_X_ORIGPTR_1 25 |
#define BZ_X_ORIGPTR_2 26 |
#define BZ_X_ORIGPTR_3 27 |
#define BZ_X_MAPPING_1 28 |
#define BZ_X_MAPPING_2 29 |
#define BZ_X_SELECTOR_1 30 |
#define BZ_X_SELECTOR_2 31 |
#define BZ_X_SELECTOR_3 32 |
#define BZ_X_CODING_1 33 |
#define BZ_X_CODING_2 34 |
#define BZ_X_CODING_3 35 |
#define BZ_X_MTF_1 36 |
#define BZ_X_MTF_2 37 |
#define BZ_X_MTF_3 38 |
#define BZ_X_MTF_4 39 |
#define BZ_X_MTF_5 40 |
#define BZ_X_MTF_6 41 |
#define BZ_X_ENDHDR_2 42 |
#define BZ_X_ENDHDR_3 43 |
#define BZ_X_ENDHDR_4 44 |
#define BZ_X_ENDHDR_5 45 |
#define BZ_X_ENDHDR_6 46 |
#define BZ_X_CCRC_1 47 |
#define BZ_X_CCRC_2 48 |
#define BZ_X_CCRC_3 49 |
#define BZ_X_CCRC_4 50 |
/*-- Constants for the fast MTF decoder. --*/ |
#define MTFA_SIZE 4096 |
#define MTFL_SIZE 16 |
/*-- Structure holding all the decompression-side stuff. --*/ |
typedef |
struct { |
/* pointer back to the struct bz_stream */ |
bz_stream* strm; |
/* state indicator for this stream */ |
Int32 state; |
/* for doing the final run-length decoding */ |
UChar state_out_ch; |
Int32 state_out_len; |
Bool blockRandomised; |
BZ_RAND_DECLS; |
/* the buffer for bit stream reading */ |
UInt32 bsBuff; |
Int32 bsLive; |
/* misc administratium */ |
Int32 blockSize100k; |
Bool smallDecompress; |
Int32 currBlockNo; |
Int32 verbosity; |
/* for undoing the Burrows-Wheeler transform */ |
Int32 origPtr; |
UInt32 tPos; |
Int32 k0; |
Int32 unzftab[256]; |
Int32 nblock_used; |
Int32 cftab[257]; |
Int32 cftabCopy[257]; |
/* for undoing the Burrows-Wheeler transform (FAST) */ |
UInt32 *tt; |
/* for undoing the Burrows-Wheeler transform (SMALL) */ |
UInt16 *ll16; |
UChar *ll4; |
/* stored and calculated CRCs */ |
UInt32 storedBlockCRC; |
UInt32 storedCombinedCRC; |
UInt32 calculatedBlockCRC; |
UInt32 calculatedCombinedCRC; |
/* map of bytes used in block */ |
Int32 nInUse; |
Bool inUse[256]; |
Bool inUse16[16]; |
UChar seqToUnseq[256]; |
/* for decoding the MTF values */ |
UChar mtfa [MTFA_SIZE]; |
Int32 mtfbase[256 / MTFL_SIZE]; |
UChar selector [BZ_MAX_SELECTORS]; |
UChar selectorMtf[BZ_MAX_SELECTORS]; |
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
Int32 minLens[BZ_N_GROUPS]; |
/* save area for scalars in the main decompress code */ |
Int32 save_i; |
Int32 save_j; |
Int32 save_t; |
Int32 save_alphaSize; |
Int32 save_nGroups; |
Int32 save_nSelectors; |
Int32 save_EOB; |
Int32 save_groupNo; |
Int32 save_groupPos; |
Int32 save_nextSym; |
Int32 save_nblockMAX; |
Int32 save_nblock; |
Int32 save_es; |
Int32 save_N; |
Int32 save_curr; |
Int32 save_zt; |
Int32 save_zn; |
Int32 save_zvec; |
Int32 save_zj; |
Int32 save_gSel; |
Int32 save_gMinlen; |
Int32* save_gLimit; |
Int32* save_gBase; |
Int32* save_gPerm; |
} |
DState; |
/*-- Macros for decompression. --*/ |
#define BZ_GET_FAST(cccc) \ |
s->tPos = s->tt[s->tPos]; \ |
cccc = (UChar)(s->tPos & 0xff); \ |
s->tPos >>= 8; |
#define BZ_GET_FAST_C(cccc) \ |
c_tPos = c_tt[c_tPos]; \ |
cccc = (UChar)(c_tPos & 0xff); \ |
c_tPos >>= 8; |
#define SET_LL4(i,n) \ |
{ if (((i) & 0x1) == 0) \ |
s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ |
s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ |
} |
#define GET_LL4(i) \ |
((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) |
#define SET_LL(i,n) \ |
{ s->ll16[i] = (UInt16)(n & 0x0000ffff); \ |
SET_LL4(i, n >> 16); \ |
} |
#define GET_LL(i) \ |
(((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) |
#define BZ_GET_SMALL(cccc) \ |
cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ |
s->tPos = GET_LL(s->tPos); |
/*-- externs for decompression. --*/ |
extern Int32 |
BZ2_indexIntoF ( Int32, Int32* ); |
extern Int32 |
BZ2_decompress ( DState* ); |
extern void |
BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, |
Int32, Int32, Int32 ); |
#endif |
/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ |
#ifdef BZ_NO_STDIO |
#ifndef NULL |
#define NULL 0 |
#endif |
#endif |
/*-------------------------------------------------------------*/ |
/*--- end bzlib_private.h ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/bspatch.1 |
---|
0,0 → 1,59 |
.\"- |
.\" Copyright 2003-2005 Colin Percival |
.\" All rights reserved |
.\" |
.\" Redistribution and use in source and binary forms, with or without |
.\" modification, are permitted providing that the following conditions |
.\" are met: |
.\" 1. Redistributions of source code must retain the above copyright |
.\" notice, this list of conditions and the following disclaimer. |
.\" 2. Redistributions in binary form must reproduce the above copyright |
.\" notice, this list of conditions and the following disclaimer in the |
.\" documentation and/or other materials provided with the distribution. |
.\" |
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
.\" POSSIBILITY OF SUCH DAMAGE. |
.\" |
.\" $FreeBSD: src/usr.bin/bsdiff/bspatch/bspatch.1,v 1.1 2005/08/06 01:59:06 cperciva Exp $ |
.\" |
.Dd May 18, 2003 |
.Dt BSPATCH 1 |
.Os FreeBSD |
.Sh NAME |
.Nm bspatch |
.Nd apply a patch built with bsdiff(1) |
.Sh SYNOPSIS |
.Nm |
.Ao Ar oldfile Ac Ao Ar newfile Ac Ao Ar patchfile Ac |
.Sh DESCRIPTION |
.Nm |
generates |
.Ao Ar newfile Ac |
from |
.Ao Ar oldfile Ac |
and |
.Ao Ar patchfile Ac |
where |
.Ao Ar patchfile Ac |
is a binary patch built by bsdiff(1). |
.Pp |
.Nm |
uses memory equal to the size of |
.Ao Ar oldfile Ac |
plus the size of |
.Ao Ar newfile Ac , |
but can tolerate a very small working set without a dramatic loss |
of performance. |
.Sh SEE ALSO |
.Xr bsdiff 1 |
.Sh AUTHORS |
.An Colin Percival Aq cperciva@freebsd.org |
/nw_plus/utils/source/bsdiff-4.3/win32/blocksort.c |
---|
0,0 → 1,1094 |
/*-------------------------------------------------------------*/ |
/*--- Block sorting machinery ---*/ |
/*--- blocksort.c ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
#include "bzlib_private.h" |
/*---------------------------------------------*/ |
/*--- Fallback O(N log(N)^2) sorting ---*/ |
/*--- algorithm, for repetitive blocks ---*/ |
/*---------------------------------------------*/ |
/*---------------------------------------------*/ |
static |
__inline__ |
void fallbackSimpleSort ( UInt32* fmap, |
UInt32* eclass, |
Int32 lo, |
Int32 hi ) |
{ |
Int32 i, j, tmp; |
UInt32 ec_tmp; |
if (lo == hi) return; |
if (hi - lo > 3) { |
for ( i = hi-4; i >= lo; i-- ) { |
tmp = fmap[i]; |
ec_tmp = eclass[tmp]; |
for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 ) |
fmap[j-4] = fmap[j]; |
fmap[j-4] = tmp; |
} |
} |
for ( i = hi-1; i >= lo; i-- ) { |
tmp = fmap[i]; |
ec_tmp = eclass[tmp]; |
for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ ) |
fmap[j-1] = fmap[j]; |
fmap[j-1] = tmp; |
} |
} |
/*---------------------------------------------*/ |
#define fswap(zz1, zz2) \ |
{ Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } |
#define fvswap(zzp1, zzp2, zzn) \ |
{ \ |
Int32 yyp1 = (zzp1); \ |
Int32 yyp2 = (zzp2); \ |
Int32 yyn = (zzn); \ |
while (yyn > 0) { \ |
fswap(fmap[yyp1], fmap[yyp2]); \ |
yyp1++; yyp2++; yyn--; \ |
} \ |
} |
#define fmin(a,b) ((a) < (b)) ? (a) : (b) |
#define fpush(lz,hz) { stackLo[sp] = lz; \ |
stackHi[sp] = hz; \ |
sp++; } |
#define fpop(lz,hz) { sp--; \ |
lz = stackLo[sp]; \ |
hz = stackHi[sp]; } |
#define FALLBACK_QSORT_SMALL_THRESH 10 |
#define FALLBACK_QSORT_STACK_SIZE 100 |
static |
void fallbackQSort3 ( UInt32* fmap, |
UInt32* eclass, |
Int32 loSt, |
Int32 hiSt ) |
{ |
Int32 unLo, unHi, ltLo, gtHi, n, m; |
Int32 sp, lo, hi; |
UInt32 med, r, r3; |
Int32 stackLo[FALLBACK_QSORT_STACK_SIZE]; |
Int32 stackHi[FALLBACK_QSORT_STACK_SIZE]; |
r = 0; |
sp = 0; |
fpush ( loSt, hiSt ); |
while (sp > 0) { |
AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 ); |
fpop ( lo, hi ); |
if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) { |
fallbackSimpleSort ( fmap, eclass, lo, hi ); |
continue; |
} |
/* Random partitioning. Median of 3 sometimes fails to |
avoid bad cases. Median of 9 seems to help but |
looks rather expensive. This too seems to work but |
is cheaper. Guidance for the magic constants |
7621 and 32768 is taken from Sedgewick's algorithms |
book, chapter 35. |
*/ |
r = ((r * 7621) + 1) % 32768; |
r3 = r % 3; |
if (r3 == 0) med = eclass[fmap[lo]]; else |
if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else |
med = eclass[fmap[hi]]; |
unLo = ltLo = lo; |
unHi = gtHi = hi; |
while (1) { |
while (1) { |
if (unLo > unHi) break; |
n = (Int32)eclass[fmap[unLo]] - (Int32)med; |
if (n == 0) { |
fswap(fmap[unLo], fmap[ltLo]); |
ltLo++; unLo++; |
continue; |
}; |
if (n > 0) break; |
unLo++; |
} |
while (1) { |
if (unLo > unHi) break; |
n = (Int32)eclass[fmap[unHi]] - (Int32)med; |
if (n == 0) { |
fswap(fmap[unHi], fmap[gtHi]); |
gtHi--; unHi--; |
continue; |
}; |
if (n < 0) break; |
unHi--; |
} |
if (unLo > unHi) break; |
fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--; |
} |
AssertD ( unHi == unLo-1, "fallbackQSort3(2)" ); |
if (gtHi < ltLo) continue; |
n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n); |
m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m); |
n = lo + unLo - ltLo - 1; |
m = hi - (gtHi - unHi) + 1; |
if (n - lo > hi - m) { |
fpush ( lo, n ); |
fpush ( m, hi ); |
} else { |
fpush ( m, hi ); |
fpush ( lo, n ); |
} |
} |
} |
#undef fmin |
#undef fpush |
#undef fpop |
#undef fswap |
#undef fvswap |
#undef FALLBACK_QSORT_SMALL_THRESH |
#undef FALLBACK_QSORT_STACK_SIZE |
/*---------------------------------------------*/ |
/* Pre: |
nblock > 0 |
eclass exists for [0 .. nblock-1] |
((UChar*)eclass) [0 .. nblock-1] holds block |
ptr exists for [0 .. nblock-1] |
Post: |
((UChar*)eclass) [0 .. nblock-1] holds block |
All other areas of eclass destroyed |
fmap [0 .. nblock-1] holds sorted order |
bhtab [ 0 .. 2+(nblock/32) ] destroyed |
*/ |
#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) |
#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) |
#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) |
#define WORD_BH(zz) bhtab[(zz) >> 5] |
#define UNALIGNED_BH(zz) ((zz) & 0x01f) |
static |
void fallbackSort ( UInt32* fmap, |
UInt32* eclass, |
UInt32* bhtab, |
Int32 nblock, |
Int32 verb ) |
{ |
Int32 ftab[257]; |
Int32 ftabCopy[256]; |
Int32 H, i, j, k, l, r, cc, cc1; |
Int32 nNotDone; |
Int32 nBhtab; |
UChar* eclass8 = (UChar*)eclass; |
/*-- |
Initial 1-char radix sort to generate |
initial fmap and initial BH bits. |
--*/ |
if (verb >= 4) |
VPrintf0 ( " bucket sorting ...\n" ); |
for (i = 0; i < 257; i++) ftab[i] = 0; |
for (i = 0; i < nblock; i++) ftab[eclass8[i]]++; |
for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i]; |
for (i = 1; i < 257; i++) ftab[i] += ftab[i-1]; |
for (i = 0; i < nblock; i++) { |
j = eclass8[i]; |
k = ftab[j] - 1; |
ftab[j] = k; |
fmap[k] = i; |
} |
nBhtab = 2 + (nblock / 32); |
for (i = 0; i < nBhtab; i++) bhtab[i] = 0; |
for (i = 0; i < 256; i++) SET_BH(ftab[i]); |
/*-- |
Inductively refine the buckets. Kind-of an |
"exponential radix sort" (!), inspired by the |
Manber-Myers suffix array construction algorithm. |
--*/ |
/*-- set sentinel bits for block-end detection --*/ |
for (i = 0; i < 32; i++) { |
SET_BH(nblock + 2*i); |
CLEAR_BH(nblock + 2*i + 1); |
} |
/*-- the log(N) loop --*/ |
H = 1; |
while (1) { |
if (verb >= 4) |
VPrintf1 ( " depth %6d has ", H ); |
j = 0; |
for (i = 0; i < nblock; i++) { |
if (ISSET_BH(i)) j = i; |
k = fmap[i] - H; if (k < 0) k += nblock; |
eclass[k] = j; |
} |
nNotDone = 0; |
r = -1; |
while (1) { |
/*-- find the next non-singleton bucket --*/ |
k = r + 1; |
while (ISSET_BH(k) && UNALIGNED_BH(k)) k++; |
if (ISSET_BH(k)) { |
while (WORD_BH(k) == 0xffffffff) k += 32; |
while (ISSET_BH(k)) k++; |
} |
l = k - 1; |
if (l >= nblock) break; |
while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++; |
if (!ISSET_BH(k)) { |
while (WORD_BH(k) == 0x00000000) k += 32; |
while (!ISSET_BH(k)) k++; |
} |
r = k - 1; |
if (r >= nblock) break; |
/*-- now [l, r] bracket current bucket --*/ |
if (r > l) { |
nNotDone += (r - l + 1); |
fallbackQSort3 ( fmap, eclass, l, r ); |
/*-- scan bucket and generate header bits-- */ |
cc = -1; |
for (i = l; i <= r; i++) { |
cc1 = eclass[fmap[i]]; |
if (cc != cc1) { SET_BH(i); cc = cc1; }; |
} |
} |
} |
if (verb >= 4) |
VPrintf1 ( "%6d unresolved strings\n", nNotDone ); |
H *= 2; |
if (H > nblock || nNotDone == 0) break; |
} |
/*-- |
Reconstruct the original block in |
eclass8 [0 .. nblock-1], since the |
previous phase destroyed it. |
--*/ |
if (verb >= 4) |
VPrintf0 ( " reconstructing block ...\n" ); |
j = 0; |
for (i = 0; i < nblock; i++) { |
while (ftabCopy[j] == 0) j++; |
ftabCopy[j]--; |
eclass8[fmap[i]] = (UChar)j; |
} |
AssertH ( j < 256, 1005 ); |
} |
#undef SET_BH |
#undef CLEAR_BH |
#undef ISSET_BH |
#undef WORD_BH |
#undef UNALIGNED_BH |
/*---------------------------------------------*/ |
/*--- The main, O(N^2 log(N)) sorting ---*/ |
/*--- algorithm. Faster for "normal" ---*/ |
/*--- non-repetitive blocks. ---*/ |
/*---------------------------------------------*/ |
/*---------------------------------------------*/ |
static |
__inline__ |
Bool mainGtU ( UInt32 i1, |
UInt32 i2, |
UChar* block, |
UInt16* quadrant, |
UInt32 nblock, |
Int32* budget ) |
{ |
Int32 k; |
UChar c1, c2; |
UInt16 s1, s2; |
AssertD ( i1 != i2, "mainGtU" ); |
/* 1 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 2 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 3 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 4 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 5 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 6 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 7 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 8 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 9 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 10 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 11 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
/* 12 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
i1++; i2++; |
k = nblock + 8; |
do { |
/* 1 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
/* 2 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
/* 3 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
/* 4 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
/* 5 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
/* 6 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
/* 7 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
/* 8 */ |
c1 = block[i1]; c2 = block[i2]; |
if (c1 != c2) return (c1 > c2); |
s1 = quadrant[i1]; s2 = quadrant[i2]; |
if (s1 != s2) return (s1 > s2); |
i1++; i2++; |
if (i1 >= nblock) i1 -= nblock; |
if (i2 >= nblock) i2 -= nblock; |
k -= 8; |
(*budget)--; |
} |
while (k >= 0); |
return False; |
} |
/*---------------------------------------------*/ |
/*-- |
Knuth's increments seem to work better |
than Incerpi-Sedgewick here. Possibly |
because the number of elems to sort is |
usually small, typically <= 20. |
--*/ |
static |
Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280, |
9841, 29524, 88573, 265720, |
797161, 2391484 }; |
static |
void mainSimpleSort ( UInt32* ptr, |
UChar* block, |
UInt16* quadrant, |
Int32 nblock, |
Int32 lo, |
Int32 hi, |
Int32 d, |
Int32* budget ) |
{ |
Int32 i, j, h, bigN, hp; |
UInt32 v; |
bigN = hi - lo + 1; |
if (bigN < 2) return; |
hp = 0; |
while (incs[hp] < bigN) hp++; |
hp--; |
for (; hp >= 0; hp--) { |
h = incs[hp]; |
i = lo + h; |
while (True) { |
/*-- copy 1 --*/ |
if (i > hi) break; |
v = ptr[i]; |
j = i; |
while ( mainGtU ( |
ptr[j-h]+d, v+d, block, quadrant, nblock, budget |
) ) { |
ptr[j] = ptr[j-h]; |
j = j - h; |
if (j <= (lo + h - 1)) break; |
} |
ptr[j] = v; |
i++; |
/*-- copy 2 --*/ |
if (i > hi) break; |
v = ptr[i]; |
j = i; |
while ( mainGtU ( |
ptr[j-h]+d, v+d, block, quadrant, nblock, budget |
) ) { |
ptr[j] = ptr[j-h]; |
j = j - h; |
if (j <= (lo + h - 1)) break; |
} |
ptr[j] = v; |
i++; |
/*-- copy 3 --*/ |
if (i > hi) break; |
v = ptr[i]; |
j = i; |
while ( mainGtU ( |
ptr[j-h]+d, v+d, block, quadrant, nblock, budget |
) ) { |
ptr[j] = ptr[j-h]; |
j = j - h; |
if (j <= (lo + h - 1)) break; |
} |
ptr[j] = v; |
i++; |
if (*budget < 0) return; |
} |
} |
} |
/*---------------------------------------------*/ |
/*-- |
The following is an implementation of |
an elegant 3-way quicksort for strings, |
described in a paper "Fast Algorithms for |
Sorting and Searching Strings", by Robert |
Sedgewick and Jon L. Bentley. |
--*/ |
#define mswap(zz1, zz2) \ |
{ Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } |
#define mvswap(zzp1, zzp2, zzn) \ |
{ \ |
Int32 yyp1 = (zzp1); \ |
Int32 yyp2 = (zzp2); \ |
Int32 yyn = (zzn); \ |
while (yyn > 0) { \ |
mswap(ptr[yyp1], ptr[yyp2]); \ |
yyp1++; yyp2++; yyn--; \ |
} \ |
} |
static |
__inline__ |
UChar mmed3 ( UChar a, UChar b, UChar c ) |
{ |
UChar t; |
if (a > b) { t = a; a = b; b = t; }; |
if (b > c) { |
b = c; |
if (a > b) b = a; |
} |
return b; |
} |
#define mmin(a,b) ((a) < (b)) ? (a) : (b) |
#define mpush(lz,hz,dz) { stackLo[sp] = lz; \ |
stackHi[sp] = hz; \ |
stackD [sp] = dz; \ |
sp++; } |
#define mpop(lz,hz,dz) { sp--; \ |
lz = stackLo[sp]; \ |
hz = stackHi[sp]; \ |
dz = stackD [sp]; } |
#define mnextsize(az) (nextHi[az]-nextLo[az]) |
#define mnextswap(az,bz) \ |
{ Int32 tz; \ |
tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \ |
tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \ |
tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; } |
#define MAIN_QSORT_SMALL_THRESH 20 |
#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT) |
#define MAIN_QSORT_STACK_SIZE 100 |
static |
void mainQSort3 ( UInt32* ptr, |
UChar* block, |
UInt16* quadrant, |
Int32 nblock, |
Int32 loSt, |
Int32 hiSt, |
Int32 dSt, |
Int32* budget ) |
{ |
Int32 unLo, unHi, ltLo, gtHi, n, m, med; |
Int32 sp, lo, hi, d; |
Int32 stackLo[MAIN_QSORT_STACK_SIZE]; |
Int32 stackHi[MAIN_QSORT_STACK_SIZE]; |
Int32 stackD [MAIN_QSORT_STACK_SIZE]; |
Int32 nextLo[3]; |
Int32 nextHi[3]; |
Int32 nextD [3]; |
sp = 0; |
mpush ( loSt, hiSt, dSt ); |
while (sp > 0) { |
AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 ); |
mpop ( lo, hi, d ); |
if (hi - lo < MAIN_QSORT_SMALL_THRESH || |
d > MAIN_QSORT_DEPTH_THRESH) { |
mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget ); |
if (*budget < 0) return; |
continue; |
} |
med = (Int32) |
mmed3 ( block[ptr[ lo ]+d], |
block[ptr[ hi ]+d], |
block[ptr[ (lo+hi)>>1 ]+d] ); |
unLo = ltLo = lo; |
unHi = gtHi = hi; |
while (True) { |
while (True) { |
if (unLo > unHi) break; |
n = ((Int32)block[ptr[unLo]+d]) - med; |
if (n == 0) { |
mswap(ptr[unLo], ptr[ltLo]); |
ltLo++; unLo++; continue; |
}; |
if (n > 0) break; |
unLo++; |
} |
while (True) { |
if (unLo > unHi) break; |
n = ((Int32)block[ptr[unHi]+d]) - med; |
if (n == 0) { |
mswap(ptr[unHi], ptr[gtHi]); |
gtHi--; unHi--; continue; |
}; |
if (n < 0) break; |
unHi--; |
} |
if (unLo > unHi) break; |
mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--; |
} |
AssertD ( unHi == unLo-1, "mainQSort3(2)" ); |
if (gtHi < ltLo) { |
mpush(lo, hi, d+1 ); |
continue; |
} |
n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n); |
m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m); |
n = lo + unLo - ltLo - 1; |
m = hi - (gtHi - unHi) + 1; |
nextLo[0] = lo; nextHi[0] = n; nextD[0] = d; |
nextLo[1] = m; nextHi[1] = hi; nextD[1] = d; |
nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1; |
if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); |
if (mnextsize(1) < mnextsize(2)) mnextswap(1,2); |
if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); |
AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" ); |
AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" ); |
mpush (nextLo[0], nextHi[0], nextD[0]); |
mpush (nextLo[1], nextHi[1], nextD[1]); |
mpush (nextLo[2], nextHi[2], nextD[2]); |
} |
} |
#undef mswap |
#undef mvswap |
#undef mpush |
#undef mpop |
#undef mmin |
#undef mnextsize |
#undef mnextswap |
#undef MAIN_QSORT_SMALL_THRESH |
#undef MAIN_QSORT_DEPTH_THRESH |
#undef MAIN_QSORT_STACK_SIZE |
/*---------------------------------------------*/ |
/* Pre: |
nblock > N_OVERSHOOT |
block32 exists for [0 .. nblock-1 +N_OVERSHOOT] |
((UChar*)block32) [0 .. nblock-1] holds block |
ptr exists for [0 .. nblock-1] |
Post: |
((UChar*)block32) [0 .. nblock-1] holds block |
All other areas of block32 destroyed |
ftab [0 .. 65536 ] destroyed |
ptr [0 .. nblock-1] holds sorted order |
if (*budget < 0), sorting was abandoned |
*/ |
#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8]) |
#define SETMASK (1 << 21) |
#define CLEARMASK (~(SETMASK)) |
static |
void mainSort ( UInt32* ptr, |
UChar* block, |
UInt16* quadrant, |
UInt32* ftab, |
Int32 nblock, |
Int32 verb, |
Int32* budget ) |
{ |
Int32 i, j, k, ss, sb; |
Int32 runningOrder[256]; |
Bool bigDone[256]; |
Int32 copyStart[256]; |
Int32 copyEnd [256]; |
UChar c1; |
Int32 numQSorted; |
UInt16 s; |
if (verb >= 4) VPrintf0 ( " main sort initialise ...\n" ); |
/*-- set up the 2-byte frequency table --*/ |
for (i = 65536; i >= 0; i--) ftab[i] = 0; |
j = block[0] << 8; |
i = nblock-1; |
for (; i >= 3; i -= 4) { |
quadrant[i] = 0; |
j = (j >> 8) | ( ((UInt16)block[i]) << 8); |
ftab[j]++; |
quadrant[i-1] = 0; |
j = (j >> 8) | ( ((UInt16)block[i-1]) << 8); |
ftab[j]++; |
quadrant[i-2] = 0; |
j = (j >> 8) | ( ((UInt16)block[i-2]) << 8); |
ftab[j]++; |
quadrant[i-3] = 0; |
j = (j >> 8) | ( ((UInt16)block[i-3]) << 8); |
ftab[j]++; |
} |
for (; i >= 0; i--) { |
quadrant[i] = 0; |
j = (j >> 8) | ( ((UInt16)block[i]) << 8); |
ftab[j]++; |
} |
/*-- (emphasises close relationship of block & quadrant) --*/ |
for (i = 0; i < BZ_N_OVERSHOOT; i++) { |
block [nblock+i] = block[i]; |
quadrant[nblock+i] = 0; |
} |
if (verb >= 4) VPrintf0 ( " bucket sorting ...\n" ); |
/*-- Complete the initial radix sort --*/ |
for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1]; |
s = block[0] << 8; |
i = nblock-1; |
for (; i >= 3; i -= 4) { |
s = (s >> 8) | (block[i] << 8); |
j = ftab[s] -1; |
ftab[s] = j; |
ptr[j] = i; |
s = (s >> 8) | (block[i-1] << 8); |
j = ftab[s] -1; |
ftab[s] = j; |
ptr[j] = i-1; |
s = (s >> 8) | (block[i-2] << 8); |
j = ftab[s] -1; |
ftab[s] = j; |
ptr[j] = i-2; |
s = (s >> 8) | (block[i-3] << 8); |
j = ftab[s] -1; |
ftab[s] = j; |
ptr[j] = i-3; |
} |
for (; i >= 0; i--) { |
s = (s >> 8) | (block[i] << 8); |
j = ftab[s] -1; |
ftab[s] = j; |
ptr[j] = i; |
} |
/*-- |
Now ftab contains the first loc of every small bucket. |
Calculate the running order, from smallest to largest |
big bucket. |
--*/ |
for (i = 0; i <= 255; i++) { |
bigDone [i] = False; |
runningOrder[i] = i; |
} |
{ |
Int32 vv; |
Int32 h = 1; |
do h = 3 * h + 1; while (h <= 256); |
do { |
h = h / 3; |
for (i = h; i <= 255; i++) { |
vv = runningOrder[i]; |
j = i; |
while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) { |
runningOrder[j] = runningOrder[j-h]; |
j = j - h; |
if (j <= (h - 1)) goto zero; |
} |
zero: |
runningOrder[j] = vv; |
} |
} while (h != 1); |
} |
/*-- |
The main sorting loop. |
--*/ |
numQSorted = 0; |
for (i = 0; i <= 255; i++) { |
/*-- |
Process big buckets, starting with the least full. |
Basically this is a 3-step process in which we call |
mainQSort3 to sort the small buckets [ss, j], but |
also make a big effort to avoid the calls if we can. |
--*/ |
ss = runningOrder[i]; |
/*-- |
Step 1: |
Complete the big bucket [ss] by quicksorting |
any unsorted small buckets [ss, j], for j != ss. |
Hopefully previous pointer-scanning phases have already |
completed many of the small buckets [ss, j], so |
we don't have to sort them at all. |
--*/ |
for (j = 0; j <= 255; j++) { |
if (j != ss) { |
sb = (ss << 8) + j; |
if ( ! (ftab[sb] & SETMASK) ) { |
Int32 lo = ftab[sb] & CLEARMASK; |
Int32 hi = (ftab[sb+1] & CLEARMASK) - 1; |
if (hi > lo) { |
if (verb >= 4) |
VPrintf4 ( " qsort [0x%x, 0x%x] " |
"done %d this %d\n", |
ss, j, numQSorted, hi - lo + 1 ); |
mainQSort3 ( |
ptr, block, quadrant, nblock, |
lo, hi, BZ_N_RADIX, budget |
); |
numQSorted += (hi - lo + 1); |
if (*budget < 0) return; |
} |
} |
ftab[sb] |= SETMASK; |
} |
} |
AssertH ( !bigDone[ss], 1006 ); |
/*-- |
Step 2: |
Now scan this big bucket [ss] so as to synthesise the |
sorted order for small buckets [t, ss] for all t, |
including, magically, the bucket [ss,ss] too. |
This will avoid doing Real Work in subsequent Step 1's. |
--*/ |
{ |
for (j = 0; j <= 255; j++) { |
copyStart[j] = ftab[(j << 8) + ss] & CLEARMASK; |
copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1; |
} |
for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) { |
k = ptr[j]-1; if (k < 0) k += nblock; |
c1 = block[k]; |
if (!bigDone[c1]) |
ptr[ copyStart[c1]++ ] = k; |
} |
for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) { |
k = ptr[j]-1; if (k < 0) k += nblock; |
c1 = block[k]; |
if (!bigDone[c1]) |
ptr[ copyEnd[c1]-- ] = k; |
} |
} |
AssertH ( (copyStart[ss]-1 == copyEnd[ss]) |
|| |
/* Extremely rare case missing in bzip2-1.0.0 and 1.0.1. |
Necessity for this case is demonstrated by compressing |
a sequence of approximately 48.5 million of character |
251; 1.0.0/1.0.1 will then die here. */ |
(copyStart[ss] == 0 && copyEnd[ss] == nblock-1), |
1007 ) |
for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK; |
/*-- |
Step 3: |
The [ss] big bucket is now done. Record this fact, |
and update the quadrant descriptors. Remember to |
update quadrants in the overshoot area too, if |
necessary. The "if (i < 255)" test merely skips |
this updating for the last bucket processed, since |
updating for the last bucket is pointless. |
The quadrant array provides a way to incrementally |
cache sort orderings, as they appear, so as to |
make subsequent comparisons in fullGtU() complete |
faster. For repetitive blocks this makes a big |
difference (but not big enough to be able to avoid |
the fallback sorting mechanism, exponential radix sort). |
The precise meaning is: at all times: |
for 0 <= i < nblock and 0 <= j <= nblock |
if block[i] != block[j], |
then the relative values of quadrant[i] and |
quadrant[j] are meaningless. |
else { |
if quadrant[i] < quadrant[j] |
then the string starting at i lexicographically |
precedes the string starting at j |
else if quadrant[i] > quadrant[j] |
then the string starting at j lexicographically |
precedes the string starting at i |
else |
the relative ordering of the strings starting |
at i and j has not yet been determined. |
} |
--*/ |
bigDone[ss] = True; |
if (i < 255) { |
Int32 bbStart = ftab[ss << 8] & CLEARMASK; |
Int32 bbSize = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart; |
Int32 shifts = 0; |
while ((bbSize >> shifts) > 65534) shifts++; |
for (j = bbSize-1; j >= 0; j--) { |
Int32 a2update = ptr[bbStart + j]; |
UInt16 qVal = (UInt16)(j >> shifts); |
quadrant[a2update] = qVal; |
if (a2update < BZ_N_OVERSHOOT) |
quadrant[a2update + nblock] = qVal; |
} |
AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 ); |
} |
} |
if (verb >= 4) |
VPrintf3 ( " %d pointers, %d sorted, %d scanned\n", |
nblock, numQSorted, nblock - numQSorted ); |
} |
#undef BIGFREQ |
#undef SETMASK |
#undef CLEARMASK |
/*---------------------------------------------*/ |
/* Pre: |
nblock > 0 |
arr2 exists for [0 .. nblock-1 +N_OVERSHOOT] |
((UChar*)arr2) [0 .. nblock-1] holds block |
arr1 exists for [0 .. nblock-1] |
Post: |
((UChar*)arr2) [0 .. nblock-1] holds block |
All other areas of block destroyed |
ftab [ 0 .. 65536 ] destroyed |
arr1 [0 .. nblock-1] holds sorted order |
*/ |
void BZ2_blockSort ( EState* s ) |
{ |
UInt32* ptr = s->ptr; |
UChar* block = s->block; |
UInt32* ftab = s->ftab; |
Int32 nblock = s->nblock; |
Int32 verb = s->verbosity; |
Int32 wfact = s->workFactor; |
UInt16* quadrant; |
Int32 budget; |
Int32 budgetInit; |
Int32 i; |
if (nblock < 10000) { |
fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); |
} else { |
/* Calculate the location for quadrant, remembering to get |
the alignment right. Assumes that &(block[0]) is at least |
2-byte aligned -- this should be ok since block is really |
the first section of arr2. |
*/ |
i = nblock+BZ_N_OVERSHOOT; |
if (i & 1) i++; |
quadrant = (UInt16*)(&(block[i])); |
/* (wfact-1) / 3 puts the default-factor-30 |
transition point at very roughly the same place as |
with v0.1 and v0.9.0. |
Not that it particularly matters any more, since the |
resulting compressed stream is now the same regardless |
of whether or not we use the main sort or fallback sort. |
*/ |
if (wfact < 1 ) wfact = 1; |
if (wfact > 100) wfact = 100; |
budgetInit = nblock * ((wfact-1) / 3); |
budget = budgetInit; |
mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget ); |
if (verb >= 3) |
VPrintf3 ( " %d work, %d block, ratio %5.2f\n", |
budgetInit - budget, |
nblock, |
(float)(budgetInit - budget) / |
(float)(nblock==0 ? 1 : nblock) ); |
if (budget < 0) { |
if (verb >= 2) |
VPrintf0 ( " too repetitive; using fallback" |
" sorting algorithm\n" ); |
fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); |
} |
} |
s->origPtr = -1; |
for (i = 0; i < s->nblock; i++) |
if (ptr[i] == 0) |
{ s->origPtr = i; break; }; |
AssertH( s->origPtr != -1, 1003 ); |
} |
/*-------------------------------------------------------------*/ |
/*--- end blocksort.c ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/bzlib.c |
---|
0,0 → 1,1571 |
/*-------------------------------------------------------------*/ |
/*--- Library top-level functions. ---*/ |
/*--- bzlib.c ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
/* CHANGES |
0.9.0 -- original version. |
0.9.0a/b -- no changes in this file. |
0.9.0c -- made zero-length BZ_FLUSH work correctly in bzCompress(). |
fixed bzWrite/bzRead to ignore zero-length requests. |
fixed bzread to correctly handle read requests after EOF. |
wrong parameter order in call to bzDecompressInit in |
bzBuffToBuffDecompress. Fixed. |
*/ |
#include "bzlib_private.h" |
/*---------------------------------------------------*/ |
/*--- Compression stuff ---*/ |
/*---------------------------------------------------*/ |
/*---------------------------------------------------*/ |
#ifndef BZ_NO_STDIO |
void BZ2_bz__AssertH__fail ( int errcode ) |
{ |
fprintf(stderr, |
"\n\nbzip2/libbzip2: internal error number %d.\n" |
"This is a bug in bzip2/libbzip2, %s.\n" |
"Please report it to me at: jseward@bzip.org. If this happened\n" |
"when you were using some program which uses libbzip2 as a\n" |
"component, you should also report this bug to the author(s)\n" |
"of that program. Please make an effort to report this bug;\n" |
"timely and accurate bug reports eventually lead to higher\n" |
"quality software. Thanks. Julian Seward, 15 February 2005.\n\n", |
errcode, |
BZ2_bzlibVersion() |
); |
if (errcode == 1007) { |
fprintf(stderr, |
"\n*** A special note about internal error number 1007 ***\n" |
"\n" |
"Experience suggests that a common cause of i.e. 1007\n" |
"is unreliable memory or other hardware. The 1007 assertion\n" |
"just happens to cross-check the results of huge numbers of\n" |
"memory reads/writes, and so acts (unintendedly) as a stress\n" |
"test of your memory system.\n" |
"\n" |
"I suggest the following: try compressing the file again,\n" |
"possibly monitoring progress in detail with the -vv flag.\n" |
"\n" |
"* If the error cannot be reproduced, and/or happens at different\n" |
" points in compression, you may have a flaky memory system.\n" |
" Try a memory-test program. I have used Memtest86\n" |
" (www.memtest86.com). At the time of writing it is free (GPLd).\n" |
" Memtest86 tests memory much more thorougly than your BIOSs\n" |
" power-on test, and may find failures that the BIOS doesn't.\n" |
"\n" |
"* If the error can be repeatably reproduced, this is a bug in\n" |
" bzip2, and I would very much like to hear about it. Please\n" |
" let me know, and, ideally, save a copy of the file causing the\n" |
" problem -- without which I will be unable to investigate it.\n" |
"\n" |
); |
} |
exit(3); |
} |
#endif |
/*---------------------------------------------------*/ |
static |
int bz_config_ok ( void ) |
{ |
if (sizeof(int) != 4) return 0; |
if (sizeof(short) != 2) return 0; |
if (sizeof(char) != 1) return 0; |
return 1; |
} |
/*---------------------------------------------------*/ |
static |
void* default_bzalloc ( void* opaque, Int32 items, Int32 size ) |
{ |
void* v = malloc ( items * size ); |
return v; |
} |
static |
void default_bzfree ( void* opaque, void* addr ) |
{ |
if (addr != NULL) free ( addr ); |
} |
/*---------------------------------------------------*/ |
static |
void prepare_new_block ( EState* s ) |
{ |
Int32 i; |
s->nblock = 0; |
s->numZ = 0; |
s->state_out_pos = 0; |
BZ_INITIALISE_CRC ( s->blockCRC ); |
for (i = 0; i < 256; i++) s->inUse[i] = False; |
s->blockNo++; |
} |
/*---------------------------------------------------*/ |
static |
void init_RL ( EState* s ) |
{ |
s->state_in_ch = 256; |
s->state_in_len = 0; |
} |
static |
Bool isempty_RL ( EState* s ) |
{ |
if (s->state_in_ch < 256 && s->state_in_len > 0) |
return False; else |
return True; |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzCompressInit) |
( bz_stream* strm, |
int blockSize100k, |
int verbosity, |
int workFactor ) |
{ |
Int32 n; |
EState* s; |
if (!bz_config_ok()) return BZ_CONFIG_ERROR; |
if (strm == NULL || |
blockSize100k < 1 || blockSize100k > 9 || |
workFactor < 0 || workFactor > 250) |
return BZ_PARAM_ERROR; |
if (workFactor == 0) workFactor = 30; |
if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; |
if (strm->bzfree == NULL) strm->bzfree = default_bzfree; |
s = BZALLOC( sizeof(EState) ); |
if (s == NULL) return BZ_MEM_ERROR; |
s->strm = strm; |
s->arr1 = NULL; |
s->arr2 = NULL; |
s->ftab = NULL; |
n = 100000 * blockSize100k; |
s->arr1 = BZALLOC( n * sizeof(UInt32) ); |
s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) ); |
s->ftab = BZALLOC( 65537 * sizeof(UInt32) ); |
if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) { |
if (s->arr1 != NULL) BZFREE(s->arr1); |
if (s->arr2 != NULL) BZFREE(s->arr2); |
if (s->ftab != NULL) BZFREE(s->ftab); |
if (s != NULL) BZFREE(s); |
return BZ_MEM_ERROR; |
} |
s->blockNo = 0; |
s->state = BZ_S_INPUT; |
s->mode = BZ_M_RUNNING; |
s->combinedCRC = 0; |
s->blockSize100k = blockSize100k; |
s->nblockMAX = 100000 * blockSize100k - 19; |
s->verbosity = verbosity; |
s->workFactor = workFactor; |
s->block = (UChar*)s->arr2; |
s->mtfv = (UInt16*)s->arr1; |
s->zbits = NULL; |
s->ptr = (UInt32*)s->arr1; |
strm->state = s; |
strm->total_in_lo32 = 0; |
strm->total_in_hi32 = 0; |
strm->total_out_lo32 = 0; |
strm->total_out_hi32 = 0; |
init_RL ( s ); |
prepare_new_block ( s ); |
return BZ_OK; |
} |
/*---------------------------------------------------*/ |
static |
void add_pair_to_block ( EState* s ) |
{ |
Int32 i; |
UChar ch = (UChar)(s->state_in_ch); |
for (i = 0; i < s->state_in_len; i++) { |
BZ_UPDATE_CRC( s->blockCRC, ch ); |
} |
s->inUse[s->state_in_ch] = True; |
switch (s->state_in_len) { |
case 1: |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
break; |
case 2: |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
break; |
case 3: |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
break; |
default: |
s->inUse[s->state_in_len-4] = True; |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
s->block[s->nblock] = (UChar)ch; s->nblock++; |
s->block[s->nblock] = ((UChar)(s->state_in_len-4)); |
s->nblock++; |
break; |
} |
} |
/*---------------------------------------------------*/ |
static |
void flush_RL ( EState* s ) |
{ |
if (s->state_in_ch < 256) add_pair_to_block ( s ); |
init_RL ( s ); |
} |
/*---------------------------------------------------*/ |
#define ADD_CHAR_TO_BLOCK(zs,zchh0) \ |
{ \ |
UInt32 zchh = (UInt32)(zchh0); \ |
/*-- fast track the common case --*/ \ |
if (zchh != zs->state_in_ch && \ |
zs->state_in_len == 1) { \ |
UChar ch = (UChar)(zs->state_in_ch); \ |
BZ_UPDATE_CRC( zs->blockCRC, ch ); \ |
zs->inUse[zs->state_in_ch] = True; \ |
zs->block[zs->nblock] = (UChar)ch; \ |
zs->nblock++; \ |
zs->state_in_ch = zchh; \ |
} \ |
else \ |
/*-- general, uncommon cases --*/ \ |
if (zchh != zs->state_in_ch || \ |
zs->state_in_len == 255) { \ |
if (zs->state_in_ch < 256) \ |
add_pair_to_block ( zs ); \ |
zs->state_in_ch = zchh; \ |
zs->state_in_len = 1; \ |
} else { \ |
zs->state_in_len++; \ |
} \ |
} |
/*---------------------------------------------------*/ |
static |
Bool copy_input_until_stop ( EState* s ) |
{ |
Bool progress_in = False; |
if (s->mode == BZ_M_RUNNING) { |
/*-- fast track the common case --*/ |
while (True) { |
/*-- block full? --*/ |
if (s->nblock >= s->nblockMAX) break; |
/*-- no input? --*/ |
if (s->strm->avail_in == 0) break; |
progress_in = True; |
ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); |
s->strm->next_in++; |
s->strm->avail_in--; |
s->strm->total_in_lo32++; |
if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; |
} |
} else { |
/*-- general, uncommon case --*/ |
while (True) { |
/*-- block full? --*/ |
if (s->nblock >= s->nblockMAX) break; |
/*-- no input? --*/ |
if (s->strm->avail_in == 0) break; |
/*-- flush/finish end? --*/ |
if (s->avail_in_expect == 0) break; |
progress_in = True; |
ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); |
s->strm->next_in++; |
s->strm->avail_in--; |
s->strm->total_in_lo32++; |
if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; |
s->avail_in_expect--; |
} |
} |
return progress_in; |
} |
/*---------------------------------------------------*/ |
static |
Bool copy_output_until_stop ( EState* s ) |
{ |
Bool progress_out = False; |
while (True) { |
/*-- no output space? --*/ |
if (s->strm->avail_out == 0) break; |
/*-- block done? --*/ |
if (s->state_out_pos >= s->numZ) break; |
progress_out = True; |
*(s->strm->next_out) = s->zbits[s->state_out_pos]; |
s->state_out_pos++; |
s->strm->avail_out--; |
s->strm->next_out++; |
s->strm->total_out_lo32++; |
if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; |
} |
return progress_out; |
} |
/*---------------------------------------------------*/ |
static |
Bool handle_compress ( bz_stream* strm ) |
{ |
Bool progress_in = False; |
Bool progress_out = False; |
EState* s = strm->state; |
while (True) { |
if (s->state == BZ_S_OUTPUT) { |
progress_out |= copy_output_until_stop ( s ); |
if (s->state_out_pos < s->numZ) break; |
if (s->mode == BZ_M_FINISHING && |
s->avail_in_expect == 0 && |
isempty_RL(s)) break; |
prepare_new_block ( s ); |
s->state = BZ_S_INPUT; |
if (s->mode == BZ_M_FLUSHING && |
s->avail_in_expect == 0 && |
isempty_RL(s)) break; |
} |
if (s->state == BZ_S_INPUT) { |
progress_in |= copy_input_until_stop ( s ); |
if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) { |
flush_RL ( s ); |
BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) ); |
s->state = BZ_S_OUTPUT; |
} |
else |
if (s->nblock >= s->nblockMAX) { |
BZ2_compressBlock ( s, False ); |
s->state = BZ_S_OUTPUT; |
} |
else |
if (s->strm->avail_in == 0) { |
break; |
} |
} |
} |
return progress_in || progress_out; |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) |
{ |
Bool progress; |
EState* s; |
if (strm == NULL) return BZ_PARAM_ERROR; |
s = strm->state; |
if (s == NULL) return BZ_PARAM_ERROR; |
if (s->strm != strm) return BZ_PARAM_ERROR; |
preswitch: |
switch (s->mode) { |
case BZ_M_IDLE: |
return BZ_SEQUENCE_ERROR; |
case BZ_M_RUNNING: |
if (action == BZ_RUN) { |
progress = handle_compress ( strm ); |
return progress ? BZ_RUN_OK : BZ_PARAM_ERROR; |
} |
else |
if (action == BZ_FLUSH) { |
s->avail_in_expect = strm->avail_in; |
s->mode = BZ_M_FLUSHING; |
goto preswitch; |
} |
else |
if (action == BZ_FINISH) { |
s->avail_in_expect = strm->avail_in; |
s->mode = BZ_M_FINISHING; |
goto preswitch; |
} |
else |
return BZ_PARAM_ERROR; |
case BZ_M_FLUSHING: |
if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR; |
if (s->avail_in_expect != s->strm->avail_in) |
return BZ_SEQUENCE_ERROR; |
progress = handle_compress ( strm ); |
if (s->avail_in_expect > 0 || !isempty_RL(s) || |
s->state_out_pos < s->numZ) return BZ_FLUSH_OK; |
s->mode = BZ_M_RUNNING; |
return BZ_RUN_OK; |
case BZ_M_FINISHING: |
if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR; |
if (s->avail_in_expect != s->strm->avail_in) |
return BZ_SEQUENCE_ERROR; |
progress = handle_compress ( strm ); |
if (!progress) return BZ_SEQUENCE_ERROR; |
if (s->avail_in_expect > 0 || !isempty_RL(s) || |
s->state_out_pos < s->numZ) return BZ_FINISH_OK; |
s->mode = BZ_M_IDLE; |
return BZ_STREAM_END; |
} |
return BZ_OK; /*--not reached--*/ |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm ) |
{ |
EState* s; |
if (strm == NULL) return BZ_PARAM_ERROR; |
s = strm->state; |
if (s == NULL) return BZ_PARAM_ERROR; |
if (s->strm != strm) return BZ_PARAM_ERROR; |
if (s->arr1 != NULL) BZFREE(s->arr1); |
if (s->arr2 != NULL) BZFREE(s->arr2); |
if (s->ftab != NULL) BZFREE(s->ftab); |
BZFREE(strm->state); |
strm->state = NULL; |
return BZ_OK; |
} |
/*---------------------------------------------------*/ |
/*--- Decompression stuff ---*/ |
/*---------------------------------------------------*/ |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzDecompressInit) |
( bz_stream* strm, |
int verbosity, |
int small ) |
{ |
DState* s; |
if (!bz_config_ok()) return BZ_CONFIG_ERROR; |
if (strm == NULL) return BZ_PARAM_ERROR; |
if (small != 0 && small != 1) return BZ_PARAM_ERROR; |
if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR; |
if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; |
if (strm->bzfree == NULL) strm->bzfree = default_bzfree; |
s = BZALLOC( sizeof(DState) ); |
if (s == NULL) return BZ_MEM_ERROR; |
s->strm = strm; |
strm->state = s; |
s->state = BZ_X_MAGIC_1; |
s->bsLive = 0; |
s->bsBuff = 0; |
s->calculatedCombinedCRC = 0; |
strm->total_in_lo32 = 0; |
strm->total_in_hi32 = 0; |
strm->total_out_lo32 = 0; |
strm->total_out_hi32 = 0; |
s->smallDecompress = (Bool)small; |
s->ll4 = NULL; |
s->ll16 = NULL; |
s->tt = NULL; |
s->currBlockNo = 0; |
s->verbosity = verbosity; |
return BZ_OK; |
} |
/*---------------------------------------------------*/ |
/* Return True iff data corruption is discovered. |
Returns False if there is no problem. |
*/ |
static |
Bool unRLE_obuf_to_output_FAST ( DState* s ) |
{ |
UChar k1; |
if (s->blockRandomised) { |
while (True) { |
/* try to finish existing run */ |
while (True) { |
if (s->strm->avail_out == 0) return False; |
if (s->state_out_len == 0) break; |
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch; |
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); |
s->state_out_len--; |
s->strm->next_out++; |
s->strm->avail_out--; |
s->strm->total_out_lo32++; |
if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; |
} |
/* can a new run be started? */ |
if (s->nblock_used == s->save_nblock+1) return False; |
/* Only caused by corrupt data stream? */ |
if (s->nblock_used > s->save_nblock+1) |
return True; |
s->state_out_len = 1; |
s->state_out_ch = s->k0; |
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
s->state_out_len = 2; |
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
s->state_out_len = 3; |
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
s->state_out_len = ((Int32)k1) + 4; |
BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK; |
s->k0 ^= BZ_RAND_MASK; s->nblock_used++; |
} |
} else { |
/* restore */ |
UInt32 c_calculatedBlockCRC = s->calculatedBlockCRC; |
UChar c_state_out_ch = s->state_out_ch; |
Int32 c_state_out_len = s->state_out_len; |
Int32 c_nblock_used = s->nblock_used; |
Int32 c_k0 = s->k0; |
UInt32* c_tt = s->tt; |
UInt32 c_tPos = s->tPos; |
char* cs_next_out = s->strm->next_out; |
unsigned int cs_avail_out = s->strm->avail_out; |
/* end restore */ |
UInt32 avail_out_INIT = cs_avail_out; |
Int32 s_save_nblockPP = s->save_nblock+1; |
unsigned int total_out_lo32_old; |
while (True) { |
/* try to finish existing run */ |
if (c_state_out_len > 0) { |
while (True) { |
if (cs_avail_out == 0) goto return_notr; |
if (c_state_out_len == 1) break; |
*( (UChar*)(cs_next_out) ) = c_state_out_ch; |
BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); |
c_state_out_len--; |
cs_next_out++; |
cs_avail_out--; |
} |
s_state_out_len_eq_one: |
{ |
if (cs_avail_out == 0) { |
c_state_out_len = 1; goto return_notr; |
}; |
*( (UChar*)(cs_next_out) ) = c_state_out_ch; |
BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); |
cs_next_out++; |
cs_avail_out--; |
} |
} |
/* Only caused by corrupt data stream? */ |
if (c_nblock_used > s_save_nblockPP) |
return True; |
/* can a new run be started? */ |
if (c_nblock_used == s_save_nblockPP) { |
c_state_out_len = 0; goto return_notr; |
}; |
c_state_out_ch = c_k0; |
BZ_GET_FAST_C(k1); c_nblock_used++; |
if (k1 != c_k0) { |
c_k0 = k1; goto s_state_out_len_eq_one; |
}; |
if (c_nblock_used == s_save_nblockPP) |
goto s_state_out_len_eq_one; |
c_state_out_len = 2; |
BZ_GET_FAST_C(k1); c_nblock_used++; |
if (c_nblock_used == s_save_nblockPP) continue; |
if (k1 != c_k0) { c_k0 = k1; continue; }; |
c_state_out_len = 3; |
BZ_GET_FAST_C(k1); c_nblock_used++; |
if (c_nblock_used == s_save_nblockPP) continue; |
if (k1 != c_k0) { c_k0 = k1; continue; }; |
BZ_GET_FAST_C(k1); c_nblock_used++; |
c_state_out_len = ((Int32)k1) + 4; |
BZ_GET_FAST_C(c_k0); c_nblock_used++; |
} |
return_notr: |
total_out_lo32_old = s->strm->total_out_lo32; |
s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out); |
if (s->strm->total_out_lo32 < total_out_lo32_old) |
s->strm->total_out_hi32++; |
/* save */ |
s->calculatedBlockCRC = c_calculatedBlockCRC; |
s->state_out_ch = c_state_out_ch; |
s->state_out_len = c_state_out_len; |
s->nblock_used = c_nblock_used; |
s->k0 = c_k0; |
s->tt = c_tt; |
s->tPos = c_tPos; |
s->strm->next_out = cs_next_out; |
s->strm->avail_out = cs_avail_out; |
/* end save */ |
} |
return False; |
} |
/*---------------------------------------------------*/ |
__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab ) |
{ |
Int32 nb, na, mid; |
nb = 0; |
na = 256; |
do { |
mid = (nb + na) >> 1; |
if (indx >= cftab[mid]) nb = mid; else na = mid; |
} |
while (na - nb != 1); |
return nb; |
} |
/*---------------------------------------------------*/ |
/* Return True iff data corruption is discovered. |
Returns False if there is no problem. |
*/ |
static |
Bool unRLE_obuf_to_output_SMALL ( DState* s ) |
{ |
UChar k1; |
if (s->blockRandomised) { |
while (True) { |
/* try to finish existing run */ |
while (True) { |
if (s->strm->avail_out == 0) return False; |
if (s->state_out_len == 0) break; |
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch; |
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); |
s->state_out_len--; |
s->strm->next_out++; |
s->strm->avail_out--; |
s->strm->total_out_lo32++; |
if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; |
} |
/* can a new run be started? */ |
if (s->nblock_used == s->save_nblock+1) return False; |
/* Only caused by corrupt data stream? */ |
if (s->nblock_used > s->save_nblock+1) |
return True; |
s->state_out_len = 1; |
s->state_out_ch = s->k0; |
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
s->state_out_len = 2; |
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
s->state_out_len = 3; |
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; |
k1 ^= BZ_RAND_MASK; s->nblock_used++; |
s->state_out_len = ((Int32)k1) + 4; |
BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK; |
s->k0 ^= BZ_RAND_MASK; s->nblock_used++; |
} |
} else { |
while (True) { |
/* try to finish existing run */ |
while (True) { |
if (s->strm->avail_out == 0) return False; |
if (s->state_out_len == 0) break; |
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch; |
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); |
s->state_out_len--; |
s->strm->next_out++; |
s->strm->avail_out--; |
s->strm->total_out_lo32++; |
if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; |
} |
/* can a new run be started? */ |
if (s->nblock_used == s->save_nblock+1) return False; |
/* Only caused by corrupt data stream? */ |
if (s->nblock_used > s->save_nblock+1) |
return True; |
s->state_out_len = 1; |
s->state_out_ch = s->k0; |
BZ_GET_SMALL(k1); s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
s->state_out_len = 2; |
BZ_GET_SMALL(k1); s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
s->state_out_len = 3; |
BZ_GET_SMALL(k1); s->nblock_used++; |
if (s->nblock_used == s->save_nblock+1) continue; |
if (k1 != s->k0) { s->k0 = k1; continue; }; |
BZ_GET_SMALL(k1); s->nblock_used++; |
s->state_out_len = ((Int32)k1) + 4; |
BZ_GET_SMALL(s->k0); s->nblock_used++; |
} |
} |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzDecompress) ( bz_stream *strm ) |
{ |
Bool corrupt; |
DState* s; |
if (strm == NULL) return BZ_PARAM_ERROR; |
s = strm->state; |
if (s == NULL) return BZ_PARAM_ERROR; |
if (s->strm != strm) return BZ_PARAM_ERROR; |
while (True) { |
if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR; |
if (s->state == BZ_X_OUTPUT) { |
if (s->smallDecompress) |
corrupt = unRLE_obuf_to_output_SMALL ( s ); else |
corrupt = unRLE_obuf_to_output_FAST ( s ); |
if (corrupt) return BZ_DATA_ERROR; |
if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) { |
BZ_FINALISE_CRC ( s->calculatedBlockCRC ); |
if (s->verbosity >= 3) |
VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC, |
s->calculatedBlockCRC ); |
if (s->verbosity >= 2) VPrintf0 ( "]" ); |
if (s->calculatedBlockCRC != s->storedBlockCRC) |
return BZ_DATA_ERROR; |
s->calculatedCombinedCRC |
= (s->calculatedCombinedCRC << 1) | |
(s->calculatedCombinedCRC >> 31); |
s->calculatedCombinedCRC ^= s->calculatedBlockCRC; |
s->state = BZ_X_BLKHDR_1; |
} else { |
return BZ_OK; |
} |
} |
if (s->state >= BZ_X_MAGIC_1) { |
Int32 r = BZ2_decompress ( s ); |
if (r == BZ_STREAM_END) { |
if (s->verbosity >= 3) |
VPrintf2 ( "\n combined CRCs: stored = 0x%08x, computed = 0x%08x", |
s->storedCombinedCRC, s->calculatedCombinedCRC ); |
if (s->calculatedCombinedCRC != s->storedCombinedCRC) |
return BZ_DATA_ERROR; |
return r; |
} |
if (s->state != BZ_X_OUTPUT) return r; |
} |
} |
AssertH ( 0, 6001 ); |
return 0; /*NOTREACHED*/ |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm ) |
{ |
DState* s; |
if (strm == NULL) return BZ_PARAM_ERROR; |
s = strm->state; |
if (s == NULL) return BZ_PARAM_ERROR; |
if (s->strm != strm) return BZ_PARAM_ERROR; |
if (s->tt != NULL) BZFREE(s->tt); |
if (s->ll16 != NULL) BZFREE(s->ll16); |
if (s->ll4 != NULL) BZFREE(s->ll4); |
BZFREE(strm->state); |
strm->state = NULL; |
return BZ_OK; |
} |
#ifndef BZ_NO_STDIO |
/*---------------------------------------------------*/ |
/*--- File I/O stuff ---*/ |
/*---------------------------------------------------*/ |
#define BZ_SETERR(eee) \ |
{ \ |
if (bzerror != NULL) *bzerror = eee; \ |
if (bzf != NULL) bzf->lastErr = eee; \ |
} |
typedef |
struct { |
FILE* handle; |
Char buf[BZ_MAX_UNUSED]; |
Int32 bufN; |
Bool writing; |
bz_stream strm; |
Int32 lastErr; |
Bool initialisedOk; |
} |
bzFile; |
/*---------------------------------------------*/ |
static Bool myfeof ( FILE* f ) |
{ |
Int32 c = fgetc ( f ); |
if (c == EOF) return True; |
ungetc ( c, f ); |
return False; |
} |
/*---------------------------------------------------*/ |
BZFILE* BZ_API(BZ2_bzWriteOpen) |
( int* bzerror, |
FILE* f, |
int blockSize100k, |
int verbosity, |
int workFactor ) |
{ |
Int32 ret; |
bzFile* bzf = NULL; |
BZ_SETERR(BZ_OK); |
if (f == NULL || |
(blockSize100k < 1 || blockSize100k > 9) || |
(workFactor < 0 || workFactor > 250) || |
(verbosity < 0 || verbosity > 4)) |
{ BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; |
if (ferror(f)) |
{ BZ_SETERR(BZ_IO_ERROR); return NULL; }; |
bzf = malloc ( sizeof(bzFile) ); |
if (bzf == NULL) |
{ BZ_SETERR(BZ_MEM_ERROR); return NULL; }; |
BZ_SETERR(BZ_OK); |
bzf->initialisedOk = False; |
bzf->bufN = 0; |
bzf->handle = f; |
bzf->writing = True; |
bzf->strm.bzalloc = NULL; |
bzf->strm.bzfree = NULL; |
bzf->strm.opaque = NULL; |
if (workFactor == 0) workFactor = 30; |
ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k, |
verbosity, workFactor ); |
if (ret != BZ_OK) |
{ BZ_SETERR(ret); free(bzf); return NULL; }; |
bzf->strm.avail_in = 0; |
bzf->initialisedOk = True; |
return bzf; |
} |
/*---------------------------------------------------*/ |
void BZ_API(BZ2_bzWrite) |
( int* bzerror, |
BZFILE* b, |
void* buf, |
int len ) |
{ |
Int32 n, n2, ret; |
bzFile* bzf = (bzFile*)b; |
BZ_SETERR(BZ_OK); |
if (bzf == NULL || buf == NULL || len < 0) |
{ BZ_SETERR(BZ_PARAM_ERROR); return; }; |
if (!(bzf->writing)) |
{ BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; |
if (ferror(bzf->handle)) |
{ BZ_SETERR(BZ_IO_ERROR); return; }; |
if (len == 0) |
{ BZ_SETERR(BZ_OK); return; }; |
bzf->strm.avail_in = len; |
bzf->strm.next_in = buf; |
while (True) { |
bzf->strm.avail_out = BZ_MAX_UNUSED; |
bzf->strm.next_out = bzf->buf; |
ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN ); |
if (ret != BZ_RUN_OK) |
{ BZ_SETERR(ret); return; }; |
if (bzf->strm.avail_out < BZ_MAX_UNUSED) { |
n = BZ_MAX_UNUSED - bzf->strm.avail_out; |
n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), |
n, bzf->handle ); |
if (n != n2 || ferror(bzf->handle)) |
{ BZ_SETERR(BZ_IO_ERROR); return; }; |
} |
if (bzf->strm.avail_in == 0) |
{ BZ_SETERR(BZ_OK); return; }; |
} |
} |
/*---------------------------------------------------*/ |
void BZ_API(BZ2_bzWriteClose) |
( int* bzerror, |
BZFILE* b, |
int abandon, |
unsigned int* nbytes_in, |
unsigned int* nbytes_out ) |
{ |
BZ2_bzWriteClose64 ( bzerror, b, abandon, |
nbytes_in, NULL, nbytes_out, NULL ); |
} |
void BZ_API(BZ2_bzWriteClose64) |
( int* bzerror, |
BZFILE* b, |
int abandon, |
unsigned int* nbytes_in_lo32, |
unsigned int* nbytes_in_hi32, |
unsigned int* nbytes_out_lo32, |
unsigned int* nbytes_out_hi32 ) |
{ |
Int32 n, n2, ret; |
bzFile* bzf = (bzFile*)b; |
if (bzf == NULL) |
{ BZ_SETERR(BZ_OK); return; }; |
if (!(bzf->writing)) |
{ BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; |
if (ferror(bzf->handle)) |
{ BZ_SETERR(BZ_IO_ERROR); return; }; |
if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0; |
if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0; |
if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0; |
if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0; |
if ((!abandon) && bzf->lastErr == BZ_OK) { |
while (True) { |
bzf->strm.avail_out = BZ_MAX_UNUSED; |
bzf->strm.next_out = bzf->buf; |
ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH ); |
if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END) |
{ BZ_SETERR(ret); return; }; |
if (bzf->strm.avail_out < BZ_MAX_UNUSED) { |
n = BZ_MAX_UNUSED - bzf->strm.avail_out; |
n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), |
n, bzf->handle ); |
if (n != n2 || ferror(bzf->handle)) |
{ BZ_SETERR(BZ_IO_ERROR); return; }; |
} |
if (ret == BZ_STREAM_END) break; |
} |
} |
if ( !abandon && !ferror ( bzf->handle ) ) { |
fflush ( bzf->handle ); |
if (ferror(bzf->handle)) |
{ BZ_SETERR(BZ_IO_ERROR); return; }; |
} |
if (nbytes_in_lo32 != NULL) |
*nbytes_in_lo32 = bzf->strm.total_in_lo32; |
if (nbytes_in_hi32 != NULL) |
*nbytes_in_hi32 = bzf->strm.total_in_hi32; |
if (nbytes_out_lo32 != NULL) |
*nbytes_out_lo32 = bzf->strm.total_out_lo32; |
if (nbytes_out_hi32 != NULL) |
*nbytes_out_hi32 = bzf->strm.total_out_hi32; |
BZ_SETERR(BZ_OK); |
BZ2_bzCompressEnd ( &(bzf->strm) ); |
free ( bzf ); |
} |
/*---------------------------------------------------*/ |
BZFILE* BZ_API(BZ2_bzReadOpen) |
( int* bzerror, |
FILE* f, |
int verbosity, |
int small, |
void* unused, |
int nUnused ) |
{ |
bzFile* bzf = NULL; |
int ret; |
BZ_SETERR(BZ_OK); |
if (f == NULL || |
(small != 0 && small != 1) || |
(verbosity < 0 || verbosity > 4) || |
(unused == NULL && nUnused != 0) || |
(unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED))) |
{ BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; |
if (ferror(f)) |
{ BZ_SETERR(BZ_IO_ERROR); return NULL; }; |
bzf = malloc ( sizeof(bzFile) ); |
if (bzf == NULL) |
{ BZ_SETERR(BZ_MEM_ERROR); return NULL; }; |
BZ_SETERR(BZ_OK); |
bzf->initialisedOk = False; |
bzf->handle = f; |
bzf->bufN = 0; |
bzf->writing = False; |
bzf->strm.bzalloc = NULL; |
bzf->strm.bzfree = NULL; |
bzf->strm.opaque = NULL; |
while (nUnused > 0) { |
bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++; |
unused = ((void*)( 1 + ((UChar*)(unused)) )); |
nUnused--; |
} |
ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small ); |
if (ret != BZ_OK) |
{ BZ_SETERR(ret); free(bzf); return NULL; }; |
bzf->strm.avail_in = bzf->bufN; |
bzf->strm.next_in = bzf->buf; |
bzf->initialisedOk = True; |
return bzf; |
} |
/*---------------------------------------------------*/ |
void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b ) |
{ |
bzFile* bzf = (bzFile*)b; |
BZ_SETERR(BZ_OK); |
if (bzf == NULL) |
{ BZ_SETERR(BZ_OK); return; }; |
if (bzf->writing) |
{ BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; |
if (bzf->initialisedOk) |
(void)BZ2_bzDecompressEnd ( &(bzf->strm) ); |
free ( bzf ); |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzRead) |
( int* bzerror, |
BZFILE* b, |
void* buf, |
int len ) |
{ |
Int32 n, ret; |
bzFile* bzf = (bzFile*)b; |
BZ_SETERR(BZ_OK); |
if (bzf == NULL || buf == NULL || len < 0) |
{ BZ_SETERR(BZ_PARAM_ERROR); return 0; }; |
if (bzf->writing) |
{ BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; }; |
if (len == 0) |
{ BZ_SETERR(BZ_OK); return 0; }; |
bzf->strm.avail_out = len; |
bzf->strm.next_out = buf; |
while (True) { |
if (ferror(bzf->handle)) |
{ BZ_SETERR(BZ_IO_ERROR); return 0; }; |
if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) { |
n = fread ( bzf->buf, sizeof(UChar), |
BZ_MAX_UNUSED, bzf->handle ); |
if (ferror(bzf->handle)) |
{ BZ_SETERR(BZ_IO_ERROR); return 0; }; |
bzf->bufN = n; |
bzf->strm.avail_in = bzf->bufN; |
bzf->strm.next_in = bzf->buf; |
} |
ret = BZ2_bzDecompress ( &(bzf->strm) ); |
if (ret != BZ_OK && ret != BZ_STREAM_END) |
{ BZ_SETERR(ret); return 0; }; |
if (ret == BZ_OK && myfeof(bzf->handle) && |
bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0) |
{ BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; }; |
if (ret == BZ_STREAM_END) |
{ BZ_SETERR(BZ_STREAM_END); |
return len - bzf->strm.avail_out; }; |
if (bzf->strm.avail_out == 0) |
{ BZ_SETERR(BZ_OK); return len; }; |
} |
return 0; /*not reached*/ |
} |
/*---------------------------------------------------*/ |
void BZ_API(BZ2_bzReadGetUnused) |
( int* bzerror, |
BZFILE* b, |
void** unused, |
int* nUnused ) |
{ |
bzFile* bzf = (bzFile*)b; |
if (bzf == NULL) |
{ BZ_SETERR(BZ_PARAM_ERROR); return; }; |
if (bzf->lastErr != BZ_STREAM_END) |
{ BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; |
if (unused == NULL || nUnused == NULL) |
{ BZ_SETERR(BZ_PARAM_ERROR); return; }; |
BZ_SETERR(BZ_OK); |
*nUnused = bzf->strm.avail_in; |
*unused = bzf->strm.next_in; |
} |
#endif |
/*---------------------------------------------------*/ |
/*--- Misc convenience stuff ---*/ |
/*---------------------------------------------------*/ |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzBuffToBuffCompress) |
( char* dest, |
unsigned int* destLen, |
char* source, |
unsigned int sourceLen, |
int blockSize100k, |
int verbosity, |
int workFactor ) |
{ |
bz_stream strm; |
int ret; |
if (dest == NULL || destLen == NULL || |
source == NULL || |
blockSize100k < 1 || blockSize100k > 9 || |
verbosity < 0 || verbosity > 4 || |
workFactor < 0 || workFactor > 250) |
return BZ_PARAM_ERROR; |
if (workFactor == 0) workFactor = 30; |
strm.bzalloc = NULL; |
strm.bzfree = NULL; |
strm.opaque = NULL; |
ret = BZ2_bzCompressInit ( &strm, blockSize100k, |
verbosity, workFactor ); |
if (ret != BZ_OK) return ret; |
strm.next_in = source; |
strm.next_out = dest; |
strm.avail_in = sourceLen; |
strm.avail_out = *destLen; |
ret = BZ2_bzCompress ( &strm, BZ_FINISH ); |
if (ret == BZ_FINISH_OK) goto output_overflow; |
if (ret != BZ_STREAM_END) goto errhandler; |
/* normal termination */ |
*destLen -= strm.avail_out; |
BZ2_bzCompressEnd ( &strm ); |
return BZ_OK; |
output_overflow: |
BZ2_bzCompressEnd ( &strm ); |
return BZ_OUTBUFF_FULL; |
errhandler: |
BZ2_bzCompressEnd ( &strm ); |
return ret; |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzBuffToBuffDecompress) |
( char* dest, |
unsigned int* destLen, |
char* source, |
unsigned int sourceLen, |
int small, |
int verbosity ) |
{ |
bz_stream strm; |
int ret; |
if (dest == NULL || destLen == NULL || |
source == NULL || |
(small != 0 && small != 1) || |
verbosity < 0 || verbosity > 4) |
return BZ_PARAM_ERROR; |
strm.bzalloc = NULL; |
strm.bzfree = NULL; |
strm.opaque = NULL; |
ret = BZ2_bzDecompressInit ( &strm, verbosity, small ); |
if (ret != BZ_OK) return ret; |
strm.next_in = source; |
strm.next_out = dest; |
strm.avail_in = sourceLen; |
strm.avail_out = *destLen; |
ret = BZ2_bzDecompress ( &strm ); |
if (ret == BZ_OK) goto output_overflow_or_eof; |
if (ret != BZ_STREAM_END) goto errhandler; |
/* normal termination */ |
*destLen -= strm.avail_out; |
BZ2_bzDecompressEnd ( &strm ); |
return BZ_OK; |
output_overflow_or_eof: |
if (strm.avail_out > 0) { |
BZ2_bzDecompressEnd ( &strm ); |
return BZ_UNEXPECTED_EOF; |
} else { |
BZ2_bzDecompressEnd ( &strm ); |
return BZ_OUTBUFF_FULL; |
}; |
errhandler: |
BZ2_bzDecompressEnd ( &strm ); |
return ret; |
} |
/*---------------------------------------------------*/ |
/*-- |
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) |
to support better zlib compatibility. |
This code is not _officially_ part of libbzip2 (yet); |
I haven't tested it, documented it, or considered the |
threading-safeness of it. |
If this code breaks, please contact both Yoshioka and me. |
--*/ |
/*---------------------------------------------------*/ |
/*---------------------------------------------------*/ |
/*-- |
return version like "0.9.5d, 4-Sept-1999". |
--*/ |
const char * BZ_API(BZ2_bzlibVersion)(void) |
{ |
return BZ_VERSION; |
} |
#ifndef BZ_NO_STDIO |
/*---------------------------------------------------*/ |
#if defined(_WIN32) || defined(OS2) || defined(MSDOS) |
# include <fcntl.h> |
# include <io.h> |
# define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY) |
#else |
# define SET_BINARY_MODE(file) |
#endif |
static |
BZFILE * bzopen_or_bzdopen |
( const char *path, /* no use when bzdopen */ |
int fd, /* no use when bzdopen */ |
const char *mode, |
int open_mode) /* bzopen: 0, bzdopen:1 */ |
{ |
int bzerr; |
char unused[BZ_MAX_UNUSED]; |
int blockSize100k = 9; |
int writing = 0; |
char mode2[10] = ""; |
FILE *fp = NULL; |
BZFILE *bzfp = NULL; |
int verbosity = 0; |
int workFactor = 30; |
int smallMode = 0; |
int nUnused = 0; |
if (mode == NULL) return NULL; |
while (*mode) { |
switch (*mode) { |
case 'r': |
writing = 0; break; |
case 'w': |
writing = 1; break; |
case 's': |
smallMode = 1; break; |
default: |
if (isdigit((int)(*mode))) { |
blockSize100k = *mode-BZ_HDR_0; |
} |
} |
mode++; |
} |
strcat(mode2, writing ? "w" : "r" ); |
strcat(mode2,"b"); /* binary mode */ |
if (open_mode==0) { |
if (path==NULL || strcmp(path,"")==0) { |
fp = (writing ? stdout : stdin); |
SET_BINARY_MODE(fp); |
} else { |
fp = fopen(path,mode2); |
} |
} else { |
#ifdef BZ_STRICT_ANSI |
fp = NULL; |
#else |
fp = fdopen(fd,mode2); |
#endif |
} |
if (fp == NULL) return NULL; |
if (writing) { |
/* Guard against total chaos and anarchy -- JRS */ |
if (blockSize100k < 1) blockSize100k = 1; |
if (blockSize100k > 9) blockSize100k = 9; |
bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k, |
verbosity,workFactor); |
} else { |
bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode, |
unused,nUnused); |
} |
if (bzfp == NULL) { |
if (fp != stdin && fp != stdout) fclose(fp); |
return NULL; |
} |
return bzfp; |
} |
/*---------------------------------------------------*/ |
/*-- |
open file for read or write. |
ex) bzopen("file","w9") |
case path="" or NULL => use stdin or stdout. |
--*/ |
BZFILE * BZ_API(BZ2_bzopen) |
( const char *path, |
const char *mode ) |
{ |
return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0); |
} |
/*---------------------------------------------------*/ |
BZFILE * BZ_API(BZ2_bzdopen) |
( int fd, |
const char *mode ) |
{ |
return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1); |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len ) |
{ |
int bzerr, nread; |
if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0; |
nread = BZ2_bzRead(&bzerr,b,buf,len); |
if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) { |
return nread; |
} else { |
return -1; |
} |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len ) |
{ |
int bzerr; |
BZ2_bzWrite(&bzerr,b,buf,len); |
if(bzerr == BZ_OK){ |
return len; |
}else{ |
return -1; |
} |
} |
/*---------------------------------------------------*/ |
int BZ_API(BZ2_bzflush) (BZFILE *b) |
{ |
/* do nothing now... */ |
return 0; |
} |
/*---------------------------------------------------*/ |
void BZ_API(BZ2_bzclose) (BZFILE* b) |
{ |
int bzerr; |
FILE *fp; |
if (b==NULL) {return;} |
fp = ((bzFile *)b)->handle; |
if(((bzFile*)b)->writing){ |
BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL); |
if(bzerr != BZ_OK){ |
BZ2_bzWriteClose(NULL,b,1,NULL,NULL); |
} |
}else{ |
BZ2_bzReadClose(&bzerr,b); |
} |
if(fp!=stdin && fp!=stdout){ |
fclose(fp); |
} |
} |
/*---------------------------------------------------*/ |
/*-- |
return last error code |
--*/ |
static const char *bzerrorstrings[] = { |
"OK" |
,"SEQUENCE_ERROR" |
,"PARAM_ERROR" |
,"MEM_ERROR" |
,"DATA_ERROR" |
,"DATA_ERROR_MAGIC" |
,"IO_ERROR" |
,"UNEXPECTED_EOF" |
,"OUTBUFF_FULL" |
,"CONFIG_ERROR" |
,"???" /* for future */ |
,"???" /* for future */ |
,"???" /* for future */ |
,"???" /* for future */ |
,"???" /* for future */ |
,"???" /* for future */ |
}; |
const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum) |
{ |
int err = ((bzFile *)b)->lastErr; |
if(err>0) err = 0; |
*errnum = err; |
return bzerrorstrings[err*-1]; |
} |
#endif |
/*-------------------------------------------------------------*/ |
/*--- end bzlib.c ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/decompress.c |
---|
0,0 → 1,626 |
/*-------------------------------------------------------------*/ |
/*--- Decompression machinery ---*/ |
/*--- decompress.c ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
#include "bzlib_private.h" |
/*---------------------------------------------------*/ |
static |
void makeMaps_d ( DState* s ) |
{ |
Int32 i; |
s->nInUse = 0; |
for (i = 0; i < 256; i++) |
if (s->inUse[i]) { |
s->seqToUnseq[s->nInUse] = i; |
s->nInUse++; |
} |
} |
/*---------------------------------------------------*/ |
#define RETURN(rrr) \ |
{ retVal = rrr; goto save_state_and_return; }; |
#define GET_BITS(lll,vvv,nnn) \ |
case lll: s->state = lll; \ |
while (True) { \ |
if (s->bsLive >= nnn) { \ |
UInt32 v; \ |
v = (s->bsBuff >> \ |
(s->bsLive-nnn)) & ((1 << nnn)-1); \ |
s->bsLive -= nnn; \ |
vvv = v; \ |
break; \ |
} \ |
if (s->strm->avail_in == 0) RETURN(BZ_OK); \ |
s->bsBuff \ |
= (s->bsBuff << 8) | \ |
((UInt32) \ |
(*((UChar*)(s->strm->next_in)))); \ |
s->bsLive += 8; \ |
s->strm->next_in++; \ |
s->strm->avail_in--; \ |
s->strm->total_in_lo32++; \ |
if (s->strm->total_in_lo32 == 0) \ |
s->strm->total_in_hi32++; \ |
} |
#define GET_UCHAR(lll,uuu) \ |
GET_BITS(lll,uuu,8) |
#define GET_BIT(lll,uuu) \ |
GET_BITS(lll,uuu,1) |
/*---------------------------------------------------*/ |
#define GET_MTF_VAL(label1,label2,lval) \ |
{ \ |
if (groupPos == 0) { \ |
groupNo++; \ |
if (groupNo >= nSelectors) \ |
RETURN(BZ_DATA_ERROR); \ |
groupPos = BZ_G_SIZE; \ |
gSel = s->selector[groupNo]; \ |
gMinlen = s->minLens[gSel]; \ |
gLimit = &(s->limit[gSel][0]); \ |
gPerm = &(s->perm[gSel][0]); \ |
gBase = &(s->base[gSel][0]); \ |
} \ |
groupPos--; \ |
zn = gMinlen; \ |
GET_BITS(label1, zvec, zn); \ |
while (1) { \ |
if (zn > 20 /* the longest code */) \ |
RETURN(BZ_DATA_ERROR); \ |
if (zvec <= gLimit[zn]) break; \ |
zn++; \ |
GET_BIT(label2, zj); \ |
zvec = (zvec << 1) | zj; \ |
}; \ |
if (zvec - gBase[zn] < 0 \ |
|| zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \ |
RETURN(BZ_DATA_ERROR); \ |
lval = gPerm[zvec - gBase[zn]]; \ |
} |
/*---------------------------------------------------*/ |
Int32 BZ2_decompress ( DState* s ) |
{ |
UChar uc; |
Int32 retVal; |
Int32 minLen, maxLen; |
bz_stream* strm = s->strm; |
/* stuff that needs to be saved/restored */ |
Int32 i; |
Int32 j; |
Int32 t; |
Int32 alphaSize; |
Int32 nGroups; |
Int32 nSelectors; |
Int32 EOB; |
Int32 groupNo; |
Int32 groupPos; |
Int32 nextSym; |
Int32 nblockMAX; |
Int32 nblock; |
Int32 es; |
Int32 N; |
Int32 curr; |
Int32 zt; |
Int32 zn; |
Int32 zvec; |
Int32 zj; |
Int32 gSel; |
Int32 gMinlen; |
Int32* gLimit; |
Int32* gBase; |
Int32* gPerm; |
if (s->state == BZ_X_MAGIC_1) { |
/*initialise the save area*/ |
s->save_i = 0; |
s->save_j = 0; |
s->save_t = 0; |
s->save_alphaSize = 0; |
s->save_nGroups = 0; |
s->save_nSelectors = 0; |
s->save_EOB = 0; |
s->save_groupNo = 0; |
s->save_groupPos = 0; |
s->save_nextSym = 0; |
s->save_nblockMAX = 0; |
s->save_nblock = 0; |
s->save_es = 0; |
s->save_N = 0; |
s->save_curr = 0; |
s->save_zt = 0; |
s->save_zn = 0; |
s->save_zvec = 0; |
s->save_zj = 0; |
s->save_gSel = 0; |
s->save_gMinlen = 0; |
s->save_gLimit = NULL; |
s->save_gBase = NULL; |
s->save_gPerm = NULL; |
} |
/*restore from the save area*/ |
i = s->save_i; |
j = s->save_j; |
t = s->save_t; |
alphaSize = s->save_alphaSize; |
nGroups = s->save_nGroups; |
nSelectors = s->save_nSelectors; |
EOB = s->save_EOB; |
groupNo = s->save_groupNo; |
groupPos = s->save_groupPos; |
nextSym = s->save_nextSym; |
nblockMAX = s->save_nblockMAX; |
nblock = s->save_nblock; |
es = s->save_es; |
N = s->save_N; |
curr = s->save_curr; |
zt = s->save_zt; |
zn = s->save_zn; |
zvec = s->save_zvec; |
zj = s->save_zj; |
gSel = s->save_gSel; |
gMinlen = s->save_gMinlen; |
gLimit = s->save_gLimit; |
gBase = s->save_gBase; |
gPerm = s->save_gPerm; |
retVal = BZ_OK; |
switch (s->state) { |
GET_UCHAR(BZ_X_MAGIC_1, uc); |
if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC); |
GET_UCHAR(BZ_X_MAGIC_2, uc); |
if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC); |
GET_UCHAR(BZ_X_MAGIC_3, uc) |
if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC); |
GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8) |
if (s->blockSize100k < (BZ_HDR_0 + 1) || |
s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC); |
s->blockSize100k -= BZ_HDR_0; |
if (s->smallDecompress) { |
s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); |
s->ll4 = BZALLOC( |
((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) |
); |
if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR); |
} else { |
s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) ); |
if (s->tt == NULL) RETURN(BZ_MEM_ERROR); |
} |
GET_UCHAR(BZ_X_BLKHDR_1, uc); |
if (uc == 0x17) goto endhdr_2; |
if (uc != 0x31) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_BLKHDR_2, uc); |
if (uc != 0x41) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_BLKHDR_3, uc); |
if (uc != 0x59) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_BLKHDR_4, uc); |
if (uc != 0x26) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_BLKHDR_5, uc); |
if (uc != 0x53) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_BLKHDR_6, uc); |
if (uc != 0x59) RETURN(BZ_DATA_ERROR); |
s->currBlockNo++; |
if (s->verbosity >= 2) |
VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo ); |
s->storedBlockCRC = 0; |
GET_UCHAR(BZ_X_BCRC_1, uc); |
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); |
GET_UCHAR(BZ_X_BCRC_2, uc); |
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); |
GET_UCHAR(BZ_X_BCRC_3, uc); |
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); |
GET_UCHAR(BZ_X_BCRC_4, uc); |
s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); |
GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1); |
s->origPtr = 0; |
GET_UCHAR(BZ_X_ORIGPTR_1, uc); |
s->origPtr = (s->origPtr << 8) | ((Int32)uc); |
GET_UCHAR(BZ_X_ORIGPTR_2, uc); |
s->origPtr = (s->origPtr << 8) | ((Int32)uc); |
GET_UCHAR(BZ_X_ORIGPTR_3, uc); |
s->origPtr = (s->origPtr << 8) | ((Int32)uc); |
if (s->origPtr < 0) |
RETURN(BZ_DATA_ERROR); |
if (s->origPtr > 10 + 100000*s->blockSize100k) |
RETURN(BZ_DATA_ERROR); |
/*--- Receive the mapping table ---*/ |
for (i = 0; i < 16; i++) { |
GET_BIT(BZ_X_MAPPING_1, uc); |
if (uc == 1) |
s->inUse16[i] = True; else |
s->inUse16[i] = False; |
} |
for (i = 0; i < 256; i++) s->inUse[i] = False; |
for (i = 0; i < 16; i++) |
if (s->inUse16[i]) |
for (j = 0; j < 16; j++) { |
GET_BIT(BZ_X_MAPPING_2, uc); |
if (uc == 1) s->inUse[i * 16 + j] = True; |
} |
makeMaps_d ( s ); |
if (s->nInUse == 0) RETURN(BZ_DATA_ERROR); |
alphaSize = s->nInUse+2; |
/*--- Now the selectors ---*/ |
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3); |
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); |
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); |
if (nSelectors < 1) RETURN(BZ_DATA_ERROR); |
for (i = 0; i < nSelectors; i++) { |
j = 0; |
while (True) { |
GET_BIT(BZ_X_SELECTOR_3, uc); |
if (uc == 0) break; |
j++; |
if (j >= nGroups) RETURN(BZ_DATA_ERROR); |
} |
s->selectorMtf[i] = j; |
} |
/*--- Undo the MTF values for the selectors. ---*/ |
{ |
UChar pos[BZ_N_GROUPS], tmp, v; |
for (v = 0; v < nGroups; v++) pos[v] = v; |
for (i = 0; i < nSelectors; i++) { |
v = s->selectorMtf[i]; |
tmp = pos[v]; |
while (v > 0) { pos[v] = pos[v-1]; v--; } |
pos[0] = tmp; |
s->selector[i] = tmp; |
} |
} |
/*--- Now the coding tables ---*/ |
for (t = 0; t < nGroups; t++) { |
GET_BITS(BZ_X_CODING_1, curr, 5); |
for (i = 0; i < alphaSize; i++) { |
while (True) { |
if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR); |
GET_BIT(BZ_X_CODING_2, uc); |
if (uc == 0) break; |
GET_BIT(BZ_X_CODING_3, uc); |
if (uc == 0) curr++; else curr--; |
} |
s->len[t][i] = curr; |
} |
} |
/*--- Create the Huffman decoding tables ---*/ |
for (t = 0; t < nGroups; t++) { |
minLen = 32; |
maxLen = 0; |
for (i = 0; i < alphaSize; i++) { |
if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; |
if (s->len[t][i] < minLen) minLen = s->len[t][i]; |
} |
BZ2_hbCreateDecodeTables ( |
&(s->limit[t][0]), |
&(s->base[t][0]), |
&(s->perm[t][0]), |
&(s->len[t][0]), |
minLen, maxLen, alphaSize |
); |
s->minLens[t] = minLen; |
} |
/*--- Now the MTF values ---*/ |
EOB = s->nInUse+1; |
nblockMAX = 100000 * s->blockSize100k; |
groupNo = -1; |
groupPos = 0; |
for (i = 0; i <= 255; i++) s->unzftab[i] = 0; |
/*-- MTF init --*/ |
{ |
Int32 ii, jj, kk; |
kk = MTFA_SIZE-1; |
for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) { |
for (jj = MTFL_SIZE-1; jj >= 0; jj--) { |
s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj); |
kk--; |
} |
s->mtfbase[ii] = kk + 1; |
} |
} |
/*-- end MTF init --*/ |
nblock = 0; |
GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym); |
while (True) { |
if (nextSym == EOB) break; |
if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) { |
es = -1; |
N = 1; |
do { |
if (nextSym == BZ_RUNA) es = es + (0+1) * N; else |
if (nextSym == BZ_RUNB) es = es + (1+1) * N; |
N = N * 2; |
GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym); |
} |
while (nextSym == BZ_RUNA || nextSym == BZ_RUNB); |
es++; |
uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ]; |
s->unzftab[uc] += es; |
if (s->smallDecompress) |
while (es > 0) { |
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); |
s->ll16[nblock] = (UInt16)uc; |
nblock++; |
es--; |
} |
else |
while (es > 0) { |
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); |
s->tt[nblock] = (UInt32)uc; |
nblock++; |
es--; |
}; |
continue; |
} else { |
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); |
/*-- uc = MTF ( nextSym-1 ) --*/ |
{ |
Int32 ii, jj, kk, pp, lno, off; |
UInt32 nn; |
nn = (UInt32)(nextSym - 1); |
if (nn < MTFL_SIZE) { |
/* avoid general-case expense */ |
pp = s->mtfbase[0]; |
uc = s->mtfa[pp+nn]; |
while (nn > 3) { |
Int32 z = pp+nn; |
s->mtfa[(z) ] = s->mtfa[(z)-1]; |
s->mtfa[(z)-1] = s->mtfa[(z)-2]; |
s->mtfa[(z)-2] = s->mtfa[(z)-3]; |
s->mtfa[(z)-3] = s->mtfa[(z)-4]; |
nn -= 4; |
} |
while (nn > 0) { |
s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; |
}; |
s->mtfa[pp] = uc; |
} else { |
/* general case */ |
lno = nn / MTFL_SIZE; |
off = nn % MTFL_SIZE; |
pp = s->mtfbase[lno] + off; |
uc = s->mtfa[pp]; |
while (pp > s->mtfbase[lno]) { |
s->mtfa[pp] = s->mtfa[pp-1]; pp--; |
}; |
s->mtfbase[lno]++; |
while (lno > 0) { |
s->mtfbase[lno]--; |
s->mtfa[s->mtfbase[lno]] |
= s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1]; |
lno--; |
} |
s->mtfbase[0]--; |
s->mtfa[s->mtfbase[0]] = uc; |
if (s->mtfbase[0] == 0) { |
kk = MTFA_SIZE-1; |
for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) { |
for (jj = MTFL_SIZE-1; jj >= 0; jj--) { |
s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj]; |
kk--; |
} |
s->mtfbase[ii] = kk + 1; |
} |
} |
} |
} |
/*-- end uc = MTF ( nextSym-1 ) --*/ |
s->unzftab[s->seqToUnseq[uc]]++; |
if (s->smallDecompress) |
s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else |
s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]); |
nblock++; |
GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym); |
continue; |
} |
} |
/* Now we know what nblock is, we can do a better sanity |
check on s->origPtr. |
*/ |
if (s->origPtr < 0 || s->origPtr >= nblock) |
RETURN(BZ_DATA_ERROR); |
/*-- Set up cftab to facilitate generation of T^(-1) --*/ |
s->cftab[0] = 0; |
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1]; |
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1]; |
for (i = 0; i <= 256; i++) { |
if (s->cftab[i] < 0 || s->cftab[i] > nblock) { |
/* s->cftab[i] can legitimately be == nblock */ |
RETURN(BZ_DATA_ERROR); |
} |
} |
s->state_out_len = 0; |
s->state_out_ch = 0; |
BZ_INITIALISE_CRC ( s->calculatedBlockCRC ); |
s->state = BZ_X_OUTPUT; |
if (s->verbosity >= 2) VPrintf0 ( "rt+rld" ); |
if (s->smallDecompress) { |
/*-- Make a copy of cftab, used in generation of T --*/ |
for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i]; |
/*-- compute the T vector --*/ |
for (i = 0; i < nblock; i++) { |
uc = (UChar)(s->ll16[i]); |
SET_LL(i, s->cftabCopy[uc]); |
s->cftabCopy[uc]++; |
} |
/*-- Compute T^(-1) by pointer reversal on T --*/ |
i = s->origPtr; |
j = GET_LL(i); |
do { |
Int32 tmp = GET_LL(j); |
SET_LL(j, i); |
i = j; |
j = tmp; |
} |
while (i != s->origPtr); |
s->tPos = s->origPtr; |
s->nblock_used = 0; |
if (s->blockRandomised) { |
BZ_RAND_INIT_MASK; |
BZ_GET_SMALL(s->k0); s->nblock_used++; |
BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; |
} else { |
BZ_GET_SMALL(s->k0); s->nblock_used++; |
} |
} else { |
/*-- compute the T^(-1) vector --*/ |
for (i = 0; i < nblock; i++) { |
uc = (UChar)(s->tt[i] & 0xff); |
s->tt[s->cftab[uc]] |= (i << 8); |
s->cftab[uc]++; |
} |
s->tPos = s->tt[s->origPtr] >> 8; |
s->nblock_used = 0; |
if (s->blockRandomised) { |
BZ_RAND_INIT_MASK; |
BZ_GET_FAST(s->k0); s->nblock_used++; |
BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; |
} else { |
BZ_GET_FAST(s->k0); s->nblock_used++; |
} |
} |
RETURN(BZ_OK); |
endhdr_2: |
GET_UCHAR(BZ_X_ENDHDR_2, uc); |
if (uc != 0x72) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_ENDHDR_3, uc); |
if (uc != 0x45) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_ENDHDR_4, uc); |
if (uc != 0x38) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_ENDHDR_5, uc); |
if (uc != 0x50) RETURN(BZ_DATA_ERROR); |
GET_UCHAR(BZ_X_ENDHDR_6, uc); |
if (uc != 0x90) RETURN(BZ_DATA_ERROR); |
s->storedCombinedCRC = 0; |
GET_UCHAR(BZ_X_CCRC_1, uc); |
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); |
GET_UCHAR(BZ_X_CCRC_2, uc); |
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); |
GET_UCHAR(BZ_X_CCRC_3, uc); |
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); |
GET_UCHAR(BZ_X_CCRC_4, uc); |
s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); |
s->state = BZ_X_IDLE; |
RETURN(BZ_STREAM_END); |
default: AssertH ( False, 4001 ); |
} |
AssertH ( False, 4002 ); |
save_state_and_return: |
s->save_i = i; |
s->save_j = j; |
s->save_t = t; |
s->save_alphaSize = alphaSize; |
s->save_nGroups = nGroups; |
s->save_nSelectors = nSelectors; |
s->save_EOB = EOB; |
s->save_groupNo = groupNo; |
s->save_groupPos = groupPos; |
s->save_nextSym = nextSym; |
s->save_nblockMAX = nblockMAX; |
s->save_nblock = nblock; |
s->save_es = es; |
s->save_N = N; |
s->save_curr = curr; |
s->save_zt = zt; |
s->save_zn = zn; |
s->save_zvec = zvec; |
s->save_zj = zj; |
s->save_gSel = gSel; |
s->save_gMinlen = gMinlen; |
s->save_gLimit = gLimit; |
s->save_gBase = gBase; |
s->save_gPerm = gPerm; |
return retVal; |
} |
/*-------------------------------------------------------------*/ |
/*--- end decompress.c ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/bzlib.h |
---|
0,0 → 1,282 |
/*-------------------------------------------------------------*/ |
/*--- Public header file for the library. ---*/ |
/*--- bzlib.h ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
#ifndef _BZLIB_H |
#define _BZLIB_H |
#ifdef __cplusplus |
extern "C" { |
#endif |
#define BZ_RUN 0 |
#define BZ_FLUSH 1 |
#define BZ_FINISH 2 |
#define BZ_OK 0 |
#define BZ_RUN_OK 1 |
#define BZ_FLUSH_OK 2 |
#define BZ_FINISH_OK 3 |
#define BZ_STREAM_END 4 |
#define BZ_SEQUENCE_ERROR (-1) |
#define BZ_PARAM_ERROR (-2) |
#define BZ_MEM_ERROR (-3) |
#define BZ_DATA_ERROR (-4) |
#define BZ_DATA_ERROR_MAGIC (-5) |
#define BZ_IO_ERROR (-6) |
#define BZ_UNEXPECTED_EOF (-7) |
#define BZ_OUTBUFF_FULL (-8) |
#define BZ_CONFIG_ERROR (-9) |
typedef |
struct { |
char *next_in; |
unsigned int avail_in; |
unsigned int total_in_lo32; |
unsigned int total_in_hi32; |
char *next_out; |
unsigned int avail_out; |
unsigned int total_out_lo32; |
unsigned int total_out_hi32; |
void *state; |
void *(*bzalloc)(void *,int,int); |
void (*bzfree)(void *,void *); |
void *opaque; |
} |
bz_stream; |
#ifndef BZ_IMPORT |
#define BZ_EXPORT |
#endif |
#ifndef BZ_NO_STDIO |
/* Need a definitition for FILE */ |
#include <stdio.h> |
#endif |
#ifdef _WIN32 |
# include <windows.h> |
# ifdef small |
/* windows.h define small to char */ |
# undef small |
# endif |
# ifdef BZ_EXPORT |
# define BZ_API(func) WINAPI func |
# define BZ_EXTERN extern |
# else |
/* import windows dll dynamically */ |
# define BZ_API(func) (WINAPI * func) |
# define BZ_EXTERN |
# endif |
#else |
# define BZ_API(func) func |
# define BZ_EXTERN extern |
#endif |
/*-- Core (low-level) library functions --*/ |
BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( |
bz_stream* strm, |
int blockSize100k, |
int verbosity, |
int workFactor |
); |
BZ_EXTERN int BZ_API(BZ2_bzCompress) ( |
bz_stream* strm, |
int action |
); |
BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( |
bz_stream* strm |
); |
BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( |
bz_stream *strm, |
int verbosity, |
int small |
); |
BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( |
bz_stream* strm |
); |
BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( |
bz_stream *strm |
); |
/*-- High(er) level library functions --*/ |
#ifndef BZ_NO_STDIO |
#define BZ_MAX_UNUSED 5000 |
typedef void BZFILE; |
BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( |
int* bzerror, |
FILE* f, |
int verbosity, |
int small, |
void* unused, |
int nUnused |
); |
BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( |
int* bzerror, |
BZFILE* b |
); |
BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( |
int* bzerror, |
BZFILE* b, |
void** unused, |
int* nUnused |
); |
BZ_EXTERN int BZ_API(BZ2_bzRead) ( |
int* bzerror, |
BZFILE* b, |
void* buf, |
int len |
); |
BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( |
int* bzerror, |
FILE* f, |
int blockSize100k, |
int verbosity, |
int workFactor |
); |
BZ_EXTERN void BZ_API(BZ2_bzWrite) ( |
int* bzerror, |
BZFILE* b, |
void* buf, |
int len |
); |
BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( |
int* bzerror, |
BZFILE* b, |
int abandon, |
unsigned int* nbytes_in, |
unsigned int* nbytes_out |
); |
BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( |
int* bzerror, |
BZFILE* b, |
int abandon, |
unsigned int* nbytes_in_lo32, |
unsigned int* nbytes_in_hi32, |
unsigned int* nbytes_out_lo32, |
unsigned int* nbytes_out_hi32 |
); |
#endif |
/*-- Utility functions --*/ |
BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( |
char* dest, |
unsigned int* destLen, |
char* source, |
unsigned int sourceLen, |
int blockSize100k, |
int verbosity, |
int workFactor |
); |
BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( |
char* dest, |
unsigned int* destLen, |
char* source, |
unsigned int sourceLen, |
int small, |
int verbosity |
); |
/*-- |
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp) |
to support better zlib compatibility. |
This code is not _officially_ part of libbzip2 (yet); |
I haven't tested it, documented it, or considered the |
threading-safeness of it. |
If this code breaks, please contact both Yoshioka and me. |
--*/ |
BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( |
void |
); |
#ifndef BZ_NO_STDIO |
BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( |
const char *path, |
const char *mode |
); |
BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( |
int fd, |
const char *mode |
); |
BZ_EXTERN int BZ_API(BZ2_bzread) ( |
BZFILE* b, |
void* buf, |
int len |
); |
BZ_EXTERN int BZ_API(BZ2_bzwrite) ( |
BZFILE* b, |
void* buf, |
int len |
); |
BZ_EXTERN int BZ_API(BZ2_bzflush) ( |
BZFILE* b |
); |
BZ_EXTERN void BZ_API(BZ2_bzclose) ( |
BZFILE* b |
); |
BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( |
BZFILE *b, |
int *errnum |
); |
#endif |
#ifdef __cplusplus |
} |
#endif |
#endif |
/*-------------------------------------------------------------*/ |
/*--- end bzlib.h ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.dsw |
---|
0,0 → 1,41 |
Microsoft Developer Studio Workspace File, Format Version 6.00 |
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! |
############################################################################### |
Project: "bsdiff"=.\bsdiff.dsp - Package Owner=<4> |
Package=<5> |
{{{ |
}}} |
Package=<4> |
{{{ |
}}} |
############################################################################### |
Project: "bspatch"=.\bspatch.dsp - Package Owner=<4> |
Package=<5> |
{{{ |
}}} |
Package=<4> |
{{{ |
}}} |
############################################################################### |
Global: |
Package=<5> |
{{{ |
}}} |
Package=<3> |
{{{ |
}}} |
############################################################################### |
/nw_plus/utils/source/bsdiff-4.3/win32/Binary diff.txt |
---|
0,0 → 1,42 |
Binary diff/patch utility version 4.3, written by |
Copyright 2003-2005 Colin Percival <cperciva@freebsd.org> |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
This is a quick native Win32-Port by |
Andreas John <dynacore@tesla.inka.de> |
------------------------------------------------------------------------- |
Quick overview from the homepage of these tools: |
http://www.daemonology.net/bsdiff/ |
Binary diff/patch utility |
bsdiff and bspatch are tools for building and applying patches to binary |
files. By using suffix sorting (specifically, Larsson and Sadakane's |
qsufsort) and taking advantage of how executable files change, bsdiff |
routinely produces binary patches 50-80% smaller than those produced by |
Xdelta, and 15% smaller than those produced by .RTPatch (a $2750/seat |
commercial patch tool). |
These programs were originally named bdiff and bpatch, but the large |
number of other programs using those names lead to confusion; I'm not |
sure if the "bs" in refers to "binary software" (because bsdiff produces |
exceptionally small patches for executable files) or "bytewise |
subtraction" (which is the key to how well it performs). Feel free to |
offer other suggestions. |
bsdiff and bspatch use bzip2; by default they assume it is in /usr/bin. |
bsdiff is quite memory-hungry. It requires max(17*n,9*n+m)+O(1) bytes of |
memory, where n is the size of the old file and m is the size of the new |
file. bspatch requires n+m+O(1) bytes. |
bsdiff runs in O((n+m) log n) time; on a 200MHz Pentium Pro, building a |
binary patch for a 4MB file takes about 90 seconds. bspatch runs in |
O(n+m) time; on the same machine, applying that patch takes about two |
seconds. |
Providing that off_t is defined properly, bsdiff and bspatch support |
files of up to 2^61-1 = 2Ei-1 bytes. |
------------------------------------------------------------------------- |
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.1 |
---|
0,0 → 1,63 |
.\"- |
.\" Copyright 2003-2005 Colin Percival |
.\" All rights reserved |
.\" |
.\" Redistribution and use in source and binary forms, with or without |
.\" modification, are permitted providing that the following conditions |
.\" are met: |
.\" 1. Redistributions of source code must retain the above copyright |
.\" notice, this list of conditions and the following disclaimer. |
.\" 2. Redistributions in binary form must reproduce the above copyright |
.\" notice, this list of conditions and the following disclaimer in the |
.\" documentation and/or other materials provided with the distribution. |
.\" |
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
.\" POSSIBILITY OF SUCH DAMAGE. |
.\" |
.\" $FreeBSD: src/usr.bin/bsdiff/bsdiff/bsdiff.1,v 1.1 2005/08/06 01:59:05 cperciva Exp $ |
.\" |
.Dd May 18, 2003 |
.Dt BSDIFF 1 |
.Os FreeBSD |
.Sh NAME |
.Nm bsdiff |
.Nd generate a patch between two binary files |
.Sh SYNOPSIS |
.Nm |
.Ao Ar oldfile Ac Ao Ar newfile Ac Ao Ar patchfile Ac |
.Sh DESCRIPTION |
.Nm |
compares |
.Ao Ar oldfile Ac |
to |
.Ao Ar newfile Ac |
and writes to |
.Ao Ar patchfile Ac |
a binary patch suitable for use by bspatch(1). |
When |
.Ao Ar oldfile Ac |
and |
.Ao Ar newfile Ac |
are two versions of an executable program, the |
patches produced are on average a factor of five smaller |
than those produced by any other binary patch tool known |
to the author. |
.Pp |
.Nm |
uses memory equal to 17 times the size of |
.Ao Ar oldfile Ac , |
and requires |
an absolute minimum working set size of 8 times the size of oldfile. |
.Sh SEE ALSO |
.Xr bspatch 1 |
.Sh AUTHORS |
.An Colin Percival Aq cperciva@freebsd.org |
/nw_plus/utils/source/bsdiff-4.3/win32/crctable.c |
---|
0,0 → 1,104 |
/*-------------------------------------------------------------*/ |
/*--- Table for doing CRCs ---*/ |
/*--- crctable.c ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
#include "bzlib_private.h" |
/*-- |
I think this is an implementation of the AUTODIN-II, |
Ethernet & FDDI 32-bit CRC standard. Vaguely derived |
from code by Rob Warnock, in Section 51 of the |
comp.compression FAQ. |
--*/ |
UInt32 BZ2_crc32Table[256] = { |
/*-- Ugly, innit? --*/ |
0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L, |
0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L, |
0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L, |
0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL, |
0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L, |
0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L, |
0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L, |
0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL, |
0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L, |
0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L, |
0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L, |
0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL, |
0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L, |
0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L, |
0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L, |
0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL, |
0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL, |
0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L, |
0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L, |
0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL, |
0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL, |
0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L, |
0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L, |
0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL, |
0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL, |
0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L, |
0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L, |
0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL, |
0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL, |
0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L, |
0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L, |
0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL, |
0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L, |
0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL, |
0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL, |
0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L, |
0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L, |
0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL, |
0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL, |
0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L, |
0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L, |
0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL, |
0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL, |
0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L, |
0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L, |
0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL, |
0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL, |
0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L, |
0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L, |
0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL, |
0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L, |
0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L, |
0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L, |
0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL, |
0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L, |
0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L, |
0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L, |
0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL, |
0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L, |
0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L, |
0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L, |
0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL, |
0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L, |
0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L |
}; |
/*-------------------------------------------------------------*/ |
/*--- end crctable.c ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/bspatch.cpp |
---|
0,0 → 1,253 |
/*- |
* Copyright 2003-2005 Colin Percival |
* All rights reserved |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted providing that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
* POSSIBILITY OF SUCH DAMAGE. |
*/ |
#include <stdlib.h> |
#include <stdio.h> |
//#include <err.h> |
#include "bzlib.h" |
#include <io.h> |
#include <fcntl.h> |
#include <sys/types.h> |
typedef unsigned char u_char; |
typedef signed int ssize_t; |
template<class T1, class T2> |
void err(int i, const char* str, T1 arg1, T2 arg2) { |
char lastErrorTxt[1024]; |
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,lastErrorTxt,1024,NULL); |
printf("%s",lastErrorTxt); |
printf(str, arg1, arg2); |
exit(i); |
} |
template<class T> |
void err(int i, const char* str, T arg) { |
char lastErrorTxt[1024]; |
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,lastErrorTxt,1024,NULL); |
printf("%s",lastErrorTxt); |
printf(str, arg); |
exit(i); |
} |
void err(int i, const char* str) { |
char lastErrorTxt[1024]; |
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,lastErrorTxt,1024,NULL); |
printf("%s",lastErrorTxt); |
if (str!=NULL) { |
printf("%s",str); |
} |
exit(i); |
} |
template<class T> |
void errx(int i, const char* str, T arg) { |
printf(str, arg); |
exit(i); |
} |
void errx(int i, const char* str) { |
printf("%s",str); |
exit(i); |
} |
static off_t offtin(u_char *buf) |
{ |
off_t y; |
y=buf[7]&0x7F; |
y=y*256;y+=buf[6]; |
y=y*256;y+=buf[5]; |
y=y*256;y+=buf[4]; |
y=y*256;y+=buf[3]; |
y=y*256;y+=buf[2]; |
y=y*256;y+=buf[1]; |
y=y*256;y+=buf[0]; |
if(buf[7]&0x80) y=-y; |
return y; |
} |
int main(int argc,char * argv[]) |
{ |
FILE * f, * cpf, * dpf, * epf; |
BZFILE * cpfbz2, * dpfbz2, * epfbz2; |
int cbz2err, dbz2err, ebz2err; |
int fd; |
ssize_t oldsize,newsize; |
ssize_t bzctrllen,bzdatalen; |
u_char header[32],buf[8]; |
u_char *old, *_new; |
off_t oldpos,newpos; |
off_t ctrl[3]; |
off_t lenread; |
off_t i; |
if(argc!=4) errx(1,"usage: %s oldfile newfile patchfile\n",argv[0]); |
/* Open patch file */ |
if ((f = fopen(argv[3], "rb")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
/* |
File format: |
0 8 "BSDIFF40" |
8 8 X |
16 8 Y |
24 8 sizeof(newfile) |
32 X bzip2(control block) |
32+X Y bzip2(diff block) |
32+X+Y ??? bzip2(extra block) |
with control block a set of triples (x,y,z) meaning "add x bytes |
from oldfile to x bytes from the diff block; copy y bytes from the |
extra block; seek forwards in oldfile by z bytes". |
*/ |
/* Read header */ |
if (fread(header, 1, 32, f) < 32) { |
if (feof(f)) |
errx(1, "Corrupt patch\n"); |
err(1, "fread(%s)", argv[3]); |
} |
/* Check for appropriate magic */ |
if (memcmp(header, "BSDIFF40", 8) != 0) |
errx(1, "Corrupt patch\n"); |
/* Read lengths from header */ |
bzctrllen=offtin(header+8); |
bzdatalen=offtin(header+16); |
newsize=offtin(header+24); |
if((bzctrllen<0) || (bzdatalen<0) || (newsize<0)) |
errx(1,"Corrupt patch\n"); |
/* Close patch file and re-open it via libbzip2 at the right places */ |
if (fclose(f)) |
err(1, "fclose(%s)", argv[3]); |
if ((cpf = fopen(argv[3], "rb")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
if (fseek(cpf, 32, SEEK_SET)) |
err(1, "fseeko(%s, %d)", argv[3], 32); |
if ((cpfbz2 = BZ2_bzReadOpen(&cbz2err, cpf, 0, 0, NULL, 0)) == NULL) |
errx(1, "BZ2_bzReadOpen, bz2err = %d", cbz2err); |
if ((dpf = fopen(argv[3], "rb")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
if (fseek(dpf, 32 + bzctrllen, SEEK_SET)) |
err(1, "fseeko(%s, %d)", argv[3], |
(32 + bzctrllen)); |
if ((dpfbz2 = BZ2_bzReadOpen(&dbz2err, dpf, 0, 0, NULL, 0)) == NULL) |
errx(1, "BZ2_bzReadOpen, bz2err = %d", dbz2err); |
if ((epf = fopen(argv[3], "rb")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
if (fseek(epf, 32 + bzctrllen + bzdatalen, SEEK_SET)) |
err(1, "fseeko(%s, %d)", argv[3], |
(32 + bzctrllen + bzdatalen)); |
if ((epfbz2 = BZ2_bzReadOpen(&ebz2err, epf, 0, 0, NULL, 0)) == NULL) |
errx(1, "BZ2_bzReadOpen, bz2err = %d", ebz2err); |
//org: |
//if(((fd=open(argv[1],O_RDONLY,0))<0) || |
// ((oldsize=lseek(fd,0,SEEK_END))==-1) || |
// ((old=malloc(oldsize+1))==NULL) || |
// (lseek(fd,0,SEEK_SET)!=0) || |
// (read(fd,old,oldsize)!=oldsize) || |
// (close(fd)==-1)) err(1,"%s",argv[1]); |
//new: |
//Read in chunks, don't rely on read always returns full data! |
if(((fd=open(argv[1],O_RDONLY|O_BINARY|O_NOINHERIT,0))<0) || |
((oldsize=lseek(fd,0,SEEK_END))==-1) || |
((old=(u_char*)malloc(oldsize+1))==NULL) || |
(lseek(fd,0,SEEK_SET)!=0)) |
err(1,"%s",argv[1]); |
int r=oldsize; |
while (r>0 && (i=read(fd,old+oldsize-r,r))>0) r-=i; |
if (r>0 || close(fd)==-1) err(1,"%s",argv[1]); |
if((_new=(u_char*)malloc(newsize+1))==NULL) err(1,NULL); |
oldpos=0;newpos=0; |
while(newpos<newsize) { |
/* Read control data */ |
for(i=0;i<=2;i++) { |
lenread = BZ2_bzRead(&cbz2err, cpfbz2, buf, 8); |
if ((lenread < 8) || ((cbz2err != BZ_OK) && |
(cbz2err != BZ_STREAM_END))) |
errx(1, "Corrupt patch\n"); |
ctrl[i]=offtin(buf); |
}; |
/* Sanity-check */ |
if(newpos+ctrl[0]>newsize) |
errx(1,"Corrupt patch\n"); |
/* Read diff string */ |
lenread = BZ2_bzRead(&dbz2err, dpfbz2, _new + newpos, ctrl[0]); |
if ((lenread < ctrl[0]) || |
((dbz2err != BZ_OK) && (dbz2err != BZ_STREAM_END))) |
errx(1, "Corrupt patch\n"); |
/* Add old data to diff string */ |
for(i=0;i<ctrl[0];i++) |
if((oldpos+i>=0) && (oldpos+i<oldsize)) |
_new[newpos+i]+=old[oldpos+i]; |
/* Adjust pointers */ |
newpos+=ctrl[0]; |
oldpos+=ctrl[0]; |
/* Sanity-check */ |
if(newpos+ctrl[1]>newsize) |
errx(1,"Corrupt patch\n"); |
/* Read extra string */ |
lenread = BZ2_bzRead(&ebz2err, epfbz2, _new + newpos, ctrl[1]); |
if ((lenread < ctrl[1]) || |
((ebz2err != BZ_OK) && (ebz2err != BZ_STREAM_END))) |
errx(1, "Corrupt patch\n"); |
/* Adjust pointers */ |
newpos+=ctrl[1]; |
oldpos+=ctrl[2]; |
}; |
/* Clean up the bzip2 reads */ |
BZ2_bzReadClose(&cbz2err, cpfbz2); |
BZ2_bzReadClose(&dbz2err, dpfbz2); |
BZ2_bzReadClose(&ebz2err, epfbz2); |
if (fclose(cpf) || fclose(dpf) || fclose(epf)) |
err(1, "fclose(%s)", argv[3]); |
/* Write the new file */ |
//org: |
//if(((fd=open(argv[2],O_CREAT|O_TRUNC|O_WRONLY,0666))<0) || |
//new: |
if(((fd=open(argv[2],O_CREAT|O_TRUNC|O_WRONLY|O_BINARY,0666))<0) || |
(write(fd,_new,newsize)!=newsize) || (close(fd)==-1)) |
err(1,"%s",argv[2]); |
free(_new); |
free(old); |
return 0; |
} |
/nw_plus/utils/source/bsdiff-4.3/win32/huffman.c |
---|
0,0 → 1,205 |
/*-------------------------------------------------------------*/ |
/*--- Huffman coding low-level stuff ---*/ |
/*--- huffman.c ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
#include "bzlib_private.h" |
/*---------------------------------------------------*/ |
#define WEIGHTOF(zz0) ((zz0) & 0xffffff00) |
#define DEPTHOF(zz1) ((zz1) & 0x000000ff) |
#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3)) |
#define ADDWEIGHTS(zw1,zw2) \ |
(WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \ |
(1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2))) |
#define UPHEAP(z) \ |
{ \ |
Int32 zz, tmp; \ |
zz = z; tmp = heap[zz]; \ |
while (weight[tmp] < weight[heap[zz >> 1]]) { \ |
heap[zz] = heap[zz >> 1]; \ |
zz >>= 1; \ |
} \ |
heap[zz] = tmp; \ |
} |
#define DOWNHEAP(z) \ |
{ \ |
Int32 zz, yy, tmp; \ |
zz = z; tmp = heap[zz]; \ |
while (True) { \ |
yy = zz << 1; \ |
if (yy > nHeap) break; \ |
if (yy < nHeap && \ |
weight[heap[yy+1]] < weight[heap[yy]]) \ |
yy++; \ |
if (weight[tmp] < weight[heap[yy]]) break; \ |
heap[zz] = heap[yy]; \ |
zz = yy; \ |
} \ |
heap[zz] = tmp; \ |
} |
/*---------------------------------------------------*/ |
void BZ2_hbMakeCodeLengths ( UChar *len, |
Int32 *freq, |
Int32 alphaSize, |
Int32 maxLen ) |
{ |
/*-- |
Nodes and heap entries run from 1. Entry 0 |
for both the heap and nodes is a sentinel. |
--*/ |
Int32 nNodes, nHeap, n1, n2, i, j, k; |
Bool tooLong; |
Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ]; |
Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ]; |
Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; |
for (i = 0; i < alphaSize; i++) |
weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8; |
while (True) { |
nNodes = alphaSize; |
nHeap = 0; |
heap[0] = 0; |
weight[0] = 0; |
parent[0] = -2; |
for (i = 1; i <= alphaSize; i++) { |
parent[i] = -1; |
nHeap++; |
heap[nHeap] = i; |
UPHEAP(nHeap); |
} |
AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 ); |
while (nHeap > 1) { |
n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); |
n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); |
nNodes++; |
parent[n1] = parent[n2] = nNodes; |
weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]); |
parent[nNodes] = -1; |
nHeap++; |
heap[nHeap] = nNodes; |
UPHEAP(nHeap); |
} |
AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 ); |
tooLong = False; |
for (i = 1; i <= alphaSize; i++) { |
j = 0; |
k = i; |
while (parent[k] >= 0) { k = parent[k]; j++; } |
len[i-1] = j; |
if (j > maxLen) tooLong = True; |
} |
if (! tooLong) break; |
/* 17 Oct 04: keep-going condition for the following loop used |
to be 'i < alphaSize', which missed the last element, |
theoretically leading to the possibility of the compressor |
looping. However, this count-scaling step is only needed if |
one of the generated Huffman code words is longer than |
maxLen, which up to and including version 1.0.2 was 20 bits, |
which is extremely unlikely. In version 1.0.3 maxLen was |
changed to 17 bits, which has minimal effect on compression |
ratio, but does mean this scaling step is used from time to |
time, enough to verify that it works. |
This means that bzip2-1.0.3 and later will only produce |
Huffman codes with a maximum length of 17 bits. However, in |
order to preserve backwards compatibility with bitstreams |
produced by versions pre-1.0.3, the decompressor must still |
handle lengths of up to 20. */ |
for (i = 1; i <= alphaSize; i++) { |
j = weight[i] >> 8; |
j = 1 + (j / 2); |
weight[i] = j << 8; |
} |
} |
} |
/*---------------------------------------------------*/ |
void BZ2_hbAssignCodes ( Int32 *code, |
UChar *length, |
Int32 minLen, |
Int32 maxLen, |
Int32 alphaSize ) |
{ |
Int32 n, vec, i; |
vec = 0; |
for (n = minLen; n <= maxLen; n++) { |
for (i = 0; i < alphaSize; i++) |
if (length[i] == n) { code[i] = vec; vec++; }; |
vec <<= 1; |
} |
} |
/*---------------------------------------------------*/ |
void BZ2_hbCreateDecodeTables ( Int32 *limit, |
Int32 *base, |
Int32 *perm, |
UChar *length, |
Int32 minLen, |
Int32 maxLen, |
Int32 alphaSize ) |
{ |
Int32 pp, i, j, vec; |
pp = 0; |
for (i = minLen; i <= maxLen; i++) |
for (j = 0; j < alphaSize; j++) |
if (length[j] == i) { perm[pp] = j; pp++; }; |
for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0; |
for (i = 0; i < alphaSize; i++) base[length[i]+1]++; |
for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1]; |
for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0; |
vec = 0; |
for (i = minLen; i <= maxLen; i++) { |
vec += (base[i+1] - base[i]); |
limit[i] = vec-1; |
vec <<= 1; |
} |
for (i = minLen + 1; i <= maxLen; i++) |
base[i] = ((limit[i-1] + 1) << 1) - base[i]; |
} |
/*-------------------------------------------------------------*/ |
/*--- end huffman.c ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/bspatch.dsp |
---|
0,0 → 1,136 |
# Microsoft Developer Studio Project File - Name="bspatch" - Package Owner=<4> |
# Microsoft Developer Studio Generated Build File, Format Version 6.00 |
# ** DO NOT EDIT ** |
# TARGTYPE "Win32 (x86) Console Application" 0x0103 |
CFG=bspatch - Win32 Debug |
!MESSAGE This is not a valid makefile. To build this project using NMAKE, |
!MESSAGE use the Export Makefile command and run |
!MESSAGE |
!MESSAGE NMAKE /f "bspatch.mak". |
!MESSAGE |
!MESSAGE You can specify a configuration when running NMAKE |
!MESSAGE by defining the macro CFG on the command line. For example: |
!MESSAGE |
!MESSAGE NMAKE /f "bspatch.mak" CFG="bspatch - Win32 Debug" |
!MESSAGE |
!MESSAGE Possible choices for configuration are: |
!MESSAGE |
!MESSAGE "bspatch - Win32 Release" (based on "Win32 (x86) Console Application") |
!MESSAGE "bspatch - Win32 Debug" (based on "Win32 (x86) Console Application") |
!MESSAGE |
# Begin Project |
# PROP AllowPerConfigDependencies 0 |
# PROP Scc_ProjName "" |
# PROP Scc_LocalPath "" |
CPP=cl.exe |
RSC=rc.exe |
!IF "$(CFG)" == "bspatch - Win32 Release" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 0 |
# PROP BASE Output_Dir "Release" |
# PROP BASE Intermediate_Dir "Release" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 0 |
# PROP Output_Dir "Release" |
# PROP Intermediate_Dir "Release" |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c |
# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c |
# ADD BASE RSC /l 0x407 /d "NDEBUG" |
# ADD RSC /l 0x407 /d "NDEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 |
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 |
!ELSEIF "$(CFG)" == "bspatch - Win32 Debug" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 1 |
# PROP BASE Output_Dir "Debug" |
# PROP BASE Intermediate_Dir "Debug" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 1 |
# PROP Output_Dir "Debug" |
# PROP Intermediate_Dir "Debug" |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c |
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c |
# ADD BASE RSC /l 0x407 /d "_DEBUG" |
# ADD RSC /l 0x407 /d "_DEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept |
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept |
!ENDIF |
# Begin Target |
# Name "bspatch - Win32 Release" |
# Name "bspatch - Win32 Debug" |
# Begin Group "Source Files" |
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" |
# Begin Source File |
SOURCE=.\blocksort.c |
# End Source File |
# Begin Source File |
SOURCE=.\bspatch.cpp |
# End Source File |
# Begin Source File |
SOURCE=.\bzlib.c |
# End Source File |
# Begin Source File |
SOURCE=.\compress.c |
# End Source File |
# Begin Source File |
SOURCE=.\crctable.c |
# End Source File |
# Begin Source File |
SOURCE=.\decompress.c |
# End Source File |
# Begin Source File |
SOURCE=.\huffman.c |
# End Source File |
# Begin Source File |
SOURCE=.\randtable.c |
# End Source File |
# End Group |
# Begin Group "Header Files" |
# PROP Default_Filter "h;hpp;hxx;hm;inl" |
# Begin Source File |
SOURCE=.\bzlib.h |
# End Source File |
# Begin Source File |
SOURCE=.\bzlib_private.h |
# End Source File |
# End Group |
# Begin Group "Resource Files" |
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" |
# End Group |
# End Target |
# End Project |
/nw_plus/utils/source/bsdiff-4.3/win32/compress.c |
---|
0,0 → 1,672 |
/*-------------------------------------------------------------*/ |
/*--- Compression machinery (not incl block sorting) ---*/ |
/*--- compress.c ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
/* CHANGES |
0.9.0 -- original version. |
0.9.0a/b -- no changes in this file. |
0.9.0c -- changed setting of nGroups in sendMTFValues() |
so as to do a bit better on small files |
*/ |
#include "bzlib_private.h" |
/*---------------------------------------------------*/ |
/*--- Bit stream I/O ---*/ |
/*---------------------------------------------------*/ |
/*---------------------------------------------------*/ |
void BZ2_bsInitWrite ( EState* s ) |
{ |
s->bsLive = 0; |
s->bsBuff = 0; |
} |
/*---------------------------------------------------*/ |
static |
void bsFinishWrite ( EState* s ) |
{ |
while (s->bsLive > 0) { |
s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24); |
s->numZ++; |
s->bsBuff <<= 8; |
s->bsLive -= 8; |
} |
} |
/*---------------------------------------------------*/ |
#define bsNEEDW(nz) \ |
{ \ |
while (s->bsLive >= 8) { \ |
s->zbits[s->numZ] \ |
= (UChar)(s->bsBuff >> 24); \ |
s->numZ++; \ |
s->bsBuff <<= 8; \ |
s->bsLive -= 8; \ |
} \ |
} |
/*---------------------------------------------------*/ |
static |
__inline__ |
void bsW ( EState* s, Int32 n, UInt32 v ) |
{ |
bsNEEDW ( n ); |
s->bsBuff |= (v << (32 - s->bsLive - n)); |
s->bsLive += n; |
} |
/*---------------------------------------------------*/ |
static |
void bsPutUInt32 ( EState* s, UInt32 u ) |
{ |
bsW ( s, 8, (u >> 24) & 0xffL ); |
bsW ( s, 8, (u >> 16) & 0xffL ); |
bsW ( s, 8, (u >> 8) & 0xffL ); |
bsW ( s, 8, u & 0xffL ); |
} |
/*---------------------------------------------------*/ |
static |
void bsPutUChar ( EState* s, UChar c ) |
{ |
bsW( s, 8, (UInt32)c ); |
} |
/*---------------------------------------------------*/ |
/*--- The back end proper ---*/ |
/*---------------------------------------------------*/ |
/*---------------------------------------------------*/ |
static |
void makeMaps_e ( EState* s ) |
{ |
Int32 i; |
s->nInUse = 0; |
for (i = 0; i < 256; i++) |
if (s->inUse[i]) { |
s->unseqToSeq[i] = s->nInUse; |
s->nInUse++; |
} |
} |
/*---------------------------------------------------*/ |
static |
void generateMTFValues ( EState* s ) |
{ |
UChar yy[256]; |
Int32 i, j; |
Int32 zPend; |
Int32 wr; |
Int32 EOB; |
/* |
After sorting (eg, here), |
s->arr1 [ 0 .. s->nblock-1 ] holds sorted order, |
and |
((UChar*)s->arr2) [ 0 .. s->nblock-1 ] |
holds the original block data. |
The first thing to do is generate the MTF values, |
and put them in |
((UInt16*)s->arr1) [ 0 .. s->nblock-1 ]. |
Because there are strictly fewer or equal MTF values |
than block values, ptr values in this area are overwritten |
with MTF values only when they are no longer needed. |
The final compressed bitstream is generated into the |
area starting at |
(UChar*) (&((UChar*)s->arr2)[s->nblock]) |
These storage aliases are set up in bzCompressInit(), |
except for the last one, which is arranged in |
compressBlock(). |
*/ |
UInt32* ptr = s->ptr; |
UChar* block = s->block; |
UInt16* mtfv = s->mtfv; |
makeMaps_e ( s ); |
EOB = s->nInUse+1; |
for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0; |
wr = 0; |
zPend = 0; |
for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i; |
for (i = 0; i < s->nblock; i++) { |
UChar ll_i; |
AssertD ( wr <= i, "generateMTFValues(1)" ); |
j = ptr[i]-1; if (j < 0) j += s->nblock; |
ll_i = s->unseqToSeq[block[j]]; |
AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" ); |
if (yy[0] == ll_i) { |
zPend++; |
} else { |
if (zPend > 0) { |
zPend--; |
while (True) { |
if (zPend & 1) { |
mtfv[wr] = BZ_RUNB; wr++; |
s->mtfFreq[BZ_RUNB]++; |
} else { |
mtfv[wr] = BZ_RUNA; wr++; |
s->mtfFreq[BZ_RUNA]++; |
} |
if (zPend < 2) break; |
zPend = (zPend - 2) / 2; |
}; |
zPend = 0; |
} |
{ |
register UChar rtmp; |
register UChar* ryy_j; |
register UChar rll_i; |
rtmp = yy[1]; |
yy[1] = yy[0]; |
ryy_j = &(yy[1]); |
rll_i = ll_i; |
while ( rll_i != rtmp ) { |
register UChar rtmp2; |
ryy_j++; |
rtmp2 = rtmp; |
rtmp = *ryy_j; |
*ryy_j = rtmp2; |
}; |
yy[0] = rtmp; |
j = ryy_j - &(yy[0]); |
mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++; |
} |
} |
} |
if (zPend > 0) { |
zPend--; |
while (True) { |
if (zPend & 1) { |
mtfv[wr] = BZ_RUNB; wr++; |
s->mtfFreq[BZ_RUNB]++; |
} else { |
mtfv[wr] = BZ_RUNA; wr++; |
s->mtfFreq[BZ_RUNA]++; |
} |
if (zPend < 2) break; |
zPend = (zPend - 2) / 2; |
}; |
zPend = 0; |
} |
mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++; |
s->nMTF = wr; |
} |
/*---------------------------------------------------*/ |
#define BZ_LESSER_ICOST 0 |
#define BZ_GREATER_ICOST 15 |
static |
void sendMTFValues ( EState* s ) |
{ |
Int32 v, t, i, j, gs, ge, totc, bt, bc, iter; |
Int32 nSelectors, alphaSize, minLen, maxLen, selCtr; |
Int32 nGroups, nBytes; |
/*-- |
UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
is a global since the decoder also needs it. |
Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; |
are also globals only used in this proc. |
Made global to keep stack frame size small. |
--*/ |
UInt16 cost[BZ_N_GROUPS]; |
Int32 fave[BZ_N_GROUPS]; |
UInt16* mtfv = s->mtfv; |
if (s->verbosity >= 3) |
VPrintf3( " %d in block, %d after MTF & 1-2 coding, " |
"%d+2 syms in use\n", |
s->nblock, s->nMTF, s->nInUse ); |
alphaSize = s->nInUse+2; |
for (t = 0; t < BZ_N_GROUPS; t++) |
for (v = 0; v < alphaSize; v++) |
s->len[t][v] = BZ_GREATER_ICOST; |
/*--- Decide how many coding tables to use ---*/ |
AssertH ( s->nMTF > 0, 3001 ); |
if (s->nMTF < 200) nGroups = 2; else |
if (s->nMTF < 600) nGroups = 3; else |
if (s->nMTF < 1200) nGroups = 4; else |
if (s->nMTF < 2400) nGroups = 5; else |
nGroups = 6; |
/*--- Generate an initial set of coding tables ---*/ |
{ |
Int32 nPart, remF, tFreq, aFreq; |
nPart = nGroups; |
remF = s->nMTF; |
gs = 0; |
while (nPart > 0) { |
tFreq = remF / nPart; |
ge = gs-1; |
aFreq = 0; |
while (aFreq < tFreq && ge < alphaSize-1) { |
ge++; |
aFreq += s->mtfFreq[ge]; |
} |
if (ge > gs |
&& nPart != nGroups && nPart != 1 |
&& ((nGroups-nPart) % 2 == 1)) { |
aFreq -= s->mtfFreq[ge]; |
ge--; |
} |
if (s->verbosity >= 3) |
VPrintf5( " initial group %d, [%d .. %d], " |
"has %d syms (%4.1f%%)\n", |
nPart, gs, ge, aFreq, |
(100.0 * (float)aFreq) / (float)(s->nMTF) ); |
for (v = 0; v < alphaSize; v++) |
if (v >= gs && v <= ge) |
s->len[nPart-1][v] = BZ_LESSER_ICOST; else |
s->len[nPart-1][v] = BZ_GREATER_ICOST; |
nPart--; |
gs = ge+1; |
remF -= aFreq; |
} |
} |
/*--- |
Iterate up to BZ_N_ITERS times to improve the tables. |
---*/ |
for (iter = 0; iter < BZ_N_ITERS; iter++) { |
for (t = 0; t < nGroups; t++) fave[t] = 0; |
for (t = 0; t < nGroups; t++) |
for (v = 0; v < alphaSize; v++) |
s->rfreq[t][v] = 0; |
/*--- |
Set up an auxiliary length table which is used to fast-track |
the common case (nGroups == 6). |
---*/ |
if (nGroups == 6) { |
for (v = 0; v < alphaSize; v++) { |
s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; |
s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; |
s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v]; |
} |
} |
nSelectors = 0; |
totc = 0; |
gs = 0; |
while (True) { |
/*--- Set group start & end marks. --*/ |
if (gs >= s->nMTF) break; |
ge = gs + BZ_G_SIZE - 1; |
if (ge >= s->nMTF) ge = s->nMTF-1; |
/*-- |
Calculate the cost of this group as coded |
by each of the coding tables. |
--*/ |
for (t = 0; t < nGroups; t++) cost[t] = 0; |
if (nGroups == 6 && 50 == ge-gs+1) { |
/*--- fast track the common case ---*/ |
register UInt32 cost01, cost23, cost45; |
register UInt16 icv; |
cost01 = cost23 = cost45 = 0; |
# define BZ_ITER(nn) \ |
icv = mtfv[gs+(nn)]; \ |
cost01 += s->len_pack[icv][0]; \ |
cost23 += s->len_pack[icv][1]; \ |
cost45 += s->len_pack[icv][2]; \ |
BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4); |
BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9); |
BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14); |
BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19); |
BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24); |
BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29); |
BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34); |
BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39); |
BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44); |
BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49); |
# undef BZ_ITER |
cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16; |
cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16; |
cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16; |
} else { |
/*--- slow version which correctly handles all situations ---*/ |
for (i = gs; i <= ge; i++) { |
UInt16 icv = mtfv[i]; |
for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv]; |
} |
} |
/*-- |
Find the coding table which is best for this group, |
and record its identity in the selector table. |
--*/ |
bc = 999999999; bt = -1; |
for (t = 0; t < nGroups; t++) |
if (cost[t] < bc) { bc = cost[t]; bt = t; }; |
totc += bc; |
fave[bt]++; |
s->selector[nSelectors] = bt; |
nSelectors++; |
/*-- |
Increment the symbol frequencies for the selected table. |
--*/ |
if (nGroups == 6 && 50 == ge-gs+1) { |
/*--- fast track the common case ---*/ |
# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++ |
BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4); |
BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9); |
BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14); |
BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19); |
BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24); |
BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29); |
BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34); |
BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39); |
BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44); |
BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49); |
# undef BZ_ITUR |
} else { |
/*--- slow version which correctly handles all situations ---*/ |
for (i = gs; i <= ge; i++) |
s->rfreq[bt][ mtfv[i] ]++; |
} |
gs = ge+1; |
} |
if (s->verbosity >= 3) { |
VPrintf2 ( " pass %d: size is %d, grp uses are ", |
iter+1, totc/8 ); |
for (t = 0; t < nGroups; t++) |
VPrintf1 ( "%d ", fave[t] ); |
VPrintf0 ( "\n" ); |
} |
/*-- |
Recompute the tables based on the accumulated frequencies. |
--*/ |
/* maxLen was changed from 20 to 17 in bzip2-1.0.3. See |
comment in huffman.c for details. */ |
for (t = 0; t < nGroups; t++) |
BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), |
alphaSize, 17 /*20*/ ); |
} |
AssertH( nGroups < 8, 3002 ); |
AssertH( nSelectors < 32768 && |
nSelectors <= (2 + (900000 / BZ_G_SIZE)), |
3003 ); |
/*--- Compute MTF values for the selectors. ---*/ |
{ |
UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp; |
for (i = 0; i < nGroups; i++) pos[i] = i; |
for (i = 0; i < nSelectors; i++) { |
ll_i = s->selector[i]; |
j = 0; |
tmp = pos[j]; |
while ( ll_i != tmp ) { |
j++; |
tmp2 = tmp; |
tmp = pos[j]; |
pos[j] = tmp2; |
}; |
pos[0] = tmp; |
s->selectorMtf[i] = j; |
} |
}; |
/*--- Assign actual codes for the tables. --*/ |
for (t = 0; t < nGroups; t++) { |
minLen = 32; |
maxLen = 0; |
for (i = 0; i < alphaSize; i++) { |
if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; |
if (s->len[t][i] < minLen) minLen = s->len[t][i]; |
} |
AssertH ( !(maxLen > 17 /*20*/ ), 3004 ); |
AssertH ( !(minLen < 1), 3005 ); |
BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), |
minLen, maxLen, alphaSize ); |
} |
/*--- Transmit the mapping table. ---*/ |
{ |
Bool inUse16[16]; |
for (i = 0; i < 16; i++) { |
inUse16[i] = False; |
for (j = 0; j < 16; j++) |
if (s->inUse[i * 16 + j]) inUse16[i] = True; |
} |
nBytes = s->numZ; |
for (i = 0; i < 16; i++) |
if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0); |
for (i = 0; i < 16; i++) |
if (inUse16[i]) |
for (j = 0; j < 16; j++) { |
if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0); |
} |
if (s->verbosity >= 3) |
VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes ); |
} |
/*--- Now the selectors. ---*/ |
nBytes = s->numZ; |
bsW ( s, 3, nGroups ); |
bsW ( s, 15, nSelectors ); |
for (i = 0; i < nSelectors; i++) { |
for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1); |
bsW(s,1,0); |
} |
if (s->verbosity >= 3) |
VPrintf1( "selectors %d, ", s->numZ-nBytes ); |
/*--- Now the coding tables. ---*/ |
nBytes = s->numZ; |
for (t = 0; t < nGroups; t++) { |
Int32 curr = s->len[t][0]; |
bsW ( s, 5, curr ); |
for (i = 0; i < alphaSize; i++) { |
while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ }; |
while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ }; |
bsW ( s, 1, 0 ); |
} |
} |
if (s->verbosity >= 3) |
VPrintf1 ( "code lengths %d, ", s->numZ-nBytes ); |
/*--- And finally, the block data proper ---*/ |
nBytes = s->numZ; |
selCtr = 0; |
gs = 0; |
while (True) { |
if (gs >= s->nMTF) break; |
ge = gs + BZ_G_SIZE - 1; |
if (ge >= s->nMTF) ge = s->nMTF-1; |
AssertH ( s->selector[selCtr] < nGroups, 3006 ); |
if (nGroups == 6 && 50 == ge-gs+1) { |
/*--- fast track the common case ---*/ |
UInt16 mtfv_i; |
UChar* s_len_sel_selCtr |
= &(s->len[s->selector[selCtr]][0]); |
Int32* s_code_sel_selCtr |
= &(s->code[s->selector[selCtr]][0]); |
# define BZ_ITAH(nn) \ |
mtfv_i = mtfv[gs+(nn)]; \ |
bsW ( s, \ |
s_len_sel_selCtr[mtfv_i], \ |
s_code_sel_selCtr[mtfv_i] ) |
BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4); |
BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9); |
BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14); |
BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19); |
BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24); |
BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29); |
BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34); |
BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39); |
BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44); |
BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49); |
# undef BZ_ITAH |
} else { |
/*--- slow version which correctly handles all situations ---*/ |
for (i = gs; i <= ge; i++) { |
bsW ( s, |
s->len [s->selector[selCtr]] [mtfv[i]], |
s->code [s->selector[selCtr]] [mtfv[i]] ); |
} |
} |
gs = ge+1; |
selCtr++; |
} |
AssertH( selCtr == nSelectors, 3007 ); |
if (s->verbosity >= 3) |
VPrintf1( "codes %d\n", s->numZ-nBytes ); |
} |
/*---------------------------------------------------*/ |
void BZ2_compressBlock ( EState* s, Bool is_last_block ) |
{ |
if (s->nblock > 0) { |
BZ_FINALISE_CRC ( s->blockCRC ); |
s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31); |
s->combinedCRC ^= s->blockCRC; |
if (s->blockNo > 1) s->numZ = 0; |
if (s->verbosity >= 2) |
VPrintf4( " block %d: crc = 0x%08x, " |
"combined CRC = 0x%08x, size = %d\n", |
s->blockNo, s->blockCRC, s->combinedCRC, s->nblock ); |
BZ2_blockSort ( s ); |
} |
s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]); |
/*-- If this is the first block, create the stream header. --*/ |
if (s->blockNo == 1) { |
BZ2_bsInitWrite ( s ); |
bsPutUChar ( s, BZ_HDR_B ); |
bsPutUChar ( s, BZ_HDR_Z ); |
bsPutUChar ( s, BZ_HDR_h ); |
bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) ); |
} |
if (s->nblock > 0) { |
bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 ); |
bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 ); |
bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 ); |
/*-- Now the block's CRC, so it is in a known place. --*/ |
bsPutUInt32 ( s, s->blockCRC ); |
/*-- |
Now a single bit indicating (non-)randomisation. |
As of version 0.9.5, we use a better sorting algorithm |
which makes randomisation unnecessary. So always set |
the randomised bit to 'no'. Of course, the decoder |
still needs to be able to handle randomised blocks |
so as to maintain backwards compatibility with |
older versions of bzip2. |
--*/ |
bsW(s,1,0); |
bsW ( s, 24, s->origPtr ); |
generateMTFValues ( s ); |
sendMTFValues ( s ); |
} |
/*-- If this is the last block, add the stream trailer. --*/ |
if (is_last_block) { |
bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 ); |
bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 ); |
bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 ); |
bsPutUInt32 ( s, s->combinedCRC ); |
if (s->verbosity >= 2) |
VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC ); |
bsFinishWrite ( s ); |
} |
} |
/*-------------------------------------------------------------*/ |
/*--- end compress.c ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/randtable.c |
---|
0,0 → 1,84 |
/*-------------------------------------------------------------*/ |
/*--- Table for randomising repetitive blocks ---*/ |
/*--- randtable.c ---*/ |
/*-------------------------------------------------------------*/ |
/* ------------------------------------------------------------------ |
This file is part of bzip2/libbzip2, a program and library for |
lossless, block-sorting data compression. |
bzip2/libbzip2 version 1.0.4 of 20 December 2006 |
Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org> |
Please read the WARNING, DISCLAIMER and PATENTS sections in the |
README file. |
This program is released under the terms of the license contained |
in the file LICENSE. |
------------------------------------------------------------------ */ |
#include "bzlib_private.h" |
/*---------------------------------------------*/ |
Int32 BZ2_rNums[512] = { |
619, 720, 127, 481, 931, 816, 813, 233, 566, 247, |
985, 724, 205, 454, 863, 491, 741, 242, 949, 214, |
733, 859, 335, 708, 621, 574, 73, 654, 730, 472, |
419, 436, 278, 496, 867, 210, 399, 680, 480, 51, |
878, 465, 811, 169, 869, 675, 611, 697, 867, 561, |
862, 687, 507, 283, 482, 129, 807, 591, 733, 623, |
150, 238, 59, 379, 684, 877, 625, 169, 643, 105, |
170, 607, 520, 932, 727, 476, 693, 425, 174, 647, |
73, 122, 335, 530, 442, 853, 695, 249, 445, 515, |
909, 545, 703, 919, 874, 474, 882, 500, 594, 612, |
641, 801, 220, 162, 819, 984, 589, 513, 495, 799, |
161, 604, 958, 533, 221, 400, 386, 867, 600, 782, |
382, 596, 414, 171, 516, 375, 682, 485, 911, 276, |
98, 553, 163, 354, 666, 933, 424, 341, 533, 870, |
227, 730, 475, 186, 263, 647, 537, 686, 600, 224, |
469, 68, 770, 919, 190, 373, 294, 822, 808, 206, |
184, 943, 795, 384, 383, 461, 404, 758, 839, 887, |
715, 67, 618, 276, 204, 918, 873, 777, 604, 560, |
951, 160, 578, 722, 79, 804, 96, 409, 713, 940, |
652, 934, 970, 447, 318, 353, 859, 672, 112, 785, |
645, 863, 803, 350, 139, 93, 354, 99, 820, 908, |
609, 772, 154, 274, 580, 184, 79, 626, 630, 742, |
653, 282, 762, 623, 680, 81, 927, 626, 789, 125, |
411, 521, 938, 300, 821, 78, 343, 175, 128, 250, |
170, 774, 972, 275, 999, 639, 495, 78, 352, 126, |
857, 956, 358, 619, 580, 124, 737, 594, 701, 612, |
669, 112, 134, 694, 363, 992, 809, 743, 168, 974, |
944, 375, 748, 52, 600, 747, 642, 182, 862, 81, |
344, 805, 988, 739, 511, 655, 814, 334, 249, 515, |
897, 955, 664, 981, 649, 113, 974, 459, 893, 228, |
433, 837, 553, 268, 926, 240, 102, 654, 459, 51, |
686, 754, 806, 760, 493, 403, 415, 394, 687, 700, |
946, 670, 656, 610, 738, 392, 760, 799, 887, 653, |
978, 321, 576, 617, 626, 502, 894, 679, 243, 440, |
680, 879, 194, 572, 640, 724, 926, 56, 204, 700, |
707, 151, 457, 449, 797, 195, 791, 558, 945, 679, |
297, 59, 87, 824, 713, 663, 412, 693, 342, 606, |
134, 108, 571, 364, 631, 212, 174, 643, 304, 329, |
343, 97, 430, 751, 497, 314, 983, 374, 822, 928, |
140, 206, 73, 263, 980, 736, 876, 478, 430, 305, |
170, 514, 364, 692, 829, 82, 855, 953, 676, 246, |
369, 970, 294, 750, 807, 827, 150, 790, 288, 923, |
804, 378, 215, 828, 592, 281, 565, 555, 710, 82, |
896, 831, 547, 261, 524, 462, 293, 465, 502, 56, |
661, 821, 976, 991, 658, 869, 905, 758, 745, 193, |
768, 550, 608, 933, 378, 286, 215, 979, 792, 961, |
61, 688, 793, 644, 986, 403, 106, 366, 905, 644, |
372, 567, 466, 434, 645, 210, 389, 550, 919, 135, |
780, 773, 635, 389, 707, 100, 626, 958, 165, 504, |
920, 176, 193, 713, 857, 265, 203, 50, 668, 108, |
645, 990, 626, 197, 510, 357, 358, 850, 858, 364, |
936, 638 |
}; |
/*-------------------------------------------------------------*/ |
/*--- end randtable.c ---*/ |
/*-------------------------------------------------------------*/ |
/nw_plus/utils/source/bsdiff-4.3/win32/bsdiff.cpp |
---|
0,0 → 1,463 |
/*- |
* Copyright 2003-2005 Colin Percival |
* All rights reserved |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted providing that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
* POSSIBILITY OF SUCH DAMAGE. |
*/ |
#include <stdlib.h> |
#include "bzlib.h" |
#include <stdio.h> |
#include <string.h> |
//#include <err.h> |
//#include <unistd.h> |
#include <io.h> |
#include <fcntl.h> |
//#include <sys/wait.h> |
#include <windows.h> |
#include <process.h> |
#include <sys/types.h> |
typedef unsigned char u_char; |
typedef long pid_t; |
template<class T> |
void err(int i, const char* str, T arg) { |
char lastErrorTxt[1024]; |
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,lastErrorTxt,1024,NULL); |
printf("%s",lastErrorTxt); |
printf(str, arg); |
exit(i); |
} |
void err(int i, const char* str) { |
char lastErrorTxt[1024]; |
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),0,lastErrorTxt,1024,NULL); |
printf("%s",lastErrorTxt); |
if (str!=NULL) { |
printf("%s",str); |
} |
exit(i); |
} |
template<class T> |
void errx(int i, const char* str, T arg) { |
printf(str, arg); |
exit(i); |
} |
void errx(int i, const char* str) { |
printf("%s",str); |
exit(i); |
} |
#define MIN(x,y) (((x)<(y)) ? (x) : (y)) |
static void split(off_t *I,off_t *V,off_t start,off_t len,off_t h) |
{ |
off_t i,j,k,x,tmp,jj,kk; |
if(len<16) { |
for(k=start;k<start+len;k+=j) { |
j=1;x=V[I[k]+h]; |
for(i=1;k+i<start+len;i++) { |
if(V[I[k+i]+h]<x) { |
x=V[I[k+i]+h]; |
j=0; |
}; |
if(V[I[k+i]+h]==x) { |
tmp=I[k+j];I[k+j]=I[k+i];I[k+i]=tmp; |
j++; |
}; |
}; |
for(i=0;i<j;i++) V[I[k+i]]=k+j-1; |
if(j==1) I[k]=-1; |
}; |
return; |
}; |
x=V[I[start+len/2]+h]; |
jj=0;kk=0; |
for(i=start;i<start+len;i++) { |
if(V[I[i]+h]<x) jj++; |
if(V[I[i]+h]==x) kk++; |
}; |
jj+=start;kk+=jj; |
i=start;j=0;k=0; |
while(i<jj) { |
if(V[I[i]+h]<x) { |
i++; |
} else if(V[I[i]+h]==x) { |
tmp=I[i];I[i]=I[jj+j];I[jj+j]=tmp; |
j++; |
} else { |
tmp=I[i];I[i]=I[kk+k];I[kk+k]=tmp; |
k++; |
}; |
}; |
while(jj+j<kk) { |
if(V[I[jj+j]+h]==x) { |
j++; |
} else { |
tmp=I[jj+j];I[jj+j]=I[kk+k];I[kk+k]=tmp; |
k++; |
}; |
}; |
if(jj>start) split(I,V,start,jj-start,h); |
for(i=0;i<kk-jj;i++) V[I[jj+i]]=kk-1; |
if(jj==kk-1) I[jj]=-1; |
if(start+len>kk) split(I,V,kk,start+len-kk,h); |
} |
static void qsufsort(off_t *I,off_t *V,u_char *old,off_t oldsize) |
{ |
off_t buckets[256]; |
off_t i,h,len; |
for(i=0;i<256;i++) buckets[i]=0; |
for(i=0;i<oldsize;i++) buckets[old[i]]++; |
for(i=1;i<256;i++) buckets[i]+=buckets[i-1]; |
for(i=255;i>0;i--) buckets[i]=buckets[i-1]; |
buckets[0]=0; |
for(i=0;i<oldsize;i++) I[++buckets[old[i]]]=i; |
I[0]=oldsize; |
for(i=0;i<oldsize;i++) V[i]=buckets[old[i]]; |
V[oldsize]=0; |
for(i=1;i<256;i++) if(buckets[i]==buckets[i-1]+1) I[buckets[i]]=-1; |
I[0]=-1; |
for(h=1;I[0]!=-(oldsize+1);h+=h) { |
len=0; |
for(i=0;i<oldsize+1;) { |
if(I[i]<0) { |
len-=I[i]; |
i-=I[i]; |
} else { |
if(len) I[i-len]=-len; |
len=V[I[i]]+1-i; |
split(I,V,i,len,h); |
i+=len; |
len=0; |
}; |
}; |
if(len) I[i-len]=-len; |
}; |
for(i=0;i<oldsize+1;i++) I[V[i]]=i; |
} |
static off_t matchlen(u_char *old,off_t oldsize,u_char *_new,off_t newsize) |
{ |
off_t i; |
for(i=0;(i<oldsize)&&(i<newsize);i++) |
if(old[i]!=_new[i]) break; |
return i; |
} |
static off_t search(off_t *I,u_char *old,off_t oldsize, |
u_char *_new,off_t newsize,off_t st,off_t en,off_t *pos) |
{ |
off_t x,y; |
if(en-st<2) { |
x=matchlen(old+I[st],oldsize-I[st],_new,newsize); |
y=matchlen(old+I[en],oldsize-I[en],_new,newsize); |
if(x>y) { |
*pos=I[st]; |
return x; |
} else { |
*pos=I[en]; |
return y; |
} |
}; |
x=st+(en-st)/2; |
if(memcmp(old+I[x],_new,MIN(oldsize-I[x],newsize))<0) { |
return search(I,old,oldsize,_new,newsize,x,en,pos); |
} else { |
return search(I,old,oldsize,_new,newsize,st,x,pos); |
}; |
} |
static void offtout(off_t x,u_char *buf) |
{ |
off_t y; |
if(x<0) y=-x; else y=x; |
buf[0]=y%256;y-=buf[0]; |
y=y/256;buf[1]=y%256;y-=buf[1]; |
y=y/256;buf[2]=y%256;y-=buf[2]; |
y=y/256;buf[3]=y%256;y-=buf[3]; |
y=y/256;buf[4]=y%256;y-=buf[4]; |
y=y/256;buf[5]=y%256;y-=buf[5]; |
y=y/256;buf[6]=y%256;y-=buf[6]; |
y=y/256;buf[7]=y%256; |
if(x<0) buf[7]|=0x80; |
} |
int main(int argc,char *argv[]) |
{ |
int fd; |
u_char *old,*_new; |
off_t oldsize,newsize; |
off_t *I,*V; |
off_t scan,pos,len; |
off_t lastscan,lastpos,lastoffset; |
off_t oldscore,scsc; |
off_t s,Sf,lenf,Sb,lenb; |
off_t overlap,Ss,lens; |
off_t i; |
off_t dblen,eblen; |
u_char *db,*eb; |
u_char buf[8]; |
u_char header[32]; |
FILE * pf; |
BZFILE * pfbz2; |
int bz2err; |
if(argc!=4) errx(1,"usage: %s oldfile newfile patchfile\n",argv[0]); |
/* Allocate oldsize+1 bytes instead of oldsize bytes to ensure |
that we never try to malloc(0) and get a NULL pointer */ |
//org: |
//if(((fd=open(argv[1],O_RDONLY,0))<0) || |
// ((oldsize=lseek(fd,0,SEEK_END))==-1) || |
// ((old=malloc(oldsize+1))==NULL) || |
// (lseek(fd,0,SEEK_SET)!=0) || |
// (read(fd,old,oldsize)!=oldsize) || |
// (close(fd)==-1)) err(1,"%s",argv[1]); |
//new: |
//Read in chunks, don't rely on read always returns full data! |
if(((fd=open(argv[1],O_RDONLY|O_BINARY|O_NOINHERIT,0))<0) || |
((oldsize=lseek(fd,0,SEEK_END))==-1) || |
((old=(u_char*)malloc(oldsize+1))==NULL) || |
(lseek(fd,0,SEEK_SET)!=0)) |
err(1,"%s",argv[1]); |
int r=oldsize; |
while (r>0 && (i=read(fd,old+oldsize-r,r))>0) r-=i; |
if (r>0 || close(fd)==-1) err(1,"%s",argv[1]); |
if(((I=(off_t*)malloc((oldsize+1)*sizeof(off_t)))==NULL) || |
((V=(off_t*)malloc((oldsize+1)*sizeof(off_t)))==NULL)) err(1,NULL); |
qsufsort(I,V,old,oldsize); |
free(V); |
/* Allocate newsize+1 bytes instead of newsize bytes to ensure |
that we never try to malloc(0) and get a NULL pointer */ |
//org: |
//if(((fd=open(argv[2],O_RDONLY,0))<0) || |
// ((newsize=lseek(fd,0,SEEK_END))==-1) || |
// ((_new=malloc(newsize+1))==NULL) || |
// (lseek(fd,0,SEEK_SET)!=0) || |
// (read(fd,_new,newsize)!=newsize) || |
// (close(fd)==-1)) err(1,"%s",argv[2]); |
//new: |
//Read in chunks, don't rely on read always returns full data! |
if(((fd=open(argv[2],O_RDONLY|O_BINARY|O_NOINHERIT,0))<0) || |
((newsize=lseek(fd,0,SEEK_END))==-1) || |
((_new=(u_char*)malloc(newsize+1))==NULL) || |
(lseek(fd,0,SEEK_SET)!=0)) |
err(1,"%s",argv[2]); |
r=newsize; |
while (r>0 && (i=read(fd,_new+newsize-r,r))>0) r-=i; |
if (r>0 || close(fd)==-1) err(1,"%s",argv[1]); |
if(((db=(u_char*)malloc(newsize+1))==NULL) || |
((eb=(u_char*)malloc(newsize+1))==NULL)) err(1,NULL); |
dblen=0; |
eblen=0; |
/* Create the patch file */ |
//org: |
//if ((pf = fopen(argv[3], "w")) == NULL) |
//new: |
//if((fd=open(argv[3],O_CREAT|O_TRUNC|O_WRONLY|O_BINARY|O_NOINHERIT,0666))<0) |
if ((pf = fopen(argv[3], "wb")) == NULL) |
err(1,"%s",argv[3]); |
/* Header is |
0 8 "BSDIFF40" |
8 8 length of bzip2ed ctrl block |
16 8 length of bzip2ed diff block |
24 8 length of new file */ |
/* File is |
0 32 Header |
32 ?? Bzip2ed ctrl block |
?? ?? Bzip2ed diff block |
?? ?? Bzip2ed extra block */ |
memcpy(header,"BSDIFF40",8); |
offtout(0, header + 8); |
offtout(0, header + 16); |
offtout(newsize, header + 24); |
if (fwrite(header, 32, 1, pf) != 1) |
err(1, "fwrite(%s)", argv[3]); |
/* Compute the differences, writing ctrl as we go */ |
if ((pfbz2 = BZ2_bzWriteOpen(&bz2err, pf, 9, 0, 0)) == NULL) |
errx(1, "BZ2_bzWriteOpen, bz2err = %d", bz2err); |
scan=0;len=0; |
lastscan=0;lastpos=0;lastoffset=0; |
while(scan<newsize) { |
oldscore=0; |
for(scsc=scan+=len;scan<newsize;scan++) { |
len=search(I,old,oldsize,_new+scan,newsize-scan, |
0,oldsize,&pos); |
for(;scsc<scan+len;scsc++) |
if((scsc+lastoffset<oldsize) && |
(old[scsc+lastoffset] == _new[scsc])) |
oldscore++; |
if(((len==oldscore) && (len!=0)) || |
(len>oldscore+8)) break; |
if((scan+lastoffset<oldsize) && |
(old[scan+lastoffset] == _new[scan])) |
oldscore--; |
}; |
if((len!=oldscore) || (scan==newsize)) { |
s=0;Sf=0;lenf=0; |
for(i=0;(lastscan+i<scan)&&(lastpos+i<oldsize);) { |
if(old[lastpos+i]==_new[lastscan+i]) s++; |
i++; |
if(s*2-i>Sf*2-lenf) { Sf=s; lenf=i; }; |
}; |
lenb=0; |
if(scan<newsize) { |
s=0;Sb=0; |
for(i=1;(scan>=lastscan+i)&&(pos>=i);i++) { |
if(old[pos-i]==_new[scan-i]) s++; |
if(s*2-i>Sb*2-lenb) { Sb=s; lenb=i; }; |
}; |
}; |
if(lastscan+lenf>scan-lenb) { |
overlap=(lastscan+lenf)-(scan-lenb); |
s=0;Ss=0;lens=0; |
for(i=0;i<overlap;i++) { |
if(_new[lastscan+lenf-overlap+i]== |
old[lastpos+lenf-overlap+i]) s++; |
if(_new[scan-lenb+i]== |
old[pos-lenb+i]) s--; |
if(s>Ss) { Ss=s; lens=i+1; }; |
}; |
lenf+=lens-overlap; |
lenb-=lens; |
}; |
for(i=0;i<lenf;i++) |
db[dblen+i]=_new[lastscan+i]-old[lastpos+i]; |
for(i=0;i<(scan-lenb)-(lastscan+lenf);i++) |
eb[eblen+i]=_new[lastscan+lenf+i]; |
dblen+=lenf; |
eblen+=(scan-lenb)-(lastscan+lenf); |
offtout(lenf,buf); |
BZ2_bzWrite(&bz2err, pfbz2, buf, 8); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
offtout((scan-lenb)-(lastscan+lenf),buf); |
BZ2_bzWrite(&bz2err, pfbz2, buf, 8); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
offtout((pos-lenb)-(lastpos+lenf),buf); |
BZ2_bzWrite(&bz2err, pfbz2, buf, 8); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
lastscan=scan-lenb; |
lastpos=pos-lenb; |
lastoffset=pos-scan; |
}; |
}; |
BZ2_bzWriteClose(&bz2err, pfbz2, 0, NULL, NULL); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWriteClose, bz2err = %d", bz2err); |
/* Compute size of compressed ctrl data */ |
if ((len = ftell(pf)) == -1) |
err(1, "ftello"); |
offtout(len-32, header + 8); |
/* Write compressed diff data */ |
if ((pfbz2 = BZ2_bzWriteOpen(&bz2err, pf, 9, 0, 0)) == NULL) |
errx(1, "BZ2_bzWriteOpen, bz2err = %d", bz2err); |
BZ2_bzWrite(&bz2err, pfbz2, db, dblen); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
BZ2_bzWriteClose(&bz2err, pfbz2, 0, NULL, NULL); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWriteClose, bz2err = %d", bz2err); |
/* Compute size of compressed diff data */ |
if ((newsize = ftell(pf)) == -1) |
err(1, "ftello"); |
offtout(newsize - len, header + 16); |
/* Write compressed extra data */ |
if ((pfbz2 = BZ2_bzWriteOpen(&bz2err, pf, 9, 0, 0)) == NULL) |
errx(1, "BZ2_bzWriteOpen, bz2err = %d", bz2err); |
BZ2_bzWrite(&bz2err, pfbz2, eb, eblen); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
BZ2_bzWriteClose(&bz2err, pfbz2, 0, NULL, NULL); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWriteClose, bz2err = %d", bz2err); |
/* Seek to the beginning, write the header, and close the file */ |
if (fseek(pf, 0, SEEK_SET)) |
err(1, "fseeko"); |
if (fwrite(header, 32, 1, pf) != 1) |
err(1, "fwrite(%s)", argv[3]); |
if (fclose(pf)) |
err(1, "fclose"); |
/* Free the memory we used */ |
free(db); |
free(eb); |
free(I); |
free(old); |
free(_new); |
return 0; |
} |
/nw_plus/utils/source/bsdiff-4.3/bspatch.1 |
---|
0,0 → 1,59 |
.\"- |
.\" Copyright 2003-2005 Colin Percival |
.\" All rights reserved |
.\" |
.\" Redistribution and use in source and binary forms, with or without |
.\" modification, are permitted providing that the following conditions |
.\" are met: |
.\" 1. Redistributions of source code must retain the above copyright |
.\" notice, this list of conditions and the following disclaimer. |
.\" 2. Redistributions in binary form must reproduce the above copyright |
.\" notice, this list of conditions and the following disclaimer in the |
.\" documentation and/or other materials provided with the distribution. |
.\" |
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
.\" POSSIBILITY OF SUCH DAMAGE. |
.\" |
.\" $FreeBSD: src/usr.bin/bsdiff/bspatch/bspatch.1,v 1.1 2005/08/06 01:59:06 cperciva Exp $ |
.\" |
.Dd May 18, 2003 |
.Dt BSPATCH 1 |
.Os FreeBSD |
.Sh NAME |
.Nm bspatch |
.Nd apply a patch built with bsdiff(1) |
.Sh SYNOPSIS |
.Nm |
.Ao Ar oldfile Ac Ao Ar newfile Ac Ao Ar patchfile Ac |
.Sh DESCRIPTION |
.Nm |
generates |
.Ao Ar newfile Ac |
from |
.Ao Ar oldfile Ac |
and |
.Ao Ar patchfile Ac |
where |
.Ao Ar patchfile Ac |
is a binary patch built by bsdiff(1). |
.Pp |
.Nm |
uses memory equal to the size of |
.Ao Ar oldfile Ac |
plus the size of |
.Ao Ar newfile Ac , |
but can tolerate a very small working set without a dramatic loss |
of performance. |
.Sh SEE ALSO |
.Xr bsdiff 1 |
.Sh AUTHORS |
.An Colin Percival Aq cperciva@freebsd.org |
/nw_plus/utils/source/bsdiff-4.3/bspatch.c |
---|
0,0 → 1,204 |
/*- |
* Copyright 2003-2005 Colin Percival |
* All rights reserved |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted providing that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
* POSSIBILITY OF SUCH DAMAGE. |
*/ |
#if 0 |
__FBSDID("$FreeBSD: src/usr.bin/bsdiff/bspatch/bspatch.c,v 1.1 2005/08/06 01:59:06 cperciva Exp $"); |
#endif |
#include <bzlib.h> |
#include <stdlib.h> |
#include <stdio.h> |
#include <string.h> |
#include <err.h> |
#include <unistd.h> |
#include <fcntl.h> |
static off_t offtin(u_char *buf) |
{ |
off_t y; |
y=buf[7]&0x7F; |
y=y*256;y+=buf[6]; |
y=y*256;y+=buf[5]; |
y=y*256;y+=buf[4]; |
y=y*256;y+=buf[3]; |
y=y*256;y+=buf[2]; |
y=y*256;y+=buf[1]; |
y=y*256;y+=buf[0]; |
if(buf[7]&0x80) y=-y; |
return y; |
} |
int main(int argc,char * argv[]) |
{ |
FILE * f, * cpf, * dpf, * epf; |
BZFILE * cpfbz2, * dpfbz2, * epfbz2; |
int cbz2err, dbz2err, ebz2err; |
int fd; |
ssize_t oldsize,newsize; |
ssize_t bzctrllen,bzdatalen; |
u_char header[32],buf[8]; |
u_char *old, *new; |
off_t oldpos,newpos; |
off_t ctrl[3]; |
off_t lenread; |
off_t i; |
if(argc!=4) errx(1,"usage: %s oldfile newfile patchfile\n",argv[0]); |
/* Open patch file */ |
if ((f = fopen(argv[3], "r")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
/* |
File format: |
0 8 "BSDIFF40" |
8 8 X |
16 8 Y |
24 8 sizeof(newfile) |
32 X bzip2(control block) |
32+X Y bzip2(diff block) |
32+X+Y ??? bzip2(extra block) |
with control block a set of triples (x,y,z) meaning "add x bytes |
from oldfile to x bytes from the diff block; copy y bytes from the |
extra block; seek forwards in oldfile by z bytes". |
*/ |
/* Read header */ |
if (fread(header, 1, 32, f) < 32) { |
if (feof(f)) |
errx(1, "Corrupt patch\n"); |
err(1, "fread(%s)", argv[3]); |
} |
/* Check for appropriate magic */ |
if (memcmp(header, "BSDIFF40", 8) != 0) |
errx(1, "Corrupt patch\n"); |
/* Read lengths from header */ |
bzctrllen=offtin(header+8); |
bzdatalen=offtin(header+16); |
newsize=offtin(header+24); |
if((bzctrllen<0) || (bzdatalen<0) || (newsize<0)) |
errx(1,"Corrupt patch\n"); |
/* Close patch file and re-open it via libbzip2 at the right places */ |
if (fclose(f)) |
err(1, "fclose(%s)", argv[3]); |
if ((cpf = fopen(argv[3], "r")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
if (fseeko(cpf, 32, SEEK_SET)) |
err(1, "fseeko(%s, %lld)", argv[3], |
(long long)32); |
if ((cpfbz2 = BZ2_bzReadOpen(&cbz2err, cpf, 0, 0, NULL, 0)) == NULL) |
errx(1, "BZ2_bzReadOpen, bz2err = %d", cbz2err); |
if ((dpf = fopen(argv[3], "r")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
if (fseeko(dpf, 32 + bzctrllen, SEEK_SET)) |
err(1, "fseeko(%s, %lld)", argv[3], |
(long long)(32 + bzctrllen)); |
if ((dpfbz2 = BZ2_bzReadOpen(&dbz2err, dpf, 0, 0, NULL, 0)) == NULL) |
errx(1, "BZ2_bzReadOpen, bz2err = %d", dbz2err); |
if ((epf = fopen(argv[3], "r")) == NULL) |
err(1, "fopen(%s)", argv[3]); |
if (fseeko(epf, 32 + bzctrllen + bzdatalen, SEEK_SET)) |
err(1, "fseeko(%s, %lld)", argv[3], |
(long long)(32 + bzctrllen + bzdatalen)); |
if ((epfbz2 = BZ2_bzReadOpen(&ebz2err, epf, 0, 0, NULL, 0)) == NULL) |
errx(1, "BZ2_bzReadOpen, bz2err = %d", ebz2err); |
if(((fd=open(argv[1],O_RDONLY,0))<0) || |
((oldsize=lseek(fd,0,SEEK_END))==-1) || |
((old=malloc(oldsize+1))==NULL) || |
(lseek(fd,0,SEEK_SET)!=0) || |
(read(fd,old,oldsize)!=oldsize) || |
(close(fd)==-1)) err(1,"%s",argv[1]); |
if((new=malloc(newsize+1))==NULL) err(1,NULL); |
oldpos=0;newpos=0; |
while(newpos<newsize) { |
/* Read control data */ |
for(i=0;i<=2;i++) { |
lenread = BZ2_bzRead(&cbz2err, cpfbz2, buf, 8); |
if ((lenread < 8) || ((cbz2err != BZ_OK) && |
(cbz2err != BZ_STREAM_END))) |
errx(1, "Corrupt patch\n"); |
ctrl[i]=offtin(buf); |
}; |
/* Sanity-check */ |
if(newpos+ctrl[0]>newsize) |
errx(1,"Corrupt patch\n"); |
/* Read diff string */ |
lenread = BZ2_bzRead(&dbz2err, dpfbz2, new + newpos, ctrl[0]); |
if ((lenread < ctrl[0]) || |
((dbz2err != BZ_OK) && (dbz2err != BZ_STREAM_END))) |
errx(1, "Corrupt patch\n"); |
/* Add old data to diff string */ |
for(i=0;i<ctrl[0];i++) |
if((oldpos+i>=0) && (oldpos+i<oldsize)) |
new[newpos+i]+=old[oldpos+i]; |
/* Adjust pointers */ |
newpos+=ctrl[0]; |
oldpos+=ctrl[0]; |
/* Sanity-check */ |
if(newpos+ctrl[1]>newsize) |
errx(1,"Corrupt patch\n"); |
/* Read extra string */ |
lenread = BZ2_bzRead(&ebz2err, epfbz2, new + newpos, ctrl[1]); |
if ((lenread < ctrl[1]) || |
((ebz2err != BZ_OK) && (ebz2err != BZ_STREAM_END))) |
errx(1, "Corrupt patch\n"); |
/* Adjust pointers */ |
newpos+=ctrl[1]; |
oldpos+=ctrl[2]; |
}; |
/* Clean up the bzip2 reads */ |
BZ2_bzReadClose(&cbz2err, cpfbz2); |
BZ2_bzReadClose(&dbz2err, dpfbz2); |
BZ2_bzReadClose(&ebz2err, epfbz2); |
if (fclose(cpf) || fclose(dpf) || fclose(epf)) |
err(1, "fclose(%s)", argv[3]); |
/* Write the new file */ |
if(((fd=open(argv[2],O_CREAT|O_TRUNC|O_WRONLY,0666))<0) || |
(write(fd,new,newsize)!=newsize) || (close(fd)==-1)) |
err(1,"%s",argv[2]); |
free(new); |
free(old); |
return 0; |
} |
/nw_plus/utils/source/bsdiff-4.3/bsdiff.1 |
---|
0,0 → 1,63 |
.\"- |
.\" Copyright 2003-2005 Colin Percival |
.\" All rights reserved |
.\" |
.\" Redistribution and use in source and binary forms, with or without |
.\" modification, are permitted providing that the following conditions |
.\" are met: |
.\" 1. Redistributions of source code must retain the above copyright |
.\" notice, this list of conditions and the following disclaimer. |
.\" 2. Redistributions in binary form must reproduce the above copyright |
.\" notice, this list of conditions and the following disclaimer in the |
.\" documentation and/or other materials provided with the distribution. |
.\" |
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
.\" POSSIBILITY OF SUCH DAMAGE. |
.\" |
.\" $FreeBSD: src/usr.bin/bsdiff/bsdiff/bsdiff.1,v 1.1 2005/08/06 01:59:05 cperciva Exp $ |
.\" |
.Dd May 18, 2003 |
.Dt BSDIFF 1 |
.Os FreeBSD |
.Sh NAME |
.Nm bsdiff |
.Nd generate a patch between two binary files |
.Sh SYNOPSIS |
.Nm |
.Ao Ar oldfile Ac Ao Ar newfile Ac Ao Ar patchfile Ac |
.Sh DESCRIPTION |
.Nm |
compares |
.Ao Ar oldfile Ac |
to |
.Ao Ar newfile Ac |
and writes to |
.Ao Ar patchfile Ac |
a binary patch suitable for use by bspatch(1). |
When |
.Ao Ar oldfile Ac |
and |
.Ao Ar newfile Ac |
are two versions of an executable program, the |
patches produced are on average a factor of five smaller |
than those produced by any other binary patch tool known |
to the author. |
.Pp |
.Nm |
uses memory equal to 17 times the size of |
.Ao Ar oldfile Ac , |
and requires |
an absolute minimum working set size of 8 times the size of oldfile. |
.Sh SEE ALSO |
.Xr bspatch 1 |
.Sh AUTHORS |
.An Colin Percival Aq cperciva@freebsd.org |
/nw_plus/utils/source/bsdiff-4.3/Makefile |
---|
0,0 → 1,15 |
CFLAGS += -O3 -lbz2 |
PREFIX ?= /usr/local |
INSTALL_PROGRAM ?= ${INSTALL} -c -s -m 555 |
INSTALL_MAN ?= ${INSTALL} -c -m 444 |
all: bsdiff bspatch |
bsdiff: bsdiff.c |
bspatch: bspatch.c |
install: |
${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin |
.ifndef WITHOUT_MAN |
${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1 |
.endif |
/nw_plus/utils/source/bsdiff-4.3/bsdiff.c |
---|
0,0 → 1,404 |
/*- |
* Copyright 2003-2005 Colin Percival |
* All rights reserved |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted providing that the following conditions |
* are met: |
* 1. Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* 2. Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY |
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
* POSSIBILITY OF SUCH DAMAGE. |
*/ |
#if 0 |
__FBSDID("$FreeBSD: src/usr.bin/bsdiff/bsdiff/bsdiff.c,v 1.1 2005/08/06 01:59:05 cperciva Exp $"); |
#endif |
#include <sys/types.h> |
#include <bzlib.h> |
#include <err.h> |
#include <fcntl.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <unistd.h> |
#define MIN(x,y) (((x)<(y)) ? (x) : (y)) |
static void split(off_t *I,off_t *V,off_t start,off_t len,off_t h) |
{ |
off_t i,j,k,x,tmp,jj,kk; |
if(len<16) { |
for(k=start;k<start+len;k+=j) { |
j=1;x=V[I[k]+h]; |
for(i=1;k+i<start+len;i++) { |
if(V[I[k+i]+h]<x) { |
x=V[I[k+i]+h]; |
j=0; |
}; |
if(V[I[k+i]+h]==x) { |
tmp=I[k+j];I[k+j]=I[k+i];I[k+i]=tmp; |
j++; |
}; |
}; |
for(i=0;i<j;i++) V[I[k+i]]=k+j-1; |
if(j==1) I[k]=-1; |
}; |
return; |
}; |
x=V[I[start+len/2]+h]; |
jj=0;kk=0; |
for(i=start;i<start+len;i++) { |
if(V[I[i]+h]<x) jj++; |
if(V[I[i]+h]==x) kk++; |
}; |
jj+=start;kk+=jj; |
i=start;j=0;k=0; |
while(i<jj) { |
if(V[I[i]+h]<x) { |
i++; |
} else if(V[I[i]+h]==x) { |
tmp=I[i];I[i]=I[jj+j];I[jj+j]=tmp; |
j++; |
} else { |
tmp=I[i];I[i]=I[kk+k];I[kk+k]=tmp; |
k++; |
}; |
}; |
while(jj+j<kk) { |
if(V[I[jj+j]+h]==x) { |
j++; |
} else { |
tmp=I[jj+j];I[jj+j]=I[kk+k];I[kk+k]=tmp; |
k++; |
}; |
}; |
if(jj>start) split(I,V,start,jj-start,h); |
for(i=0;i<kk-jj;i++) V[I[jj+i]]=kk-1; |
if(jj==kk-1) I[jj]=-1; |
if(start+len>kk) split(I,V,kk,start+len-kk,h); |
} |
static void qsufsort(off_t *I,off_t *V,u_char *old,off_t oldsize) |
{ |
off_t buckets[256]; |
off_t i,h,len; |
for(i=0;i<256;i++) buckets[i]=0; |
for(i=0;i<oldsize;i++) buckets[old[i]]++; |
for(i=1;i<256;i++) buckets[i]+=buckets[i-1]; |
for(i=255;i>0;i--) buckets[i]=buckets[i-1]; |
buckets[0]=0; |
for(i=0;i<oldsize;i++) I[++buckets[old[i]]]=i; |
I[0]=oldsize; |
for(i=0;i<oldsize;i++) V[i]=buckets[old[i]]; |
V[oldsize]=0; |
for(i=1;i<256;i++) if(buckets[i]==buckets[i-1]+1) I[buckets[i]]=-1; |
I[0]=-1; |
for(h=1;I[0]!=-(oldsize+1);h+=h) { |
len=0; |
for(i=0;i<oldsize+1;) { |
if(I[i]<0) { |
len-=I[i]; |
i-=I[i]; |
} else { |
if(len) I[i-len]=-len; |
len=V[I[i]]+1-i; |
split(I,V,i,len,h); |
i+=len; |
len=0; |
}; |
}; |
if(len) I[i-len]=-len; |
}; |
for(i=0;i<oldsize+1;i++) I[V[i]]=i; |
} |
static off_t matchlen(u_char *old,off_t oldsize,u_char *new,off_t newsize) |
{ |
off_t i; |
for(i=0;(i<oldsize)&&(i<newsize);i++) |
if(old[i]!=new[i]) break; |
return i; |
} |
static off_t search(off_t *I,u_char *old,off_t oldsize, |
u_char *new,off_t newsize,off_t st,off_t en,off_t *pos) |
{ |
off_t x,y; |
if(en-st<2) { |
x=matchlen(old+I[st],oldsize-I[st],new,newsize); |
y=matchlen(old+I[en],oldsize-I[en],new,newsize); |
if(x>y) { |
*pos=I[st]; |
return x; |
} else { |
*pos=I[en]; |
return y; |
} |
}; |
x=st+(en-st)/2; |
if(memcmp(old+I[x],new,MIN(oldsize-I[x],newsize))<0) { |
return search(I,old,oldsize,new,newsize,x,en,pos); |
} else { |
return search(I,old,oldsize,new,newsize,st,x,pos); |
}; |
} |
static void offtout(off_t x,u_char *buf) |
{ |
off_t y; |
if(x<0) y=-x; else y=x; |
buf[0]=y%256;y-=buf[0]; |
y=y/256;buf[1]=y%256;y-=buf[1]; |
y=y/256;buf[2]=y%256;y-=buf[2]; |
y=y/256;buf[3]=y%256;y-=buf[3]; |
y=y/256;buf[4]=y%256;y-=buf[4]; |
y=y/256;buf[5]=y%256;y-=buf[5]; |
y=y/256;buf[6]=y%256;y-=buf[6]; |
y=y/256;buf[7]=y%256; |
if(x<0) buf[7]|=0x80; |
} |
int main(int argc,char *argv[]) |
{ |
int fd; |
u_char *old,*new; |
off_t oldsize,newsize; |
off_t *I,*V; |
off_t scan,pos,len; |
off_t lastscan,lastpos,lastoffset; |
off_t oldscore,scsc; |
off_t s,Sf,lenf,Sb,lenb; |
off_t overlap,Ss,lens; |
off_t i; |
off_t dblen,eblen; |
u_char *db,*eb; |
u_char buf[8]; |
u_char header[32]; |
FILE * pf; |
BZFILE * pfbz2; |
int bz2err; |
if(argc!=4) errx(1,"usage: %s oldfile newfile patchfile\n",argv[0]); |
/* Allocate oldsize+1 bytes instead of oldsize bytes to ensure |
that we never try to malloc(0) and get a NULL pointer */ |
if(((fd=open(argv[1],O_RDONLY,0))<0) || |
((oldsize=lseek(fd,0,SEEK_END))==-1) || |
((old=malloc(oldsize+1))==NULL) || |
(lseek(fd,0,SEEK_SET)!=0) || |
(read(fd,old,oldsize)!=oldsize) || |
(close(fd)==-1)) err(1,"%s",argv[1]); |
if(((I=malloc((oldsize+1)*sizeof(off_t)))==NULL) || |
((V=malloc((oldsize+1)*sizeof(off_t)))==NULL)) err(1,NULL); |
qsufsort(I,V,old,oldsize); |
free(V); |
/* Allocate newsize+1 bytes instead of newsize bytes to ensure |
that we never try to malloc(0) and get a NULL pointer */ |
if(((fd=open(argv[2],O_RDONLY,0))<0) || |
((newsize=lseek(fd,0,SEEK_END))==-1) || |
((new=malloc(newsize+1))==NULL) || |
(lseek(fd,0,SEEK_SET)!=0) || |
(read(fd,new,newsize)!=newsize) || |
(close(fd)==-1)) err(1,"%s",argv[2]); |
if(((db=malloc(newsize+1))==NULL) || |
((eb=malloc(newsize+1))==NULL)) err(1,NULL); |
dblen=0; |
eblen=0; |
/* Create the patch file */ |
if ((pf = fopen(argv[3], "w")) == NULL) |
err(1, "%s", argv[3]); |
/* Header is |
0 8 "BSDIFF40" |
8 8 length of bzip2ed ctrl block |
16 8 length of bzip2ed diff block |
24 8 length of new file */ |
/* File is |
0 32 Header |
32 ?? Bzip2ed ctrl block |
?? ?? Bzip2ed diff block |
?? ?? Bzip2ed extra block */ |
memcpy(header,"BSDIFF40",8); |
offtout(0, header + 8); |
offtout(0, header + 16); |
offtout(newsize, header + 24); |
if (fwrite(header, 32, 1, pf) != 1) |
err(1, "fwrite(%s)", argv[3]); |
/* Compute the differences, writing ctrl as we go */ |
if ((pfbz2 = BZ2_bzWriteOpen(&bz2err, pf, 9, 0, 0)) == NULL) |
errx(1, "BZ2_bzWriteOpen, bz2err = %d", bz2err); |
scan=0;len=0; |
lastscan=0;lastpos=0;lastoffset=0; |
while(scan<newsize) { |
oldscore=0; |
for(scsc=scan+=len;scan<newsize;scan++) { |
len=search(I,old,oldsize,new+scan,newsize-scan, |
0,oldsize,&pos); |
for(;scsc<scan+len;scsc++) |
if((scsc+lastoffset<oldsize) && |
(old[scsc+lastoffset] == new[scsc])) |
oldscore++; |
if(((len==oldscore) && (len!=0)) || |
(len>oldscore+8)) break; |
if((scan+lastoffset<oldsize) && |
(old[scan+lastoffset] == new[scan])) |
oldscore--; |
}; |
if((len!=oldscore) || (scan==newsize)) { |
s=0;Sf=0;lenf=0; |
for(i=0;(lastscan+i<scan)&&(lastpos+i<oldsize);) { |
if(old[lastpos+i]==new[lastscan+i]) s++; |
i++; |
if(s*2-i>Sf*2-lenf) { Sf=s; lenf=i; }; |
}; |
lenb=0; |
if(scan<newsize) { |
s=0;Sb=0; |
for(i=1;(scan>=lastscan+i)&&(pos>=i);i++) { |
if(old[pos-i]==new[scan-i]) s++; |
if(s*2-i>Sb*2-lenb) { Sb=s; lenb=i; }; |
}; |
}; |
if(lastscan+lenf>scan-lenb) { |
overlap=(lastscan+lenf)-(scan-lenb); |
s=0;Ss=0;lens=0; |
for(i=0;i<overlap;i++) { |
if(new[lastscan+lenf-overlap+i]== |
old[lastpos+lenf-overlap+i]) s++; |
if(new[scan-lenb+i]== |
old[pos-lenb+i]) s--; |
if(s>Ss) { Ss=s; lens=i+1; }; |
}; |
lenf+=lens-overlap; |
lenb-=lens; |
}; |
for(i=0;i<lenf;i++) |
db[dblen+i]=new[lastscan+i]-old[lastpos+i]; |
for(i=0;i<(scan-lenb)-(lastscan+lenf);i++) |
eb[eblen+i]=new[lastscan+lenf+i]; |
dblen+=lenf; |
eblen+=(scan-lenb)-(lastscan+lenf); |
offtout(lenf,buf); |
BZ2_bzWrite(&bz2err, pfbz2, buf, 8); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
offtout((scan-lenb)-(lastscan+lenf),buf); |
BZ2_bzWrite(&bz2err, pfbz2, buf, 8); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
offtout((pos-lenb)-(lastpos+lenf),buf); |
BZ2_bzWrite(&bz2err, pfbz2, buf, 8); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
lastscan=scan-lenb; |
lastpos=pos-lenb; |
lastoffset=pos-scan; |
}; |
}; |
BZ2_bzWriteClose(&bz2err, pfbz2, 0, NULL, NULL); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWriteClose, bz2err = %d", bz2err); |
/* Compute size of compressed ctrl data */ |
if ((len = ftello(pf)) == -1) |
err(1, "ftello"); |
offtout(len-32, header + 8); |
/* Write compressed diff data */ |
if ((pfbz2 = BZ2_bzWriteOpen(&bz2err, pf, 9, 0, 0)) == NULL) |
errx(1, "BZ2_bzWriteOpen, bz2err = %d", bz2err); |
BZ2_bzWrite(&bz2err, pfbz2, db, dblen); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
BZ2_bzWriteClose(&bz2err, pfbz2, 0, NULL, NULL); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWriteClose, bz2err = %d", bz2err); |
/* Compute size of compressed diff data */ |
if ((newsize = ftello(pf)) == -1) |
err(1, "ftello"); |
offtout(newsize - len, header + 16); |
/* Write compressed extra data */ |
if ((pfbz2 = BZ2_bzWriteOpen(&bz2err, pf, 9, 0, 0)) == NULL) |
errx(1, "BZ2_bzWriteOpen, bz2err = %d", bz2err); |
BZ2_bzWrite(&bz2err, pfbz2, eb, eblen); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWrite, bz2err = %d", bz2err); |
BZ2_bzWriteClose(&bz2err, pfbz2, 0, NULL, NULL); |
if (bz2err != BZ_OK) |
errx(1, "BZ2_bzWriteClose, bz2err = %d", bz2err); |
/* Seek to the beginning, write the header, and close the file */ |
if (fseeko(pf, 0, SEEK_SET)) |
err(1, "fseeko"); |
if (fwrite(header, 32, 1, pf) != 1) |
err(1, "fwrite(%s)", argv[3]); |
if (fclose(pf)) |
err(1, "fclose"); |
/* Free the memory we used */ |
free(db); |
free(eb); |
free(I); |
free(old); |
free(new); |
return 0; |
} |
/nw_plus/utils/source/uips |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils/source |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils/linux/i586 |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils/linux/x86_64 |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils/linux |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils/mac |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/utils |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/NWinter+_To_Do.txt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Modified: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
+text/plain |
\ No newline at end of property |
/nw_plus/NWinter+_Readme.txt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Modified: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
+text/plain |
\ No newline at end of property |
/nw_plus/nw_dp_xxx.def |
---|
7,3 → 7,4 |
include nw_dp.def |
include nwinter/xxx.def |
include nw_hrp/xxx.def |
/nw_plus/nw_dp.def |
---|
6,5 → 6,7 |
*/ |
include dukeplus.def |
include nw_plus.def |
include nwinter_hrp.def |
include nwinter/dp.def |
include nw_hrp/dp.def |
/nw_plus/nwinter_hrp.def |
---|
5,12 → 5,8 |
-------------------------------------------------------------------------------- |
*/ |
include nwinter/undef.def |
include nwinter/copies.def |
include nwinter/8bit.def |
include nwinter/sprites.def |
include nwinter/screen.def |
include nwinter/textures.def |
include nwinter/skyboxes.def |
include nwinter/music.def |
include nwinter/sounds.def |
include nw_hrp/copies.def |
include nw_hrp/sprites.def |
include nw_hrp/screen.def |
include nw_hrp/textures.def |
include nw_hrp/skyboxes.def |
/nw_plus/nw_xxx.def |
---|
7,3 → 7,4 |
include nwinter.def |
include nwinter/xxx.def |
include nw_hrp/xxx.def |
/nw_plus/NWActor.con |
---|
63,10 → 63,14 |
{ |
ifpdistl 1024 |
{ |
getplayer[THISACTOR].i temp |
setactor[temp].htextra SNOWBALLAMOUNT |
setactor[temp].htpicnum SNOWBALL |
getplayer[THISACTOR].i nw_temp |
setactor[nw_temp].htextra SNOWBALLAMOUNT |
setactor[nw_temp].htpicnum SNOWBALL |
// getactor[THISACTOR].owner nw_temp2 |
setactor[nw_temp].htowner nw_owner |
// addphealth SNOWBALLAMOUNT |
debris SCRAP3 5 |
globalsound DUKE_GRUNT |
state headhitstate |
192,18 → 196,6 |
ifaction ASNOWMANDEAD |
{ |
ifrespawn |
{ |
ifcount RESPAWNACTORTIME |
{ |
spawn TRANSPORTERSTAR |
cstat 257 |
strength SNOWMANSTRENGTH |
ai AISNOWFOLLOW |
} |
} |
else |
{ |
strength 0 |
ifhitweapon |
{ |
215,11 → 207,20 |
killit |
} |
} |
ifrespawn |
{ |
ifcount RESPAWNACTORTIME |
{ |
spawn TRANSPORTERSTAR |
cstat 257 |
strength SNOWMANSTRENGTH |
ai AISNOWFOLLOW |
} |
} |
break |
} |
else |
ifaction ASNOWMANFROZEN |
else ifaction ASNOWMANFROZEN |
{ |
ifcount THAWTIME |
{ |
244,6 → 245,7 |
sound GLASS_BREAKING |
killit |
} |
ifp pfacing |
ifpdistl FROZENQUICKKICKDIST |
pkick |
256,7 → 258,6 |
break |
} |
ifhitweapon state snowmanhitstate |
ifp pdead break |
366,9 → 367,9 |
state stomphisfreakingass |
ifp pdead nullop |
ifp pdead |
nullop |
else |
{ |
ifpdistl SQUISHABLEDISTANCE |
{ |
addphealth -1000 |
377,7 → 378,6 |
state standard_pjibs |
sound SANTA_TRASH9 |
} |
} |
ends |
398,13 → 398,10 |
spritepal 9 |
} |
else |
{ |
ifrnd 128 |
spritepal 3 |
} |
} |
else |
ifspritepal 3 |
else ifspritepal 3 |
{ |
ifpdistg 4096 |
{ |
419,8 → 416,7 |
spritepal 9 |
} |
} |
else |
ifspritepal 9 |
else ifspritepal 9 |
{ |
ifpdistg 4096 |
{ |
430,16 → 426,22 |
spritepal 3 |
} |
else |
{ |
ifrnd 128 |
spritepal 9 |
} |
} |
sound SELECT_WEAPON |
ends |
state botshootrpg // so Santa shoots the player's RPG and not the Commander's |
eshoot RPG |
setactor[RETURN].extra RPG_WEAPON_STRENGTH |
setactor[RETURN].xrepeat 14 |
setactor[RETURN].yrepeat 14 |
sound RPG_SHOOT |
ends |
state botquickshootstate |
ifspritepal 0 nullop else break |
448,20 → 450,19 |
ifp pdead break |
ifspritepal 0 |
state botshootrpg |
else ifspritepal 3 |
{ |
shoot RPG sound RPG_SHOOT |
shoot CHAINGUN |
sound CHAINGUN_FIRE |
} |
else |
ifspritepal 3 |
else ifspritepal 9 |
{ |
shoot CHAINGUN sound CHAINGUN_FIRE |
// shoot SHRINKER |
// sound SHRINKER_FIRE |
shoot SHOTGUN |
sound SHOTGUN_FIRE |
} |
else |
ifspritepal 9 |
{ |
// shoot SHRINKER sound SHRINKER_FIRE |
shoot SHOTGUN sound SHOTGUN_FIRE |
} |
ends |
480,19 → 481,15 |
ifactioncount 5 |
{ |
resetactioncount |
shoot RPG |
sound RPG_SHOOT |
state botshootrpg |
} |
ifpdistl 4096 |
{ |
ifrnd 5 |
state botchangeweaponstate |
} |
} |
} |
else |
ifspritepal 3 |
else ifspritepal 3 |
{ |
ifcount 5 |
{ |
499,14 → 496,18 |
ifactioncount 1 |
{ |
resetactioncount |
shoot SHOTSPARK1 shoot CHAINGUN shoot CHAINGUN shoot CHAINGUN |
shoot SHOTSPARK1 |
shoot CHAINGUN |
shoot CHAINGUN |
shoot CHAINGUN |
sound CHAINGUN_FIRE |
} |
ifrnd 1 state botchangeweaponstate |
ifrnd 1 |
state botchangeweaponstate |
} |
} |
else |
ifspritepal 9 |
else ifspritepal 9 |
{ |
ifcount 5 |
{ |
519,20 → 520,17 |
sound SHOTGUN_FIRE |
} |
ifp ponsteroids |
{ |
ifrnd 64 |
state botchangeweaponstate |
ifrnd 1 |
state botchangeweaponstate |
} |
ifrnd 1 state botchangeweaponstate |
} |
} |
ends |
state dudehurt |
/* |
ifstrength YELLHURTSOUNDSTRENGTHMP |
{ |
608,7 → 606,13 |
ifdead |
{ |
ifspritepal 21 { state miniboss break } else soundonce SANTA_DEAD |
ifspritepal 21 |
{ |
state miniboss |
break |
} |
else |
soundonce SANTA_DEAD |
ifwasweapon FREEZEBLAST |
{ |
619,8 → 623,7 |
sound SOMETHINGFROZE |
break |
} |
else |
ifwasweapon GROWSPARK |
else ifwasweapon GROWSPARK |
{ |
cstat 0 |
sound ACTOR_GROWING |
627,8 → 630,7 |
ai AIBOTWALKGROW |
break |
} |
else |
ifwasweapon RADIUSEXPLOSION |
else ifwasweapon RADIUSEXPLOSION |
{ |
// state standard_pjibs |
// state standard_pjibs |
639,8 → 641,7 |
endofgame 52 |
killit |
} |
else |
ifwasweapon RPG |
else ifwasweapon RPG |
{ |
// state standard_pjibs |
// state standard_pjibs |
663,7 → 664,9 |
ifwasweapon SHRINKSPARK |
{ |
ifai AIBOTWALKSTEROIDS nullop else |
ifai AIBOTWALKSTEROIDS |
nullop |
else |
{ |
ai AIBOTWALKSHRINK |
break |
694,13 → 697,13 |
} |
ifgapzl 100 |
{ |
} |
nullop |
else |
{ |
ifnotmoving |
{ |
ifrnd 4 operate |
ifrnd 4 |
operate |
ifpdistl 8000 |
{ |
ai AIFLYUPMOMENT |
709,6 → 712,7 |
} |
else |
ai AIBOTWALKJUMP1 |
break |
} |
} |
722,16 → 726,13 |
state botquickshootstate |
ifai AIBOTWALKJUMP1 |
{ |
ifactioncount 2 |
{ |
ai AIBOTWALKJUMP2 |
break |
} |
} |
ifai AIBOTWALKJUMP2 |
{ |
ifactioncount 1 |
{ |
state botshootstate |
742,7 → 743,6 |
ai AIBOTWALKHUNT |
} |
} |
} |
ends |
759,7 → 759,6 |
ifcansee |
{ |
ifpdistl 1024 |
{ |
ifrnd 24 |
{ |
ifp pdead |
769,16 → 768,13 |
break |
} |
} |
} |
else |
{ |
ifphealthl 50 |
ifrnd 64 |
ifpdistl 8000 |
{ |
ifrnd 80 |
sound SANTA_TRASH1 |
} |
ifrnd 128 |
{ |
828,12 → 824,14 |
} |
ifp pfacing |
ifrnd 16 |
{ |
globalsound SANTA_TRASH8 |
} |
sound KICK_HIT |
ifspritepal 21 addphealth -1 else addphealth -6 |
ifspritepal 21 |
addphealth -1 |
else |
addphealth -6 |
state dukehurt |
} |
862,8 → 860,7 |
break |
} |
} |
else |
ifai AIBOTWALKSTRJUMP2 |
else ifai AIBOTWALKSTRJUMP2 |
{ |
ifcount 18 |
{ |
895,10 → 892,8 |
count 10 |
break |
} |
} |
else |
ifai AIBOTWALKSTRJUMP2S |
else ifai AIBOTWALKSTRJUMP2S |
{ |
ifcount 18 |
{ |
912,7 → 907,6 |
} |
} |
ends |
928,15 → 922,14 |
ai AIBOTWALKSTRJUMP1 |
break |
} |
ifrnd 64 |
ai AIBOTWALKHUNT |
} |
else |
{ |
ifrnd 128 |
ifnotmoving |
ai AIBOTWALKSTRJUMP1 |
} |
ends |
952,17 → 945,12 |
} |
ifcount 150 |
{ |
ai AIBOTWALKHUNT |
} |
ifcount 34 |
{ |
} |
nullop |
else |
{ |
sizeto 42 36 |
} |
ends |
969,13 → 957,9 |
state botletfallstate |
ifactioncount 5 |
{ |
} |
else |
ifactioncount 6 |
{ |
nullop |
else ifactioncount 6 |
soundonce SANTA_TRASH7 |
} |
ifcansee |
{ |
1000,7 → 984,6 |
ifai 0 |
{ |
ifspawnedby RECON |
{ |
spawn PIGCOP |
1017,37 → 1000,35 |
ifspritepal 21 |
{ |
strength MINIBOSSSTRENGTH |
ifrnd 64 soundonce SANTA_TRASH9 |
ifrnd 64 |
soundonce SANTA_TRASH9 |
} |
else spritepal 0 |
else |
spritepal 0 |
sound INSERT_CLIP |
break |
} |
fall |
sleeptime 300 |
ifaction ABOTWDEAD break |
else |
ifaction ABOTWALKFROZEN |
ifaction ABOTWDEAD |
break |
else ifaction ABOTWALKFROZEN |
{ |
ifcount THAWTIME |
{ |
ai AIBOTWALKHUNT |
getlastpal |
} |
else |
ifcount FROZENDRIPTIME |
{ |
else ifcount FROZENDRIPTIME |
ifactioncount 26 |
{ |
spawn WATERDRIP |
resetactioncount |
} |
} |
ifhitweapon |
{ |
ifwasweapon FREEZEBLAST |
1067,22 → 1048,25 |
state miniboss |
break |
} |
else |
{ |
endofgame 52 |
killit |
} |
} |
ifp pfacing |
ifpdistl FROZENQUICKKICKDIST |
pkick |
break |
} |
else |
ifai AIBOTWALKSTEROIDS |
else ifai AIBOTWALKSTEROIDS |
{ |
state steroidswalk |
break |
} |
else |
ifai AIBOTWALKGROW |
else ifai AIBOTWALKGROW |
{ |
ifcount 32 |
{ |
1099,9 → 1083,12 |
state miniboss |
break |
} |
else |
{ |
endofgame 52 |
killit |
} |
} |
else |
{ |
sizeto MAXXSTRETCH MAXYSTRETCH |
1109,26 → 1096,21 |
} |
break |
} |
else |
ifai AIBOTWALKSHRINK |
else ifai AIBOTWALKSHRINK |
{ |
ifcount SHRUNKDONECOUNT |
ai AIBOTWALKHUNT |
else |
{ |
ifcount SHRUNKCOUNT |
{ |
spawn FRAMEEFFECT1 |
sizeto 42 36 |
} |
else |
{ |
ifcount 31 |
else ifcount 31 |
nullop |
else |
else ifcount 30 |
{ |
ifcount 30 |
{ |
ifrnd 255 |
{ |
sound DUKE_TAKEPILLS |
1136,7 → 1118,6 |
break |
} |
} |
} |
ifcount 32 |
{ |
ifpdistl SQUISHABLEDISTANCE |
1144,11 → 1125,7 |
state standard_pjibs |
sound SQUISH2 |
spawn BLOODPOOL |
pkick |
// state headhitstate |
// state headhitstate |
// state headhitstate |
state headhitstate |
pstomp |
ifspritepal 21 |
{ |
state miniboss |
1160,11 → 1137,12 |
sound SANTA_DEAD |
else |
sound SANTA_TRASH9 |
} |
endofgame 52 |
killit |
} |
} |
} |
else |
{ |
sizeto MINXSTRETCH MINYSTRETCH |
1171,11 → 1149,9 |
spawn FRAMEEFFECT1 |
} |
} |
break |
} |
else |
ifai AIBOTWALKDYING |
else ifai AIBOTWALKDYING |
{ |
state botwalkdyingstate |
break |
1189,18 → 1165,13 |
state botwalkhitstate |
break |
} |
else |
ifai AIWALKFALLHARD |
else ifai AIWALKFALLHARD |
{ |
iffloordistl 16 |
{ |
ai AIBOTWALKHUNT |
} |
else |
{ |
break |
} |
} |
else |
{ |
ifai AIWALKFALL |
1207,15 → 1178,11 |
{ |
state botshootstate |
iffloordistl 16 |
{ |
ai AIBOTWALKHUNT |
} |
else |
{ |
break |
} |
} |
} |
ifp pshrunk |
state stomphisfreakingass |
1229,8 → 1196,7 |
} |
ifonwater |
{ |
} |
nullop |
else |
{ |
ifp pjetpack |
1245,7 → 1211,6 |
ifp phigher |
{ |
ifrnd 1 |
{ |
ifrnd 196 |
{ |
ai AIFLYWAIT |
1252,7 → 1217,6 |
cactor SOBBOTFLY |
} |
} |
} |
ifai AIWALKWAIT |
{ |
1259,41 → 1223,17 |
ai AIBOTWALKSEEK |
break |
} |
else |
ifai AIBOTWALKSEEK |
state botwalkseekstate |
else |
ifai AIBOTWALKHUNT |
state botwalkhuntstate |
else |
ifai AIBOTWALKJUMP1 |
state botwalkjumpstate |
else |
ifai AIBOTWALKJUMP2 |
state botwalkjumpstate |
else |
ifai AIBOTWALKKICK |
state botwalkkickstate |
else |
ifai AIBOTWALKSTRAIGHT |
state botwalkstraightstate |
else |
ifai AIBOTWALKSTRJUMP1 |
state botwalkstraightjumpstate |
else |
ifai AIBOTWALKSTRJUMP2 |
state botwalkstraightjumpstate |
else |
ifai AIBOTLETFALL |
state botletfallstate |
else |
ifai AIBOTWALKSTRJUMP1S |
state botjumpshootstate |
else |
ifai AIBOTWALKSTRJUMP2S |
state botjumpshootstate |
else ifai AIBOTWALKSEEK state botwalkseekstate |
else ifai AIBOTWALKHUNT state botwalkhuntstate |
else ifai AIBOTWALKJUMP1 state botwalkjumpstate |
else ifai AIBOTWALKJUMP2 state botwalkjumpstate |
else ifai AIBOTWALKKICK state botwalkkickstate |
else ifai AIBOTWALKSTRAIGHT state botwalkstraightstate |
else ifai AIBOTWALKSTRJUMP1 state botwalkstraightjumpstate |
else ifai AIBOTWALKSTRJUMP2 state botwalkstraightjumpstate |
else ifai AIBOTLETFALL state botletfallstate |
else ifai AIBOTWALKSTRJUMP1S state botjumpshootstate |
else ifai AIBOTWALKSTRJUMP2S state botjumpshootstate |
enda |
state botflydyingstate |
1306,11 → 1246,13 |
ifactioncount 5 |
{ |
action ABOTFLYDEAD |
ifspritepal 21 |
{ |
state miniboss |
break |
} |
else |
endofgame 52 |
} |
1352,9 → 1294,7 |
} |
} |
else |
{ |
ai AIBOTFLYSEEKUP |
} |
ifcount 10 |
ai AIBOTFLYDOWN |
1369,7 → 1309,13 |
ifdead |
{ |
ifspritepal 21 { state miniboss break } else sound SANTA_DEAD |
ifspritepal 21 |
{ |
state miniboss |
break |
} |
else |
sound SANTA_DEAD |
ifwasweapon FREEZEBLAST |
{ |
1380,8 → 1326,7 |
sound SOMETHINGFROZE |
break |
} |
else |
ifwasweapon GROWSPARK |
else ifwasweapon GROWSPARK |
{ |
cstat 0 |
sound ACTOR_GROWING |
1388,8 → 1333,7 |
ai AIBOTFLYGROW |
break |
} |
else |
ifwasweapon RADIUSEXPLOSION |
else ifwasweapon RADIUSEXPLOSION |
{ |
// state standard_pjibs |
// state standard_pjibs |
1400,8 → 1344,7 |
endofgame 52 |
killit |
} |
else |
ifwasweapon RPG |
else ifwasweapon RPG |
{ |
// state standard_pjibs |
// state standard_pjibs |
1413,11 → 1356,8 |
killit |
} |
else |
{ |
ai AIBOTFLYDYING |
} |
} |
else |
{ |
state dudehurt |
1425,8 → 1365,7 |
ifwasweapon SHRINKSPARK |
{ |
ifai AIBOTFLYSTEROIDS |
{ |
} |
nullop |
else |
{ |
ai AIBOTFLYSHRINK |
1446,8 → 1385,7 |
} |
ifp phigher |
{ |
} |
nullop |
else |
{ |
ai AIBOTFLYSEEKDOWN |
1466,8 → 1404,7 |
else |
{ |
ifp phigher |
{ |
} |
nullop |
else |
{ |
ai AIBOTLETFALL |
1488,17 → 1425,14 |
state botshootstate |
ifrnd 16 |
{ |
ifp phigher |
{ |
ai AIBOTFLYUP |
break |
} |
} |
ifcansee |
{ |
} |
nullop |
else |
{ |
ai AIBOTFLYSTRAIGHT |
1523,12 → 1457,9 |
} |
ifcansee |
{ |
} |
nullop |
else |
{ |
ai AIBOTFLYSTRAIGHT |
} |
ends |
1555,9 → 1486,7 |
state botshootstate |
ifcount 50 |
{ |
ai AIBOTFLYUP |
} |
ends |
1567,9 → 1496,7 |
ai AIBOTFLYSEEKDOWN |
ifcansee |
{ |
ai AIBOTFLYDOWN |
} |
else |
{ |
ifrnd 128 |
1585,17 → 1512,12 |
spawn FRAMEEFFECT1 |
ifcount 100 |
{ |
ai AIBOTFLYUP |
} |
ifcount 34 |
{ |
} |
nullop |
else |
{ |
sizeto 42 36 |
} |
ifhitweapon |
{ |
1612,8 → 1534,12 |
ifai 0 |
{ |
ifcansee nullop else { break } |
ifspritepal 21 strength MINIBOSSSTRENGTH |
ifcansee |
nullop |
else |
break |
ifspritepal 21 |
strength MINIBOSSSTRENGTH |
sizeat 42 36 |
cstat 257 |
sound INSERT_CLIP |
1622,15 → 1548,12 |
break |
} |
fall |
sleeptime 300 |
ifaction ABOTFLYDEAD |
break |
else |
ifaction ABOTFLYFROZEN |
else ifaction ABOTFLYFROZEN |
{ |
ifcount THAWTIME |
{ |
1637,8 → 1560,7 |
ai AIBOTFLYUP |
getlastpal |
} |
else |
ifcount FROZENDRIPTIME |
else ifcount FROZENDRIPTIME |
{ |
ifactioncount 26 |
{ |
1666,9 → 1588,12 |
state miniboss |
break |
} |
else |
{ |
endofgame 52 |
killit |
} |
} |
ifp pfacing |
ifpdistl FROZENQUICKKICKDIST |
1675,15 → 1600,13 |
pkick |
break |
} |
else |
ifai AIBOTFLYSTEROIDS |
else ifai AIBOTFLYSTEROIDS |
{ |
soundonce DUKE_JETPACK_IDLE |
state steroidsfly |
break |
} |
else |
ifai AIBOTFLYGROW |
else ifai AIBOTFLYGROW |
{ |
ifcount 32 |
{ |
1700,9 → 1623,12 |
state miniboss |
break |
} |
else |
{ |
endofgame 52 |
killit |
} |
} |
else |
{ |
sizeto MAXXSTRETCH MAXYSTRETCH |
1710,13 → 1636,11 |
} |
break |
} |
else |
ifai AIBOTFLYSHRINK |
else ifai AIBOTFLYSHRINK |
{ |
ifcount SHRUNKDONECOUNT |
ai AIBOTFLYUP |
else |
ifcount SHRUNKCOUNT |
else ifcount SHRUNKCOUNT |
{ |
spawn FRAMEEFFECT1 |
sizeto 42 36 |
1725,10 → 1649,7 |
{ |
ifcount 31 |
nullop |
else |
{ |
ifcount 30 |
{ |
else ifcount 30 |
ifrnd 255 |
{ |
sound DUKE_TAKEPILLS |
1735,11 → 1656,9 |
ai AIBOTFLYSTEROIDS |
break |
} |
} |
} |
ifcount 32 |
{ |
ifpdistl SQUISHABLEDISTANCE |
{ |
// state standard_pjibs |
1748,11 → 1667,7 |
state standard_pjibs |
sound SQUISH2 |
spawn BLOODPOOL |
pkick |
// state headhitstate |
// state headhitstate |
// state headhitstate |
state headhitstate |
pstomp |
ifspritepal 21 |
{ |
state miniboss |
1764,11 → 1679,12 |
sound SANTA_DEAD |
else |
sound SANTA_TRASH9 |
} |
endofgame 52 |
killit |
} |
} |
} |
else |
{ |
sizeto MINXSTRETCH MINYSTRETCH |
1792,28 → 1708,23 |
ifrnd 2 operate |
ifp pshrunk |
{ |
state stomphisfreakingass |
} |
ifrnd 25 |
{ |
ifp phigher |
{ |
} |
else |
{ |
ifp ponground |
{ |
nullop |
else ifp ponground |
iffloordistl 200 |
{ |
sound DUKE_JETPACK_OFF |
iffloordistl 100 ai AIWALKFALL else ai AIWALKFALLHARD |
iffloordistl 100 |
ai AIWALKFALL |
else |
ai AIWALKFALLHARD |
cactor SOBBOTWALK |
} |
} |
} |
} |
ifai AIFLYWAIT |
{ |
1822,38 → 1733,19 |
ai AIBOTFLYSEEKDOWN |
} |
ifai AIBOTFLYSEEKUP |
state botflyseekupstate |
else |
ifai AIBOTFLYSEEKDOWN |
state botflyseekdownstate |
else |
ifai AIBOTFLYDOWN |
state botflydownstate |
else |
ifai AIBOTFLYUP |
state botflyupstate |
else |
ifai AIBOTFLYDODGEUP |
state botflydodgestate |
else |
ifai AIBOTFLYDODGEDOWN |
state botflydodgestate |
else |
ifai AIFLYUPMOMENT |
state botflyupmomentstate |
else |
ifai AIFLYUPHOLD |
state botflyholdstate |
else |
ifai AIBOTFLYSTRAIGHT |
state botflystraightstate |
break |
ifai AIBOTFLYSEEKUP state botflyseekupstate |
else ifai AIBOTFLYSEEKDOWN state botflyseekdownstate |
else ifai AIBOTFLYDOWN state botflydownstate |
else ifai AIBOTFLYUP state botflyupstate |
else ifai AIBOTFLYDODGEUP state botflydodgestate |
else ifai AIBOTFLYDODGEDOWN state botflydodgestate |
else ifai AIFLYUPMOMENT state botflyupmomentstate |
else ifai AIFLYUPHOLD state botflyholdstate |
else ifai AIBOTFLYSTRAIGHT state botflystraightstate |
enda |
// Grunt |
action AELFUZIWALK 0 4 5 1 30 |
action AELFUZIRUN 0 4 5 1 15 |
action AELFUZIFROZEN 0 1 5 1 |
1888,13 → 1780,9 |
ifp pdead break |
ifpdistl 15000 |
{ |
ifrnd 16 |
{ |
ai AIELFUZIHUNTING |
} |
} |
} |
ends |
1902,7 → 1790,6 |
ifp pdead ai AIELFUZISEEKING |
ifcansee |
{ |
ifpdistl 2000 |
1910,7 → 1797,8 |
ai AIELFUZISHOOTING |
break |
} |
ifrnd 64 ifnotmoving |
ifrnd 64 |
ifnotmoving |
{ |
ai AIELFUZIJUMPING |
break |
1918,14 → 1806,11 |
ifrnd 7 |
ifpdistl 8192 |
{ |
ai AIELFUZISHOOTING |
} |
} |
else |
{ |
ifrnd 64 ai AIELFUZIIQ |
} |
ifrnd 64 |
ai AIELFUZIIQ |
ends |
1932,17 → 1817,13 |
state elfuziiqstate |
ifcansee |
{ |
ai AIELFUZIHUNTING |
} |
else |
{ |
ifrnd 16 |
ifnotmoving |
{ |
ai AIELFUZISEEKING |
} |
} |
ends |
1959,12 → 1840,11 |
sound CHAINGUN_FIRE |
shoot CHAINGUN |
} |
else { |
ifrnd 80 |
else ifrnd 80 |
{ |
sound SHRINKER_FIRE |
shoot SHRINKER |
} } |
} |
resetactioncount |
} |
ifrnd 4 |
1971,9 → 1851,7 |
ai AIELFUZIHUNTING |
} |
else |
{ |
ai AIELFUZIIQ |
} |
ends |
1996,7 → 1874,7 |
move forwardspeed 1500 |
// ai AIMOVEFORWARD NONEACTION forwardspeed faceplayer |
useractor notenemy SPECBLOOD 0 // Hendricks266 fixed this actor. Before this fix, this line said "useractor SPECBLOOD 0", and the code was all messed up. |
useractor notenemy SPECBLOOD 0 // Hendricks266 fixed this actor. Before this fix, this line said "useractor SPECBLOOD 0", and the code was shit. |
cstat 32768 |
// sizeat 42 36 |
// sizeat 32 27 |
2015,9 → 1893,7 |
ifdead |
{ |
ifrnd 128 |
{ |
spawn XMASPRESENT2 |
} |
ifwasweapon GROWSPARK |
{ |
sound ACTOR_GROWING |
2045,8 → 1921,7 |
state standard_jibs |
killit |
} |
else |
ifwasweapon RPG |
else ifwasweapon RPG |
{ |
sound SQUISH2 |
// state standard_jibs |
2056,7 → 1931,6 |
} |
else |
ai AIELFUZIDYING |
} |
else |
{ |
2066,8 → 1940,7 |
sound ACTOR_SHRINKING |
ai AIELFUZISHRINKING |
} |
else |
ifwasweapon GROWSPARK |
else ifwasweapon GROWSPARK |
sound EXPANDERHIT |
else |
ifrnd 32 |
2081,8 → 1954,7 |
ai AIELFUZISEEKING |
else |
ifcount SHRUNKCOUNT |
// sizeto 48 40 |
sizeto 32 27 |
sizeto 32 27 // sizeto 48 40 |
else |
state genericshrunkcode |
2111,16 → 1983,6 |
ifaction AELFUZIDEAD |
{ |
ifrespawn |
ifcount RESPAWNACTORTIME |
{ |
spawn TRANSPORTERSTAR |
cstat 257 |
strength ELFUZISTRENGTH |
ai AIELFUZISEEKING |
} |
else |
{ |
strength 0 |
ifhitweapon |
ifwasweapon RADIUSEXPLOSION |
2131,12 → 1993,18 |
state standard_jibs |
killit |
} |
break |
ifrespawn |
ifcount RESPAWNACTORTIME |
{ |
spawn TRANSPORTERSTAR |
cstat 257 |
strength ELFUZISTRENGTH |
ai AIELFUZISEEKING |
} |
break |
} |
else |
ifaction AELFUZIFROZEN |
else ifaction AELFUZIFROZEN |
{ |
ifcount THAWTIME |
{ |
2143,8 → 2011,7 |
ai AIELFUZISEEKING |
getlastpal |
} |
else |
ifcount FROZENDRIPTIME |
else ifcount FROZENDRIPTIME |
ifrnd 8 |
spawn WATERDRIP |
2166,11 → 2033,15 |
pkick |
break |
} |
else |
ifai AIELFUZIDYING |
else ifai AIELFUZIDYING |
state elfuzidyingstate |
ifai AIELFUZISHRINKING nullop else { ifai AIELFUZIGROW nullop else { ifhitweapon state elfuzihitstate } } |
ifai AIELFUZISHRINKING |
nullop |
else ifai AIELFUZIGROW |
nullop |
else ifhitweapon |
state elfuzihitstate |
ifai 0 |
{ |
2177,9 → 2048,10 |
ai AIELFUZISEEKING |
cstat 257 |
// clipdist 32 |
// sizeat 42 36 |
sizeat 32 27 |
ifspritepal 0 nullop else |
sizeat 32 27 // sizeat 42 36 |
ifspritepal 0 |
nullop |
else |
{ |
ifrnd 72 |
strength ELFUZIALTSTR |
2187,9 → 2059,7 |
strength ELFUZISTRENGTH |
} |
} |
else |
ifai AIELFUZISEEKING state elfuziseekstate |
else ifai AIELFUZISEEKING state elfuziseekstate |
else ifai AIELFUZIHUNTING state elfuzihuntstate |
else ifai AIELFUZIIQ state elfuziiqstate |
else ifai AIELFUZISHOOTING state elfuzishootstate |
2196,6 → 2066,7 |
else ifai AIELFUZIJUMPING state elfuzijumpingstate |
else ifai AIELFUZIFALLING state elfuzifallingstate |
else ifai AIELFUZIGROW state genericgrowcode |
ifai AIELFUZISHRINKING state elfuzishrinkstate |
enda |
2206,6 → 2077,8 |
cactor ELFUZI |
enda |
// Groan |
action AELFGUNWALK 0 4 5 1 20 |
action AELFGUNRUN 0 4 5 1 10 |
action AELFGUNFROZEN 0 1 5 1 |
2234,13 → 2107,9 |
ifp pdead break |
ifpdistl 15000 |
{ |
ifrnd 16 |
{ |
ai AIELFGUNHUNTING |
} |
} |
} |
ends |
2258,43 → 2127,39 |
ifrnd 7 |
{ |
ifpdistl 8192 ai AIELFGUNSHOOTING |
ifpdistl 8192 |
ai AIELFGUNSHOOTING |
} |
else ifrnd 48 ai AIELFGUNIQ |
else ifrnd 48 |
ai AIELFGUNIQ |
ends |
state elfguniqstate |
ifcansee ai AIELFGUNHUNTING |
ifcansee |
ai AIELFGUNHUNTING |
else |
{ |
ifrnd 16 |
ifnotmoving |
ai AIELFGUNSEEKING |
} |
ends |
state elfgunshootstate |
ifp pdead |
ai AIELFGUNSEEKING |
ifcansee |
{ |
ifp pdead ai AIELFGUNSEEKING |
ifcount 20 |
ifcanshoottarget |
{ |
ifcount 29 |
nullop |
else |
{ |
ifcount 28 |
{ |
else ifcount 28 |
sound SHOTGUN_COCK |
} |
} |
} |
else |
else ifcount 20 |
nullop |
else ifcount 19 |
{ |
ifcount 19 |
{ |
sound SHOTGUN_FIRE |
shoot SHOTGUN |
shoot SHOTGUN |
2303,6 → 2168,9 |
shoot SHOTGUN |
} |
} |
} |
else |
ai AIELFGUNIQ |
ifactioncount 3 |
{ |
2311,8 → 2179,6 |
ifrnd 64 |
ai AIELFGUNHUNTING |
} |
} |
else ai AIELFGUNIQ |
ends |
2323,11 → 2189,8 |
ifdead |
{ |
state random_wall_jibs |
ifrnd 128 |
{ |
spawn XMASPRESENT |
} |
ifwasweapon GROWSPARK |
{ |
sound ACTOR_GROWING |
2354,8 → 2217,7 |
state standard_jibs |
killit |
} |
else |
ifwasweapon RPG |
else ifwasweapon RPG |
{ |
sound SQUISH2 |
// state standard_jibs |
2375,8 → 2237,7 |
sound ACTOR_SHRINKING |
ai AIELFGUNSHRINKING |
} |
else |
ifwasweapon GROWSPARK |
else ifwasweapon GROWSPARK |
sound EXPANDERHIT |
else |
ifrnd 32 |
2388,11 → 2249,9 |
ifcount SHRUNKDONECOUNT |
ai AIELFGUNSEEKING |
else ifcount SHRUNKCOUNT |
sizeto 32 27 // sizeto 48 40 |
else |
ifcount SHRUNKCOUNT |
// sizeto 48 40 |
sizeto 32 27 |
else |
state genericshrunkcode |
ends |
2443,8 → 2302,7 |
} |
break |
} |
else |
ifaction AELFGUNFROZEN |
else ifaction AELFGUNFROZEN |
{ |
ifcount THAWTIME |
{ |
2465,7 → 2323,8 |
} |
addkills 1 |
lotsofglass 30 |
ifrnd 84 spawn BLOODPOOL |
ifrnd 84 |
spawn BLOODPOOL |
sound GLASS_BREAKING |
killit |
} |
2478,7 → 2337,12 |
ifai AIELFGUNDYING |
state elfgundyingstate |
ifai AIELFGUNSHRINKING nullop else { ifai AIELFGUNGROW nullop else { ifhitweapon { state elfgunhitstate } } } |
ifai AIELFGUNSHRINKING |
nullop |
else ifai AIELFGUNGROW |
nullop |
else ifhitweapon |
state elfgunhitstate |
ifai 0 |
{ |
2485,20 → 2349,17 |
ai AIELFGUNSEEKING |
cstat 257 |
// clipdist 32 |
// sizeat 42 36 |
sizeat 32 27 |
sizeat 32 27 // sizeat 42 36 |
strength ELFGUNSTRENGTH |
} |
else |
else ifai AIELFGUNSEEKING state elfgunseekstate |
else ifai AIELFGUNHUNTING state elfgunhuntstate |
else ifai AIELFGUNIQ state elfguniqstate |
else ifai AIELFGUNSHOOTING state elfgunshootstate |
else ifai AIELFGUNGROW state genericgrowcode |
ifai AIELFGUNSEEKING { state elfgunseekstate } else |
ifai AIELFGUNHUNTING { state elfgunhuntstate } else |
ifai AIELFGUNIQ { state elfguniqstate } else |
ifai AIELFGUNSHOOTING { state elfgunshootstate } else |
ifai AIELFGUNGROW { state genericgrowcode } |
ifai AIELFGUNSHRINKING { state elfgunshrinkstate } |
ifai AIELFGUNSHRINKING state elfgunshrinkstate |
break |
enda |
useractor enemystayput ELFGUNSTAYPUT ELFGUNSTRENGTH |
2524,7 → 2385,15 |
ifcanseetarget |
{ |
sound RIP_PAPER |
ifvarl temp 1 { ifrnd 128 spawn SHIELD else spawn SIXPAK } else espawnvar temp |
ifvarl nw_temp 1 |
{ |
ifrnd 128 |
spawn SHIELD |
else |
spawn SIXPAK |
} |
else |
espawnvar nw_temp // spawnvar // spawns the lotag, collected during EVENT_LOADACTOR |
killit |
} |
ends |
2537,7 → 2406,15 |
ifcanseetarget |
{ |
sound RIP_PAPER |
ifvarl temp 1 { ifrnd 128 spawn CHAINGUNSPRITE else spawn SHOTGUNSPRITE } else espawnvar temp |
ifvarl nw_temp 1 |
{ |
ifrnd 128 |
spawn CHAINGUNSPRITE |
else |
spawn SHOTGUNSPRITE |
} |
else |
espawnvar nw_temp // spawnvar // spawns the lotag, collected during EVENT_LOADACTOR |
killit |
} |
ends |
2568,19 → 2445,18 |
ifspritepal 21 |
{ |
ifhitweapon |
{ |
ifcount 24 |
{ |
strength 999 |
ifrnd 128 sound MOVIE2 else sound MOVIE3 |
ifrnd 128 |
sound MOVIE2 |
else |
sound MOVIE3 |
resetcount |
} |
} |
} |
else |
{ |
hitradius 4096 1 1 1 1 |
} |
enda |
useractor notenemy MALEGEEK 20 |
2599,6 → 2475,7 |
killit |
} |
} |
ifcount 225 |
{ |
sound MALECAROL |
2621,6 → 2498,7 |
killit |
} |
} |
ifcount 225 |
{ |
sound FEMALECAROL |
/nw_plus/NWSnow.con |
---|
279,52 → 279,52 |
useractor notenemy SNOW 0 |
sizeat 4 4 |
addvar temp2 16 |
ifvarg temp2 2047 subvar temp2 4095 |
setvarvar temp3 temp2 |
sin temp3 temp3 |
shiftvarr temp3 5 |
addvar nw_temp2 16 |
ifvarg nw_temp2 2047 subvar nw_temp2 4095 |
setvarvar nw_temp3 nw_temp2 |
sin nw_temp3 nw_temp3 |
shiftvarr nw_temp3 5 |
/* |
getactor[THISACTOR].x x |
getactor[THISACTOR].y y |
getactor[THISACTOR].z z |
getactor[THISACTOR].x nw_x |
getactor[THISACTOR].y nw_y |
getactor[THISACTOR].z nw_z |
updatesectorz x y z temp |
getactor[THISACTOR].zvel z |
ifvare sector[temp].lotag 2 |
updatesectorz nw_x nw_y nw_z nw_temp |
getactor[THISACTOR].zvel nw_z |
ifvare sector[nw_temp].lotag 2 |
{ |
ifvarl z 64 |
ifvarl nw_z 64 |
{ |
setvar tempb GRAVITATIONALCONSTANT |
shiftvarr tempb 5 |
addvarvar tempb temp4 |
addvarvar z tempb |
setvar nw_tempb GRAVITATIONALCONSTANT |
shiftvarr nw_tempb 5 |
addvarvar nw_tempb temp4 |
addvarvar nw_z nw_tempb |
} |
} |
else |
{ |
ifvarl z 144 |
ifvarl nw_z 144 |
{ |
setvar tempb GRAVITATIONALCONSTANT |
shiftvarr tempb 5 |
addvarvar tempb temp4 |
addvarvar z tempb |
setvar nw_tempb GRAVITATIONALCONSTANT |
shiftvarr nw_tempb 5 |
addvarvar nw_tempb temp4 |
addvarvar nw_z nw_tempb |
} |
} |
*/ |
movesprite THISACTOR temp3 0 256 CLIPMASK0 RETURN |
movesprite THISACTOR nw_temp3 0 256 CLIPMASK0 RETURN |
ifvarn RETURN 0 killit |
getactor[THISACTOR].x x |
getactor[THISACTOR].y y |
getactor[THISACTOR].z z |
getactor[THISACTOR].x nw_x |
getactor[THISACTOR].y nw_y |
getactor[THISACTOR].z nw_z |
updatesectorz x y z temp |
ifvarn temp -1 getflorzofslope temp x y temp2 else killit |
updatesectorz nw_x nw_y nw_z nw_temp |
ifvarn nw_temp -1 getflorzofslope nw_temp nw_x nw_y nw_temp2 else killit |
ifvarvare z temp2 killit |
ifvarvare nw_z nw_temp2 killit |
enda |
/nw_plus/NWDPCode.con |
---|
184,9 → 184,9 |
{ |
ifvarl xydist 1280 |
{ |
setvar temp CAPTSPINNINGPLAYER |
ifvarand monstflags 8 mulvar temp -2 else mulvar temp -1 |
setactor[target].htextra temp |
setvar nw_temp CAPTSPINNINGPLAYER |
ifvarand monstflags 8 mulvar nw_temp -2 else mulvar nw_temp -1 |
setactor[target].htextra nw_temp |
setactor[target].htpicnum RPG |
setactor[target].htowner THISACTOR |
//sound DUKE_GRUNT |
272,10 → 272,10 |
ifvarl RETURN 16384 |
ifvarg RETURN -1 // hit a sprite |
{ |
getactor[RETURN].picnum picnum |
getactorvar[RETURN].monstatus temp |
ifvare picnum APLAYER sound SQUISHED else |
ifvare temp 1 sound SQUISHED |
getactor[RETURN].picnum nw_picnum |
getactorvar[RETURN].monstatus nw_temp |
ifvare nw_picnum APLAYER sound SQUISHED else |
ifvare nw_temp 1 sound SQUISHED |
setactor[RETURN].htpicnum RPG |
setactor[RETURN].htextra 100 |
setactor[RETURN].htowner THISACTOR |
424,8 → 424,8 |
ifai AICOMMSHOOT |
{ |
ifvare target -1 ifvarn playerally 0 { ai AICOMMGET break } |
setvar temp 0 |
ifvarn target -1 setvar temp 1 |
setvar nw_temp 0 |
ifvarn target -1 setvar nw_temp 1 |
ifvarand monstflags 2048 |
ifvare playerally 0 |
{ |
434,10 → 434,10 |
ai AICOMMFRISBEE |
break |
} |
else ifvarg targetlock 0 setvar temp 1 |
else ifvarg targetlock 0 setvar nw_temp 1 |
} else |
ifvarg canshootplayer 0 setvar temp 1 |
ifvare temp 1 |
ifvarg canshootplayer 0 setvar nw_temp 1 |
ifvare nw_temp 1 |
{ |
ifcount 24 |
ifrnd 16 |
489,12 → 489,12 |
ifvarg canseeplayer 0 |
{ |
setvar temp 0 |
ifp phigher setvar temp 1 |
setvar nw_temp 0 |
ifp phigher setvar nw_temp 1 |
ifvarn target -1 |
ifvarvarg z mz setvar temp 1 |
ifvarvarg z mz setvar nw_temp 1 |
ifvare temp 1 |
ifvare nw_temp 1 |
move COMMGETUPVELS getv geth faceplayer |
else |
move COMMGETVELS getv geth faceplayer |
/nw_plus/nw_plus.def |
---|
0,0 → 1,13 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
include NWNames.def |
include nwinter/undef.def |
include nwinter/8bit.def |
include nwinter/voxels.def |
include nwinter/music.def |
include nwinter/sounds.def |
/nw_plus/linux_macosx/kextract.linux |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/linux_macosx/uips.linux |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Deleted: svn:mime-type |
-application/octet-stream |
\ No newline at end of property |
/nw_plus/linux_macosx/nwinter.sh |
---|
1,6 → 1,6 |
#!/bin/bash |
if [ -e eduke32 ]; then |
./eduke32 /xNWEDuke.con /hnwinter.def /jnw_plus /gNWINTER.GRP |
./eduke32 -xNWEDuke.con -hnwinter.def -jnw_plus -gNWINTER.GRP |
else |
echo "Place this script and the nw_plus folder in your EDuke32 directory." |
fi |
/nw_plus/linux_macosx/nw_dp.sh |
---|
1,6 → 1,6 |
#!/bin/bash |
if [ -e eduke32 ]; then |
./eduke32 -xNWDP.con -hnw_dp.def /jnw_plus /gNWINTER.GRP -jDukePlus |
./eduke32 -xNWDP.con -hnw_dp.def -jnw_plus -gNWINTER.GRP -jDukePlus |
else |
echo "Place this script and the nw_plus folder in your EDuke32 directory." |
fi |
/nw_plus/linux_macosx/nw_install.sh |
---|
5,7 → 5,7 |
mv ../NWINTER.GRP ./ |
fi |
if [ -e NWINTER.GRP ]; then |
./kextract.linux NWINTER.GRP E2L*.MAP |
./kextract NWINTER.GRP E2L*.MAP |
mv E2L1.MAP nwl1.map |
mv E2L2.MAP nwl2.map |
mv E2L3.MAP nwl3.map |
14,14 → 14,14 |
mv E2L6.MAP nwl6.map |
mv E2L7.MAP nwl7.map |
mv E2L8.MAP nwl8.map |
./uips.linux a nwl1.ips nwl1.map |
./uips.linux a nwl2.ips nwl2.map |
./uips.linux a nwl3.ips nwl3.map |
./uips.linux a nwl4.ips nwl4.map |
./uips.linux a nwl5.ips nwl5.map |
./uips.linux a nwl6.ips nwl6.map |
./uips.linux a nwl7.ips nwl7.map |
./uips.linux a nwl8.ips nwl8.map |
./bspatch nwl1.map nwl1.map nwl1.patch |
./bspatch nwl2.map nwl2.map nwl2.patch |
./bspatch nwl3.map nwl3.map nwl3.patch |
./bspatch nwl4.map nwl4.map nwl4.patch |
./bspatch nwl5.map nwl5.map nwl5.patch |
./bspatch nwl6.map nwl6.map nwl6.patch |
./bspatch nwl7.map nwl7.map nwl7.patch |
./bspatch nwl8.map nwl8.map nwl8.patch |
echo "Patching complete!" |
else |
echo "NWINTER.GRP does not exist." |
/nw_plus/linux_macosx/nw_xxx.sh |
---|
1,6 → 1,6 |
#!/bin/bash |
if [ -e eduke32 ]; then |
./eduke32 /xNWEDuke.con /hnw_xxx.def /jnw_plus /gNWINTER.GRP |
./eduke32 -xNWEDuke.con -hnw_xxx.def -jnw_plus -gNWINTER.GRP |
else |
echo "Place this script and the nw_plus folder in your EDuke32 directory." |
fi |
/nw_plus/linux_macosx/nw_dp_xxx.sh |
---|
1,6 → 1,6 |
#!/bin/bash |
if [ -e eduke32 ]; then |
./eduke32 -xNWDPXXX.con -hnw_dp_xxx.def /jnw_plus /gNWINTER.GRP -jDukePlus |
./eduke32 -xNWDPXXX.con -hnw_dp_xxx.def -jnw_plus -gNWINTER.GRP -jDukePlus |
else |
echo "Place this script and the nw_plus folder in your EDuke32 directory." |
fi |
/nw_plus/linux_macosx/NWinter+_Linux_MacOSX.txt |
---|
1,6 → 1,6 |
I am not proficient with bash scripts, but I have included my attempt at providing the same level of support to Mac OS X and Linux as I do with my native OS, Windows. |
Note that on Mac OS X, you will have to compile your own binaries using the instructions below and replace the string ".linux" in the installation script with nothing or any existing Mac prefix. I'm truly sorry about this. |
You will have to compile your own binaries using the instructions below and replace the string ".linux" in the installation script with nothing or any existing Mac prefix. I'm truly sorry about this. |
First, copy NWINTER.GRP to this directory and run nw_install.sh. |
13,10 → 13,10 |
If you want to attempt manual installation, or need help along the way: |
1. Copy only NWINTER.GRP from your Nuclear Winter CD to your EDuke32 directory. It should be found in the GAMEDATA/ directory. |
2. Extract the maps from NWINTER.GRP using kextract. The syntax is "kextract NWINTER.GRP E2L*.MAP". Binaries for x86 Win32 and x86 Linux have been included. This program's source is included with EDuke32. To compile it, first compile EDuke32 following the steps at the wiki (http://wiki.eduke32.com). Then type "make" in the "build/" directory. |
2. Extract the maps from NWINTER.GRP using kextract. The syntax is "kextract NWINTER.GRP E2L*.MAP". This program's source is included with EDuke32. To compile it, first compile EDuke32 following the steps at the wiki (http://wiki.eduke32.com). Then type "make" in the "build/" directory. |
3. Rename the maps' E2L prefix to nwl ("mv E2L*.MAP nwl*.map" might do it). |
4. Patch the maps using uips. (http://www.neillcorlett.com/uips/) The syntax is "uips a <ips> <map>". Binaries for x86 Win32 and x86 Linux have been included. |
5. Put the Duke3D HRP, Update Pack, XXX Pack if so desired, and Music Pack in autoload/duke3d.grp/ |
4. Patch the maps using bspatch. (http://www.daemonology.net/bsdiff/) The syntax is "bspatch <source> <destination> <patch>". |
5. Put the Duke3D HRP, Update Pack, XXX Pack if so desired, and Music Pack in ~/.eduke32/autoload/ |
6. Run EDuke32 with the command line options. |
/nw_plus/linux_macosx |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_plus/hrp_art_license.txt |
---|
0,0 → 1,76 |
High Resolution Pack Art License |
This Work is provided under the terms of this License. |
The Work is protected by copyright and/or other applicable law. Any use of the |
Work other than as authorized under this license is prohibited by law. |
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE |
BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED |
TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN |
CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. |
Definitions: |
------------ |
"Adaptation" means a work based upon the Work, or upon the Work and other |
pre-existing works, such as a translation, modification, derivative work, |
arrangement or other alterations of an artistic work, or phonogram or |
performance and includes cinematographic adaptations or any other form in |
which the Work may be recast, transformed, or adapted including in any form |
recognizably derived from the original. |
"Distribute" means to make available to the public the original and copies of |
the Work or Adaptation, as appropriate, through any transfer of ownership. |
"Licensor" means the individual, individuals, entity or entities that offer(s) |
the Work under the terms of this License. |
"Author" means, in the case of a literary or artistic work, the individual, |
individuals, entity or entities who created the Work or if no individual or |
entity can be identified, the publisher. |
"Work" means the artistic and/or musical content offered under the terms of |
this License including without limitation any production in the literary, |
scientific and artistic domain, whatever may be the mode or form of its |
expression including digital form. |
"You" means an individual or entity exercising rights under this License who |
has not previously violated the terms of this License with respect to the Work, |
or who has received express permission from the Licensor to exercise rights |
under this License despite a previous violation. |
"Reproduce" means to make copies of the Work by any means. |
Terms: |
------ |
You are free to copy, alter, distribute, reproduce and transmit this Work, |
subject to the following conditions: |
1. You may not use this Work or anything contained in this Work for commercial |
purposes. |
2. You must attribute this Work in the manner specified by the authors or |
licensor. |
3. Any likenesses, characters, sounds, phrases or references specific to |
Duke Nukem, 3D Realms Entertainment, or Apogee Software Ltd. appear in this |
Work courtesy of 3D Realms Entertainment and are the exclusive property of |
3D Realms Entertainment, and are provided only to be used with a legally |
acquired copy of Duke Nukem 3D. You may not alter, transform, build upon or |
adapt any portion of this Work specifically related to or derived from the |
Duke Nukem intellectual property, including likenesses, characters, sounds, |
phrases or references for any purpose other than use with a legally acquired |
copy of Duke Nukem 3D. |
4. Any works based upon altered, transformed, or copied parts of this Work must |
be distributed under a license identical or similar to this one. |
5. For any reuse or distribution of this Work, you must make clear to others |
the license terms of this Work. |
6. The producers and/or authors of this Work explicity reject any liability for |
any damages resulting from use or misuse of this Work by any Licensee or |
other third party. |
/nw_plus/NWINTRO.TXT |
---|
14,3 → 14,13 |
A telegram alerts Duke Nukem to the horrible plan. Without any hesitation, |
Duke springs into action. |
THE LEVELS |
Deja Vu - A familiar winterized version of the original, only backwards! |
Where It All Began - Los Angeles with snow? What are the aliens up to? |
Land of Forgotten Toys - Welcome to the frozen tundra, Duke. |
Santa's Corporate HQ - Check Santa's list to see if you've been naughty or nice. |
The Backdoor - There's always a way in, but sometimes you have to get a little bit wet. |
Christmas Village - The villagers here don't appear to be very friendly. |
Here Comes Santa Claus - And he's packing some holiday punch. |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |
/nw_plus/nwl4.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl6.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl1demo.map |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/nw_plus/nwl1.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl8.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl3.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl5.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/nwl7.patch |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_plus/nwfix.m32 |
---|
27,7 → 27,7 |
*/ |
include DEFS.CON |
include nwinter_hrp/NWDefs.con |
include NWDefs.con |
gamevar i 0 0 |
gamevar k 0 0 |
55,8 → 55,7 |
// fixing one-time sector sounds |
for k allsectors |
{ |
getsector[k].lotag l |
switch l |
switch sector[k].lotag |
case 10091 |
case 10308 |
68,9 → 67,68 |
break |
endswitch |
setsector[k].lotag l |
/* |
ifvarg sector[k].lotag 9999 |
ifvarl sector[k].lotag 20000 |
{ |
al k |
al sector[k].lotag |
} |
*/ |
// texture replacements: |
switch sector[k].floorpicnum |
case 198 |
ifvare sector[k].floorpal 1 |
{ |
al k |
set sector[k].floorpicnum 3670 |
set sector[k].floorpal 0 |
} |
break |
endswitch |
switch sector[k].ceilingpicnum |
case 198 |
ifvare sector[k].ceilingpal 1 |
{ |
al k |
set sector[k].ceilingpicnum 3670 |
set sector[k].ceilingpal 0 |
} |
break |
endswitch |
} |
for k allwalls |
{ |
ifvare wall[k].pal 1 |
{ |
switch wall[k].picnum |
case 198 |
al k |
set wall[k].picnum 3670 |
set wall[k].pal 0 |
break |
endswitch |
switch wall[k].overpicnum |
case 198 |
al k |
set wall[k].overpicnum 3670 |
set wall[k].pal 0 |
break |
endswitch |
} |
} |
// Fixing actors. |
// fixing actors already in the map |
77,13 → 135,13 |
for i allsprites |
{ |
switch .picnum |
/* |
// Step 1: Santa |
/* |
case 2000 set .picnum 3900 break |
case 2045 set .picnum 3905 break |
*/ |
/* |
// Step 2: Pig Cops |
/* |
case 2002 set .picnum 2000 break |
case 2003 set .picnum 2001 break |
case 2047 set .picnum 2045 break |
93,17 → 151,17 |
// fixing actors which spawn on triggers |
for i allsprites, ifactor RESPAWN |
{ |
switch .lotag |
switch .hitag |
/* |
// Step 1: Santa |
case 2000 set .hitag 3900 addlogvar .x addlogvar .y break |
case 2045 set .hitag 3905 addlogvar .x addlogvar .y break |
*/ |
/* |
case 2000 set .lotag 3900 break |
case 2045 set .lotag 3905 break |
*/ |
// Step 2: Pig Cops |
/* |
case 2002 set .lotag 2000 break |
case 2003 set .lotag 2001 break |
case 2047 set .lotag 2045 break |
case 2002 set .hitag 2000 addlogvar .x addlogvar .y break |
case 2003 set .hitag 2001 addlogvar .x addlogvar .y break |
case 2047 set .hitag 2045 addlogvar .x addlogvar .y break |
*/ |
endswitch |
} |
/nw_plus/NW_Debug.bat |
---|
0,0 → 1,3 |
@echo off |
set debug=1 |
call "%~dp0\NWinter.bat" %* |
/nw_plus/NW_Edit_DP.bat |
---|
0,0 → 1,4 |
@echo off |
set dp=1 |
set editor=1 |
call "%~dp0\NWinter.bat" %* |
/nw_plus/NW_Edit.bat |
---|
0,0 → 1,3 |
@echo off |
set editor=1 |
call "%~dp0\NWinter.bat" %* |
/nw_plus/NW_Edit_Debug.bat |
---|
0,0 → 1,4 |
@echo off |
set debug=1 |
set editor=1 |
call "%~dp0\NWinter.bat" %* |
/nw_plus/_nwzoo.map |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/nw_plus/NW_XXX.bat |
---|
1,3 → 1,3 |
@echo off |
echo Using XXX mode. |
NWinter.bat /hnw_xxx.def %* |
set xxx=1 |
call "%~dp0\NWinter.bat" %* |
/nw_plus/NW_DP.bat |
---|
1,3 → 1,3 |
@echo off |
echo Using Duke Plus by DeeperThought. |
NWinter.bat -xNWDP.con -hnw_dp.def %* -jDukePlus |
set dp=1 |
call "%~dp0\NWinter.bat" %* |
/nw_plus/NW_DP_XXX.bat |
---|
1,3 → 1,4 |
@echo off |
echo Using Duke Plus by DeeperThought. |
NW_XXX.bat -xNWDPXXX.con -hnw_dp_xxx.def %* -jDukePlus |
set dp=1 |
set xxx=1 |
call "%~dp0\NWinter.bat" %* |
/nw_plus/NWDefs.con |
---|
21,6 → 21,7 |
define DRUNKELF 3592 |
define HALFBITCH 3627 |
define SLUTASS 3637 |
define CHANDELIER 3778 |
define CHOOCHOOSLUT 3779 |
define HORSEPOWER 3783 |
68,6 → 69,15 |
define SNOW 3835 |
// skin definitions |
define duke 0 |
define Duke 0 |
define dUKE 0 |
define DUKE 0 |
define santa 1 |
define Santa 1 |
define sANTA 1 |
define SANTA 1 |
define DAMNUGLY 398 |
/nw_plus/NWNames.h |
---|
0,0 → 1,9 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
#include names.h |
#include NWNames.def |
/nw_plus/NWNames.def |
---|
0,0 → 1,70 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter |
By Joris Weimar |
© 1997 Simply Silly Software |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
#define SOBBOTWALK 3900 |
#define SOBBOTFLY 3905 |
#define SPECBLOOD 105 |
#define SSPEAKER 589 |
#define RIBBON 930 |
#define WOODSLATS 3757 |
#define DRUNKELF 3592 |
#define HALFBITCH 3627 |
#define SLUTASS 3637 |
#define CHANDELIER 3778 |
#define CHOOCHOOSLUT 3779 |
#define HORSEPOWER 3783 |
#define SNOWYDOORSHOCK 3656 |
#define MYBOX 3666 |
#define TREEWITHSOMETHING 3648 |
#define NWSTEAM 3632 |
#define NWEFFECTOR 3700 |
#define WOODENHORSE2 3764 |
// #define GEEK1 3761 |
#define MALEGEEK 3761 |
#define SNOWGIB 3777 |
#define XMASPRESENT 3782 |
#define XMASPRESENT2 3786 |
#define ELFUZI 3800 |
#define ELFUZISTAYPUT 3801 |
// #define VIRGINSLUT 3823 |
#define FEMALEGEEK 3823 |
#define SNOWMAN 3841 |
#define SNOWBALL 3882 |
#define NOISEMAKER 3883 |
#define ELFGUN 4000 |
#define ELFGUNSTAYPUT 4001 |
#define NWMARIO 3598 |
#define NWMARIOKART 3603 |
#define NWMARIO2 3784 |
#define SNOWFLAKE 3697 |
#define SNOWMAKER 3787 |
#define SNOWMAKERNOMOVE 3789 |
#define SNOW 3835 |
/nw_plus/nwinter.def |
---|
6,4 → 6,5 |
*/ |
include duke3d.def |
include nw_plus.def |
include nwinter_hrp.def |
/nw_plus/NWEDuke.con |
---|
10,10 → 10,4 |
*/ |
include EDUKE.CON |
gamevar picnum 0 2 |
gamevar temp 0 2 |
gamevar tempb 0 2 |
gamevar x 0 2 |
gamevar y 0 2 |
gamevar z 0 2 |
include NWinter.con |
/nw_plus |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/props.def |
---|
0,0 → 1,85 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
// Steering Wheel (1055) |
texture 1055 { pal 0 { file "nw_hrp/sprites/props/1055.png" } } |
texture 1056 { pal 0 { file "nw_hrp/sprites/props/1056.png" } } |
texture 3595 { pal 0 { file "nw_hrp/sprites/props/3595.png" } } |
// Fence (3600-3602) |
model "nw_hrp/sprites/props/3600_fence.md3" { |
scale 20 shade 0 |
detail { file "highres/detail/metal.png" detailscale 0.3 } |
skin { pal 0 file "highres/textures/0913_d.png" } |
normal { file "highres/textures/0913_n.png" } |
specular { file "highres/textures/0913_s.png" } |
frame { name "Frame0" tile 3600 } |
} |
model "nw_hrp/sprites/props/3601_fence.md3" { |
scale 20 shade 0 |
detail { file "highres/detail/metal.png" detailscale 0.3 } |
skin { pal 0 file "highres/textures/0913_d.png" } |
normal { file "highres/textures/0913_n.png" } |
specular { file "highres/textures/0913_s.png" } |
frame { name "Frame0" tile 3601 } |
} |
model "nw_hrp/sprites/props/3602_fence.md3" { |
scale 20 shade 0 |
detail { file "highres/detail/metal.png" detailscale 0.3 } |
skin { pal 0 file "highres/textures/0913_d.png" } |
normal { file "highres/textures/0913_n.png" } |
specular { file "highres/textures/0913_s.png" } |
frame { name "From ASE" tile 3602 } |
} |
// Snowy Door Shock (3656) |
model "highres/sprites/props/0160_doorshock.md3" { |
scale 5 shade 0 |
detail { file "highres/detail/metal.png" detailscale 0.3 } |
skin { pal 0 file "nw_hrp/sprites/props/3656_doorshock.png" } |
frame { name "frame00" tile 3656 } |
} |
texture 3662 { |
pal 0 { file "nw_hrp/sprites/props/3662_3757.png" } |
} |
// Information Ticker (3689) |
model "highres/sprites/props/4453_meter.md3" { |
scale 2.5 zadd -16 |
skin { pal 0 file "nw_hrp/sprites/props/3689_meter.png" } |
frame { name "idle" tile 3689 } |
} |
// Information Ticker On Pole (3690) |
model "highres/sprites/props/4453_meter.md3" { |
scale 2.5 |
skin { pal 0 file "nw_hrp/sprites/props/3690_meter.png" } |
frame { name "idle" tile 3690 } |
} |
texture 3728 { |
pal 0 { file "nw_hrp/sprites/props/3728.png" } |
} |
texture 3757 { |
pal 0 { file "nw_hrp/sprites/props/3662_3757.png" } |
} |
// Gift Boxes (3782, 3786) |
model "nw_hrp/sprites/props/3782_3786_gift.md3" { |
scale 3.0 // 2.5 |
skin { pal 0 file "nw_hrp/sprites/props/3782_gift.png" } |
frame { name "FRAME1" tile 3782 } |
skin { pal 0 file "nw_hrp/sprites/props/3786_gift.png" } |
frame { name "FRAME1" tile 3786 } |
} |
texture 3795 { pal 0 { file "nw_hrp/sprites/props/3795.png" } } |
/nw_hrp/sprites/props/3600_fence.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3601_fence.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3602_fence.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3782_gift.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3786_gift.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3782_3786_gift.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3690_meter.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3656_doorshock.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3728.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3689_meter.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3662_3757.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3595.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/3795.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/1055.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props/1056.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/props |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/decals.def |
---|
0,0 → 1,13 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
texture 3672 { pal 0 { file "nw_hrp/sprites/decals/3672.png" } } |
// White Footprint (3774) |
texture 3774 { pal 0 { file "nw_hrp/sprites/decals/3774.png" } } |
texture 3830 { pal 0 { file "nw_hrp/sprites/decals/3830.png" } } |
/nw_hrp/sprites/characters.def |
---|
0,0 → 1,27 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
// Mario Joke (3598-3599, 3784) |
model "nw_hrp/sprites/characters/3598_nwmario.md3" { |
scale 1 shade 0 |
skin { pal 0 surface 0 file "nw_hrp/sprites/characters/3598_nwmario.png" } // body |
skin { pal 0 surface 1 file "nw_hrp/sprites/characters/3598_nwmario_eye1.png" } // eyes |
skin { pal 0 surface 2 file "nw_hrp/sprites/characters/3598_nwmario_mouth.png" } // mouth |
frame { name "frame_1" tile 3598 } |
frame { name "frame_2" tile 3599 } |
frame { name "idle" tile 3784 } |
anim { frame0 "frame_1" frame1 "frame_2" fps 2 flags 0 } |
} |
// Mario Kart Joke (3603-3605) |
texture 3603 { pal 0 { file "nw_hrp/sprites/characters/3603.png" } } |
texture 3604 { pal 0 { file "nw_hrp/sprites/characters/3604.png" } } |
texture 3605 { pal 0 { file "nw_hrp/sprites/characters/3605.png" } } |
/nw_hrp/sprites/signs.def |
---|
0,0 → 1,19 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
// "NAUGHTY!" Billboard (3658) |
model "highres/sprites/signs/1210_guilty.md3" { |
shade 0 |
skin { pal 0 file "nw_hrp/sprites/signs/3658.png" } |
frame { name "frame00" tile 3658 } |
} |
texture 3659 { pal 0 { file "nw_hrp/sprites/signs/3659.png" } } |
texture 3660 { pal 0 { file "nw_hrp/sprites/signs/3660.png" } } |
texture 3671 { pal 0 { file "nw_hrp/sprites/signs/3671.png" } } |
texture 3686 { pal 0 { file "nw_hrp/sprites/signs/3686.png" } } |
texture 3827 { pal 0 { file "nw_hrp/sprites/signs/3827.png" nocompress } } |
/nw_hrp/sprites/characters/3604.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3605.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario_mouth.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario.md3 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario_eye1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario_eye2.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario_eye3.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario_eye4.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3598_nwmario_eye5.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters/3603.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/characters |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/ice |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/signs/3660.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/signs/3671.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/signs/3827.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/signs/3658.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/signs/3659.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/signs/3686.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/signs |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/gibs/1536_santaleg.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/gibs |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/monsters |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/decals/3830.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/decals/3672.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/decals/3774.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/decals |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/firstperson/2521_santaboot.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites/firstperson |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/sprites/gibs.def |
---|
0,0 → 1,7 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
/nw_hrp/sprites/monsters.def |
---|
0,0 → 1,6 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
/nw_hrp/sprites/ice.def |
---|
0,0 → 1,6 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
/nw_hrp/sprites |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/extra/sources/3600_fence.ase |
---|
0,0 → 1,1114 |
*3DSMAX_ASCIIEXPORT 200 |
*COMMENT "AsciiExport Version 2.00 - Sun Mar 31 21:17:22 2013" |
*SCENE { |
*SCENE_FILENAME "0913__DC_INGAME.max" |
*SCENE_FIRSTFRAME 0 |
*SCENE_LASTFRAME 33 |
*SCENE_FRAMESPEED 10 |
*SCENE_TICKSPERFRAME 480 |
*SCENE_BACKGROUND_STATIC 0.2549 0.4431 0.7255 |
*SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 |
} |
*GEOMOBJECT { |
*NODE_NAME "Object02" |
*NODE_TM { |
*NODE_NAME "Object02" |
*INHERIT_POS 0 0 0 |
*INHERIT_ROT 0 0 0 |
*INHERIT_SCL 0 0 0 |
*TM_ROW0 1.0000 0.0000 0.0000 |
*TM_ROW1 0.0000 1.0000 0.0000 |
*TM_ROW2 0.0000 0.0000 1.0000 |
*TM_ROW3 5.0002 0.0003 0.0000 |
*TM_POS 5.0002 0.0003 0.0000 |
*TM_ROTAXIS 0.0000 0.0000 0.0000 |
*TM_ROTANGLE 0.0000 |
*TM_SCALE 1.0000 1.0000 1.0000 |
*TM_SCALEAXIS 0.0000 0.0000 0.0000 |
*TM_SCALEAXISANG 0.0000 |
} |
*MESH { |
*TIMEVALUE 0 |
*MESH_NUMVERTEX 96 |
*MESH_NUMFACES 134 |
*MESH_VERTEX_LIST { |
*MESH_VERTEX 0 1.2147 0.2003 0.0000 |
*MESH_VERTEX 1 0.9575 0.5069 0.0000 |
*MESH_VERTEX 2 0.5634 0.5764 0.0000 |
*MESH_VERTEX 3 0.2169 0.3763 0.0000 |
*MESH_VERTEX 4 0.0800 0.0003 0.0000 |
*MESH_VERTEX 5 0.2169 -0.3758 0.0000 |
*MESH_VERTEX 6 0.5634 -0.5759 0.0000 |
*MESH_VERTEX 7 0.9575 -0.5064 0.0000 |
*MESH_VERTEX 8 1.2147 -0.1998 0.0000 |
*MESH_VERTEX 9 1.2899 0.2277 0.5433 |
*MESH_VERTEX 10 0.9975 0.5762 0.5433 |
*MESH_VERTEX 11 0.5495 0.6552 0.5433 |
*MESH_VERTEX 12 0.1556 0.4277 0.5433 |
*MESH_VERTEX 13 0.0000 0.0003 0.5433 |
*MESH_VERTEX 14 0.1556 -0.4272 0.5433 |
*MESH_VERTEX 15 0.5495 -0.6546 0.5433 |
*MESH_VERTEX 16 0.9975 -0.5757 0.5433 |
*MESH_VERTEX 17 1.2899 -0.2272 0.5433 |
*MESH_VERTEX 18 1.2899 0.2277 0.9433 |
*MESH_VERTEX 19 1.2899 -0.2272 0.9433 |
*MESH_VERTEX 20 0.9975 -0.5757 0.9433 |
*MESH_VERTEX 21 0.5495 -0.6546 0.9433 |
*MESH_VERTEX 22 0.1556 -0.4272 0.9433 |
*MESH_VERTEX 23 0.0000 0.0003 0.9433 |
*MESH_VERTEX 24 0.1556 0.4277 0.9433 |
*MESH_VERTEX 25 0.5495 0.6552 0.9433 |
*MESH_VERTEX 26 0.9975 0.5762 0.9433 |
*MESH_VERTEX 27 0.6650 0.0003 0.5433 |
*MESH_VERTEX 28 0.6650 0.0003 0.9433 |
*MESH_VERTEX 29 1.2899 0.2277 8.2550 |
*MESH_VERTEX 30 0.9975 0.5762 8.2550 |
*MESH_VERTEX 31 0.5495 0.6552 8.2550 |
*MESH_VERTEX 32 0.1556 0.4277 8.2550 |
*MESH_VERTEX 33 0.0000 0.0003 8.2550 |
*MESH_VERTEX 34 0.1556 -0.4272 8.2550 |
*MESH_VERTEX 35 0.5495 -0.6546 8.2550 |
*MESH_VERTEX 36 0.9975 -0.5757 8.2550 |
*MESH_VERTEX 37 1.2899 -0.2272 8.2550 |
*MESH_VERTEX 38 1.2899 0.2277 8.6550 |
*MESH_VERTEX 39 1.2899 -0.2272 8.6550 |
*MESH_VERTEX 40 0.9975 -0.5757 8.6550 |
*MESH_VERTEX 41 0.5495 -0.6546 8.6550 |
*MESH_VERTEX 42 0.1556 -0.4272 8.6550 |
*MESH_VERTEX 43 0.0000 0.0003 8.6550 |
*MESH_VERTEX 44 0.1556 0.4277 8.6550 |
*MESH_VERTEX 45 0.5495 0.6552 8.6550 |
*MESH_VERTEX 46 0.9975 0.5762 8.6550 |
*MESH_VERTEX 47 0.6650 0.0003 8.2550 |
*MESH_VERTEX 48 0.6650 0.0003 8.6550 |
*MESH_VERTEX 49 1.2899 0.2277 8.8145 |
*MESH_VERTEX 50 0.9975 0.5762 8.8145 |
*MESH_VERTEX 51 0.5495 0.6552 8.8145 |
*MESH_VERTEX 52 0.1556 0.4277 8.8145 |
*MESH_VERTEX 53 0.0000 0.0003 8.8145 |
*MESH_VERTEX 54 0.1556 -0.4272 8.8145 |
*MESH_VERTEX 55 0.5495 -0.6546 8.8145 |
*MESH_VERTEX 56 0.9975 -0.5757 8.8145 |
*MESH_VERTEX 57 1.2899 -0.2272 8.8145 |
*MESH_VERTEX 58 1.2899 0.2277 9.1145 |
*MESH_VERTEX 59 1.2899 -0.2272 9.1145 |
*MESH_VERTEX 60 0.9975 -0.5757 9.1145 |
*MESH_VERTEX 61 0.5495 -0.6546 9.1145 |
*MESH_VERTEX 62 0.1556 -0.4272 9.1145 |
*MESH_VERTEX 63 0.0000 0.0003 9.1145 |
*MESH_VERTEX 64 0.1556 0.4277 9.1145 |
*MESH_VERTEX 65 0.5495 0.6552 9.1145 |
*MESH_VERTEX 66 0.9975 0.5762 9.1145 |
*MESH_VERTEX 67 0.6650 0.0003 9.1145 |
*MESH_VERTEX 68 0.6650 0.0003 8.8145 |
*MESH_VERTEX 69 0.7164 -0.0045 8.7478 |
*MESH_VERTEX 70 0.8664 -0.0045 8.7478 |
*MESH_VERTEX 71 0.3230 -0.0045 8.7478 |
*MESH_VERTEX 72 0.4747 -0.0017 8.8312 |
*MESH_VERTEX 73 0.4730 -0.0045 8.7478 |
*MESH_VERTEX 74 0.7147 -0.0017 8.8312 |
*MESH_VERTEX 75 1.2147 0.2003 9.0955 |
*MESH_VERTEX 76 0.9575 0.5069 9.0955 |
*MESH_VERTEX 77 0.5634 0.5764 9.0955 |
*MESH_VERTEX 78 0.2169 0.3763 9.0955 |
*MESH_VERTEX 79 0.0800 0.0003 9.0955 |
*MESH_VERTEX 80 0.2169 -0.3758 9.0955 |
*MESH_VERTEX 81 0.5634 -0.5759 9.0955 |
*MESH_VERTEX 82 0.9575 -0.5064 9.0955 |
*MESH_VERTEX 83 1.2147 -0.1998 9.0955 |
*MESH_VERTEX 84 0.6899 -0.0049 0.0000 |
*MESH_VERTEX 85 10.0003 -0.0049 0.0000 |
*MESH_VERTEX 86 0.6899 0.0016 0.0000 |
*MESH_VERTEX 87 10.0003 0.0016 0.0000 |
*MESH_VERTEX 88 0.6899 -0.0049 5.0768 |
*MESH_VERTEX 89 10.0003 -0.0049 5.0768 |
*MESH_VERTEX 90 0.6899 0.0016 5.0768 |
*MESH_VERTEX 91 10.0003 0.0016 5.0768 |
*MESH_VERTEX 92 0.6899 -0.0049 8.9955 |
*MESH_VERTEX 93 10.0003 0.0016 8.9955 |
*MESH_VERTEX 94 10.0003 -0.0049 8.9955 |
*MESH_VERTEX 95 0.6899 0.0016 8.9955 |
} |
*MESH_FACE_LIST { |
*MESH_FACE 0: A: 18 B: 19 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 1: A: 17 B: 9 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 2: A: 26 B: 18 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 3: A: 9 B: 10 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 4: A: 25 B: 26 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 5: A: 10 B: 11 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 6: A: 24 B: 25 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 7: A: 11 B: 12 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 8: A: 23 B: 24 C: 12 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 9: A: 12 B: 13 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 10: A: 22 B: 23 C: 13 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 11: A: 13 B: 14 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 12: A: 21 B: 22 C: 14 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 13: A: 14 B: 15 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 14: A: 20 B: 21 C: 15 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 15: A: 15 B: 16 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 16: A: 19 B: 20 C: 16 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 17: A: 16 B: 17 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 18: A: 27 B: 10 C: 9 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 19: A: 27 B: 11 C: 10 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 20: A: 27 B: 12 C: 11 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 21: A: 27 B: 13 C: 12 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 22: A: 27 B: 14 C: 13 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 23: A: 27 B: 15 C: 14 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 24: A: 27 B: 16 C: 15 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 25: A: 27 B: 17 C: 16 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 26: A: 27 B: 9 C: 17 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 27: A: 28 B: 19 C: 18 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 28: A: 28 B: 20 C: 19 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 29: A: 28 B: 21 C: 20 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 30: A: 28 B: 22 C: 21 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 31: A: 28 B: 23 C: 22 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 32: A: 28 B: 24 C: 23 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 33: A: 28 B: 25 C: 24 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 34: A: 28 B: 26 C: 25 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 35: A: 28 B: 18 C: 26 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 36: A: 38 B: 39 C: 37 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 37: A: 37 B: 29 C: 38 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 38: A: 46 B: 38 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 39: A: 29 B: 30 C: 46 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 40: A: 45 B: 46 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 41: A: 30 B: 31 C: 45 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 42: A: 44 B: 45 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 43: A: 31 B: 32 C: 44 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 44: A: 43 B: 44 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 45: A: 32 B: 33 C: 43 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 46: A: 42 B: 43 C: 33 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 47: A: 33 B: 34 C: 42 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 48: A: 41 B: 42 C: 34 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 49: A: 34 B: 35 C: 41 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 50: A: 40 B: 41 C: 35 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 51: A: 35 B: 36 C: 40 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 52: A: 39 B: 40 C: 36 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 53: A: 36 B: 37 C: 39 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 54: A: 47 B: 30 C: 29 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 55: A: 47 B: 31 C: 30 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 56: A: 47 B: 32 C: 31 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 57: A: 47 B: 33 C: 32 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 58: A: 47 B: 34 C: 33 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 59: A: 47 B: 35 C: 34 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 60: A: 47 B: 36 C: 35 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 61: A: 47 B: 37 C: 36 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 62: A: 47 B: 29 C: 37 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 63: A: 48 B: 39 C: 38 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 64: A: 48 B: 40 C: 39 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 65: A: 48 B: 41 C: 40 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 66: A: 48 B: 42 C: 41 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 67: A: 48 B: 43 C: 42 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 68: A: 48 B: 44 C: 43 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 69: A: 48 B: 45 C: 44 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 70: A: 48 B: 46 C: 45 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 71: A: 48 B: 38 C: 46 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 72: A: 66 B: 58 C: 49 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 73: A: 49 B: 50 C: 66 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 74: A: 65 B: 66 C: 50 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 75: A: 50 B: 51 C: 65 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 76: A: 64 B: 65 C: 51 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 77: A: 51 B: 52 C: 64 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 78: A: 63 B: 64 C: 52 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 79: A: 52 B: 53 C: 63 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 80: A: 62 B: 63 C: 53 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 81: A: 53 B: 54 C: 62 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 82: A: 61 B: 62 C: 54 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 83: A: 54 B: 55 C: 61 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 84: A: 60 B: 61 C: 55 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 85: A: 55 B: 56 C: 60 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 86: A: 59 B: 60 C: 56 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 87: A: 56 B: 57 C: 59 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 88: A: 58 B: 59 C: 57 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 89: A: 57 B: 49 C: 58 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 90: A: 68 B: 50 C: 49 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 91: A: 68 B: 51 C: 50 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 92: A: 68 B: 52 C: 51 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 93: A: 68 B: 53 C: 52 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 94: A: 68 B: 54 C: 53 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 95: A: 68 B: 55 C: 54 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 96: A: 68 B: 56 C: 55 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 97: A: 68 B: 57 C: 56 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 98: A: 68 B: 49 C: 57 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 99: A: 67 B: 59 C: 58 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 100: A: 67 B: 60 C: 59 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 101: A: 67 B: 61 C: 60 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 102: A: 67 B: 62 C: 61 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 103: A: 67 B: 63 C: 62 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 104: A: 67 B: 64 C: 63 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 105: A: 67 B: 65 C: 64 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 106: A: 67 B: 66 C: 65 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 107: A: 67 B: 58 C: 66 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 108: A: 8 B: 0 C: 75 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 109: A: 75 B: 83 C: 8 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 110: A: 0 B: 1 C: 76 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 111: A: 76 B: 75 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 112: A: 1 B: 2 C: 77 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 113: A: 77 B: 76 C: 1 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 114: A: 2 B: 3 C: 78 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 115: A: 78 B: 77 C: 2 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 116: A: 3 B: 4 C: 79 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 117: A: 79 B: 78 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 118: A: 4 B: 5 C: 80 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 119: A: 80 B: 79 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 120: A: 5 B: 6 C: 81 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 121: A: 81 B: 80 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 122: A: 6 B: 7 C: 82 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 123: A: 82 B: 81 C: 6 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 124: A: 7 B: 8 C: 83 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 125: A: 83 B: 82 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 126: A: 84 B: 85 C: 89 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 127: A: 89 B: 88 C: 84 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 128: A: 87 B: 86 C: 90 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 129: A: 90 B: 91 C: 87 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 130: A: 88 B: 89 C: 94 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 131: A: 94 B: 92 C: 88 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 132: A: 91 B: 90 C: 95 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 133: A: 95 B: 93 C: 91 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
} |
*MESH_NUMTVERTEX 164 |
*MESH_TVERTLIST { |
*MESH_TVERT 0 0.1201 0.0000 0.0000 |
*MESH_TVERT 1 0.0933 0.0000 0.0000 |
*MESH_TVERT 2 0.0664 0.0000 0.0000 |
*MESH_TVERT 3 0.0396 0.0000 0.0000 |
*MESH_TVERT 4 0.0128 0.0000 0.0000 |
*MESH_TVERT 5 0.0342 0.0000 0.0000 |
*MESH_TVERT 6 0.0557 0.0000 0.0000 |
*MESH_TVERT 7 0.0772 0.0000 0.0000 |
*MESH_TVERT 8 0.0986 0.0000 0.0000 |
*MESH_TVERT 9 0.0128 0.0000 0.0000 |
*MESH_TVERT 10 0.1201 0.0000 0.0000 |
*MESH_TVERT 11 0.1292 0.0899 0.0000 |
*MESH_TVERT 12 0.0979 0.0899 0.0000 |
*MESH_TVERT 13 0.0116 0.6754 0.0000 |
*MESH_TVERT 14 0.0368 0.6454 0.0000 |
*MESH_TVERT 15 0.0755 0.6386 0.0000 |
*MESH_TVERT 16 0.1094 0.6582 0.0000 |
*MESH_TVERT 17 0.1228 0.6950 0.0000 |
*MESH_TVERT 18 0.1094 0.7319 0.0000 |
*MESH_TVERT 19 0.0755 0.7515 0.0000 |
*MESH_TVERT 20 0.1292 0.0585 0.0000 |
*MESH_TVERT 21 0.0368 0.7447 0.0000 |
*MESH_TVERT 22 0.0116 0.7147 0.0000 |
*MESH_TVERT 23 0.0116 0.6754 0.0466 |
*MESH_TVERT 24 0.0116 0.7147 0.0466 |
*MESH_TVERT 25 0.0368 0.7447 0.0466 |
*MESH_TVERT 26 0.0755 0.7515 0.0466 |
*MESH_TVERT 27 0.1094 0.7319 0.0466 |
*MESH_TVERT 28 0.0979 0.0585 0.0000 |
*MESH_TVERT 29 0.1228 0.6950 0.0466 |
*MESH_TVERT 30 0.1094 0.6582 0.0466 |
*MESH_TVERT 31 0.0755 0.6386 0.0466 |
*MESH_TVERT 32 0.0368 0.6454 0.0466 |
*MESH_TVERT 33 0.0665 0.8317 0.0000 |
*MESH_TVERT 34 0.0351 0.8317 0.0000 |
*MESH_TVERT 35 0.0655 0.6950 0.0000 |
*MESH_TVERT 36 0.0655 0.6950 0.0466 |
*MESH_TVERT 37 0.0116 0.6754 0.9000 |
*MESH_TVERT 38 0.0368 0.6454 0.9000 |
*MESH_TVERT 39 0.0755 0.6386 0.9000 |
*MESH_TVERT 40 0.1292 0.8640 0.0000 |
*MESH_TVERT 41 0.1094 0.6582 0.9000 |
*MESH_TVERT 42 0.1228 0.6950 0.9000 |
*MESH_TVERT 43 0.1094 0.7319 0.9000 |
*MESH_TVERT 44 0.0755 0.7515 0.9000 |
*MESH_TVERT 45 0.0368 0.7447 0.9000 |
*MESH_TVERT 46 0.0116 0.7147 0.9000 |
*MESH_TVERT 47 0.0116 0.6754 0.9465 |
*MESH_TVERT 48 0.0979 0.8640 0.0000 |
*MESH_TVERT 49 0.0116 0.7147 0.9465 |
*MESH_TVERT 50 0.0368 0.7447 0.9465 |
*MESH_TVERT 51 0.1293 0.8866 0.0000 |
*MESH_TVERT 52 0.0755 0.7515 0.9465 |
*MESH_TVERT 53 0.1094 0.7319 0.9465 |
*MESH_TVERT 54 0.1228 0.6950 0.9465 |
*MESH_TVERT 55 0.0039 0.8866 0.0000 |
*MESH_TVERT 56 0.0290 0.8866 0.0000 |
*MESH_TVERT 57 0.0541 0.8866 0.0000 |
*MESH_TVERT 58 0.0791 0.8866 0.0000 |
*MESH_TVERT 59 0.1042 0.8866 0.0000 |
*MESH_TVERT 60 0.1293 0.9101 0.0000 |
*MESH_TVERT 61 0.1042 0.9101 0.0000 |
*MESH_TVERT 62 0.1293 0.8866 0.0000 |
*MESH_TVERT 63 0.0980 0.8866 0.0000 |
*MESH_TVERT 64 0.1293 0.9101 0.0000 |
*MESH_TVERT 65 0.0980 0.9101 0.0000 |
*MESH_TVERT 66 0.1094 0.6582 0.9465 |
*MESH_TVERT 67 0.0755 0.6386 0.9465 |
*MESH_TVERT 68 0.0368 0.6454 0.9465 |
*MESH_TVERT 69 0.0655 0.6950 0.9000 |
*MESH_TVERT 70 0.0655 0.6950 0.9465 |
*MESH_TVERT 71 0.0116 0.6754 0.9651 |
*MESH_TVERT 72 0.0368 0.6454 0.9651 |
*MESH_TVERT 73 0.0755 0.6386 0.9651 |
*MESH_TVERT 74 0.1094 0.6582 0.9651 |
*MESH_TVERT 75 0.1228 0.6950 0.9651 |
*MESH_TVERT 76 0.1094 0.7319 0.9651 |
*MESH_TVERT 77 0.0755 0.7515 0.9651 |
*MESH_TVERT 78 0.0368 0.7447 0.9651 |
*MESH_TVERT 79 0.0116 0.7147 0.9651 |
*MESH_TVERT 80 0.0116 0.6754 1.0000 |
*MESH_TVERT 81 0.0116 0.7147 1.0000 |
*MESH_TVERT 82 0.0368 0.7447 1.0000 |
*MESH_TVERT 83 0.0290 0.9101 0.0000 |
*MESH_TVERT 84 0.0039 0.9101 0.0000 |
*MESH_TVERT 85 0.0541 0.9101 0.0000 |
*MESH_TVERT 86 0.0353 0.8866 0.0000 |
*MESH_TVERT 87 0.0791 0.9101 0.0000 |
*MESH_TVERT 88 0.0666 0.8866 0.0000 |
*MESH_TVERT 89 0.0666 0.9101 0.0000 |
*MESH_TVERT 90 0.0040 0.8866 -0.0000 |
*MESH_TVERT 91 0.0040 0.9101 -0.0000 |
*MESH_TVERT 92 0.1292 0.8317 0.0000 |
*MESH_TVERT 93 0.0353 0.9101 0.0000 |
*MESH_TVERT 94 0.1041 0.8317 0.0000 |
*MESH_TVERT 95 0.1292 0.8640 0.0000 |
*MESH_TVERT 96 0.1041 0.8640 0.0000 |
*MESH_TVERT 97 0.0038 0.8317 0.0000 |
*MESH_TVERT 98 0.0289 0.8317 0.0000 |
*MESH_TVERT 99 0.0289 0.8640 0.0000 |
*MESH_TVERT 100 0.0038 0.8640 0.0000 |
*MESH_TVERT 101 0.1292 0.8317 0.0000 |
*MESH_TVERT 102 0.0540 0.8317 0.0000 |
*MESH_TVERT 103 0.0540 0.8640 0.0000 |
*MESH_TVERT 104 0.0979 0.8317 0.0000 |
*MESH_TVERT 105 0.0755 0.7515 1.0000 |
*MESH_TVERT 106 0.0791 0.8317 0.0000 |
*MESH_TVERT 107 0.0791 0.8640 0.0000 |
*MESH_TVERT 108 0.1094 0.7319 1.0000 |
*MESH_TVERT 109 0.1228 0.6950 1.0000 |
*MESH_TVERT 110 0.1094 0.6582 1.0000 |
*MESH_TVERT 111 0.0665 0.8640 0.0000 |
*MESH_TVERT 112 0.1292 0.0899 0.0000 |
*MESH_TVERT 113 0.1042 0.0899 0.0000 |
*MESH_TVERT 114 0.1292 0.0585 0.0000 |
*MESH_TVERT 115 0.0351 0.8640 0.0000 |
*MESH_TVERT 116 0.1042 0.0585 0.0000 |
*MESH_TVERT 117 0.0040 0.0899 0.0000 |
*MESH_TVERT 118 0.0037 0.8317 0.0000 |
*MESH_TVERT 119 0.0037 0.8640 0.0000 |
*MESH_TVERT 120 0.0291 0.0899 0.0000 |
*MESH_TVERT 121 0.0291 0.0585 0.0000 |
*MESH_TVERT 122 0.0040 0.0585 0.0000 |
*MESH_TVERT 123 0.0755 0.6386 1.0000 |
*MESH_TVERT 124 0.0541 0.0899 0.0000 |
*MESH_TVERT 125 0.0541 0.0585 0.0000 |
*MESH_TVERT 126 0.0368 0.6454 1.0000 |
*MESH_TVERT 127 0.0655 0.6950 1.0000 |
*MESH_TVERT 128 0.0791 0.0899 0.0000 |
*MESH_TVERT 129 0.0791 0.0585 0.0000 |
*MESH_TVERT 130 0.0655 0.6950 0.9651 |
*MESH_TVERT 131 0.0666 0.0899 0.0000 |
*MESH_TVERT 132 0.0666 0.0585 0.0000 |
*MESH_TVERT 133 0.0353 0.0899 0.0000 |
*MESH_TVERT 134 0.0353 0.0585 0.0000 |
*MESH_TVERT 135 0.0040 0.0899 0.0000 |
*MESH_TVERT 136 0.0040 0.0585 0.0000 |
*MESH_TVERT 137 0.1201 0.9099 0.0000 |
*MESH_TVERT 138 0.1201 0.9099 0.0000 |
*MESH_TVERT 139 0.0933 0.9099 0.0000 |
*MESH_TVERT 140 0.0664 0.9099 0.0000 |
*MESH_TVERT 141 0.0396 0.9099 0.0000 |
*MESH_TVERT 142 0.0128 0.9099 0.0000 |
*MESH_TVERT 143 0.0128 0.9099 0.0000 |
*MESH_TVERT 144 0.0342 0.9099 0.0000 |
*MESH_TVERT 145 0.0557 0.9099 0.0000 |
*MESH_TVERT 146 0.0772 0.9099 0.0000 |
*MESH_TVERT 147 0.0986 0.9099 0.0000 |
*MESH_TVERT 148 0.0789 0.0000 0.0000 |
*MESH_TVERT 149 0.9992 0.0000 0.0000 |
*MESH_TVERT 150 0.0789 0.0000 0.0000 |
*MESH_TVERT 151 0.9992 0.0000 0.0000 |
*MESH_TVERT 152 0.0789 0.2719 0.0000 |
*MESH_TVERT 153 0.9992 0.2719 0.0000 |
*MESH_TVERT 154 0.0789 0.2719 0.0000 |
*MESH_TVERT 155 0.9992 0.2719 0.0000 |
*MESH_TVERT 156 0.0789 0.5069 0.0000 |
*MESH_TVERT 157 0.9992 0.5069 0.0000 |
*MESH_TVERT 158 0.0789 0.5069 0.0000 |
*MESH_TVERT 159 0.9992 0.5069 0.0000 |
*MESH_TVERT 160 0.0789 0.6631 0.0000 |
*MESH_TVERT 161 0.9992 0.6631 0.0000 |
*MESH_TVERT 162 0.9992 0.6631 0.0000 |
*MESH_TVERT 163 0.0789 0.6631 0.0000 |
} |
*MESH_NUMTVFACES 134 |
*MESH_TFACELIST { |
*MESH_TFACE 0 114 116 113 |
*MESH_TFACE 1 113 112 114 |
*MESH_TFACE 2 28 20 11 |
*MESH_TFACE 3 11 12 28 |
*MESH_TFACE 4 132 28 12 |
*MESH_TFACE 5 12 131 132 |
*MESH_TFACE 6 134 132 131 |
*MESH_TFACE 7 131 133 134 |
*MESH_TFACE 8 136 134 133 |
*MESH_TFACE 9 133 135 136 |
*MESH_TFACE 10 121 122 117 |
*MESH_TFACE 11 117 120 121 |
*MESH_TFACE 12 125 121 120 |
*MESH_TFACE 13 120 124 125 |
*MESH_TFACE 14 129 125 124 |
*MESH_TFACE 15 124 128 129 |
*MESH_TFACE 16 116 129 128 |
*MESH_TFACE 17 128 113 116 |
*MESH_TFACE 18 35 14 13 |
*MESH_TFACE 19 35 15 14 |
*MESH_TFACE 20 35 16 15 |
*MESH_TFACE 21 35 17 16 |
*MESH_TFACE 22 35 18 17 |
*MESH_TFACE 23 35 19 18 |
*MESH_TFACE 24 35 21 19 |
*MESH_TFACE 25 35 22 21 |
*MESH_TFACE 26 35 13 22 |
*MESH_TFACE 27 36 24 23 |
*MESH_TFACE 28 36 25 24 |
*MESH_TFACE 29 36 26 25 |
*MESH_TFACE 30 36 27 26 |
*MESH_TFACE 31 36 29 27 |
*MESH_TFACE 32 36 30 29 |
*MESH_TFACE 33 36 31 30 |
*MESH_TFACE 34 36 32 31 |
*MESH_TFACE 35 36 23 32 |
*MESH_TFACE 36 95 96 94 |
*MESH_TFACE 37 94 101 95 |
*MESH_TFACE 38 48 40 92 |
*MESH_TFACE 39 92 104 48 |
*MESH_TFACE 40 111 48 104 |
*MESH_TFACE 41 104 33 111 |
*MESH_TFACE 42 115 111 33 |
*MESH_TFACE 43 33 34 115 |
*MESH_TFACE 44 119 115 34 |
*MESH_TFACE 45 34 118 119 |
*MESH_TFACE 46 99 100 97 |
*MESH_TFACE 47 97 98 99 |
*MESH_TFACE 48 103 99 98 |
*MESH_TFACE 49 98 102 103 |
*MESH_TFACE 50 107 103 102 |
*MESH_TFACE 51 102 106 107 |
*MESH_TFACE 52 96 107 106 |
*MESH_TFACE 53 106 94 96 |
*MESH_TFACE 54 69 38 37 |
*MESH_TFACE 55 69 39 38 |
*MESH_TFACE 56 69 41 39 |
*MESH_TFACE 57 69 42 41 |
*MESH_TFACE 58 69 43 42 |
*MESH_TFACE 59 69 44 43 |
*MESH_TFACE 60 69 45 44 |
*MESH_TFACE 61 69 46 45 |
*MESH_TFACE 62 69 37 46 |
*MESH_TFACE 63 70 49 47 |
*MESH_TFACE 64 70 50 49 |
*MESH_TFACE 65 70 52 50 |
*MESH_TFACE 66 70 53 52 |
*MESH_TFACE 67 70 54 53 |
*MESH_TFACE 68 70 66 54 |
*MESH_TFACE 69 70 67 66 |
*MESH_TFACE 70 70 68 67 |
*MESH_TFACE 71 70 47 68 |
*MESH_TFACE 72 65 60 51 |
*MESH_TFACE 73 51 63 65 |
*MESH_TFACE 74 89 65 63 |
*MESH_TFACE 75 63 88 89 |
*MESH_TFACE 76 93 89 88 |
*MESH_TFACE 77 88 86 93 |
*MESH_TFACE 78 91 93 86 |
*MESH_TFACE 79 86 90 91 |
*MESH_TFACE 80 83 84 55 |
*MESH_TFACE 81 55 56 83 |
*MESH_TFACE 82 85 83 56 |
*MESH_TFACE 83 56 57 85 |
*MESH_TFACE 84 87 85 57 |
*MESH_TFACE 85 57 58 87 |
*MESH_TFACE 86 61 87 58 |
*MESH_TFACE 87 58 59 61 |
*MESH_TFACE 88 64 61 59 |
*MESH_TFACE 89 59 62 64 |
*MESH_TFACE 90 130 72 71 |
*MESH_TFACE 91 130 73 72 |
*MESH_TFACE 92 130 74 73 |
*MESH_TFACE 93 130 75 74 |
*MESH_TFACE 94 130 76 75 |
*MESH_TFACE 95 130 77 76 |
*MESH_TFACE 96 130 78 77 |
*MESH_TFACE 97 130 79 78 |
*MESH_TFACE 98 130 71 79 |
*MESH_TFACE 99 127 81 80 |
*MESH_TFACE 100 127 82 81 |
*MESH_TFACE 101 127 105 82 |
*MESH_TFACE 102 127 108 105 |
*MESH_TFACE 103 127 109 108 |
*MESH_TFACE 104 127 110 109 |
*MESH_TFACE 105 127 123 110 |
*MESH_TFACE 106 127 126 123 |
*MESH_TFACE 107 127 80 126 |
*MESH_TFACE 108 8 10 137 |
*MESH_TFACE 109 137 147 8 |
*MESH_TFACE 110 0 1 139 |
*MESH_TFACE 111 139 138 0 |
*MESH_TFACE 112 1 2 140 |
*MESH_TFACE 113 140 139 1 |
*MESH_TFACE 114 2 3 141 |
*MESH_TFACE 115 141 140 2 |
*MESH_TFACE 116 3 4 142 |
*MESH_TFACE 117 142 141 3 |
*MESH_TFACE 118 9 5 144 |
*MESH_TFACE 119 144 143 9 |
*MESH_TFACE 120 5 6 145 |
*MESH_TFACE 121 145 144 5 |
*MESH_TFACE 122 6 7 146 |
*MESH_TFACE 123 146 145 6 |
*MESH_TFACE 124 7 8 147 |
*MESH_TFACE 125 147 146 7 |
*MESH_TFACE 126 148 149 157 |
*MESH_TFACE 127 157 156 148 |
*MESH_TFACE 128 151 150 158 |
*MESH_TFACE 129 158 159 151 |
*MESH_TFACE 130 152 153 162 |
*MESH_TFACE 131 162 160 152 |
*MESH_TFACE 132 155 154 163 |
*MESH_TFACE 133 163 161 155 |
} |
*MESH_NORMALS { |
*MESH_FACENORMAL 0 1.0000 -0.0000 0.0000 |
*MESH_VERTEXNORMAL 18 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 19 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 17 0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 1 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 17 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 9 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 18 0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 2 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 26 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 18 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 9 0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 3 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 9 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 10 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 26 0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 4 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 25 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 26 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 10 0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 5 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 10 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 11 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 25 -0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 6 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 24 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 25 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 11 -0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 7 -0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 11 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 12 -0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 24 -0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 8 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 23 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 24 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 12 -0.7660 0.6428 0.0000 |
*MESH_FACENORMAL 9 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 12 -0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 13 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 23 -1.0000 0.0000 -0.0000 |
*MESH_FACENORMAL 10 -0.9397 -0.3420 -0.0000 |
*MESH_VERTEXNORMAL 22 -0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 23 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 13 -1.0000 0.0000 0.0000 |
*MESH_FACENORMAL 11 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 13 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 14 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 22 -0.7660 -0.6428 -0.0000 |
*MESH_FACENORMAL 12 -0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 21 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 22 -0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 14 -0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 13 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 14 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 15 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 21 -0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 14 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 20 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 21 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 15 -0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 15 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 15 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 16 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 20 0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 16 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 19 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 20 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 16 0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 17 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 16 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 17 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 19 0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 18 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 19 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 10 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 20 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 12 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 11 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 21 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 13 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 12 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 22 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 14 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 13 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 23 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 15 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 14 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 24 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 16 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 15 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 25 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 17 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 16 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 26 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 9 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 17 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 27 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 19 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 18 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 28 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 20 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 19 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 29 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 21 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 20 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 30 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 22 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 21 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 31 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 23 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 22 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 32 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 24 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 23 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 33 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 25 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 24 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 34 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 26 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 25 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 35 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 18 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 26 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 36 1.0000 -0.0000 0.0000 |
*MESH_VERTEXNORMAL 38 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 39 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 37 0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 37 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 37 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 29 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 38 0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 38 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 46 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 38 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 29 0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 39 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 29 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 30 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 46 0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 40 0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 45 -0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 46 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 30 0.5000 0.8660 0.0000 |
*MESH_FACENORMAL 41 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 30 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 31 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 45 -0.1736 0.9848 0.0000 |
*MESH_FACENORMAL 42 -0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 44 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 45 -0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 31 -0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 43 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 31 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 32 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 44 -0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 44 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 43 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 44 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 32 -0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 45 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 32 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 33 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 43 -1.0000 0.0000 -0.0000 |
*MESH_FACENORMAL 46 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 42 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 43 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 33 -1.0000 0.0000 0.0000 |
*MESH_FACENORMAL 47 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 33 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 34 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 42 -0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 48 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 41 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 42 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 34 -0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 49 -0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 34 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 35 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 41 -0.1736 -0.9848 -0.0000 |
*MESH_FACENORMAL 50 0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 40 0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 41 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 35 -0.1736 -0.9848 -0.0000 |
*MESH_FACENORMAL 51 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 35 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 36 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 40 0.5000 -0.8660 -0.0000 |
*MESH_FACENORMAL 52 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 39 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 40 0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 36 0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 53 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 36 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 37 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 39 0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 54 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 29 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 55 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 30 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 56 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 32 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 31 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 57 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 33 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 32 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 58 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 34 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 33 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 59 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 35 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 34 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 60 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 36 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 35 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 61 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 37 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 36 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 62 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 29 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 37 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 63 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 39 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 38 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 64 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 40 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 39 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 65 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 41 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 40 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 66 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 42 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 41 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 43 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 42 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 68 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 43 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 69 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 45 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 70 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 46 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 45 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 71 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 38 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 46 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 72 0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 66 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 58 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 49 0.9397 0.3420 0.0000 |
*MESH_FACENORMAL 73 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 49 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 50 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 66 0.5000 0.8660 0.0000 |
*MESH_FACENORMAL 74 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 65 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 66 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 50 0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 75 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 50 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 51 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 65 -0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 76 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 64 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 65 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 51 -0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 77 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 51 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 52 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 64 -0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 78 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 63 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 64 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 52 -0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 79 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 52 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 53 -1.0000 -0.0000 -0.0000 |
*MESH_VERTEXNORMAL 63 -1.0000 0.0000 0.0000 |
*MESH_FACENORMAL 80 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 62 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 63 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 53 -1.0000 -0.0000 -0.0000 |
*MESH_FACENORMAL 81 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 53 -1.0000 -0.0000 -0.0000 |
*MESH_VERTEXNORMAL 54 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 62 -0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 82 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 61 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 62 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 54 -0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 83 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 54 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 55 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 61 -0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 84 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 60 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 61 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 55 -0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 85 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 55 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 56 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 60 0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 86 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 59 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 60 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 56 0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 87 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 56 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 57 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 59 0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 88 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 58 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 59 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 57 0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 89 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 57 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 49 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 58 0.9397 0.3420 0.0000 |
*MESH_FACENORMAL 90 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 50 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 49 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 91 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 51 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 50 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 92 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 52 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 51 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 93 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 53 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 52 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 94 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 54 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 53 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 95 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 55 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 54 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 96 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 56 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 55 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 97 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 57 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 56 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 98 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 49 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 57 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 99 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 59 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 58 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 100 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 60 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 59 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 101 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 61 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 60 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 102 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 62 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 61 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 103 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 63 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 62 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 104 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 64 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 63 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 105 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 65 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 64 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 106 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 66 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 65 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 107 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 58 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 66 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 108 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 8 0.9397 -0.3420 -0.0000 |
*MESH_VERTEXNORMAL 0 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 75 0.9397 0.3420 0.0000 |
*MESH_FACENORMAL 109 1.0000 -0.0000 0.0000 |
*MESH_VERTEXNORMAL 75 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 83 0.9397 -0.3420 -0.0000 |
*MESH_VERTEXNORMAL 8 0.9397 -0.3420 -0.0000 |
*MESH_FACENORMAL 110 0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 0 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 1 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 76 0.5000 0.8660 0.0000 |
*MESH_FACENORMAL 111 0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 76 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 75 0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 0 0.9397 0.3420 0.0000 |
*MESH_FACENORMAL 112 0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 1 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 2 -0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 77 -0.1736 0.9848 0.0000 |
*MESH_FACENORMAL 113 0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 77 -0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 76 0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 1 0.5000 0.8660 0.0000 |
*MESH_FACENORMAL 114 -0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 2 -0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 3 -0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 78 -0.7660 0.6428 0.0000 |
*MESH_FACENORMAL 115 -0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 78 -0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 77 -0.1736 0.9848 0.0000 |
*MESH_VERTEXNORMAL 2 -0.1736 0.9848 0.0000 |
*MESH_FACENORMAL 116 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 3 -0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 4 -1.0000 -0.0000 0.0000 |
*MESH_VERTEXNORMAL 79 -1.0000 0.0000 -0.0000 |
*MESH_FACENORMAL 117 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 79 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 78 -0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 3 -0.7660 0.6428 0.0000 |
*MESH_FACENORMAL 118 -0.9397 -0.3420 -0.0000 |
*MESH_VERTEXNORMAL 4 -1.0000 -0.0000 0.0000 |
*MESH_VERTEXNORMAL 5 -0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 80 -0.7660 -0.6428 -0.0000 |
*MESH_FACENORMAL 119 -0.9397 -0.3420 -0.0000 |
*MESH_VERTEXNORMAL 80 -0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 79 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 4 -1.0000 -0.0000 0.0000 |
*MESH_FACENORMAL 120 -0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 5 -0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 6 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 81 -0.1736 -0.9848 -0.0000 |
*MESH_FACENORMAL 121 -0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 81 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 80 -0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 5 -0.7660 -0.6428 -0.0000 |
*MESH_FACENORMAL 122 0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 6 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 7 0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 82 0.5000 -0.8660 -0.0000 |
*MESH_FACENORMAL 123 0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 82 0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 81 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 6 -0.1736 -0.9848 -0.0000 |
*MESH_FACENORMAL 124 0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 7 0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 8 0.9397 -0.3420 -0.0000 |
*MESH_VERTEXNORMAL 83 0.9397 -0.3420 -0.0000 |
*MESH_FACENORMAL 125 0.7660 -0.6428 -0.0000 |
*MESH_VERTEXNORMAL 83 0.9397 -0.3420 -0.0000 |
*MESH_VERTEXNORMAL 82 0.5000 -0.8660 -0.0000 |
*MESH_VERTEXNORMAL 7 0.5000 -0.8660 -0.0000 |
*MESH_FACENORMAL 126 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 84 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 85 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 89 -0.0000 -1.0000 -0.0000 |
*MESH_FACENORMAL 127 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 89 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 88 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 84 -0.0000 -1.0000 -0.0000 |
*MESH_FACENORMAL 128 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 87 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 86 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 90 0.0000 1.0000 0.0000 |
*MESH_FACENORMAL 129 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 90 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 91 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 87 0.0000 1.0000 0.0000 |
*MESH_FACENORMAL 130 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 88 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 89 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 94 -0.0000 -1.0000 -0.0000 |
*MESH_FACENORMAL 131 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 94 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 92 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 88 -0.0000 -1.0000 -0.0000 |
*MESH_FACENORMAL 132 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 91 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 90 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 95 0.0000 1.0000 0.0000 |
*MESH_FACENORMAL 133 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 95 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 93 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 91 0.0000 1.0000 0.0000 |
} |
} |
*PROP_MOTIONBLUR 0 |
*PROP_CASTSHADOW 1 |
*PROP_RECVSHADOW 1 |
} |
/nw_hrp/extra/sources/3601_fence.ase |
---|
0,0 → 1,126 |
*3DSMAX_ASCIIEXPORT 200 |
*COMMENT "AsciiExport Version 2.00 - Sun Mar 31 21:19:38 2013" |
*SCENE { |
*SCENE_FILENAME "0913__DC_INGAME.max" |
*SCENE_FIRSTFRAME 0 |
*SCENE_LASTFRAME 33 |
*SCENE_FRAMESPEED 10 |
*SCENE_TICKSPERFRAME 480 |
*SCENE_BACKGROUND_STATIC 0.2549 0.4431 0.7255 |
*SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 |
} |
*GEOMOBJECT { |
*NODE_NAME "Object01" |
*NODE_TM { |
*NODE_NAME "Object01" |
*INHERIT_POS 0 0 0 |
*INHERIT_ROT 0 0 0 |
*INHERIT_SCL 0 0 0 |
*TM_ROW0 1.0000 0.0000 0.0000 |
*TM_ROW1 0.0000 1.0000 0.0000 |
*TM_ROW2 0.0000 0.0000 1.0000 |
*TM_ROW3 4.3929 0.0000 0.0000 |
*TM_POS 4.3929 0.0000 0.0000 |
*TM_ROTAXIS 0.0000 0.0000 0.0000 |
*TM_ROTANGLE 0.0000 |
*TM_SCALE 1.0000 1.0000 1.0000 |
*TM_SCALEAXIS 0.0000 0.0000 0.0000 |
*TM_SCALEAXISANG 0.0000 |
} |
*MESH { |
*TIMEVALUE 0 |
*MESH_NUMVERTEX 12 |
*MESH_NUMFACES 8 |
*MESH_VERTEX_LIST { |
*MESH_VERTEX 0 8.7856 -0.0049 0.0000 |
*MESH_VERTEX 1 8.7856 0.0016 0.0000 |
*MESH_VERTEX 2 8.7856 -0.0049 5.0768 |
*MESH_VERTEX 3 8.7856 0.0016 5.0768 |
*MESH_VERTEX 4 8.7856 0.0016 8.9955 |
*MESH_VERTEX 5 8.7856 -0.0049 8.9955 |
*MESH_VERTEX 6 0.0001 -0.0049 0.0000 |
*MESH_VERTEX 7 0.0001 0.0016 0.0000 |
*MESH_VERTEX 8 0.0001 -0.0049 5.0768 |
*MESH_VERTEX 9 0.0001 0.0016 5.0768 |
*MESH_VERTEX 10 0.0001 -0.0049 8.9955 |
*MESH_VERTEX 11 0.0001 0.0016 8.9955 |
} |
*MESH_FACE_LIST { |
*MESH_FACE 0: A: 1 B: 7 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 1: A: 9 B: 3 C: 1 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 2: A: 3 B: 9 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 3: A: 11 B: 4 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 4: A: 0 B: 2 C: 8 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 5: A: 8 B: 6 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 6: A: 2 B: 5 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 7: A: 10 B: 8 C: 2 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
} |
*MESH_NUMTVERTEX 16 |
*MESH_TVERTLIST { |
*MESH_TVERT 0 0.9992 0.0000 0.0000 |
*MESH_TVERT 1 0.9992 0.0000 0.0000 |
*MESH_TVERT 2 0.9992 0.2719 0.0000 |
*MESH_TVERT 3 0.9992 0.2719 0.0000 |
*MESH_TVERT 4 0.9992 0.5069 0.0000 |
*MESH_TVERT 5 0.9992 0.5069 0.0000 |
*MESH_TVERT 6 0.9992 0.6631 0.0000 |
*MESH_TVERT 7 0.9992 0.6631 0.0000 |
*MESH_TVERT 8 0.1308 0.0000 0.0000 |
*MESH_TVERT 9 0.1308 0.0000 0.0000 |
*MESH_TVERT 10 0.1308 0.2719 0.0000 |
*MESH_TVERT 11 0.1308 0.5069 0.0000 |
*MESH_TVERT 12 0.1308 0.2719 0.0000 |
*MESH_TVERT 13 0.1308 0.5069 0.0000 |
*MESH_TVERT 14 0.1308 0.6631 0.0000 |
*MESH_TVERT 15 0.1308 0.6631 0.0000 |
} |
*MESH_NUMTVFACES 8 |
*MESH_TFACELIST { |
*MESH_TFACE 0 1 9 13 |
*MESH_TFACE 1 13 5 1 |
*MESH_TFACE 2 3 12 15 |
*MESH_TFACE 3 15 6 3 |
*MESH_TFACE 4 0 4 11 |
*MESH_TFACE 5 11 8 0 |
*MESH_TFACE 6 2 7 14 |
*MESH_TFACE 7 14 10 2 |
} |
*MESH_NORMALS { |
*MESH_FACENORMAL 0 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 1 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 7 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 9 0.0000 1.0000 0.0000 |
*MESH_FACENORMAL 1 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 9 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 1 0.0000 1.0000 0.0000 |
*MESH_FACENORMAL 2 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 9 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 11 0.0000 1.0000 0.0000 |
*MESH_FACENORMAL 3 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 11 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 4 0.0000 1.0000 0.0000 |
*MESH_VERTEXNORMAL 3 0.0000 1.0000 0.0000 |
*MESH_FACENORMAL 4 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 0 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 2 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 8 -0.0000 -1.0000 -0.0000 |
*MESH_FACENORMAL 5 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 8 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 6 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 0 -0.0000 -1.0000 -0.0000 |
*MESH_FACENORMAL 6 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 2 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 5 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 10 -0.0000 -1.0000 -0.0000 |
*MESH_FACENORMAL 7 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 10 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 8 -0.0000 -1.0000 -0.0000 |
*MESH_VERTEXNORMAL 2 -0.0000 -1.0000 -0.0000 |
} |
} |
*PROP_MOTIONBLUR 0 |
*PROP_CASTSHADOW 1 |
*PROP_RECVSHADOW 1 |
} |
/nw_hrp/extra/sources/3602_fence.ase |
---|
0,0 → 1,1114 |
*3DSMAX_ASCIIEXPORT 200 |
*COMMENT "AsciiExport Version 2.00 - Sun Mar 31 21:18:09 2013" |
*SCENE { |
*SCENE_FILENAME "0913__DC_INGAME.max" |
*SCENE_FIRSTFRAME 0 |
*SCENE_LASTFRAME 33 |
*SCENE_FRAMESPEED 10 |
*SCENE_TICKSPERFRAME 480 |
*SCENE_BACKGROUND_STATIC 0.2549 0.4431 0.7255 |
*SCENE_AMBIENT_STATIC 0.0000 0.0000 0.0000 |
} |
*GEOMOBJECT { |
*NODE_NAME "Object02" |
*NODE_TM { |
*NODE_NAME "Object02" |
*INHERIT_POS 0 0 0 |
*INHERIT_ROT 0 0 0 |
*INHERIT_SCL 0 0 0 |
*TM_ROW0 1.0000 0.0000 0.0000 |
*TM_ROW1 0.0000 1.0000 0.0000 |
*TM_ROW2 0.0000 0.0000 1.0000 |
*TM_ROW3 5.0002 0.0003 0.0000 |
*TM_POS 5.0002 0.0003 0.0000 |
*TM_ROTAXIS 0.0000 0.0000 0.0000 |
*TM_ROTANGLE 0.0000 |
*TM_SCALE 1.0000 1.0000 1.0000 |
*TM_SCALEAXIS 0.0000 0.0000 0.0000 |
*TM_SCALEAXISANG 0.0000 |
} |
*MESH { |
*TIMEVALUE 0 |
*MESH_NUMVERTEX 96 |
*MESH_NUMFACES 134 |
*MESH_VERTEX_LIST { |
*MESH_VERTEX 0 8.7856 0.2003 0.0000 |
*MESH_VERTEX 1 9.0428 0.5069 0.0000 |
*MESH_VERTEX 2 9.4369 0.5764 0.0000 |
*MESH_VERTEX 3 9.7834 0.3763 0.0000 |
*MESH_VERTEX 4 9.9203 0.0003 0.0000 |
*MESH_VERTEX 5 9.7834 -0.3758 0.0000 |
*MESH_VERTEX 6 9.4369 -0.5759 0.0000 |
*MESH_VERTEX 7 9.0428 -0.5064 0.0000 |
*MESH_VERTEX 8 8.7856 -0.1998 0.0000 |
*MESH_VERTEX 9 8.7104 0.2277 0.5433 |
*MESH_VERTEX 10 9.0028 0.5762 0.5433 |
*MESH_VERTEX 11 9.4508 0.6552 0.5433 |
*MESH_VERTEX 12 9.8447 0.4277 0.5433 |
*MESH_VERTEX 13 10.0003 0.0003 0.5433 |
*MESH_VERTEX 14 9.8447 -0.4272 0.5433 |
*MESH_VERTEX 15 9.4508 -0.6546 0.5433 |
*MESH_VERTEX 16 9.0028 -0.5757 0.5433 |
*MESH_VERTEX 17 8.7104 -0.2272 0.5433 |
*MESH_VERTEX 18 8.7104 0.2277 0.9433 |
*MESH_VERTEX 19 8.7104 -0.2272 0.9433 |
*MESH_VERTEX 20 9.0028 -0.5757 0.9433 |
*MESH_VERTEX 21 9.4508 -0.6546 0.9433 |
*MESH_VERTEX 22 9.8447 -0.4272 0.9433 |
*MESH_VERTEX 23 10.0003 0.0003 0.9433 |
*MESH_VERTEX 24 9.8447 0.4277 0.9433 |
*MESH_VERTEX 25 9.4508 0.6552 0.9433 |
*MESH_VERTEX 26 9.0028 0.5762 0.9433 |
*MESH_VERTEX 27 9.3353 0.0003 0.5433 |
*MESH_VERTEX 28 9.3353 0.0003 0.9433 |
*MESH_VERTEX 29 8.7104 0.2277 8.2550 |
*MESH_VERTEX 30 9.0028 0.5762 8.2550 |
*MESH_VERTEX 31 9.4508 0.6552 8.2550 |
*MESH_VERTEX 32 9.8447 0.4277 8.2550 |
*MESH_VERTEX 33 10.0003 0.0003 8.2550 |
*MESH_VERTEX 34 9.8447 -0.4272 8.2550 |
*MESH_VERTEX 35 9.4508 -0.6546 8.2550 |
*MESH_VERTEX 36 9.0028 -0.5757 8.2550 |
*MESH_VERTEX 37 8.7104 -0.2272 8.2550 |
*MESH_VERTEX 38 8.7104 0.2277 8.6550 |
*MESH_VERTEX 39 8.7104 -0.2272 8.6550 |
*MESH_VERTEX 40 9.0028 -0.5757 8.6550 |
*MESH_VERTEX 41 9.4508 -0.6546 8.6550 |
*MESH_VERTEX 42 9.8447 -0.4272 8.6550 |
*MESH_VERTEX 43 10.0003 0.0003 8.6550 |
*MESH_VERTEX 44 9.8447 0.4277 8.6550 |
*MESH_VERTEX 45 9.4508 0.6552 8.6550 |
*MESH_VERTEX 46 9.0028 0.5762 8.6550 |
*MESH_VERTEX 47 9.3353 0.0003 8.2550 |
*MESH_VERTEX 48 9.3353 0.0003 8.6550 |
*MESH_VERTEX 49 8.7104 0.2277 8.8145 |
*MESH_VERTEX 50 9.0028 0.5762 8.8145 |
*MESH_VERTEX 51 9.4508 0.6552 8.8145 |
*MESH_VERTEX 52 9.8447 0.4277 8.8145 |
*MESH_VERTEX 53 10.0003 0.0003 8.8145 |
*MESH_VERTEX 54 9.8447 -0.4272 8.8145 |
*MESH_VERTEX 55 9.4508 -0.6546 8.8145 |
*MESH_VERTEX 56 9.0028 -0.5757 8.8145 |
*MESH_VERTEX 57 8.7104 -0.2272 8.8145 |
*MESH_VERTEX 58 8.7104 0.2277 9.1145 |
*MESH_VERTEX 59 8.7104 -0.2272 9.1145 |
*MESH_VERTEX 60 9.0028 -0.5757 9.1145 |
*MESH_VERTEX 61 9.4508 -0.6546 9.1145 |
*MESH_VERTEX 62 9.8447 -0.4272 9.1145 |
*MESH_VERTEX 63 10.0003 0.0003 9.1145 |
*MESH_VERTEX 64 9.8447 0.4277 9.1145 |
*MESH_VERTEX 65 9.4508 0.6552 9.1145 |
*MESH_VERTEX 66 9.0028 0.5762 9.1145 |
*MESH_VERTEX 67 9.3353 0.0003 9.1145 |
*MESH_VERTEX 68 9.3353 0.0003 8.8145 |
*MESH_VERTEX 69 9.2840 -0.0045 8.7478 |
*MESH_VERTEX 70 9.1339 -0.0045 8.7478 |
*MESH_VERTEX 71 9.6773 -0.0045 8.7478 |
*MESH_VERTEX 72 9.5256 -0.0017 8.8312 |
*MESH_VERTEX 73 9.5273 -0.0045 8.7478 |
*MESH_VERTEX 74 9.2856 -0.0017 8.8312 |
*MESH_VERTEX 75 8.7856 0.2003 9.0955 |
*MESH_VERTEX 76 9.0428 0.5069 9.0955 |
*MESH_VERTEX 77 9.4369 0.5764 9.0955 |
*MESH_VERTEX 78 9.7834 0.3763 9.0955 |
*MESH_VERTEX 79 9.9203 0.0003 9.0955 |
*MESH_VERTEX 80 9.7834 -0.3758 9.0955 |
*MESH_VERTEX 81 9.4369 -0.5759 9.0955 |
*MESH_VERTEX 82 9.0428 -0.5064 9.0955 |
*MESH_VERTEX 83 8.7856 -0.1998 9.0955 |
*MESH_VERTEX 84 9.3104 -0.0049 0.0000 |
*MESH_VERTEX 85 0.0000 -0.0049 0.0000 |
*MESH_VERTEX 86 9.3104 0.0016 0.0000 |
*MESH_VERTEX 87 0.0000 0.0016 0.0000 |
*MESH_VERTEX 88 9.3104 -0.0049 5.0768 |
*MESH_VERTEX 89 0.0000 -0.0049 5.0768 |
*MESH_VERTEX 90 9.3104 0.0016 5.0768 |
*MESH_VERTEX 91 0.0000 0.0016 5.0768 |
*MESH_VERTEX 92 9.3104 -0.0049 8.9955 |
*MESH_VERTEX 93 0.0000 0.0016 8.9955 |
*MESH_VERTEX 94 0.0000 -0.0049 8.9955 |
*MESH_VERTEX 95 9.3104 0.0016 8.9955 |
} |
*MESH_FACE_LIST { |
*MESH_FACE 0: A: 18 B: 9 C: 17 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 1: A: 17 B: 19 C: 18 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 2: A: 26 B: 10 C: 9 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 3: A: 9 B: 18 C: 26 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 4: A: 25 B: 11 C: 10 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 5: A: 10 B: 26 C: 25 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 6: A: 24 B: 12 C: 11 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 7: A: 11 B: 25 C: 24 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 8: A: 23 B: 13 C: 12 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 9: A: 12 B: 24 C: 23 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 10: A: 22 B: 14 C: 13 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 11: A: 13 B: 23 C: 22 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 12: A: 21 B: 15 C: 14 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 13: A: 14 B: 22 C: 21 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 14: A: 20 B: 16 C: 15 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 15: A: 15 B: 21 C: 20 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 16: A: 19 B: 17 C: 16 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 17: A: 16 B: 20 C: 19 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 18: A: 27 B: 9 C: 10 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 19: A: 27 B: 10 C: 11 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 20: A: 27 B: 11 C: 12 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 21: A: 27 B: 12 C: 13 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 22: A: 27 B: 13 C: 14 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 23: A: 27 B: 14 C: 15 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 24: A: 27 B: 15 C: 16 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 25: A: 27 B: 16 C: 17 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 26: A: 27 B: 17 C: 9 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 27: A: 28 B: 18 C: 19 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 28: A: 28 B: 19 C: 20 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 29: A: 28 B: 20 C: 21 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 30: A: 28 B: 21 C: 22 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 31: A: 28 B: 22 C: 23 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 32: A: 28 B: 23 C: 24 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 33: A: 28 B: 24 C: 25 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 34: A: 28 B: 25 C: 26 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 35: A: 28 B: 26 C: 18 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 36: A: 38 B: 29 C: 37 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 37: A: 37 B: 39 C: 38 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 38: A: 46 B: 30 C: 29 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 39: A: 29 B: 38 C: 46 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 40: A: 45 B: 31 C: 30 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 41: A: 30 B: 46 C: 45 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 42: A: 44 B: 32 C: 31 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 43: A: 31 B: 45 C: 44 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 44: A: 43 B: 33 C: 32 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 45: A: 32 B: 44 C: 43 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 46: A: 42 B: 34 C: 33 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 47: A: 33 B: 43 C: 42 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 48: A: 41 B: 35 C: 34 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 49: A: 34 B: 42 C: 41 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 50: A: 40 B: 36 C: 35 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 51: A: 35 B: 41 C: 40 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 52: A: 39 B: 37 C: 36 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 53: A: 36 B: 40 C: 39 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 54: A: 47 B: 29 C: 30 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 55: A: 47 B: 30 C: 31 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 56: A: 47 B: 31 C: 32 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 57: A: 47 B: 32 C: 33 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 58: A: 47 B: 33 C: 34 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 59: A: 47 B: 34 C: 35 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 60: A: 47 B: 35 C: 36 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 61: A: 47 B: 36 C: 37 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 62: A: 47 B: 37 C: 29 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 63: A: 48 B: 38 C: 39 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 64: A: 48 B: 39 C: 40 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 65: A: 48 B: 40 C: 41 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 66: A: 48 B: 41 C: 42 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 67: A: 48 B: 42 C: 43 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 68: A: 48 B: 43 C: 44 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 69: A: 48 B: 44 C: 45 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 70: A: 48 B: 45 C: 46 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 71: A: 48 B: 46 C: 38 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 72: A: 66 B: 50 C: 49 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 73: A: 49 B: 58 C: 66 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 74: A: 65 B: 51 C: 50 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 75: A: 50 B: 66 C: 65 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 76: A: 64 B: 52 C: 51 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 77: A: 51 B: 65 C: 64 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 78: A: 63 B: 53 C: 52 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 79: A: 52 B: 64 C: 63 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 80: A: 62 B: 54 C: 53 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 81: A: 53 B: 63 C: 62 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 82: A: 61 B: 55 C: 54 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 83: A: 54 B: 62 C: 61 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 84: A: 60 B: 56 C: 55 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 85: A: 55 B: 61 C: 60 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 86: A: 59 B: 57 C: 56 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 87: A: 56 B: 60 C: 59 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 88: A: 58 B: 49 C: 57 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 89: A: 57 B: 59 C: 58 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 4 *MESH_MTLID 0 |
*MESH_FACE 90: A: 68 B: 49 C: 50 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 91: A: 68 B: 50 C: 51 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 92: A: 68 B: 51 C: 52 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 93: A: 68 B: 52 C: 53 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 94: A: 68 B: 53 C: 54 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 95: A: 68 B: 54 C: 55 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 96: A: 68 B: 55 C: 56 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 97: A: 68 B: 56 C: 57 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 98: A: 68 B: 57 C: 49 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 99: A: 67 B: 58 C: 59 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 100: A: 67 B: 59 C: 60 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 101: A: 67 B: 60 C: 61 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 102: A: 67 B: 61 C: 62 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 103: A: 67 B: 62 C: 63 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 104: A: 67 B: 63 C: 64 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 105: A: 67 B: 64 C: 65 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 106: A: 67 B: 65 C: 66 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 107: A: 67 B: 66 C: 58 AB: 1 BC: 1 CA: 1 *MESH_SMOOTHING *MESH_MTLID 0 |
*MESH_FACE 108: A: 8 B: 83 C: 75 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 109: A: 75 B: 0 C: 8 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 110: A: 0 B: 75 C: 76 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 111: A: 76 B: 1 C: 0 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 112: A: 1 B: 76 C: 77 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 113: A: 77 B: 2 C: 1 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 114: A: 2 B: 77 C: 78 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 115: A: 78 B: 3 C: 2 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 116: A: 3 B: 78 C: 79 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 117: A: 79 B: 4 C: 3 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 118: A: 4 B: 79 C: 80 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 119: A: 80 B: 5 C: 4 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 120: A: 5 B: 80 C: 81 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 121: A: 81 B: 6 C: 5 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 122: A: 6 B: 81 C: 82 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 123: A: 82 B: 7 C: 6 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 124: A: 7 B: 82 C: 83 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 125: A: 83 B: 8 C: 7 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 0 |
*MESH_FACE 126: A: 84 B: 88 C: 89 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 127: A: 89 B: 85 C: 84 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 128: A: 87 B: 91 C: 90 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 129: A: 90 B: 86 C: 87 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 130: A: 88 B: 92 C: 94 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 131: A: 94 B: 89 C: 88 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 132: A: 91 B: 93 C: 95 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
*MESH_FACE 133: A: 95 B: 90 C: 91 AB: 1 BC: 1 CA: 0 *MESH_SMOOTHING 1 *MESH_MTLID 1 |
} |
*MESH_NUMTVERTEX 164 |
*MESH_TVERTLIST { |
*MESH_TVERT 0 0.1201 0.0000 0.0000 |
*MESH_TVERT 1 0.0933 0.0000 0.0000 |
*MESH_TVERT 2 0.0664 0.0000 0.0000 |
*MESH_TVERT 3 0.0396 0.0000 0.0000 |
*MESH_TVERT 4 0.0128 0.0000 0.0000 |
*MESH_TVERT 5 0.0342 0.0000 0.0000 |
*MESH_TVERT 6 0.0557 0.0000 0.0000 |
*MESH_TVERT 7 0.0772 0.0000 0.0000 |
*MESH_TVERT 8 0.0986 0.0000 0.0000 |
*MESH_TVERT 9 0.0128 0.0000 0.0000 |
*MESH_TVERT 10 0.1201 0.0000 0.0000 |
*MESH_TVERT 11 0.1292 0.0899 0.0000 |
*MESH_TVERT 12 0.0979 0.0899 0.0000 |
*MESH_TVERT 13 0.0116 0.6754 0.0000 |
*MESH_TVERT 14 0.0368 0.6454 0.0000 |
*MESH_TVERT 15 0.0755 0.6386 0.0000 |
*MESH_TVERT 16 0.1094 0.6582 0.0000 |
*MESH_TVERT 17 0.1228 0.6950 0.0000 |
*MESH_TVERT 18 0.1094 0.7319 0.0000 |
*MESH_TVERT 19 0.0755 0.7515 0.0000 |
*MESH_TVERT 20 0.1292 0.0585 0.0000 |
*MESH_TVERT 21 0.0368 0.7447 0.0000 |
*MESH_TVERT 22 0.0116 0.7147 0.0000 |
*MESH_TVERT 23 0.0116 0.6754 0.0466 |
*MESH_TVERT 24 0.0116 0.7147 0.0466 |
*MESH_TVERT 25 0.0368 0.7447 0.0466 |
*MESH_TVERT 26 0.0755 0.7515 0.0466 |
*MESH_TVERT 27 0.1094 0.7319 0.0466 |
*MESH_TVERT 28 0.0979 0.0585 0.0000 |
*MESH_TVERT 29 0.1228 0.6950 0.0466 |
*MESH_TVERT 30 0.1094 0.6582 0.0466 |
*MESH_TVERT 31 0.0755 0.6386 0.0466 |
*MESH_TVERT 32 0.0368 0.6454 0.0466 |
*MESH_TVERT 33 0.0665 0.8317 0.0000 |
*MESH_TVERT 34 0.0351 0.8317 0.0000 |
*MESH_TVERT 35 0.0655 0.6950 0.0000 |
*MESH_TVERT 36 0.0655 0.6950 0.0466 |
*MESH_TVERT 37 0.0116 0.6754 0.9000 |
*MESH_TVERT 38 0.0368 0.6454 0.9000 |
*MESH_TVERT 39 0.0755 0.6386 0.9000 |
*MESH_TVERT 40 0.1292 0.8640 0.0000 |
*MESH_TVERT 41 0.1094 0.6582 0.9000 |
*MESH_TVERT 42 0.1228 0.6950 0.9000 |
*MESH_TVERT 43 0.1094 0.7319 0.9000 |
*MESH_TVERT 44 0.0755 0.7515 0.9000 |
*MESH_TVERT 45 0.0368 0.7447 0.9000 |
*MESH_TVERT 46 0.0116 0.7147 0.9000 |
*MESH_TVERT 47 0.0116 0.6754 0.9465 |
*MESH_TVERT 48 0.0979 0.8640 0.0000 |
*MESH_TVERT 49 0.0116 0.7147 0.9465 |
*MESH_TVERT 50 0.0368 0.7447 0.9465 |
*MESH_TVERT 51 0.1293 0.8866 0.0000 |
*MESH_TVERT 52 0.0755 0.7515 0.9465 |
*MESH_TVERT 53 0.1094 0.7319 0.9465 |
*MESH_TVERT 54 0.1228 0.6950 0.9465 |
*MESH_TVERT 55 0.0039 0.8866 0.0000 |
*MESH_TVERT 56 0.0290 0.8866 0.0000 |
*MESH_TVERT 57 0.0541 0.8866 0.0000 |
*MESH_TVERT 58 0.0791 0.8866 0.0000 |
*MESH_TVERT 59 0.1042 0.8866 0.0000 |
*MESH_TVERT 60 0.1293 0.9101 0.0000 |
*MESH_TVERT 61 0.1042 0.9101 0.0000 |
*MESH_TVERT 62 0.1293 0.8866 0.0000 |
*MESH_TVERT 63 0.0980 0.8866 0.0000 |
*MESH_TVERT 64 0.1293 0.9101 0.0000 |
*MESH_TVERT 65 0.0980 0.9101 0.0000 |
*MESH_TVERT 66 0.1094 0.6582 0.9465 |
*MESH_TVERT 67 0.0755 0.6386 0.9465 |
*MESH_TVERT 68 0.0368 0.6454 0.9465 |
*MESH_TVERT 69 0.0655 0.6950 0.9000 |
*MESH_TVERT 70 0.0655 0.6950 0.9465 |
*MESH_TVERT 71 0.0116 0.6754 0.9651 |
*MESH_TVERT 72 0.0368 0.6454 0.9651 |
*MESH_TVERT 73 0.0755 0.6386 0.9651 |
*MESH_TVERT 74 0.1094 0.6582 0.9651 |
*MESH_TVERT 75 0.1228 0.6950 0.9651 |
*MESH_TVERT 76 0.1094 0.7319 0.9651 |
*MESH_TVERT 77 0.0755 0.7515 0.9651 |
*MESH_TVERT 78 0.0368 0.7447 0.9651 |
*MESH_TVERT 79 0.0116 0.7147 0.9651 |
*MESH_TVERT 80 0.0116 0.6754 1.0000 |
*MESH_TVERT 81 0.0116 0.7147 1.0000 |
*MESH_TVERT 82 0.0368 0.7447 1.0000 |
*MESH_TVERT 83 0.0290 0.9101 0.0000 |
*MESH_TVERT 84 0.0039 0.9101 0.0000 |
*MESH_TVERT 85 0.0541 0.9101 0.0000 |
*MESH_TVERT 86 0.0353 0.8866 0.0000 |
*MESH_TVERT 87 0.0791 0.9101 0.0000 |
*MESH_TVERT 88 0.0666 0.8866 0.0000 |
*MESH_TVERT 89 0.0666 0.9101 0.0000 |
*MESH_TVERT 90 0.0040 0.8866 -0.0000 |
*MESH_TVERT 91 0.0040 0.9101 -0.0000 |
*MESH_TVERT 92 0.1292 0.8317 0.0000 |
*MESH_TVERT 93 0.0353 0.9101 0.0000 |
*MESH_TVERT 94 0.1041 0.8317 0.0000 |
*MESH_TVERT 95 0.1292 0.8640 0.0000 |
*MESH_TVERT 96 0.1041 0.8640 0.0000 |
*MESH_TVERT 97 0.0038 0.8317 0.0000 |
*MESH_TVERT 98 0.0289 0.8317 0.0000 |
*MESH_TVERT 99 0.0289 0.8640 0.0000 |
*MESH_TVERT 100 0.0038 0.8640 0.0000 |
*MESH_TVERT 101 0.1292 0.8317 0.0000 |
*MESH_TVERT 102 0.0540 0.8317 0.0000 |
*MESH_TVERT 103 0.0540 0.8640 0.0000 |
*MESH_TVERT 104 0.0979 0.8317 0.0000 |
*MESH_TVERT 105 0.0755 0.7515 1.0000 |
*MESH_TVERT 106 0.0791 0.8317 0.0000 |
*MESH_TVERT 107 0.0791 0.8640 0.0000 |
*MESH_TVERT 108 0.1094 0.7319 1.0000 |
*MESH_TVERT 109 0.1228 0.6950 1.0000 |
*MESH_TVERT 110 0.1094 0.6582 1.0000 |
*MESH_TVERT 111 0.0665 0.8640 0.0000 |
*MESH_TVERT 112 0.1292 0.0899 0.0000 |
*MESH_TVERT 113 0.1042 0.0899 0.0000 |
*MESH_TVERT 114 0.1292 0.0585 0.0000 |
*MESH_TVERT 115 0.0351 0.8640 0.0000 |
*MESH_TVERT 116 0.1042 0.0585 0.0000 |
*MESH_TVERT 117 0.0040 0.0899 0.0000 |
*MESH_TVERT 118 0.0037 0.8317 0.0000 |
*MESH_TVERT 119 0.0037 0.8640 0.0000 |
*MESH_TVERT 120 0.0291 0.0899 0.0000 |
*MESH_TVERT 121 0.0291 0.0585 0.0000 |
*MESH_TVERT 122 0.0040 0.0585 0.0000 |
*MESH_TVERT 123 0.0755 0.6386 1.0000 |
*MESH_TVERT 124 0.0541 0.0899 0.0000 |
*MESH_TVERT 125 0.0541 0.0585 0.0000 |
*MESH_TVERT 126 0.0368 0.6454 1.0000 |
*MESH_TVERT 127 0.0655 0.6950 1.0000 |
*MESH_TVERT 128 0.0791 0.0899 0.0000 |
*MESH_TVERT 129 0.0791 0.0585 0.0000 |
*MESH_TVERT 130 0.0655 0.6950 0.9651 |
*MESH_TVERT 131 0.0666 0.0899 0.0000 |
*MESH_TVERT 132 0.0666 0.0585 0.0000 |
*MESH_TVERT 133 0.0353 0.0899 0.0000 |
*MESH_TVERT 134 0.0353 0.0585 0.0000 |
*MESH_TVERT 135 0.0040 0.0899 0.0000 |
*MESH_TVERT 136 0.0040 0.0585 0.0000 |
*MESH_TVERT 137 0.1201 0.9099 0.0000 |
*MESH_TVERT 138 0.1201 0.9099 0.0000 |
*MESH_TVERT 139 0.0933 0.9099 0.0000 |
*MESH_TVERT 140 0.0664 0.9099 0.0000 |
*MESH_TVERT 141 0.0396 0.9099 0.0000 |
*MESH_TVERT 142 0.0128 0.9099 0.0000 |
*MESH_TVERT 143 0.0128 0.9099 0.0000 |
*MESH_TVERT 144 0.0342 0.9099 0.0000 |
*MESH_TVERT 145 0.0557 0.9099 0.0000 |
*MESH_TVERT 146 0.0772 0.9099 0.0000 |
*MESH_TVERT 147 0.0986 0.9099 0.0000 |
*MESH_TVERT 148 0.0789 0.0000 0.0000 |
*MESH_TVERT 149 0.9992 0.0000 0.0000 |
*MESH_TVERT 150 0.0789 0.0000 0.0000 |
*MESH_TVERT 151 0.9992 0.0000 0.0000 |
*MESH_TVERT 152 0.0789 0.2719 0.0000 |
*MESH_TVERT 153 0.9992 0.2719 0.0000 |
*MESH_TVERT 154 0.0789 0.2719 0.0000 |
*MESH_TVERT 155 0.9992 0.2719 0.0000 |
*MESH_TVERT 156 0.0789 0.5069 0.0000 |
*MESH_TVERT 157 0.9992 0.5069 0.0000 |
*MESH_TVERT 158 0.0789 0.5069 0.0000 |
*MESH_TVERT 159 0.9992 0.5069 0.0000 |
*MESH_TVERT 160 0.0789 0.6631 0.0000 |
*MESH_TVERT 161 0.9992 0.6631 0.0000 |
*MESH_TVERT 162 0.9992 0.6631 0.0000 |
*MESH_TVERT 163 0.0789 0.6631 0.0000 |
} |
*MESH_NUMTVFACES 134 |
*MESH_TFACELIST { |
*MESH_TFACE 0 114 112 113 |
*MESH_TFACE 1 113 116 114 |
*MESH_TFACE 2 28 12 11 |
*MESH_TFACE 3 11 20 28 |
*MESH_TFACE 4 132 131 12 |
*MESH_TFACE 5 12 28 132 |
*MESH_TFACE 6 134 133 131 |
*MESH_TFACE 7 131 132 134 |
*MESH_TFACE 8 136 135 133 |
*MESH_TFACE 9 133 134 136 |
*MESH_TFACE 10 121 120 117 |
*MESH_TFACE 11 117 122 121 |
*MESH_TFACE 12 125 124 120 |
*MESH_TFACE 13 120 121 125 |
*MESH_TFACE 14 129 128 124 |
*MESH_TFACE 15 124 125 129 |
*MESH_TFACE 16 116 113 128 |
*MESH_TFACE 17 128 129 116 |
*MESH_TFACE 18 35 13 14 |
*MESH_TFACE 19 35 14 15 |
*MESH_TFACE 20 35 15 16 |
*MESH_TFACE 21 35 16 17 |
*MESH_TFACE 22 35 17 18 |
*MESH_TFACE 23 35 18 19 |
*MESH_TFACE 24 35 19 21 |
*MESH_TFACE 25 35 21 22 |
*MESH_TFACE 26 35 22 13 |
*MESH_TFACE 27 36 23 24 |
*MESH_TFACE 28 36 24 25 |
*MESH_TFACE 29 36 25 26 |
*MESH_TFACE 30 36 26 27 |
*MESH_TFACE 31 36 27 29 |
*MESH_TFACE 32 36 29 30 |
*MESH_TFACE 33 36 30 31 |
*MESH_TFACE 34 36 31 32 |
*MESH_TFACE 35 36 32 23 |
*MESH_TFACE 36 95 101 94 |
*MESH_TFACE 37 94 96 95 |
*MESH_TFACE 38 48 104 92 |
*MESH_TFACE 39 92 40 48 |
*MESH_TFACE 40 111 33 104 |
*MESH_TFACE 41 104 48 111 |
*MESH_TFACE 42 115 34 33 |
*MESH_TFACE 43 33 111 115 |
*MESH_TFACE 44 119 118 34 |
*MESH_TFACE 45 34 115 119 |
*MESH_TFACE 46 99 98 97 |
*MESH_TFACE 47 97 100 99 |
*MESH_TFACE 48 103 102 98 |
*MESH_TFACE 49 98 99 103 |
*MESH_TFACE 50 107 106 102 |
*MESH_TFACE 51 102 103 107 |
*MESH_TFACE 52 96 94 106 |
*MESH_TFACE 53 106 107 96 |
*MESH_TFACE 54 69 37 38 |
*MESH_TFACE 55 69 38 39 |
*MESH_TFACE 56 69 39 41 |
*MESH_TFACE 57 69 41 42 |
*MESH_TFACE 58 69 42 43 |
*MESH_TFACE 59 69 43 44 |
*MESH_TFACE 60 69 44 45 |
*MESH_TFACE 61 69 45 46 |
*MESH_TFACE 62 69 46 37 |
*MESH_TFACE 63 70 47 49 |
*MESH_TFACE 64 70 49 50 |
*MESH_TFACE 65 70 50 52 |
*MESH_TFACE 66 70 52 53 |
*MESH_TFACE 67 70 53 54 |
*MESH_TFACE 68 70 54 66 |
*MESH_TFACE 69 70 66 67 |
*MESH_TFACE 70 70 67 68 |
*MESH_TFACE 71 70 68 47 |
*MESH_TFACE 72 65 63 51 |
*MESH_TFACE 73 51 60 65 |
*MESH_TFACE 74 89 88 63 |
*MESH_TFACE 75 63 65 89 |
*MESH_TFACE 76 93 86 88 |
*MESH_TFACE 77 88 89 93 |
*MESH_TFACE 78 91 90 86 |
*MESH_TFACE 79 86 93 91 |
*MESH_TFACE 80 83 56 55 |
*MESH_TFACE 81 55 84 83 |
*MESH_TFACE 82 85 57 56 |
*MESH_TFACE 83 56 83 85 |
*MESH_TFACE 84 87 58 57 |
*MESH_TFACE 85 57 85 87 |
*MESH_TFACE 86 61 59 58 |
*MESH_TFACE 87 58 87 61 |
*MESH_TFACE 88 64 62 59 |
*MESH_TFACE 89 59 61 64 |
*MESH_TFACE 90 130 71 72 |
*MESH_TFACE 91 130 72 73 |
*MESH_TFACE 92 130 73 74 |
*MESH_TFACE 93 130 74 75 |
*MESH_TFACE 94 130 75 76 |
*MESH_TFACE 95 130 76 77 |
*MESH_TFACE 96 130 77 78 |
*MESH_TFACE 97 130 78 79 |
*MESH_TFACE 98 130 79 71 |
*MESH_TFACE 99 127 80 81 |
*MESH_TFACE 100 127 81 82 |
*MESH_TFACE 101 127 82 105 |
*MESH_TFACE 102 127 105 108 |
*MESH_TFACE 103 127 108 109 |
*MESH_TFACE 104 127 109 110 |
*MESH_TFACE 105 127 110 123 |
*MESH_TFACE 106 127 123 126 |
*MESH_TFACE 107 127 126 80 |
*MESH_TFACE 108 8 147 137 |
*MESH_TFACE 109 137 10 8 |
*MESH_TFACE 110 0 138 139 |
*MESH_TFACE 111 139 1 0 |
*MESH_TFACE 112 1 139 140 |
*MESH_TFACE 113 140 2 1 |
*MESH_TFACE 114 2 140 141 |
*MESH_TFACE 115 141 3 2 |
*MESH_TFACE 116 3 141 142 |
*MESH_TFACE 117 142 4 3 |
*MESH_TFACE 118 9 143 144 |
*MESH_TFACE 119 144 5 9 |
*MESH_TFACE 120 5 144 145 |
*MESH_TFACE 121 145 6 5 |
*MESH_TFACE 122 6 145 146 |
*MESH_TFACE 123 146 7 6 |
*MESH_TFACE 124 7 146 147 |
*MESH_TFACE 125 147 8 7 |
*MESH_TFACE 126 148 156 157 |
*MESH_TFACE 127 157 149 148 |
*MESH_TFACE 128 151 159 158 |
*MESH_TFACE 129 158 150 151 |
*MESH_TFACE 130 152 160 162 |
*MESH_TFACE 131 162 153 152 |
*MESH_TFACE 132 155 161 163 |
*MESH_TFACE 133 163 154 155 |
} |
*MESH_NORMALS { |
*MESH_FACENORMAL 0 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 18 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 9 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 17 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 1 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 17 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 19 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 18 -0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 2 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 26 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 10 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 9 -0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 3 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 9 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 18 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 26 -0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 4 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 25 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 11 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 10 -0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 5 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 10 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 26 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 25 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 6 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 24 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 12 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 11 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 7 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 11 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 25 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 24 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 8 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 13 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 12 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 9 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 12 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 24 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 |
*MESH_FACENORMAL 10 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 22 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 14 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 13 1.0000 0.0000 -0.0000 |
*MESH_FACENORMAL 11 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 13 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 23 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 22 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 12 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 21 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 15 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 14 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 13 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 14 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 22 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 21 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 14 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 20 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 16 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 15 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 15 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 15 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 21 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 20 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 16 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 19 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 17 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 16 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 17 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 16 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 20 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 19 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 18 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 9 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 10 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 19 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 10 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 11 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 20 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 11 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 12 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 21 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 12 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 13 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 22 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 13 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 14 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 23 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 14 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 15 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 24 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 15 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 16 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 25 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 16 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 17 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 26 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 27 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 17 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 9 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 27 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 18 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 19 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 28 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 19 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 20 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 29 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 20 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 21 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 30 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 21 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 22 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 31 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 22 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 23 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 32 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 23 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 24 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 33 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 24 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 25 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 34 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 25 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 26 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 35 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 28 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 26 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 18 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 36 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 38 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 29 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 37 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 37 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 37 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 39 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 38 -0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 38 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 46 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 30 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 29 -0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 39 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 29 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 38 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 46 -0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 40 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 45 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 31 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 30 -0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 41 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 30 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 46 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 45 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 42 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 44 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 32 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 31 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 43 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 31 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 45 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 44 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 44 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 43 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 33 1.0000 -0.0000 0.0000 |
*MESH_VERTEXNORMAL 32 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 45 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 32 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 44 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 43 1.0000 0.0000 -0.0000 |
*MESH_FACENORMAL 46 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 42 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 34 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 33 1.0000 -0.0000 0.0000 |
*MESH_FACENORMAL 47 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 33 1.0000 -0.0000 0.0000 |
*MESH_VERTEXNORMAL 43 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 42 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 48 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 41 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 35 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 34 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 49 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 34 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 42 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 41 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 50 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 40 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 36 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 35 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 51 -0.1736 -0.9848 -0.0000 |
*MESH_VERTEXNORMAL 35 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 41 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 40 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 52 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 39 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 37 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 36 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 53 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 36 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 40 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 39 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 54 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 29 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 30 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 55 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 30 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 31 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 56 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 31 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 32 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 57 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 32 -0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 33 -0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 58 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 33 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 34 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 59 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 34 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 35 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 60 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 35 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 36 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 61 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 36 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 37 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 62 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 47 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 37 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 29 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 63 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 38 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 39 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 64 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 39 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 40 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 65 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 40 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 41 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 66 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 41 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 42 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 67 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 42 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 43 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 68 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 43 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 69 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 44 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 45 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 70 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 45 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 46 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 71 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 48 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 46 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 38 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 72 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 66 -0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 50 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 49 -0.9397 0.3420 0.0000 |
*MESH_FACENORMAL 73 -0.7660 0.6428 0.0000 |
*MESH_VERTEXNORMAL 49 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 58 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 66 -0.5000 0.8660 0.0000 |
*MESH_FACENORMAL 74 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 65 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 51 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 50 -0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 75 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 50 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 66 -0.5000 0.8660 0.0000 |
*MESH_VERTEXNORMAL 65 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 76 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 64 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 52 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 51 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 77 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 51 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 65 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 64 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 78 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 63 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 53 1.0000 -0.0000 -0.0000 |
*MESH_VERTEXNORMAL 52 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 79 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 52 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 64 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 63 1.0000 0.0000 0.0000 |
*MESH_FACENORMAL 80 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 62 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 54 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 53 1.0000 -0.0000 -0.0000 |
*MESH_FACENORMAL 81 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 53 1.0000 -0.0000 -0.0000 |
*MESH_VERTEXNORMAL 63 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 62 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 82 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 61 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 55 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 54 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 83 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 54 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 62 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 61 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 84 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 60 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 56 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 55 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 85 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 55 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 61 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 60 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 86 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 59 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 57 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 56 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 87 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 56 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 60 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 59 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 88 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 58 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 49 -0.9397 0.3420 0.0000 |
*MESH_VERTEXNORMAL 57 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 89 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 57 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 59 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 58 -0.9397 0.3420 0.0000 |
*MESH_FACENORMAL 90 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 49 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 50 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 91 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 50 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 51 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 92 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 51 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 52 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 93 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 52 0.0000 -0.0000 -1.0000 |
*MESH_VERTEXNORMAL 53 0.0000 -0.0000 -1.0000 |
*MESH_FACENORMAL 94 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 53 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 54 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 95 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 54 -0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 55 -0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 96 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 55 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 56 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 97 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 56 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 57 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 98 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 68 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 57 0.0000 0.0000 -1.0000 |
*MESH_VERTEXNORMAL 49 0.0000 0.0000 -1.0000 |
*MESH_FACENORMAL 99 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 58 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 59 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 100 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 59 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 60 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 101 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 60 -0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 61 -0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 102 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 61 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 62 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 103 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 62 0.0000 -0.0000 1.0000 |
*MESH_VERTEXNORMAL 63 0.0000 -0.0000 1.0000 |
*MESH_FACENORMAL 104 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 63 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 64 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 105 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 64 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 65 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 106 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 65 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 66 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 107 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 67 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 66 0.0000 0.0000 1.0000 |
*MESH_VERTEXNORMAL 58 0.0000 0.0000 1.0000 |
*MESH_FACENORMAL 108 -1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 8 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 83 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 75 -0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 109 -1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 75 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 0 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 8 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 110 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 0 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 75 -0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 76 -0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 111 -0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 76 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 1 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 0 -0.9397 0.3420 -0.0000 |
*MESH_FACENORMAL 112 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 1 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 76 -0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 77 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 113 -0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 77 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 2 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 1 -0.5000 0.8660 -0.0000 |
*MESH_FACENORMAL 114 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 2 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 77 0.1736 0.9848 -0.0000 |
*MESH_VERTEXNORMAL 78 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 115 0.5000 0.8660 -0.0000 |
*MESH_VERTEXNORMAL 78 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 3 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 2 0.1736 0.9848 -0.0000 |
*MESH_FACENORMAL 116 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 3 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 78 0.7660 0.6428 -0.0000 |
*MESH_VERTEXNORMAL 79 1.0000 0.0000 -0.0000 |
*MESH_FACENORMAL 117 0.9397 0.3420 -0.0000 |
*MESH_VERTEXNORMAL 79 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 4 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 3 0.7660 0.6428 -0.0000 |
*MESH_FACENORMAL 118 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 4 1.0000 0.0000 0.0000 |
*MESH_VERTEXNORMAL 79 1.0000 0.0000 -0.0000 |
*MESH_VERTEXNORMAL 80 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 119 0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 80 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 5 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 4 1.0000 0.0000 0.0000 |
*MESH_FACENORMAL 120 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 5 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 80 0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 81 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 121 0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 81 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 6 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 5 0.7660 -0.6428 0.0000 |
*MESH_FACENORMAL 122 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 6 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 81 0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 82 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 123 -0.1736 -0.9848 0.0000 |
*MESH_VERTEXNORMAL 82 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 7 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 6 0.1736 -0.9848 0.0000 |
*MESH_FACENORMAL 124 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 7 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 82 -0.5000 -0.8660 0.0000 |
*MESH_VERTEXNORMAL 83 -0.9397 -0.3420 0.0000 |
*MESH_FACENORMAL 125 -0.7660 -0.6428 0.0000 |
*MESH_VERTEXNORMAL 83 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 8 -0.9397 -0.3420 0.0000 |
*MESH_VERTEXNORMAL 7 -0.5000 -0.8660 0.0000 |
*MESH_FACENORMAL 126 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 84 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 88 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 89 0.0000 -1.0000 0.0000 |
*MESH_FACENORMAL 127 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 89 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 85 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 84 0.0000 -1.0000 0.0000 |
*MESH_FACENORMAL 128 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 87 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 91 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 90 -0.0000 1.0000 -0.0000 |
*MESH_FACENORMAL 129 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 90 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 86 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 87 -0.0000 1.0000 -0.0000 |
*MESH_FACENORMAL 130 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 88 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 92 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 94 0.0000 -1.0000 0.0000 |
*MESH_FACENORMAL 131 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 94 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 89 0.0000 -1.0000 0.0000 |
*MESH_VERTEXNORMAL 88 0.0000 -1.0000 0.0000 |
*MESH_FACENORMAL 132 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 91 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 93 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 95 -0.0000 1.0000 -0.0000 |
*MESH_FACENORMAL 133 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 95 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 90 -0.0000 1.0000 -0.0000 |
*MESH_VERTEXNORMAL 91 -0.0000 1.0000 -0.0000 |
} |
} |
*PROP_MOTIONBLUR 0 |
*PROP_CASTSHADOW 1 |
*PROP_RECVSHADOW 1 |
} |
/nw_hrp/extra/sources/3739-3741.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/crates.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/3714_merged.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/512px/frame2.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/512px/frame3.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/512px/frame1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/512px |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/extra/sources/mariojoke/800px/frame2.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/800px/frame3.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/800px/frame1.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/800px |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/extra/sources/mariojoke/3603roadway.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/3603sprite.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/road.blend |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/road.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/road.blend1 |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/8bit.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/frame1.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/frame2.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke/frame3.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/mariojoke |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/extra/sources/3591_fixed.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/3671_KayWhy_Sample.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/3785_fixed.xcf |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/3293_NW_Duke_Pose.psd |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources/_downloads_snimki_wall_Winter-Wonderland,-British-Columbia,-Canada.jpg |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/sources |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/extra/nwhrp.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/3293_wip.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/present.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/3827_ice.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/extra/2492_wide_alt.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/sprites.def |
---|
0,0 → 1,14 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
include nw_hrp/sprites/characters.def |
include nw_hrp/sprites/decals.def |
include nw_hrp/sprites/gibs.def |
include nw_hrp/sprites/monsters.def |
include nw_hrp/sprites/props.def |
include nw_hrp/sprites/signs.def |
include nw_hrp/sprites/ice.def |
/nw_hrp/skyboxes/3714_cloudy_hills |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/skyboxes |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/screen.def |
---|
0,0 → 1,9 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
include nw_hrp/screen/fonts.def |
include nw_hrp/screen/menu.def |
/nw_hrp/copies.def |
---|
0,0 → 1,252 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
/* |
List of tiles in NWINTER.GRP/TILES014.ART/TILES015.ART also found in DUKE3D.GRP, but with different tile numbers. |
NWinter Duke3D Name Done? |
¯¯¯¯¯¯¯ ¯¯¯¯¯¯ ¯¯¯¯ ¯¯¯¯¯ |
1470-1473 1289-1292 FEMPIC2 Yes |
3627-3631 1312-1316 FEM1\HALFBITCH (Stripper) Yes |
3680 719 N/A (Swinging Door) Yes |
3684 4231 N/A (Fountain Drink Dispenser) Yes |
3753 908 TREE1 Yes |
3632-3636 1255-1259 CEILINGSTEAM Yes |
3704-3708 79 CLOUDYSKIES Yes |
3727 757 N/A (Rusty Concrete) Yes |
3764-3768 904-907 WOODENHORSE Yes |
3799 4338 N/A (Down Arrow & Text) Yes |
3984-3991 1528-1535 DUKEGUN Yes |
raw dupes between Atomic and NW: |
79 3704 3705 3706 3707 3708 |
719 3680 |
904 3768 |
905 3765 |
1255 3632 |
1256 3633 |
1257 3634 |
1258 3635 |
1259 3636 |
1528 3984 |
1529 3985 |
1530 3986 |
1531 3987 |
1532 3988 |
1533 3989 |
1534 3990 |
1535 3991 |
3584 3840 |
4231 3684 |
raw dupes within NW: |
3400 3822 |
3599 3784 |
3646 3669 |
3662 3757 |
3697 3698 |
3709 3710 |
3787 3789 |
3910 3920 3930 |
3921 3931 |
3922 3932 |
3923 3933 |
3924 3934 |
3925 3935 |
3926 3936 |
3927 3937 |
3928 3938 |
3929 3939 |
3945 3955 |
3946 3956 3965 |
3947 3957 3966 |
3948 3958 3967 3968 |
3949 3959 3969 |
custom: |
2504 2500 3292 |
2456 2505 2506 3270 3271 3272 3273 3280 |
3281 3290 |
3245 3291 |
*/ |
// Rear-View Stripper Screen (1470-1473) |
texture 1470 { pal 0 { file "highres/textures/1289.jpg" } } |
texture 1471 { pal 0 { file "highres/textures/1290.jpg" } } |
texture 1472 { pal 0 { file "highres/textures/1291.jpg" } } |
texture 1473 { pal 0 { file "highres/textures/1292.jpg" } } |
// screen elimination |
texture 2505 { pal 0 { file "highres/screen/menu/2456.jpg" } } |
texture 2506 { pal 0 { file "highres/screen/menu/2456.jpg" } } |
texture 3270 { pal 0 { file "highres/screen/menu/2456.jpg" } } |
texture 3271 { pal 0 { file "highres/screen/menu/2456.jpg" } } |
texture 3272 { pal 0 { file "highres/screen/menu/2456.jpg" } } |
texture 3273 { pal 0 { file "highres/screen/menu/2456.jpg" } } |
texture 3280 { pal 0 { file "highres/screen/menu/2456.jpg" } } |
texture 3290 { pal 0 { file "highres/screen/menu/3281.png" } } |
// Top Half of Stripper (3627-3631) |
model "highres/sprites/characters/1312_stripper.md3" { |
scale 1.9 shade 0 zadd -46.5 // needs angoff -384 |
skin { pal 0 file "highres/sprites/characters/1312_stripper.png" } |
skin { pal 10 file "highres/sprites/characters/1312_stripper_10.png" } |
skin { pal 11 file "highres/sprites/characters/1312_stripper_11.png" } |
skin { pal 12 file "highres/sprites/characters/1312_stripper_12.png" } |
skin { pal 13 file "highres/sprites/characters/1312_stripper_13.png" } |
skin { pal 14 file "highres/sprites/characters/1312_stripper_14.png" } |
skin { pal 15 file "highres/sprites/characters/1312_stripper_15.png" } |
skin { pal 16 file "highres/sprites/characters/1312_stripper_16.png" } |
skin { pal 21 file "highres/sprites/characters/1312_stripper_21.png" } |
skin { pal 23 file "highres/sprites/characters/1312_stripper_23.png" } |
anim { frame0 "dance_b" frame1 "dance_e" fps 40 flags 0 } |
frame { name "dance_b" tile0 3627 tile1 3631 smoothduration 0.5 } |
anim { frame0 "shake_b" frame1 "shake_e" fps 31 flags 0 } |
frame { name "shake_b" tile0 3832 tile1 3834 smoothduration 0.5 } |
} |
// Top Half of Frozen Stripper (1313) |
model "highres/sprites/ice/1313_stripper_ice.md3" { |
scale 1.9 flags 1 zadd -46.5 |
skin { surface 0 file "highres/sprites/ice/1313_stripper_ice.png" } |
skin { surface 1 file "highres/sprites/ice/ice.png" } |
frame { pal 1 name "ice" tile 3628 } |
} |
// Ceiling Steam (3632-3636) |
setuptilerange 3632 3636 22 86 0 212 |
texture 3632 { pal 0 { file "highres/sprites/effects/1255.png" } } |
texture 3633 { pal 0 { file "highres/sprites/effects/1256.png" } } |
texture 3634 { pal 0 { file "highres/sprites/effects/1257.png" } } |
texture 3635 { pal 0 { file "highres/sprites/effects/1258.png" } } |
texture 3636 { pal 0 { file "highres/sprites/effects/1259.png" } } |
// Swinging Door (3680) |
/* |
texture 3680 { |
pal 0 { file "highres/textures/0719.png" } |
detail { file "highres/detail/paint.png" xscale 0.3 yscale 0.15 } |
} |
*/ |
texture 3680 { |
pal 0 { file "highres/textures/0719_d.png" specpower 9 specfactor 1.75 } |
normal { file "highres/textures/0719_n.png" parallaxbias 0.04 parallaxscale 0.1 } |
specular { file "highres/textures/0719_s.png" } |
detail { file "highres/detail/paint.png" xscale 0.3 yscale 0.15 } |
} |
// Fountain Drink Dispenser (3684) |
texture 3684 { |
pal 0 { file "highres/textures/4231.png" } |
detail { file "highres/detail/paint.png" xscale 0.3 yscale 0.3 } |
} |
// Rusty Concrete (3727) |
/* |
texture 3727 { |
pal 0 { file "highres/textures/0757.png" } |
pal 24 { file "highres/textures/0757_24.png" } |
detail { file "highres/detail/concrete.png" xscale 0.15 yscale 0.15 } |
} |
*/ |
texture 3727 { |
pal 0 { file "highres/textures/0757_d.png" } |
normal { file "highres/textures/0757_n.png" parallaxbias 0.0 parallaxscale 0.03 } |
specular { file "highres/textures/0757_s.png" } |
detail { file "highres/detail/concrete.png" xscale 0.15 yscale 0.15 } |
} |
// Down Arrow & Text (3799) |
texture 3799 { pal 0 { file "highres/sprites/signs/4338.png" } } |
// Wooden Horse (3764) |
model "highres/sprites/props/0904_woodenhorse.md3" { |
scale 4 shade 16 |
detail { file "highres/detail/wood_v3.png" detailscale 0.3 } |
skin { pal 0 file "highres/sprites/props/0904_woodenhorse.png" } |
frame { name "frame00" tile0 3764 tile1 3768 } |
} |
// Tree (3753) |
model "highres/sprites/props/0908_tree.md3" { |
scale 1 |
skin { pal 0 surface 0 file "highres/sprites/props/0909_treetrunk.jpg" } |
skin { pal 0 surface 1 file "highres/sprites/props/0908_tree.png" } |
skin { pal 0 surface 2 file "highres/sprites/props/0908_tree.png" } |
anim { frame0 "Frame0" frame1 "Frame6" fps 5 flags 0 } |
frame { name "Frame0" tile 3753 } |
} |
texture 3753 { pal 0 { file "highres/sprites/props/0908.png" } } |
// Cloudy Skies (3704-3708) |
skybox { |
tile 3704 pal 0 |
front "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_front.png" nocompress nodownsize |
right "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_right.png" nocompress nodownsize |
back "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_back.png" nocompress nodownsize |
left "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_left.png" nocompress nodownsize |
top "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_top.png" nocompress nodownsize |
down "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_down.png" nocompress nodownsize |
} |
skybox { |
tile 3705 pal 0 |
front "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_front.png" nocompress nodownsize |
right "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_right.png" nocompress nodownsize |
back "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_back.png" nocompress nodownsize |
left "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_left.png" nocompress nodownsize |
top "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_top.png" nocompress nodownsize |
down "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_down.png" nocompress nodownsize |
} |
skybox { |
tile 3706 pal 0 |
front "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_front.png" nocompress nodownsize |
right "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_right.png" nocompress nodownsize |
back "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_back.png" nocompress nodownsize |
left "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_left.png" nocompress nodownsize |
top "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_top.png" nocompress nodownsize |
down "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_down.png" nocompress nodownsize |
} |
skybox { |
tile 3707 pal 0 |
front "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_front.png" nocompress nodownsize |
right "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_right.png" nocompress nodownsize |
back "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_back.png" nocompress nodownsize |
left "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_left.png" nocompress nodownsize |
top "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_top.png" nocompress nodownsize |
down "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_down.png" nocompress nodownsize |
} |
skybox { |
tile 3708 pal 0 |
front "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_front.png" nocompress nodownsize |
right "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_right.png" nocompress nodownsize |
back "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_back.png" nocompress nodownsize |
left "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_left.png" nocompress nodownsize |
top "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_top.png" nocompress nodownsize |
down "highres/skyboxes/0079_cloudyskies/0079_cloudyskies_down.png" nocompress nodownsize |
} |
// Santa Gibs - Arm (3984-3991) |
model "highres/sprites/jibs/1528_dukearm.md3" { |
scale 1.3 shade 3 |
skin { pal 0 file "highres/sprites/jibs/1528_dukearm.png" } |
// skin { pal 30 file "nw_hrp/sprites/gibs/1536_santaarm.png" } |
anim { frame0 "FRAME4" frame1 "FRAME11" fps 15 flags 0 } |
frame { name "FRAME4" tile0 3984 tile1 3991 } |
} |
// Leg (1536) |
model "highres/sprites/jibs/1536_dukeleg.md3" { |
scale 15 shade 3 |
skin { pal 0 file "highres/sprites/jibs/1536_dukeleg.png" } |
skin { pal 30 file "nw_hrp/sprites/gibs/1536_santaleg.png" } |
anim { frame0 "FRAME3" frame1 "FRAME10" fps 15 flags 0 } |
frame { name "FRAME3" tile0 1536 tile1 1543 } |
} |
/nw_hrp/screen/menu.def |
---|
0,0 → 1,58 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
// 3D Realms Screen - NWHRP Screen |
texture 2492 { pal 0 { file "nw_hrp/screen/menu/2492.png" nocompress nodownsize } } |
// TEN Screen - Credits |
// texture 2500 { pal 0 { file "nw_hrp/screen/menu/2504.png" nocompress nodownsize } } |
// Nuclear Winter Insignia |
texture 2502 { pal 0 { file "nw_hrp/screen/menu/2502.png" nocompress nodownsize } } |
texture 2503 { pal 0 { file "nw_hrp/screen/menu/2503.png" nocompress nodownsize } } |
// Credits |
// texture 2504 { pal 0 { file "nw_hrp/screen/menu/2504.png" nocompress nodownsize } } |
// Episode 1, 3-7 End of Level Screen |
texture 3240 { pal 0 { file "nw_hrp/screen/menu/3240_3245.png" nocompress nodownsize } } |
texture 3241 { pal 0 { file "highres/screen/menu/3241.jpg" nocompress nodownsize } } |
texture 3242 { pal 0 { file "highres/screen/menu/3242.jpg" nocompress nodownsize } } |
texture 3243 { pal 0 { file "highres/screen/menu/3243.jpg" nocompress nodownsize } } |
texture 3244 { pal 0 { file "highres/screen/menu/3244.jpg" nocompress nodownsize } } |
// Episode 2 End of Level Screen |
texture 3245 { pal 0 { file "nw_hrp/screen/menu/3240_3245.png" nocompress nodownsize } } |
texture 3246 { pal 0 { file "highres/screen/menu/3241.jpg" nocompress nodownsize } } |
texture 3247 { pal 0 { file "highres/screen/menu/3242.jpg" nocompress nodownsize } } |
texture 3248 { pal 0 { file "highres/screen/menu/3243.jpg" nocompress nodownsize } } |
texture 3249 { pal 0 { file "highres/screen/menu/3244.jpg" nocompress nodownsize } } |
/* |
texture 3241 { pal 0 { file "nw_hrp/screen/menu/3241_3246.jpg" nocompress nodownsize } } |
texture 3242 { pal 0 { file "nw_hrp/screen/menu/3242_3247.jpg" nocompress nodownsize } } |
texture 3243 { pal 0 { file "nw_hrp/screen/menu/3243_3248.jpg" nocompress nodownsize } } |
texture 3244 { pal 0 { file "nw_hrp/screen/menu/3244_3249.jpg" nocompress nodownsize } } |
texture 3246 { pal 0 { file "nw_hrp/screen/menu/3241_3246.jpg" nocompress nodownsize } } |
texture 3247 { pal 0 { file "nw_hrp/screen/menu/3242_3247.jpg" nocompress nodownsize } } |
texture 3248 { pal 0 { file "nw_hrp/screen/menu/3243_3248.jpg" nocompress nodownsize } } |
texture 3249 { pal 0 { file "nw_hrp/screen/menu/3244_3249.jpg" nocompress nodownsize } } |
*/ |
// screen elimination |
texture 3291 { pal 0 { file "nw_hrp/screen/menu/3240_3245.png" nocompress nodownsize } } |
// End of Episode 1 Screen Elimination |
// texture 3292 { pal 0 { file "nw_hrp/screen/menu/2504.png" nocompress nodownsize } } |
// End of Episode 2 Screen |
// texture 3293 { pal 0 { file "nw_hrp/screen/menu/3293.png" nocompress nodownsize } } |
// Title Screen Identification |
texture 3838 { pal 0 { file "nw_hrp/screen/menu/3838.png" nocompress nodownsize } } |
texture 3839 { pal 0 { file "nw_hrp/screen/menu/3839.png" nocompress nodownsize } } |
/nw_hrp/screen/fonts.def |
---|
0,0 → 1,392 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
/* |
// Snowy Digital Font |
texture 2472 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2472.png" } |
pal 2 { file "highres/screen/fonts/digital/2472.png" } |
pal 24 { file "highres/screen/fonts/digital/2472.png" } |
} |
texture 2473 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2473.png" } |
pal 2 { file "highres/screen/fonts/digital/2473.png" } |
pal 24 { file "highres/screen/fonts/digital/2473.png" } |
} |
texture 2474 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2474.png" } |
pal 2 { file "highres/screen/fonts/digital/2474.png" } |
pal 24 { file "highres/screen/fonts/digital/2474.png" } |
} |
texture 2475 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2475.png" } |
pal 2 { file "highres/screen/fonts/digital/2475.png" } |
pal 24 { file "highres/screen/fonts/digital/2475.png" } |
} |
texture 2476 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2476.png" } |
pal 2 { file "highres/screen/fonts/digital/2476.png" } |
pal 24 { file "highres/screen/fonts/digital/2476.png" } |
} |
texture 2477 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2477.png" } |
pal 2 { file "highres/screen/fonts/digital/2477.png" } |
pal 24 { file "highres/screen/fonts/digital/2477.png" } |
} |
texture 2478 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2478.png" } |
pal 2 { file "highres/screen/fonts/digital/2478.png" } |
pal 24 { file "highres/screen/fonts/digital/2478.png" } |
} |
texture 2479 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2479.png" } |
pal 2 { file "highres/screen/fonts/digital/2479.png" } |
pal 24 { file "highres/screen/fonts/digital/2479.png" } |
} |
texture 2480 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2480.png" } |
pal 2 { file "highres/screen/fonts/digital/2480.png" } |
pal 24 { file "highres/screen/fonts/digital/2480.png" } |
} |
texture 2481 { |
pal 0 { file "nw_hrp/screen/fonts/digital/2481.png" } |
pal 2 { file "highres/screen/fonts/digital/2481.png" } |
pal 24 { file "highres/screen/fonts/digital/2481.png" } |
} |
*/ |
/* |
// Snowy Red Font |
// Red Font (2929-2965) |
texture 2929 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2929.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2929_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2929.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2929_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2929.png" } |
} |
texture 2930 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2930.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2930_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2930.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2930_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2930.png" } |
} |
texture 2931 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2931.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2931_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2931.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2931_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2931.png" } |
} |
texture 2932 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2932.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2932_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2932.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2932_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2932.png" } |
} |
texture 2933 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2933.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2933_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2933.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2933_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2933.png" } |
} |
texture 2934 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2934.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2934_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2934.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2934_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2934.png" } |
} |
texture 2935 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2935.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2935_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2935.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2935_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2935.png" } |
} |
texture 2936 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2936.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2936_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2936.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2936_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2936.png" } |
} |
texture 2937 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2937.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2937_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2937.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2937_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2937.png" } |
} |
texture 2938 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2938.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2938_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2938.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2938_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2938.png" } |
} |
texture 2939 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2939.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2939_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2939.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2939_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2939.png" } |
} |
texture 2940 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2940.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2940_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2940.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2940_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2940.png" } |
} |
texture 2941 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2941.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2941_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2941.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2941_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2941.png" } |
} |
texture 2942 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2942.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2942_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2942.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2942_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2942.png" } |
} |
texture 2943 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2943.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2943_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2943.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2943_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2943.png" } |
} |
texture 2944 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2944.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2944_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2944.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2944_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2944.png" } |
} |
texture 2945 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2945.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2945_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2945.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2945_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2945.png" } |
} |
texture 2946 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2946.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2946_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2946.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2946_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2946.png" } |
} |
texture 2947 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2947.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2947_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2947.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2947_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2947.png" } |
} |
texture 2948 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2948.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2948_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2948.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2948_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2948.png" } |
} |
texture 2949 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2949.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2949_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2949.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2949_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2949.png" } |
} |
texture 2950 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2950.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2950_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2950.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2950_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2950.png" } |
} |
texture 2951 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2951.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2951_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2951.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2951_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2951.png" } |
} |
texture 2952 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2952.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2952_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2952.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2952_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2952.png" } |
} |
texture 2953 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2953.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2953_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2953.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2953_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2953.png" } |
} |
texture 2954 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2954.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2954_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2954.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2954_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2954.png" } |
} |
texture 2955 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2955.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2955_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2955.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2955_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2955.png" } |
} |
texture 2956 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2956.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2956_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2956.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2956_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2956.png" } |
} |
texture 2957 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2957.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2957_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2957.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2957_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2957.png" } |
} |
texture 2958 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2958.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2958_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2958.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2958_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2958.png" } |
} |
texture 2959 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2959.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2959_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2959.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2959_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2959.png" } |
} |
texture 2960 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2960.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2960_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2960.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2960_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2960.png" } |
} |
texture 2961 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2961.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2961_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2961.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2961_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2961.png" } |
} |
texture 2962 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2962.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2962_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2962.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2962_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2962.png" } |
} |
texture 2963 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2963.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2963_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2963.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2963_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2963.png" } |
} |
texture 2964 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2964.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2964_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2964.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2964_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2964.png" } |
} |
texture 2965 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/2965.png" } |
// pal 1 { file "highres/screen/fonts/redfont/2965_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/2965.png" } |
// pal 8 { file "highres/screen/fonts/redfont/2965_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/2965.png" } |
} |
// Red Font continued (3002-3009) |
texture 3002 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3002.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3002_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3002.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3002_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3002.png" } |
} |
texture 3003 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3003.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3003_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3003.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3003_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3003.png" } |
} |
texture 3004 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3004.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3004_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3004.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3004_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3004.png" } |
} |
texture 3005 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3005.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3005_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3005.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3005_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3005.png" } |
} |
texture 3006 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3006.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3006_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3006.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3006_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3006.png" } |
} |
texture 3007 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3007.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3007_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3007.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3007_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3007.png" } |
} |
texture 3008 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3008.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3008_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3008.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3008_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3008.png" } |
} |
texture 3009 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3009.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3009_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3009.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3009_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3009.png" } |
} |
// Red Font continued (3022) |
texture 3022 { |
pal 0 { file "nw_hrp/screen/fonts/redfont/3022.png" } |
// pal 1 { file "highres/screen/fonts/redfont/3022_1.png" } |
// pal 2 { file "highres/screen/fonts/redfont/3022.png" } |
// pal 8 { file "highres/screen/fonts/redfont/3022_8.png" } |
// pal 24 { file "highres/screen/fonts/redfont/3022.png" } |
} |
*/ |
/nw_hrp/screen/menu/3240_3245_wide.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu/2492_wide.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu/2492.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu/3838.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu/3240_3245.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu/3839.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu/2502.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu/2503.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/menu |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/screen/fonts/redfont/2940.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2941.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2942.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2960.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2961.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2943.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2944.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2962.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2963.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2945.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2946.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2964.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2965.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2947.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2929.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2948.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2949.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3002.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3003.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3004.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3022.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3005.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3006.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3007.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3008.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/3009.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2930.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2931.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2950.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2932.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2951.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2933.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2952.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2934.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2935.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2953.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2936.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2954.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2937.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2955.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2956.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2938.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2939.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2957.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2958.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont/2959.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/screen/fonts/redfont |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/screen/fonts/digital |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/screen/fonts |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/screen |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/textures.def |
---|
0,0 → 1,206 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
// texture <tilenum> { pal <pal> { file "<file>" } } |
/* |
texture 3594 { |
pal 0 { file "nw_hrp/textures/3594.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
*/ |
texture 3594 { |
pal 0 { file "nw_hrp/textures/3594_d.png" } |
normal { file "highres/textures/0884_n.png" parallaxbias 0.02 parallaxscale 0.025 } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3606 { |
pal 0 { file "nw_hrp/textures/3606.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3607 { |
pal 0 { file "nw_hrp/textures/3607.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3608 { |
pal 0 { file "nw_hrp/textures/3608.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3609 { |
pal 0 { file "nw_hrp/textures/3609.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3610 { |
pal 0 { file "nw_hrp/textures/3610.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3611 { |
pal 0 { file "nw_hrp/textures/3611.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3612 { |
pal 0 { file "nw_hrp/textures/3612.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3613 { pal 0 { file "nw_hrp/textures/3613.png" } } |
texture 3646 { |
pal 0 { file "nw_hrp/textures/3646_3669.png" } |
normal { file "nw_hrp/textures/3646_3669_n.png" parallaxbias 0 parallaxscale 0.05 } |
specular { file "nw_hrp/textures/3646_3669_s.png" } |
} |
/* |
texture 3661 { |
pal 0 { file "nw_hrp/textures/3661.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
*/ |
texture 3661 { |
pal 0 { file "nw_hrp/textures/3661_d.png" } |
normal { file "highres/textures/0884_n.png" parallaxbias 0.02 parallaxscale 0.025 } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
/* |
texture 3666 { |
pal 0 { file "nw_hrp/textures/3666.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
*/ |
texture 3666 { |
pal 0 { file "nw_hrp/textures/3666_d.png" } |
normal { file "highres/textures/0884_n.png" parallaxbias 0.02 parallaxscale 0.025 } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3669 { |
pal 0 { file "nw_hrp/textures/3646_3669.png" } |
normal { file "nw_hrp/textures/3646_3669_n.png" parallaxbias 0 parallaxscale 0.05 } |
specular { file "nw_hrp/textures/3646_3669_s.png" } |
} |
texture 3670 { |
pal 0 { file "nw_hrp/textures/3670.png" } |
detail { file "highres/detail/metal_fine.png" xscale 0.3 yscale 0.3 } |
} |
texture 3695 { |
pal 0 { file "nw_hrp/textures/3695.png" } |
detail { file "highres/detail/concrete.png" xscale 0.15 yscale 0.15 } |
} |
texture 3720 { |
pal 0 { file "nw_hrp/textures/3720.png" } |
detail { file "highres/detail/concrete.png" xscale 0.3 yscale 0.3 } |
} |
texture 3721 { |
pal 0 { file "nw_hrp/textures/3721.png" } |
detail { file "highres/detail/concrete.png" xscale 0.3 yscale 0.3 } |
} |
texture 3722 { |
pal 0 { file "nw_hrp/textures/3722.png" } |
detail { file "highres/detail/concrete.png" xscale 0.3 yscale 0.3 } |
} |
texture 3726 { |
// pal 0 { file "nw_hrp/textures/3726.png" } |
pal 0 { file "highres/textures/0742.png" } |
normal { file "highres/textures/0742_n.png" parallaxbias 0.04 parallaxscale 0.05 } |
specular { file "highres/textures/0742_s.png" } |
detail { file "highres/detail/concrete.png" xscale 0.3 yscale 0.15 } |
} |
texture 3729 { |
pal 0 { file "nw_hrp/textures/3729.png" } |
} |
/* |
texture 3739 { |
pal 0 { file "nw_hrp/textures/3739.png" } |
// glow { file "highres/textures/0448_g.png" } |
detail { file "highres/detail/metal.png" xscale 0.15 yscale 0.15 } |
} |
texture 3740 { |
pal 0 { file "nw_hrp/textures/3740.png" } |
// glow { file "highres/textures/0448_g.png" } |
detail { file "highres/detail/metal.png" xscale 0.15 yscale 0.15 } |
} |
texture 3741 { |
pal 0 { file "nw_hrp/textures/3741.png" } |
// glow { file "highres/textures/0448_g.png" } |
detail { file "highres/detail/metal.png" xscale 0.15 yscale 0.15 } |
} |
*/ |
texture 3739 { |
pal 0 { file "nw_hrp/textures/3739_d.png" } |
normal { file "highres/textures/0448_n.png" parallaxbias 0.0 parallaxscale 0.025 } |
specular { file "highres/textures/0448_s.png" } |
// glow { file "highres/textures/0448_g.png" } |
detail { file "highres/detail/metal.png" xscale 0.15 yscale 0.15 } |
} |
texture 3740 { |
pal 0 { file "nw_hrp/textures/3740_d.png" } |
normal { file "highres/textures/0448_n.png" parallaxbias 0.0 parallaxscale 0.025 } |
specular { file "highres/textures/0448_s.png" } |
// glow { file "highres/textures/0448_g.png" } |
detail { file "highres/detail/metal.png" xscale 0.15 yscale 0.15 } |
} |
texture 3741 { |
pal 0 { file "nw_hrp/textures/3741_d.png" } |
normal { file "highres/textures/0448_n.png" parallaxbias 0.0 parallaxscale 0.025 } |
specular { file "highres/textures/0448_s.png" } |
// glow { file "highres/textures/0448_g.png" } |
detail { file "highres/detail/metal.png" xscale 0.15 yscale 0.15 } |
} |
texture 3758 { |
pal 0 { file "nw_hrp/textures/3758.png" } |
// pal 0 { diffuse "highres/textures/0340.png" xscale 0.25 yscale 0.25 } |
detail { file "highres/detail/metal.png" xscale 0.3 yscale 0.3 } |
} |
texture 3769 { |
pal 0 { file "nw_hrp/textures/3769.png" } |
detail { file "highres/detail/metal_fine.png" xscale 0.3 yscale 0.3 } |
} |
texture 3770 { |
pal 0 { file "nw_hrp/textures/3770.png" } |
detail { file "highres/detail/rock.png" xscale 0.3 yscale 0.15 } |
} |
/* |
texture 3790 { |
pal 0 { file "nw_hrp/textures/3790.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3791 { |
pal 0 { file "nw_hrp/textures/3791.png" } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
*/ |
texture 3790 { |
pal 0 { file "nw_hrp/textures/3790_d.png" } |
normal { file "highres/textures/0884_n.png" parallaxbias 0.02 parallaxscale 0.025 } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
texture 3791 { |
pal 0 { file "nw_hrp/textures/3791_d.png" } |
normal { file "highres/textures/0884_n.png" parallaxbias 0.02 parallaxscale 0.025 } |
detail { file "highres/detail/wood_v3.png" xscale 0.3 yscale 0.3 } |
} |
/nw_hrp/dp.def |
---|
0,0 → 1,6 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
/nw_hrp/textures/3740_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3741_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3739.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3740.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3741.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3739_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3661_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3790_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3791_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3594_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3613.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3721.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3722.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3606.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3607.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3661.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3670.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3608.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3770.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3726.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3609.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3790.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3791.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3594.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3666.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3729.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3646_3669_n.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3695.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3758.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3666_d.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3769.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3646_3669_s.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3646_3669.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3610.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3611.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3612.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures/3720.png |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/nw_hrp/textures |
---|
Property changes: |
Added: svn:ignore |
+Thumbs.db |
/nw_hrp/skyboxes.def |
---|
0,0 → 1,8 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |
// There is only one completely new skybox. It has not been done yet. |
/nw_hrp/xxx.def |
---|
0,0 → 1,6 |
/* |
-------------------------------------------------------------------------------- |
Duke: Nuclear Winter Plus |
By Hendricks266 |
-------------------------------------------------------------------------------- |
*/ |