Source release of Wolfenstein 3D Classic Platinum for iOS, 1.1
authorTravis Bradshaw <travis.bradshaw@idsoftware.com>
Tue, 31 Jan 2012 22:55:36 +0000 (16:55 -0600)
committerTravis Bradshaw <travis.bradshaw@idsoftware.com>
Tue, 31 Jan 2012 22:55:36 +0000 (16:55 -0600)
421 files changed:
wolf3d/base/iphone/0.5551 [new file with mode: 0644]
wolf3d/base/iphone/1.5551 [new file with mode: 0644]
wolf3d/base/iphone/2.5551 [new file with mode: 0644]
wolf3d/base/iphone/3.5551 [new file with mode: 0644]
wolf3d/base/iphone/4.5551 [new file with mode: 0644]
wolf3d/base/iphone/5.5551 [new file with mode: 0644]
wolf3d/base/iphone/6.5551 [new file with mode: 0644]
wolf3d/base/iphone/7.5551 [new file with mode: 0644]
wolf3d/base/iphone/8.5551 [new file with mode: 0644]
wolf3d/base/iphone/9.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE1APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE1BPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE1CPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE2APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE2BPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE2CPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE3APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE3BPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE3CPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE4APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE4BPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE4CPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE5APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE5BPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE5CPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE6APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE6BPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE6CPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE7APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE7BPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE7CPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/FACE8APIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/GOTGATLINGPIC.5551 [new file with mode: 0644]
wolf3d/base/iphone/L_damage.5551 [new file with mode: 0644]
wolf3d/base/iphone/R_damage.5551 [new file with mode: 0644]
wolf3d/base/iphone/advanced_button.5551 [new file with mode: 0644]
wolf3d/base/iphone/background_1.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_back.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_control.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_ep1.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_ep2.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_ep3.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_ep4.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_ep5.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_ep6.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_levels.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_new.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_resume.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_skill1.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_skill2.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_skill3.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_skill4.5551 [new file with mode: 0644]
wolf3d/base/iphone/button_web.5551 [new file with mode: 0644]
wolf3d/base/iphone/diractional_01.5551 [new file with mode: 0644]
wolf3d/base/iphone/diractional_02.5551 [new file with mode: 0644]
wolf3d/base/iphone/diractional_03.5551 [new file with mode: 0644]
wolf3d/base/iphone/ep_1.5551 [new file with mode: 0644]
wolf3d/base/iphone/ep_1_6.5551 [new file with mode: 0644]
wolf3d/base/iphone/font1.5551 [new file with mode: 0644]
wolf3d/base/iphone/gold_key.5551 [new file with mode: 0644]
wolf3d/base/iphone/intermission_256.5551 [new file with mode: 0644]
wolf3d/base/iphone/kills.5551 [new file with mode: 0644]
wolf3d/base/iphone/layout_1.5551 [new file with mode: 0644]
wolf3d/base/iphone/layout_2.5551 [new file with mode: 0644]
wolf3d/base/iphone/layout_3.5551 [new file with mode: 0644]
wolf3d/base/iphone/layout_4.5551 [new file with mode: 0644]
wolf3d/base/iphone/map.5551 [new file with mode: 0644]
wolf3d/base/iphone/menu.5551 [new file with mode: 0644]
wolf3d/base/iphone/music_off.5551 [new file with mode: 0644]
wolf3d/base/iphone/music_on.5551 [new file with mode: 0644]
wolf3d/base/iphone/partime.5551 [new file with mode: 0644]
wolf3d/base/iphone/secrets.5551 [new file with mode: 0644]
wolf3d/base/iphone/shoot.5551 [new file with mode: 0644]
wolf3d/base/iphone/side_2_side.5551 [new file with mode: 0644]
wolf3d/base/iphone/silver_key.5551 [new file with mode: 0644]
wolf3d/base/iphone/stat_bar_1.5551 [new file with mode: 0644]
wolf3d/base/iphone/stat_bar_2.5551 [new file with mode: 0644]
wolf3d/base/iphone/stats.5551 [new file with mode: 0644]
wolf3d/base/iphone/status_hud.5551 [new file with mode: 0644]
wolf3d/base/iphone/treasure.5551 [new file with mode: 0644]
wolf3d/base/iphone/up_down.5551 [new file with mode: 0644]
wolf3d/base/iphone/victory_256.5551 [new file with mode: 0644]
wolf3d/base/iphone/wolf_logo.5551 [new file with mode: 0644]
wolf3d/base/sprites/002.5551
wolf3d/base/sprites/003.5551
wolf3d/base/sprites/005.5551
wolf3d/base/sprites/006.5551
wolf3d/base/sprites/008.5551
wolf3d/base/sprites/009.5551
wolf3d/base/sprites/010.5551
wolf3d/base/sprites/013.5551
wolf3d/base/sprites/014.5551
wolf3d/base/sprites/015.5551
wolf3d/base/sprites/016.5551
wolf3d/base/sprites/018.5551
wolf3d/base/sprites/019.5551
wolf3d/base/sprites/021.5551
wolf3d/base/sprites/022.5551
wolf3d/base/sprites/023.5551
wolf3d/base/sprites/025.5551
wolf3d/base/sprites/026.5551
wolf3d/base/sprites/028.5551
wolf3d/base/sprites/029.5551
wolf3d/base/sprites/030.5551
wolf3d/base/sprites/031.5551
wolf3d/base/sprites/032.5551
wolf3d/base/sprites/033.5551
wolf3d/base/sprites/034.5551
wolf3d/base/sprites/035.5551
wolf3d/base/sprites/037.5551
wolf3d/base/sprites/038.5551
wolf3d/base/sprites/041.5551
wolf3d/base/sprites/514.5551
wolf3d/base/sprites/515.5551
wolf3d/base/sprites/516.5551
wolf3d/base/sprites/517.5551
wolf3d/base/sprites/518.5551
wolf3d/base/sprites/519.5551
wolf3d/base/sprites/520.5551
wolf3d/base/sprites/521.5551
wolf3d/base/sprites/522.5551
wolf3d/base/sprites/523.5551
wolf3d/base/sprites/524.5551
wolf3d/base/sprites/525.5551
wolf3d/base/sprites/526.5551
wolf3d/base/sprites/527.5551
wolf3d/base/sprites/528.5551
wolf3d/base/sprites/529.5551
wolf3d/base/walls/000.5551
wolf3d/base/walls/002.5551
wolf3d/base/walls/004.5551
wolf3d/base/walls/006.5551
wolf3d/base/walls/008.5551
wolf3d/base/walls/010.5551
wolf3d/base/walls/012.5551
wolf3d/base/walls/014.5551
wolf3d/base/walls/016.5551
wolf3d/base/walls/018.5551
wolf3d/base/walls/020.5551
wolf3d/base/walls/022.5551
wolf3d/base/walls/024.5551
wolf3d/base/walls/026.5551
wolf3d/base/walls/028.5551
wolf3d/base/walls/030.5551
wolf3d/base/walls/031.5551
wolf3d/base/walls/032.5551
wolf3d/base/walls/034.5551
wolf3d/base/walls/036.5551
wolf3d/base/walls/038.5551
wolf3d/base/walls/040.5551
wolf3d/base/walls/041.5551
wolf3d/base/walls/042.5551
wolf3d/base/walls/043.5551
wolf3d/base/walls/044.5551
wolf3d/base/walls/046.5551
wolf3d/base/walls/048.5551
wolf3d/base/walls/050.5551
wolf3d/base/walls/052.5551
wolf3d/base/walls/054.5551
wolf3d/base/walls/056.5551
wolf3d/base/walls/058.5551
wolf3d/base/walls/060.5551
wolf3d/base/walls/062.5551
wolf3d/base/walls/064.5551
wolf3d/base/walls/066.5551
wolf3d/base/walls/068.5551
wolf3d/base/walls/070.5551
wolf3d/base/walls/072.5551
wolf3d/base/walls/074.5551
wolf3d/base/walls/076.5551
wolf3d/base/walls/078.5551
wolf3d/base/walls/080.5551
wolf3d/base/walls/082.5551
wolf3d/base/walls/084.5551
wolf3d/base/walls/086.5551
wolf3d/base/walls/088.5551
wolf3d/base/walls/090.5551
wolf3d/base/walls/092.5551
wolf3d/base/walls/094.5551
wolf3d/base/walls/096.5551
wolf3d/base/walls/126.5551
wolf3d/base/walls/128.5551
wolf3d/base/walls/130.5551
wolf3d/base/walls/132.5551
wolf3d/base/walls/133.5551
wolf3d/code/.DS_Store [new file with mode: 0644]
wolf3d/code/Tremor/CHANGELOG [new file with mode: 0644]
wolf3d/code/Tremor/COPYING [new file with mode: 0644]
wolf3d/code/Tremor/Makefile.am [new file with mode: 0644]
wolf3d/code/Tremor/README [new file with mode: 0644]
wolf3d/code/Tremor/Version_script.in [new file with mode: 0644]
wolf3d/code/Tremor/asm_arm.h [new file with mode: 0644]
wolf3d/code/Tremor/autogen.sh [new file with mode: 0644]
wolf3d/code/Tremor/backends.h [new file with mode: 0644]
wolf3d/code/Tremor/bitwise.c [new file with mode: 0644]
wolf3d/code/Tremor/block.c [new file with mode: 0644]
wolf3d/code/Tremor/block.h [new file with mode: 0644]
wolf3d/code/Tremor/codebook.c [new file with mode: 0644]
wolf3d/code/Tremor/codebook.h [new file with mode: 0644]
wolf3d/code/Tremor/codec_internal.h [new file with mode: 0644]
wolf3d/code/Tremor/config_types.h [new file with mode: 0644]
wolf3d/code/Tremor/configure.in [new file with mode: 0644]
wolf3d/code/Tremor/debian/Makefile.am [new file with mode: 0644]
wolf3d/code/Tremor/debian/changelog [new file with mode: 0644]
wolf3d/code/Tremor/debian/control [new file with mode: 0644]
wolf3d/code/Tremor/debian/copyright [new file with mode: 0644]
wolf3d/code/Tremor/debian/libvorbisidec-dev.install [new file with mode: 0644]
wolf3d/code/Tremor/debian/libvorbisidec1.install [new file with mode: 0644]
wolf3d/code/Tremor/debian/rules [new file with mode: 0644]
wolf3d/code/Tremor/doc/OggVorbis_File.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/build.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/callbacks.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/datastructures.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/decoding.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/diff.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/example.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/fileinfo.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/index.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/initialization.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_bitrate.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_bitrate_instant.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_callbacks.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_clear.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_comment.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_info.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_open.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_open_callbacks.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_pcm_seek.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_pcm_seek_page.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_pcm_tell.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_pcm_total.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_raw_seek.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_raw_tell.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_raw_total.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_read.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_seekable.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_serialnumber.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_streams.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_test.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_test_callbacks.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_test_open.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_time_seek.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_time_seek_page.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_time_tell.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/ov_time_total.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/overview.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/reference.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/return.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/seeking.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/style.css [new file with mode: 0644]
wolf3d/code/Tremor/doc/threads.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/vorbis_comment.html [new file with mode: 0644]
wolf3d/code/Tremor/doc/vorbis_info.html [new file with mode: 0644]
wolf3d/code/Tremor/floor0.c [new file with mode: 0644]
wolf3d/code/Tremor/floor1.c [new file with mode: 0644]
wolf3d/code/Tremor/framing.c [new file with mode: 0644]
wolf3d/code/Tremor/info.c [new file with mode: 0644]
wolf3d/code/Tremor/ivorbiscodec.h [new file with mode: 0644]
wolf3d/code/Tremor/ivorbisfile.h [new file with mode: 0644]
wolf3d/code/Tremor/ivorbisfile_example.c [new file with mode: 0644]
wolf3d/code/Tremor/lsp_lookup.h [new file with mode: 0644]
wolf3d/code/Tremor/mapping0.c [new file with mode: 0644]
wolf3d/code/Tremor/mdct.c [new file with mode: 0644]
wolf3d/code/Tremor/mdct.h [new file with mode: 0644]
wolf3d/code/Tremor/mdct_lookup.h [new file with mode: 0644]
wolf3d/code/Tremor/misc.h [new file with mode: 0644]
wolf3d/code/Tremor/ogg.h [new file with mode: 0644]
wolf3d/code/Tremor/os.h [new file with mode: 0644]
wolf3d/code/Tremor/os_types.h [new file with mode: 0644]
wolf3d/code/Tremor/registry.c [new file with mode: 0644]
wolf3d/code/Tremor/registry.h [new file with mode: 0644]
wolf3d/code/Tremor/res012.c [new file with mode: 0644]
wolf3d/code/Tremor/sharedbook.c [new file with mode: 0644]
wolf3d/code/Tremor/synthesis.c [new file with mode: 0644]
wolf3d/code/Tremor/vorbisfile.c [new file with mode: 0644]
wolf3d/code/Tremor/window.c [new file with mode: 0644]
wolf3d/code/Tremor/window.h [new file with mode: 0644]
wolf3d/code/Tremor/window_lookup.h [new file with mode: 0644]
wolf3d/code/env/angle.c [new file with mode: 0644]
wolf3d/code/env/angle.h [new file with mode: 0644]
wolf3d/code/env/app_def.h [new file with mode: 0644]
wolf3d/code/env/arch.c [new file with mode: 0644]
wolf3d/code/env/arch.h [new file with mode: 0644]
wolf3d/code/env/cmd.c [new file with mode: 0644]
wolf3d/code/env/cmd.h [new file with mode: 0644]
wolf3d/code/env/com_string.c [new file with mode: 0644]
wolf3d/code/env/com_string.h [new file with mode: 0644]
wolf3d/code/env/common.c [new file with mode: 0644]
wolf3d/code/env/common.h [new file with mode: 0644]
wolf3d/code/env/common_utils.h [new file with mode: 0644]
wolf3d/code/env/console.c [new file with mode: 0644]
wolf3d/code/env/console.h [new file with mode: 0644]
wolf3d/code/env/cvar.c [new file with mode: 0644]
wolf3d/code/env/cvar.h [new file with mode: 0644]
wolf3d/code/env/fileio.c [new file with mode: 0644]
wolf3d/code/env/files.c [new file with mode: 0644]
wolf3d/code/env/filestring.c [new file with mode: 0644]
wolf3d/code/env/filestring.h [new file with mode: 0644]
wolf3d/code/env/filesystem.h [new file with mode: 0644]
wolf3d/code/env/font_manager.c [new file with mode: 0644]
wolf3d/code/env/font_manager.h [new file with mode: 0644]
wolf3d/code/env/glob.c [new file with mode: 0644]
wolf3d/code/env/glob.h [new file with mode: 0644]
wolf3d/code/env/math.c [new file with mode: 0644]
wolf3d/code/env/matrix.c [new file with mode: 0644]
wolf3d/code/env/matrix.h [new file with mode: 0644]
wolf3d/code/env/memory.c [new file with mode: 0644]
wolf3d/code/env/memory.h [new file with mode: 0644]
wolf3d/code/env/mymath.h [new file with mode: 0644]
wolf3d/code/env/myopengl.h [new file with mode: 0644]
wolf3d/code/env/myopengl_extension.h [new file with mode: 0644]
wolf3d/code/env/num_type.h [new file with mode: 0644]
wolf3d/code/env/oggfile.c [new file with mode: 0644]
wolf3d/code/env/oggfile.h [new file with mode: 0644]
wolf3d/code/env/openal_binding.c [new file with mode: 0644]
wolf3d/code/env/openal_binding.h [new file with mode: 0644]
wolf3d/code/env/openal_main.c [new file with mode: 0644]
wolf3d/code/env/opengl_draw.c [new file with mode: 0644]
wolf3d/code/env/opengl_extension.c [new file with mode: 0644]
wolf3d/code/env/opengl_local.h [new file with mode: 0644]
wolf3d/code/env/opengl_main.c [new file with mode: 0644]
wolf3d/code/env/opengl_texture.c [new file with mode: 0644]
wolf3d/code/env/random_number.c [new file with mode: 0644]
wolf3d/code/env/random_number.h [new file with mode: 0644]
wolf3d/code/env/renderer.h [new file with mode: 0644]
wolf3d/code/env/share.c [new file with mode: 0644]
wolf3d/code/env/sound.c [new file with mode: 0644]
wolf3d/code/env/sound.h [new file with mode: 0644]
wolf3d/code/env/sound_local.h [new file with mode: 0644]
wolf3d/code/env/sound_sfx_id.c [new file with mode: 0644]
wolf3d/code/env/sound_stream.c [new file with mode: 0644]
wolf3d/code/env/texture_manager.c [new file with mode: 0644]
wolf3d/code/env/texture_manager.h [new file with mode: 0644]
wolf3d/code/env/tga.c [new file with mode: 0644]
wolf3d/code/env/tga.h [new file with mode: 0644]
wolf3d/code/env/timer.h [new file with mode: 0644]
wolf3d/code/env/unix_file.c [new file with mode: 0644]
wolf3d/code/env/unix_timer.c [new file with mode: 0644]
wolf3d/code/env/vector.c [new file with mode: 0644]
wolf3d/code/env/vector.h [new file with mode: 0644]
wolf3d/code/env/video.h [new file with mode: 0644]
wolf3d/code/env/wavfile.c [new file with mode: 0644]
wolf3d/code/env/wavfile.h [new file with mode: 0644]
wolf3d/code/env/zmem.c [new file with mode: 0644]
wolf3d/code/env/zmem.h [new file with mode: 0644]
wolf3d/code/iphone/EAGLView.h [new file with mode: 0644]
wolf3d/code/iphone/EAGLView.m [new file with mode: 0644]
wolf3d/code/iphone/Info.plist [new file with mode: 0644]
wolf3d/code/iphone/MainWindow.xib [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/categories.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/cdecls.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/decls.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/files.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/imports.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/pbxindex.header [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/protocols.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/refs.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/strings.pbxstrings/control [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/strings.pbxstrings/strings [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/subclasses.pbxbtree [new file with mode: 0644]
wolf3d/code/iphone/build/wolf3d.build/wolf3d.pbxindex/symbols0.pbxsymbols [new file with mode: 0644]
wolf3d/code/iphone/default.png [new file with mode: 0644]
wolf3d/code/iphone/default_wolf3dlite.png [new file with mode: 0644]
wolf3d/code/iphone/dist.plist [new file with mode: 0644]
wolf3d/code/iphone/gles_glue.c [new file with mode: 0644]
wolf3d/code/iphone/gles_glue.h [new file with mode: 0644]
wolf3d/code/iphone/hud.c [new file with mode: 0644]
wolf3d/code/iphone/iphone_loop.c [new file with mode: 0644]
wolf3d/code/iphone/iphone_main.c [new file with mode: 0644]
wolf3d/code/iphone/iphone_menus.c [new file with mode: 0644]
wolf3d/code/iphone/iphone_qgl.h [new file with mode: 0644]
wolf3d/code/iphone/iphone_qgl_enumerants.h [new file with mode: 0644]
wolf3d/code/iphone/iphone_sys.m [new file with mode: 0644]
wolf3d/code/iphone/iphone_wolf.h [new file with mode: 0644]
wolf3d/code/iphone/main.m [new file with mode: 0644]
wolf3d/code/iphone/victory_wolf3dlite.tga [new file with mode: 0644]
wolf3d/code/iphone/wolf3d.xcodeproj/cass.pbxuser [new file with mode: 0644]
wolf3d/code/iphone/wolf3d.xcodeproj/cass.perspectivev3 [new file with mode: 0644]
wolf3d/code/iphone/wolf3d.xcodeproj/johnc.mode1v3 [new file with mode: 0644]
wolf3d/code/iphone/wolf3d.xcodeproj/johnc.pbxuser [new file with mode: 0644]
wolf3d/code/iphone/wolf3d.xcodeproj/johnc.perspectivev3 [new file with mode: 0644]
wolf3d/code/iphone/wolf3d.xcodeproj/project.pbxproj [new file with mode: 0644]
wolf3d/code/iphone/wolf3dAppDelegate.h [new file with mode: 0644]
wolf3d/code/iphone/wolf3dAppDelegate.m [new file with mode: 0644]
wolf3d/code/iphone/wolf3d_Prefix.pch [new file with mode: 0644]
wolf3d/code/iphone/wolf3d_icon.png [new file with mode: 0644]
wolf3d/code/iphone/wolf3dlite_icon.png [new file with mode: 0644]
wolf3d/code/wolf/wolf_act_stat.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_actor_ai.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_actor_ai.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_actors.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_actors.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_ai_com.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_ai_com.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_areas.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_bj.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_bj.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_client_main.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_doors.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_level.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_level.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_local.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_main.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_math.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_math.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_opengl.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_player.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_player.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_powerups.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_powerups.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_pushwalls.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_raycast.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_raycast.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_renderer.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_renderer.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_sprites.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_sprites.h [new file with mode: 0644]
wolf3d/code/wolf/wolf_sv_ccmds.c [new file with mode: 0644]
wolf3d/code/wolf/wolf_weapon.c [new file with mode: 0644]
wolf3d/code/wolfiphone.h [new file with mode: 0644]
wolf3d/scripts/scrubBase.pl [new file with mode: 0644]

diff --git a/wolf3d/base/iphone/0.5551 b/wolf3d/base/iphone/0.5551
new file mode 100644 (file)
index 0000000..6b1f269
Binary files /dev/null and b/wolf3d/base/iphone/0.5551 differ
diff --git a/wolf3d/base/iphone/1.5551 b/wolf3d/base/iphone/1.5551
new file mode 100644 (file)
index 0000000..08c580f
Binary files /dev/null and b/wolf3d/base/iphone/1.5551 differ
diff --git a/wolf3d/base/iphone/2.5551 b/wolf3d/base/iphone/2.5551
new file mode 100644 (file)
index 0000000..8ae03ab
Binary files /dev/null and b/wolf3d/base/iphone/2.5551 differ
diff --git a/wolf3d/base/iphone/3.5551 b/wolf3d/base/iphone/3.5551
new file mode 100644 (file)
index 0000000..d745e4d
Binary files /dev/null and b/wolf3d/base/iphone/3.5551 differ
diff --git a/wolf3d/base/iphone/4.5551 b/wolf3d/base/iphone/4.5551
new file mode 100644 (file)
index 0000000..0df08a9
Binary files /dev/null and b/wolf3d/base/iphone/4.5551 differ
diff --git a/wolf3d/base/iphone/5.5551 b/wolf3d/base/iphone/5.5551
new file mode 100644 (file)
index 0000000..4ed6bc5
Binary files /dev/null and b/wolf3d/base/iphone/5.5551 differ
diff --git a/wolf3d/base/iphone/6.5551 b/wolf3d/base/iphone/6.5551
new file mode 100644 (file)
index 0000000..a8594bb
Binary files /dev/null and b/wolf3d/base/iphone/6.5551 differ
diff --git a/wolf3d/base/iphone/7.5551 b/wolf3d/base/iphone/7.5551
new file mode 100644 (file)
index 0000000..66ff538
Binary files /dev/null and b/wolf3d/base/iphone/7.5551 differ
diff --git a/wolf3d/base/iphone/8.5551 b/wolf3d/base/iphone/8.5551
new file mode 100644 (file)
index 0000000..daeb3c6
Binary files /dev/null and b/wolf3d/base/iphone/8.5551 differ
diff --git a/wolf3d/base/iphone/9.5551 b/wolf3d/base/iphone/9.5551
new file mode 100644 (file)
index 0000000..81bf8e7
Binary files /dev/null and b/wolf3d/base/iphone/9.5551 differ
diff --git a/wolf3d/base/iphone/FACE1APIC.5551 b/wolf3d/base/iphone/FACE1APIC.5551
new file mode 100644 (file)
index 0000000..013200d
Binary files /dev/null and b/wolf3d/base/iphone/FACE1APIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE1BPIC.5551 b/wolf3d/base/iphone/FACE1BPIC.5551
new file mode 100644 (file)
index 0000000..af998f2
Binary files /dev/null and b/wolf3d/base/iphone/FACE1BPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE1CPIC.5551 b/wolf3d/base/iphone/FACE1CPIC.5551
new file mode 100644 (file)
index 0000000..5aa5f6e
Binary files /dev/null and b/wolf3d/base/iphone/FACE1CPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE2APIC.5551 b/wolf3d/base/iphone/FACE2APIC.5551
new file mode 100644 (file)
index 0000000..d301d2a
Binary files /dev/null and b/wolf3d/base/iphone/FACE2APIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE2BPIC.5551 b/wolf3d/base/iphone/FACE2BPIC.5551
new file mode 100644 (file)
index 0000000..c5c3d26
Binary files /dev/null and b/wolf3d/base/iphone/FACE2BPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE2CPIC.5551 b/wolf3d/base/iphone/FACE2CPIC.5551
new file mode 100644 (file)
index 0000000..a8294a1
Binary files /dev/null and b/wolf3d/base/iphone/FACE2CPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE3APIC.5551 b/wolf3d/base/iphone/FACE3APIC.5551
new file mode 100644 (file)
index 0000000..0f4e5eb
Binary files /dev/null and b/wolf3d/base/iphone/FACE3APIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE3BPIC.5551 b/wolf3d/base/iphone/FACE3BPIC.5551
new file mode 100644 (file)
index 0000000..8b59d3e
Binary files /dev/null and b/wolf3d/base/iphone/FACE3BPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE3CPIC.5551 b/wolf3d/base/iphone/FACE3CPIC.5551
new file mode 100644 (file)
index 0000000..5cbfd2d
Binary files /dev/null and b/wolf3d/base/iphone/FACE3CPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE4APIC.5551 b/wolf3d/base/iphone/FACE4APIC.5551
new file mode 100644 (file)
index 0000000..244a004
Binary files /dev/null and b/wolf3d/base/iphone/FACE4APIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE4BPIC.5551 b/wolf3d/base/iphone/FACE4BPIC.5551
new file mode 100644 (file)
index 0000000..72c74ef
Binary files /dev/null and b/wolf3d/base/iphone/FACE4BPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE4CPIC.5551 b/wolf3d/base/iphone/FACE4CPIC.5551
new file mode 100644 (file)
index 0000000..df38e16
Binary files /dev/null and b/wolf3d/base/iphone/FACE4CPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE5APIC.5551 b/wolf3d/base/iphone/FACE5APIC.5551
new file mode 100644 (file)
index 0000000..337c9d1
Binary files /dev/null and b/wolf3d/base/iphone/FACE5APIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE5BPIC.5551 b/wolf3d/base/iphone/FACE5BPIC.5551
new file mode 100644 (file)
index 0000000..377a02c
Binary files /dev/null and b/wolf3d/base/iphone/FACE5BPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE5CPIC.5551 b/wolf3d/base/iphone/FACE5CPIC.5551
new file mode 100644 (file)
index 0000000..b394099
Binary files /dev/null and b/wolf3d/base/iphone/FACE5CPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE6APIC.5551 b/wolf3d/base/iphone/FACE6APIC.5551
new file mode 100644 (file)
index 0000000..b51e3f0
Binary files /dev/null and b/wolf3d/base/iphone/FACE6APIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE6BPIC.5551 b/wolf3d/base/iphone/FACE6BPIC.5551
new file mode 100644 (file)
index 0000000..61f8c19
Binary files /dev/null and b/wolf3d/base/iphone/FACE6BPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE6CPIC.5551 b/wolf3d/base/iphone/FACE6CPIC.5551
new file mode 100644 (file)
index 0000000..ce63b12
Binary files /dev/null and b/wolf3d/base/iphone/FACE6CPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE7APIC.5551 b/wolf3d/base/iphone/FACE7APIC.5551
new file mode 100644 (file)
index 0000000..257f22a
Binary files /dev/null and b/wolf3d/base/iphone/FACE7APIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE7BPIC.5551 b/wolf3d/base/iphone/FACE7BPIC.5551
new file mode 100644 (file)
index 0000000..80c4c37
Binary files /dev/null and b/wolf3d/base/iphone/FACE7BPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE7CPIC.5551 b/wolf3d/base/iphone/FACE7CPIC.5551
new file mode 100644 (file)
index 0000000..9a290c8
Binary files /dev/null and b/wolf3d/base/iphone/FACE7CPIC.5551 differ
diff --git a/wolf3d/base/iphone/FACE8APIC.5551 b/wolf3d/base/iphone/FACE8APIC.5551
new file mode 100644 (file)
index 0000000..08993cc
Binary files /dev/null and b/wolf3d/base/iphone/FACE8APIC.5551 differ
diff --git a/wolf3d/base/iphone/GOTGATLINGPIC.5551 b/wolf3d/base/iphone/GOTGATLINGPIC.5551
new file mode 100644 (file)
index 0000000..245219f
Binary files /dev/null and b/wolf3d/base/iphone/GOTGATLINGPIC.5551 differ
diff --git a/wolf3d/base/iphone/L_damage.5551 b/wolf3d/base/iphone/L_damage.5551
new file mode 100644 (file)
index 0000000..288ab43
Binary files /dev/null and b/wolf3d/base/iphone/L_damage.5551 differ
diff --git a/wolf3d/base/iphone/R_damage.5551 b/wolf3d/base/iphone/R_damage.5551
new file mode 100644 (file)
index 0000000..f6223c0
Binary files /dev/null and b/wolf3d/base/iphone/R_damage.5551 differ
diff --git a/wolf3d/base/iphone/advanced_button.5551 b/wolf3d/base/iphone/advanced_button.5551
new file mode 100644 (file)
index 0000000..50785e1
Binary files /dev/null and b/wolf3d/base/iphone/advanced_button.5551 differ
diff --git a/wolf3d/base/iphone/background_1.5551 b/wolf3d/base/iphone/background_1.5551
new file mode 100644 (file)
index 0000000..6d893b7
Binary files /dev/null and b/wolf3d/base/iphone/background_1.5551 differ
diff --git a/wolf3d/base/iphone/button_back.5551 b/wolf3d/base/iphone/button_back.5551
new file mode 100644 (file)
index 0000000..87d2cf5
Binary files /dev/null and b/wolf3d/base/iphone/button_back.5551 differ
diff --git a/wolf3d/base/iphone/button_control.5551 b/wolf3d/base/iphone/button_control.5551
new file mode 100644 (file)
index 0000000..db82c75
Binary files /dev/null and b/wolf3d/base/iphone/button_control.5551 differ
diff --git a/wolf3d/base/iphone/button_ep1.5551 b/wolf3d/base/iphone/button_ep1.5551
new file mode 100644 (file)
index 0000000..d7bb11e
Binary files /dev/null and b/wolf3d/base/iphone/button_ep1.5551 differ
diff --git a/wolf3d/base/iphone/button_ep2.5551 b/wolf3d/base/iphone/button_ep2.5551
new file mode 100644 (file)
index 0000000..0f5a4bd
Binary files /dev/null and b/wolf3d/base/iphone/button_ep2.5551 differ
diff --git a/wolf3d/base/iphone/button_ep3.5551 b/wolf3d/base/iphone/button_ep3.5551
new file mode 100644 (file)
index 0000000..106001d
Binary files /dev/null and b/wolf3d/base/iphone/button_ep3.5551 differ
diff --git a/wolf3d/base/iphone/button_ep4.5551 b/wolf3d/base/iphone/button_ep4.5551
new file mode 100644 (file)
index 0000000..4393d73
Binary files /dev/null and b/wolf3d/base/iphone/button_ep4.5551 differ
diff --git a/wolf3d/base/iphone/button_ep5.5551 b/wolf3d/base/iphone/button_ep5.5551
new file mode 100644 (file)
index 0000000..496649a
Binary files /dev/null and b/wolf3d/base/iphone/button_ep5.5551 differ
diff --git a/wolf3d/base/iphone/button_ep6.5551 b/wolf3d/base/iphone/button_ep6.5551
new file mode 100644 (file)
index 0000000..1c4081a
Binary files /dev/null and b/wolf3d/base/iphone/button_ep6.5551 differ
diff --git a/wolf3d/base/iphone/button_levels.5551 b/wolf3d/base/iphone/button_levels.5551
new file mode 100644 (file)
index 0000000..f6b2d46
Binary files /dev/null and b/wolf3d/base/iphone/button_levels.5551 differ
diff --git a/wolf3d/base/iphone/button_new.5551 b/wolf3d/base/iphone/button_new.5551
new file mode 100644 (file)
index 0000000..f97224c
Binary files /dev/null and b/wolf3d/base/iphone/button_new.5551 differ
diff --git a/wolf3d/base/iphone/button_resume.5551 b/wolf3d/base/iphone/button_resume.5551
new file mode 100644 (file)
index 0000000..e03ed44
Binary files /dev/null and b/wolf3d/base/iphone/button_resume.5551 differ
diff --git a/wolf3d/base/iphone/button_skill1.5551 b/wolf3d/base/iphone/button_skill1.5551
new file mode 100644 (file)
index 0000000..6382e3d
Binary files /dev/null and b/wolf3d/base/iphone/button_skill1.5551 differ
diff --git a/wolf3d/base/iphone/button_skill2.5551 b/wolf3d/base/iphone/button_skill2.5551
new file mode 100644 (file)
index 0000000..62c1b6d
Binary files /dev/null and b/wolf3d/base/iphone/button_skill2.5551 differ
diff --git a/wolf3d/base/iphone/button_skill3.5551 b/wolf3d/base/iphone/button_skill3.5551
new file mode 100644 (file)
index 0000000..97d999f
Binary files /dev/null and b/wolf3d/base/iphone/button_skill3.5551 differ
diff --git a/wolf3d/base/iphone/button_skill4.5551 b/wolf3d/base/iphone/button_skill4.5551
new file mode 100644 (file)
index 0000000..79ffd0b
Binary files /dev/null and b/wolf3d/base/iphone/button_skill4.5551 differ
diff --git a/wolf3d/base/iphone/button_web.5551 b/wolf3d/base/iphone/button_web.5551
new file mode 100644 (file)
index 0000000..fa549fd
Binary files /dev/null and b/wolf3d/base/iphone/button_web.5551 differ
diff --git a/wolf3d/base/iphone/diractional_01.5551 b/wolf3d/base/iphone/diractional_01.5551
new file mode 100644 (file)
index 0000000..c6ebd44
Binary files /dev/null and b/wolf3d/base/iphone/diractional_01.5551 differ
diff --git a/wolf3d/base/iphone/diractional_02.5551 b/wolf3d/base/iphone/diractional_02.5551
new file mode 100644 (file)
index 0000000..0035e66
Binary files /dev/null and b/wolf3d/base/iphone/diractional_02.5551 differ
diff --git a/wolf3d/base/iphone/diractional_03.5551 b/wolf3d/base/iphone/diractional_03.5551
new file mode 100644 (file)
index 0000000..b453eb2
Binary files /dev/null and b/wolf3d/base/iphone/diractional_03.5551 differ
diff --git a/wolf3d/base/iphone/ep_1.5551 b/wolf3d/base/iphone/ep_1.5551
new file mode 100644 (file)
index 0000000..89314db
Binary files /dev/null and b/wolf3d/base/iphone/ep_1.5551 differ
diff --git a/wolf3d/base/iphone/ep_1_6.5551 b/wolf3d/base/iphone/ep_1_6.5551
new file mode 100644 (file)
index 0000000..4617230
Binary files /dev/null and b/wolf3d/base/iphone/ep_1_6.5551 differ
diff --git a/wolf3d/base/iphone/font1.5551 b/wolf3d/base/iphone/font1.5551
new file mode 100644 (file)
index 0000000..6e5cd3c
Binary files /dev/null and b/wolf3d/base/iphone/font1.5551 differ
diff --git a/wolf3d/base/iphone/gold_key.5551 b/wolf3d/base/iphone/gold_key.5551
new file mode 100644 (file)
index 0000000..0e3e478
Binary files /dev/null and b/wolf3d/base/iphone/gold_key.5551 differ
diff --git a/wolf3d/base/iphone/intermission_256.5551 b/wolf3d/base/iphone/intermission_256.5551
new file mode 100644 (file)
index 0000000..127a447
Binary files /dev/null and b/wolf3d/base/iphone/intermission_256.5551 differ
diff --git a/wolf3d/base/iphone/kills.5551 b/wolf3d/base/iphone/kills.5551
new file mode 100644 (file)
index 0000000..188af71
Binary files /dev/null and b/wolf3d/base/iphone/kills.5551 differ
diff --git a/wolf3d/base/iphone/layout_1.5551 b/wolf3d/base/iphone/layout_1.5551
new file mode 100644 (file)
index 0000000..42a72a0
Binary files /dev/null and b/wolf3d/base/iphone/layout_1.5551 differ
diff --git a/wolf3d/base/iphone/layout_2.5551 b/wolf3d/base/iphone/layout_2.5551
new file mode 100644 (file)
index 0000000..56077bd
Binary files /dev/null and b/wolf3d/base/iphone/layout_2.5551 differ
diff --git a/wolf3d/base/iphone/layout_3.5551 b/wolf3d/base/iphone/layout_3.5551
new file mode 100644 (file)
index 0000000..8191ade
Binary files /dev/null and b/wolf3d/base/iphone/layout_3.5551 differ
diff --git a/wolf3d/base/iphone/layout_4.5551 b/wolf3d/base/iphone/layout_4.5551
new file mode 100644 (file)
index 0000000..88ac110
Binary files /dev/null and b/wolf3d/base/iphone/layout_4.5551 differ
diff --git a/wolf3d/base/iphone/map.5551 b/wolf3d/base/iphone/map.5551
new file mode 100644 (file)
index 0000000..d77cde1
Binary files /dev/null and b/wolf3d/base/iphone/map.5551 differ
diff --git a/wolf3d/base/iphone/menu.5551 b/wolf3d/base/iphone/menu.5551
new file mode 100644 (file)
index 0000000..26caaa3
Binary files /dev/null and b/wolf3d/base/iphone/menu.5551 differ
diff --git a/wolf3d/base/iphone/music_off.5551 b/wolf3d/base/iphone/music_off.5551
new file mode 100644 (file)
index 0000000..4af6c76
Binary files /dev/null and b/wolf3d/base/iphone/music_off.5551 differ
diff --git a/wolf3d/base/iphone/music_on.5551 b/wolf3d/base/iphone/music_on.5551
new file mode 100644 (file)
index 0000000..ad24ed8
Binary files /dev/null and b/wolf3d/base/iphone/music_on.5551 differ
diff --git a/wolf3d/base/iphone/partime.5551 b/wolf3d/base/iphone/partime.5551
new file mode 100644 (file)
index 0000000..e4678e8
Binary files /dev/null and b/wolf3d/base/iphone/partime.5551 differ
diff --git a/wolf3d/base/iphone/secrets.5551 b/wolf3d/base/iphone/secrets.5551
new file mode 100644 (file)
index 0000000..dda390f
Binary files /dev/null and b/wolf3d/base/iphone/secrets.5551 differ
diff --git a/wolf3d/base/iphone/shoot.5551 b/wolf3d/base/iphone/shoot.5551
new file mode 100644 (file)
index 0000000..d72e141
Binary files /dev/null and b/wolf3d/base/iphone/shoot.5551 differ
diff --git a/wolf3d/base/iphone/side_2_side.5551 b/wolf3d/base/iphone/side_2_side.5551
new file mode 100644 (file)
index 0000000..2a9b817
Binary files /dev/null and b/wolf3d/base/iphone/side_2_side.5551 differ
diff --git a/wolf3d/base/iphone/silver_key.5551 b/wolf3d/base/iphone/silver_key.5551
new file mode 100644 (file)
index 0000000..00766fd
Binary files /dev/null and b/wolf3d/base/iphone/silver_key.5551 differ
diff --git a/wolf3d/base/iphone/stat_bar_1.5551 b/wolf3d/base/iphone/stat_bar_1.5551
new file mode 100644 (file)
index 0000000..55f991d
Binary files /dev/null and b/wolf3d/base/iphone/stat_bar_1.5551 differ
diff --git a/wolf3d/base/iphone/stat_bar_2.5551 b/wolf3d/base/iphone/stat_bar_2.5551
new file mode 100644 (file)
index 0000000..bf4bb9d
Binary files /dev/null and b/wolf3d/base/iphone/stat_bar_2.5551 differ
diff --git a/wolf3d/base/iphone/stats.5551 b/wolf3d/base/iphone/stats.5551
new file mode 100644 (file)
index 0000000..31975fb
Binary files /dev/null and b/wolf3d/base/iphone/stats.5551 differ
diff --git a/wolf3d/base/iphone/status_hud.5551 b/wolf3d/base/iphone/status_hud.5551
new file mode 100644 (file)
index 0000000..3377f0c
Binary files /dev/null and b/wolf3d/base/iphone/status_hud.5551 differ
diff --git a/wolf3d/base/iphone/treasure.5551 b/wolf3d/base/iphone/treasure.5551
new file mode 100644 (file)
index 0000000..2b6f561
Binary files /dev/null and b/wolf3d/base/iphone/treasure.5551 differ
diff --git a/wolf3d/base/iphone/up_down.5551 b/wolf3d/base/iphone/up_down.5551
new file mode 100644 (file)
index 0000000..4c6f04c
Binary files /dev/null and b/wolf3d/base/iphone/up_down.5551 differ
diff --git a/wolf3d/base/iphone/victory_256.5551 b/wolf3d/base/iphone/victory_256.5551
new file mode 100644 (file)
index 0000000..c17bdc4
Binary files /dev/null and b/wolf3d/base/iphone/victory_256.5551 differ
diff --git a/wolf3d/base/iphone/wolf_logo.5551 b/wolf3d/base/iphone/wolf_logo.5551
new file mode 100644 (file)
index 0000000..cbcb7cd
Binary files /dev/null and b/wolf3d/base/iphone/wolf_logo.5551 differ
index dd3683582378c3d24f4643d7c401243a8e17c759..25f33201dee7a5b6bd7509c24044e627c59699d0 100644 (file)
Binary files a/wolf3d/base/sprites/002.5551 and b/wolf3d/base/sprites/002.5551 differ
index 222dc5b32aceff6fc460d3d6edc3d6a1a1d781a2..16184bf99ea85a1dee91dd67d13e50d3cb452c88 100644 (file)
Binary files a/wolf3d/base/sprites/003.5551 and b/wolf3d/base/sprites/003.5551 differ
index 97db7c33bc73ef17f0f174af53d571d164f56e73..7438a756187ade4747f50d7415e8f4c6e10585da 100644 (file)
Binary files a/wolf3d/base/sprites/005.5551 and b/wolf3d/base/sprites/005.5551 differ
index fe4e54935c599968c6f1584a8d513dbc1e665fc6..1caad603a43b397fb61c911487139c9f0ec7b7ba 100644 (file)
Binary files a/wolf3d/base/sprites/006.5551 and b/wolf3d/base/sprites/006.5551 differ
index b616457115c5300340a0220e3bad153966e7ab30..49fc932e50720fbd7c65826ffaaee4be649c5d4b 100644 (file)
Binary files a/wolf3d/base/sprites/008.5551 and b/wolf3d/base/sprites/008.5551 differ
index 578bcba98369c25e6f14f7540e95cb1f329ec81e..e90672a1ab9d1dd0b79bc4362500642ab1c48968 100644 (file)
Binary files a/wolf3d/base/sprites/009.5551 and b/wolf3d/base/sprites/009.5551 differ
index a6524dda9aa08a141d880731b261013054799864..1802f0bd58e510af12ca1af20f6774f632469c9e 100644 (file)
Binary files a/wolf3d/base/sprites/010.5551 and b/wolf3d/base/sprites/010.5551 differ
index 153091d50c1a3d3b1cee7b3261000deeb8c3daca..ad643faf1a0d3fd536dea226a548c8c10626d6d2 100644 (file)
Binary files a/wolf3d/base/sprites/013.5551 and b/wolf3d/base/sprites/013.5551 differ
index fa9e35670bd6e4d14ecbfc97c2037cef464f2e6d..6c6fc6b4c291b1b17502e69b32e721eb8d22bebd 100644 (file)
Binary files a/wolf3d/base/sprites/014.5551 and b/wolf3d/base/sprites/014.5551 differ
index c1eddb8905c1531192592c1ab19f325526f1ccd2..f67cba356f30efd6ee4c4c8a5d02ffb7bb3e4cdb 100644 (file)
Binary files a/wolf3d/base/sprites/015.5551 and b/wolf3d/base/sprites/015.5551 differ
index 6d568b736172c33a32625974da0aa65c02eaf8cc..404b09494172dcb037eccbe2599ec214fb5a342d 100644 (file)
Binary files a/wolf3d/base/sprites/016.5551 and b/wolf3d/base/sprites/016.5551 differ
index e6a25a425fe826acdbfab0203611713383873615..390084a1dfcd3d389076ea20b50592d3432c19f1 100644 (file)
Binary files a/wolf3d/base/sprites/018.5551 and b/wolf3d/base/sprites/018.5551 differ
index a1977d08f6fafad0a97c9ea0c98b859cd4d71c80..ad2127effc7905e492de8c935b5022989743cc95 100644 (file)
Binary files a/wolf3d/base/sprites/019.5551 and b/wolf3d/base/sprites/019.5551 differ
index 245544a207c83334de7b250dd9aaada47ea77358..62a4dc59e2370caea09a8b5224002a36bd81c2a0 100644 (file)
Binary files a/wolf3d/base/sprites/021.5551 and b/wolf3d/base/sprites/021.5551 differ
index 5b7b15df27cce1ae4b62c4926b655c28295ce6f5..f4c1abedcd06ad7988ea2c7c43ab5ce34426d836 100644 (file)
Binary files a/wolf3d/base/sprites/022.5551 and b/wolf3d/base/sprites/022.5551 differ
index cfc475d97871ee183f610cfcb3b9c6f3d562078b..ef3bd00b6a5bc2e025e565d8b2850173bcb34615 100644 (file)
Binary files a/wolf3d/base/sprites/023.5551 and b/wolf3d/base/sprites/023.5551 differ
index 8ebad7ce68240682b984bda4074f2030a3d73bbf..9efbbf9ccf8a8c75ab10be2cfd60f1349fec208d 100644 (file)
Binary files a/wolf3d/base/sprites/025.5551 and b/wolf3d/base/sprites/025.5551 differ
index 6b45aeabb031dc4d8bf0fdba99b5398362561aae..cfd264841791b5a200d5b7a16da93dfa00e79082 100644 (file)
Binary files a/wolf3d/base/sprites/026.5551 and b/wolf3d/base/sprites/026.5551 differ
index a32bd00eb53f2dd5e11330a0d7abfd66c9a5fdcf..56fbe98f867f50a05cec7a00097d766b5ff22e29 100644 (file)
Binary files a/wolf3d/base/sprites/028.5551 and b/wolf3d/base/sprites/028.5551 differ
index f3b4428c7da5fcbd0ca8e108bfed12834d3d576f..2b674995466689ffd76a0d3cf7cf02c6bd3f418e 100644 (file)
Binary files a/wolf3d/base/sprites/029.5551 and b/wolf3d/base/sprites/029.5551 differ
index 216853b5431661a00a74db4b388fcd75c09f5f9c..77f2688fec2c12f403daf5ffdffafadf58b714c1 100644 (file)
Binary files a/wolf3d/base/sprites/030.5551 and b/wolf3d/base/sprites/030.5551 differ
index bd6272b230edc8759343e9fa121543dfeff7893b..0c49f822c6cb2b28f8f30ea7afd16ba2d7e8ac48 100644 (file)
Binary files a/wolf3d/base/sprites/031.5551 and b/wolf3d/base/sprites/031.5551 differ
index 240d76c6305afe74b3d6006c995832b47eb699d2..05b2ecd2d4eb5bd42ef389a8844b353c5d40db79 100644 (file)
Binary files a/wolf3d/base/sprites/032.5551 and b/wolf3d/base/sprites/032.5551 differ
index a5c9ef946847cbd96562da5ecdfb5f2d7dfbd98e..0e2706088b882579886bda15f618ca44a11b0f5e 100644 (file)
Binary files a/wolf3d/base/sprites/033.5551 and b/wolf3d/base/sprites/033.5551 differ
index b7fa952979be5dba812004da978462d030e61291..8cf6f4e0ca2f7444f98b367e118d2d864cb73ea3 100644 (file)
Binary files a/wolf3d/base/sprites/034.5551 and b/wolf3d/base/sprites/034.5551 differ
index a2e09933c1d2751298aadbd4bb6678f210c4fa38..9201164a5ca35f9edd941dbe8c38d17bdf937135 100644 (file)
Binary files a/wolf3d/base/sprites/035.5551 and b/wolf3d/base/sprites/035.5551 differ
index 19f2360e5c2c4bdb5ba62717276c364e9a956c10..62ca9d74795d0dcd12ed7997581195feb4db9fb6 100644 (file)
Binary files a/wolf3d/base/sprites/037.5551 and b/wolf3d/base/sprites/037.5551 differ
index 3e44f54d8c096429997556df3980df4b2a1e721e..a56389ba5caf7705b20f4dd5e818900e0435a956 100644 (file)
Binary files a/wolf3d/base/sprites/038.5551 and b/wolf3d/base/sprites/038.5551 differ
index 0cc89da26c7d30e9c7d4f83994c8e693fa9db121..79d6e39a061116c55c6ec9b02dee5cd16977ce07 100644 (file)
Binary files a/wolf3d/base/sprites/041.5551 and b/wolf3d/base/sprites/041.5551 differ
index ebdd1e6c38231172a8750a7fb26731b26cec2fd1..89e5e4441b138b24c3537de9c25b3c94c7d7eb31 100644 (file)
Binary files a/wolf3d/base/sprites/514.5551 and b/wolf3d/base/sprites/514.5551 differ
index 4b821d2bf4bc980c894e91fcd75fafcccb089e32..64ba9f09159638a1171d922a6be41540e0bb9e64 100644 (file)
Binary files a/wolf3d/base/sprites/515.5551 and b/wolf3d/base/sprites/515.5551 differ
index e25bc7f23cdf1677fdc20ca2bcb73898dd950b81..8d88128bea10383c056c34a1ab68aae44d9cec6a 100644 (file)
Binary files a/wolf3d/base/sprites/516.5551 and b/wolf3d/base/sprites/516.5551 differ
index 8803a411564fec148af9e956fac59eba77feaf15..45d13bedac8a8a0d041f3e16dd6266b056c053a5 100644 (file)
Binary files a/wolf3d/base/sprites/517.5551 and b/wolf3d/base/sprites/517.5551 differ
index e25bc7f23cdf1677fdc20ca2bcb73898dd950b81..2f3265d10e67e07f2d2ca3d7981046be43293160 100644 (file)
Binary files a/wolf3d/base/sprites/518.5551 and b/wolf3d/base/sprites/518.5551 differ
index 5a6a622e114746b95d55dcd9faa2d37734a1c65d..9e2bce7acb972e646a690fa4039a3ea0761c0a84 100644 (file)
Binary files a/wolf3d/base/sprites/519.5551 and b/wolf3d/base/sprites/519.5551 differ
index d02a938a98f6d641c1577dedfeefbcffe5e766f9..5af76a85214967380a39765ca918349ffca99590 100644 (file)
Binary files a/wolf3d/base/sprites/520.5551 and b/wolf3d/base/sprites/520.5551 differ
index e98265ed346efc1a65d1196c4e62d0aa95061787..5a075d0d4e24716353bfb95592cf65bc5390e94a 100644 (file)
Binary files a/wolf3d/base/sprites/521.5551 and b/wolf3d/base/sprites/521.5551 differ
index 6752b7cb6ae848f588471fa7f059e206d4d3f3f5..c5e3574196c7792b8cad72e61d5a35bdb95d96bd 100644 (file)
Binary files a/wolf3d/base/sprites/522.5551 and b/wolf3d/base/sprites/522.5551 differ
index 568aa784c672c1229929193afb99419377bcdc80..08a6db392808009086f7faa8cc5c1e609dc0c5d5 100644 (file)
Binary files a/wolf3d/base/sprites/523.5551 and b/wolf3d/base/sprites/523.5551 differ
index b6cbe6eea5e54977b624bf5e44920ea715b12a3a..36c27f67a758c2d1ece2de2baded85c91adb695b 100644 (file)
Binary files a/wolf3d/base/sprites/524.5551 and b/wolf3d/base/sprites/524.5551 differ
index ab5efd5db93e8685210108da304fdf872ad4bfb2..be30ec46f8fa9b454797f890b9490c238acce850 100644 (file)
Binary files a/wolf3d/base/sprites/525.5551 and b/wolf3d/base/sprites/525.5551 differ
index 6571777ba79852ca4d9e58697a790ac06554ce72..33a4200e7c0846e598cbd9bda244867d89f7a79c 100644 (file)
Binary files a/wolf3d/base/sprites/526.5551 and b/wolf3d/base/sprites/526.5551 differ
index 7941a37de9dffbce0ad28fa0ccd26a5e8a32c10b..1a1851b51cbf7065a488e4e93cce71bccc771445 100644 (file)
Binary files a/wolf3d/base/sprites/527.5551 and b/wolf3d/base/sprites/527.5551 differ
index ab5efd5db93e8685210108da304fdf872ad4bfb2..3aed254c742e3dbe59e6cc0555551c65747f1abc 100644 (file)
Binary files a/wolf3d/base/sprites/528.5551 and b/wolf3d/base/sprites/528.5551 differ
index 02baa202639210766ca11a67cfb18c5110c026ac..61ea34be222980dbf3df69f6df57bda6e7125c0f 100644 (file)
Binary files a/wolf3d/base/sprites/529.5551 and b/wolf3d/base/sprites/529.5551 differ
index 62b96d4803fd41c201971162f642d794d6a6dd9b..a70f7acddabcea5fa4cd4e2d371e4905b04997fd 100644 (file)
Binary files a/wolf3d/base/walls/000.5551 and b/wolf3d/base/walls/000.5551 differ
index 41e59723c176ed0eaa36618f8e02f56668d7aaf0..c6900108feb25203b16c03f0aa972ef420aa23fa 100644 (file)
Binary files a/wolf3d/base/walls/002.5551 and b/wolf3d/base/walls/002.5551 differ
index 6d9d7272ddcd38dcd72a8bc42d5169458fe936db..b157ac18e26b4a7d5078ae8ab1ad737c9666b123 100644 (file)
Binary files a/wolf3d/base/walls/004.5551 and b/wolf3d/base/walls/004.5551 differ
index 435b10149b9d263220efe55051a3a52b83c00e2c..fa10efdf4031abbf0396b1028971676d53c9ee48 100644 (file)
Binary files a/wolf3d/base/walls/006.5551 and b/wolf3d/base/walls/006.5551 differ
index 1442da0e1d922693219b0f0699685a6138ae6700..ea735c3977e1c7bf64b6fd46623ef7b6fdfd1a66 100644 (file)
Binary files a/wolf3d/base/walls/008.5551 and b/wolf3d/base/walls/008.5551 differ
index 50bffc029f2299e83320c34e6705e72b9dfa838b..ab69668ecea10c92b144ba2b52e7094804989ca2 100644 (file)
Binary files a/wolf3d/base/walls/010.5551 and b/wolf3d/base/walls/010.5551 differ
index 26544ed4e197303af8868fa20919cd7616242949..fa336c9abf469cb2e11d34236b018f576f25b426 100644 (file)
Binary files a/wolf3d/base/walls/012.5551 and b/wolf3d/base/walls/012.5551 differ
index 038af7d9e93a2f73584284fee120147401cb1b5e..9ceb06b6c13270d27d678c1f5dd4fcd45efbcd79 100644 (file)
Binary files a/wolf3d/base/walls/014.5551 and b/wolf3d/base/walls/014.5551 differ
index f56c40dafec207af03f9dcfe0ab3775c2d78a21a..cf3b3ed38eb631ba901918dec304947de12f18d4 100644 (file)
Binary files a/wolf3d/base/walls/016.5551 and b/wolf3d/base/walls/016.5551 differ
index 5bde9d8efc491b64ddebeb2782995896b9da8824..4db76c023f81f65f706fe459beec1833f8ed9b88 100644 (file)
Binary files a/wolf3d/base/walls/018.5551 and b/wolf3d/base/walls/018.5551 differ
index 170a3acf0d192285bc55b5e67452c3ac175a79f2..2758eb758d7102ce47f86991ed42036b6a6f329f 100644 (file)
Binary files a/wolf3d/base/walls/020.5551 and b/wolf3d/base/walls/020.5551 differ
index 4c79225cbcf3ea38e496e1eb8d43a44784998076..dac05735af3a48ec3880cfdebb00575c365d84e7 100644 (file)
Binary files a/wolf3d/base/walls/022.5551 and b/wolf3d/base/walls/022.5551 differ
index ce3bc781b894a96aece4c86713ae7481bdcc40fe..dda2adaa4d1fe108ce10fd7c892ed7b9f5359eeb 100644 (file)
Binary files a/wolf3d/base/walls/024.5551 and b/wolf3d/base/walls/024.5551 differ
index bd2e4d2ac024e3c5c21d7a468c0a91705592792a..ae5310ea3a321742c95b0b73c9be29f3ae4775bb 100644 (file)
Binary files a/wolf3d/base/walls/026.5551 and b/wolf3d/base/walls/026.5551 differ
index 8964b6588ffd76902fa86a84f7d4b9d1577b2248..efa796c408af10fbd4ee45a7df9e9450332e1d2a 100644 (file)
Binary files a/wolf3d/base/walls/028.5551 and b/wolf3d/base/walls/028.5551 differ
index da313f3528655808a4a2a313c8a9fb9fe129b71a..d6f4885969865931db0598c7d72c311e5e7b9167 100644 (file)
Binary files a/wolf3d/base/walls/030.5551 and b/wolf3d/base/walls/030.5551 differ
index 81935646c743af63bc41feeac15b3622ac5343e8..412ceb453200f346d776e40cfb6039c75cc197b7 100644 (file)
Binary files a/wolf3d/base/walls/031.5551 and b/wolf3d/base/walls/031.5551 differ
index 442473356145d02321137fda7440cda966f36e5b..d9faaf369535acfdfdd9956a01f5d60a3595cc8b 100644 (file)
Binary files a/wolf3d/base/walls/032.5551 and b/wolf3d/base/walls/032.5551 differ
index 4f1f51e594e7160fb811f2fb55065fff7ef1a461..b5eb813683e3262a33ac56276ec3c9d222bdbb31 100644 (file)
Binary files a/wolf3d/base/walls/034.5551 and b/wolf3d/base/walls/034.5551 differ
index 6d9aed480bd24cdf74cbc57ef4c807ff01dc7d8b..a095fc5bb36d18d8f2ed1208eb4ee13dc1b2e801 100644 (file)
Binary files a/wolf3d/base/walls/036.5551 and b/wolf3d/base/walls/036.5551 differ
index b88bae45318314b882db1ddc9470d3a1795c0a38..14d2ec2178455a57779696d16d31a01badcd2192 100644 (file)
Binary files a/wolf3d/base/walls/038.5551 and b/wolf3d/base/walls/038.5551 differ
index aa9be49e1327b016227c1086fbb5d639ef43995c..3082d35969acf672ec0a7848e79dae0205ae0823 100644 (file)
Binary files a/wolf3d/base/walls/040.5551 and b/wolf3d/base/walls/040.5551 differ
index 57fc25da6ffc29c146de1d56f20ef65849d51ebf..f731ba1b40871cb8f4322f592a6dccf5ecd8560f 100644 (file)
Binary files a/wolf3d/base/walls/041.5551 and b/wolf3d/base/walls/041.5551 differ
index cca4154624142d4a5bbb4307375ba838be482f9b..bc9bd395040d943a587c3c65601bb31cf651058b 100644 (file)
Binary files a/wolf3d/base/walls/042.5551 and b/wolf3d/base/walls/042.5551 differ
index e89953e3ec743fceb53b99a79b04dd63b87e9db0..37fc0cbfda3e9f9d7faf3c41e76af363bf960618 100644 (file)
Binary files a/wolf3d/base/walls/043.5551 and b/wolf3d/base/walls/043.5551 differ
index 60cf93710880db4153671c177ebe39bf3b8c49b7..d537a13ddcc01b09b8d36274b0787773ea6bc0c8 100644 (file)
Binary files a/wolf3d/base/walls/044.5551 and b/wolf3d/base/walls/044.5551 differ
index 540301b6c3cb4906f01d1ec8d2980b55e3a7ae3d..f3ff60aa6dc85791d0fa1121034d16a474076f7e 100644 (file)
Binary files a/wolf3d/base/walls/046.5551 and b/wolf3d/base/walls/046.5551 differ
index 03103c9f0bacc7d35490ec30be14c4397025e95d..1cd9a2ebb8cce8f5cf2c0cc9bd80f539f255d00a 100644 (file)
Binary files a/wolf3d/base/walls/048.5551 and b/wolf3d/base/walls/048.5551 differ
index 4f2fb05b2c29470c8879256fd206482e53d12dd0..4e98e25c1111f4014914fe711c4b5dcbfc017da8 100644 (file)
Binary files a/wolf3d/base/walls/050.5551 and b/wolf3d/base/walls/050.5551 differ
index fde40e75685ac2d39e50bf15652940218c8bf060..68aa6de9da1401387b38d10c06036189323fbdf3 100644 (file)
Binary files a/wolf3d/base/walls/052.5551 and b/wolf3d/base/walls/052.5551 differ
index cb82f09e15b2133f0677b9d5e8882e66a5270b34..e24a10e98293c506785550ff50d47901d888ce73 100644 (file)
Binary files a/wolf3d/base/walls/054.5551 and b/wolf3d/base/walls/054.5551 differ
index 972917bdb1e7f5dade88e64b68c77f253d0f23f4..fc84ff9f5d9bc16f98a9e1ac54d15680dda55c88 100644 (file)
Binary files a/wolf3d/base/walls/056.5551 and b/wolf3d/base/walls/056.5551 differ
index 4ba7c7c6765fdf082073a123cc8c1c1cb719e205..a5a4c2696379f7e3f8df6bbdbf03a760c5bcc6af 100644 (file)
Binary files a/wolf3d/base/walls/058.5551 and b/wolf3d/base/walls/058.5551 differ
index a00b617c2c4521dc8fd2c593eb00b233a2116b17..abfd2fef2b94aad0ac74e61871f6a917c07c3d0f 100644 (file)
Binary files a/wolf3d/base/walls/060.5551 and b/wolf3d/base/walls/060.5551 differ
index 96567b2339a6e508f70e405a0082307ddada8359..1be16f0e8af0162e32cd6fe707836a94193b385b 100644 (file)
Binary files a/wolf3d/base/walls/062.5551 and b/wolf3d/base/walls/062.5551 differ
index 4e26f6beb645df6f0d3d63559be393ac0cc65b19..d365459df942983a2267acb5a388a55b30c6c151 100644 (file)
Binary files a/wolf3d/base/walls/064.5551 and b/wolf3d/base/walls/064.5551 differ
index be710d199b78e2373638e2c85263b75b9004ac42..0255f32235db840b2ef77d9e38afccc247f3f47b 100644 (file)
Binary files a/wolf3d/base/walls/066.5551 and b/wolf3d/base/walls/066.5551 differ
index 21dda5ada6ea9d26f3ccfb3dbe76de17054620ec..714fbad69521bc2dbbf563006c1d01b93ba87afc 100644 (file)
Binary files a/wolf3d/base/walls/068.5551 and b/wolf3d/base/walls/068.5551 differ
index 56a6759f70b48ce6201718a116ad9afe24ff4516..eee6a2cecb265ba65512e02addecd2a7e0cd6cee 100644 (file)
Binary files a/wolf3d/base/walls/070.5551 and b/wolf3d/base/walls/070.5551 differ
index 4c617381a384a9a10bdbdb0948a70e53abdc77f6..87c5a44aaf42625602a3cf8eab10996be20f9a56 100644 (file)
Binary files a/wolf3d/base/walls/072.5551 and b/wolf3d/base/walls/072.5551 differ
index 5998878cee4c3ba5d5233f5dcbcedf53043510b6..6b7b0469c5143275b8f61724bf2f1c4acff00c6e 100644 (file)
Binary files a/wolf3d/base/walls/074.5551 and b/wolf3d/base/walls/074.5551 differ
index a95f330a812a705ddd6b9d1adcba9b4f832b7dfe..c43179ba6d9a294572bce792284d644088cd37fa 100644 (file)
Binary files a/wolf3d/base/walls/076.5551 and b/wolf3d/base/walls/076.5551 differ
index 69a74984964d23908a3a7cf0a5f819b13d816cd1..3141c878c8fb2c7d28293f09581c8b6d6e9ec435 100644 (file)
Binary files a/wolf3d/base/walls/078.5551 and b/wolf3d/base/walls/078.5551 differ
index b1b244bb64e43ac3522f5d4d7b6517f6e141c9db..4a03f44db214a849de6ac3b3bb766477f3a533c5 100644 (file)
Binary files a/wolf3d/base/walls/080.5551 and b/wolf3d/base/walls/080.5551 differ
index 53ee8451578c1d09897d894c4be91ce5766c7e91..cd082ee8f80a3551bbf01af1b421615c0677b7a5 100644 (file)
Binary files a/wolf3d/base/walls/082.5551 and b/wolf3d/base/walls/082.5551 differ
index 1075f706264504bb159d726ea59d9323065d9971..ed410c7d1cefa33cd413f69f5f8ca25470471a51 100644 (file)
Binary files a/wolf3d/base/walls/084.5551 and b/wolf3d/base/walls/084.5551 differ
index 50e7dfabfac483001531b4f37704e77d688b91d1..4b362056bab7b922065f5eb929120848141d9193 100644 (file)
Binary files a/wolf3d/base/walls/086.5551 and b/wolf3d/base/walls/086.5551 differ
index e5c01bad265acaf4843e5e73ec1c1dfd96ad95b4..b91f15beb6fa605b83fe632f4aabe8672103574a 100644 (file)
Binary files a/wolf3d/base/walls/088.5551 and b/wolf3d/base/walls/088.5551 differ
index 17394b1642bc858f5f6e5a3da6e50714b9158a8f..e2486d6c0d484afb9e158b744715987e7d4f15d7 100644 (file)
Binary files a/wolf3d/base/walls/090.5551 and b/wolf3d/base/walls/090.5551 differ
index da9aa14e8553a0452f9d6d711e9f3103ab103f31..46f7e0201bd38fcb2d4f655cd6fde858167d0511 100644 (file)
Binary files a/wolf3d/base/walls/092.5551 and b/wolf3d/base/walls/092.5551 differ
index 83e067d9263c7c4f19328ba0923425bad2e5c951..b62b90ebf21b73fb0af78be18a55142b5f38a2f9 100644 (file)
Binary files a/wolf3d/base/walls/094.5551 and b/wolf3d/base/walls/094.5551 differ
index 073eb1febc9d33300a11d6529bc21c187284ff9d..c1bbd2bda5285494e979ecef67bde4bb40a40fdd 100644 (file)
Binary files a/wolf3d/base/walls/096.5551 and b/wolf3d/base/walls/096.5551 differ
index dcac03e47296b18e48a41d215861f9d01f2521e2..45ee06a38ec9e6786da06d310a768d38b75f5911 100644 (file)
Binary files a/wolf3d/base/walls/126.5551 and b/wolf3d/base/walls/126.5551 differ
index 97b56a552c076e21f490692a9c7a7f5a154bbbe6..b91a5586751ec98e9086d6046fbaa6d28ad2e029 100644 (file)
Binary files a/wolf3d/base/walls/128.5551 and b/wolf3d/base/walls/128.5551 differ
index a8ec8cf20b812699709dd54ac126c229ddd755bf..a90c20d712ff7c9df7f48504a6a7d5cc6fa49a48 100644 (file)
Binary files a/wolf3d/base/walls/130.5551 and b/wolf3d/base/walls/130.5551 differ
index 8259cad58dcf59ace24bade0d8bb6b5c7457f936..2208d6497a650052e639b48a961d0d18b2355315 100644 (file)
Binary files a/wolf3d/base/walls/132.5551 and b/wolf3d/base/walls/132.5551 differ
index ae74781ecb466d4621462d605ec53aab58e1c604..136aa12c57652e0f91caf2e8d98102281c4d9c5b 100644 (file)
Binary files a/wolf3d/base/walls/133.5551 and b/wolf3d/base/walls/133.5551 differ
diff --git a/wolf3d/code/.DS_Store b/wolf3d/code/.DS_Store
new file mode 100644 (file)
index 0000000..390aed0
Binary files /dev/null and b/wolf3d/code/.DS_Store differ
diff --git a/wolf3d/code/Tremor/CHANGELOG b/wolf3d/code/Tremor/CHANGELOG
new file mode 100644 (file)
index 0000000..53f2335
--- /dev/null
@@ -0,0 +1,19 @@
+*** 20020517: 1.0.2 ***
+
+  Playback bugfix to floor1; mode mistakenly used for sizing instead
+  of blockflag
+
+*** 20020515: 1.0.1 ***
+
+  Added complete API documentation to source tarball.  No code
+  changes.
+
+*** 20020412: 1.0.1 ***
+
+  Fixed a clipping bug that affected ARM processors; negative
+  overflows were being properly clipped, but then clobbered to
+  positive by the positive overflow chec (asm_arm.h:CLIP_TO_15)
+
+*** 20020403: 1.0.0 ***
+
+  Initial version
\ No newline at end of file
diff --git a/wolf3d/code/Tremor/COPYING b/wolf3d/code/Tremor/COPYING
new file mode 100644 (file)
index 0000000..6111c6c
--- /dev/null
@@ -0,0 +1,28 @@
+Copyright (c) 2002, Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- 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.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``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 FOUNDATION
+OR CONTRIBUTORS 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.
diff --git a/wolf3d/code/Tremor/Makefile.am b/wolf3d/code/Tremor/Makefile.am
new file mode 100644 (file)
index 0000000..d14081f
--- /dev/null
@@ -0,0 +1,38 @@
+AUTOMAKE_OPTIONS = foreign
+
+INCLUDES = -I./
+
+lib_LTLIBRARIES = libvorbisidec.la
+
+libvorbisidec_la_SOURCES = mdct.c block.c window.c \
+                        synthesis.c info.c \
+                        floor1.c floor0.c vorbisfile.c \
+                        res012.c mapping0.c registry.c codebook.c \
+                       sharedbook.c framing.c bitwise.c \
+                        codebook.h misc.h mdct_lookup.h\
+                        os.h mdct.h block.h ivorbisfile.h lsp_lookup.h\
+                        registry.h window.h window_lookup.h\
+                        codec_internal.h backends.h ogg.h \
+                       asm_arm.h ivorbiscodec.h
+libvorbisidec_la_LDFLAGS = -version-info @V_LIB_CURRENT@:@V_LIB_REVISION@:@V_LIB_AGE@
+
+EXTRA_PROGRAMS = ivorbisfile_example
+CLEANFILES = $(EXTRA_PROGRAMS) $(lib_LTLIBRARIES)
+
+ivorbisfile_example_SOURCES = ivorbisfile_example.c
+ivorbisfile_example_LDFLAGS = -static 
+ivorbisfile_example_LDADD = libvorbisidec.la
+
+includedir = $(prefix)/include/tremor
+
+include_HEADERS = ivorbiscodec.h ivorbisfile.h ogg.h os_types.h config_types.h
+
+example:
+       -ln -fs . vorbis
+       $(MAKE) ivorbisfile_example
+
+debug:
+       $(MAKE) all CFLAGS="@DEBUG@" 
+
+profile:
+       $(MAKE) all CFLAGS="@PROFILE@"
diff --git a/wolf3d/code/Tremor/README b/wolf3d/code/Tremor/README
new file mode 100644 (file)
index 0000000..1321175
--- /dev/null
@@ -0,0 +1,46 @@
+This README covers the Ogg Vorbis 'Tremor' integer playback codec
+source as of date 2002 09 02, version 1.0.0.
+
+                            ******
+
+The C source in this package will build on any ANSI C compiler and
+function completely and properly on any platform.  The included build
+system assumes GNU build system and make tools (m4, automake,
+autoconf, libtool and gmake).  GCC is not required, although GCC is
+the most tested compiler.  To build using GNU tools, type in the
+source directory:
+
+./autogen.sh
+make
+
+Currently, the source implements playback in pure C on all platforms
+except ARM, where a [currently] small amount of assembly (see
+asm_arm.h) is used to implement 64 bit math operations and fast LSP
+computation.  If building on ARM without the benefit of GNU build
+system tools, be sure that '_ARM_ASSEM_' is #defined by the build
+system if this assembly is desired, else the resulting library will
+use whatever 64 bit math builtins the compiler implements.
+
+No math library is required by this source.  No floating point
+operations are used at any point in either setup or decode.  This
+decoder library will properly decode any past, current or future
+Vorbis I file or stream.
+
+                           ********
+
+The build system produces a static and [when supported by the OS]
+dynamic library named 'libvorbisidec'.  This library exposes an API
+nearly identical to the BSD reference library's 'libvorbisfile',
+including all the features familiar to users of vorbisfile.  This API
+is similar enough that the proper header file to include is named
+'ivorbisfile.h' [included in the source build directory].  Lower level
+libvorbis-style headers and structures are in 'ivorbiscodec.h'
+[included in the source build directory]. A simple example program,
+ivorbisfile_example.c, can be built with 'make example'.
+
+                           ********
+
+Detailed Tremor API Documentation begins at doc/index.html
+
+Monty
+xiph.org
diff --git a/wolf3d/code/Tremor/Version_script.in b/wolf3d/code/Tremor/Version_script.in
new file mode 100644 (file)
index 0000000..c0dfde9
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# Export file for libvorbisidec
+#
+# Only the symbols listed in the global section will be callable from
+# applications linking to libvorbisidec.
+#
+
+@PACKAGE@.so.1
+{
+       global:
+               ov_clear;
+               ov_open;
+               ov_open_callbacks;
+               ov_test;
+               ov_test_callbacks;
+               ov_test_open;
+               ov_bitrate;
+               ov_bitrate_instant;
+               ov_streams;
+               ov_seekable;
+               ov_serialnumber;
+               ov_raw_total;
+               ov_pcm_total;
+               ov_time_total;
+               ov_raw_seek;
+               ov_pcm_seek;
+               ov_pcm_seek_page;
+               ov_time_seek;
+               ov_time_seek_page;
+               ov_raw_tell;
+               ov_pcm_tell;
+               ov_time_tell;
+               ov_info;
+               ov_comment;
+               ov_read;
+
+               vorbis_info_init;
+               vorbis_info_clear;
+               vorbis_info_blocksize;
+               vorbis_comment_init;
+               vorbis_comment_add;
+               vorbis_comment_add_tag;
+               vorbis_comment_query;
+               vorbis_comment_query_count;
+               vorbis_comment_clear;
+
+       local:
+               *;
+};
diff --git a/wolf3d/code/Tremor/asm_arm.h b/wolf3d/code/Tremor/asm_arm.h
new file mode 100644 (file)
index 0000000..3a3716d
--- /dev/null
@@ -0,0 +1,243 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: arm7 and later wide math functions
+
+ ********************************************************************/
+
+#ifdef _ARM_ASSEM_
+
+#if !defined(_V_WIDE_MATH) && !defined(_LOW_ACCURACY_)
+#define _V_WIDE_MATH
+
+static inline ogg_int32_t MULT32(ogg_int32_t x, ogg_int32_t y) {
+  int lo,hi;
+  asm volatile("smull\t%0, %1, %2, %3"
+               : "=&r"(lo),"=&r"(hi)
+               : "%r"(x),"r"(y)
+              : "cc");
+  return(hi);
+}
+
+static inline ogg_int32_t MULT31(ogg_int32_t x, ogg_int32_t y) {
+  return MULT32(x,y)<<1;
+}
+
+static inline ogg_int32_t MULT31_SHIFT15(ogg_int32_t x, ogg_int32_t y) {
+  int lo,hi;
+  asm volatile("smull  %0, %1, %2, %3\n\t"
+              "movs    %0, %0, lsr #15\n\t"
+              "adc     %1, %0, %1, lsl #17\n\t"
+               : "=&r"(lo),"=&r"(hi)
+               : "%r"(x),"r"(y)
+              : "cc");
+  return(hi);
+}
+
+#define MB() asm volatile ("" : : : "memory")
+
+static inline void XPROD32(ogg_int32_t  a, ogg_int32_t  b,
+                          ogg_int32_t  t, ogg_int32_t  v,
+                          ogg_int32_t *x, ogg_int32_t *y)
+{
+  int x1, y1, l;
+  asm( "smull  %0, %1, %4, %6\n\t"
+       "smlal  %0, %1, %5, %7\n\t"
+       "rsb    %3, %4, #0\n\t"
+       "smull  %0, %2, %5, %6\n\t"
+       "smlal  %0, %2, %3, %7"
+       : "=&r" (l), "=&r" (x1), "=&r" (y1), "=r" (a)
+       : "3" (a), "r" (b), "r" (t), "r" (v)
+       : "cc" );
+  *x = x1;
+  MB();
+  *y = y1;
+}
+
+static inline void XPROD31(ogg_int32_t  a, ogg_int32_t  b,
+                          ogg_int32_t  t, ogg_int32_t  v,
+                          ogg_int32_t *x, ogg_int32_t *y)
+{
+  int x1, y1, l;
+  asm( "smull  %0, %1, %4, %6\n\t"
+       "smlal  %0, %1, %5, %7\n\t"
+       "rsb    %3, %4, #0\n\t"
+       "smull  %0, %2, %5, %6\n\t"
+       "smlal  %0, %2, %3, %7"
+       : "=&r" (l), "=&r" (x1), "=&r" (y1), "=r" (a)
+       : "3" (a), "r" (b), "r" (t), "r" (v)
+       : "cc" );
+  *x = x1 << 1;
+  MB();
+  *y = y1 << 1;
+}
+
+static inline void XNPROD31(ogg_int32_t  a, ogg_int32_t  b,
+                           ogg_int32_t  t, ogg_int32_t  v,
+                           ogg_int32_t *x, ogg_int32_t *y)
+{
+  int x1, y1, l;
+  asm( "rsb    %2, %4, #0\n\t"
+       "smull  %0, %1, %3, %5\n\t"
+       "smlal  %0, %1, %2, %6\n\t"
+       "smull  %0, %2, %4, %5\n\t"
+       "smlal  %0, %2, %3, %6"
+       : "=&r" (l), "=&r" (x1), "=&r" (y1)
+       : "r" (a), "r" (b), "r" (t), "r" (v)
+       : "cc" );
+  *x = x1 << 1;
+  MB();
+  *y = y1 << 1;
+}
+
+#endif
+
+#ifndef _V_CLIP_MATH
+#define _V_CLIP_MATH
+
+static inline ogg_int32_t CLIP_TO_15(ogg_int32_t x) {
+  int tmp;
+  asm volatile("subs   %1, %0, #32768\n\t"
+              "movpl   %0, #0x7f00\n\t"
+              "orrpl   %0, %0, #0xff\n"
+              "adds    %1, %0, #32768\n\t"
+              "movmi   %0, #0x8000"
+              : "+r"(x),"=r"(tmp)
+              :
+              : "cc");
+  return(x);
+}
+
+#endif
+
+#ifndef _V_LSP_MATH_ASM
+#define _V_LSP_MATH_ASM
+
+static inline void lsp_loop_asm(ogg_uint32_t *qip,ogg_uint32_t *pip,
+                               ogg_int32_t *qexpp,
+                               ogg_int32_t *ilsp,ogg_int32_t wi,
+                               ogg_int32_t m){
+  
+  ogg_uint32_t qi=*qip,pi=*pip;
+  ogg_int32_t qexp=*qexpp;
+
+  asm("mov     r0,%3;"
+      "mov     r1,%5,asr#1;"
+      "add     r0,r0,r1,lsl#3;"
+      "1:"
+      
+      "ldmdb   r0!,{r1,r3};"
+      "subs    r1,r1,%4;"          //ilsp[j]-wi
+      "rsbmi   r1,r1,#0;"          //labs(ilsp[j]-wi)
+      "umull   %0,r2,r1,%0;"       //qi*=labs(ilsp[j]-wi)
+      
+      "subs    r1,r3,%4;"          //ilsp[j+1]-wi
+      "rsbmi   r1,r1,#0;"          //labs(ilsp[j+1]-wi)
+      "umull   %1,r3,r1,%1;"       //pi*=labs(ilsp[j+1]-wi)
+      
+      "cmn     r2,r3;"             // shift down 16?
+      "beq     0f;"
+      "add     %2,%2,#16;"
+      "mov     %0,%0,lsr #16;"
+      "orr     %0,%0,r2,lsl #16;"
+      "mov     %1,%1,lsr #16;"
+      "orr     %1,%1,r3,lsl #16;"
+      "0:"
+      "cmp     r0,%3;\n"
+      "bhi     1b;\n"
+      
+      // odd filter assymetry
+      "ands    r0,%5,#1;\n"
+      "beq     2f;\n"
+      "add     r0,%3,%5,lsl#2;\n"
+      
+      "ldr     r1,[r0,#-4];\n"
+      "mov     r0,#0x4000;\n"
+      
+      "subs    r1,r1,%4;\n"          //ilsp[j]-wi
+      "rsbmi   r1,r1,#0;\n"          //labs(ilsp[j]-wi)
+      "umull   %0,r2,r1,%0;\n"       //qi*=labs(ilsp[j]-wi)
+      "umull   %1,r3,r0,%1;\n"       //pi*=labs(ilsp[j+1]-wi)
+      
+      "cmn     r2,r3;\n"             // shift down 16?
+      "beq     2f;\n"
+      "add     %2,%2,#16;\n"
+      "mov     %0,%0,lsr #16;\n"
+      "orr     %0,%0,r2,lsl #16;\n"
+      "mov     %1,%1,lsr #16;\n"
+      "orr     %1,%1,r3,lsl #16;\n"
+      
+      //qi=(pi>>shift)*labs(ilsp[j]-wi);
+      //pi=(qi>>shift)*labs(ilsp[j+1]-wi);
+      //qexp+=shift;
+      
+      //}
+        
+      /* normalize to max 16 sig figs */
+      "2:"
+      "mov     r2,#0;"
+      "orr     r1,%0,%1;"
+      "tst     r1,#0xff000000;"
+      "addne   r2,r2,#8;"
+      "movne   r1,r1,lsr #8;"
+      "tst     r1,#0x00f00000;"
+      "addne   r2,r2,#4;"
+      "movne   r1,r1,lsr #4;"
+      "tst     r1,#0x000c0000;"
+      "addne   r2,r2,#2;"
+      "movne   r1,r1,lsr #2;"
+      "tst     r1,#0x00020000;"
+      "addne   r2,r2,#1;"
+      "movne   r1,r1,lsr #1;"
+      "tst     r1,#0x00010000;"
+      "addne   r2,r2,#1;"
+      "mov     %0,%0,lsr r2;"
+      "mov     %1,%1,lsr r2;"
+      "add     %2,%2,r2;"
+      
+      : "+r"(qi),"+r"(pi),"+r"(qexp)
+      : "r"(ilsp),"r"(wi),"r"(m)
+      : "r0","r1","r2","r3","cc");
+  
+  *qip=qi;
+  *pip=pi;
+  *qexpp=qexp;
+}
+
+static inline void lsp_norm_asm(ogg_uint32_t *qip,ogg_int32_t *qexpp){
+
+  ogg_uint32_t qi=*qip;
+  ogg_int32_t qexp=*qexpp;
+
+  asm("tst     %0,#0x0000ff00;"
+      "moveq   %0,%0,lsl #8;"
+      "subeq   %1,%1,#8;"
+      "tst     %0,#0x0000f000;"
+      "moveq   %0,%0,lsl #4;"
+      "subeq   %1,%1,#4;"
+      "tst     %0,#0x0000c000;"
+      "moveq   %0,%0,lsl #2;"
+      "subeq   %1,%1,#2;"
+      "tst     %0,#0x00008000;"
+      "moveq   %0,%0,lsl #1;"
+      "subeq   %1,%1,#1;"
+      : "+r"(qi),"+r"(qexp)
+      :
+      : "cc");
+  *qip=qi;
+  *qexpp=qexp;
+}
+
+#endif
+#endif
+
diff --git a/wolf3d/code/Tremor/autogen.sh b/wolf3d/code/Tremor/autogen.sh
new file mode 100644 (file)
index 0000000..73c8fca
--- /dev/null
@@ -0,0 +1,120 @@
+#!/bin/sh
+# Run this to set up the build system: configure, makefiles, etc.
+# (based on the version in enlightenment's cvs)
+
+package="vorbisdec"
+
+olddir=`pwd`
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+cd "$srcdir"
+DIE=0
+
+echo "checking for autoconf... "
+(autoconf --version) < /dev/null > /dev/null 2>&1 || {
+        echo
+        echo "You must have autoconf installed to compile $package."
+        echo "Download the appropriate package for your distribution,"
+        echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+        DIE=1
+}
+
+VERSIONGREP="sed -e s/.*[^0-9\.]\([0-9]\.[0-9]\).*/\1/"
+VERSIONMKINT="sed -e s/[^0-9]//"
+                                                                                
+# do we need automake?
+if test -r Makefile.am; then
+  AM_OPTIONS=`fgrep AUTOMAKE_OPTIONS Makefile.am`
+  AM_NEEDED=`echo $AM_OPTIONS | $VERSIONGREP`
+  if test x"$AM_NEEDED" = "x$AM_OPTIONS"; then
+    AM_NEEDED=""
+  fi
+  if test -z $AM_NEEDED; then
+    echo -n "checking for automake... "
+    AUTOMAKE=automake
+    ACLOCAL=aclocal
+    if ($AUTOMAKE --version < /dev/null > /dev/null 2>&1); then
+      echo "yes"
+    else
+      echo "no"
+      AUTOMAKE=
+    fi
+  else
+    echo -n "checking for automake $AM_NEEDED or later... "
+    for am in automake-$AM_NEEDED automake$AM_NEEDED automake; do
+      ($am --version < /dev/null > /dev/null 2>&1) || continue
+      ver=`$am --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT`
+      verneeded=`echo $AM_NEEDED | $VERSIONMKINT`
+      if test $ver -ge $verneeded; then
+        AUTOMAKE=$am
+        echo $AUTOMAKE
+        break
+      fi
+    done
+    test -z $AUTOMAKE &&  echo "no"
+    echo -n "checking for aclocal $AM_NEEDED or later... "
+    for ac in aclocal-$AM_NEEDED aclocal$AM_NEEDED aclocal; do
+      ($ac --version < /dev/null > /dev/null 2>&1) || continue
+      ver=`$ac --version < /dev/null | head -n 1 | $VERSIONGREP | $VERSIONMKINT`
+      verneeded=`echo $AM_NEEDED | $VERSIONMKINT`
+      if test $ver -ge $verneeded; then
+        ACLOCAL=$ac
+        echo $ACLOCAL
+        break
+      fi
+    done
+    test -z $ACLOCAL && echo "no"
+  fi
+  test -z $AUTOMAKE || test -z $ACLOCAL && {
+        echo
+        echo "You must have automake installed to compile $package."
+        echo "Download the appropriate package for your distribution,"
+        echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
+        exit 1
+  }
+fi
+
+echo -n "checking for libtool... "
+for LIBTOOLIZE in libtoolize glibtoolize nope; do
+  ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 && break
+done
+if test x$LIBTOOLIZE = xnope; then
+  echo "nope."
+  LIBTOOLIZE=libtoolize
+else
+  echo $LIBTOOLIZE
+fi
+($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 || {
+       echo
+       echo "You must have libtool installed to compile $package."
+       echo "Download the appropriate package for your system,"
+       echo "or get the source from one of the GNU ftp sites"
+       echo "listed in http://www.gnu.org/order/ftp.html"
+       DIE=1
+}
+
+if test "$DIE" -eq 1; then
+        exit 1
+fi
+
+if test -z "$*"; then
+        echo "I am going to run ./configure with no arguments - if you wish "
+        echo "to pass any to it, please specify them on the $0 command line."
+fi
+
+echo "Generating configuration files for $package, please wait...."
+
+echo "  $ACLOCAL $ACLOCAL_FLAGS"
+$ACLOCAL $ACLOCAL_FLAGS || exit 1
+echo "  $LIBTOOLIZE --automake"
+$LIBTOOLIZE --automake || exit 1
+echo "  autoheader"
+autoheader || exit 1
+echo "  $AUTOMAKE --add-missing $AUTOMAKE_FLAGS"
+$AUTOMAKE --add-missing $AUTOMAKE_FLAGS || exit 1
+echo "  autoconf"
+autoconf || exit 1
+
+cd $olddir
+$srcdir/configure --enable-maintainer-mode "$@" && echo
diff --git a/wolf3d/code/Tremor/backends.h b/wolf3d/code/Tremor/backends.h
new file mode 100644 (file)
index 0000000..50c1c45
--- /dev/null
@@ -0,0 +1,130 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: backend and mapping structures
+
+ ********************************************************************/
+
+/* this is exposed up here because we need it for static modes.
+   Lookups for each backend aren't exposed because there's no reason
+   to do so */
+
+#ifndef _vorbis_backend_h_
+#define _vorbis_backend_h_
+
+#include "codec_internal.h"
+
+/* this would all be simpler/shorter with templates, but.... */
+/* Transform backend generic *************************************/
+
+/* only mdct right now.  Flesh it out more if we ever transcend mdct
+   in the transform domain */
+
+/* Floor backend generic *****************************************/
+typedef struct{
+  vorbis_info_floor     *(*unpack)(vorbis_info *,oggpack_buffer *);
+  vorbis_look_floor     *(*look)  (vorbis_dsp_state *,vorbis_info_mode *,
+                                  vorbis_info_floor *);
+  void (*free_info) (vorbis_info_floor *);
+  void (*free_look) (vorbis_look_floor *);
+  void *(*inverse1)  (struct vorbis_block *,vorbis_look_floor *);
+  int   (*inverse2)  (struct vorbis_block *,vorbis_look_floor *,
+                    void *buffer,ogg_int32_t *);
+} vorbis_func_floor;
+
+typedef struct{
+  int   order;
+  long  rate;
+  long  barkmap;
+
+  int   ampbits;
+  int   ampdB;
+
+  int   numbooks; /* <= 16 */
+  int   books[16];
+
+} vorbis_info_floor0;
+
+#define VIF_POSIT 63
+#define VIF_CLASS 16
+#define VIF_PARTS 31
+typedef struct{
+  int   partitions;                /* 0 to 31 */
+  int   partitionclass[VIF_PARTS]; /* 0 to 15 */
+
+  int   class_dim[VIF_CLASS];        /* 1 to 8 */
+  int   class_subs[VIF_CLASS];       /* 0,1,2,3 (bits: 1<<n poss) */
+  int   class_book[VIF_CLASS];       /* subs ^ dim entries */
+  int   class_subbook[VIF_CLASS][8]; /* [VIF_CLASS][subs] */
+
+
+  int   mult;                      /* 1 2 3 or 4 */ 
+  int   postlist[VIF_POSIT+2];    /* first two implicit */ 
+
+} vorbis_info_floor1;
+
+/* Residue backend generic *****************************************/
+typedef struct{
+  vorbis_info_residue *(*unpack)(vorbis_info *,oggpack_buffer *);
+  vorbis_look_residue *(*look)  (vorbis_dsp_state *,vorbis_info_mode *,
+                                vorbis_info_residue *);
+  void (*free_info)    (vorbis_info_residue *);
+  void (*free_look)    (vorbis_look_residue *);
+  int  (*inverse)      (struct vorbis_block *,vorbis_look_residue *,
+                       ogg_int32_t **,int *,int);
+} vorbis_func_residue;
+
+typedef struct vorbis_info_residue0{
+/* block-partitioned VQ coded straight residue */
+  long  begin;
+  long  end;
+
+  /* first stage (lossless partitioning) */
+  int    grouping;         /* group n vectors per partition */
+  int    partitions;       /* possible codebooks for a partition */
+  int    groupbook;        /* huffbook for partitioning */
+  int    secondstages[64]; /* expanded out to pointers in lookup */
+  int    booklist[256];    /* list of second stage books */
+} vorbis_info_residue0;
+
+/* Mapping backend generic *****************************************/
+typedef struct{
+  vorbis_info_mapping *(*unpack)(vorbis_info *,oggpack_buffer *);
+  vorbis_look_mapping *(*look)  (vorbis_dsp_state *,vorbis_info_mode *,
+                                vorbis_info_mapping *);
+  void (*free_info)    (vorbis_info_mapping *);
+  void (*free_look)    (vorbis_look_mapping *);
+  int  (*inverse)      (struct vorbis_block *vb,vorbis_look_mapping *);
+} vorbis_func_mapping;
+
+typedef struct vorbis_info_mapping0{
+  int   submaps;  /* <= 16 */
+  int   chmuxlist[256];   /* up to 256 channels in a Vorbis stream */
+  
+  int   floorsubmap[16];   /* [mux] submap to floors */
+  int   residuesubmap[16]; /* [mux] submap to residue */
+
+  int   psy[2]; /* by blocktype; impulse/padding for short,
+                   transition/normal for long */
+
+  int   coupling_steps;
+  int   coupling_mag[256];
+  int   coupling_ang[256];
+} vorbis_info_mapping0;
+
+#endif
+
+
+
+
+
diff --git a/wolf3d/code/Tremor/bitwise.c b/wolf3d/code/Tremor/bitwise.c
new file mode 100644 (file)
index 0000000..5274a0c
--- /dev/null
@@ -0,0 +1,265 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+  function: packing variable sized words into an octet stream
+
+ ********************************************************************/
+
+/* We're 'LSb' endian; if we write a word but read individual bits,
+   then we'll read the lsb first */
+
+#include <string.h>
+#include <stdlib.h>
+#include "ogg.h"
+
+static unsigned long mask[]=
+{0x00000000,0x00000001,0x00000003,0x00000007,0x0000000f,
+ 0x0000001f,0x0000003f,0x0000007f,0x000000ff,0x000001ff,
+ 0x000003ff,0x000007ff,0x00000fff,0x00001fff,0x00003fff,
+ 0x00007fff,0x0000ffff,0x0001ffff,0x0003ffff,0x0007ffff,
+ 0x000fffff,0x001fffff,0x003fffff,0x007fffff,0x00ffffff,
+ 0x01ffffff,0x03ffffff,0x07ffffff,0x0fffffff,0x1fffffff,
+ 0x3fffffff,0x7fffffff,0xffffffff };
+
+/* mark read process as having run off the end */
+static void _adv_halt(oggpack_buffer *b){
+  b->headptr=b->head->buffer->data+b->head->begin+b->head->length;
+  b->headend=-1;
+  b->headbit=0;
+}
+
+/* spans forward, skipping as many bytes as headend is negative; if
+   headend is zero, simply finds next byte.  If we're up to the end
+   of the buffer, leaves headend at zero.  If we've read past the end,
+   halt the decode process. */
+static void _span(oggpack_buffer *b){
+  while(b->headend<1){
+    if(b->head->next){
+      b->count+=b->head->length;
+      b->head=b->head->next;
+      b->headptr=b->head->buffer->data+b->head->begin-b->headend; 
+      b->headend+=b->head->length;      
+    }else{
+      /* we've either met the end of decode, or gone past it. halt
+         only if we're past */
+      if(b->headend<0 || b->headbit)
+        /* read has fallen off the end */
+        _adv_halt(b);
+
+      break;
+    }
+  }
+}
+
+void oggpack_readinit(oggpack_buffer *b,ogg_reference *r){
+  memset(b,0,sizeof(*b));
+
+  b->tail=b->head=r;
+  b->count=0;
+  b->headptr=b->head->buffer->data+b->head->begin;
+  b->headend=b->head->length;
+  _span(b);
+}
+
+#define _lookspan()   while(!end){\
+                        head=head->next;\
+                        if(!head) return -1;\
+                        ptr=head->buffer->data + head->begin;\
+                        end=head->length;\
+                      }
+
+/* Read in bits without advancing the bitptr; bits <= 32 */
+long oggpack_look(oggpack_buffer *b,int bits){
+  unsigned long m=mask[bits];
+  unsigned long ret=-1;
+
+  bits+=b->headbit;
+
+  if(bits >= b->headend<<3){
+    int            end=b->headend;
+    unsigned char *ptr=b->headptr;
+    ogg_reference *head=b->head;
+
+    if(end<0)return -1;
+    
+    if(bits){
+      _lookspan();
+      ret=*ptr++>>b->headbit;
+      if(bits>8){
+        --end;
+        _lookspan();
+        ret|=*ptr++<<(8-b->headbit);  
+        if(bits>16){
+          --end;
+          _lookspan();
+          ret|=*ptr++<<(16-b->headbit);  
+          if(bits>24){
+            --end;
+            _lookspan();
+            ret|=*ptr++<<(24-b->headbit);  
+            if(bits>32 && b->headbit){
+              --end;
+              _lookspan();
+              ret|=*ptr<<(32-b->headbit);
+            }
+          }
+        }
+      }
+    }
+
+  }else{
+
+    /* make this a switch jump-table */
+    ret=b->headptr[0]>>b->headbit;
+    if(bits>8){
+      ret|=b->headptr[1]<<(8-b->headbit);  
+      if(bits>16){
+        ret|=b->headptr[2]<<(16-b->headbit);  
+        if(bits>24){
+          ret|=b->headptr[3]<<(24-b->headbit);  
+          if(bits>32 && b->headbit)
+            ret|=b->headptr[4]<<(32-b->headbit);
+        }
+      }
+    }
+  }
+
+  ret&=m;
+  return ret;
+}
+
+/* limited to 32 at a time */
+void oggpack_adv(oggpack_buffer *b,int bits){
+  bits+=b->headbit;
+  b->headbit=bits&7;
+  b->headptr+=bits/8;
+  if((b->headend-=bits/8)<1)_span(b);
+}
+
+/* spans forward and finds next byte.  Never halts */
+static void _span_one(oggpack_buffer *b){
+  while(b->headend<1){
+    if(b->head->next){
+      b->count+=b->head->length;
+      b->head=b->head->next;
+      b->headptr=b->head->buffer->data+b->head->begin; 
+      b->headend=b->head->length;      
+    }else
+      break;
+  }
+}
+
+static int _halt_one(oggpack_buffer *b){
+  if(b->headend<1){
+    _adv_halt(b);
+    return -1;
+  }
+  return 0;
+}
+
+int oggpack_eop(oggpack_buffer *b){
+  if(b->headend<0)return -1;
+  return 0;
+}
+
+/* bits <= 32 */
+long oggpack_read(oggpack_buffer *b,int bits){
+  unsigned long m=mask[bits];
+  ogg_uint32_t ret=-1;
+
+  bits+=b->headbit;
+
+  if(bits >= b->headend<<3){
+
+    if(b->headend<0)return -1;
+    
+    if(bits){
+      if (_halt_one(b)) return -1;
+      ret=*b->headptr>>b->headbit;
+      
+      if(bits>=8){
+        ++b->headptr;
+        --b->headend;
+        _span_one(b);
+        if(bits>8){
+          if (_halt_one(b)) return -1;
+          ret|=*b->headptr<<(8-b->headbit);   
+          
+          if(bits>=16){
+            ++b->headptr;
+            --b->headend;
+            _span_one(b);
+            if(bits>16){
+              if (_halt_one(b)) return -1;
+              ret|=*b->headptr<<(16-b->headbit);  
+              
+              if(bits>=24){
+                ++b->headptr;
+                --b->headend;
+                _span_one(b);
+                if(bits>24){
+                  if (_halt_one(b)) return -1;
+                  ret|=*b->headptr<<(24-b->headbit);
+                  
+                  if(bits>=32){
+                    ++b->headptr;
+                    --b->headend;
+                    _span_one(b);
+                    if(bits>32){
+                      if (_halt_one(b)) return -1;
+                      if(b->headbit)ret|=*b->headptr<<(32-b->headbit);
+                      
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+  }else{
+  
+    ret=b->headptr[0]>>b->headbit;
+    if(bits>8){
+      ret|=b->headptr[1]<<(8-b->headbit);  
+      if(bits>16){
+        ret|=b->headptr[2]<<(16-b->headbit);  
+        if(bits>24){
+          ret|=b->headptr[3]<<(24-b->headbit);  
+          if(bits>32 && b->headbit){
+            ret|=b->headptr[4]<<(32-b->headbit);
+          }
+        }
+      }
+    }
+    
+    b->headptr+=bits/8;
+    b->headend-=bits/8;
+  }
+
+  ret&=m;
+  b->headbit=bits&7;   
+  return ret;
+}
+
+long oggpack_bytes(oggpack_buffer *b){
+  return(b->count+b->headptr-b->head->buffer->data-b->head->begin+
+         (b->headbit+7)/8);
+}
+
+long oggpack_bits(oggpack_buffer *b){
+  return((b->count+b->headptr-b->head->buffer->data-b->head->begin)*8+
+         b->headbit);
+}
+
diff --git a/wolf3d/code/Tremor/block.c b/wolf3d/code/Tremor/block.c
new file mode 100644 (file)
index 0000000..8949253
--- /dev/null
@@ -0,0 +1,453 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: PCM data vector blocking, windowing and dis/reassembly
+
+ ********************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "ogg.h"
+#include "ivorbiscodec.h"
+#include "codec_internal.h"
+
+#include "window.h"
+#include "registry.h"
+#include "misc.h"
+
+static int ilog(unsigned int v){
+  int ret=0;
+  if(v)--v;
+  while(v){
+    ret++;
+    v>>=1;
+  }
+  return(ret);
+}
+
+/* pcm accumulator examples (not exhaustive):
+
+ <-------------- lW ---------------->
+                   <--------------- W ---------------->
+:            .....|.....       _______________         |
+:        .'''     |     '''_---      |       |\        |
+:.....'''         |_____--- '''......|       | \_______|
+:.................|__________________|_______|__|______|
+                  |<------ Sl ------>|      > Sr <     |endW
+                  |beginSl           |endSl  |  |endSr   
+                  |beginW            |endlW  |beginSr
+
+
+                      |< lW >|       
+                   <--------------- W ---------------->
+                  |   |  ..  ______________            |
+                  |   | '  `/        |     ---_        |
+                  |___.'___/`.       |         ---_____| 
+                  |_______|__|_______|_________________|
+                  |      >|Sl|<      |<------ Sr ----->|endW
+                  |       |  |endSl  |beginSr          |endSr
+                  |beginW |  |endlW                     
+                  mult[0] |beginSl                     mult[n]
+
+ <-------------- lW ----------------->
+                          |<--W-->|                               
+:            ..............  ___  |   |                    
+:        .'''             |`/   \ |   |                       
+:.....'''                 |/`....\|...|                    
+:.........................|___|___|___|                  
+                          |Sl |Sr |endW    
+                          |   |   |endSr
+                          |   |beginSr
+                          |   |endSl
+                         |beginSl
+                         |beginW
+*/
+
+/* block abstraction setup *********************************************/
+
+#ifndef WORD_ALIGN
+#define WORD_ALIGN 8
+#endif
+
+int vorbis_block_init(vorbis_dsp_state *v, vorbis_block *vb){
+  memset(vb,0,sizeof(*vb));
+  vb->vd=v;
+  vb->localalloc=0;
+  vb->localstore=NULL;
+  
+  return(0);
+}
+
+void *_vorbis_block_alloc(vorbis_block *vb,long bytes){
+  bytes=(bytes+(WORD_ALIGN-1)) & ~(WORD_ALIGN-1);
+  if(bytes+vb->localtop>vb->localalloc){
+    /* can't just _ogg_realloc... there are outstanding pointers */
+    if(vb->localstore){
+      struct alloc_chain *link=(struct alloc_chain *)_ogg_malloc(sizeof(*link));
+      vb->totaluse+=vb->localtop;
+      link->next=vb->reap;
+      link->ptr=vb->localstore;
+      vb->reap=link;
+    }
+    /* highly conservative */
+    vb->localalloc=bytes;
+    vb->localstore=_ogg_malloc(vb->localalloc);
+    vb->localtop=0;
+  }
+  {
+    void *ret=(void *)(((char *)vb->localstore)+vb->localtop);
+    vb->localtop+=bytes;
+    return ret;
+  }
+}
+
+/* reap the chain, pull the ripcord */
+void _vorbis_block_ripcord(vorbis_block *vb){
+  /* reap the chain */
+  struct alloc_chain *reap=vb->reap;
+  while(reap){
+    struct alloc_chain *next=reap->next;
+    _ogg_free(reap->ptr);
+    memset(reap,0,sizeof(*reap));
+    _ogg_free(reap);
+    reap=next;
+  }
+  /* consolidate storage */
+  if(vb->totaluse){
+    vb->localstore=_ogg_realloc(vb->localstore,vb->totaluse+vb->localalloc);
+    vb->localalloc+=vb->totaluse;
+    vb->totaluse=0;
+  }
+
+  /* pull the ripcord */
+  vb->localtop=0;
+  vb->reap=NULL;
+}
+
+int vorbis_block_clear(vorbis_block *vb){
+  _vorbis_block_ripcord(vb);
+  if(vb->localstore)_ogg_free(vb->localstore);
+
+  memset(vb,0,sizeof(*vb));
+  return(0);
+}
+
+static int _vds_init(vorbis_dsp_state *v,vorbis_info *vi){
+  int i;
+  codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
+  private_state *b=NULL;
+
+  memset(v,0,sizeof(*v));
+  b=(private_state *)(v->backend_state=_ogg_calloc(1,sizeof(*b)));
+
+  v->vi=vi;
+  b->modebits=ilog(ci->modes);
+
+  /* Vorbis I uses only window type 0 */
+  b->window[0]=_vorbis_window(0,ci->blocksizes[0]/2);
+  b->window[1]=_vorbis_window(0,ci->blocksizes[1]/2);
+
+  /* finish the codebooks */
+  if(!ci->fullbooks){
+    ci->fullbooks=(codebook *)_ogg_calloc(ci->books,sizeof(*ci->fullbooks));
+    for(i=0;i<ci->books;i++){
+      vorbis_book_init_decode(ci->fullbooks+i,ci->book_param[i]);
+      /* decode codebooks are now standalone after init */
+      vorbis_staticbook_destroy(ci->book_param[i]);
+      ci->book_param[i]=NULL;
+    }
+  }
+
+  v->pcm_storage=ci->blocksizes[1];
+  v->pcm=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcm));
+  v->pcmret=(ogg_int32_t **)_ogg_malloc(vi->channels*sizeof(*v->pcmret));
+  for(i=0;i<vi->channels;i++)
+    v->pcm[i]=(ogg_int32_t *)_ogg_calloc(v->pcm_storage,sizeof(*v->pcm[i]));
+
+  /* all 1 (large block) or 0 (small block) */
+  /* explicitly set for the sake of clarity */
+  v->lW=0; /* previous window size */
+  v->W=0;  /* current window size */
+
+  /* initialize all the mapping/backend lookups */
+  b->mode=(vorbis_look_mapping **)_ogg_calloc(ci->modes,sizeof(*b->mode));
+  for(i=0;i<ci->modes;i++){
+    int mapnum=ci->mode_param[i]->mapping;
+    int maptype=ci->map_type[mapnum];
+    b->mode[i]=_mapping_P[maptype]->look(v,ci->mode_param[i],
+                                        ci->map_param[mapnum]);
+  }
+  return(0);
+}
+
+int vorbis_synthesis_restart(vorbis_dsp_state *v){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci;
+
+  if(!v->backend_state)return -1;
+  if(!vi)return -1;
+  ci=vi->codec_setup;
+  if(!ci)return -1;
+
+  v->centerW=ci->blocksizes[1]/2;
+  v->pcm_current=v->centerW;
+  
+  v->pcm_returned=-1;
+  v->granulepos=-1;
+  v->sequence=-1;
+  ((private_state *)(v->backend_state))->sample_count=-1;
+
+  return(0);
+}
+
+int vorbis_synthesis_init(vorbis_dsp_state *v,vorbis_info *vi){
+  _vds_init(v,vi);
+  vorbis_synthesis_restart(v);
+
+  return(0);
+}
+
+void vorbis_dsp_clear(vorbis_dsp_state *v){
+  int i;
+  if(v){
+    vorbis_info *vi=v->vi;
+    codec_setup_info *ci=(codec_setup_info *)(vi?vi->codec_setup:NULL);
+    private_state *b=(private_state *)v->backend_state;
+
+    if(v->pcm){
+      for(i=0;i<vi->channels;i++)
+       if(v->pcm[i])_ogg_free(v->pcm[i]);
+      _ogg_free(v->pcm);
+      if(v->pcmret)_ogg_free(v->pcmret);
+    }
+
+    /* free mode lookups; these are actually vorbis_look_mapping structs */
+    if(ci){
+      for(i=0;i<ci->modes;i++){
+       int mapnum=ci->mode_param[i]->mapping;
+       int maptype=ci->map_type[mapnum];
+       if(b && b->mode)_mapping_P[maptype]->free_look(b->mode[i]);
+      }
+    }
+
+    if(b){
+      if(b->mode)_ogg_free(b->mode);    
+      _ogg_free(b);
+    }
+    
+    memset(v,0,sizeof(*v));
+  }
+}
+
+/* Unlike in analysis, the window is only partially applied for each
+   block.  The time domain envelope is not yet handled at the point of
+   calling (as it relies on the previous block). */
+
+int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){
+  vorbis_info *vi=v->vi;
+  codec_setup_info *ci=(codec_setup_info *)vi->codec_setup;
+  private_state *b=v->backend_state;
+  int i,j;
+
+  if(v->pcm_current>v->pcm_returned  && v->pcm_returned!=-1)return(OV_EINVAL);
+
+  v->lW=v->W;
+  v->W=vb->W;
+  v->nW=-1;
+
+  if((v->sequence==-1)||
+     (v->sequence+1 != vb->sequence)){
+    v->granulepos=-1; /* out of sequence; lose count */
+    b->sample_count=-1;
+  }
+
+  v->sequence=vb->sequence;
+  
+  if(vb->pcm){  /* no pcm to process if vorbis_synthesis_trackonly 
+                   was called on block */
+    int n=ci->blocksizes[v->W]/2;
+    int n0=ci->blocksizes[0]/2;
+    int n1=ci->blocksizes[1]/2;
+    
+    int thisCenter;
+    int prevCenter;
+    
+    if(v->centerW){
+      thisCenter=n1;
+      prevCenter=0;
+    }else{
+      thisCenter=0;
+      prevCenter=n1;
+    }
+    
+    /* v->pcm is now used like a two-stage double buffer.  We don't want
+       to have to constantly shift *or* adjust memory usage.  Don't
+       accept a new block until the old is shifted out */
+    
+    /* overlap/add PCM */
+    
+    for(j=0;j<vi->channels;j++){
+      /* the overlap/add section */
+      if(v->lW){
+       if(v->W){
+         /* large/large */
+         ogg_int32_t *pcm=v->pcm[j]+prevCenter;
+         ogg_int32_t *p=vb->pcm[j];
+         for(i=0;i<n1;i++)
+           pcm[i]+=p[i];
+       }else{
+         /* large/small */
+         ogg_int32_t *pcm=v->pcm[j]+prevCenter+n1/2-n0/2;
+         ogg_int32_t *p=vb->pcm[j];
+         for(i=0;i<n0;i++)
+           pcm[i]+=p[i];
+       }
+      }else{
+       if(v->W){
+         /* small/large */
+         ogg_int32_t *pcm=v->pcm[j]+prevCenter;
+         ogg_int32_t *p=vb->pcm[j]+n1/2-n0/2;
+         for(i=0;i<n0;i++)
+           pcm[i]+=p[i];
+         for(;i<n1/2+n0/2;i++)
+           pcm[i]=p[i];
+       }else{
+         /* small/small */
+         ogg_int32_t *pcm=v->pcm[j]+prevCenter;
+         ogg_int32_t *p=vb->pcm[j];
+         for(i=0;i<n0;i++)
+           pcm[i]+=p[i];
+       }
+      }
+      
+      /* the copy section */
+      {
+       ogg_int32_t *pcm=v->pcm[j]+thisCenter;
+       ogg_int32_t *p=vb->pcm[j]+n;
+       for(i=0;i<n;i++)
+         pcm[i]=p[i];
+      }
+    }
+    
+    if(v->centerW)
+      v->centerW=0;
+    else
+      v->centerW=n1;
+    
+    /* deal with initial packet state; we do this using the explicit
+       pcm_returned==-1 flag otherwise we're sensitive to first block
+       being short or long */
+
+    if(v->pcm_returned==-1){
+      v->pcm_returned=thisCenter;
+      v->pcm_current=thisCenter;
+    }else{
+      v->pcm_returned=prevCenter;
+      v->pcm_current=prevCenter+
+       ci->blocksizes[v->lW]/4+
+       ci->blocksizes[v->W]/4;
+    }
+
+  }
+    
+  /* track the frame number... This is for convenience, but also
+     making sure our last packet doesn't end with added padding.  If
+     the last packet is partial, the number of samples we'll have to
+     return will be past the vb->granulepos.
+     
+     This is not foolproof!  It will be confused if we begin
+     decoding at the last page after a seek or hole.  In that case,
+     we don't have a starting point to judge where the last frame
+     is.  For this reason, vorbisfile will always try to make sure
+     it reads the last two marked pages in proper sequence */
+  
+  if(b->sample_count==-1){
+    b->sample_count=0;
+  }else{
+    b->sample_count+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
+  }
+    
+  if(v->granulepos==-1){
+    if(vb->granulepos!=-1){ /* only set if we have a position to set to */
+      
+      v->granulepos=vb->granulepos;
+      
+      /* is this a short page? */
+      if(b->sample_count>v->granulepos){
+       /* corner case; if this is both the first and last audio page,
+          then spec says the end is cut, not beginning */
+       if(vb->eofflag){
+         /* trim the end */
+         /* no preceeding granulepos; assume we started at zero (we'd
+            have to in a short single-page stream) */
+         /* granulepos could be -1 due to a seek, but that would result
+            in a long coun`t, not short count */
+         
+         v->pcm_current-=(b->sample_count-v->granulepos);
+       }else{
+         /* trim the beginning */
+         v->pcm_returned+=(b->sample_count-v->granulepos);
+         if(v->pcm_returned>v->pcm_current)
+           v->pcm_returned=v->pcm_current;
+       }
+       
+      }
+      
+    }
+  }else{
+    v->granulepos+=ci->blocksizes[v->lW]/4+ci->blocksizes[v->W]/4;
+    if(vb->granulepos!=-1 && v->granulepos!=vb->granulepos){
+      
+      if(v->granulepos>vb->granulepos){
+       long extra=v->granulepos-vb->granulepos;
+       
+       if(extra)
+         if(vb->eofflag){
+           /* partial last frame.  Strip the extra samples off */
+           v->pcm_current-=extra;
+         } /* else {Shouldn't happen *unless* the bitstream is out of
+              spec.  Either way, believe the bitstream } */
+      } /* else {Shouldn't happen *unless* the bitstream is out of
+          spec.  Either way, believe the bitstream } */
+      v->granulepos=vb->granulepos;
+    }
+  }
+  
+  /* Update, cleanup */
+  
+  if(vb->eofflag)v->eofflag=1;
+  return(0);
+}
+
+/* pcm==NULL indicates we just want the pending samples, no more */
+int vorbis_synthesis_pcmout(vorbis_dsp_state *v,ogg_int32_t ***pcm){
+  vorbis_info *vi=v->vi;
+  if(v->pcm_returned>-1 && v->pcm_returned<v->pcm_current){
+    if(pcm){
+      int i;
+      for(i=0;i<vi->channels;i++)
+       v->pcmret[i]=v->pcm[i]+v->pcm_returned;
+      *pcm=v->pcmret;
+    }
+    return(v->pcm_current-v->pcm_returned);
+  }
+  return(0);
+}
+
+int vorbis_synthesis_read(vorbis_dsp_state *v,int bytes){
+  if(bytes && v->pcm_returned+bytes>v->pcm_current)return(OV_EINVAL);
+  v->pcm_returned+=bytes;
+  return(0);
+}
+
diff --git a/wolf3d/code/Tremor/block.h b/wolf3d/code/Tremor/block.h
new file mode 100644 (file)
index 0000000..5e19354
--- /dev/null
@@ -0,0 +1,24 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2008    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: shared block functions
+
+ ********************************************************************/
+
+#ifndef _V_BLOCK_
+#define _V_BLOCK_
+
+extern void _vorbis_block_ripcord(vorbis_block *vb);
+extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes);
+
+#endif
diff --git a/wolf3d/code/Tremor/codebook.c b/wolf3d/code/Tremor/codebook.c
new file mode 100644 (file)
index 0000000..d055870
--- /dev/null
@@ -0,0 +1,371 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: basic codebook pack/unpack/code/decode operations
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "ogg.h"
+#include "ivorbiscodec.h"
+#include "codebook.h"
+#include "misc.h"
+
+/* unpacks a codebook from the packet buffer into the codebook struct,
+   readies the codebook auxiliary structures for decode *************/
+int vorbis_staticbook_unpack(oggpack_buffer *opb,static_codebook *s){
+  long i,j;
+  memset(s,0,sizeof(*s));
+
+  /* make sure alignment is correct */
+  if(oggpack_read(opb,24)!=0x564342)goto _eofout;
+
+  /* first the basic parameters */
+  s->dim=oggpack_read(opb,16);
+  s->entries=oggpack_read(opb,24);
+  if(s->entries==-1)goto _eofout;
+
+  /* codeword ordering.... length ordered or unordered? */
+  switch((int)oggpack_read(opb,1)){
+  case 0:
+    /* unordered */
+    s->lengthlist=(long *)_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
+
+    /* allocated but unused entries? */
+    if(oggpack_read(opb,1)){
+      /* yes, unused entries */
+
+      for(i=0;i<s->entries;i++){
+       if(oggpack_read(opb,1)){
+         long num=oggpack_read(opb,5);
+         if(num==-1)goto _eofout;
+         s->lengthlist[i]=num+1;
+       }else
+         s->lengthlist[i]=0;
+      }
+    }else{
+      /* all entries used; no tagging */
+      for(i=0;i<s->entries;i++){
+       long num=oggpack_read(opb,5);
+       if(num==-1)goto _eofout;
+       s->lengthlist[i]=num+1;
+      }
+    }
+    
+    break;
+  case 1:
+    /* ordered */
+    {
+      long length=oggpack_read(opb,5)+1;
+      s->lengthlist=(long *)_ogg_malloc(sizeof(*s->lengthlist)*s->entries);
+
+      for(i=0;i<s->entries;){
+       long num=oggpack_read(opb,_ilog(s->entries-i));
+       if(num==-1)goto _eofout;
+       for(j=0;j<num && i<s->entries;j++,i++)
+         s->lengthlist[i]=length;
+       length++;
+      }
+    }
+    break;
+  default:
+    /* EOF */
+    return(-1);
+  }
+  
+  /* Do we have a mapping to unpack? */
+  switch((s->maptype=oggpack_read(opb,4))){
+  case 0:
+    /* no mapping */
+    break;
+  case 1: case 2:
+    /* implicitly populated value mapping */
+    /* explicitly populated value mapping */
+
+    s->q_min=oggpack_read(opb,32);
+    s->q_delta=oggpack_read(opb,32);
+    s->q_quant=oggpack_read(opb,4)+1;
+    s->q_sequencep=oggpack_read(opb,1);
+
+    {
+      int quantvals=0;
+      switch(s->maptype){
+      case 1:
+       quantvals=_book_maptype1_quantvals(s);
+       break;
+      case 2:
+       quantvals=s->entries*s->dim;
+       break;
+      }
+      
+      /* quantized values */
+      s->quantlist=(long *)_ogg_malloc(sizeof(*s->quantlist)*quantvals);
+      for(i=0;i<quantvals;i++)
+       s->quantlist[i]=oggpack_read(opb,s->q_quant);
+      
+      if(quantvals&&s->quantlist[quantvals-1]==-1)goto _eofout;
+    }
+    break;
+  default:
+    goto _errout;
+  }
+
+  /* all set */
+  return(0);
+  
+ _errout:
+ _eofout:
+  vorbis_staticbook_clear(s);
+  return(-1); 
+}
+
+/* the 'eliminate the decode tree' optimization actually requires the
+   codewords to be MSb first, not LSb.  This is an annoying inelegancy
+   (and one of the first places where carefully thought out design
+   turned out to be wrong; Vorbis II and future Ogg codecs should go
+   to an MSb bitpacker), but not actually the huge hit it appears to
+   be.  The first-stage decode table catches most words so that
+   bitreverse is not in the main execution path. */
+
+static ogg_uint32_t bitreverse(ogg_uint32_t x){
+  x=    ((x>>16)&0x0000ffff) | ((x<<16)&0xffff0000);
+  x=    ((x>> 8)&0x00ff00ff) | ((x<< 8)&0xff00ff00);
+  x=    ((x>> 4)&0x0f0f0f0f) | ((x<< 4)&0xf0f0f0f0);
+  x=    ((x>> 2)&0x33333333) | ((x<< 2)&0xcccccccc);
+  return((x>> 1)&0x55555555) | ((x<< 1)&0xaaaaaaaa);
+}
+
+STIN long decode_packed_entry_number(codebook *book, 
+                                             oggpack_buffer *b){
+  int  read=book->dec_maxlength;
+  long lo,hi;
+  long lok = oggpack_look(b,book->dec_firsttablen);
+  if (lok >= 0) {
+    long entry = book->dec_firsttable[lok];
+    if(entry&0x80000000UL){
+      lo=(entry>>15)&0x7fff;
+      hi=book->used_entries-(entry&0x7fff);
+    }else{
+      oggpack_adv(b, book->dec_codelengths[entry-1]);
+      return(entry-1);
+    }
+  }else{
+    lo=0;
+    hi=book->used_entries;
+  }
+
+  lok = oggpack_look(b, read);
+
+  while(lok<0 && read>1)
+    lok = oggpack_look(b, --read);
+
+  if(lok<0){
+    oggpack_adv(b,1); /* force eop */
+    return -1;
+  }
+
+  /* bisect search for the codeword in the ordered list */
+  {
+    ogg_uint32_t testword=bitreverse((ogg_uint32_t)lok);
+
+    while(hi-lo>1){
+      long p=(hi-lo)>>1;
+      long test=book->codelist[lo+p]>testword;    
+      lo+=p&(test-1);
+      hi-=p&(-test);
+    }
+
+    if(book->dec_codelengths[lo]<=read){
+      oggpack_adv(b, book->dec_codelengths[lo]);
+      return(lo);
+    }
+  }
+  
+  oggpack_adv(b, read+1);
+  return(-1);
+}
+
+/* Decode side is specced and easier, because we don't need to find
+   matches using different criteria; we simply read and map.  There are
+   two things we need to do 'depending':
+   
+   We may need to support interleave.  We don't really, but it's
+   convenient to do it here rather than rebuild the vector later.
+
+   Cascades may be additive or multiplicitive; this is not inherent in
+   the codebook, but set in the code using the codebook.  Like
+   interleaving, it's easiest to do it here.  
+   addmul==0 -> declarative (set the value)
+   addmul==1 -> additive
+   addmul==2 -> multiplicitive */
+
+/* returns the [original, not compacted] entry number or -1 on eof *********/
+long vorbis_book_decode(codebook *book, oggpack_buffer *b){
+  if(book->used_entries>0){
+    long packed_entry=decode_packed_entry_number(book,b);
+    if(packed_entry>=0)
+      return(book->dec_index[packed_entry]);
+  }
+
+  /* if there's no dec_index, the codebook unpacking isn't collapsed */
+  return(-1);
+}
+
+/* returns 0 on OK or -1 on eof *************************************/
+long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
+                             oggpack_buffer *b,int n,int point){
+  if(book->used_entries>0){  
+    int step=n/book->dim;
+    long *entry = (long *)alloca(sizeof(*entry)*step);
+    ogg_int32_t **t = (ogg_int32_t **)alloca(sizeof(*t)*step);
+    int i,j,o;
+    int shift=point-book->binarypoint;
+    
+    if(shift>=0){
+      for (i = 0; i < step; i++) {
+       entry[i]=decode_packed_entry_number(book,b);
+       if(entry[i]==-1)return(-1);
+       t[i] = book->valuelist+entry[i]*book->dim;
+      }
+      for(i=0,o=0;i<book->dim;i++,o+=step)
+       for (j=0;j<step;j++)
+         a[o+j]+=t[j][i]>>shift;
+    }else{
+      for (i = 0; i < step; i++) {
+       entry[i]=decode_packed_entry_number(book,b);
+       if(entry[i]==-1)return(-1);
+       t[i] = book->valuelist+entry[i]*book->dim;
+      }
+      for(i=0,o=0;i<book->dim;i++,o+=step)
+       for (j=0;j<step;j++)
+         a[o+j]+=t[j][i]<<-shift;
+    }
+  }
+  return(0);
+}
+
+long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
+                            oggpack_buffer *b,int n,int point){
+  if(book->used_entries>0){
+    int i,j,entry;
+    ogg_int32_t *t;
+    int shift=point-book->binarypoint;
+    
+    if(shift>=0){
+      for(i=0;i<n;){
+       entry = decode_packed_entry_number(book,b);
+       if(entry==-1)return(-1);
+       t     = book->valuelist+entry*book->dim;
+       for (j=0;j<book->dim;)
+         a[i++]+=t[j++]>>shift;
+      }
+    }else{
+      for(i=0;i<n;){
+       entry = decode_packed_entry_number(book,b);
+       if(entry==-1)return(-1);
+       t     = book->valuelist+entry*book->dim;
+       for (j=0;j<book->dim;)
+         a[i++]+=t[j++]<<-shift;
+      }
+    }
+  }
+  return(0);
+}
+
+long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a,
+                            oggpack_buffer *b,int n,int point){
+  if(book->used_entries>0){
+    int i,j,entry;
+    ogg_int32_t *t;
+    int shift=point-book->binarypoint;
+    
+    if(shift>=0){
+      
+      for(i=0;i<n;){
+       entry = decode_packed_entry_number(book,b);
+       if(entry==-1)return(-1);
+       t     = book->valuelist+entry*book->dim;
+       for (j=0;j<book->dim;){
+         a[i++]=t[j++]>>shift;
+       }
+      }
+    }else{
+      
+      for(i=0;i<n;){
+       entry = decode_packed_entry_number(book,b);
+       if(entry==-1)return(-1);
+       t     = book->valuelist+entry*book->dim;
+       for (j=0;j<book->dim;){
+         a[i++]=t[j++]<<-shift;
+       }
+      }
+    }
+  }else{
+
+    int i,j;
+    for(i=0;i<n;){
+      for (j=0;j<book->dim;){
+       a[i++]=0;
+      }
+    }
+  }
+  return(0);
+}
+
+long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,\
+                             long offset,int ch,
+                             oggpack_buffer *b,int n,int point){
+  if(book->used_entries>0){
+    long i,j,entry;
+    int chptr=0;
+    int shift=point-book->binarypoint;
+    
+    if(shift>=0){
+      
+      for(i=offset;i<offset+n;){
+       entry = decode_packed_entry_number(book,b);
+       if(entry==-1)return(-1);
+       {
+         const ogg_int32_t *t = book->valuelist+entry*book->dim;
+         for (j=0;j<book->dim;j++){
+           a[chptr++][i]+=t[j]>>shift;
+           if(chptr==ch){
+             chptr=0;
+             i++;
+           }
+         }
+       }
+      }
+    }else{
+      
+      for(i=offset;i<offset+n;){
+       entry = decode_packed_entry_number(book,b);
+       if(entry==-1)return(-1);
+       {
+         const ogg_int32_t *t = book->valuelist+entry*book->dim;
+         for (j=0;j<book->dim;j++){
+           a[chptr++][i]+=t[j]<<-shift;
+           if(chptr==ch){
+             chptr=0;
+             i++;
+           }
+         }
+       }
+      }
+    }
+  }
+  return(0);
+}
diff --git a/wolf3d/code/Tremor/codebook.h b/wolf3d/code/Tremor/codebook.h
new file mode 100644 (file)
index 0000000..14f6538
--- /dev/null
@@ -0,0 +1,102 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: basic shared codebook operations
+
+ ********************************************************************/
+
+#ifndef _V_CODEBOOK_H_
+#define _V_CODEBOOK_H_
+
+#include "ogg.h"
+
+/* This structure encapsulates huffman and VQ style encoding books; it
+   doesn't do anything specific to either.
+
+   valuelist/quantlist are nonNULL (and q_* significant) only if
+   there's entry->value mapping to be done.
+
+   If encode-side mapping must be done (and thus the entry needs to be
+   hunted), the auxiliary encode pointer will point to a decision
+   tree.  This is true of both VQ and huffman, but is mostly useful
+   with VQ.
+
+*/
+
+typedef struct static_codebook{
+  long   dim;            /* codebook dimensions (elements per vector) */
+  long   entries;        /* codebook entries */
+  long  *lengthlist;     /* codeword lengths in bits */
+
+  /* mapping ***************************************************************/
+  int    maptype;        /* 0=none
+                           1=implicitly populated values from map column 
+                           2=listed arbitrary values */
+
+  /* The below does a linear, single monotonic sequence mapping. */
+  long     q_min;       /* packed 32 bit float; quant value 0 maps to minval */
+  long     q_delta;     /* packed 32 bit float; val 1 - val 0 == delta */
+  int      q_quant;     /* bits: 0 < quant <= 16 */
+  int      q_sequencep; /* bitflag */
+
+  long     *quantlist;  /* map == 1: (int)(entries^(1/dim)) element column map
+                          map == 2: list of dim*entries quantized entry vals
+                       */
+} static_codebook;
+
+typedef struct codebook{
+  long dim;           /* codebook dimensions (elements per vector) */
+  long entries;       /* codebook entries */
+  long used_entries;  /* populated codebook entries */
+
+  /* the below are ordered by bitreversed codeword and only used
+     entries are populated */
+  int           binarypoint;
+  ogg_int32_t  *valuelist;  /* list of dim*entries actual entry values */  
+  ogg_uint32_t *codelist;   /* list of bitstream codewords for each entry */
+
+  int          *dec_index;  
+  char         *dec_codelengths;
+  ogg_uint32_t *dec_firsttable;
+  int           dec_firsttablen;
+  int           dec_maxlength;
+
+  long     q_min;       /* packed 32 bit float; quant value 0 maps to minval */
+  long     q_delta;     /* packed 32 bit float; val 1 - val 0 == delta */
+
+} codebook;
+
+extern void vorbis_staticbook_clear(static_codebook *b);
+extern void vorbis_staticbook_destroy(static_codebook *b);
+extern int vorbis_book_init_decode(codebook *dest,const static_codebook *source);
+
+extern void vorbis_book_clear(codebook *b);
+extern long _book_maptype1_quantvals(const static_codebook *b);
+
+extern int vorbis_staticbook_unpack(oggpack_buffer *b,static_codebook *c);
+
+extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
+extern long vorbis_book_decodevs_add(codebook *book, ogg_int32_t *a, 
+                                    oggpack_buffer *b,int n,int point);
+extern long vorbis_book_decodev_set(codebook *book, ogg_int32_t *a, 
+                                   oggpack_buffer *b,int n,int point);
+extern long vorbis_book_decodev_add(codebook *book, ogg_int32_t *a, 
+                                   oggpack_buffer *b,int n,int point);
+extern long vorbis_book_decodevv_add(codebook *book, ogg_int32_t **a,
+                                    long off,int ch, 
+                                   oggpack_buffer *b,int n,int point);
+
+extern int _ilog(unsigned int v);
+
+
+#endif
diff --git a/wolf3d/code/Tremor/codec_internal.h b/wolf3d/code/Tremor/codec_internal.h
new file mode 100644 (file)
index 0000000..3ca7f54
--- /dev/null
@@ -0,0 +1,92 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: libvorbis codec headers
+
+ ********************************************************************/
+
+#ifndef _V_CODECI_H_
+#define _V_CODECI_H_
+
+#include "codebook.h"
+
+typedef void vorbis_look_mapping;
+typedef void vorbis_look_floor;
+typedef void vorbis_look_residue;
+typedef void vorbis_look_transform;
+
+/* mode ************************************************************/
+typedef struct {
+  int blockflag;
+  int windowtype;
+  int transformtype;
+  int mapping;
+} vorbis_info_mode;
+
+typedef void vorbis_info_floor;
+typedef void vorbis_info_residue;
+typedef void vorbis_info_mapping;
+
+typedef struct private_state {
+  /* local lookup storage */
+  const void             *window[2];
+
+  /* backend lookups are tied to the mode, not the backend or naked mapping */
+  int                     modebits;
+  vorbis_look_mapping   **mode;
+
+  ogg_int64_t sample_count;
+
+} private_state;
+
+/* codec_setup_info contains all the setup information specific to the
+   specific compression/decompression mode in progress (eg,
+   psychoacoustic settings, channel setup, options, codebook
+   etc).  
+*********************************************************************/
+
+typedef struct codec_setup_info {
+
+  /* Vorbis supports only short and long blocks, but allows the
+     encoder to choose the sizes */
+
+  long blocksizes[2];
+
+  /* modes are the primary means of supporting on-the-fly different
+     blocksizes, different channel mappings (LR or M/A),
+     different residue backends, etc.  Each mode consists of a
+     blocksize flag and a mapping (along with the mapping setup */
+
+  int        modes;
+  int        maps;
+  int        times;
+  int        floors;
+  int        residues;
+  int        books;
+
+  vorbis_info_mode       *mode_param[64];
+  int                     map_type[64];
+  vorbis_info_mapping    *map_param[64];
+  int                     time_type[64];
+  int                     floor_type[64];
+  vorbis_info_floor      *floor_param[64];
+  int                     residue_type[64];
+  vorbis_info_residue    *residue_param[64];
+  static_codebook        *book_param[256];
+  codebook               *fullbooks;
+
+  int    passlimit[32];     /* iteration limit per couple/quant pass */
+  int    coupling_passes;
+} codec_setup_info;
+
+#endif
diff --git a/wolf3d/code/Tremor/config_types.h b/wolf3d/code/Tremor/config_types.h
new file mode 100644 (file)
index 0000000..1fdcb27
--- /dev/null
@@ -0,0 +1,25 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: #ifdef jail to whip a few platforms into the UNIX ideal.
+
+ ********************************************************************/
+#ifndef _OS_CVTYPES_H
+#define _OS_CVTYPES_H
+
+typedef long long ogg_int64_t;
+typedef int ogg_int32_t;
+typedef unsigned int ogg_uint32_t;
+typedef short ogg_int16_t;
+
+#endif
diff --git a/wolf3d/code/Tremor/configure.in b/wolf3d/code/Tremor/configure.in
new file mode 100644 (file)
index 0000000..2b44ee4
--- /dev/null
@@ -0,0 +1,131 @@
+dnl Process this file with autoconf to produce a configure script
+
+dnl ------------------------------------------------
+dnl Initialization and Versioning
+dnl ------------------------------------------------
+
+AC_INIT(mdct.c)
+
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
+AM_CONFIG_HEADER([config.h])
+
+AM_INIT_AUTOMAKE(libvorbisidec,1.2.0)
+
+dnl Library versioning
+
+V_LIB_CURRENT=1
+V_LIB_REVISION=2
+V_LIB_AGE=0
+AC_SUBST(V_LIB_CURRENT)
+AC_SUBST(V_LIB_REVISION)
+AC_SUBST(V_LIB_AGE)
+
+dnl --------------------------------------------------  
+dnl Check for programs
+dnl --------------------------------------------------  
+
+dnl save $CFLAGS since AC_PROG_CC likes to insert "-g -O2"
+dnl if $CFLAGS is blank
+cflags_save="$CFLAGS"
+AC_PROG_CC
+AC_PROG_CPP
+CFLAGS="$cflags_save"
+
+AM_PROG_LIBTOOL
+
+dnl --------------------------------------------------
+dnl Set build flags based on environment
+dnl --------------------------------------------------
+
+dnl Set some target options
+
+cflags_save="$CFLAGS"
+ldflags_save="$LDFLAGS"
+if test -z "$GCC"; then
+        case $host in 
+        arm-*-*)
+                DEBUG="-g -D_ARM_ASSEM_" 
+                CFLAGS="-O -D_ARM_ASSEM_"
+                PROFILE="-p -g -O -D_ARM_ASSEM_" ;;
+        *)
+                DEBUG="-g"
+                CFLAGS="-O"
+                PROFILE="-g -p" ;;
+        esac
+else
+
+        case $host in 
+        arm-*-*)
+                DEBUG="-g -Wall -D__NO_MATH_INLINES -fsigned-char -D_ARM_ASSEM_"
+                CFLAGS="-O2 -D_ARM_ASSEM_ -fsigned-char"
+                PROFILE="-W -pg -g -O2 -D_ARM_ASSEM_ -fsigned-char -fno-inline-functions";;
+
+        *)
+                DEBUG="-g -Wall -D__NO_MATH_INLINES -fsigned-char"
+                CFLAGS="-O2 -Wall -fsigned-char"
+                PROFILE="-Wall -pg -g -O2 -fsigned-char -fno-inline-functions";;
+        esac
+fi
+CFLAGS="$CFLAGS $cflags_save -D_REENTRANT"
+LDFLAGS="$LDFLAGS $ldflags_save"
+
+
+# Test whenever ld supports -version-script
+AC_PROG_LD
+AC_PROG_LD_GNU
+if test "x$lt_cv_prog_gnu_ld" = "xyes"; then
+   SHLIB_VERSION_ARG="Wl,--version-script=Version_script"
+
+   dnl Set extra linker options
+   case "$target_os" in
+  linux* | solaris* )
+    SHLIB_VERSION_ARG="-Wl,--version-script=Version_script"
+    ;;
+  *)
+    ;;
+   esac
+   LDFLAGS="$LDFLAGS $SHLIB_VERSION_ARG"
+fi
+
+dnl --------------------------------------------------
+dnl Options 
+dnl --------------------------------------------------
+
+AC_ARG_ENABLE(
+   low-accuracy,
+   [  --enable-low-accuracy   enable 32 bit only multiply operations],
+   CFLAGS="$CFLAGS -D_LOW_ACCURACY_"
+)
+
+dnl --------------------------------------------------
+dnl Check for headers
+dnl --------------------------------------------------
+
+AC_CHECK_HEADER(memory.h,CFLAGS="$CFLAGS -DUSE_MEMORY_H",:)
+
+dnl --------------------------------------------------
+dnl Check for typedefs, structures, etc
+dnl --------------------------------------------------
+
+dnl none
+
+dnl --------------------------------------------------
+dnl Check for library functions
+dnl --------------------------------------------------
+
+AC_FUNC_ALLOCA
+AC_FUNC_MEMCMP
+
+dnl --------------------------------------------------
+dnl Do substitutions
+dnl --------------------------------------------------
+
+LIBS="$LIBS"
+
+AC_SUBST(LIBS)
+AC_SUBST(DEBUG)
+AC_SUBST(PROFILE)
+
+AC_OUTPUT(Makefile Version_script)
diff --git a/wolf3d/code/Tremor/debian/Makefile.am b/wolf3d/code/Tremor/debian/Makefile.am
new file mode 100644 (file)
index 0000000..45a0f01
--- /dev/null
@@ -0,0 +1,6 @@
+## Process this file with automake to produce Makefile.in
+
+AUTOMAKE_OPTIONS = foreign
+
+EXTRA_DIST = changelog control copyright libvorbisidec1.install\
+       libvorbisidec-dev.install rules
diff --git a/wolf3d/code/Tremor/debian/changelog b/wolf3d/code/Tremor/debian/changelog
new file mode 100644 (file)
index 0000000..0cb4935
--- /dev/null
@@ -0,0 +1,9 @@
+libvorbisidec (1.2.0-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Christopher L Cheney <ccheney@debian.org>  Wed, 09 Oct 2002 22:00:00 -0500
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/wolf3d/code/Tremor/debian/control b/wolf3d/code/Tremor/debian/control
new file mode 100644 (file)
index 0000000..f286e91
--- /dev/null
@@ -0,0 +1,22 @@
+Source: libvorbisidec
+Section: libs
+Priority: optional
+Maintainer: Christopher L Cheney <ccheney@debian.org>
+Build-Depends: autotools-dev, debhelper (>> 4.0.18), devscripts, gawk
+Standards-Version: 3.5.7.0
+
+Package: libvorbisidec1
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Description: Ogg Bitstream Library
+ Libogg is a library for manipulating ogg bitstreams.  It handles
+ both making ogg bitstreams and getting packets from ogg bitstreams.
+
+Package: libvorbisidec-dev
+Architecture: any
+Section: devel
+Depends: libvorbisidec1 (= ${Source-Version}), libc6-dev
+Description: Ogg Bitstream Library Development
+ The libogg-dev package contains the header files and documentation
+ needed to develop applications with libogg.
diff --git a/wolf3d/code/Tremor/debian/copyright b/wolf3d/code/Tremor/debian/copyright
new file mode 100644 (file)
index 0000000..ef98ddd
--- /dev/null
@@ -0,0 +1,37 @@
+This package was debianized by Christopher L Cheney <ccheney@debian.org> on
+Wed, 09 Oct 2002 22:00:00 -0500.
+
+It was downloaded from cvs.
+
+Upstream Author(s): Monty <monty@xiph.org>
+
+Copyright:
+Copyright (c) 2002, Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- 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.
+
+- Neither the name of the Xiph.Org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``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 REGENTS OR
+CONTRIBUTORS 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.
+
diff --git a/wolf3d/code/Tremor/debian/libvorbisidec-dev.install b/wolf3d/code/Tremor/debian/libvorbisidec-dev.install
new file mode 100644 (file)
index 0000000..5c3ccf9
--- /dev/null
@@ -0,0 +1,8 @@
+debian/tmp/usr/include/tremor/config_types.h
+debian/tmp/usr/include/tremor/ivorbiscodec.h
+debian/tmp/usr/include/tremor/ivorbisfile.h
+debian/tmp/usr/include/tremor/ogg.h
+debian/tmp/usr/include/tremor/os_types.h
+debian/tmp/usr/lib/libvorbisidec.a
+debian/tmp/usr/lib/libvorbisidec.la
+debian/tmp/usr/lib/libvorbisidec.so
diff --git a/wolf3d/code/Tremor/debian/libvorbisidec1.install b/wolf3d/code/Tremor/debian/libvorbisidec1.install
new file mode 100644 (file)
index 0000000..b824d1e
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libvorbisidec.so.*
diff --git a/wolf3d/code/Tremor/debian/rules b/wolf3d/code/Tremor/debian/rules
new file mode 100644 (file)
index 0000000..c684884
--- /dev/null
@@ -0,0 +1,151 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This is the debhelper compatibility version to use.
+export DH_COMPAT=4
+
+# This has to be exported to make some magic below work.
+export DH_OPTIONS
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE      ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE     ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+objdir = $(CURDIR)/obj-$(DEB_BUILD_GNU_TYPE)
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -g
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+       INSTALL_PROGRAM += -s
+endif
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+
+       # make build directory
+       mkdir $(objdir)
+
+       # run configure with build tree $(objdir)
+       # change ../configure to ../autogen.sh for CVS build
+       cd $(objdir) && \
+       ../configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
+       --prefix=/usr
+
+       touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp 
+       dh_testdir
+
+       cd $(objdir) && \
+       $(MAKE)
+
+       touch build-stamp
+
+autotools:
+       OLDDATESUB=`./config.sub -t | tr -d -` ;\
+       OLDDATEGUESS=`./config.guess -t | tr -d -` ;\
+       NEWDATESUB=`/usr/share/misc/config.sub -t | tr -d -` ;\
+       NEWDATEGUESS=`/usr/share/misc/config.guess -t | tr -d -` ;\
+       if [ $$OLDDATESUB -lt $$NEWDATESUB -o \
+            $$OLDDATEGUESS -lt $$NEWDATEGUESS ]; then \
+          dch -a -p "GNU config automated update: config.sub\
+            ($$OLDDATESUB to $$NEWDATESUB), config.guess\
+            ($$OLDDATEGUESS to $$NEWDATEGUESS)" ;\
+          cp -f /usr/share/misc/config.sub config.sub ;\
+          cp -f /usr/share/misc/config.guess config.guess ;\
+          echo WARNING: GNU config scripts updated from master copies 1>&2 ;\
+       fi
+
+debian-clean:
+       dh_testdir
+       dh_testroot
+
+       dh_clean
+
+clean: autotools
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Remove build tree
+       rm -rf $(objdir)
+
+       # if Makefile exists run distclean
+       if test -f Makefile; then \
+               $(MAKE) distclean; \
+       fi
+
+       #if test -d CVS; then \
+               $(MAKE) cvs-clean ;\
+       fi
+
+       dh_clean
+
+install: DH_OPTIONS=
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k
+       dh_installdirs
+
+       cd $(objdir) && \
+       $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
+
+       dh_install --list-missing
+
+# This single target is used to build all the packages, all at once, or
+# one at a time. So keep in mind: any options passed to commands here will
+# affect _all_ packages. Anything you want to only affect one package
+# should be put in another target, such as the install target.
+binary-common:
+       dh_testdir
+       dh_testroot
+#      dh_installxfonts
+       dh_installchangelogs
+       dh_installdocs
+       dh_installexamples
+#      dh_installmenu
+#      dh_installdebconf
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+#      dh_undocumented
+       dh_installman
+       dh_strip
+       dh_link
+       dh_compress
+       dh_fixperms
+       dh_makeshlibs -V
+       dh_installdeb
+#      dh_perl
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+# Build architecture independant packages using the common target.
+binary-indep: build install
+#      $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
+
+# Build architecture dependant packages using the common target.
+binary-arch: build install
+       $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
+
+# Any other binary targets build just one binary package at a time.
+binary-%: build install
+       $(MAKE) -f debian/rules binary-common DH_OPTIONS=-p$*
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/wolf3d/code/Tremor/doc/OggVorbis_File.html b/wolf3d/code/Tremor/doc/OggVorbis_File.html
new file mode 100644 (file)
index 0000000..9201d18
--- /dev/null
@@ -0,0 +1,132 @@
+<html>
+
+<head>
+<title>Tremor - datatype - OggVorbis_File</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>OggVorbis_File</h1>
+
+<p><i>declared in "ivorbisfile.h"</i></p>
+
+<p>
+The OggVorbis_File structure defines an Ogg Vorbis file.
+<p>
+
+This structure is used in all libvorbisidec routines.  Before it can be used,
+it must be initialized by <a href="ov_open.html">ov_open()</a> or <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a>.
+
+<p>
+After use, the OggVorbis_File structure must be deallocated with a
+call to <a href="ov_clear.html">ov_clear()</a>.
+
+<p>
+Once a file or data source is opened successfully by libvorbisidec
+(using <a href="ov_open.html">ov_open()</a> or <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a>), it is owned by
+libvorbisidec.  The file should not be used by any other applications or
+functions outside of the libvorbisidec API.  The file must not be closed
+directly by the application at any time after a successful open;
+libvorbisidec expects to close the file within <a
+href="ov_clear.html">ov_clear()</a>.
+<p>
+If the call to <a href="ov_open.html">ov_open()</a> or <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> <b>fails</b>,
+libvorbisidec does <b>not</b> assume ownership of the file and the
+application is expected to close it if necessary.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>typedef struct {
+  void             *datasource; /* Pointer to a FILE *, etc. */
+  int              seekable;
+  ogg_int64_t      offset;
+  ogg_int64_t      end;
+  ogg_sync_state   oy; 
+
+  /* If the FILE handle isn't seekable (eg, a pipe), only the current
+     stream appears */
+  int              links;
+  ogg_int64_t      *offsets;
+  ogg_int64_t      *dataoffsets;
+  long             *serialnos;
+  ogg_int64_t      *pcmlengths;
+  vorbis_info      *vi;
+  vorbis_comment   *vc;
+
+  /* Decoding working state local storage */
+  ogg_int64_t      pcm_offset;
+  int              ready_state;
+  long             current_serialno;
+  int              current_link;
+
+  ogg_int64_t      bittrack;
+  ogg_int64_t      samptrack;
+
+  ogg_stream_state os; /* take physical pages, weld into a logical
+                          stream of packets */
+  vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */
+  vorbis_block     vb; /* local working space for packet->PCM decode */
+
+  <a href="ov_callbacks.html">ov_callbacks</a> callbacks;
+
+} OggVorbis_File;</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>datasource</i></dt>
+
+<dd>Pointer to file or other ogg source.  When using stdio based
+file/stream access, this field contains a <tt>FILE</tt> pointer. When using
+custom IO via callbacks, libvorbisidec treats this void pointer as a
+black box only to be passed to the callback routines provided by the
+application.</dd>
+
+<dt><i>seekable</i></dt>
+<dd>Read-only int indicating whether file is seekable. E.g., a physical file is seekable, a pipe isn't.</dd>
+<dt><i>links</i></dt>
+<dd>Read-only int indicating the number of logical bitstreams within the physical bitstream.</dd>
+<dt><i>ov_callbacks</i></dt>
+<dd>Collection of file manipulation routines to be used on this data source.  When using stdio/FILE access via <a href="ov_open.html">ov_open()</a>, the callbacks will be filled in with stdio calls or wrappers to stdio calls.</dd>
+</dl>
+
+<h3>Notes</h3>
+
+<p>Tremor requires a native 64 bit integer type to compile and
+function; The GNU build system will locate and typedef
+<tt>ogg_int64_t</tt> to the appropriate native type.  If not using the
+GNU build tools, you will need to define <tt>ogg_int64_t</tt> as a
+64-bit type inside your system's project file/Makefile, etc. On win32,
+for example, this should be defined as <tt>__int64</tt>. 
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/build.html b/wolf3d/code/Tremor/doc/build.html
new file mode 100644 (file)
index 0000000..6f0f4ee
--- /dev/null
@@ -0,0 +1,111 @@
+<html>
+
+<head>
+<title>Tremor - Build</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Tremor: Building libvorbisidec</h1>
+
+<p>
+
+The C source in the Tremor package will build on any ANSI C compiler
+and function completely and properly on any platform.  The included
+build system assumes GNU build system and make tools (m4, automake,
+autoconf, libtool and gmake).  GCC is not required, although GCC is
+the most tested compiler.  To build using GNU tools, type in the
+source directory:
+
+<p>
+<pre><tt>
+./autogen.sh
+gmake
+</tt></pre>
+<p>
+or if GNU make is the standard make on the build system:
+<pre><tt>
+./autogen.sh
+make
+</tt></pre>
+
+<p>
+Currently, the source implements playback in pure C on all platforms
+except ARM, where a [currently] small amount of assembly (see the file
+asm_arm.h) is used to implement 64 bit math operations and
+fast LSP computation.  If building on ARM without the benefit of GNU
+build system tools, be sure that <tt>_ARM_ASSEM_</tt> is #defined by
+the build system if this assembly is desired, else the resulting
+library will use whatever 64 bit math builtins the compiler
+implements.
+
+<p>
+No math library is required by this source.  No floating point
+operations are used at any point in either setup or decode.  This
+decoder library will properly decode any past, current or future
+Vorbis I file or stream.
+
+<p>
+The GNU build system produces static and, when supported by the OS,
+dynamic libraries named 'libvorbisidec'.  This library exposes an API
+nearly identical to the BSD reference library's 'libvorbisfile',
+including all the features familiar to users of vorbisfile.  This API
+is similar enough that the proper header file to include is named
+'ivorbisfile.h', included in the source build directory. 
+Lower level libvorbis-style headers and structures are
+in 'ivorbiscodec.h', also included in the source build directory. A
+simple example program, ivorbisfile_example.c, can be built with 'make
+ivorbisfile_example'.
+<p>
+(We've summarized <a href="diff.html">differences between the free,
+reference vorbisfile library and Tremor's libvorbisidec in a separate
+document</a>.)
+
+<h3>Notes</h3>
+
+<p>Tremor requires a native 64 bit integer type to compile and
+function; The GNU build system will locate and typedef
+<tt>ogg_int64_t</tt> to the appropriate native type.  If not using the
+GNU build tools, you will need to define <tt>ogg_int64_t</tt> as a
+64-bit type inside your system's project file/Makefile, etc. On win32,
+for example, this should be defined as <tt>__int64</tt>. 
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/wolf3d/code/Tremor/doc/callbacks.html b/wolf3d/code/Tremor/doc/callbacks.html
new file mode 100644 (file)
index 0000000..9a6d392
--- /dev/null
@@ -0,0 +1,113 @@
+<html>
+
+<head>
+<title>Tremor - Callbacks and non-stdio I/O</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Callbacks and non-stdio I/O</h1>
+
+Although stdio is convenient and nearly universally implemented as per
+ANSI C, it is not suited to all or even most potential uses of Vorbis.
+For additional flexibility, embedded applications may provide their
+own I/O functions for use with Tremor when stdio is unavailable or not
+suitable.  One common example is decoding a Vorbis stream from a
+memory buffer.<p>
+
+Use custom I/O functions by populating an <a
+href="ov_callbacks.html">ov_callbacks</a> structure and calling <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> or <a
+href="ov_test_callbacks.html">ov_test_callbacks()</a> rather than the
+typical <a href="ov_open.html">ov_open()</a> or <a
+href="ov_test.html">ov_test()</a>.  Past the open call, use of
+libvorbisidec is identical to using it with stdio.
+
+<h2>Read function</h2> 
+
+The read-like function provided in the <tt>read_func</tt> field is
+used to fetch the requested amount of data.  It expects the fetch
+operation to function similar to file-access, that is, a multiple read
+operations will retrieve contiguous sequential pieces of data,
+advancing a position cursor after each read.<p>
+
+The following behaviors are also expected:<p>
+<ul>
+<li>a return of '0' indicates end-of-data (if the by-thread errno is unset)
+<li>short reads mean nothing special (short reads are not treated as error conditions)
+<li>a return of zero with the by-thread errno set to nonzero indicates a read error
+</ul>
+<p>
+
+<h2>Seek function</h2> 
+
+The seek-like function provided in the <tt>seek_func</tt> field is
+used to request non-sequential data access by libvorbisidec, moving
+the access cursor to the requested position.<p>
+
+libvorbisidec expects the following behavior:
+<ul>
+<li>The seek function must always return -1 (failure) if the given
+data abstraction is not seekable.  It may choose to always return -1
+if the application desires libvorbisidec to treat the Vorbis data
+strictly as a stream (which makes for a less expensive open
+operation).<p>
+
+<li>If the seek function initially indicates seekability, it must
+always succeed upon being given a valid seek request.<p>
+
+<li>The seek function must implement all of SEEK_SET, SEEK_CUR and
+SEEK_END.  The implementation of SEEK_END should set the access cursor
+one past the last byte of accessible data, as would stdio
+<tt>fseek()</tt><p>
+</ul>
+
+<h2>Close function</h2>
+
+The close function should deallocate any access state used by the
+passed in instance of the data access abstraction and invalidate the
+instance handle.  The close function is assumed to succeed.<p>
+
+One common use of callbacks and the close function is to change the
+behavior of libvorbisidec with respect to file closure for applications
+that <em>must</em> <tt>fclose</tt> data files themselves. By passing
+the normal stdio calls as callback functions, but passing a
+<tt>close_func</tt> that does nothing, an application may call <a
+href="ov_clear.html">ov_clear()</a> and then <tt>fclose()</tt> the
+file originally passed to libvorbisidec.
+
+<h2>Tell function</h2> 
+
+The tell function is intended to mimic the
+behavior of <tt>ftell()</tt> and must return the byte position of the
+next data byte that would be read.  If the data access cursor is at
+the end of the 'file' (pointing to one past the last byte of data, as
+it would be after calling <tt>fseek(file,SEEK_END,0)</tt>), the tell
+function must return the data position (and thus the total file size),
+not an error.<p>
+
+The tell function need not be provided if the data IO abstraction is
+not seekable.<p.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/datastructures.html b/wolf3d/code/Tremor/doc/datastructures.html
new file mode 100644 (file)
index 0000000..2b3da07
--- /dev/null
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>Tremor - Base Data Structures</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Base Data Structures</h1>
+<p>There are several data structures used to hold file and bitstream information during libvorbisidec decoding. These structures are declared in "ivorbisfile.h" and "ivorbiscodec.h".
+<p>
+<p>When using libvorbisidec, it's not necessary to know about most of the contents of these data structures, but it may be helpful to understand what they contain.
+<br><br>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td><b>datatype</b></td>
+       <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+       <td><a href="OggVorbis_File.html">OggVorbis_File</a></td>
+       <td>This structure represents the basic file information. It contains 
+       a pointer to the physical file or bitstream and various information about that bitstream.</td>
+</tr>
+<tr valign=top>
+<td><a href="vorbis_comment.html">vorbis_comment</a></td>
+       <td>This structure contains the file comments. It contains 
+       a pointer to unlimited user comments, information about the number of comments, and a vendor description.</td>
+</tr>
+<tr valign=top>
+<td><a href="vorbis_info.html">vorbis_info</a></td>
+       <td>This structure contains encoder-related information about the bitstream.  It includes encoder info, channel info, and bitrate limits.</td>
+</tr>
+<tr valign=top>
+<td><a href="ov_callbacks.html">ov_callbacks</a></td>
+       <td>This structure contains pointers to the application-specified file manipulation routines set for use by <a href="ov_open_callbacks.html">ov_open_callbacks()</a>. See also the <a href="callbacks.html">provided document on using application-provided callbacks instead of stdio</a>.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/decoding.html b/wolf3d/code/Tremor/doc/decoding.html
new file mode 100644 (file)
index 0000000..1f61b47
--- /dev/null
@@ -0,0 +1,82 @@
+<html>
+
+<head>
+<title>Tremor - Decoding</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Decoding</h1>
+
+<p>
+All libivorbisdec decoding routines are declared in "ivorbisfile.h".
+<p>
+
+After <a href="initialization.html">initialization</a>, decoding audio
+is as simple as calling <a href="ov_read.html">ov_read()</a>. This
+function works similarly to reading from a normal file using
+<tt>read()</tt>.<p>
+
+However, a few differences are worth noting:
+
+<h2>multiple stream links</h2>
+
+A Vorbis stream may consist of multiple sections (called links) that
+encode differing numbers of channels or sample rates.  It is vitally
+important to pay attention to the link numbers returned by <a
+href="ov_read.html">ov_read</a> and handle audio changes that may
+occur at link boundaries.  Such multi-section files do exist in the
+wild and are not merely a specification curiosity.
+
+<h2>returned data amount</h2>
+
+<a href="ov_read.html">ov_read</a> does not attempt to completely fill
+a large, passed in data buffer; it merely guarantees that the passed
+back data does not overflow the passed in buffer size.  Large buffers
+may be filled by iteratively looping over calls to <a
+href="ov_read.html">ov_read</a> (incrementing the buffer pointer)
+until the original buffer is filled.
+
+<h2>file cursor position</h2>
+
+Vorbis files do not necessarily start at a sample number or time offset
+of zero.  Do not be surprised if a file begins at a positive offset of
+several minutes or hours, such as would happen if a large stream (such
+as a concert recording) is chopped into multiple seperate files.
+
+<p>
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td><b>function</b></td>
+       <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_read.html">ov_read</a></td>
+       <td>This function makes up the main chunk of a decode loop. It takes an
+OggVorbis_File structure, which must have been initialized by a previous
+call to <a href="ov_open.html"><tt>ov_open()</tt></a>.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/diff.html b/wolf3d/code/Tremor/doc/diff.html
new file mode 100644 (file)
index 0000000..ae0b908
--- /dev/null
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>Tremor - Vorbisfile Differences</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Tremor / Vorbisfile API Differences</h1>
+
+<p>
+
+The Tremor libvorbisidec library exposes an API intended to be as
+similar as possible to the familiar 'vorbisfile' library included with
+the open source Vorbis reference libraries distributed for free by
+Xiph.org. Differences are summarized below.<p>
+
+<h2>OggVorbis_File structure</h2>
+
+The <tt>bittrack</tt> and <tt>samptrack</tt> fields in the <a
+href="OggVorbis_File.html">OggVorbis_File</a> structure are changed to
+64 bit integers in Tremor, from doubles in vorbisfile.
+
+<h2>Time-related seek and tell function calls</h2>
+
+The <a href="ov_time_total.html">ov_time_total()</a> and <a
+href="ov_time_tell.html">ov_time_tell()</a> functions return milliseconds as 
+64 bit integers in Tremor.  In vorbisfile, these functions returned
+seconds as doubles.<p>
+
+In Tremor, the <a href="ov_time_seek.html">ov_time_seek()</a> and <a
+href="ov_time_seek_page.html">ov_time_seek_page()</a> calls take
+seeking positions in milliseconds as 64 bit integers, rather than in
+seconds as doubles as in Vorbisfile.<p>
+
+<h2>Reading decoded data</h2>
+
+Tremor <a href="ov_read.html">ov_read()</a> always returns data as
+signed 16 bit interleaved PCM in host byte order. As such, it does not
+take arguments to request specific signedness, byte order or bit depth
+as in Vorbisfile.<p>
+
+Tremor does not implement <tt>ov_read_float()</tt>.<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/example.html b/wolf3d/code/Tremor/doc/example.html
new file mode 100644 (file)
index 0000000..2b9a1dd
--- /dev/null
@@ -0,0 +1,205 @@
+<html>
+
+<head>
+<title>Tremor - Example Code</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Example Code</h1>
+
+<p>
+The following is a run-through of the decoding example program supplied
+with libvorbisidec, ivorbisfile_example.c.  
+This program takes a vorbis bitstream from stdin and writes raw pcm to stdout.
+
+<p>
+First, relevant headers, including vorbis-specific "ivorbiscodec.h" and "ivorbisfile.h" have to be included.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;math.h&gt;
+#include "ivorbiscodec.h"
+#include "ivorbisfile.h"
+</b></pre>
+       </td>
+</tr>
+</table>
+<p>
+We also have to make a concession to Windows users here.  If we are using windows for decoding, we must declare these libraries so that we can set stdin/stdout to binary.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+#ifdef _WIN32
+#include &lt;io.h&gt;
+#include &lt;fcntl.h&gt;
+#endif
+</b></pre>
+       </td>
+</tr>
+</table>
+<p>
+Next, a buffer for the pcm audio output is declared.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+char pcmout[4096];
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>Inside main(), we declare our primary OggVorbis_File structure.  We also declare a few other helpful variables to track out progress within the file.
+Also, we make our final concession to Windows users by setting the stdin and stdout to binary mode.
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+int main(int argc, char **argv){
+  OggVorbis_File vf;
+  int eof=0;
+  int current_section;
+
+#ifdef _WIN32
+  _setmode( _fileno( stdin ), _O_BINARY );
+  _setmode( _fileno( stdout ), _O_BINARY );
+#endif
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p><a href="ov_open.html">ov_open()</a> must be
+called to initialize the <b>OggVorbis_File</b> structure with default values.  
+<a href="ov_open.html">ov_open()</a> also checks to ensure that we're reading Vorbis format and not something else.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  if(ov_open(stdin, &vf, NULL, 0) < 0) {
+      fprintf(stderr,"Input does not appear to be an Ogg bitstream.\n");
+      exit(1);
+  }
+
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+We're going to pull the channel and bitrate info from the file using <a href="ov_info.html">ov_info()</a> and show them to the user.
+We also want to pull out and show the user a comment attached to the file using <a href="ov_comment.html">ov_comment()</a>.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+  {
+    char **ptr=ov_comment(&vf,-1)->user_comments;
+    vorbis_info *vi=ov_info(&vf,-1);
+    while(*ptr){
+      fprintf(stderr,"%s\n",*ptr);
+      ++ptr;
+    }
+    fprintf(stderr,"\nBitstream is %d channel, %ldHz\n",vi->channels,vi->rate);
+    fprintf(stderr,"\nDecoded length: %ld samples\n",
+            (long)ov_pcm_total(&vf,-1));
+    fprintf(stderr,"Encoded by: %s\n\n",ov_comment(&vf,-1)->vendor);
+  }
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+Here's the read loop:
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+
+  while(!eof){
+    long ret=ov_read(&vf,pcmout,sizeof(pcmout),&current_section);
+    if (ret == 0) {
+      /* EOF */
+      eof=1;
+    } else if (ret < 0) {
+      /* error in the stream.  Not a problem, just reporting it in
+        case we (the app) cares.  In this case, we don't. */
+    } else {
+      /* we don't bother dealing with sample rate changes, etc, but
+        you'll have to*/
+      fwrite(pcmout,1,ret,stdout);
+    }
+  }
+
+  
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+The code is reading blocks of data using <a href="ov_read.html">ov_read()</a>.
+Based on the value returned, we know if we're at the end of the file or have invalid data.  If we have valid data, we write it to the pcm output.
+
+<p>
+Now that we've finished playing, we can pack up and go home.  It's important to call <a href="ov_clear.html">ov_clear()</a> when we're finished.
+
+<br><br>
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+        <td>
+<pre><b>
+
+  ov_clear(&vf);
+    
+  fprintf(stderr,"Done.\n");
+  return(0);
+}
+</b></pre>
+        </td>
+</tr>
+</table>
+
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/fileinfo.html b/wolf3d/code/Tremor/doc/fileinfo.html
new file mode 100644 (file)
index 0000000..53dfd38
--- /dev/null
@@ -0,0 +1,95 @@
+<html>
+
+<head>
+<title>Tremor - File Information</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>File Information</h1>
+<p>Libvorbisidec contains many functions to get information about bitstream attributes and decoding status.
+<p>
+All libvorbisidec file information routines are declared in "ivorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td><b>function</b></td>
+       <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_bitrate.html">ov_bitrate</a></td>
+       <td>Returns the average bitrate of the current logical bitstream.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_bitrate_instant.html">ov_bitrate_instant</a></td>
+       <td>Returns the exact bitrate since the last call of this function, or -1 if at the beginning of the bitream or no new information is available.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_streams.html">ov_streams</a></td>
+       <td>Gives the number of logical bitstreams within the current physical bitstream.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_seekable.html">ov_seekable</a></td>
+       <td>Indicates whether the bitstream is seekable.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_serialnumber.html">ov_serialnumber</a></td>
+       <td>Returns the unique serial number of the specified logical bitstream.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_raw_total.html">ov_raw_total</a></td>
+       <td>Returns the total (compressed) bytes in a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_pcm_total.html">ov_pcm_total</a></td>
+       <td>Returns the total number of samples in a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_time_total.html">ov_time_total</a></td>
+       <td>Returns the total time length in seconds of a physical or logical seekable bitstream.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_raw_tell.html">ov_raw_tell</a></td>
+       <td>Returns the byte location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_pcm_tell.html">ov_pcm_tell</a></td>
+       <td>Returns the sample location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_time_tell.html">ov_time_tell</a></td>
+       <td>Returns the time location of the next sample to be read, giving the approximate location in the stream that the decoding engine has reached.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_info.html">ov_info</a></td>
+       <td>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for a specific bitstream section.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_comment.html">ov_comment</a></td>
+       <td>Returns attached <a href="vorbis_comment.html">comments</a> for the current bitstream.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/index.html b/wolf3d/code/Tremor/doc/index.html
new file mode 100644 (file)
index 0000000..671f13f
--- /dev/null
@@ -0,0 +1,53 @@
+<html>
+
+<head>
+<title>Tremor - Documentation</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Tremor Documentation</h1>
+
+<p>
+
+The Tremor Vorbis I stream and file decoder provides an embeddable,
+integer-only library [libvorbisidec] intended for decoding all current
+and future Vorbis I compliant streams.  The Tremor libvorbisidec
+library exposes an API intended to be as similar as possible to the
+familiar 'vorbisfile' library included with the open source Vorbis
+reference libraries distributed for free by Xiph.org. <p>
+
+Tremor can be used along with any ANSI compliant stdio implementation
+for file/stream access, or use custom stream i/o routines provided by
+the embedded environment.  Both uses are described in detail in this
+documentation.
+
+<p>
+<a href="build.html">Building libvorbisidec</a><br>
+<a href="overview.html">API overview</a><br>
+<a href="reference.html">API reference</a><br>
+<a href="example.html">Example code</a><br>
+<a href="diff.html">Tremor / vorbisfile API differences</a><br>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/initialization.html b/wolf3d/code/Tremor/doc/initialization.html
new file mode 100644 (file)
index 0000000..f9f6807
--- /dev/null
@@ -0,0 +1,101 @@
+<html>
+
+<head>
+<title>Tremor - Setup/Teardown</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<H1>Setup/Teardown</h1> <p>In order to decode audio using
+libvorbisidec, a bitstream containing Vorbis audio must be properly
+initialized before decoding and cleared when decoding is finished.
+The simplest possible case is to use <tt>fopen()</tt> to open a Vorbis
+file and then pass the <tt>FILE *</tt> to an <a
+href="ov_open.html">ov_open()</a> call.  A successful <a
+href="return.html">return code</a> from <a
+href="ov_open.html">ov_open()</a> indicates the file is ready for use.
+Once the file is no longer needed, <a
+href="ov_clear.html">ov_clear()</a> is used to close the file and
+deallocate decoding resources.  </b>Do not</b> call <tt>fclose()</tt> on the
+file; libvorbisidec does this in the <a
+href="ov_clear.html">ov_clear()</a> call.
+
+<p>
+All libvorbisidec initialization and deallocation routines are declared in "ivorbisfile.h".
+<p>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td><b>function</b></td>
+       <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_open.html">ov_open</a></td>
+       <td>Initializes the Ogg Vorbis bitstream with a pointer to a bitstream and default values.  This must be called before other functions in the library may be
+       used.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_open_callbacks.html">ov_open_callbacks</a></td>
+       <td>Initializes the Ogg Vorbis bitstream with a pointer to a bitstream, default values, and custom file/bitstream manipulation routines.  Used instead of <a href="ov_open.html">ov_open()</a> when working with other than stdio based I/O.</td>
+</tr>
+
+<tr valign=top>
+<td><a href="ov_test.html">ov_test</a></td> 
+
+<td>Partially opens a file just far enough to determine if the file
+is an Ogg Vorbis file or not.  A successful return indicates that the
+file appears to be an Ogg Vorbis file, but the <a
+href="OggVorbis_File.html">OggVorbis_File</a> struct is not yet fully
+initialized for actual decoding.  After a <a href="return.html">successful return</a>, the file
+may be closed using <a href="ov_clear.html">ov_clear()</a> or fully
+opened for decoding using <a
+href="ov_test_open.html">ov_test_open()</a>.<p> This call is intended to
+be used as a less expensive file open test than a full <a
+href="ov_open.html">ov_open()</a>.<p>
+Note that libvorbisidec owns the passed in file resource is it returns success; do not <tt>fclose()</tt> files owned by libvorbisidec.</td>
+
+</tr>
+<tr valign=top>
+<td><a href="ov_test_callbacks.html">ov_test_callbacks</a></td>
+<td>As above but allowing application-define I/O callbacks.<p>
+Note that libvorbisidec owns the passed in file resource is it returns success; do not <tt>fclose()</tt> files owned by libvorbisidec.</td>
+
+</tr>
+<tr valign=top>
+<td><a href="ov_test_open.html">ov_test_open</a><td>
+Finish opening a file after a successful call to <a href="ov_test.html">ov_test()</a> or <a href="ov_test_callbacks.html">ov_test_callbacks()</a>.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_clear.html">ov_clear</a></td> <td>Closes the
+       bitstream and cleans up loose ends.  Must be called when
+       finished with the bitstream.  After return, the <a
+       href="OggVorbis_File.html">OggVorbis_File</a> struct is
+       invalid and may not be used before being initialized again
+       before begin reinitialized.
+
+</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_bitrate.html b/wolf3d/code/Tremor/doc/ov_bitrate.html
new file mode 100644 (file)
index 0000000..65ebfc3
--- /dev/null
@@ -0,0 +1,72 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_bitrate</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>This function returns the average bitrate for the specified logical bitstream.  This may be different from the <a href=ov_info.html>ov_info->nominal_bitrate</a> value, as it is based on the actual average for this bitstream if the file is seekable.
+<p>Nonseekable files will return the nominal bitrate setting or the average of the upper and lower bounds, if any of these values are set.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+long ov_bitrate(OggVorbis_File *vf,int i);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the bitrate for the entire bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL indicates that an invalid argument value was submitted or that the stream represented by <tt>vf</tt> is not open.</li>
+<li>OV_FALSE means the call returned a 'false' status, which in this case most likely indicates that the file is nonseekable and the upper, lower, and nominal bitrates were unset.
+<li><i>n</i> indicates the bitrate for the given logical bitstream or the entire
+   physical bitstream.  If the file is open for random (seekable) access, it will
+   find the *actual* average bitrate.  If the file is streaming (nonseekable), it
+   returns the nominal bitrate (if set) or else the average of the
+   upper/lower bounds (if set).</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_bitrate_instant.html b/wolf3d/code/Tremor/doc/ov_bitrate_instant.html
new file mode 100644 (file)
index 0000000..874671f
--- /dev/null
@@ -0,0 +1,65 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_bitrate_instant</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Used to find the most recent bitrate played back within the file.  Will return 0 if the bitrate has not changed or it is the beginning of the file.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+long ov_bitrate_instant(OggVorbis_File *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates the beginning of the file or unchanged bitrate info.</li>
+<li><i>n</i> indicates the actual bitrate since the last call.</li>
+<li>OV_FALSE indicates that playback is not in progress, and thus there is no instantaneous bitrate information to report.</li>
+<li>OV_EINVAL indicates that the stream represented by <tt>vf</tt> is not open.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_callbacks.html b/wolf3d/code/Tremor/doc/ov_callbacks.html
new file mode 100644 (file)
index 0000000..776352d
--- /dev/null
@@ -0,0 +1,78 @@
+<html>
+
+<head>
+<title>Tremor - datatype - ov_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_callbacks</h1>
+
+<p><i>declared in "ivorbiscodec.h"</i></p>
+
+<p>
+The ov_callbacks structure contains file manipulation function prototypes necessary for opening, closing, seeking, and location.
+
+<p>
+The ov_callbacks structure does not need to be user-defined if you are
+working with stdio-based file manipulation; the <a
+href="ov_open.html">ov_open()</a> call provides default callbacks for
+stdio.  ov_callbacks are defined and passed to <a
+href="ov_open_callbacks.html">ov_open_callbacks()</a> when
+implementing non-stdio based stream manipulation (such as playback
+from a memory buffer).
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>typedef struct {
+  size_t (*read_func)  (void *ptr, size_t size, size_t nmemb, void *datasource);
+  int    (*seek_func)  (void *datasource, ogg_int64_t offset, int whence);
+  int    (*close_func) (void *datasource);
+  long   (*tell_func)  (void *datasource);
+} ov_callbacks;</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>read_func</i></dt>
+<dd>Pointer to custom data reading function.</dd>
+<dt><i>seek_func</i></dt>
+<dd>Pointer to custom data seeking function. If the data source is not seekable (or the application wants the data source to be treated as unseekable at all times), the provided seek callback should always return -1 (failure).</dd>
+<dt><i>close_func</i></dt>
+<dd>Pointer to custom data source closure function.</dd>
+<dt><i>tell_func</i></dt>
+<dd>Pointer to custom data location function.</dd>
+</dl>
+
+<p>
+
+See <a href="callbacks.html">the callbacks and non-stdio I/O document</a> for more
+detailed information on required behavior of the various callback
+functions.<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_clear.html b/wolf3d/code/Tremor/doc/ov_clear.html
new file mode 100644 (file)
index 0000000..7c51bb7
--- /dev/null
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_clear</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_clear</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p> After a bitstream has been opened using <a href="ov_open.html">ov_open()</a>/<a href="ov_open_callbacks.html">ov_open_callbacks()</a> and decoding is complete, the application must call <tt>ov_clear()</tt> to clear
+the decoder's buffers and close the file.<p>
+
+<tt>ov_clear()</tt> must also be called after a successful call to <a href="ov_test.html">ov_test()</a> or <a href="ov_test_callbacks.html">ov_test_callbacks()</a>.<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_clear(OggVorbis_File *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.  After <tt>ov_clear</tt> has been called, the structure is deallocated and can no longer be used.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+</blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_comment.html b/wolf3d/code/Tremor/doc/ov_comment.html
new file mode 100644 (file)
index 0000000..5d9cc0b
--- /dev/null
@@ -0,0 +1,66 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_comment</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns a pointer to the <a href="vorbis_comment.html">vorbis_comment</a> struct for the specified bitstream.  For nonseekable streams, returns the struct for the current bitstream.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+vorbis_comment *ov_comment(OggVorbis_File *vf,int link);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the <a href="vorbis_comment.html">vorbis_comment</a> struct for the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Returns the vorbis_comment struct for the specified bitstream.</li>
+<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_info.html b/wolf3d/code/Tremor/doc/ov_info.html
new file mode 100644 (file)
index 0000000..d783bf3
--- /dev/null
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_info</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_info</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the <a href="vorbis_info.html">vorbis_info</a> struct for the specified bitstream.  For nonseekable files, always returns the current vorbis_info struct.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+vorbis_info *ov_info(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,int link);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. </dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the <a href="vorbis_info.html">vorbis_info</a> struct for the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>Returns the vorbis_info struct for the specified bitstream.  Returns vorbis_info for current bitstream if the file is nonseekable or i=-1.</li>
+<li>NULL if the specified bitstream does not exist or the file has been initialized improperly.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_open.html b/wolf3d/code/Tremor/doc/ov_open.html
new file mode 100644 (file)
index 0000000..654cae8
--- /dev/null
@@ -0,0 +1,115 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_open</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_open</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>This is the main function used to open and initialize an OggVorbis_File
+structure. It sets up all the related decoding structure.
+<p>The first argument must be a file pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream). <tt>vf</tt> should be a pointer to the
+OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. Once this has been called, the same <a href="OggVorbis_File.html">OggVorbis_File</a>
+struct should be passed to all the libvorbisidec functions.
+<p>Also, you should be aware that ov_open(), once successful, takes complete possession of the file resource.  After you have opened a file using ov_open(), you MUST close it using <a href="ov_clear.html">ov_clear()</a>, not fclose() or any other function.
+<p>
+It is often useful to call <tt>ov_open()</tt>
+simply to determine whether a given file is a vorbis bitstream. If the
+<tt>ov_open()</tt>
+call fails, then the file is not recognizable as such. 
+When you use <tt>ov_open()
+</tt>for
+this, you should <tt>fclose()</tt> the file pointer if, and only if, the
+<tt>ov_open()</tt>
+call fails. If it succeeds, you must call <a href="ov_clear.html">ov_clear()</a> to clear
+the decoder's buffers and close the file for you.<p>
+
+(Note that <a href="ov_test.html">ov_test()</a> provides a less expensive way to test a file for Vorbisness.)<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_open(FILE *f,<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,char *initial,long ibytes);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisidec functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+<h3>Notes</h3>
+<p>If your decoder is threaded, it is recommended that you NOT call
+<tt>ov_open()</tt>
+in the main control thread--instead, call <tt>ov_open()</tt> IN your decode/playback
+thread. This is important because <tt>ov_open()</tt> may be a fairly time-consuming
+call, given that the full structure of the file is determined at this point,
+which may require reading large parts of the file under certain circumstances
+(determining all the logical bitstreams in one physical bitstream, for
+example).  See <a href="threads.html">Thread Safety</a> for other information on using libvorbisidec with threads.
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_open_callbacks.html b/wolf3d/code/Tremor/doc/ov_open_callbacks.html
new file mode 100644 (file)
index 0000000..64a2a92
--- /dev/null
@@ -0,0 +1,110 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_open_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_open_callbacks</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>This is an alternative function used to open and initialize an OggVorbis_File
+structure when using a data source other than a file.   It allows you to specify custom file manipulation routines and sets up all the related decoding structure.
+<p>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisidec functions.
+<p>
+It is often useful to call <tt>ov_open_callbacks()</tt>
+simply to determine whether a given file is a vorbis bitstream. If the
+<tt>ov_open_callbacks()</tt>
+call fails, then the file is not recognizable as such. When you use <tt>ov_open_callbacks()
+</tt>for
+this, you should <tt>fclose()</tt> the file pointer if, and only if, the
+<tt>ov_open_callbacks()</tt>
+call fails. If it succeeds, you must call <a href=ov_clear.html>ov_clear()</a> to clear
+the decoder's buffers and close the file for you.<p>
+
+See also <a href="callbacks.html">Callbacks and Non-stdio I/O</a> for information on designing and specifying the required callback functions.<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_open_callbacks(void *datasource, <a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *initial, long ibytes, <a href="ov_callbacks.html">ov_callbacks</a> callbacks);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisidec functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt>.</dd>
+<dt><i>callbacks</i></dt>
+<dd>Pointer to a completed <a href="ov_callbacks.html">ov_callbacks</a> struct which indicates desired custom file manipulation routines.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+<h3>Notes</h3>
+<p>If your decoder is threaded, it is recommended that you NOT call
+<tt>ov_open_callbacks()</tt>
+in the main control thread--instead, call <tt>ov_open_callbacks()</tt> IN your decode/playback
+thread. This is important because <tt>ov_open_callbacks()</tt> may be a fairly time-consuming
+call, given that the full structure of the file is determined at this point,
+which may require reading large parts of the file under certain circumstances
+(determining all the logical bitstreams in one physical bitstream, for
+example).
+See <a href="threads.html">Thread Safety</a> for other information on using libvorbisidec with threads.
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_pcm_seek.html b/wolf3d/code/Tremor/doc/ov_pcm_seek.html
new file mode 100644 (file)
index 0000000..cf0351e
--- /dev/null
@@ -0,0 +1,81 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_pcm_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_seek</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in pcm samples) within the physical bitstream.  This function only works for seekable streams.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_pcm_seek(OggVorbis_File *vf,ogg_int64_t pos);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in pcm samples to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:</li>
+<ul>
+<li>OV_ENOSEEK - Bitstream is not seekable.
+</li>
+<li>OV_EINVAL - Invalid argument value.
+</li>
+<li>OV_EREAD - A read from media returned an error.
+</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+               corruption.
+</li>
+<li>OV_EBADLINK - Invalid stream section supplied to libvorbisidec, or the requested link is corrupt. 
+</li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_pcm_seek_page.html b/wolf3d/code/Tremor/doc/ov_pcm_seek_page.html
new file mode 100644 (file)
index 0000000..44468a8
--- /dev/null
@@ -0,0 +1,83 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_pcm_seek_page</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_seek_page</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Seeks to the closest page preceding the specified location (in pcm samples) within the physical bitstream.  This function only works for seekable streams.
+<p>This function is faster than <a href="ov_pcm_seek.html">ov_pcm_seek</a> because the function can begin decoding at a page boundary rather than seeking through any remaining samples before the specified location.  However, it is less accurate.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in pcm samples to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:</li>
+<ul>
+<li>OV_ENOSEEK - Bitstream is not seekable.
+</li>
+<li>OV_EINVAL - Invalid argument value.
+</li>
+<li>OV_EREAD - A read from media returned an error.
+</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+               corruption.
+</li>
+<li>OV_EBADLINK - Invalid stream section supplied to libvorbisidec, or the requested link is corrupt. 
+</li>
+</ul></blockquote>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_pcm_tell.html b/wolf3d/code/Tremor/doc/ov_pcm_tell.html
new file mode 100644 (file)
index 0000000..0bb98d7
--- /dev/null
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_pcm_tell</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_tell</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the current offset in samples.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+ogg_int64_t ov_pcm_tell(OggVorbis_File *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current offset in samples.</li>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_pcm_total.html b/wolf3d/code/Tremor/doc/ov_pcm_total.html
new file mode 100644 (file)
index 0000000..a19744a
--- /dev/null
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_pcm_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_pcm_total</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the total pcm samples of the physical bitstream or a specified logical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+ogg_int64_t ov_pcm_total(OggVorbis_File *vf,int i);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  To retrieve the total pcm samples for the entire physical bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist or the bitstream is unseekable.</li>
+<li>
+total length in pcm samples of content if i=-1.</li>
+<li>length in pcm samples of logical bitstream if i=1 to n.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_raw_seek.html b/wolf3d/code/Tremor/doc/ov_raw_seek.html
new file mode 100644 (file)
index 0000000..e7f0bd3
--- /dev/null
@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_raw_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_seek</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Seeks to the offset specified (in compressed raw bytes) within the physical bitstream.  This function only works for seekable streams.
+<p>This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.
+<p>When seek speed is a priority, this is the best seek funtion to use.
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_raw_seek(OggVorbis_File *vf,long pos);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>pos</i></dt>
+<dd>Position in compressed bytes to seek to in the bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates success</li>
+<li>nonzero indicates failure, described by several error codes:</li>
+<ul>
+<li>OV_ENOSEEK - Bitstream is not seekable.
+</li>
+<li>OV_EINVAL - Invalid argument value.
+</li>
+<li>OV_EBADLINK - Invalid stream section supplied to libvorbisidec, or the requested link is corrupt. 
+</li>
+</ul>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_raw_tell.html b/wolf3d/code/Tremor/doc/ov_raw_tell.html
new file mode 100644 (file)
index 0000000..f0d1f6a
--- /dev/null
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_raw_tell</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_tell</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the current offset in raw compressed bytes.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+ogg_int64_t ov_raw_tell(OggVorbis_File *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current offset in bytes.</li>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_raw_total.html b/wolf3d/code/Tremor/doc/ov_raw_total.html
new file mode 100644 (file)
index 0000000..d0af35f
--- /dev/null
@@ -0,0 +1,68 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_raw_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_raw_total</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the total (compressed) bytes of the physical bitstream or a specified logical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+ogg_int64_t ov_raw_total(OggVorbis_File *vf,int i);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  To retrieve the total bytes for the entire physical bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist or the bitstream is nonseekable</li>
+<li><tt>n</tt>
+total length in compressed bytes of content if i=-1.</li>
+<li><tt>n</tt> length in compressed bytes of logical bitstream if i=1 to n.</li>
+</blockquote>
+<p>
+
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_read.html b/wolf3d/code/Tremor/doc/ov_read.html
new file mode 100644 (file)
index 0000000..208ef18
--- /dev/null
@@ -0,0 +1,115 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_read</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_read()</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>
+   This is the main function used to decode a Vorbis file within a
+   loop.  It returns up to the specified number of bytes of decoded audio
+   in host-endian, signed 16 bit PCM format.  If the audio is
+   multichannel, the channels are interleaved in the output buffer.
+   If the passed in buffer is large, <tt>ov_read()</tt> will not fill
+   it; the passed in buffer size is treated as a <em>limit</em> and
+   not a request.
+<p>
+   
+Note that up to this point, the Tremor API could more or less hide the
+   multiple logical bitstream nature of chaining from the toplevel
+   application if the toplevel application didn't particularly care.
+   However, when reading audio back, the application must be aware
+   that multiple bitstream sections do not necessarily use the same
+   number of channels or sampling rate. <p> <tt>ov_read()</tt> passes
+   back the index of the sequential logical bitstream currently being
+   decoded (in <tt>*bitstream</tt>) along with the PCM data in order
+   that the toplevel application can handle channel and/or sample
+   rate changes. This number will be incremented at chaining
+   boundaries even for non-seekable streams. For seekable streams, it
+   represents the actual chaining index within the physical bitstream.
+<p>
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+long ov_read(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *buffer, int length, int *bitstream);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>buffer</i></dt>
+<dd>A pointer to an output buffer.  The decoded output is inserted into this buffer.</dd>
+<dt><i>length</i></dt>
+<dd>Number of bytes to be read into the buffer. Should be the same size as the buffer.  A typical value is 4096.</dd>
+<dt><i>bitstream</i></dt>
+<dd>A pointer to the number of the current logical bitstream.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<dl>
+<dt>OV_HOLE</dt>
+  <dd>indicates there was an interruption in the data.
+      <br>(one of: garbage between pages, loss of sync followed by
+           recapture, or a corrupt page)</dd>
+<dt>OV_EBADLINK</dt>
+  <dd>indicates that an invalid stream section was supplied to
+      libvorbisidec, or the requested link is corrupt.</dd>
+<dt>0</dt>
+  <dd>indicates EOF</dd>
+<dt><i>n</i></dt>
+  <dd>indicates actual number of bytes read.  <tt>ov_read()</tt> will
+      decode at most one vorbis packet per invocation, so the value
+      returned will generally be less than <tt>length</tt>.
+</dl>
+</blockquote>
+
+<h3>Notes</h3>
+<p><b>Typical usage:</b>
+<blockquote>
+<tt>bytes_read = ov_read(&amp;vf,
+buffer, 4096,&amp;current_section)</tt>
+</blockquote>
+
+This reads up to 4096 bytes into a buffer, with signed 16-bit
+little-endian samples.
+</p>
+
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_seekable.html b/wolf3d/code/Tremor/doc/ov_seekable.html
new file mode 100644 (file)
index 0000000..9bd7fc3
--- /dev/null
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_seekable</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_seekable</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>This indicates whether or not the bitstream is seekable.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+long ov_seekable(OggVorbis_File *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 indicates that the file is not seekable.</li>
+<li>nonzero indicates that the file is seekable.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_serialnumber.html b/wolf3d/code/Tremor/doc/ov_serialnumber.html
new file mode 100644 (file)
index 0000000..d7d7c62
--- /dev/null
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_serialnumber</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_serialnumber</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the serialnumber of the specified logical bitstream link number within the overall physical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+long ov_serialnumber(OggVorbis_File *vf,int i);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  For nonseekable files, this argument is ignored.  To retrieve the serial number of the current bitstream, this parameter should be set to -1.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+-1 if the specified logical bitstream <i>i</i> does not exist.</li>
+
+<li>Returns the serial number of the logical bitstream <i>i</i> or the serial number of the current bitstream if the file is nonseekable.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_streams.html b/wolf3d/code/Tremor/doc/ov_streams.html
new file mode 100644 (file)
index 0000000..7ffee42
--- /dev/null
@@ -0,0 +1,64 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_streams</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_streams</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the number of logical bitstreams within our physical bitstream.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+long ov_streams(OggVorbis_File *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. </dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+1 indicates a single logical bitstream or an unseekable file.</li>
+<li><i>n</i> indicates the number of logical bitstreams.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_test.html b/wolf3d/code/Tremor/doc/ov_test.html
new file mode 100644 (file)
index 0000000..96a9af0
--- /dev/null
@@ -0,0 +1,89 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_test</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_test</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>
+This partially opens a vorbis file to test for Vorbis-ness.  It loads
+the headers for the first chain, and tests for seekability (but does not seek).
+Use <a href="ov_test_open.html">ov_test_open()</a> to finish opening the file
+or <a href="ov_clear.html">ov_clear</a> to close/free it.
+<p>
+
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_test(FILE *f,<a href="OggVorbis_File.html">OggVorbis_File</a> *vf,char *initial,long ibytes);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisidec functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_test_callbacks.html b/wolf3d/code/Tremor/doc/ov_test_callbacks.html
new file mode 100644 (file)
index 0000000..4049548
--- /dev/null
@@ -0,0 +1,90 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_test_callbacks</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_test_callbacks</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>This is an alternative function used to open and test an OggVorbis_File
+structure when using a data source other than a file.   It allows you to specify custom file manipulation routines and sets up all the related decoding structures.
+<p>Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisidec functions.
+<p>
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_test_callbacks(void *datasource, <a href="OggVorbis_File.html">OggVorbis_File</a> *vf, char *initial, long ibytes, <a href="ov_callbacks.html">ov_callbacks</a> callbacks);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>f</i></dt>
+<dd>File pointer to an already opened file
+or pipe (it need not be seekable--though this obviously restricts what
+can be done with the bitstream).</dd>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisidec functions.</dd>
+<dt><i>initial</i></dt>
+<dd>Typically set to NULL.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. It is used in conjunction with <tt>ibytes</tt>.  In this case, <tt>initial</tt>
+should be a pointer to a buffer containing the data read.</dd>
+<dt><i>ibytes</i></dt>
+<dd>Typically set to 0.  This parameter is useful if some data has already been
+read from the file and the stream is not seekable. In this case, <tt>ibytes</tt>
+should contain the length (in bytes) of the buffer.  Used together with <tt>initial</tt>.</dd>
+<dt><i>callbacks</i></dt>
+<dd>Pointer to a completed <a href="ov_callbacks.html">ov_callbacks</a> struct which indicates desired custom file manipulation routines.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>0 for success</li>
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_test_open.html b/wolf3d/code/Tremor/doc/ov_test_open.html
new file mode 100644 (file)
index 0000000..74f4410
--- /dev/null
@@ -0,0 +1,82 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_test_open</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_test_open</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>
+Finish opening a file partially opened with <a href="ov_test.html">ov_test()</a>
+or <a href="ov_test_callbacks.html">ov_test_callbacks()</a>.
+<p>
+
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_test_open(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions. Once this has been called, the same <tt>OggVorbis_File</tt>
+struct should be passed to all the libvorbisidec functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>less than zero for failure:</li>
+<ul>
+<li>OV_EREAD - A read from media returned an error.</li>
+<li>OV_ENOTVORBIS - Bitstream is not Vorbis data.</li>
+<li>OV_EVERSION - Vorbis version mismatch.</li>
+<li>OV_EBADHEADER - Invalid Vorbis bitstream header.</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack corruption.</li>
+</ul>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
+
+
+
+
+
+
+
diff --git a/wolf3d/code/Tremor/doc/ov_time_seek.html b/wolf3d/code/Tremor/doc/ov_time_seek.html
new file mode 100644 (file)
index 0000000..6dfa130
--- /dev/null
@@ -0,0 +1,70 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_time_seek</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_time_seek</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>For seekable
+streams, this seeks to the given time. For implementing seeking in a player,
+this is the only function generally needed. This also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.  This function does not work for unseekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_time_seek(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, ogg_int64_t ms);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
+<dt><i>ms</i></dt>
+<dd>Location to seek to within the file, specified in milliseconds.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>
+Nonzero for failure</li>
+</blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_time_seek_page.html b/wolf3d/code/Tremor/doc/ov_time_seek_page.html
new file mode 100644 (file)
index 0000000..83cfefb
--- /dev/null
@@ -0,0 +1,83 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_time_seek_page</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_time_seek_page</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>For seekable
+streams, this seeks to closest full page preceding the given time.  This function is faster than <a href="ov_time_seek.html">ov_time_seek</a> because it doesn't seek through the last few samples to reach an exact time, but it is also less accurate.  This should be used when speed is important.
+<p>This function also updates everything needed within the
+decoder, so you can immediately call <a href="ov_read.html">ov_read()</a> and get data from
+the newly seeked to position.  
+<p>This function does not work for unseekable streams.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+int ov_time_seek_page(<a href="OggVorbis_File.html">OggVorbis_File</a> *vf, ogg_int64_t ms);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>Pointer to our already opened and initialized OggVorbis_File structure.</dd>
+<dt><i>ms</i></dt>
+<dd>Location to seek to within the file, specified in milliseconds.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>
+0 for success</li>
+
+<li>
+nonzero indicates failure, described by several error codes:</li>
+<ul>
+<li>OV_ENOSEEK - Bitstream is not seekable.
+</li>
+<li>OV_EINVAL - Invalid argument value.
+</li>
+<li>OV_EREAD - A read from media returned an error.
+</li>
+<li>OV_EFAULT - Internal logic fault; indicates a bug or heap/stack 
+               corruption.
+</li>
+<li>OV_EBADLINK - Invalid stream section supplied to libvorbisidec, or the requested link is corrupt. 
+</li>
+</ul></blockquote>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_time_tell.html b/wolf3d/code/Tremor/doc/ov_time_tell.html
new file mode 100644 (file)
index 0000000..25d159b
--- /dev/null
@@ -0,0 +1,63 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_bitrate</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_time_tell</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+<p>Returns the current decoding offset in milliseconds.
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+ogg_int64_t ov_time_tell(OggVorbis_File *vf);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li><i>n</i> indicates the current decoding time offset in milliseconds.</li>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist.</li>
+</blockquote>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/ov_time_total.html b/wolf3d/code/Tremor/doc/ov_time_total.html
new file mode 100644 (file)
index 0000000..7c26b92
--- /dev/null
@@ -0,0 +1,67 @@
+<html>
+
+<head>
+<title>Tremor - function - ov_time_total</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>ov_time_total</h1>
+
+<p><i>declared in "ivorbisfile.h";</i></p>
+
+
+<p>Returns the total time in seconds of the physical bitstream or a specified logical bitstream.
+
+
+<br><br>
+<table border=0 color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>
+ogg_int64_t ov_time_total(OggVorbis_File *vf,int i);
+</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>vf</i></dt>
+<dd>A pointer to the OggVorbis_File structure--this is used for ALL the externally visible libvorbisidec
+functions.</dd>
+<dt><i>i</i></dt>
+<dd>Link to the desired logical bitstream.  To retrieve the time total for the entire physical bitstream, this parameter should be set to -1.</b></dd>
+</dl>
+
+
+<h3>Return Values</h3>
+<blockquote>
+<li>OV_EINVAL means that the argument was invalid.  In this case, the requested bitstream did not exist or the bitstream is nonseekable.</li>
+<li><tt>n</tt> total length in milliseconds of content if i=-1.</li>
+<li><tt>n</tt> length in milliseconds of logical bitstream if i=1 to n.</li>
+</blockquote>
+<p>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/overview.html b/wolf3d/code/Tremor/doc/overview.html
new file mode 100644 (file)
index 0000000..0c82cb2
--- /dev/null
@@ -0,0 +1,61 @@
+<html>
+
+<head>
+<title>Tremor - API Overview</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Tremor API Overview</h1>
+
+<p>The makeup of the Tremor libvorbisidec library API is relatively
+simple.  It revolves around a single file resource.  This file resource is
+passed to libvorbisidec, where it is opened, manipulated, and closed,
+in the form of an <a href="OggVorbis_File.html">OggVorbis_File</a>
+struct.
+<p>
+The Tremor API consists of the following functional categories:
+<p>
+<ul>
+<li><p><a href="datastructures.html">Base data structures</a>
+<li><p><a href="initialization.html">Setup/Teardown</a>
+<li><p><a href="decoding.html">Decoding</a>
+<li><p><a href="seeking.html">Seeking</a>
+<li><p><a href="fileinfo.html">File Information</a>
+</ul>
+<p>
+In addition, the following subjects deserve attention additional to
+the above general overview:
+<p>
+<ul>
+<li><p><a href="threads.html">Threading and thread safety</a>
+<li><p><a href="callbacks.html">Using [non stdio] custom stream I/O
+via callbacks</a>
+<li><a href="diff.html">Tremor / vorbisfile API differences</a><br>
+</ul>
+<p>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
+
diff --git a/wolf3d/code/Tremor/doc/reference.html b/wolf3d/code/Tremor/doc/reference.html
new file mode 100644 (file)
index 0000000..20e0a5f
--- /dev/null
@@ -0,0 +1,75 @@
+<html>
+
+<head>
+<title>Tremor API Reference</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Tremor API Reference</h1>
+
+<p>
+<b>Data Structures</b><br>
+<a href="OggVorbis_File.html">OggVorbis_File</a><br>
+<a href="vorbis_comment.html">vorbis_comment</a><br>
+<a href="vorbis_info.html">vorbis_info</a><br>
+<a href="ov_callbacks.html">ov_callbacks</a><br>
+<br>
+<b>Setup/Teardown</b><br>
+<a href="ov_open.html">ov_open()</a><br>
+<a href="ov_open_callbacks.html">ov_open_callbacks()</a><br>
+<a href="ov_clear.html">ov_clear()</a><br>
+<a href="ov_test.html">ov_test()</a><br>
+<a href="ov_test_callbacks.html">ov_test_callbacks()</a><br>
+<a href="ov_test_open.html">ov_test_open()</a><br>
+<br>
+<b>Decoding</b><br>
+<a href="ov_read.html">ov_read()</a><br>
+<br>
+<b>Seeking</b><br>
+<a href="ov_raw_seek.html">ov_raw_seek()</a><br>
+<a href="ov_pcm_seek.html">ov_pcm_seek()</a><br>
+<a href="ov_time_seek.html">ov_time_seek()</a><br>
+<a href="ov_pcm_seek_page.html">ov_pcm_seek_page()</a><br>
+<a href="ov_time_seek_page.html">ov_time_seek_page()</a><br>
+<br>
+<b>File Information</b><br>
+<a href="ov_bitrate.html">ov_bitrate()</a><br>
+<a href="ov_bitrate_instant.html">ov_bitrate_instant()</a><br>
+<a href="ov_streams.html">ov_streams()</a><br>
+<a href="ov_seekable.html">ov_seekable()</a><br>
+<a href="ov_serialnumber.html">ov_serialnumber()</a><br>
+<a href="ov_raw_total.html">ov_raw_total()</a><br>
+<a href="ov_pcm_total.html">ov_pcm_total()</a><br>
+<a href="ov_time_total.html">ov_time_total()</a><br>
+<a href="ov_raw_tell.html">ov_raw_tell()</a><br>
+<a href="ov_pcm_tell.html">ov_pcm_tell()</a><br>
+<a href="ov_time_tell.html">ov_time_tell()</a><br>
+<a href="ov_info.html">ov_info()</a><br>
+<a href="ov_comment.html">ov_comment()</a><br>
+<br>
+<b><a href="return.html">Return Codes</a></b><br>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/return.html b/wolf3d/code/Tremor/doc/return.html
new file mode 100644 (file)
index 0000000..0a3f96c
--- /dev/null
@@ -0,0 +1,77 @@
+<html>
+
+<head>
+<title>Tremor - Return Codes</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Return Codes</h1>
+
+<p>
+
+The following return codes are <tt>#define</tt>d in "ivorbiscodec.h"
+may be returned by libvorbisidec.  Descriptions of a code relevant to
+a specific function are found in the reference description of that
+function.
+
+<dl>
+
+<dt>OV_FALSE</dt>
+<dd>Not true, or no data available</dd>
+
+<dt>OV_HOLE</dt>
+<dd>Tremor encoutered missing or corrupt data in the bitstream.  Recovery
+is normally automatic and this return code is for informational purposes only.</dd>
+
+<dt>OV_EREAD</dt>
+<dd>Read error while fetching compressed data for decode</dd>
+
+<dt>OV_EFAULT</dt>
+<dd>Internal inconsistency in decode state.  Continuing is likely not possible.</dd>
+
+<dt>OV_EIMPL</dt>
+<dd>Feature not implemented</dd>
+
+<dt>OV_EINVAL</dt>
+<dd>Either an invalid argument, or incompletely initialized argument passed to libvorbisidec call</dd>
+
+<dt>OV_ENOTVORBIS</dt>
+<dd>The given file/data was not recognized as Ogg Vorbis data.</dd>
+
+<dt>OV_EBADHEADER</dt>
+<dd>The file/data is apparently an Ogg Vorbis stream, but contains a corrupted or undecipherable header.</dd>
+
+<dt>OV_EVERSION</dt>
+<dd>The bitstream format revision of the given stream is not supported.</dd>
+
+<dt>OV_EBADLINK</dt>
+<dd>The given link exists in the Vorbis data stream, but is not decipherable due to garbacge or corruption.</dd>
+
+<dt>OV_ENOSEEK</dt>
+<dd>The given stream is not seekable</dd>
+
+</dl>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/seeking.html b/wolf3d/code/Tremor/doc/seeking.html
new file mode 100644 (file)
index 0000000..652368a
--- /dev/null
@@ -0,0 +1,74 @@
+<html>
+
+<head>
+<title>Tremor - Seeking</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Seeking</h1>
+<p>Seeking functions allow you to specify a specific point in the stream to begin or continue decoding.
+<p>
+All libvorbisidec seeking routines are declared in "ivorbisfile.h".
+
+<p>Certain seeking functions are best suited to different situations.
+When speed is important and exact positioning isn't required,
+page-level seeking should be used.  Note also that Vorbis files do not
+necessarily start at a sample number or time offset of zero.  Do not
+be surprised if a file begins at a positive offset of several minutes
+or hours, such as would happen if a large stream (such as a concert
+recording) is chopped into multiple separate files.  Requesting to
+seek to a position before the beginning of such a file will seek to
+the position where audio begins.<p>
+
+</ul>
+
+<table border=1 color=black width=50% cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td><b>function</b></td>
+       <td><b>purpose</b></td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_raw_seek.html">ov_raw_seek</a></td>
+       <td>This function seeks to a position specified in the compressed bitstream, specified in bytes.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_pcm_seek.html">ov_pcm_seek</a></td>
+       <td>This function seeks to a specific audio sample number, specified in pcm samples.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_pcm_seek_page.html">ov_pcm_seek_page</a></td>
+       <td>This function seeks to the closest page preceding the specified audio sample number, specified in pcm samples.</td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_time_seek.html">ov_time_seek</a></td>
+       <td>This function seeks to the specific time location in the bitstream, specified in integer milliseconds.  Note that this differs from the reference vorbisfile implementation, which takes seconds as a float. </td>
+</tr>
+<tr valign=top>
+       <td><a href="ov_time_seek_page.html">ov_time_seek_page</a></td>
+       <td>This function seeks to the closest page preceding the specified time position in the bitstream, specified in integer milliseconds.</td>
+</tr>
+</table>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/style.css b/wolf3d/code/Tremor/doc/style.css
new file mode 100644 (file)
index 0000000..81cf417
--- /dev/null
@@ -0,0 +1,7 @@
+BODY { font-family: Helvetica, sans-serif }
+TD { font-family: Helvetica, sans-serif }
+P { font-family: Helvetica, sans-serif }
+H1 { font-family: Helvetica, sans-serif }
+H2 { font-family: Helvetica, sans-serif }
+H4 { font-family: Helvetica, sans-serif }
+P.tiny { font-size: 8pt }
diff --git a/wolf3d/code/Tremor/doc/threads.html b/wolf3d/code/Tremor/doc/threads.html
new file mode 100644 (file)
index 0000000..53ed76a
--- /dev/null
@@ -0,0 +1,50 @@
+<html>
+
+<head>
+<title>Tremor - Thread Safety</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>Thread Safety</h1>
+
+Tremor's libvorbisidec may be used safely in a threading environment
+so long as thread access to individual <a
+href="OggVorbis_File.html">OggVorbis_File</a> instances is serialized.  
+<ul>
+
+<li>Only one thread at a time may enter a function that takes a given <a
+href="OggVorbis_File.html">OggVorbis_File</a> instance, even if the
+functions involved appear to be read-only.<p>
+
+<li>Multiple threads may enter
+libvorbisidec at a given time, so long as each thread's function calls
+are using different <a href="OggVorbis_File.html">OggVorbis_File</a>
+instances. <p>
+
+<li>Any one <a
+href="OggVorbis_File.html">OggVorbis_File</a> instance may be used safely from multiple threads so long as only one thread at a time is making calls using that instance.<p>
+</ul>
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/vorbis_comment.html b/wolf3d/code/Tremor/doc/vorbis_comment.html
new file mode 100644 (file)
index 0000000..3232d96
--- /dev/null
@@ -0,0 +1,70 @@
+<html>
+
+<head>
+<title>Tremor - datatype - vorbis_comment</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>vorbis_comment</h1>
+
+<p><i>declared in "ivorbiscodec.h"</i></p>
+
+<p>
+The vorbis_comment structure defines an Ogg Vorbis comment.
+<p>
+Only the fields the program needs must be defined.  If a field isn't
+defined by the application, it will either be blank (if it's a string value)
+or set to some reasonable default (usually 0).
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>typedef struct vorbis_comment{
+  /* unlimited user comment fields. */
+  char **user_comments;
+  int  *comment_lengths;
+  int  comments;
+  char *vendor;
+
+} vorbis_comment;</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Parameters</h3>
+<dl>
+<dt><i>user_comments</i></dt>
+<dd>Unlimited user comment array. The individual strings in the array are 8 bit clean, by the Vorbis specification, and as such the <tt>comment_lengths</tt> array should be consulted to determine string length.  For convenience, each string is also NULL-terminated by the decode library (although Vorbis comments are not NULL terminated within the bitstream itself).</dd>
+<dt><i>comment_lengths</i></dt>
+<dd>An int array that stores the length of each comment string</dd>
+<dt><i>comments</i></dt>
+<dd>Int signifying number of user comments in user_comments field.</dd>
+<dt><i>vendor</i></dt>
+<dd>Information about the creator of the file.  Stored in a standard C 0-terminated string.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/doc/vorbis_info.html b/wolf3d/code/Tremor/doc/vorbis_info.html
new file mode 100644 (file)
index 0000000..bd938cd
--- /dev/null
@@ -0,0 +1,80 @@
+<html>
+
+<head>
+<title>Tremor - datatype - vorbis_info</title>
+<link rel=stylesheet href="style.css" type="text/css">
+</head>
+
+<body bgcolor=white text=black link="#5555ff" alink="#5555ff" vlink="#5555ff">
+<table border=0 width=100%>
+<tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+<h1>vorbis_info</h1>
+
+<p><i>declared in "ivorbiscodec.h"</i></p>
+
+<p>
+The vorbis_info structure contains basic information about the audio in a vorbis bitstream.
+<p>
+
+<table border=0 width=100% color=black cellspacing=0 cellpadding=7>
+<tr bgcolor=#cccccc>
+       <td>
+<pre><b>typedef struct vorbis_info{
+  int version;
+  int channels;
+  long rate;
+  
+  long bitrate_upper;
+  long bitrate_nominal;
+  long bitrate_lower;
+  long bitrate_window;
+
+  void *codec_setup;
+
+} vorbis_info;</b></pre>
+       </td>
+</tr>
+</table>
+
+<h3>Relevant Struct Members</h3>
+<dl>
+<dt><i>version</i></dt>
+<dd>Vorbis encoder version used to create this bitstream.</dd>
+<dt><i>channels</i></dt>
+<dd>Int signifying number of channels in bitstream.</dd>
+<dt><i>rate</i></dt>
+<dd>Sampling rate of the bitstream.</dd>
+<dt><i>bitrate_upper</i></dt>
+<dd>Specifies the upper limit in a VBR bitstream.  If the value matches the bitrate_nominal and bitrate_lower parameters, the stream is fixed bitrate.  May be unset if no limit exists.</dd>
+<dt><i>bitrate_nominal</i></dt>
+<dd>Specifies the average bitrate for a VBR bitstream.  May be unset.  If the bitrate_upper and bitrate_lower parameters match, the stream is fixed bitrate.</dd>
+<dt><i>bitrate_lower</i></dt>
+<dd>Specifies the lower limit in a VBR bitstream.  If the value matches the bitrate_nominal and bitrate_upper parameters, the stream is fixed bitrate.  May be unset if no limit exists.</dd>
+<dt><i>bitrate_window</i></dt>
+<dd>Currently unset.</dd>
+
+<dt><i>codec_setup</i></dt>
+<dd>Internal structure that contains the detailed/unpacked configuration for decoding the current Vorbis bitstream.</dd>
+</dl>
+
+
+<br><br>
+<hr noshade>
+<table border=0 width=100%>
+<tr valign=top>
+<td><p class=tiny>copyright &copy; 2002 Xiph.org</p></td>
+<td align=right><p class=tiny><a href="http://www.xiph.org/ogg/vorbis/">Ogg Vorbis</a></p></td>
+</tr><tr>
+<td><p class=tiny>Tremor documentation</p></td>
+<td align=right><p class=tiny>Tremor version 1.0 - 20020403</p></td>
+</tr>
+</table>
+
+</body>
+
+</html>
diff --git a/wolf3d/code/Tremor/floor0.c b/wolf3d/code/Tremor/floor0.c
new file mode 100644 (file)
index 0000000..bdb83b8
--- /dev/null
@@ -0,0 +1,435 @@
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   *
+ *                                                                  *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    *
+ * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: floor backend 0 implementation
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "ogg.h"
+#include "ivorbiscodec.h"
+#include "codec_internal.h"
+#include "registry.h"
+#include "codebook.h"
+#include "misc.h"
+#include "block.h"
+
+#define LSP_FRACBITS 14
+
+typedef struct {
+  long n;
+  int ln;
+  int  m;
+  int *linearmap;
+
+  vorbis_info_floor0 *vi;
+  ogg_int32_t *lsp_look;
+
+} vorbis_look_floor0;
+
+/*************** LSP decode ********************/
+
+#include "lsp_lookup.h"
+
+/* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in
+   16.16 format 
+   returns in m.8 format */
+
+static long ADJUST_SQRT2[2]={8192,5792};
+STIN ogg_int32_t vorbis_invsqlook_i(long a,long e){
+  long i=(a&0x7fff)>>(INVSQ_LOOKUP_I_SHIFT-1); 
+  long d=a&INVSQ_LOOKUP_I_MASK;                              /*  0.10 */
+  long val=INVSQ_LOOKUP_I[i]-                                /*  1.16 */
+    ((INVSQ_LOOKUP_IDel[i]*d)>>INVSQ_LOOKUP_I_SHIFT);        /* result 1.16 */
+  val*=ADJUST_SQRT2[e&1];
+  e=(e>>1)+21;
+  return(val>>e);
+}
+
+/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
+/* a is in n.12 format */
+STIN ogg_int32_t vorbis_fromdBlook_i(long a){
+  int i=(-a)>>(12-FROMdB2_SHIFT);
+  if(i<0) return 0x7fffffff;
+  if(i>=(FROMdB_LOOKUP_SZ<<FROMdB_SHIFT))return 0;
+  
+  return FROMdB_LOOKUP[i>>FROMdB_SHIFT] * FROMdB2_LOOKUP[i&FROMdB2_MASK];
+}
+
+/* interpolated lookup based cos function, domain 0 to PI only */
+/* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */
+STIN ogg_int32_t vorbis_coslook_i(long a){
+  int i=a>>COS_LOOKUP_I_SHIFT;
+  int d=a&COS_LOOKUP_I_MASK;
+  return COS_LOOKUP_I[i]- ((d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
+                          COS_LOOKUP_I_SHIFT);
+}
+
+/* interpolated lookup based cos function */
+/* a is in 0.16 format, where 0==0, 2^^16==PI, return .LSP_FRACBITS */
+STIN ogg_int32_t vorbis_coslook2_i(long a){
+  a=a&0x1ffff;
+
+  if(a>0x10000)a=0x20000-a;
+  {               
+    int i=a>>COS_LOOKUP_I_SHIFT;
+    int d=a&COS_LOOKUP_I_MASK;
+    a=((COS_LOOKUP_I[i]<<COS_LOOKUP_I_SHIFT)-
+       d*(COS_LOOKUP_I[i]-COS_LOOKUP_I[i+1]))>>
+      (COS_LOOKUP_I_SHIFT-LSP_FRACBITS+14);
+  }
+  
+  return(a);
+}
+
+static const int barklook[28]={
+  0,100,200,301,          405,516,635,766,
+  912,1077,1263,1476,     1720,2003,2333,2721,
+  3184,3742,4428,5285,    6376,7791,9662,12181,
+  15624,20397,27087,36554
+};
+
+/* used in init only; interpolate the long way */
+STIN ogg_int32_t toBARK(int n){
+  int i;
+  for(i=0;i<27;i++) 
+    if(n>=barklook[i] && n<barklook[i+1])break;
+  
+  if(i==27){
+    return 27<<15;
+  }else{
+    int gap=barklook[i+1]-barklook[i];
+    int del=n-barklook[i];
+
+    return((i<<15)+((del<<15)/gap));
+  }
+}
+
+static const unsigned char MLOOP_1[64]={
+   0,10,11,11, 12,12,12,12, 13,13,13,13, 13,13,13,13,
+  14,14,14,14, 14,14,14,14, 14,14,14,14, 14,14,14,14,
+  15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
+  15,15,15,15, 15,15,15,15, 15,15,15,15, 15,15,15,15,
+};
+
+static const unsigned char MLOOP_2[64]={
+  0,4,5,5, 6,6,6,6, 7,7,7,7, 7,7,7,7,
+  8,8,8,8, 8,8,8,8, 8,8,8,8, 8,8,8,8,
+  9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
+  9,9,9,9, 9,9,9,9, 9,9,9,9, 9,9,9,9,
+};
+
+static const unsigned char MLOOP_3[8]={0,1,2,2,3,3,3,3};
+
+void vorbis_lsp_to_curve(ogg_int32_t *curve,int *map,int n,int ln,
+                        ogg_int32_t *lsp,int m,
+                        ogg_int32_t amp,
+                        ogg_int32_t ampoffset,
+                        ogg_int32_t *icos){
+
+  /* 0 <= m < 256 */
+
+  /* set up for using all int later */
+  int i;
+  int ampoffseti=ampoffset*4096;
+  int ampi=amp;
+  ogg_int32_t *ilsp=(ogg_int32_t *)alloca(m*sizeof(*ilsp));
+  /* lsp is in 8.24, range 0 to PI; coslook wants it in .16 0 to 1*/
+  for(i=0;i<m;i++){
+#ifndef _LOW_ACCURACY_
+    ogg_int32_t val=MULT32(lsp[i],0x517cc2);
+#else
+    ogg_int32_t val=((lsp[i]>>10)*0x517d)>>14;
+#endif
+
+    /* safeguard against a malicious stream */
+    if(val<0 || (val>>COS_LOOKUP_I_SHIFT)>=COS_LOOKUP_I_SZ){
+      memset(curve,0,sizeof(*curve)*n);
+      return;
+    }
+
+    ilsp[i]=vorbis_coslook_i(val);
+  }
+
+  i=0;
+  while(i<n){
+    int j,k=map[i];
+    ogg_uint32_t pi=46341; /* 2**-.5 in 0.16 */
+    ogg_uint32_t qi=46341;
+    ogg_int32_t qexp=0,shift;
+    ogg_int32_t wi=icos[k];
+
+#ifdef _V_LSP_MATH_ASM
+    lsp_loop_asm(&qi,&pi,&qexp,ilsp,wi,m);
+
+    pi=((pi*pi)>>16);
+    qi=((qi*qi)>>16);
+    
+    if(m&1){
+      qexp= qexp*2-28*((m+1)>>1)+m;         
+      pi*=(1<<14)-((wi*wi)>>14);
+      qi+=pi>>14;     
+    }else{
+      qexp= qexp*2-13*m;
+      
+      pi*=(1<<14)-wi;
+      qi*=(1<<14)+wi;
+      
+      qi=(qi+pi)>>14;
+    }
+    
+    if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */
+      qi>>=1; qexp++; 
+    }else
+      lsp_norm_asm(&qi,&qexp);
+
+#else
+
+    qi*=labs(ilsp[0]-wi);
+    pi*=labs(ilsp[1]-wi);
+
+    for(j=3;j<m;j+=2){
+      if(!(shift=MLOOP_1[(pi|qi)>>25]))
+       if(!(shift=MLOOP_2[(pi|qi)>>19]))
+         shift=MLOOP_3[(pi|qi)>>16];
+      qi=(qi>>shift)*labs(ilsp[j-1]-wi);
+      pi=(pi>>shift)*labs(ilsp[j]-wi);
+      qexp+=shift;
+    }
+    if(!(shift=MLOOP_1[(pi|qi)>>25]))
+      if(!(shift=MLOOP_2[(pi|qi)>>19]))
+       shift=MLOOP_3[(pi|qi)>>16];
+
+    /* pi,qi normalized collectively, both tracked using qexp */
+
+    if(m&1){
+      /* odd order filter; slightly assymetric */
+      /* the last coefficient */
+      qi=(qi>>shift)*labs(ilsp[j-1]-wi);
+      pi=(pi>>shift)<<14;
+      qexp+=shift;
+
+      if(!(shift=MLOOP_1[(pi|qi)>>25]))
+       if(!(shift=MLOOP_2[(pi|qi)>>19]))
+         shift=MLOOP_3[(pi|qi)>>16];
+      
+      pi>>=shift;
+      qi>>=shift;
+      qexp+=shift-14*((m+1)>>1);
+
+      pi=((pi*pi)>>16);
+      qi=((qi*qi)>>16);
+      qexp=qexp*2+m;
+
+      pi*=(1<<14)-((wi*wi)>>14);
+      qi+=pi>>14;
+
+    }else{
+      /* even order filter; still symmetric */
+
+      /* p*=p(1-w), q*=q(1+w), let normalization drift because it isn't
+        worth tracking step by step */
+      
+      pi>>=shift;
+      qi>>=shift;
+      qexp+=shift-7*m;
+
+      pi=((pi*pi)>>16);
+      qi=((qi*qi)>>16);
+      qexp=qexp*2+m;
+      
+      pi*=(1<<14)-wi;
+      qi*=(1<<14)+wi;
+      qi=(qi+pi)>>14;
+      
+    }
+    
+
+    /* we've let the normalization drift because it wasn't important;
+       however, for the lookup, things must be normalized again.  We
+       need at most one right shift or a number of left shifts */
+
+    if(qi&0xffff0000){ /* checks for 1.xxxxxxxxxxxxxxxx */
+      qi>>=1; qexp++; 
+    }else
+      while(qi && !(qi&0x8000)){ /* checks for 0.0xxxxxxxxxxxxxxx or less*/
+       qi<<=1; qexp--; 
+      }
+
+#endif
+
+    amp=vorbis_fromdBlook_i(ampi*                     /*  n.4         */
+                           vorbis_invsqlook_i(qi,qexp)- 
+                                                     /*  m.8, m+n<=8 */
+                           ampoffseti);              /*  8.12[0]     */
+    
+#ifdef _LOW_ACCURACY_
+    amp>>=9;
+#endif
+    curve[i]= MULT31_SHIFT15(curve[i],amp);
+    while(map[++i]==k) curve[i]= MULT31_SHIFT15(curve[i],amp);
+  }
+}
+
+/*************** vorbis decode glue ************/
+
+static void floor0_free_info(vorbis_info_floor *i){
+  vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
+  if(info){
+    memset(info,0,sizeof(*info));
+    _ogg_free(info);
+  }
+}
+
+static void floor0_free_look(vorbis_look_floor *i){
+  vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+  if(look){
+
+    if(look->linearmap)_ogg_free(look->linearmap);
+    if(look->lsp_look)_ogg_free(look->lsp_look);
+    memset(look,0,sizeof(*look));
+    _ogg_free(look);
+  }
+}
+
+static vorbis_info_floor *floor0_unpack (vorbis_info *vi,oggpack_buffer *opb){
+  codec_setup_info     *ci=(codec_setup_info *)vi->codec_setup;
+  int j;
+
+  vorbis_info_floor0 *info=(vorbis_info_floor0 *)_ogg_malloc(sizeof(*info));
+  info->order=oggpack_read(opb,8);
+  info->rate=oggpack_read(opb,16);
+  info->barkmap=oggpack_read(opb,16);
+  info->ampbits=oggpack_read(opb,6);
+  info->ampdB=oggpack_read(opb,8);
+  info->numbooks=oggpack_read(opb,4)+1;
+  
+  if(info->order<1)goto err_out;
+  if(info->rate<1)goto err_out;
+  if(info->barkmap<1)goto err_out;
+  if(info->numbooks<1)goto err_out;
+    
+  for(j=0;j<info->numbooks;j++){
+    info->books[j]=oggpack_read(opb,8);
+    if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out;
+  }
+  return(info);
+
+ err_out:
+  floor0_free_info(info);
+  return(NULL);
+}
+
+/* initialize Bark scale and normalization lookups.  We could do this
+   with static tables, but Vorbis allows a number of possible
+   combinations, so it's best to do it computationally.
+
+   The below is authoritative in terms of defining scale mapping.
+   Note that the scale depends on the sampling rate as well as the
+   linear block and mapping sizes */
+
+static vorbis_look_floor *floor0_look (vorbis_dsp_state *vd,vorbis_info_mode *mi,
+                              vorbis_info_floor *i){
+  int j;
+  vorbis_info        *vi=vd->vi;
+  codec_setup_info   *ci=(codec_setup_info *)vi->codec_setup;
+  vorbis_info_floor0 *info=(vorbis_info_floor0 *)i;
+  vorbis_look_floor0 *look=(vorbis_look_floor0 *)_ogg_calloc(1,sizeof(*look));
+  look->m=info->order;
+  look->n=ci->blocksizes[mi->blockflag]/2;
+  look->ln=info->barkmap;
+  look->vi=info;
+
+  /* the mapping from a linear scale to a smaller bark scale is
+     straightforward.  We do *not* make sure that the linear mapping
+     does not skip bark-scale bins; the decoder simply skips them and
+     the encoder may do what it wishes in filling them.  They're
+     necessary in some mapping combinations to keep the scale spacing
+     accurate */
+  look->linearmap=(int *)_ogg_malloc((look->n+1)*sizeof(*look->linearmap));
+  for(j=0;j<look->n;j++){
+
+    int val=(look->ln*
+            ((toBARK(info->rate/2*j/look->n)<<11)/toBARK(info->rate/2)))>>11;
+
+    if(val>=look->ln)val=look->ln-1; /* guard against the approximation */
+    look->linearmap[j]=val;
+  }
+  look->linearmap[j]=-1;
+
+  look->lsp_look=(ogg_int32_t *)_ogg_malloc(look->ln*sizeof(*look->lsp_look));
+  for(j=0;j<look->ln;j++)
+    look->lsp_look[j]=vorbis_coslook2_i(0x10000*j/look->ln);
+
+  return look;
+}
+
+static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){
+  vorbis_look_floor0 *look=(vorbis_look_floor0 *)i;
+  vorbis_info_floor0 *info=look->vi;
+  int j,k;
+  
+  int ampraw=oggpack_read(&vb->opb,info->ampbits);
+  if(ampraw>0){ /* also handles the -1 out of data case */
+    long maxval=(1<<info->ampbits)-1;
+    int amp=((ampraw*info->ampdB)<<4)/maxval;
+    int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks));
+    
+    if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */
+      codec_setup_info  *ci=(codec_setup_info *)vb->vd->vi->codec_setup;
+      codebook *b=ci->fullbooks+info->books[booknum];
+      ogg_int32_t last=0;
+      ogg_int32_t *lsp=(ogg_int32_t *)_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1));
+            
+&